Module:Documentation: Difference between revisions
split out experiment blurb code
m>Mr. Stradivarius (use docTitle.prefixedText instead of docpage) |
m>Mr. Stradivarius (split out experiment blurb code) |
||
Line 229: | Line 229: | ||
function envFuncs.docTitle() | function envFuncs.docTitle() | ||
local title = env.title | local title = env.title | ||
local docname = args[1] -- | local docname = args[1] -- User-specified doc page. | ||
local docpage | local docpage | ||
if docname then | if docname then | ||
docpage = docname | docpage = docname | ||
else | else | ||
docpage = env.docpageRoot .. '/' .. message('docSubpage', 'string') | |||
docpage = | |||
end | end | ||
return mw.title.new(docpage) | return mw.title.new(docpage) | ||
end | end | ||
function envFuncs.docpageRoot() | |||
local title = env.title | |||
return (env.docspace or title.nsText) .. ':' .. (env.templatePage or title.text) | |||
end | |||
function envFuncs.sandboxTitle() | |||
local titleArg = env.docpageRoot .. '/' .. message('sandboxSubpage', 'string') | |||
local title = mw.title.new(titleArg) | |||
if not title then | |||
error(message('titleArgError', 'string', {titleArg})) | |||
end | |||
return title | |||
end | |||
function envFuncs.testcasesTitle() | |||
local titleArg = env.docpageRoot .. '/' .. message('testcasesSubpage', 'string') | |||
local title = mw.title.new(titleArg) | |||
if not title then | |||
error(message('titleArgError', 'string', {titleArg})) | |||
end | |||
return title | |||
end | |||
function env:grab(key) | function env:grab(key) | ||
local success, val = pcall(function() return self[key] end) | local success, val = pcall(function() return self[key] end) | ||
Line 363: | Line 382: | ||
local title = data.title | local title = data.title | ||
if docTitle.exists then | if docTitle.exists then | ||
local viewLink = makeWikilink( | local viewLink = makeWikilink(docpage, data.viewLinkDisplay) | ||
local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) | local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) | ||
local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) | local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) | ||
Line 536: | Line 555: | ||
if subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 then | if subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 then | ||
-- We are in the user, module or template namespaces. | -- We are in the user, module or template namespaces. | ||
text = text .. p.makeEndBoxExperimentBlurb(args, env) | |||
text = text .. '<br />' | |||
text = text | |||
-- 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 | ||
Line 593: | Line 588: | ||
-- Return the fmbox output. | -- Return the fmbox output. | ||
return messageBox.main('fmbox', fmargs) | return messageBox.main('fmbox', fmargs) | ||
end | |||
function p.makeEndBoxExperimentBlurb(args, env) | |||
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." | |||
local subjectSpace = env.subjectSpace | |||
local templatePage = env.templatePage | |||
-- Get title objects. | |||
local sandboxSuccess, sandboxTitle = env:grab('sandboxTitle') | |||
if not sandboxSuccess then | |||
return err(sandboxTitle) | |||
end | |||
local testcasesSuccess, testcasesTitle = env:grab('testcasesTitle') | |||
if not testcasesSuccess then | |||
return err(testcasesTitle) | |||
end | |||
-- Make links. | |||
local sandboxLinks, testcasesLinks | |||
if sandboxTitle.exists then | |||
local sandboxLink = makeWikilink(sandboxTitle.prefixedText, message('sandboxLinkDisplay', 'string')) | |||
local sandboxEditLink = makeUrlLink(sandboxTitle:fullUrl{action = 'edit'}, message('sandboxEditLinkDisplay', 'string')) | |||
local compareLink = makeUrlLink(mw.title.new('Special:ComparePages'):fullUrl{page1 = templatePage, page2 = sandbox}, message('compareLinkDisplay', 'string')) | |||
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) | |||
else | |||
local sandboxPreload = subjectSpace == 828 and message('moduleSandboxPreload', 'string') or message('templateSandboxPreload', 'string') | |||
local sandboxCreateLink = makeUrlLink(sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}, message('sandboxCreateLinkDisplay', 'string')) | |||
local mirrorSummary = message('mirrorEditSummary', 'string', {makeWikilink(templatePage)}) | |||
local mirrorLink = makeUrlLink(sandboxTitle:fullUrl{action = 'edit', preload = templatePage, summary = mirrorSummary}, message('mirrorLinkDisplay', 'string')) | |||
sandboxLinks = message('sandboxLinkDisplay', 'string') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) | |||
end | |||
if testcasesTitle.exists then | |||
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, message('testcasesLinkDisplay', 'string')) | |||
local testcasesEditLink = makeUrlLink(testcasesTitle:fullUrl{action = 'edit'}, message('testcasesEditLinkDisplay', 'string')) | |||
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) | |||
else | |||
local testcasesPreload = subjectSpace == 828 and message('moduleTestcasesPreload', 'string') or message('templateTestcasesPreload', 'string') | |||
local testcasesCreateLink = makeUrlLink(testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload}, message('testcasesCreateLinkDisplay', 'string')) | |||
testcasesLinks = message('testcasesLinkDisplay', 'string') .. ' ' .. makeToolbar(testcasesCreateLink) | |||
end | |||
return message(subjectSpace == 828 and 'experimentBlurbModule' or 'experimentBlurbTemplate', 'string', {sandboxLinks, testcasesLinks}) | |||
end | end | ||