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 )