discourse/app/assets/javascripts/admin/addon/controllers/admin-emojis.js

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

77 lines
1.7 KiB
JavaScript
Raw Normal View History

import I18n from "I18n";
import { sort } from "@ember/object/computed";
import EmberObject, { action, computed } from "@ember/object";
import Controller from "@ember/controller";
2016-07-01 01:55:44 +08:00
import { ajax } from "discourse/lib/ajax";
import bootbox from "bootbox";
const ALL_FILTER = "all";
export default Controller.extend({
filter: null,
sorting: null,
init() {
this._super(...arguments);
this.setProperties({
filter: ALL_FILTER,
sorting: ["group", "name"],
});
},
2014-12-23 08:12:26 +08:00
sortedEmojis: sort("filteredEmojis.[]", "sorting"),
emojiGroups: computed("model", {
get() {
return this.model.mapBy("group").uniq();
},
}),
sortingGroups: computed("emojiGroups.[]", {
get() {
return [ALL_FILTER].concat(this.emojiGroups);
},
}),
filteredEmojis: computed("model.[]", "filter", {
get() {
if (!this.filter || this.filter === ALL_FILTER) {
return this.model;
} else {
return this.model.filterBy("group", this.filter);
}
2014-12-23 08:12:26 +08:00
},
}),
@action
filterGroups(value) {
this.set("filter", value);
},
@action
emojiUploaded(emoji, group) {
emoji.url += "?t=" + new Date().getTime();
emoji.group = group;
this.model.pushObject(EmberObject.create(emoji));
},
@action
destroyEmoji(emoji) {
return bootbox.confirm(
I18n.t("admin.emoji.delete_confirm", { name: emoji.get("name") }),
I18n.t("no_value"),
I18n.t("yes_value"),
(destroy) => {
if (destroy) {
return ajax("/admin/customize/emojis/" + emoji.get("name"), {
type: "DELETE",
}).then(() => {
this.model.removeObject(emoji);
});
}
}
);
2014-12-23 08:12:26 +08:00
},
});