diff --git a/app/assets/javascripts/discourse/controllers/user_activity_controller.js b/app/assets/javascripts/discourse/controllers/user_activity_controller.js index 3ef1e9c954c..a1e49b082ed 100644 --- a/app/assets/javascripts/discourse/controllers/user_activity_controller.js +++ b/app/assets/javascripts/discourse/controllers/user_activity_controller.js @@ -1,3 +1,11 @@ +/** + The base route for showing an activity stream. + + @class UserActivityRoute + @extends Discourse.Route + @namespace Discourse + @module Discourse +**/ Discourse.UserActivityRoute = Discourse.Route.extend({ renderTemplate: function() { this.render('user_activity', {into: 'user', outlet: 'userOutlet' }); @@ -5,19 +13,50 @@ Discourse.UserActivityRoute = Discourse.Route.extend({ model: function() { return this.modelFor('user'); + }, + + setupController: function(controller, user) { + this.controllerFor('userActivity').set('model', user); + + var composerController = this.controllerFor('composer'); + controller.set('model', user); + Discourse.Draft.get('new_private_message').then(function(data) { + if (data.draft) { + composerController.open({ + draft: data.draft, + draftKey: 'new_private_message', + ignoreIfChanged: true, + draftSequence: data.draft_sequence + }); + } + }); } + }); +/** + A route for showing a user's activity + + @class UserIndexRoute + @extends Discourse.Route + @namespace Discourse + @module Discourse +**/ Discourse.UserActivityIndexRoute = Discourse.Route.extend({ model: function() { return this.modelFor('user').findStream(); }, setupController: function(controller, model) { - this.controllerFor('userActivity').set('stream', model); + this.controllerFor('userActivity').setProperties({ + model: this.modelFor('user'), + stream: model, + privateMessageView: this.get('privateMessageRoute') + }); } }); +// Build all the filter routes Object.keys(Discourse.UserAction.TYPES).forEach(function (userAction) { Discourse["UserActivity" + userAction.classify() + "Route"] = Discourse.UserActivityIndexRoute.extend({ model: function() { @@ -26,6 +65,15 @@ Object.keys(Discourse.UserAction.TYPES).forEach(function (userAction) { }); }); + +/** + Show the user's default route + + @class UserIndexRoute + @extends Discourse.Route + @namespace Discourse + @module Discourse +**/ Discourse.UserIndexRoute = Discourse.Route.extend({ renderTemplate: function() { this.render('user_activity', {into: 'user', outlet: 'userOutlet' }); @@ -38,23 +86,65 @@ Discourse.UserIndexRoute = Discourse.Route.extend({ setupController: function(controller, stream) { var userActivity = this.controllerFor('userActivity'); - userActivity.setProperties({ - stream: stream, - model: this.modelFor('user') + model: this.modelFor('user'), + stream: stream }); } }); /** - This controller supports all actions on a user's activity stream + Base route for showing private messages - @class UserActivityController - @extends Discourse.ObjectController + @class UserPrivateMessagesRoute + @extends Discourse.UserActivityRoute @namespace Discourse @module Discourse **/ -Discourse.UserActivityController = Discourse.Controller.extend({ +Discourse.UserPrivateMessagesRoute = Discourse.UserActivityRoute.extend({}); + +/** + Default private messages route + + @class UserPrivateMessagesIndexRoute + @extends Discourse.UserActivityIndexRoute + @namespace Discourse + @module Discourse +**/ +Discourse.UserPrivateMessagesIndexRoute = Discourse.UserActivityIndexRoute.extend({ + privateMessageRoute: true, + + model: function() { + return this.modelFor('user').findStream(Discourse.UserAction.TYPES.messages_received); + } +}); + +/** + Private messages sent route + + @class UserPrivateMessagesSentRoute + @extends Discourse.UserActivityIndexRoute + @namespace Discourse + @module Discourse +**/ +Discourse.UserPrivateMessagesSentRoute = Discourse.UserActivityIndexRoute.extend({ + privateMessageRoute: true, + + model: function() { + return this.modelFor('user').findStream(Discourse.UserAction.TYPES.messages_sent); + } +}); + + +/** + This controller supports all actions on a user's activity stream + + @class UserActivityController + @extends Discourse.Controller + @namespace Discourse + @module Discourse +**/ +Discourse.UserActivityController = Discourse.ObjectController.extend({ needs: ['composer'], kickOffPrivateMessage: (function() { diff --git a/app/assets/javascripts/discourse/controllers/user_private_messages_controller.js b/app/assets/javascripts/discourse/controllers/user_private_messages_controller.js deleted file mode 100644 index 25a742de7bb..00000000000 --- a/app/assets/javascripts/discourse/controllers/user_private_messages_controller.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - Base route for showing private messages - - @class UserPrivateMessagesRoute - @extends Discourse.Route - @namespace Discourse - @module Discourse -**/ -Discourse.UserPrivateMessagesRoute = Discourse.Route.extend({ - renderTemplate: function() { - this.render('user_private_messages', {into: 'user', outlet: 'userOutlet' }); - }, - - model: function() { - return this.modelFor('user'); - }, - - setupController: function(controller, user) { - var composerController = this.controllerFor('composer'); - controller.set('model', user); - Discourse.Draft.get('new_private_message').then(function(data) { - if (data.draft) { - composerController.open({ - draft: data.draft, - draftKey: 'new_private_message', - ignoreIfChanged: true, - draftSequence: data.draft_sequence - }); - } - }); - } -}); - -/** - Default private messages route - - @class UserPrivateMessagesIndexRoute - @extends Discourse.Route - @namespace Discourse - @module Discourse -**/ -Discourse.UserPrivateMessagesIndexRoute = Discourse.Route.extend({ - model: function() { - return this.modelFor('user').findStream(Discourse.UserAction.TYPES.messages_received); - }, - - setupController: function(controller, model) { - this.controllerFor('userPrivateMessages').set('stream', model); - } -}); - -/** - Private messages sent route - - @class UserPrivateMessagesSentRoute - @extends Discourse.Route - @namespace Discourse - @module Discourse -**/ -Discourse.UserPrivateMessagesSentRoute = Discourse.UserPrivateMessagesIndexRoute.extend({ - model: function() { - return this.modelFor('user').findStream(Discourse.UserAction.TYPES.messages_sent); - } -}); - -/** - This controller handles actions related to a user's private messages. - - @class UserPrivateMessagesController - @extends Discourse.ObjectController - @namespace Discourse - @module Discourse -**/ -Discourse.UserPrivateMessagesController = Discourse.ObjectController.extend({ - needs: ['composer'], - - composePrivateMessage: function() { - this.get('controllers.composer').open({ - action: Discourse.Composer.PRIVATE_MESSAGE, - archetypeId: 'private_message', - draftKey: 'new_private_message' - }); - } - -}); diff --git a/app/assets/javascripts/discourse/models/composer.js b/app/assets/javascripts/discourse/models/composer.js index 8f471d9ce9c..0d63fe54e95 100644 --- a/app/assets/javascripts/discourse/models/composer.js +++ b/app/assets/javascripts/discourse/models/composer.js @@ -148,7 +148,7 @@ Discourse.Composer = Discourse.Model.extend({ hasMetaData: function() { var metaData = this.get('metaData'); - return metaData ? Em.empty(Em.keys(this.get('metaData'))) : false; + return metaData ? Em.isEmpty(Em.keys(this.get('metaData'))) : false; }.property('metaData'), /** diff --git a/app/assets/javascripts/discourse/templates/user/activity.js.handlebars b/app/assets/javascripts/discourse/templates/user/activity.js.handlebars index 9ec82ff06c4..9a844ef2ff6 100644 --- a/app/assets/javascripts/discourse/templates/user/activity.js.handlebars +++ b/app/assets/javascripts/discourse/templates/user/activity.js.handlebars @@ -1,56 +1,61 @@ -{{#with model}} -
- -
+
+ +
- +
+
+ {{#if websiteName}} +
{{i18n user.website}}:
{{websiteName}}
+ {{/if}} + {{#if created_at}} +
{{i18n user.created}}:
{{date created_at}}
+ {{/if}} + {{#if last_posted_at}} +
{{i18n user.last_posted}}:
{{date last_posted_at}}
+ {{/if}} + {{#if last_seen_at}} +
{{i18n user.last_seen}}:
{{date last_seen_at}}
+ {{/if}} + {{#if invited_by}} +
{{i18n user.invited_by}}:
{{#linkTo 'userActivity' invited_by}}{{invited_by.username}}{{/linkTo}}
+ {{/if}} + {{#if email}} +
{{i18n user.email.title}}:
{{email}}
+ {{/if}} +
{{i18n user.trust_level}}:
{{trustLevel.name}}
+
-{{/with}} + + {{#if can_edit}} +
+ +
+ {{/if}} +
+ {{userStream stream=stream}} diff --git a/app/assets/javascripts/discourse/templates/user/private_messages.js.handlebars b/app/assets/javascripts/discourse/templates/user/private_messages.js.handlebars deleted file mode 100644 index 60e5231fd48..00000000000 --- a/app/assets/javascripts/discourse/templates/user/private_messages.js.handlebars +++ /dev/null @@ -1,26 +0,0 @@ -
- {{#with model}} - -
- - - {{/with}} -
- -{{userStream stream=stream}} - diff --git a/app/assets/javascripts/discourse/views/user/user_private_messages_view.js b/app/assets/javascripts/discourse/views/user/user_private_messages_view.js deleted file mode 100644 index fa89c7abf31..00000000000 --- a/app/assets/javascripts/discourse/views/user/user_private_messages_view.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - This view handles rendering of a user's private messages - - @class UserPrivateMessagesView - @extends Discourse.View - @namespace Discourse - @module Discourse -**/ -Discourse.UserPrivateMessagesView = Discourse.View.extend({ - templateName: 'user/private_messages', - - selectCurrent: function(evt) { - var t; - t = $(evt.currentTarget); - t.closest('.action-list').find('li').removeClass('active'); - return t.closest('li').addClass('active'); - }, - - inbox: function(evt) { - this.selectCurrent(evt); - return this.set('controller.filter', Discourse.UserAction.TYPES.messages_received); - }, - - sentMessages: function(evt) { - this.selectCurrent(evt); - return this.set('controller.filter', Discourse.UserAction.TYPES.messages_sent); - } - -}); - -