Serializes key for templates in package definition and imports if ava… (#11163)
This commit is contained in:
@@ -1558,7 +1558,15 @@ namespace Umbraco.Cms.Infrastructure.Packaging
|
||||
var masterElement = templateElement.Element("Master");
|
||||
|
||||
var existingTemplate = _fileService.GetTemplate(alias) as Template;
|
||||
|
||||
var template = existingTemplate ?? new Template(_shortStringHelper, templateName, alias);
|
||||
|
||||
// For new templates, use the serialized key if avaialble.
|
||||
if (existingTemplate == null && Guid.TryParse(templateElement.Element("Key")?.Value, out var key))
|
||||
{
|
||||
template.Key = key;
|
||||
}
|
||||
|
||||
template.Content = design;
|
||||
|
||||
if (masterElement != null && string.IsNullOrEmpty((string)masterElement) == false)
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Xml.Linq;
|
||||
using Umbraco.Cms.Core.IO;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.PropertyEditors;
|
||||
using Umbraco.Cms.Core.Serialization;
|
||||
@@ -319,6 +317,7 @@ namespace Umbraco.Cms.Core.Services.Implement
|
||||
{
|
||||
var xml = new XElement("Template");
|
||||
xml.Add(new XElement("Name", template.Name));
|
||||
xml.Add(new XElement("Key", template.Key));
|
||||
xml.Add(new XElement("Alias", template.Alias));
|
||||
xml.Add(new XElement("Design", new XCData(template.Content)));
|
||||
|
||||
|
||||
@@ -327,7 +327,7 @@ namespace Umbraco.Cms.Tests.Integration.Umbraco.Core.Packaging
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.AreEqual("umbPackage", xml.Root.Name.ToString());
|
||||
Assert.AreEqual($"<Templates><Template><Name>Text page</Name><Alias>textPage</Alias><Design><![CDATA[@using Umbraco.Cms.Web.Common.PublishedModels;{Environment.NewLine}@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage{Environment.NewLine}@{{{Environment.NewLine}\tLayout = null;{Environment.NewLine}}}]]></Design></Template></Templates>", xml.Element("umbPackage").Element("Templates").ToString(SaveOptions.DisableFormatting));
|
||||
Assert.AreEqual($"<Templates><Template><Name>Text page</Name><Key>{template.Key}</Key><Alias>textPage</Alias><Design><![CDATA[@using Umbraco.Cms.Web.Common.PublishedModels;{Environment.NewLine}@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage{Environment.NewLine}@{{{Environment.NewLine}\tLayout = null;{Environment.NewLine}}}]]></Design></Template></Templates>", xml.Element("umbPackage").Element("Templates").ToString(SaveOptions.DisableFormatting));
|
||||
Assert.IsNull(xml.DocumentType);
|
||||
Assert.IsNull(xml.Parent);
|
||||
Assert.IsNull(xml.NextNode);
|
||||
|
||||
@@ -233,6 +233,34 @@ namespace Umbraco.Cms.Tests.Integration.Umbraco.Infrastructure.Packaging
|
||||
Assert.That(templates, Is.Not.Null);
|
||||
Assert.That(templates.Any(), Is.True);
|
||||
Assert.That(templates.Count(), Is.EqualTo(1));
|
||||
|
||||
var template = templates.First();
|
||||
Assert.AreEqual(template.Name, "Articles");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Import_Single_Template_With_Key()
|
||||
{
|
||||
// Arrange
|
||||
string strXml = ImportResources.StandardMvc_Package;
|
||||
var xml = XElement.Parse(strXml);
|
||||
XElement element = xml.Descendants("Templates").First();
|
||||
|
||||
var firstTemplateElement = element.Elements("Template").First();
|
||||
var key = Guid.NewGuid();
|
||||
firstTemplateElement.Add(new XElement("Key", key));
|
||||
|
||||
// Act
|
||||
IEnumerable<ITemplate> templates = PackageDataInstallation.ImportTemplate(firstTemplateElement, 0);
|
||||
|
||||
// Assert
|
||||
Assert.That(templates, Is.Not.Null);
|
||||
Assert.That(templates.Any(), Is.True);
|
||||
Assert.That(templates.Count(), Is.EqualTo(1));
|
||||
|
||||
var template = templates.First();
|
||||
Assert.AreEqual(template.Name, "Articles");
|
||||
Assert.AreEqual(template.Key, key);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
Reference in New Issue
Block a user