diff --git a/src/Umbraco.Core/Services/PackagingService.cs b/src/Umbraco.Core/Services/PackagingService.cs index efa6ae9fe6..e50daa6a61 100644 --- a/src/Umbraco.Core/Services/PackagingService.cs +++ b/src/Umbraco.Core/Services/PackagingService.cs @@ -950,7 +950,7 @@ namespace Umbraco.Core.Services var templates = new List(); var templateElements = name.Equals("Templates") ? (from doc in element.Elements("Template") select doc).ToList() - : new List { element.Element("Template") }; + : new List { element }; var fields = new List>(); foreach (XElement tempElement in templateElements) diff --git a/src/Umbraco.Tests/Services/Importing/PackageImportTests.cs b/src/Umbraco.Tests/Services/Importing/PackageImportTests.cs index fa11f2aa78..b4301fe835 100644 --- a/src/Umbraco.Tests/Services/Importing/PackageImportTests.cs +++ b/src/Umbraco.Tests/Services/Importing/PackageImportTests.cs @@ -129,6 +129,24 @@ namespace Umbraco.Tests.Services.Importing Assert.That(templates.Count(), Is.EqualTo(numberOfTemplates)); } + [Test] + public void PackagingService_Can_Import_Single_Template() + { + // Arrange + string strXml = ImportResources.StandardMvc_Package; + var xml = XElement.Parse(strXml); + var element = xml.Descendants("Templates").First().Element("Template"); + var packagingService = ServiceContext.PackagingService; + + // Act + var templates = packagingService.ImportTemplates(element); + + // Assert + Assert.That(templates, Is.Not.Null); + Assert.That(templates.Any(), Is.True); + Assert.That(templates.Count(), Is.EqualTo(1)); + } + [Test] public void PackagingService_Can_Import_StandardMvc_ContentTypes_Package_Xml() { diff --git a/src/umbraco.cms/businesslogic/template/Template.cs b/src/umbraco.cms/businesslogic/template/Template.cs index 7f58d40953..77177357d4 100644 --- a/src/umbraco.cms/businesslogic/template/Template.cs +++ b/src/umbraco.cms/businesslogic/template/Template.cs @@ -288,7 +288,7 @@ namespace umbraco.cms.businesslogic.template public XmlNode ToXml(XmlDocument doc) { XmlNode template = doc.CreateElement("Template"); - template.AppendChild(xmlHelper.addTextNode(doc, "Name", this.Text)); + template.AppendChild(xmlHelper.addTextNode(doc, "Name", base.Text)); template.AppendChild(xmlHelper.addTextNode(doc, "Alias", this.Alias)); if (this.MasterTemplate != 0) @@ -769,21 +769,9 @@ namespace umbraco.cms.businesslogic.template public static Template Import(XmlNode n, User u) { - string alias = xmlHelper.GetNodeValue(n.SelectSingleNode("Alias")); - - Template t = Template.GetByAlias(alias); - var design = xmlHelper.GetNodeValue(n.SelectSingleNode("Design")); - - if (t == null) - { - //create the template with the design if one is specified - t = MakeNew(xmlHelper.GetNodeValue(n.SelectSingleNode("Name")), u, - design.IsNullOrWhiteSpace() ? null : design); - } - - t.Alias = alias; - - return t; + var element = System.Xml.Linq.XElement.Parse(n.OuterXml); + var templates = ApplicationContext.Current.Services.PackagingService.ImportTemplates(element, u.Id); + return new Template(templates.First().Id); }