Adding export of templates to PackagingService

This commit is contained in:
Morten Christensen
2014-01-17 13:55:34 +01:00
parent 12314f16a2
commit 9164567abe
2 changed files with 79 additions and 0 deletions

View File

@@ -144,5 +144,21 @@ namespace Umbraco.Core.Services
/// <param name="raiseEvents">Optional parameter indicating whether or not to raise events</param>
/// <returns><see cref="XElement"/> containing the xml representation of the IDataTypeDefinition object</returns>
XElement Export(IDataTypeDefinition dataTypeDefinition, bool raiseEvents = true);
/// <summary>
/// Exports a list of <see cref="ITemplate"/> items to xml as an <see cref="XElement"/>
/// </summary>
/// <param name="templates">List of Templates to export</param>
/// <param name="raiseEvents">Optional parameter indicating whether or not to raise events</param>
/// <returns><see cref="XElement"/> containing the xml representation of the ITemplate objects</returns>
XElement Export(IEnumerable<ITemplate> templates, bool raiseEvents = true);
/// <summary>
/// Exports a single <see cref="ITemplate"/> item to xml as an <see cref="XElement"/>
/// </summary>
/// <param name="template">Template to export</param>
/// <param name="raiseEvents">Optional parameter indicating whether or not to raise events</param>
/// <returns><see cref="XElement"/> containing the xml representation of the ITemplate object</returns>
XElement Export(ITemplate template, bool raiseEvents = true);
}
}

View File

@@ -1151,6 +1151,7 @@ namespace Umbraco.Core.Services
#endregion
#region Macros
#endregion
#region Members
@@ -1416,6 +1417,58 @@ namespace Umbraco.Core.Services
return IOHelper.MapPath(SystemDirectories.Masterpages + "/" + alias.Replace(" ", "") + ".master");
}
/// <summary>
/// Exports a list of <see cref="ITemplate"/> items to xml as an <see cref="XElement"/>
/// </summary>
/// <param name="templates">List of Templates to export</param>
/// <param name="raiseEvents">Optional parameter indicating whether or not to raise events</param>
/// <returns><see cref="XElement"/> containing the xml representation of the ITemplate objects</returns>
public XElement Export(IEnumerable<ITemplate> templates, bool raiseEvents = true)
{
var xml = new XElement("Templates");
foreach (var item in templates)
{
xml.Add(Export(item, raiseEvents));
}
return xml;
}
/// <summary>
/// Exports a single <see cref="ITemplate"/> item to xml as an <see cref="XElement"/>
/// </summary>
/// <param name="template">Template to export</param>
/// <param name="raiseEvents">Optional parameter indicating whether or not to raise events</param>
/// <returns><see cref="XElement"/> containing the xml representation of the ITemplate object</returns>
public XElement Export(ITemplate template, bool raiseEvents = true)
{
if (raiseEvents)
{
if (ExportingTemplate.IsRaisedEventCancelled(new SaveEventArgs<ITemplate>(template), this))
return default(XElement);
}
var xml = new XElement("Template");
xml.Add(new XElement("Name", template.Name));
xml.Add(new XElement("Alias", template.Alias));
xml.Add(new XElement("Design", new XCData(template.Content)));
var concreteTemplate = template as Template;
if (concreteTemplate != null)
{
if (concreteTemplate.MasterTemplateId.IsValueCreated &&
concreteTemplate.MasterTemplateId.Value != default(int))
{
xml.Add(new XElement("Master", concreteTemplate.MasterTemplateId.ToString()));
xml.Add(new XElement("MasterAlias", concreteTemplate.MasterTemplateAlias));
}
}
if (raiseEvents)
ExportedTemplate.RaiseEvent(new SaveEventArgs<XElement>(xml, false), this);
return xml;
}
#endregion
#region Stylesheets
@@ -1541,6 +1594,16 @@ namespace Umbraco.Core.Services
/// Occurs after Template is Imported and Saved
/// </summary>
public static event TypedEventHandler<IPackagingService, SaveEventArgs<ITemplate>> ImportedTemplate;
/// <summary>
/// Occurs before Exporting Template
/// </summary>
public static event TypedEventHandler<IPackagingService, SaveEventArgs<ITemplate>> ExportingTemplate;
/// <summary>
/// Occurs after Template is Exported to Xml
/// </summary>
public static event TypedEventHandler<IPackagingService, SaveEventArgs<XElement>> ExportedTemplate;
#endregion
}
}