| | |
| | | } |
| | | |
| | | private IPluginContainer pluginContainer; |
| | | |
| | | public void LoadMenuAndPlugin(IPluginContainer container, Dispatcher dispatcher) |
| | | { |
| | | pluginContainer = container; |
| | |
| | | }); |
| | | } |
| | | } |
| | | |
| | | private void LoadChildrenMenu() |
| | | { |
| | | foreach (var menu in Plugins) |
| | |
| | | { |
| | | string dllPath = Path.Combine(PluginFolder, menu.DllPath); |
| | | Assembly ass = Assembly.LoadFrom(dllPath); |
| | | var tss = ass.GetTypes(); |
| | | Type ClassType = ass.GetType(menu.ClassName); |
| | | object Instance = Activator.CreateInstance(ClassType); |
| | | menu.Content = Instance; |
| | | if (Instance is IPlugin plugin) |
| | | { |
| | | plugin.SetLogger(LogManager.GetLogger(menu.Code)); |
| | | string configFolder = Path.Combine(PathHelper.ConfigFolder, menu.Code); |
| | | if (!Directory.Exists(configFolder)) |
| | | } |
| | | else |
| | | { |
| | | plugin = new PluginPackage(Instance); |
| | | } |
| | | plugin.SetLogger(LogManager.GetLogger(menu.Code)); |
| | | string configFolder = Path.Combine(PathHelper.ConfigFolder, menu.Code); |
| | | if (!Directory.Exists(configFolder)) |
| | | { |
| | | Directory.CreateDirectory(configFolder); |
| | | } |
| | | plugin.SetBaseFolder(configFolder); |
| | | plugin.InitFinish(); |
| | | pluginContainer.OnCloseEvent += plugin.OnClose; |
| | | pluginContainer.DoCloseEvent += plugin.DoClose; |
| | | Type SettingType = ass.GetType($"{menu.ClassName}_Setting"); |
| | | if (SettingType != null) |
| | | { |
| | | object SettingInstance = Activator.CreateInstance(SettingType); |
| | | if (SettingInstance is IFolderOwner fo) |
| | | { |
| | | Directory.CreateDirectory(configFolder); |
| | | fo.SetBaseFolder(configFolder); |
| | | } |
| | | plugin.SetBaseFolder(configFolder); |
| | | plugin.InitFinish(); |
| | | pluginContainer.OnCloseEvent += plugin.OnClose; |
| | | pluginContainer.DoCloseEvent += plugin.DoClose; |
| | | Type SettingType = ass.GetType($"{menu.ClassName}_Setting"); |
| | | if (SettingType != null) |
| | | { |
| | | object SettingInstance = Activator.CreateInstance(SettingType); |
| | | if (SettingInstance is IFolderOwner fo) |
| | | { |
| | | fo.SetBaseFolder(configFolder); |
| | | } |
| | | menu.SettingControl = SettingInstance; |
| | | } |
| | | menu.SettingControl = SettingInstance; |
| | | } |
| | | } |
| | | LoadMessageAppend?.Invoke(this, |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | log.Error("Load Plugin Failed.", ex); |
| | | log.Error($"Load Plugin [{menu.Name}] Failed.", ex); |
| | | LoadMessageAppend?.Invoke(this, new LoadMsg |
| | | { |
| | | Type = LoadMsgType.LOADING, |
| | |
| | | string sql = $@"SELECT m.* FROM menu AS m INNER JOIN role_menu_rel AS rrel ON m.code = rrel.menuCode |
| | | INNER JOIN role AS r ON rrel.roleCode = r.code |
| | | INNER JOIN user_role_rel AS urel ON r.code = urel.roleCode |
| | | AND urel.username = '{user.Username}' ORDER BY m.level, m.id;"; |
| | | AND urel.username = '{user.Username}' ORDER BY m.level,m.sort, m.id;"; |
| | | |
| | | DataTable dt = sqliteHelper.GetDataTable(sql); |
| | | if (dt != null) |
| | |
| | | { |
| | | Code = dr["code"].ToString(), |
| | | Name = dr["name"].ToString(), |
| | | Type = dr["type"].ToString(), |
| | | ParentCode = dr["parentCode"].ToString(), |
| | | DllPath = dr["dllPath"].ToString(), |
| | | ClassName = dr["className"].ToString(), |
| | |
| | | } |
| | | return data; |
| | | } |
| | | |
| | | } |
| | | } |