در حال ویرایش پودمان: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.
خط ۴۵: خط ۴۶:
end
end


return ugsub(msg, '$([1-9۱-۹][0-9۰-۹]*)', getMessageVal)
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
-- 'documentation-toolbar'
return '<small style="font-style: normal;">(' .. table.concat(ret, ' &#124; ') .. ')</small>'
return '<span class="' .. message('toolbar-class') .. '">('
.. table.concat(ret, ' &#124; ') .. ')</span>'
end
end


خط ۹۸: خط ۹۸:
valueFunc = function (key, value)
valueFunc = function (key, value)
if type(value) == 'string' then
if type(value) == 'string' then
value = mw.ustring.match(value, '^%s*(.-)%s*$') -- Remove whitespace.
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
if key == 'heading' or value ~= '' then
return value
return value
خط ۱۱۴: خط ۱۱۴:


----------------------------------------------------------------------------
----------------------------------------------------------------------------
-- Entry points
-- Main function
----------------------------------------------------------------------------
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'آزمایشی' then
return frame:expandTemplate{title = 'هشدار صفحه آزمایشی پودمان'}
else
return p.main(frame)
end
end


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')
-- 'documentation-container'
:attr('id', message('main-div-id'))
:addClass(message('container'))
:addClass(message('main-div-classes'))
:newline()
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
:tag('div')
-- 'documentation'
:css('clear', 'both') -- So right or left floating items don't stick out of the doc box.
: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()
:newline()
:done()
: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


خط ۱۶۹: خط ۱۵۸:
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
-- objects and other namespace- or path-related data.
-- path-related data.
-- @args - table of arguments passed by the user
-- @args - table of arguments passed by the user
--
--
خط ۱۷۹: خط ۱۶۸:
-- 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:
خط ۲۷۲: خط ۲۶۲:
--]]
--]]
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


خط ۲۸۵: خط ۲۸۴:


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
-- same as the subject namespace. However, pages in the Article, File,
-- subject namespace. However, pages in the Article, File, MediaWiki or Category
-- MediaWiki or Category namespaces must have their /doc, /sandbox and
-- 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
خط ۳۱۴: خط ۳۱۲:
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
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.contentModel == "Scribunto" then
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.
omargs.text = text .. makeCategoryLink(message('sandbox-category'))
text = text .. makeCategoryLink(message('sandbox-category'))
 
omargs.text = text
-- 'documentation-clear'
local ret = '<div style="clear: both;"></div>'
return '<div class="' .. message('clear') .. '"></div>'
ret = ret .. messageBox.main('ombox', omargs)
.. require('Module:Message box').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.
return require('Module:Protection banner')._main{
mProtectionBanner = require('Module:Protection banner')
message('protection-reason-edit'), small = true
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.
return require('Module:Protection banner')._main{
mProtectionBanner = require('Module:Protection banner')
action = 'move', small = true
return mProtectionBanner._main{action = 'move', small = true}
}
else
else
return nil
return nil
خط ۴۶۱: خط ۴۵۸:
env = env or p.getEnvironment(args)
env = env or p.getEnvironment(args)
local links
local links
local content = args.content or args['محتوا']
local content = args.content
if not content or args[1] then
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
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
end


خط ۵۳۱: خط ۵۲۵:
function p.renderStartBoxLinks(data)
function p.renderStartBoxLinks(data)
--[[
--[[
-- Generates the [view][edit][history][purge] or [create][purge] links from the data table.
-- Generates the [view][edit][history][purge] or [create] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
--]]
خط ۵۴۵: خط ۵۳۹:
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)
خط ۵۵۵: خط ۵۴۹:
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] [%s]'
ret = '[%s]'
ret = escapeBrackets(ret)
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, createLink, purgeLink)
ret = mw.ustring.format(ret, createLink)
end
end
return ret
return ret
خط ۵۷۵: خط ۵۶۹:
-- '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
-- 'documentation-heading'
data.headingFontSize = '150%'
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.linksClass = message('start-box-link-classes')
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
-- 'documentation-startbox'
:css('padding-bottom', '3px')
:addClass(message('start-box-class'))
:css('border-bottom', '1px solid #aaa')
:css('margin-bottom', '1ex')
:newline()
:newline()
:tag('span')
:tag('span')
:addClass(data.headingClass)
: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 = env or p.getEnvironment(args)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local docTitle = env.docTitle
local content = args.content or args['محتوا']
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.prefixedText}
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
خط ۶۷۰: خط ۶۷۱:
env = env or p.getEnvironment(args)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local docTitle = env.docTitle
if not (args.content or args['محتوا']) and docTitle and docTitle.exists then
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
return docTitle.prefixedText
else
else
خط ۶۸۹: خط ۶۹۰:
-- @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 link box.
-- 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 '')
if not (args.content or args['محتوا']) and not args[1] then
text = text .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- Don't show this message with inline docs or with an explicitly specified doc page,
خط ۷۳۲: خط ۷۴۷:
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
fmargs.text = text
local box = mw.html.create('div')
-- 'documentation-metadata'
box:attr('role', 'note')
:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()


return '\n' .. tostring(box)
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 [[Help:Transclusion|transcluded]] from $1.'
-- 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 testcasesTitle.contentModel == "Scribunto"  and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
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)
خط ۹۴۸: خط ۹۵۹:
)
)
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


لطفاً توجه داشته‌باشید که همهٔ مشارکت‌ها در ویکی حج منتشرشده تحت Creative Commons Attribution-NonCommercial-ShareAlike در نظر گرفته‌می‌شوند (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). اگر نمی‌خواهید نوشته‌هایتان بی‌رحمانه ویرایش و توزیع شوند؛ بنابراین، آنها را اینجا ارائه نکنید.
شما همچنین به ما تعهد می‌کنید که خودتان این را نوشته‌اید یا آن را از یک منبع با مالکیت عمومی یا مشابه آزاد آن برداشته‌اید (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). کارهای دارای حق تکثیر را بدون اجازه ارائه نکنید!
لغو راهنمای ویرایش‌کردن (در پنجرهٔ تازه باز می‌شود)

الگوی به‌کاررفته در این صفحه: