Blog — technische Referenz
Diese Seite beschreibt Auszeichnung, Datenhaltung, Verwaltungsflächen und Schnittstellen des Pakets. Für den Einstieg siehe Überblick, für den ersten Beitrag den Schnelleinstieg.
Der Metadatenblock einer Seite
Eine Seite wird zum Beitrag, indem sie einen <wk:blog>-Block trägt. Der Block rendert nichts; er beschreibt die Seite, auf der er steht, und wandert mit ihr, wenn sie kopiert wird.
| Angabe | Bedeutung | Werte |
|---|---|---|
type | Art des Eintrags | post, page |
format | Textformat des Seiteninhalts | dokuwiki, markdown |
blog | Name des Blogs, zu dem der Beitrag gehört | frei |
status | Veröffentlichungszustand | draft, pending, scheduled, published |
publish | Zeitpunkt der geplanten Veröffentlichung | ISO 8601 |
created | Erstellungszeitpunkt | ISO 8601 |
author | Angezeigter Name der Verfasserin oder des Verfassers | frei |
slug | Kurzname für Verweise | frei |
comments | Kommentarzustand | enabled, closed, disabled |
image | Beitragsbild | Medien-ID |
tags | Schlagwörter, durch Komma getrennt | frei |
Zwei Angaben stehen als Unterelement statt als Attribut, weil sie regelmäßig über mehrere Zeilen laufen: <excerpt> für den Anriss und die beiden Beschreibungen für Suchmaschinen und soziale Netzwerke.
Auflistungen
Die Auszeichnung verlangt ein schließendes Tag; die Angaben stehen je Zeile darin. Eine einzeilige Fassung greift nicht und bleibt Text auf der Seite.
<blog list> blog wk limit 10 tpl wk </blog>
<blog> und <wk:blog> sehen ähnlich aus und tun Gegensätzliches: <blog> listet Beiträge auf, <wk:blog> beschreibt die Seite, auf der es steht. In der Hausform heißt die Auflistung deshalb bloglist.
| Art | Wirkung |
|---|---|
list | Beiträge des Blogs, angerissen |
pagination | Blätterung zur Auflistung derselben Seite |
related | Beiträge mit den meisten gemeinsamen Schlagwörtern |
recentcomments | jüngste Kommentare |
newform | Formular „neuen Beitrag anlegen“ |
tagcloud | Schlagwortwolke |
tagsearch | Trefferliste zu einem Schlagwort |
<blog archive> steht in keiner Auswahlliste des Codes und fällt in den Vorgabezweig: es erzeugt eine gewöhnliche Auflistung und meldet das nicht. Im Seitenbestand dieser Installation wird die Auszeichnung nirgends verwendet.
Vorlagen-Sets
Ein Vorlagen-Set bestimmt das Aussehen einer Auflistung. Mitgeliefert sind default, wk, wkbizway und wkbizwayteaser. Die Angabe tpl in der Auflistung wählt das Set; ohne Angabe gilt default.
Zeitplanung
Ein Beitrag mit status=„scheduled“ und einem publish-Zeitpunkt in der Zukunft bleibt unsichtbar, bis der Zeitpunkt erreicht ist. Die Umschaltung erledigt die Aufräumaufgabe des Wikis: sie schreibt den Zustand in den Block der Seite und erzeugt dabei eine gewöhnliche Revision. Es gibt keinen eigenen Zeitplandienst und keinen Prozess, der dauerhaft läuft — ohne Wiki-Zugriffe rückt auch der Zeitplan nicht vor.
Mehrere Blogs
Blogs unterscheiden sich allein durch den Namen in der Angabe blog. Ein zweiter Blog entsteht dadurch, dass Beiträge einen anderen Namen tragen und eine Auflistung nach diesem Namen fragt. Es gibt keine Blogverwaltung, keine Anlage und keine Löschung; ein Blog existiert genau so lange, wie eine Seite ihn nennt.
Datenhaltung
Die Seite ist die Wahrheit, die Datenbank ist ein daraus ableitbarer Index. Sie liegt in der Datei data/meta/wkblog.sqlite3 und führt die Tabellen entries, comments, tags, subscriptions, optin und opts.
Was ein Reindex wiederherstellt und was er stehen lässt
Ein Reindex baut die Projektion aus den Seiten neu auf. Wiederhergestellt wird alles, was im Block steht: Titel, Zustand, Zeitplan, Blog, Schlagwörter, Anriss. Nicht angetastet wird, was keine Entsprechung auf einer Seite hat: Kommentare, Abonnements, Opt-in-Sätze und der Verteilungsstand. Diese Daten sind Tatsachen über Ereignisse außerhalb des Wikis; ein Reindex kann sie weder herleiten noch zerstören.
Die Seitenkopie in ein anderes Wiki ist ein anderer Fall: dorthin wandert nur die Seite, also nur der Block. Kommentare, Abonnements und Verteilungsstand bleiben zurück.
Verteilungsstand
Sechs nullbare Spalten auf entries halten fest, dass und wann ein Beitrag in einem sozialen Netzwerk geteilt wurde. Eine Redaktion trägt das von Hand ein; es gibt keine automatische Veröffentlichung an ein Netzwerk. Bewusst kein Teil des Blocks: der Verteilungsstand ist keine Autorenangabe der Seite, sondern eine Feststellung über etwas, das außerhalb des Wikis geschehen ist.
Ein Ausfall der Zugriffsfilterung sieht nicht wie ein Fehler aus
Acht Routinen filtern die öffentlichen Listen über die Zugriffsstufe der Seite. Fällt diese Filterung aus — etwa weil die Datenbankfunktionen nach einem Umzug nicht mehr angemeldet werden —, gibt es keine Fehlermeldung. Es erscheinen zu viele Beiträge.
Das ist die unangenehmste Form eines Ausfalls: im Betrieb nicht von Richtigkeit zu unterscheiden. Eine Abnahme, die auf eine Ausnahme wartet, wartet vergeblich.
Eine Installation sollte deshalb dauerhaft vorhalten:
- mindestens einen veröffentlichten Beitrag, der anonym nicht lesbar ist,
- die Sollzahl der anonym sichtbaren Beiträge, vorher festgelegt.
Geprüft wird die öffentliche Liste, nicht die Verwaltungsliste: letztere liegt ohnehin hinter einer Rechteprüfung, und der Ausfall zeigt sich nur dort, wo ein anonymer Besucher zählt. Die Sperre selbst gehört in die Zugriffssteuerung des Wikis und wird nie mit dem Paket ausgeliefert.
Es gibt kein eingebettetes SQL
Der gesamte Datenbankzugriff läuft über benannte Routinen mit gebundenen Parametern. Jede Routine ist ein Dateipaar aus .sql und einem Manifest; der Tabellenname steht dort im Klartext, nicht im PHP-Code. Wer eine Abfrage ändern will, ändert die Routinendatei. Siehe SQLite Data Studio.
Kommentare
Die drei Zustände
enabled— Kommentare sind möglichclosed— vorhandene Kommentare bleiben sichtbar, neue nicht möglichdisabled— es gibt keine Kommentare auf dieser Seite
Ist die Prüfung eingeschaltet, erscheint ein neuer Kommentar zunächst verborgen und wird erst nach Freigabe sichtbar. Der Verwaltungsbildschirm führt die wartenden Kommentare und zeigt ihre Anzahl als Abzeichen in der Werkbank.
Avatare, und was dabei den Server verlässt
Die Vorgabe holt keine Avatare von fremden Servern. Wird ein externer Dienst eingeschaltet, verlässt für jeden angezeigten Kommentar eine Anfrage mit der Prüfsumme der Adresse das Haus. Das ist eine bewusste Entscheidung und keine Voreinstellung.
Verwaltungsbildschirm
Der Bildschirm liegt unter ?do=admin&page=wkblog.
Die Übersicht beantwortet redaktionelle Fragen
Sechs Kennzahlen: Veröffentlicht, Entwürfe, Wartet auf Prüfung, Geplant, Kommentare zur Prüfung und der Stand der SEO-Pflege. Jede Zahl führt in die passend gefilterte Liste.
Die Beitragsliste filtert nach Zustand
Neben Titel und Blog filtert die Liste nach dem Veröffentlichungszustand. Der Filter bleibt beim Blättern erhalten.
Sammelaktionen ändern die Seite, nicht den Index
Status, Blog und Kommentarzustand stehen im Block der Seite. Eine Sammelaktion darauf schreibt deshalb die Seite über den gewöhnlichen Speicherweg: sie prüft die Berechtigung, beachtet die Bearbeitungssperre und erzeugt eine echte Revision. Erst danach wird der Index aufgefrischt. Wird ein Beitrag übersprungen, nennt die Meldung den Grund getrennt — wird gerade bearbeitet, keine Berechtigung, Seite existiert nicht mehr —, weil erst der Grund sagt, was zu tun ist.
Die Markierung „Hervorgehoben“ ist davon ausgenommen: sie ist ein Betriebszustand der Datenbank und erzeugt folgerichtig keine Revision.
Einbindung in die Werkbank
Das Paket zeichnet keine eigene Werkbank. Es liefert seine Teile an die eine vorhandene: die Navigation als Ansicht in der primären Seitenleiste, den Moderationsrückstand und den Aufenthaltsort als Angaben der Statuszeile, ein Abzeichen mit der Anzahl wartender Kommentare und zwei Befehle. Siehe wkfluentui.
wkidentity verlangen Reindex, das Nachrüsten der portablen Blöcke und die Kommentar-Massenlöschung einen für die Sitzung nachgewiesenen zweiten Faktor. Ohne wkidentity verhält sich das Paket unverändert.
Konfiguration
Die Einstellungen liegen im Konfigurationsmanager des Wikis unter dem Paketnamen. Sie regeln den Vorgabezustand neuer Kommentare, den Vorgabeblog, Vorgabeschlagwörter, die Prüfpflicht für Kommentare, das Setzen des Datums im Bearbeitungsformular und die Annahme von Linkbacks. Ein ungültiger Wert wird nicht übernommen; es gilt dann die Vorgabe.
Schnittstelle für Programme
Das Paket bietet eine Fläche für den Fernaufruf des Wikis an. Sie legt Beiträge an, liest sie, ändert den Zustand und pflegt Schlagwörter. Jeder Aufruf durchläuft dieselbe Berechtigungsprüfung wie die Bedienoberfläche und erzeugt beim Schreiben dieselbe Revision; es gibt keinen Weg, der die Seite umgeht.
Verhalten in Sonderfällen
- Eine Seite ohne Block ist kein Beitrag, auch wenn eine Zeile in der Datenbank steht.
- Eine gelöschte Seite verliert ihre Zeile beim nächsten Zugriff auf den Eintrag.
- Ein unbekannter Wert in der Auflistung fällt auf
listzurück und meldet das. - Fehlt die Datenbank, schalten sich die Flächen ab, statt die Seite abzubrechen.
Verhältnis zum Vorgängerpaket
Das Paket ist ein Fork von BlogTNG. Der Fork war mechanisch, die Weiterentwicklung ist es nicht: der portable Metadatenblock, das zweite Textformat, der Verwaltungsbildschirm, die Zeitplanung und die Fernaufruf-Fläche sind Hauszutaten. Die alte Feed-Adresse bleibt aus Verträglichkeitsgründen erreichbar.