diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index dee4724f..992504bb 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -1,3 +1,14 @@ + + {{#if this.updating}} + {{loading-spinner size="small"}} + {{/if}} + {{d-icon "pavilion-logo"}} {{this.label}} - - - {{#if this.updating}} - {{loading-spinner size="small"}} - {{/if}} \ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.js b/assets/javascripts/discourse/components/wizard-subscription-badge.js index e103c95b..be14b6f8 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.js +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.js @@ -2,7 +2,6 @@ import { inject as service } from "@ember/service"; import { action, computed } from "@ember/object"; import Component from "@glimmer/component"; import { tracked } from "@glimmer/tracking"; -import DiscourseURL from "discourse/lib/url"; import I18n from "I18n"; export default class WizardSubscriptionBadge extends Component { @@ -32,7 +31,7 @@ export default class WizardSubscriptionBadge extends Component { @action click() { - DiscourseURL.routeTo(this.subscription.subscriptionLink); + window.open(this.subscription.subscriptionCtaLink, "_blank").focus(); } @action diff --git a/assets/javascripts/discourse/components/wizard-subscription-cta.hbs b/assets/javascripts/discourse/components/wizard-subscription-cta.hbs deleted file mode 100644 index 945eb90c..00000000 --- a/assets/javascripts/discourse/components/wizard-subscription-cta.hbs +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-cta.js b/assets/javascripts/discourse/components/wizard-subscription-cta.js deleted file mode 100644 index 47b2f382..00000000 --- a/assets/javascripts/discourse/components/wizard-subscription-cta.js +++ /dev/null @@ -1,34 +0,0 @@ -import { inject as service } from "@ember/service"; -import { action, computed } from "@ember/object"; -import Component from "@glimmer/component"; - -export default class WizardSubscriptionCta extends Component { - @service subscription; - - @computed("subscription.subscribed") - get i18nKey() { - return `admin.wizard.subscription.cta.${ - this.subscription.subscribed ? "subscribed" : "none" - }`; - } - - @computed("subscription.subscribed") - get icon() { - return this.subscription.subscribed ? "far-life-ring" : "external-link-alt"; - } - - @computed("i18nKey") - get title() { - return `${this.i18nKey}.title`; - } - - @computed("i18nKey") - get label() { - return `${this.i18nKey}.label`; - } - - @action - click() { - window.open(this.subscription.subscriptionCtaLink, "_blank").focus(); - } -} diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/components/wizard-subscription-status.hbs index a5c69a1b..5309558c 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-status.hbs @@ -1,4 +1,5 @@
+ {{#if authorized}} {{conditional-loading-spinner size="small" condition=unauthorizing}} {{/if}} - -
\ No newline at end of file diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 08ea5278..499e734c 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -7,7 +7,7 @@ const PRODUCT_PAGE = "https://custom-wizard.pavilion.tech"; const SUPPORT_MESSAGE = "https://coop.pavilion.tech/new-message?username=support&title=Custom%20Wizard%20Support"; const MANAGER_CATEGORY = - "https://discourse.pluginmanager.org/c/discourse-custom-wizard"; + "https://coop.pavilion.tech/c/support/discourse-custom-wizard"; export default class SubscriptionService extends Service { @tracked subscribed = false; @@ -16,7 +16,6 @@ export default class SubscriptionService extends Service { @tracked communitySubscription = false; @tracked standardSubscription = false; @tracked subscriptionAttributes = {}; - subscriptionLandingUrl = PRODUCT_PAGE; async init() { super.init(...arguments); @@ -49,10 +48,6 @@ export default class SubscriptionService extends Service { this.standardSubscription = this.subscriptionType === "standard"; } - get subscriptionLink() { - return this.subscriptionLandingUrl; - } - get subscriptionCtaLink() { switch (this.subscriptionType) { case "none": diff --git a/assets/stylesheets/common/admin.scss b/assets/stylesheets/common/admin.scss index f8722c2d..5e831c41 100644 --- a/assets/stylesheets/common/admin.scss +++ b/assets/stylesheets/common/admin.scss @@ -823,25 +823,6 @@ $error: #ef1700; vertical-align: middle; } -.btn.btn-pavilion-support { - background: var(--pavilion-primary); - color: var(--pavilion-secondary); - - .d-icon { - color: var(--pavilion-secondary); - } - - &:hover, - &:focus { - background: darken($pavilion_primary, 5%); - - &[href], - svg.d-icon { - color: darken($pavilion_secondary, 10%); - } - } -} - .wizard-subscription-container { width: 100%; padding: 1em; @@ -867,45 +848,49 @@ $error: #ef1700; } } -.wizard-subscription-badge { +.btn.wizard-subscription-badge { display: inline-flex; align-items: center; - max-height: 34px; box-sizing: border-box; position: relative; cursor: pointer; padding: 0.5em 0.65em; background-color: rgba($primary-medium, 0.05); border: 1.5px solid rgba($primary-medium, 0.5); - color: $primary-medium; + color: var(--secondary); - &:hover { - color: $primary-medium; - } - - svg { + svg.d-icon-pavilion-logo { width: 15px; height: 15px; margin-right: 0.45em; margin-bottom: 0.15em; + color: var(--secondary); + } + + &.none { + background-color: var(--subscription-none); + border: 1.5px solid var(--subscription-none); } &.standard { - background-color: rgba($subscription_standard, 0.05); - border: 1.5px solid rgba($subscription_standard, 0.5); - color: $subscription_standard; + background-color: var(--subscription-standard); + border: 1.5px solid var(--subscription-standard); } &.business { - background-color: $subscription_business; - border: 1.5px solid $subscription_business; - color: $secondary; + background-color: var(--subscription-business); + border: 1.5px solid var(--subscription-business); } &.community { - background-color: $subscription_community; - border: 1.5px solid $pavilion_primary; - color: $pavilion_primary; + background-color: var(--subscription-community); + border: 1.5px solid var(--pavilion-primary); + color: var(--pavilion-primary); + + &:hover, + svg { + color: var(--pavilion-primary); + } } .d-icon { @@ -939,13 +924,6 @@ $error: #ef1700; button.update { width: 40px; - height: 34px; - } - - .btn-pavilion-support { - &:hover { - color: var(--pavilion-secondary); - } } .wizard-subscription-badge { @@ -953,31 +931,18 @@ $error: #ef1700; svg { margin-right: 0.45em; } - &.none { - svg { - color: #919191; - } - } - &.community, - &.standard, - &.business { - svg { - color: #fff; - } - } - } - - .loading-container { - svg, - div { - vertical-align: -moz-middle-with-baseline; - vertical-align: -webkit-baseline-middle; - margin-right: 3px; - } } .btn-primary { margin-right: 5px; } + + .deauthorize { + background-color: var(--secondary); + + &:hover { + color: var(--primary); + } + } } } diff --git a/assets/stylesheets/common/admin/variables.scss b/assets/stylesheets/common/admin/variables.scss index 33a67c2d..8b263fd5 100644 --- a/assets/stylesheets/common/admin/variables.scss +++ b/assets/stylesheets/common/admin/variables.scss @@ -2,6 +2,7 @@ $pavilion_primary: #3c1c8c; $pavilion_secondary: #ffffff; $pavilion_warning: rgb(243, 163, 61); +$subscription_none: $pavilion_primary; $subscription_standard: $pavilion_primary; $subscription_business: #333; $subscription_community: #fff; @@ -10,6 +11,7 @@ $subscription_community: #fff; --pavilion-primary: #{$pavilion_primary}; --pavilion-secondary: #{$pavilion_secondary}; --pavilion-warning: #{$pavilion_warning}; + --subscription-none: #{$subscription_none}; --subscription-standard: #{$subscription_standard}; --subscription-business: #{$subscription_business}; --subscription-community: #{$subscription_community}; diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 0a088855..fa5c9deb 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -167,13 +167,13 @@ en: destroy_complete: Destruction complete subscription: documentation: Check out the subscription documentation - authorize: "Authorize this forum to use your Custom Wizard subscription plan on %{server}." - not_subscribed: "You've authorized, but are not currently subscribed to a Custom Wizard plan on %{server}." + authorize: "Connect this forum to use your Custom Wizard subscription plan on %{server}." + not_subscribed: "You've connected, but are not currently subscribed to a Custom Wizard plan on %{server}." subscription_expiring: "Your subscription is active, but will expire in the next 48 hours." subscription_active: "Your subscription is active." subscription_inactive: "Your subscription is inactive on this forum. Read more in the documentation." - unauthorized: "You're unauthorized. If you have a subscription, it will become inactive in the next 48 hours." - unauthorize_failed: Failed to unauthorize. + unauthorized: "You're not connected. If you have a subscription, it will become inactive in the next 48 hours." + unauthorize_failed: Failed to disconnect. submissions: select: "Select a wizard to see its submissions" viewing: "You're viewing the submissions of the %{wizardName}" @@ -546,11 +546,11 @@ en: subscription: title: Subscriber Features authorize: - label: Authorize - title: Authorize your subscription on this site + label: Connect + title: Connect your subscription to this site deauthorize: - label: deauthorize - title: Deauthorize your subscription on this site + label: Disconnect + title: Disconnect your subscription from this site update: title: "Update subscription status" subscribed: @@ -563,25 +563,17 @@ en: selector: not subscribed type: none: - label: Not Subscribed + label: Subscribe title: There is no Custom Wizard subscription active on this forum. business: - label: Business + label: Support title: There is a Custom Wizard Business subscription active on this forum. standard: - label: Standard + label: Support title: There is a Custom Wizard Standard subscription active on this forum. community: - label: Community - title: There is a Custom Wizard Community subscription active on this forum. - cta: - none: - label: Get a Subscription - title: Get a subscription for this forum. - subscribed: label: Support - title: Get support for your subscription. - + title: There is a Custom Wizard Community subscription active on this forum. wizard_js: group: diff --git a/spec/components/custom_wizard/action_spec.rb b/spec/components/custom_wizard/action_spec.rb index 57fe7f56..3b12f365 100644 --- a/spec/components/custom_wizard/action_spec.rb +++ b/spec/components/custom_wizard/action_spec.rb @@ -253,11 +253,14 @@ describe CustomWizard::Action do end it '#send_message' do + Jobs.run_immediately! + + target_user = Fabricate(:user) + + send_message['recipient'][0]['output'][0] = target_user.username wizard_template['actions'] << send_message update_template(wizard_template) - User.create(username: 'angus1', email: "angus1@email.com") - wizard = CustomWizard::Builder.new(@template[:id], user).build wizard.create_updater(wizard.steps[0].id, {}).update wizard.create_updater(wizard.steps[1].id, {}).update @@ -273,18 +276,29 @@ describe CustomWizard::Action do ) expect(topic.exists?).to eq(true) - expect(topic.first.topic_allowed_users.first.user.username).to eq('angus1') + expect(topic.first.topic_allowed_users.first.user.username).to eq(target_user.username) expect(post.exists?).to eq(true) + expect(target_user.reload.notifications.count).to eq(1) end it '#send_message allows using multiple targets' do + Jobs.run_immediately! + + user1 = Fabricate(:user) + user2 = Fabricate(:user) + group1 = Fabricate(:group) + group2 = Fabricate(:group) + + send_message_multi['recipient'][0]['output'] = [ + user1.username, + user2.username, + group1.name, + group2.name + ] wizard_template['actions'] << send_message_multi update_template(wizard_template) + update_template(wizard_template) - User.create(username: 'angus1', email: "angus1@email.com") - User.create(username: 'faiz', email: "faiz@email.com") - Group.create(name: "cool_group") - Group.create(name: 'cool_group_1') wizard = CustomWizard::Builder.new(@template[:id], user).build wizard.create_updater(wizard.steps[0].id, {}).update wizard.create_updater(wizard.steps[1].id, {}).update @@ -300,9 +314,11 @@ describe CustomWizard::Action do ) expect(topic.exists?).to eq(true) - expect(topic.first.all_allowed_users.map(&:username)).to include('angus1', 'faiz') - expect(topic.first.allowed_groups.map(&:name)).to include('cool_group', 'cool_group_1') + expect(topic.first.all_allowed_users.map(&:username)).to include(user1.username, user2.username) + expect(topic.first.allowed_groups.map(&:name)).to include(group1.name, group2.name) expect(post.exists?).to eq(true) + expect(user1.reload.notifications.count).to eq(1) + expect(user2.reload.notifications.count).to eq(1) end it "send_message works with guests are permitted" do diff --git a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js index ea8cbac2..5a17a023 100644 --- a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js @@ -71,10 +71,6 @@ acceptance("Admin | Custom Wizard Business Subscription", function (needs) { ); assert.strictEqual( query("button.wizard-subscription-badge span").innerText.trim(), - "Business" - ); - assert.strictEqual( - query("button.btn-pavilion-support span").innerText.trim(), "Support" ); }); diff --git a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js index 0670e703..ffed5287 100644 --- a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js @@ -71,10 +71,6 @@ acceptance("Admin | Custom Wizard Standard Subscription", function (needs) { ); assert.strictEqual( query("button.wizard-subscription-badge span").innerText.trim(), - "Standard" - ); - assert.strictEqual( - query("button.btn-pavilion-support span").innerText.trim(), "Support" ); }); diff --git a/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js index 52038d5e..6c34a935 100644 --- a/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js +++ b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js @@ -84,11 +84,7 @@ acceptance("Admin | Custom Wizard Unsubscribed", function (needs) { ); assert.strictEqual( query("button.wizard-subscription-badge span").innerText.trim(), - "Not Subscribed" - ); - assert.strictEqual( - query("button.btn-pavilion-support span").innerText.trim(), - "Get a Subscription" + "Subscribe" ); });