Managing a web site requires the existence of several key concepts. For instance, when an organization has decentralized control of its site's content management, it may still want controls over that content. Then too, clients often want to make it easier for content to be developed, but still keep controls over who can publish that content. Various content management systems employ differing approaches to solve this type of problem; some solutions are more robust than others.
Frequently, certain large organizations come to Drupal with expectations about the features of a content management system (CMS). In many cases, Drupal provides the features they expect. However, not all editorial tools are a part of Drupal Core. Drupal has addressed these tools with several different contributed modules. As a result, Drupal's editorial space generally lacks a consistent workflow and interface.
At Palantir.net we saw an opportunity to improve content management workflow in Drupal 7 for our clients by creating Workbench.
What is Workbench?
Workbench helps you manage your site and understand site architecture without the bother of learning Drupal.
Workbench incorporates contributed modules and has some new features of its own:
- Hierarchical permission inheritance by "Sections" not just content types;
- Extensible workflow states;
- Single repository for media management;
- Ability to modify live content without immediately publishing the changes.
Workbench provides a unified interface for managing content. In effect, Workbench hides Drupal, and makes content management about your institution and your website, not about Drupal.
Let's take a look. When Workbench is enabled, a user logs in and and accesses Workbench via the Toolbar:
There are several important factors that ease the learning curve right from the start. When we train clients on Workbench, we point out the My Workbench link in the toolbar, and train them to click it to get to Workbench first. We also provide access to the content most people are focused on when working with a web site: their own profile and their own content.
Sometimes it's the little things that matter most. For example: The Create Content tab looks a lot like what you see when you view node/add. We included support via workbench_media to integrate the Media module into the Create process. Media has its own media entity, and now a user does not need to go to two different places to create content; it's all right there:
One of the most powerful features Workbench provides is Workbench Access. The end user (Author, Reviewer, or Publisher), sees Workbench Access in a transparent setup with the My Sections tab.
The site can be configured to provide hierarchical permissions based on taxonomy or menus. You can add your own plug-in for permissions setting as well. What this means is that permissions to add or edit content in one part of the site is not limited to just one section, and it does not require setting access per node. This allows an organization to have a web site structure that suits user experience and SEO while providing tighter editorial controls of who may edit what content.
With Workbench Moderation, we can provide two more tabs in the Workbench: My Drafts and Needs Review (for Reviewers and Publishers only).
We found that our clients love the ability to say, "I want to save this content but no-one else needs to see it yet." My Drafts shows the user any content they have created which is still in Draft.
Reviewers and Publishers, on the other hand, need to get other things done: "What needs to be approved?" "What needs to be published?"
Before we built Workbench, we provided separate approaches for permissions and content workflow. Menu Node Edit was our Drupal 6 approach to handling hierarchical permissions based on the menu system. It works well if the organization's structure follows the site map, but it does not scale well.
Editorial workflow was customized for every project. We usually created several administrative Views to make it easier to find content that needed editing. This Drupal 6 approach revealed the common pattern of making it easier for a user to find the content that they needed to maintain; offering drafts was not commonly implemented.
Workbench was developed with Drupal 7 in mind. Our goal was to provide a set of modules we could easily re-use with our clients.
Architecture Behind the Scenes
Workbench provides a plug-in system, so that additional modules can be included and folded into the user interface. For instance, Media Module is supported so that create content includes content types as well as media. A simple change like that makes all the difference to people who need to learn how to add and edit content on a new web site as quickly as possible.
Workbench Supports Plug-ins
- Access organized by menus, taxonomy, or your own access module;
- Flexibility -- uses different modules or modules already supported;
- Plug-ins -- fit into an existing and consistent user interface.
Why Use It?
People who maintain sites for large organizations, and who decentralize control of content, can use Workbench to improve control over sections of the site and over those responsible for each section.
Independent contractors will find Workbench improves a client's use of the site; i.e. they will add content sooner. It can reduce client training time and allow Drupal developers to focus on developing the site, not training the client how to use Drupal. And this very magazine you're currently reading, Drupal Watchdog, uses Workbench to manage the editorial process, from drafts to print and online publishing.
Future Plans for Workbench
Palantir.net is now using Workbench with each new site we build. We are working hard to add new functionality that has been requested in our Drupal.org issue queues. In fact, we are managing all changes to Workbench via Drupal.org. What you see in the issue queues is exactly what we're working on now. We are finalizing some critical bugs to create a 1.0 release. In addition, some upcoming new features include:
- panels-optional admin interface;
- file management;
- scheduler and diff integration;
- layered moderation permission rules.