[Jifty-commit] r3614 - in jifty/trunk: lib

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Sat Jul 7 15:29:35 EDT 2007


Author: sterling
Date: Sat Jul  7 15:29:31 2007
New Revision: 3614

Modified:
   jifty/trunk/   (props changed)
   jifty/trunk/lib/Jifty.pm

Log:
 r7946 at dynpc145:  andrew | 2007-07-07 14:12:17 -0500
 Added support for application-specific plugins (i.e., App::Plugin::XXX) and plugins named using the fully-qualified Jifty::Plugin::XXX name.


Modified: jifty/trunk/lib/Jifty.pm
==============================================================================
--- jifty/trunk/lib/Jifty.pm	(original)
+++ jifty/trunk/lib/Jifty.pm	Sat Jul  7 15:29:31 2007
@@ -167,9 +167,19 @@
     # Set up plugins
     my @plugins;
     my @plugins_to_load = @{Jifty->config->framework('Plugins')};
+    my $app_plugin = Jifty->app_class('Plugin');
     for (my $i = 0; my $plugin = $plugins_to_load[$i]; $i++) {
-        my $class = "Jifty::Plugin::".(keys %{$plugin})[0];
-        my %options = %{ $plugin->{(keys %{$plugin})[0]} };
+        my $plugin_name = (keys %{$plugin})[0];
+        my $class;
+        if ($plugin_name =~ /^(?:Jifty::Plugin|$app_plugin)::/) {
+            # app-specific plugins use fully qualified names, Jifty plugins may
+            $class = $plugin_name; 
+        }
+        # otherwise, assume it's a short name, qualify it
+        else {
+            $class = "Jifty::Plugin::".$plugin_name;
+        }
+        my %options = %{ $plugin->{ $plugin_name } };
         Jifty::Util->require($class);
         Jifty::ClassLoader->new(base => $class)->require;
         my $plugin_obj = $class->new(%options);


More information about the Jifty-commit mailing list