X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=ex%2Ffancy_example%2FBeerDB%2FBase.pm;h=aaafce1eec74e1e1249a43c009af0e287a8637fb;hb=f2dba1232bd413576aedf1f36511742db8862703;hp=0f980d9892b5692de1fcf734e4cdcf8152beee59;hpb=7bb021648c28d2f70ec2853f0d01dd49c6437460;p=maypole.git diff --git a/ex/fancy_example/BeerDB/Base.pm b/ex/fancy_example/BeerDB/Base.pm index 0f980d9..aaafce1 100644 --- a/ex/fancy_example/BeerDB/Base.pm +++ b/ex/fancy_example/BeerDB/Base.pm @@ -2,10 +2,10 @@ package BeerDB::Base; use base qw/Maypole::Model::CDBI/; use strict; use warnings; +use Data::Dumper; # Overide list to add display_columns to cgi # Perhaps do this in AsForm? - sub list : Exported { use Data::Dumper; my ($self, $r) = @_; @@ -15,4 +15,37 @@ sub list : Exported { $r->template_args->{classmetadata}{cgi} = { $self->to_cgi(@cols) }; } +# Override view to make inputs and process form to add to related +sub view : Exported { + my ($self, $r, $obj) = @_; + $self->_croak( "Object method only") unless $obj; + + if ($r->params->{submit}) { + my @related = $obj->add_to_from_cgi($r, { required => [$self->related ]}); + if (my $errs = $obj->cgi_update_errors) { + $r->template_args->{errors} = $errs; + } + } + + # Inputs to add to related on the view page + # Now done on the view template + # my %cgi = $self->to_cgi($self->related); + #$r->template_args->{classmetadata}{cgi} = \%cgi ; +} + + +# Template switcheroo bug bit me -- was seeing view page but the view action was never +# being executed after an edit. +sub do_edit : Exported { + my ($self, $r) = (shift, shift); + $self->SUPER::do_edit($r, @_); + if (my $obj = $r->object) { + my $url = $r->config->uri_base . "/" . $r->table . "/view/" . $obj->id; + $r->redirect_request(url => $url); + } +} + +sub metadata: Exported {} + + 1;