diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs index 6c0f81f852..f03ae851c1 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs @@ -49,10 +49,10 @@ public class CliService : ITransientDependency var commandLineArgs = CommandLineArgumentParser.Parse(args); #if !DEBUG - if (!commandLineArgs.Options.ContainsKey("skip-cli-version-check")) - { - await CheckCliVersionAsync(); - } + if (!commandLineArgs.Options.ContainsKey("skip-cli-version-check")) + { + await CheckCliVersionAsync(); + } #endif try { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index 07741779b1..75e090430c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -93,6 +93,12 @@ public abstract class ProjectCreationCommandBase Logger.LogInformation("UI Framework: " + uiFramework); } + var theme = uiFramework == UiFramework.None ? (Theme?)null : GetTheme(commandLineArgs); + if (theme.HasValue) + { + Logger.LogInformation("Theme: " + theme); + } + var publicWebSite = uiFramework != UiFramework.None && commandLineArgs.Options.ContainsKey(Options.PublicWebSite.Long); if (publicWebSite) { @@ -134,7 +140,6 @@ public abstract class ProjectCreationCommandBase if (MicroserviceServiceTemplateBase.IsMicroserviceServiceTemplate(template)) { var slnFile = Directory.GetFiles(outputFolderRoot, "*.sln").FirstOrDefault(); - if (slnFile == null) { throw new CliUsageException("This command should be run inside a folder that contains a microservice solution!"); @@ -184,7 +189,8 @@ public abstract class ProjectCreationCommandBase templateSource, commandLineArgs.Options, connectionString, - pwa + pwa, + theme ); } @@ -460,6 +466,21 @@ public abstract class ProjectCreationCommandBase } } + protected virtual Theme GetTheme(CommandLineArgs commandLineArgs) + { + var optionValue = commandLineArgs.Options.GetOrNull(Options.Theme.Long); + switch (optionValue) + { + case null: + case "leptonx-lite": + return Theme.LeptonXLite; + case "basic": + return Theme.Basic; + default: + throw new CliUsageException("The option you provided for Theme is invalid!"); + } + } + public static class Options { public static class Template @@ -551,5 +572,10 @@ public abstract class ProjectCreationCommandBase { public const string Short = "pwa"; } + + public static class Theme + { + public const string Long = "theme"; + } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Theme.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Theme.cs new file mode 100644 index 0000000000..bc2ba89589 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Theme.cs @@ -0,0 +1,7 @@ +namespace Volo.Abp.Cli.ProjectBuilding.Building; + +public enum Theme +{ + LeptonXLite = 0, + Basic = 1 +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs index 3c057454f6..18edb71863 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs @@ -42,6 +42,8 @@ public class ProjectBuildArgs public bool Pwa { get; set; } + public Theme? Theme { get; set; } + [NotNull] public Dictionary ExtraProperties { get; set; } @@ -60,7 +62,8 @@ public class ProjectBuildArgs [CanBeNull] string templateSource = null, Dictionary extraProperties = null, [CanBeNull] string connectionString = null, - bool pwa = false) + bool pwa = false, + Theme? theme = null) { SolutionName = Check.NotNull(solutionName, nameof(solutionName)); TemplateName = templateName; @@ -77,5 +80,6 @@ public class ProjectBuildArgs ExtraProperties = extraProperties ?? new Dictionary(); ConnectionString = connectionString; Pwa = pwa; + Theme = theme; } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs index e151646988..421c7fc119 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs @@ -87,6 +87,7 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase UpdateNuGetConfig(context, steps); ChangeConnectionString(context, steps); ConfigureDockerFiles(context, steps); + ConfigureTheme(context); if (context.BuildArgs.UiFramework != UiFramework.Angular) { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index 45a3a228d3..205891d8da 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -33,6 +33,7 @@ public abstract class AppTemplateBase : TemplateInfo RemoveMigrations(context, steps); ConfigureTieredArchitecture(context, steps); ConfigurePublicWebSite(context, steps); + ConfigureTheme(context); RemoveUnnecessaryPorts(context, steps); RandomizeSslPorts(context, steps); RandomizeStringEncryption(context, steps); @@ -176,6 +177,22 @@ public abstract class AppTemplateBase : TemplateInfo } } + protected void ConfigureTheme(ProjectBuildContext context) + { + if (context.BuildArgs.Theme.HasValue) + { + if (context.BuildArgs.Theme == Theme.LeptonXLite) + { + context.Symbols.Add("LEPTONX-LITE"); + } + + if (context.BuildArgs.Theme == Theme.Basic) + { + context.Symbols.Add("BASIC"); + } + } + } + protected void ConfigurePublicWebSite(ProjectBuildContext context, List steps) { if (!context.BuildArgs.PublicWebSite) diff --git a/framework/src/Volo.Abp.Cli/Volo/Abp/Cli/Program.cs b/framework/src/Volo.Abp.Cli/Volo/Abp/Cli/Program.cs index 44c809e697..9ca7697cbe 100644 --- a/framework/src/Volo.Abp.Cli/Volo/Abp/Cli/Program.cs +++ b/framework/src/Volo.Abp.Cli/Volo/Abp/Cli/Program.cs @@ -20,11 +20,11 @@ public class Program .MinimumLevel.Override("System.Net.Http.HttpClient", LogEventLevel.Warning) .MinimumLevel.Override("Volo.Abp.IdentityModel", LogEventLevel.Information) #if DEBUG - .MinimumLevel.Override("Volo.Abp.Cli", LogEventLevel.Debug) + .MinimumLevel.Override("Volo.Abp.Cli", LogEventLevel.Debug) #else - .MinimumLevel.Override("Volo.Abp.Cli", LogEventLevel.Information) + .MinimumLevel.Override("Volo.Abp.Cli", LogEventLevel.Information) #endif - .Enrich.FromLogContext() + .Enrich.FromLogContext() .WriteTo.File(Path.Combine(CliPaths.Log, "abp-cli-logs.txt")) .WriteTo.Console() .CreateLogger(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj index 16a451cda4..b6be600958 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -18,6 +18,9 @@ + + + @@ -26,7 +29,9 @@ + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs index d489dc1ae3..6e53111fea 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs @@ -19,8 +19,14 @@ using Volo.Abp.AspNetCore.Mvc.Localization; using Volo.Abp.AspNetCore.Mvc.UI; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +// using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling; +// +// +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling; +// using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars; using Volo.Abp.AspNetCore.Serilog; @@ -50,7 +56,12 @@ namespace MyCompanyName.MyProjectName.Web; typeof(AbpAspNetCoreAuthenticationOpenIdConnectModule), typeof(AbpAspNetCoreMvcClientModule), typeof(AbpHttpClientWebModule), + // typeof(AbpAspNetCoreMvcUiBasicThemeModule), + // + // + typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), + // typeof(AbpAutofacModule), typeof(AbpCachingStackExchangeRedisModule), typeof(AbpSettingManagementWebModule), @@ -94,6 +105,19 @@ public class MyProjectNameWebModule : AbpModule private void ConfigureBundles() { + // + Configure(options => + { + options.StyleBundles.Configure( + LeptonXLiteThemeBundles.Styles.Global, + bundle => + { + bundle.AddFiles("/global-styles.css"); + } + ); + }); + // + // Configure(options => { options.StyleBundles.Configure( @@ -104,6 +128,7 @@ public class MyProjectNameWebModule : AbpModule } ); }); + // } private void ConfigureCache() diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json index c2c482a664..8c0466d7d6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,8 @@ "name": "my-app", "private": true, "dependencies": { + // "@abp/aspnetcore.mvc.ui.theme.basic": "^5.3.0-rc.3" + // } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj index 8bedd81ba4..e0579503cd 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj @@ -33,13 +33,18 @@ + + + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs index 22e6446be7..f3f1208aca 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs @@ -18,8 +18,14 @@ using Volo.Abp.AspNetCore.Mvc.UI; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; using Volo.Abp.AspNetCore.Mvc.UI.Bundling; using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy; +// using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling; +// +// +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling; +// using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.Autofac; @@ -47,7 +53,12 @@ namespace MyCompanyName.MyProjectName.Web; typeof(AbpIdentityWebModule), typeof(AbpSettingManagementWebModule), typeof(AbpAccountWebModule), + // typeof(AbpAspNetCoreMvcUiBasicThemeModule), + // + // + typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), + // typeof(AbpTenantManagementWebModule), typeof(AbpAspNetCoreSerilogModule), typeof(AbpSwashbuckleModule) @@ -96,6 +107,17 @@ public class MyProjectNameWebModule : AbpModule { Configure(options => { + // + options.StyleBundles.Configure( + LeptonXLiteThemeBundles.Styles.Global, + bundle => + { + bundle.AddFiles("/global-styles.css"); + } + ); + // + + // options.StyleBundles.Configure( BasicThemeBundles.Styles.Global, bundle => @@ -103,6 +125,7 @@ public class MyProjectNameWebModule : AbpModule bundle.AddFiles("/global-styles.css"); } ); + // }); } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json index c2c482a664..8c0466d7d6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json @@ -3,6 +3,8 @@ "name": "my-app", "private": true, "dependencies": { + // "@abp/aspnetcore.mvc.ui.theme.basic": "^5.3.0-rc.3" + // } }