BookStackApp / BookStack

A platform to create documentation/wiki content built with PHP & Laravel
https://www.bookstackapp.com/
MIT License
15.39k stars 1.93k forks source link

[Feature Request] Add a review/audit property to a Book/Chapter/Page #2123

Open mikeyz24 opened 4 years ago

mikeyz24 commented 4 years ago

Describe the feature you'd like I'm using Bookstack for documentation and policies & procedures purposes. These items need to be reviewed regularly so that they are kept up to date. Adding a review date to a Book/Chapter/Page along with email notifications to the owner of upcoming items for review would be very useful. A history of when a review was completed and by whom should also exist.

Describe the benefits this feature would bring to BookStack users It would allow people to keep their documentation up-to-date and keep an audit trail for accountability purposes.

Additional context

tiredofit commented 4 years ago

This would be quite an interesting feature to add introducing review/moderation workflow. I envision another set of permissions on the Shelf level and even Book level that allows a certain set of permissions to Create/Edit/Update content, yet keep in a "Review" mode similar to Draft which notifies in the Application a series of pages/content to be reviewed. The "Reviewer" role would then do any edits required and be responsible for "Publishing".

BFjimmy commented 12 hours ago

After analyzing the database structure and current functionality, here’s a proposal for introducing a review workflow in BookStack to support a "peer review" process before publishing pages.

Database Observations

Draft Pages:

Concurrent Drafts:

Proposed Review Process

To introduce a peer review mechanism, the following changes and behaviors are suggested:

Button Behavior Changes:

For users without the publish page permission:

For users with publish page permissions:

Database Updates for Review Status:

Behavior for Reviewing Drafts:

Any user with the publish page permission:

If a page is marked as type = review_draft and the draft owner revisits it:

Restrictions:

While a page is in review_draft status:

Intended Workflow

A user without publish page rights works on a draft and clicks "Set to Review" instead of "Save Page." The draft's status changes to review_draft.

A user with publish page rights sees the page marked for review, loads the draft, and can decide to:

If the original author decides to remove the draft from the review queue, they regain the ability to edit it.

Advantages of This System

Simplicity:

Seamless Integration:

Flexibility:

Potential Implementation Steps

  1. Add a new "Set to Review" button with associated logic.
  2. Update the page_revisions table to support the new review_draft status.
  3. Implement restrictions for users accessing review_draft revisions.
  4. Add UI indicators to highlight pages in the review process for users with publish page permissions.

Also, maybe consider changing the text "Save page" to "Publish page" if the publish rights are enabled?