From 31984dd810cbfce135093085ceadbcd8f507e9a3 Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Thu, 2 Mar 2017 11:18:36 -0800 Subject: [PATCH] BuyGemsModal handles if there is no monthly subscription --- app/locale/en.coffee | 3 ++ app/models/User.coffee | 3 ++ app/templates/play/modal/buy-gems-modal.jade | 33 ++++++++++++++------ app/views/play/modal/BuyGemsModal.coffee | 1 + server/middleware/products.coffee | 4 +++ 5 files changed, 34 insertions(+), 10 deletions(-) diff --git a/app/locale/en.coffee b/app/locale/en.coffee index 9d2b20821c2..3a1f4d7d16b 100644 --- a/app/locale/en.coffee +++ b/app/locale/en.coffee @@ -607,6 +607,9 @@ prompt_button: "Enter Shop" recovered: "Previous gems purchase recovered. Please refresh the page." price: "x{{gems}} / mo" + buy_premium: "Buy Premium" + purchase: "Purchase" + purchased: "Purchased" subscribe: subscribe_modal_title: "CodeCombat Premium" diff --git a/app/models/User.coffee b/app/models/User.coffee index 2ad8ea8153c..25b4d5f2ea6 100644 --- a/app/models/User.coffee +++ b/app/models/User.coffee @@ -220,6 +220,9 @@ module.exports = class User extends CocoModel return true if me.isAdmin() return true if me.hasSubscription() return false + + isForeverPremium: -> + return @get('stripe')?.free is true isOnPremiumServer: -> return true if me.get('country') in ['brazil'] diff --git a/app/templates/play/modal/buy-gems-modal.jade b/app/templates/play/modal/buy-gems-modal.jade index 3d91d029c15..e6fa896bb06 100644 --- a/app/templates/play/modal/buy-gems-modal.jade +++ b/app/templates/play/modal/buy-gems-modal.jade @@ -33,16 +33,29 @@ a(href="http://www.codecombat.nl/kopen", target="_blank") button.btn.btn-ideal.btn-illustrated.btn-lg.btn-succes PREPAID CODES - .product - h4.subscription-gem-amount x{{gems}} / mo - h3(data-i18n="account.subscription") - if me.hasSubscription() - button.disabled.start-subscription-button.btn.btn-lg.btn-illustrated.btn-success - | ✓ - span(data-i18n="account.subscribed") - else - button.start-subscription-button.btn.btn-lg.btn-illustrated.btn-success(data-i18n="subscribe.subscribe_title") Subscribe - + if view.basicProduct + .product + h4.subscription-gem-amount x{{gems}} / mo + h3(data-i18n="account.subscription") + if me.hasSubscription() + button.disabled.start-subscription-button.btn.btn-lg.btn-illustrated.btn-success + | ✓ + span(data-i18n="account.subscribed") + else + button.start-subscription-button.btn.btn-lg.btn-illustrated.btn-success(data-i18n="subscribe.subscribe_title") + + else if view.lifetimeProduct + .product + h4.subscription-gem-amount x#{view.lifetimeProduct.get('gems')} + h3(data-i18n="buy_gems.buy_premium") + if me.isForeverPremium() + button.disabled.start-subscription-button.btn.btn-lg.btn-illustrated.btn-success + | ✓ + span(data-i18n="buy_gems.purchased") + else + button.start-subscription-button.btn.btn-lg.btn-illustrated.btn-success(data-i18n="buy_gems.purchase") + + if view.state === 'declined' #declined-alert.alert.alert-danger.alert-dismissible span(data-i18n="buy_gems.declined") diff --git a/app/views/play/modal/BuyGemsModal.coffee b/app/views/play/modal/BuyGemsModal.coffee index 96b9d68c730..63c5cda274d 100644 --- a/app/views/play/modal/BuyGemsModal.coffee +++ b/app/views/play/modal/BuyGemsModal.coffee @@ -45,6 +45,7 @@ module.exports = class BuyGemsModal extends ModalView @basicProduct = @products.findWhere { name: 'basic_subscription' } if countrySpecificProduct = @products.findWhere { name: "#{me.get('country')}_basic_subscription" } @basicProduct = countrySpecificProduct + @lifetimeProduct = @products.findWhere { name: 'lifetime_subscription' } @products.reset @products.filter (product) -> _.string.startsWith(product.get('name'), 'gems_') super() diff --git a/server/middleware/products.coffee b/server/middleware/products.coffee index 7778cb28803..c8517857fde 100644 --- a/server/middleware/products.coffee +++ b/server/middleware/products.coffee @@ -102,6 +102,10 @@ productStubs = [ } ] +# For Backbone collection in dev environment, otherwise models merge +for productStub in productStubs + productStub._id = _.uniqueId() + module.exports = { get productStubs