public Task <dynamic> UpdatePartFieldEditorAsync(ContentPartFieldDefinition contentPartFieldDefinition, IUpdateModel updater, string groupId = "") { if (contentPartFieldDefinition == null) { throw new ArgumentNullException(nameof(contentPartFieldDefinition)); } var contentPartDefinition = contentPartFieldDefinition.PartDefinition; dynamic partFieldDefinitionShape = CreateContentShape("ContentPartFieldDefinition_Edit"); _contentDefinitionManager.AlterPartDefinition(contentPartDefinition.Name, partBuilder => { partBuilder.WithField(contentPartFieldDefinition.Name, async partFieldBuilder => { partFieldDefinitionShape.ContentField = contentPartFieldDefinition; var fieldContext = new UpdatePartFieldEditorContext( partFieldBuilder, partFieldDefinitionShape, groupId, _shapeFactory, _layoutAccessor.GetLayout(), updater ); await BindPlacementAsync(fieldContext); await _handlers.InvokeAsync(handler => handler.UpdatePartFieldEditorAsync(contentPartFieldDefinition, fieldContext), Logger); }); }); return(Task.FromResult <dynamic>(partFieldDefinitionShape)); }
public async Task <dynamic> UpdatePartEditorAsync(ContentPartDefinition contentPartDefinition, IUpdateModel updater, string groupId) { if (contentPartDefinition == null) { throw new ArgumentNullException(nameof(contentPartDefinition)); } var contentPartDefinitionShape = _shapeFactory.Create <ContentPartDefinitionViewModel>("ContentPartDefinition"); contentPartDefinitionShape.ContentPartDefinition = contentPartDefinition; dynamic partShape = CreateContentShape("ContentPartDefinition_Edit"); UpdatePartEditorContext partContext = null; _contentDefinitionManager.AlterPartDefinition(contentPartDefinition.Name, partBuilder => { partContext = new UpdatePartEditorContext( partBuilder, partShape, groupId, _shapeFactory, _layoutAccessor.GetLayout(), updater ); foreach (var contentFieldDefinition in contentPartDefinition.Fields) { dynamic fieldShape = CreateContentShape("ContentPartFieldDefinition_Edit"); partBuilder.WithField(contentFieldDefinition.Name, partFieldBuilder => { fieldShape.ContentField = contentFieldDefinition; var fieldContext = new UpdatePartFieldEditorContext( partFieldBuilder, fieldShape, groupId, _shapeFactory, _layoutAccessor.GetLayout(), updater ); BindPlacementAsync(fieldContext).Wait(); _handlers.InvokeAsync(handler => handler.UpdatePartFieldEditorAsync(contentFieldDefinition, fieldContext), Logger).Wait(); contentPartDefinitionShape.PartFieldSettings.Add(fieldContext.Shape); }); } }); await BindPlacementAsync(partContext); _handlers.InvokeAsync(handler => handler.UpdatePartEditorAsync(contentPartDefinition, partContext), Logger).Wait(); contentPartDefinitionShape.PartSettings = partShape; return(contentPartDefinitionShape); }
public Task UpdatePartFieldEditorAsync(ContentPartFieldDefinition model, UpdatePartFieldEditorContext context) { return(_partFieldDisplayDrivers.InvokeAsync(async contentDisplay => { var result = await contentDisplay.UpdateEditorAsync(model, context); if (result != null) { result.Apply(context); } }, Logger)); }
public Task <dynamic> UpdateTypeEditorAsync(ContentTypeDefinition contentTypeDefinition, IUpdateModel updater, string groupId) { if (contentTypeDefinition == null) { throw new ArgumentNullException(nameof(contentTypeDefinition)); } var contentTypeDefinitionShape = _shapeFactory.Create <ContentTypeDefinitionViewModel>("ContentTypeDefinition"); _contentDefinitionManager.AlterTypeDefinition(contentTypeDefinition.Name, typeBuilder => { contentTypeDefinitionShape.ContentTypeDefinition = contentTypeDefinition; dynamic typeShape = CreateContentShape("ContentTypeDefinition_Edit"); var typeContext = new UpdateTypeEditorContext( typeBuilder, typeShape, groupId, _shapeFactory, _layoutAccessor.GetLayout(), updater ); foreach (var contentTypePartDefinition in contentTypeDefinition.Parts) { // Don't show the type's private part as it can't be removed or configured if (String.Equals(contentTypePartDefinition.PartDefinition.Name, contentTypeDefinition.Name, StringComparison.Ordinal)) { continue; } dynamic partShape = CreateContentShape("ContentTypePartDefinition_Edit"); typeBuilder.WithPart(contentTypePartDefinition.PartDefinition.Name, typePartBuilder => { partShape.ContentPart = contentTypePartDefinition; var partContext = new UpdateTypePartEditorContext( typePartBuilder, partShape, groupId, _shapeFactory, _layoutAccessor.GetLayout(), updater ); BindPlacementAsync(partContext).Wait(); _handlers.InvokeAsync(handler => handler.UpdateTypePartEditorAsync(contentTypePartDefinition, partContext), Logger).Wait(); contentTypeDefinitionShape.TypePartSettings.Add(partContext.Shape); }); } // Global fields var globalPartDefinition = _contentDefinitionManager.GetPartDefinition(contentTypeDefinition.Name); if (globalPartDefinition != null && globalPartDefinition.Fields.Any()) { _contentDefinitionManager.AlterPartDefinition(globalPartDefinition.Name, partBuilder => { foreach (var contentPartFieldDefinition in globalPartDefinition.Fields) { dynamic fieldShape = CreateContentShape("ContentPartFieldDefinition_Edit"); partBuilder.WithField(contentPartFieldDefinition.Name, partFieldBuilder => { fieldShape.ContentField = contentPartFieldDefinition; var fieldContext = new UpdatePartFieldEditorContext( partFieldBuilder, fieldShape, groupId, _shapeFactory, _layoutAccessor.GetLayout(), updater ); BindPlacementAsync(fieldContext).Wait(); _handlers.InvokeAsync(handler => handler.UpdatePartFieldEditorAsync(contentPartFieldDefinition, fieldContext), Logger).Wait(); contentTypeDefinitionShape.TypeFieldSettings.Add(fieldContext.Shape); }); } }); } BindPlacementAsync(typeContext).Wait(); _handlers.InvokeAsync(handler => handler.UpdateTypeEditorAsync(contentTypeDefinition, typeContext), Logger).Wait(); contentTypeDefinitionShape.TypeSettings = typeShape; }); return(Task.FromResult <dynamic>(contentTypeDefinitionShape)); }