$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 $_}
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 {
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
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]]