Benutzer:PerfektesChaos/js/listPageOptions
JavaScript-Benutzerskript, um bei Beobachtungslisten und der Seite Letzte Änderungen der Benutzeroberfläche besondere Möglichkeiten hinzuzufügen.
Zurzeit werden acht Funktionalitäten unterstützt:
- Spontanes Umschalten der „Mehrfachen Einträge“ auf der Beobachtungsliste.
- Spontanes Umschalten der „Seitenbezogenen Gruppierung“ auf der Beobachtungsliste und den „Letzten Änderungen“.
- Mehrere Optionen gleichzeitig umschalten, um von einem Szenario in ein anderes zu wechseln.
- Bestimmte Arten von Einträgen ausfiltern.
- Seiten auf der Beobachtungsliste mit einem Klick nicht mehr beobachten.
- Einzelne Seiten auf der Beobachtungsliste mit einem Klick als besucht markieren.
- Optionsblock komprimiert darstellen, um auf kleinen Bildschirmen Platz zu sparen.
- Optionsblock ein- und ausblenden.
Es wird nur die optische Darstellung der Seite und der Abruf weiterer Seiten beeinflusst, jedoch keine Analyse der Datenbank-Einträge vorgenommen.
Einbindung
- Wenn das Projekt dieses Gadget bereits registriert haben sollte, genügt ein Häkchen auf der Seite Einstellungen („Helferlein“).
- Sonst wären die folgenden Zeilen in die persönlichen JS-Einstellungen einzufügen:
mw.loader.load( "https://en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/listPageOptions/r.js&action=raw&bcache=1&maxage=604800&ctype=text/javascript",
"text/javascript" );
- Wer fliegelflagel@Schnark benutzt, kann das Skript mit einem einfachen Häkchen aktivieren und deaktivieren.
- Auch nicht angemeldete Benutzer können es benutzen; zumindest für die „Letzten Änderungen“. Siehe Greasemonkey und vergleichbare Techniken.
Wirkung
„Mehrfache Einträge“ auf der Beobachtungsliste umschalten
Eigentlich muss man sich in den persönlichen Einstellungen für das weitere Arbeiten entscheiden, ob für jede Seite genau eine Änderung oder aber mehrere Aktivitäten angezeigt werden sollen („erweitert“), wenn es im Zeitraum mehrere Vorgänge gab.
Im Block der „Anzeigeoptionen“ auf der Beobachtungsliste wird eine Checkbox hinzugefügt, die über den zuletzt gewählten Wunsch voreingestellt wird. Wird hier ein Häkchen gemacht oder entfernt und anschließend Anwenden gedrückt oder eines der Links zu den anderen Optionen angeklickt, wird die neu aufgebaute Seite entsprechend dargestellt. War die seitenbezogene Gruppierung aktiv, wird sie automatisch abgeschaltet.
Beeinflusste Seiten:
- Jede Beobachtungsliste („Änderungen“).
Seitenbezogene Gruppierung umschalten
Für die genannten Spezialseiten wird eine allgemeine Einstellung angeboten, die bei allen diesen Listen gleiche Seiten zunächst in Gruppen zusammenfasst, die später aufgeklappt werden können.
Zurzeit gilt das immer für alle Seiten einheitlich, was gelegentlich nicht angemessen ist. Dieses Gadget bereitet einen Weg, diese Eigenschaft vorübergehend individuell ein- und auszuschalten, wenn es erforderlich oder gerade unerwünscht ist.
Im Block der „Anzeigeoptionen“ auf den Spezialseiten wird eine Checkbox hinzugefügt, die über den zuletzt gewählten Wunsch voreingestellt wird. Wird hier ein Häkchen gemacht oder entfernt und anschließend Anwenden gedrückt oder eines der Links zu den anderen Optionen angeklickt, wird die neu aufgebaute Seite entsprechend dargestellt. Sind zurzeit die „Mehrfachen Einträge“ nicht aktiv, werden sie automatisch zugeschaltet.
Beeinflusste Seiten:
- Erweiterte Beobachtungsliste – Wenn das nicht in den persönlichen Einstellungen aktiviert wurde, würde ohnehin immer nur die letzte Aktivität gezeigt, und diese kann nicht sinnvoll als Block gruppiert werden. Alternativ wird bei Bedarf spontan in diesen Modus geschaltet.
- Letzte Änderungen.
Mehrfache Optionen gleichzeitig umschalten
Will man von einem Szenario in ein anderes wechseln, also beispielsweise von „alle Namensräume der letzten Stunde“ zu „nur Artikel der letzten 30 Tage“, dann ist normalerweise der Aufbau einer Zwischenseite erforderlich.
Dieses Werkzeug aktualisiert standardmäßig alle Direktverlinkungen sofort, wenn eine Option des Formulars verändert wird, also ein Häkchen in einer Checkbox gemacht wird oder ein Namensraum ausgewählt wird. Anschließend kann dann Anwenden oder ein Zeitraum angeklickt werden, um den Neuaufbau auszulösen.
Mit der Option learn
lassen sich den Links für das Ein- und Ausblenden weitere Checkboxen hinzufügen, sodass auch diese in eine gesammelte Konfiguration einbezogen werden können.
Beeinflusste Seiten:
- Jede Beobachtungsliste („Änderungen“).
- Letzte Änderungen.
Nicht beobachten
Ein Link (wie + [Nicht-beobachten]) wird der Werkzeugbox des Portals (üblicherweise in der Spalte auf der linken Seite) hinzugefügt. Wird er angeklickt, so wird jedem Seiteneintrag ein Button (wie [—]) hinzugefügt. Wird dieser angeklickt, dann wird per API diese Seite aus der Beobachtung entfernt. Sollte das irrtümlich geschehen sein, nimmt ein erneuter Klick auf die gleiche Stelle die Seite wieder in die Beobachtungsliste auf.
Beeinflusste Seiten:
- Jede Beobachtungsliste („Änderungen“).
Seit Sommer 2017 kann als Einstellung „Direkte Markierungen zum Nichtbeobachten/Beobachten (×/+) zu beobachteten Seiten mit Änderungen hinzufügen (erfordert JavaScript)“ bewirkt werden, dass immer jeder Seiteneintrag mit einer analogen Schaltfläche ausgestattet wird.
Seiten als besucht markieren
Seiten können als „bereit besucht“ einzeln markiert werden, sofern dies angefordert wird. Sie ändern daraufhin das Erscheinungsbild und lassen sich auch vorübergehend ausblenden.
- Es kann der Werkzeugbox des Portals (üblicherweise in der Spalte auf der linken Seite) ein Link (wie + [Gesehen]) hinzugefügt werden. Wird er angeklickt, so wird jedem Seiteneintrag ein Button (wie +) hinzugefügt. Wird dieser angeklickt, dann wird per API ein Besuch dieser Seite simuliert.
- Waren bereits alle Seiten der Liste besucht gewesen, erscheint auch kein Link.
- Alternativ können bereits beim Seitenaufbau alle noch unbesuchten Einträge mit einem Button versehen werden.
Beeinflusste Seiten:
- Jede Beobachtungsliste („Änderungen“).
Benutzerkonfiguration
Der Ausgangszustand und das Verhalten kann von jedem Benutzer individuell vorgegeben werden.
Interaktive Schnellkonfiguration
Einige der unten beschriebenen Optionen können nach Installation des Skriptes auf einer Spezialseite interaktiv konfiguriert werden.
Das gilt jedoch nicht für die komplexeren Filterregeln über Array.
Auch nicht angemeldete Benutzer können davon Gebrauch machen; die „Letzten Änderungen“ stehen auch ihnen zur Verfügung, obwohl sie keine Beobachtungsliste nutzen können.
Konfiguration über JavaScript
In die common.js etc. die folgenden Zeilen einfügen (möglichst vor mw.loader.load, so vorhanden):
if ( typeof mw.libs.listPageOptions !== "object" ) {
mw.libs.listPageOptions = { };
}
mw.libs.listPageOptions.key1 = value1;
Key | Value | Bedeutung |
---|---|---|
lean
|
true
|
Komprimierter Optionsblock. Default: false – ungeändertes Layout.
|
learnt
|
false
|
Möglichkeit zum Verbergen besuchter Änderungen auf der Beo. Default: null – keine Möglichkeit.false – Zusatz-Link; Vorgabe: alle anzeigen.true – Zusatz-Link; Vorgabe: besuchte ausblenden.
|
leyo
|
false
|
Möglichkeit zum Verbergen eigener letzter Beiträge auf der Beo. Default: false – Anzeigen.true – Verbergen bei seitenbezogener Gruppierung, wenn jüngster Beitrag selbst geschrieben.
|
looked
|
false
|
Einzelseiten als besucht markieren können. Default: null – keine zusätzlichen Knöpfe.false – Link zum Einblenden.true – von Anfang an Einblenden.
|
lower
|
true
|
Zusätzliche Knöpfe zum Ein- und Ausblenden des Optionsblocks. Default: null – keine zusätzlichen Knöpfe.false – Knopf zum Ausblenden.true – Ausblenden; Knopf zum Einblenden.
|
luxury
|
true
|
Zusätzliche Checkboxen zum Ein- und Ausblenden. Default: false – keine zusätzlichen Checkboxen.
|
hide
|
Array | Einträge verstecken. Default: nichts verstecken. |
Beispiel:
if ( typeof mw.libs.listPageOptions !== "object" ) {
mw.libs.listPageOptions = { };
}
mw.libs.listPageOptions.learnt = true;
mw.libs.listPageOptions.hide = [ [ true, "Logbuch/articlefeedback", 2 ],
[ false, "Benutzer(in)?:", 2 ],
[ false, "([A-Z][a-z]+_)?Diskussion:", 2 ],
[ false, "Wikipedia:(Import|L%C3%B6schk|Spielwiese)", 2 ],
[ false, false, 2, "PerfektesChaos$" ],
[ false, false, 0, "(Archivbot|DrTrigonBot)$" ]
];
Einzelne Optionen
Bestimmte Einträge verstecken
Die Option .hide
ist ein Array
, das Array
s mit Regeln enthält.
Jedes Regel-Element ist ein Array
mit zwei bis fünf Elementen.
[0]
|
Markierung für Spezialseiten.true = Spezialseite und false = reguläre Seite.
|
[1]
|
Muster für Seitenname. Stil eines Regulären Ausdrucks als Zeichenkette. Wenn false , dann alle Seiten; aber Einschränkung über den Benutzernamen (oder anderes?) erforderlich.
|
[2]
|
(optional) Regel auf bestimmte Auflistungen beschränken.
|
[3]
|
(optional) Muster für Namen des ausführenden Benutzers. Stil eines Regulären Ausdrucks als Zeichenkette. Bei „seitenbezogener Gruppierung“ nur bedingt einsetzbar. |
[4]
|
(optional) Regel nur auf kleine Änderungen anwenden. |
- Als Spezialseiten können eigentlich nur Logbücher auftreten.
- Sollen nur bestimmte Logbücher ausgeblendet werden, kann die Auswahl in Klammern eingeschlossen werden:
"Logbuch/(articlefeedback|block|upload)"
- Um alle Logbücher auszuschließen, würde
""
jeden Bezug zu einer Spezialseite unterdrücken. Das ist mit der standardmäßig angebotenen Namensraum-Auswahl nicht möglich.
- Sollen nur bestimmte Logbücher ausgeblendet werden, kann die Auswahl in Klammern eingeschlossen werden:
- Betreffend normaler Seiten müsste der Namensraum spezifiziert werden. Wenn nur einige Seiten ausgeschlossen werden sollen, müsste der charakteristische Beginn des Seitentitels folgen.
- Für anonyme Benutzer wäre das Muster zu bilden nach dem Beispiel:
Beiträge/127.0.0.1
- Angegeben wird immer der Beginn des Seitennamens (mit Namensraum; bei Markierung für Spezialseite ohne) oder Benutzernamens.
- Soll der Ausdruck exakt bis zum Ende reichen, ist zum Schluss ein
$
(Dollarzeichen) anzugeben.regel[3] = "Foo$";
blendet nur Benutzer:Foo aus, nicht aber Benutzer:FooBar.
- Mehrere Optionen können in runde Klammern gesetzt werden und durch Pipe getrennt werden.
regel[1] = "Wikipedia:(Administratoren|Auskunft|Fragen zur |Import|Löschk|Spielwiese)";
- Es kann der formatierte Name (also mit Umlauten usw., auch mit Leerzeichen) benutzt werden, sofern kein Prozentzeichen vorkommt. Wenn ein Prozentzeichen vorkommen soll, muss exaktes URL-Encoding benutzt werden, so wie es in der URL steht.
- Die Zeichen
^ . * + ? ( ) \ $
können in Wiki-Namen vorkommen, aber haben eine Sonderbedeutung in Regulären Ausdrücken. Sie könnten durch vorangesetzte\\
maskiert werden, oder es wird das Prozentzeichen-Format benutzt.
- Die Zeichen
- Wenn möglichst alle Artikel gemeint sind, können alle Seitennamen ausgeschlossen werden, in denen kein Doppelpunkt vorkommt. CSI: Miami schlüpft dann noch durch, aber der Großteil der Artikel wird ausgefiltert; dies wäre mit vertrauenswürdigen Benutzernamen zu verbinden.
[false, "[^:]+$", 0, "X1x$", true]
- (Ausblendung fast aller von Benutzer:X1x an Artikeln vorgenommenen kleinen Änderungen auf Beo und RC).
Beeinflusste Seiten:
- Jede Beobachtungsliste („Änderungen“).
- Letzte Änderungen.
Besuchte Seiten
Mit der Option .learnt
wird ein zusätzliches Link angeboten, das die bereits besuchten Seiten aus der Liste ausblendet. Die Ein- und Ausblendung kann beliebig oft umgeschaltet werden, ohne die Seite neu abzurufen (dies im Unterschied zu einer im September 2013 eingeführten neuen Option).
- Sind alle gezeigten Seiten gleichermaßen besucht oder noch nicht gesehen, wird das Element ausgegraut.
- Die Information über den Seitenbesuch stammt vom Server. Zur Aktualisierung ist ein Neuaufbau der Seite erforderlich.
Der zuletzt aktivierte Zustand wird in einem Super Cookie während der Browser-Sitzung gespeichert, so dass er beim erneuten Abruf der Seite erhalten bleibt. Der Wert der Option .learnt
ist der Startwert beim Sitzungsbeginn.
Beeinflusste Seiten:
- Jede Beobachtungsliste („Änderungen“).
Verbergen eigener letzter Beiträge
Bei „seitenbezogener Gruppierung“ kann ein Block ausgeblendet werden, wenn die jüngste Bearbeitung selbst verfasst wurde (letzte Antwort in der Diskussion; soeben revertiert). Das ist mit der Option .leyo
(last edit your own) möglich, wenn true
gesetzt wird. Dazu muss aber hideOwn=0
stehen (eigene Beiträge dürfen nicht versteckt werden), weil sonst in der HTML-Seite die eigene Bearbeitung nicht bekannt wäre.
Beeinflusste Seiten:
- Beobachtungsliste („Änderungen“) mit seitenbezogener Gruppierung und Anzeige eigener Beiträge.
Optionenbereich komprimieren
Die Optionen sind (mit oder ohne Gadget) zeilenweise gegliedert und gruppiert. Mit der Option .lean
lassen sie sich platzsparend anordnen – sind dadurch naturgemäß nicht mehr übersichtlich.
Beeinflusste Seiten:
- Jede Beobachtungsliste („Änderungen“).
- Letzte Änderungen.
Dazu passt die CSS-Anweisung für die common.css
FORM#mw-watchlist-resetbutton ul li {
display: none;
}
Einzelne Seiten als besucht markieren
Wenn die Option .looked
vom Typ boolean ist, werden für alle noch nicht besuchten Seiten Buttons angeboten, die einen Besuch simulieren.
false
– Link zum Einblenden der Buttons in der Werkzeugbox des Portals.true
– Bereits beim Seitenaufbau alle Buttons einblenden.
Beeinflusste Seiten:
- Jede Beobachtungsliste („Änderungen“).
Optionenbereich einklappbar
Mit der Option .lower
werden zusätzliche Schaltelemente angeboten, mit denen sich der Block für Anzeigeoptionen (teils auch Benachrichtigungen und weiteren Informationen) ein- und ausblenden lässt. Damit kann bei begrenztem Bildschirmplatz und unveränderten Optionen für die Liste mehr Nutzfläche geschaffen werden. Zum Ausblenden wird rechts oben im Optionsblock ein X angeboten.
Der zuletzt aktivierte Zustand wird in einem Super Cookie während der Browser-Sitzung gespeichert, so dass er beim erneuten Abruf der Seite erhalten bleibt. Der Wert der Option .lower
ist der Startwert beim Sitzungsbeginn.
Beeinflusste Seiten:
- Jede Beobachtungsliste („Änderungen“).
- Letzte Änderungen.
Anmerkung
Eigentlich ist es nicht erforderlich, dass diese Funktionalität von einem externen Gadget erbracht wird. Vielleicht wird das eines Tages von einer Lösung auf dem Mediawiki-Server geleistet, zumindest das vorübergehende Umschalten in die seitenbezogene Gruppierung.
Codes und Stammseite
Die Stammseite ist en:User:PerfektesChaos/js/listPageOptions mit:
Quellcode |
|
ResourceLoader |
|
Namensräume | -1 ( Watchlist , Recentchanges , Blankpage )
|
Cookies |
|
mw.libs
|
listPageOptions
|