discourse/app/assets/javascripts/admin/controllers/admin-users-list-show.js.es6

96 lines
2.7 KiB
Plaintext
Raw Normal View History

2018-06-15 11:03:24 -04:00
import debounce from "discourse/lib/debounce";
import { i18n } from "discourse/lib/computed";
import AdminUser from "admin/models/admin-user";
import CanCheckEmails from "discourse/mixins/can-check-emails";
2015-08-07 15:08:27 -04:00
export default Ember.Controller.extend(CanCheckEmails, {
model: null,
query: null,
order: null,
ascending: null,
showEmails: false,
refreshing: false,
listFilter: null,
selectAll: false,
2019-01-11 11:54:23 -05:00
queryNew: Ember.computed.equal("query", "new"),
queryPending: Ember.computed.equal("query", "pending"),
queryHasApproval: Ember.computed.or("queryNew", "queryPending"),
showApproval: Ember.computed.and(
2018-06-15 11:03:24 -04:00
"siteSettings.must_approve_users",
"queryHasApproval"
),
searchHint: i18n("search_hint"),
2019-01-11 11:54:23 -05:00
hasSelection: Ember.computed.gt("selectedCount", 0),
selectedCount: function() {
2018-06-15 11:03:24 -04:00
var model = this.get("model");
if (!model || !model.length) return 0;
2018-06-15 11:03:24 -04:00
return model.filterBy("selected").length;
}.property("model.@each.selected"),
selectAllChanged: function() {
2018-06-15 11:03:24 -04:00
var val = this.get("selectAll");
this.get("model").forEach(function(user) {
if (user.get("can_approve")) {
user.set("selected", val);
}
});
2018-06-15 11:03:24 -04:00
}.observes("selectAll"),
title: function() {
2018-06-15 11:03:24 -04:00
return I18n.t("admin.users.titles." + this.get("query"));
}.property("query"),
2015-08-10 17:11:27 -04:00
_filterUsers: debounce(function() {
this._refreshUsers();
2018-06-15 11:03:24 -04:00
}, 250).observes("listFilter"),
_refreshUsers() {
2018-06-15 11:03:24 -04:00
this.set("refreshing", true);
2018-06-15 11:03:24 -04:00
AdminUser.findAll(this.get("query"), {
filter: this.get("listFilter"),
show_emails: this.get("showEmails"),
order: this.get("order"),
ascending: this.get("ascending")
})
.then(result => this.set("model", result))
.finally(() => this.set("refreshing", false));
},
actions: {
approveUsers: function() {
2018-06-15 11:03:24 -04:00
AdminUser.bulkApprove(this.get("model").filterBy("selected"));
this._refreshUsers();
},
rejectUsers: function() {
var maxPostAge = this.siteSettings.delete_user_max_post_age;
var controller = this;
2018-06-15 11:03:24 -04:00
AdminUser.bulkReject(this.get("model").filterBy("selected")).then(
function(result) {
var message = I18n.t("admin.users.reject_successful", {
count: result.success
});
if (result.failed > 0) {
message +=
" " +
I18n.t("admin.users.reject_failures", { count: result.failed });
message +=
" " +
I18n.t("admin.user.delete_forbidden", { count: maxPostAge });
}
bootbox.alert(message);
controller._refreshUsers();
}
2018-06-15 11:03:24 -04:00
);
},
toggleEmailVisibility: function() {
this.toggleProperty("showEmails");
this._refreshUsers();
}
}
});