Modul:Faktenbox: Unterschied zwischen den Versionen

+ Faktenbox(), datenTabUniversal(), kartenTab()
(rework fbdata)
(+ Faktenbox(), datenTabUniversal(), kartenTab())
Zeile 8: Zeile 8:
local lfd = require("Modul:LinkFormDatum")
local lfd = require("Modul:LinkFormDatum")


function p.zeile(attr_name, val, attr_text)
function p.Faktenbox(frame)
-- mw.log("zeile(" .. (attr_name or "nil") .. ", val, " .. (attr_text or "nil") .. ")")
-- mw.log("Faktenbox(frame)")
-- mw.logObject(val or {})
-- mw.logObject(frame)
-- Konsolenzeile zum Debuggen:
-- =p.Faktenbox{pargs={Bild="Schwabacher Straße 12 Dez 2020 1.jpg",["Straße"]="Schwabacher Straße",location="Rathaus Fürth",Objekt="Häusle"}}
 
-- Basis-Faktenbox-Daten (Klasse/Kategorie/Formular)
-- Kein(e) Klasse/Kategorie/Formular!
local fbdata = p.fbdata(frame)
 
-- Tabs einsammeln und zusammenfügen
local box =
"<div class = factbox><tabs>" ..
p.bildTab(fbdata) ..
p.kartenTab(fbdata) ..
p.datenTabUniversal(fbdata) ..
"</tabs></div>"
 
-- Sonstige gemeinsame Dinge anfügen (Klasse, Formular, Kategorien, Wartung, ...)
box = box .. p.common(fbdata, false)
mw.log("box = " .. box)
 
-- Pre-Processing und String-Länge checken
box = fbdata.frame:preprocess(box)
box = box .. com.returnStringCheck(box)
-- mw.log("box = " .. box)
return box
end
 
function p.datenTabUniversal(fbdata)
-- mw.log("datenTab(fbdata)")
-- mw.logObject(fbdata)
-- Konsolenzeile zum Debuggen (Achtung! Bug in Fehlerbereinigungskonsole! Kann nur 1x ausgeführt werden!):
-- fab=require("Modul:Faktenbox/Work"); fbdata=p.fbdata{pargs={lat="Bla", Objekt="Häusle", Test="BlaBla"}}; print(p.datenTab(fbdata))
local t = ""
local t = ""
if mw.smw.getPropertyType(attr_name) ~= nil then
local no_show_attr = {
if type(val) ~= "table" then
["Bild"] = true,
val = str.splitAndStrip(val or "", ";")
["lat"] = true, ["lon"] = true, ["location"] = true,["locationlist"] = true, ["geojson"] = true,
["zoom"] = true, ["popuptitle"] = true, ["popuptext"] = true
}
 
-- Zusammenbau
t = t .. "<dl class = 'dataTable'>"
for a, _ in pairs(fbdata.pargs) do
if not com.isTrue(no_show_attr[a]) then
t = t .. p.zeilePargs(fbdata, {a})
end
end
if #val > 0 then
end
t = t .. "<dt>" .. "[[Attribut:" .. attr_name .. "|" .. (attr_text or attr_name) .. "]]</dt><dd>"
t = t .. "</dl>"
for i, v in ipairs(val) do
t = t .. p.faktenboxSemantikBrowsen(fbdata)
if i > 1 then
 
t = t .. ", "
-- Tab draus machen
end
t = p.tab(t, "Daten")
t = t .. "[[" .. attr_name .. "::" .. v .. "]]"
-- mw.log("t = " .. t)
end
    return t
t = t .. "</dd>"
end
 
function p.bildTab(fbdata, seite)
-- mw.log("bild(fbdata, " .. (seite or "nil") .. ")")
-- mw.logObject(fbdata.pargs)
-- Konsolenzeile zum Debuggen:
-- =p.bildTab{pargs={Bild="Erloeserkirche.jpg"}}
local t = ""
local beschreibung = que.getValues("Datei:" .. (fbdata.pargs.Bild or ""), "Beschreibung")
local beschreibung = beschreibung[1] or ""
if not com.isEmpty(fbdata.pargs.Bild) and wik.pageexists("Bild:" .. fbdata.pargs.Bild) then
t = t .. '{| class = "factbox_imagetable" border = "0" cellpadding = "0" cellspacing = "0" width = "100%"\n'
t = t .. '|-\n'
t = t .. '|[[Bild::Datei:' .. fbdata.pargs.Bild .. '|768px|link=' .. (seite or '') .. ']]\n'
if beschreibung ~= "" then
t = t .. '|-\n'
t = t .. '|' .. beschreibung .. '\n'
end
end
t = t .. '|}'
end
end
-- Tab draus machen
t = p.tab(t, "Bild")
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
return t
return t
end
end


function p.zeilePargs(fbdata, attr_names)
function p.kartenTab(fbdata)
-- mw.log("zeilePargs(fbdata, " .. (attr_name or "nil") .. ", " .. (attr_text or "nil") .. ")")
-- mw.log("kartenTab(fbdata)")
-- mw.logObject(fbdata.pargs or {})
-- mw.logObject(fbdata)
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.zeilePargs({pargs={test=123,TeilDesEnsembles="bla"}}, {"test","TeilDesEnsembles","Blub"})
-- fab=require("Modul:Faktenbox/Work"); fbdata=p.fbdata{pargs={["location"]="Erlanger Straße 11, Fürth, Bayern, Deutschland"}}; print(p.kartenTab(fbdata))
local t = ""
t = ""
local attr_text = {
if string.find(fbdata.pagename, ";") ~= nil then
["TeilDesEnsembles"]="Teil des Ensembles",
t = "Semikolon im Artikel-/Seitennamen für korrekte Kartendarstellung nicht erlaubt!"
["TeilDesAreals"]="Teil des Areals",
else
["TeilDesGebäudeKomplexes"]="Teil des Gebäude-Komplexes",
local args_karte = com.shallowcopy(fbdata.pargs)
["DenkmalstatusBesteht"]="Denkmalstatus besteht"
args_karte["Debug"] = "Nein"
}
t = fbdata.frame:expandTemplate{title = "CommonTabs/Karte", args = args_karte}
for _, a in ipairs(attr_names) do
t = t .. p.zeile(a, fbdata.pargs[a], attr_text[a])
end
end
-- Tab draus machen
t = p.tab(t, "Karte")
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
return t
return t
Zeile 153: Zeile 211:
t = t .. lfd.linkFormDate(date, args.attr_date, args.attr_day, args.attr_year)
t = t .. lfd.linkFormDate(date, args.attr_date, args.attr_day, args.attr_year)
t = t .. "</dd>"
t = t .. "</dd>"
end
-- mw.log("t = " .. t)
return t
end
function p.zeilePargs(fbdata, attr_names)
-- mw.log("zeilePargs(fbdata, " .. (attr_name or "nil") .. ", " .. (attr_text or "nil") .. ")")
-- mw.logObject(fbdata.pargs or {})
-- Konsolenzeile zum Debuggen:
-- =p.zeilePargs({pargs={test=123,TeilDesEnsembles="bla"}}, {"test","TeilDesEnsembles","Blub"})
local t = ""
local attr_text = {
["TeilDesEnsembles"]="Teil des Ensembles",
["TeilDesAreals"]="Teil des Areals",
["TeilDesGebäudeKomplexes"]="Teil des Gebäude-Komplexes",
["DenkmalstatusBesteht"]="Denkmalstatus besteht"
}
for _, a in ipairs(attr_names) do
t = t .. p.zeile(a, fbdata.pargs[a], attr_text[a])
end
-- mw.log("t = " .. t)
return t
end
function p.zeile(attr_name, val, attr_text)
-- mw.log("zeile(" .. (attr_name or "nil") .. ", val, " .. (attr_text or "nil") .. ")")
-- mw.logObject(val or {})
local t = ""
if mw.smw.getPropertyType(attr_name) ~= nil then
if type(val) ~= "table" then
val = str.splitAndStrip(val or "", ";")
end
if #val > 0 then
t = t .. "<dt>" .. "[[Attribut:" .. attr_name .. "|" .. (attr_text or attr_name) .. "]]</dt><dd>"
for i, v in ipairs(val) do
if i > 1 then
t = t .. ", "
end
t = t .. "[[" .. attr_name .. "::" .. v .. "]]"
end
t = t .. "</dd>"
end
end
end
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
Zeile 168: Zeile 268:
t = t .. "<dd>[[Spezial:Durchsuchen/" .. fbdata.fullpagename .. "|Semantisches Browsen]]</dd>"
t = t .. "<dd>[[Spezial:Durchsuchen/" .. fbdata.fullpagename .. "|Semantisches Browsen]]</dd>"
t = t .. "</dl>"
t = t .. "</dl>"
-- mw.log("t = " .. t)
return t
end
function p.bildTab(fbdata, seite)
-- mw.log("bild(fbdata, " .. (seite or "nil") .. ")")
-- mw.logObject(fbdata.pargs)
-- Konsolenzeile zum Debuggen:
-- =p.bildTab{pargs={Bild="Erloeserkirche.jpg"}}
local t = ""
local beschreibung = que.getValues("Datei:" .. (fbdata.pargs.Bild or ""), "Beschreibung")
local beschreibung = beschreibung[1] or ""
if not com.isEmpty(fbdata.pargs.Bild) and wik.pageexists("Bild:" .. fbdata.pargs.Bild) then
t = t .. '{| class = "factbox_imagetable" border = "0" cellpadding = "0" cellspacing = "0" width = "100%"\n'
t = t .. '|-\n'
t = t .. '|[[Bild::Datei:' .. fbdata.pargs.Bild .. '|768px|link=' .. (seite or '') .. ']]\n'
if beschreibung ~= "" then
t = t .. '|-\n'
t = t .. '|' .. beschreibung .. '\n'
end
t = t .. '|}'
end
-- Tab draus machen
t = p.tab(t, "Bild")
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
return t
return t
Zeile 197: Zeile 273:


function p.common(fbdata, positionscheck)
function p.common(fbdata, positionscheck)
mw.log("common(fbdata)")
-- mw.log("common(fbdata)")
mw.logObject(fbdata)
-- mw.logObject(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.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"}
local t = ""
local t = ""
-- Klasse
-- Klasse
t = t .. "{{#set:KlassenName=" .. fbdata.klasse[1] .. "}}"
if fbdata.klasse ~= nil then
t = t .. "{{#set:KlassenName=" .. fbdata.klasse[1] .. "}}"
end
-- Formular
-- Formular
t = t .. "{{#default_form:" .. fbdata.formular .. "}}"
if fbdata.formular ~= nil then
t = t .. "{{#default_form:" .. fbdata.formular .. "}}"
end
-- Kategorien
-- Kategorien
local ehemals_text = ""
local ehemals_text = ""
Zeile 211: Zeile 291:
ehemals_text = " (ehemals)"
ehemals_text = " (ehemals)"
end
end
for _, k in ipairs(fbdata.kategorie) do
if fbdata.kategorie ~= nil then
t = t .. "[[Kategorie:" .. k .. ehemals_text .. "]]"
for _, k in ipairs(fbdata.kategorie) do
t = t .. "[[Kategorie:" .. k .. ehemals_text .. "]]"
end
end
end
if com.isTrue(fbdata.pargs.DenkmalstatusBesteht) then
if com.isTrue(fbdata.pargs.DenkmalstatusBesteht) then
Zeile 224: Zeile 306:
-- Wartungs-Kategorien
-- Wartungs-Kategorien
if com.isEmpty(fbdata.pargs.Bild) then
if com.isEmpty(fbdata.pargs.Bild) then
t = t .. "[[Kategorie:" .. fbdata.kategorie[1] .. " ohne Bild]]"
if fbdata.kategorie ~= nil then
t = t .. "[[Kategorie:" .. fbdata.kategorie[1] .. " ohne Bild]]"
else
t = t .. "[[Kategorie:Ohne Bild]]"
end
elseif not wik.pageexists("Bild:" .. fbdata.pargs.Bild) then
elseif not wik.pageexists("Bild:" .. fbdata.pargs.Bild) then
t = t .. "[[Kategorie:Bild nicht gefunden]]"
t = t .. "[[Kategorie:Bild nicht gefunden]]"
Zeile 234: Zeile 320:
t = t .. "[[Kategorie:Hat Slash]]"
t = t .. "[[Kategorie:Hat Slash]]"
end
end
if fbdata.strasse_hnr.suspekt then
if not com.isEmpty(fbdata.strasse_hnr) then
t = t .. "[[Kategorie:Gebäude mit verdächtiger Straße-Hausnummer-Kombination]]"
if fbdata.strasse_hnr.suspekt then
t = t .. "[[Kategorie:Gebäude mit verdächtiger Straße-Hausnummer-Kombination]]"
end
end
end
if fbdata.positionscheck and (fbdata.pargs.lat or "") == "" and (fbdata.pargs.lon or "") == "" and
if fbdata.positionscheck and (fbdata.pargs.lat or "") == "" and (fbdata.pargs.lon or "") == "" and
  (fbdata.pargs.location or "") == "" and not wik.pageexists("GeoJson:" .. (fbdata.pargs.geojson or fbdata.pagename)) then
  (fbdata.pargs.location or "") == "" and not wik.pageexists("GeoJson:" .. (fbdata.pargs.geojson or fbdata.pagename)) and
fbdata.kategorie ~= nil then
t = t .. "[[Kategorie:" .. fbdata.kategorie[1] .. ehemals_text .. " ohne Position]]"
t = t .. "[[Kategorie:" .. fbdata.kategorie[1] .. ehemals_text .. " ohne Position]]"
end
end