Geen bewerkingssamenvatting
Geen bewerkingssamenvatting
 
(19 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 16: Regel 16:
-- @todo returnid if you don't want to retrieve the pages as values
-- @todo returnid if you don't want to retrieve the pages as values
local wrappertemplate = frame.args.wrappertemplate or ""
local wrappertemplate = frame.args.wrappertemplate or ""
local label = frame.args.label 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, "%[%]", "" )
local options = p.createOptions( selectedvalues, sep, displayprop, optionfor ) -- string
local options = p.createOptions( selectedvalues, sep, displayprop, optionfor ) -- string
local flexargs = {}
local flexargs = {}
for k,v in ipairs( frame.args ) do
for k, v in pairs( frame.args ) do
flexargs[k] = v or ""
-- table.insert( flexargs, k );
flexargs[k] = v or nil
end
end
-- nowiki version, meant to prevent pre-parsing but...
--flexargs.query = mw.text.nowiki( query )
-- required or else query does not work
flexargs.query = query
flexargs.multiple = multiple
flexargs.allowclear = allowclear
-- Remove anything that doesn't belong to FF proper
-- Remove anything that doesn't belong to FF proper
Regel 81: Regel 72:
local qarg = "[[" .. pagename .. "]][[Modification date::+]]|?" .. propname .. "=title|link=none"
local qarg = "[[" .. pagename .. "]][[Modification date::+]]|?" .. propname .. "=title|link=none"
local qres = mw.smw.ask( qarg )
local qres = mw.smw.ask( qarg )
local label = qres[1].title or nil
if qres ~= nil then
return label
label = qres[1].title or nil  
return label
end
return ""
end
end


return p
return p

Huidige versie van 6 jan 2025 14:38

{{#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

]]--

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 label = frame.args.label 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
	
	-- 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 )
	if qres ~= nil then
		label = qres[1].title or nil 
		return label
	end
	return ""
end

return p