Versie door Admin (overleg | bijdragen) op 6 jan 2025 om 14:36
Semantic MediaWikiDit bericht verdwijnt nadat alle relevante taken zijn afgerond.

Er is één onvoltooide of openstaande taak, die nodig is om het installeren van Semantic MediaWiki te voltooien. Een beheerder of gebruiker met voldoende rechten kan deze uitvoeren. Dit moet worden gedaan voordat nieuwe gegevens worden toegevoegd om tegenstrijdigheden te voorkomen.

{{#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
}}
Luafout op regel 75: attempt to index global 'res' (a nil value)

--[[

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 next(qres) ~= nil then
		local label = res[1].title or nil 
		return label
	end
	return ""
end

return p