Dateiverwaltung für die WebBox
edit | blame | history | raw

Dateiverwaltung

Eine Webanwendung zur Bearbeitung und Verwaltung von Dateien für die WebBox.

Funktionen

Die Dateiverwaltung besitzt die folgenden Funktionen

  • Persönliches und öffentliches Verzeichnis je Benutzer
  • Auflisten von Verzeichnissen und ihrer Inhalte
  • Ansehen der Datei-Inhalte
  • Erstellen und Bearbeiten von Texten und Dokumenten
  • Dateien und Ordner kopieren, verschieben und löschen
  • Hochladen per Drag and Drop direkt in Ordner
  • Listen- und Kachelansicht

Die Bedienoberfläche passt sich an verschiedene Geräteausstattungen an (responsiv).

Konfiguration

Die Dateiverwaltung bezieht den Ablageort von Dateien über die Systemvariable wbx.data. Diese Angabe muss beim Start des Java-Prozesses als Parameter gesetzt sein wie in java -Dwbx.data=/pfad/zu/den/daten [weitere Parameter]. Bei Verwendung von Tomcat kann diese Angabe auch in der Environment-Variable JAVA_OPTS hinterlegt werden.

Automatische Ermittlung des Ablageortes

Ist die Angabe wbx.data nicht zu finden oder leer, wird der Ablageort ausgehend von $CATALINA_BASE/webapps ermittelt. Dieser Vorgang kann in der Datei WEB-INF/web.xml mit den Parametern tiefe und datenOrdner beeinflusst werden.

Der Vorgang zur Ermittlung des Ablageortes für Daten geht ausgehend von $CATALINA_BASE/webapps die Anzahl Ordner tiefe nach oben und verwendet von diesem Ordner aus den Pfad in datenOrdner.

Webanwendung herstellen

Zum Herstellen der Webanwendung wird ein Java Development Kit (JDK) benötigt, wie es z.B. von Azul oder dem OpenJDK-Projekt frei erhältlich ist. In der hier folgenden weiteren Beschreibung wird der lokale Ablageort des Java Development Kits $JDK genannt.

Desweiteren werden die folgenden Klassenbibliotheken benötigt

Bibliothek            Datei(en)                       Ablageort lokal
----------            ---------                       ---------------
Commons Fileupload .. commons-fileupload-1.3.2.jar .. $JLIB
Commons IO .......... commons-io-2.5.jar ............ $JLIB
Tomcat .............. lib/servlet-api.jar ........... $CATALINA_HOME
XStream ............. xstream-1.4.7.jar ............. $JLIB
Jettison ............ jettison-1.3.3.jar ............ $JLIB
Thumbnailator ....... thumbnailator.jar ............. $CATALINA_BASE
wbx-lib ............. wbx-lib.jar ................... $CATALINA_BASE
Transit ............. Transit.jar ................... $JLIB

Diese sind an folgenden Orten frei erhältlich:

Ferner erfordert die Dateiverwaltung die folgenden Javascript-Bibliotheken:

$JSLIB/jquery ............... mindestens in Version 3.2.1
$JSLIB/mustache ............. mindestens in Version 2.3.0
$JSLIB/codemirror ........... mindestens in Version 5.24.2
$JSLIB/tinymce .............. mindestens in Version 4.3.4
$JSLIB/fancybox ............. mindestens in Version 3
$JSLIB/lightbox ............. mindestens in Version 2.7.1
$JSLIB/highlight-adoc ....... mindestens in Version 9.18.1
$JSLIB/moment ............... mindestens in Version 2.8.1
$JSLIB/numeral .............. mindestens in Version 2.0.6

Nachfolgend die Quellen, von denen die obigen Abhängigkeiten bezogen werden können:

Nach Beschaffung des JDK und der oben angegebenen Bibliotheken wird der Quellcode aus diesem Git-Repository an einen frei wählbaren lokalen Ablageort heruntergeladen und entpackt. In der hier folgenden weiteren Beschreibung wird das so entstandene Verzeichnis file-cms-master einschließlich des absoluten Pfades dorthin $FILE-CMS genannt. Ferner wird angenommen, dass die oben aufgeführten Bliotheken lokal an Orten abgelegt sind, deren Pfade mit den Platzhaltern $JLIB und $JSLIB gemeint sind. Anstelle der Platzhalter in den folgenden Kommandos muss also der absolute Pfad des lokalen Ablageortes eingesetzt werden.

Zur Herstellung der Dateiverwaltung werden die folgenden Kommandos ausgeführt (Beispiel für Linux):

cd $FILE-CMS
mkdir dist
mkdir build
cp -r web/* build
cd build/WEB-INF
mkdir classes
mkdir lib
cd ..
mkdir jslib
cd ..
cp $JLIB/* build/WEB-INF/lib
cp -r $JSLIB/* build/jslib

$JDK/bin/javac -classpath $JLIB/commons-fileupload-1.3.2.jar:$JLIB/commons-io-2.5.jar:$JLIB/jettison-1.3.3.jar:$JLIB/Transit.jar:$JLIB/xstream-1.4.7.jar:$CATALINA_HOME/lib/servlet-api:$CATALINA_BASE/lib/thumbnailator.jar:$CATALINA_BASE/lib/wbx-lib.jar.jar -d ./build/WEB-INF/classes src/java/de/uhilger/filecms/api/*.java src/java/de/uhilger/filecms/web/*.java src/java/de/uhilger/filecms/pub/*.java

cp src/java/logging.properties build/WEB-INF/classes
$JDK/bin/jar -cf dist/file-cms.war -C build .
rm -r build

Das Webarchiv der Dateiverwaltung liegt anschließend als $FILE-CMS/dist/file-cms.war fertig zum Deployment bereit.

Die im obigen Build-Skript bereits mit $CATALINA_BASE gekennzeichneten Klassenbibliotheken werden nicht als Teil des Webarchivs der Dateiverwaltung gebaut und im Verzeichnis $CATALINA_BASE/lib der WebBox erwartet.

Distributionsalternative

Das Kommando cp $JLIB/* build/WEB-INF/lib kann auch weggelassen werden, dann sind die Klassenbibliotheken nicht Teil des Webarchivs der Dateiverwaltung. In diesem Fall muss stattdessen der Inhalt von $JLIB nach $CATALINA_BASE/lib kopiert werden.

Ausfuehren

Zum Ausfuehren wird die Datei file-cms.war in den Ordner $CATALINA_BASE/webapps von Tomcat gelegt. Der Aufruf erfolgt anschliessend mit dem URL https://example.com/file-cms/ui2. Nutzer muessen die Rolle ownFileAdmin besitzen um die Webanwendung verwenden zu koennen.

Die Ausfuehrung gelingt in der hier beschriebenen Konfiguration auch ohne die WebBox auf einem Tomcat, wie er ab Werk ausgestattet ist. Die folgenden Einstellungen muessen in diesem Fall von Hand an Tomcat vorgenommen werden:

  • SingleSignOn Valve in $CATALINA_BASE/conf/server.xml einschalten
  • Parameter fuer den Ablageort uebergeben (Angabe fuer wbx.data wie weiter oben erwaehnt)
  • data.xml und home.xml in $CATALINA_BASE/conf/Catalina/localhost anlegen wie in folgendem Beispiel
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/data" docBase="${wbx.data}/www/">
</Context>

Das file-cms legt beim ersten Start die Verzeichnisse www und home in dem Verzeichnis an, das mit wbx.data angegeben wurde (siehe weiter oben). Wenn beispielsweise der Ablageort /media/rdata/cms als wbx.data angegeben wurde ist der Eintrag fuer docBase in data.xml /media/rdata/cms/www und in home.xml /media/rdata/cms/home.

Lizenz

Die Dateiverwaltung wird zu den Bedingungen der GNU Affero General Public License bereitgestellt. Die von der Dateiverwaltung verwendeten Komponenten unterliegen zum Teil anderen Lizenzen. Deren Nutzungsbedingungen sind an den Quellen der Komponenten angegeben.