[Jifty-commit] r4029 - in jifty/trunk/lib: . Jifty/Plugin

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Sun Sep 2 16:11:59 EDT 2007


Author: clkao
Date: Sun Sep  2 16:11:58 2007
New Revision: 4029

Modified:
   jifty/trunk/lib/Jifty.pm
   jifty/trunk/lib/Jifty/Plugin.pm
   jifty/trunk/lib/Jifty/Plugin/CompressedCSSandJS.pm
   jifty/trunk/lib/Jifty/Plugin/SinglePage.pm
   jifty/trunk/lib/Jifty/Test.pm

Log:
Name the first Jifty->new during test 'pre_init', and tell plugins
not to register triggers just yet to avoid duplicated triggers.


Modified: jifty/trunk/lib/Jifty.pm
==============================================================================
--- jifty/trunk/lib/Jifty.pm	(original)
+++ jifty/trunk/lib/Jifty.pm	Sun Sep  2 16:11:58 2007
@@ -146,6 +146,7 @@
     # Setup the defaults
     my %args = (
         no_handle        => 0,
+        pre_init         => 0,
         logger_component => undef,
         @_
     );
@@ -170,10 +171,10 @@
     my @plugins;
     my @plugins_to_load = @{Jifty->config->framework('Plugins')};
     my $app_plugin = Jifty->app_class('Plugin');
+    # we are pushing prereq to plugin, hence the 3-part for.
     for (my $i = 0; my $plugin = $plugins_to_load[$i]; $i++) {
-
         # Prepare to learn the plugin class name
-        my $plugin_name = (keys %{$plugin})[0];
+        my ($plugin_name) = keys %{$plugin};
         my $class;
 
         # Is the plugin name a fully-qualified class name?
@@ -188,7 +189,8 @@
         }
 
         # Load the plugin options
-        my %options = %{ $plugin->{ $plugin_name } };
+        my %options = (%{ $plugin->{ $plugin_name } },
+                        _pre_init => $args{'pre_init'} );
 
         # Load the plugin code
         Jifty::Util->require($class);
@@ -435,6 +437,13 @@
 
 Defaults to false. If true, Jifty won't try to set up a database handle
 
+=item pre_init
+
+Defaults to false. If true, plugins are notificed that this is a
+pre-init, any trigger registration in C<init()> should not happen
+during this stage.  Note that model mixins's register_triggers is
+unrelated to this.
+
 =back
 
 

Modified: jifty/trunk/lib/Jifty/Plugin.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Plugin.pm	(original)
+++ jifty/trunk/lib/Jifty/Plugin.pm	Sun Sep  2 16:11:58 2007
@@ -3,7 +3,8 @@
 
 package Jifty::Plugin;
 use File::ShareDir 'module_dir';
-
+use base 'Class::Accessor::Fast';
+__PACKAGE__->mk_accessors('_pre_init');
 
 =head1 NAME
 
@@ -92,6 +93,7 @@
 sub _calculate_share {
     my $self = shift;
     my $class = ref($self);
+
     unless ( $self->{share} ) {
         local $@
             ; # We're just avoiding File::ShareDir's failure behaviour of dying

Modified: jifty/trunk/lib/Jifty/Plugin/CompressedCSSandJS.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Plugin/CompressedCSSandJS.pm	(original)
+++ jifty/trunk/lib/Jifty/Plugin/CompressedCSSandJS.pm	Sun Sep  2 16:11:58 2007
@@ -2,7 +2,7 @@
 use warnings;
 
 package Jifty::Plugin::CompressedCSSandJS;
-use base qw/Jifty::Plugin Class::Accessor::Fast/;
+use base 'Jifty::Plugin';
 
 use Digest::MD5 qw(md5_hex);
 use IPC::Run3 'run3';
@@ -49,6 +49,8 @@
 
 sub init {
     my $self = shift;
+    return if $self->_pre_init;
+
     my %opt  = @_;
     $self->css( $opt{css} );
     $self->js( $opt{js} );

Modified: jifty/trunk/lib/Jifty/Plugin/SinglePage.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Plugin/SinglePage.pm	(original)
+++ jifty/trunk/lib/Jifty/Plugin/SinglePage.pm	Sun Sep  2 16:11:58 2007
@@ -2,7 +2,7 @@
 use warnings;
 
 package Jifty::Plugin::SinglePage;
-use base qw/Jifty::Plugin Class::Accessor/;
+use base 'Jifty::Plugin';
 
 __PACKAGE__->mk_accessors(qw(region_name));
 
@@ -22,6 +22,8 @@
 
 sub init {
     my $self = shift;
+    return if $self->_pre_init;
+
     Jifty::Web::Form::Clickable->add_trigger( before_new => _sp_link($self));
     my %opt = @_;
     $self->region_name($opt{region_name} || '__page');

Modified: jifty/trunk/lib/Jifty/Test.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Test.pm	(original)
+++ jifty/trunk/lib/Jifty/Test.pm	Sun Sep  2 16:11:58 2007
@@ -236,7 +236,7 @@
 	}
     }
 
-    Jifty->new( no_handle => 1 );
+    Jifty->new( no_handle => 1, pre_init => 1 );
 
     my $schema = Jifty::Script::Schema->new;
     $schema->{drop_database}     = 1;


More information about the Jifty-commit mailing list