Geen bewerkingssamenvatting |
Geen bewerkingssamenvatting |
||
| (33 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
| Regel 5: | Regel 5: | ||
{{#invoke:FFSelect | {{#invoke:FFSelect | ||
|selected=pear | |selected=pear | ||
|options=apple; pear; banana | |options=apple, pear, banana | ||
|optionlabels=apple--apple; pear--pear; banana--banana | |||
|sep=; | |sep=; | ||
|id= | |||
}} | }} | ||
<select id={id} > | |||
<option for={id} > | |||
</select> | |||
]]-- | ]]-- | ||
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 selected = frame.args.selected or '' | local selected = frame.args.selected or '' | ||
selected = mw.text.trim( | 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 | for k,v in ipairs( optionsTable ) do | ||
local | 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 | end | ||
return | 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 | 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
