Module:Avis pour Wikivoyage

La documentation pour ce module peut être créée à Module:Avis pour Wikivoyage/Documentation

--[=[

gère
- catégorisation
- et affiche le titre sur les avis listé dans [[Wikinews:Avis de voyage/Wikivoyage]]
et donc sur [[voy:Wikinews:Avis de voyage/Wikivoyage]]

** test **
= p.getWikicode(
    mw.getCurrentFrame()
    :newChild{ args = {
        anno   = '2013',
        mese   = '10',
        giorno = nil
    } }
)

]=]

local p = {}

-- durée d'affichage de l'article
local showMonths = 6

local dateErrorMsg, timelyNewsMsg, expiredNewsMsg

local function setMessages( frame )

    dateErrorMsg = [=[
<div class="error">
AVERTISSEMENT: les paramètres du modèle ]=]
    .. frame:expandTemplate{
        title = 'm',
        args = { 'Avis pour Wikivoyage' }
    }
    .. [=[ fausses ou manquantes.
</div>
[[Category:Modèle "Avis pour Wikivoyage" avec erreurs]]
]=]

	timelyNewsMsg = frame:extensionTag(
		'indicator',
		'[[File:Wikivoyage-Logo-v3-en.svg|44px|Cet article de nouvelles contient des informations de voyage|link=Wikinews:Avis de voyage]]',
		{ name = 'wikivoyage' }
	) .. '\n[[Category:Avis pour Wikivoyage]]'

    expiredNewsMsg = '[[Category:Avis pour Wikivoyage archive]]'

end

local function dateError( year, month, day )

    if
    not year
    or not month
    or year < 2013
    or year > tonumber( os.date( '%Y' ) )
    or month < 1
    or month > 12
    or day < 1
    or day > 31
    then return true
    end

end

function p.getWikicode( frame )

    local year  = tonumber( frame.args.an )
    local month = tonumber( frame.args.mois )
    local day   = tonumber( frame.args.jour ) or 15

    setMessages( frame )

    if dateError( year, month, day )
    then return dateErrorMsg
    end

    local currentDate = os.time()
    local articleDate = os.time{
        year  = year,
        month = month,
        day   = day
    }

    if os.difftime( currentDate, articleDate ) < 86400 * 31 * ( .5 + showMonths )
    then return timelyNewsMsg
    else return expiredNewsMsg
    end

end

function p.getMesiVisualizzazione()

    return showMonths

end

return p