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));
        }
Example #3
0
        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));
        }
Example #4
0
//
        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));
        }