Modul:Datei: Unterschied zwischen den Versionen

fix Freiattribute
((automatisch erstellt) nicht fett)
(fix Freiattribute)
Zeile 14: Zeile 14:
-- =p.Dateibox{pargs={["fullpagename"]="Datei:test.jpg",["Genre"]="g1;g2",["Attribut1"]="a1",["Wert1"]="w1;w2"}}
-- =p.Dateibox{pargs={["fullpagename"]="Datei:test.jpg",["Genre"]="g1;g2",["Attribut1"]="a1",["Wert1"]="w1;w2"}}
-- =p.Dateibox{pargs={["fullpagename"]="Datei:test.jpg",["Beschreibung"]="Int. Tag gegen Gewalt an Frauen: Aktive vom ''Unabhängige Frauen Fürth e. V.'' an einem Infostand, Nov. 2019"}}
-- =p.Dateibox{pargs={["fullpagename"]="Datei:test.jpg",["Beschreibung"]="Int. Tag gegen Gewalt an Frauen: Aktive vom ''Unabhängige Frauen Fürth e. V.'' an einem Infostand, Nov. 2019"}}
-- =p.Dateibox{pargs={["fullpagename"]="Datei:test.jpg",["Attribut1"]="Gebäude",["Wert1"]="Wolfringstraße 1",["Attribut2"]="Gebäude",["Wert2"]="Königstraße 86"}}
local frame, pargs = dev.GetFrameAndParentArgs(frame)
local frame, pargs = dev.GetFrameAndParentArgs(frame)
local title = pargs["fullpagename"] or wik.fullpagename() -- pargs["fullpagename"] zum Testen/Debuggen
local title = pargs["fullpagename"] or wik.fullpagename() -- pargs["fullpagename"] zum Testen/Debuggen
Zeile 33: Zeile 34:


-- Freiattribute
-- Freiattribute
local aw = {}
local aw_fail = false
for i = 1, 6 do
for i = 1, 6 do
local a = pargs["Attribut" .. i] or ""
local a = pargs["Attribut" .. i] or ""
local w = pargs["Wert" .. i] or ""
local w = pargs["Wert" .. i] or ""
if a ~= "" then
if a ~= "" and  w ~= "" then
if w ~= "" then
aw[a] = (aw[a] or "") .. w .. ";" -- Werte zusammenführen
if a == "Gebäude" then -- zusätzlich Gebäude nach StraßeHnr suchen und hinzufügen
elseif a ~= "" or  w ~= "" then
for _, e in ipairs(str.splitAndStrip(w, ";")) do
aw_fail = true
local q = mw.smw.ask("[[:+]][[StraßeHnr::" .. e .. "]]|?#-")
end
for _, g in ipairs(q or {}) do
end
w = w .. "; " .. g[1]
if aw_fail then
end
t = t .. "[[Kategorie:Freiattribut-Fehler]]"
end
for a, w in pairs(aw) do
if a == "Gebäude" then -- zusätzlich Gebäude nach StraßeHnr suchen und hinzufügen
local gebaeude_wert = {}
for _, e in ipairs(str.splitAndStrip(w, ";")) do -- direkt über Wertx angegebene Gebäude
gebaeude_wert[e] = true
end
local gebaeude_query = {}
for g, _ in pairs(gebaeude_wert) do -- über query ermittelte Gebäude
local q = "[[:+]][[Kategorie:Gebäude]][[StraßeHnr::" .. g .. "]]|?#-"
q = mw.smw.ask(q) or {}
for _, qg in ipairs(q) do
qg = qg[1]
if gebaeude_wert[qg] ~= true then -- nur, wenn nicht schon direkt angegeben (auch nil!)
gebaeude_query[qg] = true
end
end
end
end
v = p.attrValList(a, {[a] = w})
t = t .. p.attrZeile(a, v)
else
t = t .. "[[Kategorie:Freiattribut-Fehler]]"
end
end
elseif w ~= "" then
v = "" -- jetzt den Anzeigetext zusammenbauen
t = t .. "[[Kategorie:Freiattribut-Fehler]]"
for g, _ in pairs(gebaeude_wert) do -- erst die direkt angegebenen Gebäude
if v ~= "" then
v = v .. ", "
end
v = v .. "[[" .. a .. "::" .. g .. "]]"
end
local v_query = ""     -- dann die via query ermittelten Gebäude
for g, _ in pairs(gebaeude_query) do
if v_query ~= "" then
v_query = v_query .. ", "
end
v_query = v_query .. "[[" .. a .. "::" .. g .. "]]"
end
if v_query ~= "" then
v = v .. "<br>automatisch ermittelt über Straße/Hausnummer: " .. v_query
end
else
v = p.attrValList(a, {[a] = w})
end
end
t = t .. p.attrZeile(a, v)
end
end


Zeile 136: Zeile 168:
end
end
if dateiinfo ~= "" then
if dateiinfo ~= "" then
t = t .. p.zeile("[[Attribut:Dateiinfo|Dateiinfo]] '''(automatisch erstellt)''' ", "[[Dateiinfo::" .. dateiinfo .. "]]")
t = t .. p.zeile("[[Attribut:Dateiinfo|Dateiinfo]] '''<br>(automatisch erstellt)''' ", "[[Dateiinfo::" .. dateiinfo .. "]]")
end
end