Modul:Faktenbox/Common: Unterschied zwischen den Versionen

+ fbdata.workmode
(fix)
(+ fbdata.workmode)
 
(17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:
local str = require("Modul:String")
local str = require("Modul:String")
local wik = require("Modul:Wiki")
local wik = require("Modul:Wiki")
local smw = require("Modul:SMW")


function p.common_(fbdata)
function p.postprocess_(fbdata)
-- mw.log("common_(fbdata)")
-- mw.log("postprocess_(fbdata)")
-- mw.logObject(fbdata)
-- mw.logObject(fbdata, "fbdata")
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.common_{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 = "{{#set:HatFaktenbox=wahr}}"
local t = ""
-- Klasse
-- Transclude-Schutz (wurde als Unterseite inkludiert)
if fbdata.klasse ~= nil then
if not fbdata.transcluded then
t = t .. "{{#set: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
t = t .. "{{#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"] or "", ";")
for _, s in ipairs(stadtteil) do
s = str.strip(tostring(s or ""))
t = t .. "[[Kategorie:" .. s .. "]]"
end
-- Wartungs-Kategorien
if (fbdata.pargs["Bild"] or "") == "" 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
end
elseif not wik.pageExists("Bild:" .. fbdata.pargs["Bild"]) then
if string.find(fbdata.pagename, ";") ~= nil then
t = t .. "[[Kategorie:Bild nicht gefunden]]"
p.addWartungsmeldung_(fbdata, "Seitenname (Lemma) hat Semikolon")
end
end
if string.find(fbdata.pagename, ";") ~= nil then
if fbdata.strasse_hnr ~= nil then
t = t .. "[[Kategorie:Hat Semikolon]]"
if fbdata.strasse_hnr.suspekt then
end
p.addWartungsmeldung_(fbdata, "Gebäude mit verdächtiger Straße-Hausnummer-Kombination")
if string.find(fbdata.pagename, "/") ~= nil then
end
t = t .. "[[Kategorie:Hat Slash]]"
end
end
if fbdata.positionscheck and fbdata.kategorie ~= nil and fbdata.geoobjects == nil then
if fbdata.strasse_hnr ~= nil then
p.addWartungsmeldung_(fbdata, "Faktenbox-Karte (Position) fehlt")
if fbdata.strasse_hnr.suspekt then
end
t = t .. "[[Kategorie:Gebäude mit verdächtiger Straße-Hausnummer-Kombination]]"
if not com.isEmpty(fbdata.pargs["Schließungsdatum"]) and not com.isTrue(fbdata.pargs["Ehemals"]) then
p.addWartungsmeldung_(fbdata, "Schließungsdatum eingetragen, aber ohne Ehemals-Häkchen")
end
-- Attribute setzen
-- mw.logObject(fbdata.attr, "fbdata.attr")
if not fbdata.attr.noattr then
mw.smw.set(fbdata.attr.list)
end
end
end
if fbdata.positionscheck and fbdata.kategorie ~= nil and
not ((fbdata.pargs["lat"] or "") ~= "" or (fbdata.pargs["lon"] or "") ~= "" or
(fbdata.pargs["location"] or "") ~= "" or wik.pageExists("GeoJson:" .. (fbdata.pargs["geojson"] or fbdata.pagename))) then
t = t .. "[[Kategorie:" .. fbdata.kategorie[1] .. ehemals_text .. " ohne Position]]"
end
end
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
Zeile 68: Zeile 81:
end
end


function p.fbdata_(frame)
function p.getFbdata_(frame)
-- mw.log("fbdata_(frame)")
-- mw.log("getFbdata_(frame)")
-- mw.logObject(frame)
-- mw.logObject(fbdata, "fbdata")
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.fbdata_{pargs={a=1}}
-- =p.fbdata_{pargs={a=1}}
local fbdata = {}
local fbdata = {}
fbdata.frame, fbdata.pargs = dev.GetFrameAndParentArgs(frame)
fbdata.frame, fbdata.pargs, fbdata.args = dev.GetFrameAndParentArgs(frame)
fbdata.pargs = wik.getArgs(fbdata.pargs) -- copy and emptyness removement
fbdata.args = wik.getArgs(fbdata.args)
fbdata.workmode = com.isTrue(fbdata.pargs["Work"])
wik.setPagenames(fbdata)
wik.setPagenames(fbdata)
fbdata.klasse = {}
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
function p.addWartungsmeldung_(fbdata, wartungsmeldung)
smw.addAttrToList(fbdata.attr.list, "Wartungsmeldung", wartungsmeldung)
end
end


return p
return p