Modul:Versionsschutz/Konfig
Beschreibung[Quelltext bearbeiten]
Dieses Modul erzeugt automatisch eine Anzeige des aktiven Seitenschutzes – bestehend aus:
- einem Padlock-Icon (oben rechts auf der Seite),
- einer Hinweisbox im Seiteninhalt,
- sowie einer zugehörigen Kategorie.
Es funktioniert vollständig ohne manuelle Parameter und ermittelt Schutzstufe, Ablaufdatum und Benutzergruppe aus der aktuellen Seite. Optional kann ein Grund übergeben werden.
Aufbau[Quelltext bearbeiten]
Das Modul besteht aus einem Hauptmodul und mehreren Submodulen, es nutzt zudem weitere allgemeine Hilfsmodule:
Submodule[Quelltext bearbeiten]
| Modul | Funktion |
|---|---|
| Modul:Versionsschutz | Hauptmodul, erzeugt Padlock, Box und Kategorie |
| Modul:Versionsschutz/Konfig | Konfigurationsdaten (Icons, Texte, Farben, Kategorien) |
| Modul:Versionsschutz/Level | Ermittelt aktivste Schutzstufe (nach Priorität) |
| Modul:Versionsschutz/Ablauf | Ermittelt das Ablaufdatum eines Schutzes (falls gesetzt) |
Hilfsmodule[Quelltext bearbeiten]
| Modul | Funktion |
|---|---|
| Modul:Dateilink | Gibt formatierte Dateilinks mit Titel, Größe etc. zurück |
| Modul:DateFormat | Gibt ISO-Zeitstempel im lesbaren Format aus |
Verwendung[Quelltext bearbeiten]
Einbindung per Vorlage[Quelltext bearbeiten]
Empfohlen über die Wrapper-Vorlage {{Versionsschutz}}, z. B.:
{{Versionsschutz|Vandalismus}}
Siehe auch
Direktaufruf per #invoke (nicht empfohlen)[Quelltext bearbeiten]
{{#invoke:Versionsschutz|main}}
Parameter[Quelltext bearbeiten]
Nur ein Parameter ist vorgesehen (optional):
Grund=- Gibt einen individuellen Hinweistext zum Schutzgrund an (wird als Text unterhalb der Hinweisbox angezeigt).
Funktionsweise[Quelltext bearbeiten]
- Das Modul ruft alle bekannten Schutzarten (z. B.
edit,move,upload) überPROTECTIONLEVELab. - Die aktivste Schutzstufe wird aus einer vordefinierten Prioritätenliste ermittelt.
- Ist ein Schutz aktiv, wird abhängig von der Konfiguration:
- das passende Icon gewählt (inkl. Unterscheidung bei temporären Schutzarten),
- das Ablaufdatum formatiert,
- ein Tooltip generiert,
- eine Hinweisbox mit erklärendem Text eingeblendet,
- eine Kategorie zugewiesen.
Temporäre Schutzarten[Quelltext bearbeiten]
Das Modul erkennt temporäre Schutzarten anhand des Ablaufdatums (`expiry ≠ infinity`)
In diesem Fall werden spezielle Icons mit Uhrsymbol genutzt (z. B. Protection-temp-sysop.svg).
Icons[Quelltext bearbeiten]
Das Modul unterstützt differenzierte Icons für:
- Aktionen:
edit,move,create,upload - Schutzstufen:
sysop,autoconfirmed,confirmed,templateprotection,policyprotection - temporäre Varianten: eigene Icons mit
-temp-im Dateinamen
Kategorisierung[Quelltext bearbeiten]
Wird automatisch gesetzt auf Basis der Konfiguration. Beispiele:
[[Kategorie:Bearbeitungsgeschützte Inhalte]][[Kategorie:Vorlagengeschützte Inhalte]]
Einschränkungen[Quelltext bearbeiten]
- Es wird immer nur eine Schutzstufe pro Seite angezeigt – die mit der höchsten Priorität.
- Kaskadierende Schutzstufen (cascade) werden derzeit nicht ausgewertet.
- Der Schutzgrund kann nicht automatisch ausgelesen werden – nur manuell übergeben.
To-Do / Ausblick[Quelltext bearbeiten]
- Automatische Integration per Hook (statt manuelle Einbindung)
- Kaskadenerkennung für eingebundene Seiten
- Mehrsprachigkeit über zentrale JSON-Datei
- Konfigurierbare Textbausteine
Siehe auch
return {
-- SCHUTZAKTIONEN und SCHUTZLEVEL (alle Kombinationen)
actions = { "edit", "move", "upload" },
levels = {
"sysop",
"autoconfirmed",
"confirmed",
"templateprotection",
"policyprotection",
"interfaceadmin"
},
-- ICONS pro Aktion + Level
icons = {
-- Normale Schutzarten nach Aktion
edit = {
sysop = "Protection-edit-sysop.png",
autoconfirmed = "Protection-edit-ac.png",
confirmed = "Protection-edit-ac.png"
},
move = {
sysop = "Protection-move-sysop.png",
autoconfirmed = "Protection-move-ac.png",
confirmed = "Protection-move-ac.png"
},
create = {
sysop = "Protection-create-sysop.png",
autoconfirmed = "Protection-create-ac.png",
confirmed = "Protection-create-ac.png"
},
upload = {
sysop = "Protection-upload-sysop.png",
autoconfirmed = "Protection-upload-ac.png",
confirmed = "Protection-upload-ac.png"
},
-- Kombination edit + move
full = {
sysop = "Protection-full-sysop.png",
autoconfirmed = "Protection-full-ac.png",
confirmed = "Protection-full-ac.png"
},
-- Spezielle Schutzarten
templateprotection = {
sysop = "Protection-full-template.png" -- wenn nötig anpassen
},
policyprotection = {
sysop = "Protection-full-policy.png"
},
-- Temporäre Schutzarten
temp = {
sysop = "Protection-temp-sysop.png",
autoconfirmed = "Protection-temp-ac.png",
confirmed = "Protection-temp-ac.png"
},
-- Generische Icons, z. B. für kaskadierenden Schutz (aktuell nicht verwendet)
general = {
cascade = "Protection-cascade-general.png"
}
},
-- PRIOTITÄTEN
priority = {
"policyprotection",
"templateprotection",
"sysop",
"interfaceadmin",
"confirmed",
"autoconfirmed"
},
-- KATEGORIEN (jede Schutzart, konsequent und klar)
categories = {
sysop = "Vollschutz aktiv",
autoconfirmed = "Teilschutz aktiv",
confirmed = "Teilschutz aktiv",
templateprotection = "Vorlagenschutz aktiv",
policyprotection = "Betreiberschutz aktiv",
interfaceadmin = "Oberflächenschutz aktiv"
},
-- TOOLTIP- und BOX-TEXTE (für jede Schutzart + Ablauf + Usergruppe)
texts = {
sysop = {
box = "Diese Seite ist <b>vollgeschützt</b>. Nur Administratoren dürfen sie bearbeiten. %EXPIRY%",
tooltip = "Vollschutz: Nur Administratoren können diese Seite bearbeiten. %EXPIRY%"
},
autoconfirmed = {
box = "Diese Seite ist <b>teilgeschützt</b>. Nur bestätigte Benutzer dürfen sie bearbeiten. %EXPIRY%",
tooltip = "Teilschutz: Nur bestätigte Benutzer können diese Seite bearbeiten. %EXPIRY%"
},
confirmed = {
box = "Diese Seite ist <b>teilgeschützt</b>. Nur bestätigte Benutzer dürfen sie bearbeiten. %EXPIRY%",
tooltip = "Teilschutz: Nur bestätigte Benutzer können diese Seite bearbeiten. %EXPIRY%"
},
templateprotection = {
box = "Diese Seite ist <b>vorlagengeschützt</b>. Nur Mitglieder der Gruppe „Vorlagenmeister“ dürfen sie bearbeiten. %EXPIRY%",
tooltip = "Vorlagenschutz: Nur Vorlagenmeister können diese Seite bearbeiten. %EXPIRY%"
},
policyprotection = {
box = "Diese Seite ist <b>rechtlich geschützt</b>. Nur Policy-Editoren dürfen sie bearbeiten. %EXPIRY%",
tooltip = "Rechtlicher Schutz: Nur Policy-Editoren können diese Seite bearbeiten. %EXPIRY%"
},
interfaceadmin = {
box = "Diese Seite ist <b>interface-geschützt</b>. Nur Interface-Administratoren dürfen sie bearbeiten. %EXPIRY%",
tooltip = "Interface-Schutz: Nur Interface-Admins können diese Seite bearbeiten. %EXPIRY%"
},
},
-- Benutzergruppen (aktuell ungenutzt)
usergroups = {
sysop = "Administrator",
autoconfirmed = "Bestätigter Benutzer",
confirmed = "Bestätigter Benutzer",
templateprotection = "Vorlagenmeister",
policyprotection = "Policy-Editor",
interfaceadmin = "Interface-Admin"
},
-- Farben (aktuell ungenutzt)
colors = {
sysop = "var(--color-warning)",
autoconfirmed = "var(--color-info)",
confirmed = "var(--color-info)",
templateprotection = "var(--color-template)",
policyprotection = "var(--color-policy)",
interfaceadmin = "var(--color-interface)"
},
-- Optionale Zusatzinfos: Seiten/Links zu Hilfeseiten
helplinks = {
sysop = "Hilfe:Versionsschutz",
autoconfirmed = "Hilfe:Versionsschutz",
confirmed = "Hilfe:Versionsschutz",
templateprotection = "Wikonia:Vorlagenmanufaktur/Vorlagenschutz",
policyprotection = "Hilfe:Versionsschutz",
interfaceadmin = "Hilfe:Versionsschutz"
}
}