private int DetachPageFromRoot(int i, PageIndexItem pageIndexItem) { if (i == 0) { var firstSiblingPosition = pageIndexItem.NextPage; var firstSibling = _pageIndex[firstSiblingPosition]; var temporaryItem = new PageIndexItem { PageId = new Guid("ffffffff-ffff-ffff-ffff-ffffffffffff") }; _pageIndex[0] = temporaryItem; _pageIndex[firstSiblingPosition] = pageIndexItem; _pageIndex[0] = firstSibling; i = firstSiblingPosition; } else { var childId = 0; while (childId != -1) { var childPage = _pageIndex[childId]; if (childPage.NextPage == i) { childPage.NextPage = pageIndexItem.NextPage; break; } childId = childPage.NextPage; } } return(i); }
public CmsPage(PageIndexItem pageIndexItem, int languageId) { Author = pageIndexItem.Author; ChildSortDirection = pageIndexItem.ChildSortDirection; ChildSortOrder = pageIndexItem.ChildSortOrder; CreatedDate = pageIndexItem.CreatedDate; LanguageId = languageId; OriginalStatus = pageIndexItem.Status; PageId = pageIndexItem.PageId; PageInstanceId = pageIndexItem.PageInstanceId; PageName = pageIndexItem.PageName; PageTypeId = pageIndexItem.PageTypeId; PageUrl = new Uri(Utils.ApplicationPath + pageIndexItem.PageUrl, UriKind.Relative); ParentId = pageIndexItem.ParentId; RootId = pageIndexItem.RootId; SortIndex = pageIndexItem.SortOrder; StartPublish = pageIndexItem.StartPublish; Status = pageIndexItem.Status; StopPublish = pageIndexItem.StopPublish; TreeLevel = pageIndexItem.TreeLevel; UpdateDate = pageIndexItem.UpdateDate; UrlSegment = pageIndexItem.UrlSegment; VisibleInMenu = pageIndexItem.VisibleInMenu; VisibleInSiteMap = pageIndexItem.VisibleInSiteMap; CurrentVersion = pageIndexItem.CurrentVersion; FirstChild = pageIndexItem.FirstChild; NextPage = pageIndexItem.NextPage; }
internal PageCollection GetPageTreeByCriteria(Guid pageId, Predicate <PageIndexItem> match) { var pageCollection = new PageCollection(); var stack = new Stack(); int currentId; int index = 0; if (pageId == Guid.Empty) { currentId = 0; } else { PageIndexItem firstPage = GetPageIndexItem(pageId); if (firstPage == null) { throw new ArgumentException("Page with id " + pageId + " not found!"); } currentId = firstPage.FirstChild; } while (currentId > -1) { PageIndexItem item = _pageIndex[currentId]; if (match(item)) { pageCollection.Add(item.PageId); if (item.NextPage > -1) { stack.Push(item.NextPage); } currentId = item.FirstChild; } else { currentId = item.NextPage; } if ((currentId == -1) && (stack.Count > 0)) { currentId = (int)stack.Pop(); } if (index > _pageIndex.Count) { // TODO: This should never happen, to be removed.. throw new Exception("Unending whileloop detected"); } index++; } return(pageCollection); }
private PageIndexItem GetRootPageIndexItem() { var rootPageIndexItem = new PageIndexItem { CreatedDate = DateTime.MinValue, FirstChild = 0, NextPage = -1, PageId = SiteSettings.RootPage, PageName = "Root", }; return(rootPageIndexItem); }
internal void SavePageIndexItem(PageIndexItem page) { var pageId = page.PageId; for (var i = 0; i < _pageIndex.Count; i++) { var pageIndexItem = _pageIndex[i]; if (pageIndexItem.PageId == pageId) { _pageIndex[i] = page; break; } } }
public bool TryMvcSupport(int segmentPosition, string[] segments, PageIndexItem page) { if (page.PageId == Guid.Empty) { return false; } try { var parametersCount = segments.Length - segmentPosition - 1; var parameters = new string[parametersCount]; Array.Copy(segments, segmentPosition + 1, parameters, 0, parametersCount); var cmsPage = new CmsPage(page, Language.CurrentLanguageId); RequestModule.RedirectToControllerAction(cmsPage, parameters); return true; } catch (Exception exception) { Logger.Write(exception, Logger.Severity.Info); return false; } }
private void DetachPage(PageIndexItem pageIndexItem, int i) { var parentPage = GetPageIndexItem(pageIndexItem.ParentId); if (parentPage.FirstChild == i) { parentPage.FirstChild = pageIndexItem.NextPage; } else { var childId = parentPage.FirstChild; while (childId != -1) { var childPage = _pageIndex[childId]; if (childPage.NextPage == i) { childPage.NextPage = pageIndexItem.NextPage; break; } childId = childPage.NextPage; } } }
internal void InsertPageIndexItem(PageIndexItem page) { var item = GetPageIndexItem(page.ParentId); var insertPosition = _pageIndex.Count; if (item != null) { var firstChild = item.FirstChild; item.FirstChild = insertPosition; page.NextPage = firstChild; } else if (_pageIndex.Count > 0) { item = _pageIndex[0]; var nextPage = item.NextPage; item.NextPage = insertPosition; page.NextPage = nextPage; } _pageIndex.Add(page); }
private void UpdateNodeAfterMove(List<PageIndexItem> changedItems, string parentUrl, Guid rootId, int treeLevel, PageIndexItem pageIndexItem) { #if DEBUG Logger.Write(string.Format("Moving '{0}', {1}, '{2}'", pageIndexItem.PageUrl, pageIndexItem.TreeLevel, pageIndexItem.RootId)); #endif pageIndexItem.RootId = rootId; pageIndexItem.TreeLevel = treeLevel + 1; pageIndexItem.PageUrl = parentUrl + pageIndexItem.UrlSegment + "/"; changedItems.Add(pageIndexItem); if (pageIndexItem.HasChildren) { UpdateChildrenAfterMove(changedItems, pageIndexItem.PageUrl, pageIndexItem.FirstChild, pageIndexItem.RootId, pageIndexItem.TreeLevel); } }
private int DetachPageFromRoot(int i, PageIndexItem pageIndexItem) { if (i == 0) { var firstSiblingPosition = pageIndexItem.NextPage; var firstSibling = _pageIndex[firstSiblingPosition]; var temporaryItem = new PageIndexItem {PageId = new Guid("ffffffff-ffff-ffff-ffff-ffffffffffff")}; _pageIndex[0] = temporaryItem; _pageIndex[firstSiblingPosition] = pageIndexItem; _pageIndex[0] = firstSibling; i = firstSiblingPosition; } else { var childId = 0; while (childId != -1) { var childPage = _pageIndex[childId]; if (childPage.NextPage == i) { childPage.NextPage = pageIndexItem.NextPage; break; } childId = childPage.NextPage; } } return i; }
private void DetachPage(PageIndexItem pageIndexItem, int i) { var parentPage = GetPageIndexItem(pageIndexItem.ParentId); if (parentPage.FirstChild == i) { parentPage.FirstChild = pageIndexItem.NextPage; } else { var childId = parentPage.FirstChild; while (childId != -1) { var childPage = _pageIndex[childId]; if (childPage.NextPage == i) { childPage.NextPage = pageIndexItem.NextPage; break; } childId = childPage.NextPage; } } }
private PageIndexItem GetRootPageIndexItem() { var rootPageIndexItem = new PageIndexItem { CreatedDate = DateTime.MinValue, FirstChild = 0, NextPage = -1, PageId = SiteSettings.RootPage, PageName = "Root", }; return rootPageIndexItem; }
internal void SavePageIndexItem(PageIndexItem page) { var pageId = page.PageId; for (var i = 0; i < _pageIndex.Count; i++) { var pageIndexItem = _pageIndex[i]; if (pageIndexItem.PageId == pageId) { _pageIndex[i] = page; break; } } }
internal void InsertPageIndexItem(PageIndexItem page) { var item = GetPageIndexItem(page.ParentId); var insertPosition = _pageIndex.Count; if (item != null) { var firstChild = item.FirstChild; item.FirstChild = insertPosition; page.NextPage = firstChild; } else if (_pageIndex.Count > 0) { item = _pageIndex[0]; var nextPage = item.NextPage; item.NextPage = insertPosition; page.NextPage = nextPage; } _pageIndex.Add(page); }
internal void Add(PageIndexItem p) { _pageIndex.Add(p); }
internal void Add(PageIndexItem p) { _pageIndex.Add(p); }
private void UpdateNodeAfterMove(List <PageIndexItem> changedItems, string parentUrl, Guid rootId, int treeLevel, PageIndexItem pageIndexItem) { #if DEBUG Logger.Write(string.Format("Moving '{0}', {1}, '{2}'", pageIndexItem.PageUrl, pageIndexItem.TreeLevel, pageIndexItem.RootId)); #endif pageIndexItem.RootId = rootId; pageIndexItem.TreeLevel = treeLevel + 1; pageIndexItem.PageUrl = parentUrl + pageIndexItem.UrlSegment + "/"; changedItems.Add(pageIndexItem); if (pageIndexItem.HasChildren) { UpdateChildrenAfterMove(changedItems, pageIndexItem.PageUrl, pageIndexItem.FirstChild, pageIndexItem.RootId, pageIndexItem.TreeLevel); } }
public void HandlePage(PageIndexItem page) { var cmsPage = new CmsPage(page, Language.CurrentLanguageId); RequestModule.RedirectToController(cmsPage); }