I have a question that is similar to another question but is different.
Consider a blog engine. Posts can be transitioned through state:
- When a post is draft, the user visits
/posts/draft/review/:id
to review their submission as well as have others make comments on their submission. - When finished, posts are then submitted for approval.
- The owner of the post can still review or cancel the approval submission at the same url:
/posts/draft/review/:id
. - When a post is approved, it becomes publicly visible for others to review/comment:
/posts/history/:id
. It's essentially the same UI as thedraft/review
, but with indication that the post is approved and publicly visible.
If a user was to visit the old draft URL /posts/draft/review/:id
, when it has already been approved, which of the following should happen?
Automatically redirect the user to
/posts/history/:id
. The negative side effect to this is that the context switch might be significant. When they're in the/posts/draft
section, the UI could have menus to edit the post etc. I think users wouldn't feel in control and wonder why menus have changed etc.Display a message indicating that the draft was already approved and provide them with a link to view the approved post. The advantage to this approach is that we don't take control away from the user and take them out of "draft" mode without them explicitly requesting the context switch.
download bmml source – Wireframes created with Balsamiq Mockups
As I've mentioned in the comments, our real application is similar to that of distributed source control where your draft is essentially your fork of something.