Zum Inhalt springen

Modul:Shortcut

Aus Wikonia

Die Dokumentation für dieses Modul kann unter Modul:Shortcut/Doku erstellt werden

local p = {}

-- 1. Statische Daten-Tabelle (Die zentrale Datenbank)
-- HINWEISE: Hier werden die Shortcuts eingefplegt:
--           - Vorraussetzung für das Funktionieren ist eine bestehende Weiterleitung-Seite im Wiki, die dem Shortcut entsprich
--           - Abkürzungen für Namensräume sind global definiert und können nicht geändert werden
-- Format: ["SHORTCUT_NAME"] = "Zielseite/Zielanker"
local shortcutData = {
    -- Hilfeseiten
    ["P:H"] 	= "Portal:Hilfe",
    ["H:EN"]    = "Hilfe:Einzelnachweise",
    ["H:KÄ"]	= "Hilfe:KLeine Änderungen",
    ["H:VL"]	= "Hilfe:Vorlagen",
    -- Porjekt-Seiten (Meta-NAmensraum)
    ["W:RL"]	= "Wikonia::Richlinien",
    ["W:B"]     = "Wikonia:Belege",
    ["W:K"]     = "Wikonia:Kategorien"
}

-- 2. Hilfsfunktion zur Rückwärtssuche
-- Durchsucht die Tabelle, um den Shortcut-Namen für eine gegebene Zielseite zu finden.
-- Ist wichtig, da eine Zielseite (z.B. H:EN) nur einen primären Shortcut hat.
local function getShortcutForTarget(target)
    for shortcut, targetPage in pairs(shortcutData) do
        -- Entfernt den Anker aus dem Ziel, um nur den Hauptartikel zu matchen
        local pageTitle = mw.text.split(targetPage, '#')[1]
        
        if pageTitle == target then
            return shortcut
        end
    end
    return nil -- Kein passender Shortcut gefunden
end


-- 3. Funktionen für die Vorlagen-Nutzung

-- Liefert den Ziel-Pfad für einen Shortcut. Wird hauptsächlich für die Weiterleitungs-Anlage genutzt.
function p.getTarget( frame )
    local shortcut = frame.args[1] or ""
    return shortcutData[shortcut:upper()]
end

-- Liefert den Primär-Shortcut für eine Seite (vom Titel der aktuellen Seite ausgehend).
function p.getPrimaryShortcut( frame )
    -- Nimmt den Titel der Seite, auf der die Vorlage eingebunden wird
    local title = mw.title.getCurrentTitle().fullText
    
    -- Sucht den passenden Shortcut für diesen Titel
    local primaryShortcut = getShortcutForTarget(title)

    if primaryShortcut then
        -- Optional: Gibt den Shortcut als Link zurück für direkte Nutzung in der Vorlage
        return string.format('[[%s]]', primaryShortcut)
    else
        return nil
    end
end

-- 4. Funktion für die automatisierte Dokumentation
-- Gibt die gesamte Tabelle als Lua-Objekt zurück, z.B. für eine Übersichtsseite.
function p.getData( frame )
    return shortcutData
end

return p