« Module:Documentation » : différence entre les versions
m A modifié le niveau de protection de « Module:Documentation » ([Modifier=Autoriser uniquement les utilisateurs auto-confirmés] (infini) [Renommer=Autoriser uniquement les administrateurs] (infini)) |
importation du bac à sable ; uti |
||
| Ligne 3 : | Ligne 3 : | ||
local p = {} | local p = {} | ||
function p.documentation(frame) | |||
local args = frame:getParent().args | |||
function p. | local page = mw.title.getCurrentTitle() | ||
local titreDoc = nomDocumentation(page) | |||
local doc = mw.title.new(args[1] or titreDoc) | |||
local existeDoc = existePage(doc) | |||
local res = mw.html.create('') | |||
--Bandeau pour les sous-pages /Bac à sable | |||
if page.subpageText == 'Bac à sable' then | |||
res | |||
:tag('div', {selfClosing = true}) | |||
:done() | |||
:wikitext(frame:preprocess('{{Sous-page de bac à sable}}')) | |||
end | |||
--Génération de la documentation | |||
res | |||
:tag('div') | |||
:css('clear', 'both') | |||
:css('margin', '1em 0 0 0') | |||
:css('border', '1px solid #aaa') | |||
:css('background', args.couleur or '#ecfcf4') | |||
:css('padding', '1em 1em 0.8em') | |||
:node(entete(args, page, doc, existeDoc)) | |||
:node(contenu(args, titreDoc, existeDoc)) | |||
:node(notice(args, page, doc, existeDoc)) | |||
return tostring(res) | |||
end | end | ||
function | function nomDocumentation(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 | |||
local sousPage = page.subpageText | |||
if sousPage == 'Documentation' | |||
or sousPage == 'Bac à sable' | |||
or sousPage == 'Test' then | |||
return page.subjectNsText .. ':' .. page.baseText .. '/Documentation' | |||
else | |||
return page.subjectNsText .. ':' .. page.text .. '/Documentation' | |||
end | |||
end | end | ||
function | function existePage(page) | ||
return page and page.exists | |||
end | end | ||
function lienUrl(nomPage, titrePage, action, pagePreload) | |||
local argument = {} | |||
if pagePreload then | |||
argument = { | |||
['action'] = action or 'edit', | |||
['preload'] = 'Modèle:Documentation/Preload' .. pagePreload} | |||
else | |||
argument = {['action'] = action or 'edit'} | |||
end | |||
return mw.ustring.format('[%s %s]', nomPage:fullUrl(argument), titrePage) | |||
end | |||
function entete(args, page, doc, existeDoc) | |||
local res = mw.html.create('div') | |||
res | |||
:css('margin-bottom', '1ex') | |||
:css('border-bottom', '1px solid #aaa') | |||
:css('padding-bottom', '3px') | |||
:wikitext('[[Fichier:Template-info.png|50px|alt=Documentation|link=]]') | |||
:tag('span') | |||
:css('font-weight', 'bold') | |||
:css('font-size', '125%') | |||
:wikitext(' ') | |||
:wikitext(args.titre or 'Documentation') | |||
:done() | |||
if not args.contenu then | if not args.contenu then | ||
local editionLien = res:tag('span') | |||
:addClass('mw-editsection plainlinks') | |||
:wikitext('[') | |||
if existeDoc then | |||
editionLien | |||
:wikitext(lienUrl(doc, 'modifier')) | |||
else | |||
editionLien | |||
:wikitext(lienUrl(doc, 'créer', 'edit', '')) | |||
end | |||
editionLien | |||
:wikitext('] [') | |||
:wikitext(lienUrl(page, 'purger', 'purge')) | |||
:wikitext(']') | |||
end | |||
return tostring(res) | |||
end | end | ||
function contenu(args, titreDoc, existeDoc) | |||
local res = mw.html.create(''):newline() | |||
if args.contenu then | |||
res:wikitext(args.contenu) | |||
elseif existeDoc then | |||
local frame = mw.getCurrentFrame() | |||
local contenuDoc = args[1] or titreDoc or '' | |||
res:wikitext(frame:expandTemplate{title = contenuDoc}) | |||
end | |||
res | |||
:newline() | |||
:tag('div', {selfClosing = true}) | |||
:css('clear', 'both') | |||
return tostring(res) | |||
end | end | ||
function notice(args, page, doc, existeDoc) | |||
local res = mw.html.create('div') | |||
if args.contenu or existeDoc then | |||
res | |||
:css('border-top', '1px solid #aaa') | |||
:css('margin', '1em 0 0') | |||
end | |||
local contenuParagraphe = res | |||
:tag('p') | |||
:addClass('plainlinks') | |||
:css('margin-bottom', '0') | |||
:css('padding-left', '1em') | |||
:css('font-style', 'italic') | |||
if args.contenu then | |||
if args.notice then | |||
contenuParagraphe:wikitext(args.notice) | |||
else | |||
contenuParagraphe | |||
:wikitext('La [[Aide:Documentation de modèle|documentation]] ') | |||
:wikitext('de ce [[Aide:Modèle|modèle]] est directement ') | |||
:wikitext('[[Aide:Inclusion|incluse]] dans le corps de ce dernier. ') | |||
:wikitext(lienUrl(page, 'Cliquez ici pour purger le cache', 'purge')) | |||
:wikitext('.<br />Si cette page est protégée, veuillez ') | |||
:wikitext('transférer le contenu de la documentation vers sa ') | |||
:wikitext(lienUrl(doc, 'sous-page dédiée', 'edit', '')) | |||
:wikitext('.') | |||
end | |||
else | |||
if existeDoc then | |||
contenuParagraphe | |||
:wikitext('La [[Aide:Documentation de modèle|documentation]] ') | |||
:wikitext('de ce [[Aide:Modèle|modèle]] est ') | |||
:wikitext('[[Aide:Inclusion|incluse]] depuis sa [[') | |||
:wikitext(tostring(doc)) | |||
:wikitext('|sous-page de documentation]] ') | |||
:tag('span') | |||
:css('font-size', '89%') | |||
:css('font-style', 'normal') | |||
:wikitext('(') | |||
:wikitext(lienUrl(doc, 'modifier')) | |||
:wikitext(' | ') | |||
:wikitext(lienUrl(doc, 'historique', 'history')) | |||
:wikitext(').<br />') | |||
:done() | |||
end | |||
contenuParagraphe:wikitext('Les éditeurs peuvent travailler dans le ') | |||
local titrePageBacasable = doc.subjectNsText .. ':' .. doc.baseText .. '/Bac à sable' | |||
local pageBacasable = mw.title.new(titrePageBacasable) | |||
if existePage(pageBacasable) then | |||
contenuParagraphe | |||
:wikitext('[[' .. titrePageBacasable .. '|bac à sable]] ') | |||
:tag('span') | |||
:css('font-size', '89%') | |||
:css('font-style', 'normal') | |||
:wikitext('(') | |||
:wikitext(lienUrl(pageBacasable, 'modifier')) | |||
:wikitext(')') | |||
else | |||
contenuParagraphe | |||
:wikitext('bac à sable ') | |||
:tag('span') | |||
:css('font-size', '89%') | |||
:css('font-style', 'normal') | |||
:wikitext('(') | |||
:wikitext(lienUrl(pageBacasable, 'créer', 'edit', '2')) | |||
:wikitext(')') | |||
end | |||
contenuParagraphe:wikitext(' et la page de ') | |||
local titrePageTest = doc.subjectNsText .. ':' .. doc.baseText .. '/Test' | |||
local pageTest = mw.title.new(titrePageTest) | |||
if existePage(pageTest) then | |||
contenuParagraphe | |||
:wikitext('[[' .. titrePageTest .. '|test]] ') | |||
:tag('span') | |||
:css('font-size', '89%') | |||
:css('font-style', 'normal') | |||
:wikitext('(') | |||
:wikitext(lienUrl(pageTest, 'modifier')) | |||
:wikitext(')') | |||
else | |||
contenuParagraphe | |||
:wikitext('test ') | |||
:tag('span') | |||
:css('font-size', '89%') | |||
:css('font-style', 'normal') | |||
:wikitext('(') | |||
:wikitext(lienUrl(pageTest, 'créer', 'edit', '3')) | |||
:wikitext(')') | |||
end | |||
contenuParagraphe | |||
:wikitext('.<br />Veuillez placer les catégories dans la sous-page ') | |||
if existeDoc then | |||
contenuParagraphe:wikitext(lienUrl(doc, '/Documentation')) | |||
else | |||
contenuParagraphe:wikitext(lienUrl(doc, '/Documentation', 'edit', '')) | |||
end | |||
contenuParagraphe:wikitext('.') | |||
end | |||
return tostring(res) | |||
end | end | ||
return p | return p | ||
Version du 7 mars 2014 à 18:05
--Ce module implémente le modèle Modèle:Méta documentation de modèle.
local p = {}
function p.documentation(frame) local args = frame:getParent().args local page = mw.title.getCurrentTitle() local titreDoc = nomDocumentation(page) local doc = mw.title.new(args[1] or titreDoc) local existeDoc = existePage(doc) local res = mw.html.create()
--Bandeau pour les sous-pages /Bac à sable if page.subpageText == 'Bac à sable' then res :tag('div', {selfClosing = true}) :done() :wikitext(frame:preprocess('Modèle:Sous-page de bac à sable')) end
--Génération de la documentation res :tag('div') :css('clear', 'both') :css('margin', '1em 0 0 0') :css('border', '1px solid #aaa') :css('background', args.couleur or '#ecfcf4') :css('padding', '1em 1em 0.8em') :node(entete(args, page, doc, existeDoc)) :node(contenu(args, titreDoc, existeDoc)) :node(notice(args, page, doc, existeDoc))
return tostring(res) end
function nomDocumentation(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 local sousPage = page.subpageText if sousPage == 'Documentation' or sousPage == 'Bac à sable' or sousPage == 'Test' then return page.subjectNsText .. ':' .. page.baseText .. '/Documentation' else return page.subjectNsText .. ':' .. page.text .. '/Documentation' end end
function existePage(page) return page and page.exists end
function lienUrl(nomPage, titrePage, action, pagePreload) local argument = {}
if pagePreload then argument = { ['action'] = action or 'edit', ['preload'] = 'Modèle:Documentation/Preload' .. pagePreload} else argument = {['action'] = action or 'edit'} end
return mw.ustring.format('[%s %s]', nomPage:fullUrl(argument), titrePage) end
function entete(args, page, doc, existeDoc) local res = mw.html.create('div')
res :css('margin-bottom', '1ex') :css('border-bottom', '1px solid #aaa') :css('padding-bottom', '3px')
:wikitext('
')
:tag('span') :css('font-weight', 'bold') :css('font-size', '125%') :wikitext(' ') :wikitext(args.titre or 'Documentation') :done()
if not args.contenu then local editionLien = res:tag('span') :addClass('mw-editsection plainlinks') :wikitext('[')
if existeDoc then editionLien :wikitext(lienUrl(doc, 'modifier')) else editionLien :wikitext(lienUrl(doc, 'créer', 'edit', )) end
editionLien :wikitext('] [') :wikitext(lienUrl(page, 'purger', 'purge')) :wikitext(']') end
return tostring(res) end
function contenu(args, titreDoc, existeDoc) local res = mw.html.create():newline()
if args.contenu then res:wikitext(args.contenu) elseif existeDoc then local frame = mw.getCurrentFrame() local contenuDoc = args[1] or titreDoc or res:wikitext(frame:expandTemplate{title = contenuDoc}) end
res :newline() :tag('div', {selfClosing = true}) :css('clear', 'both')
return tostring(res) end
function notice(args, page, doc, existeDoc) local res = mw.html.create('div')
if args.contenu or existeDoc then res :css('border-top', '1px solid #aaa') :css('margin', '1em 0 0') end
local contenuParagraphe = res :tag('p') :addClass('plainlinks') :css('margin-bottom', '0') :css('padding-left', '1em') :css('font-style', 'italic')
if args.contenu then
if args.notice then
contenuParagraphe:wikitext(args.notice)
else
contenuParagraphe
:wikitext('La documentation ')
:wikitext('de ce modèle est directement ')
:wikitext('incluse dans le corps de ce dernier. ')
:wikitext(lienUrl(page, 'Cliquez ici pour purger le cache', 'purge'))
:wikitext('.
Si cette page est protégée, veuillez ')
:wikitext('transférer le contenu de la documentation vers sa ')
:wikitext(lienUrl(doc, 'sous-page dédiée', 'edit', ))
:wikitext('.')
end
else
if existeDoc then
contenuParagraphe
:wikitext('La documentation ')
:wikitext('de ce modèle est ')
:wikitext('incluse depuis sa [[')
:wikitext(tostring(doc))
:wikitext('|sous-page de documentation]] ')
:tag('span')
:css('font-size', '89%')
:css('font-style', 'normal')
:wikitext('(')
:wikitext(lienUrl(doc, 'modifier'))
:wikitext(' | ')
:wikitext(lienUrl(doc, 'historique', 'history'))
:wikitext(').
')
:done()
end
contenuParagraphe:wikitext('Les éditeurs peuvent travailler dans le ')
local titrePageBacasable = doc.subjectNsText .. ':' .. doc.baseText .. '/Bac à sable' local pageBacasable = mw.title.new(titrePageBacasable)
if existePage(pageBacasable) then contenuParagraphe :wikitext('bac à sable ') :tag('span') :css('font-size', '89%') :css('font-style', 'normal') :wikitext('(') :wikitext(lienUrl(pageBacasable, 'modifier')) :wikitext(')') else contenuParagraphe :wikitext('bac à sable ') :tag('span') :css('font-size', '89%') :css('font-style', 'normal') :wikitext('(') :wikitext(lienUrl(pageBacasable, 'créer', 'edit', '2')) :wikitext(')') end contenuParagraphe:wikitext(' et la page de ')
local titrePageTest = doc.subjectNsText .. ':' .. doc.baseText .. '/Test' local pageTest = mw.title.new(titrePageTest)
if existePage(pageTest) then contenuParagraphe :wikitext('test ') :tag('span') :css('font-size', '89%') :css('font-style', 'normal') :wikitext('(') :wikitext(lienUrl(pageTest, 'modifier')) :wikitext(')') else contenuParagraphe :wikitext('test ') :tag('span') :css('font-size', '89%') :css('font-style', 'normal') :wikitext('(') :wikitext(lienUrl(pageTest, 'créer', 'edit', '3')) :wikitext(')') end
contenuParagraphe
:wikitext('.
Veuillez placer les catégories dans la sous-page ')
if existeDoc then contenuParagraphe:wikitext(lienUrl(doc, '/Documentation')) else contenuParagraphe:wikitext(lienUrl(doc, '/Documentation', 'edit', )) end contenuParagraphe:wikitext('.') end
return tostring(res) end
return p