diff --git a/app/assets/javascripts/discourse/controllers/group_controller.js b/app/assets/javascripts/discourse/controllers/group_controller.js index c6efff8fe43..3fa523e0d8c 100644 --- a/app/assets/javascripts/discourse/controllers/group_controller.js +++ b/app/assets/javascripts/discourse/controllers/group_controller.js @@ -1,3 +1,11 @@ +/** + The basic controller for a group + + @class GroupController + @extends Discourse.ObjectController + @namespace Discourse + @module Discourse +**/ Discourse.GroupController = Discourse.ObjectController.extend({ // It would be nice if bootstrap marked action lists as selected when their links diff --git a/app/assets/javascripts/discourse/controllers/group_index_controller.js b/app/assets/javascripts/discourse/controllers/group_index_controller.js new file mode 100644 index 00000000000..ec2d196cb75 --- /dev/null +++ b/app/assets/javascripts/discourse/controllers/group_index_controller.js @@ -0,0 +1,32 @@ +/** + Handles displaying posts within a group + + @class GroupIndexController + @extends Ember.ArrayController + @namespace Discourse + @module Discourse +**/ +Discourse.GroupIndexController = Ember.ArrayController.extend({ + needs: ['group'], + loading: false, + + actions: { + loadMore: function() { + + if (this.get('loading')) { return; } + this.set('loading', true); + var posts = this.get('model'), + self = this; + if (posts && posts.length) { + var lastPostId = posts[posts.length-1].get('id'), + group = this.get('controllers.group.model'); + + group.findPosts({beforePostId: lastPostId}).then(function(newPosts) { + posts.addObjects(newPosts); + self.set('loading', false); + }); + } + } + } +}); + diff --git a/app/assets/javascripts/discourse/models/group.js b/app/assets/javascripts/discourse/models/group.js index a76dae825cf..5d307de07cf 100644 --- a/app/assets/javascripts/discourse/models/group.js +++ b/app/assets/javascripts/discourse/models/group.js @@ -126,8 +126,21 @@ Discourse.Group = Discourse.Model.extend({ var message = $.parseJSON(e.responseText).errors; bootbox.alert(message); }); - } + }, + findPosts: function(opts) { + opts = opts || {}; + + var data = {}; + if (opts.beforePostId) { data.before_post_id = opts.beforePostId; } + + return Discourse.ajax("/groups/" + this.get('name') + "/posts.json", { data: data }).then(function (posts) { + return posts.map(function (p) { + p.user = Discourse.User.create(p.user); + return Em.Object.create(p); + }); + }); + } }); Discourse.Group.reopenClass({ diff --git a/app/assets/javascripts/discourse/routes/group_index_route.js b/app/assets/javascripts/discourse/routes/group_index_route.js index 675b35b432b..3976e0e9ddb 100644 --- a/app/assets/javascripts/discourse/routes/group_index_route.js +++ b/app/assets/javascripts/discourse/routes/group_index_route.js @@ -1,6 +1,14 @@ +/** + The route for the index of a Group + + @class GroupIndexRoute + @extends Discourse.Route + @namespace Discourse + @module Discourse +**/ Discourse.GroupIndexRoute = Discourse.Route.extend({ model: function() { - return this.modelFor('group'); + return this.modelFor('group').findPosts(); }, setupController: function(controller, model) { diff --git a/app/assets/javascripts/discourse/routes/group_members_route.js b/app/assets/javascripts/discourse/routes/group_members_route.js index 3ac3a06a31f..4cea70c09ce 100644 --- a/app/assets/javascripts/discourse/routes/group_members_route.js +++ b/app/assets/javascripts/discourse/routes/group_members_route.js @@ -1,3 +1,11 @@ +/** + Set things up to display the members of a group + + @class GroupMembersRoute + @extends Discourse.Route + @namespace Discourse + @module Discourse +**/ Discourse.GroupMembersRoute = Discourse.Route.extend({ model: function() { return this.modelFor('group'); diff --git a/app/assets/javascripts/discourse/routes/group_route.js b/app/assets/javascripts/discourse/routes/group_route.js index 668528f7b2c..acbbbe823e2 100644 --- a/app/assets/javascripts/discourse/routes/group_route.js +++ b/app/assets/javascripts/discourse/routes/group_route.js @@ -1,3 +1,11 @@ +/** + The base route for a group + + @class GroupRoute + @extends Discourse.Route + @namespace Discourse + @module Discourse +**/ Discourse.GroupRoute = Discourse.Route.extend({ model: function(params) { diff --git a/app/assets/javascripts/discourse/templates/group/index.js.handlebars b/app/assets/javascripts/discourse/templates/group/index.js.handlebars index 932962af79b..8e73e8e3ebb 100644 --- a/app/assets/javascripts/discourse/templates/group/index.js.handlebars +++ b/app/assets/javascripts/discourse/templates/group/index.js.handlebars @@ -1,3 +1,16 @@ -GROUP INDEX -{{name}} - +
+ {{{unbound cooked}}} +
+