Module:Documentation : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
(indent)
Ligne 3 : Ligne 3 :
 
local p = {}
 
local p = {}
  
    function p.corps(frame)
+
function p.corps(frame)
        local args = frame:getParent().args
+
    local args = frame:getParent().args
        local corps = {}
+
    local corps = {}
 
          
 
          
        --Bandeau pour les sous-pages /Bac à sable
+
    --Bandeau pour les sous-pages /Bac à sable
        if frame:preprocess('{{SUBPAGENAME}}') == 'Bac à sable' then
+
    if frame:preprocess('{{SUBPAGENAME}}') == '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}}'))
        end
+
    end
  
        --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)))
        table.insert(corps, p.contenu(frame, args))
+
    table.insert(corps, p.contenu(frame, args))
        table.insert(corps, frame:preprocess(p.notice(frame, args)))
+
    table.insert(corps, frame:preprocess(p.notice(frame, args)))
  
        --Code HTML brut
+
    --Code HTML brut
        if args.raw then
+
    if args.raw then
            return frame:preprocess('<nowiki>' .. table.concat(corps) .. '</nowiki>')
+
        return frame:preprocess('<nowiki>' .. table.concat(corps) .. '</nowiki>')
        end
+
    end
  
        return table.concat(corps)
+
    return table.concat(corps)
 
          
 
          
    end
+
end
  
    function p.ifexist(page, frame)
+
function p.ifexist(page, frame)
        if not page then return false end
+
    if not page then return false end
        if frame:preprocess('{{#ifexist:' .. page .. '|1}}') == '1' then return true end
+
    if frame:preprocess('{{#ifexist:' .. page .. '|1}}') == '1' then return true end
        return false
+
    return false
    end
+
end
 
      
 
      
    function p.docname(frame)
+
function p.docname(frame)
        --On n'est pas dans une sous-page
+
    --On n'est pas dans une sous-page
        if frame:preprocess('{{BASEPAGENAME}}') == frame:preprocess('{{PAGENAME}}') then
+
    if frame:preprocess('{{BASEPAGENAME}}') == frame:preprocess('{{PAGENAME}}') then
 +
        return frame:preprocess('{{SUBJECTPAGENAME}}/Documentation')
 +
    else
 +
        --On est dans une sous-page
 +
        nom = frame:preprocess('{{SUBPAGENAME}}')
 +
        if nom == 'Documentation' or nom == 'Bac à sable' or nom == 'Test' then
 +
            return frame:preprocess('{{#rel2abs:../Documentation}}')
 +
        else
 
             return frame:preprocess('{{SUBJECTPAGENAME}}/Documentation')
 
             return frame:preprocess('{{SUBJECTPAGENAME}}/Documentation')
        else
 
            --On est dans une sous-page
 
            nom = frame:preprocess('{{SUBPAGENAME}}')
 
            if nom == 'Documentation' or nom == 'Bac à sable' or nom == 'Test' then
 
                return frame:preprocess('{{#rel2abs:../Documentation}}')
 
            else
 
                return frame:preprocess('{{SUBJECTPAGENAME}}/Documentation')
 
            end
 
 
         end
 
         end
 
     end
 
     end
 +
end
  
    function p.entete(frame, args)
+
function p.entete(frame, args)
        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:'}
  
        if not args.couleur then
+
    if not args.couleur then
            table.insert(entete, '#ecfcf4')
+
        table.insert(entete, '#ecfcf4')
        else
+
    else
            table.insert(entete, args.couleur)
+
        table.insert(entete, args.couleur)
        end
+
    end
  
        table.insert(entete, '; padding:1em 1em 0.8em;">')
+
    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, '<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, '[[Fichier:Template-info.png|50px|alt=Documentation du modèle|link=]]')
        table.insert(entete, '<span style="font-weight:bold; font-size:125%">&nbsp;')
+
    table.insert(entete, '<span style="font-weight:bold; font-size:125%">&nbsp;')
  
        if args.titre then
+
    if args.titre then
            table.insert(entete, args.titre)
+
        table.insert(entete, args.titre)
        else
+
    else
            table.insert(entete, 'Documentation')
+
        table.insert(entete, 'Documentation')
        end
+
    end
        table.insert(entete, '</span>')
+
    table.insert(entete, '</span>')
  
        if not args.contenu then
+
    if not args.contenu then
            table.insert(entete, '<span id="doc_editlinks" class="mw-editsection plainlinks">&#91;[')
+
        table.insert(entete, '<span id="doc_editlinks" class="mw-editsection plainlinks">&#91;[')
            table.insert(entete, '{{fullurl:')
+
        table.insert(entete, '{{fullurl:')
  
            if args[1] then
+
        if args[1] then
                if p.ifexist(args[1], frame) then
+
            if p.ifexist(args[1], frame) then
                    table.insert(entete, args[1])
+
                table.insert(entete, args[1])
                    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, args[1])
+
                table.insert(entete, args[1])
                    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
 +
        else
 +
            if p.ifexist(p.docname(frame), frame) then
 +
                 table.insert(entete, p.docname(frame))
 +
                table.insert(entete, '|action=edit modifier}}]&#93;&#32;&#91;{{Purger le cache|purger}}')
 
             else
 
             else
                 if p.ifexist(p.docname(frame), frame) then
+
                 table.insert(entete, p.docname(frame))
                    table.insert(entete, p.docname(frame))
+
                 table.insert(entete, '|action=edit&preload=Modèle:Documentation/Preload créer}}]')
                    table.insert(entete, '|action=edit modifier}}]&#93;&#32;&#91;{{Purger le cache|purger}}')
 
                 else
 
                    table.insert(entete, p.docname(frame))
 
                    table.insert(entete, '|action=edit&preload=Modèle:Documentation/Preload créer}}]')
 
                end
 
 
             end
 
             end
            table.insert(entete, '&#93;</span>')
 
 
         end
 
         end
 +
        table.insert(entete, '&#93;</span>')
 +
    end
 
          
 
          
        table.insert(entete, '</div>')
+
    table.insert(entete, '</div>')
        return table.concat(entete)
+
    return table.concat(entete)
    end
+
end
  
    function p.contenu(frame, args)
+
function p.contenu(frame, args)
        local contenu = {}
+
    local contenu = {}
        if args.contenu then
+
    if args.contenu then
            table.insert(contenu, '\n')
+
        table.insert(contenu, '\n')
            table.insert(contenu, args.contenu)
+
        table.insert(contenu, args.contenu)
        else
+
    else
            table.insert(contenu, frame:preprocess('<nowiki />\n'))
+
        table.insert(contenu, frame:preprocess('<nowiki />\n'))
            --Évite toute récursion
+
        --Évite toute récursion
            if args[1]
+
        if args[1]
            and frame:preprocess('{{FULLPAGENAMEE}}') ~= frame:preprocess('{{FULLPAGENAMEE:' .. args[1] .. '}}')
+
        and frame:preprocess('{{FULLPAGENAMEE}}') ~= frame:preprocess('{{FULLPAGENAMEE:' .. args[1] .. '}}')
            and p.ifexist(args[1], frame) then
+
        and p.ifexist(args[1], frame) 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(frame) .. '}}')
            and p.ifexist(p.docname(frame), frame) then
+
        and p.ifexist(p.docname(frame), frame) then
                table.insert(contenu, frame:preprocess('{{' .. p.docname(frame) .. '}}'))
+
            table.insert(contenu, frame:preprocess('{{' .. p.docname(frame) .. '}}'))
            end
 
 
         end
 
         end
        table.insert(contenu, frame:preprocess('\n<nowiki /><div style="clear:both" />\n'))
 
        return table.concat(contenu)
 
 
     end
 
     end
 +
 +
    table.insert(contenu, frame:preprocess('\n<nowiki /><div style="clear:both" />\n'))
 +
   
 +
    return table.concat(contenu)
 +
end
 
      
 
      
    function p.notice(frame, args)
+
function p.notice(frame, args)
        local notice = {}
+
    local notice = {}
 
          
 
          
         if args.contenu then
+
    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(frame))
 +
            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], frame) or p.ifexist(p.docname(frame), frame) 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;">\n')
+
             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 ')
             if args.notice then
+
            table.insert(notice, '[[Aide:Modèle|modèle]] est [[Aide:Inclusion|incluse]] depuis sa ')
                 table.insert(notice, args.notice)
+
               
 +
             if args[1] then
 +
                 table.insert(notice, '[[' .. args[1] .. '|sous-page de documentation]]')
 
             else
 
             else
                 table.insert(notice, 'La [[Aide:Comment documenter un modèle ?|documentation]] de ce [[Aide:Modèle|modèle]] ')
+
                 table.insert(notice, '[[' .. p.docname(frame) .. '|sous-page de documentation]]')
                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(frame))
 
                table.insert(notice, '|action=edit&preload=Modèle:Documentation/Preload sous-page dédiée}}].')
 
 
             end
 
             end
        else
 
            if args[1] and p.ifexist(args[1], frame) or p.ifexist(p.docname(frame), frame) 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(frame) .. '|sous-page de documentation]]')
 
                end
 
 
                  
 
                  
                table.insert(notice, '&nbsp;<span style="font-size:89%; font-style:normal;">(')
+
            table.insert(notice, '&nbsp;<span style="font-size:89%; font-style:normal;">(')
                table.insert(notice, '[{{fullurl:')
+
            table.insert(notice, '[{{fullurl:')
  
                if args[1] then
+
            if args[1] then
                    table.insert(notice, args[1] .. '|action=edit}} modifier]')
+
                table.insert(notice, args[1] .. '|action=edit}} modifier]')
                    table.insert(notice, '&nbsp;|&nbsp;[{{fullurl:')
+
                table.insert(notice, '&nbsp;|&nbsp;[{{fullurl:')
                    table.insert(notice, args[1] .. '|action=history}} historique]')
+
                table.insert(notice, args[1] .. '|action=history}} historique]')
                else
 
                    table.insert(notice, p.docname(frame) .. '|action=edit}} modifier]')
 
                    table.insert(notice, '&nbsp;|&nbsp;[{{fullurl:')
 
                    table.insert(notice, p.docname(frame) .. '|action=history}} historique]')
 
                end
 
                table.insert(notice, ')</span>.<br />')
 
 
             else
 
             else
                 table.insert(notice, '<div class="plainlinks">')
+
                 table.insert(notice, p.docname(frame) .. '|action=edit}} modifier]')
                 table.insert(notice, '<p style="margin-bottom:0; padding-left:1em; font-style:italic;">')
+
                 table.insert(notice, '&nbsp;|&nbsp;[{{fullurl:')
 +
                table.insert(notice, p.docname(frame) .. '|action=history}} historique]')
 
             end
 
             end
             table.insert(notice, 'Les éditeurs peuvent travailler dans le ')
+
             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}}'), frame)
+
        if args[1] and p.ifexist(frame:preprocess('{{#rel2abs:' .. args[1] .. '/../Bac à sable}}'), frame)
            or p.ifexist(frame:preprocess('{{#rel2abs:' .. p.docname(frame) .. '/../Bac à sable}}'), frame) then
+
        or p.ifexist(frame:preprocess('{{#rel2abs:' .. p.docname(frame) .. '/../Bac à sable}}'), frame) 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(frame))
                end
+
            end
                table.insert(notice, '/../Bac à sable}}|bac à sable]]')
+
            table.insert(notice, '/../Bac à sable}}|bac à sable]]')
                table.insert(notice, '&nbsp;<span style="font-size:89%; font-style:normal;">(')
+
            table.insert(notice, '&nbsp;<span style="font-size:89%; font-style:normal;">(')
                table.insert(notice, '[{{fullurl:{{#rel2abs:')
+
            table.insert(notice, '[{{fullurl:{{#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(frame))
                end
+
            end
                table.insert(notice, '/../Bac à sable}}|action=edit}} modifier])</span>')
+
            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
 
             else
                 table.insert(notice, 'bac à sable&nbsp;<span style="font-size:89%; font-style:normal;">(')
+
                 table.insert(notice, p.docname(frame))
                table.insert(notice, '[{{fullurl:{{#rel2abs:')
 
                if args[1] then
 
                    table.insert(notice, args[1])
 
                else
 
                    table.insert(notice, p.docname(frame))
 
                end
 
                table.insert(notice, '/../Bac à sable}}|action=edit&preload=Modèle:Documentation/Preload2}} créer]')
 
                table.insert(notice, ')</span>')
 
 
             end
 
             end
             table.insert(notice, ' et la page de ')
+
             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}}'), frame)
+
        if args[1] and p.ifexist(frame:preprocess('{{#rel2abs:' .. args[1] .. '/../Test}}'), frame)
            or p.ifexist(frame:preprocess('{{#rel2abs:' .. p.docname(frame) .. '/../Test}}'), frame) then
+
        or p.ifexist(frame:preprocess('{{#rel2abs:' .. p.docname(frame) .. '/../Test}}'), frame) 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(frame))
                end
+
            end
                table.insert(notice, '/../Test}}|test]]')
+
            table.insert(notice, '/../Test}}|test]]')
                table.insert(notice, '&nbsp;<span style="font-size:89%; font-style:normal;">(')
+
            table.insert(notice, '&nbsp;<span style="font-size:89%; font-style:normal;">(')
                table.insert(notice, '[{{fullurl:{{#rel2abs:')
+
            table.insert(notice, '[{{fullurl:{{#rel2abs:')
                if args[1] then
+
            if args[1] then
                    table.insert(notice, args[1])
+
                table.insert(notice, args[1])
                else
 
                    table.insert(notice, p.docname(frame))
 
                end
 
                table.insert(notice, '/../Test}}|action=edit}} modifier])</span>')
 
 
             else
 
             else
                 table.insert(notice, 'test&nbsp;<span style="font-size:89%; font-style:normal;">(')
+
                 table.insert(notice, p.docname(frame))
                table.insert(notice, '[{{fullurl:{{#rel2abs:')
 
                if args[1] then
 
                    table.insert(notice, args[1])
 
                else
 
                    table.insert(notice, p.docname(frame))
 
                end
 
                table.insert(notice, '/../Test}}|action=edit&preload=Modèle:Documentation/Preload3}} créer]')
 
                table.insert(notice, ')</span>')
 
 
             end
 
             end
             table.insert(notice, '.<br />Veuillez placer les catégories dans la sous-page ')
+
             table.insert(notice, '/../Test}}|action=edit}} modifier])</span>')
            table.insert(notice, '<span class="plainlinks">[')
+
        else
            table.insert(notice, '{{fullurl:')
+
            table.insert(notice, 'test&nbsp;<span style="font-size:89%; font-style:normal;">(')
            if args[1] and p.ifexist(args[1], frame) or p.ifexist(p.docname(frame), frame) then
+
            table.insert(notice, '[{{fullurl:{{#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(frame))
                end
+
            end
                table.insert(notice, '|action=edit')
+
            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], frame) or p.ifexist(p.docname(frame), frame) then
 +
            if args[1] then
 +
                table.insert(notice, args[1])
 +
            else
 +
                table.insert(notice, p.docname(frame))
 +
            end
 +
            table.insert(notice, '|action=edit')
 
                  
 
                  
 +
        else
 +
            if args[1] then
 +
                table.insert(notice, args[1])
 
             else
 
             else
                 if args[1] then
+
                 table.insert(notice, p.docname(frame))
                    table.insert(notice, args[1])
 
                else
 
                    table.insert(notice, p.docname(frame))
 
                end
 
                table.insert(notice, '|action=edit&preload=Modèle:Documentation/Preload')
 
 
             end
 
             end
             table.insert(notice, ' /Documentation}}].')
+
             table.insert(notice, '|action=edit&preload=Modèle:Documentation/Preload')
 
         end
 
         end
         table.insert(notice, '</p></div></div>')
+
         table.insert(notice, ' /Documentation}}].')
        return table.concat(notice)
 
 
     end
 
     end
 +
    table.insert(notice, '</p></div></div>')
 +
    return table.concat(notice)
 +
end
  
 
return p
 
return p

Version du 18 juillet 2013 à 12:46

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 corps = {}
        
    --Bandeau pour les sous-pages /Bac à sable
    if frame:preprocess('{{SUBPAGENAME}}') == '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)))
    table.insert(corps, p.contenu(frame, args))
    table.insert(corps, frame:preprocess(p.notice(frame, args)))

    --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, frame)
    if not page then return false end
    if frame:preprocess('{{#ifexist:' .. page .. '|1}}') == '1' then return true end
    return false
end
    
function p.docname(frame)
    --On n'est pas dans une sous-page
    if frame:preprocess('{{BASEPAGENAME}}') == frame:preprocess('{{PAGENAME}}') then
        return frame:preprocess('{{SUBJECTPAGENAME}}/Documentation')
    else
        --On est dans une sous-page
        nom = frame:preprocess('{{SUBPAGENAME}}')
        if nom == 'Documentation' or nom == 'Bac à sable' or nom == 'Test' then
            return frame:preprocess('{{#rel2abs:../Documentation}}')
        else
            return frame:preprocess('{{SUBJECTPAGENAME}}/Documentation')
        end
    end
end

function p.entete(frame, args)
    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], frame) 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(frame), frame) then
                table.insert(entete, p.docname(frame))
                table.insert(entete, '|action=edit modifier}}]&#93;&#32;&#91;{{Purger le cache|purger}}')
            else
                table.insert(entete, p.docname(frame))
                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)
    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], frame) then
            table.insert(contenu, frame:preprocess('{{' .. args[1] .. '}}'))
        elseif frame:preprocess('{{FULLPAGENAMEE}}') ~= frame:preprocess('{{FULLPAGENAMEE:' .. p.docname(frame) .. '}}')
        and p.ifexist(p.docname(frame), frame) then
            table.insert(contenu, frame:preprocess('{{' .. p.docname(frame) .. '}}'))
        end
    end

    table.insert(contenu, frame:preprocess('\n<nowiki /><div style="clear:both" />\n'))
    
    return table.concat(contenu)
end
    
function p.notice(frame, args)
    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(frame))
            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], frame) or p.ifexist(p.docname(frame), frame) 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(frame) .. '|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(frame) .. '|action=edit}} modifier]')
                table.insert(notice, '&nbsp;|&nbsp;[{{fullurl:')
                table.insert(notice, p.docname(frame) .. '|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}}'), frame)
        or p.ifexist(frame:preprocess('{{#rel2abs:' .. p.docname(frame) .. '/../Bac à sable}}'), frame) then
            table.insert(notice, '[[{{#rel2abs:')
            if args[1] then
                table.insert(notice, args[1])
            else
                table.insert(notice, p.docname(frame))
            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(frame))
            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(frame))
            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}}'), frame)
        or p.ifexist(frame:preprocess('{{#rel2abs:' .. p.docname(frame) .. '/../Test}}'), frame) then
            table.insert(notice, '[[{{#rel2abs:')
            if args[1] then
                table.insert(notice, args[1])
            else
                table.insert(notice, p.docname(frame))
            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(frame))
            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(frame))
            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], frame) or p.ifexist(p.docname(frame), frame) then
            if args[1] then
                table.insert(notice, args[1])
            else
                table.insert(notice, p.docname(frame))
            end
            table.insert(notice, '|action=edit')
                
        else
            if args[1] then
                table.insert(notice, args[1])
            else
                table.insert(notice, p.docname(frame))
            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