« Module:Version imprimable » : différence entre les versions

Contenu supprimé Contenu ajouté
MEP des traductions sur Commons
Add printable version header, footer and no evaluation param if overflow
 
Ligne 2 :
 
debug = false
OnlySubpagesinclude_book_subpages_only = true
do_not_evaluate_each_chapter = false
local p = {}
 
Error-- =Les templates sont bien cachés ici require('Module:TNT').format(' [[commons:Data:I18n/Module:Printable version', 'error_invalid_toc').tab]]
 
Beginning1 = require('Module:TNT').format('I18n/Module:Printable version', 'header_notice')
Beginning2ModuleTnt = require('Module:TNT')
Error = ModuleTnt.format('I18n/Module:Printable version', 'header_covererror_invalid_toc')
BreakBeginning1 = require('Module:TNT')ModuleTnt.format('I18n/Module:Printable version', 'page_breakheader_notice')
Ending1Beginning2 = require('Module:TNT')ModuleTnt.format('I18n/Module:Printable version', 'footer_licenseheader_cover')
Ending2Break = require('Module:TNT')ModuleTnt.format('I18n/Module:Printable version', 'footer2page_break')
templateLeft Ending1 = require('Module:TNT')ModuleTnt.format('I18n/Module:Printable version', 'template_leftfooter_license')
templateRightEnding2 = require('Module:TNT')ModuleTnt.format('I18n/Module:Printable version', 'template_rightfooter2')
TOCtemplateLeft = require('Module:TNT')ModuleTnt.format('I18n/Module:Printable version', 'TOCtemplate_left')
septemplateRight = require('Module:TNT')ModuleTnt.format('I18n/Module:Printable version', 'subpage_separatortemplate_right')
Beginning1TOC = require('Module:TNT')ModuleTnt.format('I18n/Module:Printable version', 'header_noticeTOC')
sep = ModuleTnt.format('I18n/Module:Printable version', 'subpage_separator')
page_before = ModuleTnt.format('I18n/Module:Printable version', 'page_before')
page_after = ModuleTnt.format('I18n/Module:Printable version', 'page_after')
 
 
Ligne 35 ⟶ 41 :
if mw.ustring.find(BookName, sep .. TOC, 1, true) ~= nil then BookName = mw.ustring.gsub(BookName, "^(.*)" .. sep .. TOC .. "$", "%1") end
end
if frame.args[3] ~= nil then OnlySubpagesinclude_book_subpages_only = false end
else
return Error
end
if frame.args[4] ~= nil and frame.args[4] ~= '' then do_not_evaluate_each_chapter = true end
 
if (title == nil or title == '') then return Error end
text = title.getContent(title)
Ligne 47 ⟶ 55 :
local fullPageName
local PrintVersion = {}
 
if (page_before ~= '') then
-- Add book header
fullPageName = BookName .. sep .. page_before
ChapterTitle = mw.title.new(fullPageName)
if (ChapterTitle ~= nil and ChapterTitle.exists) then
-- Title should be defined in the page itself
table.insert(PrintVersion, frame:expandTemplate{ title = ':' .. fullPageName } .. '\n\n')
end
end
 
-- Add book chapters
for i,v in ipairs(lines_) do
if mw.text.trim(v) ~= '' then
Ligne 52 ⟶ 72 :
if fullPageName ~= nil then
ChapterTitle = mw.title.new(fullPageName)
if (ChapterTitle ~= nil and (do_not_evaluate_each_chapter or ChapterTitle.exists)) then
PageName = p.getSubpageName(BookName, fullPageName)
if (PageName ~= nil and PageName ~= '') then
if Break ~= "" then table.insert(PrintVersion, frame:expandTemplate{title = Break}) end
table.insert(PrintVersion, '\n<div style="clear:both;page-break-before:always;"></div>\n=' .. PageName .. '=\n')
end
table.insert(PrintVersion, frame:expandTemplate{ title = ':' .. fullPageName } .. '\n\n')
else
if debug then table.insert(PrintVersion, '<fontspan colorclass=red"error">Missing subpage "' .. fullPageName .. '" on line "' .. v .. '" for the book:</fontspan> ' .. BookName .. '\n\n') end
end
end
Ligne 66 ⟶ 86 :
end
if (page_after ~= '') then
-- Add book footer
fullPageName = BookName .. sep .. page_after
ChapterTitle = mw.title.new(fullPageName)
if (ChapterTitle ~= nil and ChapterTitle.exists) then
-- Title should be defined in the page itself
table.insert(PrintVersion, frame:expandTemplate{ title = ':' .. fullPageName } .. '\n\n')
end
end
 
Templates1 = ""
if Beginning1 ~= "" then Templates1 = Templates1 .. frame:expandTemplate{title = Beginning1} .. '\n' end
Ligne 93 ⟶ 123 :
chapter = mw.ustring.gsub(chapter, "_", " ")
else
if debug then chapter = '<fontspan colorclass=red"error">Incorrect book or chapter name</fontspan>' else chapter = '' end
end
 
Ligne 123 ⟶ 153 :
 
if chapter == BookName or chapter == BookName .. sep or mw.ustring.find(chapter, "%#") ~= nil then
if debug then chapter = '<fontspan colorclass=red"error">Chapter = ' .. chapter .. ' => book name or another subpage name</fontspan> with Ending = ' .. Ending else chapter = '' end
else
if OnlySubpagesinclude_book_subpages_only then
-- Book subpages only (and ignoring the other links like "see also")
if mw.ustring.find(chapter, BookName .. sep, 1, true) == nil then
if debug then chapter = "<fontspan colorclass=red\"error\">No book subpage into the internal link:</fontspan> '" .. chapter .. "' doesn't include '" .. BookName .. sep .. "'" else chapter = '' end
end
end
end
else
if debug then chapter = "<fontspan colorclass=red\"error\">No internal link</fontspan> for: " .. chapter .. "\n" else chapter = '' end
end
return chapter
Ligne 140 ⟶ 170 :
 
function p.getSubpageName(bookName, fullPageName)
k, v = mw.ustring.gsub(fullPageName, '^' .. p._escapePattern(bookName) .. '/'sep), '')
return k
end
Ligne 189 ⟶ 219 :
if frame.args[3] == 'programming' then
if debug then table.insert(footer, " skin=programming\n\n") end
templateLeft = '{| style="width:100%; border:solid 1px #71c837; background:#c6e9af; color:#2d5016;" class="navlinks noprint"\n| style="text-align:left; width:33%; font-size:90%;" class="navprevious" |[[Image:Navigation_Left_Arrow.svg|18px|link=printf|alt=]] [[printf]]\n'
templateRight = '| style="text-align:center; width:34%;" class="navtitle" | [['..mw.title.getCurrentTitle().rootText..']]<br><b>'..mw.title.getCurrentTitle().subpageText..'</b>\n| style="text-align:right; width:33%; font-size:90%;" class="navnext" | [[printf]] [[Image:Navigation_Right_Arrow.svg|18px|link=printf|alt=]]\n|}'
end
end
Ligne 213 ⟶ 243 :
fullPageName = p.getFullPageName(BookName, rawFullPageName)
if debug then
if mw.ustring.find(fullPageName, "<fontspan colorclass=red\"error\">No internal link</fontspan>") ~= nil then
fullPageName = nil
else
Ligne 231 ⟶ 261 :
if (subpageName ~= nil and subpageName ~= "") then
if found == true or homepage == true then
if debug then table.insert(footer, "<fontspan colorclass=red\"error\">Previous & next chapter insertion</fontspan>\n") end
 
if homepage == false then
Ligne 246 ⟶ 276 :
break
elseif subpageName == currentPageName then
if debug then table.insert(footer, "<fontspan colorclass=red\"error\">Page</fontspan> '" .. currentPageName .. "' found\n\n") end
found = true
elseif fullPageName ~= "" then
Ligne 252 ⟶ 282 :
previousChapter = subpageName
else
if debug then table.insert(footer, "<fontspan colorclass=red\"error\">The current page</fontspan> '" .. subpageName .. "' is not '" .. currentPageName .. "'") end
end
end
else
if debug then table.insert(footer, "<fontspan colorclass=red\"error\">The page</fontspan> '" .. fullPageName .. "' doesn't exist, for '" .. currentPageName .. "'\n\n") end
end
end
Ligne 263 ⟶ 293 :
 
if found == true and table.getn(footer) == 0 then
if debug then table.insert(footer, "<fontspan colorclass=red\"error\">No next chapter</fontspan>\n") end
theTemplateLeft, nb = mw.ustring.gsub(templateLeft, "printf", BookName .. sep .. previousChapter .. "|" .. previousChapter)
table.insert(footer, theTemplateLeft)