Each time I engage in one of these titanic battle of wills SharePoint seems to win. It proves once again it is a development platform and NOT a collaboration platform.
My task for today was about trying to improve the usability of the Wiki. I know we really should go out and acquire SocialText and integrate it as a series of Web Parts in to SharePoint, but that requires a tortuous approval process that will come up against the argument.... "But SharePoint has a Wiki..."
Yes, SharePoint does have a Wiki. It is a pathetic feature barren sad excuse for a wiki. In trying to improve the usability of the built in Wiki I am starting from this position:
1. I am not a developer
2. I do not have authority to add special web parts or code to the SharePoint Server.
3. I have limited rights as a site administrator
4. I do have access to SharePoint Designer 2007.
I am therefore setting about creating a crude template capability for the SharePoint Wiki. I welcome feedback on my approach but this is the conclusion I came to:
I created a Wiki called Templates. In this Wiki I place pre-formatted pages that are the templates to be made available.
I then created a Wiki for the actual documents. I called this PH (short for Project History).
I needed a mechanism to Create a Wiki page from a Template. To do this I decided to create a Task list.
I then used SharePoint Designer to link the three lists together with a workflow. This is where it got ugly and SharePoint revealed, once again how inconsistently it has been developed.
I had 3 fields in the Task List. Title, Template Name and Status. The Template Name did a lookup in to the Templates Wiki to get Page Names for the Templates. The Status field is either "In Progress" or "Completed".
I can therefore create a web part to Create A Page From A Template.
This opens the New Form in the Task List. You choose a Title for your Page and select a Template from the list of available templates. This all seems simple enough.
I next constructed a Workflow that is triggered when a record is created in the Task List. This turned out to be extremely messy.
The basic flow I went through in the workflow was as follows:
Step 1
Get values for the Task List for Title and Template Name.
Lookup up the Template Name in the Templates list using the Template Name from the Task List. Get the Template Content from the Wiki Content field and save it in a workflow variable.
Step 2
Create a new record in the PH Wiki library and save the ID to a workflow variable
Step 3
Change the Status of the Task List to completed.
The problems I have run in to with this are:
If I create a record in the PH Wiki it does not create the a skeleton .aspx file. ie. the basic record is malformed. There is no option to set the basic record because the workflow only gives you access to the Name and WikiContent fields in the Wiki.
I tried Copying an existing record in the PH Wiki to create a new record. The problem is that you have no way to get at the ID of the record that is created so that you can go and update the content of the record at a later stage in the Workflow.
All in all SharePoint once again shows up apparent flaws in the basic design. Why does it treat a Wiki Library differently from a Document Library and why does it treat a custom list differently from a Document Library. It all smacks of lazy thinking and a bad logical data model.
All in all a wasted afternoon. A wiki that is frustrating to use and so lacking in functionality that is laughable. Microsoft promote the addition of Wikis and Blogs to SharePoint 2007 but the truth is that they are there in an unchanged format from the previous SharePoint 2003. Yes, give me SocialText with their brilliant SocialCalc feature that lets me work with a web spreadsheet in my wiki page.
If anyone has come up with a way to copy the content of a wiki page in one library to a new page in another wiki library please let me in on the secret!