1 package Apache::MVC::Model::CDBI;
2 use base qw(Apache::MVC::Model::Base Class::DBI);
3 use Lingua::EN::Inflect::Number qw(to_PL);
4 use Class::DBI::AsForm;
5 use Class::DBI::FromCGI;
9 sub description { "A poorly defined class" }
11 sub column_names { my $class = shift; map { $_ => ucfirst $_ } $class->columns }
15 return $self->retrieve(shift @{$r->{args}});
20 # Has-many methods; XXX this is a hack
22 grep { exists $r->{config}{ok_tables}{$_} }
24 keys %{shift->__hasa_list || {}}
27 sub do_edit :Exported {
29 my $h = CGI::Untaint->new(%{$r->{params}});
30 my ($obj) = @{$r->objects};
32 # We have something to edit
33 $obj->update_from_cgi($h);
34 warn "Updating an object ($obj) with ".Dumper($h); use Data::Dumper;
36 $obj = $self->create_from_cgi($h);
38 if (my %errors = $obj->cgi_update_errors) {
39 # Set it up as it was:
40 warn "There were errors: ".Dumper(\%errors)."\n";
41 $r->{template_args}{cgi_params} = $r->{params};
42 $r->{template_args}{errors} = \%errors;
43 $r->{template} = "edit";
45 $r->{template} = "view";
47 $r->objects([ $obj ]);
50 sub delete :Exported {
52 $_->SUPER::delete for @{ $r->objects };
53 $r->objects([ $self->retrieve_all ]);
54 $r->{template} = "list";
58 my ($self, $child) = @_;
59 $child->autoupdate(1);
60 $child->columns( Stringify => qw/ name / );
63 sub search :Exported {
65 my %fields = map {$_ => 1 } $self->columns;
66 my %values = map { $_ => $params{$_} }
67 grep { $params{$_} and $fields{$_} } keys %{$r->{params}};
68 $r->objects([ %values ? $self->search_like(%values) : $self->retrieve_all ]);
70 $r->{template_args}{search} = 1;