Dateiverwaltung für die WebBox
ulrich
2021-01-21 8cab6e94514c38151b2e0c53c9df47c6e1682e28
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
ebc1f3 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]`.
94179c 22
U 23 #### Automatische Ermittlung des Ablageortes
24
ebc1f3 25 Ist die Angabe `wbxFileBase` nicht zu finden oder leer, wird der Ablageort `../../../daten` ausgehend von `$CATALINA_BASE/webapps` verwendet. 
U 26
94179c 27
798463 28 ## Webanwendung herstellen
U 29
1ac489 30 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 31
U 32 Desweiteren werden die folgenden Klassenbibliotheken benötigt
33
34 ```
35 Bibliothek            Datei(en)                       Ablageort lokal
36 ----------            ---------                       ---------------
37 Commons Fileupload .. commons-fileupload-1.3.2.jar .. $JLIB
38 Commons IO .......... commons-io-2.5.jar ............ $JLIB
39 Tomcat .............. lib/servlet-api.jar ........... $CATALINA_HOME
40 XStream ............. xstream-1.4.7.jar ............. $JLIB
41 Jettison ............ jettison-1.3.3.jar ............ $JLIB
6720b6 42 Thumbnailator ....... thumbnailator.jar ............. $CATALINA_BASE
U 43 wbx-lib ............. wbx-lib.jar ................... $CATALINA_BASE
798463 44 Transit ............. Transit.jar ................... $JLIB
U 45 ```
46 Diese sind an folgenden Orten frei erhältlich:
47
48 - [Apache Commons](http://commons.apache.org)
49 - [Apache Tomcat](http://tomcat.apache.org)
50 - [XStream](https://github.com/codehaus/xstream)
51 - [Jettison](https://github.com/codehaus/jettison)
6720b6 52 - [Thumbnailator](https://github.com/coobird/thumbnailator)
2d4415 53 - [Transit](/gitblit/docs/Transit.git)
6720b6 54 - [wbx-lib](/gitblit/docs/wbx-lib.git)
798463 55
1197b5 56 Nach Beschaffung des JDK und der oben angegebenen Klassenbibliotheken 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 Klassenbibliotheken lokal an Orten abgelegt sind, deren Pfade mit den Platzhaltern `$JLIB` und `$CATALINA_HOME` gemeint sind. Anstelle der Platzhalter in den folgenden Kommandos muss also der absolute Pfad des lokalen Ablageortes eingesetzt werden.
798463 57
1ac489 58 Zur Herstellung der Dateiverwaltung werden die folgenden Kommandos ausgeführt (Beispiel für Linux):
798463 59
U 60 ```
61 cd $FILE-CMS
62 mkdir dist
63 mkdir build
64 cp -r web/* build
65 cd build/WEB-INF
66 mkdir classes
67 mkdir lib
68 cd ../..
69 cp $JLIB/* build/WEB-INF/lib
70
6720b6 71 $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 72
30a32f 73 cp src/java/logging.properties build/WEB-INF/classes
798463 74 $JDK/bin/jar -cf dist/file-cms.war -C build .
U 75 rm -r build
76 ```
77
78 Das Webarchiv der Dateiverwaltung liegt anschließend als `$FILE-CMS/dist/file-cms.war` fertig zum Deployment bereit.
79
8d15c3 80 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 81
798463 82 ### Distributionsalternative
U 83
84 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.
85
86 ## Abhängigkeiten
87
88 Die Dateiverwaltung erfordert die folgenden Bestandteile auf der Instanz von Tomcat, auf der sie ausgeführt werden soll:
89
90 ```
91 $CATALINA_BASE/webapps/jslib/bootstrap ............ mindestens in Version 4.0 alpha 6
4d16ad 92 $CATALINA_BASE/webapps/jslib/jquery ............... mindestens in Version 3.2.1
798463 93 $CATALINA_BASE/webapps/jslib/mustache ............. mindestens in Version 2.3.0
U 94 $CATALINA_BASE/webapps/jslib/font-awesome ......... mindestens in Version 4.4.0
95 $CATALINA_BASE/webapps/jslib/codemirror ........... mindestens in Version 5.24.2
680ec1 96 $CATALINA_BASE/webapps/jslib/tinymce .............. mindestens in Version 4.3.4
a5c558 97 $CATALINA_BASE/webapps/jslib/fancybox ............. mindestens in Version 3
c5eaaa 98 $CATALINA_BASE/webapps/jslib/moment ............... mindestens in Version 2.8.1
U 99 $CATALINA_BASE/webapps/jslib/numeral .............. mindestens in Version 2.0.6
798463 100 ```
U 101
102 `$CATALINA_BASE` meint das in der der Datei [RUNNING.txt](http://tomcat.apache.org/tomcat-8.5-doc/RUNNING.txt) der Tomcat-Dokumentation so bezeichnete Verzeichnis. Nachfolgend die Quellen, von denen die obigen Abhängigkeiten bezogen werden können:
103
104 - [Bootstrap](http://getbootstrap.com)
105 - [jQuery](http://jquery.com)
106 - [Mustache](https://github.com/janl/mustache.js)
107 - [Font Awesome](http://fontawesome.io/)
85053f 108 - [Codemirror](https://codemirror.net)
680ec1 109 - [TinyMCE](https://tinymce.com)
a5c558 110 - [Fancybox](http://fancyapps.com/fancybox/3/)
c5eaaa 111 - [Moment](http://momentjs.com/)
U 112 - [Numeral](http://numeraljs.com/)
85053f 113
d7076e 114 ## Ausfuehren
U 115
4e8bf3 116 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/ui`. Nutzer muessen die Rolle `ownFileAdmin` besitzen um die Webanwendung verwenden zu koennen. 
U 117
118 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:
119
120 - SingleSignOn Valve in `$CATALINA_BASE/conf/server.xml` einschalten
121 - Environment-Variable fuer den Ablageort in `$CATALINA_BASE/conf/context.xml` anlegen (Angabe fuer `wbxFileBase` wie weiter oben erwaehnt)
122 - `data.xml` und `home.xml` in `$CATALINA_BASE/conf/Catalina/localhost` anlegen wie in folgendem Beispiel
123
124 ```
125 <?xml version="1.0" encoding="UTF-8"?>
126 <Context path="/data" docBase="/pfad/zum/ablageort">
127 </Context>
128 ```
129
130 Das `file-cms` legt beim ersten Start die Verzeichnisse www und home in dem Verzeichnis an, das mit `wbxFileBase` angegeben wurde (siehe weiter oben). Wenn beispielsweise der Ablageort `/media/rdata/cms` als `wbxFileBase` angegeben wurde ist der Eintrag fuer `docBase` in `data.xml` `/media/rdata/cms/www` und in `home.xml` `/media/rdata/cms/home`.
d7076e 131
85053f 132 ## Lizenz
U 133
8d15c3 134 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 135
U 136 ## ui2 Prototyp
137
ebc1f3 138 Unter `file-cms/ui2` entsteht eine neue Bedienoberfläche basierend auf `app-vorlage` und `app-menu`
05e9c4 139
U 140 ### Änderungen gegenüber der Bedienoberfläche des file-cms
141
142 - kein Bootstrap mehr
143 - kein jQuery mehr (allerdings benötigt Fancybox jQuery -> evtl. in separate .html-Datei auslagern)
144 - kein FontAwesome mehr, die wenigen benötigtgten Piktogramme sind mit Hilfe von Fontello aus FontAwesome entnommen und in das file-cms-Projekt kopiert (nur wenige KB)
d9906a 145 - alle veraenderlichen HTML-Teile in Mustache Vorlagen ueberfuehrt
U 146 - lazy load fuer Mustache Vorlagen
05e9c4 147