Difference between revisions of "Module:Documentation"
Jump to navigation
Jump to search
use hyphens for message names rather than camelCase, in line with MediaWiki
>Mr. Stradivarius (make 'string' the default message type in the message function to avoid having 'string' all over the place) |
>Mr. Stradivarius (use hyphens for message names rather than camelCase, in line with MediaWiki) |
||
Line 29: | Line 29: | ||
-- 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(' | -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." | ||
--]] | --]] | ||
local msg = cfg[cfgKey] | local msg = cfg[cfgKey] | ||
Line 127: | 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(' | .attr('id', message('main-div-id')) | ||
.addClass(message(' | .addClass(message('main-div-classes')) | ||
.newline() | .newline() | ||
.wikitext(p._startBox(args, env)) | .wikitext(p._startBox(args, env)) | ||
Line 196: | Line 196: | ||
title = mw.title.new(titleArg) | title = mw.title.new(titleArg) | ||
if not title then | if not title then | ||
error(message(' | error(message('title-arg-error', {titleArg})) | ||
end | end | ||
else | else | ||
Line 208: | Line 208: | ||
local title = env.title | local title = env.title | ||
local subpage = title.subpageText | local subpage = title.subpageText | ||
if subpage == message(' | if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then | ||
return title.basePageTitle | return title.basePageTitle | ||
else | else | ||
Line 223: | Line 223: | ||
docpage = docname | docpage = docname | ||
else | else | ||
docpage = env.docpageRoot .. '/' .. message(' | docpage = env.docpageRoot .. '/' .. message('doc-subpage') | ||
end | end | ||
return mw.title.new(docpage) | return mw.title.new(docpage) | ||
Line 230: | 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(' | return mw.title.new(env.docpageRoot .. '/' .. message('sandbox-subpage')) | ||
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(' | return mw.title.new(env.docpageRoot .. '/' .. message('testcases-subpage')) | ||
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(' | return env.templateTitle:subPageTitle(message('print-subpage')) | ||
end | end | ||
Line 297: | Line 297: | ||
local omargs = {} -- Args for {{ombox}}. | local omargs = {} -- Args for {{ombox}}. | ||
-- Get the image wikitext. | -- Get the image wikitext. | ||
omargs.image = message(' | omargs.image = message('sandbox-notice-image') | ||
-- 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 307: | 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(' | text = text .. message('sandbox-notice-blurb', {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(' | local compareDisplay = message('sandbox-notice-compare-link-display') | ||
local compareLink = makeUrlLink(compareUrl, compareDisplay) | local compareLink = makeUrlLink(compareUrl, compareDisplay) | ||
text = text .. message(' | text = text .. message('sandbox-notice-diff-blurb', {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(' | local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') | ||
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) | local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) | ||
text = text .. '<br />' .. message(' | text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink}) | ||
end | end | ||
-- Add the page to [[Category:Template sandboxes]]. | -- Add the page to [[Category:Template sandboxes]]. | ||
text = text .. makeCategoryLink(message(' | text = text .. makeCategoryLink(message('sandbox-category')) | ||
omargs.text = text | omargs.text = text | ||
return messageBox.main('ombox', omargs) | return messageBox.main('ombox', omargs) | ||
Line 329: | Line 329: | ||
function p.protectionTemplate(env) | function p.protectionTemplate(env) | ||
local title = env.title | local title = env.title | ||
local protectionTemplate = message(' | local protectionTemplate = message('protection-template') | ||
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 347: | 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(' | return frame:expandTemplate{title = protectionTemplate, args = message('protection-template-args', nil, 'table')} | ||
end | end | ||
return nil | return nil | ||
Line 390: | 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(' | data.viewLinkDisplay = message('view-link-display') | ||
data.editLinkDisplay = message(' | data.editLinkDisplay = message('edit-link-display') | ||
data.historyLinkDisplay = message(' | data.historyLinkDisplay = message('history-link-display') | ||
data.purgeLinkDisplay = message(' | data.purgeLinkDisplay = message('purge-link-display') | ||
-- 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(' | preload = message('file-docpage-preload') | ||
else | else | ||
preload = message(' | preload = message('docpage-preload') | ||
end | end | ||
end | end | ||
data.preload = preload | data.preload = preload | ||
data.createLinkDisplay = message(' | data.createLinkDisplay = message('create-link-display') | ||
return data | return data | ||
end | end | ||
Line 445: | Line 445: | ||
data.heading = heading | data.heading = heading | ||
elseif subjectSpace == 10 then -- Template namespace | elseif subjectSpace == 10 then -- Template namespace | ||
data.heading = message(' | data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') | ||
elseif subjectSpace == 828 then -- Module namespace | elseif subjectSpace == 828 then -- Module namespace | ||
data.heading = message(' | data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') | ||
elseif subjectSpace == 6 then -- File namespace | elseif subjectSpace == 6 then -- File namespace | ||
data.heading = message(' | data.heading = message('file-namespace-heading') | ||
else | else | ||
data.heading = message(' | data.heading = message('other-namespaces-heading') | ||
end | end | ||
Line 468: | 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(' | data.linksClass = message('start-box-linkclasses') | ||
data.linksId = message(' | data.linksId = message('start-box-link-id') | ||
data.links = links | data.links = links | ||
end | end | ||
Line 549: | Line 549: | ||
-- Assemble the arguments for {{fmbox}}. | -- Assemble the arguments for {{fmbox}}. | ||
local fmargs = {} | local fmargs = {} | ||
fmargs.id = message(' | fmargs.id = message('fmbox-id') -- Sets 'documentation-meta-data' | ||
fmargs.image = message(' | fmargs.image = message('fmbox-image-none') -- Sets 'none' | ||
fmargs.style = message(' | fmargs.style = message('fmbox-style') -- Sets 'background-color: #ecfcf4' | ||
fmargs.textstyle = message(' | fmargs.textstyle = message('fmbox-textstyle') -- 'font-style: italic;' | ||
-- Assemble the fmbox text field. | -- Assemble the fmbox text field. | ||
Line 597: | Line 597: | ||
local ret | local ret | ||
if printTitle.exists then | if printTitle.exists then | ||
local printLink = makeWikilink(printTitle.prefixedText, message(' | local printLink = makeWikilink(printTitle.prefixedText, message('print-link-display')) | ||
ret = message(' | ret = message('print-blurb', {printLink}) | ||
local displayPrintCategory = message(' | local displayPrintCategory = message('display-print-category', nil, 'boolean') | ||
if displayPrintCategory then | if displayPrintCategory then | ||
ret = ret .. makeCategoryLink(message(' | ret = ret .. makeCategoryLink(message('print-category')) | ||
end | end | ||
end | end | ||
Line 617: | Line 617: | ||
local pagetype | local pagetype | ||
if subjectSpace == 10 then | if subjectSpace == 10 then | ||
pagetype = message(' | pagetype = message('template-pagetype') | ||
elseif subjectSpace == 828 then | elseif subjectSpace == 828 then | ||
pagetype = message(' | pagetype = message('module-pagetype') | ||
else | else | ||
pagetype = message(' | pagetype = message('default-pagetype') | ||
end | end | ||
return makeWikilink( | return makeWikilink( | ||
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', | 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', | ||
message(' | message('subpages-link-display', {pagetype}) | ||
) | ) | ||
end | end | ||
Line 636: | Line 636: | ||
end | end | ||
-- Make the blurb. | -- Make the blurb. | ||
local docPathLink = makeWikilink(docTitle.prefixedText, message(' | local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) | ||
return message(' | return message('add-categories-blurb', {docPathLink}) | ||
end | end | ||
Line 652: | 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(' | local editDisplay = message('edit-link-display') | ||
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(' | local historyDisplay = message('history-link-display') | ||
local historyLink = makeUrlLink(historyUrl, historyDisplay) | local historyLink = makeUrlLink(historyUrl, historyDisplay) | ||
ret = message(' | ret = message('transcluded-from-blurb', {docLink}) | ||
.. ' ' | .. ' ' | ||
.. makeToolbar(editLink, historyLink) | .. makeToolbar(editLink, historyLink) | ||
Line 663: | 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(' | local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} | ||
local createDisplay = message(' | local createDisplay = message('create-link-display') | ||
local createLink = makeUrlLink(createUrl, createDisplay) | local createLink = makeUrlLink(createUrl, createDisplay) | ||
ret = message(' | ret = message('create-module-doc-blurb', {createLink}) | ||
.. '<br />' | .. '<br />' | ||
end | end | ||
Line 687: | Line 687: | ||
if sandboxTitle.exists then | if sandboxTitle.exists then | ||
local sandboxPage = sandboxTitle.prefixedText | local sandboxPage = sandboxTitle.prefixedText | ||
local sandboxDisplay = message(' | local sandboxDisplay = message('sandbox-link-display') | ||
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(' | local sandboxEditDisplay = message('sandbox-edit-link-display') | ||
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(' | local compareDisplay = message('compare-link-display') | ||
compareLink = makeUrlLink(compareUrl, compareDisplay) | compareLink = makeUrlLink(compareUrl, compareDisplay) | ||
end | end | ||
Line 702: | Line 702: | ||
local sandboxPreload | local sandboxPreload | ||
if subjectSpace == 828 then | if subjectSpace == 828 then | ||
sandboxPreload = message(' | sandboxPreload = message('module-sandbox-preload') | ||
else | else | ||
sandboxPreload = message(' | sandboxPreload = message('template-sandbox-preload') | ||
end | end | ||
local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} | local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} | ||
local sandboxCreateDisplay = message(' | local sandboxCreateDisplay = message('sandbox-create-link-display') | ||
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) | local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) | ||
local mirrorSummary = message(' | local mirrorSummary = message('mirror-edit-summary', {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(' | local mirrorDisplay = message('mirror-link-display') | ||
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) | local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) | ||
sandboxLinks = message(' | sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) | ||
end | end | ||
if testcasesTitle.exists then | if testcasesTitle.exists then | ||
local testcasesPage = testcasesTitle.prefixedText | local testcasesPage = testcasesTitle.prefixedText | ||
local testcasesDisplay = message(' | local testcasesDisplay = message('testcases-link-display') | ||
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(' | local testcasesEditDisplay = message('testcases-edit-link-display') | ||
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) | local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) | ||
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) | testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) | ||
Line 726: | Line 726: | ||
local testcasesPreload | local testcasesPreload | ||
if subjectSpace == 828 then | if subjectSpace == 828 then | ||
testcasesPreload = message(' | testcasesPreload = message('module-testcases-preload') | ||
else | else | ||
testcasesPreload = message(' | testcasesPreload = message('template-testcases-preload') | ||
end | end | ||
local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} | local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} | ||
local testcasesCreateDisplay = message(' | local testcasesCreateDisplay = message('testcases-create-link-display') | ||
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) | local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) | ||
testcasesLinks = message(' | testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) | ||
end | end | ||
local messageName | local messageName | ||
Line 753: | Line 753: | ||
local ret = '' | local ret = '' | ||
local subpage = title.subpageText | local subpage = title.subpageText | ||
if message(' | if message('display-strange-usage-category', nil, 'boolean') and (subpage == message('doc-subpage') or subpage == message('testcases-subpage')) then | ||
local sort = (title.namespace == 0 and message(' | local sort = (title.namespace == 0 and message('strange-usage-category-mainspace-sort') or '') .. title.prefixedText -- Sort on namespace. | ||
ret = ret .. makeCategoryLink(message(' | ret = ret .. makeCategoryLink(message('strange-usage-category'), sort) | ||
end | end | ||
return ret | return ret |