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()); }
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()); }
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()); }