Versie door Dennis Groenewegen (overleg | bijdragen) op 28 okt 2025 om 18:26
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)

Module:Class/Book contribution




example
{"Has publication year (date)":"2018","Has initial":"W","Title":"De wereld in","Has publication year":"2018","Has sort label":"wereld in de¶","Title plain":"De wereld in","Has sort label by author":"dragt, tonke - wereld in de¶"}
{"Has publication year (date)":"1974","Has initial":"O","Title":"Onvoltooide engelen","Has publication year":"1974","Has sort label":"onvoltooide engelen¶","Title plain":"Onvoltooide engelen","Has sort label by author":"brite, poppy z. - onvoltooide engelen¶"}

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")

--[[
-->{{#slottemplates:ws-page-props |{{{TitelID|}}} | @title-props }}<!--
-->{{#vardefine:@titel|{{#caprint:@title-props[Title][TitelGew]}} }}<!--
-->{{#vardefine:@sort title|{{Strip title for sorting|{{lc:{{#caprint:@title-props[Title][TitelBiblio]}}}} }} }}<!--
-->{{DISPLAYTITLE:{{#var:@titel|Geen titel}}}}<!--

|Has publication year={{#show:{{{BoekID|}}} |?Has publication year}}
|Has publication year (date)={{#show:{{{BoekID|}}} |?Has publication year (date)}}
|Title={{#var:@titel|Geen titel}}
|Title plain={{#var:@titel|Geen titel}}
|Has sort label={{#var:@sort title}}¶
|Has sort label by author={{#show:{{{TitelID|-}}}|?Has sort label by author=|link=none}}
|Has initial={{uc:{{#sub:{{#var:@sort title}}|0|1}}}}

]]--
	
p.set = function( frame )
	local titelid = frame.args.titelid or ""
	local boekid = frame.args.boekid or ""

	-- |Has publication year={{#show:{{{BoekID|}}} |?Has publication year }}
	local jaar = mSlot.getValueFromTemplateData( "ws-page-props", boekid, "Book", "BoekPubJaar", "?" )
	-- |Has publication year (date)={{#show:{{{BoekID|}}} |?Has publication year (date)}}
	local jaarForTypeDate = nil
	if string.match( string.gsub( jaar, "±", "" ), "^%d+$") then jaarForTypeDate = jaar end

	local titelGew = "Geen titel"
	local titelBiblio = titelGew
	local labelForSort = titelGew
	local displayTitle = titelGew
	local initial = "G"
	local sortLabelByAuthor = ""
	if titelid ~= "" then
		titelGew = mSlot.getValueFromTemplateData( "ws-page-props", titelid, "Title", "TitelGew" )
		titelBiblio = mSlot.getValueFromTemplateData( "ws-page-props", titelid, "Title", "TitelBiblio" )
		if titelGew ~= "" then
			displayTitle = titelGew
		end
		if titelBiblio ~= "" then
			initial = mw.ustring.upper( mw.ustring.sub( titelBiblio, 1, 1 ) )
			labelForSort = mFormatForSorting.flatten( mw.text.trim( titelBiblio ) )
		end
		
		local firstAuthorNameBiblio = ""
		local schrijverNrs = mSlot.getValueFromTemplateData( "ws-page-props", titelid, "Title", "SchrijverNr" )
		if schrijverNrs ~= "" then
			--authorNames = mPerson.getAuthorNames( schrijverNrs )
			firstAuthorNameBiblio = mPerson.getFirstAuthorNameBiblio( schrijverNrs )
		end
		sortLabelByAuthor = mTitle.createSortLabelByAuthor( titelBiblio, firstAuthorNameBiblio )
	end
	
	local set = {
		["Title"] = displayTitle,
		["Title plain"] = displayTitle,
		["Has sort label"] = labelForSort .. "¶",
		["Has sort label by author"] = mw.ustring.sub( sortLabelByAuthor, 1, 200 ) .. "¶",
		["Has initial"] = initial,
		["Has publication year"] = jaar,
		["Has publication year (date)"] = jaarForTypeDate
	}
	
	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
	
	mw.ext.displaytitle.set( displayTitle )

end

return p