Editing Module:Lua banner
From WikiOasis Meta
More actions
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
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') | ||
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 = {} | ||
local function format(msg) | |||
return TNT.format('I18n/Lua banner', msg) | |||
end | |||
local function getConfig() | |||
return mw.loadData('Module:Lua banner/config') | |||
end | |||
function p.main(frame) | function p.main(frame) | ||
Line 19: | Line 29: | ||
end | end | ||
function p._main(args) | function p._main(args, cfg) | ||
local modules = mTableTools.compressSparseArray(args) | local modules = mTableTools.compressSparseArray(args) | ||
local box = p.renderBox(modules) | local box = p.renderBox(modules, cfg) | ||
local trackingCategories = p.renderTrackingCategories(args, modules) | local trackingCategories = p.renderTrackingCategories(args, modules, nil, cfg) | ||
return box .. trackingCategories | return box .. trackingCategories | ||
end | end | ||
function p.renderBox(modules) | function p.renderBox(modules, cfg) | ||
local boxArgs = {} | local boxArgs = {} | ||
if #modules < 1 then | if #modules < 1 then | ||
boxArgs.text = '<strong class="error"> | cfg = cfg or getConfig() | ||
if cfg['allow_wishes'] then | |||
boxArgs.text = format('wishtext') | |||
else | |||
boxArgs.text = string.format('<strong class="error">%s</strong>', format('error_emptylist')) | |||
end | |||
else | else | ||
local moduleLinks = {} | local moduleLinks = {} | ||
for i, module in ipairs(modules) do | for i, module in ipairs(modules) do | ||
moduleLinks[i] = string.format('[[:%s]]', module) | moduleLinks[i] = string.format('[[:%s]]', module) | ||
end | end | ||
local moduleList = mList.makeList('bulleted', moduleLinks) | local moduleList = mList.makeList('bulleted', moduleLinks) | ||
boxArgs.text = format('header') .. '\n' .. moduleList | |||
end | end | ||
boxArgs.type = 'notice' | boxArgs.type = 'notice' | ||
boxArgs.small = true | boxArgs.small = true | ||
boxArgs.image = '[[File:Lua- | boxArgs.image = string.format( | ||
'[[File:Lua-logo-nolabel.svg|30px|alt=%s|link=%s]]', | |||
format('logo_alt'), | |||
format('logo_link') | |||
) | |||
return mMessageBox.main('mbox', boxArgs) | return mMessageBox.main('mbox', boxArgs) | ||
end | end | ||
function p.renderTrackingCategories(args, modules, titleObj) | function p.renderTrackingCategories(args, modules, titleObj, cfg) | ||
if yesno(args.nocat) then | if yesno(args.nocat) then | ||
return '' | return '' | ||
end | end | ||
cfg = cfg or getConfig() | |||
local cats = {} | local cats = {} | ||
-- Error category | -- Error category | ||
if #modules < 1 then | if #modules < 1 and not cfg['allow_wishes'] and cfg['error_category'] then | ||
cats[#cats + 1] = ' | cats[#cats + 1] = cfg['error_category'] | ||
end | end | ||
-- Lua templates category | -- Lua templates category | ||
titleObj = titleObj or mw.title.getCurrentTitle() | titleObj = titleObj or mw.title.getCurrentTitle() | ||
if titleObj.namespace == 10 | |||
and not cfg['subpage_blacklist'][titleObj.subpageText] | |||
then | |||
local category = args.category | |||
if not category then | |||
local pagename = modules[1] and mw.title.new(modules[1]) | |||
category = pagename and cfg['module_categories'][pagename.text] | |||
local | |||
if | |||
local category = | |||
if not category then | if not category then | ||
if cfg['allow_wishes'] and #modules < 1 then | |||
category = cfg['wish_category'] | |||
else | |||
category = cfg['default_category'] | |||
end | end | ||
end | end | ||
end | |||
if category then | |||
cats[#cats + 1] = category | |||
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) |