Revert "get_webdav: Zeitstempel vor dem letzten . setzen"
[kivitendo-erp.git] / SL / Controller / File.pm
index 5d2e97c..7cd9406 100644 (file)
@@ -66,6 +66,7 @@ my %file_types = (
   'purchase_invoice'        => { gen => 6, gltype => 'ap', dir =>'PurchaseInvoice',      model => 'PurchaseInvoice',right => 'import_ap'  },
   'vendor'                  => { gen => 0, gltype => '',   dir =>'Vendor',               model => 'Vendor',         right => 'xx'         },
   'customer'                => { gen => 1, gltype => '',   dir =>'Customer',             model => 'Customer',       right => 'xx'         },
+  'project'                 => { gen => 0, gltype => '',   dir =>'Project',              model => 'Project',        right => 'xx'         },
   'part'                    => { gen => 0, gltype => '',   dir =>'Part',                 model => 'Part',           right => 'xx'         },
   'gl_transaction'          => { gen => 6, gltype => 'gl', dir =>'GeneralLedger',        model => 'GLTransaction',  right => 'import_ap'  },
   'draft'                   => { gen => 0, gltype => '',   dir =>'Draft',                model => 'Draft',          right => 'xx'         },
@@ -317,10 +318,16 @@ sub action_download {
 sub action_ajax_get_thumbnail {
   my ($self) = @_;
 
-  my $file      = SL::File->get(id => $::form->{file_id});
+  my $id      = $::form->{file_id};
+  my $version = $::form->{file_version};
+  my $file    = SL::File->get(id => $id);
+
+  $file->version($version) if $version;
+
   my $thumbnail = _create_thumbnail($file, $::form->{size});
 
-  my $overlay_selector = '#enlarged_thumb_' . $::form->{file_id};
+  my $overlay_selector  = '#enlarged_thumb_' . $id;
+  $overlay_selector    .= '_' . $version            if $version;
   $self->js
     ->attr($overlay_selector, 'src', 'data:' . $thumbnail->{thumbnail_img_content_type} . ';base64,' . MIME::Base64::encode_base64($thumbnail->{thumbnail_img_content}))
     ->data($overlay_selector, 'is-overlay-loaded', '1')
@@ -399,7 +406,7 @@ sub _do_list {
   if ( $self->file_type eq 'document' ) {
     my @object_types;
     push @object_types, $self->object_type;
-    push @object_types, qw(dunning dunning1 dunning2 dunning3) if $self->object_type eq 'invoice'; # hardcoded object types?
+    push @object_types, qw(dunning1 dunning2 dunning3 dunning_invoice dunning_orig_invoice) if $self->object_type eq 'invoice'; # hardcoded object types?
     @files = SL::File->get_all_versions(object_id   => $self->object_id,
                                         object_type => \@object_types,
                                         file_type   => $self->file_type,
@@ -672,7 +679,12 @@ sub _convert_pdf_to_png {
 
   my $size    = $params{size} // 64;
   my $sfile   = SL::SessionFile::Random->new();
-  my $command = 'pdftoppm -singlefile -scale-to ' . $size . ' -png' . ' ' . $filename . ' ' . $sfile->file_name;
+  unless (-f $filename) {
+    $::lxdebug->message(LXDebug::WARN(), "_convert_pdf_to_png failed, no file found: $filename");
+    return;
+  }
+  # quotemeta for storno case "storno\ zu\ 1020" *nix only
+  my $command = 'pdftoppm -singlefile -scale-to ' . $size . ' -png' . ' ' . quotemeta($filename) . ' ' . $sfile->file_name;
 
   if (system($command) == -1) {
     $::lxdebug->message(LXDebug::WARN(), "SL::File::_convert_pdf_to_png: system call failed: " . $ERRNO);
@@ -680,6 +692,7 @@ sub _convert_pdf_to_png {
   }
   if ($CHILD_ERROR) {
     $::lxdebug->message(LXDebug::WARN(), "SL::File::_convert_pdf_to_png: pdftoppm failed with error code: " . ($CHILD_ERROR >> 8));
+    $::lxdebug->message(LXDebug::WARN(), "SL::File::_convert_pdf_to_png: File: $filename");
     return;
   }