Ejemplo n.º 1
0
            public static string RefreshEditLockStatus(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor)
            {
                CmsPageLockData lockData = pageToRenderFor.getCurrentPageLockData();
                StringBuilder   html     = new StringBuilder();

                if (lockData != null)
                {
                    html.Append("<strong>Editing is locked</strong><br />");
                    html.Append("Locked by: " + lockData.LockedByUsername + "<br />");
                    TimeSpan expiresIn  = TimeSpan.FromTicks(lockData.LockExpiresAt.Ticks - DateTime.Now.Ticks);
                    int      numMinutes = Convert.ToInt32(Math.Round(expiresIn.TotalMinutes));
                    html.Append("Lock expires in " + numMinutes + " minutes or when editing is complete<br />");
                    html.Append("<a href=\"" + pageToRenderFor.Url + "\">refresh status</a>");
                }
                return(html.ToString());
            }
Ejemplo n.º 2
0
            public static string RemoveEditLock(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor)
            {
                CmsPageLockData     lockData  = pageToRenderFor.getCurrentPageLockData();
                NameValueCollection paramList = new NameValueCollection();
                StringBuilder       html      = new StringBuilder();

                // -- Kill lock link
                if (lockData.LockedByUsername == CmsContext.currentWebPortalUser.UserName || CmsContext.currentUserIsSuperAdmin)
                {
                    paramList.Clear();
                    paramList.Add("target", pageToRenderFor.ID.ToString());
                    paramList.Add("action", "logoff");
                    string killLockLink = CmsContext.getUrlByPagePath(CmsConfig.getConfigValue("KillLockPath", "/_admin/actions/killLock"), paramList);
                    html.Append("<a href=\"#\" onclick=\"EditMenuConfirmModal('Do you really want to remove the edit lock?','" + killLockLink + "',300, 300);\"><strong>Remove</strong> edit lock</a><br />");
                }
                return(html.ToString());
            }
Ejemplo n.º 3
0
        private CmsPageEditMenuAction[] getAllPageActionsForCurrentContext()
        {
            // -- if the user can't author, they can't do anything.
            if (!CmsContext.currentPage.currentUserCanWrite)
            {
                return(new CmsPageEditMenuAction[0]);
            }

            List <CmsPageEditMenuAction> actionsByCategory = new List <CmsPageEditMenuAction>();

            CmsEditMode     currEditMode = CmsContext.currentEditMode;
            CmsPageLockData lockData     = _page.getCurrentPageLockData();

            // -- if the page is locked and we're viewing it, show PageLockMaintenance options
            if (lockData != null && currEditMode == CmsEditMode.View)
            {
                actionsByCategory.AddRange(getActionItemsByCategory(AllStandardActions, CmsEditMenuActionCategory.PageLockMaintenance));
            }
            else if (currEditMode == CmsEditMode.View && CmsContext.requestedPageVersionNumberToView >= 0)
            {
                actionsByCategory.AddRange(getActionItemsByCategory(AllStandardActions, CmsEditMenuActionCategory.RevisionInformation));
            }
            else
            {
                actionsByCategory.AddRange(getActionItemsByCategory(AllStandardActions, CmsEditMenuActionCategory.ThisPageAction));
                actionsByCategory.AddRange(getActionItemsByCategory(AllStandardActions, CmsEditMenuActionCategory.SubPageAction));
                actionsByCategory.AddRange(getActionItemsByCategory(AllStandardActions, CmsEditMenuActionCategory.SiteTool));
            }

            // -- Include those actions that match the current edit mode
            List <CmsPageEditMenuAction> ret = new List <CmsPageEditMenuAction>();

            foreach (CmsPageEditMenuAction a in actionsByCategory)
            {
                if (a.RequiredEditMode == currEditMode)
                {
                    ret.Add(a);
                }
            } // foreach

            // -- If we only have one language, don't include language switching
            if (CmsConfig.Languages.Length < 2)
            {
                removeActionItem(ret, CmsEditMenuActionItem.SwitchEditLanguage);
            }

            // -- don't allow the home page to be deleted nor renamed
            if (_page.ID == CmsContext.HomePage.ID)
            {
                removeActionItem(ret, CmsEditMenuActionItem.DeleteThisPage);
                removeActionItem(ret, CmsEditMenuActionItem.RenameThisPage);
            }

            // -- sort child pages only if there's more than one child page
            if (_page.ChildPages.Length <= 1)
            {
                removeActionItem(ret, CmsEditMenuActionItem.SortSubPages);
            }

            // -- remove Admin only tools
            if (!CmsContext.currentUserIsSuperAdmin)
            {
                removeActionItem(ret, CmsEditMenuActionItem.ChangeTemplate);
                removeActionItem(ret, CmsEditMenuActionItem.AdminReportsAndTools);
                removeActionItem(ret, CmsEditMenuActionItem.RemoveEditLock);
                removeActionItem(ret, CmsEditMenuActionItem.UserManagement);
            }

            return(ret.ToArray());
        }