]> wagnertech.de Git - mfinanz.git/commitdiff
Dateimanagement: Robustere Mandantenkonfigurierung
authorMartin Helmling martin.helmling@octosoft.eu <martin.helmling@octosoft.eu>
Wed, 22 Feb 2017 10:33:40 +0000 (11:33 +0100)
committerMartin Helmling martin.helmling@octosoft.eu <martin.helmling@octosoft.eu>
Wed, 22 Feb 2017 10:33:40 +0000 (11:33 +0100)
Es wurde das BAckend "None" eingeführt, falls kein Backend enabled ist.
Fehlermeldung nun in deutsch falls kein Backend vorhanden.

Die Hochladbare Dateigröße ist nun in der Mandantenkonfig in Megabytes (default 10Mb)

SL/File.pm
bin/mozilla/gl.pl
locale/de/all
sql/Pg-upgrade2/filemanagement_feature.sql
t/file/filesystem.t
templates/webpages/client_config/_features.html
templates/webpages/client_config/form.html

index 28604249e37123f8b8bccf9e599eba70e0642d89..1ecd7d5105a3ce71ed74093953a262d4c77b1418 100644 (file)
@@ -319,13 +319,14 @@ sub _get_backend {
   my ($self, $backend_name) = @_;
   my $class = 'SL::File::Backend::' . $backend_name;
   my $obj   = undef;
+  die $::locale->text('no backend enabled') if $backend_name eq 'None';
   eval {
     eval "require $class";
     $obj = $class->new;
-    die 'backend not enabled' unless $obj->enabled;
+    die $::locale->text('backend "#1" not enabled',$backend_name) unless $obj->enabled;
     1;
   } or do {
-    die 'backend class not found';
+    die $::locale->text('backend "#1" not found',$backend_name);
   };
   return $obj;
 }
index f62b74b1f2c07ce8f80a14bc4eea42eeeb059fdd..f44f3cbf1195d30ead1267061370b6cc97a77c81 100644 (file)
@@ -955,7 +955,7 @@ sub form_header {
 
   my ($init) = @_;
 
-  $::request->layout->add_javascripts("autocomplete_chart.js", "kivi.GL.js", "kivi.RecordTemplate.js");
+  $::request->layout->add_javascripts("autocomplete_chart.js", "kivi.File.js", "kivi.GL.js", "kivi.RecordTemplate.js");
 
   my @old_project_ids = grep { $_ } map{ $::form->{"project_id_$_"} } 1..$::form->{rowcount};
 
index 4c990ced50b05679f7484ebfb09693a2ef259d4a..b7be5527997b8feb0abe732dec36a9a71c33398f 100755 (executable)
@@ -3004,7 +3004,7 @@ $self->{texts} = {
   'The login is not unique.'    => 'Der Loginname ist nicht eindeutig.',
   'The long description is missing.' => 'Der Langtext fehlt.',
   'The master templates where not found.' => 'Der Vorlagensatz wurde nicht gefunden.',
-  'The maximum of uploadable filesize' => 'Die maximale Dateigröße in Bytes die hochladbar ist',
+  'The maximum of uploadable filesize in Megabyte' => 'Die maximale Dateigröße in Megabytes, die hochladbar ist',
   'The name and description are not unique.' => 'Name und Beschreibung sind nicht einmalig.',
   'The name in row %d has already been used before.' => 'Der Name in Zeile %d wurde vorher bereits benutzt.',
   'The name is invalid.'        => 'Der Name ist ungültigt.',
@@ -3591,6 +3591,8 @@ $self->{texts} = {
   'averconsumed_br'             => 'Ø mtl.',
   'back'                        => 'zurück',
   'back_br'                     => 'Zurk.',
+  'backend "#1" not enabled'    => 'Dateimanagement-Subsystem "#1" nicht aktiviert',
+  'backend "#1" not found'      => 'Dateimanagement-Subsystem "#1" unbekannt',
   'balance'                     => 'Betriebsvermögensvergleich/Bilanzierung',
   'bank_collection_payment_list_#1' => 'bankeinzugszahlungsliste_#1',
   'bank_transfer_payment_list_#1' => 'ueberweisungszahlungsliste_#1',
@@ -3713,6 +3715,7 @@ $self->{texts} = {
   'next'                        => 'vor',
   'no'                          => 'nein',
   'no article assigned yet'     => 'noch kein Artikel zugewiesen',
+  'no backend enabled'          => 'Kein Dateimanagement-Subsystem aktiviert',
   'no bestbefore'               => 'keine Mindesthaltbarkeit',
   'no chargenumber'             => 'keine Chargennummer',
   'no execution for this client' => 'keine Ausführung für diesen Mandanten',
index 4c8f8ca204bf543ba84cb950d3411f9c6f5f5363..04d30820ac2644aa55d88106610b4787e28f2831 100644 (file)
@@ -2,12 +2,12 @@
 -- @description: "Zusätzliche Config flags für Filemanagement"
 -- @depends: release_3_4_1
 ALTER TABLE defaults ADD COLUMN doc_delete_printfiles       boolean DEFAULT false;
-ALTER TABLE defaults ADD COLUMN doc_max_filesize            integer DEFAULT 1000000;
+ALTER TABLE defaults ADD COLUMN doc_max_filesize            integer DEFAULT 10000000;
 ALTER TABLE defaults ADD COLUMN doc_storage                 boolean DEFAULT false;
 ALTER TABLE defaults ADD COLUMN doc_storage_for_documents   text default 'Filesystem';
 ALTER TABLE defaults ADD COLUMN doc_storage_for_attachments text default 'Filesystem';
 ALTER TABLE defaults ADD COLUMN doc_storage_for_images      text default 'Filesystem';
 ALTER TABLE defaults ADD COLUMN doc_files                   boolean DEFAULT false;
-ALTER TABLE defaults ADD COLUMN doc_files_rootpath          text default '';
+ALTER TABLE defaults ADD COLUMN doc_files_rootpath          text default './documents';
 ALTER TABLE defaults ADD COLUMN doc_webdav                  boolean DEFAULT false;
 ALTER TABLE defaults ADD COLUMN doc_database                boolean DEFAULT false;
index fd648e84ecef2a29581c1a52e664cc84faf4bb5b..6c22e3d4cf9d51a633e4e708869daeda014aecf0 100644 (file)
@@ -85,7 +85,7 @@ eval {
   $result=$@;
 };
 $result = substr($result,0,14);
-print $result."\n";
+#print $result."\n";
 ok($result eq "No object type","correct error 'No object type'");
 
 $::form->{object_type} ='sales_order';
@@ -99,7 +99,7 @@ eval {
   $result=$@;
 };
 $result = substr($result,0,12);
-print $result."\n";
+#print $result."\n";
 ok($result eq "No file type","correct error 'No file type'");
 
 clear_up();
index b38b66e90e6417c08a263713c423681281ffa128..44c158f3ece665f8584c8d7266ca6d02241e31f0 100644 (file)
   <tr>
     <td align="right">[% LxERP.t8('Storage Type for generated/imported PDF Documents') %]</td>
     <td>[% L.select_tag('defaults.doc_storage_for_documents',
-         [ [ 'Filesystem', LxERP.t8('Files') ],[ 'Webdav', LxERP.t8('WebDAV') ],[ 'ExtDMS', LxERP.t8('ext.DMS') ],[ 'DB', LxERP.t8('Database') ]  ],
-                               default = SELF.defaults.doc_storage_for_documents) %]</td> 
+         [ [ 'None', LxERP.t8('None') ],[ 'Filesystem', LxERP.t8('Files') ],[ 'Webdav', LxERP.t8('WebDAV') ],[ 'ExtDMS', LxERP.t8('ext.DMS') ],[ 'DB', LxERP.t8('Database') ]  ],
+                               default = SELF.defaults.doc_storage_for_documents,
+                               onchange="return checkavailable_filebackend(this);") %]</td>
     <td>[% LxERP.t8('Use this storage backend for all generated PDF-Files') %]</td>
   </tr>
   <tr>
     <td align="right">[% LxERP.t8('Storage Type for Attachments') %]</td>
     <td>[% L.select_tag('defaults.doc_storage_for_attachments',
-         [ [ 'Filesystem', LxERP.t8('Files') ],[ 'Webdav', LxERP.t8('WebDAV') ],[ 'ExtDMS', LxERP.t8('ext.DMS') ],[ 'DB', LxERP.t8('Database') ]  ],
-                               default = SELF.defaults.doc_storage_for_attachments) %]</td> 
+         [ [ 'None', LxERP.t8('None') ], [ 'Filesystem', LxERP.t8('Files') ],[ 'Webdav', LxERP.t8('WebDAV') ],[ 'ExtDMS', LxERP.t8('ext.DMS') ],[ 'DB', LxERP.t8('Database') ]  ],
+                               default = SELF.defaults.doc_storage_for_attachments,
+                               onchange="return checkavailable_filebackend(this);") %]</td>
     <td>[% LxERP.t8('Use this storage backend for all uploaded attachments') %]</td>
   </tr>
   <tr>
     <td align="right">[% LxERP.t8('Storage Type for images') %]</td>
     <td>[% L.select_tag('defaults.doc_storage_for_images',
-         [ [ 'Filesystem', LxERP.t8('Files') ],[ 'Webdav', LxERP.t8('WebDAV') ],[ 'ExtDMS', LxERP.t8('ext.DMS') ],[ 'DB', LxERP.t8('Database') ]  ],
-                               default = SELF.defaults.doc_storage_for_images) %]</td> 
+         [ [ 'None', LxERP.t8('None') ], [ 'Filesystem', LxERP.t8('Files') ],[ 'Webdav', LxERP.t8('WebDAV') ],[ 'ExtDMS', LxERP.t8('ext.DMS') ],[ 'DB', LxERP.t8('Database') ]  ],
+                               default = SELF.defaults.doc_storage_for_images,
+                               onchange="return checkavailable_filebackend(this);") %]</td>
     <td>[% LxERP.t8('Use this storage backend for uploaded images') %]</td>
   </tr>
   <tr>
@@ -62,8 +65,9 @@
   </tr>
   <tr>
    <td align="right">[% LxERP.t8('max filesize') %]</td>
-   <td>[% L.input_tag('defaults.doc_max_filesize',SELF.defaults.doc_max_filesize, size=>10) %]</td>
-   <td>[% LxERP.t8('The maximum of uploadable filesize') %]</td>
+   <td>[% L.input_tag('doc_max_filesize_MB','', size=10, onchange="verifyMBSize(this);") %]
+       [% L.hidden_tag('defaults.doc_max_filesize',SELF.defaults.doc_max_filesize) %] MB</td>
+   <td>[% LxERP.t8('The maximum of uploadable filesize in Megabyte') %]</td>
   </tr>
   <tr><td class="listheading" colspan="4">[% LxERP.t8("Storage Backends") %]</td></tr>
   <tr>
@@ -73,7 +77,7 @@
   </tr>
   <tr>
    <td align="right">[% LxERP.t8('Root path for file storage') %]</td>
-   <td>[% L.input_tag('defaults.doc_files_rootpath',SELF.defaults.doc_files_rootpath, style=style) %]</td>
+   <td>[% L.input_tag('defaults.doc_files_rootpath',SELF.defaults.doc_files_rootpath, style=style, onchange="verifyRootPath(this);") %]</td>
    <td>[% LxERP.t8('This is the root directory for the File storage backend, must be writable for webserver') %]</td>
   </tr>
   <tr>
@@ -83,7 +87,7 @@
   </tr>
   <tr>
    <td align="right">[% LxERP.t8('Database') %]</td>
-   <td>[% L.yes_no_tag('defaults.doc_database', SELF.defaults.doc_database) %]</td>
+   <td>[% L.yes_no_tag('defaults.doc_database', SELF.defaults.doc_database, disabled=1) %]</td>
    <td>[% LxERP.t8('Use Database Storage backend (not implemented yet!)') %]</td>
   </tr>
 
index 20935eeb44b0b82b88cdea1840d87cd2d513c1c9..eb6714c0967d36719c8d62892fe64e6976248da1 100644 (file)
@@ -38,11 +38,39 @@ function enable_template_controls() {
   $('#new_templates,#new_master_templates').prop('disabled', existing);
 }
 
+function verifyMBSize(elem) {
+  var fsize = parseInt($('#doc_max_filesize_MB').val());
+  $('#defaults_doc_max_filesize').val(fsize*1000000.0);
+  $('#doc_max_filesize_MB').val(fsize);
+}
+
+function verifyRootPath(elem) {
+  if ( elem.value == "" ) {
+    elem.value="./documents";
+  }
+}
+
+function checkavailable_filebackend(elem) {
+  var selval = elem.value;
+  if ( selval == 'Webdav' && $("#defaults_doc_webdav").val() == 0 ) {
+     elem.value = 'Filesystem';
+  } else if ( selval == 'ExtDMS' ) {
+     elem.value = 'Filesystem';
+  } if ( selval == 'DB' && $("#defaults_doc_database").val() == 0 ) {
+     elem.value = 'Filesystem';
+  }
+  if ( elem.value == 'Filesystem' && $("#defaults_doc_files").val() == 0 ) {
+     elem.value = 'None';
+  }
+  return false;
+}
+
 $(function() {
   warehouse_selected([% SELF.defaults.warehouse_id || -1 %], [% SELF.defaults.bin_id || -1 %], 'bin_id');
   warehouse_selected([% SELF.defaults.warehouse_id_ignore_onhand || -1 %], [% SELF.defaults.bin_id_ignore_onhand || -1 %], 'bin_id_ignore_onhand');
 
   enable_template_controls();
+  $('#doc_max_filesize_MB').val(parseInt($('#defaults_doc_max_filesize').val())/1000000.0);
   $('#use_templates_existing,#use_templates_new').change(enable_template_controls);
 })
     -->