×
Create a new article
Write your page title here:
We currently have 230 articles on Farthest Frontier. Type your article name above or create one of the articles listed here!



    Farthest Frontier

    Module:Documentation: Difference between revisions

    Content added Content deleted
    (updating module documentation)
    (replacing documentation module with code from MH Meta)
    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 32: Line 33:
    expectType = expectType or 'string'
    expectType = expectType or 'string'
    if type(msg) ~= expectType then
    if type(msg) ~= expectType then
    error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
    error(require('Module:TNT').format('I18n/Documentation', 'cfg-error-msg-type', cfgKey, expectType, type(msg)), 2)
    end
    end
    if not valArray then
    if not valArray then
    Line 40: Line 41:
    local function getMessageVal(match)
    local function getMessageVal(match)
    match = tonumber(match)
    match = tonumber(match)
    return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
    return valArray[match] or error(require('Module:TNT').format('I18n/Documentation', 'cfg-error-msg-empty', '$' .. match, cfgKey), 4)
    end
    end


    return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
    local ret = ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
    return ret
    end
    end


    Line 80: Line 82:
    ret[#ret + 1] = select(i, ...)
    ret[#ret + 1] = select(i, ...)
    end
    end
    return '<small>(' .. table.concat(ret, ' &#124; ') .. ')</small>'
    -- 'documentation-toolbar'
    return '<span class="' .. message('toolbar-class') .. '">('
    .. table.concat(ret, ' &#124; ') .. ')</span>'
    end
    end


    Line 112: Line 112:


    ----------------------------------------------------------------------------
    ----------------------------------------------------------------------------
    -- Load TemplateStyles
    -- Entry points
    ----------------------------------------------------------------------------
    ----------------------------------------------------------------------------


    function p.nonexistent(frame)
    p.main = function(frame)
    local parent = frame.getParent(frame)
    if mw.title.getCurrentTitle().subpageText == 'testcases' then
    local output = p._main(parent.args)
    return frame:expandTemplate{title = 'module test cases notice'}
    return frame:extensionTag{ name='templatestyles', args = { src= message('templatestyles-scr') } } .. output
    else
    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')
    :attr('id', message('main-div-id'))
    -- 'documentation-container'
    :addClass(message('container'))
    :addClass(message('main-div-class'))
    :wikitext(p._startBox(args, env))
    :attr('role', 'complementary')
    :wikitext(p._content(args, env))
    :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil)
    :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))
    return tostring(root)
    -- 'Module:Documentation/styles.css'
    return mw.getCurrentFrame():extensionTag (
    'templatestyles', '', {src=cfg['templatestyles']
    }) .. tostring(root)
    end
    end


    Line 170: Line 158:
    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
    --
    --
    Line 180: Line 168:
    -- 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 273: Line 262:
    --]]
    --]]
    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 286: Line 284:


    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
    Line 315: Line 312:
    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 329: Line 326:
    -- 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 349: Line 334:
    --
    --
    -- Messages:
    -- Messages:
    -- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]'
    -- 'sandbox-notice-image' --> '[[Image: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' --> '[[Wikipedia:Template test cases|template sandbox]] page'
    -- 'sandbox-notice-pagetype-template' --> '[[w:Wikipedia:Template test cases|template sandbox]] page'
    -- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page'
    -- 'sandbox-notice-pagetype-module' --> '[[w: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 364: Line 349:
    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
    Line 374: Line 358:
    -- "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 384: Line 370:
    local templateLink = makeWikilink(templateTitle.prefixedText)
    local templateLink = makeWikilink(templateTitle.prefixedText)
    local compareUrl = env.compareUrl
    local compareUrl = env.compareUrl
    if compareUrl then
    if isPreviewing or not 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 408: Line 394:
    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

    omargs.class = message('sandbox-class')
    -- 'documentation-clear'
    return '<div class="' .. message('clear') .. '"></div>'
    return messageBox.main('ombox', omargs)
    .. require('Module:Message box').main('ombox', omargs)
    end
    end


    Line 421: Line 406:
    -- 'protection-template' --> 'pp-template'
    -- 'protection-template' --> 'pp-template'
    -- 'protection-template-args' --> {docusage = 'yes'}
    -- 'protection-template-args' --> {docusage = 'yes'}
    local protectionLevels = env.protectionLevels
    local title = env.title
    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 editProt = protectionLevels.edit and protectionLevels.edit[1]
    local editLevels = protectionLevels.edit
    local moveProt = protectionLevels.move and protectionLevels.move[1]
    local moveLevels = protectionLevels.move
    if moveLevels and moveLevels[1] == 'sysop' or editLevels and editLevels[1] then
    if editProt then
    -- The page is edit-protected.
    -- The page is full-move protected, or full, template, or semi-protected.
    local frame = mw.getCurrentFrame()
    return require('Module:Protection banner')._main{
    message('protection-reason-edit'), small = true
    return frame:expandTemplate{title = protectionTemplate, args = message('protection-template-args', nil, 'table')}
    }
    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 463: Line 448:
    local links
    local links
    local content = args.content
    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)
    Line 491: Line 476:
    -- '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 509: Line 495:
    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('view-link-display')
    data.viewLinkDisplay = i18n['view-link-display']
    data.editLinkDisplay = message('edit-link-display')
    data.editLinkDisplay = i18n['edit-link-display']
    data.historyLinkDisplay = message('history-link-display')
    data.historyLinkDisplay = i18n['history-link-display']
    data.purgeLinkDisplay = message('purge-link-display')
    data.purgeLinkDisplay = i18n['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 == 828 then -- Module namespace
    if subjectSpace == 6 then -- File namespace
    preload = message('file-docpage-preload')
    elseif subjectSpace == 828 then -- Module namespace
    preload = message('module-preload')
    preload = message('module-preload')
    else
    else
    Line 523: Line 511:
    end
    end
    data.preload = preload
    data.preload = preload
    data.createLinkDisplay = message('create-link-display')
    data.createLinkDisplay = i18n['create-link-display']
    return data
    return data
    end
    end
    Line 529: Line 517:
    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
    --]]
    --]]
    Line 535: Line 523:
    local function escapeBrackets(s)
    local function escapeBrackets(s)
    -- Escapes square brackets with HTML entities.
    -- Escapes square brackets with HTML entities.
    s = s:gsub('%[', '&#91;') -- Replace square brackets with HTML entities.
    s = s:gsub('%]', '&#93;')
    return s
    return s
    :gsub('%[', '&#91;') -- Replace square brackets with HTML entities.
    :gsub('%]', '&#93;')
    end
    end


    Line 543: Line 531:
    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 553: Line 541:
    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
    Line 568: Line 556:
    --
    --
    -- 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=Documentation icon]]'
    -- '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 592: Line 582:
    data.heading = heading
    data.heading = heading
    elseif subjectSpace == 10 then -- Template namespace
    elseif subjectSpace == 10 then -- Template namespace
    data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
    data.heading = i18n['template-namespace-heading']
    elseif subjectSpace == 828 then -- Module namespace
    elseif subjectSpace == 828 then -- Module namespace
    data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
    data.heading = i18n['module-namespace-heading']
    elseif subjectSpace == 6 then -- File namespace
    elseif subjectSpace == 6 then -- File namespace
    data.heading = message('file-namespace-heading')
    data.heading = i18n['file-namespace-heading']
    else
    else
    data.heading = message('other-namespaces-heading')
    data.heading = i18n['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
    data.linksClass = message('start-box-linkclasses')
    -- 'mw-editsection-like plainlinks'
    data.linksClass = message('start-box-link-classes')
    data.linksId = message('start-box-link-id')
    data.links = links
    data.links = links
    end
    end
    Line 625: Line 606:
    local sbox = mw.html.create('div')
    local sbox = mw.html.create('div')
    sbox
    sbox
    :addClass(message('header-div-class'))
    -- 'documentation-startbox'
    :tag('div')
    :addClass(message('start-box-class'))
    :addClass(message('heading-div-class'))
    :newline()
    :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:tag('span')
    sbox
    :addClass(data.linksClass)
    :tag('div')
    :attr('id', data.linksId)
    :addClass(data.linksClass)
    :attr('id', data.linksId)
    :wikitext(links)
    :wikitext(links)
    end
    end
    return tostring(sbox)
    return tostring(sbox)
    Line 657: Line 635:
    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.prefixedText}
    content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle}
    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.
    local cbox = mw.html.create('div')
    return '\n' .. (content or '') .. '\n'
    cbox
    :addClass(message('content-div-class'))
    :wikitext('\n' .. (content or '') .. '\n')
    return tostring(cbox)
    end
    end


    Line 687: Line 669:
    -- @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 713: Line 694:
    end
    end


    -- Assemble the link box.
    -- Assemble the footer text field.
    local text = ''
    local text = ''
    if linkBox then
    if linkBox then
    Line 723: Line 704:
    -- 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."
    Line 731: Line 713:
    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 box = mw.html.create('div')
    local ebox = mw.html.create('div')
    ebox
    -- 'documentation-metadata'
    :addClass(message('footer-div-class'))
    box:attr('role', 'note')
    :addClass(message('end-box-class'))
    -- 'plainlinks'
    :addClass(message('end-box-plainlinks'))
    :wikitext(text)
    :wikitext(text)
    return tostring(ebox)
    :done()

    return '\n' .. tostring(box)
    end
    end


    Line 756: Line 737:
    -- 'history-link-display' --> 'history'
    -- 'history-link-display' --> 'history'
    -- 'transcluded-from-blurb' -->
    -- 'transcluded-from-blurb' -->
    -- 'The above [[Wikipedia:Template documentation|documentation]]
    -- 'The above [[w:Wikipedia:Template documentation|documentation]]
    -- is [[Help:Transclusion|transcluded]] from $1.'
    -- is [[w: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'
    -- 'create-module-doc-blurb' -->
    -- 'create-module-doc-blurb' -->
    -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
    -- 'You might want to $1 a documentation page for this [[w:Wikipedia:Lua|Scribunto module]].'
    --]=]
    --]=]
    local docTitle = env.docTitle
    local docTitle = env.docTitle
    if not docTitle then
    if not docTitle or args.content then
    return nil
    return nil
    end
    end
    Line 772: Line 753:
    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('edit-link-display')
    local editDisplay = i18n['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('history-link-display')
    local historyDisplay = i18n['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 784: Line 765:
    -- /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 = message('create-link-display')
    local createDisplay = i18n['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 857: Line 838:
    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 871: Line 849:
    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
    Line 947: Line 918:
    )
    )
    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


    Cookies help us deliver our services. By using our services, you agree to our use of cookies.
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.