Modul:Uses TemplateStyles: Unterschied zwischen den Versionen

K
26 Versionen von wpen:Module:Uses_TemplateStyles importiert
(start; based off Module:Lua banner)
 
K (26 Versionen von wpen:Module:Uses_TemplateStyles importiert)
 
(25 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
-- This module implements the {{Uses TemplateStyles}} template.
local yesno = require('Module:Yesno')
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local mMessageBox = require('Module:Message box')
local TNT = require('Module:TNT')


local p = {}
local p = {}


function p.main(frame)
local function format(msg, ...)
local origArgs = frame:getParent().args
return TNT.format('I18n/Uses TemplateStyles', msg, ...)
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
end


function p._main(args)
local function getConfig()
local tStyles = mTableTools.compressSparseArray(args)
return mw.loadData('Module:Uses TemplateStyles/config')
local box = p.renderBox(tStyles)
local trackingCategories = p.renderTrackingCategories(args, tStyles)
return box .. trackingCategories
end
end


function p.renderBox(tStyles)
local function renderBox(tStyles)
local boxArgs = {}
local boxArgs = {
type = 'notice',
small = true,
image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt'))
}
if #tStyles < 1 then
if #tStyles < 1 then
boxArgs.text = '<strong class="error">Error: no TemplateStyles specified</strong>'
boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist'))
else
else
local links = {}
local cfg = getConfig()
local tStylesLinks = {}
for i, ts in ipairs(tStyles) do
for i, ts in ipairs(tStyles) do
TemplateStylesLinks[i] = string.format('[[:%s]]', ts)
local link = string.format('[[:%s]]', ts)
local sandboxLink = nil
local tsTitle = mw.title.new(ts)
if tsTitle and cfg['sandbox_title'] then
local tsSandboxTitle = mw.title.new(string.format(
'%s:%s/%s/%s', tsTitle.nsText, tsTitle.baseText, cfg['sandbox_title'], tsTitle.subpageText))
if tsSandboxTitle and tsSandboxTitle.exists then
sandboxLink = format('sandboxlink', link, ':' .. tsSandboxTitle.prefixedText)
end
end
tStylesLinks[i] = sandboxLink or link
end
end
local TemplateStylesList = mList.makeList('bulleted', tsList)
local tStylesList = mList.makeList('bulleted', tStylesLinks)
boxArgs.text = 'This ' ..
boxArgs.text = format(
(mw.title.getCurrentTitle():inNamespaces(828,829) and 'module' or 'template') ..
mw.title.getCurrentTitle():inNamespaces(828,829) and 'header-module' or 'header-template') ..
' uses [[Wikipedia:TemplateStyles|TemplateStyles]]:\n' .. moduleList
'\n' .. tStylesList
end
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Farm-Fresh css add.png|32px|alt=CSS icon]]'
return mMessageBox.main('mbox', boxArgs)
return mMessageBox.main('mbox', boxArgs)
end
end


function p.renderTrackingCategories(args, tStyles, titleObj)
local function renderTrackingCategories(args, tStyles, titleObj)
if yesno(args.nocat) then
if yesno(args.nocat) then
return ''
return ''
end
end
local cfg = getConfig()
local cats = {}
local cats = {}
-- Error category
-- Error category
if #tStyles < 1 then
if #tStyles < 1 and cfg['error_category'] then
cats[#cats + 1] = 'Uses TemplateStyles templates with errors'
cats[#cats + 1] = cfg['error_category']
end
end
-- TemplateStyles category
-- TemplateStyles category
titleObj = titleObj or mw.title.getCurrentTitle()
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
if (titleObj.namespace == 10 or titleObj.namespace == 828)
doc = true,
and not cfg['subpage_blacklist'][titleObj.subpageText]
sandbox = true,
sandbox2 = true,
testcases = true
}
if titleObj.namespace == 10
and not subpageBlacklist[titleObj.subpageText]
then
then
local category = args.category
local category = args.category or cfg['default_category']
if not category then
if category then
category = category or 'Templates using TemplateStyles'
cats[#cats + 1] = category
end
end
cats[#cats + 1] = category
if not yesno(args.noprotcat) and (cfg['protection_conflict_category'] or cfg['padlock_pattern']) then
local protLevels = {
local currentProt = titleObj.protectionLevels["edit"] and titleObj.protectionLevels["edit"][1] or nil
autoconfirmed = 1,
local addedLevelCat = false
extendedconfirmed = 2,
local addedPadlockCat = false
templateeditor = 3,
for i, ts in ipairs(tStyles) do
sysop = 4
local tsTitleObj = mw.title.new(ts)
}
local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil
local currentProt = titleObj.protectionLevels["edit"][1]
if cfg['padlock_pattern'] and tsProt and not addedPadlockCat then
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
local content = tsTitleObj:getContent()
for i, ts in ipairs(tStyles) do
if not content:find(cfg['padlock_pattern']) then
local tsProt = mw.title.new(ts).protectionLevels["edit"][1]
cats[#cats + 1] = cfg['missing_padlock_category']
if tsProt == nil then tsProt = 0 else tsProt = protLevels[tsProt] end
addedPadlockCat = true
if tsProt < currentProt then
end
cats[#cats + 1] = "Templates using TemplateStyles with a different protection level"
end
break
if cfg['protection_conflict_category'] and currentProt and tsProt ~= currentProt and not addedLevelCat then
currentProt = cfg['protection_hierarchy'][currentProt] or 0
tsProt = cfg['protection_hierarchy'][tsProt] or 0
if tsProt < currentProt then
addedLevelCat = true
cats[#cats + 1] = cfg['protection_conflict_category']
end
end
end
end
end
end
end
end
for i, cat in ipairs(cats) do
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
cats[i] = string.format('[[Category:%s]]', cat)
end
end
return table.concat(cats)
return table.concat(cats)
end
function p._main(args, cfg)
local tStyles = mTableTools.compressSparseArray(args)
local box = renderBox(tStyles)
local trackingCategories = renderTrackingCategories(args, tStyles)
return box .. trackingCategories
end
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
end


return p
return p