I want to create a Wiki style website where many users can edit a document but can not publish their edits. Imagine having four users -- an administrator and three normal users. The three users can't publish anything they create or edit. So... one user creates a node. The administrator publishes the node after reviewing it. Then a second user edits the node and it's saved to a draft and after the third user edits the node and it's saved to a different draft. Now there is a published node and two different drafts of the node from two different users waiting for the administrator to publish one of them. Is there a clean Drupal solution for this?
2 Answers
The Workbench module with Workbench Moderation seems to do what you require. Users create drafts, which can then be markled for review. Once an admin reviews the content he can choose to publish it, update it or send it back to the user for further work. Each user has their own drafts, so different users can have drafts of the same document.
You can have as many stages and transitions as you want, so you could have a reviewer role who reviews content and sends it off to a publisher role to be published.
Workbench is Drupal 7 only, but Workflow seems to do similar things for Drupal 6, although I've got no experience with it personally.
Drupal supports revisions natively, but does not allow for very sophisticated "revision-play". However, as it is the case for almost anything with Drupal, you can use a module that allows more advanced revisioning options. Its name is - guess what - Revisioning.
Notice, that if you want to create a complete wiki, you will probably have to use some wiki-specific modules that provide most of the wiki functionality without any hassle. An example of such a module is Wikitools.
Finally, if you do not have enough time and you prefer to click-and-play you can check the Wiki Installation Profile.