Draft workflows


Throughout the system, implement a "simple" (non-configurable) draft workflow where content can be saved as a draft before being published.

As a content editor, I can:

  • save a draft so that I can preview and share it without publishing to the live site

  • share a draft URL so that other stakeholders can approve the draft

  • delete a draft so that the system can remain clean

  • name a saved draft so that its purpose is clear and so that it can be easily found later

  • publish a draft so that changes can make their way to the live site

  • contribute edits to drafts started by other users so that we can collaborate on the draft

  • create drafts of translations so that translation workflows can benefit from the same workflow

  • switch between saved drafts when editing content so that I can manage multiple drafts at once

  • edit multiple fields in the front end and save them against the current draft so that I can preview the page whilst editing

  • switch drafts on the admin toolbar when editing/viewing the front end so that I can easily see the status of drafts, etc.

  • publish a draft from the admin toolbar so that I can rapidly publish content as part of a smooth editing workflow

  • switch to viewing the latest published version in the front end so that I can see the current state of the site

As a system administrator, I can:

  • limit access to draft creation so that I can control what users can use this functionality

  • limit access to publishing so that I can control what users are able to publish content

  • limit access to contributing to draft edits so that I can control what users are able to collaborate in this way

  • limit access to discarding drafts not started by oneself so that I can control what users are able to remove other users' drafts

Tech design thoughts

Consider using existing version tables and APIs for this. A draft then becomes a "future" version or somesuch. Also, later on we can/will get to a point where we have changesets (PRESIDECMS-415) that can span across multiple different objects and their translations and have some kickass workflow.




Dominic Watson





Fix versions