]> git.decadent.org.uk Git - maypole.git/commitdiff
2.09 - maintain the order that plugins are loaded, add tests for Maypole::Application...
authorSimon Cozens <simon@simon-cozens.org>
Wed, 2 Feb 2005 18:44:30 +0000 (18:44 +0000)
committerSimon Cozens <simon@simon-cozens.org>
Wed, 2 Feb 2005 18:44:30 +0000 (18:44 +0000)
git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@336 48953598-375a-da11-a14b-00016c27c3ee

Changes
MANIFEST
META.yml
lib/Apache/MVC.pm
lib/CGI/Maypole.pm
lib/Maypole.pm
lib/Maypole/Application.pm
templates/factory/addnew

diff --git a/Changes b/Changes
index ccc23d9aed3c63f113df58983a8aa49fa7ff56db..25939ee156f20553f30a143e3f5a62850c433e82 100644 (file)
--- a/Changes
+++ b/Changes
@@ -2,6 +2,14 @@ This file documents the revision history for Perl extension Maypole.
 For information about current developments and future releases, see:
     http://maypole.perl.org/?TheRoadmap
 
+2.09  Mon Jan 25 22:00:00 2005
+    Fixes:
+    - Fixed plugin inheritance set up by Maypole::Application, added tests
+
+    Templates:
+    - factory/addnew will only prefill values when there's a row creation error
+
+
 2.08  Mon Jan 24 20:45:00 2005
     - Added $r->config->template_extension() to set optional file extension
       for templates (Dave Howorth)
index d1482f0e5bf81ee240f52e6afd12b2c5ec3d9cf9..f3321c3b95777d405282d7d5aa5ca888b7ffc903 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -28,14 +28,15 @@ MANIFEST
 MANIFEST.SKIP
 META.yml                       Module meta-data (added by MakeMaker)
 README
-t/constants.t
-t/maypole.t
-t/apache_mvc.t
-t/cgi_maypole.t
-t/headers.t
 t/01basics.t
 t/02pod.t
 t/03podcoverage.t
+t/apache_mvc.t
+t/application.t
+t/cgi_maypole.t
+t/constants.t
+t/headers.t
+t/maypole.t
 t/templates/custom/classdata
 t/templates/custom/frontpage
 t/templates/custom/list
index a9c08c678379368c33eb07b3dbdc0ff4ecbb1968..0cc71cd9a06831722b03684f13713ab89f1ce935 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -1,7 +1,7 @@
 # http://module-build.sourceforge.net/META-spec.html
 #XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
 name:         Maypole
-version:      2.08
+version:      2.09
 version_from: lib/Maypole.pm
 installdirs:  site
 requires:
index ce9e656bc1f1c598f324d990a7d1b729a0507cce..c7bfdef74a2ffd6ba17a89279627baf507eae320 100644 (file)
@@ -1,6 +1,6 @@
 package Apache::MVC;
 
-our $VERSION = '2.08';
+our $VERSION = '2.09';
 
 use strict;
 use warnings;
index 7ea9ee7a9b153cf425946ca087227a645fef3dcc..f8c122962502a7d5c4a9454009e8bf4354050196 100644 (file)
@@ -6,7 +6,7 @@ use warnings;
 use CGI::Simple;
 use Maypole::Headers;
 
-our $VERSION = '2.08';
+our $VERSION = '2.09';
 
 sub run {
     my $self = shift;
index 34e2ebbc2b7819c7657e98550fa4e03a97b3d99e..2f3f75e8cc77680a9674b74828ece1a146f61f48 100644 (file)
@@ -7,7 +7,7 @@ use Maypole::Config;
 use Maypole::Constants;
 use Maypole::Headers;
 
-our $VERSION = '2.08';
+our $VERSION = '2.09';
 
 __PACKAGE__->mk_classdata($_) for qw( config init_done view_object );
 __PACKAGE__->mk_accessors(
index 3336c1f73cd7d1da68d9fbbb1c6677856e41b302..4f61f42742810235743822e7b795d8293393764e 100644 (file)
@@ -7,32 +7,38 @@ use Maypole;
 use Maypole::Config;
 
 our @ISA;
-our $VERSION = '2.08';
+our $VERSION = '2.09';
 
 sub import {
-    my ( $self, @plugins ) = @_;
+    my ( $class, @plugins ) = @_;
     my $caller = caller(0);
-    no strict 'refs';
-    push @{"${caller}::ISA"}, $self;
+
     my $autosetup=0;
-    foreach (sort @plugins) {
-        if    (/^\-Setup$/) { $autosetup++; }
-        elsif (/^\-Debug$/) {
-            *{"$caller\::debug"} = sub { 1 };
-            warn "Debugging enabled";
-        }
-        elsif (/^-.*$/) { warn "Unknown flag: $_" }
-        else {
-            # The plugin caller should be our application class
-            eval "package $caller; require Maypole::Plugin::$_";
-            if ($@) { warn qq(Loading plugin "Maypole::Plugin::$_" failed: $@) }
+    my @plugin_modules;
+    {
+        foreach (@plugins) {
+            if    (/^\-Setup$/) { $autosetup++; }
+            elsif (/^\-Debug$/) {
+                no strict 'refs';
+                *{"$caller\::debug"} = sub { 1 };
+                warn "Debugging enabled";
+            }
+            elsif (/^-.*$/) { warn "Unknown flag: $_" }
             else {
-                warn "Loaded plugin: Maypole::Plugin::$_" if $caller->debug;
-                push @{"${caller}::ISA"}, "Maypole::Plugin::$_";
+                my $plugin = "Maypole::Plugin::$_";
+                if ($plugin->require) {
+                    push @plugin_modules, "Maypole::Plugin::$_";
+                    warn "Loaded plugin: $plugin"
+                        if $caller->can('debug') && $caller->debug;
+                } else {
+                    warn qq(Loading plugin "$plugin" failed: )
+                        . $UNIVERSAL::require::ERROR;
+                }
             }
         }
     }
-
+    no strict 'refs';
+    push @{"${caller}::ISA"}, @plugin_modules, $class;
     $caller->config(Maypole::Config->new);
     $caller->setup() if $autosetup;
 }
index f530bc99383105fa608e453fe43375ae4c6af986..142dde6909e2cfbd7327e2c2a4c6009763e83b5c 100644 (file)
@@ -20,10 +20,12 @@ table.
             <label><span class="field">[% classmetadata.colnames.$col %]</span>
             [% 
             SET elem = classmetadata.cgi.$col.clone;
-            IF elem.tag == "textarea";
-                elem = elem.push_content(request.param(col));
-            ELSE;
-                elem.attr("value", request.param(col));
+            IF request.action == 'do_edit';
+                IF elem.tag == "textarea";
+                    elem = elem.push_content(request.param(col));
+                ELSE;
+                    elem.attr("value", request.param(col));
+                END;
             END;
             elem.as_XML; %]
            </label>