Modul:Klasse: Unterschied zwischen den Versionen

Aus FürthWiki

(fix)
(+ Nicht-unterstützte Argumente testen)
Zeile 113: Zeile 113:
fab=require("Modul:Faktenbox"); fbdata=fab.getFbdata{pargs={Baujahr="1987",AktenNr="D-5-63-000-1464"}};
fab=require("Modul:Faktenbox"); fbdata=fab.getFbdata{pargs={Baujahr="1987",AktenNr="D-5-63-000-1464"}};
fbdata.klasse={"Bauwerk"}; fbdata.kategorie={"Bauwerke"}; fbdata.fullpagename="Pegnitz"; fbdata.subpagename="Pegnitz";
fbdata.klasse={"Bauwerk"}; fbdata.kategorie={"Bauwerke"}; fbdata.fullpagename="Pegnitz"; fbdata.subpagename="Pegnitz";
print(p.faktenboxDatenTab(fbdata))
print(p.faktenboxDatenTab(fbdata)); mw.logObject(fbdata)
]]
]]
local t = ""
local t = ""
local klasse = fbdata.klasse[kindex or 1]
local klasse = fbdata.klasse[kindex or 1]
local attr_data = p.getAttrData(klasse)
local attr_data = p.getAttrData(klasse)
 
-- Vorbereitung Nicht-unterstützte Argumente testen
local pargs_test = {}
for a, _ in pairs(fbdata.pargs) do
pargs_test[a] = true
end
-- Zusammenbau
-- Zusammenbau
t = t .. fab.zeileKategorieSeite(fbdata)
t = t .. fab.zeileKategorieSeite(fbdata)
Zeile 139: Zeile 143:
attr_year = attr, attr_ended = a["EhemalsAttribut"],
attr_year = attr, attr_ended = a["EhemalsAttribut"],
delimiter = delimiter}
delimiter = delimiter}
elseif a["Attribut"] == "TeilDesEnsembles" then
t = t .. fab.zeileTeilDesEnsembles{fbdata = fbdata, -- hängt "Ensemble " davor
attr_name = attr, delimiter = delimiter}
elseif attr ~= ehemals_attribut and attr ~= "Bild" then
elseif attr ~= ehemals_attribut and attr ~= "Bild" then
t = t .. fab.zeile{fbdata = fbdata, attr_name = attr,
t = t .. fab.zeile{fbdata = fbdata, attr_name = attr,
delimiter = delimiter}
delimiter = delimiter}
end
end
pargs_test[a["Attribut"]] = nil -- Argumente ausklammern
end
end
-- Rest der Tabelle
-- Rest der Tabelle
t = t .. fab.zeileGeoDaten(fbdata)
t = fab.table_header_footer(t)
t = fab.table_header_footer(t)
t = t .. fab.zeileSemantikBrowsenAbfrage(fbdata)
t = t .. fab.zeileSemantikBrowsenAbfrage(fbdata)
-- Tab draus machen
-- Tab draus machen
t = fab.tab(t, "Daten")
t = fab.tab(t, "Daten")
-- Nicht-unterstützte Argumente testen
for _, a in ipairs(fab.karten_args ) do -- Karten-Argumente ausklammern
pargs_test[a] = nil
end
local pargs_test_fail = false
for _, _ in pairs(pargs_test) do -- Argumente übrig?
pargs_test_fail = true
break
end
if pargs_test_fail then
fab.addWartungsmeldung(fbdata, "Nicht unterstützte Faktenbox-Daten")
end
-- mw.logObject(t, "t")
-- mw.logObject(t, "t")
     return t
     return t

Version vom 18. Februar 2026, 12:40 Uhr

Seiten-Übersicht

Zur Klasse Klasse gehörende Seiten:
Hauptseite Unterseiten
Allgemein
Faktenbox Vorlagen
Formulare
Module
Abfrage Vorlagen


Formulare


Sonstige


Faktenbox()

Die Faktenbox der Klassen.

Formular()

Baut das Formular einer Artikelseite (Lemma) einer Klasse zusammen. Als Basis wird dafür die in der jeweiligen Klasse eingetragene Attribut:AttributListe genommen, daraus die Attribut-Datentabelle attr_data generiert und diese weiter an attrForm() im Modul:Formular übergeben.

faktenboxDatenTab()

Baut den Daten-Tab der Faktenbox einer Artikelseite (Lemma) einer Klasse zusammen. Als Basis wird dafür die in der jeweiligen Klasse eingetragene Attribut:AttributListe genommen, daraus die Attribut-Datentabelle attr_data generiert und dann zeilenweise in Reihenfolge der AttributListe abgearbeitet.

Dabei werden die verschiedenen Sonderfälle der Faktenbox-Zeilen beachtet (z. B. Denkmalschutz-Aktennummer, Datum, Ehemals, ...). Siehe Modul:Faktenbox/Zeilen.

getAttrData()

Gibt Attribut-Datentabelle attr_data zurück.

attrListParser()

Analysiert übergebene Attribut:AttributListe und gibt von Attribut-Datentabelle attr_data die Werte attr_data.form_layout, attr_data.width und attr_data.list zurück.

Attribut-Datentabelle attr_data


local p = {}

local com = require("Module:Common")
local str = require("Module:String")
local atr = require("Module:Attribut")
local frm = require("Modul:Formular")
local fab = require("Modul:Faktenbox")

function p.Faktenbox( frame )
	local args = frame:getParent().args
	local t = p.daten( frame, args )
	
	-- Use preprocess to render the factbox and all contens at once
	return frame:preprocess(t)
end

function p.daten(frame, args)
	local title = mw.title.getCurrentTitle().text
	local t = '<table class="wikitable">'..
	    '<th>[[FürthWiki:Semantik]]</th>'..
		'<th colspan="3">'..'[[KlassenName::'..title..']]</th>'

	t=t..'<tr>'..
	    '<td>[[Attribut:Bild|Bild dieser Klasse]]</td>'
	if not com.isEmpty(args.Bild) then
	    t=t..'<td colspan="3"><div class="ImageLink">[[Datei:'..
	    	args.Bild..'|48px]]</div></td>'
	    mw.smw.set{["Bild"] = "Datei:" .. args.Bild}
	end

	t=t..'</tr><tr>'..
	    '<td>[[Attribut:KlassenVorlage|Vorlage]]</td>'
	t=t..'<td colspan="3">[[KlassenVorlage::Vorlage:'..title..']]</td>'
	
	t=t..'</tr><tr>'..
	    '<td>[[Attribut:KlassenModul|Modul]]</td>'
	t=t..'<td colspan="3">[[KlassenModul::Modul:'..title..']]</td>'
	
	t=t..'</tr><tr>'..
	    '<td>[[Attribut:KlassenKategorie|Kategorie]]</td>'
	if not com.isEmpty(args.KlassenKategorie) then
	    t=t..'<td colspan="3">[[KlassenKategorie::Kategorie:'..args.KlassenKategorie..']]</td>'
	end
	
	t=t..'</tr><tr>'..
	    '<td>[[Attribut:KlassenFormular|Formular]]</td>'
	t=t..'<td colspan="3">[[KlassenFormular::Formular:'..title..']]</td>'
	
	t=t..'</tr><tr>'..
	    '<td>[[Attribut:Attribut|Attribut]]</td>'
	t=t..'<td colspan="3">[[Attribut::Attribut:'..title..']]</td>'
	
	t=t..'</tr><tr>'..
	    '<td>[[Attribut:Suchformular|Suchformular]]</td>'
	if not com.isEmpty(args.KlassenKategorie) then
	    t=t..'<td colspan="2">[[Suchformular::Abfrage_'..args.KlassenKategorie..']]</td>'..
	    	'<td>[[Formular:Abfrage_'..args.KlassenKategorie..']]</td>'
	end
	
	t=t..'</tr><tr>'..
	    '<td>[[Attribut:Suchvorlage|Suchvorlage]]</td>'
	if not com.isEmpty(args.KlassenKategorie) then
	    t=t..'<td colspan="2">[[Suchvorlage::Abfrage_'..args.KlassenKategorie..']]</td>'..
	    	'<td>[[Spezial:Abfrage_ausführen/Abfrage_'..args.KlassenKategorie..']]</td>'
	end
	
	t=t..'</tr><tr>'..
	    '<td>[[Attribut:AttributListe|AttributListe]]</td>'
	if not com.isEmpty(args.AttributListe) then
	    t=t..'<td colspan="3">[[AttributListe::'..args.AttributListe..']]</td>'
	end
	
	t=t..'<tr>'..
		'<td>[[Bild:IconSearch.svg|16px|semantisches Browsen|link=Spezial:Durchsuchen/{{NAMESPACE}}:{{PAGENAME}}]]</td>'..
		'<td colspan="3">[[Spezial:Durchsuchen/{{NAMESPACE}}:{{PAGENAME}}|semantisches Browsen]]</td>'..
	'</tr>'
	t=t..'</table>'
	return t
end

function p.getAttrData(klasse)
	local attr_data = {}
	local query = {"[[Klasse:" .. klasse .. "]]",
		"?AttributListe"}
	query = mw.smw.ask(query)
	if query ~= nil then
		local attributliste = query[1]["AttributListe"]
		attributliste = str.splitAndStrip(attributliste, ";")
		if #attributliste > 0 then
			attr_data = {}
			for i, a in ipairs(attributliste) do
				attr_data[i] = atr.getAttrAttributes(a, klasse)
				attr_data[i]["Attribut"] = a
			end
		end
	end
	return attr_data
end

function p.Formular(frame, klasse)
	-- Kommandozeile zum Debuggen:
	-- frame=mw.getCurrentFrame(); print(p.Formular(frame, "Bauwerk"))
	local t = ""
	local attr_data = p.getAttrData(klasse)
	t = frm.attrForm(frame, attr_data)
	return t
end

function p.faktenboxDatenTab(fbdata, kindex)
--	mw.log("datenTab(fbdata)")
--	mw.logObject(frame, "frame")
	--[[ Konsolenzeile zum Debuggen:
	fab=require("Modul:Faktenbox"); fbdata=fab.getFbdata{pargs={Baujahr="1987",AktenNr="D-5-63-000-1464"}};
	fbdata.klasse={"Bauwerk"}; fbdata.kategorie={"Bauwerke"}; fbdata.fullpagename="Pegnitz"; fbdata.subpagename="Pegnitz";
	print(p.faktenboxDatenTab(fbdata)); mw.logObject(fbdata)
	]]
	local t = ""
	local klasse = fbdata.klasse[kindex or 1]
	local attr_data = p.getAttrData(klasse)
	-- Vorbereitung Nicht-unterstützte Argumente testen
	local pargs_test = {}
	for a, _ in pairs(fbdata.pargs) do
		pargs_test[a] = true
	end
	-- Zusammenbau
	t = t .. fab.zeileKategorieSeite(fbdata)
	-- EhemalsAttribut ermitteln (gibt es nur 1x)
	local ehemals_attribut
	for _, a in ipairs(attr_data) do
		if a["EhemalsAttribut"] ~= nil then
			ehemals_attribut = a["EhemalsAttribut"]
			break
		end
	end
	-- Attribut-Zeilen
	for _, a in ipairs(attr_data) do
		local attr = a["Attribut"]
		local delimiter = a["Delimiter"]
		if a["Attribut"] == "AktenNr" then										-- Denkmalschutz Akten-Nummer
			t = t .. fab.zeileAktenNr(fbdata)
		elseif a["EhemalsAttribut"] ~= nil then									-- Kombi von Ehemals-Attribut und Ende-Datum/Jahr
			t = t .. fab.zeileEndeJahr{fbdata = fbdata,							-- Z. B. Ehemals bei Abrissjahr, Verstorben bei Todesdatum
				attr_year = attr, attr_ended = a["EhemalsAttribut"],
				delimiter = delimiter}
		elseif attr ~= ehemals_attribut and attr ~= "Bild" then
			t = t .. fab.zeile{fbdata = fbdata, attr_name = attr,
				delimiter = delimiter}
		end
		pargs_test[a["Attribut"]] = nil											-- Argumente ausklammern
	end
	-- Rest der Tabelle
	t = fab.table_header_footer(t)
	t = t .. fab.zeileSemantikBrowsenAbfrage(fbdata)
	-- Tab draus machen
	t = fab.tab(t, "Daten")
	-- Nicht-unterstützte Argumente testen
	for _, a in ipairs(fab.karten_args ) do										-- Karten-Argumente ausklammern
		pargs_test[a] = nil
	end
	local pargs_test_fail = false
	for _, _ in pairs(pargs_test) do											-- Argumente übrig?
		pargs_test_fail = true
		break
	end
	if pargs_test_fail then
		fab.addWartungsmeldung(fbdata, "Nicht unterstützte Faktenbox-Daten")
	end
--	mw.logObject(t, "t")
    return t
end

return p