Modul:Formular: Unterschied zwischen den Versionen

Aus FürthWiki

Keine Bearbeitungszusammenfassung
(attr_data ohne list)
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 2: Zeile 2:


local atr = require("Modul:Attribut")
local atr = require("Modul:Attribut")
local str = require("Modul:String")


local field_default_args = { -- hier kann z.B. size global hinzugefügt werden
local field_default_args = { -- hier kann z.B. size global hinzugefügt werden
Zeile 72: Zeile 73:
t = t ..
t = t ..
"<tr>\n" ..
"<tr>\n" ..
"  <th>" .. attr_text .. ":</th>\n" ..
"  <th style=\"vertical-align:middle;\">" .. attr_text .. ":</th>\n" ..
"  <td>" .. info .. "</td>\n" ..
"  <td style=\"vertical-align:middle;\">" .. info .. "</td>\n" ..
"  <td>" .. field .. "</td>\n" ..
"  <td style=\"vertical-align:middle;\">" .. field .. "</td>\n" ..
"</tr>\n"
"</tr>\n"
elseif args.format == "horizontal" then
elseif args.format == "horizontal" then
Zeile 83: Zeile 84:
if args.format == "horizontal" then
if args.format == "horizontal" then
t = t .. "<tr>\n" .. l1 .. "</tr>\n" .. "<tr>\n" .. l2 .. "</tr>\n"
t = t .. "<tr>\n" .. l1 .. "</tr>\n" .. "<tr>\n" .. l2 .. "</tr>\n"
end
t = t .. "</table>\n"
return t
end
function p.attrForm(frame, attr_data)
-- Kommandozeile zum Debuggen:
-- frame=mw.getCurrentFrame(); print(p.attrForm(frame, {{["Attribut"]="At",["Einzahl"]="Ez",["Infotext"]="It",["FieldArgs"]="fa1|fa2|fa3"},{["Attribut"]="At_",["Einzahl"]="Ez_",["Infotext"]="It_",["FieldArgs"]="fa1_|fa2_|fa3_"}}))
local t = "<table class=\"formtable\">\n"
for _, a in ipairs(attr_data) do
local attr = a["Attribut"]
local attr_text = a["Einzahl"] or attr
local delimiter = a["Delimiter"]
local info = a["Infotext"] or ""
local field = a["FieldArgs"] or ""
-- info zusammenbauen
if info ~= "" then
info = info .. "."
if delimiter ~= nil and
string.find(field, "tokens") == nil then
info = info .. " Mehrere Eintragungen möglich, zu trennen per " ..
delimiter
end
info = string.gsub(info, "%.%.", ".")
info = frame:callParserFunction("#info", info, "note")
end
-- field zusammenbauen
if field ~= "" then
field = "|" .. field
end
field = str.appendWithSeparator("{{{field|" .. attr, "|", field) .. "}}}"
t = t ..
"<tr>\n" ..
"  <th style=\"vertical-align:middle;\">" .. attr_text .. ":</th>\n" ..
"  <td style=\"vertical-align:middle;\">" .. info .. "</td>\n" ..
"  <td style=\"vertical-align:middle;\">" .. field .. "</td>\n" ..
"</tr>\n"
end
end
t = t .. "</table>\n"
t = t .. "</table>\n"

Aktuelle Version vom 17. Februar 2026, 19:19 Uhr

local p = {}

local atr = require("Modul:Attribut")
local str = require("Modul:String")

local field_default_args = {													-- hier kann z.B. size global hinzugefügt werden
	checkbox			= "input type=checkbox",
	date				= "input type=date",
	file				= "uploadable",
	hausnummer			= "input type=text|size=5",
	text				= "input type=text",
	text_autocomplete	= "input type=text with autocomplete"}

local attr_field_args = {
	-- diese Tabelle enthält die {{{field|attr|...}}}-Argumente (Attribut wird automatisch eingefügt)
	["Adressart"]			= "input type=combobox|property=Adressart|size=30",
	["AdresseBis"]			= field_default_args.date,
	["AdresseVon"]			= field_default_args.date,
	["Bild"]				= field_default_args.file,
	["Ehemals"]				= field_default_args.checkbox,
	["Email"]				= field_default_args.text,
	["Gründungsdatum"]		= field_default_args.date,
	["Gründungsort"]		= field_default_args.text,
	["Hausnummer"]			= field_default_args.hausnummer,
	["Kommentar"]			= field_default_args.text,
	["Schließungsdatum"]	= field_default_args.date,
	["Schließungsgrund"]	= field_default_args.text,
	["Straße"]				= field_default_args.text_autocomplete,
	["Telefon"]				= field_default_args.text,
	["Webseite"]			= field_default_args.text}

local attr_infos = {
	-- diese Tabelle enthält die {{info:...|note}}-Texte, ggf. abhängig von der Klasse
	["Bild"]				= "Name der Bilddatei im Format <code>Max Mustermann.jpg</code>",
	["Ehemals"]				= {"Haken setzen, wenn Objekt heute nicht mehr besteht", -- default
		["Einrichtung"]		= "Haken setzen, wenn Einrichtung geschlossen"},
	["Schließungsgrund"]	= { -- "???"
		["Einrichtung"]		= "Warum hat diese Einrichtung aufgegeben?"},		-- default
	["Straße"]				= {
		["Adresse"]			= "Nur eintragen, wenn in Fürth!"}}

function p.FormularAdresse(frame)
	local t = ""
	t = t .. "= Adressen =\n"
	t = t .. "{{{for template|Adresse|multiple|add button text=Adresse hinzufügen}}}\n"
	t = t .. p.attr_table{
		frame = frame,
		klasse = "Adresse",														-- Adresse ist eigentlich keine echte Klasse
		attr_list = {
			"Adressart", "AdresseVon", "AdresseBis",
			"Straße", "Hausnummer",
			"Kommentar"},
		format = "horizontal"}
	t = t .. "{{{end template}}}\n"
	return t
end

function p.attr_table(args)
	local t = "<table class=\"formtable\">\n"
	local l1, l2 = "", ""
	for _, a in ipairs(args.attr_list) do
		local attr_text = atr.attrText(a, args.klasse)
		local info = attr_infos[a] or ""										-- Info-Text
		if type(info) == "table" then
			info = info[args.klasse] or info[1] or ""
		end
		if info ~= "" then
			info = args.frame:callParserFunction("#info", info, "note")
		end
		local field =
			"{{{field|" .. a .. "|" .. attr_field_args[a] .. "}}}"
		if args.format == "vertical" then
			t = t ..
				"<tr>\n" ..
				"  <th style=\"vertical-align:middle;\">" .. attr_text .. ":</th>\n" ..
				"  <td style=\"vertical-align:middle;\">" .. info .. "</td>\n" ..
				"  <td style=\"vertical-align:middle;\">" .. field .. "</td>\n" ..
				"</tr>\n"
		elseif args.format == "horizontal" then
			l1 = l1 .. "  <th>" .. attr_text .. ": " .. info .. "</th>\n"
			l2 = l2 .. "  <td>" .. field .. "</td>\n"
		end
	end
	if args.format == "horizontal" then
		t = t .. "<tr>\n" .. l1 .. "</tr>\n" .. "<tr>\n" .. l2 .. "</tr>\n"
	end
	t = t .. "</table>\n"
	return t
end

function p.attrForm(frame, attr_data)
	-- Kommandozeile zum Debuggen:
	-- frame=mw.getCurrentFrame(); print(p.attrForm(frame, {{["Attribut"]="At",["Einzahl"]="Ez",["Infotext"]="It",["FieldArgs"]="fa1|fa2|fa3"},{["Attribut"]="At_",["Einzahl"]="Ez_",["Infotext"]="It_",["FieldArgs"]="fa1_|fa2_|fa3_"}}))
	local t = "<table class=\"formtable\">\n"
	for _, a in ipairs(attr_data) do
		local attr = a["Attribut"]
		local attr_text = a["Einzahl"] or attr
		local delimiter = a["Delimiter"]
		local info = a["Infotext"] or ""
		local field = a["FieldArgs"] or ""
		-- info zusammenbauen
		if info ~= "" then
			info = info .. "."
			if delimiter ~= nil and
				string.find(field, "tokens") == nil then
				info = info .. " Mehrere Eintragungen möglich, zu trennen per " ..
					delimiter
			end
			info = string.gsub(info, "%.%.", ".")
			info = frame:callParserFunction("#info", info, "note")
		end
		-- field zusammenbauen
		if field ~= "" then
			field = "|" .. field
		end
		field = str.appendWithSeparator("{{{field|" .. attr, "|", field) .. "}}}"
		t = t ..
			"<tr>\n" ..
			"  <th style=\"vertical-align:middle;\">" .. attr_text .. ":</th>\n" ..
			"  <td style=\"vertical-align:middle;\">" .. info .. "</td>\n" ..
			"  <td style=\"vertical-align:middle;\">" .. field .. "</td>\n" ..
			"</tr>\n"
	end
	t = t .. "</table>\n"
	return t
end

function p.common(args)
	local t = ""
	t = t .. "= Artikel =\n"
	t = t .. "{{{standard input|free text|rows=25|editor=wikieditor}}}"
	t = t .. "{{{standard input|summary}}}"
	t = t .. "{{{standard input|minor edit}}} {{{standard input|watch}}}<br>"
	t = t .. "{{{standard input|save}}} {{{standard input|changes}}} {{{standard input|cancel}}}"
	t = t .. "__NOTOC__"
	t = t .. "__NOEDITSECTION__"
	return t
end

return p