Dateimanagement: erst nur letzte Version anzeigen / alle Versionen ausklappbar.
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 25 Apr 2022 15:37:59 +0000 (17:37 +0200)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 2 May 2022 14:55:28 +0000 (16:55 +0200)
Und auch alle Versionen von Anhängen und Bildern anzeigen. Vorher wurde
hier nur die letzte Version gezeigt.

SL/Controller/File.pm
js/kivi.File.js
templates/webpages/file/list.html

index dcf790e..8dacec2 100644 (file)
@@ -404,26 +404,21 @@ sub _delete_all {
 
 sub _do_list {
   my ($self, $json) = @_;
+
   my @files;
+  my @object_types = ($self->object_type);
   if ( $self->file_type eq 'document' ) {
-    my @object_types;
-    push @object_types, $self->object_type;
     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,
-                                       );
-
-  }
-  elsif ( $self->file_type eq 'attachment' || $self->file_type eq 'image' ) {
-    @files   = SL::File->get_all(object_id   => $self->object_id,
-                                 object_type => $self->object_type,
-                                 file_type   => $self->file_type,
-                                );
   }
+  @files = SL::File->get_all_versions(object_id   => $self->object_id,
+                                      object_type => \@object_types,
+                                      file_type   => $self->file_type,
+                                     );
+
   $self->files(\@files);
 
-  $_->{thumbnail} = _create_thumbnail($_) for @files;
+  $_->{thumbnail}     = _create_thumbnail($_)                     for @files;
+  $_->{version_count} = SL::File->get_version_count(id => $_->id) for @files;
 
   if($self->object_type eq 'shop_image'){
     $self->js
index 63a8534..55aa4ea 100644 (file)
@@ -409,4 +409,16 @@ namespace('kivi.File', function(ns) {
     });
   };
 
+  ns.toggle_versions = function(file_id) {
+    if ($('#version_toggle_' + file_id).data('versions_expanded')) {
+      $('.version_row_'    + file_id).hide();
+      $('#version_toggle_' + file_id).data('versions_expanded', 0);
+      $('#version_toggle_' + file_id).html("⏷ ");
+    } else {
+      $('.version_row_'    + file_id).show();
+      $('#version_toggle_' + file_id).data('versions_expanded', 1);
+      $('#version_toggle_' + file_id).html("⏶ ");
+    }
+  };
+
 });
index 66a3d33..2868d4f 100644 (file)
@@ -29,6 +29,7 @@
       <th class="listheading" width="3%">[% L.checkbox_tag(checkname _ '_checkall') %]</th>
       <th class="listheading" width="7%">[% source.chkall_title %]</th>
      [%- END %]
+     <th class="listheading" width="2%"><b>[%  LxERP.t8('Version') %]</b></th>
      <th class="listheading" width="15%"><b>[%  LxERP.t8('Date') %]</b></th>
      <th class="listheading" width="20%"><b>[%  source.file_title %]</b></th>
      [%- IF file_type == 'image' %]
 
    <tbody>
     [%- FOREACH file = source.files %]
-     <tr class="listrow[% loop.count % 2 %]">
+     [%- is_other_version = 1 IF last_id == file.id %]
+     [%- last_id = file.id %]
+     [%- IF !is_other_version %]
+      [%- row_cnt = row_cnt + 1 %]
+      <tr class="listrow[% row_cnt % 2 %]">
+     [%- ELSE %]
+      <tr class="[% 'version_row_' _ file.id %] listrow[% row_cnt % 2 %] hidden">
+     [%- END %]
       [%- IF edit_attachments %]
        <td>[%- L.checkbox_tag(checkname _ '[]', 'value'=file.id _ '_' _ file.version, 'class'=checkname) %]</td>
        <td></td>
       [%- END %]
-      <td>[% file.mtime_as_timestamp_s %][% L.hidden_tag("version[]", file.version) %]</td>
+      <td align="right" [%- IF file.version_count > 1 && !is_other_version %] class="cursor-pointer" onclick="kivi.File.toggle_versions('[% file.id %]')"[%- END %]>
+       [%- IF file.version_count > 1 && !is_other_version %]<span id="[% 'version_toggle_' _ file.id %]">⏷ </span>[% END %]
+       [% file.version _ '/' _ file.version_count %]
+       [% L.hidden_tag("version[]", file.version) %]
+      </td>
+      <td>[% file.mtime_as_timestamp_s %]</td>
       <td>
        <a href="controller.pl?action=File/download&id=[% file.id %][%- IF file.version %]&version=[%- file.version %][%- END %]">
         <span id="[% "filename_" _ file.id %][%- IF file.version %]_[% file.version %][%- END %]">[% file.file_name %]</span>