コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 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));
 }
コード例 #4
0
        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));
        }