From 5a862f5c644b80f4dd9902155ba7da78a9d3ee7c Mon Sep 17 00:00:00 2001 From: Morten Christensen Date: Thu, 1 May 2014 13:51:33 +0200 Subject: [PATCH] Fixes import of nested dictionary items #U4-4663 --- src/Umbraco.Core/Services/PackagingService.cs | 14 +++++++------- .../Services/Importing/PackageImportTests.cs | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Core/Services/PackagingService.cs b/src/Umbraco.Core/Services/PackagingService.cs index 5330507fd4..b02b765a37 100644 --- a/src/Umbraco.Core/Services/PackagingService.cs +++ b/src/Umbraco.Core/Services/PackagingService.cs @@ -768,15 +768,15 @@ namespace Umbraco.Core.Services return ImportDictionaryItems(dictionaryItemElementList, languages); } - private IEnumerable ImportDictionaryItems(XElement dictionaryItemElementList, List languages) + private IEnumerable ImportDictionaryItems(XElement dictionaryItemElementList, List languages, Guid? parentId = null) { var items = new List(); foreach (var dictionaryItemElement in dictionaryItemElementList.Elements("DictionaryItem")) - items.AddRange(ImportDictionaryItem(dictionaryItemElement, languages)); + items.AddRange(ImportDictionaryItem(dictionaryItemElement, languages, parentId)); return items; } - private IEnumerable ImportDictionaryItem(XElement dictionaryItemElement, List languages) + private IEnumerable ImportDictionaryItem(XElement dictionaryItemElement, List languages, Guid? parentId) { var items = new List(); @@ -785,10 +785,10 @@ namespace Umbraco.Core.Services if (_localizationService.DictionaryItemExists(key)) dictionaryItem = GetAndUpdateDictionaryItem(key, dictionaryItemElement, languages); else - dictionaryItem = CreateNewDictionaryItem(key, dictionaryItemElement, languages); + dictionaryItem = CreateNewDictionaryItem(key, dictionaryItemElement, languages, parentId); _localizationService.Save(dictionaryItem); items.Add(dictionaryItem); - items.AddRange(ImportDictionaryItems(dictionaryItemElement, languages)); + items.AddRange(ImportDictionaryItems(dictionaryItemElement, languages, dictionaryItem.Key)); return items; } @@ -802,9 +802,9 @@ namespace Umbraco.Core.Services return dictionaryItem; } - private static DictionaryItem CreateNewDictionaryItem(string key, XElement dictionaryItemElement, List languages) + private static DictionaryItem CreateNewDictionaryItem(string key, XElement dictionaryItemElement, List languages, Guid? parentId) { - var dictionaryItem = new DictionaryItem(key); + var dictionaryItem = parentId.HasValue ? new DictionaryItem(parentId.Value, key) : new DictionaryItem(key); var translations = new List(); foreach (var valueElement in dictionaryItemElement.Elements("Value")) diff --git a/src/Umbraco.Tests/Services/Importing/PackageImportTests.cs b/src/Umbraco.Tests/Services/Importing/PackageImportTests.cs index 4a318f4603..1deec4282b 100644 --- a/src/Umbraco.Tests/Services/Importing/PackageImportTests.cs +++ b/src/Umbraco.Tests/Services/Importing/PackageImportTests.cs @@ -415,7 +415,7 @@ namespace Umbraco.Tests.Services.Importing AddLanguages(); // Act - ServiceContext.PackagingService.ImportDictionaryItems(dictionaryItemsElement); + var dictionaryItems = ServiceContext.PackagingService.ImportDictionaryItems(dictionaryItemsElement); // Assert Assert.That(ServiceContext.LocalizationService.DictionaryItemExists(parentKey), "DictionaryItem parentKey does not exist"); @@ -425,7 +425,7 @@ namespace Umbraco.Tests.Services.Importing var childDictionaryItem = ServiceContext.LocalizationService.GetDictionaryItemByKey(childKey); Assert.That(parentDictionaryItem.ParentId, Is.Not.EqualTo(childDictionaryItem.ParentId)); - Assert.That(childDictionaryItem.ParentId, Is.EqualTo(parentDictionaryItem.Id)); + Assert.That(childDictionaryItem.ParentId, Is.EqualTo(parentDictionaryItem.Key)); } [Test]