Modul:Formular/Work: Unterschied zwischen den Versionen

Aus FürthWiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(34 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
local p = {}
local p = {}


local wob = require("Modul:Wörterbuch")
local atr = require("Modul:Attribut")
local str = require("Modul:String")


local field_default_args = {
local form_layouts = {
checkbox = "input type=checkbox",
["Adresse"] = {
date = "input type=date",
{"Adressart", "AdresseVon", "AdresseBis"},
date_adr = "input type=date",
{"Straße", "Hausnummer", "Kommentar"}}
file = "size=24|uploadable",
}
hausnummer = "input type=text|size=5",
local form_lists = {
text = "input type=text",
["Adresse"] = {
text_autocomplete = "input type=text with autocomplete"}
"Adressart", "AdresseVon", "AdresseBis", "Straße", "Hausnummer", "Kommentar"}
 
local form_attr = {
["Adressart"] = {
field_args = "input type=combobox|property=Adressart|size=30"},
["AdresseBis"] = {
field_args = field_default_args.date_adr},
["AdresseVon"] = {
field_args = field_default_args.date_adr},
["Bild"] = {
info = "Name der Bilddatei im Format <code>Max Mustermann.jpg</code>",
field_args = field_default_args.file},
["Ehemals"] = {
info = { "Haken setzen, wenn Objekt heute nicht mehr besteht",
["Einrichtung"] = "Haken setzen, wenn Einrichtung geschlossen"},
field_args = field_default_args.checkbox},
["Email"] = {
-- info = "Emailadresse dieses Objektes",
field_args = field_default_args.text},
["Gründungsdatum"] = {
-- info = "Link zum Artikel des Gründungsdatums",
field_args = field_default_args.date},
["Gründungsort"] = {
-- info = "An welchem Ort wurde die Einrichtung gegründet?",
field_args = field_default_args.text},
["Hausnummer"] = {
field_args = field_default_args.hausnummer},
["Kommentar"] = {
field_args = field_default_args.text},
["Schließungsdatum"] = {
-- info = "Einrichtung wurde bereits geschlossen",
field_args = field_default_args.date},
["Schließungsgrund"] = {
info = { -- "???"
["Einrichtung"] = "Warum hat diese Einrichtung aufgegeben?"},
field_args = field_default_args.text},
["Straße"] = {
info = {
["Adresse"] = "Nur eintragen, wenn in Fürth!"},
field_args = field_default_args.text_autocomplete},
["Telefon"] = {
-- info = "Telefonnummer, unter der dieses Objekt erreichbar ist",
field_args = field_default_args.text},
["Webseite"] = {
-- info = "Internetadresse dieses Objektes",
field_args = field_default_args.text},
}
}


function p.formularAdresse(frame)
function p.CommonForm(frame)
return p.attr_table{
-- Kommandozeile zum Debuggen:
frame = frame,
-- frame=mw.getCurrentFrame(); frame.args[1] = "Adresse"; print(p.CommonForm(frame))
klasse = "Adresse",
local form = frame.args[1]
attr_list = {
local attr_data = {list = form_lists[form], attr = {}}
"Adressart", "AdresseVon", "AdresseBis",
-- Attribute der einzelnen Attribute hinzufügen
"Straße", "Hausnummer",
for _, a in ipairs(attr_data.list) do
"Kommentar"},
attr_data.attr[a] = atr.getAttrAttributes(a, klasse)
format = "horizontal"
end
}
return p.attrForm(frame, attr_data)
end
end


function p.attr_table(args)
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"
local t = "<table class=\"formtable\">\n"
local l1, l2 = "", ""
for _, attr in ipairs(attr_data.list) do -- bislang nur Listen-Support, kein 2D via .form_layout
for _, a in ipairs(args.attr_list) do
local attr_attr = attr_data.attr[attr] -- Attribute des Attributs attr
local attr_text = wob.attrText(a, args.klasse)
local attr_text = attr_attr["Einzahl"]
local info = p.form_attr[a].info or "" -- Info-Text
local delimiter = attr_attr["Delimiter"]
if type(info) == "table" then
local info = attr_attr["Infotext"] or ""
info = info[args.klasse] or info[1] or ""
local field = attr_attr["FieldArgs"] or ""
end
-- info zusammenbauen
if info ~= "" then
if info ~= "" then
info = args.frame:callParserFunction("#info", info, "note")
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
end
local field =
-- field zusammenbauen
"{{{field|" .. a .. "|" .. p.form_attr[a].field_args .. "}}}"
if field ~= "" then
if args.format == "vertical" then
field = "|" .. field
t = t ..
"<tr>\n" ..
"  <th>" .. attr_text .. ":</th>\n" ..
"  <td>" .. info .. "</td>\n" ..
"  <td>" .. 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
end
field = str.appendWithSeparator("{{{field|" .. attr, "|", field) .. "}}}"
if args.format == "horizontal" then
t = t ..
t = t .. "<tr>\n" .. l1 .. "</tr>\n" .. "<tr>\n" .. l2 .. "</tr>\n"
"<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"
Zeile 103: Zeile 63:
end
end


function p.common(args)
function p.ArtikelCommon(args)
local t = ""
local t = ""
t = t .. "= Artikel =\n"
-- t = t .. "= Artikel =\n"
t = t .. "{{{standard input|free text|rows=25|editor=wikieditor}}}"
t = t .. "{{{standard input|free text|rows=25|editor=wikieditor}}}"
t = t .. "{{{standard input|summary}}}"
t = t .. "{{{standard input|summary}}}"

Aktuelle Version vom 7. März 2026, 00:11 Uhr

local p = {}

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

local form_layouts = {
	["Adresse"] = {
		{"Adressart", "AdresseVon", "AdresseBis"},
		{"Straße", "Hausnummer", "Kommentar"}}
}
local form_lists = {
	["Adresse"] = {
		"Adressart", "AdresseVon", "AdresseBis", "Straße", "Hausnummer", "Kommentar"}
}

function p.CommonForm(frame)
	-- Kommandozeile zum Debuggen:
	-- frame=mw.getCurrentFrame(); frame.args[1] = "Adresse"; print(p.CommonForm(frame))
	local form = frame.args[1]
	local attr_data = {list = form_lists[form], attr = {}}
	-- Attribute der einzelnen Attribute hinzufügen
	for _, a in ipairs(attr_data.list) do
		attr_data.attr[a] = atr.getAttrAttributes(a, klasse)
	end
	return p.attrForm(frame, attr_data)
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 _, attr in ipairs(attr_data.list) do									-- bislang nur Listen-Support, kein 2D via .form_layout
		local attr_attr = attr_data.attr[attr]									-- Attribute des Attributs attr
		local attr_text = attr_attr["Einzahl"]
		local delimiter = attr_attr["Delimiter"]
		local info = attr_attr["Infotext"] or ""
		local field = attr_attr["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.ArtikelCommon(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