Aller au contenu

Module:Notification

Cette page est protégée.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 6 novembre 2023 à 09:55 et modifiée en dernier par Od1n (discuter | contributions) (la fonction mw.text.trim() a été optimisée : quand elle est utilisée avec le charset par défaut, elle emploie maintenant le même code qu'ici, voir T338561 ; en revanche je garde un "lookup cache" en variable locale, surtout quand la fonction est appelée dans une boucle). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[voir] [modifier] [historique] [purger]

Module utilisé par {{Mention}}, {{Notif}}, {{Notif discret}} et {{Notif invisible}}, ainsi que {{Bonjour}}, {{Bonsoir}}, {{Salut}}, {{Merci}}etc.

local trim = mw.text.trim

local p = {}

function p.main( frame )
    local parentArgs = frame:getParent().args

    local intro
    if frame.args.intro and frame.args.intro ~= '' then
        intro = frame.args.intro
    end

    -- utilisé par Modèle:Mention
    local prefixe = frame.args.prefixe or ''

    local indexMax = 50
    local depasseMax = false

    local items = {}

    for i, v in ipairs( parentArgs ) do
        if i <= indexMax then
            local username = trim( v )
            if username ~= '' then
                local texte = username
                if parentArgs[ 'texte' .. i ] and parentArgs[ 'texte' .. i ] ~= '' then
                    texte = parentArgs[ 'texte' .. i ]
                end
                local item = prefixe .. '[[Utilisateur:' .. username .. '|' .. texte .. ']]'
                if intro and #items == 0 then
                    items[ 1 ] = '<span class="nowrap">' .. intro .. item .. '</span>'
                else
                    if texte:find( ' ', nil, true ) or texte:find( '-', nil, true ) then
                        item = '<span class="nowrap">' .. item .. '</span>'
                    end
                    items[ #items + 1 ] = item
                end
            end
        else
            depasseMax = true
        end
    end

    if #items == 0 then
        return '<span class="error">vous devez spécifier au moins un utilisateur</span>'
    end

    local result = mw.text.listToText( items )

    if depasseMax then
        result = result .. '<span class="error">trop d\'utilisateurs : maximum ' .. indexMax .. '</span>'
    end

    return result
end

return p