Überblick

www.f-space.de stellt mehrere selbst entwickelte Webanwendungen bereit. Jede Webanwendung ist in einem Unterverzeichnis (=Anwendungsverzeichnis) abgelegt, z.B.

/ds4
/voidspace
/dsa1
/names

Innerhalb des Anwendungsverzeichnisses sind statische Inhalte, Daten, Scripts und Styles abgelegt.

Daneben gibt es gemeinsam genutzte Scripts und Styles unter:

/lib
/css
/images
/fonts
/webfonts
/php

Jede Webanwendung besteht aus einer Sammlung von einzelnen HTML-Seiten und unterstützt grundsätzlich Mehrsprachigkeit. Dazu basiert jede Seite auf einer konfigurierbaren Vorlage, aus welcher dann statische HTMl-Seiten pro Sprache generiert werden.

Es gibt einen dezidierten Backend-Server mit einer Datenbank und diversen anderen Services, z.B. zur Erstellung von PDF-Dateien. Dieser ist über www.f-space.de geproxied. Hier sind auch die Übersetzungstabellen gespeichert, z.b. https://www.f-space.de/php/slayerspit.php?/api/v1/languages/DE

Seitenkonfiguration und Generierung

Die Konfiguration aller Seiten einer Webanwendung ist im Anwendungsverzeichnis hinterlegt:

config.php  // Basiskonfig
pages.php   // Liste aller Seiten

In der Basiskonfiguration sind die grundlegenden seitenübergreifenden Eigenschaften der Webanwendung hinterlegt, sowie die unterstützen Sprachen. Desweiteren werden die Vorlagen für die allgemeine DOM-Struktur in template, header-common, navigation, sidebar-common und footer angegeben.

In pages.php wird die individuelle Konfiguration der einzelnen Seiten vorgenommen und Vorlagen überschrieben, z.B.

$page = Page::directoryBased("tools-sicoweapons.html", "tools/sicoweapons", ["sidebar" => "tools/sidebar.xml"]);
$page->addKeyword("tool");
$page->addKeyword("werkzeug");
$page->addKeyword("generator");
$page->addKeyword("waffe");
$page->addKeyword("sico");
$page->addScript("tools/common/pdf.js");
$page->addScript("tools/sicoweapons/main.js");
$app->register_page($page)

directoryBased wird nachher die Seite tools-sicoweapons.html aus den Inhalten des Verzeichnisses tools/sicoweapons unter Berücksichtigung der seitenübergreifenden Konfiguration generieren. Im Verzeichnis Verzeichnisses tools/sicoweapons müssen nur noch zwei Fragmente abgelegt werden, z.B.

tools/sicoweapon/header.xml // Die Seitenüberschrift
tools/sicoweapon/content.xml // Der echte Inhalt
tools/sicoweapon/main.js // seitenspezifische Fachlogik

Der Generierungsprozess wird mit

php pages.php

gestartet und erstellt für jede Seite mehrere Dateien, z.B.

generated_pages/DE/tools-sicoweapons.html
generated_pages/EN/tools-sicoweapons.html
generated_pages/FR/tools-sicoweapons.html
tools-sicoweapons.html

Die Landingpage tools-sicoweapons.html behinhaltet nur ein kleines PHP-Skirpt welches je nach Spracheinstellung des Nutzers den eigentlichen Inhalt ausliefert. Damit das funktioniert, muss der Apache auch HTML-Seiten durch den PHP-Prozessor verarbeiten, vgl. Apache.

Der Generierungsprozess greift ebenfalls auf die Übersetzungstabellen im Backend zu.

Nach jeder Änderungen der Seiteninhalte wie content.xml müssen die Seiten neu generiert werden, damit die Änderungen im Browser anzeigt werden. Es ist hilfreich, den Browsercache zu deaktivieren oder die Seiten mit CRTL+F5 neu zu laden.

Entwicklungsumgebung

Die Entwicklung und Testen findet auf deinem lokalen System statt. Ich nutze Ubuntu 18.04 als Betriebssystem, andere Linuxsysteme gehen bestimmt auch. Die Einrichtung der Entwicklungsumgebung muss dann entsprechend angepasst werden. Als IDE verwende ich Eclipse.

Grundsätzlich wird benötigt:

svn
apache2
perl
php 7.0 oder neuer
less
bash

SVN-Repository

Alle Inhalte und Webanwendungen von www.f-space.de sind in einem SVN-Repository abgelegt. Das SVN-Repository kann in den Workspace ausgecheckt werden mit:

svn co https://www.f-space.de/svn/sfschne/trunk/web/www

PHP

Zur Generierung der Seiteninhalte via der Kommandozeile müssen die PHP-Skripte in den include_path von PHP aufgenommen werden. Der PHP-Prozessor des Webservers muss den Pfad ebenfalls kennen. Auf Ubuntu wird dazu die Datei 20-local.ini mit beispielhaftem Inhalt erstellt:

include_path = ".:/usr/share/php:/usr/share/pear:/home/venture/workspace/web/www/php"

und in der Konfiguration abgelegt, z.B.

/etc/php/7.0/apache2/conf.d/20-local.ini
/etc/php/7.0/cli/conf.d/20-local.ini
/etc/php/7.0/mods-available/20-local.ini

LESS

Als Style-Prozessor zur Generierungszeit der Seiten wird lessc benötigt.

TODO

Apache

Der Apache muss die Landingpages der Webanwendungen durch einen PHP-Prozessor schicken. Die Konfiguration dazu wird in /etc/apache2/sites-enabled/000-default.conf vorgenommen, z.B.

# Send all html files through php
<Directory /var/www/html/f-space/ds4>
    <FilesMatch ".+\.html$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</Directory>

Diese Einstellung muss für jede Webanwendung vorgenommen werden.

Anschließend müssen die Webanwendungen und die gemeinsamen Verzeichnisse im Webroot des Servers (hier `/var/www/html) verfügbar gemacht werden. Ich verlinke dazu die Verzeichnisse aus meinem Workspace, z.B.

ln -s $workspace/www /var/www/html/f-space
ln -s $workspace/www/cgi-bin /var/www/html/
ln -s $workspace/www/css /var/www/html/
ln -s $workspace/www/data /var/www/html/
ln -s $workspace/www/fonts /var/www/html/
ln -s $workspace/www/images /var/www/html/
ln -s $workspace/www/php /var/www/html/
ln -s $workspace/www/webfonts /var/www/html/

Die Webanwendung sollten danach über z.B. http://localhost/f-space/ds4 erreichbar sein.

Eclipse

Das default encoding für Text, CSV und XML muss auf UTF-8 eingestellt werden.