]> git.decadent.org.uk Git - maypole.git/commitdiff
upped Class::DBI::SQLite requirement, quiettened tests and build, cleaned up document...
authorAaron Trevena <aaron.trevena@gmail.com>
Thu, 20 Jul 2006 12:33:12 +0000 (12:33 +0000)
committerAaron Trevena <aaron.trevena@gmail.com>
Thu, 20 Jul 2006 12:33:12 +0000 (12:33 +0000)
git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@513 48953598-375a-da11-a14b-00016c27c3ee

Makefile.PL
lib/Maypole.pm
lib/Maypole/Manual/Model.pod
lib/Maypole/Model/CDBI.pm
lib/Maypole/Model/CDBI/AsForm.pm
lib/Maypole/Model/CDBI/FromCGI.pm
lib/Maypole/Model/CDBI/Plain.pm
t/01basics.t
t/db_colinfo.t
t/pathtools.t

index 9d192e0c1dd1add99beec6185d2e0d9b06cbb805..935c677a0410d2c81b1ad0bd46b23786bcfa8832 100644 (file)
@@ -13,7 +13,7 @@ WriteMakefile(
         Class::DBI::Plugin::RetrieveAll  => 0,
         Class::DBI::Loader::Relationship => 0,
         Class::DBI                       => 0.96,
-        Class::DBI::SQLite               => 0,
+        Class::DBI::SQLite               => 0.08,
         CGI::Untaint                     => 1.26,
        CGI::Untaint::date               => 0,
        CGI::Untaint::email              => 0,
index 0d0250dfcbde82a88953658dab393326a57504dc..03205a61486545dde470811213440cfc9e09adb6 100644 (file)
@@ -91,7 +91,7 @@ configuration (B<before> calling setup.)
 
 Note that some details in some of these resources may be out of date.
 
-=over 4 
+=over 4
 
 =item The Maypole Manual
 
@@ -120,7 +120,7 @@ may be out of date.
 =item Web applications with Maypole
 
 A tutorial written by Simon Cozens for YAPC::EU 2005 -
-http://www.droogs.org/perl/maypole/maypole-tutorial.pdf [228KB].
+http://www.aarontrevena.co.uk/opensource/maypole/maypole-tutorial.pdf [228KB].
 
 =item A Database-Driven Web Application in 18 Lines of Code
 
@@ -148,7 +148,7 @@ http://www.perl.com/pub/a/2004/04/15/maypole.html
 =item Authentication
 
 Some notes written by Simon Cozens. A little bit out of date, but still 
-very useful: http://www.droogs.org/perl/maypole/authentication.html
+very useful: http://www.aarontrevena.co.uk/opensource/maypole/authentication.html
 
 =item CheatSheet
 
@@ -173,30 +173,6 @@ http://cpanratings.perl.org/dist/Maypole
 
 =back
 
-=head1 DEMOS
-
-A couple of demos are available, sometimes with source code and configs. 
-
-=over 4 
-
-=item http://maypole.perl.org/beerdb/
-
-The standard BeerDB example, using the TT factory templates supplied in the
-distribution.
-
-=item beerdb.riverside-cms.co.uk
-
-The standard BeerDB example, running on Mason, using the factory templates
-supplied in the L<MasonX::Maypole> distribution.
-
-=item beerfb.riverside-cms.co.uk
-
-A demo of L<Maypole::FormBuilder>. This site is running on the set of Mason 
-templates included in the L<Maypole::FormBuilder> distribution. See the 
-synopsis of L<Maypole::Plugin::FormBuilder> for an example driver
-
-=back
-
 =cut
 
 __PACKAGE__->mk_classdata($_) for qw( config init_done view_object model_classes_loaded);
@@ -255,7 +231,7 @@ Some packages respond to higher debug levels, try increasing it to 2 or 3.
 
 =cut
 
-sub debug { 1 }
+sub debug { 0 }
 
 =item config
 
index c99a189cd522726ba172f8ae9fd4d7cf377d6351..112effcb44d90e3823319adf4b994f5dfc63cb68 100644 (file)
@@ -113,10 +113,6 @@ We'll look more at how to put together actions in the
 L<Standard Templates and Actions|Maypole::Manual::StandardTemplates>
 chapter and our case studies.
 
-=head2 What Maypole wants from a model
-
-=head2 Building your own model class
-
 =head2 Links
 
 L<Contents|Maypole::Manual>,
index 60619a0e807864454e2d7109955337c957171860..bd9646f5ee99105dd5eb5c12aa7274baf4d34c61 100644 (file)
@@ -239,10 +239,13 @@ the, now deprecated, search method previously provided.
 sub search : Exported {
   my $self = shift;
   my ($sub) = (caller(1))[3];
-  $sub =~ /^(.+)::([^:]+)$/;
   # So subclasses can still send search down ...
-  return ($1 ne "Maypole::Model::Base" && $2 ne "search") ?
-    $self->SUPER::search(@_) : $self->do_search(@_);
+  if ($sub =~ /^(.+)::([^:]+)$/) {
+    return ($1 ne "Maypole::Model::Base" && $2 ne "search") ?
+      $self->SUPER::search(@_) : $self->do_search(@_);
+  } else {
+    $self->SUPER::search(@_);
+  }
 }
 
 sub do_search : Exported {
index 2c5f60df019b7f82d0475a861ca277486a87b10e..02403e006084d86ddcb4946586725291f482fcbd 100644 (file)
@@ -53,25 +53,93 @@ Maypole::Model:CDBI::AsForm - Produce HTML form elements for database columns
                end_form;
     }
 
-# Example of has_many select
-package Job;
-__PACKAGE__->has_a('job_employer' => 'Employer');
-__PACKAGE__->has_a('contact'  => 'Contact')
-
-package Contact;
-__PACKAGE__->has_a('cont_employer' => 'Employer');
-__PACKAGE__->has_many('jobs'  => 'Job',
-        { join => { job_employer => 'cont_employer' },
-          constraint => { 'finshed' => 0  },
-          order_by   => "created ASC",
-        }
-);
-
-package Employer;
-__PACKAGE__->has_many('jobs'  => 'Job',);
-__PACKAGE__->has_many('contacts'  => 'Contact',
-                       order_by => 'name DESC',
-);
+
+   . . .
+
+    # Somewhere else in a Maypole application about beer...
+
+
+
+
+   $beer->to_field('brewery', 'textfield', { 
+               name => 'brewery_id', value => $beer->brewery,
+               # however, no need to set value since $beer is object
+   });
+
+   # Rate a beer
+   $beer->to_field(rating =>  select => {
+               items => [1 , 2, 3, 4, 5],
+   });
+
+   # Select a Brewery to visit in the UK
+   Brewery->to_field(brewery_id => {
+               items => [ Brewery->search_like(location => 'UK') ],
+   });
+
+  # Make a select for a boolean field
+  $Pub->to_field('open' , { items => [ {'Open' => 1, 'Closed' => 0 } ] }); 
+
+   $beer->to_field('brewery', {
+               selected => $beer->brewery, # again not necessary since caller is obj.
+   });
+
+
+    $beer->to_field('brewery', 'link_hidden', {r => $r, uri => 'www.maypole.perl.org/brewery/view/'.$beer->brewery});
+    # an html link that is also a hidden input to the object. R is required to
+    # make the uri  unless you  pass a  uri
+
+
+
+    #####################################################
+    # Templates Usage
+
+    <form ..>
+
+    ...
+
+    <label>
+
+     <span class="field"> [% classmetadata.colnames.$col %] : </span>
+
+     [% object.to_field(col).as_XML %]
+
+    </label>
+
+    . . .
+
+    <label>
+
+     <span class="field"> Brewery : </span>
+
+     [% object.to_field('brewery', { selected => 23} ).as_XML %]
+
+    </label>
+
+    . . .
+
+
+    #####################################################
+    # Advanced Usage
+
+    # has_many select
+    package Job;
+    __PACKAGE__->has_a('job_employer' => 'Employer');
+    __PACKAGE__->has_a('contact'  => 'Contact')
+
+    package Contact;
+    __PACKAGE__->has_a('cont_employer' => 'Employer');
+    __PACKAGE__->has_many('jobs'  => 'Job',
+                         { join => { job_employer => 'cont_employer' },
+                           constraint => { 'finshed' => 0  },
+                           order_by   => "created ASC",
+                         }
+                        );
+
+    package Employer;
+    __PACKAGE__->has_many('jobs'  => 'Job',);
+    __PACKAGE__->has_many('contacts'  => 'Contact',
+                         order_by => 'name DESC',
+                        );
 
 
   # Choose some jobs to add to a contact (has multiple attribute).
@@ -81,6 +149,9 @@ __PACKAGE__->has_many('contacts'  => 'Contact',
   # Choose a job from $contact->jobs 
   my $job_sel = $contact->to_field('jobs');
 
+  1;
+
+
 
 
 =head1 DESCRIPTION
index 9baaf9efe916c3117a44b60ae7cc0ffb7781ccad..cc27533fdbe1e8e08b4a48d6ea73b0ba16079bd1 100644 (file)
@@ -18,7 +18,7 @@ Maypole::Model:CDBI::FromCGI - Validate form input and populate Model objects
 
   $obj = $obj->add_to_from_cgi($r);
   $obj = $obj->add_to_from_cgi($r, { params => {...} } );
-  
+
   # This does not work like in CDBI::FromCGI and probably never will :
   # $class->update_from_cgi($h, @columns);
 
index fd34a75c91d312bcb6437cca6c4dc6883d67e52d..3c3296a2fbe3a46c59b4d961d3d00b6a6d02ab1a 100644 (file)
@@ -17,6 +17,18 @@ Maypole::Model::CDBI::Plain - Class::DBI model without ::Loader
     Foo->config->model("Maypole::Model::CDBI::Plain");
     Foo->setup([qw/ Foo::SomeTable Foo::Other::Table /]);
 
+    # untaint columns and provide custom actions for each class
+
+    Foo::SomeTable->untaint_columns(email => ['email'], printable => [qw/name description/]);
+
+    Foo::Other::Table->untaint_columns ( ... );
+
+    sub Foo::SomeTable::SomeAction : Exported {
+
+        . . .
+
+    }
+
 =head1 DESCRIPTION
 
 This module allows you to use Maypole with previously set-up
index fb795986427f19b8faebc773d75676a94c64b83d..ba7b83434e7feba3735a7f459e14f4c2931d51e4 100644 (file)
@@ -2,7 +2,7 @@
 use Test::More;
 use lib 'ex'; # Where BeerDB should live
 BEGIN {
-    $ENV{BEERDB_DEBUG} = 2;
+    $ENV{BEERDB_DEBUG} = 0;
 
     eval { require BeerDB };
     Test::More->import( skip_all =>
index 4a4846a3f2df51a40d99650c2cdd61fb578e9f03..471d05986906b9be754d0462131088471fbbd909 100755 (executable)
@@ -149,7 +149,6 @@ SKIP: {
        skip $skip_msg, $skip_howmany  if $err; 
        $DB_Class->table($table); 
 #use Data::Dumper; 
-#warn "colinfo is " . Dumper($DB_Class->_column_info());
        run_method_tests($DB_Class,'column_type', %correct_types);
        # No support default
        #run_method_tests($DB_Class,'column_default', %correct_defaults);
index 08f4b6017d2a9bdbeb905b8808bb54f5d1c2b56f..a5404b7782da16d57e61ab590c99bd292d15445f 100644 (file)
@@ -79,9 +79,6 @@ my @bases = ( 'http://www.example.com',
 
       my ($uri_basepath,$uri_query) = split(/\?/,$uri);
 
-      warn "\nuri : '$uri'\nexpected : '$expected'\n";
-      warn "uri_basepath : $uri_basepath, uri_query : $uri_query\n";
-
       my $q_got = new CGI($uri_query);
 
       if ($uri_query) {