Пример #1
0
        public override List <ProvisioningTemplate> GetTemplates(ITemplateFormatter formatter)
        {
            List <ProvisioningTemplate> result = new List <ProvisioningTemplate>();

            // Retrieve the list of available template files
            List <String> files = this.Connector.GetFiles();

            // For each file
            foreach (var file in files)
            {
                if (file.EndsWith(".json", StringComparison.InvariantCultureIgnoreCase))
                {
                    // Load it from a File Stream
                    Stream stream = this.Connector.GetFileStream(file);

                    // And convert it into a ProvisioningTemplate
                    ProvisioningTemplate provisioningTemplate = formatter.ToProvisioningTemplate(stream);

                    // Add the template to the result
                    result.Add(provisioningTemplate);
                }
            }

            return(result);
        }
Пример #2
0
        public override ProvisioningTemplate GetTemplate(string uri, string identifier, ITemplateFormatter formatter)
        {
            if (String.IsNullOrEmpty(uri))
            {
                throw new ArgumentException("uri");
            }

            // Get the XML document from a File Stream
            Stream stream = this.Connector.GetFileStream(uri);

            if (stream == null)
            {
                throw new ApplicationException(string.Format(CoreResources.Provisioning_Formatter_Invalid_Template_URI, uri));
            }

            //Resolve xml includes if any
            stream = ResolveXIncludes(stream);

            // And convert it into a ProvisioningTemplate
            ProvisioningTemplate provisioningTemplate = formatter.ToProvisioningTemplate(stream, identifier);

            // Store the identifier of this template, is needed for latter save operation
            this.Uri = uri;

            return(provisioningTemplate);
        }
Пример #3
0
        public override List<ProvisioningTemplate> GetTemplates(ITemplateFormatter formatter)
        {
            List<ProvisioningTemplate> result = new List<ProvisioningTemplate>();

            // Retrieve the list of available template files
            List<String> files = this.Connector.GetFiles();

            // For each file
            foreach (var file in files)
            {
                if (file.EndsWith(".json", StringComparison.InvariantCultureIgnoreCase))
                {
                    // Load it from a File Stream
                    Stream stream = this.Connector.GetFileStream(file);

                    // And convert it into a ProvisioningTemplate
                    ProvisioningTemplate provisioningTemplate = formatter.ToProvisioningTemplate(stream);

                    // Add the template to the result
                    result.Add(provisioningTemplate);
                }
            }

            return (result);
        }
Пример #4
0
        public static ProvisioningTemplate GetBaseTemplate(this Web web)
        {
            web.Context.Load(web, p => p.WebTemplate, p => p.Configuration);
            web.Context.ExecuteQueryRetry();

            ProvisioningTemplate provisioningTemplate = null;

            try
            {
                string baseTemplate = string.Format("OfficeDevPnP.Core.Framework.Provisioning.BaseTemplates.v{0}.{1}{2}Template.xml", GetSharePointVersion(), web.WebTemplate, web.Configuration);
                using (Stream stream = typeof(BaseTemplateManager).Assembly.GetManifestResourceStream(baseTemplate))
                {
                    // Get the XML document from the stream
                    ITemplateFormatter formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(XMLPnPSchemaVersion.V201503);

                    // And convert it into a ProvisioningTemplate
                    provisioningTemplate = formatter.ToProvisioningTemplate(stream);
                }
            }
            catch (Exception)
            {
                //TODO: log message
            }

            return(provisioningTemplate);
        }
Пример #5
0
        /// <summary>
        /// This method returns the reference template for publishing feature
        /// </summary>
        /// <returns>The reference template for publishing feature</returns>
        private ProvisioningTemplate GetPublishingFeatureBaseTemplate()
        {
            ProvisioningTemplate result = null;

            string nativeFilesTemplatePath = string.Format("OfficeDevPnP.Core.Framework.Provisioning.BaseTemplates.Common.Publishing-Feature-Native-Files.xml");

            using (Stream stream = typeof(BaseTemplateManager).Assembly.GetManifestResourceStream(nativeFilesTemplatePath))
            {
                // Figure out the formatter to use
                XDocument xTemplate             = XDocument.Load(stream);
                var       namespaceDeclarations = xTemplate.Root.Attributes().Where(a => a.IsNamespaceDeclaration).
                                                  GroupBy(a => a.Name.Namespace == XNamespace.None ? String.Empty : a.Name.LocalName,
                                                          a => XNamespace.Get(a.Value)).
                                                  ToDictionary(g => g.Key,
                                                               g => g.First());
                var pnpns = namespaceDeclarations["pnp"];

                stream.Seek(0, SeekOrigin.Begin);

                // Get the XML document from the stream
                ITemplateFormatter formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(pnpns.NamespaceName);

                // And convert it into a template
                result = formatter.ToProvisioningTemplate(stream);
            }

            return(result);
        }
Пример #6
0
        public static ProvisioningTemplate GetBaseTemplate(this Web web, string webTemplate, short configuration)
        {
            ProvisioningTemplate provisioningTemplate = null;

            try
            {
                string baseTemplate = string.Format("OfficeDevPnP.Core.Framework.Provisioning.BaseTemplates.v{0}.{1}{2}Template.xml", GetSharePointVersion(), webTemplate, configuration);
                using (Stream stream = typeof(BaseTemplateManager).Assembly.GetManifestResourceStream(baseTemplate))
                {
                    // Figure out the formatter to use
                    XDocument z      = XDocument.Load(stream);
                    var       result = z.Root.Attributes().Where(a => a.IsNamespaceDeclaration).
                                       GroupBy(a => a.Name.Namespace == XNamespace.None ? String.Empty : a.Name.LocalName,
                                               a => XNamespace.Get(a.Value)).
                                       ToDictionary(g => g.Key,
                                                    g => g.First());
                    var pnpns = result["pnp"];

                    stream.Seek(0, SeekOrigin.Begin);
                    // Get the XML document from the stream
                    ITemplateFormatter formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(pnpns.NamespaceName);

                    // And convert it into a ProvisioningTemplate

                    provisioningTemplate = formatter.ToProvisioningTemplate(stream);
                }
            }
            catch (Exception ex)
            {
                OfficeDevPnP.Core.Diagnostics.Log.Error(ex, "Provisioning", "Error occured while retrieving basetemplate");
            }

            return(provisioningTemplate);
        }
Пример #7
0
        public void CanSerializeDomainObjectWithJsonFormatter()
        {
            using (Stream _formattedTemplate = new FileStream(this._provisioningTemplatePath5, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                ITemplateFormatter formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(this._provisioningTemplatePath5NamespaceURI);

                XMLTemplateProvider xmlProvider =
                    new XMLFileSystemTemplateProvider(
                        String.Format(@"{0}\..\..\Resources",
                                      AppDomain.CurrentDomain.BaseDirectory),
                        "Templates");

                formatter.Initialize(xmlProvider);
                var _pt = formatter.ToProvisioningTemplate(_formattedTemplate, "WORKFLOWSITE");

                JsonTemplateProvider jsonProvider =
                    new JsonFileSystemTemplateProvider(
                        String.Format(@"{0}\..\..\Resources",
                                      AppDomain.CurrentDomain.BaseDirectory),
                        "Templates");

                jsonProvider.SaveAs(_pt, @"c:\temp\ProvisioningSchema-2015-05-ReferenceSample-01.json");

                var _ptBack = jsonProvider.GetTemplate(@"c:\temp\ProvisioningSchema-2015-05-ReferenceSample-01.json");

                Assert.IsTrue(_pt.Equals(_ptBack));
            }
        }
Пример #8
0
        public Model.ProvisioningTemplate ToProvisioningTemplate(System.IO.Stream template, String identifier)
        {
            ITemplateFormatter formatter = this.GetSpecificFormatterInternal(ref template);

            formatter.Initialize(this._provider);
            return(formatter.ToProvisioningTemplate(template, identifier));
        }
        public override ProvisioningTemplate GetTemplate(string uri, string identifier, ITemplateFormatter formatter)
        {
            if (String.IsNullOrEmpty(uri))
            {
                throw new ArgumentException("uri");
            }

            // Get the XML document from a File Stream
            Stream stream = this.Connector.GetFileStream(uri);

            if (stream == null)
            {
                throw new ApplicationException(string.Format(CoreResources.Provisioning_Formatter_Invalid_Template_URI, uri));
            }

            //Resolve xml includes if any
            stream = ResolveXIncludes(stream);

            // And convert it into a ProvisioningTemplate
            ProvisioningTemplate provisioningTemplate = formatter.ToProvisioningTemplate(stream, identifier);

            // Store the identifier of this template, is needed for latter save operation
            this.Uri = uri;

            return (provisioningTemplate);
        }
 /// <summary>
 /// Test Support to return ProvisionTemplate
 /// </summary>
 /// <returns></returns>
 protected ProvisioningTemplate GetProvisioningTemplate()
 {
     using (Stream _formattedTemplate = new FileStream(this._provisioningTemplatePath8, FileMode.Open, FileAccess.Read, FileShare.Read))
     {
         ITemplateFormatter formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(this._provisioningTemplatePath8NamespaceURI);
         return(formatter.ToProvisioningTemplate(_formattedTemplate));
     }
 }
 public void CanDeserializeXMLToDomainObjectFrom201512Full()
 {
     using (Stream _formattedTemplate = new FileStream(this._provisioningTemplatePath8, FileMode.Open, FileAccess.Read, FileShare.Read))
     {
         ITemplateFormatter formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(this._provisioningTemplatePath8NamespaceURI);
         var _pt = formatter.ToProvisioningTemplate(_formattedTemplate);
         Assert.IsNotNull(_pt);
     }
 }
        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 CanSerializeDomainObjectToMarkdown()
        {
            using (Stream _formattedTemplate = new FileStream(this._provisioningTemplatePath9, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                ITemplateFormatter formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(this._provisioningTemplatePath9NamespaceURI);
                var _pt = formatter.ToProvisioningTemplate(_formattedTemplate);
                ITemplateFormatter mdFormatter = new MarkdownPnPFormatter();
                var outputStream = mdFormatter.ToFormattedTemplate(_pt);

                Assert.IsTrue(mdFormatter.IsValid(outputStream));
            }
        }
        public override ProvisioningTemplate GetTemplate(string uri, string identifier, ITemplateFormatter formatter)
        {
            if (String.IsNullOrEmpty(uri))
            {
                throw new ArgumentException("uri");
            }

            // Get the XML document from a File Stream
            Stream stream = this.Connector.GetFileStream(uri);

            // And convert it into a ProvisioningTemplate
            ProvisioningTemplate provisioningTemplate = formatter.ToProvisioningTemplate(stream, identifier);

            // Store the identifier of this template, is needed for latter save operation
            this.Uri = uri;

            return (provisioningTemplate);
        }
Пример #16
0
        public override ProvisioningTemplate GetTemplate(string uri, string identifier, ITemplateFormatter formatter)
        {
            if (String.IsNullOrEmpty(uri))
            {
                throw new ArgumentException("uri");
            }

            // Get the XML document from a File Stream
            Stream stream = this.Connector.GetFileStream(uri);

            // And convert it into a ProvisioningTemplate
            ProvisioningTemplate provisioningTemplate = formatter.ToProvisioningTemplate(stream, identifier);

            // Store the identifier of this template, is needed for latter save operation
            this.Uri = uri;

            return(provisioningTemplate);
        }
        public void AreTemplatesEqual()
        {
            ProvisioningTemplate _pt1 = null;
            ProvisioningTemplate _pt2 = null;

            using (Stream _formattedTemplate = new FileStream(this._provisioningTemplatePath1, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                ITemplateFormatter formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(this._provisioningTemplatePath1NamespaceURI);
                _pt1 = formatter.ToProvisioningTemplate(_formattedTemplate);
            }

            using (Stream _formattedTemplate = new FileStream(this._provisioningTemplatePath2, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                ITemplateFormatter formatter = XMLPnPSchemaFormatter.GetSpecificFormatter(this._provisioningTemplatePath1NamespaceURI);
                _pt2 = formatter.ToProvisioningTemplate(_formattedTemplate);
            }

            Assert.IsFalse(_pt1.Equals(_pt2));
            Assert.IsTrue(_pt1.Equals(_pt1));
        }
        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));
            }
        }
Пример #19
0
        public override List <ProvisioningTemplate> GetTemplates(ITemplateFormatter formatter)
        {
            List <ProvisioningTemplate> result = new List <ProvisioningTemplate>();

            // Retrieve the list of available template files
            List <String> files = this.Connector.GetFiles();

            // For each file
            foreach (var file in files)
            {
                if (file.EndsWith(".xml", StringComparison.InvariantCultureIgnoreCase))
                {
                    // Load it from a File Stream
                    Stream stream = this.Connector.GetFileStream(file);

                    ProvisioningTemplate provisioningTemplate;
                    try
                    {
                        // And convert it into a ProvisioningTemplate
                        provisioningTemplate = formatter.ToProvisioningTemplate(stream);
                    }
                    catch (ApplicationException)
                    {
                        Log.Warning(Constants.LOGGING_SOURCE_FRAMEWORK_PROVISIONING, CoreResources.Provisioning_Providers_XML_InvalidFileFormat, file);
                        continue;
                    }

                    if (provisioningTemplate != null)
                    {
                        // Add the template to the result
                        result.Add(provisioningTemplate);
                    }
                }
            }

            return(result);
        }
Пример #20
0
        public override List<ProvisioningTemplate> GetTemplates(ITemplateFormatter formatter)
        {
            List<ProvisioningTemplate> result = new List<ProvisioningTemplate>();

            // Retrieve the list of available template files
            List<String> files = this.Connector.GetFiles();

            // For each file
            foreach (var file in files)
            {
                if (file.EndsWith(".xml", StringComparison.InvariantCultureIgnoreCase))
                {
                    // Load it from a File Stream
                    Stream stream = this.Connector.GetFileStream(file);

                    ProvisioningTemplate provisioningTemplate;
                    try
                    {
                        // And convert it into a ProvisioningTemplate
                        provisioningTemplate = formatter.ToProvisioningTemplate(stream);
                    }
                    catch (ApplicationException)
                    {
                        Log.Warning(Constants.LOGGING_SOURCE_FRAMEWORK_PROVISIONING, CoreResources.Provisioning_Providers_XML_InvalidFileFormat, file);
                        continue;
                    }

                    if (provisioningTemplate != null)
                    {
                        // Add the template to the result
                        result.Add(provisioningTemplate);
                    }
                }
            }

            return (result);
        }