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.

Module:Class/Book




{"Has initial":"V","Title":"De verre Aarde - Arthur C. Clarke 1990, 2ᵉ druk, A.W. Bruna & Zoon, Utrecht","Has sort label by year":"1990 2¶","Has publication info":"2ᵉ druk (1990), A.W. Bruna & Zoon, Utrecht","Has sort label":"verre aarde de  arthur c clarke 1990 2¶","Title plain":"De verre Aarde - Arthur C. Clarke 1990, 2ᵉ druk, A.W. Bruna & Zoon, Utrecht","Has sort label by author":"clarke, arthur c. - verre aarde de¶"}

https://www.fandata.nl/Persoon/1608

{"Has initial":"T","Title":"Tim 2 - Louis de Groof 1975, Standaard Uitgeverij, Antwerpen/Amsterdam","Has sort label by year":"1975 ¶","Has publication info":"(1975), Standaard Uitgeverij, Antwerpen/Amsterdam","Has sort label":"tim 2  louis de groof 1975¶","Title plain":"Tim 2 - Louis de Groof 1975, Standaard Uitgeverij, Antwerpen/Amsterdam","Has sort label by author":"groof, louis de - tim 2¶"}

Has publication info = (1975), Standaard Uitgeverij, Antwerpen/Amsterdam +

Has publication year = 1975

Has sort label = Tim 2 louis de groof 1975¶

Has sort label by author = Groof, louis de - tim 2¶


local p = {}
local mSlot = require("Module:Slot")
local mFormatForSorting = require("Module:Format for sorting")
local mTitle = require("Module:Class/Title")
local mPerson = require("Module:Class/Person")

p.set = function( frame )
	local uitgeverijnr = frame.args.uitgeverijnr or ""
	local boekpubjaar = frame.args.boekpubjaar or ""
	local boekpubjaarAlt = boekpubjaar
	if boekpubjaar == "" then boekpubjaarAlt = "?" end
	local druk = frame.args.druk or ""
	local titleAddendum = p.createTitleAddendum( boekpubjaar, druk, uitgeverijnr, false )
	local titleAddendumVariant = p.createTitleAddendum( boekpubjaar, druk, uitgeverijnr, true )

	local titelnr = frame.args.titelnr or ""
	local titelGew = ""
	local titelBiblio = ""

	local schrijverNrs = ""
	if titelnr ~= "" then
		titelGew = mSlot.getValueFromTemplateData( "ws-page-props", titelnr, "Title", "TitelGew" )
		titelBiblio = mSlot.getValueFromTemplateData( "ws-page-props", titelnr, "Title", "TitelBiblio" )
		if titelBiblio == nil or titelBiblio == "" then titelBiblio = titelGew end
		schrijverNrs = mSlot.getValueFromTemplateData( "ws-page-props", titelnr, "Title", "SchrijverNr" )
	end
	
	local authorNames = ""
	local firstAuthorNameBiblio = ""
	if schrijverNrs ~= "" then
		authorNames = mPerson.getAuthorNames( schrijverNrs )
		firstAuthorNameBiblio = mPerson.getFirstAuthorNameBiblio( schrijverNrs )
	end

	local authorNameString = authorNames
	if authorNames == "" then authorNameString = "---" end
	
	-- <i>{{#var:@titel}}</i> - {{#var:@naamgew|---}} {{#if:{{#var:@title addendum}}|{{#var:@title addendum}}}}
	local labelForTitle = "<i>" .. titelGew .. "</i> - " .. authorNameString .. " " .. titleAddendum
	labelForTitle = mw.text.trim(labelForTitle)
	-- {{#var:@titel}} - {{#var:@naamgew|---}} {{#if:{{#var:@title addendum}}|{{#var:@title addendum}}}} 
	local labelForTitlePlain = titelGew .. " - " .. authorNameString .. " " .. titleAddendum
	labelForTitlePlain = mw.text.trim(labelForTitlePlain)
	-- @sort title = {{lc:{{Strip title for sorting|1={{#var:@titelbiblio}} - {{#var:@naamgew}} {{{BoekPubJaar|}}} {{{Druk|}}} }} }}
	--local stripped = mFormatForSorting.minimalStripForSorting( titelBiblio )
	local labelForSort = mw.ustring.lower(
		titelBiblio .. " - " .. authorNames .. " " .. boekpubjaar .. " " .. druk
	)
	labelForSort = mFormatForSorting.flatten( mw.text.trim(labelForSort) )
	-- {{uc:{{#sub:{{#var:@titelbiblio|{{#var:@titel}}}}|0|1}}}}
	local initial = mw.ustring.upper(
		mw.ustring.sub( titelBiblio, 1, 1 )
	)
	local sortLabelByAuthor = mTitle.createSortLabelByAuthor( titelBiblio, firstAuthorNameBiblio )

	local set = {
		["Title"] = labelForTitle,
		["Title plain"] = labelForTitlePlain,
		["Has initial"] = initial,
		-- {{#sub:{{#var:@sort title}}|0|150}}¶
		["Has sort label"] = mw.ustring.sub( labelForSort, 1, 150 ) .. "¶",
		-- {{{BoekPubJaar|?}}} {{{Druk|}}}¶
		["Has sort label by year"] = boekpubjaarAlt .. " " .. druk .. "¶",
		["Has sort label by author"] = mw.ustring.sub( sortLabelByAuthor, 1, 200 ) .. "¶",
		["Has publication info"] = titleAddendumVariant
	}

	local debugmode = frame.args.debugmode or "false"
	if debugmode == "true" then
		return "<pre>" .. mw.text.jsonEncode( set ) .. "</pre>"
	end
	
	local setResult = nil
	if mw.smw then
		setResult = mw.smw.set( set )
	end

	-- {{DISPLAYTITLE:{{#var:@label2}} }} 
	mw.ext.displaytitle.set( labelForTitlePlain )
	-- {{DEFAULTSORT:{{#var:@sort title}} }}
	frame:callParserFunction( 'DEFAULTSORT', { labelForSort } )

end

--[[
Final string of formatted title
comes in one of two varieties
]]--
p.createTitleAddendum = function( boekpubjaar, druk, uitgeverijnr, variant )
	local str = ""
	local boekpubjaar = boekpubjaar or ""
	if boekpubjaar == "" then boekpubjaar = "?" end

	local drukWeergave = ""
	if druk ~= "" then
		local drukN = tonumber(druk)
		if drukN == nil then
			drukWeergave =  "druk: " .. druk
		else
			drukWeergave =  druk .. "ᵉ druk"
		end
	end

	local uitgeverijnaam = ""
	if uitgeverijnr ~= "" then
		--local slotContent = mSlot.getSlotContent( uitgeverijnr, "ws-page-props", "Publisher" )
		uitgeverijnaam = mSlot.getValueFromTemplateData( "ws-page-props", uitgeverijnr, "Publisher", "Naam" )
	end

	-- concat
	if variant ~= "" and variant == true then
		str = drukWeergave .. " (" .. boekpubjaar .. ")"
		if uitgeverijnaam ~= "" then str = str .. ", " .. uitgeverijnaam end
	else
		str = boekpubjaar
		if drukWeergave ~= "" then str = str .. ", " .. drukWeergave end
		if uitgeverijnaam ~= "" then str = str .. ", " .. uitgeverijnaam end
	end

	return mw.text.trim( str )
end

return p