diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm index aa73eb87d..af2c5ff4e 100644 --- a/IkiWiki/Plugin/editpage.pm +++ b/IkiWiki/Plugin/editpage.pm @@ -153,6 +153,7 @@ sub cgi_editpage ($$) { noimageinline => 1, linktext => "FormattingHelp")); + my $previewing=0; if ($form->submitted eq "Cancel") { if ($form->field("do") eq "create" && defined $from) { redirect($q, urlto($from, undef, 1)); @@ -166,6 +167,8 @@ sub cgi_editpage ($$) { exit; } elsif ($form->submitted eq "Preview") { + $previewing=1; + my $new=not exists $pagesources{$page}; if ($new) { # temporarily record its type @@ -255,7 +258,7 @@ sub cgi_editpage ($$) { if (! @page_locs) { # hmm, someone else made the page in the # meantime? - if ($form->submitted eq "Preview") { + if ($previewing) { # let them go ahead with the edit # and resolve the conflict at save # time @@ -313,7 +316,9 @@ sub cgi_editpage ($$) { } showform($form, \@buttons, $session, $q, - forcebaseurl => $baseurl, page => $page); + forcebaseurl => $baseurl, + ($previewing ? (page => $page) : ()), + ); } else { # save page @@ -331,7 +336,7 @@ sub cgi_editpage ($$) { $form->field(name => "type", type => 'hidden'); $form->title(sprintf(gettext("editing %s"), $page)); showform($form, \@buttons, $session, $q, - forcebaseurl => $baseurl, page => $page); + forcebaseurl => $baseurl); exit; } elsif ($form->field("do") eq "create" && $exists) { @@ -346,7 +351,7 @@ sub cgi_editpage ($$) { "\n\n\n".$form->field("editcontent"), force => 1); showform($form, \@buttons, $session, $q, - forcebaseurl => $baseurl, page => $page); + forcebaseurl => $baseurl); exit; } @@ -387,7 +392,7 @@ sub cgi_editpage ($$) { $form->field(name => "type", type => 'hidden'); $form->title(sprintf(gettext("editing %s"), $page)); showform($form, \@buttons, $session, $q, - forcebaseurl => $baseurl, page => $page); + forcebaseurl => $baseurl); exit; } @@ -426,7 +431,7 @@ sub cgi_editpage ($$) { $form->field(name => "type", type => 'hidden'); $form->title(sprintf(gettext("editing %s"), $page)); showform($form, \@buttons, $session, $q, - forcebaseurl => $baseurl, page => $page); + forcebaseurl => $baseurl); } else { # The trailing question mark tries to avoid broken diff --git a/debian/changelog b/debian/changelog index fdf111168..5cfb9ce89 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,7 +6,7 @@ ikiwiki (3.20100609) unstable; urgency=low * Remove example blog tag pages; allow autotag creation to create them when used. * Fix support for globbing in tagged() pagespecs. - * When editing a page, show that page's sidebar. (Thanks, privat) + * Fix display of sidebar when previewing page edit. (Thanks, privat) * relativedate: Fix problem with localised dates not working. -- Joey Hess Mon, 31 May 2010 20:44:17 -0400 diff --git a/doc/bugs/misctemplate_does_not_respect_the_current_page___40__if_any__41__.mdwn b/doc/bugs/misctemplate_does_not_respect_the_current_page___40__if_any__41__.mdwn index 2ef5cdba3..f1e4649ff 100644 --- a/doc/bugs/misctemplate_does_not_respect_the_current_page___40__if_any__41__.mdwn +++ b/doc/bugs/misctemplate_does_not_respect_the_current_page___40__if_any__41__.mdwn @@ -34,9 +34,10 @@ But it causes some nasty bugs for plugins that use the pagetemplate hook. It is * -> Problem: the sidebar now shows the foo link (it is the root sidebar!) * -> Was expecte : the sidebar displays "world" -> One could argue that the behavior here is right, or wrong. -> Is a page edit page really the same as the page being edited? -> The next case is more clear.. --[[Joey]] +> I think it's a misconception to think that the page editing page is the same +> as the page it's editing. If you were deleting that page, would you expect +> the "are you sure" confirmation page to display the page's sidebar? +> --[[Joey]] ### A last example @@ -46,7 +47,12 @@ But it causes some nasty bugs for plugins that use the pagetemplate hook. It is * -> Problem: the sidebar still displays the foo link * -> Was expected: the sidebar display "goodby" -> I think this is worth fixing. --[[Joey]] +> In the specific case of previewing, it is indeed a bug that the +> right sidebar is not displayed. And replacing the regular sidebar +> with the one from the previewed page is probably the best we can do.. +> displaying 2 sidebars would be confusing, and the `page.tmpl` can +> put the sidebar anywhere so we can't just display the preview sidebar +> next to the rest of the page preview. --[[Joey]] ## Some superficial hacking @@ -63,5 +69,6 @@ I do not guarantee (I do not even expect) that it is the proper way to solve this bug but it may help developers to find and solve the real problem. > Oh, it's pretty reasonable. I don't think it breaks anything. :) +> I modified it a bit, and explicitly made it *not* "fix" the second example. > [[done]] > --[[Joey]]