Gantry

 view release on metacpan or  search on metacpan

lib/Gantry/Plugins/CRUD.pm  view on Meta::CPAN

            unless $your_self->stash->view->title;

    my %params = $your_self->get_param_hash();

    # Redirect if 'Cancel'
    if ( $params{cancel} ) {
        my $redirect = $self->_find_redirect(
            {
                gantry_site => $your_self,
                data        => $data,
                action      => 'cancel',
                user_req    => 'edit',
            }
        );
        return $your_self->relocate( $redirect );
    }

    # get and hold the form description
    my $form = $self->form->( $your_self, $data );

    croak 'Your form callback gave me nothing' unless defined $form and $form;

    my $show_form = 0;
    my $results;

    if ( $your_self->is_post ) {
        $show_form = 1 if ( keys %params == 0 );

        # Check form data
        if ( $self->validator ) {
            $results = $self->validator->(
                {
                    self      => $your_self,
                    params    => \%params,
                    form      => $form,
                    profile   => form_profile( $form->{ fields } ),
                    action    => 'edit',
                }
            );
        }
        else {
            $results = Data::FormValidator->check(
                \%params,
                form_profile( $form->{ fields } ),
            );
        }

        $show_form = 1 if ( $results->has_invalid );
        $show_form = 1 if ( $results->has_missing );
        $show_form = 1 if ( $form->{ error_text } );
    }
    else {
        $show_form = 1;
    }

    # Form has errors
    if ( $show_form ) {
        # order matters, get form data first...
        $your_self->stash->view->form( $form );

        # ... then overlay with results
        if ( $your_self->method eq 'POST' ) {
            $your_self->stash->view->form->results( $results );
        }
    
    }
    # Form looks good, make update
    else {
        my $redirect;
        my $action =    $params{submit_add_another}
                        ? 'submit_add_another'
                        : 'submit';
        
        # remove submit button entry
        delete $params{submit};
        delete $params{submit_add_another};
               
        if ( $self->turn_off_clean_params ) {
            if ( $self->use_clean_dates ) {
                clean_dates( \%params, $form->{ fields } );
            }
        }
        else {
            clean_params( \%params, $form->{ fields } );
        }

        $self->edit_action->( $your_self, \%params, $data );
        
        # Find redirect.
        $redirect = $self->_find_redirect(
            {
                gantry_site => $your_self,
                data        => $data,
                action      => $action,
                user_req    => 'edit'
            }
        );
        
        return $your_self->relocate( $redirect );
    }
} # END: edit

#-------------------------------------------------
# $self->delete( $your_self, $confirm, { other => 'data' } )
#-------------------------------------------------
sub delete {
    my ( $self, $your_self, $yes, $data ) = @_;

    $your_self->stash->view->template( 'delete.tt' )
        unless $your_self->stash->view->template();
    $your_self->stash->view->title( 'Delete' )
            unless $your_self->stash->view->title;

    if ( $your_self->params->{cancel} ) {
        my $redirect = $self->_find_redirect(
            {
                gantry_site => $your_self,
                data        => $data,
                action      => 'cancel',
                user_req    => 'delete'
            }



( run in 0.904 second using v1.01-cache-2.11-cpan-ceb78f64989 )