From b3a6c70ae7bf24d2bb7d87f9af89b228a7bdef91 Mon Sep 17 00:00:00 2001 From: Stephan Date: Wed, 21 Dec 2016 15:34:17 +0100 Subject: [PATCH] U4-9250 - revert some changes --- src/Umbraco.Core/Models/Macro.cs | 39 ++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/Umbraco.Core/Models/Macro.cs b/src/Umbraco.Core/Models/Macro.cs index 408502c930..e32e5b5ab9 100644 --- a/src/Umbraco.Core/Models/Macro.cs +++ b/src/Umbraco.Core/Models/Macro.cs @@ -21,6 +21,8 @@ namespace Umbraco.Core.Models { _properties = new MacroPropertyCollection(); _properties.CollectionChanged += PropertiesChanged; + _addedProperties = new List(); + _removedProperties = new List(); } /// @@ -106,6 +108,8 @@ namespace Umbraco.Core.Models private string _scriptPath; private string _xslt; private MacroPropertyCollection _properties; + private List _addedProperties; + private List _removedProperties; private static readonly Lazy Ps = new Lazy(); @@ -134,12 +138,27 @@ namespace Umbraco.Core.Models //listen for changes var prop = e.NewItems.Cast().First(); prop.PropertyChanged += PropertyDataChanged; + + var alias = prop.Alias; + + if (_addedProperties.Contains(alias) == false) + { + //add to the added props + _addedProperties.Add(alias); + } } else if (e.Action == NotifyCollectionChangedAction.Remove) { //remove listening for changes var prop = e.OldItems.Cast().First(); prop.PropertyChanged -= PropertyDataChanged; + + var alias = prop.Alias; + + if (_removedProperties.Contains(alias) == false) + { + _removedProperties.Add(alias); + } } } @@ -155,6 +174,8 @@ namespace Umbraco.Core.Models public override void ResetDirtyProperties(bool rememberPreviouslyChangedProperties) { + _addedProperties.Clear(); + _removedProperties.Clear(); base.ResetDirtyProperties(rememberPreviouslyChangedProperties); foreach (var prop in Properties) { @@ -162,6 +183,22 @@ namespace Umbraco.Core.Models } } + /// + /// Used internally to check if we need to add a section in the repository to the db + /// + internal IEnumerable AddedProperties + { + get { return _addedProperties; } + } + + /// + /// Used internally to check if we need to remove a section in the repository to the db + /// + internal IEnumerable RemovedProperties + { + get { return _removedProperties; } + } + /// /// Gets or sets the alias of the Macro /// @@ -289,6 +326,8 @@ namespace Umbraco.Core.Models var clone = (Macro)base.DeepClone(); //turn off change tracking clone.DisableChangeTracking(); + clone._addedProperties = new List(); + clone._removedProperties = new List(); clone._properties = (MacroPropertyCollection)Properties.DeepClone(); //re-assign the event handler clone._properties.CollectionChanged += clone.PropertiesChanged;