X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/80915c830a03cf67c6770ef5e62d5178824b101e..21b55c9640c3529df290d5409a3af37e90520e5f:/IkiWiki/CGI.pm

diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index 3f588e427..87cb9c3f3 100644
--- a/IkiWiki/CGI.pm
+++ b/IkiWiki/CGI.pm
@@ -354,9 +354,11 @@ sub cgi_editpage ($$) { #{{{
 		});
 		$form->tmpl_param("page_preview",
 			htmlize($page, $type,
-			linkify($page, "",
-			preprocess($page, $page,
-			filter($page, $page, $content), 0, 1))));
+			linkify($page, "/",
+			preprocess($page, "/",
+			filter($page, "/", $content), 0, 1))));
+		# previewing may have created files on disk
+		saveindex();
 	}
 	elsif ($form->submitted eq "Save Page") {
 		$form->tmpl_param("page_preview", "");
@@ -392,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 $_}
@@ -402,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 {
@@ -448,7 +459,6 @@ sub cgi_editpage ($$) { #{{{
 		}
 		
 		showform($form, \@buttons, $session, $q);
-		saveindex();
 	}
 	else {
 		# save page
@@ -526,7 +536,7 @@ sub cgi_editpage ($$) { #{{{
 
 			# Prevent deadlock with post-commit hook by
 			# signaling to it that it should not try to
-			# do anything (except send commit mails).
+			# do anything.
 			disable_commit_hook();
 			$conflict=rcs_commit($file, $message,
 				$form->field("rcsinfo"),