Info Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Quickbar/man (modifica · cronologia)
Sandbox: Modulo:Quickbar/sandbox (modifica · cronologia) · Test: Modulo:Quickbar/test (modifica · cronologia · Esegui)

Il modulo Quickbar si occupa di generare il riquadro informativo che compare a lato di ogni articolo tramite il template {{Quickbar}}.

Utilizza i seguenti moduli:



local quickbar = {} local getArgs = require('Module:Arguments').getArgs  local function is_defined(s) 	if s and s ~= '' then return s end 	return nil end  function quickbar.Quickbar_header ( frame ) 	args = getArgs(frame) 	if is_defined(args) and is_defined(args[1]) then 		local output = mw.html.create('tr') 		output 			:tag('td') 				:attr('colspan', is_defined(args['colspan']) or '2') 				:addClass('qbHeader') 				:wikitext(args[1] or '') 		return tostring(output) 	end 	return nil end  function quickbar.Quickbar_site ( frame ) 	-- Assumo la chiamata mediante  #invoke, quindi usa gli argomenti passati al template invocante. 	args = getArgs(frame) 	if is_defined(args) and is_defined(args[1]) and is_defined(args[2]) then 		return quickbar.Quickbar_header{'['..args[2]..' <small>'..args[1]..'</small>]'} 	end 	return nil end  function quickbar.Quickbar_item ( frame ) 	args = getArgs(frame) 	if is_defined(args) and is_defined(args[1]) and is_defined(args[2]) then 		local output = mw.html.create('tr') 		output 			:tag('th') 				:addClass('qbRowHeader') 				:wikitext(args['heading'] or args[1] or '') 				:done() 			:tag('td') 				:addClass('printNoLink qbRowValue') 				:wikitext(args['value'] or args[2] or '') 		return tostring(output) 	end 	return nil end  function quickbar.Quickbar_image ( frame )   	local args = getArgs(frame)  	if not is_defined(args) then return nil end 	local heading = mw.html.create('') 	if is_defined(args['heading']) then 		heading 			:tag('div') 				:addClass('qbHeader') 				:wikitext(args['heading']) 				:done() 	end 	local output = mw.html.create('tr') 	local extraClasses = args['class'] or '' 	if #extraClasses > 0 then extraClasses = ' '.. extraClasses  end 	output 		:tag('td') 			:attr('colspan', is_defined(args['colspan']) or '2') 			:addClass('qbImageCell') 			:node(heading) 			:tag('div') 				:addClass('qbImage' .. extraClasses) 				:wikitext(args['image'] or '') 	return tostring(output) end  function quickbar.coa_and_flag ( frame ) 	local Wikibase = require('Module:Wikibase') 	local stemma = Wikibase.stemma() 	local stemma_titolo = Wikibase.stemma_titolo() 	local wikistemma = '[[File:'..stemma..'|70x70px|center|'..stemma_titolo..']]' 	local bandiera = Wikibase.bandiera() 	local bandiera_titolo = Wikibase.bandiera_titolo() 	local wikibandiera = '[[File:'..bandiera..'|70x70px|center|border|'..bandiera_titolo..']]' 	--Mostra stemma e bandiera affiancate quando entrambe presenti, o il solo stemma se la bandiera è mancante 	if is_defined(stemma) then 		if is_defined(bandiera) then 			return quickbar.Quickbar_image{ 				heading='Stemma e Bandiera', 				image='<div width="100%"><div style="display:inline-block;width: 50%;">'..wikistemma..'</div><div style="display:inline-block;width: 50%;">'..wikibandiera..'</div></div>' 			} 		else 			return quickbar.Quickbar_image{ 				heading='Stemma', 				image=wikistemma 			} 		end 	--Mostra la sola bandiera quando lo stemma è mancante 	elseif is_defined(bandiera) then 		return quickbar.Quickbar_image{ 			heading='Bandiera', 			image=wikibandiera 		} 	end 	return nil end  function quickbar.currency ( frame ) 	args = getArgs(frame) 	if is_defined(args) and is_defined(args[1]) then 		return args[1] 	end 	local mWikidata = require('Module:Wikidata') 	local nome = mWikidata._getProperty({ 'P38', n = 1 }) 	if is_defined(nome) then 		nome = nome:gsub("^%l", string.upper) 	else 		return nil 	end 	local codice = mWikidata._getProperty({ 'P498', n = 1, from = mWikidata._getProperty({ 'P38', n = 1, formatting = 'raw' }) }) 	if is_defined(codice) and (codice ~= "''nessun valore''") then 		return nome .. ' (' .. codice .. ') ' 	else 		return nome 	end end  function quickbar.capital ( frame ) 	args = getArgs(frame) 	if is_defined(args) and is_defined(args[1]) then 		return args[1] 	end 	local mWikidata = require('Module:Wikidata') 	local capitale = mWikidata._getProperty({ 'P36', n = 1 }) 	if is_defined(capitale) then 		return capitale 	else 		return nil 	end end  function quickbar.area ( frame ) 	args = getArgs(frame) 	if is_defined(args) and is_defined(args[1]) then 		return args[1] 	end 	local mWikidata = require('Module:Wikidata') 	local area = mWikidata._getProperty({ 'P2046', n = 1 }) 	if is_defined(area) then 		local prec = 0 		if tonumber(area) < 1000 then prec = 2 end 		return string.gsub( string.gsub( require('Modulo:Formatnum it').main({area, prec}), "(,%d-)0+$", "%1"), "(,)$", "") .. ' km²' 	else 		return nil 	end end  function quickbar.UTC_Format ( frame ) 	return (((frame[1]:gsub(":00","")):gsub("±00","")):gsub("−","-")):gsub("([%+%-])0","%1") end  function quickbar.UTC ( frame ) 	args = getArgs(frame) 	if is_defined(args) and is_defined(args.UTC) then 		return args.UTC 	end 	local mWikidata = require('Module:Wikidata') 	local qconfig = mw.loadData( 'Modulo:Quickbar/Configurazione'); 	local UTC_data = mWikidata._getProperty({'P421', qualifier='P1264', qualifiervalue='Q1777301'}, true) 	if UTC_data == nil or #UTC_data == 0 then 		UTC_data = mWikidata._getProperty({'P421'}, true) 	end 	if UTC_data == nil then 		return '' 	end 	for index, value in ipairs(UTC_data) do 		if qconfig.UTC[value] then 			UTC_data[index] = qconfig.UTC[value] 		end 	end 	if #UTC_data == 1 then 		if string.match(UTC_data[1], "^UTC") then 			UTC_data[1] = quickbar.UTC_Format({UTC_data[1]}) 			return UTC_data[1] 		else 			return ''			 		end 	end 	if #UTC_data > 1 then 		local UTC_first = UTC_data[1]:match('^UTC ?(.*)') or UTC_data[1] 		UTC_first = quickbar.UTC_Format({UTC_first}) 		local UTC_last = UTC_data[#UTC_data]:match('^UTC ?(.*)') or UTC_data[#UTC_data] 		UTC_last = quickbar.UTC_Format({UTC_last}) 		return 'UTC da ' .. UTC_first .. ' a ' .. UTC_last 	end 	return '' end  -- -- GESTISCO MAPPA DI LOCALIZZAZIONE --  -- Estrai latitudine e longitudine, preferendo quelli passati dall'utente local function fetch_coords(args)     local wikibase = require('Modulo:Wikibase')     local latitude, longitude      -- User provided     if is_defined(args['lat']) or is_defined(args['long']) then         -- If any , use all of them         latitude = args['lat']         longitude = args['long']     else         -- If none,  all from wikidata         latitude = wikibase.latitudine({args = {""}})         longitude = wikibase.longitudine({args = {""}})     end      -- Final check     latitude = is_defined(latitude) and latitude or ''     longitude = is_defined(longitude) and longitude or ''      return latitude, longitude end  -- Determina la mappa da usare local function determine_map(args)     local map = args['map']          -- codice iso passato dall'utente     if is_defined(map) then         return string.lower(map)     else     	-- codice da wikidata         local wdGetProperty = require('Modulo:Wikidata')._getProperty         local countryId = wdGetProperty({ 'P17', n = 1, formatting = 'raw' })         local iso_code = wdGetProperty({ 'P297', n = 1, from = countryId })                  -- case pagina non connessa su wikidata o iso_code non disponibile         if is_defined(iso_code) then         	return string.lower(iso_code)  -- Ensure lowercase         end     end     -- nessuna opzione disponibile     return '' end  -- Genera la mappa di localizzazione usata nel quickbar (via template quickbar image) function quickbar.localizzazione(frame) 	local args = getArgs(frame)       local latitude, longitude = fetch_coords(args)     local iso_code = determine_map(args)     local label = args['nome'] or mw.title.getCurrentTitle().text          if latitude ~= '' and longitude ~= '' and iso_code ~= '' then     	     	-- Gestisco i parametri per il modulo Location map     	local locMap = require('Modulo:Location map').locationMap     	local locMapFrame = {}     	locMapFrame.args = { 	    	map   = iso_code, 			lat   = tonumber(latitude), 			long  = tonumber(longitude), 			name  = label, 			label = "'''"  .. label .. "'''", 			width = 250     	}                  -- Creo il Quickbar image         local quickbarImageArgs = {             heading = 'Posizione',             image = locMap( locMapFrame ),             class = 'dFlex',         }              	return quickbar.Quickbar_image( quickbarImageArgs )     end     return '' end   return quickbar