UX: Merge settings related to muted tags. (#7656)
This commit is contained in:
parent
0955d9ece9
commit
c1e7a1b292
|
@ -29,6 +29,11 @@ export default Ember.Controller.extend(PreferencesTabController, {
|
||||||
return this.get("currentUser.id") === this.get("model.id");
|
return this.get("currentUser.id") === this.get("model.id");
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@computed("siteSettings.remove_muted_tags_from_latest")
|
||||||
|
hideMutedTags() {
|
||||||
|
return this.siteSettings.remove_muted_tags_from_latest !== "never";
|
||||||
|
},
|
||||||
|
|
||||||
canSave: Ember.computed.or("canSee", "currentUser.admin"),
|
canSave: Ember.computed.or("canSee", "currentUser.admin"),
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
<label>{{d-icon "d-muted"}} {{i18n 'user.muted_categories'}}</label>
|
<label>{{d-icon "d-muted"}} {{i18n 'user.muted_categories'}}</label>
|
||||||
{{category-selector categories=model.mutedCategories blacklist=selectedCategories}}
|
{{category-selector categories=model.mutedCategories blacklist=selectedCategories}}
|
||||||
</div>
|
</div>
|
||||||
<div class="instructions">{{i18n 'user.muted_categories_instructions'}}</div>
|
<div class="instructions">{{i18n (if hideMutedTags 'user.muted_categories_instructions' 'user.muted_categories_instructions_dont_hide')}}</div>
|
||||||
{{#if canSee}}
|
{{#if canSee}}
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<a href="{{unbound model.mutedTopicsPath}}">{{i18n 'user.muted_topics_link'}}</a>
|
<a href="{{unbound model.mutedTopicsPath}}">{{i18n 'user.muted_topics_link'}}</a>
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require_dependency 'enum_site_setting'
|
||||||
|
|
||||||
|
class RemoveMutedTagsFromLatestSiteSetting < EnumSiteSetting
|
||||||
|
|
||||||
|
ALWAYS ||= "always"
|
||||||
|
ONLY_MUTED ||= "only_muted"
|
||||||
|
NEVER ||= "never"
|
||||||
|
|
||||||
|
def self.valid_value?(val)
|
||||||
|
values.any? { |v| v[:value] == val }
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.values
|
||||||
|
@values ||= [
|
||||||
|
{ name: "admin.tags.remove_muted_tags_from_latest.always", value: ALWAYS },
|
||||||
|
{ name: "admin.tags.remove_muted_tags_from_latest.only_muted", value: ONLY_MUTED },
|
||||||
|
{ name: "admin.tags.remove_muted_tags_from_latest.never", value: NEVER }
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.translate_names?
|
||||||
|
true
|
||||||
|
end
|
||||||
|
end
|
|
@ -844,6 +844,7 @@ en:
|
||||||
|
|
||||||
muted_categories: "Muted"
|
muted_categories: "Muted"
|
||||||
muted_categories_instructions: "You will not be notified of anything about new topics in these categories, and they will not appear on the categories or latest pages."
|
muted_categories_instructions: "You will not be notified of anything about new topics in these categories, and they will not appear on the categories or latest pages."
|
||||||
|
muted_categories_instructions_dont_hide: "You will not be notified of anything about new topics in these categories."
|
||||||
no_category_access: "As a moderator you have limited category access, save is disabled."
|
no_category_access: "As a moderator you have limited category access, save is disabled."
|
||||||
delete_account: "Delete My Account"
|
delete_account: "Delete My Account"
|
||||||
delete_account_confirm: "Are you sure you want to permanently delete your account? This action cannot be undone!"
|
delete_account_confirm: "Are you sure you want to permanently delete your account? This action cannot be undone!"
|
||||||
|
@ -3007,6 +3008,12 @@ en:
|
||||||
title: "Discourse Admin"
|
title: "Discourse Admin"
|
||||||
moderator: "Moderator"
|
moderator: "Moderator"
|
||||||
|
|
||||||
|
tags:
|
||||||
|
remove_muted_tags_from_latest:
|
||||||
|
always: "always"
|
||||||
|
only_muted: "when used alone or with other muted tags"
|
||||||
|
never: "never"
|
||||||
|
|
||||||
reports:
|
reports:
|
||||||
title: "List of available reports"
|
title: "List of available reports"
|
||||||
|
|
||||||
|
|
|
@ -2019,7 +2019,6 @@ en:
|
||||||
min_trust_level_to_tag_topics: "Minimum trust level required to tag topics"
|
min_trust_level_to_tag_topics: "Minimum trust level required to tag topics"
|
||||||
suppress_overlapping_tags_in_list: "If tags match exact words in topic titles, don't show the tag"
|
suppress_overlapping_tags_in_list: "If tags match exact words in topic titles, don't show the tag"
|
||||||
remove_muted_tags_from_latest: "Don't show topics tagged only with muted tags in the latest topic list."
|
remove_muted_tags_from_latest: "Don't show topics tagged only with muted tags in the latest topic list."
|
||||||
mute_other_present_tags: "Don't show topics tagged with both muted and unmuted tags in the latest topic list."
|
|
||||||
force_lowercase_tags: "Force all new tags to be entirely lowercase."
|
force_lowercase_tags: "Force all new tags to be entirely lowercase."
|
||||||
|
|
||||||
company_name: "Company Name"
|
company_name: "Company Name"
|
||||||
|
|
|
@ -2059,9 +2059,10 @@ tags:
|
||||||
default: false
|
default: false
|
||||||
client: true
|
client: true
|
||||||
remove_muted_tags_from_latest:
|
remove_muted_tags_from_latest:
|
||||||
default: false
|
client: true
|
||||||
mute_other_present_tags:
|
type: enum
|
||||||
default: true
|
default: always
|
||||||
|
enum: RemoveMutedTagsFromLatestSiteSetting
|
||||||
force_lowercase_tags:
|
force_lowercase_tags:
|
||||||
default: true
|
default: true
|
||||||
client: true
|
client: true
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class MergeRemoveMutedTagsFromLatestSiteSettings < ActiveRecord::Migration[5.2]
|
||||||
|
def up
|
||||||
|
execute "UPDATE site_settings SET value = 'always', data_type = 7 WHERE name = 'remove_muted_tags_from_latest' AND value = 't'"
|
||||||
|
execute "UPDATE site_settings SET value = 'never', data_type = 7 WHERE name = 'remove_muted_tags_from_latest' AND value = 'f'"
|
||||||
|
execute "DELETE FROM site_settings WHERE name = 'mute_other_present_tags'"
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
raise ActiveRecord::IrreversibleMigration
|
||||||
|
end
|
||||||
|
end
|
|
@ -875,7 +875,7 @@ class TopicQuery
|
||||||
list
|
list
|
||||||
end
|
end
|
||||||
def remove_muted_tags(list, user, opts = nil)
|
def remove_muted_tags(list, user, opts = nil)
|
||||||
if user.nil? || !SiteSetting.tagging_enabled || !SiteSetting.remove_muted_tags_from_latest
|
if user.nil? || !SiteSetting.tagging_enabled || SiteSetting.remove_muted_tags_from_latest == 'never'
|
||||||
return list
|
return list
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -896,7 +896,7 @@ class TopicQuery
|
||||||
return list
|
return list
|
||||||
end
|
end
|
||||||
|
|
||||||
if SiteSetting.mute_other_present_tags
|
if SiteSetting.remove_muted_tags_from_latest == 'always'
|
||||||
list = list.where("
|
list = list.where("
|
||||||
NOT EXISTS(
|
NOT EXISTS(
|
||||||
SELECT 1
|
SELECT 1
|
||||||
|
|
|
@ -244,7 +244,7 @@ describe TopicQuery do
|
||||||
context 'muted tags' do
|
context 'muted tags' do
|
||||||
it 'is removed from new and latest lists' do
|
it 'is removed from new and latest lists' do
|
||||||
SiteSetting.tagging_enabled = true
|
SiteSetting.tagging_enabled = true
|
||||||
SiteSetting.remove_muted_tags_from_latest = true
|
SiteSetting.remove_muted_tags_from_latest = 'always'
|
||||||
|
|
||||||
muted_tag, other_tag = Fabricate(:tag), Fabricate(:tag)
|
muted_tag, other_tag = Fabricate(:tag), Fabricate(:tag)
|
||||||
|
|
||||||
|
@ -263,13 +263,21 @@ describe TopicQuery do
|
||||||
topic_ids = topic_query.list_new.topics.map(&:id)
|
topic_ids = topic_query.list_new.topics.map(&:id)
|
||||||
expect(topic_ids).to contain_exactly(tagged_topic.id, untagged_topic.id)
|
expect(topic_ids).to contain_exactly(tagged_topic.id, untagged_topic.id)
|
||||||
|
|
||||||
SiteSetting.mute_other_present_tags = false
|
SiteSetting.remove_muted_tags_from_latest = 'only_muted'
|
||||||
|
|
||||||
topic_ids = topic_query.list_latest.topics.map(&:id)
|
topic_ids = topic_query.list_latest.topics.map(&:id)
|
||||||
expect(topic_ids).to contain_exactly(muted_tagged_topic.id, tagged_topic.id, untagged_topic.id)
|
expect(topic_ids).to contain_exactly(tagged_topic.id, muted_tagged_topic.id, untagged_topic.id)
|
||||||
|
|
||||||
topic_ids = topic_query.list_new.topics.map(&:id)
|
topic_ids = topic_query.list_new.topics.map(&:id)
|
||||||
expect(topic_ids).to contain_exactly(muted_tagged_topic.id, tagged_topic.id, untagged_topic.id)
|
expect(topic_ids).to contain_exactly(tagged_topic.id, muted_tagged_topic.id, untagged_topic.id)
|
||||||
|
|
||||||
|
SiteSetting.remove_muted_tags_from_latest = 'never'
|
||||||
|
|
||||||
|
topic_ids = topic_query.list_latest.topics.map(&:id)
|
||||||
|
expect(topic_ids).to contain_exactly(muted_topic.id, tagged_topic.id, muted_tagged_topic.id, untagged_topic.id)
|
||||||
|
|
||||||
|
topic_ids = topic_query.list_new.topics.map(&:id)
|
||||||
|
expect(topic_ids).to contain_exactly(muted_topic.id, tagged_topic.id, muted_tagged_topic.id, untagged_topic.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue