[Jifty-commit] r1474 - in jifty/branches/plugin_rewrite: . lib
lib/Jifty lib/Jifty/Plugin plugins/Login/doc
plugins/Login/share/po plugins/Login/share/web/static
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Tue Jul 4 12:21:30 EDT 2006
Author: jpeacock
Date: Tue Jul 4 12:21:24 2006
New Revision: 1474
Added:
jifty/branches/plugin_rewrite/plugins/Login/doc/
jifty/branches/plugin_rewrite/plugins/Login/share/po/
jifty/branches/plugin_rewrite/plugins/Login/share/web/static/
jifty/branches/plugin_rewrite/plugins/Login/t/
Modified:
jifty/branches/plugin_rewrite/ (props changed)
jifty/branches/plugin_rewrite/lib/Jifty.pm
jifty/branches/plugin_rewrite/lib/Jifty/Plugin/ClassLoader.pm
jifty/branches/plugin_rewrite/lib/Jifty/Util.pm
Log:
Fully working (no errors!) plugins now.
Modified: jifty/branches/plugin_rewrite/lib/Jifty.pm
==============================================================================
--- jifty/branches/plugin_rewrite/lib/Jifty.pm (original)
+++ jifty/branches/plugin_rewrite/lib/Jifty.pm Tue Jul 4 12:21:24 2006
@@ -126,6 +126,7 @@
my $class = "Jifty::Plugin::".(keys %{$plugin})[0];
my %options = %{ $plugin->{(keys %{$plugin})[0]} };
Jifty::Util->require($class);
+ Jifty::ClassLoader->new(base => $class)->require;
push @plugins, $class->new(%options);
}
Modified: jifty/branches/plugin_rewrite/lib/Jifty/Plugin/ClassLoader.pm
==============================================================================
--- jifty/branches/plugin_rewrite/lib/Jifty/Plugin/ClassLoader.pm (original)
+++ jifty/branches/plugin_rewrite/lib/Jifty/Plugin/ClassLoader.pm Tue Jul 4 12:21:24 2006
@@ -109,58 +109,38 @@
$module =~ s{/}{::}g;
# The quick check
- return undef unless $module =~ m!^($base|$plugin)!;
+ return undef unless $module =~ m!^$base!;
+ # Note that at this point, all of the plugins classes will already be
+ # loaded, so we can just check their presence when deciding whether
+ # this is a class the plugin intends to autocreate
if ( $module =~ m{^(?:$base)::(Notification|CurrentUser)$} ) {
- my $toplevel = "${plugin}::$1";
+ my $method = "${plugin}::$1";
return $self->return_class(
"use warnings; use strict; package $module;\n"
- . "use base qw/$toplevel/;\n"
+ . "use base qw/$method/;\n"
. "sub _autogenerated { 1 };\n"
. "1;" )
- if ($toplevel->require);
+ if Jifty::Util->already_required($method);
}
elsif ( $module =~ m{^(?:$base)::Action::([^\.]+)$} ) {
- my $action = "${plugin}::Action::$1";
- return $self->return_class(
- "use warnings; use strict; package $module;\n"
- . "use base qw/$action/;\n"
- . "sub autogenerated { 1 };\n"
- . "1;" )
- if ($action->require);
- }
- # now generate inherited classes for the plugin itself
- elsif ( $module =~ m{^(?:$plugin)::Action::(Create|Update|Delete)([^\.]+)$} ) {
- my $modelclass = $plugin . "::Model::" . $2;
- return undef if
- ( keys %{$self->{models}} ) &&
- ( not defined $self->{models}{$modelclass});
-
- Jifty::Util->require($modelclass);
+ my $method = $1;
- return undef unless eval { $modelclass->table };
+ # Check to see if this is an action for a model that this plugin
+ # doesn't support
+ if ( $method =~ m/^(?:Create|Update|Delete)([^\.]+)$/ ) {
+ my $model = "${plugin}::Model::$1";
+ return undef unless Jifty::Util->already_required($model);
+ }
+ $method = "${plugin}::Action::$method";
return $self->return_class(
"use warnings; use strict; package $module;\n"
- . "use base qw/Jifty::Action::Record::$1/;\n"
- . "sub record_class { '$modelclass' };\n"
+ . "use base qw/$method/;\n"
. "sub autogenerated { 1 };\n"
- . "1;" );
- }
- elsif ( $module =~ m{^(?:$plugin)::(Record|Collection|Notification|Dispatcher|Bootstrap|Upgrade)$} ) {
- return $self->return_class(
- "use warnings; use strict; package $module;\n"
- . "use base qw/Jifty::$1/;\n"
- . "sub _autogenerated { 1 };\n"
- . "1;" );
+ . "1;" )
+ if Jifty::Util->already_required($method);
}
- elsif ( $module =~ m{^(?:$plugin)::Model::(\w+)Collection$} ) {
- return $self->return_class(
- "use warnings; use strict; package $module;\n"
- . "use base qw/@{[$plugin]}::Collection/;\n"
- . "sub record_class { '@{[$plugin]}::Model::$1' }\n"
- . "1;" );
- }
return undef;
}
Modified: jifty/branches/plugin_rewrite/lib/Jifty/Util.pm
==============================================================================
--- jifty/branches/plugin_rewrite/lib/Jifty/Util.pm (original)
+++ jifty/branches/plugin_rewrite/lib/Jifty/Util.pm Tue Jul 4 12:21:24 2006
@@ -190,8 +190,7 @@
return 0;
}
- my $path = join('/', split(/::/,$class)).".pm";
- return 1 if $INC{$path};
+ return 1 if $self->already_required($class);
my $retval = $class->require;
if ($UNIVERSAL::require::ERROR) {
@@ -210,6 +209,12 @@
return 1;
}
+sub already_required {
+ my ($self, $class) = @_;
+ my $path = join('/', split(/::/,$class)).".pm";
+ return ( $INC{$path} ? 1 : 0);
+}
+
=head1 AUTHOR
Various folks at Best Practical Solutions, LLC.
More information about the Jifty-commit
mailing list