Module:User Wikimedia project
Jump to navigation
Jump to search
This module depends on the following other modules: |
Logic for {{user Wikimedia project}} and {{user admin}}.
require('strict')
local p = {} --p stands for package
local getArgs = require('Module:Arguments').getArgs
local language_name = require('Module:ISO 639').language_name
local userbox = require('Module:Userbox').userbox
local project_data = {
['b'] = {['name'] = 'Wikibooks'},
['commons'] = {['name'] = 'Wikimedia Commons', ['namespace'] = 'Commons'},
['d'] = {['name'] = 'Wikidata'},
['m'] = {['name'] = 'Meta'},
['MW'] = {['name'] = 'MediaWiki'},
['n'] = {['name'] = 'Wikinews'},
['q'] = {['name'] = 'Wikiquote'},
['s'] = {['name'] = 'Wikisource'},
['v'] = {['name'] = 'Wikiversity'},
['w'] = {['name'] = 'Wikipedia'},
['wikispecies'] = {['name'] = 'Wikispecies'},
['wikt'] = {['name'] = 'Wiktionary'}
}
local function link_data(project, lang_code)
local link_prefix
local project_link
if not project then
return nil
end
if lang_code then
link_prefix = project .. ':' .. lang_code
project_link = '[[:' .. link_prefix .. ':|' .. language_name(lang_code, 'Unrecognized Language') .. ' ' .. project_data[project]['name'] .. ']]'
else
link_prefix = project
project_link = '[[:' .. link_prefix .. ':|' .. project_data[project]['name'] .. ']]'
end
return {['link_prefix'] = link_prefix, ['project_link'] = project_link}
end
function p._user(box_args)
local args = box_args or {}
-- Info
local username = args[1] or args.username or mw.title.getCurrentTitle().rootText
args[1] = nil
local pagetext = args[2] or 'a page'
args[2] = nil
local lang_code = args.lang_code
local project = args.project or 's'
local link_prefix = link_data(project, lang_code).link_prefix
local project_link = link_data(project, lang_code).project_link
local user_link = '[[' .. link_prefix .. ':User:' .. username .. '|' .. pagetext .. ']]'
args.info = 'This user has ' .. user_link .. ' on ' .. project_link .. '.'
-- Style
args['id-c'] = args['id-c'] or '#ffffff'
args['info-c'] = args['info-c'] or '#f6f6f6'
args['border-c'] = args['border-c'] or '#bbbbbb'
-- Id
args.id = '[[File:' .. (args.image or 'Wikisource-logo.svg') .. '|x40px]]'
-- Userbox
return userbox(args)
end
function p.user(frame)
return p._user(getArgs(frame))
end
function p._user_admin(box_args)
local args = box_args or {}
-- Info
local username = args[1] or args.username or mw.title.getCurrentTitle().rootText
args[1] = nil
local lang_code = args.lang_code
local project = args.project or 's'
local project_namespace = project_data[project]['namespace'] or project_data[project]['name']
local cat = ''
local testing = mw.title.getCurrentTitle().subpageText == 'sandbox' or mw.title.getCurrentTitle().subpageText == 'testcases'
if mw.title.getCurrentTitle().nsText == 'User' or testing then
cat = '[[Category:' .. (args.catname or project_data[project]['name']) .. ' administrators]]'
end
local link_prefix = link_data(project, lang_code).link_prefix
local project_link = link_data(project, lang_code).project_link
local user_link = '[[' .. link_prefix .. ':User:' .. username .. '|This user]]'
local admin_link = "'''[[" .. link_prefix .. ":" .. project_namespace .. ":Administrators|administrator]]'''"
local verify_link = '[' .. tostring(mw.uri.fullUrl(link_prefix .. ':Special:ListUsers', 'limit=1&username=' .. mw.uri.encode(username, 'WIKI'))) .. ' verify]'
args.info = user_link .. ' is an ' .. admin_link .. ' on ' .. project_link .. '. (<span class="plainlinks">' .. verify_link .. '</span>)' .. cat
-- Style
args['id-c'] = args['id-c'] or '#ffffff'
args['info-c'] = args['info-c'] or '#eaf3ff'
args['border-c'] = args['border-c'] or '#3366cc'
-- Id
args.id = '[[File:' .. (args.image or 'Wikisource Administrator.svg') .. '|x40px]]'
-- Userbox
return userbox(args)
end
function p.user_admin(frame)
return p._user_admin(getArgs(frame))
end
return p