| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- using System.Collections.Generic;
- using System.Linq;
- using System.Web.Mvc;
- using Abp.Application.Navigation;
- using Abp.Authorization;
- using Abp.Configuration;
- using Abp.Configuration.Startup;
- using Abp.Domain.Repositories;
- using Abp.Localization;
- using Abp.Runtime.Caching;
- using Abp.Runtime.Session;
- using Abp.Threading;
- using WePlatform.Authorization;
- using WePlatform.BaseInfo;
- using WePlatform.BaseSystem.Configuration.Ui;
- using WePlatform.BaseSystem.Sessions;
- using WePlatform.Configuration;
- using WePlatform.Models;
- using WePlatform.Models.Layout;
- using WePlatform.Views.Shared.SearchForm;
- using IwbZero.Authorization.Base.Users;
- using IwbZero.Runtime.Session;
- namespace WePlatform.Controllers
- {
- public class LayoutController : IwbControllerBase
- {
- private readonly IUserNavigationManager _userNavigationManager;
- private readonly ISessionAppService _sessionAppService;
- private readonly IMultiTenancyConfig _multiTenancyConfig;
- private readonly ILanguageManager _languageManager;
- private IRepository<SysFunction> FunctionRepository { get; }
- public LayoutController(
- IUserNavigationManager userNavigationManager,
- ISessionAppService sessionAppService,
- IMultiTenancyConfig multiTenancyConfig,
- ILanguageManager languageManager, IRepository<SysFunction> functionRepository)
- {
- _userNavigationManager = userNavigationManager;
- _sessionAppService = sessionAppService;
- _multiTenancyConfig = multiTenancyConfig;
- _languageManager = languageManager;
- FunctionRepository = functionRepository;
- }
- #region Old
- [ChildActionOnly]
- public PartialViewResult TopBarUserArea()
- {
- var model = new TopBarUserAreaViewModel(AbpSession);
- return PartialView("_TopBarUserArea", model);
- }
- [ChildActionOnly]
- public PartialViewResult SideBarNav(string activeMenu = "")
- {
- var model = new SideBarNavViewModel
- {
- MainMenu = AsyncHelper.RunSync(() => _userNavigationManager.GetMenuAsync("MainMenu", AbpSession.ToUserIdentifier())),
- ActiveMenuItemName = activeMenu,
- PageTitles = new List<PageTitle>()
- };
- if (!string.IsNullOrEmpty(activeMenu))
- {
- var menu = PermissionManager.GetPermission(activeMenu);
- var names = GetActiveNames(menu);
- model.ActiveNames = names.Item1;
- names.Item2.Reverse();
- model.PageTitles = names.Item2;
- }
- return PartialView("_SideBarNav", model);
- }
- [ChildActionOnly]
- public PartialViewResult SideBarUserArea()
- {
- var model = new SideBarUserAreaViewModel
- {
- LoginInformations = AsyncHelper.RunSync(() => _sessionAppService.GetCurrentLoginInformations()),
- IsMultiTenancyEnabled = _multiTenancyConfig.IsEnabled,
- };
- return PartialView("_SideBarUserArea", model);
- }
- [ChildActionOnly]
- public PartialViewResult LanguageSelection()
- {
- var model = new LanguageSelectionViewModel
- {
- CurrentLanguage = _languageManager.CurrentLanguage,
- Languages = _languageManager.GetLanguages().Where(l => !l.IsDisabled).ToList()
- .Where(l => !l.IsDisabled)
- .ToList(),
- CurrentUrl = Request.Path
- };
- return PartialView("_LanguageSelection", model);
- }
- [ChildActionOnly]
- public PartialViewResult RightSideBar()
- {
- var themeName = SettingManager.GetSettingValue(IwbSettingNames.UiTheme);
- var viewModel = new RightSideBarViewModel
- {
- CurrentTheme = UiThemes.All.FirstOrDefault(t => t.CssClass == themeName)
- };
- return PartialView("_RightSideBar", viewModel);
- }
- #endregion
- [ChildActionOnly]
- public PartialViewResult UserMenu(string id)
- {
- var model = new TopBarUserAreaViewModel(AbpSession);
- if (string.IsNullOrEmpty(id))
- {
- return PartialView("_UserMenuHeader", model);
- }
- return PartialView("_UserMenuSidebar", model);
- }
- [ChildActionOnly]
- public PartialViewResult LanguageChange()
- {
- var model = new LanguageSelectionViewModel
- {
- CurrentLanguage = _languageManager.CurrentLanguage,
- Languages = _languageManager.GetLanguages().Where(l => !l.IsDisabled).ToList()
- .Where(l => !l.IsDisabled)
- .ToList(),
- CurrentUrl = Request.Path
- };
- return PartialView("_LanguageChange", model);
- }
- [ChildActionOnly]
- public PartialViewResult ToolMenu(string activeMenu = "", object searchForm = null)
- {
- var model = new List<ToolMenuViewModel>();
- ViewBag.ActiveMenu = activeMenu;
- try
- {
- ViewBag.SearchFrom = (SearchFormViewModel)searchForm;
- }
- catch
- {
- ViewBag.SearchFrom = null;
- }
- if (string.IsNullOrEmpty(activeMenu))
- {
- return PartialView("_ToolMenu", model);
- }
- var permission = PermissionManager.GetPermissionOrNull(activeMenu);
- if (permission != null)
- {
- var userName = AbpSession.GetUserName();
- foreach (var child in permission.Children)
- {
- if (PermissionChecker.IsGranted(child.Name))
- {
- var fun = AsyncHelper.RunSync(() => FunctionRepository.FirstOrDefaultAsync(a => a.PermissionName == child.Name));
- if (fun.FunctionType != FunctionTypeDefinition.Button|| fun.Script.ToLower()=="none")
- {
- continue;
- }
- if (fun.Script != null && (fun.Script.ToLower().StartsWith("admin") ||
- fun.Script.ToLower().StartsWith("_admin")) &&
- userName != UserBase.HostAdminName && userName != UserBase.HostSystemName &&
- userName != UserBase.AdminUserName && userName != UserBase.SystemUserName)
- {
- continue;
- }
- var menu = new ToolMenuViewModel(fun)
- {
- DisplayName = L(fun.PermissionName?.Replace(".", "") ?? "none")
- };
- model.Add(menu);
- }
- }
- }
- return PartialView("_ToolMenu", model);
- }
- [ChildActionOnly]
- public PartialViewResult NavSideBar(string activeMenu = "")
- {
- var model = new SideBarNavViewModel
- {
- MainMenu = AsyncHelper.RunSync(() => _userNavigationManager.GetMenuAsync("MainMenu", AbpSession.ToUserIdentifier())),
- ActiveMenuItemName = activeMenu,
- PageTitles = new List<PageTitle>()
- };
- if (!string.IsNullOrEmpty(activeMenu))
- {
- var menu = PermissionManager.GetPermission(activeMenu);
- var names = GetActiveNames(menu);
- model.ActiveNames = names.Item1;
- names.Item2.Reverse();
- model.PageTitles = names.Item2;
- }
- return PartialView("_NavSidebar", model);
- }
- [ChildActionOnly]
- public PartialViewResult ControlSideBar()
- {
- var themeName = SettingManager.GetSettingValue(IwbSettingNames.UiTheme);
- var viewModel = new RightSideBarViewModel
- {
- CurrentTheme = UiThemes.All.FirstOrDefault(t => t.CssClass == themeName)
- };
- return PartialView("_ControlSideBar", viewModel);
- }
- private (List<string>, List<PageTitle>) GetActiveNames(Permission permission)
- {
- var nameList = new List<string>() { permission.Name };
- var fun = permission.Properties.ContainsKey(IwbConsts.AuthPropertiesFunName)
- ? (SysFunction)permission.Properties[IwbConsts.AuthPropertiesFunName]
- : CacheManager.GetCache(IwbCacheNames.FunctionCache).Get(permission.Name,
- () => FunctionRepository.FirstOrDefault(a => a.PermissionName == permission.Name));
- var pageTitles = new List<PageTitle>() { new PageTitle(fun?.Icon ?? "", L(fun?.PermissionName)?.Replace(".", "") ?? "") };
- if (permission.Parent != null)
- {
- var parent = GetActiveNames(permission.Parent);
- nameList.AddRange(parent.Item1);
- pageTitles.AddRange(parent.Item2);
- }
- return (nameList, pageTitles);
- }
- }
- }
|