-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEmailMenuItemMigrations.cs
76 lines (67 loc) · 2.92 KB
/
EmailMenuItemMigrations.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
using OrchardCore.ContentFields.Fields;
using OrchardCore.ContentFields.Settings;
using OrchardCore.ContentManagement.Metadata;
using OrchardCore.ContentManagement.Metadata.Settings;
using OrchardCore.Data.Migration;
using System.Threading.Tasks;
namespace Etch.OrchardCore.Menu
{
public class EmailMenuItemMigrations : DataMigration
{
private readonly IContentDefinitionManager _contentDefinitionManager;
private const string EmailMenuItem = "EmailMenuItem";
public EmailMenuItemMigrations(IContentDefinitionManager contentDefinitionManager)
{
_contentDefinitionManager = contentDefinitionManager;
}
public async Task<int> CreateAsync()
{
await _contentDefinitionManager.AlterPartDefinitionAsync(EmailMenuItem, builder => builder
.WithField("EmailAddress", field => field
.OfType(nameof(TextField))
.WithDisplayName("Email Address")
.WithEditor("Email")
.WithSettings(new TextFieldSettings
{
Hint = "Email address that will be pre-populated the to field in the new email message.",
Required = true
})
.WithPosition("1")));
await _contentDefinitionManager.AlterTypeDefinitionAsync(EmailMenuItem, builder => builder
.Stereotype("MenuItem")
.WithPart(EmailMenuItem, builder => builder
.WithPosition("1"))
.WithPart("LinkVisualPart", builder => builder
.WithPosition("2")));
return 1;
}
public async Task<int> UpdateFrom1Async()
{
await _contentDefinitionManager.AlterPartDefinitionAsync(EmailMenuItem, builder => builder
.WithField("Subject", field => field
.OfType(nameof(TextField))
.WithDisplayName("Subject")
.WithSettings(new TextFieldSettings
{
Hint = "Optionally pre-populate the subject field.",
Required = false
})
.WithPosition("2")));
return 2;
}
public async Task<int> UpdateFrom2Async()
{
await _contentDefinitionManager.AlterPartDefinitionAsync(EmailMenuItem, builder => builder
.WithField("Label", field => field
.OfType(nameof(TextField))
.WithDisplayName("Label")
.WithSettings(new TextFieldSettings
{
Hint = "Label displayed on link to users.",
Required = true
})
.WithPosition("0")));
return 3;
}
}
}