« Module:Documentation » : différence entre les versions
Aller à la navigation
Aller à la recherche
Modèle>Hlm Z. Aucun résumé des modifications |
Modèle>Hlm Z. (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 | 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( | 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" | return page.subjectNsText .. ":" .. page.text .. "/Documentation" | ||
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( | if p.ifexist(p.docname(page)) then | ||
table.insert(entete, p.docname( | table.insert(entete, p.docname(page)) | ||
table.insert(entete, '|action=edit modifier}}]] [{{Purger le cache|purger}}') | table.insert(entete, '|action=edit modifier}}]] [{{Purger le cache|purger}}') | ||
else | else | ||
table.insert(entete, p.docname( | 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( | elseif frame:preprocess('{{FULLPAGENAMEE}}') ~= frame:preprocess('{{FULLPAGENAMEE:' .. p.docname(page) .. '}}') | ||
and p.ifexist(p.docname( | and p.ifexist(p.docname(page)) then | ||
table.insert(contenu, frame:preprocess('{{' .. p.docname( | 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( | 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( | 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( | 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( | table.insert(notice, p.docname(page) .. '|action=edit}} modifier]') | ||
table.insert(notice, ' | [{{fullurl:') | table.insert(notice, ' | [{{fullurl:') | ||
table.insert(notice, p.docname( | 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( | 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( | 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( | 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( | 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( | 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( | 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( | 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( | 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( | 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( | 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( | 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%"> ')
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">[[')
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}}]] [{{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}}]] [{{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, ']</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, ' <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, ' | [{{fullurl:')
table.insert(notice, args[1] .. '|action=history}} historique]')
else
table.insert(notice, p.docname(page) .. '|action=edit}} modifier]')
table.insert(notice, ' | [{{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, ' <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 <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, ' <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 <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