{{#invoke:FFToken|token
|id=tokener-module
|name=testsdsfdf[]
|query=[[Class::Titles]][[Title plain::!!!]](limit=999)(returntext=Title plain)
|returntext=Title plain
|selected=Titel/100,Titel/4000,Titel/4666
|separator=,
|multiple=multiple
|placeholder=Find a title
|allowclear=true
|input-length-trigger=1
|allowtags=allowtags
|allowsort=allowsort
}}
--[[Test environment for Module:FF]]--localp={}p.token=function(frame)-- nowiki for query?localquery=frame.args.queryor""-- nowiki?localselectedvalues=frame.args.selectedor""localsep=frame.args.separatoror","localdisplayprop=frame.args.returntextor""localinputname=frame.args.nameor""-- @todo returnid if you don't want to retrieve the pages as valueslocalwrappertemplate=frame.args.wrappertemplateor""localquery=frame.args.queryor""localoptionfor=string.gsub(inputname,"%[%]","")localoptions=p.createOptions(selectedvalues,sep,displayprop,optionfor)-- stringlocalflexargs={}fork,vinipairs(frame.args)doflexargs[k]=vor""end-- flexargs.query = mw.text.nowiki( query ) -- nowiki version-- FlexFormlocalforminput=frame:extensionTag('_token',options,flexargs)if(mw.text.trim(wrappertemplate)=="")thenreturnforminputelselocalres=frame:expandTemplate{title=wrappertemplate,args={label,forminput}}returnresendreturnresendp.createOptions=function(values,sep,displayprop,inputname)localvalTbl=mw.text.split(values,sep)localstr=''fork,valinipairs(valTbl)dolocallabel=p.smwgetlabel(val,displayprop)orvallocalinputTbl={['type']='option',['value']=mw.text.trim(val),['for']=inputname,['selected']='selected'}frame=mw.getCurrentFrame()localinput=frame:extensionTag('_input',label,inputTbl);str=str..inputendreturnstrendp.smwgetlabel=function(pagename,propname)ifnotmw.smwthenreturn"mw.smw module not found"endlocalqarg="[["..pagename.."]][[Modification date::+]]|?"..propname.."=title|link=none"localqres=mw.smw.ask(qarg)locallabel=qres[1].titleornilreturnlabelendreturnp