package Apache::MVC::Model::CDBI;
-use base 'Apache::MVC::Model::Base';
+use base qw(Apache::MVC::Model::Base Class::DBI);
+use Lingua::EN::Inflect::Number qw(to_PL);
use Class::DBI::AsForm;
use Class::DBI::FromCGI;
use CGI::Untaint;
sub column_names { my $class = shift; map { $_ => ucfirst $_ } $class->columns }
+sub get_objects {
+ my ($self, $r) = @_;
+ return $self->retrieve(shift @{$r->{args}});
+}
+
+sub related {
+ my ($self, $r) = @_;
+ # Has-many methods; XXX this is a hack
+ map {to_PL($_)}
+ grep { exists $r->{config}{ok_tables}{$_} }
+ map {$_->table}
+ keys %{shift->__hasa_list || {}}
+}
+
sub do_edit :Exported {
my ($self, $r) = @_;
my $h = CGI::Untaint->new(%{$r->{params}});
- my $obj;
- if (@{$r->{args}}) {
+ my ($obj) = @{$r->objects};
+ if ($obj) {
# We have something to edit
- $obj = $self->retrieve($r->{args}[0]);
$obj->update_from_cgi($h);
warn "Updating an object ($obj) with ".Dumper($h); use Data::Dumper;
} else {
} else {
$r->{template} = "view";
}
- return $obj;
+ $r->objects([ $obj ]);
+}
+
+sub delete :Exported {
+ my ($self, $r) = @_;
+ $_->SUPER::delete for @{ $r->objects };
+ $r->objects([ $self->retrieve_all ]);
+ $r->{template} = "list";
}
sub adopt {