Browse Source

add optional additional properties collection to the bundle definition.

pull/6034/head
Ilkay Ilknur 6 years ago
parent
commit
166c4cadba
  1. 14
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/BundleContributer.cs
  2. 18
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/BundleContributer.cs
  3. 15
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/BundleContributer.cs
  4. 30
      framework/src/Volo.Abp.BlazoriseUI/BundleContributer.cs
  5. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundleTypeDefinition.cs
  6. 47
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingService.cs
  7. 16
      framework/src/Volo.Abp.Core/Volo/Abp/Bundling/BundleDefinition.cs
  8. 8
      framework/src/Volo.Abp.Core/Volo/Abp/Bundling/IBundleContributer.cs
  9. 18
      framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo/Abp/Http/Client/IdentityModel/WebAssembly/BundleContributer.cs

14
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/BundleContributer.cs

@ -5,14 +5,22 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme
{
public class BundleContributer : IBundleContributer
{
public void AddScripts(List<string> scripts)
public void AddScripts(List<BundleDefinition> scriptDefinitions)
{
}
public void AddStyles(List<string> styles)
public void AddStyles(List<BundleDefinition> styleDefinitions)
{
styles.AddIfNotContains("_content/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/libs/abp/css/theme.css");
var styles = new string[]
{
"_content/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/libs/abp/css/theme.css",
};
foreach (var style in styles)
{
styleDefinitions.AddIfNotContains((item) => item.Source == style, () => new BundleDefinition(style));
}
}
}
}

18
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/BundleContributer.cs

@ -5,16 +5,24 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.Theming
{
public class BundleContributer : IBundleContributer
{
public void AddScripts(List<string> scripts)
public void AddScripts(List<BundleDefinition> scriptDefinitions)
{
}
public void AddStyles(List<string> styles)
public void AddStyles(List<BundleDefinition> styleDefinitions)
{
styles.AddIfNotContains("_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/bootstrap/css/bootstrap.css");
styles.AddIfNotContains("_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/css/all.css");
styles.AddIfNotContains("_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/css/flag-icon.css");
var styles = new string[]
{
"_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/bootstrap/css/bootstrap.min.css",
"_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/css/all.css",
"_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/css/flag-icon.css"
};
foreach (var style in styles)
{
styleDefinitions.AddIfNotContains((item) => item.Source == style, () => new BundleDefinition(style));
}
}
}
}

15
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/BundleContributer.cs

@ -5,14 +5,21 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly
{
public class BundleContributer : IBundleContributer
{
public void AddScripts(List<string> scripts)
public void AddScripts(List<BundleDefinition> scriptDefinitions)
{
scripts.AddIfNotContains("_content/Volo.Abp.AspNetCore.Components.WebAssembly/libs/abp/js/abp.js");
var scripts = new string[]
{
"_content/Volo.Abp.AspNetCore.Components.WebAssembly/libs/abp/js/abp.js",
};
foreach (var script in scripts)
{
scriptDefinitions.AddIfNotContains((item) => item.Source == script, () => new BundleDefinition(script));
}
}
public void AddStyles(List<string> styles)
public void AddStyles(List<BundleDefinition> styleDefinitions)
{
}
}
}

30
framework/src/Volo.Abp.BlazoriseUI/BundleContributer.cs

@ -5,17 +5,33 @@ namespace Volo.Abp.BlazoriseUI
{
public class BundleContributer : IBundleContributer
{
public void AddScripts(List<string> scripts)
public void AddScripts(List<BundleDefinition> scriptDefinitions)
{
scripts.AddIfNotContains("_content/Blazorise/blazorise.js");
scripts.AddIfNotContains("_content/Blazorise.Bootstrap/blazorise.bootstrap.js");
var scripts = new string[]
{
"_content/Blazorise/blazorise.js",
"_content/Blazorise.Bootstrap/blazorise.bootstrap.js"
};
foreach (var script in scripts)
{
scriptDefinitions.AddIfNotContains((item) => item.Source == script, () => new BundleDefinition(script));
}
}
public void AddStyles(List<string> styles)
public void AddStyles(List<BundleDefinition> styleDefinitions)
{
styles.AddIfNotContains("_content/Blazorise/blazorise.css");
styles.AddIfNotContains("_content/Blazorise.Bootstrap/blazorise.bootstrap.css");
styles.AddIfNotContains("_content/Blazorise.Snackbar/blazorise.snackbar.css");
var styles = new string[]
{
"_content/Blazorise/blazorise.css",
"_content/Blazorise.Bootstrap/blazorise.bootstrap.css",
"_content/Blazorise.Snackbar/blazorise.snackbar.css"
};
foreach (var style in styles)
{
styleDefinitions.AddIfNotContains((item) => item.Source == style, () => new BundleDefinition(style));
}
}
}
}

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundleDefinition.cs → framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundleTypeDefinition.cs

@ -2,7 +2,7 @@
namespace Volo.Abp.Cli.Bundling
{
internal class BundleDefinition
internal class BundleTypeDefinition
{
public int Level { get; set; }
public Type BundleContributerType { get; set; }

47
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingService.cs

@ -1,4 +1,5 @@
using Microsoft.Extensions.Logging;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.IO;
@ -50,7 +51,7 @@ namespace Volo.Abp.Cli.Bundling
var assemblyFilePath = GetAssemblyFilePath(directory, frameworkVersion, Path.GetFileNameWithoutExtension(projectFilePath));
var startupModule = GetStartupModule(assemblyFilePath);
var bundleDefinitions = new List<BundleDefinition>();
var bundleDefinitions = new List<BundleTypeDefinition>();
FindBundleContributersRecursively(startupModule, 0, bundleDefinitions);
bundleDefinitions = bundleDefinitions.OrderByDescending(t => t.Level).ToList();
@ -92,9 +93,9 @@ namespace Volo.Abp.Cli.Bundling
return updatedContent.Insert(placeholderStartIndex, definitions);
}
private string GenerateStyleDefinitions(List<BundleDefinition> bundleDefinitions)
private string GenerateStyleDefinitions(List<BundleTypeDefinition> bundleDefinitions)
{
var styles = new List<string>();
var styles = new List<BundleDefinition>();
foreach (var bundleDefinition in bundleDefinitions)
{
var contributer = CreateContributerInstance(bundleDefinition.BundleContributerType);
@ -105,18 +106,30 @@ namespace Volo.Abp.Cli.Bundling
builder.AppendLine($"{StylePlaceholderStart}");
foreach (var style in styles)
{
builder.AppendLine($"\t<link href=\"{style}\" rel=\"stylesheet\" />");
if (style.AdditionalProperties != null && style.AdditionalProperties.Any())
{
builder.Append($"\t<link href=\"{style.Source}\" rel=\"stylesheet\" ");
foreach (var additionalProperty in style.AdditionalProperties)
{
builder.Append($"{additionalProperty.Key}={additionalProperty.Value} ");
}
builder.AppendLine("/>");
}
else
{
builder.AppendLine($"\t<link href=\"{style.Source}\" rel=\"stylesheet\" />");
}
}
builder.AppendLine($"\t{StylePlaceholderEnd}");
return builder.ToString();
}
private string GenerateScriptDefinitions(List<BundleDefinition> bundleDefinitions)
private string GenerateScriptDefinitions(List<BundleTypeDefinition> bundleDefinitions)
{
var scripts = new List<string>
var scripts = new List<BundleDefinition>
{
"_framework/blazor.webassembly.js"
new BundleDefinition("_framework/blazor.webassembly.js")
};
foreach (var bundleDefinition in bundleDefinitions)
{
@ -128,7 +141,19 @@ namespace Volo.Abp.Cli.Bundling
builder.AppendLine($"{ScriptPlaceholderStart}");
foreach (var script in scripts)
{
builder.AppendLine($"\t<script src=\"{script}\"></script>");
if (script.AdditionalProperties != null && script.AdditionalProperties.Any())
{
builder.Append($"\t<script src=\"{script.Source}\" ");
foreach (var additionalProperty in script.AdditionalProperties)
{
builder.Append($"{additionalProperty.Key}={additionalProperty.Value} ");
}
builder.AppendLine("></script>");
}
else
{
builder.AppendLine($"\t<script src=\"{script.Source}\"></script>");
}
}
builder.AppendLine($"\t{ScriptPlaceholderEnd}");
@ -141,7 +166,7 @@ namespace Volo.Abp.Cli.Bundling
return instance.As<IBundleContributer>();
}
private void FindBundleContributersRecursively(Type module, int level, List<BundleDefinition> bundleDefinitions)
private void FindBundleContributersRecursively(Type module, int level, List<BundleTypeDefinition> bundleDefinitions)
{
var dependencyDescriptors = module
.GetCustomAttributes()
@ -160,7 +185,7 @@ namespace Volo.Abp.Cli.Bundling
}
else
{
bundleDefinitions.Add(new BundleDefinition
bundleDefinitions.Add(new BundleTypeDefinition
{
Level = level,
BundleContributerType = bundleContributer

16
framework/src/Volo.Abp.Core/Volo/Abp/Bundling/BundleDefinition.cs

@ -0,0 +1,16 @@
using System.Collections.Generic;
namespace Volo.Abp.Bundling
{
public class BundleDefinition
{
public string Source { get; set; }
public Dictionary<string, string> AdditionalProperties { get; set; }
public BundleDefinition(string source)
{
Source = source;
AdditionalProperties = new Dictionary<string, string>();
}
}
}

8
framework/src/Volo.Abp.Core/Volo/Abp/Bundling/IBundleContributer.cs

@ -1,12 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Generic;
namespace Volo.Abp.Bundling
{
public interface IBundleContributer
{
void AddScripts(List<string> scripts);
void AddStyles(List<string> styles);
void AddScripts(List<BundleDefinition> scriptDefinitions);
void AddStyles(List<BundleDefinition> styleDefinitions);
}
}

18
framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo/Abp/Http/Client/IdentityModel/WebAssembly/BundleContributer.cs

@ -1,18 +1,26 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using Volo.Abp.Bundling;
namespace Volo.Abp.Http.Client.IdentityModel.WebAssembly
{
public class BundleContributer : IBundleContributer
{
public void AddScripts(List<string> scripts)
public void AddScripts(List<BundleDefinition> scriptDefinitions)
{
scripts.AddIfNotContains("_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js");
var scripts = new string[]
{
"_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js",
};
foreach (var script in scripts)
{
scriptDefinitions.AddIfNotContains((item) => item.Source == script, () => new BundleDefinition(script));
}
}
public void AddStyles(List<string> styles)
public void AddStyles(List<BundleDefinition> styleDefinitions)
{
}
}
}

Loading…
Cancel
Save