模組:VandalSubmitForm/AN3
外观
local p = {}
local yesno = require('Module:Yesno')
local function mightGetTitle(pageName, overrideNS)
if not pageName then
return ''
end
pageName = mw.ustring.gsub(pageName, '^%[%[(.*)%]%]$', '%1')
pageName = mw.ustring.gsub(pageName, '\226\128\142', '') -- 不可見字元 (0x200e)
local success, title = pcall(mw.title.new, mw.text.trim(pageName), overrideNS)
if success then
return title
end
return nil
end
function p._cleanUserName(userName)
local title = mightGetTitle(userName, 2)
if title then
return title.rootText
end
return nil
end
function p._cleanPageName(pageName)
local title = mightGetTitle(pageName)
if title then
return title.prefixedText
end
return nil
end
local form = mw.text.trim([=[{{safesubst:/form
| 用户名1 =
| 用户名2 =
<!-- 若此次编辑争议涉及更多用户,可继续填"用户名3"等;若你是编辑争议的其中一方,则可不填自己 -->
| 受影响的条目1 =
<!-- 请勿在此栏填写“见贡献”、“很多”之类。这些请写在说明处 -->
| 说明 =
}}]=])
function p._makeReportContent(args)
local i = 1
local userNameListFriendly = ''
while true do
local userName = p._cleanUserName(args['用户名' .. i])
if userName then
if userName ~= '' then -- 如果为空就不操作
if userNameListFriendly ~= '' then
userNameListFriendly = userNameListFriendly .. '、' --加上顿号
end
userNameListFriendly = userNameListFriendly .. userName
end
else
break
end
i = i + 1
end
if userNameListFriendly == '' then --标题列表仍空,此时未填任何用户名
return ''
end
local output = mw.ustring.format('=== %s ===', userNameListFriendly)
-- 构造用户链接列表
i = 1
while true do
local userName = p._cleanUserName(args['用户名' .. i])
if userName then
if userName ~= '' then -- 如果为空就不操作
output = output .. mw.ustring.format('\n* \'\'\'{{vandal|1=%s}}\'\'\'', userName)
end
else
break
end
i = i + 1
end
-- 遞迴獲取受影響的條目
i = 1
while true do
local pageName = p._cleanPageName(args['受影响的条目' .. i])
if pageName then
output = output .. mw.ustring.format('\n* {{pagelinks|1=%s}}', pageName)
else
break
end
i = i + 1
end
if args['说明'] and mw.text.trim(args['说明']) ~= '' then
output = output .. mw.ustring.format('\n* %s', mw.text.trim(args['说明']))
end
output = output .. '\n* 发现人:~~~~\n* 处理:<!-- 非管理員僅可標記已執行的封禁,針對提報的意見請放在下一行 -->'
return output
end
function p.main(frame)
local pFrame = frame:getParent()
if not pFrame then
return ''
end
local tArgs = frame.args
local pArgs = pFrame.args
if mw.isSubsting() then
return mw.text.trim((yesno(pArgs.norebuild) and '' or form .. '\n') .. p._makeReportContent(pArgs))
else
return frame:expandTemplate{ title = tArgs.root .. '/header' }
end
end
return p