Remove ugly CharCollection hack
By adding a new configuration and mapping the old CharCollection to that, we can get around having to return null the first time, by obsoleting the old one and redirecting to the new GetCharReplacements method
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Umbraco.Cms.Core.Configuration.Models;
|
||||
using Umbraco.Cms.Core.Configuration.UmbracoSettings;
|
||||
|
||||
namespace Umbraco.Extensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Get concatenated user and default character replacements
|
||||
/// taking into account <see cref="RequestHandlerSettings.EnableDefaultCharReplacements"/>
|
||||
/// </summary>
|
||||
public static class RequestHandlerSettingsExtension
|
||||
{
|
||||
public static IEnumerable<CharItem> GetCharReplacements(this RequestHandlerSettings requestHandlerSettings)
|
||||
{
|
||||
if (!requestHandlerSettings.EnableDefaultCharReplacements)
|
||||
{
|
||||
return requestHandlerSettings.UserDefinedCharCollection ?? Enumerable.Empty<CharItem>();
|
||||
}
|
||||
|
||||
if (requestHandlerSettings.UserDefinedCharCollection == null || !requestHandlerSettings.UserDefinedCharCollection.Any())
|
||||
{
|
||||
return RequestHandlerSettings.DefaultCharCollection;
|
||||
}
|
||||
|
||||
foreach (CharItem defaultReplacement in RequestHandlerSettings.DefaultCharCollection)
|
||||
{
|
||||
foreach (CharItem userReplacement in requestHandlerSettings.UserDefinedCharCollection)
|
||||
{
|
||||
if (userReplacement.Char == defaultReplacement.Char)
|
||||
{
|
||||
defaultReplacement.Replacement = userReplacement.Replacement;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerable<CharItem> mergedCollections =
|
||||
RequestHandlerSettings.DefaultCharCollection.Union<CharItem>(
|
||||
requestHandlerSettings.UserDefinedCharCollection, new CharacterReplacementEqualityComparer());
|
||||
|
||||
return mergedCollections;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user