diff --git a/app/assets/javascripts/admin/templates/dashboard.js.handlebars b/app/assets/javascripts/admin/templates/dashboard.js.handlebars index d2e65154042..e559bcd7653 100644 --- a/app/assets/javascripts/admin/templates/dashboard.js.handlebars +++ b/app/assets/javascripts/admin/templates/dashboard.js.handlebars @@ -77,6 +77,7 @@ {{ render 'admin_report_signups' signups }} {{ render 'admin_report_topics' topics }} {{ render 'admin_report_posts' posts }} + {{ render 'admin_report_likes' likes }} {{ render 'admin_report_flags' flags }} {{/unless}} diff --git a/app/assets/javascripts/admin/views/report/admin_report_likes_view.js b/app/assets/javascripts/admin/views/report/admin_report_likes_view.js new file mode 100644 index 00000000000..a50a4189787 --- /dev/null +++ b/app/assets/javascripts/admin/views/report/admin_report_likes_view.js @@ -0,0 +1,4 @@ +Discourse.AdminReportLikesView = Discourse.View.extend({ + templateName: 'admin/templates/reports/summed_counts_report', + tagName: 'tbody' +}); \ No newline at end of file diff --git a/app/controllers/admin/dashboard_controller.rb b/app/controllers/admin/dashboard_controller.rb index d40ec8f810e..4f1b0b58e1d 100644 --- a/app/controllers/admin/dashboard_controller.rb +++ b/app/controllers/admin/dashboard_controller.rb @@ -3,7 +3,7 @@ class Admin::DashboardController < Admin::AdminController def index render_json_dump({ - reports: ['visits', 'signups', 'topics', 'posts', 'flags', 'users_by_trust_level'].map { |type| Report.find(type) }, + reports: ['visits', 'signups', 'topics', 'posts', 'flags', 'users_by_trust_level', 'likes'].map { |type| Report.find(type) }, total_users: User.count }.merge( SiteSetting.version_checks? ? {version_check: DiscourseUpdates.check_version} : {} diff --git a/app/models/post_action.rb b/app/models/post_action.rb index b8a1746d29b..1eb0e10d4a4 100644 --- a/app/models/post_action.rb +++ b/app/models/post_action.rb @@ -50,6 +50,10 @@ class PostAction < ActiveRecord::Base user_actions end + def self.count_likes_per_day(since = 30.days.ago) + where(post_action_type_id: PostActionType.types[:like]).where('created_at > ?', since).group('date(created_at)').order('date(created_at)').count + end + def self.clear_flags!(post, moderator_id, action_type_id = nil) # -1 is the automatic system cleary actions = if action_type_id diff --git a/app/models/report.rb b/app/models/report.rb index 3c6a608739e..49ab1eb5f0a 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -89,6 +89,15 @@ class Report end end + def self.report_likes(report) + report.data = [] + fetch report do + PostAction.count_likes_per_day(30.days.ago).each do |date, count| + report.data << {x: date, y: count} + end + end + end + private diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index d1f9b160aba..ae423403256 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -263,12 +263,16 @@ en: title: "New Posts" xaxis: "Day" yaxis: "Number of new posts" + likes: + title: "New Likes" + xaxis: "Day" + yaxis: "Number of new likes" total_users: title: "Total Users" xaxis: "Day" yaxis: "Total number of users" flags: - title: "Flags" + title: "New Flags" xaxis: "Day" yaxis: "Number of flags" users_by_trust_level: diff --git a/spec/fabricators/like_fabricator.rb b/spec/fabricators/like_fabricator.rb new file mode 100644 index 00000000000..a9b19f2172e --- /dev/null +++ b/spec/fabricators/like_fabricator.rb @@ -0,0 +1,5 @@ +Fabricator(:like, from: :post_action) do + post + user + post_action_type_id PostActionType.types[:like] +end \ No newline at end of file diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb index 400ee5f2550..6de5acb2bf6 100644 --- a/spec/models/report_spec.rb +++ b/spec/models/report_spec.rb @@ -26,7 +26,7 @@ # end # end -# [:signup, :topic, :post, :flag].each do |arg| +# [:signup, :topic, :post, :flag, :like].each do |arg| # describe "#{arg} report" do # pluralized = arg.to_s.pluralize