Module:Vandal-m

Documentation for this module may be created at Module:Vandal-m/doc

Documentation for this module may be created at Module:Vandal-m/doc

-- This module implements {{vandal-m}}.

local p = {}

local su = require('Module:Su')._main

local function makeWikilink(link, display)
	if display then
		return string.format('[[%s|%s]]', link, display)
	else
		return string.format('[[%s]]', link)
	end
end

local function makeUrlLink(data, display)
	local url = mw.uri.new(data)
	url = tostring(url)
	return string.format('[%s %s]', url, display)
end

local function makeFullUrlLink(page, query, display)
	local url = mw.uri.fullUrl(page, query)
	url = tostring(url)
	return string.format('[%s %s]', url, display)
end

local function getTitle(page)
	local success, title = pcall(mw.title.new, page)
	if success then
		return title
	else
		return nil
	end
end

local function getLinkIfExists(pagePrefix, username, display)
	local title = getTitle(pagePrefix .. username)
	if title and title.exists then
		return makeWikilink(title.prefixedText, display)
	end
end

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame, {parentOnly = true})
	return p._main(args)
end

function p._main(args)
	local username, usernameEncoded
	do
		local lang = mw.language.getContentLanguage()
		username = args.User or args[1] or 'Example'
		username = lang:ucfirst(username)
		usernameEncoded = mw.uri.encode(username)
	end

	local links = {}

	-- Talk
	links[#links + 1] = makeWikilink('User talk:' .. username, 'talk')

	-- Contribs
	links[#links + 1] = makeWikilink(
		'Special:Contributions/' .. username,
		'<span title="Contributions: ' .. username .. '">contribs</span>'
	)

	-- Block log and autoblocks
	do
		local blockLogLink = makeFullUrlLink(
			'Special:Log/block',
			{page = 'User:' .. username},
			'<span title="Blocklog: '
				.. username
				.. '" style="color:#002bb8">block&nbsp;log</span>'
		)
		local autoblocksLink = makeUrlLink(
			{
				host = 'tools.wmflabs.org',
				path = '/xtools/autoblock/',
				query = {user = username}
			},
			'<sup title="Autoblock: '
				.. username
				.. '" style="color:#002bb8">auto</sup>'
		)
		links[#links + 1] = blockLogLink .. autoblocksLink
	end

	-- Ban listing
	if args.ban then
		links[#links + 1] = makeWikilink(
			mw.site.namespaces[4].name .. 'List of banned users#' .. username,
			'ban'
		)
	end

	-- Arbitration requests
	links[#links + 1] = getLinkIfExists(
		'Wikipedia:Requests for arbitration/',
		username,
		'rfarb'
	)

	-- Requests for comment
	links[#links + 1] = getLinkIfExists(
		'Wikipedia:Requests for comment/',
		username,
		'rfcuser'
	)

	-- Long-term abuse
	links[#links + 1] = getLinkIfExists(
		'Wikipedia:Long term abuse/',
		username,
		'lta'
	)

	-- Requests for checkuser
	links[#links + 1] = getLinkIfExists(
		'Wikipedia:Requests for checkuser/Case/',
		username,
		'rfcu'
	)

	-- Sockpuppet investigations
	links[#links + 1] = getLinkIfExists(
		'Wikipedia:Sockpuppet investigations/',
		username,
		'spi'
	)

	-- Suspected sockpuppets
	links[#links + 1] = getLinkIfExists(
		'Wikipedia:Suspected sock puppets/',
		username,
		'ssp'
	)

	-- Sockpuppet categories
	-- There isn't a seperator between these and the suspected sockpuppets link,
	-- so we will add them later instead of adding them to the links table.
	local sockCategoryLinks
	do
		local confirmed = getTitle(
			'Category:Wikipedia sockpuppets of ' .. username
		)
		local suspected = getTitle(
			'Category:Suspected Wikipedia sockpuppets of ' .. username
		)
		if confirmed and confirmed.exists or suspected and suspected.exists then
			local sup, sub
			if confirmed and confirmed.exists then
				sup = '&ensp;' .. makeWikilink(
					':' .. confirmed.prefixedText,
					'confirmed&nbsp;socks'
				)
			end
			if suspected and suspected.exists then
				sub = '&ensp;' .. makeWikilink(
					':' .. suspected.prefixedText,
					'suspected&nbsp;socks'
				)
			end
			sockCategoryLinks = su(sup, sub)
		end
	end

	-- Add the user link and the outer span tags.
	return string.format(
		'<span id="%s" class="plainlinks">%s (%s%s)</span>',
		username,
		makeWikilink('User:' .. username, username),
		table.concat(links, ' &bull; '),
		sockCategoryLinks or ''
	)
end

return p


Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.