Skip to content

Ein alternatives Ratsinformationssystem mit E-Mail-Benachrichtigungen, Volltextsuche und vielem mehr.

License

Notifications You must be signed in to change notification settings

codeformunich/muenchen-transparent

Repository files navigation

München Transparent ist ein alternatives Ratsinformationssystem (RIS) für München mit einer modernen Oberfläche, E-Mail-Benachrichtigungen, Volltextsuche, Geodaten, Erklärtexten und vielem mehr.

Setup

Vorausgesetzt werden nginx mit PHP >= 8.0 und MySQL/MariaDB sowie npm und composer.

Berechtigungen setzen und Abhängigkeiten installieren: (www-data muss durch den passenden Nutzer ersetzt werden, bei MacOSX ist das z.B. _www )

chown -R www-data:www-data protected/runtime
cp protected/config/main-production.template.php protected/config/main-production.php

Abhängigkeiten installieren und minimiertes javascript und css erzeugen:

npm install
composer install
npx gulp

nginx

  • Der gewählte server_name muss in protected/config/main-production.php als SITE_BASE_URL eingetragen werden.
  • root muss auf den html/-Ordner zeigen.
  • $yii_bootstrap muss auf index.php gesetzt werden.
  • Die Einstellungen aus nginx-minimal.conf müssen übernommen werden, entweder durch ein include oder mit copy&paste.
  • Zwei erweiterte Beispiele einer vollständigen Konfiguration finden sich in nginx-full.conf und nginx-travis.conf.

MariaDB/MySQL

  • Eine Datenbank und einen zugehörigen Nutzer anlegen.
  • Die Datenbank-Konfiguration muss dann in protected/config/main-production.php eingetragen werden. Im Beispiel werden die Datenbank "muenchen_transparent", der Benutzer "ris" und das Passwort "sec" verwendet:
'db' => [
    'connectionString'      => 'mysql:host=127.0.0.1;dbname=muenchen_transparent',
    'emulatePrepare'        => true,
    'username'              => 'ris',
    'password'              => 'sec',
    'charset'               => 'utf8mb4',
    'queryCacheID'          => 'apcCache',
    'schemaCachingDuration' => 3600,
],
  • Schema, Beispieldaten in die Datenbank und (optional) Statistiken importieren:
cat docs/schema.sql docs/beispieldaten.sql docs/triggers.sql | mysql -u ris -psec muenchen_transparent
protected/yiic importstatistik

PHP

  • Die Option "short_open_tag" muss auf "On" gestellt sein.
  • Das Modul für curl muss installiert sein (php8-curl)

Solr

  • Solr 5.5.1 herunterladen und in einen Ordner mit dem Namen solr entpacken.
  • docs/solr-core nach solr/server/solr/muenchen-transparent/ kopieren.
  • solr kann dann mit solr/bin/solr start gestartet werden.

OParl

Zum Zugriff auf die Daten gibt es eine OParl-Schnittstelle. Damit die API funktioniert, muss OPARL_10_ROOT in main-production.php auf den gewünschten Wert gesetzt werden. Genauere Hinweise zur Implementierung finden sich in oparl.md.

Tests

Als Testframework wird codeception verwendet.

Zum lokalen Ausführen der Test muss ein 2. Server-Block in der nginx-Konfiguration angelegt werden. Dieser unterschiedet sich vom normalen Server-Block in drei Punkten:

  • server_name muss localhost sein.
  • listen muss auf 8080 gesetzt werden.
  • $yii_bootstrap muss auf index_codeception.php gesetzt werden.

Des weiteren muss eine Datenbank mit dem Namen mt-test angelegt werden, auf ein ebenfalls anzulegender Nutzer mit dem Benutzernamen travis und keinem Passwort zugriff hat.Das importieren der Testdaten erfolgt mit

cat docs/schema.sql tests/_data/data.sql docs/triggers.sql | mysql -utravis mt-test

Die Tests können dann mit

vendor/bin/codeception run

ausgeführt werden.

Sollten die Testdaten verändert worden sein, müssen die Änderungen mit

docs/export-testing-db.sh

gespeichert werden.

Es ist zu beachten, dass die Tests durch PhpBrowser und nicht durch selenium ausgeführt werden. Deshalb können keine auf javascript basierenden Funktionen getestet werden.

Code-Organisation

  • docs/: Das Datenbankschema, die Konfiguration für nginx, solr, Fontello, travis, etc.
  • html/: Statische Daten - vor allem die JS-Bibliotheken und (S)CSS-Dateien
  • protected/yiic.php: Aufruf der Kommandozeilentools (entweder von der Shell wie z.B. "reindex_ba" oder als Cron-Job wie z.B. "update_ris_daily")
  • protected/commands/: Definitionen der Kommantozeilentools
  • protected/components/: Diverse (meist statische) Hilf-Funktionen
  • protected/config/: Die Konfiguration. Insbesondere das Mapping der URLs auf die Controller-Funktionen und die Pfade der Kommandozeilenanwendungen.
  • protected/RISParser/: Die Parser für das Scraping.
  • protected/models/: Model
  • protected/controllers/: Controller
  • protected/views/: View

Weitere Dokumentation

pdf.js Updaten:

  • Neuste Pre-built Version von pdf.js herunterladen und in html/pdfjs entpacken
  • docs/pdfjs.patch oder docs/pdfjs.diff darauf anwenden

Eingesetzte Shell-Programme

  • Tesseract für das automatische OCR. Wegen der besseren Erkennungsqualität kommt noch etwa 1-2mal montatlich eine zweite, manuelle OCR-Phase hinzu, basierend auf Nuance Omnipage.
  • Imagemagick zur Vorbereitung des OCRs.
  • Solr für die Volltextsuche.
  • PDFbox zur Text-Extraktion aus den PDFs.

Eingesetzte PHP-Bibliotheken

Eingesetzte JS/CSS-Bibliotheken

About

Ein alternatives Ratsinformationssystem mit E-Mail-Benachrichtigungen, Volltextsuche und vielem mehr.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published