예제 #1
0
        public IActionResult Add()
        {
            var model = _layoutService.GetLayouts();

            ViewBag.menulist = _menuService.GetMenus();
            return(View(model));
        }
예제 #2
0
        protected override DriverResult Editor(LayoutTemplatePart part, dynamic shapeHelper)
        {
            var isTemplate     = false;
            var typeDefinition = _contentDefinitionManager
                                 .GetTypeDefinition(part.ContentItem.ContentType);

            if (typeDefinition != null)
            {
                var LayoutTemplatePart = typeDefinition
                                         .Parts
                                         .SingleOrDefault(p => p.PartDefinition.Name == "LayoutTemplatePart");
                if (LayoutTemplatePart != null)
                {
                    isTemplate = LayoutTemplatePart.Settings.ContainsKey("isTemplate");
                }
            }

            IEnumerable <LayoutTemplatePart> layouts = null;

            if (isTemplate)
            {
                layouts = _layoutService
                          .GetLayouts();
            }

            var stylesheets = _stylesheetService.GetAvailableStylesheets().ToList();
            var classes     = stylesheets
                              .ToDictionary(
                s => s.VirtualPath,
                s => s.GetClasses());
            var fonts = stylesheets
                        .ToDictionary(
                s => s.VirtualPath,
                s => s.GetFonts());

            return(ContentShape("Parts_Layout_Edit",
                                () => shapeHelper.EditorTemplate(
                                    TemplateName: "Parts/Layout",
                                    Model: new LayoutViewModel {
                Layout = part,
                Layouts = layouts,
                ParentLayoutId = part.ParentLayoutId,
                Stylesheets = stylesheets,
                Stylesheet = stylesheets.FirstOrDefault(s => s.VirtualPath == part.StylesheetPath),
                CssClasses = classes,
                Fonts = fonts,
                LayoutElementEditors = _layoutService.GetLayoutElementEditors(),
                IsTemplate = isTemplate
            },
                                    Prefix: Prefix)));
        }
예제 #3
0
        public ActionResult List(ListContentsViewModel model)
        {
            if (!Services.Authorizer.Authorize(Permissions.ManageLayouts, T("Not allowed to manage layouts.")))
            {
                return(new HttpUnauthorizedResult());
            }

            var contentItems = _layoutService.GetLayouts(model.Options.OrderBy);

            var list = Shape.List();

            list.AddRange(contentItems.Select(ci => _contentManager.BuildDisplay(ci, "SummaryAdmin")));

            dynamic viewModel = Shape.ViewModel(
                ContentItems: list,
                Options: model.Options);

            // Casting to avoid invalid (under medium trust) reflection over the protected View method and force a static invocation.
            return(View((object)viewModel));
        }
예제 #4
0
        /// <summary>
        /// Executes the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>AddNewPage view model</returns>
        public AddNewPageViewModel Execute(AddNewPageCommandRequest request)
        {
            var principal = securityService.GetCurrentPrincipal();
            var model     = new AddNewPageViewModel
            {
                ParentPageUrl        = request.ParentPageUrl,
                Templates            = layoutService.GetLayouts(),
                AccessControlEnabled = cmsConfiguration.AccessControlEnabled,
                UserAccessList       = accessControlService.GetDefaultAccessList(principal).Cast <UserAccessViewModel>().ToList()
            };

            if (model.Templates.Count > 0)
            {
                model.Templates.ToList().ForEach(x => x.IsActive = false);
                model.Templates.First().IsActive = true;
                model.TemplateId = model.Templates.First(t => t.IsActive).TemplateId;

                model.OptionValues = layoutService.GetLayoutOptionValues(model.TemplateId);
            }

            return(model);
        }
예제 #5
0
        public IActionResult Index()
        {
            var model = _layoutService.GetLayouts();

            return(View(model));
        }
예제 #6
0
        /// <summary>
        /// Executes the specified request.
        /// </summary>
        /// <param name="id">The page id.</param>
        /// <returns></returns>
        public EditPagePropertiesViewModel Execute(Guid id)
        {
            var model = Repository
                        .AsQueryable <PageProperties>()
                        .Where(p => p.Id == id)
                        .Select(page =>
                                new
            {
                Model = new EditPagePropertiesViewModel
                {
                    Id                   = page.Id,
                    Version              = page.Version,
                    PageName             = page.Title,
                    PageUrl              = page.PageUrl,
                    PageCSS              = page.CustomCss,
                    PageJavascript       = page.CustomJS,
                    UseNoFollow          = page.UseNoFollow,
                    UseNoIndex           = page.UseNoIndex,
                    UseCanonicalUrl      = page.UseCanonicalUrl,
                    IsVisibleToEveryone  = page.Status == PageStatus.Published,
                    IsInSitemap          = page.NodeCountInSitemap > 0,
                    IsArchived           = page.IsArchived,
                    TemplateId           = page.Layout.Id,
                    CategoryId           = page.Category.Id,
                    AccessControlEnabled = cmsConfiguration.AccessControlEnabled,
                    Image                = page.Image == null ? null :
                                           new ImageSelectorViewModel
                    {
                        ImageId      = page.Image.Id,
                        ImageVersion = page.Image.Version,
                        ImageUrl     = page.Image.PublicUrl,
                        ThumbnailUrl = page.Image.PublicThumbnailUrl,
                        ImageTooltip = page.Image.Caption
                    },
                    SecondaryImage = page.SecondaryImage == null ? null :
                                     new ImageSelectorViewModel
                    {
                        ImageId      = page.SecondaryImage.Id,
                        ImageVersion = page.SecondaryImage.Version,
                        ImageUrl     = page.SecondaryImage.PublicUrl,
                        ThumbnailUrl = page.SecondaryImage.PublicThumbnailUrl,
                        ImageTooltip = page.SecondaryImage.Caption
                    },
                    FeaturedImage = page.FeaturedImage == null ? null :
                                    new ImageSelectorViewModel
                    {
                        ImageId      = page.FeaturedImage.Id,
                        ImageVersion = page.FeaturedImage.Version,
                        ImageUrl     = page.FeaturedImage.PublicUrl,
                        ThumbnailUrl = page.FeaturedImage.PublicThumbnailUrl,
                        ImageTooltip = page.FeaturedImage.Caption
                    }
                }
            })
                        .FirstOne();

            if (model != null && model.Model != null)
            {
                model.Model.Tags = tagService.GetPageTagNames(id);
                model.Model.RedirectFromOldUrl = true;
                model.Model.Categories         = categoryService.GetCategories();
                model.Model.UpdateSitemap      = true;

                // Get layout options, page options and merge them
                var layoutOptions = Repository.AsQueryable <LayoutOption>(lo => lo.Layout.Id == model.Model.TemplateId).ToList();
                var pageOptions   = Repository
                                    .AsQueryable <PageOption>(p => p.Page.Id == id)
                                    .ToList();

                model.Model.OptionValues = optionService.GetMergedOptionValuesForEdit(layoutOptions, pageOptions);

                if (cmsConfiguration.AccessControlEnabled)
                {
                    model.Model.UserAccessList = Repository.AsQueryable <UserAccess>()
                                                 .Where(x => x.ObjectId == id)
                                                 .OrderBy(x => x.RoleOrUser)
                                                 .Select(x => new UserAccessViewModel
                    {
                        Id          = x.Id,
                        AccessLevel = x.AccessLevel,
                        ObjectId    = x.ObjectId,
                        RoleOrUser  = x.RoleOrUser
                    }).ToList();
                }

                // Get templates
                model.Model.Templates = layoutService.GetLayouts();
                if (!model.Model.TemplateId.HasDefaultValue())
                {
                    model.Model.Templates.Where(x => x.TemplateId == model.Model.TemplateId).ToList().ForEach(x => x.IsActive = true);
                }
            }

            return(model != null ? model.Model : null);
        }
예제 #7
0
 public ActionResult <IEnumerable <Layout> > Get()
 {
     return(Ok(_service.GetLayouts()));
 }
예제 #8
0
        /// <summary>
        /// Executes the specified request.
        /// </summary>
        /// <param name="id">The page id.</param>
        /// <returns></returns>
        public EditPagePropertiesViewModel Execute(Guid id)
        {
            var model = Repository
                        .AsQueryable <PageProperties>()
                        .Where(p => p.Id == id)
                        .Select(page =>
                                new
            {
                Model = new EditPagePropertiesViewModel
                {
                    Id                   = page.Id,
                    Version              = page.Version,
                    PageName             = page.Title,
                    PageUrl              = page.PageUrl,
                    PageCSS              = page.CustomCss,
                    PageJavascript       = page.CustomJS,
                    UseNoFollow          = page.UseNoFollow,
                    UseNoIndex           = page.UseNoIndex,
                    UseCanonicalUrl      = page.UseCanonicalUrl,
                    IsPagePublished      = page.Status == PageStatus.Published,
                    IsInSitemap          = page.NodeCountInSitemap > 0,
                    IsArchived           = page.IsArchived,
                    TemplateId           = page.Layout.Id,
                    CategoryId           = page.Category.Id,
                    AccessControlEnabled = cmsConfiguration.Security.AccessControlEnabled,
                    Image                = page.Image == null || page.Image.IsDeleted ? null :
                                           new ImageSelectorViewModel
                    {
                        ImageId      = page.Image.Id,
                        ImageVersion = page.Image.Version,
                        ImageUrl     = fileUrlResolver.EnsureFullPathUrl(page.Image.PublicUrl),
                        ThumbnailUrl = fileUrlResolver.EnsureFullPathUrl(page.Image.PublicThumbnailUrl),
                        ImageTooltip = page.Image.Caption,
                        FolderId     = page.Image.Folder != null ? page.Image.Folder.Id : (Guid?)null
                    },
                    SecondaryImage = page.SecondaryImage == null || page.SecondaryImage.IsDeleted ? null :
                                     new ImageSelectorViewModel
                    {
                        ImageId      = page.SecondaryImage.Id,
                        ImageVersion = page.SecondaryImage.Version,
                        ImageUrl     = fileUrlResolver.EnsureFullPathUrl(page.SecondaryImage.PublicUrl),
                        ThumbnailUrl = fileUrlResolver.EnsureFullPathUrl(page.SecondaryImage.PublicThumbnailUrl),
                        ImageTooltip = page.SecondaryImage.Caption,
                        FolderId     = page.SecondaryImage.Folder != null ? page.SecondaryImage.Folder.Id : (Guid?)null
                    },
                    FeaturedImage = page.FeaturedImage == null || page.FeaturedImage.IsDeleted ? null :
                                    new ImageSelectorViewModel
                    {
                        ImageId      = page.FeaturedImage.Id,
                        ImageVersion = page.FeaturedImage.Version,
                        ImageUrl     = fileUrlResolver.EnsureFullPathUrl(page.FeaturedImage.PublicUrl),
                        ThumbnailUrl = fileUrlResolver.EnsureFullPathUrl(page.FeaturedImage.PublicThumbnailUrl),
                        ImageTooltip = page.FeaturedImage.Caption,
                        FolderId     = page.FeaturedImage.Folder != null ? page.FeaturedImage.Folder.Id : (System.Guid?)null
                    }
                }
            })
                        .FirstOne();

            if (model != null && model.Model != null)
            {
                model.Model.Tags = tagService.GetPageTagNames(id);
                model.Model.RedirectFromOldUrl = true;
                model.Model.Categories         = categoryService.GetCategories();
                model.Model.UpdateSitemap      = true;

                // Get layout options, page options and merge them
                var layoutOptions = Repository.AsQueryable <LayoutOption>(lo => lo.Layout.Id == model.Model.TemplateId).Fetch(o => o.CustomOption).ToList();
                var pageOptions   = Repository.AsQueryable <PageOption>(p => p.Page.Id == id).Fetch(o => o.CustomOption).ToList();

                model.Model.OptionValues  = optionService.GetMergedOptionValuesForEdit(layoutOptions, pageOptions);
                model.Model.CustomOptions = optionService.GetCustomOptions();

                if (cmsConfiguration.Security.AccessControlEnabled)
                {
                    model.Model.UserAccessList = Repository.AsQueryable <Root.Models.Page>()
                                                 .Where(x => x.Id == id && !x.IsDeleted)
                                                 .SelectMany(x => x.AccessRules)
                                                 .OrderBy(x => x.Identity)
                                                 .ToList()
                                                 .Select(x => new UserAccessViewModel(x)).ToList();

                    var rules = model.Model.UserAccessList.Cast <IAccessRule>().ToList();

                    SetIsReadOnly(model.Model, rules);
                }

                model.Model.CanPublishPage = SecurityService.IsAuthorized(Context.Principal, RootModuleConstants.UserRoles.PublishContent);

                // Get templates
                model.Model.Templates = layoutService.GetLayouts();
                if (!model.Model.TemplateId.HasDefaultValue())
                {
                    model.Model.Templates.Where(x => x.TemplateId == model.Model.TemplateId).ToList().ForEach(x => x.IsActive = true);
                }
            }

            return(model != null ? model.Model : null);
        }
예제 #9
0
 public IEnumerable <Layout> GetLayouts([FromRoute] int restaurantId)
 {
     return(layoutService.GetLayouts(restaurantId));
 }