X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fblosxom.git;a=blobdiff_plain;f=blosxom.cgi;h=c51ca2a9d2cc1f21b98988085c68a0380f22aa88;hp=2c6b6ee17d1e7e5692668cba4f5be2d3297ff4dd;hb=4f915f2efa07e9e95b3bb6d2310ec3d39b81bf72;hpb=2e7cf5294e63848b2f862b9ce828d54994a7ab52 diff --git a/blosxom.cgi b/blosxom.cgi index 2c6b6ee..c51ca2a 100755 --- a/blosxom.cgi +++ b/blosxom.cgi @@ -250,15 +250,29 @@ foreach my $plugin ( @plugin_list ) { else { eval { require $plugin }; } - $@ and warn "$@ error finding or loading blosxom plugin $plugin_name - skipping\n" and next; - $plugin_name->start() and ( $plugins{$plugin_name} = $on_off ) and push @plugins, $plugin_name; + + if ($@) { + warn "error finding or loading blosxom plugin '$plugin_name': $@"; + next; + } + if ( $plugin_name->start() and ( $plugins{$plugin_name} = $on_off ) ) { + push @plugins, $plugin_name; + } + } shift @INC foreach @plugin_dirs; # Plugins: Template # Allow for the first encountered plugin::template subroutine to override the # default built-in template subroutine -my $tmp; foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('template') and defined($tmp = $plugin->template()) and $template = $tmp and last; } +foreach my $plugin (@plugins) { + if ( $plugins{$plugin} > 0 and $plugin->can('template') ) { + if ( my $tmp = $plugin->template() ) { + $template = $tmp; + last; + } + } +} # Provide backward compatibility for Blosxom < 2.0rc1 plug-ins sub load_template { @@ -317,7 +331,14 @@ $entries = # Plugins: Entries # Allow for the first encountered plugin::entries subroutine to override the # default built-in entries subroutine -my $tmp; foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('entries') and defined($tmp = $plugin->entries()) and $entries = $tmp and last; } +foreach my $plugin (@plugins) { + if ( $plugins{$plugin} > 0 and $plugin->can('entries') ) { + if ( my $tmp = $plugin->entries() ) { + $entries = $tmp; + last; + } + } +} my ($files, $indexes, $others) = &$entries(); %indexes = %$indexes; @@ -374,7 +395,11 @@ else { } # Plugins: End -foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('end') and $entries = $plugin->end() } +foreach my $plugin (@plugins) { + if ( $plugins{$plugin} > 0 and $plugin->can('end') ) { + $entries = $plugin->end(); + } +} # Generate sub generate { @@ -383,7 +408,9 @@ sub generate { %files = %$files; %others = ref $others ? %$others : (); # Plugins: Filter - foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('filter') and $entries = $plugin->filter(\%files, \%others) } + foreach my $plugin ( @plugins ) { + if ($plugins{$plugin} > 0 and $plugin->can('filter')){ $entries = $plugin->filter(\%files, \%others); } + } my %f = %files; @@ -444,7 +471,7 @@ sub generate { if ( $currentdir =~ /(.*?)([^\/]+)\.(.+)$/ and $2 ne 'index' ) { $currentdir = "$1$2.$file_extension"; - $files{"$datadir/$1$2.$file_extension"} and %f = ( "$datadir/$1$2.$file_extension" => $files{"$datadir/$1$2.$file_extension"} ); + %f = ( "$datadir/$currentdir" => $files{"$datadir/$currentdir"} ) if $files{"$datadir/$currentdir"}; } else { $currentdir =~ s!/index\..+$!!; @@ -484,7 +511,7 @@ sub generate { ($dw,$mo,$mo_num,$da,$ti,$yr,$utc_offset) = nice_date($files{"$path_file"}); ($hr,$min) = split /:/, $ti; ($hr12, $ampm) = $hr >= 12 ? ($hr - 12,'pm') : ($hr, 'am'); - $hr12 =~ s/^0//; $hr12 == 0 and $hr12 = 12; + $hr12 =~ s/^0//; if ($hr12 == 0) {$hr12 = 12}; # Only stories from the right date my($path_info_yr,$path_info_mo_num, $path_info_da) = split /\//, $date; @@ -496,11 +523,20 @@ sub generate { my $date = (&$template($path,'date',$flavour)); # Plugins: Date - foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('date') and $entries = $plugin->date($currentdir, \$date, $files{$path_file}, $dw,$mo,$mo_num,$da,$ti,$yr) } + foreach my $plugin (@plugins) { + if ( $plugins{$plugin} > 0 and $plugin->can('date') ) { + $entries + = $plugin->date( $currentdir, \$date, $files{$path_file}, $dw, + $mo, $mo_num, $da, $ti, $yr ); + } + } $date = &$interpolate($date); - $curdate ne $date and $curdate = $date and $output .= $date; + if ( $date && $curdate ne $date ) { + $curdate = $date; + $output .= $date; + } use vars qw/ $title $body $raw /; if (-f "$path_file" && $fh->open("< $path_file")) {