BW:Arbeitsgruppen/Web/Wikieinbindung

Aus Piratenwiki
Wechseln zu: Navigation, Suche

Das Projekt Wikieinbindung hat das Ziel, eine Webapplikation zu erstellen, mit welche bestimmte Seitenteile des Piratenwikis für andere Websites bereitstellt.

Ausgangsbasis

  • Piraten haben eine sehr große Anzahl an lokalen Webauftritten, welche verschiedene Informationen für Besucher in ansprechenderer Form darstellen, als es das Piratenwiki in endlichem Aufwand vermag.
  • Das Piratenwiki ist die Wissensbasis der Piraten in Deutschland. Hier kann deutschlandweit nach Informationen verschiedenster Gliederungen gesucht werden.
  • Bisher wird die Synchronisation der Inhalte des Piratenwikis und der jeweiligen lokalen Website in der Regel durch fleißige Helfer manuell abgeglichen. Dies bindet unnötige Arbeitskraft und verringert potentiell den für die Bürger sichtbare Präsenz an Piraten bei Veranstaltungen. Die aktiven Piraten werden mit Housekeeping gebunden.
  • Carsten Lenz hat die Subdomain http://api.piratenpartei-bw.de auf den LV-Server umleiten lassen. Wir können also dort fröhlich Funktionalitäten bereitstellen.

Anforderungen

  • Sämtliche Daten müssen automatisiert aus den Wikiseiten extrahiert werden, um die Pflege der Daten an einer einzigen Stelle stattfinden zu lassen.
  • Fehlende oder schädliche Seiteninhalte dürfen keine Fehler erzeugen und die Applikation nicht beeinträchtigen.
  • Ein Ausfall des Piratenwikis darf die Funktionstüchtigkeit der Applikation zeitlich unbegrenzt nicht beeinflussen. Die Inhalte seit dem letzten Abruf müssen stets zur Verfügung stehen.

Idee

Wir versehen das API mit einer Funktion, welche keinerlei administrativen Aufwand erfordert und jedem Nutzer die Möglichkeit gibt, einen Wikiseitenteil in eine andere Website einzubinden.

Beispielsweise existiere die Funktion wiki. http://api.piratenpartei-bw.de/wiki/name:WIKISEITENNAME/id:DIVID

Weiter existiere beispielsweise das folgende Datenmodell.

Seitenname Inhalts-ID Inhalt letzter Zugriff letzte Aktualisierung erstellt am
beinhaltet der Wikiseitenname, aus welchem der Inhalt stammt beinhaltet die ID des div-Elements, dessen Inhalt ausgelesen werden soll beinhaltet des ausgelesenen Inhalt führt, wann der letzte Zugriff auf den Inhalt erfolgte führt, wann der Inhalt das letzte mal aktualisiert wurde führt, wann dieser Eintrag erstellt wurde

Benutzersicht

  1. Der betreffende Inhaltsteil wird in der Wikiseite einfach identifizierbar gemacht, indem er in ein div-Element mit einer selbstwählbaren ID eingebettet wird. Dies kann direkt über div-Tags oder die Vorlage did gelöst werden.
  2. In der lokalen Website wird dieser Inhaltsteil per HTML-Iframe, PHP-file_get_content, Javascript-XHR usw. eingebunden.

Entwicklersicht

Anfrage

Folgende Anfrage kann von überall her eingehen.

  1. Der Inhalt eines div-Elements wird angefragt.
  2. Es wird geprüft, ob die Kombination Wikiseitenname + div-ID bereits im Datenbestand ist.
    1. Die betreffende Seite wird vom Piratenwiki abgefragt.
    2. Der Inhalt des betreffenden div-Elements wird extrahiert und alles als neuer Datensatz gespeichert.
  3. Der extrahierte Inhalt wird ausgeliefert.
Seitenname Inhalts-ID Inhalt letzter Zugriff letzte Aktualisierung erstellt am
Erstanfrage = aus Anfrage = aus Anfrage = aus Wiki = jetzt = jetzt + 1h = jetzt
Folgeanfrage Identifizierung (Match) Identifizierung (Match) wird ausgeliefert = jetzt unverändert unverändert

Aktualisierung

Die folgende Aktualisierung wird periodisch z.B. alle fünf Minuten von einem CRON-Job ausgeführt.

  1. Es wird geprüft, welche Datensätze das letzte mal vor fünf Tagen abgefragt wurden und diese werden gelöscht.
  2. Es wird geprüft, welche Datensätze älter als eine Stunde sind und diese werden mithilfe des Piratenwikis aktualisiert.

Wenn das Piratenwiki gerade nicht verfügbar ist, bleibt der Inhalt bestehen und der nächste Aktualisierungsversuch findet in einer Stunde statt.

Seitenname Inhalts-ID Inhalt letzter Zugriff letzte Aktualisierung erstellt am
Löschen - - - Identifizierung (älter fünf Tage) - -
Aktualisierung für Anfrage für Anfrage = aus Wiki unverändert Identifizierung (älter eine Stunde) unverändert

Technologien

  • Integration über URLs
  • Housekeeping mittels Alterung

Umsetzung

Dieses Projekt befindet sich in der Entwicklung. Dokumentation, Quellcode, Meilenstein- und Issuetracking,... sind auf github zu finden.

Landesverband Baden-Württemberg Logo.png

Übersicht der Arbeitsgruppen auf Landesebene bearbeiten