diff --git a/lib/SQLCE4/System.Data.SqlServerCe.Entity.dll b/lib/SQLCE4/System.Data.SqlServerCe.Entity.dll index 8142f0c105..3d7692a0b9 100644 Binary files a/lib/SQLCE4/System.Data.SqlServerCe.Entity.dll and b/lib/SQLCE4/System.Data.SqlServerCe.Entity.dll differ diff --git a/lib/SQLCE4/System.Data.SqlServerCe.dll b/lib/SQLCE4/System.Data.SqlServerCe.dll index 376bdacf9f..acf228b726 100644 Binary files a/lib/SQLCE4/System.Data.SqlServerCe.dll and b/lib/SQLCE4/System.Data.SqlServerCe.dll differ diff --git a/lib/SQLCE4/amd64/sqlceca40.dll b/lib/SQLCE4/amd64/sqlceca40.dll index aa6b2e0ed2..d5d4c20448 100644 Binary files a/lib/SQLCE4/amd64/sqlceca40.dll and b/lib/SQLCE4/amd64/sqlceca40.dll differ diff --git a/lib/SQLCE4/amd64/sqlcecompact40.dll b/lib/SQLCE4/amd64/sqlcecompact40.dll index 263e458f23..ed061adee6 100644 Binary files a/lib/SQLCE4/amd64/sqlcecompact40.dll and b/lib/SQLCE4/amd64/sqlcecompact40.dll differ diff --git a/lib/SQLCE4/amd64/sqlceer40EN.dll b/lib/SQLCE4/amd64/sqlceer40EN.dll index 197f38eb06..e19eed9bda 100644 Binary files a/lib/SQLCE4/amd64/sqlceer40EN.dll and b/lib/SQLCE4/amd64/sqlceer40EN.dll differ diff --git a/lib/SQLCE4/amd64/sqlceme40.dll b/lib/SQLCE4/amd64/sqlceme40.dll index 8f42f181c4..c67fc9e6a5 100644 Binary files a/lib/SQLCE4/amd64/sqlceme40.dll and b/lib/SQLCE4/amd64/sqlceme40.dll differ diff --git a/lib/SQLCE4/amd64/sqlceqp40.dll b/lib/SQLCE4/amd64/sqlceqp40.dll index 899b080cbb..df4440332d 100644 Binary files a/lib/SQLCE4/amd64/sqlceqp40.dll and b/lib/SQLCE4/amd64/sqlceqp40.dll differ diff --git a/lib/SQLCE4/amd64/sqlcese40.dll b/lib/SQLCE4/amd64/sqlcese40.dll index fa39afa751..af2de5ec90 100644 Binary files a/lib/SQLCE4/amd64/sqlcese40.dll and b/lib/SQLCE4/amd64/sqlcese40.dll differ diff --git a/lib/SQLCE4/x86/sqlceca40.dll b/lib/SQLCE4/x86/sqlceca40.dll index 53d50a29f8..92596101eb 100644 Binary files a/lib/SQLCE4/x86/sqlceca40.dll and b/lib/SQLCE4/x86/sqlceca40.dll differ diff --git a/lib/SQLCE4/x86/sqlcecompact40.dll b/lib/SQLCE4/x86/sqlcecompact40.dll index 452a26e49e..41c69ecc51 100644 Binary files a/lib/SQLCE4/x86/sqlcecompact40.dll and b/lib/SQLCE4/x86/sqlcecompact40.dll differ diff --git a/lib/SQLCE4/x86/sqlceer40EN.dll b/lib/SQLCE4/x86/sqlceer40EN.dll index f8656b0a91..a40154fd37 100644 Binary files a/lib/SQLCE4/x86/sqlceer40EN.dll and b/lib/SQLCE4/x86/sqlceer40EN.dll differ diff --git a/lib/SQLCE4/x86/sqlceme40.dll b/lib/SQLCE4/x86/sqlceme40.dll index 6aeb1cb49b..d737119fa3 100644 Binary files a/lib/SQLCE4/x86/sqlceme40.dll and b/lib/SQLCE4/x86/sqlceme40.dll differ diff --git a/lib/SQLCE4/x86/sqlceqp40.dll b/lib/SQLCE4/x86/sqlceqp40.dll index d1498fa33b..dedfc9a3ce 100644 Binary files a/lib/SQLCE4/x86/sqlceqp40.dll and b/lib/SQLCE4/x86/sqlceqp40.dll differ diff --git a/lib/SQLCE4/x86/sqlcese40.dll b/lib/SQLCE4/x86/sqlcese40.dll index 731b01d797..cc37e3b549 100644 Binary files a/lib/SQLCE4/x86/sqlcese40.dll and b/lib/SQLCE4/x86/sqlcese40.dll differ diff --git a/src/Umbraco.Core/Configuration/GlobalSettings.cs b/src/Umbraco.Core/Configuration/GlobalSettings.cs index 5f164df1c0..634749dd25 100644 --- a/src/Umbraco.Core/Configuration/GlobalSettings.cs +++ b/src/Umbraco.Core/Configuration/GlobalSettings.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Web; using System.Web.Configuration; using System.Xml; +using System.Xml.Linq; using Umbraco.Core.IO; using Umbraco.Core.Logging; @@ -197,13 +198,19 @@ namespace Umbraco.Core.Configuration vDir = v.PhysicalDirectory; } } - - var doc = new XmlDocument(); - doc.Load(String.Concat(vDir, "web.config")); - var root = doc.DocumentElement; - var setting = doc.SelectSingleNode(String.Concat("//appSettings/add[@key='", key, "']")); - setting.Attributes["value"].InnerText = value; - doc.Save(String.Concat(vDir, "web.config")); + + string fileName = String.Concat(vDir, "web.config"); + var xml = XDocument.Load(fileName); + var appSettings = xml.Root.Descendants("appSettings").Single(); + + // Update appSetting if it exists, or else create a new appSetting for the given key and value + var setting = appSettings.Descendants("add").Where(s => s.Attribute("key").Value == key).FirstOrDefault(); + if (setting == null) + appSettings.Add(new XElement("add", new XAttribute("key", key), new XAttribute("value", value))); + else + setting.Attribute("value").Value = value; + + xml.Save(fileName); ConfigurationManager.RefreshSection("appSettings"); } diff --git a/src/Umbraco.Core/Dynamics/ExtensionMethodFinder.cs b/src/Umbraco.Core/Dynamics/ExtensionMethodFinder.cs index fdfa8e35f7..6dd8a1ad12 100644 --- a/src/Umbraco.Core/Dynamics/ExtensionMethodFinder.cs +++ b/src/Umbraco.Core/Dynamics/ExtensionMethodFinder.cs @@ -9,10 +9,11 @@ using System.Linq.Expressions; namespace Umbraco.Core.Dynamics { + /// + /// Utility class for finding extension methods on a type to execute + /// internal static class ExtensionMethodFinder - { - - + { /// /// Returns all extension methods found matching the definition /// @@ -22,7 +23,7 @@ namespace Umbraco.Core.Dynamics /// /// /// - /// NOTE: This will be an intensive method to call!! Results should be cached! + /// TODO: NOTE: This will be an intensive method to call!! Results should be cached! /// private static IEnumerable GetAllExtensionMethods(Type thisType, string name, int argumentCount, bool argsContainsThis) { @@ -62,7 +63,8 @@ namespace Umbraco.Core.Dynamics return methodsWhereArgZeroIsTargetType.Select(mt => mt.m); } - private static bool MethodArgZeroHasCorrectTargetType(MethodInfo method, Type firstArgumentType, Type thisType) + + private static bool MethodArgZeroHasCorrectTargetType(MethodInfo method, Type firstArgumentType, Type thisType) { //This is done with seperate method calls because you can't debug/watch lamdas - if you're trying to figure //out why the wrong method is returned, it helps to be able to see each boolean result @@ -112,7 +114,8 @@ namespace Umbraco.Core.Dynamics bool result = (thisType == firstArgumentType); return result; } - private static Type FirstParameterType(MethodInfo m) + + private static Type FirstParameterType(MethodInfo m) { ParameterInfo[] p = m.GetParameters(); if (p.Any()) @@ -122,71 +125,74 @@ namespace Umbraco.Core.Dynamics return null; } + private static MethodInfo DetermineMethodFromParams(IEnumerable methods, Type genericType, IEnumerable args) + { + if (!methods.Any()) + { + return null; + } + MethodInfo methodToExecute = null; + if (methods.Count() > 1) + { + //Given the args, lets get the types and compare the type sequence to try and find the correct overload + var argTypes = args.ToList().ConvertAll(o => + { + var oe = (o as Expression); + if (oe != null) + { + return oe.Type.FullName; + } + return o.GetType().FullName; + }); + var methodsWithArgTypes = methods.Select(method => new { method, types = method.GetParameters().Select(pi => pi.ParameterType.FullName) }); + var firstMatchingOverload = methodsWithArgTypes.FirstOrDefault(m => m.types.SequenceEqual(argTypes)); + if (firstMatchingOverload != null) + { + methodToExecute = firstMatchingOverload.method; + } + } + + if (methodToExecute == null) + { + var firstMethod = methods.FirstOrDefault(); + // NH: this is to ensure that it's always the correct one being chosen when using the LINQ extension methods + if (methods.Count() > 1) + { + var firstGenericMethod = methods.FirstOrDefault(x => x.IsGenericMethodDefinition); + if (firstGenericMethod != null) + { + firstMethod = firstGenericMethod; + } + } + + if (firstMethod != null) + { + if (firstMethod.IsGenericMethodDefinition) + { + if (genericType != null) + { + methodToExecute = firstMethod.MakeGenericMethod(genericType); + } + } + else + { + methodToExecute = firstMethod; + } + } + } + return methodToExecute; + } + public static MethodInfo FindExtensionMethod(Type thisType, object[] args, string name, bool argsContainsThis) { Type genericType = null; if (thisType.IsGenericType) { genericType = thisType.GetGenericArguments()[0]; - } + } - var methods = GetAllExtensionMethods(thisType, name, args.Length, argsContainsThis) - .ToArray(); - - if (!methods.Any()) - { - return null; - } - MethodInfo methodToExecute = null; - if (methods.Count() > 1) - { - //Given the args, lets get the types and compare the type sequence to try and find the correct overload - var argTypes = args.ToList().ConvertAll(o => - { - var oe = (o as Expression); - if (oe != null) - { - return oe.Type.FullName; - } - return o.GetType().FullName; - }); - var methodsWithArgTypes = methods.Select(method => new {method, types = method.GetParameters().Select(pi => pi.ParameterType.FullName) }); - var firstMatchingOverload = methodsWithArgTypes.FirstOrDefault(m => m.types.SequenceEqual(argTypes)); - if (firstMatchingOverload != null) - { - methodToExecute = firstMatchingOverload.method; - } - } - - if (methodToExecute == null) - { - var firstMethod = methods.FirstOrDefault(); - // NH: this is to ensure that it's always the correct one being chosen when using the LINQ extension methods - if (methods.Count() > 1) - { - var firstGenericMethod = methods.FirstOrDefault(x => x.IsGenericMethodDefinition); - if (firstGenericMethod != null) - { - firstMethod = firstGenericMethod; - } - } - - if (firstMethod != null) - { - if (firstMethod.IsGenericMethodDefinition) - { - if (genericType != null) - { - methodToExecute = firstMethod.MakeGenericMethod(genericType); - } - } - else - { - methodToExecute = firstMethod; - } - } - } - return methodToExecute; + var methods = GetAllExtensionMethods(thisType, name, args.Length, argsContainsThis).ToArray(); + return DetermineMethodFromParams(methods, genericType, args); } } } diff --git a/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs b/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs index 52818e1323..f5db4adc33 100644 --- a/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs +++ b/src/Umbraco.Tests/DynamicDocument/DynamicDocumentTestsBase.cs @@ -53,14 +53,19 @@ namespace Umbraco.Tests.DynamicDocument - + + - + + + + + "; @@ -73,6 +78,144 @@ namespace Umbraco.Tests.DynamicDocument /// protected abstract dynamic GetDynamicNode(int id); + [Test] + public void Single() + { + var doc = GetDynamicNode(4444); + + var result = doc.Children().Single(); + + Assert.IsNotNull(result); + Assert.AreEqual(5555, result.Id); + } + + [Test] + public void Single_With_Query() + { + var doc = GetDynamicNode(1046); + + var result = doc.Children().Single("id==1175"); + + Assert.IsNotNull(result); + Assert.AreEqual(1175, result.Id); + } + + [Test] + public void First() + { + var doc = GetDynamicNode(1173); + + var result = doc.Children().First(); + + Assert.IsNotNull(result); + Assert.AreEqual(1174, result.Id); + } + + [Test] + public void First_With_Query() + { + var doc = GetDynamicNode(1173); + + var result = doc.Children().First("blah==\"some content\""); + + Assert.IsNotNull(result); + Assert.AreEqual(1176, result.Id); + } + + [Test] + public void Where_User_Property_Value() + { + var doc = GetDynamicNode(1173); + + var result = (IEnumerable)doc.Children().Where("blah==\"some content\""); + + Assert.IsNotNull(result); + Assert.AreEqual(1, result.Count()); + Assert.AreEqual(1176, result.Single().Id); + } + + [Test] + public void String_ContainsValue_Extension_Method() + { + var doc = GetDynamicNode(1046); + + var paramVals = new Dictionary { { "searchId", 1173 } }; //this is an integer value + var result = doc.Children() + .Where("selectedNodes.ContainsValue(searchId)", paramVals) //call an extension method + .FirstOrDefault(); + + Assert.IsNotNull(result); + Assert.AreEqual(4444, result.Id); + + //don't find! + paramVals = new Dictionary { { "searchId", 1111777 } }; + result = doc.Children() + .Where("selectedNodes.ContainsValue(searchId)", paramVals) + .FirstOrDefault(); + + Assert.IsNotNull(result); + Assert.IsTrue(result.GetType() == typeof(DynamicNull) || result.GetType() == typeof(umbraco.MacroEngines.DynamicNull)); + //Assert.AreEqual(typeof(DynamicNull), result.GetType()); + } + + [Test] + public void String_Contains_Method() + { + var doc = GetDynamicNode(1046); + + var paramVals = new Dictionary { { "searchId", "1173" } }; + var result = doc.Children() + .Where("selectedNodes.Contains(searchId)", paramVals) + .FirstOrDefault(); + + Assert.IsNotNull(result); + Assert.AreEqual(4444, result.Id); + + //don't find! + paramVals = new Dictionary { { "searchId", "1aaa173" } }; + result = doc.Children() + .Where("selectedNodes.Contains(searchId)", paramVals) + .FirstOrDefault(); + + Assert.IsNotNull(result); + Assert.IsTrue(result.GetType() == typeof (DynamicNull) || result.GetType() == typeof (umbraco.MacroEngines.DynamicNull)); + //Assert.AreEqual(typeof (DynamicNull), result.GetType()); + } + + [Test] + public void String_Split_Method() + { + var doc = GetDynamicNode(1046); + + var paramVals = new Dictionary + { + { "splitTerm", new char[] { ',' } }, + { "splitOptions", StringSplitOptions.RemoveEmptyEntries } + }; + var result = doc.Children() + .Where("selectedNodes.Split(splitTerm, splitOptions).Length == 3", paramVals) + .FirstOrDefault(); + + Assert.IsNotNull(result); + Assert.AreEqual(4444, result.Id); + } + + [Test] + public void Complex_Linq() + { + var doc = GetDynamicNode(1173); + + var paramVals = new Dictionary {{"splitTerm", new char[] {','}}, {"searchId", "1173"}}; + var result = doc.Ancestors().OrderBy("level") + .Single() + .Descendants() + .Where("selectedNodes != null && selectedNodes != String.Empty && selectedNodes.Split(splitTerm).Contains(searchId)", paramVals) + .FirstOrDefault(); + + Assert.IsNotNull(result); + Assert.AreEqual(4444, result.Id); + } + [Test] public void Index() { @@ -132,7 +275,7 @@ namespace Umbraco.Tests.DynamicDocument var found1 = doc.Children.GroupBy("DocumentTypeAlias"); - var casted = (IEnumerable>)(found1); + var casted = (IEnumerable>)(found1); Assert.AreEqual(2, casted.Count()); Assert.AreEqual(2, casted.Single(x => x.Key.ToString() == "Home").Count()); Assert.AreEqual(1, casted.Single(x => x.Key.ToString() == "CustomDocument").Count()); @@ -150,6 +293,18 @@ namespace Umbraco.Tests.DynamicDocument Assert.AreEqual(2, found2.Count()); } + [Test] + public void Children_Where_NodeTypeAlias() + { + var doc = GetDynamicNode(1046); + + var found1 = doc.Children.Where("NodeTypeAlias == \"CustomDocument\""); + var found2 = doc.Children.Where("NodeTypeAlias == \"Home\""); + + Assert.AreEqual(1, found1.Count()); + Assert.AreEqual(2, found2.Count()); + } + [Test] public void Children_Order_By_Update_Date() { @@ -166,6 +321,22 @@ namespace Umbraco.Tests.DynamicDocument } + [Test] + public void Children_Order_By_Update_Date_Descending() + { + var asDynamic = GetDynamicNode(1173); + + var ordered = asDynamic.Children.OrderBy("UpdateDate desc"); + var casted = (IEnumerable)ordered; + + var correctOrder = new[] { 1176, 1174, 1177, 1178 }; + for (var i = 0; i < correctOrder.Length; i++) + { + Assert.AreEqual(correctOrder[i], ((dynamic)casted.ElementAt(i)).Id); + } + + } + [Test] public void HasProperty() { @@ -372,7 +543,7 @@ namespace Umbraco.Tests.DynamicDocument Assert.IsNotNull(result); var list = (IEnumerable)result; - Assert.AreEqual(8, list.Count()); + Assert.AreEqual(9, list.Count()); Assert.IsTrue(list.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[] { 1046, 1173, 1174, 1176, 1175, 4444 })); } @@ -386,7 +557,7 @@ namespace Umbraco.Tests.DynamicDocument Assert.IsNotNull(result); var list = (IEnumerable)result; - Assert.AreEqual(7, list.Count()); + Assert.AreEqual(8, list.Count()); Assert.IsTrue(list.Select(x => ((dynamic)x).Id).ContainsAll(new dynamic[] { 1173, 1174, 1176, 1175, 4444 })); } @@ -453,6 +624,16 @@ namespace Umbraco.Tests.DynamicDocument Assert.AreEqual((int) 1174, (int) result.Id); } + } + /// + /// Extension methods used in tests + /// + public static class TestExtensionMethods + { + public static bool ContainsValue(this string s, int val) + { + return s.Contains(val.ToString()); + } } } \ No newline at end of file diff --git a/src/Umbraco.Tests/DynamicDocument/DocumentTests.cs b/src/Umbraco.Tests/DynamicDocument/PublishedContentDataTableTests.cs similarity index 91% rename from src/Umbraco.Tests/DynamicDocument/DocumentTests.cs rename to src/Umbraco.Tests/DynamicDocument/PublishedContentDataTableTests.cs index 177ae515c5..2ccd8684f0 100644 --- a/src/Umbraco.Tests/DynamicDocument/DocumentTests.cs +++ b/src/Umbraco.Tests/DynamicDocument/PublishedContentDataTableTests.cs @@ -15,7 +15,7 @@ namespace Umbraco.Tests.DynamicDocument /// Unit tests for IPublishedContent and extensions /// [TestFixture] - public class DocumentTests : BaseRoutingTest + public class PublishedContentDataTableTests : BaseRoutingTest { public override void Initialize() { @@ -71,7 +71,7 @@ namespace Umbraco.Tests.DynamicDocument [Test] public void To_DataTable() { - var doc = GetDocument(true, 1); + var doc = GetContent(true, 1); var dt = doc.ChildrenAsTable(); Assert.AreEqual(11, dt.Columns.Count); @@ -90,7 +90,7 @@ namespace Umbraco.Tests.DynamicDocument [Test] public void To_DataTable_With_Filter() { - var doc = GetDocument(true, 1); + var doc = GetContent(true, 1); //change a doc type alias ((TestPublishedContent) doc.Children.ElementAt(0)).DocumentTypeAlias = "DontMatch"; @@ -109,14 +109,14 @@ namespace Umbraco.Tests.DynamicDocument [Test] public void To_DataTable_No_Rows() { - var doc = GetDocument(false, 1); + var doc = GetContent(false, 1); var dt = doc.ChildrenAsTable(); //will return an empty data table Assert.AreEqual(0, dt.Columns.Count); Assert.AreEqual(0, dt.Rows.Count); } - private IPublishedContent GetDocument(bool createChildren, int indexVals) + private IPublishedContent GetContent(bool createChildren, int indexVals) { var d = new TestPublishedContent { @@ -149,9 +149,9 @@ namespace Umbraco.Tests.DynamicDocument { d.Children = new List() { - GetDocument(false, indexVals + 3), - GetDocument(false, indexVals + 6), - GetDocument(false, indexVals + 9) + GetContent(false, indexVals + 3), + GetContent(false, indexVals + 6), + GetContent(false, indexVals + 9) }; } if (!createChildren) diff --git a/src/Umbraco.Tests/DynamicDocument/PublishedContentTests.cs b/src/Umbraco.Tests/DynamicDocument/PublishedContentTests.cs index 115a5d179c..631457bb98 100644 --- a/src/Umbraco.Tests/DynamicDocument/PublishedContentTests.cs +++ b/src/Umbraco.Tests/DynamicDocument/PublishedContentTests.cs @@ -51,7 +51,9 @@ namespace Umbraco.Tests.DynamicDocument - + + + "; @@ -103,6 +105,19 @@ namespace Umbraco.Tests.DynamicDocument return doc; } + [Test] + public void Complex_Linq() + { + var doc = GetNode(1173); + + var result = doc.Ancestors().OrderBy(x => x.Level) + .Single() + .Descendants() + .FirstOrDefault(x => x.GetPropertyValue("selectedNodes", "").Split(',').Contains("1173")); + + Assert.IsNotNull(result); + } + [Test] public void Index() { diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 56a4ad90d4..5bf1f48618 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -54,7 +54,7 @@ - + diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index ddce4d4865..7e2813fc1b 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -293,9 +293,9 @@ Designer - + BaseRestExtensions.config - + log4net.config @@ -1149,7 +1149,6 @@ - diff --git a/src/Umbraco.Web.UI/config/BaseRestExtensions.Release.config b/src/Umbraco.Web.UI/config/BaseRestExtensions.Release.config index b8af16a1a3..98b271bb3a 100644 --- a/src/Umbraco.Web.UI/config/BaseRestExtensions.Release.config +++ b/src/Umbraco.Web.UI/config/BaseRestExtensions.Release.config @@ -1,13 +1,19 @@  - - - \ No newline at end of file + + + + \ No newline at end of file diff --git a/src/Umbraco.Web.UI/config/BaseRestExtensions.config b/src/Umbraco.Web.UI/config/BaseRestExtensions.config index 22798caf85..98b271bb3a 100644 --- a/src/Umbraco.Web.UI/config/BaseRestExtensions.config +++ b/src/Umbraco.Web.UI/config/BaseRestExtensions.config @@ -1,5 +1,6 @@  +
 
- Lets get started! + Let's get started!
\ No newline at end of file diff --git a/src/Umbraco.Web.UI/umbraco/dashboard/ChangePassword.ascx b/src/Umbraco.Web.UI/umbraco/dashboard/ChangePassword.ascx index 7c28c9ff46..f31cfb54e6 100644 --- a/src/Umbraco.Web.UI/umbraco/dashboard/ChangePassword.ascx +++ b/src/Umbraco.Web.UI/umbraco/dashboard/ChangePassword.ascx @@ -35,6 +35,13 @@ <%=umbraco.BusinessLogic.User.GetCurrent().Name%> +
  • + + <%=umbraco.ui.Text("password") %>: + + * + +
  • <%=umbraco.ui.Text("passwordEnterNew") %>: diff --git a/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx b/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx index 46b066cbf1..b696c6d594 100644 --- a/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx +++ b/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx @@ -136,9 +136,6 @@ - @@ -153,9 +150,6 @@ - -
    - <%=umbraco.ui.Text("show",this.getUser())%> - <%=umbraco.ui.Text("general", "alias",this.getUser())%>
    - - @@ -179,13 +173,10 @@
    - + - - - + <%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %> + - + +