Modul:Faktenbox/Common: Unterschied zwischen den Versionen

+ fbdata.workmode
(.fullpagename)
(+ fbdata.workmode)
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 13: Zeile 13:
-- =p.postprocess_{frame=mw.getCurrentFrame();attr={list={}};formular="Gebäude/Work",klasse={"Gebäude","Kirche"},kategorie={"Gebäude","Kirchen"},strasse_hnr={suspekt=true},positionscheck=true,pargs={Bild="Angie Oeckl.JPG",Ehemals="Ja",DenkmalstatusBesteht="Ja",Stadtteil="Ronhof; Nordstadt ",location="bla"},pagename="Test/Test;Test"}
-- =p.postprocess_{frame=mw.getCurrentFrame();attr={list={}};formular="Gebäude/Work",klasse={"Gebäude","Kirche"},kategorie={"Gebäude","Kirchen"},strasse_hnr={suspekt=true},positionscheck=true,pargs={Bild="Angie Oeckl.JPG",Ehemals="Ja",DenkmalstatusBesteht="Ja",Stadtteil="Ronhof; Nordstadt ",location="bla"},pagename="Test/Test;Test"}
local t = ""
local t = ""
-- Klasse
-- Transclude-Schutz (wurde als Unterseite inkludiert)
if fbdata.klasse ~= nil then
if not fbdata.transcluded then
smw.addAttrToList(fbdata.attr.list, "KlassenName", fbdata.klasse[1])
-- Klasse
end
if fbdata.klasse ~= nil then
-- Formular
smw.addAttrToList(fbdata.attr.list, "KlassenName", fbdata.klasse[1])
if fbdata.formular ~= nil then
end
fbdata.frame:callParserFunction("#default_form", fbdata.formular)
-- Formular
end
if fbdata.formular ~= nil then
-- Kategorien
fbdata.frame:callParserFunction("#default_form", fbdata.formular)
local ehemals_text = ""
end
if com.isTrue(fbdata.pargs["Ehemals"]) then
-- Kategorien
ehemals_text = " (ehemals)"
local ehemals_text = ""
end
if com.isTrue(fbdata.pargs["Ehemals"]) then
if fbdata.kategorie ~= nil then
ehemals_text = " (ehemals)"
for _, k in ipairs(fbdata.kategorie) do
t = t .. "[[Kategorie:" .. k .. ehemals_text .. "]]"
end
end
end
if com.isTrue(fbdata.pargs["DenkmalstatusBesteht"]) then
t = t .. "[[Kategorie:Denkmalliste]]"
end
local stadtteil = str.splitAndStrip(fbdata.pargs["Stadtteil"], ";")
for _, s in ipairs(stadtteil) do
s = str.strip(tostring(s))
t = t .. "[[Kategorie:" .. s .. "]]"
end
-- Wartungs-Kategorien
if com.isEmpty(fbdata.pargs) then
t = t .. "[[Kategorie:Hat leere Faktenbox]]"
end
if fbdata.pargs["Bild"] == nil then
if fbdata.kategorie ~= nil then
if fbdata.kategorie ~= nil then
t = t .. "[[Kategorie:" .. fbdata.kategorie[1] .. " ohne Bild]]"
for _, k in ipairs(fbdata.kategorie) do
t = t .. "[[Kategorie:" .. k .. ehemals_text .. "]]"
end
end
if com.isTrue(fbdata.pargs["DenkmalstatusBesteht"]) then
t = t .. "[[Kategorie:Denkmalliste]]"
end
local stadtteil = str.splitAndStrip(fbdata.pargs["Stadtteil"], ";")
for _, s in ipairs(stadtteil) do
s = str.strip(tostring(s))
t = t .. "[[Kategorie:" .. s .. "]]"
end
-- Wartungs-Kategorien/Meldungen
if com.isEmpty(fbdata.pargs) then
p.addWartungsmeldung_(fbdata, "Faktenbox ohne Formular-Daten")
end
local bild = fbdata.pargs["Bild"]
if bild == nil then
p.addWartungsmeldung_(fbdata, "Faktenbox-Bild fehlt")
else
else
t = t .. "[[Kategorie:Ohne Bild]]"
if string.sub(bild, 1, 5) ~= "Bild:" and
string.sub(bild, 1, 6) ~= "Datei:" then
bild = "Datei:" .. bild
end
if not wik.pageExists(bild) then
p.addWartungsmeldung_(fbdata, "Faktenbox-Bild existiert nicht")
end
end
if string.find(fbdata.pagename, ";") ~= nil then
p.addWartungsmeldung_(fbdata, "Seitenname (Lemma) hat Semikolon")
end
if fbdata.strasse_hnr ~= nil then
if fbdata.strasse_hnr.suspekt then
p.addWartungsmeldung_(fbdata, "Gebäude mit verdächtiger Straße-Hausnummer-Kombination")
end
end
if fbdata.positionscheck and fbdata.kategorie ~= nil and fbdata.geoobjects == nil then
p.addWartungsmeldung_(fbdata, "Faktenbox-Karte (Position) fehlt")
end
end
elseif not wik.pageExists("Bild:" .. fbdata.pargs["Bild"]) then
if not com.isEmpty(fbdata.pargs["Schließungsdatum"]) and not com.isTrue(fbdata.pargs["Ehemals"]) then
t = t .. "[[Kategorie:Bild nicht gefunden]]"
p.addWartungsmeldung_(fbdata, "Schließungsdatum eingetragen, aber ohne Ehemals-Häkchen")
end
if string.find(fbdata.pagename, ";") ~= nil then
t = t .. "[[Kategorie:Hat Semikolon]]"
end
if string.find(fbdata.pagename, "/") ~= nil then
t = t .. "[[Kategorie:Hat Slash]]"
end
if fbdata.strasse_hnr ~= nil then
if fbdata.strasse_hnr.suspekt then
t = t .. "[[Kategorie:Gebäude mit verdächtiger Straße-Hausnummer-Kombination]]"
end
end
end
-- Attribute setzen
if fbdata.positionscheck and fbdata.kategorie ~= nil and fbdata.geoobjects == nil then
-- mw.logObject(fbdata.attr, "fbdata.attr")
t = t .. "[[Kategorie:" .. fbdata.kategorie[1] .. ehemals_text .. " ohne Position]]"
if not fbdata.attr.noattr then
end
-- Attribute setzen
-- mw.logObject(fbdata.attr, "fbdata.attr")
if not fbdata.attr.noattr then
if fbdata.attr.subid ~= nil then
mw.smw.subobject(fbdata.attr.list, fbdata.attr.subid)
else
mw.smw.set(fbdata.attr.list)
mw.smw.set(fbdata.attr.list)
end
end
Zeile 88: Zeile 90:
fbdata.pargs = wik.getArgs(fbdata.pargs) -- copy and emptyness removement
fbdata.pargs = wik.getArgs(fbdata.pargs) -- copy and emptyness removement
fbdata.args = wik.getArgs(fbdata.args)
fbdata.args = wik.getArgs(fbdata.args)
fbdata.workmode = com.isTrue(fbdata.pargs["Work"])
wik.setPagenames(fbdata)
wik.setPagenames(fbdata)
fbdata.klasse = {}
fbdata.klasse = {}
fbdata.attr = {list = {}}
fbdata.attr = {list = {}}
-- Seiten-Attribute setzen
smw.addAttrToList(fbdata.attr.list, "Seite", fbdata.fullpagename)
local topseite = string.sub(
fbdata.fullpagename, 1,
string.find(fbdata.fullpagename .. "/", "/") - 1)
smw.addAttrToList(fbdata.attr.list, "TopSeite", topseite)
-- check, ob es sich um eine transcludierte (inkludierte) Unterseite handelt
local hash = "FürthWiki"
for a, v in pairs (fbdata.pargs) do
hash = hash .. a .. v
end
hash = mw.hash.hashValue("md5", hash)
fbdata.attr.list["Hash"] = hash
local selector = "[[Seite::~" .. fbdata.fullpagename .. "/*]]" ..
"[[Hash::" .. hash .. "]]"
fbdata.transcluded = mw.smw.ask{selector, ["format"] = "count"} > 0
if fbdata.transcluded then -- in diesem Fall keine Attribute setzen
fbdata.attr.noattr = true
end
-- mw.logObject(fbdata)
-- mw.logObject(fbdata)
return fbdata
return fbdata
end
end


function p.subpagesPresent_(fbdata) -- Prüfung, ob Unterseiten mit gleicher Klasse
function p.addWartungsmeldung_(fbdata, wartungsmeldung)
return mw.smw.ask( -- vorhanden sind als Zeichen, dass
smw.addAttrToList(fbdata.attr.list, "Wartungsmeldung", wartungsmeldung)
"[[:+]][[Seite::~" .. fbdata.fullpagename .. "/*]]" .. -- diese wohl inkludiert wurden
"[[KlassenName::" .. fbdata.klasse[1] .. "]]|format=count") > 0
end
end


return p
return p