public static ModelNode AddMasterPageSettings(this ModelNode model, MasterPageSettingsDefinition definition, Action<ModelNode> action) { return model.AddDefinitionNode(definition, action); }
private void DeployMasterPageSettings(object modelHost, WebModelHost webModelHost, MasterPageSettingsDefinition masterPageSettings) { var site = webModelHost.HostSite; var web = webModelHost.HostWeb; var sContext = site.Context; sContext.Load(site, s => s.ServerRelativeUrl); sContext.ExecuteQueryWithTrace(); var siteRelativeUrl = site.ServerRelativeUrl; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Resolving server relative URL: [{0}]", siteRelativeUrl); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = web, ObjectType = typeof(Web), ObjectDefinition = masterPageSettings, ModelHost = modelHost }); // TODO, https://github.com/SubPointSolutions/spmeta2/issues/761 // re-implement with native prop bag to suport SP2010 // SP2010 CSOM does not have CustomMasterUrl / MasterUrl props #if !NET35 if (!string.IsNullOrEmpty(masterPageSettings.SiteMasterPageUrl)) { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting web.MasterUrlL: [{0}]", masterPageSettings.SiteMasterPageUrl); web.CustomMasterUrl = UrlUtility.CombineUrl(siteRelativeUrl, masterPageSettings.SiteMasterPageUrl); } if (!string.IsNullOrEmpty(masterPageSettings.SystemMasterPageUrl)) { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting web.CustomMasterUrl: [{0}]", masterPageSettings.SystemMasterPageUrl); web.MasterUrl = UrlUtility.CombineUrl(siteRelativeUrl, masterPageSettings.SystemMasterPageUrl); } #endif if (!string.IsNullOrEmpty(masterPageSettings.SiteMasterPageUrl) || !string.IsNullOrEmpty(masterPageSettings.SystemMasterPageUrl)) { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = web, ObjectType = typeof(Web), ObjectDefinition = masterPageSettings, ModelHost = modelHost }); TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Calling web.Update()"); web.Update(); web.Context.ExecuteQueryWithTrace(); } else { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = web, ObjectType = typeof(Web), ObjectDefinition = masterPageSettings, ModelHost = modelHost }); } }
public static ModelNode AddMasterPageSettings(this ModelNode model, MasterPageSettingsDefinition definition) { return AddMasterPageSettings(model, definition, null); }
private void DeployMasterPageSettings(object modelHost, WebModelHost webModelHost, MasterPageSettingsDefinition masterPageSettings) { var web = webModelHost.HostWeb; var site = web.Site; var siteRelativeUrl = site.ServerRelativeUrl; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Resolving server relative URL: [{0}]", siteRelativeUrl); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = web, ObjectType = typeof(SPWeb), ObjectDefinition = masterPageSettings, ModelHost = modelHost }); if (!string.IsNullOrEmpty(masterPageSettings.SiteMasterPageUrl)) { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting web.MasterUrlL: [{0}]", masterPageSettings.SiteMasterPageUrl); web.CustomMasterUrl = SPUrlUtility.CombineUrl(siteRelativeUrl, masterPageSettings.SiteMasterPageUrl); } if (!string.IsNullOrEmpty(masterPageSettings.SystemMasterPageUrl)) { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Setting web.CustomMasterUrl: [{0}]", masterPageSettings.SystemMasterPageUrl); web.MasterUrl = SPUrlUtility.CombineUrl(siteRelativeUrl, masterPageSettings.SystemMasterPageUrl); } if (!string.IsNullOrEmpty(masterPageSettings.SiteMasterPageUrl) || !string.IsNullOrEmpty(masterPageSettings.SystemMasterPageUrl)) { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = web, ObjectType = typeof(SPWeb), ObjectDefinition = masterPageSettings, ModelHost = modelHost }); TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Calling web.Update()"); web.Update(); } else { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = web, ObjectType = typeof(SPWeb), ObjectDefinition = masterPageSettings, ModelHost = modelHost }); } }