]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki.pm
Fix support for globbing in tagged() pagespecs.
[git.ikiwiki.info.git] / IkiWiki.pm
index 46c29abe38a045b813a8a32a632c3f97c729faa8..27fa4ca17dd3a17fa6768acb5e496758a3eb55a7 100644 (file)
@@ -12,9 +12,9 @@ use open qw{:utf8 :std};
 
 use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase
        %pagestate %wikistate %renderedfiles %oldrenderedfiles
-       %pagesources %destsources %depends %depends_simple @mass_depends 
-       %hooks %forcerebuild %loaded_plugins %typedlinks %oldtypedlinks
-       %autofiles};
+       %pagesources %delpagesources %destsources %depends %depends_simple
+       @mass_depends %hooks %forcerebuild %loaded_plugins %typedlinks
+       %oldtypedlinks %autofiles};
 
 use Exporter q{import};
 our @EXPORT = qw(hook debug error htmlpage template template_depends
@@ -1745,6 +1745,7 @@ sub misctemplate ($$;@) {
        run_hooks(pagetemplate => sub {
                shift->(page => "", destpage => "", template => $template);
        });
+       templateactions($template, "");
 
        $template->param(
                dynamic => 1,
@@ -1756,17 +1757,29 @@ sub misctemplate ($$;@) {
                @_,
        );
        
+       return $template->output;
+}
+
+sub templateactions ($$) {
+       my $template=shift;
+       my $page=shift;
+
+       my $have_actions=0;
        my @actions;
        run_hooks(pageactions => sub {
                push @actions, map { { action => $_ } } 
-                       grep { defined } shift->(page => "");
+                       grep { defined } shift->(page => $page);
        });
        $template->param(actions => \@actions);
-       if (@actions) {
-               $template->param(have_actions => 1);
+
+       if ($config{cgiurl} && exists $hooks{auth}) {
+               $template->param(prefsurl => cgiurl(do => "prefs"));
+               $have_actions=1;
        }
 
-       return $template->output;
+       if ($have_actions || @actions) {
+               $template->param(have_actions => 1);
+       }
 }
 
 sub hook (@) {
@@ -2384,18 +2397,20 @@ sub match_link ($$;@) {
                unless $links && @{$links};
        my $bestlink = IkiWiki::bestlink($from, $link);
        foreach my $p (@{$links}) {
+               next unless (! defined $linktype || exists $IkiWiki::typedlinks{$page}{$linktype}{$p});
+
                if (length $bestlink) {
-                       if ((!defined $linktype || exists $IkiWiki::typedlinks{$page}{$linktype}{$p}) && $bestlink eq IkiWiki::bestlink($page, $p)) {
+                       if ($bestlink eq IkiWiki::bestlink($page, $p)) {
                                return IkiWiki::SuccessReason->new("$page links to $link$qualifier", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
                        }
                }
                else {
-                       if ((!defined $linktype || exists $IkiWiki::typedlinks{$page}{$linktype}{$p}) && match_glob($p, $link, %params)) {
+                       if (match_glob($p, $link, %params)) {
                                return IkiWiki::SuccessReason->new("$page links to page $p$qualifier, matching $link", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
                        }
                        my ($p_rel)=$p=~/^\/?(.*)/;
                        $link=~s/^\///;
-                       if ((!defined $linktype || exists $IkiWiki::typedlinks{$page}{$linktype}{$p_rel}) && match_glob($p_rel, $link, %params)) {
+                       if (match_glob($p_rel, $link, %params)) {
                                return IkiWiki::SuccessReason->new("$page links to page $p_rel$qualifier, matching $link", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
                        }
                }
@@ -2450,7 +2465,7 @@ sub match_created_after ($$;@) {
 }
 
 sub match_creation_day ($$;@) {
-       if ((gmtime($IkiWiki::pagectime{shift()}))[3] == shift) {
+       if ((localtime($IkiWiki::pagectime{shift()}))[3] == shift) {
                return IkiWiki::SuccessReason->new('creation_day matched');
        }
        else {
@@ -2459,7 +2474,7 @@ sub match_creation_day ($$;@) {
 }
 
 sub match_creation_month ($$;@) {
-       if ((gmtime($IkiWiki::pagectime{shift()}))[4] + 1 == shift) {
+       if ((localtime($IkiWiki::pagectime{shift()}))[4] + 1 == shift) {
                return IkiWiki::SuccessReason->new('creation_month matched');
        }
        else {
@@ -2468,7 +2483,7 @@ sub match_creation_month ($$;@) {
 }
 
 sub match_creation_year ($$;@) {
-       if ((gmtime($IkiWiki::pagectime{shift()}))[5] + 1900 == shift) {
+       if ((localtime($IkiWiki::pagectime{shift()}))[5] + 1900 == shift) {
                return IkiWiki::SuccessReason->new('creation_year matched');
        }
        else {