<token></token>
- 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 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 -- flexargs.query = mw.text.nowiki( query ) -- nowiki version -- 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