2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2025-09-06 10:50:21 +08:00
discourse/app/assets/javascripts/discourse/controllers/user-private-messages.js.es6
2016-02-18 15:23:43 -05:00

66 lines
2.1 KiB
JavaScript

import computed from 'ember-addons/ember-computed-decorators';
import Topic from 'discourse/models/topic';
export default Ember.Controller.extend({
needs: ["application", "user-topics-list", "user"],
pmView: false,
viewingSelf: Em.computed.alias('controllers.user.viewingSelf'),
isGroup: Em.computed.equal('pmView', 'groups'),
currentPath: Em.computed.alias('controllers.application.currentPath'),
selected: Em.computed.alias('controllers.user-topics-list.selected'),
bulkSelectEnabled: Em.computed.alias('controllers.user-topics-list.bulkSelectEnabled'),
showNewPM: function(){
return this.get('controllers.user.viewingSelf') &&
Discourse.User.currentProp('can_send_private_messages');
}.property('controllers.user.viewingSelf'),
@computed('selected.@each', 'bulkSelectEnabled')
hasSelection(selected, bulkSelectEnabled){
return bulkSelectEnabled && selected && selected.length > 0;
},
@computed('hasSelection', 'pmView', 'archive')
canMoveToInbox(hasSelection, pmView, archive){
return hasSelection && (pmView === "archive" || archive);
},
@computed('hasSelection', 'pmView', 'archive')
canArchive(hasSelection, pmView, archive){
return hasSelection && pmView !== "archive" && !archive;
},
bulkOperation(operation) {
const selected = this.get('selected');
var params = {type: operation};
if (this.get('isGroup')) {
params.group = this.get('groupFilter');
}
Topic.bulkOperation(selected,params).then(() => {
const model = this.get('controllers.user-topics-list.model');
const topics = model.get('topics');
topics.removeObjects(selected);
selected.clear();
model.loadMore();
}, () => {
bootbox.alert(I18n.t("user.messages.failed_to_move"));
});
},
actions: {
archive() {
this.bulkOperation("archive_messages");
},
toInbox() {
this.bulkOperation("move_messages_to_inbox");
},
toggleBulkSelect(){
this.toggleProperty("bulkSelectEnabled");
},
selectAll() {
$('input.bulk-select:not(checked)').click();
}
}
});