Module:InfoboxProto: Difference between revisions

From Elwiki
No edit summary
Tag: Reverted
No edit summary
Tag: Manual revert
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
require('Module:CommonFunctions')
require('Module:CommonFunctions')
require('Module:InfoboxProto');
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs
local p = {}
local p = {}


-- Main process
-- Main process
function p.main(frame)
function p.main(frame, title)
     local args = getArgs(frame);
     local args = getArgs(frame);
    local infobox = require('Module:InfoboxProto').main(frame, args.class);
    infobox:addClass('infobox-character');


     if (args.name1 == nil and args.name2 == nil) then
     if args.color == nil then
         addField('name', args.l_name);
        if args['Color'] ~= nil then
            args.color = args['Color'];
        else
            args.color = '{{ColorSel|Misc}}';
        end
    end
 
    if title == nil then
         title = args.name
    end
    if title == nil then
        title = args['Name']
     end
     end


     local fields = {
     local infobox = mw.html.create('div'):addClass('infobox-new');
        {
    infobox:tag('div'):addClass('infobox-new-header'):css('background-color', args.color:gsub("%#", "#")):wikitext(title);
            id = 'name',
    local img = args.image;
            localize = args.l_name,
    if args.image == nil then
            dual = true
         img = args['Image'];
        },
    end
        {
    infobox:tag('div'):addClass('infobox-new-image'):wikitext(img);
            id = 'class',
            localize = args.l_class
        },
        {
            id = 'classes',
            localize = args.l_classes,
            dual = true,
            special = true
        },
        {
            id = 'weapon',
            localize = args.l_weapon,
            dual = true
        },
        {
            id = 'age',
            localize = args.l_age,
            dual = true
        },
        {
            id = 'race',
            localize = args.l_race,
            dual = true
        },
        {
            id = 'Birth',
            localize = args.l_birth,
            dual = true
        },
        {
            id = 'Height',
            localize = args.l_height,
            dual = true
        },
        {
            id = 'Weight',
            localize = args.l_weight,
            dual = true
        },
        {
            id = 'Blood',
            localize = args.l_blood,
            dual = true
        },
        {
            id = 'ESP',
            localize = args.l_esp
        },
         {
            id = 'tree',
            localize = args.l_tree
        },
        {
            id = 'VA',
            localize = args.l_va,
            dual = true,
            collapsed = true
        },
        {
            id = 'RD',
            localize = args.l_rd,
            collapsed = true
        },
        {
            id = 'TRD',
            localize = args.l_trd,
            collapsed = true
        },
        {
            id = 'MRD',
            localize = args.l_mrd,
            collapsed = true
        },
        {
            id = 'theme',
            localize = args.l_theme,
            collapsed = true
        },
        {
            id = 'video',
            localize = args.l_video
        },
        {
            id = 'stat',
            localize = args.l_stat
        }
    }


     for k, v in ipairs(fields) do
     -- Adds a normal row
        if v.special then
    function addField(param, field_name, double, field_value, collapsed)
            addField2(v.id, v.localize)
        if args[param] ~= nil or field_value ~= nil then
        else
            local row = infobox:tag('div'):addClass('infobox-row');
            addField(v.id, v.localize, v.dual or false, v.collapsed)
            if field_name == nil then
                field_name = titleCase(param);
            end
            if field_value == nil then
                field_value = args[param];
            end
            row:tag('div'):addClass('infobox-row-title'):tag('span'):wikitext(field_name);
            local content = row:tag('div'):addClass('infobox-row-content');
            if (param == 'video' or param == 'tree' or param == 'stat') then
                content:wikitext(field_value);
                if param == 'video' then
                    content:addClass('infobox-video-row')
                end
            else
                local inner = content:tag('div')
                if collapsed then
                    inner:addClass('mw-collapsible mw-collapsed')
                end
                inner:wikitext(field_value);
            end
        end
        if double == true then
            addField2(param, field_name, collapsed)
        end
    end
 
    -- Adds a row with 2 columns
    function addField2(param, field_name, collapsed)
        if args[param .. '1'] ~= nil and args[param .. '2'] ~= nil then
            local row = infobox:tag('div'):addClass('infobox-row'):addClass('infobox-double-row');
            if field_name == nil then
                field_name = titleCase(param):gsub("%d+", '');
            end
            row:tag('div'):addClass('infobox-row-title'):wikitext(field_name);
            for i=1, 2, 1 do
                local inner = row:tag('div'):addClass('infobox-row-content'):tag('div')
                if collapsed then
                    inner:addClass('mw-collapsible mw-collapsed')
                end
                inner:wikitext(args[param .. i]);
            end
        end
    end
 
    -- For adding multiple fields.
    function addFields(fields)
        for k, v in ipairs(fields) do
            if v.special then
                addField2(v.id, v.localize)
            else
                addField(v.id, v.localize, v.dual, v.value, v.collapsed)
            end
         end
         end
     end
     end
   
 
     return tostring(infobox);
     return infobox;


end
end


return p
return p

Latest revision as of 16:25, 8 September 2023

Documentation for this module may be created at Module:InfoboxProto/doc

require('Module:CommonFunctions')
local getArgs = require('Module:Arguments').getArgs
local p = {}

-- Main process
function p.main(frame, title)
    local args = getArgs(frame);

    if args.color == nil then
        if args['Color'] ~= nil then
            args.color = args['Color'];
        else
            args.color = '{{ColorSel|Misc}}';
        end
    end

    if title == nil then
        title = args.name
    end
    if title == nil then
        title = args['Name']
    end

    local infobox = mw.html.create('div'):addClass('infobox-new');
    infobox:tag('div'):addClass('infobox-new-header'):css('background-color', args.color:gsub("%#", "#")):wikitext(title);
    local img = args.image;
    if args.image == nil then
        img = args['Image'];
    end
    infobox:tag('div'):addClass('infobox-new-image'):wikitext(img);

    -- Adds a normal row
    function addField(param, field_name, double, field_value, collapsed)
        if args[param] ~= nil or field_value ~= nil then
            local row = infobox:tag('div'):addClass('infobox-row');
            if field_name == nil then
                field_name = titleCase(param);
            end
            if field_value == nil then
                field_value = args[param];
            end
            row:tag('div'):addClass('infobox-row-title'):tag('span'):wikitext(field_name);
            local content = row:tag('div'):addClass('infobox-row-content');
            if (param == 'video' or param == 'tree' or param == 'stat') then
                content:wikitext(field_value);
                if param == 'video' then
                    content:addClass('infobox-video-row')
                end
            else
                local inner = content:tag('div')
                if collapsed then
                    inner:addClass('mw-collapsible mw-collapsed')
                end
                inner:wikitext(field_value);
            end
        end
        if double == true then
            addField2(param, field_name, collapsed)
        end
    end

    -- Adds a row with 2 columns
    function addField2(param, field_name, collapsed)
        if args[param .. '1'] ~= nil and args[param .. '2'] ~= nil then
            local row = infobox:tag('div'):addClass('infobox-row'):addClass('infobox-double-row');
            if field_name == nil then
                field_name = titleCase(param):gsub("%d+", '');
            end
            row:tag('div'):addClass('infobox-row-title'):wikitext(field_name);
            for i=1, 2, 1 do
                local inner = row:tag('div'):addClass('infobox-row-content'):tag('div')
                if collapsed then
                    inner:addClass('mw-collapsible mw-collapsed')
                end
                inner:wikitext(args[param .. i]);
            end
        end
    end

    -- For adding multiple fields.
    function addFields(fields)
        for k, v in ipairs(fields) do
            if v.special then
                addField2(v.id, v.localize)
            else
                addField(v.id, v.localize, v.dual, v.value, v.collapsed)
            end
        end
    end

    return infobox;

end

return p