diff --git a/src/Umbraco.Core/Manifest/ManifestBuilder.cs b/src/Umbraco.Core/Manifest/ManifestBuilder.cs index d880c4cc58..d62c215c8d 100644 --- a/src/Umbraco.Core/Manifest/ManifestBuilder.cs +++ b/src/Umbraco.Core/Manifest/ManifestBuilder.cs @@ -16,6 +16,7 @@ namespace Umbraco.Core.Manifest private const string ManifestKey = "manifests"; private const string PropertyEditorsKey = "propertyeditors"; + private const string ParameterEditorsKey = "parametereditors"; /// /// Returns all property editors found in the manfifests @@ -50,7 +51,7 @@ namespace Umbraco.Core.Manifest get { return (IEnumerable)StaticCache.GetOrAdd( - PropertyEditorsKey, + ParameterEditorsKey, s => { var editors = new List(); diff --git a/src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs b/src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs index 8d7c1a988f..2dd302988d 100644 --- a/src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs +++ b/src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs @@ -32,12 +32,15 @@ namespace Umbraco.Core.PropertyEditors //are filtered. var filtered = Values.Select(x => x as PropertyEditor) .WhereNotNull() - .Where(x => x.IsParameterEditor == false) - .ToArray(); - - //now we need to get all manifest property editors in here that are parameter editors!~ - - return Values.Except(filtered).Union(ManifestBuilder.ParameterEditors); + .Where(x => x.IsParameterEditor == false); + + return Values + //exclude the non parameter editor c# property editors + .Except(filtered) + //include the manifest parameter editors + .Union(ManifestBuilder.ParameterEditors) + //include the manifest prop editors that are parameter editors + .Union(ManifestBuilder.PropertyEditors.Where(x => x.IsParameterEditor)); } } diff --git a/src/Umbraco.Web.UI/umbraco/developer/Macros/EditMacro.aspx.cs b/src/Umbraco.Web.UI/umbraco/developer/Macros/EditMacro.aspx.cs index 4ae89cc0c5..033e8389e6 100644 --- a/src/Umbraco.Web.UI/umbraco/developer/Macros/EditMacro.aspx.cs +++ b/src/Umbraco.Web.UI/umbraco/developer/Macros/EditMacro.aspx.cs @@ -118,5 +118,27 @@ namespace Umbraco.Web.UI.Umbraco.Developer.Macros return files; } + /// + /// Binds the drop down list but ensures that the macro param type exists if it doesn't the drop down will be left blank + /// + /// + /// + protected void MacroPropertiesOnItemDataBound(object sender, RepeaterItemEventArgs e) + { + if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) + { + var propertyTypes = (DropDownList)e.Item.FindControl("macroPropertyType"); + + var editors = GetMacroParameterEditors(); + propertyTypes.DataSource = editors; + propertyTypes.DataBind(); + var macroProp = (IMacroProperty)e.Item.DataItem; + if (editors.Any(x => x.Alias == macroProp.EditorAlias)) + { + propertyTypes.SelectedValue = macroProp.EditorAlias; + } + } + + } } } \ No newline at end of file diff --git a/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx b/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx index 88d079b4b9..f3fa4ab8bd 100644 --- a/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx +++ b/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx @@ -9,13 +9,11 @@ -