110 lines
3.4 KiB
JavaScript
110 lines
3.4 KiB
JavaScript
import { exportUserArchive } from 'discourse/lib/export-csv';
|
|
import CanCheckEmails from 'discourse/mixins/can-check-emails';
|
|
import computed from 'ember-addons/ember-computed-decorators';
|
|
import UserAction from 'discourse/models/user-action';
|
|
import User from 'discourse/models/user';
|
|
|
|
export default Ember.Controller.extend(CanCheckEmails, {
|
|
indexStream: false,
|
|
pmView: false,
|
|
userActionType: null,
|
|
needs: ['user-notifications', 'user-topics-list'],
|
|
|
|
@computed("content.username")
|
|
viewingSelf(username) {
|
|
return username === User.currentProp('username');
|
|
},
|
|
|
|
@computed('indexStream', 'viewingSelf', 'forceExpand')
|
|
collapsedInfo(indexStream, viewingSelf, forceExpand){
|
|
return (!indexStream || viewingSelf) && !forceExpand;
|
|
},
|
|
|
|
linkWebsite: Em.computed.not('model.isBasic'),
|
|
|
|
@computed("model.trust_level")
|
|
removeNoFollow(trustLevel) {
|
|
return trustLevel > 2 && !this.siteSettings.tl3_links_no_follow;
|
|
},
|
|
|
|
@computed('viewingSelf', 'currentUser.admin')
|
|
canSeePrivateMessages(viewingSelf, isAdmin) {
|
|
return this.siteSettings.enable_private_messages && (viewingSelf || isAdmin);
|
|
},
|
|
|
|
canSeeNotificationHistory: Em.computed.alias('canSeePrivateMessages'),
|
|
|
|
@computed("content.badge_count")
|
|
showBadges(badgeCount) {
|
|
return Discourse.SiteSettings.enable_badges && badgeCount > 0;
|
|
},
|
|
|
|
@computed("userActionType")
|
|
privateMessageView(userActionType) {
|
|
return (userActionType === UserAction.TYPES.messages_sent) ||
|
|
(userActionType === UserAction.TYPES.messages_received);
|
|
},
|
|
|
|
@computed()
|
|
canInviteToForum() {
|
|
return User.currentProp('can_invite_to_forum');
|
|
},
|
|
|
|
canDeleteUser: Ember.computed.and("model.can_be_deleted", "model.can_delete_all_posts"),
|
|
|
|
@computed('model.user_fields.@each.value')
|
|
publicUserFields() {
|
|
const siteUserFields = this.site.get('user_fields');
|
|
if (!Ember.isEmpty(siteUserFields)) {
|
|
const userFields = this.get('model.user_fields');
|
|
return siteUserFields.filterProperty('show_on_profile', true).sortBy('position').map(field => {
|
|
const value = userFields ? userFields[field.get('id').toString()] : null;
|
|
return Ember.isEmpty(value) ? null : Ember.Object.create({ value, field });
|
|
}).compact();
|
|
}
|
|
},
|
|
|
|
privateMessagesActive: Em.computed.equal('pmView', 'index'),
|
|
privateMessagesMineActive: Em.computed.equal('pmView', 'mine'),
|
|
privateMessagesUnreadActive: Em.computed.equal('pmView', 'unread'),
|
|
|
|
@computed('model.private_messages_stats.groups', 'groupFilter', 'pmView')
|
|
groupPMStats(stats,filter,pmView) {
|
|
if (stats) {
|
|
return stats.map(g => {
|
|
return {
|
|
name: g.name,
|
|
count: g.count,
|
|
active: (g.name === filter && pmView === 'groups')
|
|
};
|
|
});
|
|
}
|
|
},
|
|
|
|
actions: {
|
|
expandProfile() {
|
|
this.set('forceExpand', true);
|
|
},
|
|
|
|
adminDelete() {
|
|
// I really want this deferred, don't want to bring in all this code till used
|
|
const AdminUser = require('admin/models/admin-user').default;
|
|
AdminUser.find(this.get('model.username').toLowerCase())
|
|
.then(user => user.destroy({deletePosts: true}));
|
|
},
|
|
|
|
exportUserArchive() {
|
|
bootbox.confirm(
|
|
I18n.t("admin.export_csv.user_archive_confirm"),
|
|
I18n.t("no_value"),
|
|
I18n.t("yes_value"),
|
|
function(confirmed) {
|
|
if (confirmed) {
|
|
exportUserArchive();
|
|
}
|
|
}
|
|
);
|
|
}
|
|
}
|
|
});
|