Jump to content

Module:Luxotool: Difference between revisions

From Meta, a Wikimedia project coordination wiki
Content deleted Content added
stalk toy -> xwiki block log
-xwiki-date +xwiki-blocks for accounts
 
Line 99: Line 99:
extlink(
extlink(
'https://allblocksever.toolforge.org/?target=' .. mw.uri.encode(username),
'https://allblocksever.toolforge.org/?target=' .. mw.uri.encode(username),
'xwiki block log',
'xwiki blocks',
'xwiki block log'
'xwiki blocks'
),
),
middot,
middot,
Line 168: Line 168:
'xwiki-contribs',
'xwiki-contribs',
'GUC by wiki'
'GUC by wiki'
),
middot,
extlink(
mw.uri.fullUrl('toollabs:guc', {user = username, by = 'date', blocks = 'true'}),
'xwiki-date',
'GUC by date'
),
),
'&nbsp;<sup>(',
'&nbsp;<sup>(',
Line 184: Line 178:
'[[Special:GlobalContributions/' .. username .. '|mw]]',
'[[Special:GlobalContributions/' .. username .. '|mw]]',
')</sup>',
')</sup>',
middot,
extlink(
'https://allblocksever.toolforge.org/?target=' .. mw.uri.encode(username),
'xwiki blocks',
'xwiki blocks'
),
middot,
middot,
link(
link(

Latest revision as of 08:05, 22 July 2026

Module documentation
local p = {}

local getArgs = require('Module:Arguments').getArgs
local isIpOrRange = require('Module:IPAddress').isIpOrRange

local middot = '&nbsp;&bull;&#32;'
local reason = 'per [[:m:Special:Redirect/page/' .. mw.title.getCurrentTitle().id .. '|request]]'

local extlink = function(url, text, title)
	return '<span title="' .. title .. '">[' .. tostring(url) .. (text and ' ' .. text or '') .. ']</span>'
end
local link = function(page, param, text, title)
	return extlink(mw.uri.fullUrl(page, param), text, title)
end

function p.main(frame)
	local args = getArgs(frame, {
		trim = true,
		removeBlanks = true
	})
	return p._main(args)
end

function p._main(args)
	local username = args[1] or error('You must specify a username or IP', 0)
	local diff = args['diff']

	-- Branch 1: SRGA subpage — simple GUC link
	local srga = mw.title.getCurrentTitle():isSubpageOf(
		mw.title.new('Steward requests/Global')
	)
	if srga then
		return '<span class="plainlinks">' ..
			extlink(
				mw.uri.fullUrl('toollabs:guc', {user = username, by = 'date', blocks = 'true'}),
				username,
				'GUC'
			) ..
			'</span>'
	end

	local IpOrRange = isIpOrRange({args = {username}})

	-- Branch 2: IP or range
	if IpOrRange == 'ip' or IpOrRange == 'range' then
		return p._ip_output(username, IpOrRange, diff)
	end

	-- Branch 3: User (default)
	return p._user_output(username, diff)
end

function p._difflink(diff)
	if diff then
		return '<span style="background:lightgrey;"> [' .. diff .. ' difflink]</span>'
	end
	return ''
end

function p._lwcheckuser(username)
	return extlink(
		tostring(mw.uri.new('//login.wikimedia.org/w/index.php'):extend({
			title = 'Special:CheckUser',
			user = username,
			uselang = 'en',
			reason = reason,
		})),
		'<b>lwcheckuser</b>',
		'Login Wiki CheckUser'
	)
end

function p._ip_output(username, IpOrRange, diff)
	local globalContribsAlt
	if IpOrRange == 'range' then
		globalContribsAlt = extlink(
			'https://xtools.wmflabs.org/globalcontribs/ipr-' .. mw.uri.encode(username, 'PATH'),
			'old',
			'XTools'
		)
	else
		globalContribsAlt = extlink(
			mw.uri.fullUrl('toollabs:guc', {user = username, by = 'wiki', blocks = 'true'}),
			'old',
			'GUC'
		)
	end

	local text = {
		'<span style="color:#730000;">',
		username,
		'</span> ',
		'<span class="plainlinks tpl-permalink-reason" style="font-size:90%;">',
		link('Special:GlobalContributions/' .. username, nil, 'global-contribs', 'Global contributions'),
		'&nbsp;<sup>(',
		globalContribsAlt,
		')</sup>',
		middot,
		extlink(
			'https://allblocksever.toolforge.org/?target=' .. mw.uri.encode(username),
			'xwiki blocks',
			'xwiki blocks'
		),
		middot,
		extlink(
			'https://whatismyipaddress.com/ip/' .. mw.uri.encode(username, 'PATH'),
			'IP lookup',
			'IP lookup'
		),
		middot,
		extlink(
			tostring(mw.uri.new('https://whois-referral.toolforge.org/gateway.py'):extend({
				lookup = 'true',
				ip = username,
			})),
			'WHOIS',
			'WHOIS'
		),
		middot,
		extlink(
			'https://www.robtex.com/ip-lookup/' .. mw.uri.encode(username, 'PATH'),
			'robtex',
			'robtex'
		),
		middot,
		link(
			'Special:GlobalBlock',
			{
				wpAddress = username,
				wpExpiry = 'other',
				wpReason = 'other',
				['wpReason-other'] = reason,
			},
			'gblock',
			'global block'
		),
		p._difflink(diff),
		middot,
		link('Special:GlobalBlockList/' .. username, nil, 'glist', 'global block list'),
		middot,
		link('Special:AbuseLog', {wpSearchUser = username}, 'abuselog', 'abuse log'),
		middot,
		extlink(
			'https://bullseye.toolforge.org/ip/' .. mw.uri.encode(username, 'PATH'),
			'bullseye',
			'bullseye'
		),
		middot,
		extlink(
			'https://ytools.toolforge.org/ip/?ip=' .. mw.uri.encode(username, 'PATH'),
			'IP info',
			'IP info'
		),
		middot,
		p._lwcheckuser(username),
		'</span>',
	}
	return table.concat(text, '')
end

function p._user_output(username, diff)
	local text = {
		'[[Special:Contributions/' .. username .. '|' .. username .. ']]',
		' ',
		'<span class="plainlinks tpl-permalink-reason" style="font-size:90%;">',
		extlink(
			mw.uri.fullUrl('toollabs:guc', {user = username, by = 'wiki', blocks = 'true'}),
			'xwiki-contribs',
			'GUC by wiki'
		),
		'&nbsp;<sup>(',
		extlink(
			'https://xtools.wmflabs.org/globalcontribs/' .. mw.uri.encode(username, 'PATH'),
			'alt',
			'XTools'
		),
		middot,
		'[[Special:GlobalContributions/' .. username .. '|mw]]',
		')</sup>',
		middot,
		extlink(
			'https://allblocksever.toolforge.org/?target=' .. mw.uri.encode(username),
			'xwiki blocks',
			'xwiki blocks'
		),
		middot,
		link(
			'Special:CentralAuth',
			{
				target = username,
				wpReason = 'other',
				['wpReason-other'] = reason,
			},
			'CA',
			'CentralAuth'
		),
		middot,
		link(
			'Special:GlobalBlock',
			{
				wpAddress = username,
				wpExpiry = 'infinite',
				wpReason = 'other',
				['wpReason-other'] = reason,
			},
			'gblock',
			'global block'
		),
		p._difflink(diff),
		middot,
		link('Special:GlobalBlockList/' .. username, nil, 'glist', 'global block list'),
		middot,
		link('Special:AbuseLog', {wpSearchUser = username}, 'abuselog', 'abuse log'),
		middot,
		extlink(
			'https://spamcheck.toolforge.org/by-user?q=' .. mw.uri.encode(username, 'PATH'),
			'SC',
			'Spamcheck'
		),
		middot,
		p._lwcheckuser(username),
		'</span>',
	}
	return table.concat(text, '')
end

return p