« Module:Documentation » : différence entre les versions

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
utilisation de mw.title pour docname()
0x010D (discussion | contributions)
Aucun résumé des modifications
Ligne 6 : Ligne 6 :
     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 mw.title.getCurrentTitle().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 24 : Ligne 24 :


     return table.concat(corps)
     return table.concat(corps)
       
 
end
end


Ligne 95 : Ligne 95 :
         table.insert(entete, '&#93;</span>')
         table.insert(entete, '&#93;</span>')
     end
     end
       
 
     table.insert(entete, '</div>')
     table.insert(entete, '</div>')
     return table.concat(entete)
     return table.concat(entete)
Ligne 119 : Ligne 119 :


     table.insert(contenu, frame:preprocess('\n<nowiki /><div style="clear:both" />\n'))
     table.insert(contenu, frame:preprocess('\n<nowiki /><div style="clear:both" />\n'))
   
 
     return table.concat(contenu)
     return table.concat(contenu)
end
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, '<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;">\n')
           
 
         if args.notice then
         if args.notice then
             table.insert(notice, args.notice)
             table.insert(notice, args.notice)
Ligne 145 : Ligne 145 :
             table.insert(notice, 'La [[Aide:Comment documenter un modèle ?|documentation]] de ce ')
             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 ')
             table.insert(notice, '[[Aide:Modèle|modèle]] est [[Aide:Inclusion|incluse]] depuis sa ')
               
 
             if args[1] then
             if args[1] then
                 table.insert(notice, '[[' .. args[1] .. '|sous-page de documentation]]')
                 table.insert(notice, '[[' .. args[1] .. '|sous-page de documentation]]')
Ligne 151 : Ligne 151 :
                 table.insert(notice, '[[' .. p.docname(frame) .. '|sous-page de documentation]]')
                 table.insert(notice, '[[' .. p.docname(frame) .. '|sous-page de documentation]]')
             end
             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:')
Ligne 170 : Ligne 170 :
         end
         end
         table.insert(notice, 'Les éditeurs peuvent travailler dans le ')
         table.insert(notice, 'Les éditeurs peuvent travailler dans le ')
           
 
         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(frame) .. '/../Bac à sable}}')) then
Ligne 200 : Ligne 200 :
         end
         end
         table.insert(notice, ' et la page de ')
         table.insert(notice, ' et la page de ')
           
 
         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(frame) .. '/../Test}}')) then
Ligne 239 : Ligne 239 :
             end
             end
             table.insert(notice, '|action=edit')
             table.insert(notice, '|action=edit')
               
 
         else
         else
             if args[1] then
             if args[1] then

Version du 22 juillet 2013 à 17:37

--Ce module implemente le modèle Modèle:Méta documentation de modèle.

local p = {}

function p.corps(frame)

   local args = frame:getParent().args
   local corps = {}
   --Bandeau pour les sous-pages /Bac à sable
   if mw.title.getCurrentTitle().subpageText == 'Bac à sable' then

table.insert(corps, '

')
       table.insert(corps, frame:preprocess('Modèle: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('' .. table.concat(corps) .. '')
   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(frame)

   local page = mw.title.getCurrentTitle()
   if not page.isSubpage then
       --On n'est pas dans une sous-page
       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

function p.entete(frame, args)

local entete = {'
') table.insert(entete, '
')
   table.insert(entete, 'Documentation du modèle')
   table.insert(entete, ' ')
   if args.titre then
       table.insert(entete, args.titre)
   else
       table.insert(entete, 'Documentation')
   end
   table.insert(entete, '')
   if not args.contenu then
       table.insert(entete, '[[')
       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}}]] [Modèle:Purger le cache')
           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)) then
               table.insert(entete, p.docname(frame))
               table.insert(entete, '|action=edit modifier}}]] [Modèle:Purger le cache')
           else
               table.insert(entete, p.docname(frame))
               table.insert(entete, '|action=edit&preload=Modèle:Documentation/Preload créer}}]')
           end
       end
       table.insert(entete, ']')
   end
table.insert(entete, '
')
   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('\n'))
       --Évite toute récursion
       if args[1]
       and frame:preprocess('Module:Documentation') ~= frame:preprocess()
       and p.ifexist(args[1]) then
           table.insert(contenu, frame:preprocess('{{' .. args[1] .. '}}'))
       elseif frame:preprocess('Module:Documentation') ~= frame:preprocess('%27_.._p.docname(frame)_.._%27')
       and p.ifexist(p.docname(frame)) then
           table.insert(contenu, frame:preprocess('Modèle:' .. p.docname(frame) .. ''))
       end
   end
table.insert(contenu, frame:preprocess('\n
\n'))
   return table.concat(contenu)

end

function p.notice(frame, args)

   local notice = {}
   if args.contenu then
table.insert(notice, '