۳۳٬۷۴۹
ویرایش
جز (role=note for end box) |
جز (۱ نسخه واردشده) |
||
خط ۱: | خط ۱: | ||
-- برای فارسیسازی بهتر، بعضی از قسمتهای این پودمان تغییر کردهاست. لطفاً هنگام بهروزرسانی به توضیحات پودمان توجه کنید. | |||
-- This module implements {{documentation}}. | -- This module implements {{documentation}}. | ||
-- 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. | ||
خط ۳۲: | خط ۳۴: | ||
expectType = expectType or 'string' | expectType = expectType or 'string' | ||
if type(msg) ~= expectType then | if type(msg) ~= expectType then | ||
error(' | error('پیام: خطای نوع در متن cfg.' .. cfgKey .. ' (' .. expectType .. ' انتظار میرفت، ' .. type(msg) .. ' بدست آمد)', 2) | ||
end | end | ||
if not valArray then | if not valArray then | ||
خط ۴۰: | خط ۴۲: | ||
local function getMessageVal(match) | local function getMessageVal(match) | ||
match = tonumber(match) | match = tonumber(match) | ||
return valArray[match] or error(' | -- برای فارسیسازی بهتر، ساختار خطای نمایشی خط زیر تغییر کردهاست | ||
return valArray[match] or error('پیام: هیچ مقداری برای کلید $' .. match .. ' در متن cfg.' .. cfgKey .. ' یافت نشد', 4) | |||
end | end | ||
local ret = ugsub(msg, '$([1-9][0-9]*)', getMessageVal) | |||
return ret | |||
end | end | ||
خط ۸۰: | خط ۸۴: | ||
ret[#ret + 1] = select(i, ...) | ret[#ret + 1] = select(i, ...) | ||
end | end | ||
return '<small style="font-style: normal;">(' .. table.concat(ret, ' | ') .. ')</small>' | |||
return '< | |||
end | end | ||
خط ۱۱۲: | خط ۱۱۴: | ||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
-- | -- Main function | ||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
p.main = makeInvokeFunc('_main') | p.main = makeInvokeFunc('_main') | ||
خط ۱۲۹: | خط ۱۲۳: | ||
-- 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) | ||
خط ۱۳۶: | خط ۱۳۴: | ||
: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') | ||
-- ' | :attr('id', message('main-div-id')) | ||
:addClass(message(' | :addClass(message('main-div-classes')) | ||
:newline() | :newline() | ||
:wikitext(p._startBox(args, env)) | |||
:wikitext(p._content(args, env)) | |||
:tag('div') | :tag('div') | ||
:css('clear', 'both') -- So right or left floating items don't stick out of the doc box. | |||
: | |||
:newline() | :newline() | ||
:done() | :done() | ||
:done() | :done() | ||
:wikitext(p._endBox(args, env)) | |||
:wikitext(p.addTrackingCategories(env)) | :wikitext(p.addTrackingCategories(env)) | ||
return tostring(root) | |||
return | |||
end | end | ||
خط ۱۶۷: | خط ۱۵۸: | ||
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 objects and other namespace- or | ||
-- path-related data. | |||
-- @args - table of arguments passed by the user | -- @args - table of arguments passed by the user | ||
-- | -- | ||
خط ۲۹۳: | خط ۲۸۴: | ||
function envFuncs.docSpace() | function envFuncs.docSpace() | ||
-- The documentation namespace number. For most namespaces this is the | -- The documentation namespace number. For most namespaces this is the same as the | ||
-- | -- subject namespace. However, pages in the Article, File, 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 | ||
خط ۳۲۱: | خط ۳۱۱: | ||
if templateTitle.exists and sandboxTitle.exists then | if templateTitle.exists and sandboxTitle.exists then | ||
local compareUrl = mw.uri.fullUrl( | local compareUrl = mw.uri.fullUrl( | ||
' | 'ویژه:مقایسهٔ صفحات', | ||
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} | {page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} | ||
) | ) | ||
return tostring(compareUrl) | return tostring(compareUrl) | ||
خط ۳۳۶: | خط ۳۲۶: | ||
-- Auxiliary templates | -- Auxiliary templates | ||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') | p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') | ||
خط ۳۷۱: | خط ۳۶۰: | ||
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 | ||
خط ۴۰۲: | خط ۳۹۰: | ||
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') | ||
خط ۴۱۵: | خط ۴۰۳: | ||
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 | |||
local ret = '<div style="clear: both;"></div>' | |||
ret = ret .. messageBox.main('ombox', omargs) | |||
return ret | |||
end | end | ||
خط ۴۲۸: | خط ۴۱۶: | ||
-- 'protection-template' --> 'pp-template' | -- 'protection-template' --> 'pp-template' | ||
-- 'protection-template-args' --> {docusage = 'yes'} | -- 'protection-template-args' --> {docusage = 'yes'} | ||
local protectionLevels = env.protectionLevels | local protectionLevels, mProtectionBanner | ||
local title = env.title | |||
protectionLevels = env.protectionLevels | |||
if not protectionLevels then | if not protectionLevels then | ||
return nil | return nil | ||
خط ۴۳۶: | خط ۴۲۶: | ||
if editProt then | if editProt then | ||
-- The page is edit-protected. | -- The page is edit-protected. | ||
mProtectionBanner = require('Module:Protection banner') | |||
local reason = message('protection-reason-edit') | |||
return mProtectionBanner._main{reason, small = true} | |||
elseif moveProt and moveProt ~= 'autoconfirmed' then | elseif moveProt and moveProt ~= 'autoconfirmed' then | ||
-- The page is move-protected but not edit-protected. Exclude move | -- The page is move-protected but not edit-protected. Exclude move | ||
-- protection with the level "autoconfirmed", as this is equivalent to | -- protection with the level "autoconfirmed", as this is equivalent to | ||
-- no move protection at all. | -- no move protection at all. | ||
mProtectionBanner = require('Module:Protection banner') | |||
return mProtectionBanner._main{action = 'move', small = true} | |||
else | else | ||
return nil | return nil | ||
خط ۴۷۰: | خط ۴۵۹: | ||
local links | local links | ||
local content = args.content | local content = args.content | ||
if not content | if not content 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) | ||
خط ۵۰۸: | خط ۴۹۷: | ||
if not title or not docTitle then | if not title or not docTitle then | ||
return nil | return nil | ||
end | end | ||
خط ۵۸۳: | خط ۵۶۹: | ||
-- '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' | ||
--]=] | --]=] | ||
خط ۶۱۵: | خط ۶۰۳: | ||
if headingStyle then | if headingStyle then | ||
data.headingStyleText = headingStyle | data.headingStyleText = headingStyle | ||
elseif subjectSpace == 10 then | |||
-- We are in the template or template talk namespaces. | |||
data.headingFontWeight = 'bold' | |||
data.headingFontSize = '125%' | |||
else | else | ||
data.headingFontSize = '150%' | |||
data. | |||
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 | ||
data.linksClass = message('start-box-linkclasses') | |||
data. | data.linksId = message('start-box-link-id') | ||
data.links = links | data.links = links | ||
end | end | ||
خط ۶۳۵: | خط ۶۲۶: | ||
local sbox = mw.html.create('div') | local sbox = mw.html.create('div') | ||
sbox | sbox | ||
-- ' | :css('padding-bottom', '3px') | ||
: | :css('border-bottom', '1px solid #aaa') | ||
:css('margin-bottom', '1ex') | |||
:newline() | :newline() | ||
:tag('span') | :tag('span') | ||
:cssText(data.headingStyleText) | :cssText(data.headingStyleText) | ||
:css('font-weight', data.headingFontWeight) | |||
:css('font-size', data.headingFontSize) | |||
:wikitext(data.heading) | :wikitext(data.heading) | ||
local links = data.links | local links = data.links | ||
خط ۶۹۷: | خط ۶۹۰: | ||
-- @env - environment table containing title objects, etc., generated with p.getEnvironment | -- @env - environment table containing title objects, etc., generated with p.getEnvironment | ||
-- | -- | ||
-- Messages: | |||
-- 'fmbox-id' --> 'documentation-meta-data' | |||
-- 'fmbox-style' --> 'background-color: #ecfcf4' | |||
-- 'fmbox-textstyle' --> 'font-style: italic' | |||
-- | |||
-- The HTML is generated by the {{fmbox}} template, courtesy of [[Module:Message box]]. | |||
--]=] | --]=] | ||
خط ۷۲۲: | خط ۷۲۱: | ||
end | end | ||
-- Assemble the | -- Assemble the arguments for {{fmbox}}. | ||
local fmargs = {} | |||
fmargs.id = message('fmbox-id') -- Sets 'documentation-meta-data' | |||
fmargs.image = 'none' | |||
fmargs.style = message('fmbox-style') -- Sets 'background-color: #ecfcf4' | |||
fmargs.textstyle = message('fmbox-textstyle') -- 'font-style: italic;' | |||
-- Assemble the fmbox text field. | |||
local text = '' | local text = '' | ||
if linkBox then | if linkBox then | ||
خط ۷۳۲: | خط ۷۳۸: | ||
-- 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 '') .. '<br />' | text = text .. (p.makeExperimentBlurb(args, env) or '') | ||
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." | ||
خط ۷۴۶: | خط ۷۵۳: | ||
end | end | ||
end | end | ||
fmargs.text = text | |||
return ' | return messageBox.main('fmbox', fmargs) | ||
end | end | ||
خط ۷۷۰: | خط ۷۶۹: | ||
-- 'transcluded-from-blurb' --> | -- 'transcluded-from-blurb' --> | ||
-- 'The above [[Wikipedia:Template documentation|documentation]] | -- 'The above [[Wikipedia:Template documentation|documentation]] | ||
-- is [[ | -- is [[Wikipedia: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' | ||
خط ۸۸۵: | خط ۸۸۴: | ||
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) | local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) | ||
-- for Modules, add testcases run link if exists | -- for Modules, add testcases run link if exists | ||
if | if subjectSpace == 828 and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then | ||
local testcasesRunLinkDisplay = message('testcases-run-link-display') | local testcasesRunLinkDisplay = message('testcases-run-link-display') | ||
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) | local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) | ||
خط ۹۵۶: | خط ۹۵۵: | ||
end | end | ||
local subpagesLink = makeWikilink( | local subpagesLink = makeWikilink( | ||
' | 'ویژه:نمایه پیشوندی/' .. templateTitle.prefixedText .. '/', | ||
message('subpages-link-display', {pagetype}) | message('subpages-link-display', {pagetype}) | ||
) | ) |