SharePoint – Creating a document URL handler – dynamic and static

I wrote a post about adding the built in document id to the document file name. Now I will show you another way to use the built in document id when referring to the documents.

Lets say we are in a big project with several baselines . And every baseline requires it’s own version of a document, but the same document. It could be that new requirements have been added along the way or maybe the architecture has changed from one to another. This might cause the document name to change for some reason and that will break the link from a previous baseline.

What if you had a link that:

  • Will never break as long as the document or version is not deleted.
  • Can point to the current version.
  • Can point to a specific version.
  • Can point to the latest major version.

Lets say that link would look something like this

Latest version -> Dynamic
http://SharePoint.home.local/_layouts/customapplicationpages/getdocbyid.aspx?docid=TESTID-1-12

Specific version -> Static, kind of
http://SharePoint.home.local/_layouts/customapplicationpages/getdocbyid.aspx?docid=TESTID-1-12&version=1.2

Latest major version -> Dynamic
http://SharePoint.home.local/_layouts/customapplicationpages/getdocbyid.aspx?docid=TESTID-1-12&version=major

Microsoft has provided some great functions from the Office API that we can use when we search for the document via the document id.

Creating the application page – URL handler

First of we need to create an application page that can handle the query-strings from the URL. This can be done quite easy, just map the SharePoint layouts folder to you project (I also added a new folder called customapplicationpages) and add an Application Page. In our case I added a page called getdocbyid.aspx. We don’t have to create any markup for this application page, just code behind. So basically, what we need to do is capture the id and the version and find the right document and redirect to the URL. This is how I implemented it, note that the current version of a document is not a part of the document version history.

(more…)