private void RenderPageActionResult(PageActionResult result) { context.Response.ContentType = "application/json"; JavaScriptSerializer js = new JavaScriptSerializer(); var jsonObj = js.Serialize(result); context.Response.Write(jsonObj.ToString()); }
private void SortChildPagesAlpha() { PageActionResult result = new PageActionResult(); if (!context.Request.IsAuthenticated) { result.Success = false; result.Message = PageManagerResources.InvalidRequest; RenderPageActionResult(result); log.Info("rejected page sort children request for anonymous user"); return; } int selNodeId = -1; if (context.Request.Form["selNode"] != null) { int.TryParse(context.Request.Form["selNode"], out selNodeId); } if (selNodeId == -1) { result.Success = false; result.Message = PageManagerResources.InvalidRequest; RenderPageActionResult(result); log.Info("no pageid provided for sort children command"); return; } //log.Info("node to sort " + selNodeId); LoadSiteMapSettings(); mojoSiteMapNode sortNode = SiteUtils.GetSiteMapNodeForPage(rootNode, selNodeId); if (sortNode == null) { result.Success = false; result.Message = PageManagerResources.InvalidRequest; RenderPageActionResult(result); log.Info("node not found for sort children command"); return; } if (!WebUser.IsInRoles(sortNode.EditRoles)) { result.Success = false; result.Message = string.Format( CultureInfo.InvariantCulture, PageManagerResources.MovePageNotAllowedFormat, sortNode.Title); RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.SortChildPagesDeniedLogFromat, currentUserName, sortNode.Title, sortNode.PageId ) ); } return; } if (!WebUser.IsInRoles(sortNode.CreateChildPageRoles)) { result.Success = false; result.Message = string.Format( CultureInfo.InvariantCulture, PageManagerResources.MovePageNotAllowedFormat, sortNode.Title); RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.SortChildPagesDeniedLogFromat, currentUserName, sortNode.Title, sortNode.PageId ) ); } return; } PageSettings pageSettings = new PageSettings(siteSettings.SiteId, sortNode.PageId); pageSettings.ResortPagesAlphabetically(); CacheHelper.ResetSiteMapCache(); result.Success = true; result.Message = "Success"; RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.SortChildPagesSuccessLogFormat, currentUserName, sortNode.Title, sortNode.PageId ) ); } }
private void HandleMove() { PageActionResult result = new PageActionResult(); if (!context.Request.IsAuthenticated) { result.Success = false; result.Message = PageManagerResources.InvalidRequest; RenderPageActionResult(result); log.Info("rejected page move request for anonymous user"); return; } int movedNodeId = -1; int targetNodeId = -1; string position = string.Empty; if (context.Request.Form["position"] != null) { position = context.Request.Form["position"]; } if (context.Request.Form["movedNode"] != null) { int.TryParse(context.Request.Form["movedNode"], out movedNodeId); } if (context.Request.Form["targetNode"] != null) { int.TryParse(context.Request.Form["targetNode"], out targetNodeId); } //log.Info("movedNode = " + movedNodeId); //log.Info("targetNode = " + targetNodeId); //log.Info("position = " + position); if ((movedNodeId == -1) || (targetNodeId == -1) || (string.IsNullOrEmpty(position))) { result.Success = false; result.Message = PageManagerResources.InvalidRequest; RenderPageActionResult(result); log.Info("rejected page move request due to invalid page parameters for user " + currentUserName); return; } LoadSiteMapSettings(); mojoSiteMapNode movedNode = SiteUtils.GetSiteMapNodeForPage(rootNode, movedNodeId); mojoSiteMapNode targetNode = SiteUtils.GetSiteMapNodeForPage(rootNode, targetNodeId); if ((movedNode == null) || (targetNode == null)) { result.Success = false; result.Message = PageManagerResources.InvalidRequest; RenderPageActionResult(result); log.Error("movedNode or targetNode was null for user " + currentUserName); return; } if ( (!isAdmin && !isContentAdmin && !isSiteEditor) && (!WebUser.IsInRoles(movedNode.EditRoles)) ) { result.Success = false; result.Message = string.Format( CultureInfo.InvariantCulture, PageManagerResources.MovePageNotAllowedFormat, movedNode.Title); RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveNodeRequestDeniedFormat, currentUserName, movedNode.Title, movedNode.PageId, position, targetNode.Title, targetNode.PageId ) ); } return; } mojoSiteMapNode selectedParentNode = null; PageSettings movedPage; PageSettings targetPage; switch (position) { case "inside": // this case is when moving to a new parent node that doesn't have any children yet // target is the new parent // or when momving to the first position of the current parent if ( (!isAdmin && !isContentAdmin && !isSiteEditor) && (!WebUser.IsInRoles(targetNode.CreateChildPageRoles)) ) { result.Success = false; result.Message = string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveToNewParentNotAllowedFormat, targetNode.Title); RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveNodeRequestDeniedFormat, currentUserName, movedNode.Title, movedNode.PageId, position, targetNode.Title, targetNode.PageId ) ); } return; } // change parent page id movedPage = new PageSettings(siteSettings.SiteId, movedNode.PageId); targetPage = new PageSettings(siteSettings.SiteId, targetNode.PageId); movedPage.ParentId = targetPage.PageId; movedPage.ParentGuid = targetPage.PageGuid; movedPage.PageOrder = 0; //reset site map cache movedPage.Save(); ResortChildPages(movedPage.ParentId); CacheHelper.ResetSiteMapCache(); result.Success = true; result.Message = "Success"; // no message is shown for success in the ui RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveNodeRequestLogFormat, currentUserName, movedNode.Title, movedNode.PageId, position, targetNode.Title, targetNode.PageId ) ); } return; //break; case "before": // put this page before the target page beneath the same parent as the target if (targetNode.ParentId != movedNode.ParentId) { if (targetNode.ParentId == -1) { //trying to move a page to root if ((!isAdmin && !isContentAdmin && !isSiteEditor) && (!WebUser.IsInRoles(siteSettings.RolesThatCanCreateRootPages)) ) { result.Success = false; result.Message = PageManagerResources.MoveToRootNotAllowed; RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveNodeRequestDeniedFormat, currentUserName, movedNode.Title, movedNode.PageId, position, targetNode.Title, targetNode.PageId ) ); } return; } } else { selectedParentNode = SiteUtils.GetSiteMapNodeForPage(rootNode, targetNode.ParentId); if ( (!isAdmin && !isContentAdmin && !isSiteEditor) && (!WebUser.IsInRoles(selectedParentNode.CreateChildPageRoles)) ) { result.Success = false; result.Message = string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveToNewParentNotAllowedFormat, targetNode.Title); RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveNodeRequestDeniedFormat, currentUserName, movedNode.Title, movedNode.PageId, position, targetNode.Title, targetNode.PageId ) ); } return; } } movedPage = new PageSettings(siteSettings.SiteId, movedNode.PageId); targetPage = new PageSettings(siteSettings.SiteId, targetNode.PageId); movedPage.ParentId = targetPage.ParentId; movedPage.ParentGuid = targetPage.ParentGuid; // set sort and re-sort movedPage.PageOrder = targetPage.PageOrder - 1; movedPage.Save(); ResortChildPages(targetNode.ParentId); CacheHelper.ResetSiteMapCache(); result.Success = true; result.Message = "Success"; // no message is shown for success in the ui RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveNodeRequestLogFormat, currentUserName, movedNode.Title, movedNode.PageId, position, targetNode.Title, targetNode.PageId ) ); } return; } else { //parent did not change just sort if allowed to edit movedPage = new PageSettings(siteSettings.SiteId, movedNode.PageId); targetPage = new PageSettings(siteSettings.SiteId, targetNode.PageId); // set sort and re-sort movedPage.PageOrder = targetPage.PageOrder - 1; movedPage.Save(); ResortChildPages(targetNode.ParentId); CacheHelper.ResetSiteMapCache(); result.Success = true; result.Message = "Success"; // no message is shown for success in the ui RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveNodeRequestLogFormat, currentUserName, movedNode.Title, movedNode.PageId, position, targetNode.Title, targetNode.PageId ) ); } return; } //break; case "after": default: // put this page after the target page beneath the same parent as the target if (targetNode.ParentId != movedNode.ParentId) { if (targetNode.ParentId == -1) { //trying to move a page to root if ( (!isAdmin && !isContentAdmin && !isSiteEditor) && (!WebUser.IsInRoles(siteSettings.RolesThatCanCreateRootPages)) ) { result.Success = false; result.Message = PageManagerResources.MoveToRootNotAllowed; RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveNodeRequestDeniedFormat, currentUserName, movedNode.Title, movedNode.PageId, position, targetNode.Title, targetNode.PageId ) ); } return; } } else { selectedParentNode = SiteUtils.GetSiteMapNodeForPage(rootNode, targetNode.ParentId); if ( (!isAdmin && !isContentAdmin && !isSiteEditor) && (!WebUser.IsInRoles(selectedParentNode.CreateChildPageRoles)) ) { result.Success = false; result.Message = string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveToNewParentNotAllowedFormat, targetNode.Title); RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveNodeRequestDeniedFormat, currentUserName, movedNode.Title, movedNode.PageId, position, targetNode.Title, targetNode.PageId ) ); } return; } } // change parent page id movedPage = new PageSettings(siteSettings.SiteId, movedNode.PageId); targetPage = new PageSettings(siteSettings.SiteId, targetNode.PageId); movedPage.ParentId = targetPage.ParentId; movedPage.ParentGuid = targetPage.ParentGuid; // set sort and re-sort movedPage.PageOrder = targetPage.PageOrder + 1; movedPage.Save(); ResortChildPages(targetNode.ParentId); CacheHelper.ResetSiteMapCache(); result.Success = true; result.Message = "Success"; // no message is shown for success in the ui RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveNodeRequestLogFormat, currentUserName, movedNode.Title, movedNode.PageId, position, targetNode.Title, targetNode.PageId ) ); } return; } else { //parent did not change just sort movedPage = new PageSettings(siteSettings.SiteId, movedNode.PageId); targetPage = new PageSettings(siteSettings.SiteId, targetNode.PageId); // set sort and re-sort movedPage.PageOrder = targetPage.PageOrder + 1; movedPage.Save(); ResortChildPages(targetNode.ParentId); CacheHelper.ResetSiteMapCache(); result.Success = true; result.Message = "Success"; // no message is shown for success in the ui RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.MoveNodeRequestLogFormat, currentUserName, movedNode.Title, movedNode.PageId, position, targetNode.Title, targetNode.PageId ) ); } return; } //break; } }
private void HandleDelete() { PageActionResult result = new PageActionResult(); if (!context.Request.IsAuthenticated) { result.Success = false; result.Message = PageManagerResources.InvalidRequest; RenderPageActionResult(result); log.Info("rejected page delete request for anonymous user"); return; } int delNodeId = -1; if (context.Request.Form["delNode"] != null) { int.TryParse(context.Request.Form["delNode"], out delNodeId); } if (delNodeId == -1) { result.Success = false; result.Message = PageManagerResources.InvalidRequest; RenderPageActionResult(result); log.Info("no pageid provided for delete command"); return; } //log.Info("node to delete " + delNodeId); LoadSiteMapSettings(); mojoSiteMapNode deleteNode = SiteUtils.GetSiteMapNodeForPage(rootNode, delNodeId); if (deleteNode == null) { result.Success = false; result.Message = PageManagerResources.InvalidRequest; RenderPageActionResult(result); log.Info("node not found for delete command"); return; } if (!WebUser.IsInRoles(deleteNode.EditRoles)) { result.Success = false; result.Message = string.Format( CultureInfo.InvariantCulture, PageManagerResources.DeletePageNotAllowedFormat, deleteNode.Title); RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.DeletePageDeniedLogFormat, currentUserName, deleteNode.Title, deleteNode.PageId ) ); } return; } if (deleteNode.ChildNodes.Count > 0) { if (!WebUser.IsInRoles(siteSettings.RolesThatCanCreateRootPages)) { // child pages would be orphaned to becomne root level // but user does not have permission to create root pages result.Success = false; result.Message = PageManagerResources.CantOrphanPagesWarning; RenderPageActionResult(result); log.Info("delete would orphan child pages to root but user does not have permission"); return; } } ContentMetaRespository metaRepository = new ContentMetaRespository(); PageSettings pageSettings = new PageSettings(siteSettings.SiteId, deleteNode.PageId); metaRepository.DeleteByContent(deleteNode.PageGuid); Module.DeletePageModules(deleteNode.PageId); PageSettings.DeletePage(deleteNode.PageId); FriendlyUrl.DeleteByPageGuid(deleteNode.PageGuid); mojoPortal.SearchIndex.IndexHelper.ClearPageIndexAsync(pageSettings); CacheHelper.ResetSiteMapCache(); result.Success = true; result.Message = "Success"; RenderPageActionResult(result); if (logAllActions) { log.Info( string.Format( CultureInfo.InvariantCulture, PageManagerResources.DeletePageSuccessLogFormat, currentUserName, deleteNode.Title, deleteNode.PageId ) ); } }