Module:Documentation: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
(simplify the content function) |
(finish moving end box code into sub-functions) |
||
Line 528: | Line 528: | ||
function p._endBox(args, env) |
function p._endBox(args, env) |
||
-- This function generates the end box (also known as the link box). |
|||
local title = env.title |
|||
-- Get environment data. |
|||
local subjectSpace = env.subjectSpace |
local subjectSpace = env.subjectSpace |
||
local success, docTitle = env:grab('docTitle') |
|||
if not success then |
|||
-- Argument processing in {{documentation}}. |
|||
return docTitle -- Error message |
|||
local content = args.content |
|||
local linkBox = args['link box'] -- So "link box=off" works. |
|||
local docspace = env.docspace |
|||
local docname = args[1] -- Other docname, if fed. |
|||
local templatePage = env.templatePage |
|||
-- Argument processing in {{documentation/end box2}}. |
|||
local docpageRoot = (docspace or title.nsText) .. ':' .. (templatePage or title.text) |
|||
local docpage |
|||
if docname then |
|||
docpage = docname |
|||
else |
|||
docpage = docpageRoot .. '/' .. message('docSubpage', 'string') |
|||
end |
end |
||
local docTitle = mw.title.new(docpage) |
|||
-- Check whether we should output the end box at all. Add the end |
|||
local docExist = docTitle.exists |
|||
-- box by default if the documentation exists or if we are in the |
|||
local docnameFed = args[1] and true |
|||
-- user, module or template namespaces. |
|||
local sandbox = docpageRoot .. '/' .. message('sandboxSubpage', 'string') |
|||
if linkBox == 'off' |
|||
local testcases = docpageRoot .. '/' .. message('testcasesSubpage', 'string') |
|||
or not ( |
|||
templatePage = title.nsText .. ':' .. templatePage |
|||
docTitle.exists |
|||
or subjectSpace == 2 |
|||
-- Output from {{documentation/end box}} |
|||
or subjectSpace == 828 |
|||
or subjectSpace == 10 |
|||
-- First, check whether we should output the end box at all. Add the end box by default if the documentation |
|||
) |
|||
-- exists or if we are in the user, module or template namespaces. |
|||
then |
|||
if linkBox == 'off' or not (docExist or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10) then |
|||
return nil |
return nil |
||
end |
end |
||
Line 580: | Line 570: | ||
text = text .. p.makeEndBoxExperimentBlurb(args, env) |
text = text .. p.makeEndBoxExperimentBlurb(args, env) |
||
text = text .. '<br />' |
text = text .. '<br />' |
||
-- Show the categories text, but not if "content" fed or "docname fed" |
-- Show the categories text, but not if "content" fed or "docname fed" |
||
-- since then it is unclear where to add the categories. |
|||
if not content and not docnameFed then |
if not content and not docnameFed then |
||
text = text .. (p.makeCategoriesBlurb(args, env) or '') |
|||
local docPathLink = makeWikilink(docpage, message('docLinkDisplay', 'string')) |
|||
text = text .. message('addCategoriesBlurb', 'string', {docPathLink}) |
|||
end |
end |
||
-- Show the "subpages" link. |
-- Show the "subpages" link. |
||
if subjectSpace ~= 6 then -- Don't show the link in file space. |
if subjectSpace ~= 6 then -- Don't show the link in file space. |
||
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') |
|||
local pagetype |
|||
if subjectSpace == 10 then |
|||
pagetype = message('templatePagetype', 'string') |
|||
elseif subjectSpace == 828 then |
|||
pagetype = message('modulePagetype', 'string') |
|||
else |
|||
pagetype = message('defaultPagetype', 'string') |
|||
end |
|||
text = text .. ' ' .. makeWikilink('Special:PrefixIndex/' .. templatePage .. '/', message('subpagesLinkDisplay', 'string', {pagetype})) |
|||
end |
end |
||
-- Show the "print" link if it exists. |
-- Show the "print" link if it exists. |
||
local |
local printBlurb = p.makePrintBlurb(args, env) |
||
if printBlurb then |
|||
local printTitle = mw.title.new(printPage) |
|||
text = text .. '<br />' .. printBlurb |
|||
if printTitle.exists then |
|||
local printLink = makeWikilink(printPage, message('printLinkDisplay', 'string')) |
|||
text = text .. '<br />' .. message('printBlurb', 'string', {printLink}) |
|||
.. (message('displayPrintCategory', 'boolean') and makeCategoryLink(message('printCategory', 'string')) or '') |
|||
end |
end |
||
end |
end |
||
Line 611: | Line 590: | ||
-- Return the fmbox output. |
-- Return the fmbox output. |
||
return messageBox.main('fmbox', fmargs) |
return messageBox.main('fmbox', fmargs) |
||
end |
|||
function p.makePrintBlurb(args, env) |
|||
-- Get the /Print title object |
|||
local success, printTitle = env:grab('printTitle') |
|||
if not success then |
|||
return printTitle -- Error message |
|||
end |
|||
-- Make the print blurb. |
|||
local ret |
|||
if printTitle.exists then |
|||
local printLink = makeWikilink(printTitle.prefixedText, message('printLinkDisplay', 'string')) |
|||
ret = message('printBlurb', 'string', {printLink}) |
|||
local displayPrintCategory = message('displayPrintCategory', 'boolean') |
|||
if displayPrintCategory then |
|||
ret = ret .. makeCategoryLink(message('printCategory', 'string')) |
|||
end |
|||
end |
|||
return ret |
|||
end |
|||
function p.makeSubpagesBlurb(args, env) |
|||
-- Get the template title object |
|||
local success, templateTitle = env:grab('templateTitle') |
|||
if not success then |
|||
return templateTitle -- Error message. |
|||
end |
|||
-- Make the subpages blurb. |
|||
local pagetype |
|||
if subjectSpace == 10 then |
|||
pagetype = message('templatePagetype', 'string') |
|||
elseif subjectSpace == 828 then |
|||
pagetype = message('modulePagetype', 'string') |
|||
else |
|||
pagetype = message('defaultPagetype', 'string') |
|||
end |
|||
return makeWikilink( |
|||
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', |
|||
message('subpagesLinkDisplay', 'string', {pagetype}) |
|||
) |
|||
end |
end |
||