protected override void OnPreRender(EventArgs e) { SPRibbon ribbon = SPRibbon.GetCurrent(this); if (ribbon != null) { ribbon.CommandUIVisible = true; ribbon.MakeTabAvailable("Ribbon.Tabs.MyCustomTab"); ribbon.InitialTabId = "Ribbon.Tabs.MyCustomTab"; ribbon.Minimized = false; ribbon.CommandUIVisible = true; ribbon.ServerRendered = true; SPRibbonScriptManager manager = new SPRibbonScriptManager(); List<IRibbonCommand> commands = new List<IRibbonCommand>(); commands.Add(new SPRibbonCommand("MyCustomTab", "")); commands.Add(new SPRibbonCommand("MyCustomTabActions", "")); commands.Add(new SPRibbonCommand("MyCustomSave", "alert(commandId)")); manager.RegisterGetCommandsFunction(this, "getGlobalCommands", commands); manager.RegisterCommandEnabledFunction(this, "commandEnabled", commands); manager.RegisterHandleCommandFunction(this, "handleCommand", commands); ScriptLink.RegisterScriptAfterUI(this.Page, "CUI.js", false, true); ScriptLink.RegisterScriptAfterUI(this.Page, "SP.Ribbon.js", false, true); ScriptLink.RegisterScriptAfterUI(this.Page, "/_layouts/15/SharePoint.TestLab.Ribbon/MyCustomRibbon.js", false, true); //string script = "<script type=\"text/javascript\" defer=\"true\"> //<![CDATA[ \r\n function InitPageComponent(){SP.Ribbon.UsageReportPageComponent.initialize();} \r\n SP.SOD.executeOrDelayUntilScriptLoaded(InitPageComponent, \"SP.Ribbon.js\" ); \r\n //]]\r\n </script>"; String script = "<script type=\"text/javascript\" defer=\"true\"> //<![CDATA[ \r\n function InitPageComponent() { MyCustom.Ribbon.RibbonComponent.get_instance().registerWithPageManager()} \r\n SP.SOD.executeOrDelayUntilScriptLoaded(InitPageComponent, \"SP.UI.MyCustomRibbon.debug.js\"); \r\n //]]\r\n</script>"; this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "InitPageComponent", script, false); } base.OnPreRender(e); }
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); }
public static void AddRibbonButtonsToPage(List <ListMetadataAction> ribbonBtns, Page page) { // Gets the current instance of the ribbon on the page. SPRibbon ribbon = SPRibbon.GetCurrent(page); XmlDocument ribbonExtensions = new XmlDocument(); //Load the contextual tab XML and register the ribbon. ribbonExtensions.LoadXml(string.Format(Constants.Ribbon.VIEW_TAB_TEMPLATE, string.Join("", ribbonBtns.Select(b => b.GetButtonAsXml())))); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.Tabs._children"); //Load the custom templates and register the ribbon. ribbonExtensions.LoadXml(Constants.Ribbon.CONTEXTUAL_TAB_TEMPLATE); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.Templates._children"); ribbon.Minimized = false; ribbon.CommandUIVisible = true; const string initialTabId = "Ribbon.RosterTab"; if (!ribbon.IsTabAvailable(initialTabId)) { ribbon.MakeTabAvailable(initialTabId); } ribbon.InitialTabId = initialTabId; // REGISTER COMMANDS var commands = new List <IRibbonCommand>(); // register the command at the ribbon. Include the callback to the server to generate the xml ribbonBtns.ToList().ForEach(b => { commands.Add(new SPRibbonCommand(b.GetCommandName(), b.Command, "true")); }); //Register initialize function var manager = new SPRibbonScriptManager(); var methodInfo = typeof(SPRibbonScriptManager).GetMethod("RegisterInitializeFunction", BindingFlags.Instance | BindingFlags.NonPublic); methodInfo.Invoke(manager, new object[] { page, "InitPageComponent", "/_layouts/15/Roster.Presentation/js/PageComponent.js", false, "Roster.PageComponent.initialize()" }); // Register ribbon scripts manager.RegisterGetCommandsFunction(page, "getGlobalCommands", commands); manager.RegisterCommandEnabledFunction(page, "commandEnabled", commands); manager.RegisterHandleCommandFunction(page, "handleCommand", commands); }
/// <summary> /// Builds and adds the custom ribbon menu objects /// </summary> protected virtual void AddTabEvents() { try { // Register javascript ribbon commands with // RibbonCommands.Add() // before running this method // Register initialize function var manager = new SPRibbonScriptManager(); var methodInfo = typeof(SPRibbonScriptManager).GetMethod("RegisterInitializeFunction", BindingFlags.Instance | BindingFlags.NonPublic); methodInfo.Invoke(manager, new object[] { Page, "InitPageComponent", "/_layouts/15/spa/scripts/PageComponent.js", false, "SPA.PageComponent.initialize()" }); // Register ribbon scripts manager.RegisterGetCommandsFunction(Page, "getGlobalCommands", RibbonCommands); manager.RegisterCommandEnabledFunction(Page, "commandEnabled", RibbonCommands); manager.RegisterHandleCommandFunction(Page, "handleCommand", RibbonCommands); } catch (Exception ex) { SPA.Error.WriteError(ex); } }
/// <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); }
/// <summary> /// Register the required script for the ribbon extension /// </summary> protected void RegisterRibbonScript() { // Register required scripts Microsoft.SharePoint.WebControls.ScriptLink.RegisterScriptAfterUI(Page, "CUI.js", false, true); Microsoft.SharePoint.WebControls.ScriptLink.RegisterScriptAfterUI(Page, "SP.js", false, true); Microsoft.SharePoint.WebControls.ScriptLink.RegisterScriptAfterUI(Page, "SP.Runtime.js", false, true); Microsoft.SharePoint.WebControls.ScriptLink.RegisterScriptAfterUI(Page, "SP.Ribbon.js", false, true); string commandString = ""; foreach (var ribbonCommands in RibbonCommands) { if (commandString != "") { commandString += ","; } commandString += "'" + ribbonCommands.Id + "'"; } string temp = string.Format("[{0}]", commandString); // 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.Replace("getGlobalCommandsTemplate", temp), true); } // Register custom ribbon commands var ribbonScriptManager = new SPRibbonScriptManager(); ribbonScriptManager.RegisterGetCommandsFunction(Page, "getGlobalCommands", RibbonCommands); ribbonScriptManager.RegisterCommandEnabledFunction(Page, "commandEnabled", RibbonCommands); ribbonScriptManager.RegisterHandleCommandFunction(Page, "handleCommand", RibbonCommands); }
private void AddTabEvents() { 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("Ribbon.BuildTeam.SaveCloseButton", "SaveAndClose();", "EnableDisableSaveButton()")); commands.Add(new SPRibbonCommand("Ribbon.BuildTeam.CloseButton", "Close();", "true")); commands.Add(new SPRibbonCommand("Ribbon.BuildTeam.ShowPool", "ShowPool();", "bCanEditTeam")); commands.Add(new SPRibbonCommand("Ribbon.BuildTeam.AddResource", "AddResourcePool();", "CanAddResource()")); commands.Add(new SPRibbonCommand("Ribbon.BuildTeam.AddResColumns", "AddResColumns();", "isResPoolShowing()")); commands.Add(new SPRibbonCommand("Ribbon.BuildTeam.AddTeamColumns", "AddTeamColumns();", "true")); commands.Add(new SPRibbonCommand("Ribbon.BuildTeam.Assignments", "Assignments();", "true")); commands.Add(new SPRibbonCommand("Ribbon.BuildTeam.DisplayReports", "", "true")); commands.Add(new SPRibbonCommand("Ribbon.BuildTeam.AddToTeam", "AddResource()", "true")); commands.Add(new SPRibbonCommand("Ribbon.BuildTeam.RemoveFromTeam", "RemoveResource()", "true")); //Register initialize function var manager = new SPRibbonScriptManager(); var methodInfo = typeof(SPRibbonScriptManager).GetMethod( "RegisterInitializeFunction", BindingFlags.Instance | BindingFlags.NonPublic); methodInfo.Invoke(manager, new object[] { Page, "InitPageComponent", "/_layouts/epmlive/BuildTeamPageComponent.js", false, "BuildTeamPageComponent.PageComponent.initialize()" }); // Register ribbon scripts manager.RegisterGetCommandsFunction(Page, "getGlobalCommands", commands); manager.RegisterCommandEnabledFunction(Page, "commandEnabled", commands); manager.RegisterHandleCommandFunction(Page, "handleCommand", commands); }
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) //{ ////Fix error Ribbon is disabled // Register required scripts //Microsoft.SharePoint.WebControls.ScriptLink.RegisterScriptAfterUI(Page, "CUI.js", false, true); //Microsoft.SharePoint.WebControls.ScriptLink.RegisterScriptAfterUI(Page, "SP.js", false, true); //Microsoft.SharePoint.WebControls.ScriptLink.RegisterScriptAfterUI(Page, "SP.Runtime.js", false, true); //Microsoft.SharePoint.WebControls.ScriptLink.RegisterScriptAfterUI(Page, "SP.Ribbon.js", false, true); string commandString = ""; foreach (var ribbonCommand in RibbonCommands) { if (commandString != "") { commandString += ","; } commandString += "'" + ribbonCommand.Id + "'"; } string temp = string.Format("return [{0}]", commandString); // 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.Replace("getGlobalCommandsTemplate", temp), 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); }
/* * protected void Page_Load(object sender, EventArgs e) * { * try * { * HtmlGenericControl body = this.Master.FindControl("body") as HtmlGenericControl; * if (body != null) * { * body.Attributes.Add("onload", "if (typeof(_spBodyOnLoadWrapper) != 'undefined') _spBodyOnLoadWrapper();"); * } * } * catch { }; * } */ protected override void OnLoad(EventArgs e) { base.OnLoad(e); //EnsureChildControls(); SPRibbon current = SPRibbon.GetCurrent(this.Page); if ((current != null) && HttpContext.Current.User.Identity.IsAuthenticated) { if (wpsc == null) { wpsc = new WebPageStateControl(); this.Page.Controls.Add(wpsc); } WebPageSetHomePageHandler homepage = new WebPageSetHomePageHandler(wpsc); this.Controls.Add(homepage); ContentRibbon content = new ContentRibbon(wpsc); this.Controls.Add(content); DesignRibbon design = new DesignRibbon(wpsc); this.Controls.Add(design); CssRegistration.Register("/_layouts/Hemrika/WebSitePage/Hemrika.SharePresence.WebSite.css"); TransformDialog(); var manager = new SPRibbonScriptManager(); var methodInfo = typeof(SPRibbonScriptManager).GetMethod("RegisterInitializeFunction", BindingFlags.Instance | BindingFlags.NonPublic); methodInfo.Invoke(manager, new object[] { Page, "InitPageComponent", "/_layouts/Hemrika/WebSitePage/Hemrika.SharePresence.WebSite.Page.js", false, "Hemrika.SharePresence.WebSite.Page.PageComponent.initialize()" }); current.CommandUIVisible = true; current.CheckForInitializationReadiness = true; current.MakeTabAvailable("Ribbon.Read", "WSSPageStateVisibilityContext"); current.MakeTabAvailable("Ribbon.EditingTools", "WSSPageStateVisibilityContext"); current.MakeTabAvailable("Ribbon.Hemrika.SharePresence.Page", "WSSPageStateVisibilityContext"); current.MakeTabAvailable("Ribbon.Hemrika.SharePresence.Content", "WSSPageStateVisibilityContext"); current.MakeTabAvailable("Ribbon.Hemrika.SharePresence.Design", "WSSPageStateVisibilityContext"); current.MakeTabAvailable("Ribbon.Hemrika.SharePresence.SEO", "WSSPageStateVisibilityContext"); current.MakeTabAvailable("Ribbon.Hemrika.SharePresence.Analytics", "WSSPageStateVisibilityContext"); current.MakeTabAvailable("Ribbon.Hemrika.SharePresence.Settings", "WSSPageStateVisibilityContext"); current.EnableVisibilityContext("WSSPageStateVisibilityContext"); //current.DisableVisibilityContext("WSSWebPartPage"); //Allow Browse button for visibility //current.TrimById(SPRibbon.ReadTabId); current.TrimById("Ribbon.WebPartPage", "WSSWebPartPage"); current.TrimById("Ribbon.WikiPageTab", "WSSPageStateVisibilityContext"); current.TrimById("Ribbon.EditingTools.CPEditTab.Layout.PageLayout", "WSSPageStateVisibilityContext"); current.TrimById("Ribbon.WebPartInsert", "WSSPageStateVisibilityContext"); current.TrimById("Ribbon.WebPartInsert.Tab", "WSSPageStateVisibilityContext"); current.CommandUIVisible = true; //RegisterWebSitePage(this); //AlohaEditor(this); } else { EnsureChildControls(); ScriptManager manager = ScriptManager.GetCurrent(Page); manager.LoadScriptsBeforeUI = false; manager.AllowCustomErrorsRedirect = true; manager.ScriptMode = ScriptMode.Release; //Remove WPSC script block this.Page.ClientScript.RegisterStartupScript(typeof(SPWebPartManager), "WPSCScriptBlock", string.Empty); } //BlogConnector(); }
protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); SPRibbon ribbon = SPRibbon.GetCurrent(this.Page); //Prepares an XmlDocument object used to load the ribbon XmlDocument ribbonExtensions = new XmlDocument(); //WorkPlanner Tab ribbonExtensions.LoadXml(Properties.Resources.txtMyTimesheetWork_Ribbon); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.Tabs._children"); ribbonExtensions.LoadXml(Properties.Resources.txtMyTimesheetWork_ViewRibbon); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.Tabs._children"); ribbonExtensions.LoadXml(Properties.Resources.txtMyTimesheet_Template); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.Templates._children"); ribbon.Minimized = false; ribbon.CommandUIVisible = true; const string initialTabId = "Ribbon.MyTimesheetWorkTab"; if (!ribbon.IsTabAvailable(initialTabId)) { ribbon.MakeTabAvailable(initialTabId); } if (!ribbon.IsTabAvailable("Ribbon.MyTimesheetWorkViewsTab")) { ribbon.MakeTabAvailable("Ribbon.MyTimesheetWorkViewsTab"); } ribbon.InitialTabId = initialTabId; var manager = new SPRibbonScriptManager(); var methodInfo = typeof(SPRibbonScriptManager).GetMethod("RegisterInitializeFunction", BindingFlags.Instance | BindingFlags.NonPublic); methodInfo.Invoke(manager, new object[] { Page, "InitPageComponent", "/_layouts/epmlive/MyTimesheetWorkContextualTabPageComponent.js", false, "MyTimesheetWorkPageComponent.PageComponent.initialize()" }); var commands = new List <IRibbonCommand>(); //commands.Add(new SPRibbonCommand("Ribbon.MyTimesheetWork.AddWork", "alert('d');", "true")); manager.RegisterGetCommandsFunction(Page, "getGlobalCommands", commands); manager.RegisterCommandEnabledFunction(Page, "commandEnabled", commands); manager.RegisterHandleCommandFunction(Page, "handleCommand", commands); //if(!ribbon.IsTabAvailable("Ribbon.Project")) // ribbon.MakeTabAvailable("Ribbon.Project"); //if(!ribbon.IsTabAvailable("Ribbon.WorkViews")) // ribbon.MakeTabAvailable("Ribbon.WorkViews"); if (Request["nonwork"] == "true") { ribbon.TrimById("Ribbon.MyTimesheetWorkViews.AllWork"); ribbon.TrimById("Ribbon.MyTimesheetWork.ActionsGroup.Search"); } else { bool bDisable = BShowAllWork(); if (!bDisable) { ribbon.TrimById("Ribbon.MyTimesheetWorkViews.AllWork"); } } }
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-->"; } }
protected override void OnPreRender(System.EventArgs e) { SPWeb Web = SPContext.Current.Web; SPList List = SPContext.Current.List; SPListItem ListItem = SPContext.Current.ListItem; CssRegistration.Register("/_layouts/epmlive/modal/modal.css"); ScriptLink.Register(Page, "/_layouts/epmlive/modal/modal.js", false); SPRibbon ribbon = SPRibbon.GetCurrent(this.Page); RegisterArchiveRestoreFormButtons(Web, List, ListItem, ribbon); ribbon.TrimById("Ribbon.ListForm.Display.Manage.EditItem"); XmlDocument ribbonExtensions = new XmlDocument(); if (NavigationService.LPPFEPermissionCheck(List, SPBasePermissions.EditListItems)) { ribbonExtensions.LoadXml(@"<Button Id=""Ribbon.ListForm.Display.Manage.EditItem2"" Sequence=""10"" Command=""Ribbon.ListForm.Display.Manage.EditItem2"" Image16by16=""/_layouts/" + Web.Language + @"/images/formatmap16x16.png"" Image16by16Top=""-128"" Image16by16Left=""-224"" Image32by32=""/_layouts/" + Web.Language + @"/images/formatmap32x32.png"" Image32by32Top=""-128"" Image32by32Left=""-96"" LabelText=""Edit Item"" TemplateAlias=""o1""/>"); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Manage.Controls._children"); } if (!NavigationService.LPPFEPermissionCheck(List, SPBasePermissions.DeleteListItems)) { ribbon.TrimById("Ribbon.ListForm.Display.Manage.DeleteItem"); } EPMLiveCore.GridGanttSettings gSettings = API.ListCommands.GetGridGanttSettings(List); ArrayList arrAssoc = API.ListCommands.GetAssociatedLists(List); if (gSettings.AssociatedItems) { StringBuilder sbLists = new StringBuilder(); foreach (EPMLiveCore.API.AssociatedListInfo ali in arrAssoc) { //sbLists.Append("<Button Id=\"Ribbon.ListForm.Display.Manage.LinkedItemsButton\" Sequence=\"20\" Command=\""); sbLists.Append("<Button Sequence=\"20\" Command=\""); sbLists.Append("Ribbon.ListForm.Display.Associated.LinkedItemsButton"); sbLists.Append("\" Id=\"Ribbon.ListForm.Display.Associated."); sbLists.Append(HttpUtility.HtmlEncode(ali.Title)); sbLists.Append("."); sbLists.Append(ali.LinkedField); sbLists.Append("\" LabelText=\""); sbLists.Append(HttpUtility.HtmlEncode(ali.Title)); sbLists.Append("\" TemplateAlias=\"o1\" Image16by16=\""); sbLists.Append(ali.icon); sbLists.Append("\"/>"); } if (sbLists.Length > 0) { StringBuilder sbLinkedItems = new StringBuilder(); sbLinkedItems.Append("<Group Id=\"Ribbon.ListForm.Display.Associated\" Sequence=\"41\" Command=\"Ribbon.ListForm.Display.Associated.LinkedItems\" Description=\"\" Title=\"Associated Items\" Template=\"Ribbon.Templates.Flexible2\">"); sbLinkedItems.Append("<Controls Id=\"Ribbon.ListForm.Display.Associated.Controls\">"); sbLinkedItems.Append(sbLists); sbLinkedItems.Append("</Controls>"); sbLinkedItems.Append("</Group>"); ribbonExtensions = new XmlDocument(); ribbonExtensions.LoadXml(sbLinkedItems.ToString()); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Groups._children"); ribbonExtensions = new XmlDocument(); ribbonExtensions.LoadXml("<MaxSize Id=\"Ribbon.ListForm.Display.Associated.MaxSize\" Sequence=\"10\" GroupId=\"Ribbon.ListForm.Display.Associated\" Size=\"MediumMedium\" />"); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Scaling._children"); //StringBuilder sbLinkedItems = new StringBuilder(); //sbLinkedItems.Append("<FlyoutAnchor Id=\"Ribbon.ListForm.Display.Manage.LinkedItems\" Sequence=\"39\" Command=\""); //sbLinkedItems.Append("Ribbon.ListForm.Display.Manage.LinkedItems"); //sbLinkedItems.Append("\" Image32by32=\"/_layouts/epmlive/images/linkeditems.gif\" LabelText=\"Associated Items\" TemplateAlias=\"o1\">"); //sbLinkedItems.Append("<Menu Id=\"Ribbon.List.EPMLive.LinkedItems.Menu\">"); //sbLinkedItems.Append("<MenuSection Id=\"Ribbon.List.EPMLive.LinkedItems.Menu.Scope\" Sequence=\"10\" DisplayMode=\"Menu16\">"); //sbLinkedItems.Append("<Controls Id=\"Ribbon.List.EPMLive.LinkedItems.Menu.Scope.Controls\">"); //sbLinkedItems.Append(sbLists); //sbLinkedItems.Append("</Controls>"); //sbLinkedItems.Append("</MenuSection>"); //sbLinkedItems.Append("</Menu>"); //sbLinkedItems.Append("</FlyoutAnchor>"); //ribbonExtensions.LoadXml(sbLinkedItems.ToString()); //ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, //"Ribbon.ListForm.Display.Manage.Controls._children"); } } //======================Planner================== API.ListPlannerProps p = API.ListCommands.GetListPlannerInfo(List); if (p.PlannerV2Menu != "") { ribbonExtensions.LoadXml(p.PlannerV2Menu.Replace("EPMLivePlanner", "Ribbon.ListForm.Display.Manage.EPMLivePlanner").Replace("TaskPlanner", "Ribbon.ListForm.Display.Manage.TaskPlanner")); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Manage.Controls._children"); //if(bPlanner == 1) //{ // EPMLiveWorkPlanner.WorkPlannerAPI.PlannerProps props = EPMLiveWorkPlanner.WorkPlannerAPI.getSettings(Web, sPlannerID); // bUseTeam = props.bUseTeam; // ribbonExtensions.LoadXml("<Button Id=\"Ribbon.ListItem.EPMLive.BuildTeam\" Sequence=\"41\" Command=\"Ribbon.ListForm.Display.Manage.BuildTeam\" LabelText=\"Build Team\" TemplateAlias=\"o1\" Image32by32=\"/_layouts/epmlive/images/editteam32.gif\"/>"); // ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Manage.Controls._children"); //} } //=====================Create Workspace=========== if (gSettings.EnableRequests) { string childitem = ""; try { childitem = ListItem["WorkspaceUrl"].ToString(); } catch { } if ((ListItem.ModerationInformation == null || ListItem.ModerationInformation.Status == SPModerationStatusType.Approved) && childitem == "") { ribbonExtensions = new XmlDocument(); ribbonExtensions.LoadXml("<Button Id=\"Ribbon.ListItem.EPMLive.CreateWorkspace\" Sequence=\"50\" Command=\"Ribbon.ListForm.Display.Manage.CreateWorkspace\" LabelText=\"Create Workspace\" TemplateAlias=\"o2\" Image16by16=\"_layouts/images/epmlivelogosmall.gif\"/>"); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Manage.Controls._children"); } } //=====================Favorite if (Web.Features[new Guid("046f0200-30e5-4545-b00f-c8c73aef9f0e")] != null) { ribbonExtensions = new XmlDocument(); ribbonExtensions.LoadXml("<Button Id=\"Ribbon.ListItem.EPMLive.FavoriteStatus\" Sequence=\"100\" Command=\"Ribbon.ListForm.Display.Actions.Favorite\" LabelText=\"Favorite\" TemplateAlias=\"o1\" Image32by32=\"_layouts/epmlive/images/star32.png\" Image16by16=\"_layouts/epmlive/images/star16.png\"/>"); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Actions.Controls._children"); ribbonExtensions = new XmlDocument(); ribbonExtensions.LoadXml("<Button Id=\"Ribbon.ListItem.EPMLive.FavoriteStatus\" Sequence=\"100\" Command=\"Ribbon.ListForm.Display.Actions.Favorite\" LabelText=\"Favorite\" TemplateAlias=\"o1\" Image32by32=\"_layouts/epmlive/images/star32.png\" Image16by16=\"_layouts/epmlive/images/star16.png\"/>"); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Edit.Actions.Controls._children"); ribbonExtensions = new XmlDocument(); ribbonExtensions.LoadXml("<Button Id=\"Ribbon.ListItem.EPMLive.FavoriteStatus\" Sequence=\"100\" Command=\"Ribbon.ListForm.Display.Actions.Favorite\" LabelText=\"Favorite\" TemplateAlias=\"o1\" Image32by32=\"_layouts/epmlive/images/star32.png\" Image16by16=\"_layouts/epmlive/images/star16.png\"/>"); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.DocLibListForm.Edit.Actions.Controls._children"); } EPMLiveCore.API.RibbonProperties rp = (EPMLiveCore.API.RibbonProperties)EPMLiveCore.Infrastructure.CacheStore.Current.Get("GR-" + Web.CurrentUser.ID, "GridSettings-" + List.ID, () => { return(EPMLiveCore.API.ListCommands.GetRibbonProps(List)); }).Value; //=====================Build Team=========== try { if (rp.bBuildTeam) { ribbonExtensions = new XmlDocument(); ribbonExtensions.LoadXml("<Button Id=\"Ribbon.ListItem.EPMLive.BuildTeam\" Sequence=\"50\" Command=\"Ribbon.ListForm.Display.Manage.BuildTeam\" LabelText=\"Edit Team\" TemplateAlias=\"o2\" Image16by16=\"_layouts/epmlive/images/buildteam16.gif\"/>"); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Manage.Controls._children"); } } catch { } //==========Go To Workspace================= string workspaceurl = ""; try { workspaceurl = ListItem["WorkspaceUrl"].ToString(); } catch { } if (workspaceurl != "") { ribbonExtensions = new XmlDocument(); ribbonExtensions.LoadXml("<Button Id=\"Ribbon.ListItem.EPMLive.GoToWorkspace\" Sequence=\"55\" Command=\"Ribbon.ListForm.Display.Manage.GoToWorkspace\" LabelText=\"Go To Workspace\" TemplateAlias=\"o1\" Image32by32=\"_layouts/images/spgraphic.gif\" Image32by32Top=\"7\" Image32by32Left=\"4\"/>"); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Manage.Controls._children"); } //================EPK=================== if (rp.aEPKButtons.Contains("costs")) { ribbonExtensions = new XmlDocument(); ribbonExtensions.LoadXml(@"<Button Id=""Ribbon.ListItem.Manage.EPKCosts"" Sequence=""101"" Command=""Ribbon.ListForm.Display.Manage.EPKCost"" Image32by32=""/_layouts/epmlive/images/editcosts.png"" LabelText=""Edit Costs"" TemplateAlias=""o1"" />"); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Manage.Controls._children"); } if (rp.aEPKButtons.Contains("resplan")) { if (rp.aEPKActivex.Contains("resplan")) { ribbonExtensions = new XmlDocument(); ribbonExtensions.LoadXml(@"<Button Id=""Ribbon.ListItem.Manage.EPKResourcePlanner"" Sequence=""103"" Command=""Ribbon.ListForm.Display.Manage.EPKRP"" Image32by32=""/_layouts/epmlive/images/ribbon32.png"" Image32by32Top=""-65"" LabelText=""Edit Resource Plan"" TemplateAlias=""o1"" />"); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Manage.Controls._children"); } else { ribbonExtensions = new XmlDocument(); ribbonExtensions.LoadXml(@"<Button Id=""Ribbon.ListItem.Manage.EPKResourcePlanner"" Sequence=""103"" Command=""Ribbon.ListForm.Display.Manage.EPKRPM"" Image16by16=""/_layouts/1033/images/formatmap16x16.png"" Image16by16Top=""-64"" Image16by16Left=""-128"" LabelText=""Resource Planner"" TemplateAlias=""o2"" />"); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Manage.Controls._children"); } } API.Integration.IntegrationCore core = new API.Integration.IntegrationCore(Web.Site.ID, Web.ID); string Errors = ""; int seq = 130; var commands = new List <IRibbonCommand>(); List <EPMLiveIntegration.IntegrationControl> ics = core.GetItemButtons(ListItem.ParentList.ID, ListItem, out Errors); foreach (EPMLiveIntegration.IntegrationControl ic in ics) { ribbonExtensions = new XmlDocument(); ribbonExtensions.LoadXml(@"<Button Id=""EPMINT." + ic.Control + @"." + (int)ic.Window + @""" Sequence=""" + (seq++).ToString() + @""" Command=""Ribbon.ListForm.Display.Manage.EPMINT"" Image32by32=""/_layouts/15/images/" + ic.Image + @""" LabelText=""" + ic.Title + @""" TemplateAlias=""o1"" />"); ribbon.RegisterDataExtension(ribbonExtensions.FirstChild, "Ribbon.ListForm.Display.Manage.Controls._children"); } //=============================================== // register the command at the ribbon. Include the callback to the server // to generate the xml //commands.Add(new SPRibbonCommand("Ribbon.ListForm.Display.Manage.EditItem2", "alert('test');", "true")); var manager = new SPRibbonScriptManager(); var methodInfo = typeof(SPRibbonScriptManager).GetMethod("RegisterInitializeFunction", BindingFlags.Instance | BindingFlags.NonPublic); methodInfo.Invoke(manager, new object[] { Page, "InitPageComponent", "/_layouts/epmlive/WEDispFormPageComponent.js", false, "WEDispFormPageComponent.PageComponent.initialize()" }); manager.RegisterGetCommandsFunction(Page, "getGlobalCommands", commands); manager.RegisterCommandEnabledFunction(Page, "commandEnabled", commands); manager.RegisterHandleCommandFunction(Page, "handleCommand", commands); }
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); }