diff --git a/app/assets/javascripts/discourse/components/directory-toggle.js.es6 b/app/assets/javascripts/discourse/components/directory-toggle.js.es6 index 3b6b35c96c9..f0e0192e178 100644 --- a/app/assets/javascripts/discourse/components/directory-toggle.js.es6 +++ b/app/assets/javascripts/discourse/components/directory-toggle.js.es6 @@ -4,8 +4,14 @@ import { iconHTML } from 'discourse/helpers/fa-icon'; export default Ember.Component.extend(StringBuffer, { tagName: 'th', classNames: ['sortable'], + attributeBindings: ['title'], rerenderTriggers: ['order', 'asc'], + title: function() { + const labelKey = 'directory.' + this.get('field'); + return I18n.t(labelKey + '_long', { defaultValue: I18n.t(labelKey) }); + }.property('field'), + renderString(buffer) { const icon = this.get('icon'); diff --git a/app/assets/javascripts/discourse/templates/users.hbs b/app/assets/javascripts/discourse/templates/users.hbs index 83d9e8993f7..58a20209e0c 100644 --- a/app/assets/javascripts/discourse/templates/users.hbs +++ b/app/assets/javascripts/discourse/templates/users.hbs @@ -18,6 +18,8 @@ {{directory-toggle field="topic_count" order=order asc=asc}} {{directory-toggle field="post_count" order=order asc=asc}} {{directory-toggle field="topics_entered" order=order asc=asc}} + {{directory-toggle field="posts_read" order=order asc=asc}} + {{directory-toggle field="days_visited" order=order asc=asc}} {{#if showTimeRead}} {{i18n "directory.time_read"}} {{/if}} @@ -31,6 +33,8 @@ {{number item.model.topic_count}} {{number item.model.post_count}} {{number item.model.topics_entered}} + {{number item.model.posts_read}} + {{number item.model.days_visited}} {{#if showTimeRead}} {{unbound item.model.time_read}} {{/if}} diff --git a/app/models/directory_item.rb b/app/models/directory_item.rb index 0c9e5d67569..0597e7174e6 100644 --- a/app/models/directory_item.rb +++ b/app/models/directory_item.rb @@ -7,7 +7,9 @@ class DirectoryItem < ActiveRecord::Base :likes_given, :topics_entered, :topic_count, - :post_count] + :post_count, + :posts_read, + :days_visited] end def self.period_types @@ -31,13 +33,15 @@ class DirectoryItem < ActiveRecord::Base end exec_sql "INSERT INTO directory_items - (period_type, user_id, likes_received, likes_given, topics_entered, topic_count, post_count) + (period_type, user_id, likes_received, likes_given, topics_entered, days_visited, posts_read, topic_count, post_count) SELECT :period_type, u.id, SUM(CASE WHEN ua.action_type = :was_liked_type THEN 1 ELSE 0 END), SUM(CASE WHEN ua.action_type = :like_type THEN 1 ELSE 0 END), - (SELECT COUNT(topic_id) FROM topic_views AS v WHERE v.user_id = u.id AND v.viewed_at > :since), + COALESCE((SELECT COUNT(topic_id) FROM topic_views AS v WHERE v.user_id = u.id AND v.viewed_at >= :since), 0), + COALESCE((SELECT COUNT(id) FROM user_visits AS uv WHERE uv.user_id = u.id AND uv.visited_at >= :since), 0), + COALESCE((SELECT SUM(posts_read) FROM user_visits AS uv2 WHERE uv2.user_id = u.id AND uv2.visited_at >= :since), 0), SUM(CASE WHEN ua.action_type = :new_topic_type THEN 1 ELSE 0 END), SUM(CASE WHEN ua.action_type = :reply_type THEN 1 ELSE 0 END) FROM users AS u diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index d572ba63ec5..0f1a90ce619 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -242,11 +242,18 @@ en: title: "Users" likes_given: "Given" likes_received: "Received" - topics_entered: "Topics Entered" + topics_entered: "Entered" + topics_entered_long: "Topics Entered" time_read: "Time Read" topic_count: "Topics" + topic_count_long: "Topics Created" post_count: "Replies" + post_count_long: "Replies Posted" no_results: "No results were found." + days_visited: "Visits" + days_visited_long: "Days Visited" + posts_read: "Read" + posts_read_long: "Posts Read" total_rows: one: "1 user" other: "%{count} users" diff --git a/db/migrate/20150324184222_add_more_to_directory_items.rb b/db/migrate/20150324184222_add_more_to_directory_items.rb new file mode 100644 index 00000000000..efc7e9477fd --- /dev/null +++ b/db/migrate/20150324184222_add_more_to_directory_items.rb @@ -0,0 +1,6 @@ +class AddMoreToDirectoryItems < ActiveRecord::Migration + def change + add_column :directory_items, :days_visited, :integer, null: false, default: 0 + add_column :directory_items, :posts_read, :integer, null: false, default: 0 + end +end