]> git.decadent.org.uk Git - maypole.git/commitdiff
Drinker uses add_to_from_cgi and other stuff. Now it is a nice working
authorbiopete <biopete@invalid>
Wed, 12 Jul 2006 04:58:02 +0000 (04:58 +0000)
committerbiopete <biopete@invalid>
Wed, 12 Jul 2006 04:58:02 +0000 (04:58 +0000)
basic example with lots to do such as berrs, brewery, adding handpumps
to pubs, styles.

git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@505 48953598-375a-da11-a14b-00016c27c3ee

ex/fancy_example/BeerDB.pm
ex/fancy_example/BeerDB/Base.pm
ex/fancy_example/BeerDB/Drinker.pm
ex/fancy_example/templates/custom/metadata [new file with mode: 0644]
ex/fancy_example/templates/drinker/view

index 593851f16f2ab484524611c26aa0e1e6d55e2b11..5b30188618b2e63eade5fc764e784620f854a96a 100644 (file)
@@ -58,7 +58,6 @@ BeerDB->config->{person}{required_cols} = [qw/first_name sur_name dob email/];
 
 # Columns to display 
 sub BeerDB::Handpump::display_columns { qw/pub beer/ }
-sub BeerDB::Pint::display_columns { qw/drinker handpump/ }
 sub BeerDB::Person::display_columns { qw/first_name last_name dob email/ }
 
 BeerDB->config->{loader}->relationship($_) for (
index 0f980d9892b5692de1fcf734e4cdcf8152beee59..23b1dd132104360f4847ace269287494d441ac6b 100644 (file)
@@ -15,4 +15,19 @@ sub list : Exported {
        $r->template_args->{classmetadata}{cgi} = { $self->to_cgi(@cols) }; 
 }
 
+
+# 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;
index f3edd7be8502f00de131c3db52af4ba8b7ffe9ec..5119dcf3e1505708f22db43cff076785fac16bdd 100644 (file)
@@ -44,14 +44,15 @@ sub view : Exported {
        my ($self, $r, $obj) = @_;
        $self->_croak( "Object method only") unless $obj;
 
-       if ($r->params->{submit} eq 'drink') {
-               $r->params->{drinker} = $self;
-               my ($pint, $errs) = $self->related_class($r, 'pints')->create_from_cgi($r);
-               $r->template_args->{errors} = $errs if $errs;
+       if ($r->params->{submit}) {
+               my ($pint) = $obj->add_to_from_cgi($r);
+               if (my $errs = $obj->cgi_update_errors) {
+                       $r->template_args->{errors} = $errs;
+               }
        }
 
        my %cgi = $self->to_cgi('pints'); 
-       $cgi{pints}{drinker} =  $obj->to_field(drinker => 'link_hidden', {r => $r});
+       delete $cgi{pints}{drinker}; # =  $obj->to_field(drinker => 'link_hidden', {r => $r});
        $r->template_args->{classmetadata}{cgi} =  \%cgi ; 
 }
 
diff --git a/ex/fancy_example/templates/custom/metadata b/ex/fancy_example/templates/custom/metadata
new file mode 100644 (file)
index 0000000..e15fb6a
--- /dev/null
@@ -0,0 +1,5 @@
+<h3> Class::DBI meta info for [% classmetadata.name %] </h3> 
+[%
+   USE this = Class(classmetadata.name);
+   USE Dumper; Dumper.dump(this.meta_info);
+%]
index 50a51cab3da7cc22c1360311d16667dec3bc28ae..fd85e885b08ba72482213fbfb5c1996581e64cd3 100644 (file)
@@ -20,13 +20,14 @@ Drinker  C<view> template displays drinker and from to drink beer.
 <div id="search">
 <form action="[% base _ "/" _ request.table _ "/" _ request.action _ "/" _ object.id %]" method="post">
 <fieldset>
-<legend> Drink a beer </legend>
+<legend> Drink a pint </legend>
 
 [% 
-       INCLUDE display_inputs classmetadata.columns=['pints'] ;%]
-
+       INCLUDE display_inputs classmetadata.columns=['pints'] ;
+%]
 
 <input type='submit'name='submit' value='Hellyeah!'\>
+
 </fieldset>
 </form>