Difference between revisions of "Module:Protected edit request/sandbox"
Jump to navigation
Jump to search
blackwiki>Andrybak |
blackwiki>SD0001 (temp save, need to figure out why mw.title.getCurrentTitle().subjectNsText == titles[1] isn't working) |
||
| Line 14: | Line 14: | ||
box.__index = box | box.__index = box | ||
| − | function box.new(protectionType) | + | function box.new(protectionType, args) |
local obj = {} | local obj = {} | ||
| + | obj.args = args | ||
setmetatable(obj, box) | setmetatable(obj, box) | ||
obj.tmboxArgs = {} -- Used to store arguments to be passed to tmbox by the box:export method. | obj.tmboxArgs = {} -- Used to store arguments to be passed to tmbox by the box:export method. | ||
| Line 30: | Line 31: | ||
end | end | ||
| − | function box:export( | + | function box:export() |
if not mw.title.getCurrentTitle().isTalkPage and not self.demo then | if not mw.title.getCurrentTitle().isTalkPage and not self.demo then | ||
return '<span class="error">Error: Protected edit requests can only be made on the talk page.</span>[[Category:Non-talk pages with an edit request template]]' | return '<span class="error">Error: Protected edit requests can only be made on the talk page.</span>[[Category:Non-talk pages with an edit request template]]' | ||
| Line 37: | Line 38: | ||
-- String together page names provided | -- String together page names provided | ||
local titles = {} | local titles = {} | ||
| − | for k, v in pairs(args) do | + | for k, v in pairs(self.args) do |
if type(k) == 'number' then | if type(k) == 'number' then | ||
| − | table.insert(titles, args[k]) | + | table.insert(titles, '[[' .. self.args[k] .. ']]') |
end | end | ||
end | end | ||
| − | local | + | local pagesText |
| − | for i, v in pairs(titles) do | + | if #titles == 1 and mw.title.getCurrentTitle().subjectNsText == titles[1] then |
| − | + | pagesText = '' | |
| − | + | else | |
| − | + | for i, v in pairs(titles) do | |
| − | + | if i == 1 then | |
| − | + | pagesText = ' to ' .. titles[1] | |
| − | + | elseif i == #titles then | |
| − | + | pagesText = pagesText .. ' and ' .. v | |
| + | else | ||
| + | pagesText = pagesText .. ', ' .. v | ||
| + | end | ||
| + | end | ||
end | end | ||
| − | self:setArg('smalltext', "This [[Wikipedia:Edit requests|edit request]] | + | self:setArg('smalltext', "This [[Wikipedia:Edit requests|edit request]]" .. pagesText .. |
" has been answered. Set the <code style=\"white-space: nowrap;\">|answered=</code> or <code style=\"white-space: nowrap;\">|ans=</code> parameter to '''no''' to reactivate your request.") | " has been answered. Set the <code style=\"white-space: nowrap;\">|answered=</code> or <code style=\"white-space: nowrap;\">|ans=</code> parameter to '''no''' to reactivate your request.") | ||
self:setArg('small', true) | self:setArg('small', true) | ||
| Line 74: | Line 79: | ||
boxType = activeBox | boxType = activeBox | ||
end | end | ||
| − | local requestBox = boxType.new(protectionType) | + | local requestBox = boxType.new(protectionType, args) |
| − | return requestBox:export( | + | return requestBox:export() |
end | end | ||
Revision as of 21:20, 11 March 2020
Documentation for this module may be created at Module:Protected edit request/sandbox/doc
require('Module:No globals')
local yesno = require('Module:Yesno')
local makeMessageBox = require('Module: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.demo then
return '<span class="error">Error: Protected edit requests can only be made on the talk page.</span>[[Category:Non-talk pages with an edit request template]]'
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 == 1 and mw.title.getCurrentTitle().subjectNsText == titles[1] then
pagesText = ''
else
for i, v in pairs(titles) do
if i == 1 then
pagesText = ' to ' .. titles[1]
elseif i == #titles then
pagesText = pagesText .. ' and ' .. v
else
pagesText = pagesText .. ', ' .. v
end
end
end
self:setArg('smalltext', "This [[Wikipedia:Edit requests|edit request]]" .. pagesText ..
" has been answered. Set the <code style=\"white-space: nowrap;\">|answered=</code> or <code style=\"white-space: nowrap;\">|ans=</code> parameter to '''no''' to reactivate your request.")
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, true) then
if not activeBox then
activeBox = require('Module: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('Module:Arguments').getArgs
end
return function (frame)
return t._main(k, getArgs(frame, {wrappers = {'Template:Edit fully-protected', 'Template:Edit semi-protected', 'Template:Edit template-protected', 'Template:Edit extended-protected', 'Template:Edit interface-protected'}}))
end
end
return setmetatable(p, mt)