Filesystem Wurzelverzeichnis nun in kivitendo.conf
authorMartin Helmling martin.helmling@octosoft.eu <martin.helmling@octosoft.eu>
Wed, 14 Jun 2017 05:40:13 +0000 (07:40 +0200)
committerMartin Helmling martin.helmling@octosoft.eu <martin.helmling@octosoft.eu>
Wed, 14 Jun 2017 05:40:13 +0000 (07:40 +0200)
Das Rootverzeichnis für die Dokumente ist nun nicht mehr per Mandantenkonfig einstellbar
sondern ist unter [paths] in kivitendo.conf zu setzen.

Siehe auch Doku und kivitendo.conf.default

behebt nochmals  #525 (redmine)

SL/File/Backend/Filesystem.pm
config/kivitendo.conf.default
doc/dokumentation.xml
sql/Pg-upgrade2/filemanagement_filesystem.pl [deleted file]
templates/webpages/client_config/_features.html

index 19d81e3..72e8f30 100644 (file)
@@ -85,7 +85,7 @@ sub get_mtime {
   die "unknown version" if $params{version} &&
                           ($params{version} < 0 || $params{version} > $params{dbfile}->backend_data) ;
   my $path = $self->_filesystem_path($params{dbfile},$params{version});
-  die "no file found in backend" if !-f $path;
+  die "no file found in backend or configuration to filesystem is wrong" if !-f $path;
   my @st = stat($path);
   my $dt = DateTime->from_epoch(epoch => $st[9])->clone();
   $main::lxdebug->message(LXDebug->DEBUG2(), "dt=" .$dt);
@@ -109,9 +109,9 @@ sub get_content {
 }
 
 sub enabled {
-  return 0 unless $::instance_conf->get_doc_files || $::instance_conf->get_doc_files_rootpath;
-  $main::lxdebug->message(LXDebug->DEBUG2(), "root path=" . $::instance_conf->get_doc_files_rootpath . " isdir=" .( -d $::instance_conf->get_doc_files_rootpath?"YES":"NO"));
-  return 0 unless -d $::instance_conf->get_doc_files_rootpath;
+  return 0 unless $::instance_conf->get_doc_files;
+  return 0 unless $::lx_office_conf{paths}->{document_path};
+  return 0 unless -d $::lx_office_conf{paths}->{document_path};
   return 1;
 }
 
@@ -123,12 +123,12 @@ sub enabled {
 sub _filesystem_path {
   my ($self, $dbfile, $version) = @_;
 
-  die "No files backend enabled" unless $::instance_conf->get_doc_files || $::instance_conf->get_doc_files_rootpath;
+  die "No files backend enabled" unless $::instance_conf->get_doc_files || $::lx_office_conf{paths}->{document_path};
 
   # use filesystem with depth 3
   $version    = $dbfile->backend_data if !$version || $version < 1 || $version > $dbfile->backend_data;
   my $iddir   = sprintf("%04d", $dbfile->id % 1000);
-  my $path    = File::Spec->catdir($::instance_conf->get_doc_files_rootpath, $iddir, $dbfile->id);
+  my $path    = File::Spec->catdir($::lx_office_conf{paths}->{document_path}, $::auth->client->{id}, $iddir, $dbfile->id);
   $main::lxdebug->message(LXDebug->DEBUG2(), "file path=" .$path." id=" .$dbfile->id." version=".$version." basename=".$dbfile->id . '_' . $version);
   if (!-d $path) {
     File::Path::make_path($path, { chmod => 0770 });
index f4b8fe4..60be4b3 100644 (file)
@@ -102,6 +102,12 @@ memberfile = users/members
 # if set the export to geierlein is enabled
 # geierlein_path = geierlein
 
+#
+# document path for FileSystem FileManagement:
+#  (must be reachable read/write but not executable from webserver)
+# document_path = /var/local/kivi_documents
+#
+
 [mail_delivery]
 # Delivery method can be 'sendmail' or 'smtp'. For 'method = sendmail' the
 # parameter 'mail_delivery.sendmail' is used as the executable to call. If
index fd78ff8..7e1f7ba 100644 (file)
@@ -6530,7 +6530,7 @@ Beschreibung: &lt;%description%&gt;
           </mediaobject>
         </screenshot>
         <para>Die einzelnen Backends sind einzeln einschaltbar. Spezifische Backend-Konfigurierungen sind hier
-        noch ergänzbar. Für das Backend Dateisystem ist das Wurzelverzeichnis für den Mandanten einzugeben.</para>
+        noch ergänzbar.</para>
         </sect4>
           <sect4>
             <title>Reiter "Allgemeine Dokumentenanhänge"</title>
@@ -6569,7 +6569,17 @@ Beschreibung: &lt;%description%&gt;
           <para>Es ist daran gedacht, statt dem default Eintrag später für bestimmte Benutzer ('login') bestimmte Quellen zuzulassen,
           dies wird nach Bedarf implementiert.</para>
         </sect3>
-      </sect2>
+        <sect3 id="file_management.kiviconfig" xreflabel="kivitendo-Konfigurationsdatei">
+          <title>kivitendo-Konfigurationsdatei</title>
+          <para>Dort ist im Abschnitt [paths] der relative oder absolute Pfad zum Dokumentenwurzelverzeichnis einzutragen.
+          Dieser muss für den Webserver schreib- und lesbar sein, jedoch nicht ausführbar.</para>
+          <programlisting>
+[paths]
+document_path = /var/local/kivi_documents
+          </programlisting>
+          <para>Unter diesem Wurzelverzeichnis wird pro Mandant automatisch ein Unterverzeichnis mit der ID des Mandanten angelegt</para>
+        </sect3>
+     </sect2>
     </sect1>
   </chapter>
 
diff --git a/sql/Pg-upgrade2/filemanagement_filesystem.pl b/sql/Pg-upgrade2/filemanagement_filesystem.pl
deleted file mode 100644 (file)
index bb4e1e2..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-# @tag: filemanagement_filesystem
-# @description: add  directory for filemanagment
-# @depends: filemanagement_feature
-package SL::DBUpgrade2::filemanagement_filesystem;
-
-use strict;
-use utf8;
-use File::Path qw(make_path);
-
-use parent qw(SL::DBUpgrade2::Base);
-
-sub run {
-  my ($self) = @_;
-
-  my $directory = $::instance_conf->get_doc_files_rootpath;
-
-  if ( $directory && !-d $directory ) {
-    mkdir $directory;
-    if (! -d $directory) {
-      return 0;
-    }
-  }
-  return 1;
-}
-
-1;
index 9596c59..9c90515 100644 (file)
    <td>[% L.yes_no_tag('defaults.doc_files', SELF.defaults.doc_files) %]</td>
    <td>[% LxERP.t8('Use File Storage backend') %]</td>
   </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, onchange="verifyRootPath(this);") %]</td>
-   <td>[% LxERP.t8('This is the root directory for the File storage backend, must be writable for webserver. If you have more than one client you need another direcctory. All other directories must be created by hand and reachable from the webserver') %]</td>
-  </tr>
   <tr>
    <td align="right">[% LxERP.t8('WebDAV') %]</td>
    <td>[% L.yes_no_tag('defaults.doc_webdav', SELF.defaults.doc_webdav) %]</td>