Skip to content

Commit

Permalink
Item14237: Changed extensions initialization order
Browse files Browse the repository at this point in the history
Callbacks are to be registered first as they might be requested very
early unlike the tags which are needed much later when actual rendering
is carried out.

Added context 'extensionsInitialized'
  • Loading branch information
vrurg committed Sep 20, 2017
1 parent bb7aac9 commit 1f0845b
Showing 1 changed file with 14 additions and 12 deletions.
26 changes: 14 additions & 12 deletions core/lib/Foswiki/ExtManager.pm
Original file line number Diff line number Diff line change
Expand Up @@ -440,18 +440,6 @@ sub loadExtensions {
sub initialize {
my $this = shift;

# Register macro tag handlers for enabled extensions.
foreach my $tag ( keys %{ $extTags{tags} } ) {
my $tagData = $extTags{tags}{$tag};
if ( $this->extEnabled( $tagData->{extension} ) ) {

# Store back mapping for later clean up.
push @{ $extTags{exts}{ $tagData->{extension} }{tags} }, $tag;
my $handler = $tagData->{class} // $tagData->{extension};
$this->app->macros->registerTagHandler( $tag, $handler );
}
}

# Register callback handlers for enabled extensions.
foreach my $cbName ( keys %extCallbacks ) {
foreach my $cbInfo ( @{ $extCallbacks{$cbName} } ) {
Expand All @@ -466,6 +454,20 @@ sub initialize {
$this->registerCallback( $cbName, \&_cbDispatch, $cbData );
}
}

# Register macro tag handlers for enabled extensions.
foreach my $tag ( keys %{ $extTags{tags} } ) {
my $tagData = $extTags{tags}{$tag};
if ( $this->extEnabled( $tagData->{extension} ) ) {

# Store back mapping for later clean up.
push @{ $extTags{exts}{ $tagData->{extension} }{tags} }, $tag;
my $handler = $tagData->{class} // $tagData->{extension};
$this->app->macros->registerTagHandler( $tag, $handler );
}
}

$this->app->enterContext('extensionsInitialized');
}

sub deregisterExtension {
Expand Down

0 comments on commit 1f0845b

Please sign in to comment.