Module:Administrators' noticeboard archives and Module:Administrators' noticeboard archives/sandbox: Difference between pages

(Difference between pages)
Page 1
Page 2
imported>CanonNi
tweak for dark mode
 
self-rv to Izno's version
 
Line 1: Line 1:
local archiveList = require( 'Module:Archive list' )
local archiveList = require( 'Module:Archive list' )


-- A table of the archives to display.
-- Gets wikitable rows filled with archive links, using [[Module:Archive list]].
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 )
local function getLinks( funcArgs )
     if type( funcArgs ) ~= 'table' then
     if type( funcArgs ) ~= 'table' then
         error( 'Invalid input to getLinks', 2 )
         error( 'Invalid input to getLinks', 2 )
     end
     end
     funcArgs.sep = '\n| '
     funcArgs.sep = '</li><li>'
     funcArgs.linesep = '\n|-\n| '
    funcArgs.links = 20
     funcArgs.linesep = '&#32;' -- hacking around the wrapper to remove lineseparators
     return  mw.ustring.format(
     return  mw.ustring.format(
         '|-\n| %s',
         '<ol class="an-archives-list"><li>%s</li></ol>',
         archiveList.main( funcArgs )
         archiveList.main( funcArgs )
     )
     )
end
end


-- Returns a Lua table with value being a list of archive links
-- Returns a Lua table with value being a list of archive links for one of the
-- for one of the noticeboards listed in the archives table
-- noticeboards listed in the archives table at the top of the module.
-- at the top of the module.
local function getLinksTable( all )
local function getLinksTable( all )
-- 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"
    }
}
     local t = {}
     local t = {}
     for board, archive in pairs( archives ) do
     for board, archive in pairs( archives ) do
Line 60: Line 59:
     end
     end
     return t
     return t
end
local function group (main_page, search, list)
local ret = mw.html.create('li')
ret:tag('div')
:addClass('an-archives-header')
:wikitext(main_page .. " ")
:tag('span')
:wikitext(search)
:done()
:done()
ret:wikitext(list)
:allDone()
return ret
end
end


-- Build the wikitable using mw.ustring.format.
-- Build the wikitable using mw.ustring.format.
local function buildWikitable( args )
local function buildWikitable( args )
    local t = getLinksTable( args.all )
local t = getLinksTable( args.all )
    local frame = mw.getCurrentFrame()
local frame = mw.getCurrentFrame()
local lists = {
group(
"[[Wikipedia:Administrators' noticeboard|Administrators']]",
"([[Wikipedia:Administrators' noticeboard/Archives|archives]], [[Template:Administrators' noticeboard archives/Search|search]])",
t.an
),
group(
"[[Wikipedia:Administrators' noticeboard/Incidents|Incidents]]",
"([[Wikipedia:Administrators' noticeboard/IncidentArchives|archives]], [[Template:Administrators' noticeboard archives/Search|search]])",
t.ani
    ),
group(
"[[Wikipedia:Administrators' noticeboard/Edit warring|Edit-warring/3RR]]",
"([[Wikipedia:Administrators' noticeboard/3RRArchives|archives]], [[Template:Administrators' noticeboard archives/Search|search]])",
t['3rr']
),
group(
"[[Wikipedia:Arbitration/Requests/Enforcement|Arbitration enforcement]]",
"([[Wikipedia:Arbitration/Requests/Enforcement/Archive|archives]])",
t.ae
)
}
-- optional since these haven't been used in a while
if args.csn == 'yes' then
table.insert(lists, group(
"Community sanction archives",
"([[Template:Administrators\' noticeboard archives/Search|search]])",
t.csn
))
end
local other_links = mw.html.create('li')
other_links:tag('div')
:addClass('an-archives-header')
:wikitext('Other links')
:done()
:wikitext(require('Module:List').horizontal({
    "[[Wikipedia talk:Administrators' noticeboard|Talk]]",
    '[[Wikipedia:Sockpuppet investigations|Sockpuppet investigations]]',
    '[[:Category:Administrative backlog|Backlog]]'
    }))
    :allDone()
table.insert(lists, other_links)
local list = mw.html.create('ul')
for _, group in ipairs(lists) do
list:node(group)
end
list:allDone()
    local box = mw.html.create('div')
    box:addClass('an-archives')
    :tag('div')
    :addClass('an-archives-caption')
    :wikitext('Noticeboard archives')
    :done()
    :node(list)


    -- The following are defined here for convenience, as they recur frequently
    -- in the wikitable.
    local headerStyle = 'style="background-color: #ccf; font-size: 111%; line-height: 1.25em;" colspan="10"'
    local openSpan = '<span class="plainlinks" style="font-size: smaller;">'
    local closeSpan = '</span>'
    local searchLink = "[[Template:Administrators' noticeboard archives/Search|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
            .. "([[Template:Administrators' noticeboard archives/Search|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
     if args.search == 'yes' then
        inputbox = '\n|-\n! colspan="10" style="white-space: nowrap;" | '
    box:tag('div')
            .. frame:preprocess(
:addClass('an-archives-search')
:wikitext(frame:preprocess(
[==[
[==[
<inputbox>
<inputbox>
Line 102: Line 153:
placeholder=Search noticeboards archives
placeholder=Search noticeboards archives
</inputbox>]==]
</inputbox>]==]
            )
))
    end
    box:allDone()
       
    return frame:extensionTag {
name = 'templatestyles', args = { src = 'Module:Administrators\' noticeboard archives/styles.css' }
} .. '__NOINDEX__' .. tostring(box)


    end
   
    local bottom_list = require('Module:List').horizontal({
    "[[Wikipedia talk:Administrators' noticeboard|Talk]]",
    '[[Wikipedia:Sockpuppet investigations|Sockpuppet investigations]]',
    '[[:Category:Administrative backlog|Backlog]]'
    })
       
    return mw.ustring.format(
[==[
<div style="float: right; clear: right; margin: 0 0 1em 1em; text-align: right">
{| class="noprint skin-invert" style="background-color: #fdfdfd; clear: both; padding: 1px; box-sizing: border-box; border: 1px solid #a2a9b1; font-size:88%%; line-height:1.2em; margin:0; width:auto; text-align:center"
|+ Noticeboard archives
|-
! %s | [[Wikipedia:Administrators' noticeboard|Administrators']] %s([[Wikipedia:Administrators' noticeboard/Archives|archives]], %s)%s
%s
|-
! %s | [[Wikipedia:Administrators' noticeboard/Incidents|Incidents]] %s([[Wikipedia:Administrators' noticeboard/IncidentArchives|archives]], %s)%s
%s
|-
! %s | [[Wikipedia:Administrators' noticeboard/Edit warring|Edit-warring/3RR]] %s([[Wikipedia:Administrators' noticeboard/3RRArchives|archives]], %s)%s
%s
|-
! %s | [[Wikipedia:Arbitration/Requests/Enforcement|Arbitration enforcement]] %s([[Wikipedia:Arbitration/Requests/Enforcement/Archive|archives]])%s
%s%s
|-
! %s |Other links
|-
|colspan="10" style="text-align: center;"| %s%s
|}
</div>__NOINDEX__]==],
        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,
        bottom_list, inputbox
    )       
end
end