ElEditors, Interface administrators, Administrators
70,980
edits
No edit summary |
No edit summary |
||
(44 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
local p = {} | local p = {} | ||
local get_char_list = require('Module:CharList').main | |||
-- Main process | -- Main process | ||
function p.main(frame) | function p.main(frame) | ||
local args = getArgs(frame); | local args = getArgs(frame); | ||
local | local char_outer = mw.html.create('div'):addClass('character-banner-outer'):attr('data-lang', args.lang) | ||
local | local char_banner = mw.html.create('div'):addClass('character-banner-wrap border-color tone-2') | ||
local | local char_list = get_char_list(frame, args.lang) | ||
local lang = ''; | |||
if args.lang then lang = '/' .. args.lang end | |||
local is_localized = lang and lang ~= '' | |||
local char_order = char_list[1] | |||
local not_exist = char_list[3] | |||
local char_list = char_list[2] | |||
function split_lang(str) | |||
local lang_l = is_localized and lang or '' | |||
return is_localized and split(str, lang_l .. '|') or str | |||
end | |||
function str_localized(str) | |||
return string.find(str, (lang or '') .. '|') | |||
end | |||
local base_arg = args[1] or 'Elsword' | |||
local base_name = str_localized(base_arg) and split_lang(base_arg)[1] or base_arg | |||
local char_tree = mw.html.create('div'):addClass('char-banner-tree') | |||
local out = '' | |||
local char, file_name, link, nopath, nopathnojob, entry, image_arg, icon_str; | |||
for char_iter=1, #char_order, 1 do | |||
local base, jobs = char_order[char_iter], {{}, {}, {}} | |||
local base_name = split_lang(base)[1] or base | |||
local tree = mw.html.create('div'):addClass('char-banner-tree'):attr('data-base', base_name:gsub('/', '')):attr('data-display-base', split_lang(base)[2] or base) | |||
if | for path_iter=1, 4, 1 do | ||
local path = char_list[base][path_iter] | |||
for job_iter=1, 3, 1 do | |||
local job = path[job_iter] | |||
local out_table = jobs[job_iter] | |||
if job == nil and jobs[1][path_iter] ~= nil then | |||
job = jobs[1][path_iter] | |||
end | |||
if job ~= nil then | |||
table.insert(out_table, job) | |||
end | |||
end | end | ||
if ( | end | ||
link = '|link=' .. | for job_iter, job_name in ipairs(jobs) do | ||
icon_str = '' | for path_iter, path_name in ipairs(job_name) do | ||
-- Foreign languages | |||
local icon_link_char_name = path_name; | |||
local normal_link_char_name = path_name; | |||
if str_localized(path_name) then | |||
local name_split = split_lang(path_name) | |||
icon_link_char_name = name_split[1]:gsub(':', '') | |||
path_name = name_split[2] | |||
normal_link_char_name = name_split[1] .. lang | |||
end | |||
icon_link_char_name = icon_link_char_name:gsub(':', '') | |||
local icon_str = 'Icon - ' | |||
local link = '|link=' .. normal_link_char_name | |||
local unreleased = indexOf(normal_link_char_name, not_exist) | |||
if unreleased then | |||
icon_str = '' | |||
icon_link_char_name = 'Dunno' | |||
link = '|link=#!' | |||
end | |||
local icon_with_link = '[[File:' .. icon_str .. icon_link_char_name .. '.png' .. link .. ']]' | |||
local img = tree:tag('div'):addClass('char-banner-tree-image'):attr('data-class-name', path_name):wikitext(icon_with_link) | |||
if unreleased then | |||
img:attr('data-unreleased', 'true') | |||
end | |||
end | end | ||
end | |||
char_banner:node(tree) | |||
out = not_exist | |||
end | |||
local styles = frame:preprocess('{{#css:MediaWiki:Character-Banner.css}}') | |||
local header = frame:expandTemplate{ | |||
title = 'CharHeader', | |||
args = { | |||
'Elsword', | |||
'Elsword' .. lang, | |||
'tone-8', | |||
force_title = split_lang(char_order[1])[2] | |||
} | |||
} | |||
local select_banner = mw.html.create('div'):addClass('character-banner-select tone-8 border-color') | |||
for k, v in ipairs(char_order) do | |||
local display_name = v; | |||
local actual_name = v; | |||
if str_localized(v) then actual_name = split_lang(v)[1]; display_name = split_lang(v)[2] end | |||
if actual_name == 'Lu/Ciel' then actual_name = 'LuCiel (Lu)' end | |||
local base_icon = mw.html.create('div'):attr('data-base', actual_name):attr('data-display-base', display_name or actual_name):wikitext('[[File: Icon - ' .. actual_name .. '.png]]') | |||
select_banner:node(base_icon) | |||
end | end | ||
char_outer:wikitext(header):node(char_banner:node(select_banner)) | |||
return tostring( | return styles .. tostring(char_outer) | ||
end | end | ||
return p | return p |