Răsfoiți Sursa

Merge pull request #3897 from overleaf/tm-meta-tags-billing

[views] migrate subscription templates to meta tags, re-issue

GitOrigin-RevId: c18bb7c96186cc8c34344ecf7cee35f9da19698e
Jakob Ackermann 5 ani în urmă
părinte
comite
d2e6449e79

+ 4 - 0
services/web/app/views/subscriptions/dashboard.pug

@@ -7,6 +7,10 @@ block head-scripts
 
 
 block append meta
 block append meta
 	meta(name="ol-managedInstitutions", data-type="json", content=managedInstitutions)
 	meta(name="ol-managedInstitutions", data-type="json", content=managedInstitutions)
+	if (personalSubscription && personalSubscription.recurly)
+		meta(name="ol-recurlyApiKey" content=settings.apis.recurly.publicKey)
+		meta(name="ol-subscription" data-type="json" content=personalSubscription)
+		meta(name="ol-recomendedCurrency" content=personalSubscription.recurly.currency)
 
 
 block content
 block content
 	main.content.content-alt(ng-cloak)
 	main.content.content-alt(ng-cloak)

+ 0 - 5
services/web/app/views/subscriptions/dashboard/_personal_subscription_recurly.pug

@@ -1,8 +1,3 @@
-script(type="text/javascript", nonce=scriptNonce).
-	window.recurlyApiKey = "!{settings.apis.recurly.publicKey}"
-	window.subscription = !{StringHelper.stringifyJsonForScript(personalSubscription)}
-	window.recomendedCurrency = "#{personalSubscription.recurly.currency}"
-
 div(ng-controller="RecurlySubscriptionController")
 div(ng-controller="RecurlySubscriptionController")
 	div(ng-show="!showCancellation")
 	div(ng-show="!showCancellation")
 		if (personalSubscription.recurly.account.has_past_due_invoice && personalSubscription.recurly.account.has_past_due_invoice._ == 'true')
 		if (personalSubscription.recurly.account.has_past_due_invoice && personalSubscription.recurly.account.has_past_due_invoice._ == 'true')

+ 5 - 4
services/web/app/views/subscriptions/new.pug

@@ -1,11 +1,12 @@
 extends ../layout
 extends ../layout
 
 
+block append meta
+	meta(name="ol-countryCode" content=countryCode)
+	meta(name="ol-recurlyApiKey" content=settings.apis.recurly.publicKey)
+	meta(name="ol-recomendedCurrency" content=String(currency).slice(0,3))
+
 block head-scripts
 block head-scripts
 	script(type="text/javascript", nonce=scriptNonce, src="https://js.recurly.com/v4/recurly.js")
 	script(type="text/javascript", nonce=scriptNonce, src="https://js.recurly.com/v4/recurly.js")
-	script(type="text/javascript", nonce=scriptNonce).
-		window.countryCode = !{StringHelper.stringifyJsonForScript(countryCode || '')}
-		window.recurlyApiKey = "!{settings.apis.recurly.publicKey}"
-		window.recomendedCurrency = !{StringHelper.stringifyJsonForScript(String(currency).slice(0,3))}
 
 
 block content
 block content
 	main.content.content-alt
 	main.content.content-alt

+ 3 - 5
services/web/app/views/subscriptions/plans.pug

@@ -6,11 +6,9 @@ include _plans_page_tables
 block vars
 block vars
 	- metadata = { viewport: true }
 	- metadata = { viewport: true }
 
 
-block head-scripts
-	script(type="text/javascript", nonce=scriptNonce).
-		window.recomendedCurrency = '#{recomendedCurrency}';
-		window.abCurrencyFlag = '#{abCurrencyFlag}';
-		window.groupPlans = !{StringHelper.stringifyJsonForScript(groupPlans)};
+block append meta
+	meta(name="ol-recomendedCurrency" content=recomendedCurrency)
+	meta(name="ol-groupPlans" data-type="json" content=groupPlans)
 
 
 block content
 block content
 	.content.content-alt
 	.content.content-alt

+ 0 - 6
services/web/app/views/subscriptions/successful_subscription.pug

@@ -28,9 +28,3 @@ block content
 								| The #{settings.appName} Team
 								| The #{settings.appName} Team
 						p
 						p
 							a.btn.btn-primary(href="/project") < #{translate("back_to_your_projects")}
 							a.btn.btn-primary(href="/project") < #{translate("back_to_your_projects")}
-
-	script(type="text/javascript", nonce=scriptNonce).
-		window.ab = [
-			{step:1, bucket:"student_control", testName:"editor_plan"},
-			{step:1, bucket:"collab_test", testName:"editor_plan"},
-		]

+ 3 - 5
services/web/app/views/subscriptions/team/invite.pug

@@ -1,10 +1,8 @@
 extends ../../layout
 extends ../../layout
 
 
-block head-scripts
-	script(type="text/javascript", nonce=scriptNonce).
-		window.teamId = '#{teamId}'
-		window.hasIndividualRecurlySubscription = #{hasIndividualRecurlySubscription}
-		window.inviteToken = '#{inviteToken}'
+block append meta
+	meta(name="ol-hasIndividualRecurlySubscription" data-type="boolean" content=hasIndividualRecurlySubscription)
+	meta(name="ol-inviteToken" content=inviteToken)
 
 
 block content
 block content
 	main.content.content-alt.team-invite
 	main.content.content-alt.team-invite

+ 3 - 2
services/web/frontend/js/main/new-subscription.js

@@ -6,6 +6,7 @@ import _ from 'lodash'
 */
 */
 /* global recurly */
 /* global recurly */
 import App from '../base'
 import App from '../base'
+import getMeta from '../utils/meta'
 
 
 export default App.controller(
 export default App.controller(
   'NewSubscriptionController',
   'NewSubscriptionController',
@@ -63,7 +64,7 @@ export default App.controller(
       city: '',
       city: '',
       company: '',
       company: '',
       vat_number: '',
       vat_number: '',
-      country: window.countryCode,
+      country: getMeta('ol-countryCode'),
       coupon: window.couponCode
       coupon: window.couponCode
     }
     }
 
 
@@ -80,7 +81,7 @@ export default App.controller(
     )
     )
 
 
     recurly.configure({
     recurly.configure({
-      publicKey: window.recurlyApiKey,
+      publicKey: getMeta('ol-recurlyApiKey'),
       style: {
       style: {
         all: {
         all: {
           fontFamily: '"Open Sans", sans-serif',
           fontFamily: '"Open Sans", sans-serif',

+ 6 - 4
services/web/frontend/js/main/plans.js

@@ -3,8 +3,9 @@
     max-len
     max-len
 */
 */
 import App from '../base'
 import App from '../base'
+import getMeta from '../utils/meta'
 App.factory('MultiCurrencyPricing', function () {
 App.factory('MultiCurrencyPricing', function () {
-  const currencyCode = window.recomendedCurrency
+  const currencyCode = getMeta('ol-recomendedCurrency')
 
 
   return {
   return {
     currencyCode,
     currencyCode,
@@ -384,11 +385,12 @@ App.controller(
       ]
       ]
     }
     }
 
 
-    $scope.prices = window.groupPlans
+    $scope.prices = getMeta('ol-groupPlans')
 
 
     let currency = 'USD'
     let currency = 'USD'
-    if (['USD', 'GBP', 'EUR'].includes(window.recomendedCurrency)) {
-      currency = window.recomendedCurrency
+    const recomendedCurrency = getMeta('ol-recomendedCurrency')
+    if (['USD', 'GBP', 'EUR'].includes(recomendedCurrency)) {
+      currency = recomendedCurrency
     }
     }
 
 
     // default selected
     // default selected

+ 8 - 5
services/web/frontend/js/main/subscription-dashboard.js

@@ -18,13 +18,14 @@ import _ from 'lodash'
  * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  */
  */
 import App from '../base'
 import App from '../base'
+import getMeta from '../utils/meta'
 const SUBSCRIPTION_URL = '/user/subscription/update'
 const SUBSCRIPTION_URL = '/user/subscription/update'
 
 
 const ensureRecurlyIsSetup = _.once(() => {
 const ensureRecurlyIsSetup = _.once(() => {
   if (typeof recurly === 'undefined' || !recurly) {
   if (typeof recurly === 'undefined' || !recurly) {
     return false
     return false
   }
   }
-  recurly.configure(window.recurlyApiKey)
+  recurly.configure(getMeta('ol-recurlyApiKey'))
   return true
   return true
 })
 })
 
 
@@ -105,7 +106,8 @@ App.controller(
     $scope.$watch('plan', function (plan) {
     $scope.$watch('plan', function (plan) {
       if (!plan) return
       if (!plan) return
       const planCode = plan.planCode
       const planCode = plan.planCode
-      const { currency, taxRate } = window.subscription.recurly
+      const subscription = getMeta('ol-subscription')
+      const { currency, taxRate } = subscription.recurly
       $scope.price = '...' // Placeholder while we talk to recurly
       $scope.price = '...' // Placeholder while we talk to recurly
       RecurlyPricing.loadDisplayPriceWithTax(planCode, currency, taxRate).then(
       RecurlyPricing.loadDisplayPriceWithTax(planCode, currency, taxRate).then(
         price => {
         price => {
@@ -171,7 +173,8 @@ App.controller('GroupMembershipController', function ($scope, $modal) {
 
 
 App.controller('RecurlySubscriptionController', function ($scope) {
 App.controller('RecurlySubscriptionController', function ($scope) {
   const recurlyIsSetup = ensureRecurlyIsSetup()
   const recurlyIsSetup = ensureRecurlyIsSetup()
-  $scope.showChangePlanButton = recurlyIsSetup && !window.subscription.groupPlan
+  const subscription = getMeta('ol-subscription')
+  $scope.showChangePlanButton = recurlyIsSetup && !subscription.groupPlan
   if (
   if (
     window.subscription.recurly.account.has_past_due_invoice &&
     window.subscription.recurly.account.has_past_due_invoice &&
     window.subscription.recurly.account.has_past_due_invoice._ === 'true'
     window.subscription.recurly.account.has_past_due_invoice._ === 'true'
@@ -201,7 +204,7 @@ App.controller(
   'RecurlyCancellationController',
   'RecurlyCancellationController',
   function ($scope, RecurlyPricing, $http) {
   function ($scope, RecurlyPricing, $http) {
     if (!ensureRecurlyIsSetup()) return
     if (!ensureRecurlyIsSetup()) return
-    const subscription = window.subscription
+    const subscription = getMeta('ol-subscription')
     const sevenDaysTime = new Date()
     const sevenDaysTime = new Date()
     sevenDaysTime.setDate(sevenDaysTime.getDate() + 7)
     sevenDaysTime.setDate(sevenDaysTime.getDate() + 7)
     const freeTrialEndDate = new Date(subscription.recurly.trial_ends_at)
     const freeTrialEndDate = new Date(subscription.recurly.trial_ends_at)
@@ -222,7 +225,7 @@ App.controller(
       $scope.showBasicCancel = true
       $scope.showBasicCancel = true
     }
     }
 
 
-    const { currency, taxRate } = window.subscription.recurly
+    const { currency, taxRate } = subscription.recurly
     $scope.studentPrice = '...' // Placeholder while we talk to recurly
     $scope.studentPrice = '...' // Placeholder while we talk to recurly
     RecurlyPricing.loadDisplayPriceWithTax('student', currency, taxRate).then(
     RecurlyPricing.loadDisplayPriceWithTax('student', currency, taxRate).then(
       price => {
       price => {

+ 7 - 2
services/web/frontend/js/main/subscription/team-invite-controller.js

@@ -10,11 +10,15 @@
  * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  */
  */
 import App from '../../base'
 import App from '../../base'
+import getMeta from '../../utils/meta'
 
 
 export default App.controller('TeamInviteController', function ($scope, $http) {
 export default App.controller('TeamInviteController', function ($scope, $http) {
   $scope.inflight = false
   $scope.inflight = false
+  const hasIndividualRecurlySubscription = getMeta(
+    'ol-hasIndividualRecurlySubscription'
+  )
 
 
-  if (window.hasIndividualRecurlySubscription) {
+  if (hasIndividualRecurlySubscription) {
     $scope.view = 'hasIndividualRecurlySubscription'
     $scope.view = 'hasIndividualRecurlySubscription'
   } else {
   } else {
     $scope.view = 'teamInvite'
     $scope.view = 'teamInvite'
@@ -40,7 +44,8 @@ export default App.controller('TeamInviteController', function ($scope, $http) {
 
 
   return ($scope.joinTeam = function () {
   return ($scope.joinTeam = function () {
     $scope.inflight = true
     $scope.inflight = true
-    const request = $http.put(`/subscription/invites/${window.inviteToken}/`, {
+    const inviteToken = getMeta('ol-inviteToken')
+    const request = $http.put(`/subscription/invites/${inviteToken}/`, {
       _csrf: window.csrfToken
       _csrf: window.csrfToken
     })
     })
     request.then(function (response) {
     request.then(function (response) {