请输入您要查询的百科知识:

 

词条 Module:Mass notification
释义 -- This module sends out notifications to multiple users.

local MAX_USERS = 50 -- The Echo user limit as of September 2015.

local GROUP_PAGE_PATH = 'Module:Mass notification/groups/'

local NO_NAME_ERROR = 'no group name was specified'

local LOAD_ERROR = 'the group "$2" was not found'

local MAX_USER_ERROR = 'attempted to send notifications to more than $1 users'

local NO_USER_ERROR = 'could not find any usernames in $1'

local INTRO_BLURB = 'Notifying all members of $1'

.. ' (more info'

.. " · "

.. '[$2 opt out]): '

local p = {}

local function message(msg, ...)

return mw.message.newRawMessage(msg):params{...}:plain()

end

local function makeWikitextError(msg)

return string.format(

'Error: %s.',

msg

)

end

function p.groupSubmodule(frame)

-- Returns either the group link or the group name, depending on whether

-- the submodule can be found. For use in edit notices.

local groupName = frame.args[1]

local success, data = pcall(mw.loadData, GROUP_PAGE_PATH .. groupName)

if success and type(data) == 'table' and data.group_page then

return string.format('%s', data.group_page, groupName)

else

return groupName

end

end

function p._main(groupName)

-- Validate input.

if type(groupName) ~= 'string' then

return makeWikitextError(NO_NAME_ERROR)

end

local groupSubmodule = GROUP_PAGE_PATH .. groupName

-- Load the group submodule and check for errors.

local data

do

local success

success, data = pcall(mw.loadData, groupSubmodule)

if not success then

return makeWikitextError(message(LOAD_ERROR, groupSubmodule, groupName))

elseif type(data) ~= 'table' or not data[1] then -- # doesn't work with mw.loadData

return makeWikitextError(message(NO_USER_ERROR, groupName))

elseif data[MAX_USERS + 1] then -- # doesn't work with mw.loadData

return makeWikitextError(message(MAX_USER_ERROR, tostring(MAX_USERS)))

end

end

-- Make the intro blurb.

local introBlurb

do

local optOutUrl = tostring(mw.uri.fullUrl(

groupSubmodule,

{action = 'edit'}

))

local groupLink

if data.group_page then

groupLink = string.format('%s', data.group_page, groupName)

else

groupLink = groupName

end

introBlurb = message(INTRO_BLURB, groupLink, optOutUrl)

end

-- Make the user links.

local userLinks

do

local userNamespace = mw.site.namespaces[2].name

local links = {}

for i, username in ipairs(data) do

username = tostring(username)

links[i] = string.format(

'%s',

userNamespace,

username

)

end

userLinks = string.format(

'(%s)',

table.concat(links, ', ')

)

end

return introBlurb .. userLinks

end

function p.main(frame)

local args = require('Module:Arguments').getArgs(frame, {

wrappers = 'Template:Mass notification'

})

local groupName = args[1]

return p._main(groupName)

end

return p

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/12 9:42:22