To edit the documentation or categories for this module, click here.
-- this is handled separately so that it can be easily cloned between wikis
local wiki = require('Module:Wiki')
local sep = '%s*,%s*'
local SETTINGS = {
order = { 'site', 'website', 'askfm', 'discord', 'facebook', 'gapo', 'esl', 'lolpros', 'instagram', 'reddit', 'subreddit', 'snapchat', 'stream', 'twitch-team', 'twitter', 'vk', 'weibo', 'youtube', 'videoarchive', 'fanpage' },
data = {
site = { display = 'Homepage', prefix = '' },
website = { display = 'Homepage', prefix = '' },
askfm = { display = 'ask.fm', prefix = 'https://ask.fm/' },
discord = { display = 'Discord Server', prefix = '' },
facebook = { display = 'Facebook Fanpage', prefix = '' },
instagram = { display = 'Instagram', prefix = 'https://instagram.com/' },
irc = { display = 'IRC Channel', prefix = '' },
lolpros = { display = 'LOLPros', prefix = '' },
subreddit = { display = 'Subreddit', prefix = 'http://www.reddit.com/r/' },
reddit = { display = 'reddit', prefix = 'https://www.reddit.com/user/' },
snapchat = { display = 'Snapchat', prefix = 'https://www.snapchat.com/add/' },
stream = { display = '', prefix = '' },
['twitch-team'] = { display = 'Twitch Team', prefix = '' },
twitter = { display = 'Twitter', prefix = 'https://www.twitter.com/' },
vk = { display = 'VKontakte', prefix = '' },
weibo = { display = 'Weibo', prefix = '' },
youtube = { display = 'Youtube', prefix = '' },
videoarchive = { display = 'Video Archive', prefix = '' },
fanpage = { display = 'Fan Page', prefix = '' },
esl = { display = 'ESL', prefix = '' },
gapo = { display = 'Gapo', prefix = 'https://gapo.vn/' },
}
}
local STREAMLIST = {
['twitch.tv/'] = 'Twitch',
['azubu.tv/'] = 'Azubu',
['hitbox.tv/'] = 'Hitbox',
['afreecatv.com/'] = 'Afreeca',
['douyu.com/'] = 'Douyu',
['cube.tv/'] = 'CubeTV',
['mobcrush.com/'] = 'Mobcrush',
['gaming.youtube.tv/'] = 'Youtube Gaming',
['openrec.tv'] = 'OPENREC',
['fb.gg'] = 'Facebook Gaming',
['facebook'] = 'Facebook Gaming',
['nimo.tv'] = 'NimoTV',
}
local p = {}
local h = {}
function p.makeSocialSection(args)
tbl = {}
for k, v in ipairs(SETTINGS.order) do
if args[v] then
local data = SETTINGS.data[v]
if v == 'stream' then
tbl[#tbl+1] = h.stream(args.stream)
elseif data.hover then
tbl[#tbl+1] = tostring(h.makeHoverIcon(args, data, v))
else
tbl[#tbl+1] = h.makeStandardIcon(data.display, data.display, data.prefix, args[v])
end
end
end
if args.otherwikis then
for _, v in ipairs(mw.text.split(args.otherwikis,sep)) do
tbl[#tbl+1] = wiki.onlyimagelinked(v, { titletarget = args.id })
end
end
return tbl
end
function h.stream(link)
local platform = 'Livestream'
for k, v in pairs(STREAMLIST) do
if string.find(link, k, 1, true) then
platform = v
break
end
end
return h.makeStandardIcon('Stream', platform, '', link)
end
function h.makeStandardIcon(name, image, prefix, link)
return string.format(
'<span title="%s">[[File:Infobox %slogo std.png|link=%s%s]]</span>',
name,
image,
prefix,
link:gsub(' ', '_')
)
end
function h.makeHoverIcon(args, data, v)
local span = mw.html.create('span')
:attr('title',data.display)
local outer = span:tag('div')
:addClass('popup-content-outer')
:css('margin-left','0')
:wikitext(h.makeStandardIcon(data.display, data.display, data.prefix, ''))
local inner = outer:tag('div')
:addClass('popup-content-inner')
:addClass('popup-content-inner-pretty')
:addClass('toggle-section-hidden')
:css({
['margin-left'] = '-56px',
width = '120px'
})
:wikitext(args[v])
return span
end
return p