11.314
suntingan
Tidak ada ringkasan suntingan Tag: Pengembalian manual Dikembalikan |
k (1 revisi diimpor) |
||
| (3 revisi perantara oleh pengguna yang sama tidak ditampilkan) | |||
| Baris 2: | Baris 2: | ||
-- Get required modules. | -- Get required modules. | ||
local getArgs = require(' | local getArgs = require('Modul:Arguments').getArgs | ||
-- Get the config table. | -- Get the config table. | ||
local cfg = mw.loadData(' | local cfg = mw.loadData('Modul:Documentation/config') | ||
local p = {} | local p = {} | ||
| Baris 33: | Baris 32: | ||
expectType = expectType or 'string' | expectType = expectType or 'string' | ||
if type(msg) ~= expectType then | if type(msg) ~= expectType then | ||
error | error('pesan: type galat in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) | ||
end | end | ||
if not valArray then | if not valArray then | ||
| Baris 41: | Baris 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('pesan: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) | ||
end | end | ||
return ret | return ret | ||
end | end | ||
| Baris 82: | Baris 80: | ||
ret[#ret + 1] = select(i, ...) | ret[#ret + 1] = select(i, ...) | ||
end | end | ||
return '< | -- 'documentation-toolbar' | ||
end | return '<span class="' .. message('toolbar-class') .. '">(' | ||
.. table.concat(ret, ' | ') .. ')</span>' | |||
end | |||
p.makeToolbar = makeToolbar | p.makeToolbar = makeToolbar | ||
| Baris 112: | Baris 112: | ||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
-- | -- Entry points | ||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
p. | function p.nonexistent(frame) | ||
if mw.title.getCurrentTitle().subpageText == 'testcases' then | |||
return frame:expandTemplate{title = 'module test cases notice'} | |||
else | |||
return p.main(frame) | |||
end | |||
end | end | ||
p.main = makeInvokeFunc('_main') | |||
function p._main(args) | function p._main(args) | ||
| Baris 129: | Baris 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 | ||
--]] | --]] | ||
local env = p.getEnvironment(args) | local env = p.getEnvironment(args) | ||
| Baris 140: | Baris 136: | ||
:wikitext(p.protectionTemplate(env)) | :wikitext(p.protectionTemplate(env)) | ||
:wikitext(p.sandboxNotice(args, env)) | :wikitext(p.sandboxNotice(args, env)) | ||
:tag('div') | :tag('div') | ||
: | -- 'documentation-container' | ||
:addClass(message('container')) | |||
:newline() | |||
:wikitext(p. | :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.addTrackingCategories(env)) | :wikitext(p.addTrackingCategories(env)) | ||
return tostring(root) | -- 'Module:Documentation/styles.css' | ||
return mw.getCurrentFrame():extensionTag ( | |||
'templatestyles', '', {src=cfg['templatestyles'] | |||
}) .. tostring(root) | |||
end | end | ||
| Baris 288: | Baris 296: | ||
-- subject namespace. However, pages in the Article, File, MediaWiki or Category | -- subject namespace. However, pages in the Article, File, MediaWiki or Category | ||
-- namespaces must have their /doc, /sandbox and /testcases pages in talk space. | -- namespaces must have their /doc, /sandbox and /testcases pages in talk space. | ||
-- /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 | ||
| Baris 350: | Baris 359: | ||
-- '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' | ||
| Baris 362: | Baris 371: | ||
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 and mw.title.equals(title, sandboxTitle)) then | if not (subjectSpace and title and sandboxTitle and templateTitle | ||
and mw.title.equals(title, sandboxTitle)) then | |||
return nil | return nil | ||
end | end | ||
| Baris 371: | Baris 381: | ||
-- "This is the template sandbox for [[Template:Foo]] (diff)." | -- "This is the template sandbox for [[Template:Foo]] (diff)." | ||
local text = '' | local text = '' | ||
local pagetype | local pagetype | ||
if subjectSpace == 10 then | if subjectSpace == 10 then | ||
| Baris 394: | Baris 402: | ||
local testcasesTitle = env.testcasesTitle | local testcasesTitle = env.testcasesTitle | ||
if testcasesTitle and testcasesTitle.exists then | if testcasesTitle and testcasesTitle.exists then | ||
if testcasesTitle. | if testcasesTitle.namespace == mw.site.namespaces.Module.id then | ||
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') | local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') | ||
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') | local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') | ||
| Baris 409: | Baris 417: | ||
text = text .. makeCategoryLink(message('sandbox-category')) | text = text .. makeCategoryLink(message('sandbox-category')) | ||
omargs.text = text | omargs.text = text | ||
local ret = '<div style="clear: both;"></div>' | local ret = '<div style="clear: both;"></div>' | ||
ret = ret .. messageBox.main('ombox', omargs) | ret = ret .. messageBox.main('ombox', omargs) | ||
| Baris 421: | Baris 428: | ||
-- 'protection-template' --> 'pp-template' | -- 'protection-template' --> 'pp-template' | ||
-- 'protection-template-args' --> {docusage = 'yes'} | -- 'protection-template-args' --> {docusage = 'yes'} | ||
local | local 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 | |||
-- The page is | -- The page is edit-protected. | ||
return require('Module:Protection banner')._main{ | |||
return | 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 | ||
| Baris 510: | Baris 517: | ||
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 | ||
| Baris 526: | Baris 533: | ||
end | end | ||
data.preload = preload | data.preload = preload | ||
data.createLinkDisplay = | data.createLinkDisplay = message('create-link-display') | ||
return data | return data | ||
end | end | ||
| Baris 571: | Baris 578: | ||
-- | -- | ||
-- 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' | ||
-- 'testcases-create-link-display' --> 'create' | -- 'testcases-create-link-display' --> 'create' | ||
--]=] | --]=] | ||
| Baris 597: | Baris 602: | ||
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 | ||
| Baris 621: | Baris 635: | ||
local sbox = mw.html.create('div') | local sbox = mw.html.create('div') | ||
sbox | sbox | ||
:addClass(message(' | -- 'documentation-startbox' | ||
:tag(' | :addClass(message('start-box-class')) | ||
:addClass( | :newline() | ||
:tag('span') | |||
:addClass(data.headingClass) | |||
: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) | |||
end | end | ||
return tostring(sbox) | return tostring(sbox) | ||
| Baris 650: | Baris 666: | ||
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' | |||
end | end | ||
| Baris 684: | Baris 696: | ||
-- @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 | ||
-- | |||
--]=] | --]=] | ||
| Baris 709: | Baris 722: | ||
end | end | ||
-- Assemble the | -- Assemble the link box. | ||
local text = '' | local text = '' | ||
if linkBox then | if linkBox then | ||
| Baris 719: | Baris 732: | ||
-- 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 />' | ||
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." | ||
| Baris 734: | Baris 746: | ||
end | end | ||
end | end | ||
local box = mw.html.create('div') | |||
-- 'documentation-metadata' | |||
box:addClass(message('end-box-class')) | |||
-- 'plainlinks' | |||
:addClass(message('end-box-plainlinks')) | |||
:wikitext(text) | |||
:done() | |||
return '\n' .. tostring(box) | |||
end | end | ||
| Baris 752: | Baris 768: | ||
-- '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 | ||
| Baris 768: | Baris 784: | ||
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}) | ||
| Baris 780: | Baris 796: | ||
-- /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}) | ||
| Baris 853: | Baris 869: | ||
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) | ||
| Baris 864: | Baris 883: | ||
local testcasesEditDisplay = message('testcases-edit-link-display') | local testcasesEditDisplay = message('testcases-edit-link-display') | ||
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) | local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) | ||
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) | -- for Modules, add testcases run link if exists | ||
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 | ||