Module:Documentation: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
(remove the err function, as it's not being used any more) |
(make 'string' the default message type in the message function to avoid having 'string' all over the place) |
||
Line 21: | Line 21: | ||
---------------------------------------------------------------------------- |
---------------------------------------------------------------------------- |
||
local function message(cfgKey, |
local function message(cfgKey, valArray, expectType) |
||
--[[ |
--[[ |
||
-- Gets a message from the cfg table and formats it if appropriate. |
-- Gets a message from the cfg table and formats it if appropriate. |
||
-- The function raises an error if the value from the cfg table is not |
-- The function raises an error if the value from the cfg table is not |
||
-- of the type expectType. |
-- of the type expectType. The default type for expectType is 'string'. |
||
-- If the table valArray is present, strings such as $1, $2 etc. in the |
-- If the table valArray is present, strings such as $1, $2 etc. in the |
||
-- message are substituted with values from the table keys [1], [2] etc. |
-- message are substituted with values from the table keys [1], [2] etc. |
||
-- For example, if the message cfg.fooMessage had the value 'Foo $2 bar $1.', |
-- For example, if the message cfg.fooMessage had the value 'Foo $2 bar $1.', |
||
-- message('fooMessage |
-- message('fooMessage', {'baz', 'qux'}) would return "Foo qux bar baz." |
||
--]] |
--]] |
||
local msg = cfg[cfgKey] |
local msg = cfg[cfgKey] |
||
expectType = expectType or 'string' |
|||
if type(msg) ~= expectType then |
|||
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) |
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) |
||
end |
end |
||
Line 126: | Line 127: | ||
-- so that we don't have to worry about unclosed tags. |
-- so that we don't have to worry about unclosed tags. |
||
.tag('div') |
.tag('div') |
||
.attr('id', message('mainDivId |
.attr('id', message('mainDivId')) |
||
.addClass(message('mainDivClasses |
.addClass(message('mainDivClasses')) |
||
.newline() |
.newline() |
||
.wikitext(p._startBox(args, env)) |
.wikitext(p._startBox(args, env)) |
||
Line 195: | Line 196: | ||
title = mw.title.new(titleArg) |
title = mw.title.new(titleArg) |
||
if not title then |
if not title then |
||
error(message('titleArgError |
error(message('titleArgError', {titleArg})) |
||
end |
end |
||
else |
else |
||
Line 207: | Line 208: | ||
local title = env.title |
local title = env.title |
||
local subpage = title.subpageText |
local subpage = title.subpageText |
||
if subpage == message('sandboxSubpage |
if subpage == message('sandboxSubpage') or subpage == message('testcasesSubpage') then |
||
return title.basePageTitle |
return title.basePageTitle |
||
else |
else |
||
Line 222: | Line 223: | ||
docpage = docname |
docpage = docname |
||
else |
else |
||
docpage = env.docpageRoot .. '/' .. message('docSubpage |
docpage = env.docpageRoot .. '/' .. message('docSubpage') |
||
end |
end |
||
return mw.title.new(docpage) |
return mw.title.new(docpage) |
||
Line 229: | Line 230: | ||
function envFuncs.sandboxTitle() |
function envFuncs.sandboxTitle() |
||
-- Title object for the /sandbox subpage. |
-- Title object for the /sandbox subpage. |
||
return mw.title.new(env.docpageRoot .. '/' .. message('sandboxSubpage |
return mw.title.new(env.docpageRoot .. '/' .. message('sandboxSubpage')) |
||
end |
end |
||
function envFuncs.testcasesTitle() |
function envFuncs.testcasesTitle() |
||
-- Title object for the /testcases subpage. |
-- Title object for the /testcases subpage. |
||
return mw.title.new(env.docpageRoot .. '/' .. message('testcasesSubpage |
return mw.title.new(env.docpageRoot .. '/' .. message('testcasesSubpage')) |
||
end |
end |
||
function envFuncs.printTitle() |
function envFuncs.printTitle() |
||
-- Title object for the /Print subpage. |
-- Title object for the /Print subpage. |
||
return env.templateTitle:subPageTitle(message('printSubpage |
return env.templateTitle:subPageTitle(message('printSubpage')) |
||
end |
end |
||
Line 296: | Line 297: | ||
local omargs = {} -- Args for {{ombox}}. |
local omargs = {} -- Args for {{ombox}}. |
||
-- Get the image wikitext. |
-- Get the image wikitext. |
||
omargs.image = message('sandboxNoticeImage |
omargs.image = message('sandboxNoticeImage') |
||
-- Get the text. We start with the opening blurb, which is something like |
-- Get the text. We start with the opening blurb, which is something like |
||
-- "This is the template sandbox for [[Template:Foo]] (diff)." |
-- "This is the template sandbox for [[Template:Foo]] (diff)." |
||
Line 306: | Line 307: | ||
if isPreviewing or not compareUrl then |
if isPreviewing or not compareUrl then |
||
-- 'This is the [[Wikipedia:Template test cases|template sandbox]] page for $1.' |
-- 'This is the [[Wikipedia:Template test cases|template sandbox]] page for $1.' |
||
text = text .. message('sandboxNoticeBlurb |
text = text .. message('sandboxNoticeBlurb', {templateLink}) |
||
else |
else |
||
-- 'This is the [[Wikipedia:Template test cases|template sandbox]] page for $1 ($2).' |
-- 'This is the [[Wikipedia:Template test cases|template sandbox]] page for $1 ($2).' |
||
local compareDisplay = message('sandboxNoticeCompareLinkDisplay |
local compareDisplay = message('sandboxNoticeCompareLinkDisplay') |
||
local compareLink = makeUrlLink(compareUrl, compareDisplay) |
local compareLink = makeUrlLink(compareUrl, compareDisplay) |
||
text = text .. message('sandboxNoticeDiffBlurb |
text = text .. message('sandboxNoticeDiffBlurb', {templateLink, compareLink}) |
||
end |
end |
||
-- Get the test cases page blurb if the page exists. |
-- Get the test cases page blurb if the page exists. |
||
local testcasesTitle = env.testcasesTitle |
local testcasesTitle = env.testcasesTitle |
||
if testcasesTitle and testcasesTitle.exists then |
if testcasesTitle and testcasesTitle.exists then |
||
local testcasesLinkDisplay = message('sandboxNoticeTestcasesLinkDisplay |
local testcasesLinkDisplay = message('sandboxNoticeTestcasesLinkDisplay') |
||
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) |
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) |
||
text = text .. '<br />' .. message('sandboxNoticeTestcasesBlurb |
text = text .. '<br />' .. message('sandboxNoticeTestcasesBlurb', {testcasesLink}) |
||
end |
end |
||
-- Add the page to [[Category:Template sandboxes]]. |
-- Add the page to [[Category:Template sandboxes]]. |
||
text = text .. makeCategoryLink(message('sandboxCategory |
text = text .. makeCategoryLink(message('sandboxCategory')) |
||
omargs.text = text |
omargs.text = text |
||
return messageBox.main('ombox', omargs) |
return messageBox.main('ombox', omargs) |
||
Line 328: | Line 329: | ||
function p.protectionTemplate(env) |
function p.protectionTemplate(env) |
||
local title = env.title |
local title = env.title |
||
local protectionTemplate = message('protectionTemplate |
local protectionTemplate = message('protectionTemplate') |
||
if not (protectionTemplate and title.namespace == 10) then |
if not (protectionTemplate and title.namespace == 10) then |
||
-- Don't display the protection template if we are not in the template namespace. |
-- Don't display the protection template if we are not in the template namespace. |
||
Line 346: | Line 347: | ||
if getProtectionLevel('move', prefixedTitle) == 'sysop' or getProtectionLevel('edit', prefixedTitle) then |
if getProtectionLevel('move', prefixedTitle) == 'sysop' or getProtectionLevel('edit', prefixedTitle) then |
||
-- The page is full-move protected, or full, template, or semi-protected. |
-- The page is full-move protected, or full, template, or semi-protected. |
||
return frame:expandTemplate{title = protectionTemplate, args = message('protectionTemplateArgs', 'table')} |
return frame:expandTemplate{title = protectionTemplate, args = message('protectionTemplateArgs', nil, 'table')} |
||
end |
end |
||
return nil |
return nil |
||
Line 389: | Line 390: | ||
data.docTitle = docTitle |
data.docTitle = docTitle |
||
-- View, display, edit, and purge links if /doc exists. |
-- View, display, edit, and purge links if /doc exists. |
||
data.viewLinkDisplay = message('viewLinkDisplay |
data.viewLinkDisplay = message('viewLinkDisplay') |
||
data.editLinkDisplay = message('editLinkDisplay |
data.editLinkDisplay = message('editLinkDisplay') |
||
data.historyLinkDisplay = message('historyLinkDisplay |
data.historyLinkDisplay = message('historyLinkDisplay') |
||
data.purgeLinkDisplay = message('purgeLinkDisplay |
data.purgeLinkDisplay = message('purgeLinkDisplay') |
||
-- Create link if /doc doesn't exist. |
-- Create link if /doc doesn't exist. |
||
local preload = args.preload |
local preload = args.preload |
||
if not preload then |
if not preload then |
||
if env.subjectSpace == 6 then -- File namespace |
if env.subjectSpace == 6 then -- File namespace |
||
preload = message('fileDocpagePreload |
preload = message('fileDocpagePreload') |
||
else |
else |
||
preload = message('docpagePreload |
preload = message('docpagePreload') |
||
end |
end |
||
end |
end |
||
data.preload = preload |
data.preload = preload |
||
data.createLinkDisplay = message('createLinkDisplay |
data.createLinkDisplay = message('createLinkDisplay') |
||
return data |
return data |
||
end |
end |
||
Line 444: | Line 445: | ||
data.heading = heading |
data.heading = heading |
||
elseif subjectSpace == 10 then -- Template namespace |
elseif subjectSpace == 10 then -- Template namespace |
||
data.heading = message('documentationIconWikitext |
data.heading = message('documentationIconWikitext') .. ' ' .. message('templateNamespaceHeading') |
||
elseif subjectSpace == 828 then -- Module namespace |
elseif subjectSpace == 828 then -- Module namespace |
||
data.heading = message('documentationIconWikitext |
data.heading = message('documentationIconWikitext') .. ' ' .. message('moduleNamespaceHeading') |
||
elseif subjectSpace == 6 then -- File namespace |
elseif subjectSpace == 6 then -- File namespace |
||
data.heading = message('fileNamespaceHeading |
data.heading = message('fileNamespaceHeading') |
||
else |
else |
||
data.heading = message('otherNamespacesHeading |
data.heading = message('otherNamespacesHeading') |
||
end |
end |
||
Line 467: | Line 468: | ||
-- [view][edit][history][purge] or [create] links. |
-- [view][edit][history][purge] or [create] links. |
||
if links then |
if links then |
||
data.linksClass = message('startBoxLinkclasses |
data.linksClass = message('startBoxLinkclasses') |
||
data.linksId = message('startBoxLinkId |
data.linksId = message('startBoxLinkId') |
||
data.links = links |
data.links = links |
||
end |
end |
||
Line 548: | Line 549: | ||
-- Assemble the arguments for {{fmbox}}. |
-- Assemble the arguments for {{fmbox}}. |
||
local fmargs = {} |
local fmargs = {} |
||
fmargs.id = message('fmboxId |
fmargs.id = message('fmboxId') -- Sets 'documentation-meta-data' |
||
fmargs.image = message('fmboxImageNone |
fmargs.image = message('fmboxImageNone') -- Sets 'none' |
||
fmargs.style = message('fmboxStyle |
fmargs.style = message('fmboxStyle') -- Sets 'background-color: #ecfcf4' |
||
fmargs.textstyle = message('fmboxTextstyle |
fmargs.textstyle = message('fmboxTextstyle') -- 'font-style: italic;' |
||
-- Assemble the fmbox text field. |
-- Assemble the fmbox text field. |
||
Line 596: | Line 597: | ||
local ret |
local ret |
||
if printTitle.exists then |
if printTitle.exists then |
||
local printLink = makeWikilink(printTitle.prefixedText, message('printLinkDisplay |
local printLink = makeWikilink(printTitle.prefixedText, message('printLinkDisplay')) |
||
ret = message('printBlurb |
ret = message('printBlurb', {printLink}) |
||
local displayPrintCategory = message('displayPrintCategory', 'boolean') |
local displayPrintCategory = message('displayPrintCategory', nil, 'boolean') |
||
if displayPrintCategory then |
if displayPrintCategory then |
||
ret = ret .. makeCategoryLink(message('printCategory |
ret = ret .. makeCategoryLink(message('printCategory')) |
||
end |
end |
||
end |
end |
||
Line 616: | Line 617: | ||
local pagetype |
local pagetype |
||
if subjectSpace == 10 then |
if subjectSpace == 10 then |
||
pagetype = message('templatePagetype |
pagetype = message('templatePagetype') |
||
elseif subjectSpace == 828 then |
elseif subjectSpace == 828 then |
||
pagetype = message('modulePagetype |
pagetype = message('modulePagetype') |
||
else |
else |
||
pagetype = message('defaultPagetype |
pagetype = message('defaultPagetype') |
||
end |
end |
||
return makeWikilink( |
return makeWikilink( |
||
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', |
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', |
||
message('subpagesLinkDisplay |
message('subpagesLinkDisplay', {pagetype}) |
||
) |
) |
||
end |
end |
||
Line 635: | Line 636: | ||
end |
end |
||
-- Make the blurb. |
-- Make the blurb. |
||
local docPathLink = makeWikilink(docTitle.prefixedText, message('docLinkDisplay |
local docPathLink = makeWikilink(docTitle.prefixedText, message('docLinkDisplay')) |
||
return message('addCategoriesBlurb |
return message('addCategoriesBlurb', {docPathLink}) |
||
end |
end |
||
Line 651: | Line 652: | ||
local docLink = makeWikilink(docTitle.prefixedText) |
local docLink = makeWikilink(docTitle.prefixedText) |
||
local editUrl = docTitle:fullUrl{action = 'edit'} |
local editUrl = docTitle:fullUrl{action = 'edit'} |
||
local editDisplay = message('editLinkDisplay |
local editDisplay = message('editLinkDisplay') |
||
local editLink = makeUrlLink(editUrl, editDisplay) |
local editLink = makeUrlLink(editUrl, editDisplay) |
||
local historyUrl = docTitle:fullUrl{action = 'history'} |
local historyUrl = docTitle:fullUrl{action = 'history'} |
||
local historyDisplay = message('historyLinkDisplay |
local historyDisplay = message('historyLinkDisplay') |
||
local historyLink = makeUrlLink(historyUrl, historyDisplay) |
local historyLink = makeUrlLink(historyUrl, historyDisplay) |
||
ret = message('transcludedFromBlurb |
ret = message('transcludedFromBlurb', {docLink}) |
||
.. ' ' |
.. ' ' |
||
.. makeToolbar(editLink, historyLink) |
.. makeToolbar(editLink, historyLink) |
||
Line 662: | Line 663: | ||
elseif env.subjectSpace == 828 then |
elseif env.subjectSpace == 828 then |
||
-- /doc does not exist; ask to create it. |
-- /doc does not exist; ask to create it. |
||
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('modulePreload |
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('modulePreload')} |
||
local createDisplay = message('createLinkDisplay |
local createDisplay = message('createLinkDisplay') |
||
local createLink = makeUrlLink(createUrl, createDisplay) |
local createLink = makeUrlLink(createUrl, createDisplay) |
||
ret = message('createModuleDocBlurb |
ret = message('createModuleDocBlurb', {createLink}) |
||
.. '<br />' |
.. '<br />' |
||
end |
end |
||
Line 686: | Line 687: | ||
if sandboxTitle.exists then |
if sandboxTitle.exists then |
||
local sandboxPage = sandboxTitle.prefixedText |
local sandboxPage = sandboxTitle.prefixedText |
||
local sandboxDisplay = message('sandboxLinkDisplay |
local sandboxDisplay = message('sandboxLinkDisplay') |
||
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) |
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) |
||
local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} |
local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} |
||
local sandboxEditDisplay = message('sandboxEditLinkDisplay |
local sandboxEditDisplay = message('sandboxEditLinkDisplay') |
||
local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) |
local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) |
||
local compareUrl = env.compareUrl |
local compareUrl = env.compareUrl |
||
local compareLink |
local compareLink |
||
if compareUrl then |
if compareUrl then |
||
local compareDisplay = message('compareLinkDisplay |
local compareDisplay = message('compareLinkDisplay') |
||
compareLink = makeUrlLink(compareUrl, compareDisplay) |
compareLink = makeUrlLink(compareUrl, compareDisplay) |
||
end |
end |
||
Line 701: | Line 702: | ||
local sandboxPreload |
local sandboxPreload |
||
if subjectSpace == 828 then |
if subjectSpace == 828 then |
||
sandboxPreload = message('moduleSandboxPreload |
sandboxPreload = message('moduleSandboxPreload') |
||
else |
else |
||
sandboxPreload = message('templateSandboxPreload |
sandboxPreload = message('templateSandboxPreload') |
||
end |
end |
||
local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} |
local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} |
||
local sandboxCreateDisplay = message('sandboxCreateLinkDisplay |
local sandboxCreateDisplay = message('sandboxCreateLinkDisplay') |
||
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) |
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) |
||
local mirrorSummary = message('mirrorEditSummary |
local mirrorSummary = message('mirrorEditSummary', {makeWikilink(templatePage)}) |
||
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templatePage, summary = mirrorSummary} |
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templatePage, summary = mirrorSummary} |
||
local mirrorDisplay = message('mirrorLinkDisplay |
local mirrorDisplay = message('mirrorLinkDisplay') |
||
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) |
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) |
||
sandboxLinks = message('sandboxLinkDisplay |
sandboxLinks = message('sandboxLinkDisplay') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) |
||
end |
end |
||
if testcasesTitle.exists then |
if testcasesTitle.exists then |
||
local testcasesPage = testcasesTitle.prefixedText |
local testcasesPage = testcasesTitle.prefixedText |
||
local testcasesDisplay = message('testcasesLinkDisplay |
local testcasesDisplay = message('testcasesLinkDisplay') |
||
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) |
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) |
||
local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} |
local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} |
||
local testcasesEditDisplay = message('testcasesEditLinkDisplay |
local testcasesEditDisplay = message('testcasesEditLinkDisplay') |
||
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) |
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) |
||
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) |
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) |
||
Line 725: | Line 726: | ||
local testcasesPreload |
local testcasesPreload |
||
if subjectSpace == 828 then |
if subjectSpace == 828 then |
||
testcasesPreload = message('moduleTestcasesPreload |
testcasesPreload = message('moduleTestcasesPreload') |
||
else |
else |
||
testcasesPreload = message('templateTestcasesPreload |
testcasesPreload = message('templateTestcasesPreload') |
||
end |
end |
||
local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} |
local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} |
||
local testcasesCreateDisplay = message('testcasesCreateLinkDisplay |
local testcasesCreateDisplay = message('testcasesCreateLinkDisplay') |
||
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) |
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) |
||
testcasesLinks = message('testcasesLinkDisplay |
testcasesLinks = message('testcasesLinkDisplay') .. ' ' .. makeToolbar(testcasesCreateLink) |
||
end |
end |
||
local messageName |
local messageName |
||
Line 740: | Line 741: | ||
messageName = 'experimentBlurbTemplate' |
messageName = 'experimentBlurbTemplate' |
||
end |
end |
||
return message(messageName |
return message(messageName, {sandboxLinks, testcasesLinks}) |
||
end |
end |
||
Line 752: | Line 753: | ||
local ret = '' |
local ret = '' |
||
local subpage = title.subpageText |
local subpage = title.subpageText |
||
if message('displayStrangeUsageCategory', 'boolean') and (subpage == message('docSubpage |
if message('displayStrangeUsageCategory', nil, 'boolean') and (subpage == message('docSubpage') or subpage == message('testcasesSubpage')) then |
||
local sort = (title.namespace == 0 and message('strangeUsageCategoryMainspaceSort |
local sort = (title.namespace == 0 and message('strangeUsageCategoryMainspaceSort') or '') .. title.prefixedText -- Sort on namespace. |
||
ret = ret .. makeCategoryLink(message('strangeUsageCategory |
ret = ret .. makeCategoryLink(message('strangeUsageCategory'), sort) |
||
end |
end |
||
return ret |
return ret |