Modul:Faktenbox/Common: Unterschied zwischen den Versionen

Aus FürthWiki

+ fbdata.workmode
Keine Bearbeitungszusammenfassung
(+ fbdata.workmode)
 
(25 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
p = {}
local p = {}


local com = require("Modul:Common")
local com = require("Modul:Common")
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.faktenboxSemantikBrowsen_(fbdata)
function p.postprocess_(fbdata)
-- mw.log("faktenboxSemantikBrowsen_(fbdata)")
-- mw.log("postprocess_(fbdata)")
-- mw.logObject(fbdata)
-- mw.logObject(fbdata, "fbdata")
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.faktenboxSemantikBrowsen_{fullpagename="Rathaus"}
-- =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 = ""
t = t .. "<dl class = 'dataTable'>"
-- Transclude-Schutz (wurde als Unterseite inkludiert)
t = t .. "<dt>[[Bild:IconSearch.svg|16px|semantisches Browsen|link=[[Spezial:Durchsuchen/" .. fbdata.fullpagename .. "]]]]</dt>"
if not fbdata.transcluded then
t = t .. "<dd>[[Spezial:Durchsuchen/" .. fbdata.fullpagename .. "|Semantisches Browsen]]</dd>"
-- Klasse
t = t .. "</dl>"
if fbdata.klasse ~= nil then
smw.addAttrToList(fbdata.attr.list, "KlassenName", fbdata.klasse[1])
end
-- Formular
if fbdata.formular ~= nil then
fbdata.frame:callParserFunction("#default_form", fbdata.formular)
end
-- Kategorien
local ehemals_text = ""
if com.isTrue(fbdata.pargs["Ehemals"]) then
ehemals_text = " (ehemals)"
end
if fbdata.kategorie ~= nil then
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
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
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
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
return t
return t
end
end


function p.fbdata_(frame, fbdata)
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}}
fbdata.frame, fbdata.pargs = dev.GetFrameAndParentArgs(frame)
local fbdata = {}
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)
mw.logObject(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)
return fbdata
return fbdata
end
function p.addWartungsmeldung_(fbdata, wartungsmeldung)
smw.addAttrToList(fbdata.attr.list, "Wartungsmeldung", wartungsmeldung)
end
end


return p
return p