Implement DefaultShortStringHelper.PostFilter to cut url segments at 240 chars
This commit is contained in:
@@ -115,6 +115,11 @@ namespace Umbraco.Core.Strings
|
||||
return InvalidFileNameChars.Contains(c) == false;
|
||||
}
|
||||
|
||||
public static string CutMaxLength(string text, int length)
|
||||
{
|
||||
return text.Length <= length ? text : text.Substring(0, length);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Configuration
|
||||
@@ -168,6 +173,7 @@ namespace Umbraco.Core.Strings
|
||||
return WithConfig(CleanStringType.UrlSegment, new Config
|
||||
{
|
||||
PreFilter = ApplyUrlReplaceCharacters,
|
||||
PostFilter = x => CutMaxLength(x, 240),
|
||||
IsTerm = (c, leading) => char.IsLetterOrDigit(c) || c == '_', // letter, digit or underscore
|
||||
StringType = (UrlReplacingToAscii ? CleanStringType.Ascii : CleanStringType.Utf8) | CleanStringType.LowerCase,
|
||||
BreakTermsOnUpper = false,
|
||||
@@ -202,6 +208,7 @@ namespace Umbraco.Core.Strings
|
||||
{
|
||||
StringType = CleanStringType.Utf8 | CleanStringType.Unchanged;
|
||||
PreFilter = null;
|
||||
PostFilter = null;
|
||||
IsTerm = (c, leading) => leading ? char.IsLetter(c) : char.IsLetterOrDigit(c);
|
||||
BreakTermsOnUpper = false;
|
||||
CutAcronymOnNonUpper = false;
|
||||
@@ -214,6 +221,7 @@ namespace Umbraco.Core.Strings
|
||||
return new Config
|
||||
{
|
||||
PreFilter = PreFilter,
|
||||
PostFilter = PostFilter,
|
||||
IsTerm = IsTerm,
|
||||
StringType = StringType,
|
||||
BreakTermsOnUpper = BreakTermsOnUpper,
|
||||
@@ -224,6 +232,7 @@ namespace Umbraco.Core.Strings
|
||||
}
|
||||
|
||||
public Func<string, string> PreFilter { get; set; }
|
||||
public Func<string, string> PostFilter { get; set; }
|
||||
public Func<char, bool, bool> IsTerm { get; set; }
|
||||
|
||||
public CleanStringType StringType { get; set; }
|
||||
@@ -554,6 +563,10 @@ function validateSafeAlias(id, value, immediate, callback) {{
|
||||
// clean
|
||||
text = CleanCodeString(text, stringType, separator.Value, culture, config);
|
||||
|
||||
// apply post-filter
|
||||
if (config.PostFilter != null)
|
||||
text = config.PostFilter(text);
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user