Modul:Faktenbox: Unterschied zwischen den Versionen

rework fbdata
(Geo anstelle Geocode)
(rework fbdata)
Zeile 1: Zeile 1:
p = {}
p = {}
local com = require("Modul:Common")
local com = require("Modul:Common")
local dev = require("Modul:Development")
local str = require("Modul:String")
local str = require("Modul:String")
local wik = require("Modul:Wiki")
local wik = require("Modul:Wiki")
Zeile 30: Zeile 31:
end
end


function p.zeileKategorieSeite(klasse, kategorie)
function p.zeilePargs(fbdata, attr_names)
-- mw.log("zeileKategorieSeite(" .. kategorie .. ")")
-- 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.zeileKategorieSeite(fbdata, kindex)
-- mw.log("zeileKategorieSeite(fbdata, " .. (kindex or 1) .. ")")
-- mw.logObject(fbdata)
-- Konsolenzeile zum Debuggen:
-- =p.zeileKategorieSeite({fullpagename="fpn",kategorie={"kat1","kat2"},klasse={"kla1","kla2"}}, 2)
local t = ""
local t = ""
local fullpagename = wik.fullpagename()
t = t .. "<dt>[[:Kategorie:" .. fbdata.kategorie[kindex or 1] .. "|" .. fbdata.klasse[kindex or 1] .. "]]</dt><dd>[[Seite::" .. fbdata.fullpagename .. "]]</dd>"
t = t .. "<dt>[[:Kategorie:" .. kategorie .. "|" .. klasse .. "]]</dt><dd>[[Seite::" .. fullpagename .. "]]</dd>"
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
return t
return t
end
end


function p.zeileStrasseHnr(strasse_hnr)
function p.zeileStrasseHnr(fbdata)
-- mw.log("zeileStrasseHnr(strasse_hnr)")
-- mw.log("zeileStrasseHnr(fbdata)")
-- mw.logObject(strasse_hnr)
-- mw.logObject(fbdata.strasse_hnr)
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.zeileStrasseHnr({strasse = {{name = "Erlanger Straße", hausnummer = {"11", "13"}}, {name = "XY Straße" , hausnummer = {}}}})
-- =p.zeileStrasseHnr{strasse_hnr={strasse={{name="Erlanger Straße",hausnummer={"11", "13"}},{name="XY Straße",hausnummer={}}},anzahlGebaeude=3}}
local t = ""
local t = ""
for is, sh in ipairs(strasse_hnr.strasse) do -- Straßen/Hausnummer-Kombis durchiterieren
for is, sh in ipairs(fbdata.strasse_hnr.strasse) do -- Straßen/Hausnummer-Kombis durchiterieren
t = t .. "<dt>"
t = t .. "<dt>"
if is > 1 then
if is > 1 then
t = t .. is .. ". " -- Numerierungsanzeige "2., "3." usw.
t = t .. is .. ". " -- Numerierungsanzeige "2., "3." usw.
else
else
is = "" -- kein 2, 3, ... für weitere Verwendung
is = "" -- keine 1, aber 2, 3, ... für weitere Verwendung
end
end
t = t .. "[[Attribut:Straße|Straße]]"
t = t .. "[[Attribut:Straße" .. is .. "|Straße]]"
if #sh.hausnummer > 0 then
if #sh.hausnummer > 0 then
t = t .. " / " .. "[[Attribut:Hausnummer|Hausnummer]]" -- nur wenn Hausnummern vorhanden
t = t .. " / " .. "[[Attribut:Hausnummer" .. is .. "|Hausnummer]]" -- nur wenn Hausnummern vorhanden
end
end
t = t .. "</dt><dd>[[Straße" .. is .. "::" .. sh.name .. "]]"
t = t .. "</dt><dd>[[Straße" .. is .. "::" .. sh.name .. "]]"
Zeile 67: Zeile 89:
t = t .. " " .. h
t = t .. " " .. h
end
end
mw.smw.set({["Hausnummer" .. is] = h, ["StraßeHnr"] = strasse_hnr_})
t = t .. "{{#set:Hausnummer" .. is .. "=" .. h .. "|StraßeHnr=" .. strasse_hnr_ .. "}}"
end
end
t = t .. "</dd>"
t = t .. "</dd>"
end
end
mw.smw.set({["AnzahlGebäude"] = strasse_hnr.anzahlGebaeude})
t = t .. "{{#set:AnzahlGebäude=" .. fbdata.strasse_hnr.anzahlGebaeude .. "}}"
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
return t
return t
end
end


function p.zeilenDenkmalschutz(denkmalstatusbesteht, aktennr)
function p.zeileAktenNr(fbdata)
-- mw.log("zeilenDenkmalschutz(" .. (denkmalstatusbesteht or "nil") .. ", " .. (aktennr or "nil") .. ")")
-- mw.log("zeileAktenNr(fbdata)")
-- Konsolenzeile zum Debuggen: =p.zeilenDenkmalschutz("Ja","D-5-63-000-1464")
-- mw.logObject(fbdata.pargs)
-- Konsolenzeile zum Debuggen:
-- =p.zeileAktenNr{pargs={AktenNr="D-5-63-000-1464"}}
local t = ""
local t = ""
if com.isTrue(denkmalstatusbesteht) then
local aktennr = str.splitAndStrip(fbdata.pargs.AktenNr or "", ";")
t = t .. p.zeile("DenkmalstatusBesteht", denkmalstatusbesteht, "Denkmalstatus besteht")
if #aktennr > 0 then
aktennr = str.splitAndStrip(aktennr or "", ";")
t = t .. "<dt>" .. "[[Attribut:AktenNr|Akten-Nr.]]</dt><dd>"
if #aktennr > 0 then
for i, a in ipairs(aktennr) do
t = t .. "<dt>" .. "[[Attribut:AktenNr|Akten-Nr.]]</dt><dd>"
if i > 1 then
for i, a in ipairs(aktennr) do
t = t .. ",<br>"
if i > 1 then
t = t .. ",<br>"
end
t = t .. "{{#queryformlink:form=Abfrage Denkmalschutz|link text=[[AktenNr::" .. a .. "]]|query string=Abfrage Denkmalschutz[AktenNr]=" .. a .. "&_run}}"
p = que.getPages("[[:+]][[AktenNr::" .. a .. "]]", true)
t = t .. " (" .. #p .. ")"
end
end
t = t .. "</dd>"
t = t .. "{{#queryformlink:form=Abfrage Denkmalschutz|link text=[[AktenNr::" .. a .. "]]|query string=Abfrage Denkmalschutz[AktenNr]=" .. a .. "&_run}}"
local p = que.getPages("[[:+]][[AktenNr::" .. a .. "]]", true)
t = t .. " (" .. #p .. ")" -- Anzahl der Artikel mit dieser Akten-Nr. in Klammern
end
end
t = t .. "</dd>"
end
end
-- mw.log("t=" .. t)
-- mw.log("t=" .. t)
Zeile 100: Zeile 121:
end
end


function p.zeileGeokoordinate(frame, noframe)
function p.zeileGeokoordinate(fbdata)
-- mw.log("zeileGeokoordinate()")
-- mw.log("zeileGeokoordinate()")
-- mw.logObject(fbdata)
-- Konsolenzeile zum Debuggen:
-- fbdata=p.fbdata{pargs={}}; fbdata.fullpagename="Isaak-Loewi-Straße 1, 3, 5, 7, 9, Liesl-Kießling-Straße 16"; print(p.zeileGeokoordinate(fbdata))
local t = ""
local t = ""
local fullpagename = wik.fullpagename()
local geokoordinate = que.getValues(fbdata.fullpagename, "Geokoordinate", true)
local geokoordinate = que.getValues(fullpagename, "Geokoordinate", true)
if #geokoordinate > 0 then
if #geokoordinate > 0 then
t = t .. "<dt>[[Attribut:Geokoordinate|Geokoordinate]]</dt><dd>"
t = t .. "<dt>[[Attribut:Geokoordinate|Geokoordinate]]</dt><dd>"
Zeile 111: Zeile 134:
t = t .. ",<br>"
t = t .. ",<br>"
end
end
if noframe then
t = t .. geo.osmLink(fbdata.frame, g)
t = t .. g
else
t = t .. geo.osmLink(frame, g)
end
end
end
t = t .. "</dd>"
t = t .. "</dd>"
Zeile 127: Zeile 146:
-- mw.logObject(args)
-- mw.logObject(args)
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.zeileDatum({attr_date="Weihedatum",date="1959/11/15",attr_day="Weihetag",attr_year="Weihejahr"})
-- =p.zeileDatum{attr_date="Weihedatum",date="1959/11/15",attr_day="Weihetag",attr_year="Weihejahr"}
local t = ""
local t = ""
local date = str.strip(args.date or "")
local date = str.strip(args.date or "")
Zeile 139: Zeile 158:
end
end


function p.faktenboxSemantikBrowsen()
function p.faktenboxSemantikBrowsen(fbdata)
-- mw.log("faktenboxSemantikBrowsen()")
-- mw.log("faktenboxSemantikBrowsen(fbdata)")
-- mw.logObject(fbdata)
-- Konsolenzeile zum Debuggen:
-- =p.faktenboxSemantikBrowsen{pargs={Bild="Erloeserkirche.jpg"}}
local t = ""
local t = ""
t = t .. "<dl class = 'dataTable'>"
t = t .. "<dl class = 'dataTable'>"
t = t .. "<dt>[[Bild:IconSearch.svg|16px|semantisches Browsen|link=[[Spezial:Durchsuchen/{{FULLPAGENAME}}]]]]</dt>"
t = t .. "<dt>[[Bild:IconSearch.svg|16px|semantisches Browsen|link=[[Spezial:Durchsuchen/" .. fbdata.fullpagename .. "]]]]</dt>"
t = t .. "<dd>[[Spezial:Durchsuchen/{{FULLPAGENAME}}|semantisches Browsen]]</dd>"
t = t .. "<dd>[[Spezial:Durchsuchen/" .. fbdata.fullpagename .. "|Semantisches Browsen]]</dd>"
t = t .. "</dl>"
t = t .. "</dl>"
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
Zeile 150: Zeile 172:
end
end


function p.bildTab(bild, seite)
function p.bildTab(fbdata, seite)
-- mw.log("bild(" .. (bild or "nil") .. ", " .. (seite or "nil") .. ")")
-- mw.log("bild(fbdata, " .. (seite or "nil") .. ")")
-- mw.logObject(fbdata.pargs)
-- Konsolenzeile zum Debuggen:
-- =p.bildTab{pargs={Bild="Erloeserkirche.jpg"}}
local t = ""
local t = ""
local beschreibung = que.getValues("Datei:" .. (bild or ""), "Beschreibung")
local beschreibung = que.getValues("Datei:" .. (fbdata.pargs.Bild or ""), "Beschreibung")
local beschreibung = beschreibung[1] or ""
local beschreibung = beschreibung[1] or ""
if not com.isEmpty(bild) and wik.pageexists("Bild:" .. bild) then
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 .. '{| class = "factbox_imagetable" border = "0" cellpadding = "0" cellspacing = "0" width = "100%"\n'
t = t .. '|-\n'
t = t .. '|-\n'
t = t .. '|[[Bild::Datei:' .. bild .. '|768px|link=' .. (seite or '') .. ']]\n'
t = t .. '|[[Bild::Datei:' .. fbdata.pargs.Bild .. '|768px|link=' .. (seite or '') .. ']]\n'
if beschreibung ~= "" then
if beschreibung ~= "" then
t = t .. '|-\n'
t = t .. '|-\n'
Zeile 171: Zeile 196:
end
end


function p.common(args)
function p.common(fbdata, positionscheck)
-- mw.log("common(args)")
mw.log("common(fbdata)")
-- mw.logObject(args)
mw.logObject(fbdata)
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.common{formular="Gebäude/Work",bild="Angie Oeckl.JPG",klasse="Klasse",kategorie="Gebäude",strasse_hnr={suspekt=true},ehemals="Ja",denkmalstatusbesteht="Ja",stadtteil="Ronhof; Nordstadt "}
-- =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
t = t .. "{{#set:KlassenName=" .. fbdata.klasse[1] .. "}}"
-- Formular
-- Formular
t = t .. "{{#default_form:" .. args.formular .. "}}"
t = t .. "{{#default_form:" .. fbdata.formular .. "}}"
 
-- Kategorien
-- Kategorien
if com.isTrue(args.ehemals) then
local ehemals_text = ""
t = t .. "[[Kategorie:" .. args.kategorie .. " (ehemals)]]"
if com.isTrue(fbdata.pargs.Ehemals) then
else
ehemals_text = " (ehemals)"
t = t .. "[[Kategorie:" .. args.kategorie .. "]]"
end
end
if args.kategorie2 ~= nil then
for _, k in ipairs(fbdata.kategorie) do
if com.isTrue(args.ehemals) then
t = t .. "[[Kategorie:" .. k .. ehemals_text .. "]]"
t = t .. "[[Kategorie:" .. args.kategorie2 .. " (ehemals)]]"
else
t = t .. "[[Kategorie:" .. args.kategorie2 .. "]]"
end
end
end
if com.isTrue(args.denkmalstatusbesteht) then
if com.isTrue(fbdata.pargs.DenkmalstatusBesteht) then
t = t .. "[[Kategorie:Denkmalliste]]"
t = t .. "[[Kategorie:Denkmalliste]]"
end
end
local stadtteil = str.splitAndStrip(args.stadtteil or "", ";")
local stadtteil = str.splitAndStrip(fbdata.pargs.Stadtteil or "", ";")
for _, s in ipairs(stadtteil) do
for _, s in ipairs(stadtteil) do
s = str.strip(tostring(s or ""))
s = str.strip(tostring(s or ""))
t = t .. "[[Kategorie:" .. s .. "]]"
t = t .. "[[Kategorie:" .. s .. "]]"
end
end
-- Wartungs-Kategorien
-- Wartungs-Kategorien
if com.isEmpty(args.bild) then
if com.isEmpty(fbdata.pargs.Bild) then
t = t .. "[[Kategorie:" .. args.kategorie .. " ohne Bild]]"
t = t .. "[[Kategorie:" .. fbdata.kategorie[1] .. " ohne Bild]]"
elseif not wik.pageexists("Bild:" .. args.bild) then
elseif not wik.pageexists("Bild:" .. fbdata.pargs.Bild) then
t = t .. "[[Kategorie:Bild nicht gefunden]]"
t = t .. "[[Kategorie:Bild nicht gefunden]]"
end
end
local pagename = wik.pagename()
if string.find(fbdata.pagename, ";") ~= nil then
if string.find(pagename, ";") ~= nil then
t = t .. "[[Kategorie:Hat Semikolon]]"
t = t .. "[[Kategorie:Hat Semikolon]]"
end
end
if string.find(pagename, "/") ~= nil then
if string.find(fbdata.pagename, "/") ~= nil then
t = t .. "[[Kategorie:Hat Slash]]"
t = t .. "[[Kategorie:Hat Slash]]"
end
end
if args.strasse_hnr.suspekt then
if fbdata.strasse_hnr.suspekt then
t = t .. "[[Kategorie:Gebäude mit verdächtiger Straße-Hausnummer-Kombination]]"
t = t .. "[[Kategorie:Gebäude mit verdächtiger Straße-Hausnummer-Kombination]]"
end
end
if positionscheck and (args.lat or "") == "" and (args.lon or "") == "" and (args.location or "") == "" and not wik.pageexists("GeoJson:" .. (args.location or pagename)) then
if fbdata.positionscheck and (fbdata.pargs.lat or "") == "" and (fbdata.pargs.lon or "") == "" and
if com.isTrue(args.ehemals) then
  (fbdata.pargs.location or "") == "" and not wik.pageexists("GeoJson:" .. (fbdata.pargs.geojson or fbdata.pagename)) then
t = t .. "[[Kategorie:" .. args.kategorie .. " (ehemals) ohne Position]]"
t = t .. "[[Kategorie:" .. fbdata.kategorie[1] .. ehemals_text .. " ohne Position]]"
else
t = t .. "[[Kategorie:" .. args.kategorie .. " ohne Position]]"
end
end
end
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
Zeile 233: Zeile 248:
-- mw.log("tab(t)")
-- mw.log("tab(t)")
-- mw.logObject(t)
-- mw.logObject(t)
t = str.strip(t)
if t ~= "" then
if t ~= "" then
t = "<tab name = ".. name .. ">" .. t .. "</tab>"
t = "<tab name = ".. name .. ">" .. t .. "</tab>"
Zeile 238: Zeile 254:
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
return t
return t
end
function p.fbdata(frame)
-- mw.log("fbdata(frame)")
-- mw.logObject(frame)
-- Konsolenzeile zum Debuggen:
-- =p.fbdata{pargs={a=1}}
local fbdata = {}
fbdata.frame, fbdata.pargs = dev.GetFrameAndParentArgs(frame)
wik.setPagenames(fbdata)
-- mw.logObject(fbdata)
return fbdata
end
end


return p
return p