From 709aebb593cd9b1c6e9704776c3c16a2168d6bf2 Mon Sep 17 00:00:00 2001
From: Rimian Perkins
Date: Sat, 30 Nov 2019 16:39:28 +1100
Subject: [PATCH] set the currency in the plan
---
app/controllers/admin/plans_controller.rb | 4 +++-
...scourse-patrons-products-show-plans-show.js.es6 | 3 +++
.../discourse/helpers/format-currency.js.es6 | 4 +++-
...scourse-patrons-products-show-plans-show.js.es6 | 1 +
...-discourse-patrons-products-show-plans-show.hbs | 7 ++++++-
assets/stylesheets/common/discourse-patrons.scss | 8 ++++++++
spec/requests/admin/plans_controller_spec.rb | 14 ++++++++++++++
7 files changed, 38 insertions(+), 3 deletions(-)
diff --git a/app/controllers/admin/plans_controller.rb b/app/controllers/admin/plans_controller.rb
index d9132df..c7cce3b 100644
--- a/app/controllers/admin/plans_controller.rb
+++ b/app/controllers/admin/plans_controller.rb
@@ -42,7 +42,9 @@ module DiscoursePatrons
begin
plan = ::Stripe::Plan.retrieve(params[:id])
- render_json_dump plan
+ serialized = plan.to_h.merge(currency: plan[:currency].upcase)
+
+ render_json_dump serialized
rescue ::Stripe::InvalidRequestError => e
return render_json_error e.message
diff --git a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show-plans-show.js.es6
index b0223f4..743b8c2 100644
--- a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show-plans-show.js.es6
+++ b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show-plans-show.js.es6
@@ -2,6 +2,9 @@ import computed from "ember-addons/ember-computed-decorators";
import DiscourseURL from "discourse/lib/url";
export default Ember.Controller.extend({
+ // Also defined in settings.
+ currencies: ['AUD', 'CAD', 'EUR', 'GBP', 'USD'],
+
@computed("model.plan.isNew")
planFieldDisabled(isNew) {
return !isNew;
diff --git a/assets/javascripts/discourse/helpers/format-currency.js.es6 b/assets/javascripts/discourse/helpers/format-currency.js.es6
index afc5978..76fdc77 100644
--- a/assets/javascripts/discourse/helpers/format-currency.js.es6
+++ b/assets/javascripts/discourse/helpers/format-currency.js.es6
@@ -1,11 +1,13 @@
export default Ember.Helper.helper(function(params) {
let currencySign;
- switch (Discourse.SiteSettings.discourse_patrons_currency) {
+ switch (params[0]) {
case "EUR":
+ case "eur":
currencySign = "€";
break;
case "GBP":
+ case "gbp":
currencySign = "£";
break;
default:
diff --git a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show-plans-show.js.es6
index a4e17c9..bfbd22b 100644
--- a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show-plans-show.js.es6
+++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show-plans-show.js.es6
@@ -13,6 +13,7 @@ export default Discourse.Route.extend({
plan = AdminPlan.create({
active: true,
isNew: true,
+ currency: Discourse.SiteSettings.discourse_patrons_currency,
product: product.get("id")
});
} else {
diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show-plans-show.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show-plans-show.hbs
index c3f583c..869d670 100644
--- a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show-plans-show.hbs
+++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show-plans-show.hbs
@@ -22,7 +22,12 @@
- {{input type="text" name="name" value=model.plan.amountDollars disabled=planFieldDisabled}}
+ {{#if planFieldDisabled}}
+ {{input class="plan-amount plan-currency" disabled=true value=model.plan.currency}}
+ {{else}}
+ {{combo-box disabled=planFieldDisabled content=currencies value=model.plan.currency}}
+ {{/if}}
+ {{input class="plan-amount" type="text" name="name" value=model.plan.amountDollars disabled=planFieldDisabled}}