public System.IO.Stream ToFormattedTemplate(Model.ProvisioningTemplate template) { ITemplateFormatter formatter = XMLPnPSchemaFormatter.LatestFormatter; formatter.Initialize(this._provider); return(formatter.ToFormattedTemplate(template)); }
/// <summary> /// Serializes a template to XML /// </summary> /// <param name="formatter">ITemplateFormatter object</param> /// <returns>Returns XML string for the given stream</returns> public string ToXML(ITemplateFormatter formatter = null) { formatter = formatter ?? new XMLPnPSchemaFormatter(); using (var stream = formatter.ToFormattedTemplate(this)) { return(XElement.Load(stream).ToString()); } }
private string GetFiles(XMLPnPSchemaVersion schema, string path, string folder, string ctid) { ProvisioningTemplate template = new ProvisioningTemplate(); template.Id = "FOLDEREXPORT"; template.Security = null; template.Features = null; template.ComposedLook = null; template.Files.AddRange(EnumerateFiles(folder, ctid, Properties)); ITemplateFormatter formatter = null; switch (schema) { case XMLPnPSchemaVersion.LATEST: { formatter = XMLPnPSchemaFormatter.LatestFormatter; break; } case XMLPnPSchemaVersion.V201503: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_03); #pragma warning restore CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201505: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_05); #pragma warning disable CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201508: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_08); break; } case XMLPnPSchemaVersion.V201512: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_12); break; } } var _outputStream = formatter.ToFormattedTemplate(template); StreamReader reader = new StreamReader(_outputStream); return(reader.ReadToEnd()); }
public void CanSerializeDomainObjectToXMLStream1() { using (Stream _formattedTemplate = new FileStream(this._provisioningTemplatePath1, FileMode.Open, FileAccess.Read, FileShare.Read)) { ITemplateFormatter formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(this._provisioningTemplatePath1NamespaceURI); var _pt = formatter.ToProvisioningTemplate(_formattedTemplate); var _formattedTemplateBack = formatter.ToFormattedTemplate(_pt); Assert.IsNotNull(_formattedTemplateBack); } }
public void CanSerializeDomainObjectToXML5ByIdentifier() { using (Stream _formattedTemplate = new FileStream(this._provisioningTemplatePath5, FileMode.Open, FileAccess.Read, FileShare.Read)) { ITemplateFormatter formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(this._provisioningTemplatePath5NamespaceURI); var _pt = formatter.ToProvisioningTemplate(_formattedTemplate, "SPECIALTEAM"); var _formattedTemplateBack = formatter.ToFormattedTemplate(_pt); Assert.IsTrue(formatter.IsValid(_formattedTemplateBack)); } }
public void CanSerializeToXml() { using (var ctx = TestCommon.CreateClientContext()) { var _pt = ctx.Web.GetProvisioningTemplate(); ITemplateFormatter formatter = XMLPnPSchemaFormatter.LatestFormatter; var _formattedTemplate = formatter.ToFormattedTemplate(_pt); Assert.IsNotNull(_formattedTemplate); } }
private void SaveToConnector(ProvisioningTemplate template, string uri, ITemplateFormatter formatter) { if (String.IsNullOrEmpty(template.Id)) { template.Id = Path.GetFileNameWithoutExtension(uri); } using (var stream = formatter.ToFormattedTemplate(template)) { this.Connector.SaveFileStream(uri, stream); } }
public void CanSerializeDomainObjectToXML5ByFileLink() { using (Stream _formattedTemplate = new FileStream(this._provisioningTemplatePath5, FileMode.Open, FileAccess.Read, FileShare.Read)) { ITemplateFormatter formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(this._provisioningTemplatePath5NamespaceURI); XMLTemplateProvider provider = new XMLFileSystemTemplateProvider( String.Format(@"{0}\..\..\..\Resources", AppDomain.CurrentDomain.BaseDirectory), "Templates"); formatter.Initialize(provider); var _pt = formatter.ToProvisioningTemplate(_formattedTemplate, "WORKFLOWSITE"); var _formattedTemplateBack = formatter.ToFormattedTemplate(_pt); Assert.IsTrue(formatter.IsValid(_formattedTemplateBack)); } }
protected virtual void SaveToConnector(ProvisioningTemplate template, string uri, ITemplateFormatter formatter, ITemplateProviderExtension[] extensions) { if (String.IsNullOrEmpty(template.Id)) { template.Id = Path.GetFileNameWithoutExtension(uri); } template = PreProcessSaveTemplateExtensions(extensions, template); using (var stream = formatter.ToFormattedTemplate(template)) { using (var processedStream = PostProcessSaveTemplateExtensions(extensions, stream)) { this.Connector.SaveFileStream(uri, processedStream); } } if (this.Connector is ICommitableFileConnector) { ((ICommitableFileConnector)this.Connector).Commit(); } }
private void ExtractTemplate(XMLPnPSchemaVersion schema, string path, string packageName) { SelectedWeb.EnsureProperty(w => w.Url); var creationInformation = new ProvisioningTemplateCreationInformation(SelectedWeb); if (MyInvocation.BoundParameters.ContainsKey("Handlers")) { creationInformation.HandlersToProcess = Handlers; } if (MyInvocation.BoundParameters.ContainsKey("ExcludeHandlers")) { foreach (var handler in (Handlers[])Enum.GetValues(typeof(Handlers))) { if (!ExcludeHandlers.Has(handler) && handler != Handlers.All) { Handlers = Handlers | handler; } } creationInformation.HandlersToProcess = Handlers; } var extension = ""; if (packageName != null) { if (packageName.IndexOf(".", StringComparison.Ordinal) > -1) { extension = packageName.Substring(packageName.LastIndexOf(".", StringComparison.Ordinal)).ToLower(); } else { packageName += ".pnp"; extension = ".pnp"; } } var fileSystemConnector = new FileSystemConnector(path, ""); if (extension == ".pnp") { creationInformation.FileConnector = new OpenXMLConnector(packageName, fileSystemConnector); } else { creationInformation.FileConnector = fileSystemConnector; } #pragma warning disable 618 creationInformation.PersistBrandingFiles = PersistBrandingFiles || PersistComposedLookFiles; #pragma warning restore 618 creationInformation.PersistPublishingFiles = PersistPublishingFiles; creationInformation.IncludeNativePublishingFiles = IncludeNativePublishingFiles; creationInformation.IncludeSiteGroups = IncludeSiteGroups; creationInformation.IncludeTermGroupsSecurity = IncludeTermGroupsSecurity; creationInformation.IncludeSearchConfiguration = IncludeSearchConfiguration; creationInformation.SkipVersionCheck = SkipVersionCheck; if (ContentTypeGroups != null) { creationInformation.ContentTypeGroupsToInclude = ContentTypeGroups.ToList(); } #if !SP2013 creationInformation.PersistMultiLanguageResources = PersistMultiLanguageResources; if (extension == ".pnp") { // if file is of pnp format, persist all files creationInformation.PersistBrandingFiles = true; creationInformation.PersistPublishingFiles = true; creationInformation.PersistMultiLanguageResources = true; } if (!string.IsNullOrEmpty(ResourceFilePrefix)) { creationInformation.ResourceFilePrefix = ResourceFilePrefix; } else { if (Out != null) { FileInfo fileInfo = new FileInfo(Out); var prefix = fileInfo.Name.Substring(0, fileInfo.Name.LastIndexOf(".", StringComparison.Ordinal)); creationInformation.ResourceFilePrefix = prefix; } } #endif if (ExtensibilityHandlers != null) { creationInformation.ExtensibilityHandlers = ExtensibilityHandlers.ToList(); } #pragma warning disable CS0618 // Type or member is obsolete if (NoBaseTemplate) { creationInformation.BaseTemplate = null; } else { creationInformation.BaseTemplate = SelectedWeb.GetBaseTemplate(); } #pragma warning restore CS0618 // Type or member is obsolete creationInformation.ProgressDelegate = (message, step, total) => { var percentage = Convert.ToInt32((100 / Convert.ToDouble(total)) * Convert.ToDouble(step)); WriteProgress(new ProgressRecord(0, $"Extracting Template from {SelectedWeb.Url}", message) { PercentComplete = percentage }); }; creationInformation.MessagesDelegate = (message, type) => { switch (type) { case ProvisioningMessageType.Warning: { WriteWarning(message); break; } case ProvisioningMessageType.Progress: { var activity = message; if (message.IndexOf("|") > -1) { var messageSplitted = message.Split('|'); if (messageSplitted.Length == 4) { var current = double.Parse(messageSplitted[2]); var total = double.Parse(messageSplitted[3]); subProgressRecord.RecordType = ProgressRecordType.Processing; subProgressRecord.Activity = messageSplitted[0]; subProgressRecord.StatusDescription = messageSplitted[1]; subProgressRecord.PercentComplete = Convert.ToInt32((100 / total) * current); WriteProgress(subProgressRecord); } else { subProgressRecord.Activity = "Processing"; subProgressRecord.RecordType = ProgressRecordType.Processing; subProgressRecord.StatusDescription = activity; subProgressRecord.PercentComplete = 0; WriteProgress(subProgressRecord); } } else { subProgressRecord.Activity = "Processing"; subProgressRecord.RecordType = ProgressRecordType.Processing; subProgressRecord.StatusDescription = activity; subProgressRecord.PercentComplete = 0; WriteProgress(subProgressRecord); } break; } case ProvisioningMessageType.Completed: { WriteProgress(new ProgressRecord(1, message, " ") { RecordType = ProgressRecordType.Completed }); break; } } }; if (IncludeAllTermGroups) { creationInformation.IncludeAllTermGroups = true; } else { if (IncludeSiteCollectionTermGroup) { creationInformation.IncludeSiteCollectionTermGroup = true; } } creationInformation.IncludeContentTypesFromSyndication = !ExcludeContentTypesFromSyndication.ToBool(); var template = SelectedWeb.GetProvisioningTemplate(creationInformation); // Set metadata for template, if any SetTemplateMetadata(template, TemplateDisplayName, TemplateImagePreviewUrl, TemplateProperties); if (!OutputInstance) { ITemplateFormatter formatter = null; switch (schema) { case XMLPnPSchemaVersion.LATEST: { formatter = XMLPnPSchemaFormatter.LatestFormatter; break; } case XMLPnPSchemaVersion.V201503: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_03); #pragma warning restore CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201505: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_05); #pragma warning restore CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201508: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_08); #pragma warning restore CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201512: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_12); break; } case XMLPnPSchemaVersion.V201605: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2016_05); break; } case XMLPnPSchemaVersion.V201705: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2017_05); break; } } if (extension == ".pnp") { XMLTemplateProvider provider = new XMLOpenXMLTemplateProvider( creationInformation.FileConnector as OpenXMLConnector); var templateFileName = packageName.Substring(0, packageName.LastIndexOf(".", StringComparison.Ordinal)) + ".xml"; provider.SaveAs(template, templateFileName, formatter, TemplateProviderExtensions); } else { if (Out != null) { XMLTemplateProvider provider = new XMLFileSystemTemplateProvider(path, ""); provider.SaveAs(template, Path.Combine(path, packageName), formatter, TemplateProviderExtensions); } else { var outputStream = formatter.ToFormattedTemplate(template); var reader = new StreamReader(outputStream); WriteObject(reader.ReadToEnd()); } } } else { WriteObject(template); } }
private string GetProvisioningTemplateXML(XMLPnPSchemaVersion schema, string path) { if (!this.SelectedWeb.IsPropertyAvailable("Url")) { ClientContext.Load(this.SelectedWeb, w => w.Url); ClientContext.ExecuteQueryRetry(); } var creationInformation = new ProvisioningTemplateCreationInformation(SelectedWeb); creationInformation.PersistComposedLookFiles = PersistComposedLookFiles; creationInformation.FileConnector = new FileSystemConnector(path, ""); creationInformation.BaseTemplate = this.SelectedWeb.GetBaseTemplate(); creationInformation.ProgressDelegate = (message, step, total) => { WriteProgress(new ProgressRecord(0, string.Format("Extracting Template from {0}", SelectedWeb.Url), message) { PercentComplete = (100 / total) * step }); }; creationInformation.MessagesDelegate = (message, type) => { if (type == ProvisioningMessageType.Warning) { WriteWarning(message); } }; if (IncludeAllTermGroups) { creationInformation.IncludeAllTermGroups = true; } else { if (IncludeSiteCollectionTermGroup) { creationInformation.IncludeSiteCollectionTermGroup = true; } } var template = SelectedWeb.GetProvisioningTemplate(creationInformation); ITemplateFormatter formatter = null; switch (schema) { case XMLPnPSchemaVersion.LATEST: { formatter = XMLPnPSchemaFormatter.LatestFormatter; break; } case XMLPnPSchemaVersion.V201503: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_03); break; } case XMLPnPSchemaVersion.V201505: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_05); break; } } var _outputStream = formatter.ToFormattedTemplate(template); StreamReader reader = new StreamReader(_outputStream); return(reader.ReadToEnd()); }
private string GetProvisioningTemplateXML(XMLPnPSchemaVersion schema, string path) { SelectedWeb.EnsureProperty(w => w.Url); var creationInformation = new ProvisioningTemplateCreationInformation(SelectedWeb); if (this.MyInvocation.BoundParameters.ContainsKey("Handlers")) { creationInformation.HandlersToProcess = Handlers; } if (this.MyInvocation.BoundParameters.ContainsKey("ExcludeHandlers")) { foreach (var handler in (OfficeDevPnP.Core.Framework.Provisioning.Model.Handlers[])Enum.GetValues(typeof(Handlers))) { if (!ExcludeHandlers.Has(handler) && handler != Handlers.All) { Handlers = Handlers | handler; } } creationInformation.HandlersToProcess = Handlers; } creationInformation.PersistBrandingFiles = PersistBrandingFiles || PersistComposedLookFiles; creationInformation.PersistPublishingFiles = PersistPublishingFiles; creationInformation.IncludeNativePublishingFiles = IncludeNativePublishingFiles; creationInformation.IncludeSiteGroups = IncludeSiteGroups; creationInformation.FileConnector = new FileSystemConnector(path, ""); #pragma warning disable CS0618 // Type or member is obsolete if (NoBaseTemplate) { creationInformation.BaseTemplate = null; } else { creationInformation.BaseTemplate = this.SelectedWeb.GetBaseTemplate(); } #pragma warning restore CS0618 // Type or member is obsolete creationInformation.ProgressDelegate = (message, step, total) => { WriteProgress(new ProgressRecord(0, string.Format("Extracting Template from {0}", SelectedWeb.Url), message) { PercentComplete = (100 / total) * step }); }; creationInformation.MessagesDelegate = (message, type) => { if (type == ProvisioningMessageType.Warning) { WriteWarning(message); } }; if (IncludeAllTermGroups) { creationInformation.IncludeAllTermGroups = true; } else { if (IncludeSiteCollectionTermGroup) { creationInformation.IncludeSiteCollectionTermGroup = true; } } var template = SelectedWeb.GetProvisioningTemplate(creationInformation); ITemplateFormatter formatter = null; switch (schema) { case XMLPnPSchemaVersion.LATEST: { formatter = XMLPnPSchemaFormatter.LatestFormatter; break; } case XMLPnPSchemaVersion.V201503: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_03); #pragma warning restore CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201505: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_05); break; } case XMLPnPSchemaVersion.V201508: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_08); break; } case XMLPnPSchemaVersion.V201512: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_12); break; } } var _outputStream = formatter.ToFormattedTemplate(template); StreamReader reader = new StreamReader(_outputStream); return(reader.ReadToEnd()); }
private void SaveToConnector(ProvisioningTemplate template, string uri, ITemplateFormatter formatter) { if (String.IsNullOrEmpty(template.Id)) { template.Id = Path.GetFileNameWithoutExtension(uri); } using (var stream = formatter.ToFormattedTemplate(template)) { this.Connector.SaveFileStream(uri, stream); } if (this.Connector is ICommitableFileConnector) { ((ICommitableFileConnector)this.Connector).Commit(); } }
private void ExtractTemplate(XMLPnPSchemaVersion schema, string path, string packageName) { SelectedWeb.EnsureProperty(w => w.Url); var creationInformation = new ProvisioningTemplateCreationInformation(SelectedWeb); creationInformation.HandlersToProcess = Handlers.Lists; var extension = ""; if (packageName != null) { if (packageName.IndexOf(".", StringComparison.Ordinal) > -1) { extension = packageName.Substring(packageName.LastIndexOf(".", StringComparison.Ordinal)).ToLower(); } else { packageName += ".pnp"; extension = ".pnp"; } } var fileSystemConnector = new FileSystemConnector(path, ""); if (extension == ".pnp") { creationInformation.FileConnector = new OpenXMLConnector(packageName, fileSystemConnector); } else { creationInformation.FileConnector = fileSystemConnector; } creationInformation.ProgressDelegate = (message, step, total) => { var percentage = Convert.ToInt32((100 / Convert.ToDouble(total)) * Convert.ToDouble(step)); WriteProgress(new ProgressRecord(0, $"Extracting Template from {SelectedWeb.Url}", message) { PercentComplete = percentage }); }; creationInformation.MessagesDelegate = (message, type) => { switch (type) { case ProvisioningMessageType.Warning: { WriteWarning(message); break; } case ProvisioningMessageType.Progress: { var activity = message; if (message.IndexOf("|") > -1) { var messageSplitted = message.Split('|'); if (messageSplitted.Length == 4) { var current = double.Parse(messageSplitted[2]); var total = double.Parse(messageSplitted[3]); subProgressRecord.RecordType = ProgressRecordType.Processing; subProgressRecord.Activity = messageSplitted[0]; subProgressRecord.StatusDescription = messageSplitted[1]; subProgressRecord.PercentComplete = Convert.ToInt32((100 / total) * current); WriteProgress(subProgressRecord); } else { subProgressRecord.Activity = "Processing"; subProgressRecord.RecordType = ProgressRecordType.Processing; subProgressRecord.StatusDescription = activity; subProgressRecord.PercentComplete = 0; WriteProgress(subProgressRecord); } } else { subProgressRecord.Activity = "Processing"; subProgressRecord.RecordType = ProgressRecordType.Processing; subProgressRecord.StatusDescription = activity; subProgressRecord.PercentComplete = 0; WriteProgress(subProgressRecord); } break; } case ProvisioningMessageType.Completed: { WriteProgress(new ProgressRecord(1, message, " ") { RecordType = ProgressRecordType.Completed }); break; } } }; if (List != null && List.Count > 0) { creationInformation.ListsToExtract.AddRange(List); } var template = SelectedWeb.GetProvisioningTemplate(creationInformation); if (!OutputInstance) { ITemplateFormatter formatter = null; switch (schema) { case XMLPnPSchemaVersion.LATEST: { formatter = XMLPnPSchemaFormatter.LatestFormatter; break; } case XMLPnPSchemaVersion.V201503: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_03); #pragma warning restore CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201505: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_05); #pragma warning restore CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201508: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_08); #pragma warning restore CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201512: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_12); #pragma warning restore CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201605: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2016_05); #pragma warning restore CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201705: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2017_05); break; } case XMLPnPSchemaVersion.V201801: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2018_01); break; } case XMLPnPSchemaVersion.V201805: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2018_05); break; } case XMLPnPSchemaVersion.V201807: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2018_07); break; } case XMLPnPSchemaVersion.V201903: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2019_03); break; } case XMLPnPSchemaVersion.V201909: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2019_09); break; } } if (extension == ".pnp") { #if !NETSTANDARD2_1 IsolatedStorage.InitializeIsolatedStorage(); #endif XMLTemplateProvider provider = new XMLOpenXMLTemplateProvider( creationInformation.FileConnector as OpenXMLConnector); var templateFileName = packageName.Substring(0, packageName.LastIndexOf(".", StringComparison.Ordinal)) + ".xml"; provider.SaveAs(template, templateFileName, formatter, null); } else { if (Out != null) { XMLTemplateProvider provider = new XMLFileSystemTemplateProvider(path, ""); provider.SaveAs(template, Path.Combine(path, packageName), formatter, null); } else { var outputStream = formatter.ToFormattedTemplate(template); var reader = new StreamReader(outputStream); WriteObject(reader.ReadToEnd()); } } } else { WriteObject(template); } }
private void ExtractTemplate(XMLPnPSchemaVersion schema, string path, string packageName) { SelectedWeb.EnsureProperty(w => w.Url); var creationInformation = new ProvisioningTemplateCreationInformation(SelectedWeb); if (this.MyInvocation.BoundParameters.ContainsKey("Handlers")) { creationInformation.HandlersToProcess = Handlers; } if (this.MyInvocation.BoundParameters.ContainsKey("ExcludeHandlers")) { foreach (var handler in (OfficeDevPnP.Core.Framework.Provisioning.Model.Handlers[])Enum.GetValues(typeof(Handlers))) { if (!ExcludeHandlers.Has(handler) && handler != Handlers.All) { Handlers = Handlers | handler; } } creationInformation.HandlersToProcess = Handlers; } var extension = ""; if (packageName != null) { if (packageName.IndexOf(".") > -1) { extension = packageName.Substring(packageName.LastIndexOf(".")).ToLower(); } else { packageName += ".pnp"; extension = ".pnp"; } } var fileSystemConnector = new FileSystemConnector(path, ""); if (extension == ".pnp") { creationInformation.FileConnector = new OpenXMLConnector(packageName, fileSystemConnector); } else { creationInformation.FileConnector = fileSystemConnector; } #pragma warning disable 618 creationInformation.PersistBrandingFiles = PersistBrandingFiles || PersistComposedLookFiles; #pragma warning restore 618 creationInformation.PersistPublishingFiles = PersistPublishingFiles; creationInformation.IncludeNativePublishingFiles = IncludeNativePublishingFiles; creationInformation.IncludeSiteGroups = IncludeSiteGroups; creationInformation.IncludeTermGroupsSecurity = IncludeTermGroupsSecurity; #if !SP2013 creationInformation.PersistMultiLanguageResources = PersistMultiLanguageResources; if (!string.IsNullOrEmpty(ResourceFilePrefix)) { creationInformation.ResourceFilePrefix = ResourceFilePrefix; } else { if (Out != null) { FileInfo fileInfo = new FileInfo(Out); var prefix = fileInfo.Name.Substring(0, fileInfo.Name.LastIndexOf(".")); creationInformation.ResourceFilePrefix = prefix; } } #endif if (ExtensibilityHandlers != null) { creationInformation.ExtensibilityHandlers = ExtensibilityHandlers.ToList <ExtensibilityHandler>(); } #pragma warning disable CS0618 // Type or member is obsolete if (NoBaseTemplate) { creationInformation.BaseTemplate = null; } else { creationInformation.BaseTemplate = this.SelectedWeb.GetBaseTemplate(); } #pragma warning restore CS0618 // Type or member is obsolete creationInformation.ProgressDelegate = (message, step, total) => { WriteProgress(new ProgressRecord(0, string.Format("Extracting Template from {0}", SelectedWeb.Url), message) { PercentComplete = (100 / total) * step }); }; creationInformation.MessagesDelegate = (message, type) => { if (type == ProvisioningMessageType.Warning) { WriteWarning(message); } }; if (IncludeAllTermGroups) { creationInformation.IncludeAllTermGroups = true; } else { if (IncludeSiteCollectionTermGroup) { creationInformation.IncludeSiteCollectionTermGroup = true; } } var template = SelectedWeb.GetProvisioningTemplate(creationInformation); // Set metadata for template, if any SetTemplateMetadata(template, TemplateDisplayName, TemplateImagePreviewUrl, TemplateProperties); ITemplateFormatter formatter = null; switch (schema) { case XMLPnPSchemaVersion.LATEST: { formatter = XMLPnPSchemaFormatter.LatestFormatter; break; } case XMLPnPSchemaVersion.V201503: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_03); #pragma warning restore CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201505: { #pragma warning disable CS0618 // Type or member is obsolete formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_05); #pragma warning restore CS0618 // Type or member is obsolete break; } case XMLPnPSchemaVersion.V201508: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_08); break; } case XMLPnPSchemaVersion.V201512: { formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLConstants.PROVISIONING_SCHEMA_NAMESPACE_2015_12); break; } } if (extension == ".pnp") { XMLTemplateProvider provider = new XMLOpenXMLTemplateProvider( creationInformation.FileConnector as OpenXMLConnector); var templateFileName = packageName.Substring(0, packageName.LastIndexOf(".")) + ".xml"; provider.SaveAs(template, templateFileName, formatter, TemplateProviderExtensions); } else { if (Out != null) { XMLTemplateProvider provider = new XMLFileSystemTemplateProvider(path, ""); provider.SaveAs(template, Path.Combine(path, packageName), formatter, TemplateProviderExtensions); } else { var _outputStream = formatter.ToFormattedTemplate(template); StreamReader reader = new StreamReader(_outputStream); WriteObject(reader.ReadToEnd()); } } }