コード例 #1
0
ファイル: RenderPage.cs プロジェクト: vuuvv/vcms
        private static RenderPage CreateTree(WebPage[] pages, WebPage current = null)
        {
            Dictionary<int, Node<WebPage>> lookup = new Dictionary<int, Node<WebPage>>();
            Dictionary<int?, List<Node<WebPage>>> children = new Dictionary<int?, List<Node<WebPage>>>();

            List<Node<WebPage>> roots = new List<Node<WebPage>>();

            foreach (var page in pages)
            {
                Node<WebPage> node = new Node<WebPage>();
                node.Data = page;
                node.Children = new List<Node<WebPage>>();

                lookup.Add(page.Id, node);

                if (page.ParentId != null)
                {
                    if (!children.ContainsKey(page.ParentId))
                    {
                        children[page.ParentId] = new List<Node<WebPage>>();
                    }
                    children[page.ParentId].Add(node);
                }

                if (page.ParentId == null)
                {
                    node.Parent = null;
                    roots.Add(node);
                }
            }

            foreach (var node in lookup.Values)
            {
                var page = node.Data;
                Node<WebPage> parent = null;
                if (page.ParentId != null)
                {
                    parent = lookup[(int)page.ParentId];
                }
                node.Parent = parent;
                if (children.ContainsKey(page.Id))
                {
                    node.Children = children[page.Id];
                }
            }

            var rpage = new RenderPage();
            rpage.Roots = roots;
            rpage.lookup = lookup;
            rpage.children = children;
            if (current != null)
            {
                rpage.Page = lookup[current.Id];
                rpage.Sidebar = GetFirstAncestor(rpage.Page);
                rpage.Ancestors = GetAncestors(rpage.Page);
                rpage.Title = rpage.Page.Data.Title;
            }
            return rpage;
        }
コード例 #2
0
ファイル: AdminWebPageController.cs プロジェクト: vuuvv/vcms
        public ActionResult Create(WebPage webpage, string nextStep)
        {
            this.ValidateRequest = false;
            if (ModelState.IsValid)
            {
                db.WebPages.Add(webpage);
                db.SaveChanges();
                return Redirect(nextStep);
            }

            ViewBag.ParentId = new SelectList(db.WebPages, "Id", "Url", webpage.ParentId);
            CreateFrame(title);
            return View(webpage);
        }
コード例 #3
0
ファイル: AdminWebPageController.cs プロジェクト: vuuvv/vcms
 //
 // GET: /AdminWebPage/Create
 public ActionResult Create(int? id)
 {
     CreateFrame(title);
     var parent = db.WebPages.Find(id);
     ViewBag.ParentId = new SelectList(db.WebPages, "Id", "Url", id);
     var page = new WebPage();
     page.Active = true;
     page.InNavigation = true;
     page.Col = 2;
     if (parent != null)
     {
         page.Url = parent.Url + "/";
     }
     return View(page);
 }
コード例 #4
0
ファイル: PressController.cs プロジェクト: vuuvv/vcms
        public ActionResult Detail(int? id)
        {
            if (id == null)
            {
                id = db.Press.OrderByDescending(p => p.CreatedDate).Last().Id;
            }
            var article = db.Press.Include("Category").First(p => p.Id == id);
            var url = string.Format("press/{0}", article.Category.Slug);
            var rpage = RenderPage.Create(db, url, article.Title);

            var pressPage = new WebPage();
            pressPage.Title = article.Title;
            var pressNode = new Node<WebPage>();
            pressNode.Data = pressPage;
            rpage.Ancestors.Add(pressNode);

            ViewBag.article = article;

            return View(rpage);
        }
コード例 #5
0
ファイル: AdminWebPageController.cs プロジェクト: vuuvv/vcms
 public ActionResult Edit(WebPage webpage, string nextStep)
 {
     this.ValidateRequest = false;
     if (ModelState.IsValid)
     {
         db.Entry(webpage).State = EntityState.Modified;
         db.SaveChanges();
         return Redirect(nextStep);
     }
     ViewBag.ParentId = new SelectList(db.WebPages, "Id", "Url", webpage.ParentId);
     return View(webpage);
 }
コード例 #6
0
ファイル: ProductController.cs プロジェクト: vuuvv/vcms
        public ActionResult StyleDetail(string slug)
        {
            var style = db.Styles.First(c => c.Slug == slug.ToLower());
            var rpage = RenderPage.Create(db, "product/style", style.Name);

            var pressPage = new WebPage();
            pressPage.Title = style.Name;
            var pressNode = new Node<WebPage>();
            pressNode.Data = pressPage;
            rpage.Ancestors.Insert(0, pressNode);

            ViewBag.style = style;

            return View(rpage);
        }