-- This module implements . local p = {} local su = require('Modül:Su')._main local function makeWikilink(link, display) if display then return string.format('%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('Modül: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, ) -- Block log and autoblocks do local blockLogLink = makeFullUrlLink( 'Special:Log/block', {page = 'User:' .. username}, ) local autoblocksLink = makeUrlLink( { host = 'tools.wmflabs.org', path = '/xtools/autoblock/', query = {user = username} }, ) 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 = .. makeWikilink( ':' .. confirmed.prefixedText, 'confirmedsocks' ) end if suspected and suspected.exists then sub = .. makeWikilink( ':' .. suspected.prefixedText, 'suspectedsocks' ) end sockCategoryLinks = su(sup, sub) end end -- Add the user link and the outer span tags. return string.format( , username, makeWikilink('User:' .. username, username), table.concat(links, ' '), sockCategoryLinks or '' ) end return p