-=cut
-
-sub do_edit : Exported {
- my ($self, $r, $obj) = @_;
-
- my $config = $r->config;
- my $table = $r->table;
-
- # handle cancel button hit
- if ( $r->{params}->{cancel} ) {
- $r->template("list");
- $r->objects( [$self->retrieve_all] );
- return;
- }
-
- my $required_cols = $config->{$table}{required_cols} || [];
- my $ignored_cols = $config->{$table}{ignore_cols} || [];
-
- ($obj, my $fatal, my $creating) = $self->_do_update_or_create($r, $obj, $required_cols, $ignored_cols);
-
- # handle errors, if none, proceed to view the newly created/updated object
- my %errors = $fatal ? (FATAL => $fatal) : $obj->cgi_update_errors;
-
- if (%errors) {
- # Set it up as it was:
- $r->template_args->{cgi_params} = $r->params;
-
- # replace user unfriendly error messages with something nicer
-
- foreach (@{$config->{$table}->{required_cols}}) {
- next unless ($errors{$_});
- my $key = $_;
- s/_/ /g;
- $r->template_args->{errors}{ucfirst($_)} = 'This field is required, please provide a valid value';
- $r->template_args->{errors}{$key} = 'This field is required, please provide a valid value';
- delete $errors{$key};
- }
-
- foreach (keys %errors) {
- my $key = $_;
- s/_/ /g;
- $r->template_args->{errors}{ucfirst($_)} = 'Please provide a valid value for this field';
- $r->template_args->{errors}{$key} = 'Please provide a valid value for this field';
- }
-
- undef $obj if $creating;
-
- die "do_update failed with error : $fatal" if ($fatal);
- $r->template("edit");
- } else {
- $r->template("view");
- }
-
-
-
- $r->objects( $obj ? [$obj] : []);
-}
-
-# split out from do_edit to be reported by Mp::P::Trace
-sub _do_update_or_create {
- my ($self, $r, $obj, $required_cols, $ignored_cols) = @_;
-
- my $fatal;
- my $creating = 0;
-
- my $h = $self->Untainter->new( %{$r->params} );
-
- # update or create
- if ($obj) {
- # We have something to edit
- eval { $obj->update_from_cgi( $r => {
- required => $required_cols,
- ignore => $ignored_cols,
- });
- $obj->update(); # pos fix for bug 17132 'autoupdate required by do_edit'
- };
- $fatal = $@;
- } else {
- eval {
- $obj = $self->create_from_cgi( $r => {
- required => $required_cols,
- ignore => $ignored_cols,
- } );
- };
- $fatal = $@;
- $creating++;
- }
- return $obj, $fatal, $creating;
-}
-
-
-# split out from do_edit to be reported by Mp::P::Trace
-#sub _do_update_or_create {
-# my ($self, $r, $obj, $required_cols, $ignored_cols) = @_;
-#
-# my $fatal;
-# my $creating = 0;
-#
-# my $h = $self->Untainter->new( %{$r->params} );
-#
-# # update or create
-# if ($obj) {
-# # We have something to edit
-# eval { $obj->update_from_cgi( $h => {
-# required => $required_cols,
-# ignore => $ignored_cols,
-# } );
-# $obj->update(); # pos fix for bug 17132 'autoupdate required by do_edit'
-# };
-# $fatal = $@;
-# } else {
-# eval {
-# $obj = $self->create_from_cgi( $h => {
-# required => $required_cols,
-# ignore => $ignored_cols,
-# } );
-# };
-# $fatal = $@;
-# $creating++;
-# }
-#
-# return $obj, $fatal, $creating;
-#}
-
-=head2 delete
-
-Deprecated method that calls do_delete or a given classes delete method, please
-use do_delete instead
-