From 553136ec1f73246cde1dce300b15eec2e5e73a97 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 14 Feb 2008 15:42:14 -0500 Subject: * Preview limits the page dropdown to what's selected previously (as preserving the full list across preview would be tricky). Userdirs were still being offered as an option there, remove them. * Fix a bug where user A created a page concurrently with user B, and when B previewed it would redirect B to A's new page, losing B's work. Instead, don't redirect and let conflict handling resolve it. --- IkiWiki/CGI.pm | 17 +++++++++++++---- debian/changelog | 6 ++++++ ...Preview_removes_page_location_drop-down_options.mdwn | 5 +++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 4d4464c28..cfb2c0b1d 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -394,9 +394,10 @@ sub cgi_editpage ($$) { #{{{ $dir=~s![^/]+/+$!!; push @page_locs, $dir.$page; } + + push @page_locs, "$config{userdir}/$page" + if length $config{userdir}; } - push @page_locs, "$config{userdir}/$page" - if length $config{userdir}; @page_locs = grep { ! exists $pagecase{lc $_} @@ -404,8 +405,16 @@ sub cgi_editpage ($$) { #{{{ if (! @page_locs) { # hmm, someone else made the page in the # meantime? - redirect($q, "$config{url}/".htmlpage($page)); - return; + if ($form->submitted eq "Preview") { + # let them go ahead with the edit + # and resolve the conflict at save + # time + @page_locs=$page; + } + else { + redirect($q, "$config{url}/".htmlpage($page)); + return; + } } my @editable_locs = grep { diff --git a/debian/changelog b/debian/changelog index d56c132ad..02d6aa499 100644 --- a/debian/changelog +++ b/debian/changelog @@ -27,6 +27,12 @@ ikiwiki (2.40) UNRELEASED; urgency=low containing ikiwiki.cgi, but this should not change the urls to the style sheets etc. Add a new forcebareurl parameter to misctemplate to allow it to do that. + * Preview limits the page dropdown to what's selected previously + (as preserving the full list across preview would be tricky). Userdirs + were still being offered as an option there, remove them. + * Fix a bug where user A created a page concurrently with user B, and + when B previewed it would redirect B to A's new page, losing B's work. + Instead, don't redirect and let conflict handling resolve it. -- Josh Triplett Sun, 10 Feb 2008 13:18:58 -0800 diff --git a/doc/bugs/Preview_removes_page_location_drop-down_options.mdwn b/doc/bugs/Preview_removes_page_location_drop-down_options.mdwn index e314f1f0e..71b3c7147 100644 --- a/doc/bugs/Preview_removes_page_location_drop-down_options.mdwn +++ b/doc/bugs/Preview_removes_page_location_drop-down_options.mdwn @@ -3,3 +3,8 @@ If there is more than one option in the Page Location drop down box when create The problem exists on Ikiwiki's wiki, but manifests itself differently, in that subpages are still displayed, so maybe that's the actual bug :) Anyway, to reproduce, edit any page, view the page location options, preview, and some will disappear. + +> Yeah, this is a dark corner. :-) It'd be nice if preview did preserve the +> lise, but it's complex to do so. So for now the bug is that it added +> userdirs to the list, which I've fixed, so calling this [[done]] +> --[[Joey]] -- cgit v1.2.3