Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 108753a7

Von Bernd Bleßmann vor fast 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
539 539
  foreach my $item (qw(tmpdir tmpfile type)){
540 540
    next if $form->{$item};
541 541
    $::lxdebug->message(LXDebug::WARN(), 'Missing parameter:' . $item);
542
    $::form->error($::locale->text("Missing parameter for WebDAV file copy"));
542
    $::lxdebug->leave_sub();
543
    return $::locale->text("Missing parameter for WebDAV file copy");
543 544
  }
544 545

  
545 546
  my ($webdav_folder, $document_name) =  get_webdav_folder($form);
546 547

  
547 548
  if (! $webdav_folder){
548
    $::lxdebug->leave_sub();
549 549
    $::lxdebug->message(LXDebug::WARN(), 'Cannot check correct WebDAV folder');
550
    $::form->error($::locale->text("Cannot check correct WebDAV folder"));
551
    return undef;
550
    $::lxdebug->leave_sub();
551
    return $::locale->text("Cannot check correct WebDAV folder")
552 552
  }
553 553

  
554 554
  $complete_path =  File::Spec->catfile($form->{cwd},  $webdav_folder);
......
562 562
    chdir($current_dir);
563 563
  }
564 564

  
565
  opendir my $dh, $complete_path or die "Could not open $complete_path: $!";
565
  my $dh;
566
  if (!opendir $dh, $complete_path) {
567
    $::lxdebug->leave_sub();
568
    return "Could not open $complete_path: $!";
569
  }
566 570

  
567 571
  my ($newest_name, $newest_time);
568 572
  while ( defined( my $file = readdir( $dh ) ) ) {
......
590 594

  
591 595
  if (!File::Copy::copy($current_file, $new_file)) {
592 596
    $::lxdebug->message(LXDebug::WARN(), "Copy file from $current_file to $new_file failed: $ERRNO");
593
    $::form->error($::locale->text("Copy file from #1 to #2 failed: #3", $current_file, $new_file, $ERRNO));
597
    $::lxdebug->leave_sub();
598
    return $::locale->text("Copy file from #1 to #2 failed: #3", $current_file, $new_file, $ERRNO);
594 599
  }
595 600

  
596 601
  $::lxdebug->leave_sub();
SL/Form.pm
1035 1035
  }
1036 1036
  if ($self->{media} eq 'file') {
1037 1037
    copy(join('/', $self->{cwd}, $userspath, $self->{tmpfile}), $out =~ m|^/| ? $out : join('/', $self->{cwd}, $out)) if $template->uses_temp_file;
1038
    Common::copy_file_to_webdav_folder($self)                                                                         if $copy_to_webdav;
1038

  
1039
    if ($copy_to_webdav) {
1040
      my $error = Common::copy_file_to_webdav_folder($self);
1041
      chdir("$self->{cwd}");
1042
      $self->error($error) if $error;
1043
    }
1044

  
1039 1045
    if (!$self->{preview} && $self->doc_storage_enabled)
1040 1046
    {
1041 1047
      $self->{attachment_filename} ||= $self->generate_attachment_filename;
......
1049 1055
    return;
1050 1056
  }
1051 1057

  
1052
  Common::copy_file_to_webdav_folder($self) if $copy_to_webdav;
1058
  if ($copy_to_webdav) {
1059
    my $error = Common::copy_file_to_webdav_folder($self);
1060
    chdir("$self->{cwd}");
1061
    $self->error($error) if $error;
1062
  }
1053 1063

  
1054 1064
  if ( !$self->{preview} && $ext_for_format eq 'pdf' && $self->doc_storage_enabled) {
1055 1065
    $self->{attachment_filename} ||= $self->generate_attachment_filename;

Auch abrufbar als: Unified diff