Fixes Template.ToXml() (U4-3508) and refactored Template.Import to use PackagingService.ImportTemplates.
Fixed nullreference bug in ImportTemplates when used with XElement("Template"). (Added test for case with one template only)
This commit is contained in:
@@ -950,7 +950,7 @@ namespace Umbraco.Core.Services
|
||||
var templates = new List<ITemplate>();
|
||||
var templateElements = name.Equals("Templates")
|
||||
? (from doc in element.Elements("Template") select doc).ToList()
|
||||
: new List<XElement> { element.Element("Template") };
|
||||
: new List<XElement> { element };
|
||||
|
||||
var fields = new List<TopologicalSorter.DependencyField<XElement>>();
|
||||
foreach (XElement tempElement in templateElements)
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user