X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/b4bc7d17080055c615bc264c4d5b7d791161682c..512d860c169d776885922b7eaff0bcb2b722f12a:/IkiWiki/Plugin/rename.pm?ds=sidebyside

diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm
index 8213d21f6..57747d3c9 100644
--- a/IkiWiki/Plugin/rename.pm
+++ b/IkiWiki/Plugin/rename.pm
@@ -18,6 +18,7 @@ sub getsetup () {
 		plugin => {
 			safe => 1,
 			rebuild => 0,
+			section => "web",
 		},
 }
 
@@ -49,7 +50,7 @@ sub check_canrename ($$$$$$) {
 	IkiWiki::check_canedit($src, $q, $session);
 	if ($attachment) {
 		if (IkiWiki::Plugin::attachment->can("check_canattach")) {
-			IkiWiki::Plugin::attachment::check_canattach($session, $src, $srcfile);
+			IkiWiki::Plugin::attachment::check_canattach($session, $src, "$config{srcdir}/$srcfile");
 		}
 		else {
 			error("renaming of attachments is not allowed");
@@ -62,9 +63,8 @@ sub check_canrename ($$$$$$) {
 			error(gettext("no change to the file name was specified"));
 		}
 
-		# Must be a legal filename, and not absolute.
-		if (IkiWiki::file_pruned($destfile, $config{srcdir}) || 
-		    $destfile=~/^\//) {
+		# Must be a legal filename.
+		if (IkiWiki::file_pruned($destfile)) {
 			error(sprintf(gettext("illegal name")));
 		}
 
@@ -84,7 +84,7 @@ sub check_canrename ($$$$$$) {
 		if ($attachment) {
 			# Note that $srcfile is used here, not $destfile,
 			# because it wants the current file, to check it.
-			IkiWiki::Plugin::attachment::check_canattach($session, $dest, $srcfile);
+			IkiWiki::Plugin::attachment::check_canattach($session, $dest, "$config{srcdir}/$srcfile");
 		}
 	}
 
@@ -108,6 +108,7 @@ sub check_canrename ($$$$$$) {
 			}
 		}
 	});
+	return defined $canrename ? $canrename : 1;
 }
 
 sub rename_form ($$$) {
@@ -125,12 +126,14 @@ sub rename_form ($$$) {
 		method => 'POST',
 		javascript => 0,
 		params => $q,
-		action => $config{cgiurl},
-		stylesheet => IkiWiki::baseurl()."style.css",
+		action => IkiWiki::cgiurl(),
+		stylesheet => 1,
 		fields => [qw{do page new_name attachment}],
 	);
 	
 	$f->field(name => "do", type => "hidden", value => "rename", force => 1);
+	$f->field(name => "sid", type => "hidden", value => $session->id,
+		force => 1);
 	$f->field(name => "page", type => "hidden", value => $page, force => 1);
 	$f->field(name => "new_name", value => pagetitle($page, 1), size => 60);
 	if (!$q->param("attachment")) {
@@ -286,6 +289,8 @@ sub sessioncgi ($$) {
 			postrename($session);
 		}
 		elsif ($form->submitted eq 'Rename' && $form->validate) {
+			IkiWiki::checksessionexpiry($q, $session, $q->param('sid'));
+
 			# Queue of rename actions to perfom.
 			my @torename;
 
@@ -345,8 +350,9 @@ sub sessioncgi ($$) {
 				$pagesources{$rename->{src}}=$rename->{destfile};
 			}
 			IkiWiki::rcs_commit_staged(
-				sprintf(gettext("rename %s to %s"), $srcfile, $destfile),
-				$session->param("name"), $ENV{REMOTE_ADDR}) if $config{rcs};
+				message => sprintf(gettext("rename %s to %s"), $srcfile, $destfile),
+				session => $session,
+			) if $config{rcs};
 
 			# Then link fixups.
 			foreach my $rename (@torename) {
@@ -568,11 +574,10 @@ sub fixlinks ($$$) {
 				eval { writefile($file, $config{srcdir}, $content) };
 				next if $@;
 				my $conflict=IkiWiki::rcs_commit(
-					$file,
-					sprintf(gettext("update for rename of %s to %s"), $rename->{srcfile}, $rename->{destfile}),
-					$token,
-					$session->param("name"), 
-					$ENV{REMOTE_ADDR}
+					file => $file,
+					message => sprintf(gettext("update for rename of %s to %s"), $rename->{srcfile}, $rename->{destfile}),
+					token => $token,
+					session => $session,
 				);
 				push @fixedlinks, $page if ! defined $conflict;
 			}