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()); }
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; }