X-Git-Url: https://git.p6c8.net/devedit.git/blobdiff_plain/3e6b9e338fe5ea06b487202fe54217f2082cd13d..6a0845bb6cf36d03e039e3fd44180a21e8042f83:/modules/Command.pm?ds=inline
diff --git a/modules/Command.pm b/modules/Command.pm
index 1a39d67..44419ba 100644
--- a/modules/Command.pm
+++ b/modules/Command.pm
@@ -6,7 +6,7 @@ package Command;
# Execute Dev-Editor's commands
#
# Author: Patrick Canterino
\n\n\n";
+ $output .= "
\n\n\n";
# Create the link to the upper directory
# (only if we are not in the root directory)
@@ -83,10 +80,10 @@ sub exec_show($$$)
$output .= " [SUBDIR] ";
$output .= strftime("%d.%m.%Y %H:%M",localtime($stat[9]));
$output .= " " x 10;
- $output .= "../\n";
+ $output .= "../\n";
}
- # Get the longest file/directory name
+ # Get the length of the longest file/directory name
my $max_name_len = 0;
@@ -104,45 +101,64 @@ sub exec_show($$$)
$output .= " ";
$output .= "[SUBDIR] ";
- $output .= strftime("%d.%m.%Y %H:%M",localtime($stat[9]));
+ $output .= strftime($config->{'timeformat'},localtime($stat[9]));
$output .= " " x 10;
- $output .= "".encode_entities($dir)."/\n";
+ $output .= "".encode_entities($dir)."/\n";
}
# Files
foreach my $file(@$files)
{
- my @stat = stat($physical."/".$file);
- my $virt_path = $virtual.$file;
+ my $phys_path = $physical."/".$file;
+ my $virt_path = encode_entities($virtual.$file);
+
+ my @stat = stat($phys_path);
my $in_use = $data->{'uselist'}->in_use($virtual.$file);
$output .= " " x (10 - length($stat[7]));
$output .= $stat[7];
$output .= " ";
- $output .= strftime("%d.%m.%Y %H:%M",localtime($stat[9]));
- $output .= ($in_use) ? " (IN USE) " : " " x 10;
+ $output .= strftime($config->{'timeformat'},localtime($stat[9]));
+ $output .= ($in_use) ? " (IN USE) " : (not -T $phys_path) ? " (BINARY) " : " " x 10;
$output .= encode_entities($file);
$output .= " " x ($max_name_len - length($file))."\t (";
- $output .= "View | ";
- $output .= ($in_use)
- ? 'Edit'
- : "Edit";
+ $output .= (-r $phys_path && -T $phys_path)
+ ? "View"
+ : 'View';
+
+ $output .= " | ";
+
+ $output .= (-w $phys_path && -r $phys_path && -T $phys_path && not $in_use)
+ ? "Edit"
+ : 'Edit';
$output .= " | Do other stuff)\n";
}
$output .= "
\n\n
\n\n";
+
+ # Bottom of directory listing
+ # (Fields for creating files and directories)
+
$output .= <
+
@@ -154,19 +170,23 @@ 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
- if(-B $physical)
+ unless(-T $physical)
{
# 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
{
# Text file
- $output = htmlhead("Contents of file $virtual");
+ $output = htmlhead("Contents of file ".encode_entities($virtual));
$output .= equal_url($config->{'httproot'},$virtual);
$output .= dir_link($virtual);
@@ -179,7 +199,7 @@ END
}
}
- return \$output
+ return \$output;
}
# exec_beginedit
@@ -198,16 +218,17 @@ 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
- if(-B $physical)
+ unless(-T $physical)
{
# 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
{
@@ -216,27 +237,33 @@ sub exec_beginedit($$)
$uselist->add_file($virtual);
$uselist->save;
- my $dir = upper_path($virtual);
- my $content = encode_entities(${file_read($physical)});
+ my $dir = upper_path($virtual);
+ my $content = encode_entities(${file_read($physical)});
+
+ my $equal_url = equal_url($config->{'httproot'},$virtual);
+
+ $virtual = encode_entities($virtual);
my $output = htmlhead("Edit file $virtual");
- $output .= equal_url($config->{'httproot'},$virtual);
+ $output .= $equal_url;
$output .= <Create new file:
-$virtual
+