Modulo:Pagebanner
Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Pagebanner/man (modifica · cronologia)
Sandbox: Modulo:Pagebanner/sandbox (modifica · cronologia) · Test: Modulo:Pagebanner/test (modifica · cronologia · Esegui)
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Pagebanner/man (modifica · cronologia)
Sandbox: Modulo:Pagebanner/sandbox (modifica · cronologia) · Test: Modulo:Pagebanner/test (modifica · cronologia · Esegui)
Vedi anche
--[[
Source script: https://it.wikivoyage.org/wiki/Modulo:Pagebanner
Maintainer: Andyrom75
Lazy loads:
require('Modulo:Approvata').approvata
]]
local countryData = require( 'Module:CountryData' )._countryData2HTML
local gpx = require( 'Module:Indicatore GPX' ).gpx
local WDBannerFunc = require( 'Module:Wikibase' ).banner
local function _isDefined(s)
return s ~= '' and s
end
local function _initMontlyDest( destAnno, page, frame)
--preparo il percorso della pagina in ogni caso
local path = tostring(page) .. '/' .. tostring(destAnno)
--se l'anno non è definito ritorno nil, altrimenti la pagina specifica qualora l'anno è quello corrente o meno
return _isDefined( destAnno ) and (
--Destinazione dell'anno in corso
(destAnno == os.date( "%Y" )) and page or
--Destinazione dell'anno "destAnno"
(mw.title.new( path ).exists == true) and path
) or nil
end
local function _pagebanner(frame)
local args = frame.args
local PBargs={}
local WDBanner = _isDefined( WDBannerFunc() )
local TplBanner = _isDefined( args[1] )
PBargs[1] = TplBanner or WDBanner or 'Pagebanner default.jpg'
PBargs.tooltip = _isDefined( args.descrizione ) or _isDefined( args.caption ) or nil
PBargs.pgname = _isDefined( args.pgname ) or nil
PBargs.origin = _isDefined( args.origin ) or nil
PBargs["icon-unesco"] = _isDefined( args.unesco ) and (mw.ustring.lower( args.unesco ) == 'sì') and "Patrimoni mondiali dell'umanità" or nil
PBargs["icon-star"] = _isDefined( args.vetrina ) and (mw.ustring.lower( args.vetrina ) == 'sì') and 'Wikivoyage:Vetrina' or nil
PBargs["icon-otbp"] = _initMontlyDest( args.fsb, 'Wikivoyage:Destinazione fuori dal sentiero battuto', frame)
PBargs["icon-dotm"] = _initMontlyDest( args.ddm, 'Wikivoyage:Destinazione del mese', frame)
--[[ icon-ftt=Previous_Featured_travel_topics - NON IMPLEMENTATO
PBargs["icon-ftt"] = _initMontlyDest( args.ftt, 'Wikivoyage:XXX', frame)
]]
local disambigPage = mw.title.getCurrentTitle().text .. ' (disambigua)'
PBargs["icon-disambig"] = _isDefined( args.disambig ) or --Per altri luoghi con lo stesso nome, si veda args.disambig
--Per altri luoghi con lo stesso nome, si veda disambigPage
( (mw.title.new( disambigPage ).exists == true) and disambigPage ) or nil
PBargs.toc = ( tostring(args.notoc) == 'true') and 'no' or 'yes'
local output = (countryData() or '') .. (gpx() or '')
if TplBanner then
if mw.title.getCurrentTitle().namespace == 0 then
output = output .. '[[Categoria:Articoli con banner]]'
else
output = output .. '[[Categoria:Pagine con banner]]'
end
local WDBannerAnchor = WDBanner and mw.uri.anchorEncode( WDBanner )
local TplBannerAnchor = TplBanner and mw.uri.anchorEncode( TplBanner )
local acceptedDifferentBanner = {
['none'] = 1, -- esplicita richiesta di assenza di banner
['Disambiguation banner1.jpg'] = 1, --banner delle disambigue
['Welcome banner.jpg'] = 1, --banner dei frasari
['Generic flying banner.jpg'] = 1, --banner delle liste di aeroporti nazionali
['UNESCO page banner.jpg'] = 1, --banner delle liste di patrimoni UNESCO
}
if (TplBannerAnchor ~= WDBannerAnchor) and (not acceptedDifferentBanner[TplBanner]) and (mw.title.getCurrentTitle().namespace == 0) then
output = output .. '[[Categoria:Banner diversi da Wikidata]]'
end
else
if mw.title.getCurrentTitle().namespace ~= 2 then
output = output .. '[[Categoria:Banner senza immagine]]'
end
if WDBanner then
output = output .. '[[Categoria:Banner da Wikidata]]'
end
end
if (args.ddm and (mw.ustring.lower( args.ddm ) == 'approvata')) or (args.fsb and (mw.ustring.lower( args.fsb ) == 'approvata')) then
output = output .. require('Modulo:Approvata').approvata{args={ddm=args.ddm, fsb=args.fsb}}
end
output = output .. frame:callParserFunction( 'PAGEBANNER', PBargs )
return output
end
--Interfacce del modulo
local p = {}
function p.pagebannerTemplate(frame)
return _pagebanner(frame:getParent())
end
function p.pagebannerInvoke(frame)
return _pagebanner(frame)
end
function p.pagebannerModule(frame)
Cframe = mw.getCurrentFrame()
Cframe.args = frame.args
return _pagebanner(Cframe)
end
--Ricordisamoa function that given an article name, it returns the file name of its banner
function p.from_page(frame)
return select( 3, string.find( mw.title.new( frame.args.title or frame.args[1] ):getContent(), '|%s*[Bb]anner%s*=%s*([^\n]*%S)%s*\n' ) )
end
--Winm b test function that given an article name, it returns the file name of its banner without extension
function p.nome(frame)
return select( 3, string.find( mw.title.new( frame.args.title or frame.args[1] ):getContent(), '|%s*[Bb]anner%s*=%s*([^\n]*(%a*))%p%a*%s*\n' ) )
end
return p