Vorlagenprogrammierung Diskussionen Lua Test Unterseiten
Modul Deutsch

Modul: Dokumentation

Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus


-- Aufbau des Layouts
local Layout = {
	{ -- Allgemeines Layout
		"UE1", "IBBild",
		-- Parameter Basisdaten
		"UEBasisdaten", "ORT", "REGION_2", "REGION_1", "REGION_0", "LAGEPUNKT", "KoordKarte" , "VERW", "ZUGANG", "BESITZER", "ABRISS",
		-- Parameter Sendeturm
		"UETurmdaten", "T_BAU_ZEIT", "T_BAU_KOST", "T_BAU_HERR", "T_BAU_ARCH", "T_BAU_ST", "IBTBau", "T_BET_ZEIT", "T_UMBAU", "T_HOCH_GES", "T_HOCH_AUS", "T_HOCH_RES", "T_HOCH_BET", "IBTHoch", "T_GEW_GES", "T_VOL_GES", "T_A_STILL",
		-- Parameter Sendeanlage
		"UESendeanlage", "S_ANZAHL_T", "S_HOCH_GES", "S_BAU_ZEIT", "S_BET_ZEIT", "S_ANT_BAU", "IBSHoch",
		-- Parameter Sendeanlage und Sendeturm
		"S_UMBAU", "S_WELLE", "S_RUNDFUNK", "S_TYP", "S_STILL",
		-- Parameter Tabellenfuss
		"WEITERES", "FST", "NS", "EW", "POSKARTE", "Test"
	},
	Anlage = { "UETurmdaten", "T_BAU_ZEIT", "T_BAU_KOST", "T_BAU_HERR", "T_BAU_ARCH", "T_BAU_ST", "IBTBau", "T_BET_ZEIT", "T_UMBAU", "T_HOCH_GES", "T_HOCH_AUS", "T_HOCH_RES", "T_HOCH_BET", "IBTHoch", "T_GEW_GES", "T_VOL_GES", "T_A_STILL",
		"NS", "EW"
	},
	Turm = {
		"S_ANZAHL_T", "S_HOCH_GES", "S_BAU_ZEIT", "S_BET_ZEIT", "IBSHoch",
		"NS", "EW",
		"FST"
	},
	Mast = {
		"S_ANZAHL_T", "S_HOCH_GES", "S_BAU_ZEIT", "S_BET_ZEIT", "IBSHoch",
		"NS", "EW",
		"FST"
	},
	Aussicht = {
		"UESendeanlage", "S_ANZAHL_T", "S_HOCH_GES", "S_BAU_ZEIT", "S_BET_ZEIT", "S_ANT_BAU", "IBSHoch",
		"S_UMBAU", "S_WELLE", "S_RUNDFUNK", "S_TYP", "S_STILL",
		"NS", "EW",
		"FST"
	},
	Fernseh = {
		"S_ANZAHL_T", "S_HOCH_GES", "S_BAU_ZEIT", "S_BET_ZEIT", "IBSHoch",
		"NS", "EW"
	}
}

local p = {}

-- Darstellung der Infobox
p.InfoboxDarstellung = function( DSZusatz, Daten, DN, Kategorien, frame, LayoutExtern )
	local IBD = ""
	local LayoutIntern = { }
	local Tabelle = DSZusatz.Tabelle
	if LayoutExtern == "alle" then
		LayoutIntern = { Layout[1] }
		for LYk, LYv in pairs( Layout ) do
			if LYk ~= 1 then LayoutIntern[LYk] = { } end
		end
	else
		LayoutIntern = LayoutExtern or Layout
	end
	
	-- Kopf der Infobox
	IBD = IBD .. "{| class=\"infobox float-right toptextcells rahmenfarbe1 hintergrundfarbe1\" style=\"width:300px; border-style:solid; border-width:1px; color:black; font-size:90%; margin-top:0; line-height:110%;\""
	local Anzeiger = { }
	
	-- Schleife durch das Layout
	for IBDk, IBDv in pairs( LayoutIntern[1] ) do
		-- Variablen
		Anzeiger = {
			DS = DN[IBDv], --             Datensatz, der zu verarbeiten ist, z.B. 'DN.ZUGANG'
			Zeiger = Tabelle.Standard, -- soll 'DS' angezeit werden? 'true' oder 'false'
			Anzeigen = true, --           Zahl, die die Datensatznummer der 'Tabelle' anzeigt
			ausklappen = ""  --           Text, der in die Bezeichnung 'ausklappen' eingefuegt wird
		}
		
		-- Abgleich, ob bei Beuwerktyp ausgeblendet werden muss
		if LayoutIntern[DSZusatz.Typ] then
			for IBXk, IBXv in pairs( LayoutIntern[DSZusatz.Typ] ) do
				if IBXv == IBDv then Anzeiger.Anzeigen = false end
			end
		end
		
		-- Einlesen des Layouts
		if (Tabelle[Anzeiger.DS.BauTyp] and Tabelle[Anzeiger.DS.BauTyp] ~= "") then Anzeiger.Zeiger = Tabelle[Anzeiger.DS.BauTyp] end
		Tabelle[Anzeiger.Zeiger] = Tabelle[Anzeiger.Zeiger] or { "", "", "", "" }
		Tabelle[Anzeiger.Zeiger][1] = Tabelle[Anzeiger.Zeiger][1] or ""
		Tabelle[Anzeiger.Zeiger][2] = Tabelle[Anzeiger.Zeiger][2] or ""
		Tabelle[Anzeiger.Zeiger][3] = Tabelle[Anzeiger.Zeiger][3] or ""
		Tabelle[Anzeiger.Zeiger][4] = Tabelle[Anzeiger.Zeiger][4] or ""
		
		-- Zeile anzeigen
		if (Anzeiger.DS.BauTyp ~= "Ausblenden" and Anzeiger.Anzeigen == true and Anzeiger.DS.WertZeile) then
			
			-- einklappen, ausklappen
			if Anzeiger.Zeiger == 6 then Anzeiger.ausklappen = Anzeiger.DS.ausklappen or "ausklappen" end
		
			-- Anzeigen des Datensatzes
			IBD = IBD .. Tabelle[Anzeiger.Zeiger][1] .. tostring( Anzeiger.DS.AnzLabel ) .. Tabelle[Anzeiger.Zeiger][2] .. Anzeiger.ausklappen .. Tabelle[Anzeiger.Zeiger][3] .. tostring( Anzeiger.DS.WertZeile ) .. Tabelle[Anzeiger.Zeiger][4]
		end
	end
	IBD = IBD .. "\n|}"
	
	return IBD
end

-- Darstellung der Kategorien
p.KategorieDarstellung = function( DSZusatz, Daten, DN, Kategorien, frame )
	local IBKat = ""
	local KatAnzeige = {
		Text = "" -- Text als Liste
	}
	if DSZusatz.NSP == 0 then
		KatAnzeige.vor = "\n[[Kategorie:"
		KatAnzeige.nach = "]]"
		KatAnzeige.keinKat = ""
		KatAnzeige.Box = { "", "" }
	else
		KatAnzeige.vor = "[[:Kategorie:"
		KatAnzeige.nach = "]] • "
		KatAnzeige.keinKat = "\'\'keine Kategorisierung, da keine Kategorien automatisch generiert werden konnten.\'\'"
		KatAnzeige.Box = {
			"\n<div class=\"rahmenfarbe3 hintergrundfarbe8\" style=\"border-style:solid; border-width:1px; padding:.5em;margin:.25em\">\n\'\'\'Im Artikelnamensraum wird mittels der Infobox wie folgt kategorisiert:\'\'\'\n: &bull; ",
			"\n</div>"
		}
	end
	if type( Kategorien ) == "table" then
		if Kategorien[1] then
			if Kategorien[1][1] then
				for KATk, KATv in pairs( Kategorien ) do
					KatAnzeige.mittel = ""
					if ((KATv[2] == "GeoC" or KATv[2] == "Cat") and DSZusatz.NSP == 0) then KatAnzeige.mittel = "|" .. DSZusatz.CNAME end
					KatAnzeige.Text = KatAnzeige.Text .. KatAnzeige.vor .. tostring( KATv[1] ) .. KatAnzeige.mittel .. KatAnzeige.nach
				end
			else
				KatAnzeige.Text = KatAnzeige.Text .. KatAnzeige.keinKat
			end
			IBKat = IBKat .. KatAnzeige.Box[1] .. KatAnzeige.Text .. KatAnzeige.Box[2]
		end
	end
	
	return IBKat
end

-- Rueckgabe Layout
function p.Layout()
	return Layout
end

return p