Jaap Vossers' SharePoint Blog

Just another WordPress.com site

New version of SharePoint InlineSiteSettings released (javascript only)

with one comment

SharePoint InlineSiteSettings is a tool which I originally released several months ago. It provides a quick way to access your Site Settings in SharePoint; it allows you to pop up the Site Settings of the current site – triggered by a keyboard shortcut – without navigating away from the current page. InlineSiteSettings uses jQuery to power its AJAX functionality.

After I was hinted by Jeroen Ritmeijer from Muhimbi that a javascript only version of SharePoint InlineSiteSettings (the previous version was implemented as a serverside WebControl spitting out javascript) would work very well with their free SharePoint Infuser product, I started my investigation and ended up implementing a new version of SharePoint InlineSiteSettings! I am quite pleased that it is now a very compact solution compared to it’s previous release.

You COULD use the new version SharePoint InlineSiteSettings without Muhimbi Infuser by pasting the script into a Content Editor Web Part on each page where you want to enable the SharePoint InlineSiteSettings functionality, BUT to be honest, this doesn’t really make sense and it would be very time consuming. What we really want is a solution that allows us to inject the script on every page and configure it only once. This is where SharePoint Infuser comes into play.

Please try it out and let me know your thoughts!

Download SharePoint InlineSiteSettings 1.2 from CodePlex

Written by jvossers

September 20, 2009 at 8:42 pm

Using Google Ajax Libraries API to load jQuery

with one comment

Google provides a client side API (Google AJAX Libraries API) for developers to load the jQuery library on their web pages without the need to host the jQuery library on your own site. This is particularly interesting for jQuery based scripts that can be hosted in a Content Editor Web Part in SharePoint, since you can more or less “embed” the jQuery library in your script, thereby simplifying its distribution and installation processes. The CEWP version of SharePoint InstantListFilter implements this concept.

There are several other reasons why it may be a good idea to use Google’s API to load jQuery. Have a look at 3 reasons why you should let Google host jQuery for you.

Now, one thing you need to be aware of, is that your browser may start bugging you with warnings if your site runs on https. This is because it does not like having both secure (https) and non-secure (http) items on a single page.


In that case, all you need to do is to load Google’s API over https as well, which should remove the non-secure item from the page.

So in your script replace this:

<script src=”http://www.google.com/jsapi”></script&gt;

With this:

<script src=”https://www.google.com/jsapi”></script&gt;

Written by jvossers

June 6, 2009 at 7:16 pm

Posted in jQuery

Reusable Content & HTML Snippets

with 3 comments

So your client wants to be able to insert more than just formatted text and images in his Publishing HTML field control? So he wants to insert those fancy looking boxes that your graphics designer made? Ah, but they are variable height and require several background images so we are talking about inserting a bit of “complex” html. How can we provide a user friendly interface with as little customisation as possible? I personally like the out-of-the-box Reusable Content functionality provided by MOSS 2007. I will demonstrate how it can be used to solve our problem.

Let’s take the following box for example:


Because of the vertical scaling requirements, the box needs to be split into three logical sections: header, content, footer. The html for the box shown is as follows:

<div class="box">
    <div class="box-header">This is the header</div>
    <div class="box-content">Lorem ipsum ...</div>
    <div class="box-footer">&nbsp;</div>

The styling of the box, including the background images is done via CSS. The header and footer are fixed height, whereas the content area is variable height and has a background image that repeats in the vertical direction.

Back to SharePoint – when you create a site collection using the Publishing Site Site Definition, you should have a list called Reusable Content in your root web. You can navigate to it using Site Content and Structure. We will create an item in this list that will be a “template” for our box.

Insert a new item into the Reusable Content list. Ensure you have Automatic Update turned OFF. Use the Edit HTML Source on the html editor to paste in the following html:

<div class="box">
    <div class="box-header">[HEADER] </div>
    <div class="box-content">[CONTENT]<div>
    <div class="box-footer">&nbsp;</div>

The rest of the fields are for you to fill in. Save the item and then approve it (the Reusable Content list has content approval turned on by default).

Now that we have our box html template in place, let’s go to our page that needs to have an instance of the box appear on it. Go to edit mode and locate your Publishing Html Field Control. Click the toolbar button Open a new window to Insert Reusable Content.


Select the item that we created earlier and press OK. If everything went well, an instance of the box with text placeholders has been inserted into your Publishing HTML Field control.


All there is left to do is to place the cursor in the text placeholders and replace it with the actual content.


On a final note, be aware of the risk involved when content editors play around with div elements. I have seen situations where content editors got “creative” and partially deleted boxes, leaving orphaned div opening tags and turning the layout of your page into scrambled eggs.

Written by jvossers

April 19, 2009 at 11:10 pm

TunnelPoint review

with 4 comments

Last Wednesday during the UK SharePint event in London, Daniel McPherson from Zevenseas mentioned their new TunnelPoint service (Beta). I was kind of curious what the fuss was all about so I decided to spend a little time playing with it. I am quite excited and I must say that I love the concept. Let me try and explain how it works.

TunnelPoint is a hosted service provided by Zevenseas. It connects external services (for example SOAP web services) to SharePoint List data in your SharePoint Site. TunnelPoint uses the built-in SharePoint SOAP web services exposed by your SharePoint environment to read and write list data. Really, all you need to do is log in to TunnelPoint using your TunnelPoint account and use the web interface provided to configure which external services should map to which lists in your SharePoint site. Once you have completed your configuration, TunnelPoint will periodically consume the service and update field values in your list. The whole idea being that you do not touch your server and you do not write a single line of code.


Currently, TunnelPoint offers several services to connect with, one of which is a Currency Conversion service. I decided I would try that one out. My goal was to have a list of currency conversions in my hosted WSS site, and have TunnelPoint periodically perform the conversion for me based on the latest exchange rates.

I performed the following steps to achieve my goal:

  1. Registered with TunnelPoint.com to get a Beta user account
  2. Setup a SharePoint site within my hosted WSS environment.
  3. Created a user and added it to the owners group of my newly created site
  4. Logged in TunnelPoint.com and registered my SharePoint site by supplying its url and account credentials to be used by TunnelPoint to access the web services of my SharePoint site.
  5. Using the TunnelPoint web interface, I added the Currency Conversion service and configured it to point to the site I registered earlier and configured it to create the list for me.
  6. Manually added list items to the newly created list in my SharePoint site. These list items can be seen as tasks to be processed by TunnelPoint.
  7. Wait for TunnelPoint to operate on my list

This is what my list looked like before TunnelPoint started doing its work:


Now, after a few minutes, TunnelPoint started to wake up and decide it should update my To Amount fields by applying the currency conversion (using the external service) for each list item.

After TunnelPoint did its job, my list looked like this:


It all works like a charm and the fact that I got this to work on my hosted WSS environment where I have limited access to (I can’t even deploy a Feature to it) opens so many doors for so many people.

In my example I only connect to the Currency Conversion service, but Zevenseas offers several other services like, SMS, stock quote, short url and web site preview + more services to be added later.

On a final note, to make TunnelPoint even more powerful I would like to suggest to Zevenseas to provide a generic service, where you can configure a SOAP web service url and define mappings between list fields and web service parameters. That way the pool of services to connect to instantly grows from several, to… a lot more!

Thumbs up Zevenseas!

Written by jvossers

April 10, 2009 at 7:51 pm

Twitter meets Jaap

leave a comment »

I did try out Twitter some time ago but I did not catch the Twitter bug. I suppose it’s not really motivating to tweet anything if you only have one follower (quicker to just give him a ring instead).

I have decided to give it another go, so please don’t hesitate to follow me on Twitter.

Written by jvossers

April 10, 2009 at 11:43 am

Posted in Twitter

Live demo online for SharePoint InstantListFilter

with 5 comments

Not so long ago I posted something on my blog about a tool I released on CodePlex, called SharePoint InstantListFilter.

I have just put a live demo online so you can try it out before installing it.

Go check it out!

Written by jvossers

April 4, 2009 at 1:40 pm

cmd.exe Command History with F7

with one comment

Go and open a cmd.exe window, run a few commands and press F7…

Wow! Nice surprise, I never realised that existed. Very useful when you need to re-run some (stsadm) commands. Apparently it works in PowerShell as well.


Thank you Dan Lewis.

Written by jvossers

April 2, 2009 at 2:06 pm

Released: SharePoint InstantListFilter

with 26 comments

The latest addition to my CodePlex portfolio is called SharePoint InstantListFilter.

It is an assembly free solution and you can even “install” it by editing the contents of a Content Editor Web Part! So what is it really? It is a javascript based solution that adds filter textboxes to every column of a SharePoint list view (SPGridView) with filter-as-you-type functionality. It uses jQuery to add the textboxes and perform the filtering.

Update: Live demo online

One cool freebie is that you can use it to filter on field types that normally aren’t filterable, like calculated fields and note (multiple lines of text) fields.


Instructions on how to install can be found on the CodePlex site.

Download SharePoint InstantListFilter @ CodePlex

Written by jvossers

March 30, 2009 at 8:40 pm

Released: SharePoint QuickLaunchExtender

with 11 comments

Most of the out of the box SharePoint sites use the QuickLaunch menu. The size of this menu gradually grows as the number of sub sites and lists grow. I have heard many people complain about how they cannot easily find a particular navigation item when it is so crowded.

I published a free solution on Codeplex called SharePoint QuickLaunchExtender. It enriches the QuickLaunch menu. It comes with a custom configuration page that allows you to specify the behaviour of the QuikcLaunch menu. It works on both WSS 3.0 and MOSS 2007. SharePoint QuickLaunchExtender comes with a Solution Package (WSP), so there are no manual installation steps to take.

This is the description of SharePoint QuickLaunchExtender on codeplex:

“Extends the SP QuickLaunch control to provide a richer experience. Configure it to transform the QuickLaunch into an Accordion, a set of collapsible/expandable panels (Adds scrollbar per panel if height limit is specified and exceeded), or a real-time filterable list. Uses jQuery”

Basically, in addition to the default behaviour of the QuickLaunch menu, there are three modes that SharePoint QuickLaunchExtender introduces.

  • Expand/collapse (optionally with configurable panel height limit)
  • Accordion
  • Filter

Expand/collapse mode allows you to click one of the headings – just right next the heading link) to toggle the expand/collapse state of the panel that contains its related child links. You can configure whether all panels should be expanded or collapse on page load. Also, you can specify a limit in pixels for the panel height. If the limit for any of the panels is exceeded because of the amount of links on that panel, a vertical scrollbar will automatically be added to that panel to cater for any overflow.

Accordion mode also allows you to click one of the headings, however, only one panel will be in expanded state at all times. You can configure the panel height in pixels.

Filter mode is a mode that has been added after the first release. It is now my personal favourite now! It adds a textbox to the top of the QuickLaunch menu and allows you to filter the links in the QuickLaunch menu in a filter-as-you-type manner. This is really useful when your QuickLaunch menu tends to get very big.

Demo screencast:

I apologise for the poor readibility in the video above. In the video I demonstrate the different modes of SharePoint QuickLaunchextender as I configure it using the custom configuration page

Download SharePoint QuickLaunchExtender @ CodePlex

Written by jvossers

March 29, 2009 at 11:47 pm

The WSP Boat

leave a comment »

At work I develop many Features and often wrap them in Solution Packages (WSP) so I can just throw it all over the fence of the company that is responsible for managing the servers and running code deployments. However, these guys did not actually understand what they were doing. They were blindly following the installation guide that describes the calls to stsadm for solution deployment. Sure, they managed to do what I wanted them to do, but I would prefer if they would understand what they were doing so they could do some troubleshooting if a Feature would fail to install for example. So I sat down with them and came up with an analogy of having soldiers (Features) that need to be deployed to battle fields (Web Applications) on a remote island (Farm). The soldiers need to be put inside a vehicle (WSP) that transports them to the barracks (Solution store) of the island. From there the soldiers can be deployed to the battle fields.

Obviously a WSP can contain more than just Features, but for the sake of simplicity I have not included deployment of 12 hive files, DLL’s, and CAS policies in the drawing.

I call it: The WSP Boat


Written by jvossers

March 26, 2009 at 2:28 am

Posted in Deployment, SharePoint