/// <summary> /// Actual implementation of the apply templates /// </summary> /// <param name="web"></param> /// <param name="template"></param> /// <param name="provisioningInfo"></param> internal void ApplyRemoteTemplate(Web web, ProvisioningTemplate template, ProvisioningTemplateApplyingInformation provisioningInfo) { ProvisioningProgressDelegate progressDelegate = null; ProvisioningMessagesDelegate messagesDelegate = null; if (provisioningInfo != null) { progressDelegate = provisioningInfo.ProgressDelegate; messagesDelegate = provisioningInfo.MessageDelegate; } Log.Info(Constants.LOGGING_SOURCE_FRAMEWORK_PROVISIONING, CoreResources.Provisioning_ObjectHandlers_StartProvisioning); List <ObjectHandlerBase> objectHandlers = new List <ObjectHandlerBase>(); objectHandlers.Add(new ObjectSitePolicy()); objectHandlers.Add(new ObjectSiteSecurity()); objectHandlers.Add(new ObjectFeatures()); objectHandlers.Add(new ObjectTermGroups()); objectHandlers.Add(new ObjectField()); objectHandlers.Add(new ObjectContentType()); objectHandlers.Add(new ObjectListInstance()); objectHandlers.Add(new ObjectLookupFields()); objectHandlers.Add(new ObjectListInstanceDataRows()); objectHandlers.Add(new ObjectFiles()); objectHandlers.Add(new ObjectPages()); objectHandlers.Add(new ObjectCustomActions()); objectHandlers.Add(new ObjectComposedLook()); objectHandlers.Add(new ObjectPropertyBagEntry()); objectHandlers.Add(new ObjectExtensibilityProviders()); objectHandlers.Add(new ObjectPersistTemplateInfo()); TokenParser.Initialize(web, template); int step = 1; var count = objectHandlers.Count(o => o.ReportProgress && o.WillProvision(web, template)); foreach (var handler in objectHandlers) { if (handler.WillProvision(web, template)) { if (messagesDelegate != null) { handler.MessagesDelegate = messagesDelegate; } if (handler.ReportProgress && progressDelegate != null) { progressDelegate(handler.Name, step, count); step++; } handler.ProvisionObjects(web, template, provisioningInfo); } } Log.Info(Constants.LOGGING_SOURCE_FRAMEWORK_PROVISIONING, CoreResources.Provisioning_ObjectHandlers_FinishProvisioning); }