
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