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

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

  1. Jeder Eintrag ist ein Array mit drei Elementen:
    1. Pfad zum Artikel (der Ressource)
      • Zurzeit und standardmäßig zeigt dies auf eine Unterseite des momentanen Benutzers.
    2. Revision ID revid oder curid der letzten bekannten Version.
    3. Zeitstempel (ISO 8601)
  2. Die Liste der Einträge ist als Array gespeichert.
  3. 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

Anwendungsobjekt 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

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

Ort des Listen-Skriptes.

Default: User:wgUserName/versionControl.js
Benutzeroption: .opt.store

Nick Bearbeiten

Nickname für den Eigentümer des Listen-Skriptes.

Default: wgUserName
Benutzeroption: .opt.signer

List 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

Die aktuellen Versionsinformationen werden als Objekt abgespeichert unter

  • .proj[DBNAME][Nick].rv
  • .rv ist gerade das Array der abgespeicherten Liste.

Codes Bearbeiten

Quellcode
ResourceLoader
  • user:PerfektesChaos/versionControl
  • Dependencies: user, mediawiki.api, mediawiki.user, mediawiki.util, jquery.mwExtension
Namensräume alle
mw.libs versionControl


[ Englischsprachige Seite ]