Regel 24: | Regel 24: | ||
local options = p.createOptions( selectedvalues, sep, displayprop, optionfor ) -- string | local options = p.createOptions( selectedvalues, sep, displayprop, optionfor ) -- string | ||
− | flexargs = {} | + | local flexargs = {} |
− | |||
for k, v in pairs( frame.args ) do | for k, v in pairs( frame.args ) do | ||
-- table.insert( flexargs, k ); | -- table.insert( flexargs, k ); |
Versie van 5 okt 2023 20:48
- Issues
- allowsort not working
- placeholder?
- input-length-trigger
--[[ Test environment for Module:FF ]]-- local p = {} p.token= function(frame) -- nowiki for query? local query = frame.args.query or "" -- nowiki? local selectedvalues = frame.args.selected or "" local sep = frame.args.separator or "," local displayprop = frame.args.returntext or "" local inputname = frame.args.name or "" -- @todo returnid if you don't want to retrieve the pages as values local wrappertemplate = frame.args.wrappertemplate or "" -- local query = frame.args.query or "" -- local multiple = frame.args.multiple or "" -- local allowclear = frame.args.allowclear or "" local optionfor = string.gsub( inputname, "%[%]", "" ) local options = p.createOptions( selectedvalues, sep, displayprop, optionfor ) -- string local flexargs = {} for k, v in pairs( frame.args ) do -- table.insert( flexargs, k ); flexargs[k] = v or nil end -- Required or else query does not work. flexargs.query = frame.args.query or "" -- attributes without values -- flexargs.multiple = frame.args.multiple or nil -- flexargs.allowclear = frame.args.allowclear or nil -- flexargs.allowsort = frame.args.allowsort or nil -- flexargs['input-length-trigger'] = frame.args['input-length-trigger'] or nil -- Remove anything that doesn't belong to FF proper local nonffargs = { 'selected', 'wrappertemplate', 'returntext', 'label' } for name in ipairs( nonffargs ) do if ( flexargs[name] ~= nil ) then flexargs[name] = nil end end -- FlexForm local forminput = frame:extensionTag( '_token', options, flexargs ) if ( mw.text.trim( wrappertemplate ) == "" ) then return forminput else local res = frame:expandTemplate{ title = wrappertemplate, args = { label, forminput } } return res end return res end p.createOptions = function( values, sep, displayprop, inputname ) local valTbl = mw.text.split( values, sep ) local str = '' for k,val in ipairs( valTbl ) do local label = p.smwgetlabel( val, displayprop ) or val local inputTbl = { ['type'] = 'option', ['value'] = mw.text.trim( val ), ['for'] = inputname, ['selected'] = 'selected' } frame = mw.getCurrentFrame() local input = frame:extensionTag( '_input', label, inputTbl ); str = str .. input end return str end p.smwgetlabel = function( pagename, propname ) if not mw.smw then return "mw.smw module not found" end local qarg = "[[" .. pagename .. "]][[Modification date::+]]|?" .. propname .. "=title|link=none" local qres = mw.smw.ask( qarg ) local label = qres[1].title or nil return label end return p