-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathPortalWebAdminModule.cs
78 lines (64 loc) · 2.62 KB
/
PortalWebAdminModule.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using CMS;
using CMS.Core;
using CMS.DataEngine;
using CMS.FormEngine;
using Kentico.Community.Portal.Admin;
using Kentico.Xperience.Admin.Base;
[assembly: RegisterModule(typeof(PortalWebAdminModule))]
[assembly: UICategory(
codeName: PortalWebAdminModule.COMMUNITY_CATEGORY,
name: "Community",
icon: Icons.PersonalisationVariants,
order: 100)]
namespace Kentico.Community.Portal.Admin;
internal class PortalWebAdminModule : AdminModule, IDataTypeRegister
{
public const string COMMUNITY_CATEGORY = "kentico-community.portal-web-admin.community";
public PortalWebAdminModule() : base(nameof(PortalWebAdminModule)) { }
protected override void OnPreInit(ModulePreInitParameters parameters)
{
base.OnPreInit(parameters);
LinkDataTypeRegistrar.Register(this);
UTMParametersDataTypeRegistrar.Register(this);
}
protected override void OnInit(ModuleInitParameters parameters)
{
base.OnInit(parameters);
RegisterClientModule("kentico-community", "portal-web-admin");
}
public void AddRegistrations(DataTypeRegistration[] registrations)
{
foreach (var registration in registrations)
{
DataTypeManager.RegisterDataTypes([registration.DataType]);
if (registration.DataTypeCodeGenerator is { } generator)
{
DataTypeCodeGenerationManager.RegisterDataTypeCodeGenerator(generator.DataType, generator.GeneratorInitializer);
}
if (registration.DataType.HasConfigurableDefaultValue && registration.DefaultComponent is { } component)
{
RegisterDefaultValueComponent(component.DataType, component.ComponentIdentifier, component.SerializationFunction, component.DeserializationFunction);
}
}
}
}
public interface IDataTypeRegister
{
void AddRegistrations(DataTypeRegistration[] registrations);
}
public record DataTypeRegistration(
DataType DataType,
DataTypeCodeGeneratorRegistration? DataTypeCodeGenerator,
DataTypeDefaultComponentRegistration? DefaultComponent)
{
public DataTypeRegistration(DataType dataType) : this(dataType, null, null) { }
public DataTypeRegistration(DataType dataType, DataTypeCodeGeneratorRegistration? dataTypeCodeGenerator) : this(dataType, dataTypeCodeGenerator, null) { }
}
public record DataTypeDefaultComponentRegistration(
string DataType,
string ComponentIdentifier,
Func<object, string> SerializationFunction,
Func<string, object> DeserializationFunction);
public record DataTypeCodeGeneratorRegistration(
string DataType,
Func<DataTypeCodeGenerator> GeneratorInitializer);