Move some display logic out of model, upgrade old code patterns
This commit is contained in:
parent
fdce116838
commit
c658fb6e31
|
@ -50,6 +50,36 @@ export default Ember.Controller.extend(CanCheckEmails, {
|
|||
return userPath(`${username}/preferences`);
|
||||
},
|
||||
|
||||
@computed('model.can_delete_all_posts', 'model.staff', 'model.post_count')
|
||||
deleteAllPostsExplanation(canDeleteAllPosts, staff, postCount) {
|
||||
if (canDeleteAllPosts) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (staff) {
|
||||
return I18n.t('admin.user.delete_posts_forbidden_because_staff');
|
||||
}
|
||||
if (postCount > this.siteSettings.delete_all_posts_max) {
|
||||
return I18n.t('admin.user.cant_delete_all_too_many_posts', {count: this.siteSettings.delete_all_posts_max});
|
||||
} else {
|
||||
return I18n.t('admin.user.cant_delete_all_posts', {count: this.siteSettings.delete_user_max_post_age});
|
||||
}
|
||||
},
|
||||
|
||||
@computed('model.canBeDeleted', 'model.staff')
|
||||
deleteExplanation(canBeDeleted, staff) {
|
||||
if (canBeDeleted) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (staff) {
|
||||
return I18n.t('admin.user.delete_forbidden_because_staff');
|
||||
} else {
|
||||
return I18n.t('admin.user.delete_forbidden', {count: this.siteSettings.delete_user_max_post_age});
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
actions: {
|
||||
|
||||
impersonate() { return this.get("model").impersonate(); },
|
||||
|
|
|
@ -87,21 +87,6 @@ const AdminUser = Discourse.User.extend({
|
|||
}).then(() => this.set('api_key', null));
|
||||
},
|
||||
|
||||
deleteAllPostsExplanation: function() {
|
||||
if (!this.get('can_delete_all_posts')) {
|
||||
if (this.get('deleteForbidden') && this.get('staff')) {
|
||||
return I18n.t('admin.user.delete_posts_forbidden_because_staff');
|
||||
}
|
||||
if (this.get('post_count') > Discourse.SiteSettings.delete_all_posts_max) {
|
||||
return I18n.t('admin.user.cant_delete_all_too_many_posts', {count: Discourse.SiteSettings.delete_all_posts_max});
|
||||
} else {
|
||||
return I18n.t('admin.user.cant_delete_all_posts', {count: Discourse.SiteSettings.delete_user_max_post_age});
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}.property('can_delete_all_posts', 'deleteForbidden'),
|
||||
|
||||
deleteAllPosts() {
|
||||
const user = this,
|
||||
message = I18n.messageFormat('admin.user.delete_all_posts_confirm_MF', { "POSTS": user.get('post_count'), "TOPICS": user.get('topic_count') }),
|
||||
|
@ -351,8 +336,6 @@ const AdminUser = Discourse.User.extend({
|
|||
}).catch(popupAjaxError);
|
||||
},
|
||||
|
||||
anonymizeForbidden: Em.computed.not("can_be_anonymized"),
|
||||
|
||||
anonymize() {
|
||||
const user = this,
|
||||
message = I18n.t("admin.user.anonymize_confirm");
|
||||
|
@ -391,20 +374,6 @@ const AdminUser = Discourse.User.extend({
|
|||
bootbox.dialog(message, buttons, { "classes": "delete-user-modal" });
|
||||
},
|
||||
|
||||
deleteForbidden: Em.computed.not("canBeDeleted"),
|
||||
|
||||
deleteExplanation: function() {
|
||||
if (this.get('deleteForbidden')) {
|
||||
if (this.get('staff')) {
|
||||
return I18n.t('admin.user.delete_forbidden_because_staff');
|
||||
} else {
|
||||
return I18n.t('admin.user.delete_forbidden', {count: Discourse.SiteSettings.delete_user_max_post_age});
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}.property('deleteForbidden'),
|
||||
|
||||
destroy(opts) {
|
||||
const user = this,
|
||||
message = I18n.t("admin.user.delete_confirm"),
|
||||
|
|
|
@ -408,7 +408,6 @@
|
|||
</div>
|
||||
{{/if}}
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
{{#if currentUser.admin}}
|
||||
|
@ -469,7 +468,7 @@
|
|||
{{d-button class="btn-danger" action="deleteAllPosts" icon="trash-o" label="admin.user.delete_all_posts"}}
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{model.deleteAllPostsExplanation}}
|
||||
{{deleteAllPostsExplanation}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -550,28 +549,26 @@
|
|||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#unless model.anonymizeForbidden}}
|
||||
{{#if model.can_be_anonymized}}
|
||||
{{d-button label="admin.user.anonymize"
|
||||
icon="exclamation-triangle"
|
||||
class="btn-danger"
|
||||
disabled=model.anonymizeForbidden
|
||||
action="anonymize"}}
|
||||
{{/unless}}
|
||||
{{/if}}
|
||||
|
||||
{{#unless model.deleteForbidden}}
|
||||
{{#if model.canBeDeleted}}
|
||||
{{d-button label="admin.user.delete"
|
||||
icon="exclamation-triangle"
|
||||
class="btn-danger"
|
||||
disabled=model.deleteForbidden
|
||||
action="destroy"}}
|
||||
{{/unless}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{#if model.deleteExplanation}}
|
||||
{{#if deleteExplanation}}
|
||||
<div class="clearfix"></div>
|
||||
<br>
|
||||
<div class="pull-right">
|
||||
{{d-icon "exclamation-triangle"}} {{model.deleteExplanation}}
|
||||
{{d-icon "exclamation-triangle"}} {{deleteExplanation}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</section>
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
class PenaltyCountsSerializer < ApplicationSerializer
|
||||
attributes :silenced, :suspended
|
||||
attributes :silenced, :suspended, :total
|
||||
|
||||
def total
|
||||
object.silenced + object.suspended
|
||||
end
|
||||
|
||||
def silenced
|
||||
object.silenced
|
||||
|
|
Loading…
Reference in New Issue