Difference between revisions of "Module:Mailing list member"

From blackwiki
Jump to navigation Jump to search
blackwiki>Jackmcbarn
(overhaul how text is written out)
blackwiki>Jackmcbarn
(remove functionality that will be lost when/if this is converted to a wikitext template - see Wikipedia:Templates for discussion/Log/2020 September 10#Module:Mailing list member)
Line 1: Line 1:
 
local yesno = require('Module:Yesno')
 
local yesno = require('Module:Yesno')
 
local pageCutoffs = {
 
-- minimum inactive cutoff, notarget cutoff, maximum inactive cutoff
 
-- - minimum inactive cutoff and maximum inactive cutoff control
 
--  the colours used to highlight an inactive member
 
-- - notarget cutoff controls when a member is no longer sent a mass
 
--  mailing
 
['Wikipedia:WikiProject Maine/members'] = { '-10 years', '-10 years', '-10 years' },
 
['Wikipedia:WikiProject Articles for creation/Participants/Message'] = { '-1 year', '-1 year', '-2 years' },
 
['Wikipedia:WikiProject Baseball/Outreach/Newsletter/Subscriber list'] = { '-1 year', '-2 months', '-2 years' },
 
['Template:Mailing list member/testcases'] = { '-1 year', '-18 months', '-2 years' }
 
}
 
 
local defaultCutoffs = { '-1 year', '-1 year', '-2 years' }
 
  
 
local p = {}
 
local p = {}
 
local function parenText(text, color, class)
 
return string.format(
 
' <span%s style="font-size:0.95em;font-weight:bold;color:%s">(%s)</span>',
 
class and (' class="' .. class .. '"') or '',
 
color,
 
text
 
)
 
end
 
  
 
function p.main(frame)
 
function p.main(frame)
 
local pargs = frame:getParent().args
 
local pargs = frame:getParent().args
local lang = mw.getContentLanguage()
 
local notarget = yesno(pargs.notarget)
 
 
local page, retval
 
local page, retval
 
if pargs.user then
 
if pargs.user then
 
page = 'User talk:' .. pargs.user
 
page = 'User talk:' .. pargs.user
if yesno(pargs.blocked, true) then
+
retval = frame:expandTemplate{title = 'User', args = { pargs.user }}
retval = frame:expandTemplate{title = 'Userblocked', args = { pargs.user }} .. parenText('Blocked since: ' .. lang:formatDate('F Y', pargs.blocked), 'red', 'blocked-member')
 
if notarget == nil then
 
notarget = true
 
end
 
else
 
retval = frame:expandTemplate{title = 'User', args = { pargs.user }}
 
end
 
 
elseif pargs.page then
 
elseif pargs.page then
 
page = pargs.page
 
page = pargs.page
Line 47: Line 15:
 
return '<span class="error">No user or page defined</span>'
 
return '<span class="error">No user or page defined</span>'
 
end
 
end
if yesno(pargs.inactive, true) then
+
if yesno(pargs.notarget) then
local cutoffs = pageCutoffs[mw.title.getCurrentTitle().prefixedText] or defaultCutoffs
+
return retval .. ' <span style="font-size:0.95em;font-weight:bold;color:#555">(Not receiving mass messages)</span>'
local inactiveTS = tonumber(lang:formatDate('U', pargs.inactive))
 
local minInactive = tonumber(lang:formatDate('U', cutoffs[1]))
 
local notargetInactive = tonumber(lang:formatDate('U', cutoffs[2]))
 
local maxInactive = tonumber(lang:formatDate('U', cutoffs[3]))
 
if notarget == nil then
 
notarget = inactiveTS < notargetInactive
 
end
 
local text, color = 'Inactive since'
 
if inactiveTS < maxInactive then
 
color = 'red'
 
elseif inactiveTS < minInactive then
 
color = '#555'
 
else
 
color = '#080'
 
text = 'Last active'
 
end
 
retval = retval .. parenText(string.format(
 
'%s: %s',
 
text,
 
lang:formatDate('F Y', pargs.inactive)
 
), color, 'inactive-member')
 
end
 
if notarget then
 
return retval .. parenText('Not receiving mass messages', '#555')
 
 
end
 
end
 
frame:callParserFunction('#target', page)
 
frame:callParserFunction('#target', page)

Revision as of 21:55, 10 September 2020

local yesno = require('Module:Yesno')

local p = {}

function p.main(frame)
	local pargs = frame:getParent().args
	local page, retval
	if pargs.user then
		page = 'User talk:' .. pargs.user
		retval = frame:expandTemplate{title = 'User', args = { pargs.user }}
	elseif pargs.page then
		page = pargs.page
		retval = '[[' .. page .. ']]'
	else
		return '<span class="error">No user or page defined</span>'
	end
	if yesno(pargs.notarget) then
		return retval .. ' <span style="font-size:0.95em;font-weight:bold;color:#555">(Not receiving mass messages)</span>'
	end
	frame:callParserFunction('#target', page)
	return retval
end

return p