public static bool TryGetMetadata(this IContentMetadataManager contentMetadataManager, object model, out ContentMetadataProvider contentMetadataProvider)
 {
     if (model == null)
     {
         throw new ArgumentNullException(nameof(model));
     }
     return(contentMetadataManager.TryGetMetadata(model.GetType(), out contentMetadataProvider));
 }
예제 #2
0
        public ContentManager(IContentStore <TEntry> store, IContentMetadataManager contentMetadataManager, IServiceProvider services)
        {
            this.contentMetadataManager = contentMetadataManager ?? throw new ArgumentNullException(nameof(contentMetadataManager));
            this.store    = store ?? throw new ArgumentNullException(nameof(store));
            this.services = services ?? throw new ArgumentNullException(nameof(services));

            modelMetadataProvider = contentMetadataManager.GetMetadata <TModel>();
        }
예제 #3
0
        public PageMetadataManager(IContentMetadataManager contentManager)
        {
            this.contentManager = contentManager ?? throw new ArgumentNullException(nameof(contentManager));

            foreach (var contentMetadataProvider in contentManager.MetadataProviders)
            {
                TryRegisterPageType(contentMetadataProvider, out PageMetadataProvider pageMetadataProvider);
            }
        }
        public static ContentMetadataProvider GetMetadataByModelData(this IContentMetadataManager contentMetadataManager, IDictionary <string, object> modelData)
        {
            if (modelData == null)
            {
                throw new ArgumentNullException(nameof(modelData));
            }
            if (!modelData.TryGetValue(ContentMetadataProvider.ContentTypeNameDataKey, out object typeNameValue))
            {
                return(null);
            }

            contentMetadataManager.TryGetMetadata((string)typeNameValue, out ContentMetadataProvider contentMetadata);
            return(contentMetadata);
        }
예제 #5
0
        public static ContentExplorer Create(IContentMetadataManager metadataManager, object model)
        {
            if (metadataManager == null)
            {
                throw new ArgumentNullException(nameof(metadataManager));
            }
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var contentMetadata = metadataManager.GetMetadata(model.GetType());

            return(new ContentExplorer(model, contentMetadata));
        }
        public static void ApplyInjections(this IContentMetadataManager contentMetadataManager, object model, IServiceProvider serviceProvider, bool injectInnerModels)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }
            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }
            if (!contentMetadataManager.TryGetMetadata(model, out ContentMetadataProvider contentMetadataProvider))
            {
                throw new ArgumentException();
            }

            contentMetadataProvider.ApplyInjections(model, serviceProvider, injectInnerModels);
        }
예제 #7
0
        Task IAsyncLifetime.InitializeAsync()
        {
            var contentTypeResolver = new Infrastructure.AssemblyContentTypeLocator(new System.Reflection.Assembly[] { typeof(TestPageContent).Assembly });

            var services = new ServiceCollection();

            services.AddSingleton <IContentMetadataManager, ContentMetadataManager>();
            services.AddSingleton <Infrastructure.IContentTypeLocator>(contentTypeResolver);

            serviceProvider = services.BuildServiceProvider();
            serviceScope    = serviceProvider.CreateScope();

            metadataManager = serviceScope.ServiceProvider.GetRequiredService <IContentMetadataManager>();

            var metadataProvider = metadataManager.GetMetadata <TestContent>();

            if (!metadataProvider.TryGetField("Text", out field))
            {
                throw new System.Exception();
            }

            return(Task.CompletedTask);
        }
        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 JsonContentDataSerializerTests()
        {
            var contentTypeResolver = new Infrastructure.AssemblyContentTypeLocator(new System.Reflection.Assembly[] { typeof(TestPageContent).Assembly });

            metadataManager = new ContentMetadataManager(contentTypeResolver);
        }
예제 #10
0
 public ContentTypeListController(IContentMetadataManager contentMetadataManager)
 {
     this.contentMetadataManager = contentMetadataManager ?? throw new ArgumentNullException(nameof(contentMetadataManager));
 }
 public static ContentMetadataProvider GetMetadata <T>(this IContentMetadataManager contentMetadataManager)
     where T : class
 {
     return(contentMetadataManager.GetMetadata(typeof(T)));
 }
예제 #12
0
        public static ContentExplorer Create(IContentMetadataManager metadataManager, object model, string modelPath)
        {
            var explorer = Create(metadataManager, model);

            return(explorer.Navigate(modelPath));
        }