]> git.decadent.org.uk Git - maypole.git/blob - ex/fancy_example/BeerDB/Base.pm
tested and it seems to work
[maypole.git] / ex / fancy_example / BeerDB / Base.pm
1 package BeerDB::Base;
2 use base qw/Maypole::Model::CDBI/;
3 use strict;
4 use warnings;
5 use Data::Dumper;
6
7 # Overide list to add display_columns to cgi  
8 # Perhaps do this in AsForm?
9 sub list : Exported {
10         use Data::Dumper;
11         my ($self, $r) = @_;
12         $self->SUPER::list($r);
13         my %cols =  map { $_ => 1 } $self->columns, $self->display_columns;
14         my @cols = keys %cols;
15         $r->template_args->{classmetadata}{cgi} = { $self->to_cgi(@cols) }; 
16 }
17
18 # Override view to make inputs and process form to add to related 
19 sub view : Exported {
20     my ($self, $r, $obj) = @_;
21     $self->_croak( "Object method only") unless $obj;
22
23     if ($r->params->{submit}) {
24         my @related  = $obj->add_to_from_cgi($r, { required => [$self->related ]});
25         if (my $errs = $obj->cgi_update_errors) {
26             $r->template_args->{errors} = $errs;
27         }
28     }
29
30     # Inputs to add to related on the view page
31         # Now done on the view template 
32         # my %cgi = $self->to_cgi($self->related);
33         #$r->template_args->{classmetadata}{cgi} =  \%cgi ;
34 }
35
36
37 # Template switcheroo bug bit me -- was seeing view page but the view action was never 
38 # being executed after an edit.
39 sub do_edit : Exported {
40         my ($self, $r) = (shift, shift);
41         $self->SUPER::do_edit($r, @_);
42         if (my $obj = $r->object) {
43                 my $url = $r->config->uri_base . "/" . $r->table . "/view/" . $obj->id;
44                 $r->redirect_request(url => $url);
45         }
46 }
47
48 sub metadata: Exported {}
49         
50
51 1;