コード例 #1
0
        public PageTemplateRegionTagBuilder(
            IPageBlockRenderer blockRenderer,
            IPageBlockTypeDataModelTypeFactory pageBlockTypeDataModelTypeFactory,
            IPageBlockTypeFileNameFormatter pageBlockTypeFileNameFormatter,
            IVisualEditorStateService visualEditorStateService,
            ILogger <PageTemplateRegionTagBuilder> logger,
            ViewContext viewContext,
            IEditablePageViewModel pageViewModel,
            string regionName
            )
        {
            if (regionName == null)
            {
                throw new ArgumentNullException(nameof(regionName));
            }
            if (string.IsNullOrWhiteSpace(regionName))
            {
                throw new ArgumentEmptyException(nameof(regionName));
            }
            if (pageViewModel == null)
            {
                throw new ArgumentNullException(nameof(pageViewModel));
            }

            _blockRenderer = blockRenderer;
            _pageBlockTypeDataModelTypeFactory  = pageBlockTypeDataModelTypeFactory;
            _pageBlockTypeTypeFileNameFormatter = pageBlockTypeFileNameFormatter;
            _visualEditorStateService           = visualEditorStateService;
            _logger        = logger;
            _regionName    = regionName;
            _pageViewModel = pageViewModel;
            _viewContext   = viewContext;
        }
コード例 #2
0
        public async Task SetCacheAsync(IEditablePageViewModel vm, PageActionRoutingState state)
        {
            var siteViewerMode     = state.VisualEditorMode;
            var publishStatusQuery = state.VisualEditorMode.ToPublishStatusQuery();
            var pageVersions       = state.PageRoutingInfo.PageRoute.Versions;

            // Force a viewer mode
            if (siteViewerMode == VisualEditorMode.Any)
            {
                var version = state.PageRoutingInfo.GetVersionRoute(
                    state.InputParameters.IsEditingCustomEntity,
                    state.VisualEditorMode.ToPublishStatusQuery(),
                    state.InputParameters.VersionId);

                switch (version.WorkFlowStatus)
                {
                case WorkFlowStatus.Draft:
                    siteViewerMode = VisualEditorMode.Draft;
                    break;

                case WorkFlowStatus.Published:
                    siteViewerMode = VisualEditorMode.Live;
                    break;

                default:
                    throw new InvalidOperationException("WorkFlowStatus." + version.WorkFlowStatus + " is not valid for VisualEditorMode.Any");
                }
            }

            var pageResponseData = new PageResponseData();

            pageResponseData.Page                      = vm;
            pageResponseData.VisualEditorMode          = siteViewerMode;
            pageResponseData.PageRoutingInfo           = state.PageRoutingInfo;
            pageResponseData.HasDraftVersion           = state.PageRoutingInfo.GetVersionRoute(state.InputParameters.IsEditingCustomEntity, PublishStatusQuery.Draft, null) != null;
            pageResponseData.Version                   = state.PageRoutingInfo.GetVersionRoute(state.InputParameters.IsEditingCustomEntity, publishStatusQuery, state.InputParameters.VersionId);
            pageResponseData.CofoundryAdminUserContext = state.CofoundryAdminUserContext;

            var customEntityDefinitionCode = state.PageRoutingInfo.PageRoute.CustomEntityDefinitionCode;

            if (!string.IsNullOrEmpty(customEntityDefinitionCode))
            {
                var definitionQuery = new GetCustomEntityDefinitionSummaryByCodeQuery(customEntityDefinitionCode);
                pageResponseData.CustomEntityDefinition = await _queryExecutor.ExecuteAsync(definitionQuery);
            }

            if (state.InputParameters.IsEditingCustomEntity)
            {
                pageResponseData.PageVersion = pageVersions.GetVersionRouting(PublishStatusQuery.Latest);
            }
            else
            {
                pageResponseData.PageVersion = pageVersions.GetVersionRouting(publishStatusQuery, state.InputParameters.VersionId);
            }

            _pageRenderDataCache.Set(pageResponseData);
        }
コード例 #3
0
        public void SetCache(IEditablePageViewModel vm, PageActionRoutingState state)
        {
            var siteViewerMode      = state.VisualEditorMode;
            var workFlowStatusQuery = state.VisualEditorMode.ToWorkFlowStatusQuery();
            var pageVersions        = state.PageRoutingInfo.PageRoute.Versions;

            // Force a viewer mode
            if (siteViewerMode == VisualEditorMode.Any)
            {
                var version = state.PageRoutingInfo.GetVersionRoute(
                    state.InputParameters.IsEditingCustomEntity,
                    state.VisualEditorMode.ToWorkFlowStatusQuery(),
                    state.InputParameters.VersionId);

                switch (version.WorkFlowStatus)
                {
                case WorkFlowStatus.Draft:
                    siteViewerMode = VisualEditorMode.Draft;
                    break;

                case WorkFlowStatus.Published:
                    siteViewerMode = VisualEditorMode.Live;
                    break;

                default:
                    throw new ApplicationException("WorkFlowStatus." + version.WorkFlowStatus + " is not valid for VisualEditorMode.Any");
                }
            }

            var pageResponseData = new PageResponseData();

            pageResponseData.Page                = vm;
            pageResponseData.VisualEditorMode    = siteViewerMode;
            pageResponseData.PageRoutingInfo     = state.PageRoutingInfo;
            pageResponseData.HasDraftVersion     = state.PageRoutingInfo.GetVersionRoute(state.InputParameters.IsEditingCustomEntity, WorkFlowStatusQuery.Draft, null) != null;
            pageResponseData.Version             = state.PageRoutingInfo.GetVersionRoute(state.InputParameters.IsEditingCustomEntity, workFlowStatusQuery, state.InputParameters.VersionId);
            pageResponseData.IsCustomEntityRoute = pageResponseData.Version is CustomEntityVersionRoute;

            if (!string.IsNullOrEmpty(state.PageRoutingInfo.PageRoute.CustomEntityDefinitionCode))
            {
                pageResponseData.CustomEntityDefinition = _queryExecutor.GetById <CustomEntityDefinitionSummary>(state.PageRoutingInfo.PageRoute.CustomEntityDefinitionCode);
            }

            if (state.InputParameters.IsEditingCustomEntity)
            {
                pageResponseData.PageVersion = pageVersions.GetVersionRouting(WorkFlowStatusQuery.Latest);
            }
            else
            {
                pageResponseData.PageVersion = pageVersions.GetVersionRouting(workFlowStatusQuery, state.InputParameters.VersionId);
            }

            _pageRenderDataCache.Set(pageResponseData);
        }
コード例 #4
0
        private IPageBlockTypeDisplayModel GetBlockDisplayData(IEditablePageViewModel pageViewModel, IEntityVersionPageBlockRenderDetails blockViewModel)
        {
            var displayData = blockViewModel.DisplayModel as IPageBlockWithParentPageData;

            if (displayData != null)
            {
                displayData.ParentPage = pageViewModel;
            }

            return(blockViewModel.DisplayModel);
        }
コード例 #5
0
        private IPageModuleDisplayModel GetModuleDisplayData(IEditablePageViewModel pageViewModel, IEntityVersionPageModuleRenderDetails moduleViewModel)
        {
            var displayData = moduleViewModel.DisplayModel as IPageModuleWithParentPageData;

            if (displayData != null)
            {
                displayData.ParentPage = pageViewModel;
            }

            return(moduleViewModel.DisplayModel);
        }
コード例 #6
0
 public IPageTemplateSectionTagBuilder Create(
     HtmlHelper htmlHelper,
     IEditablePageViewModel pageViewModel,
     string sectionName
     )
 {
     return(new PageTemplateSectionTagBuilder(
                _moduleRenderer,
                _moduleDataModelTypeFactory,
                _moduleTypeFileNameFormatter,
                htmlHelper,
                pageViewModel,
                sectionName
                ));
 }
コード例 #7
0
        /// <summary>
        /// Renders a page module by finding the template and applying the specified model to it
        /// </summary>
        /// <param name="controllerContext">ControllerContext is required so we can render the razor view</param>
        /// <param name="pageViewModel">The view model for the page being rendered</param>
        /// <param name="moduleViewModel">The view model for the module being rendered</param>
        /// <returns>The rednered module html</returns>
        public string RenderModule(ControllerContext controllerContext, IEditablePageViewModel pageViewModel, IEntityVersionPageModuleRenderDetails moduleViewModel)
        {
            var    displayData = GetModuleDisplayData(pageViewModel, moduleViewModel);
            string viewPath    = GetViewPath(moduleViewModel);

            var    viewRenderer = new RazorViewRenderer(controllerContext);
            string html         = viewRenderer.RenderPartialView(viewPath, displayData);

            if (pageViewModel.IsPageEditMode)
            {
                html = ParseModuleForEditing(html, moduleViewModel);
            }

            return(html);
        }
コード例 #8
0
 public IPageTemplateRegionTagBuilder Create(
     ViewContext viewContext,
     IEditablePageViewModel pageViewModel,
     string regionName
     )
 {
     return(new PageTemplateRegionTagBuilder(
                _pageBlockRenderer,
                _pageBlockTypeDataModelTypeFactory,
                _pageBlockTypeFileNameFormatter,
                viewContext,
                pageViewModel,
                regionName
                ));
 }
コード例 #9
0
        /// <summary>
        /// Renders a page block by finding the template and applying the specified model to it
        /// </summary>
        /// <param name="viewContext">ViewContext is required so we can render the razor view.</param>
        /// <param name="pageViewModel">The view model for the page being rendered.</param>
        /// <param name="blockViewModel">The view model for the module being rendered.</param>
        /// <returns>The rendered module html.</returns>
        public async Task <string> RenderBlockAsync(
            ViewContext viewContext,
            IEditablePageViewModel pageViewModel,
            IEntityVersionPageBlockRenderDetails blockViewModel
            )
        {
            var    displayData = GetBlockDisplayData(pageViewModel, blockViewModel);
            string viewPath    = GetViewPath(blockViewModel);

            string html = await _razorViewRenderer.RenderViewAsync(viewContext, viewPath, displayData);

            if (pageViewModel.IsPageEditMode)
            {
                html = ParseBlockHtmlForEditing(html, blockViewModel);
            }

            return(html);
        }
コード例 #10
0
        public PageTemplateSectionTagBuilder(
            IPageModuleRenderer moduleRenderer,
            IPageModuleDataModelTypeFactory moduleDataModelTypeFactory,
            IPageModuleTypeFileNameFormatter moduleTypeFileNameFormatter,
            HtmlHelper htmlHelper,
            IEditablePageViewModel pageViewModel,
            string sectionName)
        {
            Condition.Requires(sectionName).IsNotNullOrWhiteSpace();
            Condition.Requires(pageViewModel).IsNotNull();

            _moduleRenderer              = moduleRenderer;
            _moduleDataModelTypeFactory  = moduleDataModelTypeFactory;
            _moduleTypeFileNameFormatter = moduleTypeFileNameFormatter;
            _sectionName   = sectionName;
            _pageViewModel = pageViewModel;
            _htmlHelper    = htmlHelper;
        }
コード例 #11
0
        public IPageTemplateRegionTagBuilder Create(
            ViewContext viewContext,
            IEditablePageViewModel pageViewModel,
            string regionName
            )
        {
            var logger = _loggerFactory.CreateLogger <PageTemplateRegionTagBuilder>();

            return(new PageTemplateRegionTagBuilder(
                       _pageBlockRenderer,
                       _pageBlockTypeDataModelTypeFactory,
                       _pageBlockTypeFileNameFormatter,
                       _visualEditorStateService,
                       logger,
                       viewContext,
                       pageViewModel,
                       regionName
                       ));
        }