Dateiverwaltung für die WebBox
ulrich
2021-06-27 a11da2ba20fe2452e7db1395179c54d15e45934e
commit | author | age
798463 1 # Dateiverwaltung
U 2
4a354d 3 Eine Webanwendung zur Bearbeitung und Verwaltung von Dateien für die [WebBox](/data/ulrich/prg/webbox).  
798463 4
U 5 ## Funktionen
6
65ca7a 7 Die Dateiverwaltung besitzt die folgenden Funktionen
798463 8
65ca7a 9 - Persönliches und öffentliches Verzeichnis je Benutzer
680ec1 10 - Auflisten von Verzeichnissen und ihrer Inhalte
U 11 - Ansehen der Datei-Inhalte
12 - Erstellen und Bearbeiten von Texten und Dokumenten
65ca7a 13 - Dateien und Ordner kopieren, verschieben und löschen
680ec1 14 - Hochladen per Drag and Drop direkt in Ordner
U 15 - Listen- und Kachelansicht
798463 16
ebc1f3 17 Die Bedienoberfläche passt sich an verschiedene Geräteausstattungen an (responsiv).
798463 18
94179c 19 ### Konfiguration
U 20
e5c5b5 21 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.
94179c 22
U 23 #### Automatische Ermittlung des Ablageortes
24
e5c5b5 25 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.
ebc1f3 26
e5c5b5 27 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`. 
94179c 28
798463 29 ## Webanwendung herstellen
U 30
1ac489 31 Zum Herstellen der Webanwendung wird ein Java Development Kit (JDK) benötigt, wie es z.B. von [Azul](http://azul.com) oder dem [OpenJDK-Projekt](http://openjdk.java.net/) frei erhältlich ist. In der hier folgenden weiteren Beschreibung wird der lokale Ablageort des Java Development Kits `$JDK` genannt.
798463 32
U 33 Desweiteren werden die folgenden Klassenbibliotheken benötigt
34
35 ```
36 Bibliothek            Datei(en)                       Ablageort lokal
37 ----------            ---------                       ---------------
38 Commons Fileupload .. commons-fileupload-1.3.2.jar .. $JLIB
39 Commons IO .......... commons-io-2.5.jar ............ $JLIB
40 Tomcat .............. lib/servlet-api.jar ........... $CATALINA_HOME
41 XStream ............. xstream-1.4.7.jar ............. $JLIB
42 Jettison ............ jettison-1.3.3.jar ............ $JLIB
6720b6 43 Thumbnailator ....... thumbnailator.jar ............. $CATALINA_BASE
U 44 wbx-lib ............. wbx-lib.jar ................... $CATALINA_BASE
798463 45 Transit ............. Transit.jar ................... $JLIB
U 46 ```
47 Diese sind an folgenden Orten frei erhältlich:
48
49 - [Apache Commons](http://commons.apache.org)
50 - [Apache Tomcat](http://tomcat.apache.org)
51 - [XStream](https://github.com/codehaus/xstream)
52 - [Jettison](https://github.com/codehaus/jettison)
6720b6 53 - [Thumbnailator](https://github.com/coobird/thumbnailator)
2d4415 54 - [Transit](/gitblit/docs/Transit.git)
6720b6 55 - [wbx-lib](/gitblit/docs/wbx-lib.git)
798463 56
a4f417 57 Ferner erfordert die Dateiverwaltung die folgenden Javascript-Bibliotheken und Schriftarten:
914c98 58
U 59 ```
60 $JSLIB/jquery ............... mindestens in Version 3.2.1
61 $JSLIB/mustache ............. mindestens in Version 2.3.0
62 $JSLIB/codemirror ........... mindestens in Version 5.24.2
63 $JSLIB/tinymce .............. mindestens in Version 4.3.4
64 $JSLIB/fancybox ............. mindestens in Version 3
83fbc4 65 $JSLIB/lightbox ............. mindestens in Version 2.7.1
U 66 $JSLIB/highlight-adoc ....... mindestens in Version 9.18.1
914c98 67 $JSLIB/moment ............... mindestens in Version 2.8.1
U 68 $JSLIB/numeral .............. mindestens in Version 2.0.6
a4f417 69 $FONTS/Roboto_Condensed ..... Version beliebig
914c98 70 ```
U 71
72 Nachfolgend die Quellen, von denen die obigen Abhängigkeiten bezogen werden können:
73
74 - [jQuery](http://jquery.com)
75 - [Mustache](https://github.com/janl/mustache.js)
76 - [Codemirror](https://codemirror.net)
77 - [TinyMCE](https://tinymce.com)
78 - [Fancybox](http://fancyapps.com/fancybox/3/)
79 - [Lightbox](https://lokeshdhakar.com/projects/lightbox2/)
83fbc4 80 - [highlight.js](https://highlightjs.org/download/)
914c98 81 - [Moment](http://momentjs.com/)
U 82 - [Numeral](http://numeraljs.com/)
a4f417 83 - [RobotoCondensed](https://fonts.google.com/specimen/Roboto+Condensed)
914c98 84
a4f417 85 Nach Beschaffung des JDK und der oben angegebenen Bibliotheken wird der Quellcode aus diesem Git-Repository an einen frei wählbaren lokalen Ablageort [heruntergeladen](http://uhilger.de/gitblit/zip/?r=file-cms.git&h=master&format=zip) 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 und Schriftarten lokal an Orten abgelegt sind, deren Pfade mit den Platzhaltern `$JLIB`, `$FONTS` und `$JSLIB` gemeint sind. Anstelle der Platzhalter in den folgenden Kommandos muss also der absolute Pfad des lokalen Ablageortes eingesetzt werden.
798463 86
1ac489 87 Zur Herstellung der Dateiverwaltung werden die folgenden Kommandos ausgeführt (Beispiel für Linux):
798463 88
U 89 ```
90 cd $FILE-CMS
91 mkdir dist
92 mkdir build
93 cp -r web/* build
94 cd build/WEB-INF
95 mkdir classes
96 mkdir lib
914c98 97 cd ..
U 98 mkdir jslib
a4f417 99 mkdir fonts
914c98 100 cd ..
798463 101 cp $JLIB/* build/WEB-INF/lib
914c98 102 cp -r $JSLIB/* build/jslib
a4f417 103 cp -r $FONTS/* build/fonts
798463 104
6720b6 105 $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
798463 106
30a32f 107 cp src/java/logging.properties build/WEB-INF/classes
798463 108 $JDK/bin/jar -cf dist/file-cms.war -C build .
U 109 rm -r build
110 ```
111
112 Das Webarchiv der Dateiverwaltung liegt anschließend als `$FILE-CMS/dist/file-cms.war` fertig zum Deployment bereit.
113
8d15c3 114 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.
6720b6 115
798463 116 ### Distributionsalternative
U 117
118 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.
85053f 119
d7076e 120 ## Ausfuehren
U 121
e5c5b5 122 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. 
4e8bf3 123
U 124 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:
125
126 - SingleSignOn Valve in `$CATALINA_BASE/conf/server.xml` einschalten
e5c5b5 127 - Parameter fuer den Ablageort uebergeben (Angabe fuer `wbx.data` wie weiter oben erwaehnt)
4e8bf3 128 - `data.xml` und `home.xml` in `$CATALINA_BASE/conf/Catalina/localhost` anlegen wie in folgendem Beispiel
U 129
130 ```
131 <?xml version="1.0" encoding="UTF-8"?>
e5c5b5 132 <Context path="/data" docBase="${wbx.data}/www/">
4e8bf3 133 </Context>
U 134 ```
135
e5c5b5 136 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`.
d7076e 137
85053f 138 ## Lizenz
U 139
8d15c3 140 Die Dateiverwaltung wird zu den Bedingungen der [GNU Affero General Public License](/gitblit/doc/file-cms.git/master/web!agpl.txt) bereitgestellt. Die von der Dateiverwaltung verwendeten Komponenten unterliegen zum Teil anderen Lizenzen. Deren Nutzungsbedingungen sind an den Quellen der Komponenten angegeben.
05e9c4 141