Regel 9: Regel 9:
 
local label = frame.args.label or ""
 
local label = frame.args.label or ""
 
 
-- assign vals from protected table frame.args to new table
+
-- Important! Assign vals from protected frame.args to new table
 
flexargs = {}
 
flexargs = {}
 
for k,v in pairs( frame.args ) do
 
for k,v in pairs( frame.args ) do
 
flexargs[k] = v
 
flexargs[k] = v
 
end
 
end
 +
 
-- slot
 
-- slot
 
-- Remove anything from args that should not be sent to FF
 
-- Remove anything from args that should not be sent to FF
Regel 33: Regel 34:
 
end
 
end
 
-- FF
 
-- FF
+
local res = frame:extensionTag( '_input', content, flexargs )
flexargs.value = "testing"
+
return res
local str = "<br>"
+
end
for v in pairs(flexargs) do
+
 
 +
p.printarray = function( table )
 +
local str = ""
 +
for v in pairs( table ) do
 
str = str .. v .. "<br>"
 
str = str .. v .. "<br>"
 
end
 
end
 
return str
 
return str
 
--local res = frame:extensionTag( '_input', content, flexargs )
 
--return res
 
 
end
 
end
  

Versie van 22 sep 2023 09:14

Module:FF




invoke within form

{{#invoke:FF|input 
|type=text 
|name=myname
|value=Value here 
|id=fff-443434 
|class=form-control

|label=Name
|template=Data item

|slot=
|param=
|template=
}}


Getdata

Kikkers en tongzoenen - Sarah Mlynowski (2007), 1ᵉ druk, Uitgeverij Van Goor Unieboek BV, Houten:

Titel/-787178247

Works with parser function though


Titel/-787178247

getdatatest

Titel/-787178247


local p = {}

p.input = function(frame)
	local content = frame.args.content or frame.args[1] or ""
	local frompage = frame.args.page or ""
	local fromslot = frame.args.slot or "main"
	local fromtemplate = frame.args.template or "" --template name
	local fromparam = frame.args.param or "" --template parameter
	local label = frame.args.label or ""
	
	-- Important! Assign vals from protected frame.args to new table
	flexargs = {}
	for k,v in pairs( frame.args ) do
		flexargs[k] = v
	end
	
	-- slot
	-- Remove anything from args that should not be sent to FF
	local additkeys = { 'content', 'page', 'slot', 'template', 'param', 'label' }
	for name in ipairs( additkeys ) do
		if ( flexargs[name] ~= nil ) then
			flexargs[name] = nil
		end
	end
	--add value from slot 
	if ( frompage ~= "" ) then
		slotval = p.getdatafromslot( frompage, fromslot, fromtemplate, fromparam )
		if ( flexargs["type"] == 'textarea' ) then
			content = slotval
		else
			flexargs.value = "" -- likely superfluous
			flexargs.value = slotval
		end
	end
	-- FF
	local res = frame:extensionTag( '_input', content, flexargs )
	return res
end

p.printarray = function( table ) 
	local str = ""
	for v in pairs( table ) do
		str = str .. v .. "<br>"
	end
	return str
end

--[[
test
]]--
p.getdata = function(frame)
	-- todo without pagename, get current page
	local page = frame.args.page or mw.title.getCurrentTitle()
	local slot = frame.args.slot or "main"
	local template = frame.args.template or ""  --template name
	local param = frame.args.param or nil  --template parameter
	-- getdatafromslot( page, slot, param )
	local str = p.getdatafromslot( page, slot, template, param )
	return str
	--local pagepropsparams = { slot, page, '@' .. slot }
	--local slotdatapf = frame:callParserFunction( '#slottemplates', pagepropsparams )
	--local slotdata = frame:preprocess( slotdatapf )
end

--[[
]]--
p.getdatafromslot = function( page, slot, template, param )
	local str = "Something went wrong"
	--
	if ( template == "" ) then
		--todo
		local str = mw.slots.slotContent( slot, page )
		return str
	end
	-- 
	local slotdata = mw.slots.slotTemplates( slot, page )
	local str = slotdata[template][1][param]["_text"]
	--local str = slotdata["Book"][1]["TitelNr"]["_text"]
	return str
end

-- does not work
p.getdatatest = function()
	local slotdata = mw.slots.slotTemplates( "ws-page-props", "Boek/-100102193" )
	mw.logObject( slotdata );
	local str = slotdata["Book"][1]["TitelNr"]["_text"]
	return str
end


--[[
test to show comparison callParserFunction and extensionTag
]]--
p.form1 = function(frame)
	-- test of frame:callParserFunction
	-- {{#tag:form||id=bla|action=get}}
	local content = 'Test'
	local formparams = { 'form', content, id = 'bla', action = 'get' }
	local str = frame:callParserFunction( '#tag', formparams )
	return str
end

--[[
Makes more sense than using callParserFunction
but "equivalent to a call to frame:callParserFunction() with function name '#tag' "
]]--
p.form2 = function(frame)
	-- frame:extensionTag( name, content, args )
	local content = 'Test'
	local tag = 'form'
	local args = { id = 'bla', action = 'get' }
	local str = frame:extensionTag( tag, content, args )
	return str
end

return p