diff --git a/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx b/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx
index 2fef5e05bd..28cc136a3a 100644
--- a/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx
+++ b/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx
@@ -137,6 +137,9 @@
<%=umbraco.ui.Text("general", "type",UmbracoUser)%>
|
+
+ <%=umbraco.ui.Text("general", "sort",UmbracoUser)%>
+ |
|
@@ -161,6 +164,11 @@
DataTextFormatString="" DataTextField='Name' DataValueField="Alias">
+
+ Required
+ Numbers only
+
+ |
|
@@ -184,6 +192,9 @@
DataSource='<%# GetMacroParameterEditors()%>'>
+
+ <%-- The macro parameter will automatically get sort order when created. --%>
+ |
|
diff --git a/src/Umbraco.Web/Editors/MacroController.cs b/src/Umbraco.Web/Editors/MacroController.cs
index 88af605f61..aed6cec602 100644
--- a/src/Umbraco.Web/Editors/MacroController.cs
+++ b/src/Umbraco.Web/Editors/MacroController.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
@@ -34,7 +35,7 @@ namespace Umbraco.Web.Editors
throw new HttpResponseException(HttpStatusCode.NotFound);
}
- return Mapper.Map>(macro);
+ return Mapper.Map>(macro).OrderBy(x => x.SortOrder);
}
///
diff --git a/src/Umbraco.Web/Models/ContentEditing/MacroParameter.cs b/src/Umbraco.Web/Models/ContentEditing/MacroParameter.cs
index a5cf8733c3..2ca9d0fa90 100644
--- a/src/Umbraco.Web/Models/ContentEditing/MacroParameter.cs
+++ b/src/Umbraco.Web/Models/ContentEditing/MacroParameter.cs
@@ -20,6 +20,9 @@ namespace Umbraco.Web.Models.ContentEditing
[DataMember(Name = "name")]
public string Name { get; set; }
+
+ [DataMember(Name = "sortOrder")]
+ public int SortOrder { get; set; }
///
/// The editor view to render for this parameter
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs
index f8d15004da..0c375893d6 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs
@@ -193,7 +193,7 @@ namespace umbraco.cms.presentation.developer
public void macroPropertyBind()
{
- macroProperties.DataSource = _macro.Properties;
+ macroProperties.DataSource = _macro.Properties.OrderBy(x => x.SortOrder);
macroProperties.DataBind();
}
@@ -333,24 +333,25 @@ namespace umbraco.cms.presentation.developer
SetMacroValuesFromPostBack(_macro, Convert.ToInt32(tempCachePeriod), tempMacroAssembly, tempMacroType);
// Save elements
- var sort = 0;
foreach (RepeaterItem item in macroProperties.Items)
{
var macroPropertyId = (HtmlInputHidden)item.FindControl("macroPropertyID");
var macroElementName = (TextBox)item.FindControl("macroPropertyName");
var macroElementAlias = (TextBox)item.FindControl("macroPropertyAlias");
+ var macroElementSortOrder = (TextBox)item.FindControl("macroPropertySortOrder");
var macroElementType = (DropDownList)item.FindControl("macroPropertyType");
var prop = _macro.Properties.Single(x => x.Id == int.Parse(macroPropertyId.Value));
-
+ var sortOrder = 0;
+ int.TryParse(macroElementSortOrder.Text, out sortOrder);
+
_macro.Properties.UpdateProperty(
prop.Alias,
macroElementName.Text.Trim(),
- sort,
+ sortOrder,
macroElementType.SelectedValue,
macroElementAlias.Text.Trim());
- sort++;
}
Services.MacroService.Save(_macro);
@@ -368,6 +369,8 @@ namespace umbraco.cms.presentation.developer
new LiteralControl("
"));
+
+ macroPropertyBind();
}
///