private static string BuildPageUrl(PageInstanceEntity pageInstance, Guid parentId) { var parent = GetPage(parentId); var parentUrl = parent.PageUrl.ToString(); var url = string.Format("{0}{1}/", parentUrl, pageInstance.PageUrl); var applicationPath = Utils.ApplicationPath; return(url.Substring(applicationPath.Length)); }
private static string BuildPageUrl(PageInstanceEntity pageInstance, Guid parentId) { var parent = GetPage(parentId); var parentUrl = parent.PageUrl.ToString(); var url = string.Format("{0}{1}/", parentUrl, pageInstance.PageUrl); url = url.TrimStart('/'); return(url); }
private static void PopulatePageFromPageInstance(CmsPage page, PageInstanceEntity pageInstance) { page.Author = pageInstance.Author; page.ChildSortDirection = pageInstance.ChildSortDirection; page.ChildSortOrder = pageInstance.ChildSortOrder; page.CurrentVersion = pageInstance.CurrentVersion; page.OriginalStatus = pageInstance.Status; page.PageInstanceId = pageInstance.PageInstanceId; page.PageName = pageInstance.PageName; page.StartPublish = pageInstance.StartPublish; page.Status = pageInstance.Status; page.StopPublish = pageInstance.StopPublish; page.UpdateDate = pageInstance.UpdateDate; page.UrlSegment = pageInstance.PageUrl; page.VisibleInMenu = pageInstance.VisibleInMenu; page.VisibleInSiteMap = pageInstance.VisibleInSitemap; page.Property = Data.PropertyData.GetPropertiesForPage(page.PageId, page.LanguageId, page.PageTypeId, page.CurrentVersion, false); }
public void Save() { using (var context = new DataContext()) { var pageEntity = context.Pages.SingleOrDefault(x => x.PageId == PageId); if (pageEntity == null) { pageEntity = new PageEntity { PageId = PageId, PageTypeId = PageTypeId, ParentId = ParentId, RootId = RootId, SortOrder = SortIndex, TreeLevel = TreeLevel }; context.Add(pageEntity); context.SaveChanges(); } // --------------- var pageInstance = context.PageInstances.SingleOrDefault(x => x.PageInstanceId == PageInstanceId); if (pageInstance == null) { CurrentVersion = context.PageInstances.Where(x => x.PageId == PageId && x.LanguageId == LanguageId).Max(x => x.CurrentVersion) + 1; pageInstance = new PageInstanceEntity { PageId = PageId, LanguageId = LanguageId, CreatedDate = DateTime.Now.ToUniversalTime(), CurrentVersion = CurrentVersion, Status = PageInstanceStatus.WorkingCopy }; context.Add(pageInstance); } pageInstance.Author = HttpContext.Current.User.Identity.Name; pageInstance.ChildSortDirection = ChildSortDirection; pageInstance.ChildSortOrder = ChildSortOrder; pageInstance.PageName = PageName; pageInstance.StartPublish = StartPublish; pageInstance.StopPublish = StopPublish; pageInstance.UpdateDate = DateTime.Now.ToUniversalTime(); pageInstance.VisibleInMenu = VisibleInMenu; pageInstance.VisibleInSitemap = VisibleInSiteMap; EnsurePageUrl(); pageInstance.PageUrl = UrlSegment; context.SaveChanges(); PageInstanceId = pageInstance.PageInstanceId; // --------------- var pagePropertiesForPage = context.PageProperties.Where(x => x.PageId == PageId && x.LanguageId == LanguageId && x.Version == CurrentVersion).ToList(); foreach (var propertyItem in Property) { var propertyEntity = pagePropertiesForPage.Find(c => c.PropertyId == propertyItem.PropertyId); if (propertyEntity == null) { propertyEntity = new PagePropertyEntity { LanguageId = LanguageId, PageId = PageId, PropertyId = propertyItem.PropertyId, Version = CurrentVersion }; context.Add(propertyEntity); pagePropertiesForPage.Add(propertyEntity); } propertyEntity.PageData = GetSerializedPropertyValue(propertyItem); } context.SaveChanges(); } // Allow property types to execute code when a property of that type is saved foreach (var propertyItem in Property) { if (propertyItem == null) { continue; } var propertyData = propertyItem.PropertyData as IPageSavedHandler; if (propertyData != null) { propertyData.PageSaved(this); } } if (CurrentVersion == 1) { Publish(true); } PageFactory.RaisePageSaved(PageId, LanguageId, CurrentVersion); }
public void Save() { using (var context = new DataContext()) { var pageEntity = context.Pages.SingleOrDefault(x => x.PageId == PageId); if (pageEntity == null) { pageEntity = new PageEntity { PageId = PageId, PageTypeId = PageTypeId, ParentId = ParentId, RootId = RootId, SortOrder = SortIndex, TreeLevel = TreeLevel }; context.Add(pageEntity); context.SaveChanges(); } // --------------- var pageInstance = context.PageInstances.SingleOrDefault(x => x.PageInstanceId == PageInstanceId); if (pageInstance == null) { CurrentVersion = context.PageInstances.Where(x => x.PageId == PageId && x.LanguageId == LanguageId).Max(x => x.CurrentVersion) + 1; pageInstance = new PageInstanceEntity { PageId = PageId, LanguageId = LanguageId, CreatedDate = DateTime.Now.ToUniversalTime(), CurrentVersion = CurrentVersion, Status = PageInstanceStatus.WorkingCopy }; context.Add(pageInstance); } pageInstance.Author = HttpContext.Current.User.Identity.Name; pageInstance.ChildSortDirection = ChildSortDirection; pageInstance.ChildSortOrder = ChildSortOrder; pageInstance.PageName = PageName; pageInstance.StartPublish = StartPublish; pageInstance.StopPublish = StopPublish; pageInstance.UpdateDate = DateTime.Now.ToUniversalTime(); pageInstance.VisibleInMenu = VisibleInMenu; pageInstance.VisibleInSitemap = VisibleInSiteMap; EnsurePageUrl(); pageInstance.PageUrl = UrlSegment; context.SaveChanges(); PageInstanceId = pageInstance.PageInstanceId; // --------------- var pagePropertiesForPage = context.PageProperties.Where(x => x.PageId == PageId && x.LanguageId == LanguageId && x.Version == CurrentVersion).ToList(); foreach (var propertyItem in Property) { var propertyEntity = pagePropertiesForPage.Find(c => c.PropertyId == propertyItem.PropertyId); if (propertyEntity == null) { propertyEntity = new PagePropertyEntity { LanguageId = LanguageId, PageId = PageId, PropertyId = propertyItem.PropertyId, Version = CurrentVersion }; context.Add(propertyEntity); pagePropertiesForPage.Add(propertyEntity); } propertyEntity.PageData = GetSerializedPropertyValue(propertyItem); } context.SaveChanges(); } // Allow property types to execute code when a property of that type is saved foreach (var propertyItem in Property) { if (propertyItem == null) { continue; } var propertyData = propertyItem.PropertyData as IPageSavedHandler; if (propertyData != null) { propertyData.PageSaved(this); } } if (CurrentVersion == 1) { Publish(true); } PageFactory.RaisePageSaved(PageId, LanguageId, CurrentVersion); }
internal static void UpdatePageIndex(PageInstanceEntity pageInstance, Guid parentId, Guid rootId, int treeLevel, int pageTypeId, int sortOrder) { if (_pageLanguageIndex == null) { IndexSite(); } var pageIndex = GetPageIndex(pageInstance.LanguageId); var page = pageIndex.GetPageIndexItem(pageInstance.PageId); if (page != null) { page.CurrentVersion = pageInstance.CurrentVersion; page.PageName = pageInstance.PageName; page.UpdateDate = pageInstance.UpdateDate; page.StartPublish = pageInstance.StartPublish; page.StopPublish = pageInstance.StopPublish; page.VisibleInMenu = pageInstance.VisibleInMenu; page.VisibleInSiteMap = pageInstance.VisibleInSitemap; page.SortOrder = sortOrder; page.Status = pageInstance.Status; page.ChildSortDirection = pageInstance.ChildSortDirection; page.ChildSortOrder = pageInstance.ChildSortOrder; // Update if page URL segment was changed if (page.UrlSegment != pageInstance.PageUrl) { page.UrlSegment = pageInstance.PageUrl; page.UrlSegmentHash = page.UrlSegment.GetHashCode(); page.PageUrl = BuildPageUrl(pageInstance, parentId); if (page.HasChildren) { UpdateChildUrl(pageIndex, page, page.FirstChild); } } pageIndex.SavePageIndexItem(page); } else { page = new PageIndexItem { Author = pageInstance.Author, ChildSortDirection = pageInstance.ChildSortDirection, ChildSortOrder = pageInstance.ChildSortOrder, CreatedDate = pageInstance.CreatedDate, CurrentVersion = pageInstance.CurrentVersion, DeletedDate = pageInstance.DeletedDate, FirstChild = -1, NextPage = -1, PageId = pageInstance.PageId, PageInstanceId = pageInstance.PageInstanceId, PageName = pageInstance.PageName, PageTypeId = pageTypeId, PageUrl = BuildPageUrl(pageInstance, parentId), ParentId = parentId, RootId = rootId, SortOrder = sortOrder, StartPublish = pageInstance.StartPublish, Status = pageInstance.Status, StopPublish = pageInstance.StopPublish, VisibleInMenu = pageInstance.VisibleInMenu, VisibleInSiteMap = pageInstance.VisibleInSitemap, UpdateDate = pageInstance.UpdateDate, UrlSegment = pageInstance.PageUrl }; page.UrlSegmentHash = page.UrlSegment.GetHashCode(); page.TreeLevel = treeLevel; pageIndex.InsertPageIndexItem(page); } }