Dateiverwaltung für die WebBox
ulrich
2021-01-11 6648a811dfdb4cbe432dae59f373b5a9df28e513
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
0eeb83 17 Die Bedienoberfläche passt sich an verschiedene Geräteausstattungen an (responsiv). Weitere Informationen zur Dateiverwaltung finden sich auf der [Produktseite](/data/ulrich/prg/file-cms).
798463 18
94179c 19 ### Konfiguration
U 20
b12c95 21 Die Dateiverwaltung erhält den Ablageort von Dateien über den JNDI-Eintrag
U 22
23 ````
24 <Environment  
25   name="wbxFileBase"
26   type="java.lang.String"
27   value="/pfad/zu/den/daten"
28   override="false"
29 />
30 ````
31
32 Wenn die Angabe `wbxFileBase` wie oben als JNDI-Parameter angegeben wird, kann sie beispielsweise in der Datei `$CATALINA_BASE/context.xml` hinterlegt werden.
94179c 33
U 34 #### Automatische Ermittlung des Ablageortes
35
b12c95 36 Ist die Angabe `wbxFileBase` nicht zu finden oder leer, wird der Ablageort `../../../daten` ausgehend von `$CATALINA_BASE/webapps` verwendet. Wenn also z.B. das webapps-Verzeichnis in `/usr/local/tomcat/webapps` liegt, dann wird das Datenverzeichnis der Dateiablage in `/usr/daten` vermutet. Liegt es stattdessen in `/media/extmirror/srv/wbx/sys/base/webapps` dann lautet der Datenpfad `/media/extmirror/srv/wbx/daten`.
94179c 37
798463 38 ## Webanwendung herstellen
U 39
1ac489 40 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 41
U 42 Desweiteren werden die folgenden Klassenbibliotheken benötigt
43
44 ```
45 Bibliothek            Datei(en)                       Ablageort lokal
46 ----------            ---------                       ---------------
47 Commons Fileupload .. commons-fileupload-1.3.2.jar .. $JLIB
48 Commons IO .......... commons-io-2.5.jar ............ $JLIB
49 Tomcat .............. lib/servlet-api.jar ........... $CATALINA_HOME
50 XStream ............. xstream-1.4.7.jar ............. $JLIB
51 Jettison ............ jettison-1.3.3.jar ............ $JLIB
6720b6 52 Thumbnailator ....... thumbnailator.jar ............. $CATALINA_BASE
U 53 wbx-lib ............. wbx-lib.jar ................... $CATALINA_BASE
798463 54 Transit ............. Transit.jar ................... $JLIB
U 55 ```
56 Diese sind an folgenden Orten frei erhältlich:
57
58 - [Apache Commons](http://commons.apache.org)
59 - [Apache Tomcat](http://tomcat.apache.org)
60 - [XStream](https://github.com/codehaus/xstream)
61 - [Jettison](https://github.com/codehaus/jettison)
6720b6 62 - [Thumbnailator](https://github.com/coobird/thumbnailator)
2d4415 63 - [Transit](/gitblit/docs/Transit.git)
6720b6 64 - [wbx-lib](/gitblit/docs/wbx-lib.git)
798463 65
1197b5 66 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 67
1ac489 68 Zur Herstellung der Dateiverwaltung werden die folgenden Kommandos ausgeführt (Beispiel für Linux):
798463 69
U 70 ```
71 cd $FILE-CMS
72 mkdir dist
73 mkdir build
74 cp -r web/* build
75 cd build/WEB-INF
76 mkdir classes
77 mkdir lib
78 cd ../..
79 cp $JLIB/* build/WEB-INF/lib
80
6720b6 81 $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 82
30a32f 83 cp src/java/logging.properties build/WEB-INF/classes
798463 84 $JDK/bin/jar -cf dist/file-cms.war -C build .
U 85 rm -r build
86 ```
87
88 Das Webarchiv der Dateiverwaltung liegt anschließend als `$FILE-CMS/dist/file-cms.war` fertig zum Deployment bereit.
89
8d15c3 90 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 91
798463 92 ### Distributionsalternative
U 93
94 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.
95
96 ## Abhängigkeiten
97
98 Die Dateiverwaltung erfordert die folgenden Bestandteile auf der Instanz von Tomcat, auf der sie ausgeführt werden soll:
99
100 ```
101 $CATALINA_BASE/webapps/jslib/bootstrap ............ mindestens in Version 4.0 alpha 6
4d16ad 102 $CATALINA_BASE/webapps/jslib/jquery ............... mindestens in Version 3.2.1
798463 103 $CATALINA_BASE/webapps/jslib/mustache ............. mindestens in Version 2.3.0
U 104 $CATALINA_BASE/webapps/jslib/font-awesome ......... mindestens in Version 4.4.0
105 $CATALINA_BASE/webapps/jslib/codemirror ........... mindestens in Version 5.24.2
680ec1 106 $CATALINA_BASE/webapps/jslib/tinymce .............. mindestens in Version 4.3.4
a5c558 107 $CATALINA_BASE/webapps/jslib/fancybox ............. mindestens in Version 3
c5eaaa 108 $CATALINA_BASE/webapps/jslib/moment ............... mindestens in Version 2.8.1
U 109 $CATALINA_BASE/webapps/jslib/numeral .............. mindestens in Version 2.0.6
798463 110 ```
U 111
112 `$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:
113
114 - [Bootstrap](http://getbootstrap.com)
115 - [jQuery](http://jquery.com)
116 - [Mustache](https://github.com/janl/mustache.js)
117 - [Font Awesome](http://fontawesome.io/)
85053f 118 - [Codemirror](https://codemirror.net)
680ec1 119 - [TinyMCE](https://tinymce.com)
a5c558 120 - [Fancybox](http://fancyapps.com/fancybox/3/)
c5eaaa 121 - [Moment](http://momentjs.com/)
U 122 - [Numeral](http://numeraljs.com/)
85053f 123
d7076e 124 ## Ausfuehren
U 125
4e8bf3 126 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 127
128 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:
129
130 - SingleSignOn Valve in `$CATALINA_BASE/conf/server.xml` einschalten
131 - Environment-Variable fuer den Ablageort in `$CATALINA_BASE/conf/context.xml` anlegen (Angabe fuer `wbxFileBase` wie weiter oben erwaehnt)
132 - `data.xml` und `home.xml` in `$CATALINA_BASE/conf/Catalina/localhost` anlegen wie in folgendem Beispiel
133
134 ```
135 <?xml version="1.0" encoding="UTF-8"?>
136 <Context path="/data" docBase="/pfad/zum/ablageort">
137 </Context>
138 ```
139
140 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 141
85053f 142 ## Lizenz
U 143
8d15c3 144 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 145
U 146 ## ui2 Prototyp
147
148 Versuch einer neuen Bedienoberfläche basierend auf `app-vorlage` und `app-menu`
149
150 ### Änderungen gegenüber der Bedienoberfläche des file-cms
151
152 - kein Bootstrap mehr
153 - kein jQuery mehr (allerdings benötigt Fancybox jQuery -> evtl. in separate .html-Datei auslagern)
154 - 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)
155