It’s pretty common for a client to require an internal approval process for updates and new content creation on their website. Often times, the person that’s changing/updating content is an administrative assistant, but for quality assurance reasons a manager or supervisor needs to give the final approval before the update is published.
The Obvious Choice: Drupal Workflow
This approval process is commonly referred to as ‘workflow’, so my first instinct is to search contributed modules for ‘Drupal Workflow’. And you get exactly what you’re looking for. A module that assists you in configuring rules, revisions, and workflow states to accommodate one or more levels of approval to manage content updates. Being the top search result, I trusted this module blindly and dove into the configuration feeling pretty good about how it worked. And don’t misinterpret the tone of this post. Drupal Workflow isn’t bad, but I found some redundancy that really bugged me after I walked away from a finished site.
It really boils down to a single step in the setup process that I felt was unnecessary: you configure workflow ‘states’ that apply to your content types. Once you apply a workflow to your content type(s), an extra field is added to the administration interface that allows you to select one of the states that you setup when you defined the workflow. This field can either be set manually or programmatically depending on the permissions that you’ve assigned to users. This field might have options like ‘draft’, ‘needs review’, or ‘published’. It’s that last option that bugs me. We already have a ‘published’ field, don’t we? Why do we need another field? Can’t we just insert additional values into the ‘published/unpublished’ flag that Drupal natively provides?
Fast forward several projects: I’m once again faced with a client that requires workflow/approval on their site. I remembered that when I implemented the Drupal Workflow module, I had to setup several rules that were doing double duty of changing the workflow state AND the published/unpublished flag. Again I thought to myself that it would be ideal if there was a module that just hooked into the published/unpublished flag and added additional values.
If at first … Try again: Workbench Moderation
Using the Drupal Workflow project page as a starting point for my search, I looked through the related projects until I found Workbench Moderation, which is a small piece of the Workbench suite of tools for Drupal. It appears that I wasn’t the first to consider the published/unpublished flag as a good place to implement workflow, because that’s exactly what Workbench Moderation does.
Certainly revisions and rules are still required for a full implementation. There’s no interface in either Drupal Workflow or Workbench Moderation for configuring email notifications. It’s recommended to use Rules for that and I wouldn’t suggest anything else. Rules rocks! The rest of the configuration of Workbench Moderation is similar to Drupal Workflow.
But now rather than having two separate interfaces for the workflow process when I’m editing a node, it’s all handled through an adjusted interface for the published/unpublished flag. It’s such a simple variation in design, yet it makes all the difference in simplifying the process of moving from one workflow state to the next.
My recommendation: skip over the Drupal Workflow module in favor of Workbench Moderation. And while you’re at it, investigate some of the other tools that the Workbench suite offers. There are additional modules for handling workflow for your media, and adjusting user access permissions based on ‘sections’ of your site.