Module:Infoboxes/Mod
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
}