122 lines
3.1 KiB
JavaScript
122 lines
3.1 KiB
JavaScript
import { default as computed } from 'ember-addons/ember-computed-decorators';
|
|
|
|
const Tab = Ember.Object.extend({
|
|
init() {
|
|
this._super();
|
|
let name = this.get('name');
|
|
this.set('route', this.get('route') || `group.` + name);
|
|
this.set('message', I18n.t(`groups.${this.get('i18nKey') || name}`));
|
|
}
|
|
});
|
|
|
|
export default Ember.Controller.extend({
|
|
application: Ember.inject.controller(),
|
|
counts: null,
|
|
showing: 'members',
|
|
destroying: null,
|
|
|
|
@computed('showMessages', 'model.user_count', 'canManageGroup')
|
|
tabs(showMessages, userCount, canManageGroup) {
|
|
const membersTab = Tab.create({
|
|
name: 'members',
|
|
route: 'group.index',
|
|
icon: 'users',
|
|
i18nKey: "members.title"
|
|
});
|
|
|
|
membersTab.set('count', userCount);
|
|
|
|
const defaultTabs = [
|
|
membersTab,
|
|
Tab.create({ name: 'activity' })
|
|
];
|
|
|
|
if (showMessages) {
|
|
defaultTabs.push(Tab.create({
|
|
name: 'messages', i18nKey: 'messages'
|
|
}));
|
|
}
|
|
|
|
if (canManageGroup) {
|
|
defaultTabs.push(
|
|
Tab.create({
|
|
name: 'manage', i18nKey: 'manage.title', icon: 'wrench'
|
|
})
|
|
);
|
|
}
|
|
|
|
return defaultTabs;
|
|
},
|
|
|
|
@computed('model.is_group_user')
|
|
showMessages(isGroupUser) {
|
|
if (!this.siteSettings.enable_personal_messages) {
|
|
return false;
|
|
}
|
|
|
|
return isGroupUser || (this.currentUser && this.currentUser.admin);
|
|
},
|
|
|
|
@computed('model.is_group_owner', 'model.automatic')
|
|
canEditGroup(isGroupOwner, automatic) {
|
|
return !automatic && isGroupOwner;
|
|
},
|
|
|
|
@computed('model.displayName', 'model.full_name')
|
|
groupName(displayName, fullName) {
|
|
return (fullName || displayName).capitalize();
|
|
},
|
|
|
|
@computed('model.name', 'model.flair_url', 'model.flair_bg_color', 'model.flair_color')
|
|
avatarFlairAttributes(groupName, flairURL, flairBgColor, flairColor) {
|
|
return {
|
|
primary_group_flair_url: flairURL,
|
|
primary_group_flair_bg_color: flairBgColor,
|
|
primary_group_flair_color: flairColor,
|
|
primary_group_name: groupName
|
|
};
|
|
},
|
|
|
|
@computed("model.messageable")
|
|
displayGroupMessageButton(messageable) {
|
|
return this.currentUser && messageable;
|
|
},
|
|
|
|
@computed('model', 'model.automatic')
|
|
canManageGroup(model, automatic) {
|
|
return this.currentUser && (
|
|
this.currentUser.canManageGroup(model) ||
|
|
(this.currentUser.admin && automatic)
|
|
);
|
|
},
|
|
|
|
actions: {
|
|
messageGroup() {
|
|
this.send('createNewMessageViaParams', this.get('model.name'));
|
|
},
|
|
|
|
destroy() {
|
|
const group = this.get('model');
|
|
this.set('destroying', true);
|
|
|
|
bootbox.confirm(
|
|
I18n.t("admin.groups.delete_confirm"),
|
|
I18n.t("no_value"),
|
|
I18n.t("yes_value"),
|
|
confirmed => {
|
|
if (confirmed) {
|
|
group.destroy().then(() => {
|
|
this.transitionToRoute('groups.index');
|
|
}).catch(error => {
|
|
Ember.Logger.error(error);
|
|
bootbox.alert(I18n.t("admin.groups.delete_failed"));
|
|
}).finally(() => this.set('destroying', false));
|
|
} else {
|
|
this.set('destroying', false);
|
|
}
|
|
}
|
|
);
|
|
},
|
|
}
|
|
});
|