Module:Documentation: Difference between revisions

    m>Mr. Stradivarius
    (internationalise the protection template code)
    m>Mr. Stradivarius
    (finish i18n for the startBox function)
    Line 33: Line 33:
    cfg.protectionTemplate = 'pp-template' -- The name of the template that displays the protection icon (a padlock on enwiki).
    cfg.protectionTemplate = 'pp-template' -- The name of the template that displays the protection icon (a padlock on enwiki).
    cfg.protectionTemplateArgs = {docusage = 'yes'} -- Any arguments to send to the protection template.
    cfg.protectionTemplateArgs = {docusage = 'yes'} -- Any arguments to send to the protection template.
    cfg.docSubpage = 'doc' -- The name of the subpage typically used for documentation pages.
    cfg.startBoxLinkclasses = 'mw-editsection plainlinks' -- The CSS classes used for the [view][edit][history] or [create] links in the start box.
    cfg.startBoxLinkId = 'doc_editlinks' -- The HTML "id" attribute for the links in the start box.
    cfg.fileDocpagePreload = 'Template:Documentation/preload-filespace' -- A preload file for documentation page in the file namespace.
    cfg.docpagePreload = 'Template:Documentation/preload-filespace' -- A preload file for template documentation pages in all namespaces.


    -- Display settings
    -- Display settings
    -- The following settings configure the values displayed by the module.
    -- The following settings configure the values displayed by the module.


    cfg.sandboxLinkDisplay = 'sandbox'
    cfg.viewLinkDisplay = 'view' -- The text to display for "view" links.
    cfg.editLinkDisplay = 'edit' -- The text to display for "edit" links.
    cfg.historyLinkDisplay = 'history' -- The text to display for "history" links.
    cfg.purgeLinkDisplay = 'purge' -- The text to display for "purge" links.
    cfg.createLinkDisplay = 'create' -- The text to display for "create" links.
    cfg.sandboxLinkDisplay = 'sandbox' -- The text to display for "sandbox" links.
    cfg.documentationIconWikitext = '[[File:Template-info.png|50px|link=|alt=Documentation icon]]' -- The wikitext for the icon shown at the top of the template.
    cfg.templateNamespaceHeading = 'Template documentation' -- The heading shown in the template namespace.
    cfg.moduleNamespaceHeading = 'Module documentation' -- The heading shown in the module namespace.
    cfg.fileNamespaceHeading = 'Summary' -- The heading shown in the file namespace.
    cfg.otherNamespacesHeading = 'Documentation' -- The heading shown in other namespaces.


    ----------------------------------------------------------------------------
    ----------------------------------------------------------------------------
    Line 191: Line 206:
    local namespace = docspace or currentTitle.nsText
    local namespace = docspace or currentTitle.nsText
    local pagename = templatePage or currentTitle.text
    local pagename = templatePage or currentTitle.text
    docpage = namespace .. ':' .. pagename .. '/doc'
    docpage = namespace .. ':' .. pagename .. '/' .. cfg.docSubpage
    end
    end
    local docTitle = mw.title.new(docpage)
    local docTitle = mw.title.new(docpage)
    Line 227: Line 242:
    hspan.wikitext(heading)
    hspan.wikitext(heading)
    elseif subjectSpace == 10 then -- Template namespace
    elseif subjectSpace == 10 then -- Template namespace
    hspan.wikitext('[[File:Template-info.png|50px|link=|alt=Documentation icon]] Template documentation')
    hspan.wikitext(cfg.documentationIconWikitext .. ' ' .. cfg.templateNamespaceHeading)
    elseif subjectSpace == 828 then -- Module namespace
    elseif subjectSpace == 828 then -- Module namespace
    hspan.wikitext('[[File:Template-info.png|50px|link=|alt=Documentation icon]] Module documentation')
    hspan.wikitext(cfg.documentationIconWikitext .. ' ' .. cfg.moduleNamespaceHeading)
    elseif subjectSpace == 6 then -- File namespace
    elseif subjectSpace == 6 then -- File namespace
    hspan.wikitext('Summary')
    hspan.wikitext(cfg.fileNamespaceHeading)
    else
    else
    hspan.wikitext('Documentation')
    hspan.wikitext(cfg.otherNamespaceHeading)
    end
    end


    Line 242: Line 257:
    local lspan = sbox.tag('span') -- lspan is short for "link span".
    local lspan = sbox.tag('span') -- lspan is short for "link span".
    lspan
    lspan
    .addClass('mw-editsection plainlinks')
    .addClass(cfg.startBoxLinkclasses)
    .attr('id', 'doc_editlinks')
    .attr('id', cfg.startBoxLinkId)
    if docExist then
    if docExist then
    local viewLink = makeWikilink(docpage, 'view')
    local viewLink = makeWikilink(docpage, cfg.viewLinkDisplay)
    local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, 'edit')
    local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, cfg.editLinkDisplay)
    local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, 'history')
    local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, cfg.historyLinkDisplay)
    local purgeLink = makeUrlLink(docTitle:fullUrl{action = 'purge'}, 'purge')
    local purgeLink = makeUrlLink(docTitle:fullUrl{action = 'purge'}, cfg.purgeLinkDisplay)
    local text = '[%s] [%s] [%s] [%s]'
    local text = '[%s] [%s] [%s] [%s]'
    text = text:gsub('%[', '[') -- Replace square brackets with HTML entities.
    text = text:gsub('%[', '[') -- Replace square brackets with HTML entities.
    Line 256: Line 271:
    if not preload then
    if not preload then
    if subjectSpace == 6 then -- File namespace
    if subjectSpace == 6 then -- File namespace
    preload = 'Template:Documentation/preload-filespace'
    preload = cfg.fileDocpagePreload
    else
    else
    preload = 'Template:Documentation/preload'
    preload = cfg.docpagePreload
    end
    end
    end
    end
    lspan.wikitext(makeUrlLink(docTitle:fullUrl{action = 'edit', preload = preload}, 'create'))
    lspan.wikitext(makeUrlLink(docTitle:fullUrl{action = 'edit', preload = preload}, cfg.createLinkDisplay))
    end
    end
    end
    end
    Line 278: Line 293:
    content = frame:preprocess('{{ ' .. docpage .. ' }}')
    content = frame:preprocess('{{ ' .. docpage .. ' }}')
    else
    else
    docpage = p.docspace() .. ':' .. p.templatePage() .. '/doc'
    docpage = p.docspace() .. ':' .. p.templatePage() .. '/' .. cfg.docSubpage
    if mw.title.new(docpage).exists then
    if mw.title.new(docpage).exists then
    local frame = mw.getCurrentFrame()
    local frame = mw.getCurrentFrame()
    Line 306: Line 321:
    docpage = docname
    docpage = docname
    else
    else
    docpage = docpageRoot .. '/doc'
    docpage = docpageRoot .. '/' .. cfg.docSubpage
    end
    end
    local docTitle = mw.title.new(docpage)
    local docTitle = mw.title.new(docpage)
    Line 380: Line 395:
    -- Show the categories text, but not if "content" fed or "docname fed" since then it is unclear where to add the categories.
    -- Show the categories text, but not if "content" fed or "docname fed" since then it is unclear where to add the categories.
    if not content and not docnameFed then
    if not content and not docnameFed then
    text = text .. 'Please add categories to the ' .. makeWikilink(docpage, '/doc') .. ' subpage.'
    text = text .. 'Please add categories to the ' .. makeWikilink(docpage, '/' .. cfg.docSubpage) .. ' subpage.'
    end
    end
    -- Show the "subpages" link.
    -- Show the "subpages" link.
    Line 414: Line 429:
    local ret = ''
    local ret = ''
    local subpage = currentTitle.subpageText
    local subpage = currentTitle.subpageText
    if subpage == 'doc' or subpage == 'testcases' then
    if subpage == cfg.docSubpage or subpage == 'testcases' then
    local sort = (currentTitle.namespace == 0 and 'Main:' or '') .. currentTitle.prefixedText -- Sort on namespace.
    local sort = (currentTitle.namespace == 0 and 'Main:' or '') .. currentTitle.prefixedText -- Sort on namespace.
    ret = ret .. makeWikilink('Category:Wikipedia pages with strange ((documentation)) usage', sort)
    ret = ret .. makeWikilink('Category:Wikipedia pages with strange ((documentation)) usage', sort)