diff --git a/app/assets/javascripts/admin/routes/admin_dashboard_route.js b/app/assets/javascripts/admin/routes/admin_dashboard_route.js index e1de72730..2441eb74e 100644 --- a/app/assets/javascripts/admin/routes/admin_dashboard_route.js +++ b/app/assets/javascripts/admin/routes/admin_dashboard_route.js @@ -23,12 +23,9 @@ Discourse.AdminDashboardRoute = Discourse.Route.extend({ _.each(d.reports,function(report){ c.set(report.type, Discourse.Report.create(report)); }); - c.set('admins', d.admins); - c.set('moderators', d.moderators); - c.set('blocked', d.blocked); - c.set('top_referrers', d.top_referrers); - c.set('top_traffic_sources', d.top_traffic_sources); - c.set('top_referred_topics', d.top_referred_topics); + _.each(['admins', 'moderators', 'blocked', 'banned', 'top_referrers', 'top_traffic_sources', 'top_referred_topics'], function(x) { + c.set(x, d[x]); + }); c.set('loading', false); }); } diff --git a/app/assets/javascripts/admin/routes/admin_routes.js b/app/assets/javascripts/admin/routes/admin_routes.js index 38dfbe5f1..41ce0efc3 100644 --- a/app/assets/javascripts/admin/routes/admin_routes.js +++ b/app/assets/javascripts/admin/routes/admin_routes.js @@ -34,18 +34,10 @@ Discourse.Route.buildRoutes(function() { this.resource('adminUsers', { path: '/users' }, function() { this.resource('adminUser', { path: '/:username' }); this.resource('adminUsersList', { path: '/list' }, function() { - this.route('active', { path: '/active' }); - this.route('new', { path: '/new' }); - this.route('pending', { path: '/pending' }); - this.route('admins', { path: '/admins' }); - this.route('moderators', { path: '/moderators' }); - this.route('blocked', { path: '/blocked' }); - // Trust Levels: - this.route('newuser', { path: '/newuser' }); - this.route('basic', { path: '/basic' }); - this.route('regular', { path: '/regular' }); - this.route('leaders', { path: '/leaders' }); - this.route('elders', { path: '/elders' }); + _.each(['active', 'new', 'pending', 'admins', 'moderators', 'blocked', 'banned', + 'newuser', 'basic', 'regular', 'leaders', 'elders'], function(x) { + this.route(x, { path: '/' + x }); + }, this); }); }); diff --git a/app/assets/javascripts/admin/routes/admin_users_list_routes.js b/app/assets/javascripts/admin/routes/admin_users_list_routes.js index e9e9341bb..e31f6f427 100644 --- a/app/assets/javascripts/admin/routes/admin_users_list_routes.js +++ b/app/assets/javascripts/admin/routes/admin_users_list_routes.js @@ -94,4 +94,18 @@ Discourse.AdminUsersListBlockedRoute = Discourse.Route.extend({ setupController: function() { return this.controllerFor('adminUsersList').show('blocked'); } +}); + +/** + Handles the route that lists banned users. + + @class AdminUsersListBannedRoute + @extends Discourse.Route + @namespace Discourse + @module Discourse +**/ +Discourse.AdminUsersListBannedRoute = Discourse.Route.extend({ + setupController: function() { + return this.controllerFor('adminUsersList').show('banned'); + } }); \ No newline at end of file diff --git a/app/assets/javascripts/admin/templates/dashboard.js.handlebars b/app/assets/javascripts/admin/templates/dashboard.js.handlebars index 955a80b7d..4454abff5 100644 --- a/app/assets/javascripts/admin/templates/dashboard.js.handlebars +++ b/app/assets/javascripts/admin/templates/dashboard.js.handlebars @@ -97,12 +97,20 @@
- {{i18n admin.dashboard.admins}} - {{#linkTo 'adminUsersList.admins'}}{{admins}}{{/linkTo}} - {{i18n admin.dashboard.moderators}} - {{#linkTo 'adminUsersList.moderators'}}{{moderators}}{{/linkTo}} - {{i18n admin.dashboard.blocked}} - {{#linkTo 'adminUsersList.blocked'}}{{blocked}}{{/linkTo}} + + + + + + + + + + + + + +
{{i18n admin.dashboard.admins}}{{#linkTo 'adminUsersList.admins'}}{{admins}}{{/linkTo}} {{i18n admin.dashboard.banned}}{{#linkTo 'adminUsersList.banned'}}{{banned}}{{/linkTo}}
{{i18n admin.dashboard.moderators}}{{#linkTo 'adminUsersList.moderators'}}{{moderators}}{{/linkTo}} {{i18n admin.dashboard.blocked}}{{#linkTo 'adminUsersList.blocked'}}{{blocked}}{{/linkTo}}
diff --git a/app/assets/stylesheets/admin/admin_base.scss b/app/assets/stylesheets/admin/admin_base.scss index c756ce6d1..78ba9867a 100644 --- a/app/assets/stylesheets/admin/admin_base.scss +++ b/app/assets/stylesheets/admin/admin_base.scss @@ -467,12 +467,16 @@ table { } &.totals { + table { + width: auto; + } margin-top: 12px; padding-left: 5px; .value { + text-align: left; font-weight: bold; - margin-left: 8px; - margin-right: 30px; + padding-left: 8px; + padding-right: 30px; } } diff --git a/app/models/admin_dashboard_data.rb b/app/models/admin_dashboard_data.rb index dbc819b8a..9f4a030e8 100644 --- a/app/models/admin_dashboard_data.rb +++ b/app/models/admin_dashboard_data.rb @@ -54,12 +54,13 @@ class AdminDashboardData reports: REPORTS.map { |type| Report.find(type).as_json }, admins: User.admins.count, moderators: User.moderators.count, + banned: User.banned.count, blocked: User.blocked.count, top_referrers: IncomingLinksReport.find('top_referrers').as_json, top_traffic_sources: IncomingLinksReport.find('top_traffic_sources').as_json, top_referred_topics: IncomingLinksReport.find('top_referred_topics').as_json }.merge( - SiteSetting.version_checks? ? {version_check: DiscourseUpdates.check_version} : {} + SiteSetting.version_checks? ? {version_check: DiscourseUpdates.check_version.as_json} : {} ) end diff --git a/app/models/user.rb b/app/models/user.rb index 81b8513cf..aae321eb6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -64,6 +64,7 @@ class User < ActiveRecord::Base attr_accessor :notification_channel_position scope :blocked, -> { where(blocked: true) } # no index + scope :banned, -> { where('banned_till IS NOT NULL AND banned_till > ?', Time.zone.now) } # no index module NewTopicDuration ALWAYS = -1 diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index c29fcedc8..3e50c6bbe 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -1009,6 +1009,7 @@ en: moderators: 'Moderators:' admins: 'Admins:' blocked: 'Blocked:' + banned: 'Banned:' private_messages_short: "PMs" private_messages_title: "Private Messages" @@ -1151,6 +1152,7 @@ en: admins: 'Admin Users' moderators: 'Moderators' blocked: 'Blocked Users' + banned: 'Banned Users' user: ban_failed: "Something went wrong banning this user {{error}}" diff --git a/lib/admin_user_index_query.rb b/lib/admin_user_index_query.rb index c52f190f9..753e2b8ca 100644 --- a/lib/admin_user_index_query.rb +++ b/lib/admin_user_index_query.rb @@ -27,6 +27,7 @@ class AdminUserIndexQuery when 'admins' then @query.where('admin = ?', true) when 'moderators' then @query.where('moderator = ?', true) when 'blocked' then @query.blocked + when 'banned' then @query.banned when 'pending' then @query.where('approved = false') end end