public override async Task <IDisplayResult> UpdateAsync(FlowPart part, UpdatePartEditorContext context) { var contentItemDisplayManager = _serviceProvider.GetRequiredService <IContentItemDisplayManager>(); var model = new FlowPartEditViewModel { FlowPart = part }; await context.Updater.TryUpdateModelAsync(model, Prefix); part.Widgets.Clear(); for (var i = 0; i < model.Prefixes.Length; i++) { var contentItem = await _contentManager.NewAsync(model.ContentTypes[i]); contentItem.Weld(new FlowMetadata()); var widgetModel = await contentItemDisplayManager.UpdateEditorAsync(contentItem, context.Updater, context.IsNew, htmlFieldPrefix : model.Prefixes[i]); part.Widgets.Add(contentItem); } return(Edit(part, context)); }
public override async Task <IDisplayResult> UpdateAsync(FlowPart part, UpdatePartEditorContext context) { var contentItemDisplayManager = _serviceProvider.GetRequiredService <IContentItemDisplayManager>(); var model = new FlowPartEditViewModel { FlowPart = part }; await context.Updater.TryUpdateModelAsync(model, Prefix); var contentItems = new List <ContentItem>(); for (var i = 0; i < model.Prefixes.Length; i++) { var contentItem = await _contentManager.NewAsync(model.ContentTypes[i]); var existing = part.Widgets.FirstOrDefault(x => String.Equals(x.ContentItemId, model.Prefixes[i], StringComparison.OrdinalIgnoreCase)); if (existing != null) { contentItem.ContentItemId = model.Prefixes[i]; } contentItem.Weld(new FlowMetadata()); var widgetModel = await contentItemDisplayManager.UpdateEditorAsync(contentItem, context.Updater, context.IsNew, htmlFieldPrefix : model.Prefixes[i]); contentItems.Add(contentItem); } part.Widgets = contentItems; return(Edit(part, context)); }
public override async Task <IDisplayResult> UpdateAsync(FlowPart part, UpdatePartEditorContext context) { var contentItemDisplayManager = _serviceProvider.GetRequiredService <IContentItemDisplayManager>(); var model = new FlowPartEditViewModel { FlowPart = part }; await context.Updater.TryUpdateModelAsync(model, Prefix); var contentItems = new List <ContentItem>(); for (var i = 0; i < model.Prefixes.Length; i++) { var contentItem = await _contentManager.NewAsync(model.ContentTypes[i]); var existingContentItem = part.Widgets.FirstOrDefault(x => String.Equals(x.ContentItemId, model.Prefixes[i], StringComparison.OrdinalIgnoreCase)); // When the content item already exists merge its elements to preverse nested content item ids. // All of the data for these merged items is then replaced by the model values on update, while a nested content item id is maintained. // This prevents nested items which rely on the content item id, i.e. the media attached field, losing their reference point. if (existingContentItem != null) { contentItem.ContentItemId = model.Prefixes[i]; contentItem.Merge(existingContentItem); } contentItem.Weld(new FlowMetadata()); var widgetModel = await contentItemDisplayManager.UpdateEditorAsync(contentItem, context.Updater, context.IsNew, htmlFieldPrefix : model.Prefixes[i]); contentItems.Add(contentItem); } part.Widgets = contentItems; return(Edit(part, context)); }
// public override async Task <IDisplayResult> UpdateAsync(ActionsPanelPart model, IUpdateModel updater, UpdatePartEditorContext context) { bool isAdminMode = AdminAttribute.IsApplied(_httpContextAccessor.HttpContext); if (isAdminMode == true) { // var _contentItemDisplayManager= _serviceProvider.GetService<IContentItemDisplayManager>(); var contentItemDisplayManager = _serviceProvider.GetService <IContentItemDisplayManager>(); var settings = context.TypePartDefinition.GetSettings <ActionsPanelPartSettings>();// GetPartSettings(model); if (settings.AllowOverrideActionsPanelPerInstance == true) { var vm = new FlowPartEditViewModel(); await updater.TryUpdateModelAsync(vm, Prefix); //, t => t.ShowComments //FlowPartDisplayMode model.FlowPartDisplayMode.Widgets.Clear(); for (var i = 0; i < vm.Prefixes.Length; i++) { var contentItem = await _contentManager.NewAsync(vm.ContentTypes[i]); contentItem.Weld(new FlowMetadata()); var widgetModel = await contentItemDisplayManager.UpdateEditorAsync(contentItem, updater, context.IsNew, htmlFieldPrefix : vm.Prefixes[i]); model.FlowPartDisplayMode.Widgets.Add(contentItem); } //FlowPartEditMode model.FlowPartEditMode.Widgets.Clear(); for (var i = 0; i < vm.PrefixesEditMode.Length; i++) { var contentItem = await _contentManager.NewAsync(vm.ContentTypesEditMode[i]); contentItem.Weld(new FlowMetadata()); var widgetModel = await contentItemDisplayManager.UpdateEditorAsync(contentItem, updater, context.IsNew, htmlFieldPrefix : vm.PrefixesEditMode[i]); model.FlowPartEditMode.Widgets.Add(contentItem); } //FlowPartCreateMode model.FlowPartCreateMode.Widgets.Clear(); for (var i = 0; i < vm.PrefixesCreateMode.Length; i++) { var contentItem = await _contentManager.NewAsync(vm.ContentTypesCreateMode[i]); contentItem.Weld(new FlowMetadata()); var widgetModel = await contentItemDisplayManager.UpdateEditorAsync(contentItem, updater, context.IsNew, htmlFieldPrefix : vm.PrefixesCreateMode[i]); model.FlowPartCreateMode.Widgets.Add(contentItem); } } } return(Edit(model, context)); }