summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-02-14 15:42:14 -0500
committerJoey Hess <joey@kodama.kitenet.net>2008-02-14 15:42:14 -0500
commit553136ec1f73246cde1dce300b15eec2e5e73a97 (patch)
treeb0486bb9ec44037ec0b6b8ca2d9b6f7ea52690de
parent8be2b60aaca495b84c299cf69ee8958603bd7204 (diff)
* 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.
-rw-r--r--IkiWiki/CGI.pm17
-rw-r--r--debian/changelog6
-rw-r--r--doc/bugs/Preview_removes_page_location_drop-down_options.mdwn5
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 <josh@freedesktop.org> 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]]