Easily add jQuery tabs using the “Reusable Content” feature

This post is quite a fun one. Whilst I was working with a customer today someone came up to me and asked if it was possible to add tabs to their content pages to which I gave it a few seconds thought and I responded “sure that’s absolutely possible – leave it with me!”.

I then spent my commute home thinking about how tabs could be delivered for end-users to make use of without them having to meddle around with any code. Sure getting tabs to work in SharePoint is pretty straight forward and is something we’ve all done at least on a couple of occasions but I give more thought about making it easier for the end-users to consume rather than just meeting the customers requirement by putting in a solution that isn’t pretty nor easy to use.

Solution

I eventually decided to use, what I thought was a very simple approach to giving users the option to use tabs. My solution makes use of the tabs from the jQuery UI (http://jqueryui.com/tabs/) library. It starts with a small modification to the master page that is currently being used. The following code should be added before the closing </head> tag.

[code lang=”html”]
<link href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script type="text/javascript">
// <![CDATA[
$(function() {
$("#tabs").tabs();
});
// ]]>
</script>
[/code]

I then added the following to the “Reusable Content” list in the root site of the Site Collection where I was adding tabs. Make sure that the “Automatic Update” is unchecked for this piece of reusable content.

Reusable Content item
Reusable Content item
Reusable Content Lists
Reusable Content Lists

Below is the code that should be added to the Reusable HTML field.
[code lang=”html”]
<div id="tabs">
<ul>
<li><a href="#tabs-1">Overtype tab 1 title here</a></li>
<li><a href="#tabs-2">Overtype tab 2 title here</a></li>
<li><a href="#tabs-3">Overtype tab 3 title here</a></li>
</ul>
<div id="tabs-1">Overtype tab 1 content here.</div>
<div id="tabs-2">Overtype tab 2 content here.</div>
<div id="tabs-3">Overtype tab 3 content here.</div>
</div>
[/code]

To add the tabs onto a content page you can simply select the item that has just been added to “Reusable Content” list by clicking on the “Insert” tab whilst editing the page and expanding the “Resumable Content” menu.

Reusable Content menu
Reusable Content menu

Rich text that represents the HTML markup for the tabs is then added onto the page. Each tab is represented by a bullet list item “<li>” and a content area “<div>”. The names of tabs you require can then be added by carefully overtyping the existing tab names. You must be careful not to introduce or remove any markup as this might prevent the tabs from working correctly.

Once you have entered the names of the tabs you can then add the appropriate content by overtyping the content that you wish to include in that tab. This content can consist of rich text such as tables, images and also web parts. Again you must be careful not to introduce or remove any markup. Any tabs that are no longer required can be carefully removed by deleting the bullet list item and content area.

Tabs demonstration
Tabs demonstration

There are other ways to achieve the same result but I thought this was a simple approach using out-of-the-box functionality. Happy tabbing!

Install standalone OneDrive for Business (formally SkyDrive Pro)

Ok, so this has bothered me for sometime – until now, there has been standalone OneDrive for Business SkyDrive Pro client. Users have had to install Office 2013 to experience the new way of synchronising files with SharePoint.

The reason it has bothered me is that it is such a limitation to require the client to be installed in this way. For most organisations it is just not feasible to install the latest and greatest software from day one due to budgets and wider IT constraints, resources and policies where software has to be tested, licensed and patched for example.

Let’s put that aside now as I’m really happy to see that Microsoft released a standalone installer for the OneDrive for Business SkyDrive Pro client earlier this week.

Download

The standalone OneDrive for Business client is available on the Microsoft Downloads site. Both 32-bit and 64-bit versions of the client are available.

The client can also be installed alongside previous versions of Office and can be used to synchronise libraries from SharePoint 2010, SharePoint 2013 and SharePoint Online in Office 365.

Determining the version of your SharePoint Online servers

If you need to check what version of SharePoint server your Office 365 tenant is running especially  during the Office 365 and SharePoint Online service upgrade (aside from checking through the Admin Portal via https://portal.microsoftonline.com) then you can add the following /_vti_pvt/service.cnf to the end of your SharePoint site – as shown below.

https://jcallaghan.sharepoint.com/_vti_pvt/service.cnf

The page will output two lines of text from which we can determine the version of the SharePoint servers. If the second row starts with 14 then you are running SharePoint 2010, if it starts with 15 then you are running SharePoint 2013.

/_vti_pvt/service.cnf output displayed
/_vti_pvt/service.cnf output displayed

SharePoint Online on SharePoint 2010 servers:

vti_encoding:SR|utf8-nl
vti_extenderversion:SR|14.0.0.6120

SharePoint Online on SharePoint 2013 servers:

vti_encoding:SR|utf8-nl
vti_extenderversion:SR|15.0.0.4454

After the service upgrade you may be running SharePoint 2010 on SharePoint 2013 servers (technically known as 14 mode) until you upgrade your site collections to SharePoint 2013 (15 mode).

Embed code in a SharePoint 2013 web part page

A quick post here to share a new feature in SharePoint 2013 that enables you to easily embed code such as javascript and CSS into the content area of a web part page for example.

Insert action to embed code
Insert action to embed code

Previously we did this by editing the page source or by creating lots of text files and linked them using the “Content Link” parameter in “Content Editor Web Parts (CEWP’s)”. Now we can easily embed code on a content page where SharePoint places it is in a lovely dedicated snippet section that is only visible when you edit the page.

Code embed in page content
Code embed in page content
Embed code window
Embed code window

When you add any javascript SharePoint converts the “edit snippet” link as shown above to a web part where you then edit the content much like the “Content Editor Web Part”.

The Sign in as Different User option is missing in SharePoint 2013

I’ve been exploring SharePoint 2013 in recent days and noticed that the ‘Sign in as Different User’ option or action from the welcome control (user menu) seems to have been removed or forgotten from the user interface in this build.

Sign in as Different User in SharePoint 2010
Sign in as Different User in SharePoint 2010
No sign in as different user missing in SharePoint 2013
No sign in as different user missing in SharePoint 2013

For someone who works with SharePoint like I do, any kind of administration, developing or testing that requires you to sign in as another you will now become convoluted from the previous version and is somewhat frustrating and annoying. Others such as Nick Grattan have discussed this issue and possible workarounds.

Of all the workarounds currently available such as browsing to the closeConnection page directly, modifying the welcome control and adding the control back (I do not recommend this approach), creating a javascript bookmark, embedding jQuery into the master page to insert the option back in the menu and lastly launching the browser with the RunAs option my preference will remain to browse directly to the closeConnection page:

/_layouts/closeConnection.aspx?loginasanotheruser=true

Or alternatively, use the javascript bookmark Cory Peters has kindly created:

javascript:window.location.href=”http://”+window.location.host+”/_layouts/closeConnection.aspx?loginasanotheruser=true”;

It will be interesting to see what others do and as to whether or not the option gets added back by Microsoft in a future update.