public static IEnumerable <BackendActionStatus> GetStatusesList(string menuCode, int entityId, int parentEntityId, bool?boundToExternal) { var result = ContextMenuRepository.GetStatusesList(menuCode, entityId); result = result.ResolveStatusesForCustomActions(menuCode, entityId, parentEntityId); switch (menuCode) { case EntityTypeCode.ContentGroup: result = result.ResolveStatusesForContentGroup(entityId); break; case EntityTypeCode.SiteFolder: result = result.ResolveStatusesForSiteFolder(entityId); break; case EntityTypeCode.ContentFolder: result = result.ResolveStatusesForContentFolder(entityId); break; case EntityTypeCode.Article: result = result.ResolveStatusesForArticle(entityId, boundToExternal); break; case EntityTypeCode.Field: result = result.ResolveStatusesForField(entityId); break; case EntityTypeCode.ArticleVersion: result = result.ResolveStatusesForArticleVersion(entityId, boundToExternal); break; } return(result); }
/// <summary> /// Возвращает контекстное меню по его коду /// </summary> public static ContextMenu GetByCode(string menuCode, bool loadItems = false) { if (string.IsNullOrWhiteSpace(menuCode)) { return(null); } return(ContextMenuRepository.GetByCode(menuCode, loadItems)); }
/// <summary> /// Устанавливает соответствующий статус элементам меню связанным с Custom Action /// </summary> public static IEnumerable <BackendActionStatus> ResolveStatusesForCustomActions(this IEnumerable <BackendActionStatus> statuses, string menuCode, int entityId, int parentEntityId) { var menu = ContextMenuRepository.GetByCode(menuCode); if (menu == null) { return(Enumerable.Empty <BackendActionStatus>()); } if (menu.EntityType == null) { return(statuses); } return(CustomActionResolver.ResolveStatus(menu.EntityType.Code, entityId, parentEntityId, statuses.ToArray())); }
private static CustomAction Normalize(CustomAction customAction, int[] selectedActionsIds) { if (customAction.IsNew) { customAction.Action.ControllerActionUrl = ControllerActionUrl; customAction.Action.Code = !string.IsNullOrEmpty(customAction.ForceActionCode) ? customAction.ForceActionCode : $"custom_{DateTime.Now.Ticks}"; } var entityType = EntityTypeRepository.GetById(customAction.Action.EntityTypeId); if (entityType.ContextMenu == null) { entityType.ContextMenu = ContextMenuRepository.GetByCode(entityType.Code); } customAction.Action.EntityType = entityType; customAction.Action.Name = customAction.Name; customAction.Action.TabId = entityType.TabId; customAction.CalculateOrder(entityType.Id); if (!customAction.ShowInToolbar) { customAction.ParentActions = null; customAction.Action.ToolbarButtons = Enumerable.Empty <ToolbarButton>(); } else if (selectedActionsIds != null) { var result = new List <ToolbarButton>(); foreach (var id in selectedActionsIds) { var button = customAction.Action.ToolbarButtons?.FirstOrDefault(n => n.ParentActionId == id) ?? new ToolbarButton(); button.ActionId = customAction.Action.Id; button.ParentActionId = id; button.Name = customAction.Name; button.Icon = !string.IsNullOrWhiteSpace(customAction.IconUrl) ? customAction.IconUrl : ToolbarButtonDefaultIconUrl; button.Order = customAction.Order + 1000; result.Add(button); } customAction.Action.ToolbarButtons = result; } BackendActionTypeRepository.GetById(customAction.Action.TypeId); if (customAction.ShowInMenu) { if (entityType.ContextMenu == null) { throw new ApplicationException(string.Format(CustomActionStrings.ThereIsNoContextMenuForEntityType, entityType.Name)); } ContextMenuItem contentMenuItem; if (customAction.Action.ContextMenuItems != null && customAction.Action.ContextMenuItems.Any()) { contentMenuItem = customAction.Action.ContextMenuItems.First(); } else { contentMenuItem = new ContextMenuItem(); } contentMenuItem.ContextMenuId = entityType.ContextMenu.Id; contentMenuItem.ActionId = customAction.Action.Id; contentMenuItem.Name = customAction.Name; contentMenuItem.Icon = !string.IsNullOrWhiteSpace(customAction.IconUrl) ? customAction.IconUrl : ToolbarButtonDefaultIconUrl; contentMenuItem.Order = customAction.Order + 1000; customAction.Action.ContextMenuItems = new[] { contentMenuItem }; } else { customAction.Action.ContextMenuItems = Enumerable.Empty <ContextMenuItem>(); } if (!customAction.Action.IsInterface) { customAction.Action.IsWindow = false; } else { customAction.Action.ConfirmPhrase = null; customAction.Action.HasPreAction = false; } if (!customAction.Action.IsWindow) { customAction.Action.WindowHeight = null; customAction.Action.WindowWidth = null; } if (!IsEntityTypeSiteDescendants(entityType.Id)) { customAction.SiteIds = new int[] {}; customAction.SiteExcluded = false; } if (!IsEntityTypeContentDescendants(entityType.Id)) { customAction.ContentIds = new int[] {}; customAction.ContentExcluded = false; } return(customAction); }
public ContextMenu() { entityType = new Lazy <EntityType>(() => ContextMenuRepository.GetEntityType(Id)); }
/// <summary> /// Возвращает список контекстных меню /// </summary> public static List <ContextMenu> GetList() => ContextMenuRepository.GetList();
/// <summary> /// Возвращает контекстное меню по его идентификатору /// </summary> public static ContextMenu GetById(int menuId, bool loadItems = false) => ContextMenuRepository.GetById(menuId, loadItems);
/// <summary> /// Возвращает контекстное меню по его коду /// </summary> public static ContextMenu GetByCode(string menuCode, bool loadItems = false) { return(ContextMenuRepository.GetByCode(menuCode, loadItems)); }