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(); } ///