diff --git a/docs/en/Domain-Driven-Design-Implementation-Guide.md b/docs/en/Domain-Driven-Design-Implementation-Guide.md
new file mode 100644
index 0000000000..f2bc6d03f9
--- /dev/null
+++ b/docs/en/Domain-Driven-Design-Implementation-Guide.md
@@ -0,0 +1,3 @@
+# Implementing Domain Driven Design
+
+TODO
\ No newline at end of file
diff --git a/docs/en/UI/Blazor/Global-Scripts-Styles.md b/docs/en/UI/Blazor/Global-Scripts-Styles.md
index 561eed27f6..a9a69c76d0 100644
--- a/docs/en/UI/Blazor/Global-Scripts-Styles.md
+++ b/docs/en/UI/Blazor/Global-Scripts-Styles.md
@@ -4,9 +4,9 @@ Some modules may require additional styles or scripts that need to be referenced
To update script & style references without worrying about dependencies, ordering, etc in a project, you can use the [bundle command](../../CLI.md#bundle).
-You can also add custom styles and scripts and let ABP manage them for you. In your Blazor project, you can create a class implementing `IBundleContributer` interface.
+You can also add custom styles and scripts and let ABP manage them for you. In your Blazor project, you can create a class implementing `IBundleContributor` interface.
-`IBundleContributer` interface contains two methods.
+`IBundleContributor` interface contains two methods.
* `AddScripts(...)`
* `AddStyles(...)`
@@ -17,7 +17,7 @@ Both methods get `BundleContext` as a parameter. You can add scripts and styles
```csharp
namespace MyProject.Blazor
{
- public class MyProjectBundleContributer : IBundleContributer
+ public class MyProjectBundleContributor : IBundleContributor
{
public void AddScripts(BundleContext context)
{
@@ -33,6 +33,6 @@ namespace MyProject.Blazor
}
```
-> There is a BundleContributer class implementing `IBundleContributer` interface coming by default with the startup templates. So, most of the time, you don't need to add it manually.
+> There is a BundleContributor class implementing `IBundleContributor` interface coming by default with the startup templates. So, most of the time, you don't need to add it manually.
> Bundle command adds style and script references individually. Bundling and minification support will be added to incoming releases.
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/BasicThemeBundleContributer.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/BasicThemeBundleContributor.cs
similarity index 85%
rename from framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/BasicThemeBundleContributer.cs
rename to framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/BasicThemeBundleContributor.cs
index adfdf9d503..edef97eb52 100644
--- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/BasicThemeBundleContributer.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/BasicThemeBundleContributor.cs
@@ -2,7 +2,7 @@
namespace Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme
{
- public class BasicThemeBundleContributer : IBundleContributer
+ public class BasicThemeBundleContributor : IBundleContributor
{
public void AddScripts(BundleContext context)
{
diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/ThemingBundleContributer.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/ThemingBundleContributor.cs
similarity index 92%
rename from framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/ThemingBundleContributer.cs
rename to framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/ThemingBundleContributor.cs
index 8476190b59..70382a7dba 100644
--- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/ThemingBundleContributer.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/ThemingBundleContributor.cs
@@ -2,7 +2,7 @@
namespace Volo.Abp.AspNetCore.Components.WebAssembly.Theming
{
- public class ThemingBundleContributer : IBundleContributer
+ public class ThemingBundleContributor : IBundleContributor
{
public void AddScripts(BundleContext context)
{
diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ComponentsWebAssemblyBundleContributer.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ComponentsWebAssemblyBundleContributor.cs
similarity index 81%
rename from framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ComponentsWebAssemblyBundleContributer.cs
rename to framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ComponentsWebAssemblyBundleContributor.cs
index 5bab349483..9f05ff24d1 100644
--- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ComponentsWebAssemblyBundleContributer.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ComponentsWebAssemblyBundleContributor.cs
@@ -2,7 +2,7 @@
namespace Volo.Abp.AspNetCore.Components.WebAssembly
{
- public class ComponentsWebAssemblyBundleContributer : IBundleContributer
+ public class ComponentsWebAssemblyBundleContributor : IBundleContributor
{
public void AddScripts(BundleContext context)
{
diff --git a/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUIBundleContributer.cs b/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUIBundleContributor.cs
similarity index 89%
rename from framework/src/Volo.Abp.BlazoriseUI/BlazoriseUIBundleContributer.cs
rename to framework/src/Volo.Abp.BlazoriseUI/BlazoriseUIBundleContributor.cs
index 2a26fe6dec..5dcc51c76a 100644
--- a/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUIBundleContributer.cs
+++ b/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUIBundleContributor.cs
@@ -2,7 +2,7 @@
namespace Volo.Abp.BlazoriseUI
{
- public class BlazoriseUIBundleContributer : IBundleContributer
+ public class BlazoriseUIBundleContributor : IBundleContributor
{
public void AddScripts(BundleContext context)
{
diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/UiNotificationAlert.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/UiNotificationAlert.razor
index 349eee2c40..8edd037e15 100644
--- a/framework/src/Volo.Abp.BlazoriseUI/Components/UiNotificationAlert.razor
+++ b/framework/src/Volo.Abp.BlazoriseUI/Components/UiNotificationAlert.razor
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundleTypeDefinition.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundleTypeDefinition.cs
index 5fc9ecadeb..57500a1db5 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundleTypeDefinition.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundleTypeDefinition.cs
@@ -5,6 +5,7 @@ namespace Volo.Abp.Cli.Bundling
internal class BundleTypeDefinition
{
public int Level { get; set; }
+
public Type BundleContributerType { get; set; }
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingException.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingException.cs
index 31f40a2cd7..7bcdf55a73 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingException.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingException.cs
@@ -1,10 +1,9 @@
-using System;
-
-namespace Volo.Abp.Cli.Bundling
+namespace Volo.Abp.Cli.Bundling
{
- public class BundlingException : Exception
+ public class BundlingException : AbpException
{
- public BundlingException(string message) : base(message)
+ public BundlingException(string message)
+ : base(message)
{
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingService.cs
index 001e33c5df..698b0978c2 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingService.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingService.cs
@@ -1,5 +1,4 @@
-using Microsoft.CodeAnalysis.CSharp;
-using System;
+using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -29,7 +28,7 @@ namespace Volo.Abp.Cli.Bundling
var projectFiles = Directory.GetFiles(directory, "*.csproj");
if (!projectFiles.Any())
{
- throw new BundlingException("No project file found in the directory");
+ throw new BundlingException("No project file found in the directory. The working directory must have a Blazor project file.");
}
var projectFilePath = projectFiles[0];
@@ -40,7 +39,7 @@ namespace Volo.Abp.Cli.Bundling
{
new DotNetProjectInfo(string.Empty, projectFilePath, true)
};
-
+
DotNetProjectBuilder.BuildProjects(projects, string.Empty);
}
@@ -63,11 +62,13 @@ namespace Volo.Abp.Cli.Bundling
private BundleContext GetScriptContext(List bundleDefinitions)
{
var scriptContext = new BundleContext();
+
foreach (var bundleDefinition in bundleDefinitions)
{
var contributer = CreateContributerInstance(bundleDefinition.BundleContributerType);
contributer.AddScripts(scriptContext);
}
+
scriptContext.Add("_framework/blazor.webassembly.js");
return scriptContext;
}
@@ -75,11 +76,13 @@ namespace Volo.Abp.Cli.Bundling
private BundleContext GetStyleContext(List bundleDefinitions)
{
var styleContext = new BundleContext();
+
foreach (var bundleDefinition in bundleDefinitions)
{
var contributer = CreateContributerInstance(bundleDefinition.BundleContributerType);
contributer.AddStyles(styleContext);
- };
+ }
+
return styleContext;
}
@@ -102,9 +105,11 @@ namespace Volo.Abp.Cli.Bundling
content = UpdatePlaceholders(content, StylePlaceholderStart, StylePlaceholderEnd, styleDefinitions);
content = UpdatePlaceholders(content, ScriptPlaceholderStart, ScriptPlaceholderEnd, scriptDefinitions);
- using var writer = new StreamWriter(htmlFilePath, false, fileEncoding);
- await writer.WriteAsync(content);
- await writer.FlushAsync();
+ using (var writer = new StreamWriter(htmlFilePath, false, fileEncoding))
+ {
+ await writer.WriteAsync(content);
+ await writer.FlushAsync();
+ }
}
private string UpdatePlaceholders(string content, string placeholderStart, string placeholderEnd, string definitions)
@@ -118,24 +123,22 @@ namespace Volo.Abp.Cli.Bundling
private string GenerateStyleDefinitions(BundleContext context)
{
var builder = new StringBuilder();
+
builder.AppendLine($"{StylePlaceholderStart}");
+
foreach (var style in context.BundleDefinitions)
{
- if (style.AdditionalProperties != null && style.AdditionalProperties.Any())
- {
- builder.Append($"\t");
- }
- else
+ builder.Append($" ");
+ builder.Append($"{additionalProperty.Key}={additionalProperty.Value} ");
}
+
+ builder.AppendLine("/>");
}
- builder.Append($"\t{StylePlaceholderEnd}");
+
+ builder.Append($" {StylePlaceholderEnd}");
return builder.ToString();
}
@@ -146,50 +149,41 @@ namespace Volo.Abp.Cli.Bundling
builder.AppendLine($"{ScriptPlaceholderStart}");
foreach (var script in context.BundleDefinitions)
{
- if (script.AdditionalProperties != null && script.AdditionalProperties.Any())
- {
- builder.Append($"\t");
- }
- else
+ builder.Append($" ");
+ builder.Append($"{additionalProperty.Key}={additionalProperty.Value} ");
}
+ builder.AppendLine(">");
}
- builder.Append($"\t{ScriptPlaceholderEnd}");
+ builder.Append($" {ScriptPlaceholderEnd}");
return builder.ToString();
}
- private IBundleContributer CreateContributerInstance(Type bundleContributerType)
+ private IBundleContributor CreateContributerInstance(Type bundleContributerType)
{
- var instance = Activator.CreateInstance(bundleContributerType);
- return instance.As();
+ return (IBundleContributor)Activator.CreateInstance(bundleContributerType);
}
- private void ExecuteBundleContributers(List bundleDefinitions, BundleContext styleContext, BundleContext scriptContext)
+ private void FindBundleContributersRecursively(
+ Type module,
+ int level,
+ List bundleDefinitions)
{
- foreach (var bundleDefinition in bundleDefinitions)
+ var bundleContributers = module.Assembly
+ .GetTypes()
+ .Where(t => t.IsAssignableTo())
+ .ToList();
+
+ if (bundleContributers.Count > 1)
{
- var contributer = CreateContributerInstance(bundleDefinition.BundleContributerType);
- contributer.AddStyles(styleContext);
- contributer.AddScripts(scriptContext);
+ throw new BundlingException($"Each project must contain only one class implementing {nameof(IBundleContributor)}");
}
- }
-
- private void FindBundleContributersRecursively(Type module, int level, List bundleDefinitions)
- {
- var dependencyDescriptors = module
- .GetCustomAttributes()
- .OfType();
- var bundleContributer = module.Assembly.GetTypes().SingleOrDefault(t => t.IsAssignableTo());
- if (bundleContributer != null)
+ if (bundleContributers.Any())
{
+ var bundleContributer = bundleContributers[0];
var definition = bundleDefinitions.SingleOrDefault(t => t.BundleContributerType == bundleContributer);
if (definition != null)
{
@@ -208,6 +202,10 @@ namespace Volo.Abp.Cli.Bundling
}
}
+ var dependencyDescriptors = module
+ .GetCustomAttributes()
+ .OfType();
+
foreach (var descriptor in dependencyDescriptors)
{
foreach (var dependedModuleType in descriptor.GetDependedTypes())
@@ -219,19 +217,10 @@ namespace Volo.Abp.Cli.Bundling
private Type GetStartupModule(string assemblyPath)
{
- var assembly = Assembly.LoadFrom(assemblyPath);
- return assembly.GetTypes().SingleOrDefault(IsAbpModule);
-
- static bool IsAbpModule(Type type)
- {
- var typeInfo = type.GetTypeInfo();
-
- return
- typeInfo.IsClass &&
- !typeInfo.IsAbstract &&
- !typeInfo.IsGenericType &&
- typeof(IAbpModule).GetTypeInfo().IsAssignableFrom(type);
- }
+ return Assembly
+ .LoadFrom(assemblyPath)
+ .GetTypes()
+ .SingleOrDefault(AbpModule.IsAbpModule);
}
private string GetFrameworkFolderPath(string projectDirectory, string frameworkVersion)
@@ -244,15 +233,12 @@ namespace Volo.Abp.Cli.Bundling
var document = new XmlDocument();
document.Load(projectFilePath);
var sdk = document.DocumentElement.GetAttribute("Sdk");
- if (sdk == SupportedWebAssemblyProjectType)
- {
- var frameworkVersion = document.SelectSingleNode("//TargetFramework").InnerText;
- return frameworkVersion;
- }
- else
+ if (sdk != SupportedWebAssemblyProjectType)
{
throw new BundlingException($"Unsupported project type. Project type must be {SupportedWebAssemblyProjectType}.");
}
+
+ return document.SelectSingleNode("//TargetFramework").InnerText;
}
private string GetAssemblyFilePath(string directory, string frameworkVersion, string projectFileName)
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Bundling/BundleContext.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Bundling/BundleContext.cs
index e30d6d9b3f..69f6e8d9e9 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/Bundling/BundleContext.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/Bundling/BundleContext.cs
@@ -1,5 +1,4 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Volo.Abp.Bundling
{
@@ -17,9 +16,13 @@ namespace Volo.Abp.Bundling
var bundleDefinition = new BundleDefinition
{
Source = source,
- AdditionalProperties = additionalProperties
};
+ if (additionalProperties != null)
+ {
+ bundleDefinition.AdditionalProperties = additionalProperties;
+ }
+
BundleDefinitions.AddIfNotContains((item) => item.Source == bundleDefinition.Source, () => bundleDefinition);
}
}
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Bundling/BundleDefinition.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Bundling/BundleDefinition.cs
index 2a410bce76..7a3bf315be 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/Bundling/BundleDefinition.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/Bundling/BundleDefinition.cs
@@ -5,6 +5,12 @@ namespace Volo.Abp.Bundling
public class BundleDefinition
{
public string Source { get; set; }
+
public Dictionary AdditionalProperties { get; set; }
+
+ public BundleDefinition()
+ {
+ AdditionalProperties = new Dictionary();
+ }
}
}
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Bundling/IBundleContributer.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Bundling/IBundleContributor.cs
similarity index 78%
rename from framework/src/Volo.Abp.Core/Volo/Abp/Bundling/IBundleContributer.cs
rename to framework/src/Volo.Abp.Core/Volo/Abp/Bundling/IBundleContributor.cs
index bca0f62eb6..5388070cbd 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/Bundling/IBundleContributer.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/Bundling/IBundleContributor.cs
@@ -1,6 +1,6 @@
namespace Volo.Abp.Bundling
{
- public interface IBundleContributer
+ public interface IBundleContributor
{
void AddScripts(BundleContext context);
void AddStyles(BundleContext context);
diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo/Abp/Http/Client/IdentityModel/WebAssembly/IdentityModelWebAssemblyBundleContributer.cs b/framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo/Abp/Http/Client/IdentityModel/WebAssembly/IdentityModelWebAssemblyBundleContributor.cs
similarity index 82%
rename from framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo/Abp/Http/Client/IdentityModel/WebAssembly/IdentityModelWebAssemblyBundleContributer.cs
rename to framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo/Abp/Http/Client/IdentityModel/WebAssembly/IdentityModelWebAssemblyBundleContributor.cs
index cc4cfc3308..7ee8c8108f 100644
--- a/framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo/Abp/Http/Client/IdentityModel/WebAssembly/IdentityModelWebAssemblyBundleContributer.cs
+++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo/Abp/Http/Client/IdentityModel/WebAssembly/IdentityModelWebAssemblyBundleContributor.cs
@@ -2,7 +2,7 @@
namespace Volo.Abp.Http.Client.IdentityModel.WebAssembly
{
- public class IdentityModelWebAssemblyBundleContributer : IBundleContributer
+ public class IdentityModelWebAssemblyBundleContributor : IBundleContributor
{
public void AddScripts(BundleContext context)
{
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBundleContributer.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBundleContributor.cs
similarity index 79%
rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBundleContributer.cs
rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBundleContributor.cs
index f2f904314b..a30dbc8f78 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBundleContributer.cs
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBundleContributor.cs
@@ -2,7 +2,7 @@
namespace MyCompanyName.MyProjectName.Blazor
{
- public class MyProjectNameBundleContributer : IBundleContributer
+ public class MyProjectNameBundleContributor : IBundleContributor
{
public void AddScripts(BundleContext context)
{
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html
index de63af374c..c11a257814 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html
@@ -8,14 +8,14 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+