Compare commits

...
This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.

1 Commits

Author SHA1 Message Date
Jarek Radosz
f538a8a72f
DEV: Use modal controller instead of mixins 2023-02-24 12:47:42 +01:00
90 changed files with 222 additions and 266 deletions

View File

@ -1,8 +1,8 @@
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import { and, not } from "@ember/object/computed";
import discourseComputed, { observes } from "discourse-common/utils/decorators";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import { isEmpty } from "@ember/utils";
import { popupAjaxError } from "discourse/lib/ajax-error";
@ -53,7 +53,7 @@ const SCSS_VARIABLE_NAMES = [
"love-low",
];
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
adminCustomizeThemesShow: controller(),
uploadUrl: "/admin/themes/upload_asset",

View File

@ -1,7 +1,7 @@
import Controller, { inject as controller } from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import { inject as controller } from "@ember/controller";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
adminCustomizeColors: controller(),
selectedBaseThemeId: null,

View File

@ -1,14 +1,11 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action } from "@ember/object";
import { inject as service } from "@ember/service";
import I18n from "I18n";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { ajax } from "discourse/lib/ajax";
export default class AdminCustomizeFormTemplateView extends Controller.extend(
ModalFunctionality
) {
export default class AdminCustomizeFormTemplateView extends Modal {
@service router;
@service dialog;

View File

@ -1,11 +1,11 @@
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action } from "@ember/object";
import { alias } from "@ember/object/computed";
import discourseComputed from "discourse-common/utils/decorators";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
adminUserIndex: controller(),
username: alias("model.username"),
postCount: alias("model.post_count"),

View File

@ -1,6 +1,5 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
deletedPercentage: 0,
});

View File

@ -1,12 +1,11 @@
import { A } from "@ember/array";
import Controller from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import { observes } from "discourse-common/utils/decorators";
import { inject as service } from "@ember/service";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
dialog: service(),
@observes("model")

View File

@ -1,11 +1,10 @@
import Controller from "@ember/controller";
import IncomingEmail from "admin/models/incoming-email";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import discourseComputed from "discourse-common/utils/decorators";
import { longDate } from "discourse/lib/formatter";
import { popupAjaxError } from "discourse/lib/ajax-error";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
@discourseComputed("model.date")
date(d) {
return longDate(d);

View File

@ -1,9 +1,9 @@
import { COMPONENTS, THEMES } from "admin/models/theme";
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import { alias, equal, match } from "@ember/object/computed";
import discourseComputed, { observes } from "discourse-common/utils/decorators";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { POPULAR_THEMES } from "discourse-common/helpers/popular-themes";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
@ -11,7 +11,7 @@ import { set } from "@ember/object";
const MIN_NAME_LENGTH = 4;
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
adminCustomizeThemes: controller(),
themesController: controller("adminCustomizeThemes"),
popular: equal("selection", "popular"),

View File

@ -1,11 +1,11 @@
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action } from "@ember/object";
import { alias } from "@ember/object/computed";
import discourseComputed from "discourse-common/utils/decorators";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
adminUserIndex: controller(),
username: alias("model.username"),
targetUsername: alias("model.targetUsername"),

View File

@ -1,10 +1,9 @@
import Controller from "@ember/controller";
import DiscourseURL from "discourse/lib/url";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { bind } from "discourse-common/utils/decorators";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
message: I18n.t("admin.user.merging_user"),
onShow() {

View File

@ -1,11 +1,11 @@
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action, get } from "@ember/object";
import { alias } from "@ember/object/computed";
import discourseComputed from "discourse-common/utils/decorators";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
adminUserIndex: controller(),
username: alias("model.username"),

View File

@ -1,14 +1,13 @@
import Controller from "@ember/controller";
import { action } from "@ember/object";
import { next } from "@ember/runloop";
import { inject as service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import discourseComputed from "discourse-common/utils/decorators";
import { extractError } from "discourse/lib/ajax-error";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import I18n from "I18n";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
dialog: service(),
loadingUser: false,

View File

@ -1,10 +1,9 @@
import Controller from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import { inject as service } from "@ember/service";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
dialog: service(),
loading: true,
reseeding: false,

View File

@ -1,4 +1,4 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality);

View File

@ -1,8 +1,8 @@
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import discourseComputed from "discourse-common/utils/decorators";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
adminBackupsLogs: controller(),
@discourseComputed

View File

@ -1,8 +1,7 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
loadDiff() {
this.set("loading", true);
ajax(

View File

@ -1,9 +1,8 @@
import { observes, on } from "discourse-common/utils/decorators";
import Controller from "@ember/controller";
import { action } from "@ember/object";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
@on("init")
@observes("model.value")
_setup() {

View File

@ -1,5 +1,4 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import discourseComputed from "discourse-common/utils/decorators";
import { equal } from "@ember/object/computed";
import {
@ -7,7 +6,7 @@ import {
toWatchedWord,
} from "discourse-common/utils/watched-words";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
isReplace: equal("model.nameKey", "replace"),
isTag: equal("model.nameKey", "tag"),
isLink: equal("model.nameKey", "link"),

View File

@ -1,5 +1,5 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import ModalUpdateExistingUsers from "discourse/mixins/modal-update-existing-users";
export default Controller.extend(ModalFunctionality, ModalUpdateExistingUsers);

View File

@ -1,10 +1,10 @@
import Controller, { inject as controller } from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import { inject as controller } from "@ember/controller";
import Modal from "discourse/controllers/modal";
import { changeEmail } from "discourse/lib/user-activation";
import discourseComputed from "discourse-common/utils/decorators";
import { extractError } from "discourse/lib/ajax-error";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
login: controller(),
currentEmail: null,

View File

@ -1,9 +1,8 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
actions: {
finishConnect() {
ajax({

View File

@ -1,11 +1,10 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import { action } from "@ember/object";
import { next } from "@ember/runloop";
import { userPath } from "discourse/lib/url";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
expanded: false,
onShow() {

View File

@ -1,6 +1,5 @@
import Controller from "@ember/controller";
import { action } from "@ember/object";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import { allowsImages } from "discourse/lib/uploads";
import discourseComputed from "discourse-common/utils/decorators";
@ -8,7 +7,7 @@ import { popupAjaxError } from "discourse/lib/ajax-error";
import { setting } from "discourse/lib/computed";
import { isTesting } from "discourse-common/config/environment";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
gravatarName: setting("gravatar_name"),
gravatarBaseUrl: setting("gravatar_base_url"),
gravatarLoginUrl: setting("gravatar_login_url"),
@ -143,11 +142,12 @@ export default Controller.extend(ModalFunctionality, {
.catch(popupAjaxError);
},
actions: {
uploadComplete() {
this.set("selected", "custom");
},
@action
uploadComplete() {
this.set("selected", "custom");
},
actions: {
refreshGravatar() {
this.set("gravatarRefreshDisabled", true);

View File

@ -1,6 +1,5 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
modal: null,
});

View File

@ -1,6 +1,5 @@
import Controller from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action } from "@ember/object";
import { Promise } from "rsvp";
import showModal from "discourse/lib/show-modal";
@ -55,7 +54,7 @@ export function openBookmarkModal(
});
}
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
onShow() {
this.setProperties({
model: this.model || {},

View File

@ -1,14 +1,14 @@
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import DiscourseURL from "discourse/lib/url";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import Topic from "discourse/models/topic";
import { alias } from "@ember/object/computed";
import discourseComputed from "discourse-common/utils/decorators";
import { isEmpty } from "@ember/utils";
import { next } from "@ember/runloop";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
topicController: controller("topic"),
saving: false,

View File

@ -1,11 +1,10 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action } from "@ember/object";
import { cookAsync } from "discourse/lib/text";
import discourseComputed from "discourse-common/utils/decorators";
import { isEmpty } from "@ember/utils";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
post: null,
resolve: null,
reject: null,

View File

@ -1,14 +1,14 @@
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import DiscourseURL from "discourse/lib/url";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import Topic from "discourse/models/topic";
import discourseComputed from "discourse-common/utils/decorators";
import { isEmpty } from "@ember/utils";
import { next } from "@ember/runloop";
// Modal related to changing the timestamp of posts
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
topicController: controller("topic"),
saving: false,
date: "",

View File

@ -1,8 +1,7 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { popupAjaxError } from "discourse/lib/ajax-error";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
publicCategoryId: null,
saving: true,

View File

@ -7,7 +7,7 @@ import discourseComputed, {
import { A } from "@ember/array";
import EmberObject, { action } from "@ember/object";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import NameValidation from "discourse/mixins/name-validation";
import PasswordValidation from "discourse/mixins/password-validation";
import { Promise } from "rsvp";

View File

@ -1,8 +1,7 @@
import Controller from "@ember/controller";
import { action } from "@ember/object";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
data: null,
onShow() {

View File

@ -6,7 +6,7 @@ import { extractError } from "discourse/lib/ajax-error";
import { getNativeContact } from "discourse/lib/pwa-utils";
import { emailValid, hostnameValid } from "discourse/lib/utilities";
import { bufferedProperty } from "discourse/mixins/buffered-content";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import Group from "discourse/models/group";
import Invite from "discourse/models/invite";
import I18n from "I18n";

View File

@ -1,12 +1,12 @@
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action } from "@ember/object";
import discourseComputed from "discourse-common/utils/decorators";
// Modal that displays confirmation text when user deletes a topic
// The modal will display only if the topic exceeds a certain amount of views
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
topicController: controller("topic"),
deletingTopic: false,

View File

@ -1,7 +1,6 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
actions: {
async destroyDraft() {
await this.onDestroyDraft();

View File

@ -1,7 +1,6 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
actions: {
dismiss() {
this.send("closeModal");

View File

@ -1,9 +1,8 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action } from "@ember/object";
import { extractError } from "discourse/lib/ajax-error";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
duration: null,
@action

View File

@ -1,9 +1,8 @@
import { action } from "@ember/object";
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { downloadGoogle, downloadIcs } from "discourse/lib/download-calendar";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
selectedCalendar: "ics",
remember: false,

View File

@ -1,7 +1,6 @@
import { fromSeconds, toSeconds } from "discourse/helpers/slow-mode";
import Controller from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import Topic from "discourse/models/topic";
import { action } from "@ember/object";
import discourseComputed from "discourse-common/utils/decorators";
@ -9,7 +8,7 @@ import { equal, or } from "@ember/object/computed";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { timeShortcuts } from "discourse/lib/time-shortcut";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
selectedSlowMode: null,
hours: null,
minutes: null,

View File

@ -1,8 +1,7 @@
import EmberObject, { setProperties } from "@ember/object";
import Controller from "@ember/controller";
import { FORMAT } from "select-kit/components/future-date-input-selector";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import TopicTimer from "discourse/models/topic-timer";
import { alias } from "@ember/object/computed";
import discourseComputed from "discourse-common/utils/decorators";
@ -16,7 +15,7 @@ export const DELETE_STATUS_TYPE = "delete";
export const BUMP_TYPE = "bump";
export const DELETE_REPLIES_TYPE = "delete_replies";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
loading: false,
isPublic: "true",

View File

@ -1,5 +1,4 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import EmberObject, { action } from "@ember/object";
import { extractError } from "discourse/lib/ajax-error";
@ -8,7 +7,7 @@ import { reload } from "discourse/helpers/page-reloader";
const UP = "up";
const DOWN = "down";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
loading: true,
columns: null,
labelKey: null,

View File

@ -1,7 +1,6 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
loading: null,
reviewableExplanation: null,

View File

@ -1,10 +1,9 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import { none } from "@ember/object/computed";
import { popupAjaxError } from "discourse/lib/ajax-error";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
newFeaturedTopic: null,
saving: false,
noTopicSelected: none("newFeaturedTopic"),

View File

@ -1,13 +1,13 @@
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import EmberObject from "@ember/object";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import { categoryLinkHTML } from "discourse/helpers/category-link";
import discourseComputed from "discourse-common/utils/decorators";
import { inject as service } from "@ember/service";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
topicController: controller("topic"),
dialog: service(),

View File

@ -1,8 +1,7 @@
import { schedule } from "@ember/runloop";
import Controller from "@ember/controller";
import I18n from "I18n";
import { MAX_MESSAGE_LENGTH } from "discourse/models/post-action-type";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { Promise } from "rsvp";
import User from "discourse/models/user";
import discourseComputed, { bind } from "discourse-common/utils/decorators";
@ -10,7 +9,7 @@ import { not } from "@ember/object/computed";
import optionalService from "discourse/lib/optional-service";
import { classify } from "@ember/string";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
adminTools: optionalService(),
userDetails: null,
selected: null,

View File

@ -1,6 +1,5 @@
import Controller from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import cookie from "discourse/lib/cookie";
import discourseComputed from "discourse-common/utils/decorators";
@ -9,7 +8,7 @@ import { extractError } from "discourse/lib/ajax-error";
import getURL from "discourse-common/lib/get-url";
import { isEmpty } from "@ember/utils";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
offerHelp: null,
helpSeen: false,

View File

@ -1,10 +1,9 @@
import Controller from "@ember/controller";
import { afterRender } from "discourse-common/utils/decorators";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import highlightSyntax from "discourse/lib/highlight-syntax";
import CodeblockButtons from "discourse/lib/codeblock-buttons";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
onShow() {
this._applyCodeblockButtons();
},

View File

@ -2,7 +2,7 @@ import Controller, { inject as controller } from "@ember/controller";
import Badge from "discourse/models/badge";
import GrantBadgeController from "discourse/mixins/grant-badge-controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import UserBadge from "discourse/models/user-badge";
import { all } from "rsvp";
import discourseComputed from "discourse-common/utils/decorators";

View File

@ -1,13 +1,12 @@
import Controller from "@ember/controller";
import { action } from "@ember/object";
import { isEmpty } from "@ember/utils";
import discourseComputed from "discourse-common/utils/decorators";
import { extractError } from "discourse/lib/ajax-error";
import { emailValid } from "discourse/lib/utilities";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import I18n from "I18n";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
loading: false,
usernamesAndEmails: null,

View File

@ -1,5 +1,5 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import ModalUpdateExistingUsers from "discourse/mixins/modal-update-existing-users";
export default Controller.extend(ModalFunctionality, ModalUpdateExistingUsers);

View File

@ -6,9 +6,8 @@ import discourseComputed, {
} from "discourse-common/utils/decorators";
import { propertyGreaterThan, propertyLessThan } from "discourse/lib/computed";
import Category from "discourse/models/category";
import Controller from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import Post from "discourse/models/post";
import { categoryBadgeHTML } from "discourse/helpers/category-link";
import { iconHTML } from "discourse-common/lib/icon-library";
@ -26,7 +25,7 @@ function customTagArray(val) {
}
// This controller handles displaying of history
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
dialog: service(),
loading: true,
viewMode: "side_by_side",

View File

@ -1,12 +1,11 @@
import Controller from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import User from "discourse/models/user";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { timeShortcuts } from "discourse/lib/time-shortcut";
import discourseComputed from "discourse-common/utils/decorators";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
loading: false,
ignoredUntil: null,
ignoredUsername: null,

View File

@ -1,11 +1,10 @@
import Controller from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { timeShortcuts } from "discourse/lib/time-shortcut";
import discourseComputed from "discourse-common/utils/decorators";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
loading: false,
ignoredUntil: null,

View File

@ -1,13 +1,12 @@
import { cancel, schedule } from "@ember/runloop";
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { bind } from "discourse-common/utils/decorators";
import discourseDebounce from "discourse-common/lib/debounce";
import { isEmpty } from "@ember/utils";
import { prefixProtocol } from "discourse/lib/url";
import { searchForTerm } from "discourse/lib/search";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
_debounced: null,
_activeSearch: null,

View File

@ -1,8 +1,7 @@
import { action } from "@ember/object";
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
editor: null,
@action

View File

@ -1,9 +1,8 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { reads } from "@ember/object/computed";
import { action } from "@ember/object";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
model: null,
postNumber: null,
postDate: null,

View File

@ -1,7 +1,6 @@
import Controller from "@ember/controller";
import I18n from "I18n";
import { translateModKey } from "discourse/lib/utilities";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { extraKeyboardShortcutsHelp } from "discourse/lib/keyboard-shortcuts";
const KEY = "keyboard_shortcuts_help";
@ -10,7 +9,6 @@ const ALT = translateModKey("Alt");
const META = translateModKey("Meta");
const CTRL = I18n.t("shortcut_modifier_key.ctrl");
const ENTER = I18n.t("shortcut_modifier_key.enter");
const COMMA = I18n.t(`${KEY}.shortcut_key_delimiter_comma`);
const PLUS = I18n.t(`${KEY}.shortcut_key_delimiter_plus`);
@ -59,7 +57,7 @@ function buildShortcut(
return I18n.t(`${KEY}.${key}`, context);
}
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
onShow() {
this.set("modal.modalClass", "keyboard-shortcuts-modal");
this._defineShortcuts();

View File

@ -1,11 +1,11 @@
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import { alias, not, or, readOnly } from "@ember/object/computed";
import { areCookiesEnabled, escapeExpression } from "discourse/lib/utilities";
import cookie, { removeCookie } from "discourse/lib/cookie";
import { next, schedule } from "@ember/runloop";
import EmberObject, { action } from "@ember/object";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { SECOND_FACTOR_METHODS } from "discourse/models/user";
import { ajax } from "discourse/lib/ajax";
import discourseComputed from "discourse-common/utils/decorators";
@ -29,7 +29,7 @@ const AuthErrors = [
"not_allowed_from_ip_address",
];
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
createAccount: controller(),
forgotPassword: controller(),
application: controller(),

View File

@ -1,2 +1,26 @@
import Controller from "@ember/controller";
export default Controller.extend();
import { action } from "@ember/object";
import { inject as service } from "@ember/service";
import showModal from "discourse/lib/show-modal";
export default Controller.extend({
appEvents: service(),
flash(text, messageClass) {
this.appEvents.trigger("modal-body:flash", { text, messageClass });
},
clearFlash() {
this.appEvents.trigger("modal-body:clearFlash");
},
showModal(...args) {
return showModal(...args);
},
@action
closeModal() {
this.modal.send("closeModal");
this.set("panels", []);
},
});

View File

@ -1,15 +1,15 @@
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import { alias, equal } from "@ember/object/computed";
import { mergeTopic, movePosts } from "discourse/models/topic";
import DiscourseURL from "discourse/lib/url";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import discourseComputed from "discourse-common/utils/decorators";
import { extractError } from "discourse/lib/ajax-error";
import { isEmpty } from "@ember/utils";
import { next } from "@ember/runloop";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
topicName: null,
saving: false,
categoryId: null,

View File

@ -1,8 +1,7 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { resendActivationEmail } from "discourse/lib/user-activation";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
actions: {
sendActivationEmail() {
resendActivationEmail(this.username).then(() => {

View File

@ -1,7 +1,7 @@
import { action, computed } from "@ember/object";
import { equal, not } from "@ember/object/computed";
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";

View File

@ -1,11 +1,10 @@
import Controller from "@ember/controller";
import IncomingEmail from "admin/models/incoming-email";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import Post from "discourse/models/post";
import { equal } from "@ember/object/computed";
// This controller handles displaying of raw email
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
rawEmail: "",
textPart: "",
htmlPart: "",

View File

@ -1,8 +1,7 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action } from "@ember/object";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
rejectReason: null,
sendEmail: false,

View File

@ -2,7 +2,7 @@ import discourseComputed, { on } from "discourse-common/utils/decorators";
import BufferedProxy from "ember-buffered-proxy/proxy";
import Controller from "@ember/controller";
import Evented from "@ember/object/evented";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { sort } from "@ember/object/computed";

View File

@ -1,13 +1,12 @@
import Controller from "@ember/controller";
import DiscourseURL from "discourse/lib/url";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { alias } from "@ember/object/computed";
import discourseComputed from "discourse-common/utils/decorators";
import { isEmpty } from "@ember/utils";
import { popupAjaxError } from "discourse/lib/ajax-error";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
loading: false,
reason: alias("model.membership_request_template"),

View File

@ -3,12 +3,11 @@ import {
isWebauthnSupported,
stringToBuffer,
} from "discourse/lib/webauthn";
import Controller from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
// model for this controller is user
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
loading: false,
errorMessage: null,

View File

@ -1,9 +1,8 @@
import Controller from "@ember/controller";
import { action } from "@ember/object";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
loading: false,
secondFactorImage: null,
secondFactorKey: null,

View File

@ -1,11 +1,10 @@
import Controller from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { SECOND_FACTOR_METHODS } from "discourse/models/user";
import { alias } from "@ember/object/computed";
import discourseLater from "discourse-common/lib/later";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
loading: false,
errorMessage: null,
successMessage: null,

View File

@ -1,7 +1,6 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
actions: {
disableSecurityKey() {
this.user

View File

@ -1,7 +1,6 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
actions: {
editSecondFactor() {
this.user

View File

@ -1,4 +1,4 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Controller.extend(ModalFunctionality);

View File

@ -8,7 +8,7 @@ import { longDateNoYear } from "discourse/lib/formatter";
import Sharing from "discourse/lib/sharing";
import showModal from "discourse/lib/show-modal";
import { bufferedProperty } from "discourse/mixins/buffered-content";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import I18n from "I18n";
import Category from "discourse/models/category";
import { getOwner } from "discourse-common/lib/get-owner";

View File

@ -1,5 +1,4 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { ajax } from "discourse/lib/ajax";
import { isEmpty } from "@ember/utils";
import { extractError } from "discourse/lib/ajax-error";
@ -93,7 +92,7 @@ class SectionLink {
}
}
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
dialog: service(),
router: service(),

View File

@ -1,7 +1,7 @@
import { alias, empty } from "@ember/object/computed";
import Controller, { inject as controller } from "@ember/controller";
import { inject as controller } from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { Promise } from "rsvp";
import Topic from "discourse/models/topic";
@ -117,7 +117,7 @@ addBulkButton("deleteTopics", "delete", {
});
// Modal for performing bulk actions on topics
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
userPrivateMessages: controller("user-private-messages"),
dialog: service(),
tags: null,

View File

@ -1,5 +1,4 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action } from "@ember/object";
import { popupAjaxError } from "discourse/lib/ajax-error";
import discourseComputed from "discourse-common/utils/decorators";
@ -9,7 +8,7 @@ import {
timeShortcuts,
} from "discourse/lib/time-shortcut";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
showDeleteButton: false,
prefilledDateTime: null,
timeShortcuts: null,

View File

@ -1,7 +1,19 @@
import Mixin from "@ember/object/mixin";
import deprecated from "discourse-common/lib/deprecated";
import showModal from "discourse/lib/show-modal";
export default Mixin.create({
init() {
this._super(...arguments);
deprecated(
"`modal-functionality` mixin is deprecated. Extend `modal` controller (`discourse/controllers/modal`) instead.",
{
id: "modal-functionality",
since: "3.1.0.beta3",
}
);
},
flash(text, messageClass) {
this.appEvents.trigger("modal-body:flash", { text, messageClass });
},

View File

@ -13,7 +13,7 @@ import {
} from "discourse/plugins/chat/discourse/components/chat-to-topic-selector";
import { CHANNEL_STATUSES } from "discourse/plugins/chat/discourse/models/chat-channel";
import { htmlSafe } from "@ember/template";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Component.extend(ModalFunctionality, {
chat: service(),

View File

@ -7,7 +7,7 @@ import { inject as service } from "@ember/service";
import { popupAjaxError } from "discourse/lib/ajax-error";
import discourseLater from "discourse-common/lib/later";
import { htmlSafe } from "@ember/template";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default Component.extend(ModalFunctionality, {
chat: service(),

View File

@ -1,8 +1,5 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default class ChatChannelArchiveModalController extends Controller.extend(
ModalFunctionality
) {
export default class ChatChannelArchiveModalController extends Modal {
chatChannel = null;
}

View File

@ -1,8 +1,5 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default class ChatChannelDeleteModalController extends Controller.extend(
ModalFunctionality
) {
export default class ChatChannelDeleteModalController extends Modal {
chatChannel = null;
}

View File

@ -1,14 +1,11 @@
import Controller from "@ember/controller";
import { action, computed } from "@ember/object";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { tracked } from "@glimmer/tracking";
import { inject as service } from "@ember/service";
const DESCRIPTION_MAX_LENGTH = 280;
export default class ChatChannelEditDescriptionController extends Controller.extend(
ModalFunctionality
) {
export default class ChatChannelEditDescriptionController extends Modal {
@service chatApi;
@tracked editedDescription = this.model.description || "";

View File

@ -1,14 +1,12 @@
import Controller from "@ember/controller";
import discourseDebounce from "discourse-common/lib/debounce";
import { ajax } from "discourse/lib/ajax";
import { cancel } from "@ember/runloop";
import { action, computed } from "@ember/object";
import { extractError } from "discourse/lib/ajax-error";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { inject as service } from "@ember/service";
export default class ChatChannelEditTitleController extends Controller.extend(
ModalFunctionality
) {
export default class ChatChannelEditTitleController extends Modal {
@service chatApi;
editedName = "";
editedSlug = "";

View File

@ -1,11 +1,8 @@
import Controller from "@ember/controller";
import { action } from "@ember/object";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import showModal from "discourse/lib/show-modal";
export default class ChatChannelInfoAboutController extends Controller.extend(
ModalFunctionality
) {
export default class ChatChannelInfoAboutController extends Modal {
@action
onEditChatChannelName() {
showModal("chat-channel-edit-name-slug", { model: this.model });

View File

@ -1,10 +1,7 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action } from "@ember/object";
export default class ChatChannelSelectorModalController extends Controller.extend(
ModalFunctionality
) {
export default class ChatChannelSelectorModalController extends Modal {
@action
closeSelf() {
this.send("closeModal");

View File

@ -1,11 +1,8 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action } from "@ember/object";
import { inject as service } from "@ember/service";
export default class ChatChannelToggleController extends Controller.extend(
ModalFunctionality
) {
export default class ChatChannelToggleController extends Modal {
@service chat;
@service router;

View File

@ -1,8 +1,5 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
export default class ChatMessageMoveToChannelModalController extends Controller.extend(
ModalFunctionality
) {
export default class ChatMessageMoveToChannelModalController extends Modal {
chatChannel = null;
}

View File

@ -1,10 +1,9 @@
import Modal from "discourse/controllers/modal";
import { escapeExpression } from "discourse/lib/utilities";
import { ajax } from "discourse/lib/ajax";
import { cancel } from "@ember/runloop";
import discourseDebounce from "discourse-common/lib/debounce";
import Controller from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import { action, computed } from "@ember/object";
import { gt, notEmpty } from "@ember/object/computed";
import { inject as service } from "@ember/service";
@ -18,9 +17,7 @@ const DEFAULT_HINT = htmlSafe(
})
);
export default class CreateChannelController extends Controller.extend(
ModalFunctionality
) {
export default class CreateChannelController extends Modal {
@service chat;
@service dialog;
@service chatChannelsManager;

View File

@ -1,8 +1,7 @@
import Controller from "@ember/controller";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { schedule } from "@ember/runloop";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
onShow() {
schedule("afterRender", () => {
const fromButton = document.getElementById("from-date-time");

View File

@ -1,6 +1,5 @@
import Controller from "@ember/controller";
import I18n from "I18n";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import { action } from "@ember/object";
import { ajax } from "discourse/lib/ajax";
import { classify } from "@ember/string";
@ -10,7 +9,7 @@ import loadScript from "discourse/lib/load-script";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { inject as service } from "@ember/service";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
dialog: service(),
model: null,
charts: null,

View File

@ -1,9 +1,8 @@
import Controller from "@ember/controller";
import EmberObject, { action } from "@ember/object";
import { gt, or } from "@ember/object/computed";
import { next } from "@ember/runloop";
import discourseComputed, { observes } from "discourse-common/utils/decorators";
import ModalFunctionality from "discourse/mixins/modal-functionality";
import Modal from "discourse/controllers/modal";
import I18n from "I18n";
export const BAR_CHART_TYPE = "bar";
@ -18,7 +17,7 @@ const VOTE_POLL_RESULT = "on_vote";
const CLOSED_POLL_RESULT = "on_close";
const STAFF_POLL_RESULT = "staff_only";
export default Controller.extend(ModalFunctionality, {
export default Modal.extend({
showAdvanced: false,
pollType: REGULAR_POLL_TYPE,