Difference between revisions 51768 and 51769 on wikimaniawiki-- This module implements {{documentation}}. ---------------------------------------------------------------------------- -- Configuration ---------------------------------------------------------------------------- -- Here you can set the values of the parameters and messages used in this module, so that it -- can be easily ported to other wikis. local cfg = {} -- Argument names -- The following are all names of arguments that affect the behaviour of {{documentation}}. -- The comments next to the configuration values are the effects that the argument has -- on the module. (Not the effects of the argument names themselves.) cfg.livepageArg = 'livepage' -- Name of the live template; used in {{template sandbox notice}}. cfg.headingArg = 'heading' -- Custom heading used in the start box. cfg.preloadArg = 'preload' -- Custom preload page for creating documentation. cfg.headingStyleArg = 'heading-style' -- Custom CSS style for the start box heading. cfg.contentArg = 'content' -- Passes documentation content directly from the {{documentation}} invocation. cfg.linkBoxArg = 'link box' -- Specifies a custom link box (end box) or prevents it from being generated. -- Software settings -- The following are software settings that may change from wiki to wiki. For example, the classes -- defined in commons.css or the names of templates.⏎ Argument values -- The following are argument values that are checked by the module. cfg.linkBoxOff = 'off' -- The value to send to cfg.linkBoxArg to turn the link box off. -- Software settings -- The following are software settings that may change from wiki to wiki. For example, the classes -- defined in commons.css or the names of templates. cfg.docSubpage = 'doc' -- The name of the subpage typically used for documentation pages. cfg.sandboxSubpage = 'sandbox' -- The name of the template subpage typically used for sandboxes. cfg.testcasesSubpage = 'testcases' -- The name of the template subpage typically used for test cases. cfg.mainDivId = 'template-documentation' -- The "id" attribute of the main HTML "div" tag. cfg.mainDivClasses = 'template-documentation iezoomfix' -- The CSS classes added to the main HTML "div" tag. cfg.sandboxSubpage = 'sandbox' -- The name of the template subpage typically used for sandboxes.⏎ cfg.sandboxNoticeTemplate = 'template sandbox notice' -- The name of the template to display at the top of sandbox pages. cfg.sandboxNoticeLivepageParam = 1 -- The parameter of the sandbox notice template to send the cfg.livepageArg to. 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.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 -- The following settings configure the values displayed by the module. 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 "sandboxSettings for the {{fmbox}} template. cfg.fmboxIdParam = 'id' -- The name of the "id" parameter of {{fmbox}}. cfg.fmboxId = 'documentation-meta-data' -- The id sent to the "id" parameter of the {{fmbox}} template. cfg.fmboxImageParam = 'image' -- The name of the "image" parameter of {{fmbox}}. cfg.fmboxImageNone = 'none' -- The value to suppress image output from the "image" parameter of {{fmbox}}. cfg.fmboxStyleParam = 'style' -- The name of the "style" parameter of {{fmbox}}. cfg.fmboxStyle = 'background-color: #ecfcf4' -- The value sent to the style parameter of {{fmbox}}. cfg.fmboxTextstyleParam = 'textstyle' -- The name of the "textstyle" parameter of {{fmbox}}. cfg.fmboxTextstyle = 'font-style: italic;' -- The value send to the "textstyle parameter of {{fmbox}}. -- Display settings -- The following settings configure the values displayed by the module. 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.sandboxEditLinkDisplay = 'edit' -- The text to display for sandbox "edit" links. cfg.sandboxCreateLinkDisplay = 'create' -- The text to display for sandbox "create" links. cfg.compareLinkDisplay = 'diff' -- The text to display for "compare" links. cfg.mirrorLinkDisplay = 'mirror' -- The text to display for "mirror" links. cfg.testcasesLinkDisplay = 'testcases' -- The text to display for "testcases" links. cfg.testcasesEditLinkDisplay = 'edit' -- The text to display for test cases "edit" links. cfg.testcasesCreateLinkDisplay = 'create' -- The text to display for test cases "create" 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. (contracted; show full) else docpage = docpageRoot .. '/' .. cfg.docSubpage end local docTitle = mw.title.new(docpage) local docExist = docTitle.exists local docnameFed = args[1] and true local sandbox = docpageRoot .. '/' .. cfg.sandboxSubpage local testcases = docpageRoot .. '/ ' .. cfg.testcases'Subpage templatePage = currentTitle.nsText .. ':' .. templatePage -- Output from {{documentation/end box}} -- First, check whether we should output the end box at all. Add the end box by default if the documentation -- exists or if we are in the user, module or template namespaces. if linkBox == 'ocfg.linkBoxOff' or not (docExist or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10) then return nil end -- Assemble the arguments for {{fmbox}}. local fmargs = {} fmargs.id = 'documentation-meta-data' fmargs.image = 'none' fmargs.style = 'background-color: #ecfcf4'⏎ [cfg.fmboxIdParam] = cfg.fmboxId -- Sets fmargs.id = 'documentation-meta-data' fmargs[cfg.fmboxImageParam] = cfg.fmboxImageNone -- Sets fmargs.image = 'none' fmargs[cfg.fmboxStyleParam] = cfg.fmboxStyle -- Sets fmargs.style = 'background-color: #ecfcf4' fmargs[cfg.fmboxTextstyleParam] = cfg.fmboxTextstyle -- Sets fmargs.textstyle = 'font-style: italic;' -- Assemble the fmbox text field. local text = '' if linkBox then -- Use custom link box content if it is defined. text = text .. linkBox else if docExist then -- /doc exists; link to it. local docLink = makeWikilink(docpage) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, 'edit'cfg.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, 'cfg.history'LinkDisplay) text = text .. 'The above [[Wikipedia:Template documentation|documentation]] is [[Wikipedia:Transclusion|transcluded]] from ' .. docLink .. '. ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif subjectSpace == 828 then -- /doc does not exist; ask to create it. local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = 'Template:Documentation/preload-module-doc'}, 'cfg.create'LinkDisplay) text = text .. 'You might want to ' .. createLink .. ' a documentation page for this [[Wikipedia:Lua|Scribunto module]].<br />' end -- Add links to /sandbox and /testcases when appropriate. if subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 then -- We are in the user, module or template namespaces. local pagePossessive = subjectSpace == 828 and "module's" or "template's" text = text .. 'Editors can experiment in this ' .. pagePossessive .. ' ' local sandboxTitle = mw.title.new(sandbox) if sandboxTitle.exists then local sandboxLink = makeWikilink(sandbox, cfg.sandboxLinkDisplay) local sandboxEditLink = makeUrlLink(sandboxTitle:fullUrl{action = 'edit'}, 'edit'cfg.sandboxEditLinkDisplay) local compareLink = makeUrlLink(mw.title.new('Special:ComparePages'):fullUrl{page1 = templatePage, page2 = sandbox}, 'diff'cfg.compareLinkDisplay) text = text .. sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload = 'Template:Documentation/preload-' .. (subjectSpace == 828 and 'module-' or '') .. 'sandbox' local sandboxCreateLink = makeUrlLink(sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}, 'create'cfg.sandboxCreateLinkDisplay) local mirrorSummary = 'Create sandbox version of ' .. makeWikilink(templatePage) local mirrorLink = makeUrlLink(sandboxTitle:fullUrl{action = 'edit', preload = templatePage, summary = mirrorSummary}, 'cfg.mirror'LinkDisplay) text = text .. cfg.sandboxLinkDisplay .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end text = text .. ' and ' local testcaseTitle = mw.title.new(testcases) if testcaseTitle.exists then local testcasesLink = makeWikilink(testcases, 'cfg.testcases'LinkDisplay) local testcasesEditLink = makeUrlLink(testcaseTitle:fullUrl{action = 'edit'}, 'edit'cfg.testcasesEditLinkDisplay) text = text .. testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) else local testcasesPreload = 'Template:Documentation/preload-' .. (subjectSpace == 828 and 'module-' or '') .. 'testcases' local testcasesCreateLink = makeUrlLink(testcaseTitle:fullUrl{action = 'edit', preload = testcasesPreload}, 'create'cfg.testcasesCreateLinkDisplay) text = text .. 'cfg.testcasesLinkDisplay .. ' ' .. makeToolbar(testcasesCreateLink) end text = text .. ' pages. <br />' -- 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 text = text .. 'Please add categories to the ' .. makeWikilink(docpage, '/' .. cfg.docSubpage) .. ' subpage.' end -- Show the "subpages" link. (contracted; show full) return messageBox.main('fmbox', fmargs) end function p.addTrackingCategories() -- Check if {{documentation}} is transcluded on a /doc or /testcases page. local ret = '' local subpage = currentTitle.subpageText if subpage == cfg.docSubpage or subpage == 'cfg.testcases'Subpage then local sort = (currentTitle.namespace == 0 and 'Main:' or '') .. currentTitle.prefixedText -- Sort on namespace. ret = ret .. makeWikilink('Category:Wikipedia pages with strange ((documentation)) usage', sort) end return ret end function p.docspace() -- Determines the namespace of the documentation. if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then -- Pages in the Article, File, MediaWiki or Category namespaces must have their -- /doc, /sandbox and /testcases pages in talk space. return mw.site.namespaces[subjectSpace].talk.name else return currentTitle.subjectNsText end end function p.templatePage() -- Determines the template page. No namespace or interwiki prefixes are included. local subpage = currentTitle.subpageText if subpage == cfg.sandboxSubpage or subpage == 'cfg.testcases'Subpage then return currentTitle.baseText else return currentTitle.text end end return p All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://wikimania.wikimedia.org/w/index.php?diff=prev&oldid=51769.
![]() ![]() This site is not affiliated with or endorsed in any way by the Wikimedia Foundation or any of its affiliates. In fact, we fucking despise them.
|