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 ""