Notice: Firmware Links Under Maintenance We are currently undergoing maintenance on all firmware links. If any links are inaccessible, please email or contact Tech Support for the firmware. We appreciate your patience during the maintenance, thank you for your understanding.
Difference between revisions of "Module:Lua banner"
m (1 revision imported) |
(Detect if on module page) |
||
Line 1: | Line 1: | ||
-- This module implements the {{lua}} template. | -- This module implements the {{lua}} template. | ||
− | |||
local yesno = require('Module:Yesno') | local yesno = require('Module:Yesno') | ||
local mList = require('Module:List') | local mList = require('Module:List') | ||
Line 37: | Line 36: | ||
end | end | ||
local moduleList = mList.makeList('bulleted', moduleLinks) | local moduleList = mList.makeList('bulleted', moduleLinks) | ||
− | boxArgs.text = ' | + | boxArgs.text = 'This ' .. |
+ | (mw.title.getCurrentTitle():inNamespaces(828,829) and 'module' or 'template') .. | ||
+ | ' uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList | ||
end | end | ||
boxArgs.type = 'notice' | boxArgs.type = 'notice' | ||
boxArgs.small = true | boxArgs.small = true | ||
− | boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt= | + | boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=|link=]]' |
return mMessageBox.main('mbox', boxArgs) | return mMessageBox.main('mbox', boxArgs) | ||
end | end | ||
Line 81: | Line 82: | ||
end | end | ||
cats[#cats + 1] = category | cats[#cats + 1] = category | ||
+ | local protLevels = { | ||
+ | autoconfirmed = 1, | ||
+ | extendedconfirmed = 2, | ||
+ | templateeditor = 3, | ||
+ | sysop = 4 | ||
+ | } | ||
+ | local currentProt = titleObj.protectionLevels["edit"][1] | ||
+ | if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end | ||
+ | for i, module in ipairs(modules) do | ||
+ | local moduleProt = mw.title.new(module).protectionLevels["edit"][1] | ||
+ | if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end | ||
+ | if moduleProt < currentProt then | ||
+ | cats[#cats + 1] = "Templates using under-protected Lua modules" | ||
+ | break | ||
+ | end | ||
+ | end | ||
end | end | ||
Revision as of 00:47, 24 June 2018
Documentation for this module may be created at Module:Lua banner/doc
Script error: Lua error: Internal error: The interpreter exited with status 127.
-- This module implements the {{lua}} 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 modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules) local trackingCategories = p.renderTrackingCategories(args, modules) return box .. trackingCategories end function p.renderBox(modules) local boxArgs = {} if #modules < 1 then boxArgs.text = '<strong class="error">Error: no modules specified</strong>' else local moduleLinks = {} for i, module in ipairs(modules) do moduleLinks[i] = string.format('[[:%s]]', module) end local moduleList = mList.makeList('bulleted', moduleLinks) boxArgs.text = 'This ' .. (mw.title.getCurrentTitle():inNamespaces(828,829) and 'module' or 'template') .. ' uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=|link=]]' return mMessageBox.main('mbox', boxArgs) end function p.renderTrackingCategories(args, modules, titleObj) if yesno(args.nocat) then return '' end local cats = {} -- Error category if #modules < 1 then cats[#cats + 1] = 'Lua templates with errors' end -- Lua templates 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 local categories = { ['Module:String'] = 'Lua String-based templates', ['Module:Math'] = 'Templates based on the Math Lua module', ['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module', ['Module:Citation'] = 'Lua-based citation templates' } categories['Module:Citation/CS1'] = categories['Module:Citation'] category = modules[1] and categories[modules[1]] category = category or 'Lua-based templates' end cats[#cats + 1] = category local protLevels = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } local currentProt = titleObj.protectionLevels["edit"][1] if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end for i, module in ipairs(modules) do local moduleProt = mw.title.new(module).protectionLevels["edit"][1] if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end if moduleProt < currentProt then cats[#cats + 1] = "Templates using under-protected Lua modules" break end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end return p