From a42e23d352434059acf5c396c0435f03d6c72527 Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 14 Oct 2021 13:41:24 +0100 Subject: [PATCH] Show but differentiate unsubbed action options --- .../components/wizard-custom-action.js.es6 | 8 ++++- .../wizard-subscription-selector-row.js.es6 | 19 +++++++++++- .../discourse/lib/wizard-schema.js.es6 | 30 ++++++++++++++----- .../wizard-subscription-selector-row.hbs | 8 ++++- assets/stylesheets/admin/admin.scss | 4 +++ config/locales/client.en.yml | 1 + controllers/custom_wizard/admin/admin.rb | 2 +- .../subscription/subscription.rb | 2 +- 8 files changed, 61 insertions(+), 13 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-custom-action.js.es6 b/assets/javascripts/discourse/components/wizard-custom-action.js.es6 index 39c84fa2..915e83aa 100644 --- a/assets/javascripts/discourse/components/wizard-custom-action.js.es6 +++ b/assets/javascripts/discourse/components/wizard-custom-action.js.es6 @@ -1,6 +1,7 @@ import { default as discourseComputed } from "discourse-common/utils/decorators"; import wizardSchema, { actionsAvailableWithAdditionalSubscription, + actionsAvailableWithCurrentSubscription } from "discourse/plugins/discourse-custom-wizard/discourse/lib/wizard-schema"; import { empty, equal, or } from "@ember/object/computed"; import { notificationLevels, selectKitContent } from "../lib/wizard"; @@ -100,11 +101,16 @@ export default Component.extend(UndoChanges, { actionTypes(subscribed, subscription) { let unsubscribedActions = actionsAvailableWithAdditionalSubscription(subscription); + let subscribedActions = actionsAvailableWithCurrentSubscription(subscription); return Object.keys(wizardSchema.action.types).reduce((result, type) => { + let subscriptionLabel = (subscribedActions.includes(type) || unsubscribedActions.includes(type)); + let disabled = unsubscribedActions.includes(type); + console.log(subscriptionLabel, disabled); result.push({ id: type, name: I18n.t(`admin.wizard.action.${type}.label`), - subscribed: unsubscribedActions.includes(type), + subscription: subscriptionLabel, + disabled: disabled, }); return result; }, []); diff --git a/assets/javascripts/discourse/components/wizard-subscription-selector/wizard-subscription-selector-row.js.es6 b/assets/javascripts/discourse/components/wizard-subscription-selector/wizard-subscription-selector-row.js.es6 index 23034ac1..11dd314a 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-selector/wizard-subscription-selector-row.js.es6 +++ b/assets/javascripts/discourse/components/wizard-subscription-selector/wizard-subscription-selector-row.js.es6 @@ -1,3 +1,20 @@ import SelectKitRowComponent from "select-kit/components/select-kit/select-kit-row"; +import { default as discourseComputed } from "discourse-common/utils/decorators"; -export default SelectKitRowComponent.extend(); +export default SelectKitRowComponent.extend({ + classNameBindings: ["isDisabled:disabled"], + + @discourseComputed("item") + isDisabled() { + return this.item.disabled; + }, + + click(event) { + event.preventDefault(); + event.stopPropagation(); + if (!this.item.disabled) { + this.selectKit.select(this.rowValue, this.item); + } + return false; + } +}); diff --git a/assets/javascripts/discourse/lib/wizard-schema.js.es6 b/assets/javascripts/discourse/lib/wizard-schema.js.es6 index 34df21d2..3559c98d 100644 --- a/assets/javascripts/discourse/lib/wizard-schema.js.es6 +++ b/assets/javascripts/discourse/lib/wizard-schema.js.es6 @@ -201,8 +201,8 @@ const action = { "send_to_api", ], actionTypesWithSubscription: { - advanced: ["send_message", "add_to_group", "watch_categories"], - business: ["create_category", "create_group", "send_to_api"], + basic: ["send_message", "add_to_group", "watch_categories"], + advanced: ["create_category", "create_group", "send_to_api"], }, dependent: {}, objectArrays: {}, @@ -219,17 +219,31 @@ export function actionsAvailableWithAdditionalSubscription( currentSubscription ) { switch (currentSubscription) { - case "complete": - return []; case "advanced": - return action.actionTypesWithSubscription["business"]; - case "core": - return action.actionTypesWithSubscription["advanced"].concat( - action.actionTypesWithSubscription["business"] + return []; + case "basic": + return action.actionTypesWithSubscription["advanced"]; + case "none", "": + return action.actionTypesWithSubscription["basic"].concat( + action.actionTypesWithSubscription["advanced"] ); } } +export function actionsAvailableWithCurrentSubscription( + currentSubscription +) { + switch (currentSubscription) { + case "advanced": + return action.actionTypesWithSubscription["advanced"].concat( + action.actionTypesWithSubscription["basic"]); + case "basic": + return action.actionTypesWithSubscription["basic"]; + case "none", "": + return []; + } +} + export function buildFieldTypes(types) { wizardSchema.field.types = types; } diff --git a/assets/javascripts/discourse/templates/components/wizard-subscription-selector/wizard-subscription-selector-row.hbs b/assets/javascripts/discourse/templates/components/wizard-subscription-selector/wizard-subscription-selector-row.hbs index e2650408..92cb2750 100644 --- a/assets/javascripts/discourse/templates/components/wizard-subscription-selector/wizard-subscription-selector-row.hbs +++ b/assets/javascripts/discourse/templates/components/wizard-subscription-selector/wizard-subscription-selector-row.hbs @@ -10,6 +10,12 @@
{{html-safe label}} {{#if item.subscription}} - {{i18n "admin.wizard.subscription.label"}} + + {{#if item.disabled}} + {{i18n "admin.wizard.subscription.additional_label"}} + {{else}} + {{i18n "admin.wizard.subscription.label"}} + {{/if}} + {{/if}}
diff --git a/assets/stylesheets/admin/admin.scss b/assets/stylesheets/admin/admin.scss index 862f6761..8a8c7239 100644 --- a/assets/stylesheets/admin/admin.scss +++ b/assets/stylesheets/admin/admin.scss @@ -427,6 +427,10 @@ margin-bottom: 0; } + .wizard-custom-action .select-kit-row.disabled { + background: var(--primary-low); + } + .select-box-kit-header { height: initial; } diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 61e8274c..ced433ce 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -467,6 +467,7 @@ en: subscription: nav_label: Subscription label: Subscription + additional_label: "Add subscription" title: Custom Wizard Subscription authorize: Authorize authorized: Authorized diff --git a/controllers/custom_wizard/admin/admin.rb b/controllers/custom_wizard/admin/admin.rb index 9f48e632..2bd5c86e 100644 --- a/controllers/custom_wizard/admin/admin.rb +++ b/controllers/custom_wizard/admin/admin.rb @@ -5,7 +5,7 @@ class CustomWizard::AdminController < ::Admin::AdminController def index render_json_dump( #TODO replace with appropriate static? - api_section: ["complete"].include?(CustomWizard::Subscription.type), + api_section: ["advanced"].include?(CustomWizard::Subscription.type), notices: ActiveModel::ArraySerializer.new( CustomWizard::Notice.list, each_serializer: CustomWizard::NoticeSerializer diff --git a/lib/custom_wizard/subscription/subscription.rb b/lib/custom_wizard/subscription/subscription.rb index 84d21c9d..4c804513 100644 --- a/lib/custom_wizard/subscription/subscription.rb +++ b/lib/custom_wizard/subscription/subscription.rb @@ -13,7 +13,7 @@ class CustomWizard::Subscription::Subscription end def types - %w(core advanced complete) + %w(none basic advanced) end def active?