- After reading a file, the line separators will be converted to the system specific line separator
- Some other error messages are now found in the configuration file
err_binary = This editor is not able to view/edit binary files.
err_editdir = You cannot edit directories.
err_noedit = You have not enough permissions to edit this file.
err_binary = This editor is not able to view/edit binary files.
err_editdir = You cannot edit directories.
err_noedit = You have not enough permissions to edit this file.
+err_file_in_use = The file '{FILE}' is currently edited by someone else.
err_edit_failed = Saving of file '{FILE}' failed. The file could be damaged, please check its integrity.
err_delete_failed = Could not delete file '{FILE}'.
err_edit_failed = Saving of file '{FILE}' failed. The file could be damaged, please check its integrity.
err_delete_failed = Could not delete file '{FILE}'.
+err_dir_read_fail = Reading of directory '{DIR}' failed.
+err_mkfile_failed = Could not create file '{FILE}'.
+err_mkdir_failed = Could not create directory '{DIR}'.
+err_copy_failed = Could not copy '{FILE}' to '{NEW_FILE}'.
+err_rename_failed = Could not move/rename '{FILE}' to '{NEW_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_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_file_exists = A file or directory called '{FILE}' already exists.
+err_exist_edited = The target file '{FILE}' already exists and is edited by someone else.
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.
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.
+err_cmd_unknown = Unknown command: {COMMAND}
+err_lock_failed = Locking of '{USELIST}' failed. Try it again in a moment. If the problem persists, ask someone to recreate the lock file ('{LOCK_FILE}').
+err_not_exist = File/directory does not exist.
+err_dir_not_exist = The directory where you want to create this file or directory doesn't exist.
# End of configuration file
\ No newline at end of file
# End of configuration file
\ No newline at end of file
# Dev-Editor's main program
#
# Author: Patrick Canterino <patshaping@gmx.net>
# Dev-Editor's main program
#
# Author: Patrick Canterino <patshaping@gmx.net>
-# Last modified: 2004-02-20
+# Last modified: 2004-02-23
unless(-d clean_path($config->{'fileroot'}."/".$dir))
{
unless(-d clean_path($config->{'fileroot'}."/".$dir))
{
- abort("The directory where you want to create this file or directory doesn't exist.");
+ abort($config->{'err_dir_not_exist'});
}
# ... and check if the path is above the root directory
}
# ... and check if the path is above the root directory
lockfile => $config->{'lock_file'},
timeout => $config->{'lock_timeout'});
lockfile => $config->{'lock_file'},
timeout => $config->{'lock_timeout'});
- $uselist->lock or abort("Locking of $config->{'uselist_file'} failed. Try it again in a moment. If the problem persists, ask someone to recreate the lock file ($config->{'lock_file'}).");
+ $uselist->lock or abort($config->{'err_lock_failed'},{USELIST => $config->{'uselist_file'}, LOCK_FILE => $config->{'lock_file'}});
$uselist->load;
# Create a hash with data submitted by user
$uselist->load;
# Create a hash with data submitted by user
- abort("File/directory does not exist.");
+ abort($config->{'err_not_exist'});
# Execute Dev-Editor's commands
#
# Author: Patrick Canterino <patshaping@gmx.net>
# Execute Dev-Editor's commands
#
# Author: Patrick Canterino <patshaping@gmx.net>
-# Last modified: 2004-02-20
+# Last modified: 2004-02-23
{
my ($command,$data,$config) = @_;
{
my ($command,$data,$config) = @_;
- return error("Unknown command: $command") unless($dispatch{$command});
+ return error($config->{'err_cmd_unknown'},'/',{COMMAND => $command}) unless($dispatch{$command});
my $output = &{$dispatch{$command}}($data,$config);
return $output;
my $output = &{$dispatch{$command}}($data,$config);
return $output;
$dirlist .= $ftpl->get_template;
}
$dirlist .= $ftpl->get_template;
}
$tpl->read_file($config->{'tpl_dirlist'});
$tpl->fillin("DIRLIST",$dirlist);
$tpl->read_file($config->{'tpl_dirlist'});
$tpl->fillin("DIRLIST",$dirlist);
- my $content = file_read($physical);
+ my $content = file_read($physical);
+ $$content =~ s/\015\012|\012|\015/\n/g;
$tpl->read_file($config->{'tpl_viewfile'});
$tpl->read_file($config->{'tpl_viewfile'});
$uselist->add_file($virtual);
$uselist->save;
$uselist->add_file($virtual);
$uselist->save;
- my $content = file_read($physical);
+ my $content = file_read($physical);
+ $$content =~ s/\015\012|\012|\015/\n/g;
my $tpl = new Template;
$tpl->read_file($config->{'tpl_editfile'});
my $tpl = new Template;
$tpl->read_file($config->{'tpl_editfile'});
{
my ($data,$config) = @_;
my $virtual = $data->{'virtual'};
{
my ($data,$config) = @_;
my $virtual = $data->{'virtual'};
- my $uselist = $data->{'uselist'};
- file_unlock($uselist,$virtual);
+ file_unlock($data->{'uselist'},$virtual);
return devedit_reload({command => 'show', file => upper_path($virtual)});
}
return devedit_reload({command => 'show', file => upper_path($virtual)});
}
my $physical = $data->{'physical'};
my $virtual = $data->{'virtual'};
my $content = $data->{'cgi'}->param('filecontent');
my $physical = $data->{'physical'};
my $virtual = $data->{'virtual'};
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);
+ my $uselist = $data->{'uselist'};
$physical = $data->{'new_physical'};
$virtual = $data->{'new_virtual'};
$physical = $data->{'new_physical'};
$virtual = $data->{'new_virtual'};
+
+ # Check if someone else is editing the new file
+
+ return error_in_use($virtual) if($uselist->in_use($virtual));
+ return error($config->{'err_editdir'},upper_path($virtual)) if(-d $physical);
+ return error($config->{'err_noedit'}, upper_path($virtual)) unless(-r $physical && -w $physical);
+
if(file_save($physical,\$content))
{
# Saving of the file was successful - so unlock it!
if(file_save($physical,\$content))
{
# Saving of the file was successful - so unlock it!
- file_unlock($data->{'uselist'},$virtual);
+ file_unlock($uselist,$data->{'virtual'});
+ # ^^^^^^^^^^^^^^^^^^
+ # Maybe the user saved the file using another filename...
+ # But we have to unlock the original file!
+
return devedit_reload({command => 'show', file => upper_path($virtual)});
}
else
{
return devedit_reload({command => 'show', file => upper_path($virtual)});
}
else
{
- return error($config->{'err_editfailed'},upper_path($virtual),{FILE => $virtual});
+ return error($config->{'err_edit_failed'},upper_path($virtual),{FILE => $virtual});
my $dir = upper_path($new_virtual);
$new_virtual = encode_entities($new_virtual);
my $dir = upper_path($new_virtual);
$new_virtual = encode_entities($new_virtual);
- return error("A file or directory called '$new_virtual' already exists.",$dir) if(-e $new_physical);
+ return error($config->{'err_file_exists'},$dir,{FILE => $new_virtual}) if(-e $new_physical);
- file_create($new_physical) or return error("Could not create file '$new_virtual'.",$dir);
+ file_create($new_physical) or return error($config->{'err_mkfile_failed'},$dir,{FILE => $new_virtual});
return devedit_reload({command => 'show', file => $dir});
}
return devedit_reload({command => 'show', file => $dir});
}
my $dir = upper_path($new_virtual);
$new_virtual = encode_entities($new_virtual);
my $dir = upper_path($new_virtual);
$new_virtual = encode_entities($new_virtual);
- return error("A file or directory called '$new_virtual' already exists.",$dir) if(-e $new_physical);
+ return error($config->{'err_file_exists'},$dir,{FILE => $new_virtual}) if(-e $new_physical);
- mkdir($new_physical,0777) or return error("Could not create directory '$new_virtual'.",$dir);
+ mkdir($new_physical,0777) or return error($config->{'err_mkdir_failed'},$dir,{DIR => $new_virtual});
return devedit_reload({command => 'show', file => $dir});
}
return devedit_reload({command => 'show', file => $dir});
}
my $virtual = encode_entities($data->{'virtual'});
my $new_physical = $data->{'new_physical'};
my $virtual = encode_entities($data->{'virtual'});
my $new_physical = $data->{'new_physical'};
- return error($config->{'err_dircopy'}) if(-d $physical);
- return error($config->{'err_nocopy'}) unless(-r $physical);
+ return error($config->{'err_nocopy'}) unless(-r $physical);
+ return error($config->{'err_exist_edited'},$dir,{FILE => $new_virtual}) if($data->{'uselist'}->in_use($data->{'new_virtual'}));
+
- return error("A directory called '$new_virtual' already exists. You cannot replace a directory by a file!",$dir);
+ return error($config->{'err_dircopy'});
}
elsif(not $data->{'cgi'}->param('confirmed'))
{
}
elsif(not $data->{'cgi'}->param('confirmed'))
{
- 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($config->{'err_copy_failed'},upper_path($virtual),{FILE => $virtual, NEW_FILE => $new_virtual});
return devedit_reload({command => 'show', file => $dir});
}
else
return devedit_reload({command => 'show', file => $dir});
}
else
my $physical = $data->{'physical'};
my $virtual = $data->{'virtual'};
my $new_physical = $data->{'new_physical'};
my $physical = $data->{'physical'};
my $virtual = $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_in_use($virtual) if($data->{'uselist'}->in_use($virtual));
return error_in_use($virtual) if($data->{'uselist'}->in_use($virtual));
+ return error($config->{'err_exist_edited'},$dir,{FILE => $new_virtual}) if($data->{'uselist'}->in_use($data->{'new_virtual'}));
+
- return error("A directory called '$new_virtual' already exists. You cannot replace a directory by a file!",$dir);
+ return error($config->{'err_dircopy'});
}
elsif(not $data->{'cgi'}->param('confirmed'))
{
}
elsif(not $data->{'cgi'}->param('confirmed'))
{
- 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 '$virtual' to '$new_virtual'",upper_path($virtual));
+ rename($physical,$new_physical) or return error($config->{'err_rename_failed'},upper_path($virtual),{FILE => $virtual, NEW_FILE => $new_virtual});
return devedit_reload({command => 'show', file => $dir});
}
else
return devedit_reload({command => 'show', file => $dir});
}
else
if($data->{'cgi'}->param('confirmed'))
{
if($data->{'cgi'}->param('confirmed'))
{
- unlink($physical) or return error($config->{'err_editfailed'},upper_path($virtual),{FILE => $virtual});
+ unlink($physical) or return error($config->{'err_delete_failed'},upper_path($virtual),{FILE => $virtual});
return devedit_reload({command => 'show', file => upper_path($virtual)});
}
else
return devedit_reload({command => 'show', file => upper_path($virtual)});
}
else
{
my ($data,$config) = @_;
my $virtual = $data->{'virtual'};
{
my ($data,$config) = @_;
my $virtual = $data->{'virtual'};
- my $uselist = $data->{'uselist'};
if($data->{'cgi'}->param('confirmed'))
{
if($data->{'cgi'}->param('confirmed'))
{
- file_unlock($uselist,$virtual);
+ file_unlock($data->{'uselist'},$virtual);
return devedit_reload({command => 'show', file => upper_path($virtual)});
}
else
return devedit_reload({command => 'show', file => upper_path($virtual)});
}
else
# HTML generating routines
#
# Author: Patrick Canterino <patshaping@gmx.net>
# HTML generating routines
#
# Author: Patrick Canterino <patshaping@gmx.net>
-# Last modified: 2004-02-06
+# Last modified: 2004-02-23
-# Set the path to the template file using for error messages
+# Set the path to the template file used for error messages
# (I'm lazy...)
#
# Params: Template file
# (I'm lazy...)
#
# Params: Template file
# Print an error message and exit script
# ^^^^^
#
# Print an error message and exit script
# ^^^^^
#
+# Params: 1. Error message
+# 2. Hash reference: Template variables (optional)
- my $output = error(shift);
+ my $output = error(shift,undef,shift);