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

  1. Das Modul ruft alle bekannten Schutzarten (z. B. edit, move, upload) über PROTECTIONLEVEL ab.
  2. Die aktivste Schutzstufe wird aus einer vordefinierten Prioritätenliste ermittelt.
  3. Ist ein Schutz aktiv, wird abhängig von der Konfiguration:
    1. das passende Icon gewählt (inkl. Unterscheidung bei temporären Schutzarten),
    2. das Ablaufdatum formatiert,
    3. ein Tooltip generiert,
    4. eine Hinweisbox mit erklärendem Text eingeblendet,
    5. 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



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"
  }
}