Exemplo n.º 1
0
        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)
                            );
                    }
                }
            }
        }
Exemplo n.º 2
0
        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)
                    );
            }
        }