X-Git-Url: https://git.p6c8.net/devedit.git/blobdiff_plain/89269f652fc46e65006b9aead5eb1ae61ebc311e..e7d91227055ce4f15477dc60c4d54a844928878d:/modules/Command.pm?ds=inline diff --git a/modules/Command.pm b/modules/Command.pm index 363cffe..0a368e9 100644 --- a/modules/Command.pm +++ b/modules/Command.pm @@ -6,7 +6,7 @@ package Command; # Execute Dev-Editor's commands # # Author: Patrick Canterino -# Last modified: 10-04-2003 +# Last modified: 2003-11-10 # use strict; @@ -14,8 +14,6 @@ use strict; use vars qw(@EXPORT $script); -use CGI qw(redirect); - use File::Access; use File::Copy; @@ -62,7 +60,7 @@ sub exec_show($$$) # Create directory listing my $direntries = dir_read($physical); - return error("Reading of directory $virtual failed") unless($direntries); + return error("Reading of directory $virtual failed.",upper_path($virtual)) unless($direntries); my $files = $direntries->{'files'}; my $dirs = $direntries->{'dirs'}; @@ -112,7 +110,7 @@ sub exec_show($$$) foreach my $file(@$files) { - my $phys_path = $physical."/".$file; # Not exactly... + my $phys_path = $physical."/".$file; my $virt_path = encode_entities($virtual.$file); my @stat = stat($phys_path); @@ -122,19 +120,47 @@ sub exec_show($$$) $output .= $stat[7]; $output .= " "; $output .= strftime($config->{'timeformat'},localtime($stat[9])); - $output .= ($in_use) ? " (IN USE) " : (not -T $phys_path) ? " (BINARY) " : " " x 10; + $output .= " " x 10; $output .= encode_entities($file); $output .= " " x ($max_name_len - length($file))."\t ("; - $output .= (-T $phys_path) - ? "View" - : 'View'; + # Link "View" + + if(-r $phys_path && -T $phys_path) + { + $output .= "View"; + } + else + { + $output .= 'Edit' - : "Edit"; + # Link "Edit" + + if(-w $phys_path && -r $phys_path && -T $phys_path && not $in_use) + { + $output .= "Edit"; + } + else + { + $output .= 'Do other stuff)\n"; } @@ -172,6 +198,8 @@ END { # View a file + return error("You have not enough permissions to view this file.",upper_path($virtual)) unless(-r $physical); + # Check on binary files # We have to do it in this way, or empty files # will be recognized as binary files @@ -180,7 +208,7 @@ END { # Binary file - return error("This editor is not able to view/edit binary files."); + return error("This editor is not able to view/edit binary files.",upper_path($virtual)); } else { @@ -218,8 +246,9 @@ sub exec_beginedit($$) my $virtual = $data->{'virtual'}; my $uselist = $data->{'uselist'}; - return error("You cannot edit directories.") if(-d $physical); + return error("You cannot edit directories.",upper_path($virtual)) if(-d $physical); return error_in_use($virtual) if($uselist->in_use($virtual)); + return error("You have not enough permissions to edit this file.",upper_path($virtual)) unless(-r $physical && -w $physical); # Check on binary files @@ -227,7 +256,7 @@ sub exec_beginedit($$) { # Binary file - return error("This editor is not able to view/edit binary files."); + return error("This editor is not able to view/edit binary files.",upper_path($virtual)); } else { @@ -298,6 +327,11 @@ sub exec_endedit($$) my $content = $data->{'cgi'}->param('filecontent'); return error("You cannot edit directories.") if(-d $physical); + return error("You have not enough permissions to edit this file.",upper_path($virtual)) unless(-r $physical && -w $physical); + + # Normalize newlines + + $content =~ s/\015\012|\012|\015/\n/g; if($data->{'cgi'}->param('encode_iso')) { @@ -322,7 +356,7 @@ sub exec_endedit($$) } else { - return error("Saving of file '".encode_entities($virtual)."' failed'."); + return error("Saving of file '".encode_entities($virtual)."' failed'.",upper_path($virtual)); } } @@ -343,12 +377,10 @@ sub exec_mkfile($$) my $dir = upper_path($new_virtual); $new_virtual = encode_entities($new_virtual); - return error("A file or directory called '$new_virtual' does already exist.") if(-e $new_physical); - - file_create($new_physical) or return error("Could not create file '$new_virtual'."); + return error("A file or directory called '$new_virtual' already exists.",$dir) if(-e $new_physical); - my $output = redirect("http://$ENV{'HTTP_HOST'}$script?command=show&file=$dir"); - return \$output; + file_create($new_physical) or return error("Could not create file '$new_virtual'.",$dir); + return devedit_reload({command => 'show', file => $dir}); } # exec_mkdir() @@ -368,12 +400,10 @@ sub exec_mkdir($$) my $dir = upper_path($new_virtual); $new_virtual = encode_entities($new_virtual); - return error("A file or directory called '$new_virtual' does already exist.") if(-e $new_physical); - - mkdir($new_physical) or return error("Could not create directory '$new_virtual'."); + return error("A file or directory called '$new_virtual' already exists.",$dir) if(-e $new_physical); - my $output = redirect("http://$ENV{'HTTP_HOST'}$script?command=show&file=$dir"); - return \$output; + mkdir($new_physical) or return error("Could not create directory '$new_virtual'.",$dir); + return devedit_reload({command => 'show', file => $dir}); } # exec_workwithfile() @@ -404,11 +434,13 @@ sub exec_workwithfile($$) $output .= "

Someone else is currently editing this file. So not all features are available.

\n\n" unless($unused); - # Copying of the file as always allowed + $output .= "
\n\n"; - $output .= < + # Copying of the file is always allowed - but we need read access + if(-r $physical) + { + $output .= <Copy
@@ -420,6 +452,7 @@ sub exec_workwithfile($$)
END + } if($unused) { @@ -490,16 +523,15 @@ sub exec_copy($$) $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); if(-e $new_physical) { - return error("A file or directory called '$new_virtual' does already exists and this editor is currently not able to ask to overwrite the existing file or directory."); + 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)); } - copy($physical,$new_physical) or return error("Could not copy '$virtual' to '$new_virtual'"); - - my $output = redirect("http://$ENV{'HTTP_HOST'}$script?command=show&file=$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() @@ -525,13 +557,11 @@ sub exec_rename($$) if(-e $new_physical) { - return error("A file or directory called '$new_virtual' does already exists and this editor is currently not able to ask to overwrite the existing file or directory."); + 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)); } - rename($physical,$new_physical) or return error("Could not move/rename '".encode_entities($virtual)."' to '$new_virtual'."); - - my $output = redirect("http://$ENV{'HTTP_HOST'}$script?command=show&file=$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() @@ -549,13 +579,11 @@ sub exec_remove($$) my $physical = $data->{'physical'}; my $virtual = $data->{'virtual'}; - return error("Deleting directories is currently unsupported") if(-d $physical); + return error("Deleting directories is currently unsupported.",upper_path($virtual)) if(-d $physical); return error_in_use($virtual) if($data->{'uselist'}->in_use($virtual)); - unlink($physical) or return error("Could not delete file '".encode_entities($virtual)."'."); - - my $output = redirect("http://$ENV{'HTTP_HOST'}$script?command=show&file=".upper_path($virtual)); - return \$output; + unlink($physical) or return error("Could not delete file '".encode_entities($virtual)."'.",upper_path($virtual)); + return devedit_reload({command => 'show', file => upper_path($virtual)}); } # exec_unlock() @@ -577,8 +605,7 @@ sub exec_unlock($$) $uselist->remove_file($virtual); $uselist->save; - my $output = redirect("http://$ENV{'HTTP_HOST'}$script?command=show&file=".upper_path($virtual)); - return \$output; + return devedit_reload({command => 'show', file => upper_path($virtual)}); } # it's true, baby ;-)