Sic.Framework-Nanjing-Baishi/MECF.Framework.Common/MECF/Framework/Common/Account/Extends/MenuLoader.cs

85 lines
2.0 KiB
C#
Raw Normal View History

2023-04-13 11:51:03 +08:00
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
namespace MECF.Framework.Common.Account.Extends
{
public class MenuLoader : XmlLoader
{
2023-09-05 10:20:23 +08:00
#region Variables
2023-04-13 11:51:03 +08:00
2023-09-05 10:20:23 +08:00
private List<AppMenu> _menuList = new();
#endregion
#region Constructors
public MenuLoader(string fileName)
: base(fileName)
2023-04-13 11:51:03 +08:00
{
}
2023-09-05 10:20:23 +08:00
#endregion
#region Methods
2023-04-13 11:51:03 +08:00
2023-09-05 10:20:23 +08:00
/// <summary>
/// 系统中配置的菜单项目。
/// </summary>
public List<AppMenu> MenuList => _menuList;
/// <inheritdoc />
2023-04-13 11:51:03 +08:00
protected override void AnalyzeXml()
{
if (XmlDoc != null)
2023-04-13 11:51:03 +08:00
{
2023-09-05 10:20:23 +08:00
_menuList = TranslateMenus(XmlDoc.Root);
2023-04-13 11:51:03 +08:00
}
}
2023-09-05 10:20:23 +08:00
private static List<AppMenu> TranslateMenus(XContainer pElement)
2023-04-13 11:51:03 +08:00
{
var list = new List<AppMenu>();
var enumerable = from r in pElement.Elements("menuItem")
2023-04-13 11:51:03 +08:00
select (r);
foreach (var item in enumerable)
2023-04-13 11:51:03 +08:00
{
var menuId = "";
var menuViewModel = "";
var resKey = "";
var desc = "";
2023-04-13 11:51:03 +08:00
if (!item.HasElements)
{
menuId = item.Attribute("id").Value;
menuViewModel = item.Attribute("viewmodel").Value;
resKey = item.Attribute("resKey").Value;
if (item.Attribute("Description") != null)
desc = item.Attribute("Description").Value;
var appMenu = new AppMenu(menuId, menuViewModel, resKey, null, desc);
2023-04-13 11:51:03 +08:00
if (item.Attribute("System") != null)
appMenu.System = item.Attribute("System").Value;
if (item.Attribute("AlarmModule") != null)
appMenu.AlarmModule = item.Attribute("AlarmModule").Value;
list.Add(appMenu);
continue;
}
menuId = item.Attribute("id").Value;
resKey = item.Attribute("resKey").Value;
var subMenus = new List<AppMenu>();
subMenus = TranslateMenus(item);
var appMenu2 = new AppMenu(menuId, menuViewModel, resKey, subMenus, desc);
2023-04-13 11:51:03 +08:00
if (item.Attribute("System") != null)
appMenu2.System = item.Attribute("System").Value;
if (item.Attribute("AlarmModule") != null)
appMenu2.AlarmModule = item.Attribute("AlarmModule").Value;
list.Add(appMenu2);
}
return list;
}
2023-09-05 10:20:23 +08:00
#endregion
2023-04-13 11:51:03 +08:00
}
}