Browse Source

Add TemplateDefinitionIsInlineLocalized.

pull/3792/head
Halil İbrahim Kalkan 7 years ago
parent
commit
720b5d7e2f
  1. 2
      framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinition.cs
  2. 14
      framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionContext.cs
  3. 19
      framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionExtensions.cs
  4. 30
      framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs
  5. 6
      framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/VirtualFiles/LocalizedTemplateContentReaderFactory.cs
  6. 9
      framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/TemplateDefinitionTests.cs

2
framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinition.cs

@ -17,6 +17,8 @@ namespace Volo.Abp.TextTemplating
[CanBeNull] [CanBeNull]
public Type LocalizationResource { get; set; } public Type LocalizationResource { get; set; }
public bool IsInlineLocalized { get; internal set; }
[CanBeNull] [CanBeNull]
public string DefaultCultureName { get; } public string DefaultCultureName { get; }

14
framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionContext.cs

@ -5,26 +5,26 @@ namespace Volo.Abp.TextTemplating
{ {
public class TemplateDefinitionContext : ITemplateDefinitionContext public class TemplateDefinitionContext : ITemplateDefinitionContext
{ {
protected Dictionary<string, TemplateDefinition> TextTemplates { get; } protected Dictionary<string, TemplateDefinition> Templates { get; }
public TemplateDefinitionContext(Dictionary<string, TemplateDefinition> textTemplates) public TemplateDefinitionContext(Dictionary<string, TemplateDefinition> templates)
{ {
TextTemplates = textTemplates; Templates = templates;
} }
public IReadOnlyList<TemplateDefinition> GetAll(string name) public IReadOnlyList<TemplateDefinition> GetAll(string name)
{ {
return TextTemplates.Values.ToImmutableList(); return Templates.Values.ToImmutableList();
} }
public virtual TemplateDefinition GetOrNull(string name) public virtual TemplateDefinition GetOrNull(string name)
{ {
return TextTemplates.GetOrDefault(name); return Templates.GetOrDefault(name);
} }
public virtual IReadOnlyList<TemplateDefinition> GetAll() public virtual IReadOnlyList<TemplateDefinition> GetAll()
{ {
return TextTemplates.Values.ToImmutableList(); return Templates.Values.ToImmutableList();
} }
public virtual void Add(params TemplateDefinition[] definitions) public virtual void Add(params TemplateDefinition[] definitions)
@ -36,7 +36,7 @@ namespace Volo.Abp.TextTemplating
foreach (var definition in definitions) foreach (var definition in definitions)
{ {
TextTemplates[definition.Name] = definition; Templates[definition.Name] = definition;
} }
} }
} }

19
framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionExtensions.cs

@ -1,16 +1,11 @@
using JetBrains.Annotations; using System.Collections.Generic;
using JetBrains.Annotations;
using Volo.Abp.TextTemplating.VirtualFiles; using Volo.Abp.TextTemplating.VirtualFiles;
namespace Volo.Abp.TextTemplating namespace Volo.Abp.TextTemplating
{ {
public static class TemplateDefinitionExtensions public static class TemplateDefinitionExtensions
{ {
/// <summary>
///
/// </summary>
/// <param name="templateDefinition"></param>
/// <param name="virtualPath"></param>
/// <returns></returns>
public static TemplateDefinition WithVirtualFilePath( public static TemplateDefinition WithVirtualFilePath(
[NotNull] this TemplateDefinition templateDefinition, [NotNull] this TemplateDefinition templateDefinition,
[NotNull] string virtualPath) [NotNull] string virtualPath)
@ -22,5 +17,15 @@ namespace Volo.Abp.TextTemplating
virtualPath virtualPath
); );
} }
public static string GetVirtualFilePathOrNull(
[NotNull] this TemplateDefinition templateDefinition)
{
Check.NotNull(templateDefinition, nameof(templateDefinition));
return templateDefinition
.Properties
.GetOrDefault(VirtualFileTemplateContentContributor.VirtualPathPropertyName) as string;
}
} }
} }

30
framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs

@ -5,6 +5,7 @@ using System.Linq;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.TextTemplating namespace Volo.Abp.TextTemplating
{ {
@ -78,9 +79,38 @@ namespace Volo.Abp.TextTemplating
{ {
provider.PostDefine(context); provider.PostDefine(context);
} }
SetIsInlineLocalized(
templates,
scope.ServiceProvider
);
} }
return templates; return templates;
} }
protected virtual void SetIsInlineLocalized(
Dictionary<string, TemplateDefinition> templates,
IServiceProvider serviceProvider)
{
var virtualFileProvider = serviceProvider.GetRequiredService<IVirtualFileProvider>();
foreach (var templateDefinition in templates.Values)
{
var virtualPath = templateDefinition.GetVirtualFilePathOrNull();
if (virtualPath == null)
{
continue;
}
var fileInfo = virtualFileProvider.GetFileInfo(virtualPath);
if (!fileInfo.Exists)
{
throw new AbpException("Could not find a file/folder at the location: " + virtualPath);
}
templateDefinition.IsInlineLocalized = !fileInfo.IsDirectory;
}
}
} }
} }

6
framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/VirtualFiles/LocalizedTemplateContentReaderFactory.cs

@ -1,5 +1,4 @@
using System; using System;
using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -55,10 +54,7 @@ namespace Volo.Abp.TextTemplating.VirtualFiles
protected virtual async Task<ILocalizedTemplateContentReader> CreateInternalAsync( protected virtual async Task<ILocalizedTemplateContentReader> CreateInternalAsync(
TemplateDefinition templateDefinition) TemplateDefinition templateDefinition)
{ {
var virtualPath = templateDefinition var virtualPath = templateDefinition.GetVirtualFilePathOrNull();
.Properties
.GetOrDefault(VirtualFileTemplateContentContributor.VirtualPathPropertyName) as string;
if (virtualPath == null) if (virtualPath == null)
{ {
return NullLocalizedTemplateContentReader.Instance; return NullLocalizedTemplateContentReader.Instance;

9
framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/TemplateDefinitionTests.cs

@ -15,8 +15,13 @@ namespace Volo.Abp.TextTemplating
[Fact] [Fact]
public void Should_Retrieve_Template_Definition_By_Name() public void Should_Retrieve_Template_Definition_By_Name()
{ {
var definition = _templateDefinitionManager.Get(TestTemplates.WelcomeEmail); var welcomeEmailTemplate = _templateDefinitionManager.Get(TestTemplates.WelcomeEmail);
definition.Name.ShouldBe(TestTemplates.WelcomeEmail); welcomeEmailTemplate.Name.ShouldBe(TestTemplates.WelcomeEmail);
welcomeEmailTemplate.IsInlineLocalized.ShouldBeFalse();
var forgotPasswordEmailTemplate = _templateDefinitionManager.Get(TestTemplates.ForgotPasswordEmail);
forgotPasswordEmailTemplate.Name.ShouldBe(TestTemplates.ForgotPasswordEmail);
forgotPasswordEmailTemplate.IsInlineLocalized.ShouldBeTrue();
} }
[Fact] [Fact]

Loading…
Cancel
Save