Module:Luxotool: Difference between revisions
Appearance
Content deleted Content added
Count Count (talk | contribs) add spamcheck tool, fix |
Count Count (talk | contribs) stalk toy -> xwiki block log |
||
| Line 97: | Line 97: | ||
')</sup>', |
')</sup>', |
||
middot, |
middot, |
||
extlink( |
|||
link('toollabs:meta/stalktoy/' .. username, nil, 'ST', 'Stalk toy'), |
|||
'https://allblocksever.toolforge.org/?target=' .. mw.uri.encode(username), |
|||
'xwiki block log', |
|||
'xwiki block log' |
|||
), |
|||
middot, |
middot, |
||
extlink( |
extlink( |
||
Revision as of 07:55, 22 July 2026
Module documentation
local p = {}
local getArgs = require('Module:Arguments').getArgs
local isIpOrRange = require('Module:IPAddress').isIpOrRange
local middot = ' • '
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'),
' <sup>(',
globalContribsAlt,
')</sup>',
middot,
extlink(
'https://allblocksever.toolforge.org/?target=' .. mw.uri.encode(username),
'xwiki block log',
'xwiki block log'
),
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'
),
middot,
extlink(
mw.uri.fullUrl('toollabs:guc', {user = username, by = 'date', blocks = 'true'}),
'xwiki-date',
'GUC by date'
),
' <sup>(',
extlink(
'https://xtools.wmflabs.org/globalcontribs/' .. mw.uri.encode(username, 'PATH'),
'alt',
'XTools'
),
middot,
'[[Special:GlobalContributions/' .. username .. '|mw]]',
')</sup>',
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