]> git.decadent.org.uk Git - maypole.git/blobdiff - examples/fancy_example/BeerDB/Base.pm
Merge commit '2.13' into HEAD
[maypole.git] / examples / fancy_example / BeerDB / Base.pm
diff --git a/examples/fancy_example/BeerDB/Base.pm b/examples/fancy_example/BeerDB/Base.pm
new file mode 100644 (file)
index 0000000..aaafce1
--- /dev/null
@@ -0,0 +1,51 @@
+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) = @_;
+       $self->SUPER::list($r);
+       my %cols =  map { $_ => 1 } $self->columns, $self->display_columns;
+       my @cols = keys %cols;
+       $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;