Benutzer:Schnark/js/autoedit

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Dieses Skript wird nicht mehr gepflegt. Wenn du es verwenden willst, kannst du dies tun, solange es noch funktioniert, danach musst du es entweder selbst weiterpflegen oder einen anderen dafür finden.

Das Skript Benutzer:Schnark/js/autoedit.js stellt Funktionen zur Verfügung, mit denen man in einem Skript mehr oder weniger automatisch Seiten bearbeiten kann. Die Funktionen liegen alle im Objekt mw.libs.autoedit. Im Zweifelsfall ist dem Quellcode mehr Glauben zu schenken als dieser Dokumentation. Einige Funktionen funktionieren im Interface-Modus nicht, andere sind überhaupt nicht getestet.

Einzelne Bearbeitungen

[Bearbeiten | Quelltext bearbeiten]

Alle Funktionen für eine einzelne Bearbeitungen erwarten ein JSON-Objekt als Parameter, das festlegt, was getan werden soll. Folgende Eigenschaften dieses Objekts gelten für alle Funktionen:

Parameter Typ Standardwert Bedeutung
title string aktuelle Seite Name der betroffenen Seite
aktuelle Seite (ohne Namensraum) Name des betroffenen Benutzers
summary string Pflichtparameter Bearbeitungskommentar etc.
method string 'interface' 'interface' für eine Bearbeitung über das normale Interface (erfordt meist Abspeichern von Hand), 'API' für eine Bearbeitung über die API
newwindow number 0
Wert Bedeutung
0 im selben Fenster bearbeiten (einzig erlaubter Wert bei method == 'API')
1 in neuem Fenster/Tab bearbeiten, Fokus beim alten Fenster belassen (verhält sich in meisten Browsern wie 2)
2 in neuem Fenster/Tab bearbeiten, auf dieses fokussieren
callback function keine Callback-Funktion Callback-Funktion, die mit dem Status als erstem und dem Titel als zweitem Parameter aufgerufen wird
Status Bedeutung
'error' unspezifischer Fehler
'conflict' Es trat ein Bearbeitungskonflikt etc. auf
'success' Bearbeitung erfolgreich (nur bei method == 'API' oder newwindow > 0, in diesem Fall wird als dritter Parameter das neue Fenster übergeben)

Zurückgegeben wird false bei einem falschen Aufruf, sonst true.

Statt eine Funktion direkt aufzurufen kann man auch die edit-Funktion aufrufen und zusätzlich edit auf den Namen der eigentlich gewünschten Funktion setzen.

Die Funktion mw.libs.autoedit.edit bearbeitet einzelne Seiten. Zusätzlich zu den obigen Parametern gibt es noch die folgenden:

Parameter Typ Standardwert Bedeutung
section number gesamter Artikel Nummer des zu bearbeitenden Abschnitts
string 'new' für neuen Abschnitt, 'last' für letzten Abschnitt, 'T-n' für den n-ten transkludierten Abschnitt
object {title: 'Foo' [, count: 2]} Abschnitt namens Foo [und zwar der zweite], {number: '1.2.3'} Abschnitt mit Nummer 1.2.3
change string Pflichtparameter Text, der dem vorhandenen Text vorangestellt wird (bzw. neuer Text, falls bisher keiner vorhanden)
function Funktion, die mit dem alten Text aufgerufen wird (Leerstring, falls bisher keiner vorhanden) und den neuen Text zurückliefert oder false zum Abbruch
minor boolean false kleine Änderung?
action string 'wpDiff' Falls über das Interface bearbeitet wird, wird die Seite mit den Änderungen …
Wert Bedeutung
'wpDiff' … im Bearbeiten-Modus mit Versionsunterschied geöffnet.
'wpPreview' … im Bearbeiten-Modus mit Vorschau geöffnet.
'wpSave' … direkt abgespeichert.
create boolean false soll die Seite erstellt werden, wenn sie nicht existiert?
transcluded boolean false soll eine andere Seite bearbeitet werden, wenn der angeforderte Abschnitt von einer anderen Seite stammt?

Für die Callback-Funktion sind folgende Status zusätzlich möglich:

Status Bedeutung
'missing' Seite nicht vorhanden, create == false
'missingsection' Abschnitt nicht vorhanden
'transcluded' Abschnitt wird von anderer Seite eingebunden, transcluded == false, dritter Parameter ist der Name dieser Seite, vierter die Nummer des Abschnitts (mit führendem T-)
'nochange' change gab false zurück, dritter Parameter ist der alte Text

Die Funktion mw.libs.autoedit.del löscht eine Seite.

Die Funktion mw.libs.autoedit.block (ent-)sperrt einen Benutzer. Zusätzlich zu den obigen Parametern gibt es noch die folgenden:

Parameter Typ Standardwert Bedeutung
expiry string 'infinite' Sperrdauer ('unblock' zum Entsperren)
anononly boolean true nur unangemeldete Benutzer sperren
nocreate boolean false Erstellung von Benutzerkonten verhindern
autoblock boolean false Autoblock einsetzen
noemail boolean false E-Mail-Versand blockieren
allowusertalk boolean true Schreibzugriff auf Diskussionsseite zulassen
watchuser boolean true Benutzer beobachten

Die Funktion mw.libs.autoedit.protect (ent-)schützt eine Seite. Zusätzlich zu den obigen Parametern gibt es noch die folgenden:

Parameter Typ Standardwert Bedeutung
expiry string 'infinite' Sperrdauer ('unprotect' zum Entsperren)
protections string 'edit=autoconfirmed|move=autoconfirmed' Sperroptionen in der Form Art=Level, Pipe-separiert, 'move' steht für 'move=sysop', 'sysop' für 'edit=sysop|move=sysop'
cascade boolean false Kaskadensperre

Die Funktion mw.libs.autoedit.move verschiebt eine Seite. Zusätzlich zu den obigen Parametern gibt es noch die folgenden:

Parameter Typ Standardwert Bedeutung
to string Pflichtparameter Zielseite
movetalk boolean true Diskussionsseite mitverschieben
movesubpages boolean false Unterseiten mitverschieben
noredirect boolean false Weiterleitung unterdrücken

Die Funktion mw.libs.autoedit.mail schickte eine Email an einen Benutzer. Zusätzlich zu den obigen Parametern gibt es noch die folgenden:

Parameter Typ Standardwert Bedeutung
text string Pflichtparameter Text der E-Mail
ccme boolean false Kopie an sich selbst verschicken

Die Funktion mw.libs.autoedit.revert revertiert eine Änderung. Zusätzlich zu den obigen Parametern gibt es noch die folgenden:

Parameter Typ Standardwert Bedeutung
revert object Pflichtparameter siehe unten
forceapi boolean false bei method == 'API' Benutzung der API erzwingen, verhindert automatische Sichtung

Über revert wird ein Objekt angegeben, das festlegt, was revertiert werden soll (genau einer der folgenden Parameter als Eigenschaft):

Parameter Inhalt Bedeutung
rollback Name des zurückzusetzenden Benutzers führt ein Rollback durch, erfordt das Rollback-Recht, speichert automatisch
fakerollback Name des zurückzusetzenden Benutzers simuliert ein Rollback
reset Versionsnummer setzt auf alte Version zurück
undo Versionsnummer revertiert diese Änderung bzw. alle bis undoafter

Mehrere Bearbeitungen

[Bearbeiten | Quelltext bearbeiten]

Die Funktion mw.libs.autoedit.massedit bearbeitet eine Reihe von Seiten. Bevor du damit einen Bot betreibst, liest du dir WP:BOT durch und sagst mir Bescheid.

Die Parameter sind in dieser Reihenfolge

Parameter Typ Standardwert Bedeutung
titles array Pflichtparameter Liste der Titel, die bearbeitet werden sollen
param object Pflichtparameter Objekt wie für edit, title und callback werden automatisch gesetzt, wird für method ein von 'API' (Standard) abweichender Wert gewählt, muss newwindow auf > 0 gesetzt werden
function Funktion, die mit dem Titel aufgerufen wird und ein Objekt wie oben zurückliefert
callback function keine Callback-Funktion wird mit der Anzahl aller Titel, der Anzahl der erfolgreichen Bearbeitungen, einem Array der fehlgeschlagenen Bearbeitungen und einem Objekt der Form {'Titel': 'status'} aufgerufen
delay number 12 Zeit in Sekunden zwischen zwei Bearbeitungen

Um zu funktionieren muss jquery.async eingebunden werden, etwa durch mw.loader.using('jquery.async', meine_tolle_funktion_die_dann_loslegt);.

Die Funktion mw.libs.autoedit.edit_series bearbeitet eine Reihe von Seiten nacheinanber, beim ersten Fehler wird abgebrochen. Gedacht ist dies etwa für das Einfügen eines Löschantrags im Artikel, dem Eintrag auf der aktuellen LA-Seite und der Benachrichtigung des Erstellers.

Die Parameter sind in dieser Reihenfolge

Parameter Typ Standardwert Bedeutung
params array Pflichtparameter Liste der Parameter in JSON-Notation für autoedit.edit
autosave boolean Pflichtparameter sollen alle Bearbeitungen automatisch gespeichert werden?
array Liste mit dieser Entscheidung für jede Seite aus params einzeln
callback function keine Callback-Funktion wird mit dem Resultat der letzten Bearbeitung und der Anzahl aller Bearbeitungen aufgerufen
replace_last boolean false letzte Bearbeitung wird im aktuellen Fenster durchgeführt, Callback-Funktion wird im Erfolgsfall dann nicht aufgerufen

Quick&Dirty-Lösung um mehreren Benutzern eine Nachricht zu hinterlassen

[Bearbeiten | Quelltext bearbeiten]

Das Skript kann verwendet werden, wenn man schnell einer größeren Anzahl von Benutzern einen Hinweis auf die Diskussionsseite setzen möchte:

1. Aktiviere in deinen Einstellungen die neue Werkzeugleiste.
2. Öffne Spezial:Meine Benutzerseite/völlig beliebiger Name.js zum Bearbeiten.
3. Kopiere den Quelltext von Benutzer:Schnark/js/autoedit.js dort hin.
4. Füge am Ende vor der Zeile })(jQuery); folgenden Code ein:
var list = ['PASS', 'MICH', 'AN'];
for (var i = 0; i < list.length; i++) {
    list[i] = 'Benutzer Diskussion:' + list[i];
}
var title = 'PASS MICH AN';
var text = 'Hallo {{ers:SEITENNAME}}!\nPASS MICH AN Viele Grüße --~~~~';
autoedit.massedit(list, {change: text, section: 'new', summary: title, create: true})
Dabei sollte list die Benutzernamen (ohne Benutzer: oder Benutzer Diskussion: enthalten, title die Betreffzeile und text den Text.
5. Klicke auf Vorschau.
6. Warte. In einem anderen Tab kannst du deine eigenen Beiträge nachverfolgen. Sobald das Skript alle Benutzer informiert hat, kannst du das Tab ohne zu speichern schließen.

Alternativen zu meinem Skript sind Benutzer:D/monobook/api.js und Benutzer:Ireas/düp-helperfunctions-monobook.js.

Der Javascript-Code befindet sich unter Benutzer:Schnark/js/autoedit.js und wird in Benutzer:Schnark/js/autoantraege.js verwendet.