X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/ee1ad53c4c2710aa7ded61bdc56f3a8cce514f22..9169c3247ffae04ae2fbc9ceda4176ffb5f263d3:/IkiWiki/Plugin/shortcut.pm diff --git a/IkiWiki/Plugin/shortcut.pm b/IkiWiki/Plugin/shortcut.pm index 28d0c7177..8df60cfe2 100644 --- a/IkiWiki/Plugin/shortcut.pm +++ b/IkiWiki/Plugin/shortcut.pm @@ -13,15 +13,18 @@ sub import { #{{{ sub checkconfig () { #{{{ # Preprocess the shortcuts page to get all the available shortcuts # defined before other pages are rendered. - IkiWiki::preprocess("shortcuts", "shortcuts", - readfile(srcfile("shortcuts.mdwn"))); + my $srcfile=srcfile("shortcuts.mdwn", 1); + if (! defined $srcfile) { + error(gettext("shortcut plugin will not work without a shortcuts.mdwn")); + } + IkiWiki::preprocess("shortcuts", "shortcuts", readfile($srcfile)); } # }}} sub preprocess_shortcut (@) { #{{{ my %params=@_; if (! defined $params{name} || ! defined $params{url}) { - return "[[shortcut ".gettext("missing name or url parameter")."]]"; + error gettext("missing name or url parameter"); } hook(type => "preprocess", no_override => 1, id => $params{name}, @@ -54,7 +57,14 @@ sub shortcut_expand ($$@) { #{{{ 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 + }eg; + $text=~s/_/ /g; + if (defined $params{desc}) { + $desc=$params{desc}; + } if (defined $desc) { $desc=~s/\%s/$text/g; } @@ -62,7 +72,6 @@ sub shortcut_expand ($$@) { #{{{ $desc=$text; } - $url=~s/\%s/$encoded_text/g; return "$desc"; } #}}}