Semantic MediaWikiDit bericht verdwijnt nadat alle relevante taken zijn afgerond.

Er is één onvoltooide of openstaande taak, die nodig is om het bijwerken 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.

Documentatie voor deze module kan aangemaakt worden op de volgende pagina: Module:Slot/doc

local p = {}

--[[
{{#invoke:Slot|getParamValue
|slot= // defaults to main
|page= // defaults to FULLPAGENAME
|template=
|param=Category
}}
]]--
p.getParamValue = function ( frame )
	local slot = frame.args.slot or "main"
	local page = frame.args.page or ""
	-- else present page
	if page == "" then page = mw.title.getCurrentTitle().fullText end
	local template = frame.args.template or nil
	if template == nil then return "" end
	local param = frame.args.param or ""
	return p.getValueFromTemplateData( slot, page, template, param )
end

--[[ helper ]]--
p.getValueFromTemplateData = function( slot, page, template, param, default )

	local slotData = {}
	slotData = mw.slots.slotData(slot,page)
    if slotData == {} or slotData == nil then 
    	mw.log( "No slot data found" )
    	return ""
    end

	-- default value if no value was found (unless there are no slotdata at all)
	local default = default or ""
	local res = default
	if template ~= nil then
		local tree = slotData[template]
		if type(tree) == "table" then
			--for k,v in pairs( tree ) do
				--mw.log( "tree key: " .. k )
			--end
			if tree[1] ~= nil and tree[1][param] ~= nil then
				res = tree[1][param]["_text"]
			end
		end
	else
		-- do JSON, too?
	end

	return res
end

--[[ 
Moved from Class/Title
]]--
p.getValueFromTemplateParam = function( pagename, templateName, templateParam )
	if pagename == "" then
		mw.log( "pagename is empty" )
		return ""
	end
	-- pre-check, just in case
	local title = mw.title.new( pagename )
	if title == nil or not title.exists then
		mw.log( "title does not exist" )
		return ""
	end

	local slotContent = p.getSlotContent( pagename, "ws-page-props", templateName )
	if slotContent == nil or slotContent[1] == nil or slotContent[1][templateParam] == nil then
		mw.log( "No value retrieved from page. Template param: " .. templateParam )
		return ""
	end
	if type( slotContent[1][templateParam]["_text"] ) == "string" then
		return slotContent[1][templateParam]["_text"]
	else
		return "?"
	end
end

--[[ 
Moved from Class/Title
]]--
p.getSlotContent = function( page, slot, template )
	local template = template or ""
	if ( template == "" ) then
		-- Assuming JSON
		if slot == "main" then 
			--loadJsonData does not alway work. Use WSSlots instead
			--return mw.loadJsonData( page )
		end
		local str = mw.slots.slotContent( slot, page )
		if type(str) == "table" then
			-- @todo VERY unlikely
			return str
		end
		if str ~= nil then
			return mw.text.jsonDecode( str )
		else
			return {}
		end
	end

	-- template
	local slotData = mw.slots.slotData( slot, page )
	if ( slotData == nil ) then
		return type(slotData)
	end
	return slotData[template]
end

return p