ماژول:Administrators' noticeboard archives

بو ماژول اوچون بلگه‌لر ماژول:Administrators' noticeboard archives/بلگه صفحه‌سینده یارادیلا بیلینر

local archiveList = require( 'Module:Archive list' )

-- A table of the archives to display.
local archives = {
    an = { 
        root = "ویکی‌پدیا:ایداره‌چیلر بیلدیری تابلوسو",
        prefix = "آرشیو"
    },
    ani = {
        root = "ویکی‌پدیا:ایداره‌چیلر بیلدیری تابلوسو",
        prefix = "IncidentArchive"
    },
    ['3rr'] = {
        root = "ویکی‌پدیا:ایداره‌چیلر بیلدیری تابلوسو",
        prefix = "۳ قایتاریش پوزونتوسو آرشیو"
    },
    ae = {
        root = "Wikipedia:Arbitration/Requests/Enforcement",
        prefix = "آرشیو"
    },
    csn = {
        root = "ویکی‌پدیا:ایداره‌چیلر بیلدیری تابلوسو/Community sanction",
        prefix = "آرشیو"
    }
}

-- 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="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 navbox/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 navbox/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(
[==[
<inputbox>
bgcolor=transparent
type=fulltext
prefix=ویکی‌پدیا:ایداره‌چیلر بیلدیری تابلوسو
break=no
width=32
searchbuttonlabel=آختار
placeholder=بیلدیری تابلولار آرشیولرین آختار
</inputbox>]==]
            )

    end
    
    local bottom_list = require('Module:List').horizontal({
    	"[[Wikipedia talk:ویکی‌پدیا:ایداره‌چیلر بیلدیری تابلوسو|دانیش]]",
    	'[[Wikipedia:Sockpuppet investigations|یدک حساب آراشدیرمالاری]]',
    	'[[:Category:Administrative backlog|بک‌لاق]]'
    })
        
    return mw.ustring.format(
[==[
<div style="float: left; clear: right; margin: 0 0 1em 1em; text-align: left">
{| class="noprint" 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"
|+ بیلدیری تابلوسو آرشیولری
|-
! %s | [[ویکی‌پدیا:ایداره‌چیلر بیلدیری تابلوسو|ایداره‌چیلر]] %s([[ویکی‌پدیا:ایداره‌چیلر بیلدیری تابلوسو/آرشیولر|آرشیولر]], %s)%s
%s
|-
! %s | [[ویکی‌پدیا:ایداره‌چیلر بیلدیری تابلوسو/Incidents|Incidents]] %s([[ویکی‌پدیا:ایداره‌چیلر بیلدیری تابلوسو/IncidentArchives|آرشیولر]], %s)%s
%s
|-
! %s | [[ویکی‌پدیا:ایداره‌چیلر بیلدیری تابلوسو/۳ قایتاریش پوزونتوسو|۳ق‌پ]] %s([[ویکی‌پدیا:ایداره‌چیلر بیلدیری تابلوسو/۳ قایتاریش پوزونتوسو آرشیولر|آرشیولر]], %s)%s
%s
|-
! %s | [[Wikipedia:Arbitration/Requests/Enforcement|Arbitration enforcement]] %s([[Wikipedia:Arbitration/Requests/Enforcement/آرشیولر|آرشیولر]])%s
%s%s
|-
! %s |باشقا لینکلر
|-
|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

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 )
}