Content added Content deleted
NotAracham (talk | contribs) (replacing documentation module with code from MH Meta) |
NotAracham (talk | contribs) (replacing with wikitide meta standards) |
||
Line 3: | Line 3: | ||
-- Get required modules. |
-- Get required modules. |
||
local getArgs = require('Module:Arguments').getArgs |
local getArgs = require('Module:Arguments').getArgs |
||
local messageBox = require('Module:Message box') |
|||
-- Get the config table. |
-- Get the config table. |
||
local cfg = mw.loadData('Module:Documentation/config') |
local cfg = mw.loadData('Module:Documentation/config') |
||
local i18n = mw.loadData('Module:Documentation/i18n') |
|||
local p = {} |
local p = {} |
||
Line 33: | Line 32: | ||
expectType = expectType or 'string' |
expectType = expectType or 'string' |
||
if type(msg) ~= expectType then |
if type(msg) ~= expectType then |
||
error |
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) |
||
end |
end |
||
if not valArray then |
if not valArray then |
||
Line 41: | Line 40: | ||
local function getMessageVal(match) |
local function getMessageVal(match) |
||
match = tonumber(match) |
match = tonumber(match) |
||
return valArray[match] or error |
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) |
||
end |
end |
||
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) |
|||
return ret |
|||
end |
end |
||
Line 82: | Line 80: | ||
ret[#ret + 1] = select(i, ...) |
ret[#ret + 1] = select(i, ...) |
||
end |
end |
||
-- 'documentation-toolbar' |
|||
return '<small>(' .. table.concat(ret, ' | ') .. ')</small>' |
|||
return '<span class="' .. message('toolbar-class') .. '">(' |
|||
.. table.concat(ret, ' | ') .. ')</span>' |
|||
end |
end |
||
Line 112: | Line 112: | ||
---------------------------------------------------------------------------- |
---------------------------------------------------------------------------- |
||
-- Entry points |
|||
-- Load TemplateStyles |
|||
---------------------------------------------------------------------------- |
---------------------------------------------------------------------------- |
||
p. |
function p.nonexistent(frame) |
||
if mw.title.getCurrentTitle().subpageText == 'testcases' then |
|||
local parent = frame.getParent(frame) |
|||
return frame:expandTemplate{title = 'module test cases notice'} |
|||
local output = p._main(parent.args) |
|||
else |
|||
return frame:extensionTag{ name='templatestyles', args = { src= message('templatestyles-scr') } } .. output |
|||
return p.main(frame) |
|||
end |
|||
end |
end |
||
p.main = makeInvokeFunc('_main') |
|||
---------------------------------------------------------------------------- |
|||
-- Main function |
|||
---------------------------------------------------------------------------- |
|||
function p._main(args) |
function p._main(args) |
||
Line 129: | Line 129: | ||
-- This function defines logic flow for the module. |
-- This function defines logic flow for the module. |
||
-- @args - table of arguments passed by the user |
-- @args - table of arguments passed by the user |
||
-- |
|||
-- Messages: |
|||
-- 'main-div-id' --> 'template-documentation' |
|||
-- 'main-div-classes' --> 'template-documentation iezoomfix' |
|||
--]] |
--]] |
||
local env = p.getEnvironment(args) |
local env = p.getEnvironment(args) |
||
local root = mw.html.create() |
local root = mw.html.create() |
||
root |
root |
||
:wikitext(p._getModuleWikitext(args, env)) |
|||
:wikitext(p.protectionTemplate(env)) |
:wikitext(p.protectionTemplate(env)) |
||
:wikitext(p.sandboxNotice(args, env)) |
:wikitext(p.sandboxNotice(args, env)) |
||
-- This div tag is from {{documentation/start box}}, but moving it here |
|||
-- so that we don't have to worry about unclosed tags. |
|||
:tag('div') |
:tag('div') |
||
-- 'documentation-container' |
|||
:attr('id', message('main-div-id')) |
|||
:addClass(message(' |
:addClass(message('container')) |
||
:attr('role', 'complementary') |
|||
:wikitext(p._startBox(args, env)) |
|||
:attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) |
|||
:wikitext(p._content(args, env)) |
|||
:attr('aria-label', args.heading == '' and 'Documentation' or nil) |
|||
:newline() |
|||
:tag('div') |
|||
-- 'documentation' |
|||
:addClass(message('main-div-classes')) |
|||
:newline() |
|||
:wikitext(p._startBox(args, env)) |
|||
:wikitext(p._content(args, env)) |
|||
:tag('div') |
|||
-- 'documentation-clear' |
|||
:addClass(message('clear')) |
|||
:done() |
|||
:newline() |
|||
:done() |
|||
:wikitext(p._endBox(args, env)) |
|||
:done() |
:done() |
||
:wikitext(p._endBox(args, env)) |
|||
:wikitext(p.addTrackingCategories(env)) |
:wikitext(p.addTrackingCategories(env)) |
||
-- 'Module:Documentation/styles.css' |
|||
return tostring(root) |
|||
return mw.getCurrentFrame():extensionTag ( |
|||
'templatestyles', '', {src=cfg['templatestyles'] |
|||
}) .. tostring(root) |
|||
end |
end |
||
Line 158: | Line 170: | ||
function p.getEnvironment(args) |
function p.getEnvironment(args) |
||
--[[ |
--[[ |
||
-- Returns a table with information about the environment, including title |
-- Returns a table with information about the environment, including title |
||
-- path-related data. |
-- objects and other namespace- or path-related data. |
||
-- @args - table of arguments passed by the user |
-- @args - table of arguments passed by the user |
||
-- |
-- |
||
Line 168: | Line 180: | ||
-- env.sandboxTitle - the /sandbox subpage. |
-- env.sandboxTitle - the /sandbox subpage. |
||
-- env.testcasesTitle - the /testcases subpage. |
-- env.testcasesTitle - the /testcases subpage. |
||
-- env.printTitle - the print version of the template, located at the /Print subpage. |
|||
-- |
-- |
||
-- Data includes: |
-- Data includes: |
||
Line 262: | Line 273: | ||
--]] |
--]] |
||
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) |
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) |
||
end |
|||
function envFuncs.printTitle() |
|||
--[[ |
|||
-- Title object for the /Print subpage. |
|||
-- Messages: |
|||
-- 'print-subpage' --> 'Print' |
|||
--]] |
|||
return env.templateTitle:subPageTitle(message('print-subpage')) |
|||
end |
end |
||
Line 284: | Line 286: | ||
function envFuncs.docSpace() |
function envFuncs.docSpace() |
||
-- The documentation namespace number. For most namespaces this is |
-- The documentation namespace number. For most namespaces this is the |
||
-- subject namespace. However, pages in the Article, File, |
-- same as the subject namespace. However, pages in the Article, File, |
||
-- namespaces must have their /doc, /sandbox and |
-- MediaWiki or Category namespaces must have their /doc, /sandbox and |
||
-- /testcases pages in talk space. |
|||
local subjectSpace = env.subjectSpace |
local subjectSpace = env.subjectSpace |
||
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then |
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then |
||
Line 312: | Line 315: | ||
local compareUrl = mw.uri.fullUrl( |
local compareUrl = mw.uri.fullUrl( |
||
'Special:ComparePages', |
'Special:ComparePages', |
||
{page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} |
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} |
||
) |
) |
||
return tostring(compareUrl) |
return tostring(compareUrl) |
||
Line 326: | Line 329: | ||
-- Auxiliary templates |
-- Auxiliary templates |
||
---------------------------------------------------------------------------- |
---------------------------------------------------------------------------- |
||
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') |
|||
function p._getModuleWikitext(args, env) |
|||
local currentTitle = mw.title.getCurrentTitle() |
|||
if currentTitle.contentModel ~= 'Scribunto' then return end |
|||
pcall(require, currentTitle.prefixedText) -- if it fails, we don't care |
|||
local moduleWikitext = package.loaded["Module:Module wikitext"] |
|||
if moduleWikitext then |
|||
return moduleWikitext.main() |
|||
end |
|||
end |
|||
function p.sandboxNotice(args, env) |
function p.sandboxNotice(args, env) |
||
Line 334: | Line 349: | ||
-- |
-- |
||
-- Messages: |
-- Messages: |
||
-- 'sandbox-notice-image' --> '[[ |
-- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]' |
||
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' |
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' |
||
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' |
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' |
||
-- 'sandbox-notice-pagetype-template' --> '[[ |
-- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page' |
||
-- 'sandbox-notice-pagetype-module' --> '[[ |
-- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page' |
||
-- 'sandbox-notice-pagetype-other' --> 'sandbox page' |
-- 'sandbox-notice-pagetype-other' --> 'sandbox page' |
||
-- 'sandbox-notice-compare-link-display' --> 'diff' |
-- 'sandbox-notice-compare-link-display' --> 'diff' |
||
Line 349: | Line 364: | ||
local templateTitle = env.templateTitle |
local templateTitle = env.templateTitle |
||
local subjectSpace = env.subjectSpace |
local subjectSpace = env.subjectSpace |
||
if not (subjectSpace and title and sandboxTitle and templateTitle |
if not (subjectSpace and title and sandboxTitle and templateTitle |
||
and mw.title.equals(title, sandboxTitle)) then |
|||
return nil |
return nil |
||
end |
end |
||
Line 358: | Line 374: | ||
-- "This is the template sandbox for [[Template:Foo]] (diff)." |
-- "This is the template sandbox for [[Template:Foo]] (diff)." |
||
local text = '' |
local text = '' |
||
local frame = mw.getCurrentFrame() |
|||
local isPreviewing = frame:preprocess('{{REVISIONID}}') == '' -- True if the page is being previewed. |
|||
local pagetype |
local pagetype |
||
if subjectSpace == 10 then |
if subjectSpace == 10 then |
||
Line 370: | Line 384: | ||
local templateLink = makeWikilink(templateTitle.prefixedText) |
local templateLink = makeWikilink(templateTitle.prefixedText) |
||
local compareUrl = env.compareUrl |
local compareUrl = env.compareUrl |
||
if |
if compareUrl then |
||
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) |
|||
else |
|||
local compareDisplay = message('sandbox-notice-compare-link-display') |
local compareDisplay = message('sandbox-notice-compare-link-display') |
||
local compareLink = makeUrlLink(compareUrl, compareDisplay) |
local compareLink = makeUrlLink(compareUrl, compareDisplay) |
||
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) |
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) |
||
else |
|||
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) |
|||
end |
end |
||
-- Get the test cases page blurb if the page exists. This is something like |
-- Get the test cases page blurb if the page exists. This is something like |
||
Line 394: | Line 408: | ||
end |
end |
||
-- Add the sandbox to the sandbox category. |
-- Add the sandbox to the sandbox category. |
||
text = text .. makeCategoryLink(message('sandbox-category')) |
omargs.text = text .. makeCategoryLink(message('sandbox-category')) |
||
omargs.text = text |
|||
-- 'documentation-clear' |
|||
omargs.class = message('sandbox-class') |
|||
return |
return '<div class="' .. message('clear') .. '"></div>' |
||
.. require('Module:Message box').main('ombox', omargs) |
|||
end |
end |
||
Line 406: | Line 421: | ||
-- 'protection-template' --> 'pp-template' |
-- 'protection-template' --> 'pp-template' |
||
-- 'protection-template-args' --> {docusage = 'yes'} |
-- 'protection-template-args' --> {docusage = 'yes'} |
||
local |
local protectionLevels = env.protectionLevels |
||
local protectionLevels |
|||
local protectionTemplate = message('protection-template') |
|||
local namespace = title.namespace |
|||
if not (protectionTemplate and (namespace == 10 or namespace == 828)) then |
|||
-- Don't display the protection template if we are not in the template or module namespaces. |
|||
return nil |
|||
end |
|||
protectionLevels = env.protectionLevels |
|||
if not protectionLevels then |
if not protectionLevels then |
||
return nil |
return nil |
||
end |
end |
||
local |
local editProt = protectionLevels.edit and protectionLevels.edit[1] |
||
local |
local moveProt = protectionLevels.move and protectionLevels.move[1] |
||
if editProt then |
|||
if moveLevels and moveLevels[1] == 'sysop' or editLevels and editLevels[1] then |
|||
-- The page is |
-- The page is edit-protected. |
||
return require('Module:Protection banner')._main{ |
|||
local frame = mw.getCurrentFrame() |
|||
message('protection-reason-edit'), small = true |
|||
} |
|||
elseif moveProt and moveProt ~= 'autoconfirmed' then |
|||
-- The page is move-protected but not edit-protected. Exclude move |
|||
-- protection with the level "autoconfirmed", as this is equivalent to |
|||
-- no move protection at all. |
|||
return require('Module:Protection banner')._main{ |
|||
action = 'move', small = true |
|||
} |
|||
else |
else |
||
return nil |
return nil |
||
Line 448: | Line 463: | ||
local links |
local links |
||
local content = args.content |
local content = args.content |
||
if not content then |
if not content or args[1] then |
||
-- No need to include the links if the documentation is on the template page itself. |
-- No need to include the links if the documentation is on the template page itself. |
||
local linksData = p.makeStartBoxLinksData(args, env) |
local linksData = p.makeStartBoxLinksData(args, env) |
||
Line 476: | Line 491: | ||
-- 'history-link-display' --> 'history' |
-- 'history-link-display' --> 'history' |
||
-- 'purge-link-display' --> 'purge' |
-- 'purge-link-display' --> 'purge' |
||
-- 'file-docpage-preload' --> 'Template:Documentation/preload-filespace' |
|||
-- 'module-preload' --> 'Template:Documentation/preload-module-doc' |
-- 'module-preload' --> 'Template:Documentation/preload-module-doc' |
||
-- 'docpage-preload' --> 'Template:Documentation/preload' |
-- 'docpage-preload' --> 'Template:Documentation/preload' |
||
Line 495: | Line 509: | ||
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 = |
data.viewLinkDisplay = message('view-link-display') |
||
data.editLinkDisplay = |
data.editLinkDisplay = message('edit-link-display') |
||
data.historyLinkDisplay = |
data.historyLinkDisplay = message('history-link-display') |
||
data.purgeLinkDisplay = |
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 subjectSpace == |
if subjectSpace == 828 then -- Module namespace |
||
preload = message('file-docpage-preload') |
|||
elseif subjectSpace == 828 then -- Module namespace |
|||
preload = message('module-preload') |
preload = message('module-preload') |
||
else |
else |
||
Line 511: | Line 523: | ||
end |
end |
||
data.preload = preload |
data.preload = preload |
||
data.createLinkDisplay = |
data.createLinkDisplay = message('create-link-display') |
||
return data |
return data |
||
end |
end |
||
Line 517: | Line 529: | ||
function p.renderStartBoxLinks(data) |
function p.renderStartBoxLinks(data) |
||
--[[ |
--[[ |
||
-- Generates the [view][edit][history][purge] or [create] links from the data table. |
-- Generates the [view][edit][history][purge] or [create][purge] links from the data table. |
||
-- @data - a table of data generated by p.makeStartBoxLinksData |
-- @data - a table of data generated by p.makeStartBoxLinksData |
||
--]] |
--]] |
||
Line 523: | Line 535: | ||
local function escapeBrackets(s) |
local function escapeBrackets(s) |
||
-- Escapes square brackets with HTML entities. |
-- Escapes square brackets with HTML entities. |
||
s = s:gsub('%[', '[') -- Replace square brackets with HTML entities. |
|||
s = s:gsub('%]', ']') |
|||
return s |
return s |
||
:gsub('%[', '[') -- Replace square brackets with HTML entities. |
|||
:gsub('%]', ']') |
|||
end |
end |
||
Line 531: | Line 543: | ||
local docTitle = data.docTitle |
local docTitle = data.docTitle |
||
local title = data.title |
local title = data.title |
||
local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) |
|||
if docTitle.exists then |
if docTitle.exists then |
||
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) |
local viewLink = makeWikilink(docTitle.prefixedText, 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) |
||
local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) |
|||
ret = '[%s] [%s] [%s] [%s]' |
ret = '[%s] [%s] [%s] [%s]' |
||
ret = escapeBrackets(ret) |
ret = escapeBrackets(ret) |
||
Line 541: | Line 553: | ||
else |
else |
||
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) |
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) |
||
ret = '[%s]' |
ret = '[%s] [%s]' |
||
ret = escapeBrackets(ret) |
ret = escapeBrackets(ret) |
||
ret = mw.ustring.format(ret, createLink) |
ret = mw.ustring.format(ret, createLink, purgeLink) |
||
end |
end |
||
return ret |
return ret |
||
Line 556: | Line 568: | ||
-- |
-- |
||
-- Messages: |
-- Messages: |
||
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt= |
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' |
||
-- 'template-namespace-heading' --> 'Template documentation' |
-- 'template-namespace-heading' --> 'Template documentation' |
||
-- 'module-namespace-heading' --> 'Module documentation' |
-- 'module-namespace-heading' --> 'Module documentation' |
||
-- 'file-namespace-heading' --> 'Summary' |
-- 'file-namespace-heading' --> 'Summary' |
||
-- 'other-namespaces-heading' --> 'Documentation' |
-- 'other-namespaces-heading' --> 'Documentation' |
||
-- 'start-box-linkclasses' --> 'mw-editsection-like plainlinks' |
|||
-- 'start-box-link-id' --> 'doc_editlinks' |
|||
-- 'testcases-create-link-display' --> 'create' |
-- 'testcases-create-link-display' --> 'create' |
||
--]=] |
--]=] |
||
Line 582: | Line 592: | ||
data.heading = heading |
data.heading = heading |
||
elseif subjectSpace == 10 then -- Template namespace |
elseif subjectSpace == 10 then -- Template namespace |
||
data.heading = |
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') |
||
elseif subjectSpace == 828 then -- Module namespace |
elseif subjectSpace == 828 then -- Module namespace |
||
data.heading = |
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') |
||
elseif subjectSpace == 6 then -- File namespace |
elseif subjectSpace == 6 then -- File namespace |
||
data.heading = |
data.heading = message('file-namespace-heading') |
||
else |
else |
||
data.heading = |
data.heading = message('other-namespaces-heading') |
||
end |
|||
-- Heading CSS |
|||
local headingStyle = args['heading-style'] |
|||
if headingStyle then |
|||
data.headingStyleText = headingStyle |
|||
else |
|||
-- 'documentation-heading' |
|||
data.headingClass = message('main-div-heading-class') |
|||
end |
end |
||
-- Data for the [view][edit][history][purge] or [create] links. |
-- Data for the [view][edit][history][purge] or [create] links. |
||
if links then |
if links then |
||
-- 'mw-editsection-like plainlinks' |
|||
data.linksClass = message('start-box-linkclasses') |
|||
data. |
data.linksClass = message('start-box-link-classes') |
||
data.links = links |
data.links = links |
||
end |
end |
||
Line 606: | Line 625: | ||
local sbox = mw.html.create('div') |
local sbox = mw.html.create('div') |
||
sbox |
sbox |
||
-- 'documentation-startbox' |
|||
:addClass(message('header-div-class')) |
|||
:addClass(message('start-box-class')) |
|||
:tag('div') |
|||
:newline() |
|||
:addClass(message('heading-div-class')) |
|||
:tag('span') |
|||
:addClass(data.headingClass) |
|||
:attr('id', 'documentation-heading') |
|||
:cssText(data.headingStyleText) |
|||
:wikitext(data.heading) |
:wikitext(data.heading) |
||
local links = data.links |
local links = data.links |
||
if links then |
if links then |
||
sbox |
sbox:tag('span') |
||
: |
:addClass(data.linksClass) |
||
:attr('id', data.linksId) |
|||
:wikitext(links) |
|||
:attr('id', data.linksId) |
|||
:wikitext(links) |
|||
end |
end |
||
return tostring(sbox) |
return tostring(sbox) |
||
Line 635: | Line 657: | ||
local content = args.content |
local content = args.content |
||
if not content and docTitle and docTitle.exists then |
if not content and docTitle and docTitle.exists then |
||
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle} |
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} |
||
end |
end |
||
-- The line breaks below are necessary so that "=== Headings ===" at the start and end |
-- The line breaks below are necessary so that "=== Headings ===" at the start and end |
||
-- of docs are interpreted correctly. |
-- of docs are interpreted correctly. |
||
return '\n' .. (content or '') .. '\n' |
|||
local cbox = mw.html.create('div') |
|||
cbox |
|||
:addClass(message('content-div-class')) |
|||
:wikitext('\n' .. (content or '') .. '\n') |
|||
return tostring(cbox) |
|||
end |
end |
||
Line 669: | Line 687: | ||
-- @args - a table of arguments passed by the user |
-- @args - a table of arguments passed by the user |
||
-- @env - environment table containing title objects, etc., generated with p.getEnvironment |
-- @env - environment table containing title objects, etc., generated with p.getEnvironment |
||
-- |
|||
--]=] |
--]=] |
||
Line 694: | Line 713: | ||
end |
end |
||
-- Assemble the |
-- Assemble the link box. |
||
local text = '' |
local text = '' |
||
if linkBox then |
if linkBox then |
||
Line 704: | Line 723: | ||
-- Add sandbox and testcases links. |
-- Add sandbox and testcases links. |
||
-- "Editors can experiment in this template's sandbox and testcases pages." |
-- "Editors can experiment in this template's sandbox and testcases pages." |
||
text = text .. (p.makeExperimentBlurb(args, env) or '') |
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' |
||
text = text .. '<br />' |
|||
if not args.content and not args[1] then |
if not args.content and not args[1] then |
||
-- "Please add categories to the /doc subpage." |
-- "Please add categories to the /doc subpage." |
||
Line 713: | Line 731: | ||
end |
end |
||
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" |
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" |
||
local printBlurb = p.makePrintBlurb(args, env) -- Two-line blurb about print versions of templates. |
|||
if printBlurb then |
|||
text = text .. '<br />' .. printBlurb |
|||
end |
|||
end |
end |
||
end |
end |
||
local |
local box = mw.html.create('div') |
||
-- 'documentation-metadata' |
|||
ebox |
|||
box:attr('role', 'note') |
|||
:addClass(message('footer-div-class')) |
|||
:addClass(message('end-box-class')) |
|||
-- 'plainlinks' |
|||
:addClass(message('end-box-plainlinks')) |
|||
:wikitext(text) |
:wikitext(text) |
||
:done() |
|||
return tostring(ebox) |
|||
return '\n' .. tostring(box) |
|||
end |
end |
||
Line 737: | Line 756: | ||
-- 'history-link-display' --> 'history' |
-- 'history-link-display' --> 'history' |
||
-- 'transcluded-from-blurb' --> |
-- 'transcluded-from-blurb' --> |
||
-- 'The above [[ |
-- 'The above [[Wikipedia:Template documentation|documentation]] |
||
-- is [[ |
-- is [[Help:Transclusion|transcluded]] from $1.' |
||
-- 'module-preload' --> 'Template:Documentation/preload-module-doc' |
-- 'module-preload' --> 'Template:Documentation/preload-module-doc' |
||
-- 'create-link-display' --> 'create' |
-- 'create-link-display' --> 'create' |
||
-- 'create-module-doc-blurb' --> |
-- 'create-module-doc-blurb' --> |
||
-- 'You might want to $1 a documentation page for this [[ |
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' |
||
--]=] |
--]=] |
||
local docTitle = env.docTitle |
local docTitle = env.docTitle |
||
if not docTitle |
if not docTitle then |
||
return nil |
return nil |
||
end |
end |
||
Line 753: | Line 772: | ||
local docLink = makeWikilink(docTitle.prefixedText) |
local docLink = makeWikilink(docTitle.prefixedText) |
||
local editUrl = docTitle:fullUrl{action = 'edit'} |
local editUrl = docTitle:fullUrl{action = 'edit'} |
||
local editDisplay = |
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 = |
local historyDisplay = message('history-link-display') |
||
local historyLink = makeUrlLink(historyUrl, historyDisplay) |
local historyLink = makeUrlLink(historyUrl, historyDisplay) |
||
ret = message('transcluded-from-blurb', {docLink}) |
ret = message('transcluded-from-blurb', {docLink}) |
||
Line 765: | Line 784: | ||
-- /doc does not exist; ask to create it. |
-- /doc does not exist; ask to create it. |
||
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} |
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} |
||
local createDisplay = |
local createDisplay = message('create-link-display') |
||
local createLink = makeUrlLink(createUrl, createDisplay) |
local createLink = makeUrlLink(createUrl, createDisplay) |
||
ret = message('create-module-doc-blurb', {createLink}) |
ret = message('create-module-doc-blurb', {createLink}) |
||
Line 838: | Line 857: | ||
local mirrorPreload = message('mirror-link-preload') |
local mirrorPreload = message('mirror-link-preload') |
||
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} |
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} |
||
if subjectSpace == 828 then |
|||
mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} |
|||
end |
|||
local mirrorDisplay = message('mirror-link-display') |
local mirrorDisplay = message('mirror-link-display') |
||
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) |
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) |
||
Line 849: | Line 871: | ||
local testcasesEditDisplay = message('testcases-edit-link-display') |
local testcasesEditDisplay = message('testcases-edit-link-display') |
||
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) |
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) |
||
-- for Modules, add testcases run link if exists |
|||
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) |
|||
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then |
|||
local testcasesRunLinkDisplay = message('testcases-run-link-display') |
|||
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) |
|||
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) |
|||
else |
|||
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) |
|||
end |
|||
else |
else |
||
local testcasesPreload |
local testcasesPreload |
||
Line 918: | Line 947: | ||
) |
) |
||
return message('subpages-blurb', {subpagesLink}) |
return message('subpages-blurb', {subpagesLink}) |
||
end |
|||
function p.makePrintBlurb(args, env) |
|||
--[=[ |
|||
-- Generates the blurb displayed when there is a print version of the template available. |
|||
-- @args - a table of arguments passed by the user |
|||
-- @env - environment table containing title objects, etc., generated with p.getEnvironment |
|||
-- |
|||
-- Messages: |
|||
-- 'print-link-display' --> '/Print' |
|||
-- 'print-blurb' --> 'A [[Help:Books/for experts#Improving the book layout|print version]]' |
|||
-- .. ' of this template exists at $1.' |
|||
-- .. ' If you make a change to this template, please update the print version as well.' |
|||
-- 'display-print-category' --> true |
|||
-- 'print-category' --> 'Templates with print versions' |
|||
--]=] |
|||
local printTitle = env.printTitle |
|||
if not printTitle then |
|||
return nil |
|||
end |
|||
local ret |
|||
if printTitle.exists then |
|||
local printLink = makeWikilink(printTitle.prefixedText, message('print-link-display')) |
|||
ret = message('print-blurb', {printLink}) |
|||
local displayPrintCategory = message('display-print-category', nil, 'boolean') |
|||
if displayPrintCategory then |
|||
ret = ret .. makeCategoryLink(message('print-category')) |
|||
end |
|||
end |
|||
return ret |
|||
end |
end |
||