public WikiPageTreeNode Create(WikiPage page) { WikiPageTreeNode parent = null; if (page.Parent != null) { parent = _session.Query<WikiPageTreeNode>().FirstOrDefault(x => x.PageId == page.Parent.Id); } var node = new WikiPageTreeNode(page, parent); _session.Save(node); return node; }
private void AddChildren(PagePath pagePath, string pageUri, SiteMapNode currentMapNode, WikiPageTreeNode currentTreeNode, IEnumerable<WikiPageTreeNode> completeTree) { foreach (var childTreeNode in completeTree.Where(x => x.ParentLinage == currentTreeNode.Lineage)) { var child = new SiteMapNode(childTreeNode.Page.Title, childTreeNode.Path, childTreeNode.CreateLink(pageUri), childTreeNode.CreateLinksForPath(pageUri)); if (child.Path.Equals(pagePath)) child.IsCurrent = true; currentMapNode.AddChild(child); AddChildren(pagePath, pageUri, child, childTreeNode, completeTree); } }
public WikiPageTreeNode(WikiPage page, WikiPageTreeNode parentNode) { if (page == null) throw new ArgumentNullException("page"); if (parentNode == null) { Lineage = string.Format("/{0}/", page.Id); Titles = page.Title; Path = page.PagePath; Depth = 1; } else { Lineage = string.Format("{0}{1}/", parentNode.Lineage, page.Id); Depth = parentNode.Depth + 1; Path = page.PagePath; // level two should not include the parent name (one = root document i.e. "home") Titles = Depth == 2 ? page.Title : string.Format("{0}{{#}}{1}", parentNode.Titles, page.Title); } Page = page; }
public void Save(WikiPageTreeNode node) { _session.Update(node); }
public void Delete(WikiPageTreeNode node) { _session.Delete(node); }