Esempio n. 1
0
 private ContentContext(ContentContext parent, ContentExplorer contentExplorer)
 {
     Page       = parent.Page;
     Services   = parent.Services;
     Explorer   = contentExplorer;
     IsDesigner = parent.IsDesigner;
 }
        public async Task <IActionResult> ChangeModelTypeAsync([FromQuery] Guid editId, [FromQuery] string modelPath, [FromQuery] string modelType, [FromServices] IContentMetadataManager contentMetadataManager, [FromServices] Views.IViewLocator viewLocator)
        {
            if (modelType == null)
            {
                return(BadRequest());
            }

            var editSession = await pageContentService.FindEditByIdAsync(editId);

            if (editSession == null)
            {
                return(BadRequest());
            }

            var page = await pageService.FindPageByIdAsync(editSession.PageId);

            if (page == null)
            {
                return(BadRequest());
            }

            if (modelPath == null)
            {
                modelPath = string.Empty;
            }

            var newModelType = contentMetadataManager.GetMetadata(modelType);

            var pageContent = await pageContentService.GetContentAsync(editSession);

            var pageContentExplorer = ContentExplorer.Create(contentMetadataManager, pageContent);

            var contentExplorer = pageContentExplorer.Navigate(modelPath);

            if (contentExplorer == null)
            {
                return(BadRequest());
            }

            contentExplorer.Field.ChangeType(contentExplorer.Model, modelType);

            var newItem = newModelType.CreateModelInstance();
            var view    = viewLocator.FindView(newModelType.ModelType);

            if (view != null && view.DefaultModelData != null)
            {
                newItem = newModelType.ConvertDictionaryToContentModel(view.DefaultModelData);
            }

            return(Ok());
        }
Esempio n. 3
0
        public ContentContext(IPage page, object pageContent, IServiceProvider services, bool isDesigner)
        {
            if (pageContent == null)
            {
                throw new ArgumentNullException(nameof(pageContent));
            }

            Page     = page ?? throw new ArgumentNullException(nameof(page));
            Services = services ?? throw new ArgumentNullException(nameof(services));

            var contentMetadataManager = services.GetRequiredService <IContentMetadataManager>();

            Explorer   = ContentExplorer.Create(contentMetadataManager, pageContent);
            IsDesigner = isDesigner;
        }