-
Notifications
You must be signed in to change notification settings - Fork 2.3k
/
ListPartFeedDisplayDriver.cs
46 lines (40 loc) · 1.8 KB
/
ListPartFeedDisplayDriver.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
using System.Threading.Tasks;
using OrchardCore.ContentManagement.Display.ContentDisplay;
using OrchardCore.ContentManagement.Display.Models;
using OrchardCore.DisplayManagement.ModelBinding;
using OrchardCore.DisplayManagement.Views;
using OrchardCore.Lists.Models;
namespace OrchardCore.Lists.Feeds
{
public class ListPartFeedDisplayDriver : ContentPartDisplayDriver<ListPart>
{
public override IDisplayResult Display(ListPart listPart, BuildPartDisplayContext context)
{
return Dynamic("ListPartFeed", shape =>
{
shape.ContentItem = listPart.ContentItem;
})
.Location("Detail", "Content");
}
public override IDisplayResult Edit(ListPart part)
{
return Initialize<ListFeedEditViewModel>("ListPartFeed_Edit", m =>
{
m.DisableRssFeed = part.ContentItem.Content.ListPart.DisableRssFeed ?? true;
m.FeedProxyUrl = part.ContentItem.Content.ListPart.FeedProxyUrl;
m.FeedItemsCount = part.ContentItem.Content.ListPart.FeedItemsCount ?? 20;
m.ContentItem = part.ContentItem;
});
}
public override async Task<IDisplayResult> UpdateAsync(ListPart part, IUpdateModel updater)
{
var model = new ListFeedEditViewModel();
model.ContentItem = part.ContentItem;
await updater.TryUpdateModelAsync(model, Prefix, t => t.DisableRssFeed, t => t.FeedProxyUrl, t => t.FeedItemsCount);
part.ContentItem.Content.ListPart.DisableRssFeed = model.DisableRssFeed;
part.ContentItem.Content.ListPart.FeedProxyUrl = model.FeedProxyUrl;
part.ContentItem.Content.ListPart.FeedItemsCount = model.FeedItemsCount;
return Edit(part);
}
}
}