MenuManager.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using MECF.Framework.Common.Account.Extends;
  7. namespace MECF.Framework.UI.Client.ClientBase
  8. {
  9. public class MenuManager
  10. {
  11. public List<AppMenu> MenuItems { get; private set; }
  12. #region Operation
  13. public void LoadMenu(List<AppMenu> menuitems)
  14. {
  15. List < AppMenu > removeList = new List<AppMenu>();
  16. foreach (AppMenu menuitem in menuitems)
  17. {
  18. if (!string.IsNullOrEmpty(menuitem.System) && menuitem.System != "System")
  19. {
  20. if (ModuleManager.ModuleInfos.ContainsKey(menuitem.System) &&
  21. !ModuleManager.ModuleInfos[menuitem.System].IsInstalled)
  22. {
  23. removeList.Add(menuitem);
  24. }
  25. }
  26. if (menuitem.MenuItems != null)
  27. {
  28. for (int i = menuitem.MenuItems.Count - 1; i >= 0; i--)
  29. {
  30. var submenuitem = menuitem.MenuItems[i];
  31. submenuitem.Parent = menuitem;
  32. if (submenuitem.Permission == 1) //remove menu if permission is "None"
  33. menuitem.MenuItems.Remove(submenuitem);
  34. if (!string.IsNullOrEmpty(submenuitem.System) && submenuitem.System != "System")
  35. {
  36. if (ModuleManager.ModuleInfos.ContainsKey(submenuitem.System) &&
  37. !ModuleManager.ModuleInfos[submenuitem.System].IsInstalled)
  38. {
  39. menuitem.MenuItems.Remove(submenuitem);
  40. }
  41. }
  42. }
  43. }
  44. }
  45. foreach (var appMenu in removeList)
  46. {
  47. menuitems.Remove(appMenu);
  48. }
  49. this.MenuItems = menuitems;
  50. }
  51. public void FilterMenus(List<string> pSystems)
  52. {
  53. if (pSystems == null || this.MenuItems == null)
  54. return;
  55. foreach (AppMenu menuitem in this.MenuItems)
  56. {
  57. if (menuitem.MenuItems != null)
  58. {
  59. for (int i = menuitem.MenuItems.Count - 1; i >= 0; i--)
  60. {
  61. var submenuitem = menuitem.MenuItems[i];
  62. //filter
  63. }
  64. }
  65. }
  66. }
  67. private bool IsExist(List<string> pSource, string pMatch)
  68. {
  69. foreach (var item in pSource)
  70. {
  71. if (pMatch.IndexOf(item) >= 0)
  72. return true;
  73. }
  74. return false;
  75. }
  76. public List<AppMenu> GetAllClone()
  77. {
  78. if (this.MenuItems == null)
  79. return null;
  80. List<AppMenu> cloneList = new List<AppMenu>();
  81. foreach (var item in this.MenuItems)
  82. {
  83. cloneList.Add((AppMenu)item.Clone(item.Parent));
  84. }
  85. return cloneList;
  86. }
  87. #endregion
  88. }
  89. }