mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-23 23:58:31 -05:00
Add email counts to admin dashboard
This commit is contained in:
parent
6a99d12784
commit
50b04b2209
8 changed files with 36 additions and 3 deletions
|
@ -79,6 +79,7 @@
|
||||||
{{ render 'admin_report_posts' posts }}
|
{{ render 'admin_report_posts' posts }}
|
||||||
{{ render 'admin_report_likes' likes }}
|
{{ render 'admin_report_likes' likes }}
|
||||||
{{ render 'admin_report_flags' flags }}
|
{{ render 'admin_report_flags' flags }}
|
||||||
|
{{ render 'admin_report_emails' emails }}
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
Discourse.AdminReportEmailsView = Discourse.View.extend({
|
||||||
|
templateName: 'admin/templates/reports/summed_counts_report',
|
||||||
|
tagName: 'tbody'
|
||||||
|
});
|
|
@ -3,7 +3,7 @@ class Admin::DashboardController < Admin::AdminController
|
||||||
|
|
||||||
def index
|
def index
|
||||||
render_json_dump({
|
render_json_dump({
|
||||||
reports: ['visits', 'signups', 'topics', 'posts', 'flags', 'users_by_trust_level', 'likes'].map { |type| Report.find(type) },
|
reports: ['visits', 'signups', 'topics', 'posts', 'flags', 'users_by_trust_level', 'likes', 'emails'].map { |type| Report.find(type) },
|
||||||
total_users: User.count
|
total_users: User.count
|
||||||
}.merge(
|
}.merge(
|
||||||
SiteSetting.version_checks? ? {version_check: DiscourseUpdates.check_version} : {}
|
SiteSetting.version_checks? ? {version_check: DiscourseUpdates.check_version} : {}
|
||||||
|
|
|
@ -7,4 +7,8 @@ class EmailLog < ActiveRecord::Base
|
||||||
# Update last_emailed_at if the user_id is present
|
# Update last_emailed_at if the user_id is present
|
||||||
User.update_all("last_emailed_at = CURRENT_TIMESTAMP", id: user_id) if user_id.present?
|
User.update_all("last_emailed_at = CURRENT_TIMESTAMP", id: user_id) if user_id.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.count_per_day(since = 30.days.ago)
|
||||||
|
where('created_at > ?', since).group('date(created_at)').order('date(created_at)').count
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -98,6 +98,14 @@ class Report
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.report_emails(report)
|
||||||
|
report.data = []
|
||||||
|
fetch report do
|
||||||
|
EmailLog.count_per_day(30.days.ago).each do |date, count|
|
||||||
|
report.data << {x: date, y: count}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
|
|
@ -279,6 +279,10 @@ en:
|
||||||
title: "Users per Trust Level"
|
title: "Users per Trust Level"
|
||||||
xaxis: "Trust Level"
|
xaxis: "Trust Level"
|
||||||
yaxis: "Number of Users"
|
yaxis: "Number of Users"
|
||||||
|
emails:
|
||||||
|
title: "Emails Sent"
|
||||||
|
xaxis: "Day"
|
||||||
|
yaxis: "Number of Emails"
|
||||||
|
|
||||||
site_settings:
|
site_settings:
|
||||||
default_locale: "The default language of this Discourse instance (ISO 639-1 Code)"
|
default_locale: "The default language of this Discourse instance (ISO 639-1 Code)"
|
||||||
|
|
5
spec/fabricators/email_log_fabricator.rb
Normal file
5
spec/fabricators/email_log_fabricator.rb
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
Fabricator(:email_log,) do
|
||||||
|
user
|
||||||
|
to_address { sequence(:address) { |i| "blah#{i}@example.com" } }
|
||||||
|
email_type :invite
|
||||||
|
end
|
|
@ -26,7 +26,7 @@
|
||||||
# end
|
# end
|
||||||
# end
|
# end
|
||||||
|
|
||||||
# [:signup, :topic, :post, :flag, :like].each do |arg|
|
# [:signup, :topic, :post, :flag, :like, :email].each do |arg|
|
||||||
# describe "#{arg} report" do
|
# describe "#{arg} report" do
|
||||||
# pluralized = arg.to_s.pluralize
|
# pluralized = arg.to_s.pluralize
|
||||||
|
|
||||||
|
@ -40,7 +40,14 @@
|
||||||
|
|
||||||
# context "with #{pluralized}" do
|
# context "with #{pluralized}" do
|
||||||
# before do
|
# before do
|
||||||
# fabricator = (arg == :signup ? :user : arg)
|
# fabricator = case arg
|
||||||
|
# when :signup
|
||||||
|
# :user
|
||||||
|
# when :email
|
||||||
|
# :email_log
|
||||||
|
# else
|
||||||
|
# arg
|
||||||
|
# end
|
||||||
# Fabricate(fabricator, created_at: 25.hours.ago)
|
# Fabricate(fabricator, created_at: 25.hours.ago)
|
||||||
# Fabricate(fabricator, created_at: 1.hours.ago)
|
# Fabricate(fabricator, created_at: 1.hours.ago)
|
||||||
# Fabricate(fabricator, created_at: 1.hours.ago)
|
# Fabricate(fabricator, created_at: 1.hours.ago)
|
||||||
|
|
Loading…
Reference in a new issue