]> git.p6c8.net - devedit.git/commitdiff
Copying and renaming of files is back again!
authorpcanterino <>
Fri, 20 Feb 2004 11:51:30 +0000 (11:51 +0000)
committerpcanterino <>
Fri, 20 Feb 2004 11:51:30 +0000 (11:51 +0000)
Additionally, there was an error which caused existing files not to be replaced
if they were not in the root directory. Now, this is fixed.

devedit.dat
devedit.pl
modules/Command.pm
templates/confirm_replace.htm
templates/copyfile.htm [new file with mode: 0644]
templates/dirlist_dir.htm
templates/dirlist_file.htm
templates/renamefile.htm [new file with mode: 0644]

index c34d1505004d3e9771be2f407fb91aacfbded4a9..45d469d630a808b0be749d4c12b246cea08b435e 100644 (file)
@@ -19,6 +19,8 @@ lock_timeout = 10
 tpl_dirlist         = templates/dirlist.htm
 tpl_viewfile        = templates/viewfile.htm
 tpl_editfile        = templates/editfile.htm
+tpl_copyfile        = templates/copyfile.htm
+tpl_renamefile      = templates/renamefile.htm
 tpl_confirm_rmfile  = templates/confirm_rmfile.htm
 tpl_confirm_rmdir   = templates/confirm_rmdir.htm
 tpl_confirm_unlock  = templates/confirm_unlock.htm
@@ -37,5 +39,9 @@ err_edit_failed   = Saving of file '{FILE}' failed. The file could be damaged, p
 err_delete_failed = Could not delete file '{FILE}'.
 err_above_root    = Accessing files and directories above the virtual root directory is forbidden.
 err_create_ar     = You aren't allowed to create files and directories above the virtual root directory.
+err_dir_read_fail = Reading of directory '{DIR}' failed.
+err_noview        = You have not enough permissions to view this file.
+err_nocopy        = You have not enough permissions to copy this file.
+err_dircopy       = This editor is not able to copy directories.
 
 # End of configuration file
\ No newline at end of file
index 7a27e586c220a9f3895f2f7b3ca21788562faf99..b933cf1953c188813371cac2f5e1c808dd84d368 100644 (file)
@@ -6,7 +6,7 @@
 # Dev-Editor's main program
 #
 # Author:        Patrick Canterino <patshaping@gmx.net>
-# Last modified: 2004-02-06
+# Last modified: 2004-02-20
 #
 
 use strict;
@@ -65,7 +65,7 @@ if($newfile ne '')
 
  unless(($new_physical,$new_virtual) = check_path($config->{'fileroot'},$dir))
  {
-  abort($config->{'err_creat_ar'});
+  abort($config->{'err_create_ar'});
  }
 
  # Create the physical and the virtual path
index d84d42f0ab2dba1579ca3077aa11918adbfa7f2c..4a5e7681b6ca4a42a8c72705897f96c8c52cb517 100644 (file)
@@ -6,7 +6,7 @@ package Command;
 # Execute Dev-Editor's commands
 #
 # Author:        Patrick Canterino <patshaping@gmx.net>
-# Last modified: 2004-02-06
+# Last modified: 2004-02-20
 #
 
 use strict;
@@ -79,14 +79,15 @@ sub exec_show($$)
  my ($data,$config) = @_;
  my $physical       = $data->{'physical'};
  my $virtual        = $data->{'virtual'};
- my $output;
+
+ my $tpl = new Template;
 
  if(-d $physical)
  {
   # Create directory listing
 
   my $direntries = dir_read($physical);
-  return error("Reading of directory $virtual failed.",upper_path($virtual)) unless($direntries);
+  return error($config->{'dir_read_failed'},upper_path($virtual),{DIR => '$virtual'}) unless($direntries);
 
   my $files = $direntries->{'files'};
   my $dirs  = $direntries->{'dirs'};
@@ -157,22 +158,19 @@ sub exec_show($$)
    $dirlist .= $ftpl->get_template;
   }
 
-  my $tpl = new Template;
+
   $tpl->read_file($config->{'tpl_dirlist'});
 
   $tpl->fillin("DIRLIST",$dirlist);
   $tpl->fillin("DIR",$virtual);
   $tpl->fillin("SCRIPT",$script);
   $tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
-
-  $output  = header(-type => "text/html");
-  $output .= $tpl->get_template;
  }
  else
  {
   # View a file
 
-  return error("You have not enough permissions to view this file.",upper_path($virtual)) unless(-r $physical);
+  return error($config->{'err_noview'},upper_path($virtual)) unless(-r $physical);
 
   # Check on binary files
   # We have to do it in this way, or empty files
@@ -190,7 +188,6 @@ sub exec_show($$)
 
    my $content = file_read($physical);
 
-   my $tpl = new Template;
    $tpl->read_file($config->{'tpl_viewfile'});
 
    $tpl->fillin("FILE",$virtual);
@@ -198,12 +195,12 @@ sub exec_show($$)
    $tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
    $tpl->fillin("SCRIPT",$script);
    $tpl->fillin("CONTENT",encode_entities($$content));
-
-   $output  = header(-type => "text/html");
-   $output .= $tpl->get_template;
   }
  }
 
+ my $output  = header(-type => "text/html");
+ $output    .= $tpl->get_template;
+
  return \$output;
 }
 
@@ -296,7 +293,7 @@ sub exec_endedit($$)
  my $content        = $data->{'cgi'}->param('filecontent');
 
  return error($config->{'err_editdir'},upper_path($virtual)) if(-d $physical);
- return error($config->{'err_noedit'},upper_path($virtual)) unless(-r $physical && -w $physical);
+ return error($config->{'err_noedit'}, upper_path($virtual)) unless(-r $physical && -w $physical);
 
  # Normalize newlines
 
@@ -391,45 +388,66 @@ sub exec_copy($$)
  my $physical       = $data->{'physical'};
  my $virtual        = encode_entities($data->{'virtual'});
  my $new_physical   = $data->{'new_physical'};
- my $new_virtual    = $data->{'new_virtual'};
- my $dir            = upper_path($new_virtual);
- $new_virtual       = encode_entities($new_virtual);
 
- return error("This editor is not able to copy directories.") if(-d $physical);
- return error("You have not enough permissions to copy this file.") unless(-r $physical);
+ return error($config->{'err_dircopy'}) if(-d $physical);
+ return error($config->{'err_nocopy'})  unless(-r $physical);
 
- if(-e $new_physical)
+ if($new_physical)
  {
-  if(-d $new_physical)
+  my $new_virtual = $data->{'new_virtual'};
+  my $dir         = upper_path($new_virtual);
+  $new_virtual    = encode_entities($new_virtual);
+
+  if(-e $new_physical)
   {
-   return error("A directory called '$new_virtual' already exists. You cannot replace a directory by a file!",$dir);
+   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'))
+   {
+    my $tpl = new Template;
+    $tpl->read_file($config->{'tpl_confirm_replace'});
+
+    $tpl->fillin("FILE",$virtual);
+    $tpl->fillin("NEW_FILE",$new_virtual);
+    $tpl->fillin("NEW_FILENAME",file_name($new_virtual));
+    $tpl->fillin("NEW_DIR",$dir);
+    $tpl->fillin("DIR",upper_path($virtual));
+    $tpl->fillin("COMMAND","copy");
+    $tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
+    $tpl->fillin("SCRIPT",$script);
+
+    my $output = header(-type => "text/html");
+    $output   .= $tpl->get_template;
+
+    return \$output;
+   }
   }
-  elsif(not $data->{'cgi'}->param('confirmed'))
+
+  if($data->{'uselist'}->in_use($data->{'new_virtual'}))
   {
-   my $tpl = new Template;
-   $tpl->read_file($config->{'tpl_confirm_replace'});
+   return error("The target file '$new_virtual' already exists and it is edited by someone else.",$dir);
+  }
 
-   $tpl->fillin("FILE",$virtual);
-   $tpl->fillin("NEW_FILE",$new_virtual);
-   $tpl->fillin("DIR",upper_path($virtual));
-   $tpl->fillin("COMMAND","copy");
-   $tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
-   $tpl->fillin("SCRIPT",$script);
+  copy($physical,$new_physical) or return error("Could not copy '$virtual' to '$new_virtual'",upper_path($virtual));
+  return devedit_reload({command => 'show', file => $dir});
+ }
+ else
+ {
+  my $tpl = new Template;
+  $tpl->read_file($config->{'tpl_copyfile'});
 
-   my $output = header(-type => "text/html");
-   $output   .= $tpl->get_template;
+  $tpl->fillin("FILE",$virtual);
+  $tpl->fillin("DIR",upper_path($virtual));
+  $tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
+  $tpl->fillin("SCRIPT",$script);
 
-   return \$output;
-  }
- }
+  my $output = header(-type => "text/html");
+  $output   .= $tpl->get_template;
 
- 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);
+  return \$output;
  }
-
- copy($physical,$new_physical) or return error("Could not copy '$virtual' to '$new_virtual'",upper_path($virtual));
- return devedit_reload({command => 'show', file => $dir});
 }
 
 # exec_rename()
@@ -453,38 +471,62 @@ sub exec_rename($$)
 
  return error_in_use($virtual) if($data->{'uselist'}->in_use($virtual));
 
- if(-e $new_physical)
+ if($new_physical)
  {
-  if(-d $new_physical)
+  my $new_virtual = $data->{'new_virtual'};
+  my $dir         = upper_path($new_virtual);
+  $new_virtual    = encode_entities($new_virtual);
+
+  if(-e $new_physical)
   {
-   return error("A directory called '$new_virtual' already exists. You cannot replace a 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'))
+   {
+    my $tpl = new Template;
+    $tpl->read_file($config->{'tpl_confirm_replace'});
+
+    $tpl->fillin("FILE",$virtual);
+    $tpl->fillin("NEW_FILE",$new_virtual);
+    $tpl->fillin("NEW_FILENAME",file_name($new_virtual));
+    $tpl->fillin("NEW_DIR",$dir);
+    $tpl->fillin("DIR",upper_path($virtual));
+    $tpl->fillin("COMMAND","rename");
+    $tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
+    $tpl->fillin("SCRIPT",$script);
+
+    my $output = header(-type => "text/html");
+    $output   .= $tpl->get_template;
+
+    return \$output;
+   }
   }
-  elsif(not $data->{'cgi'}->param('confirmed'))
+
+  if($data->{'uselist'}->in_use($data->{'new_virtual'}))
   {
-   my $tpl = new Template;
-   $tpl->read_file($config->{'tpl_confirm_replace'});
+   return error("The target file '$new_virtual' already exists and it is edited by someone else.",$dir);
+  }
 
-   $tpl->fillin("FILE",$virtual);
-   $tpl->fillin("NEW_FILE",$new_virtual);
-   $tpl->fillin("DIR",upper_path($virtual));
-   $tpl->fillin("COMMAND","rename");
-   $tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
-   $tpl->fillin("SCRIPT",$script);
+  rename($physical,$new_physical) or return error("Could not move/rename '$virtual' to '$new_virtual'",upper_path($virtual));
+  return devedit_reload({command => 'show', file => $dir});
+ }
+ else
+ {
+  my $tpl = new Template;
+  $tpl->read_file($config->{'tpl_renamefile'});
 
-   my $output = header(-type => "text/html");
-   $output   .= $tpl->get_template;
+  $tpl->fillin("FILE",$virtual);
+  $tpl->fillin("DIR",upper_path($virtual));
+  $tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
+  $tpl->fillin("SCRIPT",$script);
 
-   return \$output;
-  }
- }
+  my $output = header(-type => "text/html");
+  $output   .= $tpl->get_template;
 
- 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);
+  return \$output;
  }
-
- rename($physical,$new_physical) or return error("Could not move/rename '".encode_entities($virtual)."' to '$new_virtual'.",upper_path($virtual));
- return devedit_reload({command => 'show', file => $dir});
 }
 
 # exec_remove()
index 52450f5e7bcb771581a5167d453e23722f2f1dea..bd1f15c6e549c977bd8c5596db600d93925b41bc 100644 (file)
 
 <h1>Replace exisiting file</h1>
 
-<p>A file called '{FILE}' already exists. Do you want to replace it?</p>
+<p>A file called '{NEW_FILE}' already exists. Do you want to replace it?</p>
 
-<form action="{SCRIPT}" method="get">
+<form action="{SCRIPT}" method="post">
 <input type="hidden" name="command" value="{COMMAND}">
 <input type="hidden" name="file" value="{FILE}">
-<input type="hidden" name="newfile" value="{NEW_FILE}">
+<input type="hidden" name="newfile" value="{NEW_FILENAME}">
+<input type="hidden" name="curdir" value="{NEW_DIR}">
 <input type="hidden" name="confirmed" value="1">
 
 <p><input type="submit" value="Yes"></p>
diff --git a/templates/copyfile.htm b/templates/copyfile.htm
new file mode 100644 (file)
index 0000000..9733ed2
--- /dev/null
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+<head>
+<title>Copy file {FILE}</title>
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
+</head>
+<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<h1>Copy file {FILE}</h1>
+
+<p>(equals <a href="{URL}" target="_blank">{URL}</a>)</p>
+
+<p><a href="{SCRIPT}?command=show&file={DIR}">Back to {DIR}</a></p>
+
+<form action="{SCRIPT}" method="post">
+<input type="hidden" name="command" value="copy">
+<input type="hidden" name="file" value="{FILE}">
+
+<p>Copy file '{FILE}' to:<br>
+{DIR} <input type="text" name="newfile"></p>
+
+<p><input type="submit" value="Copy file!"></p>
+</form>
+</body>
+</html>
\ No newline at end of file
index e69b3f5f3fcb05baeb87ff0870f849f6cc5bac9d..5e959523d10b7398254c775679de15d2f1714beb 100644 (file)
@@ -2,5 +2,5 @@
 <td align="right">[SUBDIR]</td>
 <td style="padding-left:15pt">{DATE}</td>
 <td style="padding-left:15pt"><a href="{SCRIPT}?command=show&file={DIR}">{DIR_NAME}/</a></td>
-<td style="padding-left:15pt">(Rename | <a href="{SCRIPT}?command=remove&file={DIR}">Delete</a>)</td>
+<td style="padding-left:15pt">(<a href="{SCRIPT}?command=rename&file={DIR}">Rename</a> | <a href="{SCRIPT}?command=remove&file={DIR}">Delete</a>)</td>
 </tr>
\ No newline at end of file
index a010fb583d365ff5cfc0cc08b0f8d0eae669bdc6..347c6400ecfbc10ff10fc1f40a34db47a1f56f9e 100644 (file)
@@ -2,5 +2,5 @@
 <td align="right">{SIZE}</td>
 <td style="padding-left:15pt">{DATE}</td>
 <td style="padding-left:15pt">{FILE_NAME}</td>
-<td style="padding-left:15pt">({IF viewable}<a href="{SCRIPT}?command=show&file={FILE}">View</a>{ELSE}<span style="color:#C0C0C0" title="{IF not_readable}Not readable{ELSE}{IF binary}Binary file{ENDIF}{ENDIF}">View</span>{ENDIF} | {IF editable}<a href="{SCRIPT}?command=beginedit&file={FILE}">Edit</a>{ELSE}<span style="color:#C0C0C0" title="{IF not_readable}Not readable{ELSE}{IF readonly}Read only{ELSE}{IF binary}Binary file{ELSE}{IF in_use}In use{ENDIF}{ENDIF}{ENDIF}{ENDIF}">Edit</span>{ENDIF} | Copy{IF unused} | Rename | <a href="{SCRIPT}?command=remove&file={FILE}">Delete</a>{ENDIF}{IF in_use} | <a href="{SCRIPT}?command=unlock&file={FILE}">Unlock</a>{ENDIF})</td>
+<td style="padding-left:15pt">({IF viewable}<a href="{SCRIPT}?command=show&file={FILE}">View</a>{ELSE}<span style="color:#C0C0C0" title="{IF not_readable}Not readable{ELSE}{IF binary}Binary file{ENDIF}{ENDIF}">View</span>{ENDIF} | {IF editable}<a href="{SCRIPT}?command=beginedit&file={FILE}">Edit</a>{ELSE}<span style="color:#C0C0C0" title="{IF not_readable}Not readable{ELSE}{IF readonly}Read only{ELSE}{IF binary}Binary file{ELSE}{IF in_use}In use{ENDIF}{ENDIF}{ENDIF}{ENDIF}">Edit</span>{ENDIF} | <a href="{SCRIPT}?command=copy&file={FILE}">Copy</a>{IF unused} | <a href="{SCRIPT}?command=rename&file={FILE}">Rename</a> | <a href="{SCRIPT}?command=remove&file={FILE}">Delete</a>{ENDIF}{IF in_use} | <a href="{SCRIPT}?command=unlock&file={FILE}">Unlock</a>{ENDIF})</td>
 </tr>
\ No newline at end of file
diff --git a/templates/renamefile.htm b/templates/renamefile.htm
new file mode 100644 (file)
index 0000000..0d59a07
--- /dev/null
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+<head>
+<title>Move/Rename file {FILE}</title>
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
+</head>
+<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<h1>Move/Rename file {FILE}</h1>
+
+<p>(equals <a href="{URL}" target="_blank">{URL}</a>)</p>
+
+<p><a href="{SCRIPT}?command=show&file={DIR}">Back to {DIR}</a></p>
+
+<form action="{SCRIPT}" method="post">
+<input type="hidden" name="command" value="rename">
+<input type="hidden" name="file" value="{FILE}">
+
+<p>Move/Rename file '{FILE}' to:<br>
+{DIR} <input type="text" name="newfile"></p>
+
+<p><input type="submit" value="Move/Rename file!"></p>  
+</form>
+</body>
+</html>
\ No newline at end of file

patrick-canterino.de