0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-09 20:02:54 +01:00

Merge branch 'main' into improve_subscription_classes_rspec_handling

Dieser Commit ist enthalten in:
Robert 2023-12-07 15:02:14 +00:00 committet von GitHub
Commit 36d348699d
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 4AEE18F83AFDEB23
13 geänderte Dateien mit 83 neuen und 168 gelöschten Zeilen

Datei anzeigen

@ -1,3 +1,14 @@
<DButton
@icon={{this.updateIcon}}
@action={{this.update}}
class="btn update"
@disabled={{this.updating}}
@title="admin.wizard.subscription.update.title"
>
{{#if this.updating}}
{{loading-spinner size="small"}}
{{/if}}
</DButton>
<DButton <DButton
@action={{this.click}} @action={{this.click}}
class="wizard-subscription-badge {{this.subscription.subscriptionType}}" class="wizard-subscription-badge {{this.subscription.subscriptionType}}"
@ -6,14 +17,3 @@
{{d-icon "pavilion-logo"}} {{d-icon "pavilion-logo"}}
<span>{{this.label}}</span> <span>{{this.label}}</span>
</DButton> </DButton>
<DButton
@icon={{this.updateIcon}}
@action={{this.update}}
class="btn btn-primary update"
@disabled={{this.updating}}
@title="admin.wizard.subscription.update.title"
>
{{#if this.updating}}
{{loading-spinner size="small"}}
{{/if}}
</DButton>

Datei anzeigen

@ -2,7 +2,6 @@ import { inject as service } from "@ember/service";
import { action, computed } from "@ember/object"; import { action, computed } from "@ember/object";
import Component from "@glimmer/component"; import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking"; import { tracked } from "@glimmer/tracking";
import DiscourseURL from "discourse/lib/url";
import I18n from "I18n"; import I18n from "I18n";
export default class WizardSubscriptionBadge extends Component { export default class WizardSubscriptionBadge extends Component {
@ -32,7 +31,7 @@ export default class WizardSubscriptionBadge extends Component {
@action @action
click() { click() {
DiscourseURL.routeTo(this.subscription.subscriptionLink); window.open(this.subscription.subscriptionCtaLink, "_blank").focus();
} }
@action @action

Datei anzeigen

@ -1,7 +0,0 @@
<DButton
@action={{this.click}}
class="btn btn-pavilion-support {{this.subscription.subscriptionType}}"
@title={{this.title}}
@label={{this.label}}
@icon={{this.icon}}
/>

Datei anzeigen

@ -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();
}
}

Datei anzeigen

@ -1,4 +1,5 @@
<div class="supplier-authorize"> <div class="supplier-authorize">
<WizardSubscriptionBadge />
{{#if authorized}} {{#if authorized}}
{{conditional-loading-spinner size="small" condition=unauthorizing}} {{conditional-loading-spinner size="small" condition=unauthorizing}}
<DButton <DButton
@ -18,6 +19,4 @@
@action={{this.authorize}} @action={{this.authorize}}
/> />
{{/if}} {{/if}}
<WizardSubscriptionBadge />
<WizardSubscriptionCta />
</div> </div>

Datei anzeigen

@ -7,7 +7,7 @@ const PRODUCT_PAGE = "https://custom-wizard.pavilion.tech";
const SUPPORT_MESSAGE = const SUPPORT_MESSAGE =
"https://coop.pavilion.tech/new-message?username=support&title=Custom%20Wizard%20Support"; "https://coop.pavilion.tech/new-message?username=support&title=Custom%20Wizard%20Support";
const MANAGER_CATEGORY = 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 { export default class SubscriptionService extends Service {
@tracked subscribed = false; @tracked subscribed = false;
@ -16,7 +16,6 @@ export default class SubscriptionService extends Service {
@tracked communitySubscription = false; @tracked communitySubscription = false;
@tracked standardSubscription = false; @tracked standardSubscription = false;
@tracked subscriptionAttributes = {}; @tracked subscriptionAttributes = {};
subscriptionLandingUrl = PRODUCT_PAGE;
async init() { async init() {
super.init(...arguments); super.init(...arguments);
@ -49,10 +48,6 @@ export default class SubscriptionService extends Service {
this.standardSubscription = this.subscriptionType === "standard"; this.standardSubscription = this.subscriptionType === "standard";
} }
get subscriptionLink() {
return this.subscriptionLandingUrl;
}
get subscriptionCtaLink() { get subscriptionCtaLink() {
switch (this.subscriptionType) { switch (this.subscriptionType) {
case "none": case "none":

Datei anzeigen

@ -823,25 +823,6 @@ $error: #ef1700;
vertical-align: middle; 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 { .wizard-subscription-container {
width: 100%; width: 100%;
padding: 1em; padding: 1em;
@ -867,45 +848,49 @@ $error: #ef1700;
} }
} }
.wizard-subscription-badge { .btn.wizard-subscription-badge {
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
max-height: 34px;
box-sizing: border-box; box-sizing: border-box;
position: relative; position: relative;
cursor: pointer; cursor: pointer;
padding: 0.5em 0.65em; padding: 0.5em 0.65em;
background-color: rgba($primary-medium, 0.05); background-color: rgba($primary-medium, 0.05);
border: 1.5px solid rgba($primary-medium, 0.5); border: 1.5px solid rgba($primary-medium, 0.5);
color: $primary-medium; color: var(--secondary);
&:hover { svg.d-icon-pavilion-logo {
color: $primary-medium;
}
svg {
width: 15px; width: 15px;
height: 15px; height: 15px;
margin-right: 0.45em; margin-right: 0.45em;
margin-bottom: 0.15em; margin-bottom: 0.15em;
color: var(--secondary);
}
&.none {
background-color: var(--subscription-none);
border: 1.5px solid var(--subscription-none);
} }
&.standard { &.standard {
background-color: rgba($subscription_standard, 0.05); background-color: var(--subscription-standard);
border: 1.5px solid rgba($subscription_standard, 0.5); border: 1.5px solid var(--subscription-standard);
color: $subscription_standard;
} }
&.business { &.business {
background-color: $subscription_business; background-color: var(--subscription-business);
border: 1.5px solid $subscription_business; border: 1.5px solid var(--subscription-business);
color: $secondary;
} }
&.community { &.community {
background-color: $subscription_community; background-color: var(--subscription-community);
border: 1.5px solid $pavilion_primary; border: 1.5px solid var(--pavilion-primary);
color: $pavilion_primary; color: var(--pavilion-primary);
&:hover,
svg {
color: var(--pavilion-primary);
}
} }
.d-icon { .d-icon {
@ -939,13 +924,6 @@ $error: #ef1700;
button.update { button.update {
width: 40px; width: 40px;
height: 34px;
}
.btn-pavilion-support {
&:hover {
color: var(--pavilion-secondary);
}
} }
.wizard-subscription-badge { .wizard-subscription-badge {
@ -953,31 +931,18 @@ $error: #ef1700;
svg { svg {
margin-right: 0.45em; 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 { .btn-primary {
margin-right: 5px; margin-right: 5px;
} }
.deauthorize {
background-color: var(--secondary);
&:hover {
color: var(--primary);
}
}
} }
} }

Datei anzeigen

@ -2,6 +2,7 @@ $pavilion_primary: #3c1c8c;
$pavilion_secondary: #ffffff; $pavilion_secondary: #ffffff;
$pavilion_warning: rgb(243, 163, 61); $pavilion_warning: rgb(243, 163, 61);
$subscription_none: $pavilion_primary;
$subscription_standard: $pavilion_primary; $subscription_standard: $pavilion_primary;
$subscription_business: #333; $subscription_business: #333;
$subscription_community: #fff; $subscription_community: #fff;
@ -10,6 +11,7 @@ $subscription_community: #fff;
--pavilion-primary: #{$pavilion_primary}; --pavilion-primary: #{$pavilion_primary};
--pavilion-secondary: #{$pavilion_secondary}; --pavilion-secondary: #{$pavilion_secondary};
--pavilion-warning: #{$pavilion_warning}; --pavilion-warning: #{$pavilion_warning};
--subscription-none: #{$subscription_none};
--subscription-standard: #{$subscription_standard}; --subscription-standard: #{$subscription_standard};
--subscription-business: #{$subscription_business}; --subscription-business: #{$subscription_business};
--subscription-community: #{$subscription_community}; --subscription-community: #{$subscription_community};

Datei anzeigen

@ -167,13 +167,13 @@ en:
destroy_complete: Destruction complete destroy_complete: Destruction complete
subscription: subscription:
documentation: Check out the subscription documentation documentation: Check out the subscription documentation
authorize: "Authorize this forum to use your Custom Wizard subscription plan on %{server}." authorize: "Connect 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}." 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_expiring: "Your subscription is active, but will expire in the next 48 hours."
subscription_active: "Your subscription is active." subscription_active: "Your subscription is active."
subscription_inactive: "Your subscription is inactive on this forum. Read more in <a href='https://pavilion.tech/products/discourse-custom-wizard-plugin/documentation/'>the documentation</a>." subscription_inactive: "Your subscription is inactive on this forum. Read more in <a href='https://pavilion.tech/products/discourse-custom-wizard-plugin/documentation/'>the documentation</a>."
unauthorized: "You're unauthorized. If you have a subscription, it will become inactive in the next 48 hours." unauthorized: "You're not connected. If you have a subscription, it will become inactive in the next 48 hours."
unauthorize_failed: Failed to unauthorize. unauthorize_failed: Failed to disconnect.
submissions: submissions:
select: "Select a wizard to see its submissions" select: "Select a wizard to see its submissions"
viewing: "You're viewing the submissions of the %{wizardName}" viewing: "You're viewing the submissions of the %{wizardName}"
@ -546,11 +546,11 @@ en:
subscription: subscription:
title: Subscriber Features title: Subscriber Features
authorize: authorize:
label: Authorize label: Connect
title: Authorize your subscription on this site title: Connect your subscription to this site
deauthorize: deauthorize:
label: deauthorize label: Disconnect
title: Deauthorize your subscription on this site title: Disconnect your subscription from this site
update: update:
title: "Update subscription status" title: "Update subscription status"
subscribed: subscribed:
@ -563,25 +563,17 @@ en:
selector: not subscribed selector: not subscribed
type: type:
none: none:
label: Not Subscribed label: Subscribe
title: There is no Custom Wizard subscription active on this forum. title: There is no Custom Wizard subscription active on this forum.
business: business:
label: Business label: Support
title: There is a Custom Wizard Business subscription active on this forum. title: There is a Custom Wizard Business subscription active on this forum.
standard: standard:
label: Standard label: Support
title: There is a Custom Wizard Standard subscription active on this forum. title: There is a Custom Wizard Standard subscription active on this forum.
community: 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 label: Support
title: Get support for your subscription. title: There is a Custom Wizard Community subscription active on this forum.
wizard_js: wizard_js:
group: group:

Datei anzeigen

@ -253,11 +253,14 @@ describe CustomWizard::Action do
end end
it '#send_message' do 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 wizard_template['actions'] << send_message
update_template(wizard_template) update_template(wizard_template)
User.create(username: 'angus1', email: "angus1@email.com")
wizard = CustomWizard::Builder.new(@template[:id], user).build wizard = CustomWizard::Builder.new(@template[:id], user).build
wizard.create_updater(wizard.steps[0].id, {}).update wizard.create_updater(wizard.steps[0].id, {}).update
wizard.create_updater(wizard.steps[1].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.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(post.exists?).to eq(true)
expect(target_user.reload.notifications.count).to eq(1)
end end
it '#send_message allows using multiple targets' do 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 wizard_template['actions'] << send_message_multi
update_template(wizard_template) 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 = CustomWizard::Builder.new(@template[:id], user).build
wizard.create_updater(wizard.steps[0].id, {}).update wizard.create_updater(wizard.steps[0].id, {}).update
wizard.create_updater(wizard.steps[1].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.exists?).to eq(true)
expect(topic.first.all_allowed_users.map(&:username)).to include('angus1', 'faiz') expect(topic.first.all_allowed_users.map(&:username)).to include(user1.username, user2.username)
expect(topic.first.allowed_groups.map(&:name)).to include('cool_group', 'cool_group_1') expect(topic.first.allowed_groups.map(&:name)).to include(group1.name, group2.name)
expect(post.exists?).to eq(true) expect(post.exists?).to eq(true)
expect(user1.reload.notifications.count).to eq(1)
expect(user2.reload.notifications.count).to eq(1)
end end
it "send_message works with guests are permitted" do it "send_message works with guests are permitted" do

Datei anzeigen

@ -71,10 +71,6 @@ acceptance("Admin | Custom Wizard Business Subscription", function (needs) {
); );
assert.strictEqual( assert.strictEqual(
query("button.wizard-subscription-badge span").innerText.trim(), query("button.wizard-subscription-badge span").innerText.trim(),
"Business"
);
assert.strictEqual(
query("button.btn-pavilion-support span").innerText.trim(),
"Support" "Support"
); );
}); });

Datei anzeigen

@ -71,10 +71,6 @@ acceptance("Admin | Custom Wizard Standard Subscription", function (needs) {
); );
assert.strictEqual( assert.strictEqual(
query("button.wizard-subscription-badge span").innerText.trim(), query("button.wizard-subscription-badge span").innerText.trim(),
"Standard"
);
assert.strictEqual(
query("button.btn-pavilion-support span").innerText.trim(),
"Support" "Support"
); );
}); });

Datei anzeigen

@ -84,11 +84,7 @@ acceptance("Admin | Custom Wizard Unsubscribed", function (needs) {
); );
assert.strictEqual( assert.strictEqual(
query("button.wizard-subscription-badge span").innerText.trim(), query("button.wizard-subscription-badge span").innerText.trim(),
"Not Subscribed" "Subscribe"
);
assert.strictEqual(
query("button.btn-pavilion-support span").innerText.trim(),
"Get a Subscription"
); );
}); });