Exemplo n.º 1
0
        private void RenderPageActionResult(PageActionResult result)
        {
            context.Response.ContentType = "application/json";

            JavaScriptSerializer js = new JavaScriptSerializer();

            var jsonObj = js.Serialize(result);

            context.Response.Write(jsonObj.ToString());
        }
Exemplo n.º 2
0
        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
                        )
                    );
            }
        }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 4
0
        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
                        )
                    );
            }
        }