Version bump
This commit is contained in:
commit
7f50fc4f70
@ -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,
|
||||
|
||||
@ -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
|
||||
|
||||
6
Gemfile
6
Gemfile
@ -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
|
||||
|
||||
23
Gemfile.lock
23
Gemfile.lock
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -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));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"),
|
||||
|
||||
@ -8,11 +8,5 @@ export default Ember.Component.extend({
|
||||
@computed("model.isSaving")
|
||||
savingText(saving) {
|
||||
return saving ? "saving" : "save";
|
||||
},
|
||||
|
||||
actions: {
|
||||
saveChanges() {
|
||||
this.sendAction();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -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()
|
||||
);
|
||||
|
||||
@ -30,11 +30,5 @@ export default Ember.Component.extend({
|
||||
}
|
||||
|
||||
return this.get("term");
|
||||
},
|
||||
|
||||
actions: {
|
||||
edit() {
|
||||
this.sendAction("editAction", this.get("siteText"));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -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();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@ -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")) {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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()
|
||||
);
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -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")
|
||||
});
|
||||
|
||||
@ -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: "",
|
||||
|
||||
@ -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") +
|
||||
|
||||
@ -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(() => {
|
||||
|
||||
@ -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");
|
||||
});
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
export default Ember.Controller.extend({
|
||||
loading: false,
|
||||
period: "all",
|
||||
period: "yearly",
|
||||
searchType: "all",
|
||||
|
||||
searchTypeOptions: [
|
||||
|
||||
@ -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"),
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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 => {
|
||||
|
||||
@ -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: {
|
||||
|
||||
@ -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]);
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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"));
|
||||
|
||||
@ -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]) {
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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));
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
@ -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");
|
||||
});
|
||||
}
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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"}}
|
||||
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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"}}
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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"}}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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"}}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
</h2>
|
||||
{{period-chooser
|
||||
period=period
|
||||
action="changePeriod"
|
||||
action=(action "changePeriod")
|
||||
content=availablePeriods
|
||||
fullDay=true}}
|
||||
</div>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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}}
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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|}}
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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}}
|
||||
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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"}}
|
||||
|
||||
|
||||
@ -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'>
|
||||
—
|
||||
</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
Reference in New Issue
Block a user