165 lines
4.0 KiB
JavaScript
165 lines
4.0 KiB
JavaScript
/**
|
|
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' });
|
|
},
|
|
|
|
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').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() {
|
|
return this.modelFor('user').findStream(Discourse.UserAction.TYPES[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' });
|
|
},
|
|
|
|
model: function() {
|
|
var user = this.modelFor('user');
|
|
return user.findStream();
|
|
},
|
|
|
|
setupController: function(controller, stream) {
|
|
var userActivity = this.controllerFor('userActivity');
|
|
userActivity.setProperties({
|
|
model: this.modelFor('user'),
|
|
stream: stream
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
Base route for showing private messages
|
|
|
|
@class UserPrivateMessagesRoute
|
|
@extends Discourse.UserActivityRoute
|
|
@namespace Discourse
|
|
@module Discourse
|
|
**/
|
|
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() {
|
|
if (this.get('content.openPrivateMessage')) {
|
|
this.composePrivateMessage();
|
|
}
|
|
}).observes('content.openPrivateMessage'),
|
|
|
|
composePrivateMessage: function() {
|
|
return this.get('controllers.composer').open({
|
|
action: Discourse.Composer.PRIVATE_MESSAGE,
|
|
usernames: this.get('model.username'),
|
|
archetypeId: 'private_message',
|
|
draftKey: 'new_private_message'
|
|
});
|
|
}
|
|
});
|