diff --git a/IkiWiki.pm b/IkiWiki.pm index e963471e4..ef8ccb2da 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1068,6 +1068,14 @@ sub baseurl (;$) { return $page; } +sub urlabs ($$) { + my $url=shift; + my $urlbase=shift; + + eval q{use URI}; + URI->new_abs($url, $urlbase)->as_string; +} + sub abs2rel ($$) { # Work around very innefficient behavior in File::Spec if abs2rel # is passed two relative paths. It's much faster if paths are diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index e8850cc54..f1bec6b8f 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -59,26 +59,16 @@ sub showform_preview ($$$$;@) { my %params=@_; # The base url needs to be a full URL, and urlto may return a path. - my $baseurl = absurl(urlto($params{page}), $cgi); + my $baseurl = urlabs(urlto($params{page}), $cgi->url); showform($form, $buttons, $session, $cgi, @_, forcebaseurl => $baseurl); } -# Forces a partial url (path only) to absolute, using the same -# URL scheme as the CGI. Full URLs are left unchanged. -sub absurl ($$) { - my $partialurl=shift; - my $q=shift; - - eval q{use URI}; - return URI->new_abs($partialurl, $q->url); -} - sub redirect ($$) { my $q=shift; eval q{use URI}; - my $url=URI->new(absurl(shift, $q)); + my $url=URI->new(urlabs(shift, $q->url)); if (! $config{w3mmode}) { print $q->redirect($url); } diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm index 9b70e5df0..59185e97f 100644 --- a/IkiWiki/Plugin/aggregate.pm +++ b/IkiWiki/Plugin/aggregate.pm @@ -8,7 +8,6 @@ use IkiWiki 3.00; use HTML::Parser; use HTML::Tagset; use HTML::Entities; -use URI; use open qw{:utf8 :std}; my %feeds; @@ -660,7 +659,7 @@ sub add_page (@) { $template->param(url => $feed->{url}); $template->param(copyright => $params{copyright}) if defined $params{copyright} && length $params{copyright}; - $template->param(permalink => urlabs($params{link}, $feed->{feedurl})) + $template->param(permalink => IkiWiki::urlabs($params{link}, $feed->{feedurl})) if defined $params{link}; if (ref $feed->{tags}) { $template->param(tags => [map { tag => $_ }, @{$feed->{tags}}]); @@ -688,13 +687,6 @@ sub wikiescape ($) { return encode_entities(shift, '\[\]'); } -sub urlabs ($$) { - my $url=shift; - my $urlbase=shift; - - URI->new_abs($url, $urlbase)->as_string; -} - sub htmlabs ($$) { # Convert links in html from relative to absolute. # Note that this is a heuristic, which is not specified by the rss @@ -720,7 +712,7 @@ sub htmlabs ($$) { next unless $v_offset; # 0 v_offset means no value my $v = substr($text, $v_offset, $v_len); $v =~ s/^([\'\"])(.*)\1$/$2/; - my $new_v=urlabs($v, $urlbase); + my $new_v=IkiWiki::urlabs($v, $urlbase); $new_v =~ s/\"/"/g; # since we quote with "" substr($text, $v_offset, $v_len) = qq("$new_v"); }