We’ve been using Basecamp from 37signals for quite awhile now for client communications and project management. We soon started to use it to store and manage our employee manual too. However, there are certainly limitations, as you can only have one level of categorization and hierarchy and you can’t change the order in which they appear.
So we decided to “port” the manual over to Drupal and write a blog post about how we did it. This post will cover how to setup a manual for both your clients and your employees using a combination of the book module and wikitools. We will also go into how to setup notifications and some other helpful related tools.
EDIT: Please note that we are currently using Drupal 5.x for our production site as we are waiting for stable releases of CCK and Views before upgrading. However, this tutorial is not dependent on either of those modules and this may very well be possible with Drupal 6.x though there may be some differences in the modules.
You will need to make sure the following core modules are turned on:
You will then need to download and install the following modules from drupal.org:
First, we will want to make some changes to the Book content type settings.
Let’s not forget to configure pathauto for books before we go and create the book pages so that we can save ourselves the trouble of updating the paths later on.
Now that we have the content type configured the way we like it and the paths set up nicely, it’s time to create the actual books. You do this by creating the first page in the book and setting its parent as the top level. We’re going to create two books. One called “Support” for our clients and another called “Handbook” for our employees.
In addition to the two default roles anonymous user and authenticated user we have three roles: super (has access to everything), admin (has access to day-to-day site administration functionality), staff (see below). I’ll let you decide what roles you want to use on your site, but I would suggest that you have at least one that is similar to our “staff” role. The staff role has the following permissions checked:
Once those permissions are set, head over to admin/content/book. You will now see the two books that you have created. Optionally, you can click on “outline” and it will show you all the pages of the book and allows you to easily edit the titles and order them. Not too exciting since we only have one page each. For now you can ignore this and click on “Access control” tab (admin/content/book/access). This new tab is provided by the “Book Access” module we installed earlier. We’ve specified that everyone can view the Support book but only admin and super can edit/delete pages. For the Handbook we’ve specified that only staff, admin, and super can view/edit the book and only admin/super can delete pages. Note that I didn’t allow staff to delete pages. This is because there is no “undo” for deleting pages and so we need to have a certain level of safety.

Now that we’ve given access to users, we need to put it somewhere they can find it. You can do this by editing the menu settings of the two book pages you created and specifying where you want them to appear.
Now we have the basic book functionality setup we need to add in the wiki functionality that will help to make this more dynamic. The great thing about wikipedia is the way that it’s deeply linkable, collaborative, and constantly in flux. This meets the needs of our company manual well.
We previously installed the wikitools module, so let’s start configuring it. Suprisingly there isn’t much we need to do:
NOTE: There are other wiki filter formats out there, like PEAR Wiki Filter, which allow you to use various markup languages such as MediaWiki. I chose to just use the freelinking module because our staff was already used to using the textile markup language so I didn’t want to introduce something new.

Setting up wikitools alone doesn’t do much though. You really need to have an input format to see the fruit of it. I’m going to walk you through the set up of the input format that we have used. You’ve already installed the necessary modules in the first step of this article, so we can get started configuring them.
This step is optional, and only recommended if you believe you will be including code snippets throughout your manual. Since we’re a web development company, this feature really makes sense for us.
To follow along you will need to have the “GeSHi Filter” module installed as well as the GeSHi Source Code.

Now that we have setup the code highlighting and freelinking we can actually create the input format.

EDIT: In the above image I had “Line break converter” selected, however, with the textile converter this is not necessary and depending on the order they are interpreted in could even cause double line breaks.
Now that we have the input format setup, to make life easier, let’s set it so that input format is used by default when staff create a manual entry.

Now, let’s test out or new wiki system. I’ve included a text file which you can download, open, and copy and paste into a book page. It will give you a general idea of all the options available to you and how it works.
Here is what that page will look like:

A couple things to note…
Earlier on in this process, I got you to set revisions on by default. We’re going to take advantage of this now. Go ahead and make a change to an existing page and add a log message. When you do this the revisions tab will appear. Because we installed the diff module earlier we will get an added bonus when we click on the revisions tab.

You can now choose two different revisions and then click “Show diff” which is short for “Show differences”. When we do that we are shown the changes that were made.

So we’ve setup two books to be used as our client and employee manuals and we’ve add the wiki functionality to make this a more collaborative effort. However, from time to time we need to discuss company policies or best practices. We’ve already installed and configured the talk modules so let’s go ahead an enable it for this message.
Edit the book page you just created and under “Comment settings” set it to “Read/Write” and save. Notice that right away a talk tab is added. If you click on that you can now post the first comment.
It’s no use having a manual if no one reads it. Initially, we thought we might be able to keep people up to date via RSS. One could easily install the Views module and create an RSS feed and in addition install the Comment RSS module to include comments. However, that doesn’t allow for people to only get notified about the topics that matter to them and it doesn’t ensure that all changes to manual entries that affect them run past their eyes. So we decided to the use the subscription module.

NOTE: I haven’t added any default subscriptions to specific user roles. You may want to.
That’s it. We’ve created a corporate manual that we can use for documenting client support as well as for internal employees. We’ve used the book module so that we have the ease and strucuture it provides, but we’ve also used wiki and revisions tools to allow for a collaborative. And in the last few steps we’ve enabled subscriptions so staff members can stay up to date on policies that matter to them.
imagex_media: Simple, more practical approaches to actual resource allocation http://t.co/KLNnvSCn #PM #IT
imagex_media: Help users remember what they’re looking for on your website. http://t.co/fa27gOup #UX #IA #usability #webdesign
imagex_media: #Usability Design for Online Web Forms http://t.co/zhjTLdcq #webdesign #IA
imagex_media: Battle of the #Drupal 7 Modules: CKEditor vs WYSIWYG http://t.co/2qVxlIPk #webdev
imagex_media: Friday food for thought: Designing Websites for the Blind & Visually Impaired http://t.co/w0Y6jEmv #webdesign