Module:Notice

De Pikmin FR
Version datée du 16 juin 2024 à 18:11 par fr>Fxfxfx0 (Suppression de la catégorie Category:Notice templates et ajout de Catégorie:Modèles de notifications par un robot)

Usage

Use this template to create other Notice Templates.

Syntax: {{notice|align=|text-align=|width=|file=|filesize=|header=|content=}}

color Named, optional The color preset for the border. Defined options are green, blue, teal, orange, yellow, red, maroon, pink, and gray. However, if a color is a known CSS color, it can be used. Defaults to green.
text-align Named, optional The text-align attribute of the header and content text, e.g. center. Defaults to left.
file Named, optional The file to show on the left-hand section as a filename. e.g. Example.jpg. Defaults to nothing shown.
filesize Named, optional The file's size on the left-hand section. e.g. 30px. Defaults to 48px if a file was specified, otherwise none.
header Named, optional The header text. e.g. Notice. Defaults to nothing shown.
content Named, optional The content text. e.g. Test message. Defaults to nothing shown.
width Named, optional The width attribute of the notice, e.g. 30%. Defaults to unwritten (inherit).

Examples

{{notice|file=Example.jpg|header=Under Construction|content=This article is under construction.}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).

{{notice|file=Example.jpg|header=Notice with header text only.}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).

{{notice|file=Example.jpg|content=Small notice without a header.}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).

{{notice|file=Example.jpg|header=Green notice|color=green}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).

{{notice|file=Example.jpg|header=Blue notice with custom width|width=30%|color=blue}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).

{{notice|file=Example.jpg|header=Teal notice|color=teal}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).

{{notice|file=Example.jpg|header=Orange notice|color=orange}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).

{{notice|file=Example.jpg|header=Yellow notice|color=yellow}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).

{{notice|file=Example.jpg|header=Red notice|color=red}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).

{{notice|file=Example.jpg|header=Maroon notice|color=maroon}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).

{{notice|file=Example.jpg|header=Pink notice|color=pink}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).

{{notice|file=Example.jpg|header=Gray notice|color=gray}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).

{{notice|file=Example.jpg|header=Custom color notice|color=slateblue|text-align=center}} Erreur Lua à la ligne 78 : attempt to call local 'p' (a table value).


local p = {}

function p.getStyleForColor(color)
    result = {
        ["green"] = "rgb(170, 220, 0)",
        ["teal"] = "rgb(47, 172, 172)",
        ["blue"] = "rgb(0, 153, 255)",
        ["orange"] = "rgb(255, 128, 0)",
        ["yellow"] = "rgb(235, 238, 61)",
        ["red"] = "rgb(217, 0, 0)",
        ["pink"] = "rgb(240, 60, 120)",
        ["maroon"] = "rgb(174, 21, 102)",
        ["gray"] = "rgb(201, 201, 201)",
    }

    return result[color] or color
end

-- Entry point for the module
function p.main(frame)
    local args = frame:getParent().args
    local color = args.color or 'green'
    local align = args.align or ''
    local textAlign = args['text-align'] or 'left'
    local width = args.width or ''
    local file = args.file or ''
    local fileSize = args.filesize or '48px'
    local header = args.header or ''
    local content = args.content or ''

    local root = mw.html.create('div')
        :addClass('notice')
        :attr('align', align)
        :css('text-align', textAlign)
        :css('border-color', p.getStyleForColor(color))
        :css('border-radius', "5px 5px 5px 5px")
        :css('border-style', "solid")
        :css('border-width', "1px 5px 1px 5px")
        :css('column-gap', "1em")
        :css('display', "flex")
        :css('flex-direction', "row")
        :css('margin', ".5em 0")
        :css('padding', ".5em")


    if width ~= '' then
        root:css('width', width)
    end

    if file ~= '' then
        root:tag('div')
            :addClass('notice-image')
            :css('position', "relative")
            :css('top', "50%")
            :wikitext(string.format('[[File:%s|%s|link=]]', file, fileSize))
    end

    local contentDiv = root:tag('div')
            :addClass('notice-content')
            :css('flex-grow', 1)

    if header ~= '' then
        contentDiv:tag('div')
            :addClass('notice-header')
            :css('font-weight', 600)
            :wikitext(header)
    end

    contentDiv:tag('div')
            :addClass('notice-description')
            :css('font-size', "9pt")
            :wikitext(content)

    return tostring(root)
end

return p
[[Catégorie:Modèles de notifications]]