Module:Documentation: Difference between revisions
From Roses, Tulips, & Liberty
Content deleted Content added
add an entry point for MediaWiki:Scribunto-doc-page-does-not-exist to use |
merge templatestyles |
||
Line 3: | Line 3: | ||
-- Get required modules. |
-- Get required modules. |
||
local getArgs = require('Module:Arguments').getArgs |
local getArgs = require('Module:Arguments').getArgs |
||
⚫ | |||
-- Get the config table. |
-- Get the config table. |
||
Line 44: | Line 43: | ||
end |
end |
||
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) |
|||
return ret |
|||
end |
end |
||
Line 82: | Line 80: | ||
ret[#ret + 1] = select(i, ...) |
ret[#ret + 1] = select(i, ...) |
||
end |
end |
||
⚫ | |||
⚫ | |||
return '<span class="' .. message('toolbar-class') .. '">(' |
|||
⚫ | |||
end |
end |
||
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: |
|||
⚫ | |||
⚫ | |||
--]] |
--]] |
||
local env = p.getEnvironment(args) |
local env = p.getEnvironment(args) |
||
Line 140: | Line 136: | ||
: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') |
||
-- 'template-documentation-container' |
|||
⚫ | |||
:addClass(message(' |
:addClass(message('container')) |
||
:newline() |
:newline() |
||
⚫ | |||
⚫ | |||
:tag('div') |
:tag('div') |
||
-- 'template-documentation' |
|||
:css('clear', 'both') -- So right or left floating items don't stick out of the doc box. |
|||
⚫ | |||
:newline() |
|||
⚫ | |||
⚫ | |||
:tag('div') |
|||
-- 'template-documentation-clear' |
|||
:addClass(message('clear')) |
|||
:done() |
|||
:newline() |
:newline() |
||
:done() |
:done() |
||
⚫ | |||
:done() |
:done() |
||
⚫ | |||
:wikitext(p.addTrackingCategories(env)) |
:wikitext(p.addTrackingCategories(env)) |
||
-- 'Module:Documentation/styles.css' |
|||
⚫ | |||
return mw.getCurrentFrame():extensionTag ( |
|||
'templatestyles', '', {src=cfg['templatestyles'] |
|||
⚫ | |||
end |
end |
||
Line 164: | Line 167: | ||
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 |
||
-- path-related data. |
-- objects and other namespace- or path-related data. |
||
-- @args - table of arguments passed by the user |
-- @args - table of arguments passed by the user |
||
-- |
-- |
||
Line 290: | Line 293: | ||
function envFuncs.docSpace() |
function envFuncs.docSpace() |
||
-- The documentation namespace number. For most namespaces this is |
-- The documentation namespace number. For most namespaces this is the |
||
-- subject namespace. However, pages in the Article, File, |
-- same as the subject namespace. However, pages in the Article, File, |
||
-- namespaces must have their /doc, /sandbox and |
-- 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 |
||
Line 318: | Line 322: | ||
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 367: | Line 371: | ||
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 |
||
Line 410: | Line 415: | ||
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 .. makeCategoryLink(message('sandbox-category')) |
||
omargs.text = text |
|||
⚫ | |||
return '<div class="' .. message('clear') .. '"></div>' |
|||
ret = ret .. messageBox.main('ombox', omargs) |
|||
⚫ | |||
return ret |
|||
end |
end |
||
Line 423: | Line 428: | ||
-- 'protection-template' --> 'pp-template' |
-- 'protection-template' --> 'pp-template' |
||
-- 'protection-template-args' --> {docusage = 'yes'} |
-- 'protection-template-args' --> {docusage = 'yes'} |
||
local protectionLevels |
local protectionLevels = env.protectionLevels |
||
local title = env.title |
|||
protectionLevels = env.protectionLevels |
|||
if not protectionLevels then |
if not protectionLevels then |
||
return nil |
return nil |
||
Line 433: | Line 436: | ||
if editProt then |
if editProt then |
||
-- The page is edit-protected. |
-- The page is edit-protected. |
||
return require('Module:Protection banner')._main{ |
|||
message('protection-reason-edit'), small = true |
|||
} |
|||
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{ |
|||
action = 'move', small = true |
|||
} |
|||
else |
else |
||
return nil |
return nil |
||
Line 579: | Line 583: | ||
-- 'file-namespace-heading' --> 'Summary' |
-- 'file-namespace-heading' --> 'Summary' |
||
-- 'other-namespaces-heading' --> 'Documentation' |
-- 'other-namespaces-heading' --> 'Documentation' |
||
⚫ | |||
-- 'start-box-link-id' --> 'doc_editlinks' |
|||
-- 'testcases-create-link-display' --> 'create' |
-- 'testcases-create-link-display' --> 'create' |
||
--]=] |
--]=] |
||
Line 613: | Line 615: | ||
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%' |
|||
⚫ | |||
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. |
data.linksClass = message('start-box-link-classes') |
||
data.links = links |
data.links = links |
||
end |
end |
||
Line 636: | Line 635: | ||
local sbox = mw.html.create('div') |
local sbox = mw.html.create('div') |
||
sbox |
sbox |
||
-- 'template-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 |
||
Line 700: | Line 697: | ||
-- @env - environment table containing title objects, etc., generated with p.getEnvironment |
-- @env - environment table containing title objects, etc., generated with p.getEnvironment |
||
-- |
-- |
||
-- Messages: |
|||
⚫ | |||
-- 'fmbox-style' --> 'background-color: #ecfcf4' |
|||
-- 'fmbox-textstyle' --> 'font-style: italic' |
|||
-- |
|||
-- The HTML is generated by the {{fmbox}} template, courtesy of [[Module:Message box]]. |
|||
--]=] |
--]=] |
||
Line 731: | Line 722: | ||
end |
end |
||
-- Assemble the |
-- Assemble the link box. |
||
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 |
||
Line 748: | Line 732: | ||
-- 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 '') |
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' |
||
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 763: | Line 746: | ||
end |
end |
||
end |
end |
||
fmargs.text = text |
|||
local box = mw.html.create('div') |
|||
-- 'template-documentation-metadata' |
|||
box:addClass(message('end-box-class')) |
|||
-- 'plainlinks' |
|||
:addClass(message('end-box-plainlinks')) |
|||
:wikitext(text) |
|||
:done() |
|||
return |
return '\n' .. tostring(box) |
||
end |
end |
||