Refactor template aliases to strict aliases
This commit is contained in:
@@ -5,6 +5,7 @@ using System.Runtime.Serialization;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
using Umbraco.Core.Strings;
|
||||
|
||||
namespace Umbraco.Core.Models
|
||||
{
|
||||
@@ -42,8 +43,8 @@ namespace Umbraco.Core.Models
|
||||
{
|
||||
base.Path = path;
|
||||
ParentId = -1;
|
||||
_name = name.Replace("/", ".").Replace("\\", "");
|
||||
_alias = alias.ToSafeAlias();
|
||||
_name = name; //.Replace("/", ".").Replace("\\", ""); // why? that's just the name!
|
||||
_alias = alias.ToCleanString(CleanStringType.UnderscoreAlias);
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
|
||||
@@ -92,7 +92,7 @@ namespace Umbraco.Core.Strings
|
||||
/// <summary>
|
||||
/// Flag mask for role.
|
||||
/// </summary>
|
||||
RoleMask = UrlSegment | Alias | FileName | ConvertCase,
|
||||
RoleMask = UrlSegment | Alias | UnderscoreAlias | FileName | ConvertCase,
|
||||
|
||||
/// <summary>
|
||||
/// Url role.
|
||||
@@ -112,6 +112,12 @@ namespace Umbraco.Core.Strings
|
||||
/// <summary>
|
||||
/// ConvertCase role.
|
||||
/// </summary>
|
||||
ConvertCase = 0x080000
|
||||
ConvertCase = 0x080000,
|
||||
|
||||
/// <summary>
|
||||
/// UnderscoreAlias role.
|
||||
/// </summary>
|
||||
/// <remarks>This is Alias + leading underscore.</remarks>
|
||||
UnderscoreAlias = 0x100000
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,6 +193,12 @@ namespace Umbraco.Core.Strings
|
||||
: (char.IsLetterOrDigit(c) || c == '_'), // letter, digit or underscore
|
||||
StringType = CleanStringType.Ascii | CleanStringType.UmbracoCase,
|
||||
BreakTermsOnUpper = false
|
||||
}).WithConfig(CleanStringType.UnderscoreAlias, new Config
|
||||
{
|
||||
PreFilter = ApplyUrlReplaceCharacters,
|
||||
IsTerm = (c, leading) => char.IsLetterOrDigit(c) || c == '_', // letter, digit or underscore
|
||||
StringType = CleanStringType.Ascii | CleanStringType.UmbracoCase,
|
||||
BreakTermsOnUpper = false
|
||||
}).WithConfig(CleanStringType.ConvertCase, new Config
|
||||
{
|
||||
PreFilter = null,
|
||||
|
||||
@@ -6,6 +6,7 @@ using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Strings;
|
||||
using umbraco.DataLayer;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.IO;
|
||||
@@ -204,7 +205,7 @@ namespace umbraco.cms.businesslogic.template
|
||||
{
|
||||
FlushCache();
|
||||
_oldAlias = _alias;
|
||||
_alias = value;
|
||||
_alias = value.ToCleanString(CleanStringType.UnderscoreAlias);
|
||||
|
||||
SqlHelper.ExecuteNonQuery("Update cmsTemplate set alias = @alias where NodeId = " + this.Id, SqlHelper.CreateParameter("@alias", _alias));
|
||||
_templateAliasesInitialized = false;
|
||||
@@ -402,13 +403,13 @@ namespace umbraco.cms.businesslogic.template
|
||||
var node = MakeNew(-1, ObjectType, u.Id, 1, name, Guid.NewGuid());
|
||||
|
||||
//ensure unique alias
|
||||
name = helpers.Casing.SafeAlias(name);
|
||||
name = name.ToCleanString(CleanStringType.UnderscoreAlias);
|
||||
if (GetByAlias(name) != null)
|
||||
name = EnsureUniqueAlias(name, 1);
|
||||
name = name.Replace("/", ".").Replace("\\", "");
|
||||
//name = name.Replace("/", ".").Replace("\\", ""); //why? ToSafeAlias() already removes those chars
|
||||
|
||||
if (name.Length > 100)
|
||||
name = name.Substring(0, 95) + "...";
|
||||
name = name.Substring(0, 95); // + "..."; // no, these are invalid alias chars
|
||||
|
||||
|
||||
SqlHelper.ExecuteNonQuery("INSERT INTO cmsTemplate (NodeId, Alias, design, master) VALUES (@nodeId, @alias, @design, @master)",
|
||||
|
||||
Reference in New Issue
Block a user