private static void DeleteJsLinks(ClientContext context, Site site) { var existingActions = site.UserCustomActions; context.Load(existingActions); context.ExecuteQuery(); var actions = existingActions.ToArray(); if (actions.Count() == 0) { Logger.LogInfoMessage(String.Format("No ScriptLink Action [{0}] items are present on site [{1}]...", Constants.ScriptLinkDescription, site.Url), false); return; } Logger.LogInfoMessage(String.Format("Removing all existing ScriptLink Action [{0}] items from site [{1}]...", Constants.ScriptLinkDescription, site.Url), false); foreach (var action in actions) { if (action.Description.Equals(Constants.ScriptLinkDescription, StringComparison.InvariantCultureIgnoreCase) && action.Location.Equals(Constants.ScriptLinkLocation, StringComparison.InvariantCultureIgnoreCase) ) { ManageMaintenanceBannersOutput csvObject = new ManageMaintenanceBannersOutput(); csvObject.BannerOperation = "Remove Banner"; csvObject.SiteCollectionUrl = site.Url; csvObject.ScriptLinkName = Constants.ScriptLinkDescription; csvObject.ScriptLinkFile = "N/A"; try { action.DeleteObject(); context.ExecuteQuery(); csvObject.Status = Constants.Success; FileUtility.WriteCsVintoFile(csvOutputFileSpec, csvObject, ref csvOutputFileHasHeader); Logger.LogInfoMessage(String.Format("ScriptLink Action [{0}] removed from site [{1}]", Constants.ScriptLinkDescription, site.Url), false); } catch (Exception ex) { csvObject.Status = Constants.Failure; FileUtility.WriteCsVintoFile(csvOutputFileSpec, csvObject, ref csvOutputFileHasHeader); Logger.LogErrorMessage(String.Format("DeleteJsLinks() failed to remove ScriptLink Action [{0}] from site [{1}]: Error={2}", Constants.ScriptLinkDescription, site.Url, ex.Message), false); ExceptionCsv.WriteException( "N/A", site.Url, "N/A", "MaintenanceBanner", ex.Message, ex.ToString(), "DeleteJsLinks", ex.GetType().ToString(), String.Format("DeleteJsLinks() failed to remove ScriptLink Action [{0}] from site [{1}]", Constants.ScriptLinkDescription, site.Url) ); } } } }
private static void AddJsLinks(ClientContext context, Site site, string cdnAbsoluteUrl) { ManageMaintenanceBannersOutput csvObject = new ManageMaintenanceBannersOutput(); csvObject.BannerOperation = "Add Banner"; csvObject.SiteCollectionUrl = site.Url; csvObject.ScriptLinkName = Constants.ScriptLinkDescription; csvObject.ScriptLinkFile = "N/A"; try { string revision = Guid.NewGuid().ToString().Replace("-", ""); string embedJsLink = string.Format("{0}/{1}?rev={2}", cdnAbsoluteUrl, Constants.EmbedJsFileName, revision); csvObject.ScriptLinkFile = embedJsLink; StringBuilder scripts = new StringBuilder(@" var headID = document.getElementsByTagName('head')[0]; var"); scripts.AppendFormat(@" newScript = document.createElement('script'); newScript.type = 'text/javascript'; newScript.src = '{0}'; headID.appendChild(newScript);", embedJsLink); string scriptBlock = scripts.ToString(); var existingActions = site.UserCustomActions; context.Load(existingActions); context.ExecuteQuery(); var actions = existingActions.ToArray(); Logger.LogInfoMessage(String.Format("Adding ScriptLink Action [{0}] to site [{1}]...", Constants.ScriptLinkDescription, site.Url), false); Logger.LogInfoMessage(String.Format("-embedJsLink = [{0}]", embedJsLink), false); var newAction = existingActions.Add(); newAction.Description = Constants.ScriptLinkDescription; newAction.Location = Constants.ScriptLinkLocation; newAction.ScriptBlock = scriptBlock; newAction.Update(); context.Load(site, s => s.UserCustomActions); context.ExecuteQuery(); csvObject.Status = Constants.Success; FileUtility.WriteCsVintoFile(csvOutputFileSpec, csvObject, ref csvOutputFileHasHeader); Logger.LogSuccessMessage(String.Format("ScriptLink Action [{0}] added to site [{1}]", Constants.ScriptLinkDescription, site.Url), false); } catch (Exception ex) { csvObject.Status = Constants.Failure; FileUtility.WriteCsVintoFile(csvOutputFileSpec, csvObject, ref csvOutputFileHasHeader); Logger.LogErrorMessage(String.Format("AddJsLink() failed to add ScriptLink Action [{0}] to site [{1}]: Error={2}", Constants.ScriptLinkDescription, site.Url, ex.Message), false); ExceptionCsv.WriteException( "N/A", site.Url, "N/A", "MaintenanceBanner", ex.Message, ex.ToString(), "AddJsLinks", ex.GetType().ToString(), String.Format("AddJsLink() failed to add ScriptLink Action [{0}] to site [{1}]", Constants.ScriptLinkDescription, site.Url) ); } }