/// <summary> /// Adds the necessarry javascript to a page. /// </summary> /// <param name="page"></param> /// <param name="Text"></param> /// <param name="sticky">Specifies whether the notification stays on the page until removed.</param> public static void RenderNotification(Page page, string Text, bool sticky) { // Add SP.js ScriptLink.RegisterScriptAfterUI(page, "SP.js", false, true); ScriptLink.RegisterScriptAfterUI(page, "SP.Ribbon.js", false, true); var script = @" SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () { }); ExecuteOrDelayUntilScriptLoaded(showNotification, 'SP.js'); function showNotification(){{ " + GetNotificationScript(page, Text, sticky) + @" }} "; ScriptManager.RegisterClientScriptBlock(page, typeof(Notification), string.Format("Notification:{0}", Text), script, true); }
protected override void OnPreRender(EventArgs e) { var list = SPContext.Current.List; var listName = list != null ? list.Title : string.Empty; string viewName; var viewContext = SPContext.Current.ViewContext; if (viewContext != null && viewContext.View != null) { viewName = viewContext.View.Title; } else { viewName = string.Empty; } ribbon = SPRibbon.GetCurrent(Page); ribbonCommands = new List <IRibbonCommand>(); RegisterRibbonExtension(SPContext.Current.Web, listName, viewName); if (isRegistedRibbons) { // Register required scripts ScriptLink.RegisterScriptAfterUI(Page, "CUI.js", false, true); ScriptLink.RegisterScriptAfterUI(Page, "SP.js", false, true); ScriptLink.RegisterScriptAfterUI(Page, "SP.Runtime.js", false, true); ScriptLink.RegisterScriptAfterUI(Page, "SP.Ribbon.js", false, true); // Register custom page component to handle custom ribbon commands if (!Page.ClientScript.IsClientScriptBlockRegistered(Page.GetType(), "Register Ribbon Customization")) { Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "Register Ribbon Customization", RibbonCustomizationScript, true); } // Register custom ribbon commands var ribbonScriptManager = new SPRibbonScriptManager(); ribbonScriptManager.RegisterGetCommandsFunction(Page, "getGlobalCommands", ribbonCommands); ribbonScriptManager.RegisterCommandEnabledFunction(Page, "commandEnabled", ribbonCommands); ribbonScriptManager.RegisterHandleCommandFunction(Page, "handleCommand", ribbonCommands); } base.OnPreRender(e); }
/// <summary> /// Renders the necessarry javascript on a given page. /// </summary> /// <param name="page"></param> /// <param name="Title"></param> /// <param name="Text"></param> /// <param name="HideAtBeginning"></param> /// <param name="Color"></param> public static void RenderStatusBar(Page page, string Title, string Text, bool HideAtBeginning, StatusBarColor Color) { ScriptLink.RegisterScriptAfterUI(page, "SP.js", false, true); var script = string.Format(@" window.onload = function () {{ ExecuteOrDelayUntilScriptLoaded(addStatusBar, 'SP.js'); function addStatusBar(){{ var sid = SP.UI.Status.addStatus(""{0}"", ""{1}"", {2}); {3} }} //addStatusBar(); }} ", Title, Text, (!HideAtBeginning).ToString().ToLower(), Color != StatusBarColor.None ? string.Format("SP.UI.Status.setStatusPriColor(sid, '{0}');", Enum.GetName(typeof(StatusBarColor), Color).ToLower()) : ""); ScriptManager.RegisterClientScriptBlock(page, typeof(StatusBar), string.Format("StatusBar:{0}", Title), script, true); }
protected override void OnLoad(EventArgs e) { if (this.Page.Request["__EVENTTARGET"] == Constants.CleanupPostBackEvent) { var listId = new Guid(this.Page.Request["__EVENTARGUMENT"]); var web = SPContext.Current.Web; CleanupUtility.AddCleanupWorkitem(web, listId); ScriptLink.RegisterScriptAfterUI(this.Page, "sp.js", false, true); var scriptText = ScriptLink.BuildDelayedExecutionScript("sp.js", "SP.UI.Notify.addNotification", "'Library submitted to cleanup'", "false"); this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), Constants.CleanupPostBackEvent, "function showPostBackNotification() {" + scriptText + "} _spBodyOnLoadFunctionNames.push('showPostBackNotification');", true); } }
private void CreateUpload(Control parent) { if (this.Enabled) { ScriptLink.RegisterScriptAfterUI(this.Page, "/Hemrika/Content/js/HTML5VideoUpload.js", false); FindBrowseParent(parent); upload = new HyperLink(); if (BrowseParent != null) { BrowseParent.Controls.Add(new LiteralControl(SPHttpUtility.NoEncode(" "))); upload.ID = "upload"; upload.Attributes.Add("onclick", "UploadHTML5Video('{0}', '{1}', '{2}');return false;"); upload.NavigateUrl = @"javascript:UploadHTML5Video('{0}', '{1}', '{2}')"; upload.ImageUrl = "/_layouts/Hemrika/Content/images/HTML5ImageAdd_16.png"; upload.Text = "Upload"; BrowseParent.Controls.Add(upload); EnsureChildControls(); } } }
/// <summary> /// Register the required script for the ribbon extension /// </summary> protected void RegisterRibbonScript() { // Register required scripts ScriptLink.RegisterScriptAfterUI(Page, "CUI.js", false, true); ScriptLink.RegisterScriptAfterUI(Page, "SP.js", false, true); ScriptLink.RegisterScriptAfterUI(Page, "SP.Runtime.js", false, true); ScriptLink.RegisterScriptAfterUI(Page, "SP.Ribbon.js", false, true); // Register custom page component to handle custom ribbon commands if (!Page.ClientScript.IsClientScriptBlockRegistered(Page.GetType(), "Register Ribbon Customization")) { Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "Register Ribbon Customization", RibbonCustomizationScript, true); } // Register custom ribbon commands var ribbonScriptManager = new SPRibbonScriptManager(); ribbonScriptManager.RegisterGetCommandsFunction(Page, "getGlobalCommands", RibbonCommands); ribbonScriptManager.RegisterCommandEnabledFunction(Page, "commandEnabled", RibbonCommands); ribbonScriptManager.RegisterHandleCommandFunction(Page, "handleCommand", RibbonCommands); }
protected override void OnPreRender(EventArgs e) { ScriptLink.RegisterScriptAfterUI(this.Page, "OpenWOPI.SharePoint/previews.js", false); }
protected override void OnPreRender(EventArgs e) { try { if (this.Page == null) { return; } if (SPContext.Current == null) { return; } SPRibbon currentRibbon = SPRibbon.GetCurrent(this.Page); WorkBox workBox = null; // If we're looking at a modal dialog box then we want to // leave workBox == null so that no further action is taken: if (Request.QueryString["IsDlg"] == null || Request.QueryString["IsDlg"] != "1") { workBox = WorkBox.GetIfWorkBox(SPContext.Current); } if (workBox != null) { //OK so we are looking at a work box. isWorkBox = true; SPWeb workBoxWeb = workBox.Web; if (!currentRibbon.IsTabAvailable("WorkBoxFramework.Ribbon.WorkBox")) { currentRibbon.MakeTabAvailable("WorkBoxFramework.Ribbon.WorkBox"); } // Now let's register the commands for the tasks flyout button: // Inspired by blogs: // http://www.sharepointnutsandbolts.com/2010/02/ribbon-customizations-dropdown-controls.html // http://patrickboom.wordpress.com/2010/05/25/adding-a-custom-company-menu-tab-with-dynamic-menu-on-the-ribbon/ // http://www.wictorwilen.se/Post/Creating-a-SharePoint-2010-Ribbon-extension-part-2.aspx WBLogging.DEBUG.Monitorable("About to do various for Tasks flyout menu:"); ScriptLink.RegisterScriptAfterUI(this.Page, "SP.Core.js", false, false); ScriptLink.RegisterScriptAfterUI(this.Page, "CUI.js", false, false); ScriptLink.RegisterScriptAfterUI(this.Page, "core.js", true, false); ScriptLink.RegisterScriptAfterUI(this.Page, "SP.Ribbon.js", false, false); ScriptLink.RegisterScriptAfterUI(this.Page, "SP.Runtime.js", false, false); ScriptLink.RegisterScriptAfterUI(this.Page, "SP.js", false, false); //ScriptLink.RegisterScriptAfterUI(this.Page, "WorkBoxFramework/PageComponent.js", false, true); var commands = new List <IRibbonCommand>(); // register the command at the ribbon. Include the callback to the server to generate the xml commands.Add(new SPRibbonCommand("WorkBoxFramework.Command.PopulateDynamicTasks", "if (wbf_callCount==0) WorkBoxFramework_getDynamicTasksMenu('',''); wbf_callCount++; if (wbf_callCount > 1000) wbf_menuXml = WorkBoxFramework_errorMenuXml('Timeout'); if (wbf_menuXml != '') properties.PopulationXML = wbf_menuXml;")); commands.Add(new SPRibbonCommand("WorkBoxFramework.Command.PopulateDynamicTemplates", "if (wbf_callCount==0) WorkBoxFramework_getDynamicTasksMenu('',''); wbf_callCount++; if (wbf_callCount > 1000) wbf_menu2Xml = WorkBoxFramework_errorMenuXml('Timeout'); if (wbf_menu2Xml != '') properties.PopulationXML = wbf_menu2Xml;")); // commands.Add(new SPRibbonCommand("PopulateDynamicTasksCommand", "properties.PopulationXML = errorMenuXml();")); //commands.Add(new SPRibbonCommand("PopulateDynamicTasksCommand", "alert('Callaa to Popdyn'); if (menuXml == '') { CreateServerMenu('',''); } else { properties.PopulationXML = menuXml; }")); // commands.Add(new SPRibbonCommand("PopulateDynamicTasksCommand", "alert('Call to Popdyn: ' + menuXml); properties.PopulationXML = menuXml;")); //Register various: var manager = new SPRibbonScriptManager(); // Register ribbon scripts manager.RegisterGetCommandsFunction(Page, "getGlobalCommands", commands); manager.RegisterCommandEnabledFunction(Page, "commandEnabled", commands); manager.RegisterHandleCommandFunction(Page, "handleCommand", commands); WBLogging.DEBUG.Monitorable("Registered ribbon scripts"); //Register initialize function var methodInfo = typeof(SPRibbonScriptManager).GetMethod("RegisterInitializeFunction", BindingFlags.Instance | BindingFlags.NonPublic); methodInfo.Invoke(manager, new object[] { Page, "InitPageComponent", "/_layouts/WorkBoxFramework/PageComponent.js", false, "WorkBoxFramework.PageComponent.initialize()" }); // register the client callbacks so that the JavaScript can call the server. ClientScriptManager cm = this.Page.ClientScript; String cbReference = cm.GetCallbackEventReference(this, "arg", "WorkBoxFramework_receiveTasksMenu", "", "WorkBoxFramework_processCallBackError", false); String callbackScript = "function WorkBoxFramework_getDynamicTasksMenu(arg, context) {" + cbReference + "; }"; WBLogging.DEBUG.Monitorable("Creating the call back function WorkBoxFramework_getDynamicTasksMenu to call: \n" + callbackScript); cm.RegisterClientScriptBlock(this.GetType(), "WorkBoxFramework_getDynamicTasksMenu", callbackScript, true); // Now let's check or set the last visited Guid: WBUser user = new WBUser(workBox); UserProfile profile = user.Profile; // SPSite _site = SPContext.Current.Site; // SPServiceContext _serviceContext = SPServiceContext.GetContext(_site); // UserProfileManager _profileManager = new UserProfileManager(_serviceContext); // UserProfile profile = _profileManager.GetUserProfile(true); scriptForSettingGlobalVariables = makeScriptForSettingWorkBoxVariables(workBox, user, profile); UserProfileValueCollection lastVisitedGuidUserProfileValueCollection = profile[WorkBox.USER_PROFILE_PROPERTY__WORK_BOX_LAST_VISITED_GUID]; bool needsUpdating = false; if (lastVisitedGuidUserProfileValueCollection == null || lastVisitedGuidUserProfileValueCollection.Count == 0) { needsUpdating = true; } else { Guid lastGuid = new Guid(lastVisitedGuidUserProfileValueCollection.Value.ToString()); if (!lastGuid.Equals(workBoxWeb.ID)) { needsUpdating = true; } } if (needsUpdating) { workBoxWeb.AllowUnsafeUpdates = true; string currentGuidString = workBoxWeb.ID.ToString(); lastVisitedGuidUserProfileValueCollection.Clear(); lastVisitedGuidUserProfileValueCollection.Add(currentGuidString); // OK now we're going to make sure that this work box is the latest on the list of recently visited work boxes: WBLogging.WorkBoxes.Verbose("Updating the list of recently visited work boxes - as we've just come to this work box"); UserProfileValueCollection workBoxesRecentlyVisited = profile[WorkBox.USER_PROFILE_PROPERTY__MY_RECENTLY_VISITED_WORK_BOXES]; //string mostRecentWorkBoxDetails = workBoxWeb.Title + "|" + workBoxWeb.Url + "|" + workBox.UniqueID + "|" + workBoxWeb.ID.ToString() + "|" + DateTime.Now.Ticks; WBLink mostRecentWorkBoxDetails = new WBLink(workBox, true); WBLogging.WorkBoxes.Verbose("The most recent work box details are: " + mostRecentWorkBoxDetails); List <String> newList = new List <String>(); newList.Add(mostRecentWorkBoxDetails.ToString()); if (workBoxesRecentlyVisited.Value != null) { string[] recentWorkBoxes = workBoxesRecentlyVisited.Value.ToString().Split(';'); int totalLength = 0; foreach (string recentWorkBox in recentWorkBoxes) { if (totalLength >= 3000) { break; } if (!recentWorkBox.Contains(currentGuidString)) { newList.Add(recentWorkBox); totalLength += recentWorkBox.Length + 1; } } } profile[WorkBox.USER_PROFILE_PROPERTY__MY_RECENTLY_VISITED_WORK_BOXES].Value = WBUtils.JoinUpToLimit(";", newList, 3100); profile.Commit(); workBoxWeb.AllowUnsafeUpdates = false; } } else { scriptForSettingGlobalVariables = makeScriptForSettingNonWorkBoxVariables(SPContext.Current.Web); if (currentRibbon.IsTabAvailable("WorkBoxFramework.Ribbon.WorkBox")) { currentRibbon.TrimById("WorkBoxFramework.Ribbon.WorkBox"); } } // currentRibbon.MakeContextualGroupInitiallyVisible("WorkBoxFramework.Ribbon.ContextualGroup", string.Empty); } catch (Exception exception) { // If this isn't working - let's just do nothing so that at least the SharePoint site is visible. scriptForSettingGlobalVariables = "<!-- Exception thrown in MaybeShowWorkBoxRibbonTools \n\n" + exception.Message + "\n\n" + exception.StackTrace + "\n\n-->"; } }