Example #1
0
        public SectionNode GetByUrlName(string urlName)
        {
            Ensure.ArgumentIsNotNullOrEmpty(urlName, "urlName");

            return(_unitOfWork.Context.GetDbSet <SectionNode>()
                   .Include(x => x.SectionTemplate)
                   .Include(x => x.PageNodes)
                   .FirstOrDefault(x => x.UrlName.ToLower() == urlName.ToLower()));
        }
Example #2
0
        public PageNode CreateForSection(int sectionId, int pageTemplateId, string displayName, string urlName, bool commit = true)
        {
            Ensure.ArgumentIsNotNullOrEmpty(displayName, "displayName");
            Ensure.ArgumentIsNotNullOrEmpty(urlName, "urlName");

            var pageNodeDbSet = _unitOfWork.Context.GetDbSet <PageNode>();

            var parentSectionNode = _unitOfWork.Context.GetDbSet <SectionNode>()
                                    .Include(x => x.SectionTemplate.PageTemplates.Select(y => y.PropertyTemplates))
                                    .Include(x => x.PageNodes)
                                    .FirstOrDefault(x => x.Id == sectionId); //TODO: should use service instead of UnitOfWork directly, but issues with Ninject circular dependencies

            if (parentSectionNode == null)
            {
                throw new ArgumentException(string.Format(Messages.SectionNodeNotFound, sectionId));
            }

            var formattedUrlName = CmsUrlHelper.FormatUrlName(!string.IsNullOrEmpty(urlName) ? urlName : displayName);

            if (parentSectionNode.PageNodes != null && parentSectionNode.PageNodes.Any(s => s.UrlName == formattedUrlName))
            {
                throw new ArgumentException(string.Format(Messages.PageNodeUrlNameMustBeUniqueWithinSection, formattedUrlName, sectionId));
            }

            var pageTemplate = parentSectionNode.SectionTemplate.PageTemplates.FirstOrDefault(x => x.Id == pageTemplateId);         //TODO: should use service instead of UnitOfWork directly, but issues with Ninject circular dependencies

            if (pageTemplate == null)
            {
                throw new ArgumentException(string.Format(Messages.PageTemplateNotFoundForSectionTemplate, pageTemplateId, parentSectionNode.SectionTemplateId));
            }

            var pageNode = pageNodeDbSet.Create();

            pageNode.ParentSectionNode = parentSectionNode;
            pageNode.PageTemplate      = pageTemplate;
            pageNode.DisplayName       = displayName;
            pageNode.UrlName           = formattedUrlName;
            pageNode.Order             = parentSectionNode.PageNodes == null || !parentSectionNode.PageNodes.Any()
                                ? CmsConstants.FirstOrderNumber
                                : parentSectionNode.PageNodes.Count();
            pageNode.IsPublished = false;
            pageNode.CreatedOn   = DateTime.UtcNow;
            pageNode.ModifiedOn  = pageNode.CreatedOn;

            pageNodeDbSet.Add(pageNode);

            AddPropertiesForPageTemplatesPropertyTemplates(pageTemplate, pageNode);

            if (commit)
            {
                _unitOfWork.Commit();
            }

            return(pageNode);
        }
Example #3
0
        public PageNode CreateForPage(int pageId, int pageTemplateId, string displayName, string urlName)
        {
            Ensure.ArgumentIsNotNullOrEmpty(displayName, "displayName");
            Ensure.ArgumentIsNotNullOrEmpty(urlName, "urlName");

            var pageNodeDbSet = _unitOfWork.Context.GetDbSet <PageNode>();
            var pageNodes     = pageNodeDbSet
                                .Include(x => x.PageNodes)
                                .Include(x => x.PageTemplate.PageTemplates);

            var parentPage = pageNodes.FirstOrDefault(x => x.Id == pageId);

            if (parentPage == null)
            {
                throw new ArgumentException(string.Format(Messages.PageNodeNotFound, pageId));
            }

            var pageTemplate = parentPage.PageTemplate.PageTemplates.FirstOrDefault(x => x.Id == pageTemplateId);

            if (pageTemplate == null)
            {
                throw new ArgumentException(string.Format(Messages.PageTemplateNotFoundForPageTemplate, pageTemplateId, parentPage.PageTemplateId));
            }

            var formattedUrlName = CmsUrlHelper.FormatUrlName(!string.IsNullOrEmpty(urlName) ? urlName : displayName);

            if (parentPage.PageNodes != null && parentPage.PageNodes.Any(s => s.UrlName == formattedUrlName))
            {
                throw new ArgumentException(string.Format(Messages.PageNodeUrlNameMustBeUniqueWithinPage, formattedUrlName, pageId));
            }

            var pageNode = pageNodeDbSet.Create();

            pageNode.ParentPageNode = parentPage;
            pageNode.PageTemplate   = pageTemplate;
            pageNode.DisplayName    = displayName;
            pageNode.UrlName        = formattedUrlName;
            pageNode.Order          = parentPage.PageNodes == null || !parentPage.PageNodes.Any()
                                ? CmsConstants.FirstOrderNumber
                                : parentPage.PageNodes.Count();
            pageNode.IsPublished = false;
            pageNode.CreatedOn   = DateTime.UtcNow;
            pageNode.ModifiedOn  = pageNode.CreatedOn;

            pageNodeDbSet.Add(pageNode);

            AddPropertiesForPageTemplatesPropertyTemplates(pageTemplate, pageNode);

            _unitOfWork.Commit();
            return(pageNode);
        }
Example #4
0
        public static PageNode GetActionPageNode(IEnumerable <PageNode> pageNodes, string urlName)
        {
            Ensure.ArgumentIsNotNull(pageNodes, "nodes");
            Ensure.ArgumentIsNotNullOrEmpty(urlName, "urlName");

            //if the action name is index use the first page for this section, otherwise find the page by action name

            var pageNode = urlName.ToLower() == "index" ? pageNodes.FirstOrDefault(x => x.Order == CmsConstants.FirstOrderNumber) : pageNodes.FirstOrDefault(x => x.UrlName == urlName.ToLower());

            if (pageNode == null)
            {
                throw new ArgumentException(string.Format("No page with the url name {0} found.", urlName.ToLower()));
            }

            return(pageNode);
        }
Example #5
0
        public SectionNode CreateSectionNode(int sectionTemplateId, string displayName, string urlName, bool commit = true)
        {
            Ensure.ArgumentIsNotNullOrEmpty(displayName, "displayName");
            Ensure.ArgumentIsNotNullOrEmpty(urlName, "urlName");

            var sectionNodeDbSet    = _unitOfWork.Context.GetDbSet <SectionNode>();
            var orderedSectionNodes = sectionNodeDbSet.OrderBy(x => x.Order);

            var formattedUrlName = CmsUrlHelper.FormatUrlName(!string.IsNullOrEmpty(urlName) ? urlName : displayName);

            if (sectionNodeDbSet.Any(s => s.UrlName == formattedUrlName))
            {
                throw new ArgumentException(string.Format(Messages.SectionNodeUrlNameMustBeUnique, formattedUrlName));
            }

            var sectionTemplate = _sectionTemplateService.GetById(sectionTemplateId);

            if (sectionTemplate == null)
            {
                throw new ArgumentException(string.Format(Messages.SectionTemplateNotFound, sectionTemplateId));
            }

            var section = sectionNodeDbSet.Create();

            section.SectionTemplateId = sectionTemplate.Id;
            section.DisplayName       = displayName;
            section.UrlName           = formattedUrlName;
            section.Order             = !orderedSectionNodes.Any() ? CmsConstants.FirstOrderNumber : orderedSectionNodes.Count();
            section.IsPublished       = false;
            section.CreatedOn         = DateTime.UtcNow;
            section.ModifiedOn        = section.CreatedOn;
            section.InTrash           = false;

            sectionNodeDbSet.Add(section);

            if (commit)
            {
                _unitOfWork.Commit();
            }

            return(section);
        }