(aktualisiert 2013-11-24 für Version 0.9.9)

Technische Details

Verzeichnisstruktur

Typischerweise liegt tabula.info auf einem Linuxrechner unter /opt/tabula.info

Darunter ist die Verzeichnisstruktur fest vorgegeben:

/opt
 +----tabula.info           das gesamte System inkl. Konfiguration, Daten und Software
      |                      dieser Verzeichnisname wird automatisch erkannt (Parallelinstallationen sind möglich)
      |                      Alle Unterverzeichnisse müssen die angegebene Struktur haben!
      +----cgi-bin               die Python-Skripte
           +----__pycache__           deren kompilierte Versionen
           +----data                  Daten der Kernkomponenten inkl. Konfiguration
           +----logs                  Log-Dateien
           +----scripts               Shell-Skripte, die per cron ausgeführt werden
                +----tmp                   Platz für temporäre Dateien der Shell-Skripte
      +----doku                  Dokumentation, primär Kopie der Website ohne Downloadverzeichnis
      +----dyn                   im Browser anzeigbare Dateien die von Skripten erzeugt wurden; per HTTP erreichbar
      +----static                Statische Inhalte wie Icons, CSS-Dateien usw. von tabula.info
      +----local                 Nicht von tabula.info verwaltete Inhalte (Kundenspezifisch, z.B. zusätzliche ti.css)

Die eigentliche tabula.info-Funktionalität wird von den Python-Skripten per CGI-Aufruf erzeugt. Die Shellskripte machen Hilfstätigkeiten wie Up- und Downloads, PDF-in-PNG-Konvertierungen usw.. Sie werden durch cron-Aufrufe gestartet und dürfen gerade nicht per HTTP aufgerufen werden. Dies ist in der Apache-Konfiguration zu berücksichtigen (siehe dort). Die Skripte machen z.B. Downloads in ihr tmp-Verzeichnis und konvertieren dann in eine Datei, welche in dyn abgelegt wird.

Erweiterung

Um tabula.info zu erweitern kann man derzeit nur ein anderes Schedule-Modul (zur Anzeige eines Vertretungsplans) einbinden. Dies geschieht für die abc-Schule am besten durch:

Dabei muss s_abc.py ein Objekt der Klasse s_selection.ScheduleInterface implementieren und per Funktion get_interface() übergeben. Als Vorlage für eine einfache Lösung sei s_html.py empfohlen. Da bei einer neuen Version von tabula.info auch s_html.py neu ausgeliefert werden kann, empfiehlt es sich eine eigene Kopie anzulegen und NICHT die Originaldatei zu verändern!

Das Attribute managemenu in dem genannten Objekt enthält mögliche Menüeinträge mit dazugehörigen Links für das Managementinterface. Es ist eine Liste von Wertepaaren (Menüeintrag,Link)

Der Zweck der Bash-Skripte ist, dass periodisch eine Routine aufgerufen werden kann, die z.B. einen Down- bzw. Upload tätigt.

Anmerkung: Für s_pdf sind sowohl der automatische Download (mit Modifikation) per cron, als auch der Upload per Management-Interface realisiert. Man muss also schauen, was man in seiner eigenen Variante benötigt, und nur das aktivieren.

Beispiele:

Einbindung

Auf einem lauffähigen Linuxserver mit installiertem Apache ist tabula.info folgendermaßen einzubinden/zu installieren:

Inzwischen erledigt dies ein Skript; siehe Anleitung

Bugfixing

Sobald man selber etwas an den Quelltexten verändert, kann es natürlich zu weiteren als den von mir zu verantwortenden Fehlern kommen.

Alle CGI-Skripte arbeiten mit aktiviertem cgitb, so dass Pythonfehlermeldungen im Browser angezeigt werden.

Spätestens wenn ein Serverfehler gemeldet wird, empfiehlt es sich das Errorlog des Apache mit

tail -f /var/log/apache2/error.log

mitlaufen zu lassen.

Immer beachten: www-data muss auf alle Dateien unterhalb von /opt/tabula.info Leserechte, in den dyn, tmp und Data-Verzeichnissen auch Schreibrechte haben. Alle sh-, py und pyc-Dateien müssen ausführbar sein.

Logischen Fehlern kommt man auf die Spur, in dem man mit der Funktion ti.debug("Beschreibung",Wert) Debugmeldungen erzeugt, die dann im Errorlog des Apache sowie zusätzlich am Ende des HTML-Quelltextes der angezeigten Seiten als Kommentare auftauchen.


Wer den aktuellen Fortschritt (oder Stillstand) mitverfolgen will, kann bei bitbucket.org nach tabula.dev suchen oder gleich auf das Online-Repository von tabula.info gehen