Module:Uses TemplateStyles

From Project Mailer
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

-- This module implements the

template.

local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box')

local p = {}

function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= then args[k] = v end end return p._main(args) end

function p._main(args) local tStyles = mTableTools.compressSparseArray(args) local box = p.renderBox(tStyles) local trackingCategories = p.renderTrackingCategories(args, tStyles) return box .. trackingCategories end

function p.renderBox(tStyles) local boxArgs = {} if #tStyles < 1 then boxArgs.text = 'Error: no TemplateStyles specified' else local tStylesLinks = {} for i, ts in ipairs(tStyles) do local sandboxLink = nil local tsTitle = mw.title.new(ts) if tsTitle then local tsSandboxTitle = mw.title.new(string.format('%s:%s/sandbox/%s', tsTitle.nsText, tsTitle.baseText, tsTitle.subpageText)) if tsSandboxTitle and tsSandboxTitle.exists then sandboxLink = string.format(' (sandbox)', tsSandboxTitle.prefixedText) end end tStylesLinks[i] = string.format('%s%s', ts, sandboxLink or ) end local tStylesList = mList.makeList('bulleted', tStylesLinks) boxArgs.text = 'This ' .. (mw.title.getCurrentTitle():inNamespaces(828,829) and 'module' or 'template') .. ' uses TemplateStyles:\n' .. tStylesList end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = 'CSS' return mMessageBox.main('mbox', boxArgs) end

function p.renderTrackingCategories(args, tStyles, titleObj) if yesno(args.nocat) then return end

local cats = {}

-- Error category if #tStyles < 1 then cats[#cats + 1] = 'Uses TemplateStyles templates with errors' end

-- TemplateStyles category titleObj = titleObj or mw.title.getCurrentTitle() local subpageBlacklist = { doc = true, sandbox = true, sandbox2 = true, testcases = true } if titleObj.namespace == 10 and not subpageBlacklist[titleObj.subpageText] then local category = args.category if not category then category = category or 'Templates using TemplateStyles' end cats[#cats + 1] = category local currentProt = titleObj.protectionLevels["edit"] and titleObj.protectionLevels["edit"][1] or nil for i, ts in ipairs(tStyles) do local tsTitleObj = mw.title.new(ts) local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil if tsProt ~= currentProt then cats[#cats + 1] = "Templates using TemplateStyles with a different protection level" break end end end

for i, cat in ipairs(cats) do cats[i] = string.format(, cat) end return table.concat(cats) end

return p