Module:Uses TemplateStyles: Difference between revisions

enwp>Pppery
Matching reality rather than 2018 me's wishful thinking
m 1 revision imported: Importing template Sfrac
 
(5 intermediate revisions by 3 users not shown)
Line 13: Line 13:
local function getConfig()
local function getConfig()
return mw.loadData('Module:Uses TemplateStyles/config')
return mw.loadData('Module:Uses TemplateStyles/config')
end
local function makeEditSup(pageName)
return string.format('<sup>&lbrack;[[Special:Edit/%s|e]]&rbrack;</sup>', pageName)
end
-- Build just the "(sandbox)" suffix using the i18n message, without duplicating the main link.
local function makeSandboxSuffix(tsSandboxPrefixed)
-- i18n message is: "$1 ([[$2|sandbox]])"
-- Passing empty $1 yields " ([[:...|sandbox]])" -> trim leading whitespace to get "(sandbox)" portion.
local s = format('sandboxlink', '', ':' .. tsSandboxPrefixed)
return (s:gsub('^%s+', ''))
end
end


Line 21: Line 33:
image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt'))
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 = string.format('<strong class="error">%s</strong>', format('error-emptylist'))
boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist'))
Line 26: Line 39:
local cfg = getConfig()
local cfg = getConfig()
local tStylesLinks = {}
local tStylesLinks = {}
for i, ts in ipairs(tStyles) do
for i, ts in ipairs(tStyles) do
local link = string.format('[[:%s]]', ts)
local viewLink = string.format('[[:%s]]', ts)
local sandboxLink = nil
local editSup = makeEditSup(ts)
 
local out = viewLink .. editSup
 
-- Optional sandbox link + sandbox edit link
local tsTitle = mw.title.new(ts)
local tsTitle = mw.title.new(ts)
if tsTitle and cfg['sandbox_title'] then
if tsTitle and cfg['sandbox_title'] then
local tsSandboxTitle = mw.title.new(string.format(
local tsSandboxTitle = mw.title.new(string.format(
'%s:%s/%s/%s', tsTitle.nsText, tsTitle.baseText, cfg['sandbox_title'], tsTitle.subpageText))
'%s:%s/%s/%s',
tsTitle.nsText,
tsTitle.baseText,
cfg['sandbox_title'],
tsTitle.subpageText
))
 
if tsSandboxTitle and tsSandboxTitle.exists then
if tsSandboxTitle and tsSandboxTitle.exists then
sandboxLink = format('sandboxlink', link, ':' .. tsSandboxTitle.prefixedText)
local sandboxSuffix = makeSandboxSuffix(tsSandboxTitle.prefixedText)
local sandboxEditSup = makeEditSup(tsSandboxTitle.prefixedText)
out = out .. ' ' .. sandboxSuffix .. ' ' .. sandboxEditSup
end
end
end
end
tStylesLinks[i] = sandboxLink or link
 
tStylesLinks[i] = out
end
end
local tStylesList = mList.makeList('bulleted', tStylesLinks)
local tStylesList = mList.makeList('bulleted', tStylesLinks)
boxArgs.text = format(
boxArgs.text = format(
mw.title.getCurrentTitle():inNamespaces(828,829) and 'header-module' or 'header-template') ..
mw.title.getCurrentTitle():inNamespaces(828, 829) and 'header-module' or 'header-template'
'\n' .. tStylesList
) .. '\n' .. tStylesList
end
end
return mMessageBox.main('mbox', boxArgs)
return mMessageBox.main('mbox', boxArgs)
end
end
Line 51: Line 80:
return ''
return ''
end
end
 
local cfg = getConfig()
local cfg = getConfig()
local cats = {}
local cats = {}
 
-- Error category
-- Error category
if #tStyles < 1 and cfg['error_category'] then
if #tStyles < 1 and cfg['error_category'] then
cats[#cats + 1] = cfg['error_category']
cats[#cats + 1] = cfg['error_category']
end
end
 
-- TemplateStyles category
-- TemplateStyles category
titleObj = titleObj or mw.title.getCurrentTitle()
titleObj = titleObj or mw.title.getCurrentTitle()
Line 74: Line 102:
local addedLevelCat = false
local addedLevelCat = false
local addedPadlockCat = false
local addedPadlockCat = false
for i, ts in ipairs(tStyles) do
for _, ts in ipairs(tStyles) do
local tsTitleObj = mw.title.new(ts)
local tsTitleObj = mw.title.new(ts)
local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil
local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil
Line 95: Line 123:
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)
Line 101: Line 130:
end
end


function p._main(args, cfg)
function p._main(args)
local cfg = getConfig()
if #args == 0 then
local prefixed = mw.title.getCurrentTitle().prefixedText
prefixed = prefixed:gsub("/doc", "")
args[1] = prefixed .. "/" .. cfg["default_subpage_name"]
end
local tStyles = mTableTools.compressSparseArray(args)
local tStyles = mTableTools.compressSparseArray(args)
local box = renderBox(tStyles)
local box = renderBox(tStyles)