Benutzer:PerfektesChaos/js/versionControl
JavaScript zur automatischen Aktualisierung von Listen mit Versionsidentifizierung.
Die Liste ist als JavaScript Quellcode formatiert. Wenn dies zu einer Seite geladen wird, ist der Inhalt sofort verfügbar. Im Unterschied zu einer reinen JSON-Definition kann dies mit weiteren ausführbaren Anweisungen kombiniert werden.
Hintergrund ist der Umstand, dass bei Ressourcen in einem anderen Projekt deren Revisionsnummer nicht per API abgefragt werden kann (vom veralteten secure.wikimedia.org mal abgesehen).
Benutzung
[Bearbeiten | Quelltext bearbeiten]Zur Aktualisierung der Liste innerhalb des Benutzerskriptes laden:
mw.loader.load("//en.wikipedia.org/w/index.php?title="
+ "User:PerfektesChaos/js/versionControl/r.js"
+ "&action=raw&bcache=1&maxage=604800&ctype=text/javascript",
"text/javascript");
(englischsprachige Wikipedia!)
Die Standard-Aktivität wird automatisch ausgeführt.
Alle Artikel (typischerweise JavaScript oder CSS) werden geprüft, ob der korrespondierende Listeneintrag noch aktuell ist. Wenn nicht, wird abschließend das Skript automatisch verändert, etwa nach 15 oder 10 Sekunden je nach Systemauslastung.
Um die Erlaubnis zum Ändern der Liste zu erhalten, ist es notwendig, bei der Ausführung persönlich eingeloggt zu sein.
Laden und Ausführen kann verbunden werden mit der Situation, in der Ressourcen auf der Liste betrachtet werden. Dies geschieht umittelbar nach deren Speichern. Leider gibt es keinen after-save-hook, der nur nach einer Speicherung aktiviert werden würde.
Format der Liste
[Bearbeiten | Quelltext bearbeiten]- Jeder Eintrag ist ein Array mit drei Elementen:
- Pfad zum Artikel (der Ressource)
- Zurzeit und standardmäßig zeigt dies auf eine Unterseite des momentanen Benutzers.
- Revision ID
revid
odercurid
der letzten bekannten Version. - Zeitstempel (ISO 8601)
- Pfad zum Artikel (der Ressource)
- Die Liste der Einträge ist als Array gespeichert.
- Der erste Eintrag dieses Arrays ist ein Array mit einem Element, einem String. Er wird auf den letzten Zeitpunkt einer automatischen Aktualisierung gesetzt.
mw.libs.versionControl.proj.enwiki.PerfektesChaos.rv = [
["Fri, 27 Jan 2012 16:51:57 GMT"],
["js/versionControl/d.js",473538729,"2012-01-27T16:50:37Z"],
["js/versionControl/r.js",473538940,"2012-01-27T16:51:51Z"],
... ];
Beispiel
[Bearbeiten | Quelltext bearbeiten]Anwendungsobjekt
[Bearbeiten | Quelltext bearbeiten]Für Versionsdaten, Konfiguration und die Skriptfunktionalität wird ab 2012 das folgende Objekt verwendet:
mw.libs.versionControl
Nachstehend wird es durch einen führenden Punkt dargestellt.
Optionen können (möglichst noch vor der Anweisung mw.loader.load) angegeben werden über:
mw.libs.versionControl = { opt: { store: "Benutzer:Benutzy/vc.js",
signer: "Benutzy",
symbol: "meineVersionen"
}
};
2011 wurden einzelne globale Variable benutzt, die inzwischen entfallen sind.
Konfiguration
[Bearbeiten | Quelltext bearbeiten]Alle Variablen haben Defaultwerte, können aber an spezifische Bedürfnisse angepasst werden.
Besondere Wünsche zur Ausführung sind in der Komponente .opt
des Anwendungsobjekts anzugeben.
Location
[Bearbeiten | Quelltext bearbeiten]Ort des Listen-Skriptes.
- Default:
User:
wgUserName/versionControl.js
- Benutzeroption:
.opt.store
Nick
[Bearbeiten | Quelltext bearbeiten]Nickname für den Eigentümer des Listen-Skriptes.
- Default:
wgUserName
- Benutzeroption:
.opt.signer
List
[Bearbeiten | Quelltext bearbeiten]Name für eine globale Variable mit der Liste; sie muss zuvor als Objekt deklariert gewesen sein.
- Default siehe VersionInfo
- Benutzeroption:
.opt.symbol
VersionInfo
[Bearbeiten | Quelltext bearbeiten]Die aktuellen Versionsinformationen werden als Objekt abgespeichert unter
.proj[
DBNAME][
Nick].rv
- DBNAME –
wgDBname
, etwadewiki
- Nick –
.opt.signer
- DBNAME –
- …
.rv
ist gerade das Array der abgespeicherten Liste.
Codes
[Bearbeiten | Quelltext bearbeiten]Quellcode |
|
ResourceLoader |
|
Namensräume | alle |
mw.libs
|
versionControl
|