-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Expand file tree
/
Copy pathContentVersionPruningSettingsDisplayDriver.cs
More file actions
68 lines (57 loc) · 2.64 KB
/
ContentVersionPruningSettingsDisplayDriver.cs
File metadata and controls
68 lines (57 loc) · 2.64 KB
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
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using OrchardCore.Contents.VersionPruning.Models;
using OrchardCore.Contents.VersionPruning.ViewModels;
using OrchardCore.DisplayManagement.Entities;
using OrchardCore.DisplayManagement.Handlers;
using OrchardCore.DisplayManagement.Views;
using OrchardCore.Settings;
namespace OrchardCore.Contents.VersionPruning.Drivers;
public sealed class ContentVersionPruningSettingsDisplayDriver : SiteDisplayDriver<ContentVersionPruningSettings>
{
public const string GroupId = "ContentVersionPruningSettings";
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IAuthorizationService _authorizationService;
public ContentVersionPruningSettingsDisplayDriver(
IAuthorizationService authorizationService,
IHttpContextAccessor httpContextAccessor)
{
_authorizationService = authorizationService;
_httpContextAccessor = httpContextAccessor;
}
protected override string SettingsGroupId => GroupId;
public override async Task<IDisplayResult> EditAsync(ISite site, ContentVersionPruningSettings settings, BuildEditorContext context)
{
if (!await _authorizationService.AuthorizeAsync(
_httpContextAccessor.HttpContext?.User,
ContentVersionPruningPermissions.ManageContentVersionPruningSettings))
{
return null;
}
return Initialize<ContentVersionPruningSettingsViewModel>("ContentVersionPruningSettings_Edit", model =>
{
model.RetentionDays = settings.RetentionDays;
model.VersionsToKeep = settings.VersionsToKeep;
model.Disabled = settings.Disabled;
model.ContentTypes = settings.ContentTypes;
model.LastRunUtc = settings.LastRunUtc;
}).Location("Content:5")
.OnGroup(GroupId);
}
public override async Task<IDisplayResult> UpdateAsync(ISite site, ContentVersionPruningSettings settings, UpdateEditorContext context)
{
if (!await _authorizationService.AuthorizeAsync(
_httpContextAccessor.HttpContext?.User,
ContentVersionPruningPermissions.ManageContentVersionPruningSettings))
{
return null;
}
var model = new ContentVersionPruningSettingsViewModel();
await context.Updater.TryUpdateModelAsync(model, Prefix);
settings.RetentionDays = model.RetentionDays;
settings.VersionsToKeep = model.VersionsToKeep;
settings.Disabled = model.Disabled;
settings.ContentTypes = model.ContentTypes ?? [];
return await EditAsync(site, settings, context);
}
}