| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- using System;
- using System.Collections.Generic;
- using Abp;
- using Abp.Application.Navigation;
- using Abp.Authorization;
- using Abp.Collections.Extensions;
- using Abp.Localization;
- namespace IwbZero.Navigation
- {
- /// <summary>
- /// Represents an item in a <see cref="MenuDefinition"/>.
- /// </summary>
- public class IwbMenuItemDefinition : IIwbHasMenuItemDefinitions
- //: IHasMenuItemDefinitions
- {
- /// <summary>
- /// Unique name of the menu item in the application.
- /// Can be used to find this menu item later.
- /// </summary>
- public string Name { get; }
- /// <summary>
- /// Display name of the menu item. Required.
- /// </summary>
- public string DisplayName { get; set; }
- /// <summary>
- /// Display name of the menu item. Required.
- /// </summary>
- public ILocalizableString LocalizableDisplayName { get; set; }
- /// <summary>
- /// The Display order of the menu. Optional.
- /// </summary>
- public int Order { get; set; }
- /// <summary>
- /// Icon of the menu item if exists. Optional.
- /// </summary>
- public string Icon { get; set; }
- /// <summary>
- /// The URL to navigate when this menu item is selected. Optional.
- /// </summary>
- public string Url { get; set; }
- /// <summary>
- /// A permission name. Only users that has this permission can see this menu item.
- /// Optional.
- /// </summary>
- //[Obsolete("Use PermissionDependency instead.")]
- public string RequiredPermissionName { get; set; }
- /// <summary>
- /// A permission dependency. Only users that can satisfy this permission dependency can see this menu item.
- /// Optional.
- /// </summary>
- public IPermissionDependency PermissionDependency { get; set; }
- ///// <summary>
- ///// A feature dependency.
- ///// Optional.
- ///// </summary>
- //public IFeatureDependency FeatureDependency { get; set; }
- /// <summary>
- /// This can be set to true if only authenticated users should see this menu item.
- /// </summary>
- public bool RequiresAuthentication { get; set; }
- /// <summary>
- /// Returns true if this menu item has no child <see cref="Items"/>.
- /// </summary>
- public bool IsLeaf => Items.IsNullOrEmpty();
- /// <summary>
- /// Target of the menu item. Can be "_blank", "_self", "_parent", "_top" or a frame name.
- /// </summary>
- public string Target { get; set; }
- /// <summary>
- /// Can be used to store a custom object related to this menu item. Optional.
- /// </summary>
- public object CustomData { get; set; }
- /// <summary>
- /// Can be used to enable/disable a menu item.
- /// </summary>
- public bool IsEnabled { get; set; }
- /// <summary>
- /// Can be used to show/hide a menu item.
- /// </summary>
- public bool IsVisible { get; set; }
- /// <summary>
- /// Sub items of this menu item. Optional.
- /// </summary>
- public List<IwbMenuItemDefinition> Items { get; }
- /// <param name="name"></param>
- /// <param name="localizableDisplayName"></param>
- /// <param name="displayName"></param>
- /// <param name="icon"></param>
- /// <param name="url"></param>
- /// <param name="requiresAuthentication"></param>
- /// <param name="requiredPermissionName">This parameter is obsolete. Use <paramref name="permissionDependency"/> instead!</param>
- /// <param name="order"></param>
- /// <param name="customData"></param>
- /// <param name="target"></param>
- /// <param name="isEnabled"></param>
- /// <param name="isVisible"></param>
- /// <param name="permissionDependency"></param>
- public IwbMenuItemDefinition(
- string name,
- string displayName,
- string icon = null,
- string url = null,
- bool requiresAuthentication = false,
- string requiredPermissionName = null,
- int order = 0,
- object customData = null,
- ILocalizableString localizableDisplayName = null,
- //IFeatureDependency featureDependency = null,
- string target = null,
- bool isEnabled = true,
- bool isVisible = true,
- IPermissionDependency permissionDependency = null)
- {
- Check.NotNull(name, nameof(name));
- if (string.IsNullOrEmpty(displayName))
- Check.NotNull(localizableDisplayName, nameof(localizableDisplayName));
- Name = name;
- DisplayName = displayName;
- LocalizableDisplayName = localizableDisplayName;
- Icon = icon;
- Url = url;
- RequiresAuthentication = requiresAuthentication;
- RequiredPermissionName = requiredPermissionName;
- Order = order;
- CustomData = customData;
- //FeatureDependency = featureDependency;
- Target = target;
- IsEnabled = isEnabled;
- IsVisible = isVisible;
- PermissionDependency = permissionDependency;
- Items = new List<IwbMenuItemDefinition>();
- }
- /// <summary>
- /// Adds a <see cref="MenuItemDefinition"/> to <see cref="Items"/>.
- /// </summary>
- /// <param name="menuItem"><see cref="MenuItemDefinition"/> to be added</param>
- /// <returns>This <see cref="MenuItemDefinition"/> object</returns>
- public IwbMenuItemDefinition AddItem(IwbMenuItemDefinition menuItem)
- {
- Items.Add(menuItem);
- return this;
- }
- }
- }
|