Modulo:Controllo di autorità: differenze tra le versioni

Da Wikisource.
Contenuto cancellato Contenuto aggiunto
test per codice SBN, controllo su stringhe, larghezza box
cambio in "Schede di autorità" come da discussione
Riga 60: Riga 60:
['font-weight'] = 'bold'
['font-weight'] = 'bold'
}
}
:wikitext('Controllo di autorità')
:wikitext('Schede di autorità')
:done()
:done()
:tag('td')
:tag('td')

Versione delle 18:30, 24 feb 2014

La documentazione per questo modulo può essere creata in Modulo:Controllo di autorità/man

-- principali codici di controllo di autorità
-- [[d:MediaWiki:Gadget-AuthorityControl.js]] per una lista completa
local codici = {
	{ 214, '[[w:Virtual International Authority File|VIAF]]', '//viaf.org/viaf/$1/' },
	{ 227, '[[wikipedia:Integrated Authority File|GND]]', 'http://d-nb.info/gnd/$1' },
	{ 244, '[[w:Library of Congress Control Number|LCCN]]', 'http://lccn.loc.gov/$1' },
	{ 268, '[[w:Bibliothèque nationale de France|BNF]]', 'http://catalogue.bnf.fr/ark:/12148/cb$1/PUBLIC' },
	{ 396, '[[w:Servizio bibliotecario nazionale|SBN]]', 'http://id.sbn.it/af/$1' }
}

function val(item,prop)
	local claims = item.claims
	local res = {}
	if claims~=nil and claims['P'..prop[1]]~=nil then
		for index,claim in pairs(claims['P'..prop[1]]) do
			local dv = claim.mainsnak.datavalue
			if dv~=nil and dv.value~=nil and type(dv.value)=='string' and mw.text.trim(dv.value)~='' then
				table.insert(res,'['..mw.ustring.format(prop[3],dv.value)..' '..dv.value..']')
			end
		end
	end
	if #res > 0 then
		return prop[2]..': '..table.concat(res,', ')
	else
		return nil
	end
end

local p = {}

-- per l'uso da parte di altri moduli
function p.box(item)
	if mw.wikibase and not item then
		item = mw.wikibase.getEntity()
	end
	if not item then
		return ''
	end
	local res = {}
	for i,v in pairs(codici) do
		local x = val(item,v)
		if x then
			table.insert(res,'*'..x)
		end
	end
	if #res > 0 then
		return tostring(
			mw.html.create('table')
			:addClass('toccolours')
			--:css('width','100%')
			:attr('cellpadding','4')
				:tag('tr')
				:css('vertical-align','top')
					:tag('td')
					:css{
						background = '#ccf',
						['text-align'] = 'right',
						['padding-right'] = '0.4em',
						width = '15%',
						['font-weight'] = 'bold'
					}
					:wikitext('Schede di autorità')
					:done()
					:tag('td')
						:tag('div')
						:addClass('hlist')
						:wikitext('\n'..table.concat(res,'\n'))
			:allDone()
		)
	else
		return ''
	end
end

function p.test()
	return p.box({
		claims = {
			P214 = {
				{
					mainsnak = {
						datavalue = {
							value = '18273645'
						}
					}
				}
			},
			P227 = {
				{
					mainsnak = {
						datavalue = {
							value = 'a123456'
						}
					}
				}
			},
			P244 = {
				{
					mainsnak = {
						datavalue = {
							value = '1234567'
						}
					}
				},
				{
					mainsnak = {
						datavalue = {
							value = '7654321'
						}
					}
				}
			},
			P396 = {
				{
					mainsnak = {
						datavalue = {
							value = 'ABCDEF'
						}
					}
				}
			}
		}
	})
end

-- da invocare nel wikicodice
function p.ext(frame)
	return p.box()
end

return p