dashboard.pug 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. extends ../layout
  2. block scripts
  3. script(src="https://js.recurly.com/v3/recurly.js")
  4. script(type='text/javascript').
  5. window.recomendedCurrency = '#{recomendedCurrency}'
  6. window.recurlyApiKey = "!{settings.apis.recurly.publicKey}"
  7. window.taxRate = #{taxRate}
  8. window.subscription = !{JSON.stringify(subscription)}
  9. mixin printPlan(plan)
  10. -if (!plan.hideFromUsers)
  11. tr(ng-controller="ChangePlanFormController", ng-init="plan="+JSON.stringify(plan), ng-show="shouldShowPlan(plan.planCode)")
  12. td
  13. strong #{plan.name}
  14. td {{refreshPrice(plan.planCode)}}
  15. -if (plan.annual)
  16. | {{prices[plan.planCode]}} / #{translate("year")}
  17. -else
  18. | {{prices[plan.planCode]}} / #{translate("month")}
  19. td
  20. -if (subscription.state == "free-trial")
  21. a(href="/user/subscription/new?planCode="+plan.planCode).btn.btn-success #{translate("subscribe_to_this_plan")}
  22. -else if (typeof(subscription.planCode) != "undefined" && plan.planCode == subscription.planCode.split("_")[0])
  23. button.btn.disabled #{translate("your_plan")}
  24. -else
  25. form
  26. input(type="hidden", ng-model="plan_code", name="plan_code", value=plan.planCode)
  27. input(type="submit", ng-click="changePlan()", value=translate("change_to_this_plan")).btn.btn-success
  28. mixin printPlans(plans)
  29. each plan in plans
  30. +printPlan(plan)
  31. block content
  32. .content.content-alt(ng-cloak)
  33. .container(ng-controller="UserSubscriptionController")
  34. .row
  35. .col-md-8.col-md-offset-2
  36. if saved_billing_details
  37. .alert.alert-success
  38. i.fa.fa-check
  39. |  
  40. | #{translate("your_billing_details_were_saved")}
  41. .card(ng-if="view == 'overview'")
  42. .page-header(x-current-plan=subscription.planCode)
  43. h1 #{translate("your_subscription")}
  44. - if (subscription && user._id+'' == subscription.admin_id+'')
  45. case subscription.state
  46. when "free-trial"
  47. p !{translate("on_free_trial_expiring_at", {expiresAt:"<strong>" + subscription.expiresAt + "</strong>"})}
  48. when "active"
  49. p !{translate("currently_subscribed_to_plan", {planName:"<strong>" + subscription.name + "</strong>"})}
  50. span(ng-show="!isNextGenPlan")
  51. a(href, ng-click="changePlan = true") !{translate("change_plan")}.
  52. p !{translate("next_payment_of_x_collectected_on_y", {paymentAmmount:"<strong>" + subscription.price + "</strong>", collectionDate:"<strong>" + subscription.nextPaymentDueAt + "</strong>"})}
  53. p.pull-right
  54. p
  55. if billingDetailsLink
  56. a(href=billingDetailsLink, target="_blank").btn.btn-info #{translate("update_your_billing_details")}
  57. else
  58. a(href=billingDetailsLink, disabled).btn.btn-info.btn-disabled #{translate("update_your_billing_details")}
  59. | &nbsp;
  60. a(href, ng-click="switchToCancelationView()").btn.btn-primary !{translate("cancel_your_subscription")}
  61. when "canceled"
  62. p !{translate("currently_subscribed_to_plan", {planName:"<strong>" + subscription.name + "</strong>"})}
  63. p !{translate("subscription_canceled_and_terminate_on_x", {terminateDate:"<strong>" + subscription.nextPaymentDueAt + "</strong>"})}
  64. p: form(action="/user/subscription/reactivate",method="post")
  65. input(type="hidden", name="_csrf", value=csrfToken)
  66. input(type="submit",value="Reactivate your subscription").btn.btn-success
  67. when "expired"
  68. p !{translate("your_subscription_has_expired")}
  69. a(href="/user/subscription/plans") !{translate("create_new_subscription")}
  70. default
  71. -if(groupSubscriptions.length == 0)
  72. p !{translate("problem_with_subscription_contact_us")}
  73. div(ng-show="changePlan", ng-cloak)#changePlanSection
  74. h2.col-md-7 !{translate("change_plan")}
  75. span.dropdown.col-md-1.changePlanButton(ng-controller="CurrenyDropdownController", style="display:none", dropdown)
  76. a.btn.btn-primary.dropdown-toggle(
  77. href="#",
  78. data-toggle="dropdown",
  79. dropdown-toggle
  80. )
  81. | {{currencyCode}} ({{plans[currencyCode]['symbol']}})
  82. ul.dropdown-menu(role="menu")
  83. li(ng-repeat="(currency, value) in plans", dropdown-toggle)
  84. a(
  85. href,
  86. ng-click="changeCurrency(currency)"
  87. ) {{currency}} ({{value['symbol']}})
  88. p: table.table
  89. tr
  90. th !{translate("name")}
  91. th !{translate("price")}
  92. th
  93. +printPlans(plans.studentAccounts)
  94. +printPlans(plans.individualMonthlyPlans)
  95. +printPlans(plans.individualAnnualPlans)
  96. hr
  97. each groupSubscription in groupSubscriptions
  98. - if (user._id+'' != groupSubscription.admin_id._id+'')
  99. div
  100. p !{translate("member_of_group_subscription", {admin_email: "<strong>" + groupSubscription.admin_id.email + "</strong>"})}
  101. span
  102. button.btn.btn-danger.text-capitalise(ng-click="removeSelfFromGroup('"+groupSubscription.admin_id._id+"')") #{translate("leave_group")}
  103. hr
  104. -if(subscription.groupPlan && user._id+'' == subscription.admin_id+'')
  105. div
  106. a(href="/subscription/group").btn.btn-primary !{translate("manage_group")}
  107. hr
  108. if settings.overleaf && v1Subscriptions && v1Subscriptions.has_subscription
  109. p
  110. | You are subscribed to Overleaf through Overleaf v1
  111. p
  112. a.btn.btn-primary(href=settings.overleaf.host+"/users/edit#status") Manage v1 Subscription
  113. hr
  114. if settings.overleaf && v1Subscriptions && v1Subscriptions.teams && v1Subscriptions.teams.length > 0
  115. for team in v1Subscriptions.teams
  116. p
  117. | You are a member of the Overleaf v1 team: <strong>#{team.name}</strong>
  118. p
  119. a.btn.btn-primary(href=settings.overleaf.host+"/teams") Manage v1 Team Membership
  120. hr
  121. .card(ng-if="view == 'cancelation'")
  122. .page-header
  123. h1 #{translate("Cancel Subscription")}
  124. div(ng-show="showExtendFreeTrial", style="text-align: center")
  125. p !{translate("have_more_days_to_try", {days:14})}
  126. button(type="submit", ng-click="exendTrial()", ng-disabled='inflight').btn.btn-success #{translate("ill_take_it")}
  127. p
  128. | &nbsp;
  129. p
  130. a(href, ng-click="cancelSubscription()", ng-disabled='inflight') #{translate("no_thanks_cancel_now")}
  131. div(ng-show="showDowngradeToStudent", style="text-align: center")
  132. span(ng-controller="ChangePlanFormController")
  133. p !{translate("interested_in_cheaper_plan",{price:'{{studentPrice}}'})}
  134. button(type="submit", ng-click="downgradeToStudent()", ng-disabled='inflight').btn.btn-success #{translate("yes_please")}
  135. p
  136. | &nbsp;
  137. p
  138. a(href, ng-click="cancelSubscription()", ng-disabled='inflight') #{translate("no_thanks_cancel_now")}
  139. div(ng-show="showBasicCancel")
  140. p #{translate("sure_you_want_to_cancel")}
  141. a(href="/project").btn.btn-info #{translate("i_want_to_stay")}
  142. | &nbsp;
  143. a(ng-click="cancelSubscription()", ng-disabled='inflight').btn.btn-primary #{translate("cancel_my_account")}
  144. script(type="text/javascript").
  145. $('#cancelSubscription').on("click", function() {
  146. ga('send', 'event', 'subscription-funnel', 'cancelation')
  147. })
  148. script(type='text/ng-template', id='confirmChangePlanModalTemplate')
  149. .modal-header
  150. h3 #{translate("change_plan")}
  151. .modal-body
  152. p !{translate("sure_you_want_to_change_plan", {planName:"<strong>{{plan.name}}</strong>"})}
  153. .modal-footer
  154. button.btn.btn-default(
  155. ng-disabled="inflight"
  156. ng-click="cancel()"
  157. ) #{translate("cancel")}
  158. button.btn.btn-success(
  159. ng-disabled="state.inflight"
  160. ng-click="confirmChangePlan()"
  161. )
  162. span(ng-hide="inflight") #{translate("change_plan")}
  163. span(ng-show="inflight") #{translate("processing")}...
  164. script(type='text/ng-template', id='LeaveGroupModalTemplate')
  165. .modal-header
  166. h3 #{translate("leave_group")}
  167. .modal-body
  168. p #{translate("sure_you_want_to_leave_group")}
  169. .modal-footer
  170. button.btn.btn-default(
  171. ng-disabled="inflight"
  172. ng-click="cancel()"
  173. ) #{translate("cancel")}
  174. button.btn.btn-danger(
  175. ng-disabled="state.inflight"
  176. ng-click="confirmLeaveGroup()"
  177. )
  178. span(ng-hide="inflight") #{translate("leave_now")}
  179. span(ng-show="inflight") #{translate("processing")}...