From a705561a51ebcd213b490ed3d67d300d5e4b083d Mon Sep 17 00:00:00 2001 From: Kevin Jump Date: Thu, 23 Jan 2014 16:05:08 +0000 Subject: [PATCH] Fix Importing Macro when macro already exists ParseMacroElement called by ImportMacro was no checking for to see if the macro or properties already exists - caused SQL errors on import of macro. Added check to look for existing macro, and only add new properties on import (in line with other import methods) --- src/Umbraco.Core/Services/PackagingService.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Services/PackagingService.cs b/src/Umbraco.Core/Services/PackagingService.cs index a939260e1b..af700d09cc 100644 --- a/src/Umbraco.Core/Services/PackagingService.cs +++ b/src/Umbraco.Core/Services/PackagingService.cs @@ -1244,7 +1244,8 @@ namespace Umbraco.Core.Services dontRender = bool.Parse(dontRenderElement.Value); } - var macro = new Macro(macroAlias, macroName, controlType, controlAssembly, xsltPath, scriptPath, + var existingMacro = _macroService.GetByAlias(macroAlias) as Macro; + var macro = existingMacro ?? new Macro(macroAlias, macroName, controlType, controlAssembly, xsltPath, scriptPath, cacheByPage, cacheByMember, dontRender, useInEditor, cacheDuration); var properties = macroElement.Element("properties"); @@ -1262,6 +1263,7 @@ namespace Umbraco.Core.Services sortOrder = int.Parse(sortOrderAttribute.Value); } + if (macro.Properties.Any(x => x.Alias == propertyAlias)) continue; macro.Properties.Add(new MacroProperty(propertyAlias, propertyName, sortOrder, editorAlias)); sortOrder++; }