X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/46819b530bca5a3adf00278500a34363a94c1fb2..c47839389abb8e21a94606a2c105e5c1ecf6ed32:/IkiWiki/Plugin/shortcut.pm diff --git a/IkiWiki/Plugin/shortcut.pm b/IkiWiki/Plugin/shortcut.pm index c1e6a7eb3..98df143ab 100644 --- a/IkiWiki/Plugin/shortcut.pm +++ b/IkiWiki/Plugin/shortcut.pm @@ -16,11 +16,12 @@ sub getsetup () { plugin => { safe => 1, rebuild => undef, + section => "widget", }, } sub checkconfig () { - if (defined $config{srcdir}) { + if (defined $config{srcdir} && length $config{srcdir}) { # Preprocess the shortcuts page to get all the available shortcuts # defined before other pages are rendered. my $srcfile=srcfile("shortcuts.".$config{default_pageext}, 1); @@ -28,10 +29,12 @@ sub checkconfig () { $srcfile=srcfile("shortcuts.mdwn", 1); } if (! defined $srcfile) { - error(sprintf(gettext("shortcut plugin will not work without %s"), - "shortcuts.".$config{default_pageext})); + print STDERR sprintf(gettext("shortcut plugin will not work without %s"), + "shortcuts.".$config{default_pageext})."\n"; + } + else { + IkiWiki::preprocess("shortcuts", "shortcuts", readfile($srcfile)); } - IkiWiki::preprocess("shortcuts", "shortcuts", readfile($srcfile)); } } @@ -70,11 +73,21 @@ sub shortcut_expand ($$@) { add_depends($params{destpage}, "shortcuts"); my $text=join(" ", @params); - my $encoded_text=$text; - $encoded_text=~s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg; - $url=~s{\%([sS])}{ - $1 eq 's' ? $encoded_text : $text + $url=~s{\%([sSW])}{ + if ($1 eq 's') { + my $t=$text; + $t=~s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg; + $t; + } + elsif ($1 eq 'S') { + $text; + } + elsif ($1 eq 'W') { + my $t=Encode::encode_utf8($text); + $t=~s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg; + $t; + } }eg; $text=~s/_/ /g;