Module:Documentation : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
(amélioration partielle)
Ligne 5 : Ligne 5 :
 
function p.corps(frame)
 
function p.corps(frame)
 
     local args = frame:getParent().args
 
     local args = frame:getParent().args
 +
    local page = mw.title.getCurrentTitle()
 
     local corps = {}
 
     local corps = {}
  
 
     --Bandeau pour les sous-pages /Bac à sable
 
     --Bandeau pour les sous-pages /Bac à sable
     if mw.title.getCurrentTitle().subpageText == 'Bac à sable' then
+
     if page.subpageText == 'Bac à sable' then
 
         table.insert(corps, '<div style="clear:both />')
 
         table.insert(corps, '<div style="clear:both />')
 
         table.insert(corps, frame:preprocess('{{Sous-page de bac à sable}}'))
 
         table.insert(corps, frame:preprocess('{{Sous-page de bac à sable}}'))
Ligne 14 : Ligne 15 :
  
 
     --Génération de la documentation
 
     --Génération de la documentation
     table.insert(corps, frame:preprocess(p.entete(frame, args)))
+
     table.insert(corps, frame:preprocess(p.entete(frame, args, page)))
     table.insert(corps, p.contenu(frame, args))
+
     table.insert(corps, p.contenu(frame, args, page))
     table.insert(corps, frame:preprocess(p.notice(frame, args)))
+
     table.insert(corps, frame:preprocess(p.notice(frame, args, page)))
  
 
     --Code HTML brut
 
     --Code HTML brut
Ligne 33 : Ligne 34 :
 
end
 
end
  
function p.docname(frame)
+
function p.docname(page)
     local page = mw.title.getCurrentTitle()
+
     --On n'est pas dans une sous-page
 +
    if not page.isSubpage then return page.subjectNsText .. ":" .. page.text .. "/Documentation" end
  
     if not page.isSubpage then
+
     --On est dans une sous-page
        --On n'est pas dans une sous-page
+
    if page.subpageText == 'Documentation'
 +
    or page.subpageText == 'Bac à sable'
 +
    or page.subpageText == 'Test' then
 +
        return page.subjectNsText .. ":" .. page.baseText .. "/Documentation"
 +
    else
 
         return page.subjectNsText .. ":" .. page.text .. "/Documentation"
 
         return page.subjectNsText .. ":" .. page.text .. "/Documentation"
    else
 
        --On est dans une sous-page
 
        if page.subpageText == 'Documentation'
 
        or page.subpageText == 'Bac à sable'
 
        or page.subpageText == 'Test' then
 
            return page.subjectNsText .. ":" .. page.baseText .. "/Documentation"
 
        else
 
            return page.subjectNsText .. ":" .. page.text .. "/Documentation"
 
        end
 
 
     end
 
     end
 
end
 
end
  
function p.entete(frame, args)
+
function p.entete(frame, args, page)
 
     local entete = {'<div style="clear:both; margin:1em 0 0 0; border:1px solid #aaa; background:'}
 
     local entete = {'<div style="clear:both; margin:1em 0 0 0; border:1px solid #aaa; background:'}
  
Ligne 85 : Ligne 82 :
 
             end
 
             end
 
         else
 
         else
             if p.ifexist(p.docname(frame)) then
+
             if p.ifexist(p.docname(page)) then
                 table.insert(entete, p.docname(frame))
+
                 table.insert(entete, p.docname(page))
 
                 table.insert(entete, '|action=edit modifier}}]&#93;&#32;&#91;{{Purger le cache|purger}}')
 
                 table.insert(entete, '|action=edit modifier}}]&#93;&#32;&#91;{{Purger le cache|purger}}')
 
             else
 
             else
                 table.insert(entete, p.docname(frame))
+
                 table.insert(entete, p.docname(page))
 
                 table.insert(entete, '|action=edit&preload=Modèle:Documentation/Preload créer}}]')
 
                 table.insert(entete, '|action=edit&preload=Modèle:Documentation/Preload créer}}]')
 
             end
 
             end
Ligne 100 : Ligne 97 :
 
end
 
end
  
function p.contenu(frame, args)
+
function p.contenu(frame, args, page)
 
     local contenu = {}
 
     local contenu = {}
 
     if args.contenu then
 
     if args.contenu then
Ligne 112 : Ligne 109 :
 
         and p.ifexist(args[1]) then
 
         and p.ifexist(args[1]) then
 
             table.insert(contenu, frame:preprocess('{{' .. args[1] .. '}}'))
 
             table.insert(contenu, frame:preprocess('{{' .. args[1] .. '}}'))
         elseif frame:preprocess('{{FULLPAGENAMEE}}') ~= frame:preprocess('{{FULLPAGENAMEE:' .. p.docname(frame) .. '}}')
+
         elseif frame:preprocess('{{FULLPAGENAMEE}}') ~= frame:preprocess('{{FULLPAGENAMEE:' .. p.docname(page) .. '}}')
         and p.ifexist(p.docname(frame)) then
+
         and p.ifexist(p.docname(page)) then
             table.insert(contenu, frame:preprocess('{{' .. p.docname(frame) .. '}}'))
+
             table.insert(contenu, frame:preprocess('{{' .. p.docname(page) .. '}}'))
 
         end
 
         end
 
     end
 
     end
Ligne 123 : Ligne 120 :
 
end
 
end
  
function p.notice(frame, args)
+
function p.notice(frame, args, page)
 
     local notice = {}
 
     local notice = {}
  
Ligne 136 : Ligne 133 :
 
             table.insert(notice, 'est directement [[Aide:Inclusion|incluse]] dans le corps de ce dernier.<br />')
 
             table.insert(notice, 'est directement [[Aide:Inclusion|incluse]] dans le corps de ce dernier.<br />')
 
             table.insert(notice, 'Si cette page est protégée, veuillez transférer le contenu de la documentation vers sa ')
 
             table.insert(notice, 'Si cette page est protégée, veuillez transférer le contenu de la documentation vers sa ')
             table.insert(notice, '[{{fullurl:' .. p.docname(frame))
+
             table.insert(notice, '[{{fullurl:' .. p.docname(page))
 
             table.insert(notice, '|action=edit&preload=Modèle:Documentation/Preload sous-page dédiée}}].')
 
             table.insert(notice, '|action=edit&preload=Modèle:Documentation/Preload sous-page dédiée}}].')
 
         end
 
         end
 
     else
 
     else
         if args[1] and p.ifexist(args[1]) or p.ifexist(p.docname(frame)) then
+
         if args[1] and p.ifexist(args[1]) or p.ifexist(p.docname(page)) then
 
             table.insert(notice, '<div class="plainlinks" style="border-top:1px solid #aaa; margin: 1em 0 0;">')
 
             table.insert(notice, '<div class="plainlinks" style="border-top:1px solid #aaa; margin: 1em 0 0;">')
 
             table.insert(notice, '<p style="margin-bottom:0; padding-left:1em; font-style:italic;">')
 
             table.insert(notice, '<p style="margin-bottom:0; padding-left:1em; font-style:italic;">')
Ligne 149 : Ligne 146 :
 
                 table.insert(notice, '[[' .. args[1] .. '|sous-page de documentation]]')
 
                 table.insert(notice, '[[' .. args[1] .. '|sous-page de documentation]]')
 
             else
 
             else
                 table.insert(notice, '[[' .. p.docname(frame) .. '|sous-page de documentation]]')
+
                 table.insert(notice, '[[' .. p.docname(page) .. '|sous-page de documentation]]')
 
             end
 
             end
  
Ligne 160 : Ligne 157 :
 
                 table.insert(notice, args[1] .. '|action=history}} historique]')
 
                 table.insert(notice, args[1] .. '|action=history}} historique]')
 
             else
 
             else
                 table.insert(notice, p.docname(frame) .. '|action=edit}} modifier]')
+
                 table.insert(notice, p.docname(page) .. '|action=edit}} modifier]')
 
                 table.insert(notice, '&nbsp;|&nbsp;[{{fullurl:')
 
                 table.insert(notice, '&nbsp;|&nbsp;[{{fullurl:')
                 table.insert(notice, p.docname(frame) .. '|action=history}} historique]')
+
                 table.insert(notice, p.docname(page) .. '|action=history}} historique]')
 
             end
 
             end
 
             table.insert(notice, ')</span>.<br />')
 
             table.insert(notice, ')</span>.<br />')
Ligne 172 : Ligne 169 :
  
 
         if args[1] and p.ifexist(frame:preprocess('{{#rel2abs:' .. args[1] .. '/../Bac à sable}}'))
 
         if args[1] and p.ifexist(frame:preprocess('{{#rel2abs:' .. args[1] .. '/../Bac à sable}}'))
         or p.ifexist(frame:preprocess('{{#rel2abs:' .. p.docname(frame) .. '/../Bac à sable}}')) then
+
         or p.ifexist(frame:preprocess('{{#rel2abs:' .. p.docname(page) .. '/../Bac à sable}}')) then
 
             table.insert(notice, '[[{{#rel2abs:')
 
             table.insert(notice, '[[{{#rel2abs:')
 
             if args[1] then
 
             if args[1] then
 
                 table.insert(notice, args[1])
 
                 table.insert(notice, args[1])
 
             else
 
             else
                 table.insert(notice, p.docname(frame))
+
                 table.insert(notice, p.docname(page))
 
             end
 
             end
 
             table.insert(notice, '/../Bac à sable}}|bac à sable]]')
 
             table.insert(notice, '/../Bac à sable}}|bac à sable]]')
Ligne 185 : Ligne 182 :
 
                 table.insert(notice, args[1])
 
                 table.insert(notice, args[1])
 
             else
 
             else
                 table.insert(notice, p.docname(frame))
+
                 table.insert(notice, p.docname(page))
 
             end
 
             end
 
             table.insert(notice, '/../Bac à sable}}|action=edit}} modifier])</span>')
 
             table.insert(notice, '/../Bac à sable}}|action=edit}} modifier])</span>')
Ligne 194 : Ligne 191 :
 
                 table.insert(notice, args[1])
 
                 table.insert(notice, args[1])
 
             else
 
             else
                 table.insert(notice, p.docname(frame))
+
                 table.insert(notice, p.docname(page))
 
             end
 
             end
 
             table.insert(notice, '/../Bac à sable}}|action=edit&preload=Modèle:Documentation/Preload2}} créer]')
 
             table.insert(notice, '/../Bac à sable}}|action=edit&preload=Modèle:Documentation/Preload2}} créer]')
Ligne 202 : Ligne 199 :
  
 
         if args[1] and p.ifexist(frame:preprocess('{{#rel2abs:' .. args[1] .. '/../Test}}'))
 
         if args[1] and p.ifexist(frame:preprocess('{{#rel2abs:' .. args[1] .. '/../Test}}'))
         or p.ifexist(frame:preprocess('{{#rel2abs:' .. p.docname(frame) .. '/../Test}}')) then
+
         or p.ifexist(frame:preprocess('{{#rel2abs:' .. p.docname(page) .. '/../Test}}')) then
 
             table.insert(notice, '[[{{#rel2abs:')
 
             table.insert(notice, '[[{{#rel2abs:')
 
             if args[1] then
 
             if args[1] then
 
                 table.insert(notice, args[1])
 
                 table.insert(notice, args[1])
 
             else
 
             else
                 table.insert(notice, p.docname(frame))
+
                 table.insert(notice, p.docname(page))
 
             end
 
             end
 
             table.insert(notice, '/../Test}}|test]]')
 
             table.insert(notice, '/../Test}}|test]]')
Ligne 215 : Ligne 212 :
 
                 table.insert(notice, args[1])
 
                 table.insert(notice, args[1])
 
             else
 
             else
                 table.insert(notice, p.docname(frame))
+
                 table.insert(notice, p.docname(page))
 
             end
 
             end
 
             table.insert(notice, '/../Test}}|action=edit}} modifier])</span>')
 
             table.insert(notice, '/../Test}}|action=edit}} modifier])</span>')
Ligne 224 : Ligne 221 :
 
                 table.insert(notice, args[1])
 
                 table.insert(notice, args[1])
 
             else
 
             else
                 table.insert(notice, p.docname(frame))
+
                 table.insert(notice, p.docname(page))
 
             end
 
             end
 
             table.insert(notice, '/../Test}}|action=edit&preload=Modèle:Documentation/Preload3}} créer]')
 
             table.insert(notice, '/../Test}}|action=edit&preload=Modèle:Documentation/Preload3}} créer]')
Ligne 232 : Ligne 229 :
 
         table.insert(notice, '<span class="plainlinks">[')
 
         table.insert(notice, '<span class="plainlinks">[')
 
         table.insert(notice, '{{fullurl:')
 
         table.insert(notice, '{{fullurl:')
         if args[1] and p.ifexist(args[1]) or p.ifexist(p.docname(frame)) then
+
         if args[1] and p.ifexist(args[1]) or p.ifexist(p.docname(page)) then
 
             if args[1] then
 
             if args[1] then
 
                 table.insert(notice, args[1])
 
                 table.insert(notice, args[1])
 
             else
 
             else
                 table.insert(notice, p.docname(frame))
+
                 table.insert(notice, p.docname(page))
 
             end
 
             end
 
             table.insert(notice, '|action=edit')
 
             table.insert(notice, '|action=edit')
Ligne 244 : Ligne 241 :
 
                 table.insert(notice, args[1])
 
                 table.insert(notice, args[1])
 
             else
 
             else
                 table.insert(notice, p.docname(frame))
+
                 table.insert(notice, p.docname(page))
 
             end
 
             end
 
             table.insert(notice, '|action=edit&preload=Modèle:Documentation/Preload')
 
             table.insert(notice, '|action=edit&preload=Modèle:Documentation/Preload')

Version du 23 juillet 2013 à 10:33

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

--Ce module implemente le modèle {{Documentation}}.

local p = {}

function p.corps(frame)
    local args = frame:getParent().args
    local page = mw.title.getCurrentTitle()
    local corps = {}

    --Bandeau pour les sous-pages /Bac à sable
    if page.subpageText == 'Bac à sable' then
        table.insert(corps, '<div style="clear:both />')
        table.insert(corps, frame:preprocess('{{Sous-page de bac à sable}}'))
    end

    --Génération de la documentation
    table.insert(corps, frame:preprocess(p.entete(frame, args, page)))
    table.insert(corps, p.contenu(frame, args, page))
    table.insert(corps, frame:preprocess(p.notice(frame, args, page)))

    --Code HTML brut
    if args.raw then
        return frame:preprocess('<nowiki>' .. table.concat(corps) .. '</nowiki>')
    end

    return table.concat(corps)

end

function p.ifexist(page)
    if not page then return false end
    if mw.title.new(page).exists then return true end
    return false
end

function p.docname(page)
    --On n'est pas dans une sous-page
    if not page.isSubpage then return page.subjectNsText .. ":" .. page.text .. "/Documentation" end

    --On est dans une sous-page
    if page.subpageText == 'Documentation'
    or page.subpageText == 'Bac à sable'
    or page.subpageText == 'Test' then
        return page.subjectNsText .. ":" .. page.baseText .. "/Documentation"
    else
        return page.subjectNsText .. ":" .. page.text .. "/Documentation"
    end
end

function p.entete(frame, args, page)
    local entete = {'<div style="clear:both; margin:1em 0 0 0; border:1px solid #aaa; background:'}

    if not args.couleur then
        table.insert(entete, '#ecfcf4')
    else
        table.insert(entete, args.couleur)
    end

    table.insert(entete, '; padding:1em 1em 0.8em;">')
    table.insert(entete, '<div style="margin-bottom:1ex; border-bottom:1px solid #aaa; padding-bottom:3px;">')
    table.insert(entete, '[[Fichier:Template-info.png|50px|alt=Documentation du modèle|link=]]')
    table.insert(entete, '<span style="font-weight:bold; font-size:125%">&nbsp;')

    if args.titre then
        table.insert(entete, args.titre)
    else
        table.insert(entete, 'Documentation')
    end
    table.insert(entete, '</span>')

    if not args.contenu then
        table.insert(entete, '<span id="doc_editlinks" class="mw-editsection plainlinks">&#91;[')
        table.insert(entete, '{{fullurl:')

        if args[1] then
            if p.ifexist(args[1]) then
                table.insert(entete, args[1])
                table.insert(entete, '|action=edit modifier}}]&#93;&#32;&#91;{{Purger le cache|purger}}')
            else
                table.insert(entete, args[1])
                table.insert(entete, '|action=edit&preload=Modèle:Documentation/Preload créer}}]')
            end
        else
            if p.ifexist(p.docname(page)) then
                table.insert(entete, p.docname(page))
                table.insert(entete, '|action=edit modifier}}]&#93;&#32;&#91;{{Purger le cache|purger}}')
            else
                table.insert(entete, p.docname(page))
                table.insert(entete, '|action=edit&preload=Modèle:Documentation/Preload créer}}]')
            end
        end
        table.insert(entete, '&#93;</span>')
    end

    table.insert(entete, '</div>')
    return table.concat(entete)
end

function p.contenu(frame, args, page)
    local contenu = {}
    if args.contenu then
        table.insert(contenu, '\n')
        table.insert(contenu, args.contenu)
    else
        table.insert(contenu, frame:preprocess('<nowiki />\n'))
        --Évite toute récursion
        if args[1]
        and frame:preprocess('{{FULLPAGENAMEE}}') ~= frame:preprocess('{{FULLPAGENAMEE:' .. args[1] .. '}}')
        and p.ifexist(args[1]) then
            table.insert(contenu, frame:preprocess('{{' .. args[1] .. '}}'))
        elseif frame:preprocess('{{FULLPAGENAMEE}}') ~= frame:preprocess('{{FULLPAGENAMEE:' .. p.docname(page) .. '}}')
        and p.ifexist(p.docname(page)) then
            table.insert(contenu, frame:preprocess('{{' .. p.docname(page) .. '}}'))
        end
    end

    table.insert(contenu, frame:preprocess('\n<nowiki /><div style="clear:both" />\n'))

    return table.concat(contenu)
end

function p.notice(frame, args, page)
    local notice = {}

    if args.contenu then
        table.insert(notice, '<div class="plainlinks" style="border-top:1px solid #aaa; margin: 1em 0 0;">')
        table.insert(notice, '<p style="margin-bottom:0; padding-left:1em; font-style:italic;">\n')

        if args.notice then
            table.insert(notice, args.notice)
        else
            table.insert(notice, 'La [[Aide:Comment documenter un modèle ?|documentation]] de ce [[Aide:Modèle|modèle]] ')
            table.insert(notice, 'est directement [[Aide:Inclusion|incluse]] dans le corps de ce dernier.<br />')
            table.insert(notice, 'Si cette page est protégée, veuillez transférer le contenu de la documentation vers sa ')
            table.insert(notice, '[{{fullurl:' .. p.docname(page))
            table.insert(notice, '|action=edit&preload=Modèle:Documentation/Preload sous-page dédiée}}].')
        end
    else
        if args[1] and p.ifexist(args[1]) or p.ifexist(p.docname(page)) then
            table.insert(notice, '<div class="plainlinks" style="border-top:1px solid #aaa; margin: 1em 0 0;">')
            table.insert(notice, '<p style="margin-bottom:0; padding-left:1em; font-style:italic;">')
            table.insert(notice, 'La [[Aide:Comment documenter un modèle ?|documentation]] de ce ')
            table.insert(notice, '[[Aide:Modèle|modèle]] est [[Aide:Inclusion|incluse]] depuis sa ')

            if args[1] then
                table.insert(notice, '[[' .. args[1] .. '|sous-page de documentation]]')
            else
                table.insert(notice, '[[' .. p.docname(page) .. '|sous-page de documentation]]')
            end

            table.insert(notice, '&nbsp;<span style="font-size:89%; font-style:normal;">(')
            table.insert(notice, '[{{fullurl:')

            if args[1] then
                table.insert(notice, args[1] .. '|action=edit}} modifier]')
                table.insert(notice, '&nbsp;|&nbsp;[{{fullurl:')
                table.insert(notice, args[1] .. '|action=history}} historique]')
            else
                table.insert(notice, p.docname(page) .. '|action=edit}} modifier]')
                table.insert(notice, '&nbsp;|&nbsp;[{{fullurl:')
                table.insert(notice, p.docname(page) .. '|action=history}} historique]')
            end
            table.insert(notice, ')</span>.<br />')
        else
            table.insert(notice, '<div class="plainlinks">')
            table.insert(notice, '<p style="margin-bottom:0; padding-left:1em; font-style:italic;">')
        end
        table.insert(notice, 'Les éditeurs peuvent travailler dans le ')

        if args[1] and p.ifexist(frame:preprocess('{{#rel2abs:' .. args[1] .. '/../Bac à sable}}'))
        or p.ifexist(frame:preprocess('{{#rel2abs:' .. p.docname(page) .. '/../Bac à sable}}')) then
            table.insert(notice, '[[{{#rel2abs:')
            if args[1] then
                table.insert(notice, args[1])
            else
                table.insert(notice, p.docname(page))
            end
            table.insert(notice, '/../Bac à sable}}|bac à sable]]')
            table.insert(notice, '&nbsp;<span style="font-size:89%; font-style:normal;">(')
            table.insert(notice, '[{{fullurl:{{#rel2abs:')
            if args[1] then
                table.insert(notice, args[1])
            else
                table.insert(notice, p.docname(page))
            end
            table.insert(notice, '/../Bac à sable}}|action=edit}} modifier])</span>')
        else
            table.insert(notice, 'bac à sable&nbsp;<span style="font-size:89%; font-style:normal;">(')
            table.insert(notice, '[{{fullurl:{{#rel2abs:')
            if args[1] then
                table.insert(notice, args[1])
            else
                table.insert(notice, p.docname(page))
            end
            table.insert(notice, '/../Bac à sable}}|action=edit&preload=Modèle:Documentation/Preload2}} créer]')
            table.insert(notice, ')</span>')
        end
        table.insert(notice, ' et la page de ')

        if args[1] and p.ifexist(frame:preprocess('{{#rel2abs:' .. args[1] .. '/../Test}}'))
        or p.ifexist(frame:preprocess('{{#rel2abs:' .. p.docname(page) .. '/../Test}}')) then
            table.insert(notice, '[[{{#rel2abs:')
            if args[1] then
                table.insert(notice, args[1])
            else
                table.insert(notice, p.docname(page))
            end
            table.insert(notice, '/../Test}}|test]]')
            table.insert(notice, '&nbsp;<span style="font-size:89%; font-style:normal;">(')
            table.insert(notice, '[{{fullurl:{{#rel2abs:')
            if args[1] then
                table.insert(notice, args[1])
            else
                table.insert(notice, p.docname(page))
            end
            table.insert(notice, '/../Test}}|action=edit}} modifier])</span>')
        else
            table.insert(notice, 'test&nbsp;<span style="font-size:89%; font-style:normal;">(')
            table.insert(notice, '[{{fullurl:{{#rel2abs:')
            if args[1] then
                table.insert(notice, args[1])
            else
                table.insert(notice, p.docname(page))
            end
            table.insert(notice, '/../Test}}|action=edit&preload=Modèle:Documentation/Preload3}} créer]')
            table.insert(notice, ')</span>')
        end
        table.insert(notice, '.<br />Veuillez placer les catégories dans la sous-page ')
        table.insert(notice, '<span class="plainlinks">[')
        table.insert(notice, '{{fullurl:')
        if args[1] and p.ifexist(args[1]) or p.ifexist(p.docname(page)) then
            if args[1] then
                table.insert(notice, args[1])
            else
                table.insert(notice, p.docname(page))
            end
            table.insert(notice, '|action=edit')

        else
            if args[1] then
                table.insert(notice, args[1])
            else
                table.insert(notice, p.docname(page))
            end
            table.insert(notice, '|action=edit&preload=Modèle:Documentation/Preload')
        end
        table.insert(notice, ' /Documentation}}].')
    end
    table.insert(notice, '</p></div></div>')
    return table.concat(notice)
end

return p