Modul:Wiki: Unterschied zwischen den Versionen

+ InsertFullpage(), InsertSubpage()
(fix wikiTextLimit() fett/kursiv)
(+ InsertFullpage(), InsertSubpage())
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 16: Zeile 16:
local split = str.split2(pagename, "/")
local split = str.split2(pagename, "/")
return split[#split] -- letztes Element in der table nach letztem Slash
return split[#split] -- letztes Element in der table nach letztem Slash
end
function p.namespace()
local fullpagename = p.fullpagename()
local split = str.split2(fullpagename, ":")
if #split == 1 then
return ""
end
return split[1]
end
end


Zeile 24: Zeile 33:
-- fullpagename
-- fullpagename
pagesnames.fullpagename = tostring(mw.title.getCurrentTitle())
pagesnames.fullpagename = tostring(mw.title.getCurrentTitle())
-- namespace
local split = str.split2(pagesnames.fullpagename, ":")
if #split == 2 then
pagesnames.namespace = split[1]
else
pagesnames.namespace = ""
end
-- pagename
-- pagename
local split = str.split2(pagesnames.fullpagename, ":")
pagesnames.pagename = split[#split] -- letztes Element in der table nach Doppelpunkt
pagesnames.pagename = split[#split] -- letztes Element in der table nach Doppelpunkt
-- subpagename
-- subpagename
Zeile 33: Zeile 48:
if type(table) == "table" then
if type(table) == "table" then
table.fullpagename = pagesnames.fullpagename
table.fullpagename = pagesnames.fullpagename
table.namespace = pagesnames.namespace
table.pagename = pagesnames.pagename
table.pagename = pagesnames.pagename
table.subpagename = pagesnames.subpagename
table.subpagename = pagesnames.subpagename
Zeile 46: Zeile 62:


function p.getArgs(args, argslist)
function p.getArgs(args, argslist)
local result = {}
-- liefert entweder die in argslist angegebenen Agrumente zurück
local empty = true
-- oder ohne argslist werden alle Argumente rückgeliefert
for _, a in ipairs(argslist) do
-- dabei werden leere ("") Argumente entfernt und ein empty-Flag rückgeliefert
local v = args[a] or ""
local result, empty = {}, true
if v ~= "" then
if type(argslist) == "table" then -- mit argslist
for _, a in ipairs(argslist) do
local v = args[a] or ""
if v ~= "" then
result[a] = v
empty = false
end
end
else -- ohne argslist
for a, v in pairs(args) do -- erstmal komplett kopieren
result[a] = v
result[a] = v
empty = false
end
for i = 1, #result do -- dann leere indizierte Einträge entfernen
if result[i] == "" then -- es dürfen keine Lücken entstehen
table.remove(result, i)
end
end
for a, v in pairs(result) do -- und sonstige leere Einträge entfernen
if v == "" then -- jetzt auch die nicht-indizierten
result[a] = nil
else
empty = false
end
end
end
end
end
Zeile 126: Zeile 162:
-- mw.log("textLimit(\"" .. text .. "\", " .. limit .. ")=\"" .. text_limited .. "\"")
-- mw.log("textLimit(\"" .. text .. "\", " .. limit .. ")=\"" .. text_limited .. "\"")
return text_limited
return text_limited
end
function p.InsertFullpage(frame)
local page = frame:getParent().args[1] or ""
return insertPage(frame, page)
end
function p.InsertSubpage(frame)
local page = frame:getParent().args[1] or ""
if page ~= "" then
page = p.fullpagename() .. "/" .. page
return insertPage(frame, page)
end
end
function insertPage(frame, page)
local t = ""
if page ~= "" then
if p.pageExists(page) then
-- Abschnitt-Überschrift
local abschnittueberschrift = frame:getParent().args[2] or ""
abschnittueberschrift = tonumber(abschnittueberschrift) or ""
if abschnittueberschrift ~= "" then
abschnittueberschrift = string.rep("=", abschnittueberschrift)
t = t .. abschnittueberschrift ..
"[[" .. page .. "|" .. page .. "]]" ..
abschnittueberschrift .. "\n"
end
-- Seite einfügen
local template_page = page
if string.find(template_page, ":") == nil then
template_page = ":" .. template_page
end
t = t .. "{{" .. template_page .. "}}"
-- Bearbeiten-Link
if abschnittueberschrift == "" then
t = t .. "<div style=\"float:right\"><small>" ..
"<nowiki>[</nowiki>[[" .. page ..
"|Bearbeiten]]<nowiki>]</nowiki>" ..
"</small></div>"
end
else
t = t .. "<nowiki>[</nowiki>[[" .. page ..
"|" .. page .. " erstellen]]<nowiki>]</nowiki>"
end
t = frame:preprocess(t)
end
return t
end
end


return p
return p