]> git.p6c8.net - devedit.git/commitdiff
Allow to unpack a file after uploading
authorpcanterino <>
Fri, 31 Dec 2010 12:57:29 +0000 (12:57 +0000)
committerpcanterino <>
Fri, 31 Dec 2010 12:57:29 +0000 (12:57 +0000)
modules/Command.pm
templates/about.htm
templates/upload.htm

index ec7ca69ed2098779b9882c34532159025e461383..2a8ceb9b1621547a289230c79f00a3c1cdce0571 100644 (file)
@@ -6,7 +6,7 @@ package Command;
 # Execute Dev-Editor's commands
 #
 # Author:        Patrick Canterino <patrick@patshaping.de>
 # Execute Dev-Editor's commands
 #
 # Author:        Patrick Canterino <patrick@patshaping.de>
-# Last modified: 2010-10-30
+# Last modified: 2010-12-31
 #
 # Copyright (C) 1999-2000 Roland Bluethgen, Frank Schoenmann
 # Copyright (C) 2003-2009 Patrick Canterino
 #
 # Copyright (C) 1999-2000 Roland Bluethgen, Frank Schoenmann
 # Copyright (C) 2003-2009 Patrick Canterino
@@ -614,6 +614,15 @@ sub exec_upload($$)
   $data =~ s/\015\012|\012|\015/\n/g if($ascii); # Replace line separators if transferring in ASCII mode
   file_save($file_phys,\$data,not $ascii) or return error($config->{'errors'}->{'mkfile_failed'},$virtual,{FILE => $file_virt});
 
   $data =~ s/\015\012|\012|\015/\n/g if($ascii); # Replace line separators if transferring in ASCII mode
   file_save($file_phys,\$data,not $ascii) or return error($config->{'errors'}->{'mkfile_failed'},$virtual,{FILE => $file_virt});
 
+  if($cgi->param('unpack') && $File::Access::has_archive_extract)
+  {
+   return error($config->{'errors'}->{'no_archive'},$virtual,{FILE => encode_html($file_virt)}) unless(is_archive($file_phys));
+
+   my $return_unpack = archive_unpack($file_phys,$physical);
+
+   return error($config->{'errors'}->{'unpack_failed'},$virtual,{FILE => encode_html($file_virt), AE_ERROR => ''}) unless($return_unpack);
+  }
+
   return devedit_reload({command => 'show', file => $virtual});
  }
  else
   return devedit_reload({command => 'show', file => $virtual});
  }
  else
@@ -626,6 +635,8 @@ sub exec_upload($$)
   $tpl->fillin('URL',encode_html(equal_url($config->{'httproot'},$virtual)));
   $tpl->fillin('SCRIPT',$script);
 
   $tpl->fillin('URL',encode_html(equal_url($config->{'httproot'},$virtual)));
   $tpl->fillin('SCRIPT',$script);
 
+  $tpl->parse_if_block('PERL_ARCHIVE_EXTRACT',$File::Access::has_archive_extract);
+
   my $output = header(-type => 'text/html');
   $output   .= $tpl->get_template;
 
   my $output = header(-type => 'text/html');
   $output   .= $tpl->get_template;
 
@@ -654,15 +665,15 @@ sub exec_unpack($$)
 
  return error($config->{'errors'}->{'no_ae'},$dir) unless($File::Access::has_archive_extract);
  return error($config->{'errors'}->{'no_archive'},$dir,{FILE => encode_html($virtual)}) unless(is_archive($physical));
 
  return error($config->{'errors'}->{'no_ae'},$dir) unless($File::Access::has_archive_extract);
  return error($config->{'errors'}->{'no_archive'},$dir,{FILE => encode_html($virtual)}) unless(is_archive($physical));
+
  if($new_physical)
  {
   return error($config->{'errors'}->{'unpack_no_dir'},$dir,{FILE => encode_html($virtual), NEW_FILE => encode_html($new_virtual)}) if(-l $new_physical || not -d $new_physical);
  if($new_physical)
  {
   return error($config->{'errors'}->{'unpack_no_dir'},$dir,{FILE => encode_html($virtual), NEW_FILE => encode_html($new_virtual)}) if(-l $new_physical || not -d $new_physical);
+
   my $return_unpack = archive_unpack($physical,$new_physical);
   my $return_unpack = archive_unpack($physical,$new_physical);
-  
+
   return error($config->{'errors'}->{'unpack_failed'},$dir,{FILE => encode_html($virtual), AE_ERROR => ''}) unless($return_unpack);
   return error($config->{'errors'}->{'unpack_failed'},$dir,{FILE => encode_html($virtual), AE_ERROR => ''}) unless($return_unpack);
-  
+
   return devedit_reload({command => 'show', file => $new_virtual});
  }
  else
   return devedit_reload({command => 'show', file => $new_virtual});
  }
  else
@@ -1222,7 +1233,7 @@ sub exec_about($$)
 
  $tpl->fillin('PERL_PROG',encode_html($^X));
  $tpl->fillin('PERL_VER', sprintf('%vd',$^V));
 
  $tpl->fillin('PERL_PROG',encode_html($^X));
  $tpl->fillin('PERL_VER', sprintf('%vd',$^V));
+
  $tpl->parse_if_block('PERL_ARCHIVE_EXTRACT',$File::Access::has_archive_extract);
 
  # Information about the server
  $tpl->parse_if_block('PERL_ARCHIVE_EXTRACT',$File::Access::has_archive_extract);
 
  # Information about the server
index da7de1390b91f1ee171759b97c6e987c98c6e1ba..1160cf595b3e5246f0de8b374cff0c5fe13ba943 100644 (file)
@@ -183,8 +183,8 @@ WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 </tr>
 
 <tr>
 </tr>
 
 <tr>
-<td><b>Perl module <tt>Archive::Extract</tt> available:</b></td>
-<td>{IF PERL_ARCHIVE_EXTRACT}Yes{ELSE}No{ENDIF}</td>
+<td><b>Perl module <tt>Archive::Extract</tt>:</b></td>
+<td>{IF PERL_ARCHIVE_EXTRACT}Available{ELSE}Not available{ENDIF}</td>
 </tr>
 
 <tr>
 </tr>
 
 <tr>
index 494bbb4c11b5a815a1187c975ece691fe29c203a..9e0abe3c7ee60ad9b51ffa156339bb45c7ecfc80 100644 (file)
@@ -31,7 +31,9 @@
 <p>Transfer mode (see below):<br>
 <input type="radio" name="ascii" id="ascii" value="1"><label for="ascii">ASCII</label> <input type="radio" name="ascii" id="binary" value="0" checked><label for="binary">Binary (default)</label></p>
 
 <p>Transfer mode (see below):<br>
 <input type="radio" name="ascii" id="ascii" value="1"><label for="ascii">ASCII</label> <input type="radio" name="ascii" id="binary" value="0" checked><label for="binary">Binary (default)</label></p>
 
-<p><input type="checkbox" name="overwrite" id="overwrite"><label for="overwrite">Overwrite existing file</label></p>
+<p><input type="checkbox" name="overwrite" id="overwrite"><label for="overwrite">Overwrite existing file</label></p>{IF PERL_ARCHIVE_EXTRACT}
+
+<p><input type="checkbox" name="unpack" id="unpack"><label for="unpack">Unpack file after upload to the current directory</label></p>{ENDIF}
 
 <p><input type="submit" value="Upload file!"></p>
 </form>
 
 <p><input type="submit" value="Upload file!"></p>
 </form>
@@ -49,6 +51,7 @@
 
 <ul>
 <li>If you specify an other remote name for the uploaded file, all slashes and backslashes will be removed from the entered value.</li>
 
 <ul>
 <li>If you specify an other remote name for the uploaded file, all slashes and backslashes will be removed from the entered value.</li>
+<li>If unpacking of a file fails after uploading the file is still there.</li>
 </ul>
 
 <hr>
 </ul>
 
 <hr>

patrick-canterino.de