diff --git a/app/assets/javascripts/discourse/controllers/group_controller.js b/app/assets/javascripts/discourse/controllers/group_controller.js index ca2af991e9c..8d7d193ec04 100644 --- a/app/assets/javascripts/discourse/controllers/group_controller.js +++ b/app/assets/javascripts/discourse/controllers/group_controller.js @@ -7,7 +7,7 @@ @module Discourse **/ Discourse.GroupController = Discourse.ObjectController.extend({ - postsCount: null, + counts: null, // It would be nice if bootstrap marked action lists as selected when their links // were 'active' not the `li` tags. diff --git a/app/assets/javascripts/discourse/models/group.js b/app/assets/javascripts/discourse/models/group.js index 7448fecd089..e9a94188f33 100644 --- a/app/assets/javascripts/discourse/models/group.js +++ b/app/assets/javascripts/discourse/models/group.js @@ -154,9 +154,9 @@ Discourse.Group.reopenClass({ }); }, - findPostsCount: function(name) { - return Discourse.ajax("/groups/" + name + "/posts_count.json").then(function(g) { - return g.posts_count; + findGroupCounts: function(name) { + return Discourse.ajax("/groups/" + name + "/counts.json").then(function (result) { + return Em.Object.create(result.counts); }); }, diff --git a/app/assets/javascripts/discourse/routes/group_route.js b/app/assets/javascripts/discourse/routes/group_route.js index 28613085894..e3dce176088 100644 --- a/app/assets/javascripts/discourse/routes/group_route.js +++ b/app/assets/javascripts/discourse/routes/group_route.js @@ -14,15 +14,15 @@ Discourse.GroupRoute = Discourse.Route.extend({ afterModel: function(model) { var self = this; - return Discourse.Group.findPostsCount(model.get('name')).then(function (c) { - self.set('postsCount', c); + return Discourse.Group.findGroupCounts(model.get('name')).then(function (counts) { + self.set('counts', counts); }); }, setupController: function(controller, model) { controller.setProperties({ model: model, - postsCount: this.get('postsCount') + counts: this.get('counts') }); } }); diff --git a/app/assets/javascripts/discourse/templates/group.js.handlebars b/app/assets/javascripts/discourse/templates/group.js.handlebars index c4cff14ccca..623795844c4 100644 --- a/app/assets/javascripts/discourse/templates/group.js.handlebars +++ b/app/assets/javascripts/discourse/templates/group.js.handlebars @@ -3,11 +3,12 @@ diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index a57a5f2354d..02442bf8fb1 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -6,10 +6,11 @@ class GroupsController < ApplicationController render_serialized(group, BasicGroupSerializer) end - def posts_count + def counts group = Group.where(name: params.require(:group_id)).first guardian.ensure_can_see!(group) - render json: {posts_count: group.posts_for(guardian).count} + render json: {counts: { posts: group.posts_for(guardian).count, + members: group.users.count } } end def posts diff --git a/config/routes.rb b/config/routes.rb index 00ed52c5258..48228066d6a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -192,7 +192,7 @@ Discourse::Application.routes.draw do resources :groups do get 'members' get 'posts' - get 'posts_count' + get 'counts' end resources :posts do diff --git a/spec/controllers/groups_controller_spec.rb b/spec/controllers/groups_controller_spec.rb index d6c9c3704de..99822c48d6b 100644 --- a/spec/controllers/groups_controller_spec.rb +++ b/spec/controllers/groups_controller_spec.rb @@ -18,17 +18,17 @@ describe GroupsController do end end - describe "posts_count" do + describe "counts" do it "ensures the group can be seen" do Guardian.any_instance.expects(:can_see?).with(group).returns(false) - xhr :get, :posts_count, group_id: group.name + xhr :get, :counts, group_id: group.name response.should_not be_success end it "performs the query and responds with JSON" do Guardian.any_instance.expects(:can_see?).with(group).returns(true) Group.any_instance.expects(:posts_for).returns(Group.none) - xhr :get, :posts_count, group_id: group.name + xhr :get, :counts, group_id: group.name response.should be_success end end