Gantry
view release on metacpan or search on metacpan
lib/Gantry/Plugins/AutoCRUD.pm view on Meta::CPAN
return $self->relocate( find_cancel_loc( $self, 'edit' ) );
}
$orm_helper ||= find_orm_helper( $self );
# Load data from database
my $row = $orm_helper->retrieve( $self, $id );
$self->stash->view->title( 'Edit ' . $self->text_descr( 'edit', $row ) );
my $show_form = 0;
$show_form = 1 if ( not $self->is_post );
$show_form = 1 if ( keys %params == 0 );
# get and hold the form description
my $form;
eval {
$form = $self->form( $row );
};
my $full_error = $@;
unless ( $form ) {
eval {
$form = $self->_form( $row );
};
$full_error .= $@;
}
croak ( 'No form or _form method defined for AutoCRUD do_edit ' .
"[ invocant: $self errors: $full_error ]" )
unless ( $form );
# Check form data
my $results = Data::FormValidator->check(
\%params,
form_profile( $form->{fields} ),
);
$show_form = 1 if ( $results->has_invalid );
$show_form = 1 if ( $results->has_missing );
# do row auth check to see if they are allowed to add
my $permissions = $self->controller_config->{ permissions };
if ( defined $permissions ) {
verify_permission(
{
site => $self,
permissions => $permissions,
params => \%params,
row => $row,
}
);
}
# Form has errors
if ( $show_form ) {
# order matters, get form data first...
$self->stash->view->form( $form );
# ... then overlay with results
if ( $self->method eq 'POST' ) {
$self->stash->view->form->results( $results );
}
}
# Form looks good, make update
else {
# remove submit button param
my $submit_add_another = delete $params{submit_add_another};
delete $params{submit};
clean_params( \%params, $form->{fields} );
# allow child module to make changes
if ( $self->can( 'edit_pre_action' ) ) {
$self->edit_pre_action( $row, \%params );
}
# make the update
$orm_helper->update( $self, $row, \%params );
# allow child to do post update actions
if ( $self->can( 'edit_post_action' ) ) {
$self->edit_post_action( $row );
}
# all done, move along
my $redirect;
if ( $submit_add_another ) {
$redirect = find_submit_loc( $self, 'add_another' )
}
else {
$redirect = find_submit_loc( $self, 'edit' );
}
return $self->relocate( $redirect );
}
} # END: do_edit
#-------------------------------------------------
# $self->do_delete( $id, $yes )
#-------------------------------------------------
sub do_delete {
my ( $self, $id, $pid, $yes ) = @_;
# look for a parent id and set the proper variables
if ( $pid =~ /yes|no/ ) {
$yes = $pid;
}
else {
$self->{__PID__} = $pid;
}
$self->stash->view->template( 'delete.tt' );
$self->stash->view->title( 'Delete' );
# go back if user cancelled
if ( $self->params->{cancel} ) {
return $self->relocate( find_cancel_loc( $self, 'delete' ) );
}
( run in 0.676 second using v1.01-cache-2.11-cpan-ceb78f64989 )