Aller au contenu

Module:Documentacion

De Vouiquipèdia, l’enciclopèdia abada.
Cen est una vèrsion arch·ivâ de ceta pâge en dâta du 6 octobro 2013 a 10:13 et modifiâ en dèrriér per ChrisPtDe (discussion | contribucions). El pôt contegnir des èrrors ou des contegnus vandalisâs pas presents dens la vèrsion ègzistenta.

En francês : Ce module implémente le modèle {{Mèta documentacion de modèlo}}. Voir la page du modèle pour les instructions d'utilisation.

Fonctions exportables

  • documentation(frame) – Fonction principale du module – à appeler avec #invoke dans un modèle – renvoyant le code HTML de la documentation.
  • _documentation(args) – Fonction subsidiaire du module – à appeler avec require() dans un autre module – et renvoyant le code HTML de la documentation.

Autres fonctions

  • existePage(page) – Teste si une page existe.
  • nomSouspage(page, souspage) – Renvoie le nom d'une sous-page, en tenant compte des cas où l'on se trouverait déjà dans une sous-page "/Documentation", "/Bac à sable" ou "/Test".
  • lienUrl(nomPage, texteLien, action, pagePreload) – Retourne un lien wikifié vers la page nomPage, affichant le texte texteLien, avec possibilité d'ajouter des query string (paramètre action) et un preload (paramètre pagePreload).
  • entete(args, page, doc, existeDoc) – Construit l'entête de la documentation contenant l'image de documentation, le titre, et les liens de création/modification/purge.
  • protection(page, doc, existeDoc, message) – Construit le bandeau indiquant la protection de la page le cas échéant.
  • retireBalisesCategories(contenuDoc) - Permet d'ignorer les balises de catégories lors de l'inclusion d'une page de doc pour les bacs à sables.
  • contenu(args, titreDoc, existeDoc) – Retourne la concaténation de la documentation en dur, sans cadre vert. C'est cette méthode qui génère la sous-page /Documentation rédigée par l'utilisateur.
  • notice(args, page, doc, existeDoc) – Retourne la notice de la documentation situé en bas de page.

Exemples et tests

Modèlo:Projet Scribunto


--Ceti modulo emplèmente lo modèlo {{Documentacion}}.
 
local p = {}

local TableBuilder = require('Module:TableBuilder')
 
function p.corp(frame)
    args = frame:getParent().args
    local page = mw.title.getCurrentTitle()
    doc = p.docname(page)
    tab = TableBuilder.new()

    --Benda por les sot-pâges /Bouèta de sabla
    if page.subpageText == 'Bouèta de sabla' then
        tab.insert('<div style="clear:both />')
           .insert(frame:preprocess('{{Sot-pâge de bouèta de sabla}}'))
    end
 
    --G·ènèracion de la documentacion
    p.enteta(page)
    p.contegnu(frame, page)
    p.notice(page)

    return tab.concat()
end
 
function p.docname(page)
    --Sont pas dedens na sot-pâge
    if not page.isSubpage then return page.subjectNsText .. ":" .. page.text .. "/Documentacion" end
 
    --Sont dedens na sot-pâge
    if page.subpageText == 'Documentacion'
    or page.subpageText == 'Bouèta de sabla'
    or page.subpageText == 'Èprôva' then
        return page.subjectNsText .. ":" .. page.baseText .. "/Documentacion"
    else
        return page.subjectNsText .. ":" .. page.text .. "/Documentacion"
    end
end
 
function p.ifexist(page)
    if not page or not mw.title.new(page).exists then return false end
    return true
end
 
function p.enteta(page)
    tab.insert('<div style="clear:both; margin:1em 0 0 0; border:1px solid #aaa; background:')

    if not args.color then tab.insert('#ecfcf4')
    else tab.insert(args.color) end
 
    tab.insert('; padding:1em 1em 0.8em;">')
       .insert('<div style="margin-bottom:1ex; border-bottom:1px solid #aaa; padding-bottom:3px;">')
       .insert('[[Fichiér:Template-info.png|50px|alt=Documentacion du modèlo|link=]]')
       .insert('<span style="font-weight:bold; font-size:125%">&nbsp;')

    if args.titro then tab.insert(args.titro)
    else tab.insert('Documentacion') end
    tab.insert('</span>')

	if not args.contegnu then
        local arg = mw.title.new(args[1] or doc)
        tab.insert('<span class="mw-editsection plainlinks">&#91;[')

        if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then
            tab.insert(arg:fullUrl('action=edit'))
               .insert(' changiér')
        else
            tab.insert(arg:fullUrl({["action"]="edit", ["preload"]="Modèlo:Documentacion/Preload"}))
               .insert(' fâre')
        end
        tab.insert(']&#93;&#32;&#91;[')
        tab.insert(page:fullUrl('action=purge') .. ' purgiér]')
           .insert('&#93;</span>')
    end
	tab.insert('</div>')

    return tab.concat()
end
 
function p.contegnu(frame, page)
    local arg = args[1] or doc

    if args.contegnu then
        tab.insert('\n')
           .insert(args.contegnu)
    else
        tab.insert(frame:preprocess('<nowiki />'))
           .insert('\n')
        if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then
            tab.insert(frame:preprocess('{{' .. arg .. '}}'))
        end
    end
    tab.insert('\n')
       .insert(frame:preprocess('<nowiki />'))
       .insert('<div style="clear:both" />\n')

    return tab.concat()
end
 
function p.notice(page)
    local arg = mw.title.new(args[1] or doc)
 
    if args.contegnu then
        tab.insert('<div class="plainlinks" style="border-top:1px solid #aaa; margin: 1em 0 0;">')
           .insert('<p style="margin-bottom:0; padding-left:1em; font-style:italic;">\n')
 
        if args.notice then
            tab.insert(args.notice)
        else
            tab.insert('La [[Éde:Documentacion de modèlo|documentacion]] de ceti ')
               .insert('[[Éde:Modèlo|modèlo]] est [[Éde:Entrebetâ|entrebetâye]] tot drêt ')
               .insert('dedens lo sin côrp. [')
               .insert(page:fullUrl('action=purge'))
			   .insert(' Clicâd ique por purgiér lo cacho].')
               .insert('<br />Se ceta pâge est protègiêe, ')
               .insert('se vos plét transferâd lo contegnu de la documentacion vers la sina [')
               .insert(arg:fullUrl({["action"]="edit", ["preload"]="Modèlo:Documentacion/Preload"}))
               .insert(' sot-pâge consacrâye].')
        end
    else
        if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then
            tab.insert('<div class="plainlinks" style="border-top:1px solid #aaa; margin: 1em 0 0;">')
               .insert('<p style="margin-bottom:0; padding-left:1em; font-style:italic;">')
               .insert('La [[Éde:Documentacion de modèlo|documentacion]] de ceti ')
               .insert('[[Éde:Modèlo|modèlo]] est [[Éde:Entrebetâ|entrebetâye]] dês la sina [[')
               .insert(tostring(arg) .. '|sot-pâge de documentacion]]')
               .insert('&nbsp;<span style="font-size:89%; font-style:normal;">([')
               .insert(arg:fullUrl('action=edit'))
               .insert(' changiér]&nbsp;|&nbsp;[')
               .insert(arg:fullUrl('action=history') .. ' historico])</span>.<br />')
        else
            tab.insert('<div class="plainlinks">')
               .insert('<p style="margin-bottom:0; padding-left:1em; font-style:italic;">')
        end
        tab.insert('Los changiors pôvont travalyér dedens la ')
 
        local bouetadesabla = arg.subjectNsText .. ":" .. arg.baseText .. "/Bouèta de sabla"
        local argbouetadesabla = mw.title.new(bouetadesabla)

        if p.ifexist(bouetadesabla) then
            tab.insert('[[' .. bouetadesabla .. '|bouèta de sabla]]')
               .insert('&nbsp;<span style="font-size:89%; font-style:normal;">([')
               .insert(argbouetadesabla:fullUrl('action=edit'))
               .insert(' changiér])</span>')
        else
            tab.insert('bouèta de sabla&nbsp;<span style="font-size:89%; font-style:normal;">([')
               .insert(argbouetadesabla:fullUrl({["action"]="edit", ["preload"]="Modèlo:Documentacion/Preload2"}))
               .insert(' fâre])</span>')
        end
        tab.insert(' et la pâge d’ ')
 
        local eprova = arg.subjectNsText .. ":" .. arg.baseText .. "/Èprôva"
        local argeprova = mw.title.new(eprova)
        if p.ifexist(eprova) then
            tab.insert('[[' .. eprova .. '|èprôva]]')
               .insert('&nbsp;<span style="font-size:89%; font-style:normal;">([')
               .insert(argtest:fullUrl('action=edit'))
               .insert(' changiér])</span>')
        else
            tab.insert('èprôva&nbsp;<span style="font-size:89%; font-style:normal;">([')
               .insert(argeprova:fullUrl({["action"]="edit", ["preload"]="Modèlo:Documentacion/Preload3"}))
               .insert(' fâre])</span>')
        end
 
        tab.insert('.<br />Se vos plét, betâd les catègories dedens la sot-pâge ')
           .insert('<span class="plainlinks">[')
 
        if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then
            tab.insert(arg:fullUrl('action=edit'))
        else
            tab.insert(arg:fullUrl({["action"]="edit", ["preload"]="Modèlo:Documentacion/Preload"}))
        end
        tab.insert(' /Documentacion].')
    end
    tab.insert('</p></div></div>')

    return tab.concat()
end

return p