Modul:Faktenbox/Tabs/Legacy

Aus FürthWiki

Die Dokumentation für dieses Modul kann unter Modul:Faktenbox/Tabs/Legacy/Doku erstellt werden

local p = {}

local com = require("Modul:Common")
local str = require("Modul:String")
local wik = require("Modul:Wiki")
local smw = require("Modul:SMW")

local fab_zeilen = require("Modul:Faktenbox/Zeilen/Legacy")
local fab_common = require("Modul:Faktenbox/Common")

function p.universalDatenTab_(fbdata)
--	mw.log("datenUniversalTab_(fbdata)")
--	mw.logObject(fbdata)
	-- Konsolenzeile zum Debuggen (Achtung! Bug in Fehlerbereinigungskonsole! Kann nur 1x ausgeführt werden!):
	-- fab=require("Modul:Faktenbox/Work"); fab_common = require("Modul:Faktenbox/Common"); fbdata=fab_common.fbdata_{pargs={lat="Bla", Objekt="Häusle", Test="BlaBla"}}; print(p.datenUniversalDatenTab_(fbdata))
	local t = ""
	local no_show_attr = {
		["Bild"] = true, 
		["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 .. fab_zeilen.zeile_{attr_name = a, fbdata = fbdata, delimiter = ";"}
		end
	end
	t = t .. "</dl>"
	t = t .. fab_zeilen.zeileSemantikBrowsenAbfrage_(fbdata)

	-- Tab draus machen
	t = p.tab_(t, "Daten")
--	mw.log("t = " .. t)
    return t
end

function p.bildTab_(fbdata, seite)
--	mw.log("bildTab_(fbdata, " .. (seite or "nil") .. ")")
--	mw.logObject(fbdata.pargs)
	-- Konsolenzeile zum Debuggen:
	-- =p.bildTab_{pargs={Bild="Erloeserkirche.jpg"}}
	local t = ""
	local beschreibung = smw.getValues("Datei:" .. (fbdata.pargs["Bild"] or ""), "Beschreibung")
	local beschreibung = beschreibung[1] or ""
	if (fbdata.pargs["Bild"] or "") ~= "" 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 .. '|[[Datei:' .. fbdata.pargs["Bild"] .. '|768px|link=' .. (seite or '') .. ']]\n'
		if beschreibung ~= "" then
			t = t .. '|-\n'
			t = t .. '|' .. beschreibung .. '\n'
		end
		t = t .. '|}'
		smw.addAttrToList(fbdata.attr.list, "Bild", "Datei:" .. fbdata.pargs["Bild"])
	end
	-- Tab draus machen
	t = p.tab_(t, "Bild")
--	mw.log("t = " .. t)
	return t
end

function p.benennungenTab_(fbdata)
--	mw.log("benennungenTab_()")
--	mw.logObject(fbdata)
	-- Konsolenzeile zum Debuggen:
	-- =p.benennungenTab_({fullpagename="Engelhardtsteg"})
	-- =p.benennungenTab_({fullpagename="Jakob-Henle-Straße"})
	-- =p.benennungenTab_({fullpagename="Eichhornstraße"})
	-- =p.benennungenTab_({fullpagename="Georg-Brandstätter-Straße"})
	local t = ""

	-- DB-Abfrage
	local query = "[[-Has subobject::".. fbdata.fullpagename .. "]][[SubObjektTyp::Benennung]]|?Benennung|?Benennungsdatum|?BenanntNach|?Bemerkung|limit=100"
	local ask_result = mw.smw.ask(query)
--	mw.logObject(ask_result)

	-- Zeilen zusammenbauen
	local first = true
	if ask_result ~= nil then
		for i, z in ipairs(ask_result) do -- Ergebniszeile durchiterieren
			if (z.Benennung or "") ~= "" or (z.BenanntNach or "") ~= "" then
				if first then
					t = t .. "<nowiki></nowiki>\n" -- nötig, warum auch immer, damit erster Listeeintrag richtig gerendert wird
					first = false
				end
				t = t .. "* "
				if z.Benennung ~= nil then
					t = t .. "[[" .. z.Benennung .. "]]"
				end
				if z.Benennung ~= nil and z.BenanntNach ~= nil then
					t = t .. ", "
				end
				if z.BenanntNach ~= nil then
					t = t .. "benannt nach " .. z.BenanntNach
				end
				if z.Benennungsdatum ~= nil then
					t = t .. ", " .. z.Benennungsdatum
				end
				if z.Bemerkung ~= nil then
					t = t .. " (" .. z.Bemerkung .. ")"
				end
				t = t .. "\n"
			end
		end
	end

	-- Tab draus machen
	t = p.tab_(t, "Benennungen")
--	mw.log("t = " .. t)
	return t
end

function p.tab_(t, name)
--	mw.log("tab(t)")
--	mw.logObject(t)
	t = str.strip(t)
	if t ~= "" then
		t = "<tab name = ".. name .. ">" .. t .. "</tab>"
	end
--	mw.log("t = " .. t)
	return t
end

return p