本文整理汇总了C#中Web.ApplyProvisioningTemplate方法的典型用法代码示例。如果您正苦于以下问题:C# Web.ApplyProvisioningTemplate方法的具体用法?C# Web.ApplyProvisioningTemplate怎么用?C# Web.ApplyProvisioningTemplate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Web
的用法示例。
在下文中一共展示了Web.ApplyProvisioningTemplate方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ApplyOpenXML
// ===========================================================================================================
/// <summary>
/// Applies the current template as an open XML ".pnp" package on the specified web
/// </summary>
/// <param name="web">The <b>Web</b> on which to apply the template</param>
/// <param name="templateProvider">The <b>XMLTemplateProvider</b> that is mapped to the client's working directory</param>
// ===========================================================================================================
private void ApplyOpenXML(Web web, XMLTemplateProvider templateProvider)
{
logger.Info("Applying open XML package '{0}' from file '{1}'", this.Name, this.Path);
// --------------------------------------------------
// Formats the template's execution rendering
// --------------------------------------------------
ProvisioningTemplateApplyingInformation ptai = GetTemplateApplyInfo();
// --------------------------------------------------
// Replaces the regular provider by an OpenXml one
// --------------------------------------------------
string workingDirectory = templateProvider.Connector.Parameters[PARAMETER_CONNECTION_STRING].ToString();
FileSystemConnector fileSystemConnector = new FileSystemConnector(workingDirectory, "");
OpenXMLConnector openXmlConnector = new OpenXMLConnector(this.Path, fileSystemConnector);
XMLTemplateProvider openXmlTemplateProvider = new XMLOpenXMLTemplateProvider(openXmlConnector);
// --------------------------------------------------
// Loops through all templates within the .pnp package
// --------------------------------------------------
List<ProvisioningTemplate> templates = openXmlTemplateProvider.GetTemplates();
foreach (ProvisioningTemplate template in templates)
{
logger.Info("Applying template '{0}' from file '{1}'", template.Id, this.Path);
// --------------------------------------------------
// Applies the template
// --------------------------------------------------
template.Connector = openXmlTemplateProvider.Connector;
web.ApplyProvisioningTemplate(template, ptai);
}
}
示例2: UpdateTemplateOnWeb
private void UpdateTemplateOnWeb(Web targetWeb, RefreshSitesJob job)
{
targetWeb.EnsureProperty(w => w.Url);
var infoJson = targetWeb.GetPropertyBagValueString(PnPPartnerPackConstants.PropertyBag_TemplateInfo, null);
if (!String.IsNullOrEmpty(infoJson))
{
Console.WriteLine($"Updating template for site: {targetWeb.Url}");
var info = JsonConvert.DeserializeObject<SiteTemplateInfo>(infoJson);
// If we have the template info
if (info != null && !String.IsNullOrEmpty(info.TemplateProviderType))
{
ProvisioningTemplate template = null;
// Try to retrieve the template
var templatesProvider = PnPPartnerPackSettings.TemplatesProviders[info.TemplateProviderType];
if (templatesProvider != null)
{
template = templatesProvider.GetProvisioningTemplate(info.TemplateUri);
}
// If we have the template
if (template != null)
{
// Configure proper settings for the provisioning engine
ProvisioningTemplateApplyingInformation ptai =
new ProvisioningTemplateApplyingInformation();
// Write provisioning steps on console log
ptai.MessagesDelegate += delegate (string message, ProvisioningMessageType messageType)
{
Console.WriteLine("{0} - {1}", messageType, messageType);
};
ptai.ProgressDelegate += delegate (string message, int step, int total)
{
Console.WriteLine("{0:00}/{1:00} - {2}", step, total, message);
};
// Exclude handlers not supported in App-Only
ptai.HandlersToProcess ^=
OfficeDevPnP.Core.Framework.Provisioning.Model.Handlers.TermGroups;
ptai.HandlersToProcess ^=
OfficeDevPnP.Core.Framework.Provisioning.Model.Handlers.SearchSettings;
// Configure template parameters
if (info.TemplateParameters != null)
{
foreach (var key in info.TemplateParameters.Keys)
{
if (info.TemplateParameters.ContainsKey(key))
{
template.Parameters[key] = info.TemplateParameters[key];
}
}
}
targetWeb.ApplyProvisioningTemplate(template, ptai);
// Save the template information in the target site
var updatedInfo = new SiteTemplateInfo()
{
TemplateProviderType = info.TemplateProviderType,
TemplateUri = info.TemplateUri,
TemplateParameters = template.Parameters,
AppliedOn = DateTime.Now,
};
var jsonInfo = JsonConvert.SerializeObject(updatedInfo);
targetWeb.SetPropertyBagValue(PnPPartnerPackConstants.PropertyBag_TemplateInfo, jsonInfo);
Console.WriteLine($"Updated template on site: {targetWeb.Url}");
// Update (recursively) all the subwebs of the current web
targetWeb.EnsureProperty(w => w.Webs);
foreach (var subweb in targetWeb.Webs)
{
UpdateTemplateOnWeb(subweb, job);
}
}
}
}
}
示例3: ApplyTemplate
public static bool ApplyTemplate(Web web, string provisioningFolder, string templateFile)
{
var template = GetTemplateFromUrl(provisioningFolder, templateFile);
if (template != null)
{
try
{
// Change files location
foreach(var file in template.Files)
{
file.Src = string.Concat(provisioningFolder, file.Src);
}
web.ApplyProvisioningTemplate(template);
Console.WriteLine("INFO: ProvisioningHelper.ApplyTemplate({0}) - {1}", templateFile, "Provisioning template has been applied!");
return true;
}
catch (Exception ex)
{
Console.WriteLine("ERROR: ProvisioningHelper.ApplyTemplate({0}) - {1}", templateFile, ex.Message);
return false;
}
}
else
{
Console.WriteLine("INFO: ProvisioningHelper.ApplyTemplate({0}) - {1}", templateFile, "Provisioning Template is NULL");
return false;
}
}
示例4: ApplyRegularXML
// ===========================================================================================================
/// <summary>
/// Applies the current template as a regular XML template on the specified web
/// </summary>
/// <param name="web">The <b>Web</b> on which to apply the template</param>
/// <param name="templateProvider">The <b>XMLTemplateProvider</b> that is mapped to the client's working directory</param>
// ===========================================================================================================
private void ApplyRegularXML(Web web, XMLTemplateProvider templateProvider)
{
logger.Info("Applying template '{0}' from file '{1}'", this.Name, this.Path);
// --------------------------------------------------
// Formats the template's execution rendering
// --------------------------------------------------
ProvisioningTemplateApplyingInformation ptai = GetTemplateApplyInfo();
// --------------------------------------------------
// Loads the template
// --------------------------------------------------
ProvisioningTemplate template = templateProvider.GetTemplate(this.Path);
template.Connector = templateProvider.Connector;
// --------------------------------------------------
// Applies the template
// --------------------------------------------------
web.ApplyProvisioningTemplate(template, ptai);
}
示例5: ApplyBrandingOnWeb
public static void ApplyBrandingOnWeb(Web targetWeb, BrandingSettings brandingSettings, ProvisioningTemplate template)
{
targetWeb.EnsureProperties(w => w.MasterUrl, w => w.Url);
// Configure proper settings for the provisioning engine
ProvisioningTemplateApplyingInformation ptai =
new ProvisioningTemplateApplyingInformation();
// Write provisioning steps on console log
ptai.MessagesDelegate += delegate (string message, ProvisioningMessageType messageType) {
Console.WriteLine("{0} - {1}", messageType, messageType);
};
ptai.ProgressDelegate += delegate (string message, int step, int total) {
Console.WriteLine("{0:00}/{1:00} - {2}", step, total, message);
};
// Include only required handlers
ptai.HandlersToProcess = Core.Framework.Provisioning.Model.Handlers.ComposedLook |
Core.Framework.Provisioning.Model.Handlers.Files |
Core.Framework.Provisioning.Model.Handlers.WebSettings;
// Check if we really need to apply/update the branding
var siteBrandingUpdatedOn = targetWeb.GetPropertyBagValueString(
PnPPartnerPackConstants.PropertyBag_Branding_AppliedOn, null);
// If the branding updated on date and time are missing
// or older than the branding update date and time
if (String.IsNullOrEmpty(siteBrandingUpdatedOn) ||
DateTime.Parse(siteBrandingUpdatedOn) < brandingSettings.UpdatedOn.Value.ToUniversalTime())
{
Console.WriteLine($"Appling branding to site: {targetWeb.Url}");
// Confirm the master page URL
template.WebSettings.MasterPageUrl = targetWeb.MasterUrl;
// Apply the template
targetWeb.ApplyProvisioningTemplate(template, ptai);
// Apply a custom JSLink, if any
if (!String.IsNullOrEmpty(brandingSettings.UICustomActionsUrl))
{
targetWeb.AddJsLink(
PnPPartnerPackConstants.BRANDING_SCRIPT_LINK_KEY,
brandingSettings.UICustomActionsUrl);
}
// Store Property Bag to set the last date and time when we applied the branding
targetWeb.SetPropertyBagValue(
PnPPartnerPackConstants.PropertyBag_Branding_AppliedOn,
DateTime.Now.ToUniversalTime().ToString());
Console.WriteLine($"Applied branding to site: {targetWeb.Url}");
}
// Apply branding (recursively) on all the subwebs of the current web
targetWeb.EnsureProperty(w => w.Webs);
foreach (var subweb in targetWeb.Webs)
{
ApplyBrandingOnWeb(subweb, brandingSettings, template);
}
}