Ratsinformantionssystem für München
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 17 commits behind codeformunich:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
html
protected
tests
.codeclimate.yml
.editorconfig
.gitattributes
.gitignore
.travis.yml
AUTHORS
LICENSE
README.md
codeception.yml
composer.json
composer.lock
gulpfile.js
package-lock.json
package.json

README.md

München Transparent

Build Status Code Climate Dependency Status

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 >= 7.1 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 -g bower gulp-cli
npm install
composer install
bower install
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 (php5-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