public PageContentViewModel Execute(InsertHtmlContentRequest request)
        {
            var isMasterPage        = repository.First <Root.Models.Page>(request.PageId.ToGuidOrDefault()).IsMasterPage;
            var parentPageContentId = request.ParentPageContentId != null?request.ParentPageContentId.ToGuidOrDefault() : Guid.Empty;

            var model = new PageContentViewModel
            {
                PageId                    = Guid.Parse(request.PageId),
                RegionId                  = Guid.Parse(request.RegionId),
                ParentPageContentId       = parentPageContentId,
                LiveFrom                  = DateTime.Today,
                EnableInsertDynamicRegion = isMasterPage,
                EditInSourceMode          = isMasterPage,
                CanEditContent            = true,
                EnabledCustomCss          = true,
                EnabledCustomJs           = true
            };

            if (model.EnableInsertDynamicRegion)
            {
                model.LastDynamicRegionNumber = masterPageService.GetLastDynamicRegionNumber();
            }

            return(model);
        }
Пример #2
0
        /// <summary>
        /// Executes the specified request.
        /// </summary>
        /// <param name="pageContentId">The page content id.</param>
        /// <returns></returns>
        public PageContentViewModel Execute(Guid pageContentId)
        {
            var pageContentForEdit = contentService.GetPageContentForEdit(pageContentId);

            if (pageContentForEdit == null)
            {
                throw new EntityNotFoundException(typeof(PageContent), pageContentId);
            }

            PageContent pageContent = pageContentForEdit.Item1;
            HtmlContent content     = (HtmlContent)pageContentForEdit.Item2;

            var model = new PageContentViewModel
            {
                Id                        = pageContent.Id,
                PageId                    = pageContent.Page.Id,
                RegionId                  = pageContent.Region.Id,
                ParentPageContentId       = pageContent.Parent != null ? pageContent.Parent.Id : Guid.Empty,
                ContentId                 = pageContent.Content.Id,
                ContentName               = content.Name,
                LiveFrom                  = content.ActivationDate,
                LiveTo                    = content.ExpirationDate,
                PageContent               = content.ContentTextMode == ContentTextMode.Html ? content.Html : content.OriginalText,
                Version                   = pageContent.Version,
                ContentVersion            = pageContent.Content.Version,
                CustomCss                 = content.CustomCss,
                CustomJs                  = content.CustomJs,
                EnabledCustomJs           = content.UseCustomJs,
                EnabledCustomCss          = content.UseCustomCss,
                EditInSourceMode          = content.EditInSourceMode,
                EnableInsertDynamicRegion = pageContent.Page.IsMasterPage,
                CurrentStatus             = content.Status,
                HasPublishedContent       = content.Original != null,
                ContentTextMode           = content.ContentTextMode
            };

            if (configuration.Security.AccessControlEnabled)
            {
                var accessRules = Repository.AsQueryable <PageContent>()
                                  .Where(x => x.Id == pageContentId && !x.IsDeleted)
                                  .Select(f => f.Page)
                                  .SelectMany(f => f.AccessRules)
                                  .ToList()
                                  .Select(x => new UserAccessViewModel(x)).Cast <IAccessRule>().ToList();

                SetIsReadOnly(model, accessRules);
            }

            model.CanEditContent  = SecurityService.IsAuthorized(Context.Principal, RootModuleConstants.UserRoles.EditContent);
            model.CanDestroyDraft = model.CurrentStatus == ContentStatus.Draft && model.HasPublishedContent && model.CanEditContent;

            if (model.EnableInsertDynamicRegion)
            {
                model.LastDynamicRegionNumber = masterPageService.GetLastDynamicRegionNumber();
            }

            return(model);
        }