]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/meta.pm
* Finally implemented a simple per-page data storage mechanism for plugins,
[git.ikiwiki.info.git] / IkiWiki / Plugin / meta.pm
index ac8890795fb8eadf435ff9508682feaacfa8227e..968e6ccee789de718bac558f6dd30cf58b0acaab 100644 (file)
@@ -24,6 +24,7 @@ sub filter (@) { #{{{
        my %params=@_;
        
        $meta{$params{page}}='';
+       delete $pagestate{$params{page}}{meta}{redir};
 
        return $params{content};
 } # }}}
@@ -72,10 +73,16 @@ sub preprocess (@) { #{{{
        elsif ($key eq 'redir') {
                my $safe=0;
                if ($value !~ /^\w+:\/\//) {
+                       add_depends($page, $value);
                        my $link=bestlink($page, $value);
                        if (! length $link) {
                                return "[[meta ".gettext("redir page not found")."]]";
                        }
+                       $pagestate{$page}{meta}{redir}=$link;
+                       if ($pagestate{$link}{meta}{redir}) {
+                               # TODO: real cycle detection
+                               return "[[meta ".gettext("redir not allowed to point to a page that contains a redir")."]]";
+                       }
                        $value=urlto($link, $destpage);
                        $safe=1;
                }