Project Server 2013: Adding Project Site Button to Project Center - Customize Ribbon
Description:
OOB we do not have "Project Site" Icon in Project Center compared to Project Server 2010
You can add a Button and get the same functionality by following the below steps
Steps :
1. Download the solution file from blog https://blogs.msdn.com/b/project_programmability/archive/2010/12/23/how-to-modify-the-ribbon-in-pwa.aspx
2. Replace the second custom action with the below content :
<CustomAction Id="ProjectCenterPage.ProjectSiteIcon" Location="CommandUI.Ribbon">
<CommandUIExtension>
<CommandUIDefinitions>
<CommandUIDefinition Location="Ribbon.ContextualTabs.ProjectCenter.Home.GoTo.Controls._children">
<Button
Id="ProjectCenterPage.ProjectSiteIcon.newIcon"
Command="ProjectCenterShowSelected"
Sequence="51"
Image16by16="/_layouts/15/$Resources:core,Language;/images/ps16x16.png?rev=23"
Image16by16Top="-32"
Image16by16Left="-112"
Image32by32="/_layouts/15/$Resources:core,Language;/images/ps32x32.png?rev=23"
Image32by32Top="-320"
Image32by32Left="-128"
LabelText="Project Site"
TemplateAlias="o2"
ToolTipTitle="Project Workspace"
ToolTipDescription="Go to the Project Site Associated with the Project"/>
</CommandUIDefinition>
</CommandUIDefinitions>
<CommandUIHandlers>
<CommandUIHandler
Command="ProjectCenterShowSelected"
CommandAction="javascript:window.Temp_PCE.GetSelectedProject();"
EnabledScript="javascript: function AlwaysTrue(){return true;} AlwaysTrue();"/>
</CommandUIHandlers>
</CommandUIExtension>
</CustomAction>
3. Replace the javascript with the below content
/// <reference name="MicrosoftAjax.js"/>
/// <reference path="~/_layouts/15/inc/pwa/library/Utility.debug.js"/>
/// <reference path="~/_layouts/15/inc/pwa/library/WebMethodManager.debug.js"/>
/// <reference path="~/_layouts/15/inc/pwa/library/shell.debug.js"/>
/// <reference path="~/_layouts/15/inc/pwa/library/TimesheetSatellite.js"/>
/// <reference path="~/_layouts/15/inc/pwa/library/RemoteTextConv.debug.js"/>
/// <reference path="~/_layouts/15/inc/pwa/library/ProjectFramework.debug.js"/>
/// <reference path="~/_layouts/15/inc/pwa/library/GridSatellite.debug.js"/>
/// <reference path="~/_layouts/15/inc/pwa/library/projectserverscripts.debug.js"/>
/// <reference path="~/_layouts/15/inc/pwa/library/pagepropertymgr.debug.js"/>
/// <reference path="~/_layouts/15/SP.core.debug.js"/>
/// <reference path="~/_layouts/15/JsGrid.debug.js"/>
/// <reference path="~/_layouts/15/JsGrid.Gantt.debug.js"/>
var Temp_PCE; // Contains the Project Center extension object.
_spBodyOnLoadFunctionNames.push("Temp_PCE_Main");
function Temp_PCE_Main() {
Temp_PCE = new Temp_GetPCE();
}
function Temp_GetPCE() {
this.GetSelectedProject = function () {
selection = projectCenterComponent.get_GridSatellite().GetJsGridControlInstance().GetSelectedRecordKeys(false);
if (selection.length == 0) {
alert('Please select a project.');
}
else if (selection.length > 1) {
alert('Please select one project.');
}
else {
var uid = selection[0];
var ur = document.URL;
var pws = ur.substring(0, ur.indexOf('Projects.aspx'));
pws = pws + '_layouts/15/PWA/COMMON/wssnav.aspx?Project=' + uid;
window.open(pws);
//return selection[0];
}
return null;
}
}
4. Deploy the solution to respective PWA instance