Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 108753a7

Von Bernd Bleßmann vor mehr als 5 Jahren hinzugefügt

  • ID 108753a78b203dbe0ccbe6438cc16c8df33c04d3
  • Vorgänger 9e433123
  • Nachfolger 2a496ad8

WebDav: Fehler beim Kopieren anzeigen / Verzeichnis zurück wechseln

Wenn in SL::Form->parse_template bei Common::copy_file_to_webdav_folder etwas
schief ging, wurde dort ein "die" oder "Form->error" aufgerufen. Allderdings
wird in parse_template vorher das Arbeitsverzeichnis gewechselt, so dass die
web-templates zum Anzeigen des Fehlers nicht mehr gefunden werden.

Dies ist nur ein schlechter Fix. In #96 (redmine) sind einige bessere Lösungen
erwähnt, die aber etwas mehr Aufwand und vor allem Testen verlangen.

Bezieht sich auch auf #96 (redmine)
Refs #96

Unterschiede anzeigen:

SL/Common.pm
foreach my $item (qw(tmpdir tmpfile type)){
next if $form->{$item};
$::lxdebug->message(LXDebug::WARN(), 'Missing parameter:' . $item);
$::form->error($::locale->text("Missing parameter for WebDAV file copy"));
$::lxdebug->leave_sub();
return $::locale->text("Missing parameter for WebDAV file copy");
}
my ($webdav_folder, $document_name) = get_webdav_folder($form);
if (! $webdav_folder){
$::lxdebug->leave_sub();
$::lxdebug->message(LXDebug::WARN(), 'Cannot check correct WebDAV folder');
$::form->error($::locale->text("Cannot check correct WebDAV folder"));
return undef;
$::lxdebug->leave_sub();
return $::locale->text("Cannot check correct WebDAV folder")
}
$complete_path = File::Spec->catfile($form->{cwd}, $webdav_folder);
......
chdir($current_dir);
}
opendir my $dh, $complete_path or die "Could not open $complete_path: $!";
my $dh;
if (!opendir $dh, $complete_path) {
$::lxdebug->leave_sub();
return "Could not open $complete_path: $!";
}
my ($newest_name, $newest_time);
while ( defined( my $file = readdir( $dh ) ) ) {
......
if (!File::Copy::copy($current_file, $new_file)) {
$::lxdebug->message(LXDebug::WARN(), "Copy file from $current_file to $new_file failed: $ERRNO");
$::form->error($::locale->text("Copy file from #1 to #2 failed: #3", $current_file, $new_file, $ERRNO));
$::lxdebug->leave_sub();
return $::locale->text("Copy file from #1 to #2 failed: #3", $current_file, $new_file, $ERRNO);
}
$::lxdebug->leave_sub();
SL/Form.pm
}
if ($self->{media} eq 'file') {
copy(join('/', $self->{cwd}, $userspath, $self->{tmpfile}), $out =~ m|^/| ? $out : join('/', $self->{cwd}, $out)) if $template->uses_temp_file;
Common::copy_file_to_webdav_folder($self) if $copy_to_webdav;
if ($copy_to_webdav) {
my $error = Common::copy_file_to_webdav_folder($self);
chdir("$self->{cwd}");
$self->error($error) if $error;
}
if (!$self->{preview} && $self->doc_storage_enabled)
{
$self->{attachment_filename} ||= $self->generate_attachment_filename;
......
return;
}
Common::copy_file_to_webdav_folder($self) if $copy_to_webdav;
if ($copy_to_webdav) {
my $error = Common::copy_file_to_webdav_folder($self);
chdir("$self->{cwd}");
$self->error($error) if $error;
}
if ( !$self->{preview} && $ext_for_format eq 'pdf' && $self->doc_storage_enabled) {
$self->{attachment_filename} ||= $self->generate_attachment_filename;

Auch abrufbar als: Unified diff