Browse Source

Add TemplateDefinitionIsInlineLocalized.

pull/3792/head
Halil İbrahim Kalkan 6 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]
public Type LocalizationResource { get; set; }
public bool IsInlineLocalized { get; internal set; }
[CanBeNull]
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
{
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)
{
return TextTemplates.Values.ToImmutableList();
return Templates.Values.ToImmutableList();
}
public virtual TemplateDefinition GetOrNull(string name)
{
return TextTemplates.GetOrDefault(name);
return Templates.GetOrDefault(name);
}
public virtual IReadOnlyList<TemplateDefinition> GetAll()
{
return TextTemplates.Values.ToImmutableList();
return Templates.Values.ToImmutableList();
}
public virtual void Add(params TemplateDefinition[] definitions)
@ -36,7 +36,7 @@ namespace Volo.Abp.TextTemplating
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;
namespace Volo.Abp.TextTemplating
{
public static class TemplateDefinitionExtensions
{
/// <summary>
///
/// </summary>
/// <param name="templateDefinition"></param>
/// <param name="virtualPath"></param>
/// <returns></returns>
public static TemplateDefinition WithVirtualFilePath(
[NotNull] this TemplateDefinition templateDefinition,
[NotNull] string virtualPath)
@ -22,5 +17,15 @@ namespace Volo.Abp.TextTemplating
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.Options;
using Volo.Abp.DependencyInjection;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.TextTemplating
{
@ -78,9 +79,38 @@ namespace Volo.Abp.TextTemplating
{
provider.PostDefine(context);
}
SetIsInlineLocalized(
templates,
scope.ServiceProvider
);
}
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.Collections.Concurrent;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
@ -55,10 +54,7 @@ namespace Volo.Abp.TextTemplating.VirtualFiles
protected virtual async Task<ILocalizedTemplateContentReader> CreateInternalAsync(
TemplateDefinition templateDefinition)
{
var virtualPath = templateDefinition
.Properties
.GetOrDefault(VirtualFileTemplateContentContributor.VirtualPathPropertyName) as string;
var virtualPath = templateDefinition.GetVirtualFilePathOrNull();
if (virtualPath == null)
{
return NullLocalizedTemplateContentReader.Instance;

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

@ -15,8 +15,13 @@ namespace Volo.Abp.TextTemplating
[Fact]
public void Should_Retrieve_Template_Definition_By_Name()
{
var definition = _templateDefinitionManager.Get(TestTemplates.WelcomeEmail);
definition.Name.ShouldBe(TestTemplates.WelcomeEmail);
var welcomeEmailTemplate = _templateDefinitionManager.Get(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]

Loading…
Cancel
Save