FEATURE: Shared Drafts

This feature can be enabled by choosing a destination for the
`shared drafts category` site setting.

* Staff members can create shared drafts, choosing a destination
category for the topic when it is published.

* Shared Drafts can be viewed in their category, or above the
topic list for the destination category where it will end up.

* When the shared draft is ready, it can be published to the
appropriate category by clicking a button on the topic view.

* When published, Drafts change their timestamps to the current
time, and any edits to the original post are removed.
This commit is contained in:
Robin Ward
2018-03-13 15:59:12 -04:00
parent dcbd9635f4
commit b9abd7dc9e
59 changed files with 851 additions and 260 deletions

View File

@@ -44,7 +44,8 @@ class TopicQuery
per_page
visible
guardian
no_definitions)
no_definitions
destination_category_id)
end
# Maps `order` to a columns in `topics`
@@ -606,6 +607,11 @@ class TopicQuery
result = apply_ordering(result, options)
result = result.listable_topics.includes(:category)
if options[:destination_category_id]
destination_category_id = get_category_id(options[:destination_category_id])
result = result.includes(:shared_draft).where("shared_drafts.category_id" => destination_category_id)
end
if options[:exclude_category_ids] && options[:exclude_category_ids].is_a?(Array) && options[:exclude_category_ids].size > 0
result = result.where("categories.id NOT IN (?)", options[:exclude_category_ids]).references(:categories)
end