Geen bewerkingssamenvatting
Geen bewerkingssamenvatting
 
(26 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 17: Regel 17:
]]--
]]--
p.select = function(frame)
p.select = function(frame)
local allValues = frame.args.values or "" --all possible values?
--local allValues = frame.args.values or "" --all possible values?
local options = frame.args.options or {}
local options = frame.args.options or {}
local labelled = frame.args.labelled or 'false'
if ( labelled == 'true' ) then
isLabelled = true
else
isLabelled = false
end
local sep = frame.args.sep or ','
local sep = frame.args.sep or ','
local optionsTable = mw.text.split( options, sep )
local selected = frame.args.selected or ''
local selected = frame.args.selected or ''
selected = mw.text.trim( selected )
selected = mw.text.trim( selected )
local id = frame.args.id or "randomidhere"
id = frame.args.id or "randomidhere"
optionsTable = mw.text.split( options, sep )
optionElements = {}
optionElements = {}
for k,v in ipairs( optionsTable ) do
for k,v in ipairs( optionsTable ) do
local val = mw.text.trim(v)
if ( isLabelled == true ) then
local label = val -- for now
-- pair of value and label
if val ~= selected then
local pair = mw.text.split( v, ">>>" )
local isSelected = true
val = mw.text.trim( pair[1] )
label = pair[2] or val
else
-- no special label
val = mw.text.trim(v)
label = val
end
 
if ( val == selected ) then
isSelected = true
else
else
local isSelected = false
isSelected = false
end
end
optionElements[k] = p.createSelectOption( frame, val, label, id, isSelected )
optionElements[k] = p.createSelectOption( frame, val, label, id, isSelected )
end
end
 
local res = table.concat( optionElements, "" )
local res = table.concat( optionElements, "" )
return res
return res
Regel 44: Regel 59:
]]--
]]--
p.createSelectOption = function( frame, val, label, id, isSelected )
p.createSelectOption = function( frame, val, label, id, isSelected )
local attributes = {
local attribs = {
['value'] = mw.text.trim( val ),
['value'] = val
['for'] = id
}
}
if ( isSelected == true ) then
attribs['for'] = id -- not working because 'for' is also a function
attributes['selected'] = 'selected'
if ( isSelected == true ) then
attribs['selected'] = 'selected'
end
end
local input = frame:extensionTag( 'option', label, attributes );
local res = frame:extensionTag( 'option', label, attribs );
return input
return res
end
end


return p
return p

Huidige versie van 22 jan 2025 13:47

Module:FFSelect




<select name="selectFrut" id="selectme">{{#invoke:FFSelect|select
|options=apple>>>appel;pear>>>peer;banana>>>banaan
|labelled=true
|selected=pear
|sep=;
|id=selectme
}}</select>


local p = {}

--[[

{{#invoke:FFSelect
|selected=pear
|options=apple, pear, banana
|optionlabels=apple--apple; pear--pear; banana--banana
|sep=;
|id=
}}

<select id={id} >
  <option for={id} >
</select>

]]--
p.select = function(frame)
	--local allValues = frame.args.values or "" --all possible values?
	local options = frame.args.options or {}
	local labelled = frame.args.labelled or 'false'
	if ( labelled == 'true' ) then
		isLabelled = true
	else 
		isLabelled = false
	end
	local sep = frame.args.sep or ','
	local selected = frame.args.selected or ''
	selected = mw.text.trim( selected )
	id = frame.args.id or "randomidhere"
	optionsTable = mw.text.split( options, sep )
	
	optionElements = {}
	for k,v in ipairs( optionsTable ) do
		if ( isLabelled == true ) then
			-- pair of value and label
			local pair = mw.text.split( v, ">>>" )
			val = mw.text.trim( pair[1] )
			label = pair[2] or val
		else
			-- no special label
			val = mw.text.trim(v)
			label = val
		end

		if ( val == selected ) then
			isSelected = true
		else
			isSelected = false
		end
		optionElements[k] = p.createSelectOption( frame, val, label, id, isSelected )
	end

	local res = table.concat( optionElements, "" )
	return res
end

--[[
]]--
p.createSelectOption = function( frame, val, label, id, isSelected )
	local attribs = {
		['value'] = val
	}
	attribs['for'] = id -- not working because 'for' is also a function
	if ( isSelected == true ) then
		attribs['selected'] = 'selected'
	end
	local res = frame:extensionTag( 'option', label, attribs );
	return res
end

return p