Mô đun:Protected edit request
| Mô đun Lua này được sử dụng ở rất nhiều trang, vì thế những thay đổi đến nó sẽ hiện ra rõ ràng. Vui lòng thử nghiệm các thay đổi ở trang con /sandbox, /testcases của mô đun, hoặc ở chỗ thử mô đun. Cân nhắc thảo luận các thay đổi tại trang thảo luận trước khi áp dụng sửa đổi. |
| Mô đun này phụ thuộc vào các mô đun sau: |
This module produces a message box used to request edits to protected pages. Edit requests can be made for fully protected, template-protected and semi-protected pages, and it is possible to request edits to multiple pages at once.
This module should be used on the talk page of the page to be edited. If you are not able to place it directly on this talk page, then you can specify the page to be edited with the positional parameters. You can also specify multiple pages to be edited, if this is more convenient than making multiple edit requests in different locations.
Syntax
[sửa mã nguồn]The module has five functions, one for each available protection level:
| Function | Protection level | Template |
|---|---|---|
interface |
CSS/JS protection | {{edit interface-protected}} |
full |
Full protection | {{edit fully-protected}} |
template |
Template protection | {{edit template-protected}} |
extended |
Extended confirmed protection | {{edit extended-protected}} |
semi |
Semi-protection | {{edit semi-protected}} |
Basic usage
{{#invoke:protected edit request|function}}
Specify pages to be edited
{{#invoke:protected edit request|function|First page to be edited|Second page to be edited|...}}
Deactivate a request
{{#invoke:protected edit request|function|answered=yes}}
- Force a request's protection level rather than allowing auto-detection
{{#invoke:protected edit request|function|force=yes}}
- Override the "must only be on a talk page" check
{{#invoke:protected edit request|function|skiptalk=yes}}
All parameters
{{#invoke:protected edit request|function
| First page to be edited|Second page to be edited|Third page to be edited|...
| answered =
| ans =
| demo =
| force =
| skiptalk =
}}
Categories
[sửa mã nguồn]The template categorises the page depending on the protection level of the pages to be edited.
| Function | Category |
|---|---|
interface |
Thể loại:Yêu cầu sửa đổi trang bị khóa giao diện |
full |
Thể loại:Yêu cầu sửa đổi trang bị khóa hẳn |
template |
Thể loại:Yêu cầu sửa đổi trang bị khóa bản mẫu |
extended |
Thể loại:Yêu cầu sửa đổi trang bị khóa mở rộng |
semi |
Thể loại:Yêu cầu sửa đổi trang bị bán khóa |
The module attempts to detect the protection level of the pages used. If one or more of the pages are unprotected, or multiple pages with different protection levels are specified, the page is categorized in Thể loại:Yêu cầu sửa đổi trang có thể dùng bản mẫu sai. Otherwise, if the force parameter is not set, it is automatically categorized in the correct protection level.
require('strict')
local yesno = require('Mô đun:Yesno')
local makeMessageBox = require('Mô đun:Message box').main
local getArgs
local activeBox -- lazily initialized if we get an active request
----------------------------------------------------------------------
-- Box class definition
----------------------------------------------------------------------
local box = {}
box.__index = box
function box.new(protectionType, args)
local obj = {}
obj.args = args
setmetatable(obj, box)
obj.tmboxArgs = {} -- Used to store arguments to be passed to tmbox by the box:export method.
-- Set data fields.
obj.tmboxArgs.attrs = { ['data-origlevel'] = protectionType }
return obj
end
function box:setArg(key, value)
-- This sets a value to be passed to tmbox.
if key then
self.tmboxArgs[key] = value
end
end
function box:export()
if not mw.title.getCurrentTitle().isTalkPage and not self.args.demo then
return '<span class="error">Lỗi: Yêu cầu sửa đổi trang khóa chỉ có thể được thực hiện trên trang thảo luận.</span>[[Thể loại:Yêu cầu sửa đổi bản mẫu không phải trên trang thảo luận]]'
end
-- String together page names provided
local titles = {}
for k, v in pairs(self.args) do
if type(k) == 'number' then
table.insert(titles, self.args[k])
end
end
local pagesText
if #titles == 0 then
pagesText = ''
elseif #titles == 1 and mw.title.getCurrentTitle().subjectPageTitle.fullText == titles[1] then
pagesText = ''
else
for i, v in pairs(titles) do
if i == 1 then
pagesText = ' cho [[:' .. v .. ']]'
elseif i == #titles then
pagesText = pagesText .. ' và [[:' .. v .. ']]'
else
pagesText = pagesText .. ', [[:' .. v .. ']]'
end
end
end
self:setArg('smalltext', "[[Wikipedia:Yêu cầu sửa đổi|Yêu cầu sửa đổi]] này" .. pagesText ..
" đã được trả lời. Sửa tham số <code style=\"white-space: nowrap;\">|answered=</code> hoặc <code style=\"white-space: nowrap;\">|ans=</code> hoặc <code style=\"white-space: nowrap;\">|xong=</code> thành '''chưa''' để kích hoạt lại yêu cầu.")
self:setArg('small', true)
self:setArg('class', 'editrequest')
return makeMessageBox('tmbox', self.tmboxArgs)
end
----------------------------------------------------------------------
-- Process arguments and initialise objects
----------------------------------------------------------------------
local p = {}
function p._main(protectionType, args)
local boxType = box
if not yesno(args.answered or args.ans or args.xong, true) and (args.answered or args.ans or args.xong) ~= 'xong' then
if not activeBox then
activeBox = require('Mô đun:Protected edit request/active')(box, yesno, makeMessageBox)
end
boxType = activeBox
end
local requestBox = boxType.new(protectionType, args)
return requestBox:export()
end
local mt = {}
function mt.__index(t, k)
if not getArgs then
getArgs = require('Mô đun:Arguments').getArgs
end
return function (frame)
return t._main(k, getArgs(frame, {wrappers = {'Bản mẫu:Sửa trang khóa hẳn', 'Bản mẫu:Sửa trang hạn chế sửa đổi', 'Bản mẫu:Sửa trang nửa khóa', 'Bản mẫu:Sửa trang khóa bản mẫu', 'Bản mẫu:Sửa trang khóa mở rộng', 'Bản mẫu:Sửa trang khóa giao diện', 'Bản mẫu:Sửa trang khóa'}}))
end
end
return setmetatable(p, mt)