MenuItemDefinition.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. using System;
  2. using System.Collections.Generic;
  3. using Abp;
  4. using Abp.Application.Navigation;
  5. using Abp.Authorization;
  6. using Abp.Collections.Extensions;
  7. using Abp.Localization;
  8. namespace IwbZero.Navigation
  9. {
  10. /// <summary>
  11. /// Represents an item in a <see cref="MenuDefinition"/>.
  12. /// </summary>
  13. public class IwbMenuItemDefinition : IIwbHasMenuItemDefinitions
  14. //: IHasMenuItemDefinitions
  15. {
  16. /// <summary>
  17. /// Unique name of the menu item in the application.
  18. /// Can be used to find this menu item later.
  19. /// </summary>
  20. public string Name { get; }
  21. /// <summary>
  22. /// Display name of the menu item. Required.
  23. /// </summary>
  24. public string DisplayName { get; set; }
  25. /// <summary>
  26. /// Display name of the menu item. Required.
  27. /// </summary>
  28. public ILocalizableString LocalizableDisplayName { get; set; }
  29. /// <summary>
  30. /// The Display order of the menu. Optional.
  31. /// </summary>
  32. public int Order { get; set; }
  33. /// <summary>
  34. /// Icon of the menu item if exists. Optional.
  35. /// </summary>
  36. public string Icon { get; set; }
  37. /// <summary>
  38. /// The URL to navigate when this menu item is selected. Optional.
  39. /// </summary>
  40. public string Url { get; set; }
  41. /// <summary>
  42. /// A permission name. Only users that has this permission can see this menu item.
  43. /// Optional.
  44. /// </summary>
  45. //[Obsolete("Use PermissionDependency instead.")]
  46. public string RequiredPermissionName { get; set; }
  47. /// <summary>
  48. /// A permission dependency. Only users that can satisfy this permission dependency can see this menu item.
  49. /// Optional.
  50. /// </summary>
  51. public IPermissionDependency PermissionDependency { get; set; }
  52. ///// <summary>
  53. ///// A feature dependency.
  54. ///// Optional.
  55. ///// </summary>
  56. //public IFeatureDependency FeatureDependency { get; set; }
  57. /// <summary>
  58. /// This can be set to true if only authenticated users should see this menu item.
  59. /// </summary>
  60. public bool RequiresAuthentication { get; set; }
  61. /// <summary>
  62. /// Returns true if this menu item has no child <see cref="Items"/>.
  63. /// </summary>
  64. public bool IsLeaf => Items.IsNullOrEmpty();
  65. /// <summary>
  66. /// Target of the menu item. Can be "_blank", "_self", "_parent", "_top" or a frame name.
  67. /// </summary>
  68. public string Target { get; set; }
  69. /// <summary>
  70. /// Can be used to store a custom object related to this menu item. Optional.
  71. /// </summary>
  72. public object CustomData { get; set; }
  73. /// <summary>
  74. /// Can be used to enable/disable a menu item.
  75. /// </summary>
  76. public bool IsEnabled { get; set; }
  77. /// <summary>
  78. /// Can be used to show/hide a menu item.
  79. /// </summary>
  80. public bool IsVisible { get; set; }
  81. /// <summary>
  82. /// Sub items of this menu item. Optional.
  83. /// </summary>
  84. public List<IwbMenuItemDefinition> Items { get; }
  85. /// <param name="name"></param>
  86. /// <param name="localizableDisplayName"></param>
  87. /// <param name="displayName"></param>
  88. /// <param name="icon"></param>
  89. /// <param name="url"></param>
  90. /// <param name="requiresAuthentication"></param>
  91. /// <param name="requiredPermissionName">This parameter is obsolete. Use <paramref name="permissionDependency"/> instead!</param>
  92. /// <param name="order"></param>
  93. /// <param name="customData"></param>
  94. /// <param name="target"></param>
  95. /// <param name="isEnabled"></param>
  96. /// <param name="isVisible"></param>
  97. /// <param name="permissionDependency"></param>
  98. public IwbMenuItemDefinition(
  99. string name,
  100. string displayName,
  101. string icon = null,
  102. string url = null,
  103. bool requiresAuthentication = false,
  104. string requiredPermissionName = null,
  105. int order = 0,
  106. object customData = null,
  107. ILocalizableString localizableDisplayName = null,
  108. //IFeatureDependency featureDependency = null,
  109. string target = null,
  110. bool isEnabled = true,
  111. bool isVisible = true,
  112. IPermissionDependency permissionDependency = null)
  113. {
  114. Check.NotNull(name, nameof(name));
  115. if (string.IsNullOrEmpty(displayName))
  116. Check.NotNull(localizableDisplayName, nameof(localizableDisplayName));
  117. Name = name;
  118. DisplayName = displayName;
  119. LocalizableDisplayName = localizableDisplayName;
  120. Icon = icon;
  121. Url = url;
  122. RequiresAuthentication = requiresAuthentication;
  123. RequiredPermissionName = requiredPermissionName;
  124. Order = order;
  125. CustomData = customData;
  126. //FeatureDependency = featureDependency;
  127. Target = target;
  128. IsEnabled = isEnabled;
  129. IsVisible = isVisible;
  130. PermissionDependency = permissionDependency;
  131. Items = new List<IwbMenuItemDefinition>();
  132. }
  133. /// <summary>
  134. /// Adds a <see cref="MenuItemDefinition"/> to <see cref="Items"/>.
  135. /// </summary>
  136. /// <param name="menuItem"><see cref="MenuItemDefinition"/> to be added</param>
  137. /// <returns>This <see cref="MenuItemDefinition"/> object</returns>
  138. public IwbMenuItemDefinition AddItem(IwbMenuItemDefinition menuItem)
  139. {
  140. Items.Add(menuItem);
  141. return this;
  142. }
  143. }
  144. }