Module:Documentation: Difference between revisions

Jump to navigation Jump to search
m>Mr. Stradivarius
simplify the content function
m>Mr. Stradivarius
finish moving end box code into sub-functions
Line 528: Line 528:


function p._endBox(args, env)
function p._endBox(args, env)
local title = env.title
-- This function generates the end box (also known as the link box).
-- Get environment data.
local subjectSpace = env.subjectSpace
local subjectSpace = env.subjectSpace
 
local success, docTitle = env:grab('docTitle')
-- Argument processing in {{documentation}}.
if not success then
local content = args.content
return docTitle -- Error message
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)
local docExist = docTitle.exists
-- Check whether we should output the end box at all. Add the end
local docnameFed = args[1] and true
-- box by default if the documentation exists or if we are in the
local sandbox = docpageRoot .. '/' .. message('sandboxSubpage', 'string')
-- user, module or template namespaces.
local testcases = docpageRoot .. '/' .. message('testcasesSubpage', 'string')
if linkBox == 'off'
templatePage = title.nsText .. ':' .. templatePage
or not (
 
docTitle.exists
-- Output from {{documentation/end box}}
or subjectSpace == 2
or subjectSpace == 828
-- First, check whether we should output the end box at all. Add the end box by default if the documentation
or subjectSpace == 10
-- exists or if we are in the user, module or template namespaces.
)
if linkBox == 'off' or not (docExist or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10) then
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" since then it is unclear where to add the categories.
-- 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
local docPathLink = makeWikilink(docpage, message('docLinkDisplay', 'string'))
text = text .. (p.makeCategoriesBlurb(args, env) or '')
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.
local pagetype
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '')
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 printPage = templatePage .. '/' .. message('printSubpage', 'string')
local printBlurb = p.makePrintBlurb(args, env)
local printTitle = mw.title.new(printPage)
if printBlurb then
if printTitle.exists then
text = text .. '<br />' .. printBlurb
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