From 1aded9c01fa5e107b5f211f0160523d2c62cadae Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Mon, 30 May 2022 18:52:20 +0800 Subject: [PATCH] add theme settings interface. --- aspnet-core/LINGYUN.MicroService.All.sln | 16 +- ...GYUN.Abp.UI.Navigation.VueVbenAdmin.csproj | 1 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 ++ ...GYUN.Platform.Settings.VueVbenAdmin.csproj | 27 ++ .../Localization/Resources/en.json | 135 ++++++ .../Localization/Resources/zh-Hans.json | 135 ++++++ .../PlatformSettingsVueVbenAdminModule.cs | 26 ++ .../VueVbenAdminSettingDefinitionProvider.cs | 410 ++++++++++++++++++ .../VueVbenAdmin/VueVbenAdminSettingNames.cs | 101 +++++ .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 ++ ...LINGYUN.Platform.Theme.VueVbenAdmin.csproj | 23 + .../Theme/VueVbenAdmin/BeforeMiniStateDto.cs | 9 + .../Theme/VueVbenAdmin/HeaderSettingDto.cs | 14 + .../VueVbenAdmin/IThemeSettingAppService.cs | 11 + .../Theme/VueVbenAdmin/MenuSettingDto.cs | 23 + .../Theme/VueVbenAdmin/MultiTabsSettingDto.cs | 11 + .../PlatformThemeVueVbenAdminModule.cs | 22 + .../Theme/VueVbenAdmin/ProjectConfigDto.cs | 31 ++ .../VueVbenAdmin/ThemeSettingAppService.cs | 265 +++++++++++ .../VueVbenAdmin/ThemeSettingController.cs | 34 ++ .../Theme/VueVbenAdmin/ThemeSettingDto.cs | 9 + .../VueVbenAdmin/TransitionSettingDto.cs | 9 + ...ice.PlatformManagement.HttpApi.Host.csproj | 1 + .../PlatformManagementHttpApiHostModule.cs | 2 + 26 files changed, 1380 insertions(+), 1 deletion(-) create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/FodyWeavers.xml create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/FodyWeavers.xsd create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN.Platform.Settings.VueVbenAdmin.csproj create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/Localization/Resources/en.json create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/Localization/Resources/zh-Hans.json create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/PlatformSettingsVueVbenAdminModule.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/VueVbenAdminSettingDefinitionProvider.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/VueVbenAdminSettingNames.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/FodyWeavers.xml create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/FodyWeavers.xsd create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN.Platform.Theme.VueVbenAdmin.csproj create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/BeforeMiniStateDto.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/HeaderSettingDto.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/IThemeSettingAppService.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/MenuSettingDto.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/MultiTabsSettingDto.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/PlatformThemeVueVbenAdminModule.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ProjectConfigDto.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingAppService.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingController.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingDto.cs create mode 100644 aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/TransitionSettingDto.cs diff --git a/aspnet-core/LINGYUN.MicroService.All.sln b/aspnet-core/LINGYUN.MicroService.All.sln index 8082d69c3..d17f70703 100644 --- a/aspnet-core/LINGYUN.MicroService.All.sln +++ b/aspnet-core/LINGYUN.MicroService.All.sln @@ -402,7 +402,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.PermissionManag EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.OrganizaztionUnits", "modules\authorization\LINGYUN.Abp.Identity.OrganizaztionUnits\LINGYUN.Abp.Identity.OrganizaztionUnits.csproj", "{76A5564E-033B-4AA6-A22B-78B6EB134CC6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Notifications.Emailing", "modules\common\LINGYUN.Abp.Notifications.Emailing\LINGYUN.Abp.Notifications.Emailing.csproj", "{88502844-D83C-4541-96AC-A8291E261F63}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.Emailing", "modules\common\LINGYUN.Abp.Notifications.Emailing\LINGYUN.Abp.Notifications.Emailing.csproj", "{88502844-D83C-4541-96AC-A8291E261F63}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.Theme.VueVbenAdmin", "modules\platform\LINGYUN.Platform.Theme.VueVbenAdmin\LINGYUN.Platform.Theme.VueVbenAdmin.csproj", "{67DC7FA0-506A-4977-95F6-BC739B2BC4BA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.Settings.VueVbenAdmin", "modules\platform\LINGYUN.Platform.Settings.VueVbenAdmin\LINGYUN.Platform.Settings.VueVbenAdmin.csproj", "{8DF55DAB-4C1D-46F7-9324-0050F47B3BED}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -1042,6 +1046,14 @@ Global {88502844-D83C-4541-96AC-A8291E261F63}.Debug|Any CPU.Build.0 = Debug|Any CPU {88502844-D83C-4541-96AC-A8291E261F63}.Release|Any CPU.ActiveCfg = Release|Any CPU {88502844-D83C-4541-96AC-A8291E261F63}.Release|Any CPU.Build.0 = Release|Any CPU + {67DC7FA0-506A-4977-95F6-BC739B2BC4BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {67DC7FA0-506A-4977-95F6-BC739B2BC4BA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {67DC7FA0-506A-4977-95F6-BC739B2BC4BA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {67DC7FA0-506A-4977-95F6-BC739B2BC4BA}.Release|Any CPU.Build.0 = Release|Any CPU + {8DF55DAB-4C1D-46F7-9324-0050F47B3BED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8DF55DAB-4C1D-46F7-9324-0050F47B3BED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8DF55DAB-4C1D-46F7-9324-0050F47B3BED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8DF55DAB-4C1D-46F7-9324-0050F47B3BED}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1239,6 +1251,8 @@ Global {46244C99-3A0D-4D88-9F24-2B7B586ADBA4} = {CC362C67-6FC1-42B3-A130-8120AA8D790C} {76A5564E-033B-4AA6-A22B-78B6EB134CC6} = {9EC33D45-CCC7-41DF-829E-6B89A640FE35} {88502844-D83C-4541-96AC-A8291E261F63} = {8AC72641-30D3-4ACF-89FA-808FADC55C2E} + {67DC7FA0-506A-4977-95F6-BC739B2BC4BA} = {F4923692-D343-4318-AECA-96F580B1A563} + {8DF55DAB-4C1D-46F7-9324-0050F47B3BED} = {F4923692-D343-4318-AECA-96F580B1A563} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718} diff --git a/aspnet-core/modules/platform/LINGYUN.Abp.UI.Navigation.VueVbenAdmin/LINGYUN.Abp.UI.Navigation.VueVbenAdmin.csproj b/aspnet-core/modules/platform/LINGYUN.Abp.UI.Navigation.VueVbenAdmin/LINGYUN.Abp.UI.Navigation.VueVbenAdmin.csproj index d73dfa618..5806d2a3a 100644 --- a/aspnet-core/modules/platform/LINGYUN.Abp.UI.Navigation.VueVbenAdmin/LINGYUN.Abp.UI.Navigation.VueVbenAdmin.csproj +++ b/aspnet-core/modules/platform/LINGYUN.Abp.UI.Navigation.VueVbenAdmin/LINGYUN.Abp.UI.Navigation.VueVbenAdmin.csproj @@ -1,6 +1,7 @@  + netstandard2.0 diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/FodyWeavers.xml b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/FodyWeavers.xsd b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/FodyWeavers.xsd new file mode 100644 index 000000000..11da52550 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN.Platform.Settings.VueVbenAdmin.csproj b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN.Platform.Settings.VueVbenAdmin.csproj new file mode 100644 index 000000000..847e645b5 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN.Platform.Settings.VueVbenAdmin.csproj @@ -0,0 +1,27 @@ + + + + + + + netstandard2.0 + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/Localization/Resources/en.json b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/Localization/Resources/en.json new file mode 100644 index 000000000..1118f239b --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/Localization/Resources/en.json @@ -0,0 +1,135 @@ +{ + "culture": "en", + "texts": { + "DisplayName:DarkMode": "Dark Mode", + "Description:DarkMode": "Dark Mode", + "DisplayName:PageLoading": "Page Loading", + "Description:PageLoading": "Page Loading", + "DisplayName:PermissionCacheType": "Permission cache type", + "Description:PermissionCacheType": "Permission-related cache is stored in sessionStorage or localStorage", + "DisplayName:ShowSettingButton": "Show Setting Button", + "Description:ShowSettingButton": "Whether to show the configuration button", + "DisplayName:ShowDarkModeToggle": "Show Dark Mode Toggle", + "Description:ShowDarkModeToggle": "Whether to show the theme switch button", + "DisplayName:SettingButtonPosition": "Setting Button Position", + "Description:SettingButtonPosition": "`Settings` button position", + "DisplayName:PermissionMode": "Permission Mode", + "Description:PermissionMode": "Permission Mode, Options: ROLE、BACK、ROUTE_MAPPING", + "DisplayName:SessionTimeoutProcessing": "Session Timeout Processing", + "Description:SessionTimeoutProcessing": "Session timeout processing", + "DisplayName:GrayMode": "Gray Mode", + "Description:GrayMode": "Website gray mode, open for possible mourning dates", + "DisplayName:ColorWeak": "Color Weak", + "Description:ColorWeak": "Color Weakness Mode", + "DisplayName:ThemeColor": "Theme Color", + "Description:ThemeColor": "Theme Color", + "DisplayName:FullContent": "Full Content", + "Description:FullContent": "Whether to cancel the menu, the top, the multi-tab page display, for possible embedded in other systems", + "DisplayName:ContentMode": "Content Mode", + "Description:ContentMode": "Content Mode", + "DisplayName:ShowLogo": "Show Logo", + "Description:ShowLogo": "Whether to display the logo", + "DisplayName:ShowFooter": "Show Footer", + "Description:ShowFooter": "Whether to show footer", + "DisplayName:OpenKeepAlive": "Open Keep Alive", + "Description:OpenKeepAlive": "Whether to enable KeepAlive cache is best to close during development, otherwise the cache needs to be cleared every time", + "DisplayName:LockTime": "Lock Time", + "Description:LockTime": "Automatic screen lock time, 0 does not lock the screen. Unit minute default 0", + "DisplayName:ShowBreadCrumb": "Show Bread Crumb", + "Description:ShowBreadCrumb": "Whether to show breadcrumbs", + "DisplayName:ShowBreadCrumbIcon": "Show Bread Crumb Icon", + "Description:ShowBreadCrumbIcon": "Whether to show the breadcrumb icon", + "DisplayName:UseErrorHandle": "Use Error Handle", + "Description:UseErrorHandle": "Use error-handler-plugin", + "DisplayName:UseOpenBackTop": "Use Open Back Top", + "Description:UseOpenBackTop": "Whether to open back to top", + "DisplayName:CanEmbedIFramePage": "Can Embed IFrame Page", + "Description:CanEmbedIFramePage": "Is it possible to embed iframe pages", + "DisplayName:CloseMessageOnSwitch": "Close Message On Switch", + "Description:CloseMessageOnSwitch": "Whether to delete unclosed messages and notify when switching the interface", + "DisplayName:RemoveAllHttpPending": "Remove All Http Pending", + "Description:RemoveAllHttpPending": "Whether to cancel the http request that has been sent but not responded when switching the interface.", + "DisplayName:Header_BgColor": "Header Background Color", + "Description:Header_BgColor": "Header Background Color", + "DisplayName:Header_Fixed": "Fixed Header", + "Description:Header_Fixed": "Fixed at the top", + "DisplayName:Header_Show": "Show Header", + "Description:Header_Show": "Whether to show top", + "DisplayName:Header_Theme": "Header Theme", + "Description:Header_Theme": "Header Theme", + "DisplayName:Header_ShowFullScreen": "Show Full Screen", + "Description:Header_ShowFullScreen": "Whether to show the full screen button", + "DisplayName:Header_UseLockPage": "Use Lock Page", + "Description:Header_UseLockPage": "Whether to enable the lock screen function", + "DisplayName:Header_ShowDoc": "Show Document", + "Description:Header_ShowDoc": "Whether to show the document button", + "DisplayName:Header_ShowNotice": "Show Notice", + "Description:Header_ShowNotice": "Whether to show the notification button", + "DisplayName:Header_ShowSearch": "Show Search", + "Description:Header_ShowSearch": "Whether to display the menu search", + "DisplayName:Menu_BgColor": "Sidebar Background Color", + "Description:Menu_BgColor": "Sidebar menu bg color", + "DisplayName:Menu_Fixed": "Fixed Sidebar", + "Description:Menu_Fixed": "Whether to fix the left menu", + "DisplayName:Menu_Collapsed": "Collapsed Menu", + "Description:Menu_Collapsed": "Menu collapse", + "DisplayName:Menu_CanDrag": "Can Dragged", + "Description:Menu_CanDrag": "Whether it can be dragged", + "DisplayName:Menu_Show": "Show Menu", + "Description:Menu_Show": "Whether to show no dom", + "DisplayName:Menu_Hidden": "Hidden Menu", + "Description:Menu_Hidden": "Whether to show dom", + "DisplayName:Menu_Split": "Split Menu", + "Description:Menu_Split": "Split menu", + "DisplayName:Menu_MenuWidth": "Menu Width", + "Description:Menu_MenuWidth": "Menu width", + "DisplayName:Menu_Mode": "Menu Mode", + "Description:Menu_Mode": "Menu mode", + "DisplayName:Menu_Type": "Menu Type", + "Description:Menu_Type": "Menu type", + "DisplayName:Menu_Theme": "Menu Theme", + "Description:Menu_Theme": "Menu theme", + "DisplayName:Menu_TopMenuAlign": "Top Menu Align", + "Description:Menu_TopMenuAlign": "Top menu layout", + "DisplayName:Menu_Trigger": "Fold Trigger Position", + "Description:Menu_Trigger": "Fold Trigger Position", + "DisplayName:Menu_Accordion": "Accordion", + "Description:Menu_Accordion": "Turn on accordion mode, only show a menu", + "DisplayName:Menu_CloseMixSidebarOnChange": "Close Mix Sidebar On Change", + "Description:Menu_CloseMixSidebarOnChange": "Switch page to close menu", + "DisplayName:Menu_CollapsedShowTitle": "Collapsed Show Title", + "Description:Menu_CollapsedShowTitle": "Whether to display the menu name when folding the menu", + "DisplayName:Menu_MixSideTrigger": "Mix Side Trigger", + "Description:Menu_MixSideTrigger": "Module opening method ‘click’ |'hover'", + "DisplayName:Menu_MixSideFixed": "Fixed Expanded Menu", + "Description:Menu_MixSideFixed": "Fixed expanded menu", + "DisplayName:MultiTabs_Cache": "Multi Tabs Cache", + "Description:MultiTabs_Cache": "Multi Tabs Cache", + "DisplayName:MultiTabs_Show": "Show Tabs", + "Description:MultiTabs_Show": "Turn on", + "DisplayName:MultiTabs_ShowQuick": "Show Quick", + "Description:MultiTabs_ShowQuick": "Turn on quick actions", + "DisplayName:MultiTabs_CanDrag": "Can Dragged", + "Description:MultiTabs_CanDrag": "Is it possible to drag and drop sorting tabs", + "DisplayName:MultiTabs_ShowRedo": "Show Redo", + "Description:MultiTabs_ShowRedo": "Whether to show the refresh button", + "DisplayName:MultiTabs_ShowFold": "Show Fold", + "Description:MultiTabs_ShowFold": "Whether to show the collapse button", + "DisplayName:Transition_Enable": "Enable Transition", + "Description:Transition_Enable": "Enable Transition", + "DisplayName:Transition_BasicTransition": "Basic Transition", + "Description:Transition_BasicTransition": "Route basic switching animation", + "DisplayName:Transition_OpenPageLoading": "Open Page Loading", + "Description:Transition_OpenPageLoading": "Whether to open page switching loading", + "DisplayName:Transition_OpenNProgress": "Open Progress", + "Description:Transition_OpenNProgress": "Whether to open the top progress bar", + "DisplayName:BeforeMini_MenuCollapsed": "Menu Collapsed", + "Description:BeforeMini_MenuCollapsed": "Restores the shrunken menu when restoring the window", + "DisplayName:BeforeMini_MenuSplit": "Menu Split", + "Description:BeforeMini_MenuSplit": "Restore separated menus when restoring Windows", + "DisplayName:BeforeMini_MenuMode": "Menu Mode", + "Description:BeforeMini_MenuMode": "Restore menu mode when restore window", + "DisplayName:BeforeMini_MenuType": "Menu Type", + "Description:BeforeMini_MenuType": "Restore menu type when restore window" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/Localization/Resources/zh-Hans.json b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/Localization/Resources/zh-Hans.json new file mode 100644 index 000000000..3f2d58db4 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/Localization/Resources/zh-Hans.json @@ -0,0 +1,135 @@ +{ + "culture": "zh-Hans", + "texts": { + "DisplayName:DarkMode": "主题", + "Description:DarkMode": "应用程序主题", + "DisplayName:PageLoading": "页面加载状态", + "Description:PageLoading": "页面加载状态", + "DisplayName:PermissionCacheType": "权限缓存位置", + "Description:PermissionCacheType": "指定权限缓存存储在sessionStorage或localStorage中", + "DisplayName:ShowSettingButton": "显示配置按钮", + "Description:ShowSettingButton": "是否显示配置按钮", + "DisplayName:ShowDarkModeToggle": "显示主题切换按钮", + "Description:ShowDarkModeToggle": "是否显示主题切换按钮", + "DisplayName:SettingButtonPosition": "设置按钮位置", + "Description:SettingButtonPosition": "设置按钮展示位置", + "DisplayName:PermissionMode": "权限模式", + "Description:PermissionMode": "权限模式, 可选ROLE、BACK、ROUTE_MAPPING", + "DisplayName:SessionTimeoutProcessing": "会话超时处理", + "Description:SessionTimeoutProcessing": "会话超时处理", + "DisplayName:GrayMode": "灰色模式", + "Description:GrayMode": "网站灰色模式,开放可能的哀悼日期", + "DisplayName:ColorWeak": "色弱模式", + "Description:ColorWeak": "色弱模式", + "DisplayName:ThemeColor": "主题颜色", + "Description:ThemeColor": "主题颜色", + "DisplayName:FullContent": "仅显示内容", + "Description:FullContent": "是否取消菜单、上顶、多选项卡页面显示,以备可能嵌入其他系统", + "DisplayName:ContentMode": "内容模式", + "Description:ContentMode": "内容模式", + "DisplayName:ShowLogo": "显示Logo", + "Description:ShowLogo": "是否显示logo", + "DisplayName:ShowFooter": "显示页脚", + "Description:ShowFooter": "是否显示页脚", + "DisplayName:OpenKeepAlive": "是否启用KeepAlive缓存", + "Description:OpenKeepAlive": "是否启用KeepAlive缓存最好在开发过程中关闭,否则每次都需要清空缓存", + "DisplayName:LockTime": "自动锁屏时间", + "Description:LockTime": "自动锁屏时间,0不锁屏,单位分钟。默认0", + "DisplayName:ShowBreadCrumb": "显示面包屑", + "Description:ShowBreadCrumb": "是否显示面包屑", + "DisplayName:ShowBreadCrumbIcon": "显示面包屑图标", + "Description:ShowBreadCrumbIcon": "是否显示面包屑图标", + "DisplayName:UseErrorHandle": "启用错误处理插件", + "Description:UseErrorHandle": "是否使用错误处理插件", + "DisplayName:UseOpenBackTop": "启用返回顶部", + "Description:UseOpenBackTop": "是否启用返回顶部", + "DisplayName:CanEmbedIFramePage": "是否有可能嵌入iframe页面", + "Description:CanEmbedIFramePage": "是否有可能嵌入iframe页面", + "DisplayName:CloseMessageOnSwitch": "切换页面时关闭消息通知", + "Description:CloseMessageOnSwitch": "切换接口时是否删除未关闭消息和通知", + "DisplayName:RemoveAllHttpPending": "切换页面时取消网络请求", + "Description:RemoveAllHttpPending": "切换接口时,是否取消已经发送但没有响应的http请求。", + "DisplayName:Header_BgColor": "标题栏背景色", + "Description:Header_BgColor": "标题栏背景色", + "DisplayName:Header_Fixed": "固定标题栏", + "Description:Header_Fixed": "固定标题栏", + "DisplayName:Header_Show": "显示标题栏", + "Description:Header_Show": "显示标题栏", + "DisplayName:Header_Theme": "标题栏主题", + "Description:Header_Theme": "标题栏主题", + "DisplayName:Header_ShowFullScreen": "显示全屏按钮", + "Description:Header_ShowFullScreen": "显示全屏按钮", + "DisplayName:Header_UseLockPage": "是否开启锁屏功能", + "Description:Header_UseLockPage": "是否开启锁屏功能", + "DisplayName:Header_ShowDoc": "是否显示文档按钮", + "Description:Header_ShowDoc": "是否显示文档按钮", + "DisplayName:Header_ShowNotice": "是否显示通知按钮", + "Description:Header_ShowNotice": "是否显示通知按钮", + "DisplayName:Header_ShowSearch": "是否显示搜索按钮", + "Description:Header_ShowSearch": "是否显示搜索按钮", + "DisplayName:Menu_BgColor": "菜单栏背景色", + "Description:Menu_BgColor": "菜单栏背景色", + "DisplayName:Menu_Fixed": "固定菜单栏", + "Description:Menu_Fixed": "固定菜单栏", + "DisplayName:Menu_Collapsed": "收缩菜单栏", + "Description:Menu_Collapsed": "收缩菜单栏", + "DisplayName:Menu_CanDrag": "是否可以拖动", + "Description:Menu_CanDrag": "鼠标在菜单的右侧有一个拖拽条,仅局限于打开左侧菜单", + "DisplayName:Menu_Show": "显示菜单栏", + "Description:Menu_Show": "显示菜单栏", + "DisplayName:Menu_Hidden": "隐藏菜单栏", + "Description:Menu_Hidden": "隐藏菜单栏", + "DisplayName:Menu_Split": "分隔菜单", + "Description:Menu_Split": "分隔菜单", + "DisplayName:Menu_MenuWidth": "菜单展开宽度", + "Description:Menu_MenuWidth": "菜单展开宽度", + "DisplayName:Menu_Mode": "菜单模式", + "Description:Menu_Mode": "菜单模式", + "DisplayName:Menu_Type": "菜单类型", + "Description:Menu_Type": "菜单类型", + "DisplayName:Menu_Theme": "菜单主题", + "Description:Menu_Theme": "菜单主题", + "DisplayName:Menu_TopMenuAlign": "顶部菜单布局", + "Description:Menu_TopMenuAlign": "顶部菜单布局", + "DisplayName:Menu_Trigger": "混合菜单触发方式", + "Description:Menu_Trigger": "混合菜单触发方式", + "DisplayName:Menu_Accordion": "侧边菜单手风琴模式", + "Description:Menu_Accordion": "侧边菜单手风琴模式", + "DisplayName:Menu_CloseMixSidebarOnChange": "切换页面关闭菜单", + "Description:Menu_CloseMixSidebarOnChange": "切换页面关闭菜单", + "DisplayName:Menu_CollapsedShowTitle": "折叠菜单显示名称", + "Description:Menu_CollapsedShowTitle": "折叠菜单显示名称", + "DisplayName:Menu_MixSideTrigger": "模块打开方法", + "Description:Menu_MixSideTrigger": "模块打开方法", + "DisplayName:Menu_MixSideFixed": "固定侧边菜单", + "Description:Menu_MixSideFixed": "固定侧边菜单", + "DisplayName:MultiTabs_Cache": "缓存标签页", + "Description:MultiTabs_Cache": "缓存标签页", + "DisplayName:MultiTabs_Show": "显示标签页", + "Description:MultiTabs_Show": "显示标签页", + "DisplayName:MultiTabs_ShowQuick": "标签页快捷按钮", + "Description:MultiTabs_ShowQuick": "标签页快捷按钮", + "DisplayName:MultiTabs_CanDrag": "是否可以拖放排序", + "Description:MultiTabs_CanDrag": "是否可以拖放排序", + "DisplayName:MultiTabs_ShowRedo": "标签页刷新按钮", + "Description:MultiTabs_ShowRedo": "标签页刷新按钮", + "DisplayName:MultiTabs_ShowFold": "标签页折叠按钮", + "Description:MultiTabs_ShowFold": "标签页折叠按钮", + "DisplayName:Transition_Enable": "切换动画", + "Description:Transition_Enable": "切换动画", + "DisplayName:Transition_BasicTransition": "动画类型", + "Description:Transition_BasicTransition": "动画类型", + "DisplayName:Transition_OpenPageLoading": "切换loading", + "Description:Transition_OpenPageLoading": "切换loading", + "DisplayName:Transition_OpenNProgress": "顶部进度条", + "Description:Transition_OpenNProgress": "顶部进度条", + "DisplayName:BeforeMini_MenuCollapsed": "收缩的菜单", + "Description:BeforeMini_MenuCollapsed": "恢复窗口时恢复收缩的菜单", + "DisplayName:BeforeMini_MenuSplit": "分隔的菜单", + "Description:BeforeMini_MenuSplit": "恢复窗口时恢复分隔的菜单", + "DisplayName:BeforeMini_MenuMode": "菜单模式", + "Description:BeforeMini_MenuMode": "恢复窗口时恢复菜单模式", + "DisplayName:BeforeMini_MenuType": "菜单类型", + "Description:BeforeMini_MenuType": "恢复窗口时恢复菜单类型" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/PlatformSettingsVueVbenAdminModule.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/PlatformSettingsVueVbenAdminModule.cs new file mode 100644 index 000000000..6d4f9c351 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/PlatformSettingsVueVbenAdminModule.cs @@ -0,0 +1,26 @@ +using LINGYUN.Platform.Localization; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; + +namespace LINGYUN.Platform.Settings.VueVbenAdmin; + +[DependsOn( + typeof(PlatformDomainSharedModule))] +public class PlatformSettingsVueVbenAdminModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Get() + .AddVirtualJson("/LINGYUN/Platform/Settings/VueVbenAdmin/Localization/Resources"); + }); + } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/VueVbenAdminSettingDefinitionProvider.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/VueVbenAdminSettingDefinitionProvider.cs new file mode 100644 index 000000000..655d9765a --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/VueVbenAdminSettingDefinitionProvider.cs @@ -0,0 +1,410 @@ +using LINGYUN.Platform.Localization; +using Volo.Abp.Localization; +using Volo.Abp.Settings; + +namespace LINGYUN.Platform.Settings.VueVbenAdmin; + +public class VueVbenAdminSettingDefinitionProvider : SettingDefinitionProvider +{ + public override void Define(ISettingDefinitionContext context) + { + context.Add(CreateThemeBasicSettings()); + context.Add(CreateProjectConfigSettings()); + context.Add(CreateHeaderConfigSettings()); + context.Add(CreateMenuConfigSettings()); + context.Add(CreateMultiTabsConfigSettings()); + context.Add(CreateTransitionConfigSettings()); + context.Add(CreateBeforeMiniConfigSettings()); + } + + protected SettingDefinition[] CreateThemeBasicSettings() + { + return new SettingDefinition[] + { + CreateSetting( + name: VueVbenAdminSettingNames.DarkMode, + defaultValue: "light", + displayName: L("DisplayName:DarkMode"), + description: L("Description:DarkMode")), + }; + } + + protected SettingDefinition[] CreateProjectConfigSettings() + { + return new SettingDefinition[] + { + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.PermissionCacheType, + defaultValue: "1", + displayName: L("DisplayName:PermissionCacheType"), + description: L("Description:PermissionCacheType")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.ShowSettingButton, + defaultValue: "true", + displayName: L("DisplayName:ShowSettingButton"), + description: L("Description:ShowSettingButton")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.ShowDarkModeToggle, + defaultValue: "true", + displayName: L("DisplayName:ShowDarkModeToggle"), + description: L("Description:ShowDarkModeToggle")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.SettingButtonPosition, + defaultValue: "auto", + displayName: L("DisplayName:SettingButtonPosition"), + description: L("Description:SettingButtonPosition")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.PermissionMode, + defaultValue: "BACK", + displayName: L("DisplayName:PermissionMode"), + description: L("Description:PermissionMode")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.SessionTimeoutProcessing, + defaultValue: "0", + displayName: L("DisplayName:SessionTimeoutProcessing"), + description: L("Description:SessionTimeoutProcessing")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.GrayMode, + defaultValue: "false", + displayName: L("DisplayName:GrayMode"), + description: L("Description:GrayMode")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.ColorWeak, + defaultValue: "false", + displayName: L("DisplayName:ColorWeak"), + description: L("Description:ColorWeak")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.ThemeColor, + defaultValue: "#0960bd", + displayName: L("DisplayName:ThemeColor"), + description: L("Description:ThemeColor")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.FullContent, + defaultValue: "false", + displayName: L("DisplayName:FullContent"), + description: L("Description:FullContent")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.ContentMode, + defaultValue: "full", + displayName: L("DisplayName:ContentMode"), + description: L("Description:ContentMode")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.ShowLogo, + defaultValue: "true", + displayName: L("DisplayName:ShowLogo"), + description: L("Description:ShowLogo")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.ShowFooter, + defaultValue: "false", + displayName: L("DisplayName:ShowFooter"), + description: L("Description:ShowFooter")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.OpenKeepAlive, + defaultValue: "true", + displayName: L("DisplayName:OpenKeepAlive"), + description: L("Description:OpenKeepAlive")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.LockTime, + defaultValue: "0", + displayName: L("DisplayName:LockTime"), + description: L("Description:LockTime")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.ShowBreadCrumb, + defaultValue: "true", + displayName: L("DisplayName:ShowBreadCrumb"), + description: L("Description:ShowBreadCrumb")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.ShowBreadCrumbIcon, + defaultValue: "false", + displayName: L("DisplayName:ShowBreadCrumbIcon"), + description: L("Description:ShowBreadCrumbIcon")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.UseErrorHandle, + defaultValue: "false", + displayName: L("DisplayName:UseErrorHandle"), + description: L("Description:UseErrorHandle")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.UseOpenBackTop, + defaultValue: "true", + displayName: L("DisplayName:UseOpenBackTop"), + description: L("Description:UseOpenBackTop")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.CanEmbedIFramePage, + defaultValue: "true", + displayName: L("DisplayName:CanEmbedIFramePage"), + description: L("Description:CanEmbedIFramePage")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.CloseMessageOnSwitch, + defaultValue: "true", + displayName: L("DisplayName:CloseMessageOnSwitch"), + description: L("Description:CloseMessageOnSwitch")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.RemoveAllHttpPending, + defaultValue: "false", + displayName: L("DisplayName:RemoveAllHttpPending"), + description: L("Description:RemoveAllHttpPending")), + }; + } + + protected SettingDefinition[] CreateHeaderConfigSettings() + { + return new SettingDefinition[] + { + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.BgColor, + defaultValue: "#ffffff", + displayName: L("DisplayName:Header_BgColor"), + description: L("Description:Header_BgColor")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.Fixed, + defaultValue: "true", + displayName: L("DisplayName:Header_Fixed"), + description: L("Description:Header_Fixed")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.Show, + defaultValue: "true", + displayName: L("DisplayName:Header_Show"), + description: L("Description:Header_Show")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.Theme, + defaultValue: "light", + displayName: L("DisplayName:Header_Theme"), + description: L("Description:Header_Theme")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowFullScreen, + defaultValue: "true", + displayName: L("DisplayName:Header_ShowFullScreen"), + description: L("Description:Header_ShowFullScreen")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.UseLockPage, + defaultValue: "true", + displayName: L("DisplayName:Header_UseLockPage"), + description: L("Description:Header_UseLockPage")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowDoc, + defaultValue: "true", + displayName: L("DisplayName:Header_ShowDoc"), + description: L("Description:Header_ShowDoc")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowNotice, + defaultValue: "true", + displayName: L("DisplayName:Header_ShowNotice"), + description: L("Description:Header_ShowNotice")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowSearch, + defaultValue: "true", + displayName: L("DisplayName:Header_ShowSearch"), + description: L("Description:Header_ShowSearch")), + }; + } + + protected SettingDefinition[] CreateMenuConfigSettings() + { + return new SettingDefinition[] + { + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.BgColor, + defaultValue: "#001529", + displayName: L("DisplayName:Menu_BgColor"), + description: L("Description:Menu_BgColor")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Fixed, + defaultValue: "true", + displayName: L("DisplayName:Menu_Fixed"), + description: L("Description:Menu_Fixed")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Collapsed, + defaultValue: "false", + displayName: L("DisplayName:Menu_Collapsed"), + description: L("Description:Menu_Collapsed")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.CanDrag, + defaultValue: "false", + displayName: L("DisplayName:Menu_CanDrag"), + description: L("Description:Menu_CanDrag")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Show, + defaultValue: "true", + displayName: L("DisplayName:Menu_Show"), + description: L("Description:Menu_Show")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Hidden, + defaultValue: "false", + displayName: L("DisplayName:Menu_Hidden"), + description: L("Description:Menu_Hidden")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Split, + defaultValue: "false", + displayName: L("DisplayName:Menu_Split"), + description: L("Description:Menu_Split")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.MenuWidth, + defaultValue: "210", + displayName: L("DisplayName:Menu_MenuWidth"), + description: L("Description:Menu_MenuWidth")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Mode, + defaultValue: "inline", + displayName: L("DisplayName:Menu_Mode"), + description: L("Description:Menu_Mode")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Type, + defaultValue: "sidebar", + displayName: L("DisplayName:Menu_Type"), + description: L("Description:Menu_Type")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Theme, + defaultValue: "dark", + displayName: L("DisplayName:Menu_Theme"), + description: L("Description:Menu_Theme")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.TopMenuAlign, + defaultValue: "center", + displayName: L("DisplayName:Menu_TopMenuAlign"), + description: L("Description:Menu_TopMenuAlign")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Trigger, + defaultValue: "HEADER", + displayName: L("DisplayName:Menu_Trigger"), + description: L("Description:Menu_Trigger")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Accordion, + defaultValue: "true", + displayName: L("DisplayName:Menu_Accordion"), + description: L("Description:Menu_Accordion")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.CloseMixSidebarOnChange, + defaultValue: "false", + displayName: L("DisplayName:Menu_CloseMixSidebarOnChange"), + description: L("Description:Menu_CloseMixSidebarOnChange")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.CollapsedShowTitle, + defaultValue: "false", + displayName: L("DisplayName:Menu_CollapsedShowTitle"), + description: L("Description:Menu_CollapsedShowTitle")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.MixSideTrigger, + defaultValue: "click", + displayName: L("DisplayName:Menu_MixSideTrigger"), + description: L("Description:Menu_MixSideTrigger")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MenuSetting.MixSideFixed, + defaultValue: "false", + displayName: L("DisplayName:Menu_MixSideFixed"), + description: L("Description:Menu_MixSideFixed")), + }; + } + + protected SettingDefinition[] CreateMultiTabsConfigSettings() + { + return new SettingDefinition[] + { + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.Cache, + defaultValue: "false", + displayName: L("DisplayName:MultiTabs_Cache"), + description: L("Description:MultiTabs_Cache")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.Show, + defaultValue: "true", + displayName: L("DisplayName:MultiTabs_Show"), + description: L("Description:MultiTabs_Show")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.ShowQuick, + defaultValue: "true", + displayName: L("DisplayName:MultiTabs_ShowQuick"), + description: L("Description:MultiTabs_ShowQuick")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.CanDrag, + defaultValue: "true", + displayName: L("DisplayName:MultiTabs_CanDrag"), + description: L("Description:MultiTabs_CanDrag")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.ShowRedo, + defaultValue: "true", + displayName: L("DisplayName:MultiTabs_ShowRedo"), + description: L("Description:MultiTabs_ShowRedo")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.ShowFold, + defaultValue: "true", + displayName: L("DisplayName:MultiTabs_ShowFold"), + description: L("Description:MultiTabs_ShowFold")), + }; + } + + protected SettingDefinition[] CreateTransitionConfigSettings() + { + return new SettingDefinition[] + { + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.Enable, + defaultValue: "true", + displayName: L("DisplayName:Transition_Enable"), + description: L("Description:Transition_Enable")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.BasicTransition, + defaultValue: "fade-slide", + displayName: L("DisplayName:Transition_BasicTransition"), + description: L("Description:Transition_BasicTransition")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.OpenPageLoading, + defaultValue: "true", + displayName: L("DisplayName:Transition_OpenPageLoading"), + description: L("Description:Transition_OpenPageLoading")), + CreateSetting( + name: VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.OpenNProgress, + defaultValue: "false", + displayName: L("DisplayName:Transition_OpenNProgress"), + description: L("Description:Transition_OpenNProgress")), + }; + } + + protected SettingDefinition[] CreateBeforeMiniConfigSettings() + { + return new SettingDefinition[] + { + CreateSetting( + name: VueVbenAdminSettingNames.BeforeMiniInfo.MenuCollapsed, + defaultValue: null, + displayName: L("DisplayName:BeforeMini_MenuCollapsed"), + description: L("Description:BeforeMini_MenuCollapsed")), + CreateSetting( + name: VueVbenAdminSettingNames.BeforeMiniInfo.MenuSplit, + defaultValue: null, + displayName: L("DisplayName:BeforeMini_MenuSplit"), + description: L("Description:BeforeMini_MenuSplit")), + CreateSetting( + name: VueVbenAdminSettingNames.BeforeMiniInfo.MenuMode, + defaultValue: null, + displayName: L("DisplayName:BeforeMini_MenuMode"), + description: L("Description:BeforeMini_MenuMode")), + CreateSetting( + name: VueVbenAdminSettingNames.BeforeMiniInfo.MenuType, + defaultValue: null, + displayName: L("DisplayName:BeforeMini_MenuType"), + description: L("Description:BeforeMini_MenuType")), + }; + } + + protected SettingDefinition CreateSetting( + string name, + ILocalizableString displayName, + ILocalizableString description, + string defaultValue = null, + bool isVisibleToClients = false, + bool isInherited = true, + bool isEncrypted = false) + { + return new SettingDefinition(name, defaultValue, displayName, description, isVisibleToClients, isInherited, isEncrypted) + .WithProviders( + DefaultValueSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName, + UserSettingValueProvider.ProviderName); + } + + protected LocalizableString L(string name) + { + return LocalizableString.Create(name); + } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/VueVbenAdminSettingNames.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/VueVbenAdminSettingNames.cs new file mode 100644 index 000000000..7699f3aeb --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Settings.VueVbenAdmin/LINGYUN/Platform/Settings/VueVbenAdmin/VueVbenAdminSettingNames.cs @@ -0,0 +1,101 @@ +namespace LINGYUN.Platform.Settings.VueVbenAdmin; + +public static class VueVbenAdminSettingNames +{ + public const string GroupName = PlatformSettingNames.GroupName + ".Theme.VueVbenAdmin"; + + public const string DarkMode = GroupName + ".DarkMode"; + + public static class ProjectConfig + { + public const string Prefix = GroupName + ".ProjectConfig"; + public const string PermissionCacheType = Prefix + ".PermissionCacheType"; + public const string ShowSettingButton = Prefix + ".ShowSettingButton"; + public const string ShowDarkModeToggle = Prefix + ".ShowDarkModeToggle"; + public const string SettingButtonPosition = Prefix + ".SettingButtonPosition"; + public const string PermissionMode = Prefix + ".PermissionMode"; + public const string SessionTimeoutProcessing = Prefix + ".SessionTimeoutProcessing"; + public const string GrayMode = Prefix + ".GrayMode"; + public const string ColorWeak = Prefix + ".ColorWeak"; + public const string ThemeColor = Prefix + ".ThemeColor"; + public const string FullContent = Prefix + ".FullContent"; + public const string ContentMode = Prefix + ".ContentMode"; + public const string ShowLogo = Prefix + ".ShowLogo"; + public const string ShowFooter = Prefix + ".ShowFooter"; + public const string OpenKeepAlive = Prefix + ".OpenKeepAlive"; + public const string LockTime = Prefix + ".LockTime"; + public const string ShowBreadCrumb = Prefix + ".ShowBreadCrumb"; + public const string ShowBreadCrumbIcon = Prefix + ".ShowBreadCrumbIcon"; + public const string UseErrorHandle = Prefix + ".UseErrorHandle"; + public const string UseOpenBackTop = Prefix + ".UseOpenBackTop"; + public const string CanEmbedIFramePage = Prefix + ".CanEmbedIFramePage"; + public const string CloseMessageOnSwitch = Prefix + ".CloseMessageOnSwitch"; + public const string RemoveAllHttpPending = Prefix + ".RemoveAllHttpPending"; + + public static class HeaderSetting + { + public const string Prefix = ProjectConfig.Prefix + ".HeaderSetting"; + public const string BgColor = Prefix + ".BgColor"; + public const string Fixed = Prefix + ".Fixed"; + public const string Show = Prefix + ".Show"; + public const string Theme = Prefix + ".Theme"; + public const string ShowFullScreen = Prefix + ".ShowFullScreen"; + public const string UseLockPage = Prefix + ".UseLockPage"; + public const string ShowDoc = Prefix + ".ShowDoc"; + public const string ShowNotice = Prefix + ".ShowNotice"; + public const string ShowSearch = Prefix + ".ShowSearch"; + } + + public static class MenuSetting + { + public const string Prefix = ProjectConfig.Prefix + ".MenuSetting"; + public const string BgColor = Prefix + ".BgColor"; + public const string Fixed = Prefix + ".Fixed"; + public const string Collapsed = Prefix + ".Collapsed"; + public const string CanDrag = Prefix + ".CanDrag"; + public const string Show = Prefix + ".Show"; + public const string Hidden = Prefix + ".Hidden"; + public const string Split = Prefix + ".Split"; + public const string MenuWidth = Prefix + ".MenuWidth"; + public const string Mode = Prefix + ".Mode"; + public const string Type = Prefix + ".Type"; + public const string Theme = Prefix + ".Theme"; + public const string TopMenuAlign = Prefix + ".TopMenuAlign"; + public const string Trigger = Prefix + ".Trigger"; + public const string Accordion = Prefix + ".Accordion"; + public const string CloseMixSidebarOnChange = Prefix + ".CloseMixSidebarOnChange"; + public const string CollapsedShowTitle = Prefix + ".CollapsedShowTitle"; + public const string MixSideTrigger = Prefix + ".MixSideTrigger"; + public const string MixSideFixed = Prefix + ".MixSideFixed"; + } + + public static class MultiTabsSetting + { + public const string Prefix = ProjectConfig.Prefix + ".MultiTabsSetting"; + public const string Cache = Prefix + ".Cache"; + public const string Show = Prefix + ".Show"; + public const string ShowQuick = Prefix + ".ShowQuick"; + public const string CanDrag = Prefix + ".CanDrag"; + public const string ShowRedo = Prefix + ".ShowRedo"; + public const string ShowFold = Prefix + ".ShowFold"; + } + + public static class TransitionSetting + { + public const string Prefix = ProjectConfig.Prefix + ".TransitionSetting"; + public const string Enable = Prefix + ".Enable"; + public const string BasicTransition = Prefix + ".BasicTransition"; + public const string OpenPageLoading = Prefix + ".OpenPageLoading"; + public const string OpenNProgress = Prefix + ".OpenNProgress"; + } + } + + public static class BeforeMiniInfo + { + public const string Prefix = GroupName + ".BeforeMiniInfo"; + public const string MenuCollapsed = Prefix + ".MenuCollapsed"; + public const string MenuSplit = Prefix + ".MenuSplit"; + public const string MenuMode = Prefix + ".MenuMode"; + public const string MenuType = Prefix + ".MenuType"; + } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/FodyWeavers.xml b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/FodyWeavers.xsd b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/FodyWeavers.xsd new file mode 100644 index 000000000..11da52550 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN.Platform.Theme.VueVbenAdmin.csproj b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN.Platform.Theme.VueVbenAdmin.csproj new file mode 100644 index 000000000..d4977ecf0 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN.Platform.Theme.VueVbenAdmin.csproj @@ -0,0 +1,23 @@ + + + + + + + net6.0 + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/BeforeMiniStateDto.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/BeforeMiniStateDto.cs new file mode 100644 index 000000000..77f57dafe --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/BeforeMiniStateDto.cs @@ -0,0 +1,9 @@ +namespace LINGYUN.Platform.Theme.VueVbenAdmin; + +public class BeforeMiniStateDto +{ + public bool? MenuCollapsed { get; set; } + public bool? MenuSplit { get; set; } + public string MenuMode { get; set; } + public string MenuType { get; set; } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/HeaderSettingDto.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/HeaderSettingDto.cs new file mode 100644 index 000000000..3b006667e --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/HeaderSettingDto.cs @@ -0,0 +1,14 @@ +namespace LINGYUN.Platform.Theme.VueVbenAdmin; + +public class HeaderSettingDto +{ + public string BgColor { get; set; } = "#ffffff"; + public bool Fixed { get; set; } = true; + public bool Show { get; set; } = true; + public string Theme { get; set; } = "light"; + public bool ShowFullScreen { get; set; } = true; + public bool UseLockPage { get; set; } = true; + public bool ShowDoc { get; set; } = true; + public bool ShowNotice { get; set; } = true; + public bool ShowSearch { get; set; } = true; +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/IThemeSettingAppService.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/IThemeSettingAppService.cs new file mode 100644 index 000000000..7c057fc5b --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/IThemeSettingAppService.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace LINGYUN.Platform.Theme.VueVbenAdmin; + +public interface IThemeSettingAppService : IApplicationService +{ + Task GetAsync(); + + Task ChangeAsync(ThemeSettingDto input); +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/MenuSettingDto.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/MenuSettingDto.cs new file mode 100644 index 000000000..832ca86b2 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/MenuSettingDto.cs @@ -0,0 +1,23 @@ +namespace LINGYUN.Platform.Theme.VueVbenAdmin; + +public class MenuSettingDto +{ + public string BgColor { get; set; } = "#001529"; + public bool Fixed { get; set; } = true; + public bool Collapsed { get; set; } + public bool CanDrag { get; set; } + public bool Show { get; set; } = true; + public bool Hidden { get; set; } + public bool Split { get; set; } + public int MenuWidth { get; set; } = 210; + public string Mode { get; set; } = "inline"; + public string Type { get; set; } = "sidebar"; + public string Theme { get; set; } = "dark"; + public string TopMenuAlign { get; set; } = "center"; + public string Trigger { get; set; } = "HEADER"; + public bool Accordion { get; set; } = true; + public bool CloseMixSidebarOnChange { get; set; } + public bool CollapsedShowTitle { get; set; } + public string MixSideTrigger { get; set; } = "click"; + public bool MixSideFixed { get; set; } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/MultiTabsSettingDto.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/MultiTabsSettingDto.cs new file mode 100644 index 000000000..a82c3c97b --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/MultiTabsSettingDto.cs @@ -0,0 +1,11 @@ +namespace LINGYUN.Platform.Theme.VueVbenAdmin; + +public class MultiTabsSettingDto +{ + public bool Cache { get; set; } + public bool Show { get; set; } = true; + public bool ShowQuick { get; set; } = true; + public bool CanDrag { get; set; } = true; + public bool ShowRedo { get; set; } = true; + public bool ShowFold { get; set; } = true; +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/PlatformThemeVueVbenAdminModule.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/PlatformThemeVueVbenAdminModule.cs new file mode 100644 index 000000000..7dc6f8cf8 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/PlatformThemeVueVbenAdminModule.cs @@ -0,0 +1,22 @@ +using LINGYUN.Platform.Settings.VueVbenAdmin; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Modularity; + +namespace LINGYUN.Platform.Theme.VueVbenAdmin; + +[DependsOn( + typeof(PlatformDomainModule), + typeof(PlatformSettingsVueVbenAdminModule), + typeof(PlatformApplicationContractModule), + typeof(AbpAspNetCoreMvcModule))] +public class PlatformThemeVueVbenAdminModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(PlatformThemeVueVbenAdminModule).Assembly); + }); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ProjectConfigDto.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ProjectConfigDto.cs new file mode 100644 index 000000000..f1bb21a45 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ProjectConfigDto.cs @@ -0,0 +1,31 @@ +namespace LINGYUN.Platform.Theme.VueVbenAdmin; + +public class ProjectConfigDto +{ + public int PermissionCacheType { get; set; } = 1; + public bool ShowSettingButton { get; set; } = true; + public bool ShowDarkModeToggle { get; set; } = true; + public string SettingButtonPosition { get; set; } = "auto"; + public string PermissionMode { get; set; } = "BACK"; + public int SessionTimeoutProcessing { get; set; } = 0; + public bool GrayMode { get; set; } + public bool ColorWeak { get; set; } + public string ThemeColor { get; set; } = "#0960bd"; + public bool FullContent { get; set; } + public string ContentMode { get; set; } = "full"; + public bool ShowLogo { get; set; } = true; + public bool ShowFooter { get; set; } + public HeaderSettingDto HeaderSetting { get; set; } = new HeaderSettingDto(); + public MenuSettingDto MenuSetting { get; set; } = new MenuSettingDto(); + public MultiTabsSettingDto MultiTabsSetting { get; set; } = new MultiTabsSettingDto(); + public TransitionSettingDto TransitionSetting { get; set; } = new TransitionSettingDto(); + public bool OpenKeepAlive { get; set; } = true; + public int LockTime { get; set; } = 0; + public bool ShowBreadCrumb { get; set; } = true; + public bool ShowBreadCrumbIcon { get; set; } + public bool UseErrorHandle { get; set; } + public bool UseOpenBackTop { get; set; } = true; + public bool CanEmbedIFramePage { get; set; } = true; + public bool CloseMessageOnSwitch { get; set; } = true; + public bool RemoveAllHttpPending { get; set; } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingAppService.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingAppService.cs new file mode 100644 index 000000000..3c63b1709 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingAppService.cs @@ -0,0 +1,265 @@ +using LINGYUN.Platform.Localization; +using LINGYUN.Platform.Settings.VueVbenAdmin; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; +using Volo.Abp.Settings; +using Volo.Abp.SettingManagement; +using Microsoft.AspNetCore.Authorization; + +namespace LINGYUN.Platform.Theme.VueVbenAdmin; + +public class ThemeSettingAppService : ApplicationService, IThemeSettingAppService +{ + protected ISettingManager SettingManager { get; } + + public ThemeSettingAppService( + ISettingManager settingManager) + { + SettingManager = settingManager; + + LocalizationResource = typeof(PlatformResource); + } + + public async virtual Task GetAsync() + { + var theme = new ThemeSettingDto(); + + var settings = await SettingProvider.GetAllAsync(GetAllSettingNames()); + + theme.DarkMode = GetSettingValue(settings, VueVbenAdminSettingNames.DarkMode); + + theme.ProjectConfig.PermissionCacheType = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.PermissionCacheType, 1); + theme.ProjectConfig.ShowSettingButton = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.ShowSettingButton, true); + theme.ProjectConfig.ShowDarkModeToggle = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.ShowDarkModeToggle, true); + theme.ProjectConfig.SettingButtonPosition = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.SettingButtonPosition); + theme.ProjectConfig.PermissionMode = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.PermissionMode); + theme.ProjectConfig.SessionTimeoutProcessing = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.SessionTimeoutProcessing, 0); + theme.ProjectConfig.GrayMode = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.GrayMode, false); + theme.ProjectConfig.ColorWeak = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.ColorWeak, false); + theme.ProjectConfig.ThemeColor = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.ThemeColor); + theme.ProjectConfig.FullContent = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.FullContent, false); + theme.ProjectConfig.ContentMode = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.ContentMode); + theme.ProjectConfig.ShowLogo = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.ShowLogo, true); + theme.ProjectConfig.ShowFooter = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.ShowFooter, false); + theme.ProjectConfig.OpenKeepAlive = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.OpenKeepAlive, true); + theme.ProjectConfig.LockTime = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.LockTime, 0); + theme.ProjectConfig.ShowBreadCrumb = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.ShowBreadCrumb, true); + theme.ProjectConfig.ShowBreadCrumbIcon = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.ShowBreadCrumbIcon, false); + theme.ProjectConfig.UseErrorHandle = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.UseErrorHandle, false); + theme.ProjectConfig.UseOpenBackTop = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.UseOpenBackTop, true); + theme.ProjectConfig.CanEmbedIFramePage = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.CanEmbedIFramePage, true); + theme.ProjectConfig.CloseMessageOnSwitch = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.CloseMessageOnSwitch, true); + theme.ProjectConfig.RemoveAllHttpPending = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.RemoveAllHttpPending, false); + + theme.ProjectConfig.HeaderSetting.BgColor = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.BgColor); + theme.ProjectConfig.HeaderSetting.Fixed = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.Fixed, true); + theme.ProjectConfig.HeaderSetting.Show = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.Show, true); + theme.ProjectConfig.HeaderSetting.Theme = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.Theme); + theme.ProjectConfig.HeaderSetting.ShowFullScreen = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowFullScreen, true); + theme.ProjectConfig.HeaderSetting.UseLockPage = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.UseLockPage, true); + theme.ProjectConfig.HeaderSetting.ShowDoc = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowDoc, true); + theme.ProjectConfig.HeaderSetting.ShowNotice = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowNotice, true); + theme.ProjectConfig.HeaderSetting.ShowSearch = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowSearch, false); + + theme.ProjectConfig.MenuSetting.BgColor = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.BgColor); + theme.ProjectConfig.MenuSetting.Fixed = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Fixed, true); + theme.ProjectConfig.MenuSetting.Collapsed = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Collapsed, false); + theme.ProjectConfig.MenuSetting.CanDrag = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.CanDrag, false); + theme.ProjectConfig.MenuSetting.Show = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Show, true); + theme.ProjectConfig.MenuSetting.Hidden = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Hidden, false); + theme.ProjectConfig.MenuSetting.Split = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Split, false); + theme.ProjectConfig.MenuSetting.MenuWidth = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.MenuWidth, 210); + theme.ProjectConfig.MenuSetting.Mode = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Mode); + theme.ProjectConfig.MenuSetting.Type = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Type); + theme.ProjectConfig.MenuSetting.Theme = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Theme); + theme.ProjectConfig.MenuSetting.Show = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Show, true); + theme.ProjectConfig.MenuSetting.Theme = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Theme); + theme.ProjectConfig.MenuSetting.TopMenuAlign = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.TopMenuAlign); + theme.ProjectConfig.MenuSetting.Trigger = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Trigger); + theme.ProjectConfig.MenuSetting.Accordion = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Accordion, true); + theme.ProjectConfig.MenuSetting.CloseMixSidebarOnChange = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.CloseMixSidebarOnChange, false); + theme.ProjectConfig.MenuSetting.CollapsedShowTitle = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.CollapsedShowTitle, false); + theme.ProjectConfig.MenuSetting.MixSideTrigger = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.MixSideTrigger); + theme.ProjectConfig.MenuSetting.MixSideFixed = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MenuSetting.MixSideFixed, false); + + theme.ProjectConfig.MultiTabsSetting.Cache = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.Cache, false); + theme.ProjectConfig.MultiTabsSetting.Show = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.Show, true); + theme.ProjectConfig.MultiTabsSetting.ShowQuick = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.ShowQuick, true); + theme.ProjectConfig.MultiTabsSetting.CanDrag = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.CanDrag, true); + theme.ProjectConfig.MultiTabsSetting.ShowRedo = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.ShowRedo, true); + theme.ProjectConfig.MultiTabsSetting.ShowFold = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.ShowFold, true); + + theme.ProjectConfig.TransitionSetting.Enable = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.Enable, true); + theme.ProjectConfig.TransitionSetting.BasicTransition = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.BasicTransition); + theme.ProjectConfig.TransitionSetting.OpenPageLoading = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.OpenPageLoading, true); + theme.ProjectConfig.TransitionSetting.OpenNProgress = GetSettingValue(settings, VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.OpenNProgress, false); + + // 忽略 + //theme.BeforeMiniInfo.MenuCollapsed = GetSettingValue(settings, VueVbenAdminSettingNames.BeforeMiniInfo.MenuCollapsed)?.To(); + //theme.BeforeMiniInfo.MenuSplit = GetSettingValue(settings, VueVbenAdminSettingNames.BeforeMiniInfo.MenuSplit)?.To(); + //theme.BeforeMiniInfo.MenuMode = GetSettingValue(settings, VueVbenAdminSettingNames.BeforeMiniInfo.MenuMode); + //theme.BeforeMiniInfo.MenuType = GetSettingValue(settings, VueVbenAdminSettingNames.BeforeMiniInfo.MenuType); + + return theme; + } + + [Authorize] + public async virtual Task ChangeAsync(ThemeSettingDto input) + { + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.DarkMode, input.DarkMode); + + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.PermissionCacheType, input.ProjectConfig.PermissionCacheType.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.ShowSettingButton, input.ProjectConfig.ShowSettingButton.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.ShowDarkModeToggle, input.ProjectConfig.ShowDarkModeToggle.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.SettingButtonPosition, input.ProjectConfig.SettingButtonPosition); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.PermissionMode, input.ProjectConfig.PermissionMode); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.SessionTimeoutProcessing, input.ProjectConfig.SessionTimeoutProcessing.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.GrayMode, input.ProjectConfig.GrayMode.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.ColorWeak, input.ProjectConfig.ColorWeak.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.ThemeColor, input.ProjectConfig.ThemeColor); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.FullContent, input.ProjectConfig.FullContent.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.ContentMode, input.ProjectConfig.ContentMode); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.ShowLogo, input.ProjectConfig.ShowLogo.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.ShowFooter, input.ProjectConfig.ShowFooter.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.OpenKeepAlive, input.ProjectConfig.OpenKeepAlive.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.LockTime, input.ProjectConfig.LockTime.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.ShowBreadCrumb, input.ProjectConfig.ShowBreadCrumb.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.ShowBreadCrumbIcon, input.ProjectConfig.ShowBreadCrumbIcon.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.UseErrorHandle, input.ProjectConfig.UseErrorHandle.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.UseOpenBackTop, input.ProjectConfig.UseOpenBackTop.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.CanEmbedIFramePage, input.ProjectConfig.CanEmbedIFramePage.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.CloseMessageOnSwitch, input.ProjectConfig.CloseMessageOnSwitch.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.RemoveAllHttpPending, input.ProjectConfig.RemoveAllHttpPending.ToString()); + + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.BgColor, input.ProjectConfig.HeaderSetting.BgColor); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.Fixed, input.ProjectConfig.HeaderSetting.Fixed.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.Show, input.ProjectConfig.HeaderSetting.Show.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.Theme, input.ProjectConfig.HeaderSetting.Theme); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowFullScreen, input.ProjectConfig.HeaderSetting.ShowFullScreen.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.UseLockPage, input.ProjectConfig.HeaderSetting.UseLockPage.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowDoc, input.ProjectConfig.HeaderSetting.ShowDoc.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowNotice, input.ProjectConfig.HeaderSetting.ShowNotice.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowSearch, input.ProjectConfig.HeaderSetting.ShowSearch.ToString()); + + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.BgColor, input.ProjectConfig.MenuSetting.BgColor); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Fixed, input.ProjectConfig.MenuSetting.Fixed.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Collapsed, input.ProjectConfig.MenuSetting.Collapsed.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.CanDrag, input.ProjectConfig.MenuSetting.CanDrag.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Show, input.ProjectConfig.MenuSetting.Show.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Hidden, input.ProjectConfig.MenuSetting.Hidden.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Split, input.ProjectConfig.MenuSetting.Split.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.MenuWidth, input.ProjectConfig.MenuSetting.MenuWidth.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Mode, input.ProjectConfig.MenuSetting.Mode); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Type, input.ProjectConfig.MenuSetting.Type); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Theme, input.ProjectConfig.MenuSetting.Theme); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.TopMenuAlign, input.ProjectConfig.MenuSetting.TopMenuAlign); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Trigger, input.ProjectConfig.MenuSetting.Trigger); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Accordion, input.ProjectConfig.MenuSetting.Accordion.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.CloseMixSidebarOnChange, input.ProjectConfig.MenuSetting.CloseMixSidebarOnChange.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.CollapsedShowTitle, input.ProjectConfig.MenuSetting.CollapsedShowTitle.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.MixSideTrigger, input.ProjectConfig.MenuSetting.MixSideTrigger); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MenuSetting.MixSideFixed, input.ProjectConfig.MenuSetting.MixSideFixed.ToString()); + + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.Cache, input.ProjectConfig.MultiTabsSetting.Cache.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.Show, input.ProjectConfig.MultiTabsSetting.Show.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.ShowQuick, input.ProjectConfig.MultiTabsSetting.ShowQuick.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.CanDrag, input.ProjectConfig.MultiTabsSetting.CanDrag.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.ShowRedo, input.ProjectConfig.MultiTabsSetting.ShowRedo.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.ShowFold, input.ProjectConfig.MultiTabsSetting.ShowFold.ToString()); + + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.Enable, input.ProjectConfig.TransitionSetting.Enable.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.BasicTransition, input.ProjectConfig.TransitionSetting.BasicTransition); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.OpenPageLoading, input.ProjectConfig.TransitionSetting.OpenPageLoading.ToString()); + await SettingManager.SetForCurrentUserAsync(VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.OpenNProgress, input.ProjectConfig.TransitionSetting.OpenNProgress.ToString()); + } + + protected virtual string[] GetAllSettingNames() + { + return new string[] + { + VueVbenAdminSettingNames.DarkMode, + + VueVbenAdminSettingNames.ProjectConfig.PermissionCacheType, + VueVbenAdminSettingNames.ProjectConfig.ShowSettingButton, + VueVbenAdminSettingNames.ProjectConfig.ShowDarkModeToggle, + VueVbenAdminSettingNames.ProjectConfig.SettingButtonPosition, + VueVbenAdminSettingNames.ProjectConfig.PermissionMode, + VueVbenAdminSettingNames.ProjectConfig.SessionTimeoutProcessing, + VueVbenAdminSettingNames.ProjectConfig.GrayMode, + VueVbenAdminSettingNames.ProjectConfig.ColorWeak, + VueVbenAdminSettingNames.ProjectConfig.ThemeColor, + VueVbenAdminSettingNames.ProjectConfig.FullContent, + VueVbenAdminSettingNames.ProjectConfig.ContentMode, + VueVbenAdminSettingNames.ProjectConfig.ShowLogo, + VueVbenAdminSettingNames.ProjectConfig.ShowFooter, + VueVbenAdminSettingNames.ProjectConfig.OpenKeepAlive, + VueVbenAdminSettingNames.ProjectConfig.LockTime, + VueVbenAdminSettingNames.ProjectConfig.ShowBreadCrumb, + VueVbenAdminSettingNames.ProjectConfig.ShowBreadCrumbIcon, + VueVbenAdminSettingNames.ProjectConfig.UseErrorHandle, + VueVbenAdminSettingNames.ProjectConfig.UseOpenBackTop, + VueVbenAdminSettingNames.ProjectConfig.CanEmbedIFramePage, + VueVbenAdminSettingNames.ProjectConfig.CloseMessageOnSwitch, + VueVbenAdminSettingNames.ProjectConfig.RemoveAllHttpPending, + + VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.BgColor, + VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.Fixed, + VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.Show, + VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.Theme, + VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowFullScreen, + VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.UseLockPage, + VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowDoc, + VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowNotice, + VueVbenAdminSettingNames.ProjectConfig.HeaderSetting.ShowSearch, + + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.BgColor, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Fixed, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Collapsed, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.CanDrag, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Show, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Hidden, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Split, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.MenuWidth, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Mode, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Type, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Theme, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.TopMenuAlign, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Trigger, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.Accordion, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.CloseMixSidebarOnChange, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.CollapsedShowTitle, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.MixSideTrigger, + VueVbenAdminSettingNames.ProjectConfig.MenuSetting.MixSideFixed, + + VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.Cache, + VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.Show, + VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.ShowQuick, + VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.CanDrag, + VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.ShowRedo, + VueVbenAdminSettingNames.ProjectConfig.MultiTabsSetting.ShowFold, + + VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.Enable, + VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.BasicTransition, + VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.OpenPageLoading, + VueVbenAdminSettingNames.ProjectConfig.TransitionSetting.OpenNProgress, + }; + } + + protected virtual string GetSettingValue(IEnumerable settings, string name, string defaultValue = null) + { + var settingValue = settings.FirstOrDefault(x => x.Name == name)?.Value; + + return settingValue ?? defaultValue; + } + + protected virtual T GetSettingValue(IEnumerable settings, string name, T defaultValue = default) + where T : struct + { + var settingValue = settings.FirstOrDefault(x => x.Name == name)?.Value; + + return settingValue?.To() ?? defaultValue; + } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingController.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingController.cs new file mode 100644 index 000000000..a559a33de --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingController.cs @@ -0,0 +1,34 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Platform.Theme.VueVbenAdmin; + +[Controller] +[RemoteService(Name = PlatformRemoteServiceConsts.RemoteServiceName)] +[Route("api/theme/vue-vben-admin")] +public class ThemeSettingController : AbpControllerBase, IThemeSettingAppService +{ + protected IThemeSettingAppService ThemeSettingAppService { get; } + + public ThemeSettingController( + IThemeSettingAppService themeSettingAppService) + { + ThemeSettingAppService = themeSettingAppService; + } + + [HttpGet] + public Task GetAsync() + { + return ThemeSettingAppService.GetAsync(); + } + + [HttpPut] + [Authorize] + public Task ChangeAsync(ThemeSettingDto input) + { + return ThemeSettingAppService.ChangeAsync(input); + } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingDto.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingDto.cs new file mode 100644 index 000000000..722c274ed --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/ThemeSettingDto.cs @@ -0,0 +1,9 @@ +namespace LINGYUN.Platform.Theme.VueVbenAdmin; + +public class ThemeSettingDto +{ + public string DarkMode { get; set; } = "light"; + public bool PageLoading { get; set; } + public ProjectConfigDto ProjectConfig { get; set; } = new ProjectConfigDto(); + public BeforeMiniStateDto BeforeMiniInfo { get; set; } = new BeforeMiniStateDto(); +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/TransitionSettingDto.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/TransitionSettingDto.cs new file mode 100644 index 000000000..1ab5da735 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Theme.VueVbenAdmin/LINGYUN/Platform/Theme/VueVbenAdmin/TransitionSettingDto.cs @@ -0,0 +1,9 @@ +namespace LINGYUN.Platform.Theme.VueVbenAdmin; + +public class TransitionSettingDto +{ + public bool Enable { get; set; } = true; + public string BasicTransition { get; set; } = "fade-slide"; + public bool OpenPageLoading { get; set; } = true; + public bool OpenNProgress { get; set; } +} diff --git a/aspnet-core/services/LY.MicroService.PlatformManagement.HttpApi.Host/LY.MicroService.PlatformManagement.HttpApi.Host.csproj b/aspnet-core/services/LY.MicroService.PlatformManagement.HttpApi.Host/LY.MicroService.PlatformManagement.HttpApi.Host.csproj index 2aaaa465e..b60c27e38 100644 --- a/aspnet-core/services/LY.MicroService.PlatformManagement.HttpApi.Host/LY.MicroService.PlatformManagement.HttpApi.Host.csproj +++ b/aspnet-core/services/LY.MicroService.PlatformManagement.HttpApi.Host/LY.MicroService.PlatformManagement.HttpApi.Host.csproj @@ -62,6 +62,7 @@ + diff --git a/aspnet-core/services/LY.MicroService.PlatformManagement.HttpApi.Host/PlatformManagementHttpApiHostModule.cs b/aspnet-core/services/LY.MicroService.PlatformManagement.HttpApi.Host/PlatformManagementHttpApiHostModule.cs index bcdee3576..bb39a3492 100644 --- a/aspnet-core/services/LY.MicroService.PlatformManagement.HttpApi.Host/PlatformManagementHttpApiHostModule.cs +++ b/aspnet-core/services/LY.MicroService.PlatformManagement.HttpApi.Host/PlatformManagementHttpApiHostModule.cs @@ -20,6 +20,7 @@ using LINGYUN.Abp.UI.Navigation.VueVbenAdmin; using LINGYUN.Platform; using LINGYUN.Platform.EntityFrameworkCore; using LINGYUN.Platform.HttpApi; +using LINGYUN.Platform.Theme.VueVbenAdmin; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; @@ -47,6 +48,7 @@ namespace LY.MicroService.PlatformManagement; typeof(AbpAuditLoggingElasticsearchModule), typeof(AbpAspNetCoreMultiTenancyModule), typeof(AbpUINavigationVueVbenAdminModule), + typeof(PlatformThemeVueVbenAdminModule), // typeof(AbpOssManagementAliyunModule), typeof(AbpOssManagementFileSystemModule), // 本地文件系统提供者模块 typeof(AbpOssManagementFileSystemImageSharpModule), // 本地文件系统图形处理模块