]> git.p6c8.net - devedit.git/blobdiff - modules/Command.pm
If a file or directory shall be renamed and the destination file already exists,...
[devedit.git] / modules / Command.pm
index 635d43d2906e6f13be3eaa391b00699854e2254f..6b413d04476ab8f1166b9d7b8ceed95f838effa4 100644 (file)
@@ -6,7 +6,7 @@ package Command;
 # Execute Dev-Editor's commands
 #
 # Author:        Patrick Canterino <patshaping@gmx.net>
 # Execute Dev-Editor's commands
 #
 # Author:        Patrick Canterino <patshaping@gmx.net>
-# Last modified: 2003-12-02
+# Last modified: 2003-12-21
 #
 
 use strict;
 #
 
 use strict;
@@ -385,7 +385,7 @@ sub exec_endedit($$)
  }
  else
  {
  }
  else
  {
-  return error("Saving of file '".encode_entities($virtual)."' failed'.",upper_path($virtual));
+  return error("Saving of file '".encode_entities($virtual)."' failed'. The file could be damaged, please check it's integrity.",upper_path($virtual));
  }
 }
 
  }
 }
 
@@ -437,7 +437,7 @@ sub exec_mkdir($$)
 
 # exec_workwithfile()
 #
 
 # exec_workwithfile()
 #
-# Display a form for renaming/copying/deleting/unlocking a file
+# Display a form for renaming/copying/removing/unlocking a file
 #
 # Params: 1. Reference to user input hash
 #         2. Reference to config hash
 #
 # Params: 1. Reference to user input hash
 #         2. Reference to config hash
@@ -499,14 +499,14 @@ END
 
 <hr>
 
 
 <hr>
 
-<h2>Delete</h2>
+<h2>Remove</h2>
 
 <p>Click on the button below to remove the file '$virtual'.</p>
 
 <form action="$script" method="get">
 <input type="hidden" name="file" value="$virtual">
 <input type="hidden" name="command" value="remove">
 
 <p>Click on the button below to remove the file '$virtual'.</p>
 
 <form action="$script" method="get">
 <input type="hidden" name="file" value="$virtual">
 <input type="hidden" name="command" value="remove">
-<p><input type="submit" value="Delete file!"></p>
+<p><input type="submit" value="Remove!"></p>
 </form>
 END
  }
 </form>
 END
  }
@@ -536,7 +536,7 @@ END
 
 # exec_workwithdir()
 #
 
 # exec_workwithdir()
 #
-# Display a form for renaming/deleting a directory
+# Display a form for renaming/removing a directory
 #
 # Params: 1. Reference to user input hash
 #         2. Reference to config hash
 #
 # Params: 1. Reference to user input hash
 #         2. Reference to config hash
@@ -566,19 +566,19 @@ sub exec_workwithdir($$)
 <form action="$script">
 <input type="hidden" name="command" value="rename">
 <input type="hidden" name="file" value="$virtual">
 <form action="$script">
 <input type="hidden" name="command" value="rename">
 <input type="hidden" name="file" value="$virtual">
-<p>Move/Rename directory '$virtual' to: $dir <input type="text" name="newfile" size="50"> <input type="submit" value="Move/Rename!"></p>
+<p>Move/Rename directory '$virtual' to:<br>$dir <input type="text" name="newfile" size="50"> <input type="submit" value="Move/Rename!"></p>
 </form>
 
 <hr>
 
 </form>
 
 <hr>
 
-<h2>Delete</h2>
+<h2>Remove</h2>
 
 <p>Click on the button below to completely remove the directory '$virtual' and oll of it's files and sub directories.</p>
 
 <form action="$script" method="get">
 <input type="hidden" name="file" value="$virtual">
 <input type="hidden" name="command" value="rmdir">
 
 <p>Click on the button below to completely remove the directory '$virtual' and oll of it's files and sub directories.</p>
 
 <form action="$script" method="get">
 <input type="hidden" name="file" value="$virtual">
 <input type="hidden" name="command" value="rmdir">
-<p><input type="submit" value="Delete!"></p>
+<p><input type="submit" value="Remove!"></p>
 </form>
 END
 
 </form>
 END
 
@@ -612,7 +612,44 @@ sub exec_copy($$)
 
  if(-e $new_physical)
  {
 
  if(-e $new_physical)
  {
-  return error("A file or directory called '$new_virtual' already exists and this editor is currently not able to ask to overwrite the existing file or directory.",upper_path($virtual));
+  if(-d $new_physical)
+  {
+   return error("A directory called '$new_virtual' already exists. You cannot replace a directory by a file!",$dir);
+  }
+  elsif(not $data->{'cgi'}->param('confirmed'))
+  {
+   $dir = encode_entities($dir);
+
+   my $output = htmlhead("Replace existing file");
+   $output   .= <<"END";
+<p>A file called '$new_virtual' already exists. Do you want to replace it?</p>
+
+<form action="$script" method="get">
+<input type="hidden" name="command" value="copy">
+<input type="hidden" name="file" value="$virtual">
+<input type="hidden" name="newfile" value="$new_virtual">
+<input type="hidden" name="confirmed" value="1">
+
+<p><input type="submit" value="Yes"></p>
+</form>
+
+<form action="$script" method="get">
+<input type="hidden" name="command" value="show">
+<input type="hidden" name="file" value="$dir">
+
+<p><input type="submit" value="No"></p>
+</form>
+END
+
+   $output .= htmlfoot;
+
+   return \$output;
+  }
+ }
+
+ if($data->{'uselist'}->in_use($data->{'new_virtual'}))
+ {
+  return error("The target file '$new_virtual' already exists and it is edited by someone else.",$dir);
  }
 
  copy($physical,$new_physical) or return error("Could not copy '$virtual' to '$new_virtual'",upper_path($virtual));
  }
 
  copy($physical,$new_physical) or return error("Could not copy '$virtual' to '$new_virtual'",upper_path($virtual));
@@ -642,7 +679,44 @@ sub exec_rename($$)
 
  if(-e $new_physical)
  {
 
  if(-e $new_physical)
  {
-  return error("A file or directory called '$new_virtual' already exists and this editor is currently not able to ask to overwrite the existing file or directory.",upper_path($virtual));
+  if(-d $new_physical)
+  {
+   return error("A directory called '$new_virtual' already exists. You cannot replace a directory!",upper_path($virtual));
+  }
+  elsif(not $data->{'cgi'}->param('confirmed'))
+  {
+   $dir = encode_entities($dir);
+
+   my $output = htmlhead("Replace existing file");
+   $output   .= <<"END";
+<p>A file called '$new_virtual' already exists. Do you want to replace it?</p>
+
+<form action="$script" method="get">
+<input type="hidden" name="command" value="rename">
+<input type="hidden" name="file" value="$virtual">
+<input type="hidden" name="newfile" value="$new_virtual">
+<input type="hidden" name="confirmed" value="1">
+
+<p><input type="submit" value="Yes"></p>
+</form>
+
+<form action="$script" method="get">
+<input type="hidden" name="command" value="show">
+<input type="hidden" name="file" value="$dir">
+
+<p><input type="submit" value="No"></p>
+</form>
+END
+
+   $output .= htmlfoot;
+
+   return \$output;
+  }
+ }
+
+ if($data->{'uselist'}->in_use($data->{'new_virtual'}))
+ {
+  return error("The target file '$new_virtual' already exists and it is edited by someone else.",$dir);
  }
 
  rename($physical,$new_physical) or return error("Could not move/rename '".encode_entities($virtual)."' to '$new_virtual'.",upper_path($virtual));
  }
 
  rename($physical,$new_physical) or return error("Could not move/rename '".encode_entities($virtual)."' to '$new_virtual'.",upper_path($virtual));
@@ -686,6 +760,8 @@ sub exec_rmdir($$)
  my $physical       = $data->{'physical'};
  my $virtual        = $data->{'virtual'};
 
  my $physical       = $data->{'physical'};
  my $virtual        = $data->{'virtual'};
 
+ return exec_remove($data,$config) if(not -d $physical);
+
  if($data->{'cgi'}->param('confirmed'))
  {
   rmtree($physical);
  if($data->{'cgi'}->param('confirmed'))
  {
   rmtree($physical);
@@ -711,14 +787,14 @@ sub exec_rmdir($$)
 <input type="hidden" name="file" value="$virtual">
 <input type="hidden" name="confirmed" value="1">
 
 <input type="hidden" name="file" value="$virtual">
 <input type="hidden" name="confirmed" value="1">
 
-<input type="submit" value="Yes">
+<p><input type="submit" value="Yes"></p>
 </form>
 
 <form action="$script" method="get">
 <input type="hidden" name="command" value="show">
 <input type="hidden" name="file" value="$dir">
 
 </form>
 
 <form action="$script" method="get">
 <input type="hidden" name="command" value="show">
 <input type="hidden" name="file" value="$dir">
 
-<input type="submit" value="No">
+<p><input type="submit" value="No"></p>
 </form>
 END
 
 </form>
 END
 

patrick-canterino.de