Modul:Versionsschutz/Level
Beschreibung 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 Bearbeiten
Das Modul besteht aus einem Hauptmodul und mehreren Submodulen, es nutzt zudem weitere allgemeine Hilfsmodule:
Submodule 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 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 Bearbeiten
Einbindung per Vorlage Bearbeiten
Empfohlen über die Wrapper-Vorlage {{Versionsschutz}}, z. B.:
{{Versionsschutz|Vandalismus}}
Siehe auch
Direktaufruf per #invoke (nicht empfohlen) Bearbeiten
{{#invoke:Versionsschutz|main}}
Parameter Bearbeiten
Nur ein Parameter ist vorgesehen (optional):
Grund=- Gibt einen individuellen Hinweistext zum Schutzgrund an (wird als Text unterhalb der Hinweisbox angezeigt).
Funktionsweise 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 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 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 Bearbeiten
Wird automatisch gesetzt auf Basis der Konfiguration. Beispiele:
[[Kategorie:Bearbeitungsgeschützte Inhalte]][[Kategorie:Vorlagengeschützte Inhalte]]
Einschränkungen 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 Bearbeiten
- Automatische Integration per Hook (statt manuelle Einbindung)
- Kaskadenerkennung für eingebundene Seiten
- Mehrsprachigkeit über zentrale JSON-Datei
- Konfigurierbare Textbausteine
Siehe auch
local p = {}
-- Gibt das Schutzlevel für eine bestimmte Aktion (edit, move, upload) auf einer Seite zurück
function p._main(action, pagename)
local title
if type(pagename) == 'table' and pagename.prefixedText then
title = pagename
elseif pagename then
title = mw.title.new(pagename)
else
title = mw.title.getCurrentTitle()
end
local level = title.protectionLevels[action] and title.protectionLevels[action][1]
-- Sonderfälle: JS/CSS-Seiten → interfaceadmin
if title.namespace == 8 then
if title.text:sub(-3) == '.js'
or title.text:sub(-4) == '.css'
or title.contentModel == 'javascript'
or title.contentModel == 'css' then
return 'interfaceadmin'
end
elseif title.namespace == 2 and title.isSubpage then
if title.contentModel == 'javascript' or title.contentModel == 'css' then
return 'interfaceadmin'
elseif title.contentModel == 'json' then
return 'sysop'
end
end
-- Fallback nach Level
if level == 'templateprotection' then
return 'templatemaster'
elseif level == 'policyprotection' then
return 'policyeditor'
elseif level == 'sysop' then
return 'sysop'
elseif level == 'autoconfirmed' or level == 'confirmed' then
return 'autoconfirmed'
elseif level then
return level
else
return '*' -- keine Einschränkung
end
end
-- Wrapper für #invoke-Aufrufe
setmetatable(p, {
__index = function(t, k)
return function(frame)
return t._main(k, frame.args[1])
end
end
})
return p