Version bump

This commit is contained in:
Neil Lalonde 2019-01-14 17:03:48 -05:00
commit 7f50fc4f70
888 changed files with 5104 additions and 3413 deletions

View File

@ -28,7 +28,6 @@
"currentURL": true,
"define": true,
"Discourse": true,
"Em": true,
"Ember": true,
"exists": true,
"expandSelectKit": true,
@ -63,6 +62,7 @@
"triggerEvent": true,
"visible": true,
"visit": true,
"pauseTest": true
},
"rules": {
"block-scoped-var": 2,

View File

@ -49,7 +49,7 @@ before_install:
- wget -qO- https://raw.githubusercontent.com/discourse/discourse_docker/master/image/base/install-pngquant | sudo sh
- nvm install node
- node --version
- gem install bundler
- gem install bundler -v 1.17.3
- git clone --depth=1 https://github.com/discourse/discourse-backup-uploads-to-s3.git plugins/discourse-backup-uploads-to-s3
- git clone --depth=1 https://github.com/discourse/discourse-spoiler-alert.git plugins/discourse-spoiler-alert
- git clone --depth=1 https://github.com/discourse/discourse-cakeday.git plugins/discourse-cakeday

View File

@ -36,13 +36,13 @@ gem 'redis-namespace'
gem 'active_model_serializers', '~> 0.8.3'
gem 'onebox', '1.8.71'
gem 'onebox', '1.8.76'
gem 'http_accept_language', '~>2.0.5', require: false
gem 'ember-rails', '0.18.5'
gem 'ember-source', '2.13.3'
gem 'ember-handlebars-template', '0.7.5'
gem 'discourse-ember-source', '~> 3.5.1'
gem 'ember-handlebars-template', '0.8.0'
gem 'barber'
# message bus 2.2.0 should be very stable

View File

@ -83,7 +83,7 @@ GEM
open4 (~> 1.3)
coderay (1.1.2)
colored2 (3.1.2)
concurrent-ruby (1.1.3)
concurrent-ruby (1.1.4)
connection_pool (2.2.2)
cork (0.3.0)
colored2 (~> 3.1)
@ -105,6 +105,7 @@ GEM
terminal-table (~> 1)
debug_inspector (0.0.3)
diff-lcs (1.3)
discourse-ember-source (3.5.1.3)
discourse_image_optim (0.26.2)
exifr (~> 1.2, >= 1.2.2)
fspath (~> 3.0)
@ -114,9 +115,9 @@ GEM
email_reply_trimmer (0.1.12)
ember-data-source (3.0.2)
ember-source (>= 2, < 3.0)
ember-handlebars-template (0.7.5)
ember-handlebars-template (0.8.0)
barber (>= 0.11.0)
sprockets (>= 3.3, < 4)
sprockets (>= 3.3, < 4.1)
ember-rails (0.18.5)
active_model_serializers
ember-data-source (>= 1.0.0.beta.5)
@ -124,7 +125,7 @@ GEM
ember-source (>= 1.1.0)
jquery-rails (>= 1.0.17)
railties (>= 3.1)
ember-source (2.13.3)
ember-source (2.18.2)
erubi (1.7.1)
excon (0.62.0)
execjs (2.7.0)
@ -258,7 +259,7 @@ GEM
omniauth-twitter (1.4.0)
omniauth-oauth (~> 1.1)
rack
onebox (1.8.71)
onebox (1.8.76)
htmlentities (~> 4.3)
moneta (~> 1.0)
multi_json (~> 1.11)
@ -435,9 +436,9 @@ GEM
addressable (>= 2.3.6)
crack (>= 0.3.2)
hashdiff
webpush (0.3.2)
webpush (0.3.6)
hkdf (~> 0.2)
jwt
jwt (~> 2.0)
PLATFORMS
ruby
@ -462,11 +463,11 @@ DEPENDENCIES
colored2
cppjieba_rb
danger
discourse-ember-source (~> 3.5.1)
discourse_image_optim
email_reply_trimmer (~> 0.1)
ember-handlebars-template (= 0.7.5)
ember-handlebars-template (= 0.8.0)
ember-rails (= 0.18.5)
ember-source (= 2.13.3)
excon
execjs
fabrication
@ -512,7 +513,7 @@ DEPENDENCIES
omniauth-oauth2
omniauth-openid
omniauth-twitter
onebox (= 1.8.71)
onebox (= 1.8.76)
openid-redis-store
pg
pry-nav
@ -557,4 +558,4 @@ DEPENDENCIES
webpush
BUNDLED WITH
1.17.2
1.17.3

View File

@ -83,26 +83,14 @@ export default Ember.Component.extend(bufferedProperty("userField"), {
.catch(popupAjaxError);
},
moveUp() {
this.sendAction("moveUpAction", this.get("userField"));
},
moveDown() {
this.sendAction("moveDownAction", this.get("userField"));
},
edit() {
this.set("editing", true);
},
destroy() {
this.sendAction("destroyAction", this.get("userField"));
},
cancel() {
const id = this.get("userField.id");
if (Ember.isEmpty(id)) {
this.sendAction("destroyAction", this.get("userField"));
this.destroyAction(this.get("userField"));
} else {
this.rollbackBuffer();
this.set("editing", false);

View File

@ -14,7 +14,7 @@ export default Ember.Component.extend(
this.get("word")
.destroy()
.then(() => {
this.sendAction("action", this.get("word"));
this.action(this.get("word"));
})
.catch(e => {
bootbox.alert(

View File

@ -34,7 +34,7 @@ export default Ember.Component.extend({
didInsertElement() {
loadScript("/javascripts/spectrum.js").then(() => {
loadCSS("/javascripts/spectrum.css").then(() => {
Em.run.schedule("afterRender", () => {
Ember.run.schedule("afterRender", () => {
this.$(".picker")
.spectrum({ color: "#" + this.get("hexValue") })
.on("change.spectrum", (me, color) => {
@ -44,7 +44,7 @@ export default Ember.Component.extend({
});
});
});
Em.run.schedule("afterRender", () => {
Ember.run.schedule("afterRender", () => {
this.hexValueChanged();
});
}

View File

@ -61,7 +61,7 @@ export default Ember.Component.extend(bufferedProperty("host"), {
this.get("host")
.destroyRecord()
.then(() => {
this.sendAction("deleteHost", this.get("host"));
this.deleteHost(this.get("host"));
});
}
});
@ -70,7 +70,7 @@ export default Ember.Component.extend(bufferedProperty("host"), {
cancel() {
const host = this.get("host");
if (host.get("isNew")) {
this.sendAction("deleteHost", host);
this.deleteHost(host);
} else {
this.rollbackBuffer();
this.set("editToggled", false);

View File

@ -4,13 +4,17 @@ import {
} from "ember-addons/ember-computed-decorators";
export default Ember.Component.extend({
classNames: ["inline-edit"],
checked: null,
checkedInternal: null,
init() {
this._super();
this._super(...arguments);
this.set("checkedInternal", this.get("checked"));
},
classNames: ["inline-edit"],
@observes("checked")
checkedChanged() {
this.set("checkedInternal", this.get("checked"));
@ -33,7 +37,7 @@ export default Ember.Component.extend({
finished() {
this.set("checked", this.get("checkedInternal"));
this.sendAction();
this.action();
}
}
});

View File

@ -21,7 +21,7 @@ export default Ember.Component.extend({
ajax("/admin/users/ip-info", {
data: { ip: this.get("ip") }
}).then(function(location) {
self.set("location", Em.Object.create(location));
self.set("location", Ember.Object.create(location));
});
}

View File

@ -33,8 +33,8 @@ export default Ember.Component.extend({
self.set("url", "");
self.set("permalink_type_value", "");
self.set("formSubmitted", false);
self.sendAction("action", Permalink.create(result.permalink));
Em.run.schedule("afterRender", function() {
self.action(Permalink.create(result.permalink));
Ember.run.schedule("afterRender", function() {
self.$(".permalink-url").focus();
});
},
@ -60,7 +60,7 @@ export default Ember.Component.extend({
didInsertElement: function() {
var self = this;
self._super();
Em.run.schedule("afterRender", function() {
Ember.run.schedule("afterRender", function() {
self.$(".external-url").keydown(function(e) {
if (e.keyCode === 13) {
// enter key

View File

@ -8,8 +8,8 @@ import { bufferedRender } from "discourse-common/lib/buffered-render";
{{resumable-upload
target="/admin/backups/upload"
success="successAction"
error="errorAction"
success=(action "successAction")
error=(action "errorAction")
uploadText="UPLOAD"
}}
**/
@ -55,7 +55,7 @@ export default Ember.Component.extend(
if (this.get("isUploading")) {
this.resumable.cancel();
var self = this;
Em.run.later(function() {
Ember.run.later(function() {
self._reset();
});
return false;
@ -83,40 +83,40 @@ export default Ember.Component.extend(
// automatically upload the selected file
self.resumable.upload();
// mark as uploading
Em.run.later(function() {
Ember.run.later(function() {
self.set("isUploading", true);
});
});
this.resumable.on("fileProgress", function(file) {
// update progress
Em.run.later(function() {
Ember.run.later(function() {
self.set("progress", parseInt(file.progress() * 100, 10));
});
});
this.resumable.on("fileSuccess", function(file) {
Em.run.later(function() {
Ember.run.later(function() {
// mark as not uploading anymore
self._reset();
// fire an event to allow the parent route to reload its model
self.sendAction("success", file.fileName);
self.success(file.fileName);
});
});
this.resumable.on("fileError", function(file, message) {
Em.run.later(function() {
Ember.run.later(function() {
// mark as not uploading anymore
self._reset();
// fire an event to allow the parent route to display the error message
self.sendAction("error", file.fileName, message);
self.error(file.fileName, message);
});
});
}.on("init"),
_assignBrowse: function() {
var self = this;
Em.run.schedule("afterRender", function() {
Ember.run.schedule("afterRender", function() {
self.resumable.assignBrowse(self.$());
});
}.on("didInsertElement"),

View File

@ -8,11 +8,5 @@ export default Ember.Component.extend({
@computed("model.isSaving")
savingText(saving) {
return saving ? "saving" : "save";
},
actions: {
saveChanges() {
this.sendAction();
}
}
});

View File

@ -2,7 +2,7 @@
A form to create an IP address that will be blocked or whitelisted.
Example usage:
{{screened-ip-address-form action="recordAdded"}}
{{screened-ip-address-form action=(action "recordAdded")}}
where action is a callback on the controller or route that will get called after
the new record is successfully saved. It is called with the new ScreenedIpAddress record
@ -60,10 +60,7 @@ export default Ember.Component.extend({
.save()
.then(result => {
this.setProperties({ ip_address: "", formSubmitted: false });
this.sendAction(
"action",
ScreenedIpAddress.create(result.screened_ip_address)
);
this.action(ScreenedIpAddress.create(result.screened_ip_address));
Ember.run.schedule("afterRender", () =>
this.$(".ip-address-input").focus()
);

View File

@ -30,11 +30,5 @@ export default Ember.Component.extend({
}
return this.get("term");
},
actions: {
edit() {
this.sendAction("editAction", this.get("siteText"));
}
}
});

View File

@ -1,9 +1,9 @@
import UploadMixin from "discourse/mixins/upload";
export default Em.Component.extend(UploadMixin, {
export default Ember.Component.extend(UploadMixin, {
type: "csv",
uploadUrl: "/tags/upload",
addDisabled: Em.computed.alias("uploading"),
addDisabled: Ember.computed.alias("uploading"),
elementId: "tag-uploader",
validateUploadedFilesOptions() {
@ -12,8 +12,8 @@ export default Em.Component.extend(UploadMixin, {
uploadDone() {
bootbox.alert(I18n.t("tagging.upload_successful"), () => {
this.sendAction("refresh");
this.sendAction("closeModal");
this.refresh();
this.closeModal();
});
}
});

View File

@ -9,9 +9,9 @@ export default Ember.Component.extend({
childrenExpanded: false,
classNames: ["themes-list-item"],
classNameBindings: ["theme.selected:selected"],
hasComponents: Em.computed.gt("children.length", 0),
displayComponents: Em.computed.and("hasComponents", "theme.isActive"),
displayHasMore: Em.computed.gt("theme.childThemes.length", MAX_COMPONENTS),
hasComponents: Ember.computed.gt("children.length", 0),
displayComponents: Ember.computed.and("hasComponents", "theme.isActive"),
displayHasMore: Ember.computed.gt("theme.childThemes.length", MAX_COMPONENTS),
click(e) {
if (!$(e.target).hasClass("others-count")) {

View File

@ -7,12 +7,12 @@ export default Ember.Component.extend({
classNames: ["themes-list"],
hasThemes: Em.computed.gt("themesList.length", 0),
hasUserThemes: Em.computed.gt("userThemes.length", 0),
hasInactiveThemes: Em.computed.gt("inactiveThemes.length", 0),
hasThemes: Ember.computed.gt("themesList.length", 0),
hasUserThemes: Ember.computed.gt("userThemes.length", 0),
hasInactiveThemes: Ember.computed.gt("inactiveThemes.length", 0),
themesTabActive: Em.computed.equal("currentTab", THEMES),
componentsTabActive: Em.computed.equal("currentTab", COMPONENTS),
themesTabActive: Ember.computed.equal("currentTab", THEMES),
componentsTabActive: Ember.computed.equal("currentTab", COMPONENTS),
@computed("themes", "components", "currentTab")
themesList(themes, components) {
@ -79,7 +79,7 @@ export default Ember.Component.extend({
}
},
navigateToTheme(theme) {
Em.getOwner(this)
Ember.getOwner(this)
.lookup("router:main")
.transitionTo("adminCustomizeThemes.show", theme);
}

View File

@ -64,7 +64,7 @@ export default Ember.Component.extend({
showMessage: true,
message: I18n.t("admin.watched_words.form.success")
});
this.sendAction("action", WatchedWord.create(result));
this.action(WatchedWord.create(result));
Ember.run.schedule("afterRender", () =>
this.$(".watched-word-input").focus()
);

View File

@ -1,11 +1,11 @@
import computed from "ember-addons/ember-computed-decorators";
import UploadMixin from "discourse/mixins/upload";
export default Em.Component.extend(UploadMixin, {
export default Ember.Component.extend(UploadMixin, {
type: "csv",
classNames: "watched-words-uploader",
uploadUrl: "/admin/logs/watched_words/upload",
addDisabled: Em.computed.alias("uploading"),
addDisabled: Ember.computed.alias("uploading"),
validateUploadedFilesOptions() {
return { csvOnly: true };
@ -19,7 +19,7 @@ export default Em.Component.extend(UploadMixin, {
uploadDone() {
if (this) {
bootbox.alert(I18n.t("admin.watched_words.form.upload_successful"));
this.sendAction("done");
this.done();
}
}
});

View File

@ -1,5 +1,5 @@
export default Ember.Controller.extend({
logs: [],
adminBackups: Ember.inject.controller(),
status: Em.computed.alias("adminBackups.model")
status: Ember.computed.alias("adminBackups.model")
});

View File

@ -1,8 +1,8 @@
import { popupAjaxError } from "discourse/lib/ajax-error";
import BufferedContent from "discourse/mixins/buffered-content";
import { bufferedProperty } from "discourse/mixins/buffered-content";
import { propertyNotEqual } from "discourse/lib/computed";
export default Ember.Controller.extend(BufferedContent, {
export default Ember.Controller.extend(bufferedProperty("model"), {
adminBadges: Ember.inject.controller(),
saving: false,
savingStatus: "",

View File

@ -51,7 +51,7 @@ export default Ember.Controller.extend({
},
copy() {
var newColorScheme = Em.copy(this.get("model"), true);
var newColorScheme = Ember.copy(this.get("model"), true);
newColorScheme.set(
"name",
I18n.t("admin.customize.colors.copy_name_prefix") +

View File

@ -10,7 +10,7 @@ export default Ember.Controller.extend({
}.property("model.@each.id"),
baseColors: function() {
var baseColorsHash = Em.Object.create({});
var baseColorsHash = Ember.Object.create({});
this.get("baseColorScheme.colors").forEach(color => {
baseColorsHash.set(color.get("name"), color);
});
@ -23,7 +23,7 @@ export default Ember.Controller.extend({
"base_scheme_id",
baseKey
);
const newColorScheme = Em.copy(base, true);
const newColorScheme = Ember.copy(base, true);
newColorScheme.set("name", I18n.t("admin.customize.colors.new_name"));
newColorScheme.set("base_scheme_id", base.get("base_scheme_id"));
newColorScheme.save().then(() => {

View File

@ -179,7 +179,7 @@ export default Ember.Controller.extend({
toggleMaximize: function() {
this.toggleProperty("maximized");
Em.run.next(() => {
Ember.run.next(() => {
this.appEvents.trigger("ace:resize");
});
}

View File

@ -10,7 +10,7 @@ const THEME_UPLOAD_VAR = 2;
export default Ember.Controller.extend({
downloadUrl: url("model.id", "/admin/themes/%@"),
previewUrl: url("model.id", "/admin/themes/%@/preview"),
addButtonDisabled: Em.computed.empty("selectedChildThemeId"),
addButtonDisabled: Ember.computed.empty("selectedChildThemeId"),
editRouteName: "adminCustomizeThemes.edit",
@computed("model", "allThemes", "model.component")
@ -48,7 +48,7 @@ export default Ember.Controller.extend({
return colorSchemeId !== existingId;
},
@computed("availableChildThemes", "model.childThemes.@each", "model")
@computed("availableChildThemes", "model.childThemes.[]", "model")
selectableChildThemes(available, childThemes) {
if (available) {
const themes = !childThemes

View File

@ -5,7 +5,7 @@ export default Ember.Controller.extend({
@property sendTestEmailDisabled
**/
sendTestEmailDisabled: Em.computed.empty("testEmailAddress"),
sendTestEmailDisabled: Ember.computed.empty("testEmailAddress"),
/**
Clears the 'sentTestEmail' property on successful send.

View File

@ -1,6 +1,6 @@
export default Ember.Controller.extend({
loading: false,
period: "all",
period: "yearly",
searchType: "all",
searchTypeOptions: [

View File

@ -4,7 +4,7 @@ const MAX_FIELDS = 20;
export default Ember.Controller.extend({
fieldTypes: null,
createDisabled: Em.computed.gte("model.length", MAX_FIELDS),
createDisabled: Ember.computed.gte("model.length", MAX_FIELDS),
fieldSortOrder: ["position"],
sortedFields: Ember.computed.sort("model", "fieldSortOrder"),

View File

@ -14,15 +14,15 @@ export default Ember.Controller.extend(CanCheckEmails, {
listFilter: null,
selectAll: false,
queryNew: Em.computed.equal("query", "new"),
queryPending: Em.computed.equal("query", "pending"),
queryHasApproval: Em.computed.or("queryNew", "queryPending"),
showApproval: Em.computed.and(
queryNew: Ember.computed.equal("query", "new"),
queryPending: Ember.computed.equal("query", "pending"),
queryHasApproval: Ember.computed.or("queryNew", "queryPending"),
showApproval: Ember.computed.and(
"siteSettings.must_approve_users",
"queryHasApproval"
),
searchHint: i18n("search_hint"),
hasSelection: Em.computed.gt("selectedCount", 0),
hasSelection: Ember.computed.gt("selectedCount", 0),
selectedCount: function() {
var model = this.get("model");

View File

@ -43,7 +43,7 @@ export default Ember.Controller.extend({
if (a) {
a.words.unshiftObject(arg);
a.incrementProperty("count");
Em.run.schedule("afterRender", () => {
Ember.run.schedule("afterRender", () => {
// remove from other actions lists
let match = null;
this.get("adminWatchedWords.model").forEach(action => {

View File

@ -62,9 +62,21 @@ export default Ember.Controller.extend({
}
},
@computed("model.isSaving", "secretValidation", "eventTypeValidation")
saveButtonDisabled(isSaving, secretValidation, eventTypeValidation) {
return isSaving ? false : secretValidation || eventTypeValidation;
@computed(
"model.isSaving",
"secretValidation",
"eventTypeValidation",
"model.payload_url"
)
saveButtonDisabled(
isSaving,
secretValidation,
eventTypeValidation,
payloadUrl
) {
return isSaving
? false
: secretValidation || eventTypeValidation || Ember.isEmpty(payloadUrl);
},
actions: {

View File

@ -63,8 +63,8 @@ export default Ember.Controller.extend(ModalFunctionality, {
this.set("fileSelected", false);
},
enabled: Em.computed.and("nameValid", "fileSelected"),
disabled: Em.computed.not("enabled"),
enabled: Ember.computed.and("nameValid", "fileSelected"),
disabled: Ember.computed.not("enabled"),
@computed("name", "adminCustomizeThemesShow.model.theme_fields")
errorMessage(name, themeFields) {
@ -105,7 +105,7 @@ export default Ember.Controller.extend(ModalFunctionality, {
actions: {
updateName() {
let name = this.get("name");
if (Em.isEmpty(name)) {
if (Ember.isEmpty(name)) {
name = $("#file-input")[0].files[0].name;
this.set("name", name.split(".")[0]);
}

View File

@ -4,7 +4,7 @@ import ModalFunctionality from "discourse/mixins/modal-functionality";
export default Ember.Controller.extend(ModalFunctionality, {
modelChanged: function() {
const model = this.get("model");
const copy = Em.A();
const copy = Ember.A();
const store = this.store;
if (model) {

View File

@ -17,7 +17,7 @@ const CUSTOM_TYPES = [
];
export default Ember.Mixin.create({
classNameBindings: [":row", ":setting", "setting.overridden", "typeClass"],
classNameBindings: [":row", ":setting", "overridden", "typeClass"],
content: Ember.computed.alias("setting"),
validationMessage: null,
isSecret: Ember.computed.oneWay("setting.secret"),
@ -81,12 +81,16 @@ export default Ember.Mixin.create({
return "site-settings/" + typeClass;
},
@computed("setting.default", "buffered.value")
overridden(settingDefault, bufferedValue) {
return settingDefault !== bufferedValue;
},
_watchEnterKey: function() {
const self = this;
this.$().on("keydown.setting-enter", ".input-setting-string", function(e) {
this.$().on("keydown.setting-enter", ".input-setting-string", e => {
if (e.keyCode === 13) {
// enter key
self.send("save");
this.send("save");
}
});
}.on("didInsertElement"),
@ -96,7 +100,7 @@ export default Ember.Mixin.create({
}.on("willDestroyElement"),
_save() {
Em.warn("You should define a `_save` method", {
Ember.warn("You should define a `_save` method", {
id: "admin.mixins.setting-component"
});
return Ember.RSVP.resolve();
@ -124,7 +128,6 @@ export default Ember.Mixin.create({
resetDefault() {
this.set("buffered.value", this.get("setting.default"));
this.send("save");
},
toggleSecret() {

View File

@ -305,7 +305,7 @@ const AdminUser = Discourse.User.extend({
return this.get("trust_level") < 4;
}.property("trust_level"),
canSuspend: Em.computed.not("staff"),
canSuspend: Ember.computed.not("staff"),
suspendDuration: function() {
const suspended_at = moment(this.suspended_at),

View File

@ -1,7 +1,7 @@
import computed from "ember-addons/ember-computed-decorators";
export default Discourse.Model.extend({
restoreDisabled: Em.computed.not("restoreEnabled"),
restoreDisabled: Ember.computed.not("restoreEnabled"),
@computed("allowRestore", "isOperationRunning")
restoreEnabled(allowRestore, isOperationRunning) {

View File

@ -30,7 +30,7 @@ const ColorScheme = Discourse.Model.extend(Ember.Copyable, {
var newScheme = ColorScheme.create({
name: this.get("name"),
can_edit: true,
colors: Em.A()
colors: Ember.A()
});
this.get("colors").forEach(c => {
newScheme.colors.pushObject(

View File

@ -10,9 +10,9 @@ const SETTINGS_TYPE_ID = 5;
const Theme = RestModel.extend({
FIELDS_IDS: [0, 1],
isActive: Em.computed.or("default", "user_selectable"),
isPendingUpdates: Em.computed.gt("remote_theme.commits_behind", 0),
hasEditedFields: Em.computed.gt("editedFields.length", 0),
isActive: Ember.computed.or("default", "user_selectable"),
isPendingUpdates: Ember.computed.gt("remote_theme.commits_behind", 0),
hasEditedFields: Ember.computed.gt("editedFields.length", 0),
@computed("theme_fields")
themeFields(fields) {
@ -30,7 +30,7 @@ const Theme = RestModel.extend({
return hash;
},
@computed("theme_fields", "theme_fields.@each")
@computed("theme_fields", "theme_fields.[]")
uploads(fields) {
if (!fields) {
return [];
@ -47,10 +47,10 @@ const Theme = RestModel.extend({
);
},
@computed("theme_fields.@each")
@computed("theme_fields.[]")
editedFields(fields) {
return fields.filter(
field => !Em.isBlank(field.value) && field.type_id !== SETTINGS_TYPE_ID
field => !Ember.isBlank(field.value) && field.type_id !== SETTINGS_TYPE_ID
);
},
@ -67,11 +67,11 @@ const Theme = RestModel.extend({
hasEdited(target, name) {
if (name) {
return !Em.isEmpty(this.getField(target, name));
return !Ember.isEmpty(this.getField(target, name));
} else {
let fields = this.get("theme_fields") || [];
return fields.any(
field => field.target === target && !Em.isEmpty(field.value)
field => field.target === target && !Ember.isEmpty(field.value)
);
}
},
@ -130,7 +130,7 @@ const Theme = RestModel.extend({
}
},
@computed("childThemes.@each")
@computed("childThemes.[]")
child_theme_ids(childThemes) {
if (childThemes) {
return childThemes.map(theme => Ember.get(theme, "id"));

View File

@ -21,7 +21,7 @@ const WatchedWord = Discourse.Model.extend({
WatchedWord.reopenClass({
findAll() {
return ajax("/admin/logs/watched_words").then(list => {
return ajax("/admin/logs/watched_words.json").then(list => {
const actions = {};
list.words.forEach(s => {
if (!actions[s.action]) {

View File

@ -15,7 +15,7 @@ export default Ember.Route.extend({
return log.message.length === 0 || log.message[0] === "[";
})
.map(function(log) {
return Em.Object.create(log);
return Ember.Object.create(log);
})
.value();
logs.pushObjects(newLogs);

View File

@ -41,7 +41,7 @@ export default Discourse.Route.extend({
} else {
this.controllerFor("adminBackupsLogs")
.get("logs")
.pushObject(Em.Object.create(log));
.pushObject(Ember.Object.create(log));
}
});
},

View File

@ -4,7 +4,7 @@ import showModal from "discourse/lib/show-modal";
export default Ember.Route.extend({
serialize(m) {
return { badge_id: Em.get(m, "id") || "new" };
return { badge_id: Ember.get(m, "id") || "new" };
},
model(params) {
@ -49,7 +49,7 @@ export default Ember.Route.extend({
})
.catch(function(error) {
badge.set("preview_loading", false);
Em.Logger.error(error);
Ember.Logger.error(error);
bootbox.alert("Network error");
});
}

View File

@ -9,7 +9,7 @@ export default Discourse.Route.extend({
},
model(params) {
return AdminUser.find(Em.get(params, "user_id"));
return AdminUser.find(Ember.get(params, "user_id"));
},
renderTemplate() {

View File

@ -19,8 +19,8 @@
{{/if}}
</td>
<td class="key-controls">
{{d-button class="btn-default" action="regenerateKey" actionParam=k icon="undo" label='admin.api.regenerate'}}
{{d-button class="btn-default" action="revokeKey" actionParam=k icon="times" label='admin.api.revoke'}}
{{d-button class="btn-default" action=(action "regenerateKey") actionParam=k icon="undo" label='admin.api.regenerate'}}
{{d-button class="btn-default" action=(action "revokeKey") actionParam=k icon="times" label='admin.api.revoke'}}
</td>
</tr>
{{/each}}

View File

@ -1,14 +1,14 @@
<div class="backup-options">
{{#if localBackupStorage}}
{{resumable-upload target="/admin/backups/upload" success="uploadSuccess" error="uploadError" uploadText=uploadLabel title="admin.backups.upload.title" class="btn-default"}}
{{resumable-upload target="/admin/backups/upload" success=(route-action "uploadSuccess") error=(route-action "uploadError") uploadText=uploadLabel title="admin.backups.upload.title" class="btn-default"}}
{{else}}
{{backup-uploader done="remoteUploadSuccess"}}
{{backup-uploader done=(route-action "remoteUploadSuccess")}}
{{/if}}
{{#if site.isReadOnly}}
{{d-button class="btn-default" icon="far-eye" action="toggleReadOnlyMode" disabled=status.isOperationRunning title="admin.backups.read_only.disable.title" label="admin.backups.read_only.disable.label"}}
{{d-button class="btn-default" icon="far-eye" action=(action "toggleReadOnlyMode") disabled=status.isOperationRunning title="admin.backups.read_only.disable.title" label="admin.backups.read_only.disable.label"}}
{{else}}
{{d-button class="btn-default" icon="far-eye" action="toggleReadOnlyMode" disabled=status.isOperationRunning title="admin.backups.read_only.enable.title" label="admin.backups.read_only.enable.label"}}
{{d-button class="btn-default" icon="far-eye" action=(action "toggleReadOnlyMode") disabled=status.isOperationRunning title="admin.backups.read_only.enable.title" label="admin.backups.read_only.enable.label"}}
{{/if}}
</div>
<table class="grid">
@ -25,17 +25,17 @@
<td class="backup-controls">
<div>
{{d-button class="btn-default download"
action="download"
action=(action "download")
actionParam=backup
icon="download"
title="admin.backups.operations.download.title"
label="admin.backups.operations.download.label"}}
{{#if status.isOperationRunning}}
{{d-button icon="far-trash-alt" action="destroyBackup" actionParam=backup class="btn-danger" disabled="true" title="admin.backups.operations.is_running"}}
{{d-button icon="play" action="startRestore" actionParam=backup disabled=status.restoreDisabled class="btn-default" title=restoreTitle label="admin.backups.operations.restore.label"}}
{{d-button icon="far-trash-alt" action=(route-action "destroyBackup") actionParam=backup class="btn-danger" disabled="true" title="admin.backups.operations.is_running"}}
{{d-button icon="play" action=(route-action "startRestore") actionParam=backup disabled=status.restoreDisabled class="btn-default" title=restoreTitle label="admin.backups.operations.restore.label"}}
{{else}}
{{d-button icon="far-trash-alt" action="destroyBackup" actionParam=backup class="btn-danger" title="admin.backups.operations.destroy.title"}}
{{d-button icon="play" action="startRestore" actionParam=backup disabled=status.restoreDisabled class="btn-default" title=restoreTitle label="admin.backups.operations.restore.label"}}
{{d-button icon="far-trash-alt" action=(route-action "destroyBackup") actionParam=backup class="btn-danger" title="admin.backups.operations.destroy.title"}}
{{d-button icon="play" action=(route-action "startRestore") actionParam=backup disabled=status.restoreDisabled class="btn-default" title=restoreTitle label="admin.backups.operations.restore.label"}}
{{/if}}
</div>
</td>

View File

@ -7,7 +7,7 @@
{{plugin-outlet name="downloader" tagName=""}}
<div class="admin-actions">
{{#if model.canRollback}}
{{d-button action="rollback"
{{d-button action=(route-action "rollback")
class="btn-default btn-rollback"
label="admin.backups.operations.rollback.label"
title="admin.backups.operations.rollback.title"
@ -15,13 +15,13 @@
disabled=rollbackDisabled}}
{{/if}}
{{#if model.isOperationRunning}}
{{d-button action="cancelOperation"
{{d-button action=(route-action "cancelOperation")
class="btn-danger"
title="admin.backups.operations.cancel.title"
label="admin.backups.operations.cancel.label"
icon="times"}}
{{else}}
{{d-button action="showStartBackupModal"
{{d-button action=(route-action "showStartBackupModal")
class="btn-primary"
title="admin.backups.operations.backup.title"
label="admin.backups.operations.backup.label"

View File

@ -55,7 +55,7 @@
{{#each pages as |pageState|}}
{{d-button
translatedLabel=pageState.page
action="changePage"
action=(action "changePage")
actionParam=pageState.index
class=pageState.class}}
{{/each}}

View File

@ -115,7 +115,7 @@
<div class="modes">
{{#each displayedModes as |displayedMode|}}
{{d-button
action="changeMode"
action=(action "changeMode")
actionParam=displayedMode.mode
class=displayedMode.cssClass
icon=displayedMode.icon}}
@ -178,7 +178,7 @@
<div class="input">
{{d-button
class="btn-default export-csv-btn"
action="exportCsv"
action=(action "exportCsv")
label="admin.export_csv.button_text"
icon="download"}}
</div>
@ -190,7 +190,7 @@
<div class="input">
{{d-button
class="refresh-report-btn btn-primary"
action="refreshReport"
action=(action "refreshReport")
label="admin.dashboard.reports.refresh_report"
icon="refresh"}}
</div>

View File

@ -34,8 +34,8 @@
{{/admin-form-row}}
{{#admin-form-row}}
{{d-button action="save" class="btn-primary" icon="check" label="admin.user_fields.save"}}
{{d-button action="cancel" class="btn-danger" icon="times" label="admin.user_fields.cancel"}}
{{d-button action=(action "save") class="btn-primary" icon="check" label="admin.user_fields.save"}}
{{d-button action=(action "cancel") class="btn-danger" icon="times" label="admin.user_fields.cancel"}}
{{/admin-form-row}}
{{else}}
<div class="row">
@ -46,10 +46,11 @@
</div>
<div class='form-display'>{{fieldName}}</div>
<div class='form-element controls'>
{{d-button action="edit" class="btn-default" icon="pencil" label="admin.user_fields.edit"}}
{{d-button action="destroy" class="btn-danger" icon="trash-o" label="admin.user_fields.delete"}}
{{d-button action="moveUp" class="btn-default" icon="arrow-up" disabled=cantMoveUp}}
{{d-button action="moveDown" class="btn-default" icon="arrow-down" disabled=cantMoveDown}}
{{d-button action=(action "edit") class="btn-default" icon="pencil" label="admin.user_fields.edit"}}
{{d-button action=destroyAction actionParam=userField class="btn-danger" icon="trash-o" label="admin.user_fields.delete"}}
{{d-button action=moveUpAction actionParam=userField class="btn-default" icon="arrow-up" disabled=cantMoveUp}}
{{d-button action=moveDownAction actionParam=userField class="btn-default" icon="arrow-down" disabled=cantMoveDown}}
</div>
</div>
<div class="row">{{flags}}</div>

View File

@ -5,13 +5,13 @@
<div class="col timestamp">{{createdAt}}</div>
<div class="col completion">{{completion}}</div>
<div class="col actions">
{{d-button icon='ellipsis-v' action='toggleRequest' label='admin.web_hooks.events.request'}}
{{d-button icon='ellipsis-v' action='toggleResponse' label='admin.web_hooks.events.response'}}
{{d-button icon='refresh' action='redeliver' label='admin.web_hooks.events.redeliver'}}
{{d-button icon="ellipsis-v" action=(action "toggleRequest") label="admin.web_hooks.events.request"}}
{{d-button icon="ellipsis-v" action=(action "toggleResponse") label="admin.web_hooks.events.response"}}
{{d-button icon="refresh" action=(action "redeliver") label="admin.web_hooks.events.redeliver"}}
</div>
{{#if expandDetails}}
<div class="details">
<h3>{{i18n 'admin.web_hooks.events.headers'}}</h3>
<h3>{{i18n "admin.web_hooks.events.headers"}}</h3>
<pre><code>{{headers}}</code></pre>
<h3>{{bodyLabel}}</h3>
<pre><code>{{body}}</code></pre>

View File

@ -1,23 +1,23 @@
{{#if editing}}
<td class="editing-input">
<div class="label">{{i18n "admin.embedding.host"}}</div>
{{input value=buffered.host placeholder="example.com" enter="save" class="host-name"}}
{{input value=buffered.host placeholder="example.com" enter=(action "save") class="host-name"}}
</td>
<td class="editing-input">
<div class="label">{{i18n "admin.embedding.class_name"}}</div>
{{input value=buffered.class_name placeholder="class" enter="save" class="class-name"}}
{{input value=buffered.class_name placeholder="class" enter=(action "save") class="class-name"}}
</td>
<td class="editing-input">
<div class="label">{{i18n "admin.embedding.path_whitelist"}}</div>
{{input value=buffered.path_whitelist placeholder="/blog/.*" enter="save" class="path-whitelist"}}
{{input value=buffered.path_whitelist placeholder="/blog/.*" enter=(action "save") class="path-whitelist"}}
</td>
<td class="editing-input">
<div class="label">{{i18n "admin.embedding.category"}}</div>
{{category-chooser value=categoryId class="small"}}
</td>
<td class="editing-controls">
{{d-button icon="check" action="save" class="btn-primary" disabled=cantSave}}
{{d-button icon="times" action="cancel" class="btn-danger" disabled=host.isSaving}}
{{d-button icon="check" action=(action "save") class="btn-primary" disabled=cantSave}}
{{d-button icon="times" action=(action "cancel") class="btn-danger" disabled=host.isSaving}}
</td>
{{else}}
<td><div class="label">{{i18n "admin.embedding.host"}}</div>{{host.host}}</td>
@ -25,7 +25,7 @@
<td><div class="label">{{i18n "admin.embedding.path_whitelist"}}</div>{{host.path_whitelist}}</td>
<td><div class="label">{{i18n "admin.embedding.category"}}</div>{{category-badge host.category}}</td>
<td class="controls">
{{d-button icon="pencil" action="edit"}}
{{d-button icon="trash-o" action="delete" class='btn-danger'}}
{{d-button icon="pencil" action=(action "edit")}}
{{d-button icon="trash-o" action=(action "delete") class='btn-danger'}}
</td>
{{/if}}
{{/if}}

View File

@ -78,14 +78,14 @@
{{d-button
title="admin.flags.disagree_flag_unhide_post_title"
class="btn-default disagree-flag"
action="disagree"
action=(action "disagree")
icon="thumbs-o-down"
label="admin.flags.disagree_flag_unhide_post"}}
{{else}}
{{d-button
title="admin.flags.disagree_flag_title"
class="btn-default disagree-flag"
action="disagree"
action=(action "disagree")
icon="thumbs-o-down"
label="admin.flags.disagree_flag"}}
{{/if}}
@ -93,7 +93,7 @@
{{d-button
class="btn-default defer-flag"
title="admin.flags.ignore_flag_title"
action="defer"
action=(action "defer")
icon="external-link"
label="admin.flags.ignore_flag"}}

View File

@ -3,6 +3,6 @@
{{label}}
</label>
{{#if changed}}
{{d-button action="finished" class="btn-primary btn-small submit-edit" icon="check"}}
{{d-button action="cancelled" class="btn-small cancel-edit" icon="times"}}
{{d-button action=(action "finished") class="btn-primary btn-small submit-edit" icon="check"}}
{{d-button action=(action "cancelled") class="btn-small cancel-edit" icon="times"}}
{{/if}}

View File

@ -2,4 +2,4 @@
{{text-field value=url disabled=formSubmitted class="permalink-url" placeholderKey="admin.permalink.url" autocorrect="off" autocapitalize="off"}}
{{combo-box content=permalinkTypes value=permalinkType}}
{{text-field value=permalink_type_value disabled=formSubmitted class="external-url" placeholderKey=permalinkTypePlaceholder autocorrect="off" autocapitalize="off"}}
{{d-button class="btn-default" action="submit" disabled=formSubmitted label="admin.permalink.form.add"}}
{{d-button class="btn-default" action=(action "submit") disabled=formSubmitted label="admin.permalink.form.add"}}

View File

@ -1,4 +1,4 @@
{{d-button action="saveChanges" disabled=buttonDisabled label=savingText class="btn-primary save-changes"}}
{{d-button action=action disabled=buttonDisabled label=savingText class="btn-primary save-changes"}}
{{yield}}
<div class='save-messages'>
{{#if saved}}

View File

@ -1,4 +1,4 @@
<b>{{i18n 'admin.logs.screened_ips.form.label'}}</b>
{{text-field value=ip_address disabled=formSubmitted class="ip-address-input" placeholderKey="admin.logs.screened_ips.form.ip_address" autocorrect="off" autocapitalize="off"}}
{{combo-box content=actionNames value=actionName}}
{{d-button class="btn-default" action="submit" disabled=formSubmitted label="admin.logs.screened_ips.form.add"}}
{{d-button class="btn-default" action=(action "submit") disabled=formSubmitted label="admin.logs.screened_ips.form.add"}}

View File

@ -2,7 +2,7 @@
<div class="values">
{{#each collection as |value index|}}
<div class="value" data-index={{index}}>
{{d-button action="removeValue"
{{d-button action=(action "removeValue")
actionParam=value
icon="times"
class="remove-value-btn btn-small"}}
@ -16,7 +16,7 @@
<div class="value">
{{text-field value=newKey class="new-value-input key" placeholder=setting.placeholder.key}}
{{input type="password" value=newSecret class="new-value-input secret" placeholder=setting.placeholder.value}}
{{d-button action="addValue"
{{d-button action=(action "addValue")
icon="plus"
class="add-value-btn btn-small"}}
</div>

View File

@ -6,12 +6,12 @@
</div>
{{#if dirty}}
<div class='setting-controls'>
{{d-button class="ok" action="save" icon="check"}}
{{d-button class="cancel" action="cancel" icon="times"}}
{{d-button class="ok" action=(action "save") icon="check"}}
{{d-button class="cancel" action=(action "cancel") icon="times"}}
</div>
{{else if setting.overridden}}
{{#if setting.secret}}
{{d-button action="toggleSecret" icon="eye-slash"}}
{{d-button action=(action "toggleSecret") icon="eye-slash"}}
{{/if}}
{{d-button class="btn-default undo" action="resetDefault" icon="undo" label="admin.settings.reset"}}
{{d-button class="btn-default undo" action=(action "resetDefault") icon="undo" label="admin.settings.reset"}}
{{/if}}

View File

@ -1,2 +1,2 @@
{{d-button label="admin.site_settings.uploaded_image_list.label" action="showUploadModal" actionParam=(hash value=value setting=setting)}}
{{d-button label="admin.site_settings.uploaded_image_list.label" action=(action "showUploadModal") actionParam=(hash value=value setting=setting)}}
<div class='desc'>{{{unbound setting.description}}}</div>

View File

@ -1,4 +1,4 @@
{{d-button label="admin.site_text.edit" class='btn-default edit' action="edit"}}
{{d-button label="admin.site_text.edit" class='btn-default edit' action=editAction actionParam=siteText}}
<h3 class='site-text-id'>{{siteText.id}}</h3>
<div class='site-text-value'>{{siteText.value}}</div>

View File

@ -1,6 +1,6 @@
<label class="btn {{if addDisabled 'disabled'}}">
{{d-icon "upload"}}
{{i18n 'admin.watched_words.form.upload'}}
<input class="hidden-upload-field" disabled={{addDisabled}} type="file" accept="text/plain,text/csv" />
</label>
<span class="instructions">{{i18n 'tagging.upload_instructions'}}</span>
<label class="btn {{if addDisabled 'disabled'}}">
{{d-icon "upload"}}
{{i18n 'admin.watched_words.form.upload'}}
<input class="hidden-upload-field" disabled={{addDisabled}} type="file" accept="text/plain,text/csv" />
</label>
<span class="instructions">{{i18n 'tagging.upload_instructions'}}</span>

View File

@ -2,7 +2,7 @@
<div class='values'>
{{#each collection as |value index|}}
<div class='value' data-index={{index}}>
{{d-button action="removeValue"
{{d-button action=(action "removeValue")
actionParam=value
icon="times"
class="btn-default remove-value-btn btn-small"}}

View File

@ -1,6 +1,6 @@
<b>{{i18n 'admin.watched_words.form.label'}}</b>
{{text-field value=word disabled=formSubmitted class="watched-word-input" autocorrect="off" autocapitalize="off" placeholderKey=placeholderKey}}
{{d-button class="btn-default" action="submit" disabled=formSubmitted label="admin.watched_words.form.add"}}
{{d-button class="btn-default" action=(action "submit") disabled=formSubmitted label="admin.watched_words.form.add"}}
{{#if showMessage}}
<span class="success-message">{{message}}</span>

View File

@ -10,9 +10,9 @@
<label>{{i18n "admin.customize.email_templates.body"}}</label>
{{d-editor value=buffered.body}}
{{#save-controls model=emailTemplate action="saveChanges" saved=saved}}
{{#save-controls model=emailTemplate action=(action "saveChanges") saved=saved}}
{{#if emailTemplate.can_revert}}
{{d-button action="revertChanges" label="admin.customize.email_templates.revert"}}
{{d-button action=(action "revertChanges") label="admin.customize.email_templates.revert"}}
{{/if}}
{{/save-controls}}
</div>

View File

@ -69,7 +69,7 @@
</div>
<div class='buttons'>
{{#d-button action="save" disabled=saveDisabled class='btn-primary'}}
{{#d-button action=(action "save") disabled=saveDisabled class='btn-primary'}}
{{saveButtonText}}
{{/d-button}}
</div>

View File

@ -2,8 +2,8 @@
<div class="title">
{{#if editingName}}
{{text-field value=model.name autofocus="true"}}
{{d-button action="finishedEditingName" class="btn-primary btn-small submit-edit" icon="check"}}
{{d-button action="cancelEditingName" class="btn-small cancel-edit" icon="times"}}
{{d-button action=(action "finishedEditingName") class="btn-primary submit-edit" icon="check"}}
{{d-button action=(action "cancelEditingName") class="btn-default cancel-edit" icon="times"}}
{{else}}
{{model.name}} <a {{action "startEditingName"}}>{{d-icon "pencil"}}</a>
{{/if}}
@ -36,8 +36,8 @@
{{#unless model.component}}
<div class="control-unit">
{{inline-edit-checkbox action="applyDefault" labelKey="admin.customize.theme.is_default" checked=model.default}}
{{inline-edit-checkbox action="applyUserSelectable" labelKey="admin.customize.theme.user_selectable" checked=model.user_selectable}}
{{inline-edit-checkbox action=(action "applyDefault") labelKey="admin.customize.theme.is_default" checked=model.default}}
{{inline-edit-checkbox action=(action "applyUserSelectable") labelKey="admin.customize.theme.user_selectable" checked=model.user_selectable}}
</div>
<div class="control-unit">
@ -49,8 +49,8 @@
value=colorSchemeId
icon="paint-brush"}}
{{#if colorSchemeChanged}}
{{d-button action="changeScheme" class="btn-primary btn-small submit-edit" icon="check"}}
{{d-button action="cancelChangeScheme" class="btn-default btn-small cancel-edit" icon="times"}}
{{d-button action=(action "changeScheme") class="btn-primary submit-edit" icon="check"}}
{{d-button action=(action "cancelChangeScheme") class="btn-default cancel-edit" icon="times"}}
{{/if}}
</div>
{{#link-to 'adminCustomize.colors' class="btn btn-default edit"}}{{i18n 'admin.customize.colors.edit'}}{{/link-to}}
@ -74,13 +74,13 @@
{{#if model.remote_theme}}
{{#if model.remote_theme.commits_behind}}
{{#d-button action="updateToLatest" icon="download" class='btn-primary'}}{{i18n "admin.customize.theme.update_to_latest"}}{{/d-button}}
{{#d-button action=(action "updateToLatest") icon="download" class='btn-primary'}}{{i18n "admin.customize.theme.update_to_latest"}}{{/d-button}}
{{else}}
{{#d-button action="checkForThemeUpdates" icon="refresh" class="btn-default"}}{{i18n "admin.customize.theme.check_for_updates"}}{{/d-button}}
{{#d-button action=(action "checkForThemeUpdates") icon="refresh" class="btn-default"}}{{i18n "admin.customize.theme.check_for_updates"}}{{/d-button}}
{{/if}}
{{/if}}
{{#d-button action="editTheme" class="btn btn-default edit"}}{{i18n 'admin.customize.theme.edit_css_html'}}{{/d-button}}
{{#d-button action=(action "editTheme") class="btn btn-default edit"}}{{i18n 'admin.customize.theme.edit_css_html'}}{{/d-button}}
{{#if model.remote_theme}}
<span class='status-message'>
{{#if updatingRemote}}
@ -119,7 +119,7 @@
<li>
<span class='col'>${{upload.name}}: <a href={{upload.url}} target='_blank'>{{upload.filename}}</a></span>
<span class='col'>
{{d-button action="removeUpload" actionParam=upload class="second btn-default btn-small cancel-edit" icon="times"}}
{{d-button action=(action "removeUpload") actionParam=upload class="second btn-default btn-default cancel-edit" icon="times"}}
</span>
</li>
{{/each}}
@ -127,7 +127,7 @@
{{else}}
<div class="description">{{i18n "admin.customize.theme.no_uploads"}}</div>
{{/if}}
{{#d-button action="addUploadModal" class="btn-default" icon="plus"}}{{i18n "admin.customize.theme.add"}}{{/d-button}}
{{#d-button action=(action "addUploadModal") class="btn-default" icon="plus"}}{{i18n "admin.customize.theme.add"}}{{/d-button}}
</div>
{{#if hasSettings}}
@ -147,14 +147,14 @@
{{#if model.childThemes.length}}
<ul class='removable-list'>
{{#each model.childThemes as |child|}}
<li>{{#link-to 'adminCustomizeThemes.show' child replace=true class='col'}}{{child.name}}{{/link-to}} {{d-button action="removeChildTheme" actionParam=child class="btn-default btn-small cancel-edit col" icon="times"}}</li>
<li>{{#link-to 'adminCustomizeThemes.show' child replace=true class='col'}}{{child.name}}{{/link-to}} {{d-button action=(action "removeChildTheme") actionParam=child class="btn-default cancel-edit col" icon="times"}}</li>
{{/each}}
</ul>
{{/if}}
{{#if selectableChildThemes}}
<div class="description">
{{combo-box forceEscape=true filterable=true content=selectableChildThemes value=selectedChildThemeId none="admin.customize.theme.select_component"}}
{{#d-button action="addChildTheme" icon="plus" disabled=addButtonDisabled class="btn-default add-component-button"}}{{i18n "admin.customize.theme.add"}}{{/d-button}}
{{#d-button action=(action "addChildTheme") icon="plus" disabled=addButtonDisabled class="btn-default add-component-button"}}{{i18n "admin.customize.theme.add"}}{{/d-button}}
</div>
{{/if}}
</div>
@ -163,6 +163,6 @@
<a href='{{previewUrl}}' title="{{i18n 'admin.customize.explain_preview'}}" target='_blank' class='btn btn-default'>{{d-icon 'desktop'}}{{i18n 'admin.customize.theme.preview'}}</a>
<a class="btn btn-default export" target="_blank" href={{downloadUrl}}>{{d-icon "download"}} {{i18n 'admin.export_json.button_text'}}</a>
{{d-button action="switchType" label="admin.customize.theme.convert" icon=convertIcon class="btn-default btn-normal" title=convertTooltip}}
{{d-button action="destroy" label="admin.customize.delete" icon="trash" class="btn-danger"}}
{{d-button action=(action "switchType") label="admin.customize.theme.convert" icon=convertIcon class="btn-default btn-normal" title=convertTooltip}}
{{d-button action=(action "destroy") label="admin.customize.delete" icon="trash" class="btn-danger"}}
</div>

View File

@ -3,8 +3,8 @@
<div class="create-actions">
{{d-button label="admin.customize.new" icon="plus" action="showCreateModal" class="btn-primary"}}
{{d-button action="importModal" icon="upload" label="admin.customize.import" class="btn-default"}}
{{d-button label="admin.customize.new" icon="plus" action=(route-action "showCreateModal") class="btn-primary"}}
{{d-button action=(route-action "importModal") icon="upload" label="admin.customize.import" class="btn-default"}}
</div>
</div>
{{themes-list themes=fullThemes components=childThemes currentTab=currentTab}}

View File

@ -18,8 +18,8 @@
</div>
<p class="actions">
<small>{{i18n 'admin.dashboard.last_checked'}}: {{problemsTimestamp}}</small>
{{d-button action="refreshProblems" class="btn-default btn-small" icon="refresh" label="admin.dashboard.refresh_problems"}}
{{d-button action=(action "refreshProblems") class="btn-default" icon="refresh" label="admin.dashboard.refresh_problems"}}
{{i18n 'admin.dashboard.last_checked'}}: {{problemsTimestamp}}
</p>
{{/conditional-loading-section}}
</div>

View File

@ -9,7 +9,7 @@
{{i18n "admin.dashboard.community_health"}}
</a>
</h2>
{{period-chooser period=period action="changePeriod" content=availablePeriods fullDay=true}}
{{period-chooser period=period action=(action "changePeriod") content=availablePeriods fullDay=true}}
</div>
<div class="section-body">

View File

@ -10,7 +10,7 @@
</h2>
{{period-chooser
period=period
action="changePeriod"
action=(action "changePeriod")
content=availablePeriods
fullDay=true}}
</div>

View File

@ -1,4 +1,4 @@
{{#load-more selector=".email-list tr" action="loadMore"}}
{{#load-more selector=".email-list tr" action=(action "loadMore")}}
<table class='table email-list'>
<thead>
<tr>

View File

@ -1,4 +1,4 @@
{{#load-more selector=".email-list tr" action="loadMore"}}
{{#load-more selector=".email-list tr" action=(action "loadMore")}}
<table class='table email-list'>
<thead>
<tr>

View File

@ -1,4 +1,4 @@
{{#load-more selector=".email-list tr" action="loadMore"}}
{{#load-more selector=".email-list tr" action=(action "loadMore")}}
<table class='table email-list'>
<thead>
<tr>

View File

@ -1,4 +1,4 @@
{{#load-more selector=".email-list tr" action="loadMore"}}
{{#load-more selector=".email-list tr" action=(action "loadMore")}}
<table class='table email-list'>
<thead>
<tr>

View File

@ -1,4 +1,4 @@
{{#load-more selector=".email-list tr" action="loadMore"}}
{{#load-more selector=".email-list tr" action=(action "loadMore")}}
<table class='table email-list'>
<thead>
<tr>

View File

@ -10,7 +10,7 @@
</thead>
<tbody>
{{#each embedding.embeddable_hosts as |host|}}
{{embeddable-host host=host deleteHost="deleteHost"}}
{{embeddable-host host=host deleteHost=(action "deleteHost")}}
{{/each}}
</tbody>
</table>
@ -18,7 +18,7 @@
<p>{{i18n "admin.embedding.get_started"}}</p>
{{/if}}
{{d-button label="admin.embedding.add_host" action="addHost" icon="plus" class="btn-primary add-host"}}
{{d-button label="admin.embedding.add_host" action=(action "addHost") icon="plus" class="btn-primary add-host"}}
</div>
{{#if showSecondary}}
@ -69,7 +69,7 @@
<div class='embedding-secondary'>
{{d-button label="admin.embedding.save"
action="saveChanges"
action=(action "saveChanges")
class="btn-primary embed-save"
disabled=embedding.isSaving}}

View File

@ -3,7 +3,7 @@
<p class="desc">{{i18n 'admin.emoji.help'}}</p>
<p>{{emoji-uploader done="emojiUploaded"}}</p>
<p>{{emoji-uploader done=(action "emojiUploaded")}}</p>
{{#if sortedEmojis}}
<div>

View File

@ -16,7 +16,10 @@
{{plugin-outlet name="flagged-topic-row" noTags=true args=(hash topic=ft.topic)}}
<td class="topic-title">
<a href={{ft.topic.relative_url}} target="_blank">{{replace-emoji ft.topic.fancy_title}}</a>
<div class='combined-title'>
{{topic-status topic=ft.topic}}
<a href={{ft.topic.relative_url}} target="_blank">{{replace-emoji ft.topic.fancy_title}}</a>
</div>
</td>
<td class="flag-counts">
{{#each ft.flag_counts as |fc|}}

View File

@ -30,7 +30,7 @@
<td class="created_at"><div class="label">{{i18n 'admin.logs.created_at'}}</div>{{age-with-tooltip item.created_at}}</td>
<td class="ip_address">{{item.ip_address}}</td>
<td class="action">
{{d-button action="clearBlock" actionParam=item icon="check" label="admin.logs.screened_emails.actions.allow"}}
{{d-button action=(action "clearBlock") actionParam=item icon="check" label="admin.logs.screened_emails.actions.allow"}}
</td>
</tr>
{{/each}}

View File

@ -3,10 +3,10 @@
<div class="screened-ip-controls">
<div class="filter-screened-ip-address">
{{text-field value=filter class="ip-address-input" placeholderKey="admin.logs.screened_ips.form.filter" autocorrect="off" autocapitalize="off"}}
{{d-button class="btn-default" action="rollUp" title="admin.logs.screened_ips.roll_up.title" label="admin.logs.screened_ips.roll_up.text"}}
{{d-button class="btn-default" action="exportScreenedIpList" icon="download" title="admin.export_csv.button_title.screened_ip" label="admin.export_csv.button_text"}}
{{d-button class="btn-default" action=(action "rollUp") title="admin.logs.screened_ips.roll_up.title" label="admin.logs.screened_ips.roll_up.text"}}
{{d-button class="btn-default" action=(action "exportScreenedIpList") icon="download" title="admin.export_csv.button_title.screened_ip" label="admin.export_csv.button_text"}}
</div>
{{screened-ip-address-form action="recordAdded"}}
{{screened-ip-address-form action=(action "recordAdded")}}
</div>
@ -57,15 +57,15 @@
</td>
<td class="col actions">
{{#unless item.editing}}
{{d-button class="btn-default" action="destroy" actionParam=item icon="trash-o" class="btn-danger"}}
{{d-button class="btn-default"action="edit" actionParam=item icon="pencil"}}
{{d-button class="btn-default" action=(action "destroy") actionParam=item icon="trash-o" class="btn-danger"}}
{{d-button class="btn-default"action=(action "edit") actionParam=item icon="pencil"}}
{{#if item.isBlocked}}
{{d-button class="btn-default" action="allow" actionParam=item icon="check" label="admin.logs.screened_ips.actions.do_nothing"}}
{{d-button class="btn-default" action=(action "allow") actionParam=item icon="check" label="admin.logs.screened_ips.actions.do_nothing"}}
{{else}}
{{d-button class="btn-default" action="block" actionParam=item icon="ban" label="admin.logs.screened_ips.actions.block"}}
{{d-button class="btn-default" action=(action "block") actionParam=item icon="ban" label="admin.logs.screened_ips.actions.block"}}
{{/if}}
{{else}}
{{d-button class="btn-default" action="save" actionParam=item label="admin.logs.save"}}
{{d-button class="btn-default" action=(action "save") actionParam=item label="admin.logs.save"}}
<a {{action "cancel" item}}>{{i18n 'cancel'}}</a>
{{/unless}}
</td>

View File

@ -33,7 +33,7 @@
{{i18n "admin.logs.staff_actions.filter"}} {{combo-box content=userHistoryActions value=filterActionId none="admin.logs.staff_actions.all"}}
{{/if}}
{{d-button class="btn-default" action="exportStaffActionLogs" label="admin.export_csv.button_text" icon="download"}}
{{d-button class="btn-default" action=(action "exportStaffActionLogs") label="admin.export_csv.button_text" icon="download"}}
</div>
<div class="clearfix"></div>

View File

@ -17,6 +17,6 @@
{{/d-modal-body}}
<div class="modal-footer">
{{d-button action="upload" disabled=disabled class='btn btn-primary' icon='upload' label='admin.customize.theme.upload'}}
{{d-modal-cancel close=(action "closeModal")}}
{{d-button action=(action "upload") disabled=disabled class='btn btn-primary' icon='upload' label='admin.customize.theme.upload'}}
{{d-modal-cancel close=(route-action "closeModal")}}
</div>

View File

@ -25,6 +25,6 @@
{{/d-modal-body}}
<div class="modal-footer">
{{d-button class="btn btn-primary" label="admin.customize.theme.create" action="createTheme" disabled=saving}}
{{d-modal-cancel close=(action "closeModal")}}
{{d-button class="btn btn-primary" label="admin.customize.theme.create" action=(action "createTheme") disabled=saving}}
{{d-modal-cancel close=(route-action "closeModal")}}
</div>

View File

@ -26,5 +26,5 @@
<div class="modal-footer">
<button class='btn btn-primary' {{action "saveAll"}} disabled={{submitDisabled}}>{{i18n 'admin.badges.save'}}</button>
{{d-modal-cancel close=(action "closeModal")}}
{{d-modal-cancel close=(route-action "closeModal")}}
</div>

View File

@ -44,6 +44,6 @@
{{/d-modal-body}}
<div class="modal-footer">
{{d-button action="importTheme" disabled=importDisabled class='btn btn-primary' icon='upload' label='admin.customize.import'}}
{{d-modal-cancel close=(action "closeModal")}}
{{d-button action=(action "importTheme") disabled=importDisabled class='btn btn-primary' icon='upload' label='admin.customize.import'}}
{{d-modal-cancel close=(route-action "closeModal")}}
</div>

View File

@ -19,5 +19,5 @@
{{/conditional-loading-spinner}}
{{/d-modal-body}}
<div class="modal-footer">
{{d-button action=(action "closeModal") label="close"}}
{{d-button action=(route-action "closeModal") label="close"}}
</div>

View File

@ -27,10 +27,10 @@
<div class="modal-footer">
{{d-button
class="btn-danger perform-silence"
action="silence"
action=(action "silence")
disabled=submitDisabled
icon="microphone-slash"
label="admin.user.silence"}}
{{d-modal-cancel close=(action "closeModal")}}
{{d-modal-cancel close=(route-action "closeModal")}}
{{conditional-loading-spinner condition=loading size="small"}}
</div>

View File

@ -2,5 +2,5 @@
<pre>{{model.details}}</pre>
{{/d-modal-body}}
<div class="modal-footer">
{{d-button action=(action "closeModal") label="close"}}
{{d-button action=(route-action "closeModal") label="close"}}
</div>

View File

@ -34,10 +34,10 @@
<div class="modal-footer">
{{d-button
class="btn-danger perform-suspend"
action="suspend"
action=(action "suspend")
disabled=submitDisabled
icon="ban"
label="admin.user.suspend"}}
{{d-modal-cancel close=(action "closeModal")}}
{{d-modal-cancel close=(route-action "closeModal")}}
{{conditional-loading-spinner condition=loading size="small"}}
</div>

View File

@ -3,6 +3,6 @@
{{{diff}}}
{{/d-modal-body}}
<div class="modal-footer">
<button class='btn btn-primary' {{action "closeModal"}}>{{i18n 'close'}}</button>
{{d-button class="btn btn-primary" action=(route-action "closeModal") label="close"}}
</div>
</div>

View File

@ -11,5 +11,5 @@
{{/d-modal-body}}
<div class="modal-footer">
{{d-button action=(action "close") label="close"}}
{{images-uploader uploading=uploading done="uploadDone" class="pull-right"}}
{{images-uploader uploading=uploading done=(action "uploadDone") class="pull-right"}}
</div>

View File

@ -4,7 +4,7 @@
<div class="permalink-search">
{{text-field value=filter class="url-input" placeholderKey="admin.permalink.form.filter" autocorrect="off" autocapitalize="off"}}
</div>
{{permalink-form action="recordAdded"}}
{{permalink-form action=(action "recordAdded")}}
<br/>
{{#conditional-loading-spinner condition=loading}}
@ -42,7 +42,7 @@
{{/if}}
</td>
<td class="col action">
{{d-button action="destroy" actionParam=pl icon="trash-o" class="btn-danger"}}
{{d-button action=(action "destroy") actionParam=pl icon="trash-o" class="btn-danger"}}
</td>
</tr>
{{/each}}

View File

@ -49,7 +49,7 @@
<td class="settings">
{{#if currentUser.admin}}
{{#if plugin.enabled_setting}}
{{d-button class="btn-default" action="showSettings" actionParam=plugin icon="gear" label="admin.plugins.change_settings_short"}}
{{d-button class="btn-default" action=(route-action "showSettings") actionParam=plugin icon="gear" label="admin.plugins.change_settings_short"}}
{{/if}}
{{/if}}
</td>

View File

@ -1,16 +1,16 @@
<div class='admin-controls'>
<div class='controls'>
{{d-button action="toggleMenu" class="menu-toggle" icon="bars"}}
{{d-button action=(action "toggleMenu") class="menu-toggle" icon="bars"}}
{{#if currentUser.admin}}
{{d-button label="admin.plugins.change_settings"
icon="gear"
class="btn-default settings-button"
action="showSettings"}}
action=(route-action "showSettings")}}
{{/if}}
</div>
</div>
<div class="admin-nav pull-left">

View File

@ -1,9 +1,9 @@
<div class='admin-controls'>
<div class='controls'>
{{d-button action="toggleMenu" class="menu-toggle" icon="bars"}}
{{d-button action=(action "toggleMenu") class="menu-toggle" icon="bars"}}
{{text-field id="setting-filter" value=filter placeholderKey="type_to_filter" class="no-blur"}}
{{d-button class="btn-default" id="clear-filter" action="clearFilter" label="admin.site_settings.clear_filter"}}
{{d-button class="btn-default" id="clear-filter" action=(action "clearFilter") label="admin.site_settings.clear_filter"}}
</div>
<div class='search controls'>
<label>

View File

@ -6,9 +6,9 @@
{{expanding-text-area value=buffered.value rows="1" class="site-text-value"}}
{{#save-controls model=siteText action="saveChanges" saved=saved}}
{{#save-controls model=siteText action=(action "saveChanges") saved=saved}}
{{#if siteText.can_revert}}
{{d-button action="revertChanges" label="admin.site_text.revert" class="revert-site-text"}}
{{d-button action=(action "revertChanges") label="admin.site_text.revert" class="revert-site-text"}}
{{/if}}
{{/save-controls}}

View File

@ -5,10 +5,10 @@
placeholderKey="admin.site_text.search"
class="no-blur site-text-search"
autofocus="true"
key-up="search"}}
key-up=(action "search")}}
<div class='extra-options'>
{{d-checkbox label="admin.site_text.show_overriden" checked=overridden change="search"}}
{{d-checkbox label="admin.site_text.show_overriden" checked=overridden change=(action "search")}}
</div>
</div>
@ -18,6 +18,6 @@
{{/if}}
{{#each siteTexts as |siteText|}}
{{site-text-summary siteText=siteText editAction="edit" term=q searchRegex=siteTexts.extras.regex}}
{{site-text-summary siteText=siteText editAction=(action "edit") term=q searchRegex=siteTexts.extras.regex}}
{{/each}}
{{/conditional-loading-spinner}}

View File

@ -9,15 +9,15 @@
fieldTypes=fieldTypes
firstField=sortedFields.firstObject
lastField=sortedFields.lastObject
destroyAction="destroy"
moveUpAction="moveUp"
moveDownAction="moveDown"}}
destroyAction=(action "destroy")
moveUpAction=(action "moveUp")
moveDownAction=(action "moveDown")}}
{{/each}}
{{/if}}
{{d-button disabled=createDisabled
class="btn-primary"
action="createField"
action=(action "createField")
label="admin.user_fields.create"
icon="plus"}}

View File

@ -8,11 +8,11 @@
{{/if}}
{{#if model.can_view_action_logs}}
{{d-button action="viewActionLogs" class="btn-default" actionParam=model.username icon="list-alt" label="admin.user.action_logs"}}
{{d-button action=(action "viewActionLogs") class="btn-default" actionParam=model.username icon="list-alt" label="admin.user.action_logs"}}
{{/if}}
{{#if model.active}}
{{#if currentUser.admin}}
{{d-button class="btn-default" action="logOut" icon="power-off" label="admin.user.log_out"}}
{{d-button class="btn-default" action=(action "logOut") icon="power-off" label="admin.user.log_out"}}
{{/if}}
{{/if}}
{{plugin-outlet name="admin-user-controls-after" args=(hash model=model) tagName="" connectorTagName=""}}
@ -44,7 +44,7 @@
{{#if model.email}}
<a href="mailto:{{unbound model.email}}">{{model.email}}</a>
{{else}}
{{d-button class="btn-default" action="checkEmail" actionParam=model icon="envelope-o" label="admin.users.check_email.text" title="admin.users.check_email.title"}}
{{d-button class="btn-default" action=(route-action "checkEmail") actionParam=model icon="envelope-o" label="admin.users.check_email.text" title="admin.users.check_email.title"}}
{{/if}}
</div>
</div>
@ -64,7 +64,7 @@
{{i18n 'user.email.no_secondary'}}
{{/if}}
{{else}}
{{d-button action="checkEmail"
{{d-button action=(route-action "checkEmail")
class="btn-default"
actionParam=model
icon="envelope-o"
@ -79,7 +79,7 @@
<div class='value'>{{model.bounceScore}}</div>
<div class='controls'>
{{#if model.canResetBounceScore}}
{{d-button class="btn-default" action="resetBounceScore" label="admin.user.reset_bounce_score.label" title="admin.user.reset_bounce_score.title"}}
{{d-button class="btn-default" action=(action "resetBounceScore") label="admin.user.reset_bounce_score.label" title="admin.user.reset_bounce_score.title"}}
{{/if}}
{{model.bounceScoreExplanation}}
</div>
@ -91,7 +91,7 @@
{{#if associatedAccountsLoaded}}
{{associatedAccounts}}
{{else}}
{{d-button class="btn-default" action="checkEmail" actionParam=model icon="envelope-o" label="admin.users.check_email.text" title="admin.users.check_email.title"}}
{{d-button class="btn-default" action=(route-action "checkEmail") actionParam=model icon="envelope-o" label="admin.users.check_email.text" title="admin.users.check_email.title"}}
{{/if}}
</div>
</div>
@ -117,7 +117,7 @@
<div class='value'>{{model.ip_address}}</div>
<div class='controls'>
{{#if currentUser.staff}}
{{d-button class="btn-default" action="refreshBrowsers" label="admin.user.refresh_browsers"}}
{{d-button class="btn-default" action=(action "refreshBrowsers") label="admin.user.refresh_browsers"}}
{{ip-lookup ip=model.ip_address userId=model.id}}
{{/if}}
</div>
@ -156,7 +156,7 @@
</div>
<div class='controls'>
{{#if canDisableSecondFactor}}
{{d-button class="btn-default" action="disableSecondFactor" icon="unlock-alt" label="user.second_factor.disable"}}
{{d-button class="btn-default" action=(action "disableSecondFactor") icon="unlock-alt" label="user.second_factor.disable"}}
{{/if}}
</div>
</div>
@ -201,7 +201,7 @@
{{i18n 'admin.user.approve_success'}}
{{else}}
{{#if model.can_approve}}
{{d-button class="btn-default" action="approve" icon="check" label="admin.user.approve"}}
{{d-button class="btn-default" action=(action "approve") icon="check" label="admin.user.approve"}}
{{/if}}
{{/if}}
</div>
@ -214,15 +214,15 @@
<div class='controls'>
{{#if model.active}}
{{#if model.can_deactivate}}
{{d-button class="btn-default" action="deactivate" label="admin.user.deactivate_account"}}
{{d-button class="btn-default" action=(action "deactivate") label="admin.user.deactivate_account"}}
{{i18n 'admin.user.deactivate_explanation'}}
{{/if}}
{{else}}
{{#if model.can_send_activation_email}}
{{d-button class="btn-default" action="sendActivationEmail" icon="envelope" label="admin.user.send_activation_email"}}
{{d-button class="btn-default" action=(action "sendActivationEmail") icon="envelope" label="admin.user.send_activation_email"}}
{{/if}}
{{#if model.can_activate}}
{{d-button class="btn-default" action="activate" icon="check" label="admin.user.activate"}}
{{d-button class="btn-default" action=(action "activate") icon="check" label="admin.user.activate"}}
{{/if}}
{{/if}}
</div>
@ -240,15 +240,15 @@
{{#if model.api_key}}
<div class='long-value'>
{{model.api_key.key}}
{{d-button class="btn-default" action="regenerateApiKey" icon="undo" label="admin.api.regenerate"}}
{{d-button class="btn-default" action="revokeApiKey" icon="times" label="admin.api.revoke"}}
{{d-button class="btn-default" action=(action "regenerateApiKey") icon="undo" label="admin.api.regenerate"}}
{{d-button class="btn-default" action=(action "revokeApiKey") icon="times" label="admin.api.revoke"}}
</div>
{{else}}
<div class='value'>
&mdash;
</div>
<div class='controls'>
{{d-button class="btn-default" action="generateApiKey" icon="key" label="admin.api.generate"}}
{{d-button class="btn-default" action=(action "generateApiKey") icon="key" label="admin.api.generate"}}
</div>
{{/if}}
</div>
@ -259,10 +259,10 @@
<div class='value'>{{i18n-yes-no model.admin}}</div>
<div class='controls'>
{{#if model.can_revoke_admin}}
{{d-button class="btn-default" action="revokeAdmin" icon="shield" label="admin.user.revoke_admin"}}
{{d-button class="btn-default" action=(action "revokeAdmin") icon="shield" label="admin.user.revoke_admin"}}
{{/if}}
{{#if model.can_grant_admin}}
{{d-button class="btn-default" action="grantAdmin" icon="shield" label="admin.user.grant_admin"}}
{{d-button class="btn-default" action=(action "grantAdmin") icon="shield" label="admin.user.grant_admin"}}
{{/if}}
</div>
</div>
@ -272,10 +272,10 @@
<div class='value'>{{i18n-yes-no model.moderator}}</div>
<div class='controls'>
{{#if model.can_revoke_moderation}}
{{d-button class="btn-default" action="revokeModeration" icon="shield" label="admin.user.revoke_moderation"}}
{{d-button class="btn-default" action=(action "revokeModeration") icon="shield" label="admin.user.revoke_moderation"}}
{{/if}}
{{#if model.can_grant_moderation}}
{{d-button class="btn-default" action="grantModeration" icon="shield" label="admin.user.grant_moderation"}}
{{d-button class="btn-default" action=(action "grantModeration") icon="shield" label="admin.user.grant_moderation"}}
{{/if}}
</div>
</div>
@ -286,8 +286,8 @@
{{combo-box content=site.trustLevels value=model.trust_level nameProperty="detailedName"}}
{{#if model.dirty}}
<div>
{{d-button class="ok no-text" action="saveTrustLevel" icon="check"}}
{{d-button class="cancel no-text" action="restoreTrustLevel" icon="times"}}
{{d-button class="ok no-text" action=(action "saveTrustLevel") icon="check"}}
{{d-button class="cancel no-text" action=(action "restoreTrustLevel") icon="times"}}
</div>
{{/if}}
</div>
@ -295,10 +295,10 @@
{{#if model.canLockTrustLevel}}
{{#if hasLockedTrustLevel}}
{{d-icon "lock" title="admin.user.trust_level_locked_tip"}}
{{d-button class="btn-default" action="lockTrustLevel" actionParam=false label="admin.user.unlock_trust_level"}}
{{d-button class="btn-default" action=(action "lockTrustLevel") actionParam=false label="admin.user.unlock_trust_level"}}
{{else}}
{{d-icon "unlock" title="admin.user.trust_level_unlocked_tip"}}
{{d-button class="btn-default" action="lockTrustLevel" actionParam=true label="admin.user.lock_trust_level"}}
{{d-button class="btn-default" action=(action "lockTrustLevel") actionParam=true label="admin.user.lock_trust_level"}}
{{/if}}
{{/if}}
{{#if model.tl3Requirements}}
@ -367,7 +367,7 @@
{{#if model.silenced}}
{{d-button
class="btn-danger unsilence-user"
action="unsilence"
action=(action "unsilence")
icon="microphone-slash"
label="admin.user.unsilence"}}
{{i18n 'admin.user.silence_explanation'}}
@ -429,8 +429,8 @@
</div>
{{#if customGroupsDirty}}
<div class='controls'>
{{d-button icon="check" class="ok" action="saveCustomGroups"}}
{{d-button icon="times" class="cancel" action="resetCustomGroups"}}
{{d-button icon="check" class="ok" action=(action "saveCustomGroups")}}
{{d-button icon="times" class="cancel" action=(action "resetCustomGroups")}}
</div>
{{/if}}
</div>
@ -442,8 +442,8 @@
</div>
{{#if primaryGroupDirty}}
<div class='controls'>
{{d-button icon="check" class="ok" action="savePrimaryGroup"}}
{{d-button icon="times" class="cancel" action="resetPrimaryGroup"}}
{{d-button icon="check" class="ok" action=(action "savePrimaryGroup")}}
{{d-button icon="times" class="cancel" action=(action "resetPrimaryGroup")}}
</div>
{{/if}}
</div>
@ -480,7 +480,7 @@
<div class='controls'>
{{#if model.can_delete_all_posts}}
{{#if model.post_count}}
{{d-button class="btn-danger" action="deleteAllPosts" icon="trash-o" label="admin.user.delete_all_posts"}}
{{d-button class="btn-danger" action=(action "deleteAllPosts") icon="trash-o" label="admin.user.delete_all_posts"}}
{{/if}}
{{else}}
{{deleteAllPostsExplanation}}
@ -563,7 +563,7 @@
<div class="pull-right">
{{#if model.active}}
{{#if model.can_impersonate}}
{{d-button class="btn-danger" action="impersonate" icon="crosshairs" label="admin.impersonate.title" title="admin.impersonate.help"}}
{{d-button class="btn-danger" action=(action "impersonate") icon="crosshairs" label="admin.impersonate.title" title="admin.impersonate.help"}}
{{/if}}
{{/if}}
@ -571,14 +571,14 @@
{{d-button label="admin.user.anonymize"
icon="exclamation-triangle"
class="btn-danger"
action="anonymize"}}
action=(action "anonymize")}}
{{/if}}
{{#if model.canBeDeleted}}
{{d-button label="admin.user.delete"
icon="exclamation-triangle"
class="btn-danger"
action="destroy"}}
action=(action "destroy")}}
{{/if}}
</div>

Some files were not shown because too many files have changed in this diff Show More