Module:Infoboxes/Mod

De ARK Wiki
Aller à la navigation Aller à la recherche

La documentation pour ce module peut être créée à Module:Infoboxes/Mod/doc

local Arkitecture = require( 'Module:Arkitecture' )
local ColumnTypes = Arkitecture.Cargo.ColumnTypes
local ParameterTypes = Arkitecture.ParameterTypes
local ParameterConstraint = Arkitecture.ParameterConstraints

local Text = require( 'Module:Infoboxes/Mod/strings' )


return Arkitecture.makeInfoboxRenderer{
    RequiredLibraries = {
        'Module:Arkitecture/Common library',
    },

    PrivateComponents = {
    },

    CargoSetup = {
        GameMod = {
            Unprefixed = true,
            { 'Name', ColumnTypes.STRING },
            { 'PreviewImage', ColumnTypes.STRING },
            { 'Kind', ColumnTypes.STRING },
            { 'SwId', ColumnTypes.STRING, Optional = true },
            { 'CfId', ColumnTypes.STRING, Optional = true },
            { 'CfSlug', ColumnTypes.STRING, Optional = true },
        },
    },

    Parameters = {
        name = {
            ParameterTypes.STRING,
            Default = Arkitecture.CURRENT_PAGE_TITLE,
        },
        image = { ParameterTypes.FILE, Optional = true },
        description = { ParameterTypes.STRING, Optional = true },
        kind = { ParameterTypes.STRING },
        author = { ParameterTypes.STRING, Optional = true },
        discord = { ParameterTypes.STRING, Optional = true },

        ["curseforge/slug"] = { ParameterTypes.STRING, Optional = true },
        ["curseforge/id"] = { ParameterTypes.STRING, Optional = true },
        ["curseforge/releaseDate"] = { ParameterTypes.DATE, Optional = true },
        ["curseforge/levelName"] = { ParameterTypes.STRING, Optional = true },

        ["workshop/id"] = { ParameterTypes.STRING, Optional = true },
        ["workshop/releaseDate"] = { ParameterTypes.DATE, Optional = true },
        ["workshop/levelName"] = { ParameterTypes.STRING, Optional = true },
    },

    getSetup = function ( self, ctx )
        return {
            {
                {
                    Component = 'ClassicHeader',
                    Name = ctx:getParameter( 'name' ),
                    Image = ctx:getParameter( 'image' ),
                    Description = ctx:getParameter( 'description' ),
                    Quoted = false,
                },
                {
                    Component = 'NamedDataRow',
                    Name = Text.ROW_KIND,
                    Value = ctx:getParameter( 'kind' ),
                },
                {
                    Component = 'NamedDataRow',
                    Name = Text.ROW_AUTHOR,
                    Value = ctx:getParameter( 'author' ),
                },
                {
                    Component = 'NamedDataRow',
                    Name = Text.ROW_DISCORD,
                    Value = ctx:getParameter( 'discord' )
                        and string.format(
                            '[https://discord.gg/%s %s]',
                            ctx:getParameter( 'discord' ),
                            Text.ROW_DISCORD_LABEL
                        )
                        or nil
                },
            },
            {
                Caption = Text.SECTION_CURSEFORGE,
                {
                    Component = 'NamedDataRow',
                    Name = Text.ROW_STORE_PAGE,
                    Value = ctx:getParameter( 'curseforge/slug' )
                        and string.format(
                            '[https://curseforge.com/ark-survival-ascended/mods/%s %s]',
                            ctx:getParameter( 'curseforge/slug' ),
                            Text.ROW_STORE_PAGE_LABEL
                        )
                        or nil,
                },
                {
                    Component = 'NamedDataRow',
                    Name = Text.ROW_RELEASE_DATE,
                    Value = ctx:getParameter( 'curseforge/releaseDate' ),
                },
                {
                    Component = 'NamedDataRow',
                    Name = Text.ROW_MOD_ID,
                    Value = ctx:getParameter( 'curseforge/id' ),
                },
                {
                    Component = 'NamedDataRow',
                    Name = Text.ROW_LEVEL_NAME,
                    Value = ctx:getParameter( 'curseforge/levelName' ),
                },
            },
            {
                Caption = Text.SECTION_WORKSHOP,
                {
                    Component = 'NamedDataRow',
                    Name = Text.ROW_STORE_PAGE,
                    Value = ctx:getParameter( 'workshop/id' )
                        and string.format(
                            '[https://steamcommunity.com/sharedfiles/filedetails/?id=%s %s]',
                            ctx:getParameter( 'workshop/id' ),
                            Text.ROW_STORE_PAGE_LABEL
                        )
                        or nil,
                },
                {
                    Component = 'NamedDataRow',
                    Name = Text.ROW_RELEASE_DATE,
                    Value = ctx:getParameter( 'workshop/releaseDate' ),
                },
                {
                    Component = 'NamedDataRow',
                    Name = Text.ROW_MOD_ID,
                    Value = ctx:getParameter( 'workshop/id' ),
                },
                {
                    Component = 'NamedDataRow',
                    Name = Text.ROW_LEVEL_NAME,
                    Value = ctx:getParameter( 'workshop/levelName' ),
                },
            },

            --{
            --    SideEffect = true,
            --    Arkitecture.JoinCategory( Text.CATEGORY_ ),
            --},
            {
                SideEffect = true,
                Arkitecture.JoinCategory( Text['CATEGORY_' .. ctx:getParameter( 'kind' ):upper()]
                    or Text['CATEGORY_FALLBACK'] ),
                ctx:getParameter( 'curseforge/id' ) and Arkitecture.JoinCategory( Text['CATEGORY_ASA'] ) or '',
                ctx:getParameter( 'workshop/id' ) and Arkitecture.JoinCategory( Text['CATEGORY_ASE'] ) or '',
            },
            {
                Component = 'NewCargoRow',
                Table = 'GameMod',

				Name = ctx:getParameter( 'name' ),
                PreviewImage = ctx:getParameter( 'image' ),
                Kind = ctx:getParameter( 'kind' ),
                SwId = ctx:getParameter( 'workshop/id' ),
                CfId = ctx:getParameter( 'curseforge/id' ),
                CfSlug = ctx:getParameter( 'curseforge/slug' ),
            }
        }
    end
}