Modul:DokuTools
Dokumentation ansehen • bearbeiten • Versionsverlauf • Cache leeren
Vorlagenschleife entdeckt: Modul:DokuTools/Doku
Modulpflege & Verwendung
Zweck[Quelltext bearbeiten]
Das Modul stellt kleine Hilfsfunktionen für Dokumentationsseiten bereit. Aktuell enthält es eine Funktion, um Links zur Cirrus-Suche zu erzeugen, die alle Seiten anzeigt, welche die aktuelle Vorlage/Seite transkludieren.
Dies ist vor allem in Dokumentations- oder Wartungskontexten nützlich, z. B. vor Änderungen an Vorlagen oder Modulen.
Verfügbare Funktionen[Quelltext bearbeiten]
transcludesUrl()- Gibt die reine URL zur Cirrus-Suche zurück.
- Ergebnis kann direkt in Vorlagen oder Modulen weiterverwendet werden.
transcludesLink- Gibt einen formatierter Link zurück.
- Eignet sich für die direkte Einbindung in Dokumentations- und Footerboxen.
Nutzung[Quelltext bearbeiten]
Das Modul unterstützt sowohl die Ausgabe als einen kompletten, anpassbaren Link, als auch die Ausgabe der eigentlichen „Helferfunktion“ um nur die URL — zum Beispiel für die Weiterverwendung in einem Button oder komplexeren Vorlagen zu ermöglichen.
Ausgabe eines Links[Quelltext bearbeiten]
{{#invoke:DokuTools|transcludesLink}}
Das Standardlabel „Einbindungen suchen“ wird gesetzt.
Optional kann das Label angepasst werden:
{{#invoke:DokuTools|transcludesLink|label=Verwendungen anzeigen}}
Nutzung ohne Link (nur URL)[Quelltext bearbeiten]
{{#invoke:DokuTools|transcludesUrl}}
Technische Hinweise[Quelltext bearbeiten]
- Wenn die Dokumentationsseite den Suffix
/Dokuträgt, wird dieser automatisch entfernt. - Die Namensraumbezeichnung wird berücksichtigt (z. B.
Vorlage:Name,Modul:Name). - Die erzeugte Cirrus-Suchanfrage nutzt
hastemplate:.
Siehe auch
- Modul:Dokumentation – Hauptmodul für Dokumentationen
- Vorlage:Dokumentation – Vorlage zur Verwendung des Dokumentationsmoduls
-- Modul: DokuTools
-- als Ergänzung für Schnippsel, Hilfefuntionen für Dokumentationen o. ä.
local p = {}
local function fullTitleWithoutDocu()
local t = mw.title.getCurrentTitle()
local base = (t.text or ""):gsub("/Doku$", "")
local ns = t.nsText
if ns and ns ~= "" then
return ns .. ":" .. base
else
return base
end
end
-- Gibt nur die Cirrus-URL zurück
function p.transcludesUrl()
local t = mw.title.getCurrentTitle()
local base = t.text:gsub("/Doku$", "") -- "/Doku" abwerfen
local query
if t.nsText == "Vorlage" then
-- Cirrus: alle Seiten, die diese Vorlage transkludieren
query = string.format("hastemplate:%s ", base)
elseif t.nsText == "Modul" then
-- Cirrus: #invoke für dieses Modul (grobe, aber praktische Heuristik)
local esc = mw.ustring.gsub(base, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1")
query = string.format('insource:/#invoke:%s[^\n}]*?/ ', esc)
else
-- Fallback: versuche es mit vollständigem Titel
query = string.format("hastemplate:%s ", t.prefixedText)
end
return mw.title.new("Suche", -1):canonicalUrl{ search = query }
end
-- Gibt einen fertig formatierten Link zurück
-- Nutzung in Vorlage: {{#invoke:DokuTools|transcludesLink|label=Einbindungen}}
function p.transcludesLink(frame)
local label = (frame.args.label or "Einbindungen suchen")
local url = p.transcludesUrl()
return string.format('<span class="plainlinks">[%s %s]</span>', url, label)
end
return p