Hiding buttons in Project Online

A common requirement from customers is to be able to hide  / disable buttons within their Project Server instance and of course, this requirement will not go away with Project Online. I wrote a a while back about how you could disable or hide ribbon buttons using a simple sandboxed solution. Well the good news is that this approach is still valid for Project Online. Given all the focus on the app model and the flexibility and restrictions it introduces, it is sometimes forgotten that you can still deploy sandboxed solutions to your Project Online environment.

In choosing to utilise Sandboxed Solutions in Project Online, you should choose to remember that whilst the solutions are ‘sandboxed’, if you do end up having a rogue solution that causes your sandbox to suspend, then ALL your solutions in the sandbox will suspend until the resources reset. In the case of ribbon customisations, I think this is a pretty light and risk free way of deploying the customisation.

For this post I am going to take the .WSP file created in the above blog post, using the source posted here.

To deploy the solution, navigate to Site Settings and choose Solutions

Project Online : Site Settings

Choose to upload the HideRibbonButton.wsp from the above solution

Upload Solution

Once the file has uploaded, choose to Activate the solution.

Activate Solution

Once activated, navigate to Site Settings > Manage Site Features, note the two additional features that have now appeared like in the original post.

EPMSource.com Features

In this case, activating the relevant features will either hide the EPT Change Button or Disable the EPT Change Button within your Project Online tenant.

Disabled Button

There you have it, a simple sandboxed solution in this case from Project Server 2010, that I have simply deployed directly into Project Online with no modifications, allowing you to hide buttons. Of course, it’s not just Online, sandboxed solutions are still present in Project Server 2013, so still a valid option too Smile

Advertisements

Adding Print capabilities to Project Detail Pages

A user in the Project Server forums asked a question this week about whether it was possible to add printing capability to the Project Detail Pages in order to allow the ‘forms’ to be printed out as there is no print button available on the ribbon.

Capture1

Out of the box, the printing capability in the Project Web Application is limited to the grids, including the schedule grids that are visible in a schedule PDP and uses a custom page to render the information as can be seen below.

Project Schedule PDP Grid Print

After a little experimenting with the Internet Explorer printing, it seems that PDP’s can be printed quite well directly from the browser, so I thought I would try and pull together a ribbon feature that enables PDP printing.

The feature consists of XML button definition and a little piece of JavaScript to determine if the button will be enabled or not. This is important so that the button can be disabled when the user is on the schedule page that has it’s own grid based printing function like the picture above. For the purposes of this feature, I have gone the quick route and do the check based on the name of the page, in this case if the page is called schedule.aspx the button will be disabled. You may need to modify this check if your schedule based PDP(s) have a different name.

Schedule PDP - Custom Print button disabled

The element.xml looks like this:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
	<CustomAction Id="Ribbon.Tabs.PDP.Home.Print"
				  Location="CommandUI.Ribbon">
		<CommandUIExtension>
			<CommandUIDefinitions>
				<CommandUIDefinition Location="Ribbon.Tabs.PDP.Home.Groups._children">
					<Group Id="Ribbon.Tabs.PDP.Home.Print"
						   Sequence="60"
						   Description="Print Custom Group"
						   Title="Share"
						   Command="EnableCustomGroup"
						   Template="Ribbon.Templates.Flexible2">
						<Controls Id="Ribbon.Tabs.PDP.Home.Print.Controls">
							<Button Id="Ribbon.Tabs.PDP.Home.Print.PrintPDP"
									Sequence="40"
									Command="PrintPDP"
									Alt="Print"
									Image16by16="/_layouts/$Resources:core,Language;/images/ps16x16.png"
									Image16by16Top="-96"
									Image16by16Left="-160"
									Image32by32="/_layouts/$Resources:core,Language;/images/ps32x32.png"
									Image32by32Top="-288"
									Image32by32Left="-128"
									LabelText="Print"
									TemplateAlias="o1"
							        ToolTipTitle="Print"
									ToolTipDescription="Print the contents of the PDP"/>
						</Controls>
					</Group>
				</CommandUIDefinition>
				<CommandUIDefinition Location="Ribbon.Tabs.PDP.Home.Scaling._children">
					<MaxSize
						Id="Ribbon.Tabs.PDP.Home.Scaling.Print"
						Sequence="140"
						GroupId="Ribbon.Tabs.PDP.Home.Print"
						Size="LargeLarge"/>
				</CommandUIDefinition>
			</CommandUIDefinitions>
			<CommandUIHandlers>
				<CommandUIHandler Command="EnableCustomGroup"
								  CommandAction="javascript:return true;" />
				<CommandUIHandler Command="PrintPDP"
								  CommandAction="javascript:window.print();"
								  EnabledScript="javascript:
								  function disablePrintForSchedule() {
									var sPath = window.location.pathname;
									var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
									if (sPage.toLowerCase() == 'schedule.aspx')
									{
										return false;
									}
									else
									{
										return true;
									}
								   }
									disablePrintForSchedule();"
/>
			</CommandUIHandlers>
		</CommandUIExtension>
	</CustomAction>
</Elements>

The process of building the feature is exactly the same as outlined in https://epmsource.com/2011/12/13/hiding-disabling-ribbon-items-in-project-server-part-ii/ but substitute the above code into the Element.xml file and change the feature name accordingly.

Once the feature is deployed and activated a Print button should available on the PDP ribbon that when clicked will invoke the Internet Explorer print dialog.

PDP Print Button

From my preliminary testing, the output is pretty good, as can be seen from this ‘Print to XPS’ below:

XPS Printer Output

I have uploaded the full source to Skydrive which can be downloaded from the link below.

Project PDP Print Page

Happy PDP printing Smile

Hiding the Today indicator from the Project 2010 Timeline

Over the past few months I have found myself using the new Timeline feature of Project 2010 more and more to communicate project schedule information to audiences that may not be comfortable reading Gantt charts.  By default, the timeline will show a ‘Today’ indicator that highlights the current date as can be seen below.

Timeline view with today indicator

Whilst this is fine in most cases, there have been a few times where I didn’t want the today indicator to be visible in the timeline, but I couldn’t work out how to hide it. Looking at the timeline tools ribbon I couldn’t see any prominent setting in the Show / Hide section.

Timeline Tools - Format Timeline

So to hide the indicator I used to export the Timeline out to Word and then edit the resulting graphic to physically remove the Today label and the associated dotted line.

Until today.

Whilst building a timeline view for a project, I needed to change the Date Format and noticed three little Show / Hide options buried at the bottom of the Date Format menu.

Timeline - Show / Hide items

Each option allows you to toggle whether the Task Dates, Today indicator or Timescale is displayed on the timeline view. I am not quite sure why it’s buried at the bottom of the date format menu, but that can be easily fixed by a quick customisation of the Timeline Tools ribbon:

  1. Select File > Options > Customise Ribbon;
  2. Create a new group called ‘Toggle Today indicator’; and
  3. Add the ‘Today’ option to the ‘Toggle Today indicator’ group in the Timeline Tools / Format tab as per the screenshot below.

Customise Ribbon - Add Today to Timeline Tools

Resulting in this much improved Timeline tools ribbon with a prominent today indicator toggle.

Timeline Tools - New Improved with custom Today group

Happy Timelining Smile