This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/controllers/user.js.es6
2018-01-26 15:40:03 -05:00

110 lines
3.6 KiB
JavaScript

import CanCheckEmails from 'discourse/mixins/can-check-emails';
import computed from 'ember-addons/ember-computed-decorators';
import User from 'discourse/models/user';
import optionalService from 'discourse/lib/optional-service';
export default Ember.Controller.extend(CanCheckEmails, {
indexStream: false,
application: Ember.inject.controller(),
userNotifications: Ember.inject.controller('user-notifications'),
currentPath: Ember.computed.alias('application.currentPath'),
adminTools: optionalService(),
@computed("content.username")
viewingSelf(username) {
return username === User.currentProp('username');
},
@computed('model.profileBackground')
hasProfileBackground(background) {
return !Ember.isEmpty(background.toString());
},
@computed('indexStream', 'viewingSelf', 'forceExpand')
collapsedInfo(indexStream, viewingSelf, forceExpand){
return (!indexStream || viewingSelf) && !forceExpand;
},
hasGivenFlags: Ember.computed.gt('model.number_of_flags_given', 0),
hasFlaggedPosts: Ember.computed.gt('model.number_of_flagged_posts', 0),
hasDeletedPosts: Ember.computed.gt('model.number_of_deleted_posts', 0),
hasBeenSuspended: Ember.computed.gt('model.number_of_suspensions', 0),
hasReceivedWarnings: Ember.computed.gt('model.warnings_received_count', 0),
showStaffCounters: Ember.computed.or('hasGivenFlags', 'hasFlaggedPosts', 'hasDeletedPosts', 'hasBeenSuspended', 'hasReceivedWarnings'),
@computed('model.isSuspended', 'currentUser.staff')
isNotSuspendedOrIsStaff(isSuspended, isStaff) {
return !isSuspended || isStaff;
},
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')
showBookmarks(viewingSelf, isAdmin) {
return viewingSelf || isAdmin;
},
@computed('viewingSelf', 'currentUser.admin')
showPrivateMessages(viewingSelf, isAdmin) {
return this.siteSettings.enable_private_messages && (viewingSelf || isAdmin);
},
@computed('viewingSelf', 'currentUser.staff')
showNotificationsTab(viewingSelf, staff) {
return viewingSelf || staff;
},
@computed('model.name')
nameFirst(name) {
return !this.get('siteSettings.prioritize_username_in_ux') && name && name.trim().length > 0;
},
@computed("model.badge_count")
showBadges(badgeCount) {
return Discourse.SiteSettings.enable_badges && badgeCount > 0;
},
@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.filterBy('show_on_profile', true).sortBy('position').map(field => {
Ember.set(field, 'dasherized_name', field.get('name').dasherize());
const value = userFields ? userFields[field.get('id').toString()] : null;
return Ember.isEmpty(value) ? null : Ember.Object.create({ value, field });
}).compact();
}
},
actions: {
expandProfile() {
this.set('forceExpand', true);
},
showSuspensions() {
this.get('adminTools').showActionLogs(this, {
target_user: this.get('model.username'),
action_name: 'suspend_user'
});
},
adminDelete() {
this.get('adminTools').deleteUser(this.get('model.id'));
}
}
});