From efc717c14ac72c8fd04fc1f95e37cb70c8ffbe26 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 7 Jan 2015 12:19:23 +1100 Subject: [PATCH] FEATURE: remove star concept from Discourse --- .../javascripts/admin/templates/dashboard.hbs | 1 - .../controllers/discovery/topics.js.es6 | 2 +- .../discourse/lib/keyboard_shortcuts.js | 1 - .../javascripts/discourse/models/nav_item.js | 2 +- .../javascripts/discourse/models/topic.js | 18 ++---- .../discourse/models/user_action.js | 5 -- .../routes/user-activity-starred.js.es6 | 9 --- .../modal/keyboard_shortcuts_help.hbs | 1 - .../discourse/views/activity-filter.js.es6 | 1 - .../discourse/views/star-button.js.es6 | 21 ------ .../views/topic-footer-buttons.js.es6 | 2 - .../stylesheets/common/base/_topic-list.scss | 3 - app/assets/stylesheets/desktop/discourse.scss | 12 ---- .../stylesheets/desktop/topic-post.scss | 6 -- app/assets/stylesheets/mobile/discourse.scss | 30 --------- app/controllers/topics_controller.rb | 8 --- app/models/admin_dashboard_data.rb | 1 - app/models/report.rb | 6 -- app/models/topic.rb | 32 ---------- app/models/topic_user.rb | 5 -- app/models/user_action.rb | 31 +-------- app/models/user_action_observer.rb | 21 ------ app/serializers/topic_list_item_serializer.rb | 7 -- app/serializers/topic_view_serializer.rb | 6 -- config/locales/client.en.yml | 13 ---- db/migrate/20150106215342_remove_stars.rb | 29 +++++++++ lib/discourse.rb | 2 +- lib/topic_query.rb | 5 -- spec/components/topic_query_spec.rb | 26 -------- spec/controllers/list_controller_spec.rb | 16 ----- spec/controllers/topics_controller_spec.rb | 39 ----------- spec/fabricators/user_action_fabricator.rb | 2 +- spec/models/topic_spec.rb | 64 ------------------- spec/models/topic_user_spec.rb | 39 ++++------- spec/models/user_action_spec.rb | 32 ---------- 35 files changed, 50 insertions(+), 448 deletions(-) delete mode 100644 app/assets/javascripts/discourse/routes/user-activity-starred.js.es6 delete mode 100644 app/assets/javascripts/discourse/views/star-button.js.es6 create mode 100644 db/migrate/20150106215342_remove_stars.rb diff --git a/app/assets/javascripts/admin/templates/dashboard.hbs b/app/assets/javascripts/admin/templates/dashboard.hbs index 039ed9844a3..b788bb08f0f 100644 --- a/app/assets/javascripts/admin/templates/dashboard.hbs +++ b/app/assets/javascripts/admin/templates/dashboard.hbs @@ -57,7 +57,6 @@ {{ render 'admin_report_counts' likes }} {{ render 'admin_report_counts' flags }} {{ render 'admin_report_counts' bookmarks }} - {{ render 'admin_report_counts' starred }} {{ render 'admin_report_counts' emails }} {{/unless}} diff --git a/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 b/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 index 2f9c73c6052..544684c1950 100644 --- a/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 @@ -165,7 +165,7 @@ var controllerOpts = { var split = this.get('filter').split('/'); - if (split[0] !== 'new' && split[0] !== 'unread' && split[0] !== 'starred') { return; } + if (split[0] !== 'new' && split[0] !== 'unread') { return; } return I18n.t("topics.none.educate." + split[0], { userPrefsUrl: Discourse.getURL("/users/") + (Discourse.User.currentProp("username_lower")) + "/preferences" diff --git a/app/assets/javascripts/discourse/lib/keyboard_shortcuts.js b/app/assets/javascripts/discourse/lib/keyboard_shortcuts.js index 9fc70afbdc5..d7c6d0c1490 100644 --- a/app/assets/javascripts/discourse/lib/keyboard_shortcuts.js +++ b/app/assets/javascripts/discourse/lib/keyboard_shortcuts.js @@ -3,7 +3,6 @@ var PATH_BINDINGS = { 'g l': '/latest', 'g n': '/new', 'g u': '/unread', - 'g f': '/starred', 'g c': '/categories', 'g t': '/top' }, diff --git a/app/assets/javascripts/discourse/models/nav_item.js b/app/assets/javascripts/discourse/models/nav_item.js index b79cd023991..c081fbcd2f8 100644 --- a/app/assets/javascripts/discourse/models/nav_item.js +++ b/app/assets/javascripts/discourse/models/nav_item.js @@ -74,7 +74,7 @@ Discourse.NavItem.reopenClass({ if (!Discourse.Category.list() && testName === "categories") return null; if (!Discourse.Site.currentProp('top_menu_items').contains(testName)) return null; - var args = { name: name, hasIcon: name === "unread" || name === "starred" }; + var args = { name: name, hasIcon: name === "unread" }; if (opts.category) { args.category = opts.category; } if (opts.noSubcategories) { args.noSubcategories = true; } return Discourse.NavItem.create(args); diff --git a/app/assets/javascripts/discourse/models/topic.js b/app/assets/javascripts/discourse/models/topic.js index 57fe8d907a7..f4b13f818dd 100644 --- a/app/assets/javascripts/discourse/models/topic.js +++ b/app/assets/javascripts/discourse/models/topic.js @@ -172,14 +172,6 @@ Discourse.Topic = Discourse.Model.extend({ .then(function () { self.set('archetype', 'regular'); }); }, - starTooltipKey: function() { - return this.get('starred') ? 'starred.help.unstar' : 'starred.help.star'; - }.property('starred'), - - starTooltip: function() { - return I18n.t(this.get('starTooltipKey')); - }.property('starTooltipKey'), - estimatedReadingTime: function() { var wordCount = this.get('word_count'); if (!wordCount) return; @@ -188,15 +180,15 @@ Discourse.Topic = Discourse.Model.extend({ return Math.floor(wordCount / 500.0); }.property('word_count'), - toggleStar: function() { + toggleBookmark: function() { var topic = this; - topic.toggleProperty('starred'); + topic.toggleProperty('bookmarked'); return Discourse.ajax({ - url: "" + (this.get('url')) + "/star", + url: "" + (this.get('url')) + "/bookmark", type: 'PUT', - data: { starred: topic.get('starred') ? true : false } + data: { bookmarked: topic.get('bookmarked') ? true : false } }).then(null, function (error) { - topic.toggleProperty('starred'); + topic.toggleProperty('bookmarked'); if (error && error.responseText) { bootbox.alert($.parseJSON(error.responseText).errors); diff --git a/app/assets/javascripts/discourse/models/user_action.js b/app/assets/javascripts/discourse/models/user_action.js index fd88f179170..ba555e84838 100644 --- a/app/assets/javascripts/discourse/models/user_action.js +++ b/app/assets/javascripts/discourse/models/user_action.js @@ -16,7 +16,6 @@ var UserActionTypes = { replies: 6, mentions: 7, quotes: 9, - starred: 10, edits: 11, messages_sent: 12, messages_received: 13 @@ -127,8 +126,6 @@ Discourse.UserAction = Discourse.Model.extend({ case UserActionTypes.likes_given: case UserActionTypes.likes_received: return "likes"; - case UserActionTypes.starred: - return "stars"; case UserActionTypes.edits: return "edits"; case UserActionTypes.bookmarks: @@ -205,7 +202,6 @@ Discourse.UserAction.reopenClass({ TO_COLLAPSE: [ UserActionTypes.likes_given, UserActionTypes.likes_received, - UserActionTypes.starred, UserActionTypes.edits, UserActionTypes.bookmarks ], @@ -213,7 +209,6 @@ Discourse.UserAction.reopenClass({ TO_SHOW: [ UserActionTypes.likes_given, UserActionTypes.likes_received, - UserActionTypes.starred, UserActionTypes.edits, UserActionTypes.bookmarks, UserActionTypes.messages_sent, diff --git a/app/assets/javascripts/discourse/routes/user-activity-starred.js.es6 b/app/assets/javascripts/discourse/routes/user-activity-starred.js.es6 deleted file mode 100644 index 2e74e1ddcbe..00000000000 --- a/app/assets/javascripts/discourse/routes/user-activity-starred.js.es6 +++ /dev/null @@ -1,9 +0,0 @@ -import UserTopicListRoute from "discourse/routes/user-topic-list"; - -export default UserTopicListRoute.extend({ - userActionType: Discourse.UserAction.TYPES.starred, - - model: function() { - return Discourse.TopicList.find('starred', { user_id: this.modelFor('user').get('id') }); - } -}); diff --git a/app/assets/javascripts/discourse/templates/modal/keyboard_shortcuts_help.hbs b/app/assets/javascripts/discourse/templates/modal/keyboard_shortcuts_help.hbs index 64de5b26139..c13311cea04 100644 --- a/app/assets/javascripts/discourse/templates/modal/keyboard_shortcuts_help.hbs +++ b/app/assets/javascripts/discourse/templates/modal/keyboard_shortcuts_help.hbs @@ -7,7 +7,6 @@
  • {{{i18n 'keyboard_shortcuts_help.jump_to.latest'}}}
  • {{{i18n 'keyboard_shortcuts_help.jump_to.new'}}}
  • {{{i18n 'keyboard_shortcuts_help.jump_to.unread'}}}
  • -
  • {{{i18n 'keyboard_shortcuts_help.jump_to.starred'}}}
  • {{{i18n 'keyboard_shortcuts_help.jump_to.categories'}}}
  • {{{i18n 'keyboard_shortcuts_help.jump_to.top'}}}
  • diff --git a/app/assets/javascripts/discourse/views/activity-filter.js.es6 b/app/assets/javascripts/discourse/views/activity-filter.js.es6 index 24445239d0b..7a7ed0f2a4c 100644 --- a/app/assets/javascripts/discourse/views/activity-filter.js.es6 +++ b/app/assets/javascripts/discourse/views/activity-filter.js.es6 @@ -54,7 +54,6 @@ export default Ember.Component.extend(StringBuffer, { case Discourse.UserAction.TYPES.bookmarks: return "bookmark"; case Discourse.UserAction.TYPES.edits: return "pencil"; case Discourse.UserAction.TYPES.replies: return "reply"; - case Discourse.UserAction.TYPES.starred: return "star"; } }.property("content.action_type") }); diff --git a/app/assets/javascripts/discourse/views/star-button.js.es6 b/app/assets/javascripts/discourse/views/star-button.js.es6 deleted file mode 100644 index c87aea9f246..00000000000 --- a/app/assets/javascripts/discourse/views/star-button.js.es6 +++ /dev/null @@ -1,21 +0,0 @@ -import ButtonView from 'discourse/views/button'; - -export default ButtonView.extend({ - classNames: ['star'], - textKey: 'starred.title', - helpKeyBinding: 'controller.starTooltipKey', - attributeBindings: ['disabled'], - - rerenderTriggers: ['controller.starred'], - - click: function() { - this.get('controller').send('toggleStar'); - }, - - renderIcon: function(buffer) { - buffer.push(""); - } -}); - diff --git a/app/assets/javascripts/discourse/views/topic-footer-buttons.js.es6 b/app/assets/javascripts/discourse/views/topic-footer-buttons.js.es6 index d94cead5c2e..918845ca6fd 100644 --- a/app/assets/javascripts/discourse/views/topic-footer-buttons.js.es6 +++ b/app/assets/javascripts/discourse/views/topic-footer-buttons.js.es6 @@ -1,7 +1,6 @@ import TopicAdminMenuButton from 'discourse/views/topic-admin-menu-button'; import LoginReplyButton from 'discourse/views/login-reply-button'; import FlagTopicButton from 'discourse/views/flag-topic-button'; -import StarButton from 'discourse/views/star-button'; import ShareButton from 'discourse/views/share-button'; import InviteReplyButton from 'discourse/views/invite-reply-button'; import ReplyButton from 'discourse/views/reply-button'; @@ -30,7 +29,6 @@ export default DiscourseContainerView.extend({ if (this.get('topic.details.can_invite_to')) { this.attachViewClass(InviteReplyButton); } - this.attachViewClass(StarButton); this.attachViewClass(ShareButton); if (this.get('topic.details.can_flag_topic')) { this.attachViewClass(FlagTopicButton); diff --git a/app/assets/stylesheets/common/base/_topic-list.scss b/app/assets/stylesheets/common/base/_topic-list.scss index 6a477b28890..751adbada01 100644 --- a/app/assets/stylesheets/common/base/_topic-list.scss +++ b/app/assets/stylesheets/common/base/_topic-list.scss @@ -10,9 +10,6 @@ margin-right: 4px; font: 1.071em/0.9 "FontAwesome"; } - .has-icon .starred:before { - content: "\f005"; - } } } diff --git a/app/assets/stylesheets/desktop/discourse.scss b/app/assets/stylesheets/desktop/discourse.scss index 7bc5d8848eb..e35b97994c8 100644 --- a/app/assets/stylesheets/desktop/discourse.scss +++ b/app/assets/stylesheets/desktop/discourse.scss @@ -36,24 +36,12 @@ body { } } #main { - .fa-star.starred { - color: $danger; - } a.star { color: dark-light-diff($secondary, $primary, 80%, -20%); &:before { font-family: "FontAwesome"; content: "\f005"; } - &.starred { - color: $danger; - @include hover { - opacity: 1; - &:before { - content: "\f005"; - } - } - } @include hover { opacity: 0.6; } diff --git a/app/assets/stylesheets/desktop/topic-post.scss b/app/assets/stylesheets/desktop/topic-post.scss index b2ec22dfcf4..e0209023354 100644 --- a/app/assets/stylesheets/desktop/topic-post.scss +++ b/app/assets/stylesheets/desktop/topic-post.scss @@ -551,12 +551,6 @@ video { line-height: 1.3em; } - a.star { - margin: 0 7px 20px 2px; - color: dark-light-diff($secondary, $primary, 80%, -20%) !important; - } - a.star.starred {color: $danger !important;} - .topic-statuses { margin-top: -2px; } diff --git a/app/assets/stylesheets/mobile/discourse.scss b/app/assets/stylesheets/mobile/discourse.scss index e22c9c93db2..65e44681416 100644 --- a/app/assets/stylesheets/mobile/discourse.scss +++ b/app/assets/stylesheets/mobile/discourse.scss @@ -18,36 +18,6 @@ body { } } #main { - .fa-star.starred { - color: $danger; - } - a.star { - display: inline-block; - font-size: 1.429em; - color: scale-color($primary, $lightness: 75%); - margin-right: 8px; - margin-top: 4px; - &:before { - font-family: "FontAwesome"; - content: "\f005"; - } - &.starred { - color: $danger; - @include hover { - opacity: 1; - &:before { - content: "\f005"; - } - } - } - @include hover { - opacity: 0.6; - } - - &:active { - opacity: 1; - } - } img.avatar { &.header { width: 45px; diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb index 73bc006ae35..6ca4ac35b60 100644 --- a/app/controllers/topics_controller.rb +++ b/app/controllers/topics_controller.rb @@ -166,14 +166,6 @@ class TopicsController < ApplicationController render nothing: true end - def star - @topic = Topic.find_by(id: params[:topic_id].to_i) - guardian.ensure_can_see!(@topic) - - @topic.toggle_star(current_user, params[:starred] == 'true') - render nothing: true - end - def mute toggle_mute end diff --git a/app/models/admin_dashboard_data.rb b/app/models/admin_dashboard_data.rb index 4f4ff28022b..ccb1db1d69d 100644 --- a/app/models/admin_dashboard_data.rb +++ b/app/models/admin_dashboard_data.rb @@ -11,7 +11,6 @@ class AdminDashboardData 'users_by_trust_level', 'likes', 'bookmarks', - 'starred', 'emails', 'user_to_user_private_messages', 'system_private_messages', diff --git a/app/models/report.rb b/app/models/report.rb index 51f4d0a6cc5..3cabe43497f 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -91,13 +91,7 @@ class Report end end - def self.report_starred(report) - basic_report_about report, Topic, :starred_counts_per_day, default_days - add_counts report, TopicUser.where(starred: true), 'topic_users.starred_at' - end - # Post action counts: - def self.report_flags(report) basic_report_about report, PostAction, :flag_count_by_date, report.start_date, report.end_date add_counts report, PostAction.where(post_action_type_id: PostActionType.flag_types.values), 'post_actions.created_at' diff --git a/app/models/topic.rb b/app/models/topic.rb index 2eab5fe2d0b..13f507b63c3 100644 --- a/app/models/topic.rb +++ b/app/models/topic.rb @@ -141,13 +141,6 @@ class Topic < ActiveRecord::Base WHERE #{condition[0]})", condition[1]) } - # Helps us limit how many topics can be starred in a day - class StarLimiter < RateLimiter - def initialize(user) - super(user, "starred:#{Date.today}", SiteSetting.max_stars_per_day, 1.day.to_i) - end - end - attr_accessor :ignore_category_auto_close attr_accessor :skip_callbacks @@ -612,27 +605,6 @@ class Topic < ActiveRecord::Base @participants_summary ||= TopicParticipantsSummary.new(self, options).summary end - # Enable/disable the star on the topic - def toggle_star(user, starred) - Topic.transaction do - TopicUser.change(user, id, {starred: starred}.merge( starred ? {starred_at: DateTime.now, unstarred_at: nil} : {unstarred_at: DateTime.now})) - - # Update the star count - exec_sql "UPDATE topics - SET star_count = (SELECT COUNT(*) - FROM topic_users AS ftu - WHERE ftu.topic_id = topics.id - AND ftu.starred = true) - WHERE id = ?", id - - if starred - StarLimiter.new(user).performed! - else - StarLimiter.new(user).rollback! - end - end - end - def make_banner!(user) # only one banner at the same time previous_banner = Topic.where(archetype: Archetype.banner).first @@ -662,10 +634,6 @@ class Topic < ActiveRecord::Base } end - def self.starred_counts_per_day(sinceDaysAgo=30) - TopicUser.starred_since(sinceDaysAgo).by_date_starred.count - end - # Even if the slug column in the database is null, topic.slug will return something: def slug unless slug = read_attribute(:slug) diff --git a/app/models/topic_user.rb b/app/models/topic_user.rb index a70bf224ad9..7996f1f0f38 100644 --- a/app/models/topic_user.rb +++ b/app/models/topic_user.rb @@ -2,9 +2,6 @@ class TopicUser < ActiveRecord::Base belongs_to :user belongs_to :topic - scope :starred_since, lambda { |sinceDaysAgo| where('starred_at > ?', sinceDaysAgo.days.ago) } - scope :by_date_starred, -> { group('date(starred_at)').order('date(starred_at)') } - scope :tracking, lambda { |topic_id| where(topic_id: topic_id) .where("COALESCE(topic_users.notification_level, :regular) >= :tracking", @@ -86,8 +83,6 @@ class TopicUser < ActiveRecord::Base TopicUser.transaction do attrs = attrs.dup - attrs[:starred_at] = DateTime.now if attrs[:starred_at].nil? && attrs[:starred] - if attrs[:notification_level] attrs[:notifications_changed_at] ||= DateTime.now attrs[:notifications_reason_id] ||= TopicUser.notification_reasons[:user_changed] diff --git a/app/models/user_action.rb b/app/models/user_action.rb index 6cd1f24a572..95f87387d5e 100644 --- a/app/models/user_action.rb +++ b/app/models/user_action.rb @@ -14,7 +14,6 @@ class UserAction < ActiveRecord::Base RESPONSE= 6 MENTION = 7 QUOTE = 9 - STAR = 10 EDIT = 11 NEW_PRIVATE_MESSAGE = 12 GOT_PRIVATE_MESSAGE = 13 @@ -30,7 +29,6 @@ class UserAction < ActiveRecord::Base MENTION, QUOTE, BOOKMARK, - STAR, EDIT ].each_with_index.to_a.flatten] @@ -240,35 +238,8 @@ SQL builder.exec end - def self.synchronize_starred - exec_sql(" - DELETE FROM user_actions ua - WHERE action_type = :star - AND NOT EXISTS ( - SELECT 1 FROM topic_users tu - WHERE - tu.user_id = ua.user_id AND - tu.topic_id = ua.target_topic_id AND - starred - )", star: UserAction::STAR) - - exec_sql("INSERT INTO user_actions - (action_type, user_id, target_topic_id, target_post_id, acting_user_id, created_at, updated_at) - SELECT :star, tu.user_id, tu.topic_id, -1, tu.user_id, tu.starred_at, tu.starred_at - FROM topic_users tu - WHERE starred AND NOT EXISTS( - SELECT 1 FROM user_actions ua - WHERE tu.user_id = ua.user_id AND - tu.topic_id = ua.target_topic_id AND - ua.action_type = :star - ) - ", star: UserAction::STAR) - - end - def self.ensure_consistency! self.synchronize_target_topic_ids - self.synchronize_starred end def self.update_like_count(user_id, action_type, delta) @@ -294,7 +265,7 @@ SQL end unless (guardian.user && guardian.user.id == user_id) || guardian.is_staff? - builder.where("a.action_type not in (#{BOOKMARK},#{STAR})") + builder.where("a.action_type not in (#{BOOKMARK})") builder.where("t.visible") end diff --git a/app/models/user_action_observer.rb b/app/models/user_action_observer.rb index 45fba906458..a7e79ac9287 100644 --- a/app/models/user_action_observer.rb +++ b/app/models/user_action_observer.rb @@ -9,27 +9,6 @@ class UserActionObserver < ActiveRecord::Observer log_topic(model) when (model.is_a?(Post)) log_post(model) - when (model.is_a?(TopicUser)) - log_topic_user(model) - end - end - - def log_topic_user(model) - action = UserAction::STAR - - row = { - action_type: action, - user_id: model.user_id, - acting_user_id: model.user_id, - target_topic_id: model.topic_id, - target_post_id: -1, - created_at: model.starred_at - } - - if model.starred - UserAction.log_action!(row) - else - UserAction.remove_action!(row) end end diff --git a/app/serializers/topic_list_item_serializer.rb b/app/serializers/topic_list_item_serializer.rb index 97adc464fec..c22560d8b09 100644 --- a/app/serializers/topic_list_item_serializer.rb +++ b/app/serializers/topic_list_item_serializer.rb @@ -2,7 +2,6 @@ class TopicListItemSerializer < ListableTopicSerializer attributes :views, :like_count, - :starred, :has_summary, :archetype, :last_poster_username, @@ -13,12 +12,6 @@ class TopicListItemSerializer < ListableTopicSerializer has_many :posters, serializer: TopicPosterSerializer, embed: :objects has_many :participants, serializer: TopicPosterSerializer, embed: :objects - def starred - object.user_data.starred? - end - - alias :include_starred? :has_user_data - def posters object.posters || [] end diff --git a/app/serializers/topic_view_serializer.rb b/app/serializers/topic_view_serializer.rb index 92c08c34620..c48c2c1d3f2 100644 --- a/app/serializers/topic_view_serializer.rb +++ b/app/serializers/topic_view_serializer.rb @@ -29,7 +29,6 @@ class TopicViewSerializer < ApplicationSerializer attributes :draft, :draft_key, :draft_sequence, - :starred, :posted, :unpinned, :pinned_globally, @@ -145,11 +144,6 @@ class TopicViewSerializer < ApplicationSerializer object.topic_user.present? end - def starred - object.topic_user.starred? - end - alias_method :include_starred?, :has_topic_user? - def highest_post_number object.highest_post_number end diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 5e206b06de6..3a931ef154a 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -785,12 +785,6 @@ en: not_logged_in_user: 'user page with summary of current activity and preferences' current_user: 'go to your user page' - starred: - title: 'Star' - help: - star: 'add this topic to your starred list' - unstar: 'remove this topic from your starred list' - topics: bulk: reset_read: "Reset Read" @@ -811,7 +805,6 @@ en: other: "You have selected {{count}} topics." none: - starred: "You have no starred topics." unread: "You have no unread topics." new: "You have no new topics." read: "You haven't read any topics yet." @@ -823,7 +816,6 @@ en: educate: new: '

    Your new topics appear here.

    By default, topics are considered new and will show a new indicator if they were created in the last 2 days.

    You can change this in your preferences.

    ' unread: '

    Your unread topics appear here.

    By default, topics are considered unread and will show unread counts 1 if you:

    Or if you have explicitly set the topic to Tracked or Watched via the notification control at the bottom of each topic.

    You can change this in your preferences.

    ' - starred: '

    Your starred topics appear here.

    To star or unstar a topic, use:

    ' bottom: latest: "There are no more latest topics." hot: "There are no more hot topics." @@ -831,7 +823,6 @@ en: read: "There are no more read topics." new: "There are no more new topics." unread: "There are no more unread topics." - starred: "There are no more starred topics." category: "There are no more {{category}} topics." top: "There are no more top topics." @@ -1433,9 +1424,6 @@ en: hot: title: "Hot" help: "a selection of the hottest topics" - starred: - title: "Starred" - help: "topics you starred" read: title: "Read" help: "topics you've read, in the order that you last read them" @@ -2217,7 +2205,6 @@ en: latest: 'g, l Latest' new: 'g, n New' unread: 'g, u Unread' - starred: 'g, f Starred' categories: 'g, c Categories' top: 'g, t Top' navigation: diff --git a/db/migrate/20150106215342_remove_stars.rb b/db/migrate/20150106215342_remove_stars.rb new file mode 100644 index 00000000000..7e5f6e44d9e --- /dev/null +++ b/db/migrate/20150106215342_remove_stars.rb @@ -0,0 +1,29 @@ +class RemoveStars < ActiveRecord::Migration + def up + r = execute <