Esempio n. 1
0
 /// <summary>
 /// Parameters for mapping an ICustomEntityPageViewModel using an
 /// IPageViewModelMapper implementation.
 /// </summary>
 /// <param name="page">The page data to include in the view model.</param>
 /// <param name="visualEditorMode">The view mode requested by the visual editor or a default value.</param>
 /// <param name="customEntityModel">he custom entity model data to use in the mapping.</param>
 public CustomEntityPageViewModelBuilderParameters(
     PageRenderDetails page,
     VisualEditorMode visualEditorMode,
     CustomEntityRenderDetails customEntityModel
     )
     : base(page, visualEditorMode)
 {
     CustomEntityModel = customEntityModel;
 }
Esempio n. 2
0
 public IEditablePageViewModel MapCustomEntityModel(
     Type displayModelType,
     PageRenderDetails page,
     CustomEntityRenderDetails customEntityRenderDetails,
     VisualEditorMode siteViewerMode)
 {
     return((IEditablePageViewModel)_mapMethod
            .MakeGenericMethod(displayModelType)
            .Invoke(this, new object[] { page, customEntityRenderDetails, siteViewerMode }));
 }
        public Task <BlogPostPageDisplayModel> MapDisplayModelAsync(CustomEntityRenderDetails entity, BlogPostDataModel dataModel, PublishStatusQuery publishStatusQuery)
        {
            var displayModel = new BlogPostPageDisplayModel();

            displayModel.PageTitle       = entity.Title;
            displayModel.MetaDescription = dataModel.ShortDescription;

            displayModel.ShortDescription = dataModel.ShortDescription;

            return(Task.FromResult(displayModel));
        }
        /// <summary>
        /// Maps custom entity render data into a specific custom entity
        /// display model type, which can be used to render out view data.
        /// </summary>
        /// <typeparam name="TDisplayModel">Display model type to map to.</typeparam>
        /// <param name="renderDetails">The custom entity model to map, including the raw data model.</param>
        /// <param name="publishStatusQuery">
        /// The query type that should be used to query dependent entities. E.g. if the custom
        /// entity was queried with the Published status query, then any dependent entities should
        /// also be queried as Published.
        /// </param>
        /// <returns>Mapped display model instance.</returns>
        public Task <TDisplayModel> MapDisplayModelAsync <TDisplayModel>(
            CustomEntityRenderDetails renderDetails,
            PublishStatusQuery publishStatusQuery
            )
            where TDisplayModel : ICustomEntityDisplayModel
        {
            var mapperType = typeof(ICustomEntityDisplayModelMapper <,>).MakeGenericType(renderDetails.Model.GetType(), typeof(TDisplayModel));
            var mapper     = _serviceProvider.GetRequiredService(mapperType);

            var method = mapperType.GetMethod(mapDisplayModelMethodName);

            return((Task <TDisplayModel>)method.Invoke(mapper, new object[] { renderDetails, renderDetails.Model, publishStatusQuery }));
        }
        public Task <TestCustomEntityPageDisplayModel> MapDisplayModelAsync(
            CustomEntityRenderDetails renderDetails,
            TestCustomEntityDataModel dataModel,
            PublishStatusQuery publishStatusQuery
            )
        {
            var displayModel = new TestCustomEntityPageDisplayModel()
            {
                PageTitle       = renderDetails.Title,
                MetaDescription = "Test Meta Description"
            };

            return(Task.FromResult(displayModel));
        }
Esempio n. 6
0
        /// <summary>
        /// Maps a raw custom entity data model to a display model that can be rendered out
        /// to a view template.
        /// </summary>
        /// <param name="renderDetails">
        /// The raw custom entity data pulled from the database.
        /// </param>
        /// <param name="dataModel">
        /// Typed model data to map from. This is the same model that's in the render
        /// details model, but is passed in as a typed model for easy access.
        /// </param>
        /// <param name="publishStatusQuery">
        /// The query type that should be used to query dependent entities. E.g. if the custom
        /// entity was queried with the Published status query, then any dependent entities should
        /// also be queried as Published.
        /// </param>
        public async Task <BlogPostDisplayModel> MapDisplayModelAsync(
            CustomEntityRenderDetails renderDetails,
            BlogPostDataModel dataModel,
            PublishStatusQuery publishStatusQuery
            )
        {
            var vm = new BlogPostDisplayModel()
            {
                MetaDescription = dataModel.ShortDescription,
                PageTitle       = renderDetails.Title,
                Title           = renderDetails.Title,
                Date            = renderDetails.CreateDate,
                FullPath        = renderDetails.PageUrls.FirstOrDefault()
            };

            vm.Categories = await MapCategories(dataModel, publishStatusQuery);

            vm.Author = await MapAuthor(dataModel, publishStatusQuery);

            return(vm);
        }
Esempio n. 7
0
        private CustomEntityDetailsPageViewModel <TDisplayModel> MapCustomEntityModel <TDisplayModel>(
            PageRenderDetails page,
            CustomEntityRenderDetails customEntityRenderDetails,
            VisualEditorMode siteViewerMode
            ) where TDisplayModel : ICustomEntityDetailsDisplayViewModel
        {
            var vm = Map <CustomEntityDetailsPageViewModel <TDisplayModel> >(page, siteViewerMode);

            var customModel = new CustomEntityRenderDetailsViewModel <TDisplayModel>();

            customModel.CustomEntityId        = customEntityRenderDetails.CustomEntityId;
            customModel.CustomEntityVersionId = customEntityRenderDetails.CustomEntityVersionId;
            customModel.Locale         = customEntityRenderDetails.Locale;
            customModel.Sections       = customEntityRenderDetails.Sections;
            customModel.Title          = customEntityRenderDetails.Title;
            customModel.UrlSlug        = customEntityRenderDetails.UrlSlug;
            customModel.WorkFlowStatus = customEntityRenderDetails.WorkFlowStatus;
            customModel.Model          = _customEntityDisplayModelMapper.MapDetails <TDisplayModel>(customEntityRenderDetails);

            vm.CustomEntity = customModel;

            return(vm);
        }