Regel 17: | Regel 17: | ||
local wrappertemplate = frame.args.wrappertemplate or "" | 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 optionfor = string.gsub( inputname, "%[%]", "" ) | ||
Regel 30: | Regel 30: | ||
-- Required or else query does not work. | -- Required or else query does not work. | ||
− | flexargs.query = query | + | flexargs.query = frame.args.query or "" |
-- attributes without values | -- attributes without values | ||
flexargs.multiple = frame.args.multiple or nil | flexargs.multiple = frame.args.multiple or nil | ||
+ | flexargs.allowclear = frame.args.allowclear or nil | ||
flexargs.allowclear = frame.args.allowclear or nil | flexargs.allowclear = frame.args.allowclear or nil | ||
Versie van 5 okt 2023 20:06
- 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 ipairs( frame.args ) do flexargs[k] = v or "" 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.allowclear = frame.args.allowclear 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