package Maypole::Model::CDBI::Base;
use strict;
-use Class::C3;
=head1 NAME
# update or create
if ($obj) {
# We have something to edit
- eval { $obj->update_from_cgi( $r => {
+ eval { $obj->update_from_cgi( $h => {
required => $required_cols,
ignore => $ignored_cols,
});
$fatal = $@;
} else {
eval {
- $obj = $self->create_from_cgi( $r => {
+ $obj = $self->create_from_cgi( $h => {
required => $required_cols,
ignore => $ignored_cols,
} );
return $obj, $fatal, $creating;
}
+=head2 view
+
+This command shows the object using the view factory template.
+
+=cut
+
+sub view : Exported {
+ my ($self, $r) = @_;
+ $r->build_form_elements(0);
+ return;
+}
+
+
=head2 delete
Deprecated method that calls do_delete or a given classes delete method, please
if ($1 ne "Maypole::Model::Base" && $2 ne "delete") {
$self->SUPER::delete(@_);
} else {
- warn "Maypole::Model::CDBI delete method is deprecated\n";
+ warn "Maypole::Model::CDBI::Base delete method is deprecated\n";
$self->do_delete(@_);
}
}
-sub do_delete {
+sub do_delete : Exported {
my ( $self, $r ) = @_;
# FIXME: handle fatal error with exception
$_->SUPER::delete for @{ $r->objects || [] };
if ( !%values ) { return $self->list($r) }
my $order = $self->order($r);
$self = $self->do_pager($r);
+
+ # FIXME: use pager info to get slice of iterator instead of all the objects as array
+
$r->objects(
[
$self->search_where(
}
}
+=head2 search_columns
+
+ $class->search_columns;
+
+Returns a list of columns suitable for searching - used in factory templates, over-ridden in
+classes. Provides same list as display_columns unless over-ridden.
+
+=cut
+
+sub search_columns {
+ my $class = shift;
+ return $class->display_columns;
+}
+
+
=head2 related_meta
$class->related_meta($col);
=head1 SEE ALSO
-L<Maypole>, L<Maypole::Model::CDBI::Base>.
+L<Maypole>, L<Maypole::Model::Base>.
=head1 AUTHOR