Module:Admin board archives
From Chalo Chatu, Zambia online encyclopedia
-- This module is a replacement for Template:Administrators' noticeboard navbox -- and Template:Administrators' noticeboard navbox all.
local archiveList = require( 'Module:Archive list' )
-- A table of the archives to display. local archives = {
an = { root = "Wikipedia:Administrators' noticeboard", prefix = "Archive" }, ani = { root = "Wikipedia:Administrators' noticeboard", prefix = "IncidentArchive" }, ['3rr'] = { root = "Wikipedia:Administrators' noticeboard", prefix = "3RRArchive" }, ae = { root = "Wikipedia:Arbitration/Requests/Enforcement", prefix = "Archive" }, csn = { root = "Wikipedia:Administrators' noticeboard/Community sanction", prefix = "Archive" }
}
-- Gets wikitable rows filled with archive links, using -- Module:Archive list. local function getLinks( funcArgs )
if type( funcArgs ) ~= 'table' then error( 'Invalid input to getLinks', 2 ) end funcArgs.sep = '\n| ' funcArgs.linesep = '\n|-\n| ' return mw.ustring.format( '|-\n| %s', archiveList.main( funcArgs ) )
end
-- Returns a Lua table with value being a list of archive links -- for one of the noticeboards listed in the archives table -- at the top of the module. local function getLinksTable( all )
local t = {} for board, archive in pairs( archives ) do local funcArgs = archive if not all then local archiveMax = archiveList.count( funcArgs ) if type( archiveMax ) == 'number' and archiveMax >= 0 then funcArgs.max = math.floor( archiveMax ) local start = funcArgs.max -19 if start < 1 then start = 1 end funcArgs.start = start end end t[board] = getLinks( funcArgs ) end return t
end
-- Build the wikitable using mw.ustring.format. local function buildWikitable( args )
local t = getLinksTable( args.all ) local frame = mw.getCurrentFrame()
-- The following are defined here for convenience, as they recur frequently -- in the wikitable. local headerStyle = 'style="font-size: 111%; line-height: 1.25em;" colspan="10"' local openSpan = '' local closeSpan = '' local searchLink = "search" -- Community sanction archive links plus header. We define it here as it is optional. local csn = if args.csn == 'yes' then csn = '\n|-\n! ' .. headerStyle .. ' | Community sanction archives ' .. openSpan .. "(search)" .. closeSpan .. '\n' .. t.csn end -- The inputbox plus header. We define it here as it is optional. local inputbox = if args.search == 'yes' then inputbox = '\n|-\n! colspan="10" style="white-space: nowrap;" | ' .. frame:preprocess(
[==[
]==]
) end return mw.ustring.format(
[==[
Noticeboard archives
]==],
headerStyle, openSpan, searchLink, closeSpan, t.an, headerStyle, openSpan, searchLink, closeSpan, t.ani, headerStyle, openSpan, searchLink, closeSpan, t['3rr'], headerStyle, openSpan, closeSpan, t.ae, csn, headerStyle, inputbox )
end
function makeWrapper( all )
return function( frame ) -- If we are being called from #invoke, get the args from #invoke -- if they exist, or else get the arguments passed to the parent -- frame. Otherwise, assume the arguments are being passed directly -- in from another module or from the debug console. local origArgs if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args for k, v in pairs( frame.args ) do origArgs = frame.args break end else origArgs = frame end -- Ignore blank values for parameters. local args = {} for k, v in pairs( origArgs ) do if v ~= then args[k] = v end end -- Find whether we are getting all the links or just the -- last 20 links. args.all = all return buildWikitable( args ) end
end
return {
compact = makeWrapper(), all = makeWrapper( true )
}