The normal way to draft posts is to simply leave them in the "unpublished" state while they are not finished. The shortcoming of this method however is that it builds on the "administer nodes" permission. Giving guest bloggers this permission means, also giving them permission to edit and delete any blog posts. This is certainly not desirable and calls for a different approach.
The solution for this problem is to install a node access module. Drupal offers a number of these and in essence, any of them would do the job.
One of the best choices in access control, though, is probably the Organic Groups module, as it is quite popular and therefore well supported.
In a nutshell, the OG concept allows users to create or join arbitrary groups and assign nodes to the group(s) they are a member of. A group is basically a bucket that can contain any number of items and will take care of adding access control to it's contents. The rule of thumb here being that a user who is not a member will not get to see any group content.
For a blog with only few registered accounts, the OG module might seem to be an overkill at first. On closer inspection however, it allows to kill two birds with one rock. Besides adding access control it also provides means for easily recovering article drafts and therefore makes the CMF module obsolete. Also the group concept makes it possible to crosspost a draft in several different groups, allowing for different people to work on it without giving everyone involved global editing permissions.
The organic groups module is a bit more complicated to setup:
- Enable the base module as well as access control and views integration submodule.
- Go to
admin/content/typesand make sure at least one content type exists that will serve as a "Group homepage". That is, create an appropriately named content type and on it's edit form check "Group node" in the "Organic groups" panel. - Visit the edit forms of all content types that may be used for blogging and check the "Standard group post" option. Alternatively, check "Wiki group post", if sharing drafts between multiple accounts is desired.
- Visit
admin/og/og_accessand make sure, posts are only visible within their target groups and groups are private. - Create one private group for each user who is blogging. This group will be that users personal "drafting folder". Additionally, if sharing drafts between multiple accounts is desired, allow users to create "drafting folders" as needed. Note: in that case, the "Wiki group post option" (see above) is required so that group members cannot only read but also edit nodes, they do not own themselves.
- For ease of use, enable the group control block in the block administration interface.
With these settings in place, the node edit form of all blog content types will now feature an "audience" control. Selecting an audience for a node means putting that node under the access control of the group in question and therefore making it invisible for all non group members.
