summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/goto.pm
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2010-08-27 10:01:58 +0200
committerJonas Smedegaard <dr@jones.dk>2010-08-27 10:01:58 +0200
commitf398ad035b973608d380c9939ea845d8e2a0cdc2 (patch)
tree1ba1a0c94e375ab8ed609eaa57a542c6b87de5a8 /IkiWiki/Plugin/goto.pm
parent958e5735c946263a111420fe47abe58782581e8c (diff)
parent6d213a0c739d5b34357b01a616f99197eeba6ad9 (diff)
Merge branch 'master' of git://git.ikiwiki.info
Diffstat (limited to 'IkiWiki/Plugin/goto.pm')
-rw-r--r--IkiWiki/Plugin/goto.pm20
1 files changed, 12 insertions, 8 deletions
diff --git a/IkiWiki/Plugin/goto.pm b/IkiWiki/Plugin/goto.pm
index 2e2dc04a1..42d2425ca 100644
--- a/IkiWiki/Plugin/goto.pm
+++ b/IkiWiki/Plugin/goto.pm
@@ -7,6 +7,7 @@ use IkiWiki 3.00;
sub import {
hook(type => "cgi", id => 'goto', call => \&cgi);
+ hook(type => "getsetup", id => 'goto', call => \&getsetup);
}
sub getsetup () {
@@ -14,6 +15,7 @@ sub getsetup () {
plugin => {
safe => 1,
rebuild => 0,
+ section => "web",
}
}
@@ -40,18 +42,20 @@ sub cgi_goto ($;$) {
IkiWiki::loadindex();
- # If the page is internal (like a comment), see if it has a
- # permalink. Comments do.
- if (IkiWiki::isinternal($page) &&
- defined $pagestate{$page}{meta}{permalink}) {
- IkiWiki::redirect($q, $pagestate{$page}{meta}{permalink});
+ my $link;
+ if (! IkiWiki::isinternal($page)) {
+ $link = bestlink("", $page);
+ }
+ elsif (defined $pagestate{$page}{meta}{permalink}) {
+ # Can only redirect to an internal page if it has a
+ # permalink.
+ IkiWiki::redirect($q, $pagestate{$page}{meta}{permalink});
}
-
- my $link = bestlink("", $page);
if (! length $link) {
IkiWiki::cgi_custom_failure(
- $q->header(-status => "404 Not Found"),
+ $q,
+ "404 Not Found",
IkiWiki::misctemplate(gettext("missing page"),
"<p>".
sprintf(gettext("The page %s does not exist."),