diff --git a/assets/javascripts/discourse/components/create-coupon-form.hbs b/assets/javascripts/discourse/components/create-coupon-form.hbs
deleted file mode 100644
index 741bca3..0000000
--- a/assets/javascripts/discourse/components/create-coupon-form.hbs
+++ /dev/null
@@ -1,47 +0,0 @@
-
diff --git a/assets/javascripts/discourse/components/modal/subscription-invoices.hbs b/assets/javascripts/discourse/components/modal/subscription-invoices.hbs
deleted file mode 100644
index bae5c6a..0000000
--- a/assets/javascripts/discourse/components/modal/subscription-invoices.hbs
+++ /dev/null
@@ -1,22 +0,0 @@
-
- <:body>
- {{i18n "discourse_subscriptions.user.invoices.modal.description" email=this.currentUser.email}}
-
- <:footer>
-
- {{d-icon "external-link-alt"}}
-
- {{i18n "discourse_subscriptions.user.invoices.modal.btn"}}
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/javascripts/discourse/components/modal/subscription-invoices.js b/assets/javascripts/discourse/components/modal/subscription-invoices.js
deleted file mode 100644
index 108c548..0000000
--- a/assets/javascripts/discourse/components/modal/subscription-invoices.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import Component from "@glimmer/component";
-import { inject as service } from "@ember/service";
-
-export default class SubscriptionInvoices extends Component {
- @service currentUser;
-}
diff --git a/assets/javascripts/discourse/components/payment-plan.hbs b/assets/javascripts/discourse/components/payment-plan.hbs
deleted file mode 100644
index 873fa73..0000000
--- a/assets/javascripts/discourse/components/payment-plan.hbs
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
- {{#if recurringPlan}}
- {{i18n (concat "discourse_subscriptions.plans.interval.adverb." plan.recurring.interval)}}
- {{else}}
- {{i18n "discourse_subscriptions.one_time_payment"}}
- {{/if}}
-
-
-
- {{format-currency plan.currency plan.amountDollars}}
-
\ No newline at end of file
diff --git a/assets/javascripts/discourse/components/product-item.hbs b/assets/javascripts/discourse/components/product-item.hbs
deleted file mode 100644
index 33fba67..0000000
--- a/assets/javascripts/discourse/components/product-item.hbs
+++ /dev/null
@@ -1,37 +0,0 @@
-{{product.name}}
-
-
- {{html-safe product.description}}
-
-
-{{#if isLoggedIn}}
-
- {{#if product.custom}}
-
- {{product.btnLabel}}
-
- {{else}}
- {{#if product.repurchaseable}}
- {{#link-to "subscribe.show" product.id class="btn btn-primary"}}
- {{i18n "discourse_subscriptions.subscribe.title"}}
- {{/link-to}}
- {{#if product.subscribed}}
- {{#link-to "user.billing.subscriptions" currentUser.username class="billing-link"}}
- {{i18n "discourse_subscriptions.subscribe.view_past"}}
- {{/link-to}}
- {{/if}}
- {{else}}
- {{#if product.subscribed}}
-
✓ {{i18n "discourse_subscriptions.subscribe.purchased"}}
- {{#link-to "user.billing.subscriptions" currentUser.username class="billing-link"}}
- {{i18n "discourse_subscriptions.subscribe.go_to_billing"}}
- {{/link-to}}
- {{else}}
- {{#link-to "subscribe.show" product.id disabled=product.subscribed class="btn btn-primary"}}
- {{i18n "discourse_subscriptions.subscribe.title"}}
- {{/link-to}}
- {{/if}}
- {{/if}}
- {{/if}}
-
-{{/if}}
diff --git a/assets/javascripts/discourse/components/subscription-data.gjs b/assets/javascripts/discourse/components/subscription-data.gjs
deleted file mode 100644
index 261f07d..0000000
--- a/assets/javascripts/discourse/components/subscription-data.gjs
+++ /dev/null
@@ -1,21 +0,0 @@
-import Component from "@glimmer/component";
-import SubscriptionDomains from "./subscription-domains";
-
-export default class SubscriptionDomain extends Component {
-
-
- {{@data.resource}} |
-
-
- {{#each @data.products as |product|}}
- - {{product}}
- {{/each}}
-
- |
-
-
- |
- {{@data.domain_limit}} |
-
-
-}
diff --git a/assets/javascripts/discourse/components/subscription-domain.gjs b/assets/javascripts/discourse/components/subscription-domain.gjs
deleted file mode 100644
index 2f6392e..0000000
--- a/assets/javascripts/discourse/components/subscription-domain.gjs
+++ /dev/null
@@ -1,31 +0,0 @@
-import Component from "@glimmer/component";
-import { action } from "@ember/object";
-import DButton from "discourse/components/d-button";
-import { tracked } from "@glimmer/tracking";
-
-export default class SubscriptionDomain extends Component {
- @tracked removing;
-
- @action
- removeDomain() {
- this.removing = true;
- this.args.remove(this.args.domain)
- .finally(() => {
- if (this.isDestroying || this.isDestroyed) {
- return;
- }
- this.removing = false;
- })
- }
-
-
- {{@domain}}
-
-
-}
\ No newline at end of file
diff --git a/assets/javascripts/discourse/components/subscription-domains.gjs b/assets/javascripts/discourse/components/subscription-domains.gjs
deleted file mode 100644
index 27c5038..0000000
--- a/assets/javascripts/discourse/components/subscription-domains.gjs
+++ /dev/null
@@ -1,40 +0,0 @@
-import Component from "@glimmer/component";
-import { action } from "@ember/object";
-import DButton from "discourse/components/d-button";
-import { tracked } from "@glimmer/tracking";
-import { popupAjaxError } from "discourse/lib/ajax-error";
-import { ajax } from "discourse/lib/ajax";
-import SubscriptionDomain from "./subscription-domain";
-
-export default class SubscriptionDomains extends Component {
- @tracked domains;
-
- constructor() {
- super(...arguments);
- this.domains = this.args.domains;
- }
-
- @action
- removeDomain(domain) {
- return ajax('/subscription-server/user-authorizations', {
- type: 'DELETE',
- data: {
- domain
- }
- })
- .catch(popupAjaxError)
- .then(() => {
- this.domains = this.domains.filter((d) => (d !== domain));
- });
- }
-
-
-
- {{#each this.domains as |domain|}}
- -
-
-
- {{/each}}
-
-
-}
\ No newline at end of file
diff --git a/assets/javascripts/discourse/components/subscription-invoices-btn.gjs b/assets/javascripts/discourse/components/subscription-invoices-btn.gjs
deleted file mode 100644
index b32fba7..0000000
--- a/assets/javascripts/discourse/components/subscription-invoices-btn.gjs
+++ /dev/null
@@ -1,23 +0,0 @@
-import Component from "@glimmer/component";
-import { action } from "@ember/object";
-import { inject as service } from "@ember/service";
-import DButton from "discourse/components/d-button";
-import SubscriptionInvoicesModal from "./modal/subscription-invoices";
-
-export default class SubscriptionInvoicesBtn extends Component {
- @service modal;
-
- @action
- showModal() {
- this.modal.show(SubscriptionInvoicesModal, { model: this.args });
- }
-
-
-
-
-}
diff --git a/assets/javascripts/discourse/components/subscriptions-banner.hbs b/assets/javascripts/discourse/components/subscriptions-banner.hbs
deleted file mode 100644
index 8d15644..0000000
--- a/assets/javascripts/discourse/components/subscriptions-banner.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{text}}
diff --git a/assets/javascripts/discourse/components/subscriptions-banner.js b/assets/javascripts/discourse/components/subscriptions-banner.js
deleted file mode 100644
index a6eaeb5..0000000
--- a/assets/javascripts/discourse/components/subscriptions-banner.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import Component from "@ember/component";
-import discourseComputed from "discourse-common/utils/decorators";
-
-export default Component.extend({
- classNameBindings: [":subscriptions-banner", "showBanner:visible"],
-
- @discourseComputed("currentPath", "text")
- showBanner(currentPath, text) {
- return currentPath.includes('subscribe') && text && text.length > 2;
- },
-
- @discourseComputed()
- text() {
- return this.siteSettings.custom_wizard_subscription_banner;
- }
-});
diff --git a/assets/javascripts/discourse/connectors/top-notices/subscriptions-banner-container.hbs b/assets/javascripts/discourse/connectors/top-notices/subscriptions-banner-container.hbs
deleted file mode 100644
index b4f64b0..0000000
--- a/assets/javascripts/discourse/connectors/top-notices/subscriptions-banner-container.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{subscriptions-banner currentPath=currentPath}}
diff --git a/assets/javascripts/discourse/initializers/subscription-server-initializer.js b/assets/javascripts/discourse/initializers/subscription-server-initializer.js
deleted file mode 100644
index 61a6746..0000000
--- a/assets/javascripts/discourse/initializers/subscription-server-initializer.js
+++ /dev/null
@@ -1,106 +0,0 @@
-import { withPluginApi } from "discourse/lib/plugin-api";
-import discourseComputed from "discourse-common/utils/decorators";
-import { popupAjaxError } from "discourse/lib/ajax-error";
-import { ajax } from "discourse/lib/ajax";
-import { customProducts, productOrder } from '../lib/products';
-
-export default {
- name: 'subscription-servier-initializer',
- initialize() {
- withPluginApi('0.8.30', api => {
- api.modifyClass('component:payment-plan', {
- pluginId: 'discourse-subscription-server',
- classNameBindings: [':btn-pavilion-subscribe', 'selectedClass'],
- tagName: "div",
-
- click() {
- this.clickPlan(this.plan);
- }
- });
-
- api.modifyClass('route:admin-plugins-discourse-subscriptions-coupons', {
- pluginId: 'discourse-subscription-server',
-
- afterModel() {
- const AdminProduct = requirejs("discourse/plugins/discourse-subscriptions/discourse/models/admin-product").default;
- return AdminProduct.findAll().then(products => {
- this.set('products', products);
- });
- },
-
- setupController(controller, model) {
- controller.setProperties({
- model,
- products: this.products
- })
- }
- });
-
- api.modifyClass('controller:admin-plugins-discourse-subscriptions-coupons', {
- pluginId: 'discourse-subscription-server',
-
- actions: {
- createNewCoupon(params) {
- const data = {
- promo: params.promo,
- discount_type: params.discount_type,
- discount: params.discount,
- active: params.active,
- applies_to_products: params.applies_to_products
- };
-
- return ajax("/s/admin/coupons", {
- method: "post",
- data,
- })
- .then(() => {
- this.send("closeCreateForm");
- this.send("reloadModel");
- })
- .catch(popupAjaxError);
- }
- }
- });
-
- const couponController = api._lookupContainer('controller:admin-plugins-discourse-subscriptions-coupons');
- api.modifyClass('component:create-coupon-form', {
- pluginId: 'discourse-subscription-server',
-
- @discourseComputed
- products() {
- return couponController.get('products');
- },
-
- actions: {
- createNewCoupon() {
- const createParams = {
- promo: this.promoCode,
- discount_type: this.discountType,
- discount: this.discount,
- active: this.active,
- applies_to_products: [this.productId]
- };
- this.create(createParams);
- },
- },
- });
-
- api.modifyClass('route:subscribe-index', {
- pluginId: 'discourse-subscription-server',
-
- setupController(controller, model) {
- const stripeProducts = model;
- const Product = requirejs("discourse/plugins/discourse-subscriptions/discourse/models/product").default;
- const nonStripeProducts = customProducts().map((product) => Product.create(product));
- const products = stripeProducts
- .concat(nonStripeProducts)
- .filter(p => (!p.hidden))
- .sort(function(a,b) {
- return productOrder.indexOf(a.name) - productOrder.indexOf(b.name);
- });
- controller.set('model', products);
- }
- });
- })
- }
-}
diff --git a/assets/javascripts/discourse/lib/products.js b/assets/javascripts/discourse/lib/products.js
deleted file mode 100644
index 090f0e6..0000000
--- a/assets/javascripts/discourse/lib/products.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import { helperContext } from "discourse-common/lib/helpers";
-
-const customProducts = () => {
- const siteSettings = helperContext().siteSettings;
-
- return [
- {
- name: 'Custom Wizard Community',
- description: `${siteSettings.custom_wizard_community_subscription_description}
`,
- btnLabel: 'Apply',
- btnHref: siteSettings.custom_wizard_community_subscription_href,
- custom: true,
- },
- {
- name: 'Custom Wizard Enterprise',
- description: `${siteSettings.custom_wizard_enterprise_subscription_description}
`,
- btnLabel: 'Contact Us',
- btnHref: siteSettings.custom_wizard_enterprise_subscription_href,
- custom: true,
- }
- ];
-}
-
-const productOrder = [
- 'Custom Wizard Community',
- 'Custom Wizard Small Business',
- 'Custom Wizard Business',
- 'Custom Wizard Enterprise'
-];
-
-export {
- customProducts,
- productOrder
-}
diff --git a/assets/javascripts/discourse/routes/subscribe-alias.js b/assets/javascripts/discourse/routes/subscribe-alias.js
deleted file mode 100644
index 8642190..0000000
--- a/assets/javascripts/discourse/routes/subscribe-alias.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import Route from "@ember/routing/route";
-
-export default Route.extend({
- afterModel() {
- return this.replaceWith("subscribe");
- }
-});
diff --git a/assets/javascripts/discourse/routes/user-billing-authorizations.js b/assets/javascripts/discourse/routes/user-billing-authorizations.js
deleted file mode 100644
index fefdd59..0000000
--- a/assets/javascripts/discourse/routes/user-billing-authorizations.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import Route from "@ember/routing/route";
-
-export default Route.extend({
- templateName: "user/billing/authorizations",
-
- model() {
- return this.modelFor('user');
- }
-});
diff --git a/assets/javascripts/discourse/subscriptions-route-map.js b/assets/javascripts/discourse/subscriptions-route-map.js
deleted file mode 100644
index 0227b0a..0000000
--- a/assets/javascripts/discourse/subscriptions-route-map.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default function () {
- this.route("subscribeAlias", { path: "/subscribe" });
-}
diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-subscriptions-products-show.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-subscriptions-products-show.hbs
deleted file mode 100644
index 8883530..0000000
--- a/assets/javascripts/discourse/templates/admin/plugins-discourse-subscriptions-products-show.hbs
+++ /dev/null
@@ -1,175 +0,0 @@
-{{i18n "discourse_subscriptions.admin.products.title"}}
-
-
-
-{{#unless model.product.isNew}}
- {{i18n "discourse_subscriptions.admin.plans.title"}}
-
-
-
-
- {{i18n "discourse_subscriptions.admin.plans.plan.nickname"}} |
- {{i18n "discourse_subscriptions.admin.plans.plan.interval"}} |
- {{i18n "discourse_subscriptions.admin.plans.plan.created_at"}} |
- {{i18n "discourse_subscriptions.admin.plans.plan.group"}} |
- {{i18n "discourse_subscriptions.admin.plans.plan.active"}} |
-
- {{i18n "discourse_subscriptions.admin.plans.plan.amount"}}
- |
-
- {{#link-to
- "adminPlugins.discourse-subscriptions.products.show.plans.show"
- model.product.id
- "new"
- class="btn"
- }}
- {{i18n "discourse_subscriptions.admin.plans.operations.add"}}
- {{/link-to}}
- |
-
-
-
- {{#each model.plans as |plan|}}
-
- {{plan.nickname}} |
- {{plan.recurring.interval}} |
- {{format-unix-date plan.created}} |
- {{plan.metadata.group_name}} |
- {{plan.active}} |
-
- {{format-currency plan.currency plan.amountDollars}}
- |
-
- {{#link-to
- "adminPlugins.discourse-subscriptions.products.show.plans.show"
- model.product.id
- plan.id
- class="btn no-text btn-icon"
- }}
- {{d-icon "far-edit"}}
- {{/link-to}}
- |
-
- {{else}}
-
-
-
- {{i18n
- "discourse_subscriptions.admin.products.product.plan_help"
- }}
- |
-
- {{/each}}
-
-
-
-{{/unless}}
-
-
- {{d-button label="cancel" action=(action "cancelProduct") icon="times"}}
-
- {{#if model.product.isNew}}
- {{d-button
- label="discourse_subscriptions.admin.products.operations.create"
- action=(action "createProduct")
- icon="plus"
- class="btn btn-primary"
- }}
- {{else}}
- {{d-button
- label="discourse_subscriptions.admin.products.operations.update"
- action=(action "updateProduct")
- icon="check"
- class="btn btn-primary"
- }}
- {{/if}}
-
-
-{{outlet}}
diff --git a/assets/javascripts/discourse/templates/user/billing.hbs b/assets/javascripts/discourse/templates/user/billing.hbs
deleted file mode 100644
index 36241a1..0000000
--- a/assets/javascripts/discourse/templates/user/billing.hbs
+++ /dev/null
@@ -1,29 +0,0 @@
-{{#d-section
- pageClass="user-billing"
- class="user-secondary-navigation"
- scrollTop="false"
-}}
-
-
-
-
-
-
-
-
-
-
-{{/d-section}}
-
-
diff --git a/assets/javascripts/discourse/templates/user/billing/authorizations.hbs b/assets/javascripts/discourse/templates/user/billing/authorizations.hbs
deleted file mode 100644
index 75ad03d..0000000
--- a/assets/javascripts/discourse/templates/user/billing/authorizations.hbs
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
- {{i18n "discourse_subscriptions.user.authorizations.resource"}} |
- {{i18n "discourse_subscriptions.user.authorizations.products"}} |
- {{i18n "discourse_subscriptions.user.authorizations.domains"}} |
- {{i18n "discourse_subscriptions.user.authorizations.domain_limit"}} |
-
-
- {{#each model.subscription_domains as |data|}}
-
- {{/each}}
-
-
diff --git a/assets/javascripts/discourse/user-subscriptions-route-map.js b/assets/javascripts/discourse/user-subscriptions-route-map.js
deleted file mode 100644
index 47fc38c..0000000
--- a/assets/javascripts/discourse/user-subscriptions-route-map.js
+++ /dev/null
@@ -1,13 +0,0 @@
-export default {
- resource: "user",
- path: "users/:username",
- map() {
- this.route("billing", function () {
- this.route("payments");
- this.route("authorizations");
- this.route("subscriptions", function () {
- this.route("card", { path: "/card/:stripe-subscription-id" });
- });
- });
- },
-};
diff --git a/assets/stylesheets/common/common.scss b/assets/stylesheets/common/common.scss
deleted file mode 100644
index 1ca0a3d..0000000
--- a/assets/stylesheets/common/common.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-.btn-pavilion-subscribe {
- border: 2px solid var(--tertiary);
- padding: 2em;
- margin-right: 2em;
- cursor: pointer;
- text-align: center;
- display: flex;
- align-items: center;
- justify-content: center;
- flex-direction: column;
- line-height: unset;
-
- &.selected {
- background-color: var(--tertiary);
- color: var(--secondary);
- }
-}
-
-.discourse-subscriptions-section-columns {
- margin: 20px 0;
- padding: 20px 0;
-}
-
-.product-list {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(48.5%, 1fr));
- grid-gap: 2em;
- margin: 2em 0 4em 0;
-
- .product {
- margin: 0;
- width: unset;
- }
-}
-
-.subscriptions-banner {
- display: none;
- padding: 1rem;
- margin-bottom: 1rem;
- background-color: rgba(255, 200, 0, 0.25);
-
- &.visible {
- display: block;
- }
-}
-
-.subscription-data {
- ul {
- list-style: none;
- margin: 0;
- }
- td {
- vertical-align: top;
- }
-}
-
-.subscription-domain {
- display: flex;
- gap: 1em;
- align-items: center;
-
- .remove-domain {
- background-color: unset;
- }
-}
-
-.discourse-subscriptions-invoices-btn {
- margin-left: auto;
-
- .d-button-label {
- color: var(--secondary) !important;
- }
-}
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
deleted file mode 100644
index 73635f9..0000000
--- a/config/locales/client.en.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-en:
- site_settings:
- custom_wizard_community_subscription_description: Description of the community subscription
- custom_wizard_enterprise_subscription_description: Description of the enterprise subscription
- custom_wizard_community_subscription_href: Community subscription href
- custom_wizard_enterprise_subscription_href: Enterprise subscription href
- custom_wizard_subscription_banner: Notice to show on subscription routes
- js:
- discourse_subscriptions:
- admin:
- products:
- product:
- plugin_name: Plugin Name
- plugin_name_help: Name of plugin subscription is for. If filled, will generate API Key with subscription.
- navigation:
- authorizations: Authorizations
- user:
- authorizations:
- resource: Resource
- products: Products
- domains: Domains
- domain_limit: Domain Limit
- remove_domain:
- title: Remove domain
- invoices:
- btn:
- label: "Invoices"
- title: "Your subscription invoices"
- modal:
- title: Your Subscription Invoices
- description: Click "Customer Portal" to go to Pavilion's Stripe Customer Portal where you can access your invoices. Sign in using %{email}.
- btn: "Customer Portal"
- admin:
- products:
- product:
- hidden: Hidden
- hidden_help: "Don't display the product in the subscriptions index."
\ No newline at end of file
diff --git a/config/settings.yml b/config/settings.yml
index 73ef249..d7d9bc5 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -1,21 +1,8 @@
plugins:
- subscription_server_enabled: true
+ subscription_server_enabled:
+ client: true
+ default: true
subscription_server_supplier_name: ''
subscription_server_subscriptions:
type: list
- default: ''
- custom_wizard_community_subscription_description:
- client: true
- default: 'Custom Wizard Community Subscription Description'
- custom_wizard_enterprise_subscription_description:
- client: true
- default: 'Custom Wizard Enterprise Subscription Description'
- custom_wizard_community_subscription_href:
- client: true
- default: 'https://coop.pavilion.tech/w/community-subscription'
- custom_wizard_enterprise_subscription_href:
- client: true
- default: 'https://calendly.com/book-pavilion/initial-consult'
- custom_wizard_subscription_banner:
- client: true
default: ''
\ No newline at end of file
diff --git a/plugin.rb b/plugin.rb
index a77a944..d34edef 100644
--- a/plugin.rb
+++ b/plugin.rb
@@ -8,7 +8,6 @@
# contact_emails: development@pavilion.tech
enabled_site_setting :subscription_server_enabled
-register_asset "stylesheets/common/common.scss"
after_initialize do
%w[
@@ -136,4 +135,10 @@ def self.class_update_subscriptions_from_csv(path)
end
end
end
+
+ on(:after_plugin_activation) do
+ Discourse.plugins.sort_by! do |plugin|
+ plugin.name == 'discourse-subscription-server' ? 1 : 0
+ end
+ end
end