new.jade 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452
  1. extends ../layout
  2. block scripts
  3. script(src="https://js.recurly.com/v3/recurly.js")
  4. script(type='text/javascript').
  5. window.recomendedCurrency = '#{currency}'
  6. window.plan_code = '#{plan_code}'
  7. window.recurlyApiKey = "!{settings.apis.recurly.publicKey}"
  8. block content
  9. - locals.supressDefaultJs = true
  10. script(data-main=jsPath+'main.js', src=jsPath+'libs/require.js', baseurl=jsPath)
  11. .content.content-alt
  12. .container(ng-controller="NewSubscriptionController" ng-cloak)
  13. .row.card-group
  14. .col-md-6.col-md-push-3
  15. .card.card-highlighted
  16. .page-header
  17. span.dropdown.changePlanButton.pull-right(ng-cloak)
  18. a.btn.btn-default.dropdown-toggle(
  19. href="#",
  20. data-toggle="dropdown"
  21. )
  22. | {{currencyCode}} ({{plans[currencyCode]['symbol']}})
  23. span.caret
  24. ul.dropdown-menu(role="menu")
  25. li(ng-repeat="(currency, value) in plans", dropdown-toggle)
  26. a(
  27. ng-click="changeCurrency(currency)",
  28. ) {{currency}} ({{value['symbol']}})
  29. h1 #{translate("new_subscription")}
  30. form(ng-show="planName")
  31. hr
  32. .row
  33. .col-md-9
  34. h2 {{planName}}
  35. span !{translate("first_few_days_free", {trialLen:'{{trialLen}}'})}
  36. .col-md-3
  37. h2.pull-right {{price}}
  38. span.pull-right #{translate("every")} {{billingCycleType}}
  39. hr
  40. .row
  41. .col-md-12
  42. .form-group
  43. label.radio-inline #{translate("credit_card")}
  44. input(type="radio",value="credit_card", ng-model="paymentMethod")
  45. label.radio-inline Paypal
  46. input(type="radio", value="paypal", ng-model="paymentMethod")
  47. .alert.alert-warning.small(ng-show="genericError")
  48. strong {{genericError}}
  49. .div(ng-hide="paymentMethod == 'paypal'")
  50. .row
  51. .col-md-12
  52. .form-group
  53. div(ng-hide="validation.correctCvv") #{translate("invalid")} CVV
  54. div(ng-hide="validation.correctCardNumber") #{translate("invalid")} #{translate("credit_card_number")}
  55. .col-md-7
  56. .form-group(ng-class="validation.correctCardNumber ? '' : 'has-error' ")
  57. input.form-control(ng-model='data.number', ng-blur="validateCardNumber()", placeholder="#{translate('credit_card_number')}")
  58. .col-md-3
  59. .form-group(ng-class="validation.correctCvv ? '' : 'has-error' ")
  60. input.form-control(ng-model='data.cvv', ng-blur="validateCvv()", placeholder="CVV")
  61. .row
  62. div(ng-hide="validation.correctExpiry") #{translate("invalid")} #{translate("expiry")}
  63. .col-md-2
  64. .form-group(ng-class="validation.correctExpiry ? '' : 'has-error' ")
  65. select.form-control(data-recurly='month', ng-change="validateExpiry()", ng-model='data.month')
  66. option(value="01") 01
  67. option(value="02") 02
  68. option(value="03") 03
  69. option(value="04") 04
  70. option(value="05") 05
  71. option(value="06") 06
  72. option(value="07") 07
  73. option(value="08") 08
  74. option(value="09") 09
  75. option(value="10") 10
  76. option(value="11") 11
  77. option(value="12") 12
  78. .col-md-3
  79. .form-group(ng-class="validation.correctExpiry ? '' : 'has-error' ")
  80. select.form-control(data-recurly='year', ng-change="validateExpiry()", ng-model='data.year')
  81. option(value="2015") 2015
  82. option(value="2016") 2016
  83. option(value="2017") 2017
  84. option(value="2018") 2018
  85. option(value="2019") 2019
  86. option(value="2020") 2020
  87. option(value="2021") 2021
  88. option(value="2022") 2022
  89. option(value="2023") 2023
  90. option(value="2024") 2024
  91. option(value="2025") 2025
  92. option(value="2026") 2026
  93. .row
  94. .col-md-6
  95. .form-group
  96. label #{translate("first_name")}
  97. input.form-control(type='text', value='', maxlength='255', tabindex='1', onkeyup='', data-recurly="first_name", ng-model="data.first_name", required)
  98. .col-md-6
  99. .form-group
  100. label #{translate("last_name")}
  101. input.form-control(type='text', value='', maxlength='255', tabindex='1', onkeyup='', data-recurly="last_name", ng-model="data.last_name", required)
  102. .form-group
  103. label #{translate("address")}
  104. input.form-control(type='text', value='', maxlength='255', tabindex='1', onkeyup='', ng-model="data.address1")
  105. .form-group
  106. input.form-control(type='text', value='', maxlength='255', tabindex='1', onkeyup='', ng-model="data.address2")
  107. .row
  108. .col-md-8
  109. .form-group
  110. label #{translate("city")}
  111. input.form-control(type='text', value='', maxlength='255', tabindex='1', onkeyup='', data-recurly="city", ng-model="data.city")
  112. .col-md-4
  113. label #{translate("zip_post_code")}
  114. input.form-control(type='text', value='', maxlength='255', tabindex='1', onkeyup='', data-recurly="postal_code", ng-model="data.postal_code")
  115. .form-group
  116. label #{translate("country")}
  117. select.form-control(data-recurly="country", ng-model="data.country", required)
  118. mixin countries_options()
  119. .form-group
  120. label #{translate("coupon")}
  121. input.form-control(type='text', ng-blur="applyCoupon()", ng-model="data.coupon")
  122. .form-group
  123. button.btn.btn-success(ng-click="submit()") #{translate("submit")}
  124. .col-md-3.col-md-pull-6
  125. if showStudentPlan == 'true'
  126. a.btn-primary.btn.plansPageStudentLink(
  127. href,
  128. ng-click="switchToStudent()"
  129. ) #{translate("half_price_student")}
  130. .card.card-first
  131. .paymentPageFeatures
  132. .page-header
  133. h3 #{translate("features")}
  134. h3 #{translate("unlimited_projects")}
  135. p #{translate("create_unlimited_projects")}
  136. h3
  137. if plan.features.collaborators == -1
  138. - var collaboratorCount = 'Unlimited'
  139. else
  140. - var collaboratorCount = plan.features.collaborators
  141. | #{translate("collabs_per_proj", {collabcount:collaboratorCount})}
  142. p #{translate("work_on_single_version")}. #{translate("view_collab_edits")} in real time.
  143. h3 #{translate("full_doc_history")}
  144. p #{translate("see_what_has_been")}
  145. span.added #{translate("added")}
  146. | #{translate("and")}
  147. span.removed #{translate("removed")}.
  148. | #{translate("restore_to_any_older_version")}.
  149. h3 #{translate("sync_to_dropbox")}
  150. p
  151. | #{translate("acces_work_from_anywhere")}.
  152. | #{translate("work_offline_and_sync_with_dropbox")}.
  153. hr
  154. p.small.text-center We're confident that you'll love ShareLaTeX, but if not you can cancel anytime. We'll give you your money back, no questions asked, if you let us know within 30 days.
  155. script(type="text/javascript").
  156. ga('send', 'event', 'pageview', 'payment_form', "#{plan_code}")
  157. script(type="text/javascript").
  158. window.ab = [
  159. {step:1, bucket:"red", testName:"button_color"},
  160. {step:1, bucket:"blue", testName:"button_color"}
  161. ]
  162. mixin countries_options()
  163. option(value='-') #{translate("country")}
  164. option(value='-') --------------
  165. option(value='AF') Afghanistan
  166. option(value='AL') Albania
  167. option(value='DZ') Algeria
  168. option(value='AS') American Samoa
  169. option(value='AD') Andorra
  170. option(value='AO') Angola
  171. option(value='AI') Anguilla
  172. option(value='AQ') Antarctica
  173. option(value='AG') Antigua and Barbuda
  174. option(value='AR') Argentina
  175. option(value='AM') Armenia
  176. option(value='AW') Aruba
  177. option(value='AC') Ascension Island
  178. option(value='AU') Australia
  179. option(value='AT') Austria
  180. option(value='AZ') Azerbaijan
  181. option(value='BS') Bahamas
  182. option(value='BH') Bahrain
  183. option(value='BD') Bangladesh
  184. option(value='BB') Barbados
  185. option(value='BE') Belgium
  186. option(value='BZ') Belize
  187. option(value='BJ') Benin
  188. option(value='BM') Bermuda
  189. option(value='BT') Bhutan
  190. option(value='BO') Bolivia
  191. option(value='BA') Bosnia and Herzegovina
  192. option(value='BW') Botswana
  193. option(value='BV') Bouvet Island
  194. option(value='BR') Brazil
  195. option(value='BQ') British Antarctic Territory
  196. option(value='IO') British Indian Ocean Territory
  197. option(value='VG') British Virgin Islands
  198. option(value='BN') Brunei
  199. option(value='BG') Bulgaria
  200. option(value='BF') Burkina Faso
  201. option(value='BI') Burundi
  202. option(value='KH') Cambodia
  203. option(value='CM') Cameroon
  204. option(value='CA') Canada
  205. option(value='IC') Canary Islands
  206. option(value='CT') Canton and Enderbury Islands
  207. option(value='CV') Cape Verde
  208. option(value='KY') Cayman Islands
  209. option(value='CF') Central African Republic
  210. option(value='EA') Ceuta and Melilla
  211. option(value='TD') Chad
  212. option(value='CL') Chile
  213. option(value='CN') China
  214. option(value='CX') Christmas Island
  215. option(value='CP') Clipperton Island
  216. option(value='CC') Cocos [Keeling] Islands
  217. option(value='CO') Colombia
  218. option(value='KM') Comoros
  219. option(value='CD') Congo [DRC]
  220. option(value='CK') Cook Islands
  221. option(value='CR') Costa Rica
  222. option(value='HR') Croatia
  223. option(value='CU') Cuba
  224. option(value='CY') Cyprus
  225. option(value='CZ') Czech Republic
  226. option(value='DK') Denmark
  227. option(value='DG') Diego Garcia
  228. option(value='DJ') Djibouti
  229. option(value='DM') Dominica
  230. option(value='DO') Dominican Republic
  231. option(value='NQ') Dronning Maud Land
  232. option(value='TL') East Timor
  233. option(value='EC') Ecuador
  234. option(value='EG') Egypt
  235. option(value='SV') El Salvador
  236. option(value='EE') Estonia
  237. option(value='ET') Ethiopia
  238. option(value='FK') Falkland Islands [Islas Malvinas]
  239. option(value='FO') Faroe Islands
  240. option(value='FJ') Fiji
  241. option(value='FI') Finland
  242. option(value='FR') France
  243. option(value='GF') French Guiana
  244. option(value='PF') French Polynesia
  245. option(value='TF') French Southern Territories
  246. option(value='FQ') French Southern and Antarctic Territories
  247. option(value='GA') Gabon
  248. option(value='GM') Gambia
  249. option(value='GE') Georgia
  250. option(value='DE') Germany
  251. option(value='GH') Ghana
  252. option(value='GI') Gibraltar
  253. option(value='GR') Greece
  254. option(value='GL') Greenland
  255. option(value='GD') Grenada
  256. option(value='GP') Guadeloupe
  257. option(value='GU') Guam
  258. option(value='GT') Guatemala
  259. option(value='GG') Guernsey
  260. option(value='GW') Guinea-Bissau
  261. option(value='GY') Guyana
  262. option(value='HT') Haiti
  263. option(value='HM') Heard Island and McDonald Islands
  264. option(value='HN') Honduras
  265. option(value='HK') Hong Kong
  266. option(value='HU') Hungary
  267. option(value='IS') Iceland
  268. option(value='IN') India
  269. option(value='ID') Indonesia
  270. option(value='IE') Ireland
  271. option(value='IM') Isle of Man
  272. option(value='IL') Israel
  273. option(value='IT') Italy
  274. option(value='JM') Jamaica
  275. option(value='JP') Japan
  276. option(value='JE') Jersey
  277. option(value='JT') Johnston Island
  278. option(value='JO') Jordan
  279. option(value='KZ') Kazakhstan
  280. option(value='KE') Kenya
  281. option(value='KI') Kiribati
  282. option(value='KW') Kuwait
  283. option(value='KG') Kyrgyzstan
  284. option(value='LA') Laos
  285. option(value='LV') Latvia
  286. option(value='LS') Lesotho
  287. option(value='LY') Libya
  288. option(value='LI') Liechtenstein
  289. option(value='LT') Lithuania
  290. option(value='LU') Luxembourg
  291. option(value='MO') Macau
  292. option(value='MK') Macedonia [FYROM]
  293. option(value='MG') Madagascar
  294. option(value='MW') Malawi
  295. option(value='MY') Malaysia
  296. option(value='MV') Maldives
  297. option(value='ML') Mali
  298. option(value='MT') Malta
  299. option(value='MH') Marshall Islands
  300. option(value='MQ') Martinique
  301. option(value='MR') Mauritania
  302. option(value='MU') Mauritius
  303. option(value='YT') Mayotte
  304. option(value='FX') Metropolitan France
  305. option(value='MX') Mexico
  306. option(value='FM') Micronesia
  307. option(value='MI') Midway Islands
  308. option(value='MD') Moldova
  309. option(value='MC') Monaco
  310. option(value='MN') Mongolia
  311. option(value='ME') Montenegro
  312. option(value='MS') Montserrat
  313. option(value='MA') Morocco
  314. option(value='MZ') Mozambique
  315. option(value='NA') Namibia
  316. option(value='NR') Nauru
  317. option(value='NP') Nepal
  318. option(value='NL') Netherlands
  319. option(value='AN') Netherlands Antilles
  320. option(value='NT') Neutral Zone
  321. option(value='NC') New Caledonia
  322. option(value='NZ') New Zealand
  323. option(value='NI') Nicaragua
  324. option(value='NE') Niger
  325. option(value='NG') Nigeria
  326. option(value='NU') Niue
  327. option(value='NF') Norfolk Island
  328. option(value='VD') North Vietnam
  329. option(value='MP') Northern Mariana Islands
  330. option(value='NO') Norway
  331. option(value='OM') Oman
  332. option(value='QO') Outlying Oceania
  333. option(value='PC') Pacific Islands Trust Territory
  334. option(value='PK') Pakistan
  335. option(value='PW') Palau
  336. option(value='PS') Palestinian Territories
  337. option(value='PA') Panama
  338. option(value='PZ') Panama Canal Zone
  339. option(value='PY') Paraguay
  340. option(value='YD') People's Democratic Republic of Yemen
  341. option(value='PE') Peru
  342. option(value='PH') Philippines
  343. option(value='PN') Pitcairn Islands
  344. option(value='PL') Poland
  345. option(value='PT') Portugal
  346. option(value='PR') Puerto Rico
  347. option(value='QA') Qatar
  348. option(value='RO') Romania
  349. option(value='RU') Russia
  350. option(value='RW') Rwanda
  351. option(value='RE') Réunion
  352. option(value='BL') Saint Barthélemy
  353. option(value='SH') Saint Helena
  354. option(value='KN') Saint Kitts and Nevis
  355. option(value='LC') Saint Lucia
  356. option(value='MF') Saint Martin
  357. option(value='PM') Saint Pierre and Miquelon
  358. option(value='VC') Saint Vincent and the Grenadines
  359. option(value='WS') Samoa
  360. option(value='SM') San Marino
  361. option(value='SA') Saudi Arabia
  362. option(value='SN') Senegal
  363. option(value='RS') Serbia
  364. option(value='CS') Serbia and Montenegro
  365. option(value='SC') Seychelles
  366. option(value='SL') Sierra Leone
  367. option(value='SG') Singapore
  368. option(value='SK') Slovakia
  369. option(value='SI') Slovenia
  370. option(value='SB') Solomon Islands
  371. option(value='ZA') South Africa
  372. option(value='GS') South Georgia and the South Sandwich Islands
  373. option(value='KR') South Korea
  374. option(value='ES') Spain
  375. option(value='LK') Sri Lanka
  376. option(value='SR') Suriname
  377. option(value='SJ') Svalbard and Jan Mayen
  378. option(value='SZ') Swaziland
  379. option(value='SE') Sweden
  380. option(value='CH') Switzerland
  381. option(value='ST') São Tomé and Príncipe
  382. option(value='TW') Taiwan
  383. option(value='TJ') Tajikistan
  384. option(value='TZ') Tanzania
  385. option(value='TH') Thailand
  386. option(value='TG') Togo
  387. option(value='TK') Tokelau
  388. option(value='TO') Tonga
  389. option(value='TT') Trinidad and Tobago
  390. option(value='TA') Tristan da Cunha
  391. option(value='TN') Tunisia
  392. option(value='TR') Turkey
  393. option(value='TM') Turkmenistan
  394. option(value='TC') Turks and Caicos Islands
  395. option(value='TV') Tuvalu
  396. option(value='UM') U.S. Minor Outlying Islands
  397. option(value='PU') U.S. Miscellaneous Pacific Islands
  398. option(value='VI') U.S. Virgin Islands
  399. option(value='UG') Uganda
  400. option(value='UA') Ukraine
  401. option(value='AE') United Arab Emirates
  402. option(value='GB') United Kingdom
  403. option(value='US') United States
  404. option(value='UY') Uruguay
  405. option(value='UZ') Uzbekistan
  406. option(value='VU') Vanuatu
  407. option(value='VA') Vatican City
  408. option(value='VE') Venezuela
  409. option(value='VN') Vietnam
  410. option(value='WK') Wake Island
  411. option(value='WF') Wallis and Futuna
  412. option(value='EH') Western Sahara
  413. option(value='YE') Yemen
  414. option(value='ZM') Zambia
  415. option(value='AX') Åland Islands