diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index 87cb9c3f3..042e168aa 100644
--- a/IkiWiki/CGI.pm
+++ b/IkiWiki/CGI.pm
@@ -21,7 +21,7 @@ sub printheader ($) { #{{{
} #}}}
-sub showform ($$$$) { #{{{
+sub showform ($$$$;@) { #{{{
my $form=shift;
my $buttons=shift;
my $session=shift;
@@ -35,7 +35,7 @@ sub showform ($$$$) { #{{{
}
printheader($session);
- print misctemplate($form->title, $form->render(submit => $buttons));
+ print misctemplate($form->title, $form->render(submit => $buttons), @_);
}
sub redirect ($$) { #{{{
@@ -276,6 +276,8 @@ sub cgi_editpage ($$) { #{{{
file_pruned($page, $config{srcdir}) || $page=~/^\//) {
error("bad page name");
}
+
+ my $baseurl=$config{url}."/".htmlpage($page);
my $from;
if (defined $form->field('from')) {
@@ -325,10 +327,9 @@ sub cgi_editpage ($$) { #{{{
$form->tmpl_param("can_commit", $config{rcs});
$form->tmpl_param("indexlink", indexlink());
$form->tmpl_param("helponformattinglink",
- htmllink("", "", "ikiwiki/formatting",
+ htmllink($page, $page, "ikiwiki/formatting",
noimageinline => 1,
linktext => "FormattingHelp"));
- $form->tmpl_param("baseurl", baseurl());
if ($form->submitted eq "Cancel") {
if ($form->field("do") eq "create" && defined $from) {
@@ -354,9 +355,9 @@ sub cgi_editpage ($$) { #{{{
});
$form->tmpl_param("page_preview",
htmlize($page, $type,
- linkify($page, "/",
- preprocess($page, "/",
- filter($page, "/", $content), 0, 1))));
+ linkify($page, $page,
+ preprocess($page, $page,
+ filter($page, $page, $content), 0, 1))));
# previewing may have created files on disk
saveindex();
}
@@ -458,7 +459,7 @@ sub cgi_editpage ($$) { #{{{
$form->title(sprintf(gettext("editing %s"), pagetitle($page)));
}
- showform($form, \@buttons, $session, $q);
+ showform($form, \@buttons, $session, $q, forcebaseurl => $baseurl);
}
else {
# save page
@@ -474,7 +475,7 @@ sub cgi_editpage ($$) { #{{{
$form->field(name => "page", type => 'hidden');
$form->field(name => "type", type => 'hidden');
$form->title(sprintf(gettext("editing %s"), $page));
- showform($form, \@buttons, $session, $q);
+ showform($form, \@buttons, $session, $q, forcebaseurl => $baseurl);
return;
}
elsif ($form->field("do") eq "create" && $exists) {
@@ -488,7 +489,7 @@ sub cgi_editpage ($$) { #{{{
value => readfile("$config{srcdir}/$file").
"\n\n\n".$form->field("editcontent"),
force => 1);
- showform($form, \@buttons, $session, $q);
+ showform($form, \@buttons, $session, $q, forcebaseurl => $baseurl);
return;
}
@@ -518,7 +519,8 @@ sub cgi_editpage ($$) { #{{{
$form->field(name => "page", type => 'hidden');
$form->field(name => "type", type => 'hidden');
$form->title(sprintf(gettext("editing %s"), $page));
- showform($form, \@buttons, $session, $q);
+ showform($form, \@buttons, $session, $q,
+ forcebaseurl => $baseurl);
return;
}
@@ -562,7 +564,8 @@ sub cgi_editpage ($$) { #{{{
$form->field(name => "page", type => 'hidden');
$form->field(name => "type", type => 'hidden');
$form->title(sprintf(gettext("editing %s"), $page));
- showform($form, \@buttons, $session, $q);
+ showform($form, \@buttons, $session, $q,
+ forcebaseurl => $baseurl);
return;
}
else {
diff --git a/IkiWiki/Plugin/graphviz.pm b/IkiWiki/Plugin/graphviz.pm
index fb3239227..ec48bad2c 100644
--- a/IkiWiki/Plugin/graphviz.pm
+++ b/IkiWiki/Plugin/graphviz.pm
@@ -29,10 +29,10 @@ sub render_graph (\%) { #{{{
# Use the sha1 of the graphviz code as part of its filename.
eval q{use Digest::SHA1};
error($@) if $@;
- my $dest=$params{page}."/graph-".
+ my $dest=$params{destpage}."/graph-".
IkiWiki::possibly_foolish_untaint(Digest::SHA1::sha1_hex($src)).
".png";
- will_render($params{page}, $dest);
+ will_render($params{destpage}, $dest);
if (! -e "$config{destdir}/$dest") {
my $pid;
@@ -73,7 +73,7 @@ sub render_graph (\%) { #{{{
return "\n";
}
else {
- return "\n";
+ return "\n";
}
} #}}}
diff --git a/IkiWiki/Plugin/img.pm b/IkiWiki/Plugin/img.pm
index b6e7c9e41..c5b86bad8 100644
--- a/IkiWiki/Plugin/img.pm
+++ b/IkiWiki/Plugin/img.pm
@@ -39,7 +39,7 @@ sub preprocess (@) { #{{{
my $file = bestlink($params{page}, $image);
- my $dir = $params{page};
+ my $dir = $params{destpage};
my $base = IkiWiki::basename($file);
eval q{use Image::Magick};
@@ -56,7 +56,7 @@ sub preprocess (@) { #{{{
my $outfile = "$config{destdir}/$dir/${w}x${h}-$base";
$imglink = "$dir/${w}x${h}-$base";
- will_render($params{page}, $imglink);
+ will_render($params{destpage}, $imglink);
if (-e $outfile && (-M srcfile($file) >= -M $outfile)) {
$r = $im->Read($outfile);
diff --git a/IkiWiki/Plugin/linkmap.pm b/IkiWiki/Plugin/linkmap.pm
index 62984d9b8..5b87277ac 100644
--- a/IkiWiki/Plugin/linkmap.pm
+++ b/IkiWiki/Plugin/linkmap.pm
@@ -53,11 +53,11 @@ sub genmap ($) { #{{{
}
}
- my $dest=$params{page}."/linkmap.png";
+ my $dest=$params{destpage}."/linkmap.png";
# Use ikiwiki's function to create the file, this makes sure needed
# subdirs are there and does some sanity checking.
- will_render($params{page}, $dest);
+ will_render($params{destpage}, $dest);
writefile($dest, $config{destdir}, "");
# Run dot to create the graphic and get the map data.
diff --git a/IkiWiki/Plugin/sparkline.pm b/IkiWiki/Plugin/sparkline.pm
index 69b3512c2..0b9ddd8d2 100644
--- a/IkiWiki/Plugin/sparkline.pm
+++ b/IkiWiki/Plugin/sparkline.pm
@@ -114,10 +114,10 @@ sub preprocess (@) { #{{{
# the base for its filename.
eval q{use Digest::SHA1};
error($@) if $@;
- my $fn=$params{page}."/sparkline-".
+ my $fn=$params{destpage}."/sparkline-".
IkiWiki::possibly_foolish_untaint(Digest::SHA1::sha1_hex($php)).
".png";
- will_render($params{page}, $fn);
+ will_render($params{destpage}, $fn);
if (! -e "$config{destdir}/$fn") {
my $pid;
diff --git a/IkiWiki/Plugin/teximg.pm b/IkiWiki/Plugin/teximg.pm
index 5dff5feef..f7fd91ddf 100644
--- a/IkiWiki/Plugin/teximg.pm
+++ b/IkiWiki/Plugin/teximg.pm
@@ -70,21 +70,13 @@ sub create ($$$) { #{{{
my $digest = md5_hex($code, $height);
- my $imglink= $params->{page} . "/$digest.png";
- my $imglog = $params->{page} . "/$digest.log";
+ my $imglink= $params->{destpage} . "/$digest.png";
+ my $imglog = $params->{destpage} . "/$digest.log";
will_render($params->{destpage}, $imglink);
will_render($params->{destpage}, $imglog);
- my $imgurl;
- my $logurl;
- if (! $params->{preview}) {
- $imgurl = urlto($imglink, $params->{destpage});
- $logurl = urlto($imglog, $params->{destpage});
- }
- else {
- $imgurl=$params->{page}."/$digest.png";
- $logurl=$params->{page}."/$digest.log";
- }
+ my $imgurl=urlto($imglink, $params->{destpage});
+ my $logurl=urlto($imglink, $params->{destpage});
if (-e "$config{destdir}/$imglink" ||
gen_image($code, $height, $digest, $params->{page})) {
diff --git a/debian/changelog b/debian/changelog
index 53a2fbe16..d05fa8f30 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -31,6 +31,10 @@ ikiwiki (2.41) UNRELEASED; urgency=low
rcs_commit either.
* monotone: Require version 0.38 or greater, and stop using the mtnmergerc
option. (Brian May)
+ * Use forcebaseurl to make page previews be displayed with the html base
+ set to the destination page. This avoids need for hacks to munge the urls
+ in preview mode, which fixes several bugs.
+ * Several destpage fixes in plugins.
-- martin f. krafft Sun, 02 Mar 2008 17:46:38 +0100
diff --git a/doc/plugins/teximg/discussion.mdwn b/doc/plugins/teximg/discussion.mdwn
index 17f677c21..019298670 100644
--- a/doc/plugins/teximg/discussion.mdwn
+++ b/doc/plugins/teximg/discussion.mdwn
@@ -1,2 +1,4 @@
A minor nitpick: if, while editing, you preview your page two times without changing anything, the second time produces an error. --[[buo]]
+
+> Fixed --[[Joey]]
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index 6ff0a41d1..76baba228 100644
--- a/po/ikiwiki.pot
+++ b/po/ikiwiki.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-03 15:55-0500\n"
+"POT-Creation-Date: 2008-03-12 13:53-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -235,7 +235,7 @@ msgstr ""
msgid "%s is locked by %s and cannot be edited"
msgstr ""
-#: ../IkiWiki/Plugin/mdwn.pm:37
+#: ../IkiWiki/Plugin/mdwn.pm:42
#, perl-format
msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
msgstr ""
@@ -244,11 +244,11 @@ msgstr ""
msgid "stylesheet not found"
msgstr ""
-#: ../IkiWiki/Plugin/meta.pm:158
+#: ../IkiWiki/Plugin/meta.pm:166
msgid "redir page not found"
msgstr ""
-#: ../IkiWiki/Plugin/meta.pm:171
+#: ../IkiWiki/Plugin/meta.pm:179
msgid "redir cycle is not allowed"
msgstr ""