mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Category setting to allow unlimited first post edits by the owner of the topic (#12690)
This PR adds a new category setting which is a column in the `categories` table, `allow_unlimited_owner_edits_on_first_post`. What this does is: * Inside the `can_edit_post?` method of `PostGuardian`, if the current user editing a post is the owner of the post, it is the first post, and the topic's category has `allow_unlimited_owner_edits_on_first_post`, then we bypass the check for `LimitedEdit#edit_time_limit_expired?` on that post. * Also, similar to wiki topics, in `PostActionNotifier#after_create_post_revision` we send a notification to all users watching a topic when the OP is edited in a topic with the category setting `allow_unlimited_owner_edits_on_first_post` enabled. This is useful for forums where there is a Marketplace or similar category, where topics are created and then updated indefinitely by the OP rather than the OP making new topics or additional replies. In a way this acts similar to a wiki that only one person can edit.
This commit is contained in:
@@ -957,67 +957,68 @@ end
|
||||
#
|
||||
# Table name: categories
|
||||
#
|
||||
# id :integer not null, primary key
|
||||
# name :string(50) not null
|
||||
# color :string(6) default("0088CC"), not null
|
||||
# topic_id :integer
|
||||
# topic_count :integer default(0), not null
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# user_id :integer not null
|
||||
# topics_year :integer default(0)
|
||||
# topics_month :integer default(0)
|
||||
# topics_week :integer default(0)
|
||||
# slug :string not null
|
||||
# description :text
|
||||
# text_color :string(6) default("FFFFFF"), not null
|
||||
# read_restricted :boolean default(FALSE), not null
|
||||
# auto_close_hours :float
|
||||
# post_count :integer default(0), not null
|
||||
# latest_post_id :integer
|
||||
# latest_topic_id :integer
|
||||
# position :integer
|
||||
# parent_category_id :integer
|
||||
# posts_year :integer default(0)
|
||||
# posts_month :integer default(0)
|
||||
# posts_week :integer default(0)
|
||||
# email_in :string
|
||||
# email_in_allow_strangers :boolean default(FALSE)
|
||||
# topics_day :integer default(0)
|
||||
# posts_day :integer default(0)
|
||||
# allow_badges :boolean default(TRUE), not null
|
||||
# name_lower :string(50) not null
|
||||
# auto_close_based_on_last_post :boolean default(FALSE)
|
||||
# topic_template :text
|
||||
# contains_messages :boolean
|
||||
# sort_order :string
|
||||
# sort_ascending :boolean
|
||||
# uploaded_logo_id :integer
|
||||
# uploaded_background_id :integer
|
||||
# topic_featured_link_allowed :boolean default(TRUE)
|
||||
# all_topics_wiki :boolean default(FALSE), not null
|
||||
# show_subcategory_list :boolean default(FALSE)
|
||||
# num_featured_topics :integer default(3)
|
||||
# default_view :string(50)
|
||||
# subcategory_list_style :string(50) default("rows_with_featured_topics")
|
||||
# default_top_period :string(20) default("all")
|
||||
# mailinglist_mirror :boolean default(FALSE), not null
|
||||
# minimum_required_tags :integer default(0), not null
|
||||
# navigate_to_first_post_after_read :boolean default(FALSE), not null
|
||||
# search_priority :integer default(0)
|
||||
# allow_global_tags :boolean default(FALSE), not null
|
||||
# reviewable_by_group_id :integer
|
||||
# required_tag_group_id :integer
|
||||
# min_tags_from_required_group :integer default(1), not null
|
||||
# read_only_banner :string
|
||||
# default_list_filter :string(20) default("all")
|
||||
# id :integer not null, primary key
|
||||
# name :string(50) not null
|
||||
# color :string(6) default("0088CC"), not null
|
||||
# topic_id :integer
|
||||
# topic_count :integer default(0), not null
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# user_id :integer not null
|
||||
# topics_year :integer default(0)
|
||||
# topics_month :integer default(0)
|
||||
# topics_week :integer default(0)
|
||||
# slug :string not null
|
||||
# description :text
|
||||
# text_color :string(6) default("FFFFFF"), not null
|
||||
# read_restricted :boolean default(FALSE), not null
|
||||
# auto_close_hours :float
|
||||
# post_count :integer default(0), not null
|
||||
# latest_post_id :integer
|
||||
# latest_topic_id :integer
|
||||
# position :integer
|
||||
# parent_category_id :integer
|
||||
# posts_year :integer default(0)
|
||||
# posts_month :integer default(0)
|
||||
# posts_week :integer default(0)
|
||||
# email_in :string
|
||||
# email_in_allow_strangers :boolean default(FALSE)
|
||||
# topics_day :integer default(0)
|
||||
# posts_day :integer default(0)
|
||||
# allow_badges :boolean default(TRUE), not null
|
||||
# name_lower :string(50) not null
|
||||
# auto_close_based_on_last_post :boolean default(FALSE)
|
||||
# topic_template :text
|
||||
# contains_messages :boolean
|
||||
# sort_order :string
|
||||
# sort_ascending :boolean
|
||||
# uploaded_logo_id :integer
|
||||
# uploaded_background_id :integer
|
||||
# topic_featured_link_allowed :boolean default(TRUE)
|
||||
# all_topics_wiki :boolean default(FALSE), not null
|
||||
# show_subcategory_list :boolean default(FALSE)
|
||||
# num_featured_topics :integer default(3)
|
||||
# default_view :string(50)
|
||||
# subcategory_list_style :string(50) default("rows_with_featured_topics")
|
||||
# default_top_period :string(20) default("all")
|
||||
# mailinglist_mirror :boolean default(FALSE), not null
|
||||
# minimum_required_tags :integer default(0), not null
|
||||
# navigate_to_first_post_after_read :boolean default(FALSE), not null
|
||||
# search_priority :integer default(0)
|
||||
# allow_global_tags :boolean default(FALSE), not null
|
||||
# reviewable_by_group_id :integer
|
||||
# required_tag_group_id :integer
|
||||
# min_tags_from_required_group :integer default(1), not null
|
||||
# read_only_banner :string
|
||||
# default_list_filter :string(20) default("all")
|
||||
# allow_unlimited_owner_edits_on_first_post :boolean default(FALSE)
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_categories_on_email_in (email_in) UNIQUE
|
||||
# index_categories_on_forum_thread_count (topic_count)
|
||||
# index_categories_on_reviewable_by_group_id (reviewable_by_group_id)
|
||||
# index_categories_on_search_priority (search_priority)
|
||||
# index_categories_on_topic_count (topic_count)
|
||||
# unique_index_categories_on_name (COALESCE(parent_category_id, '-1'::integer), name) UNIQUE
|
||||
# unique_index_categories_on_slug (COALESCE(parent_category_id, '-1'::integer), slug) UNIQUE WHERE ((slug)::text <> ''::text)
|
||||
# unique_index_categories_on_slug (COALESCE(parent_category_id, '-1'::integer), lower((slug)::text)) UNIQUE WHERE ((slug)::text <> ''::text)
|
||||
#
|
||||
|
||||
@@ -1418,6 +1418,10 @@ class Topic < ActiveRecord::Base
|
||||
category && category.read_restricted
|
||||
end
|
||||
|
||||
def category_allows_unlimited_owner_edits_on_first_post?
|
||||
category && category.allow_unlimited_owner_edits_on_first_post?
|
||||
end
|
||||
|
||||
def acting_user
|
||||
@acting_user || user
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user