Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Documentation for this module may be created at Module:Global lock/sandbox/doc

local p = {}

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

local middot = ' • '

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

function p.multi_lock(frame)
	local args = getArgs(frame)
	local text = ''
	local users = {}
	local params = {}
	local wpTarget = ''
	
	for k, v in pairs(args) do
		if v and (v ~= '') then
			if type(k) == 'number' then
				users[k] = mw.text.trim(v)
			else
				params[k] = mw.text.trim(v)
			end
		end
	end
	
	if #users == 0 then
		error('You must specify at least one user', 0)
	end
	
	for k, v in pairs(users) do
		wpTarget = wpTarget .. v .. '\n'
		params[1] = v
		text = text .. '<li>' .. p._lock_hide(params) .. '</li>'
	end
	
	wpTarget = mw.text.trim(wpTarget)
	
	local link = tostring(mw.uri.fullUrl('Special:MultiLock', {wpTarget=wpTarget}))
	
	text = '<b class="plainlinks">[' .. link .. ' Lock all]:</b><ul>' .. text .. '</ul>'
	
	return text
end

function p.lock_hide(frame)
	local args = getArgs(frame, {
		trim = true,
		removeBlanks = true
	})
	return p._lock_hide({
		[1] = args[1],
		[2] = args[2],
		hidename = args['hidename']
	})
end

-- For attribution: [[Template:LockHide]]
function p._lock_hide(args)
	local username = args[1] or 'Example user'
	local interwiki = args[2] or ''
	local hidename = not not args['hidename'] or false
	local hide = function(text, fallback)
		return hidename and '<abbr title="name hidden">' .. (
			fallback and '<i>' .. text .. '</i>' or text
		) .. '</abbr>' or (fallback or text)
	end
	
	local srga = mw.title.getCurrentTitle():isSubpageOf(
		mw.title.new('Steward requests/Global')
	)
	if srga then
		return '[[Special:CentralAuth/' .. username .. '|' .. (
			hide('name hidden', username)
		) .. ']]'
	end
	
	local text = {
		'<span class="plainlinks">',
		extlink(
			mw.title.new(interwiki .. 'User:' .. username):fullUrl(),
			hide('name hidden', username)
		),
		'&nbsp;',
		'(',
		'[[' .. interwiki .. 'User talk:' .. username .. '|' ..
			hide('talk') ..
		']]',
		middot,
		'[[' .. interwiki .. 'Special:Contributions/' .. username .. '|' ..
			hide('contribs') ..
		']]',
		middot,
		'[[' .. interwiki .. 'Special:BlockIP/' .. username .. '|' ..
			hide('block') ..
		']]',
		middot,
		'[[Special:CentralAuth/' .. username .. '|' ..
			hide('CA') ..
		']]',
		middot,
		'<span title="Login Wiki Checkuser" class="tpl-permalink-reason">' ..
			extlink(
				tostring(mw.uri.new('//login.miraheze.org/w/index.php'):extend({
					title = 'Special:CheckUser',
					user = username,
					uselang = 'en',
					reason = 'per [[:m:Special:Redirect/page/' .. mw.title.getCurrentTitle().id .. '|request]]'
				})),
				'<b>lwcheckuser</b>'
			) ..
		'</span>',
		')',
		'</span>',
		'__NOINDEX__'
	}
	return table.concat(text, '')
end

return p
Cookies help us deliver our services. By using our services, you agree to our use of cookies.