Merge pull request #1131 from novemberkilo/feature/temporary-boost-trust-levels

Feature: Admin can modify user trust levels
This commit is contained in:
Robin Ward
2013-07-04 06:57:59 -07:00
11 changed files with 186 additions and 3 deletions

View File

@@ -67,6 +67,37 @@ Discourse.AdminUser = Discourse.User.extend({
return site.get('trust_levels').findProperty('id', this.get('trust_level'));
}.property('trust_level'),
setOriginalTrustLevel: function() {
this.set('originalTrustLevel', this.get('trust_level'));
},
trustLevels: function() {
var site = Discourse.Site.instance();
return site.get('trust_levels');
}.property('trust_level'),
dirty: function() {
return this.get('originalTrustLevel') !== parseInt(this.get('trustLevel.id'), 10);
}.property('originalTrustLevel', 'trustLevel.id'),
saveTrustLevel: function() {
Discourse.ajax("/admin/users/" + this.id + "/trust_level", {
type: 'PUT',
data: {level: this.get('trustLevel.id')}
}).then(function () {
// succeeded
window.location.reload();
}, function(e) {
// failure
var error = Em.String.i18n('admin.user.trust_level_change_failed', { error: "http: " + e.status + " - " + e.body });
bootbox.alert(error);
});
},
restoreTrustLevel: function() {
this.set('trustLevel.id', this.get('originalTrustLevel'));
},
isBanned: (function() {
return this.get('is_banned') === true;
}).property('is_banned'),

View File

@@ -16,6 +16,11 @@ Discourse.AdminUserRoute = Discourse.Route.extend(Discourse.ModelReady, {
return Discourse.AdminUser.find(Em.get(params, 'username').toLowerCase());
},
setupController: function(controller, model) {
controller.set('model', model);
model.setOriginalTrustLevel();
},
renderTemplate: function() {
this.render({into: 'admin/templates/admin'});
},

View File

@@ -161,10 +161,22 @@
</div>
</div>
<div class='display-row'>
<div class='field'>{{i18n trust_level}}</div>
<div class='value'>{{trustLevel.name}}</div>
<div class="value">
{{combobox content=trustLevels value=trustLevel.id }}
</div>
<div class="controls">
{{#if dirty}}
<div>
<button class='btn ok' {{action saveTrustLevel target="content"}}><i class='icon-ok'></i></button>
<button class='btn cancel' {{action restoreTrustLevel target="content"}}><i class='icon-remove'></i></button>
</div>
{{/if}}
</div>
</div>
<div class='display-row'>
<div class='field'>{{i18n admin.user.banned}}</div>
<div class='value'>{{isBanned}}</div>