0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-24 10:20:28 +01:00
discourse-custom-wizard/assets/javascripts/discourse/components/wizard-custom-action.js

106 Zeilen
3 KiB
JavaScript

import { default as discourseComputed } from "discourse-common/utils/decorators";
2021-09-07 14:06:13 +02:00
import { empty, equal, or } from "@ember/object/computed";
2021-04-12 07:44:47 +02:00
import { notificationLevels, selectKitContent } from "../lib/wizard";
2020-04-20 11:41:13 +02:00
import { computed } from "@ember/object";
import UndoChanges from "../mixins/undo-changes";
2020-04-05 03:37:09 +02:00
import Component from "@ember/component";
2020-05-28 05:06:06 +02:00
import I18n from "I18n";
2017-10-13 15:02:34 +02:00
2020-04-20 11:41:13 +02:00
export default Component.extend(UndoChanges, {
componentType: "action",
classNameBindings: [":wizard-custom-action", "visible"],
visible: computed("currentActionId", function () {
return this.action.id === this.currentActionId;
}),
createTopic: equal("action.type", "create_topic"),
updateProfile: equal("action.type", "update_profile"),
watchCategories: equal("action.type", "watch_categories"),
2022-12-23 17:28:09 +01:00
watchTags: equal("action.type", "watch_tags"),
sendMessage: equal("action.type", "send_message"),
openComposer: equal("action.type", "open_composer"),
sendToApi: equal("action.type", "send_to_api"),
addToGroup: equal("action.type", "add_to_group"),
routeTo: equal("action.type", "route_to"),
createCategory: equal("action.type", "create_category"),
createGroup: equal("action.type", "create_group"),
apiEmpty: empty("action.api"),
groupPropertyTypes: selectKitContent(["id", "name"]),
hasCustomFields: or(
"basicTopicFields",
"updateProfile",
"createGroup",
"createCategory"
),
basicTopicFields: or("createTopic", "sendMessage", "openComposer"),
publicTopicFields: or("createTopic", "openComposer"),
showPostAdvanced: or("createTopic", "sendMessage"),
2021-04-12 07:44:47 +02:00
availableNotificationLevels: notificationLevels.map((type) => {
return {
id: type,
2022-12-23 17:28:09 +01:00
name: I18n.t(`admin.wizard.action.watch_x.notification_level.${type}`),
};
}),
2023-10-16 03:09:41 +02:00
messageUrl:
"https://pavilion.tech/products/discourse-custom-wizard-plugin/documentation/action-settings",
@discourseComputed("action.type")
2020-04-20 13:40:32 +02:00
messageKey(type) {
let key = "type";
2020-04-20 13:40:32 +02:00
if (type) {
key = "edit";
2020-04-20 13:40:32 +02:00
}
return key;
},
@discourseComputed("action.type")
customFieldsContext(type) {
return `action.${type}`;
},
@discourseComputed("wizard.steps")
2020-04-08 04:52:07 +02:00
runAfterContent(steps) {
let content = steps.map(function (step) {
2020-04-08 09:59:54 +02:00
return {
id: step.id,
name: step.title || step.id,
2020-04-08 09:59:54 +02:00
};
});
2020-04-08 04:52:07 +02:00
content.unshift({
id: "wizard_completion",
name: I18n.t("admin.wizard.action.run_after.wizard_completion"),
2020-04-08 04:52:07 +02:00
});
2020-04-08 04:52:07 +02:00
return content;
2019-06-03 09:09:24 +02:00
},
@discourseComputed("apis")
2019-06-03 09:09:24 +02:00
availableApis(apis) {
return apis.map((a) => {
2019-06-03 09:09:24 +02:00
return {
id: a.name,
name: a.title,
2019-06-03 09:09:24 +02:00
};
});
},
@discourseComputed("apis", "action.api")
2019-06-03 09:09:24 +02:00
availableEndpoints(apis, api) {
2021-04-12 08:12:20 +02:00
if (!api) {
return [];
}
return apis.find((a) => a.name === api).endpoints;
},
2021-09-03 10:46:32 +02:00
2022-09-19 12:09:34 +02:00
@discourseComputed("fieldTypes")
2022-10-10 14:04:55 +02:00
hasEventField(fieldTypes) {
2022-09-19 12:09:34 +02:00
return fieldTypes.map((ft) => ft.id).includes("event");
},
2022-10-10 14:04:55 +02:00
@discourseComputed("fieldTypes")
hasLocationField(fieldTypes) {
return fieldTypes.map((ft) => ft.id).includes("location");
},
2017-09-23 04:34:07 +02:00
});