billing: Clean up copy on free trial pages.

This fixes some issues with unclear terminology and visual styling in
the pages for the new free trial.

There's probably more we can and should usefully do in the future.
This commit is contained in:
Tim Abbott 2020-05-26 17:58:46 -07:00
parent d32362e53e
commit 368e9572cc
3 changed files with 25 additions and 19 deletions

View File

@ -360,6 +360,9 @@ html {
} }
} }
.alert-info {
font-weight: 400;
}
.alert { .alert {
&:not(.alert-info) { &:not(.alert-info) {
padding: 0; padding: 0;

View File

@ -12,7 +12,7 @@
{% include 'zerver/billing_nav.html' %} {% include 'zerver/billing_nav.html' %}
<div class="portico-landing billing-upgrade-page"> <div class="portico-landing billing-upgrade-page new-style">
<div class="hero small-hero"></div> <div class="hero small-hero"></div>
<div class="page-content"> <div class="page-content">
@ -20,7 +20,8 @@
<h1>🚀 {% trans %}Upgrade to {{ plan }}{% endtrans %}</h1> <h1>🚀 {% trans %}Upgrade to {{ plan }}{% endtrans %}</h1>
{% if free_trial_days %} {% if free_trial_days %}
<div id="free-trial-alert-message" class="alert alert-info"> <div id="free-trial-alert-message" class="alert alert-info">
Upgrade now to start your {{ free_trial_days }} day Free Trial of Zulip Standard. Upgrade now to start your {{ free_trial_days }} day free trial
of Zulip Cloud Standard!
</div> </div>
{% endif %} {% endif %}
@ -44,15 +45,20 @@
<input type="hidden" name="signed_seat_count" value="{{ signed_seat_count }}"> <input type="hidden" name="signed_seat_count" value="{{ signed_seat_count }}">
<input type="hidden" name="salt" value="{{ salt }}"> <input type="hidden" name="salt" value="{{ salt }}">
<input type="hidden" name="billing_modality" value="charge_automatically"> <input type="hidden" name="billing_modality" value="charge_automatically">
{% if free_trial_days %} {% if onboarding and free_trial_days %}
<p> <p><b>Not ready to start your trial?</b> <a href="/">Continue with the Zulip Cloud Free plan</a>.</p>
You won't be charged during the Free Trial. You can also downgrade back to Zulip Limited <hr>
during the Free Trial. <h2>Zulip Standard free trial</h2>
</p>
{% endif %} {% endif %}
<div class="payment-schedule"> <div class="payment-schedule">
<div id="autopay-error" class="alert alert-danger"></div> <div id="autopay-error" class="alert alert-danger"></div>
<h3>{{ _("Payment schedule") }}</h3> <h3>{{ _("Payment schedule") }}</h3>
{% if free_trial_days %}
<p>
You won't be charged during the free trial. You can also downgrade to
Zulip Cloud Free, our forever free plan, at any time.
</p>
{% endif %}
<label> <label>
<input type="radio" name="schedule" value="monthly" checked/> <input type="radio" name="schedule" value="monthly" checked/>
<div class="box"> <div class="box">
@ -97,7 +103,8 @@
{% if free_trial_days %} {% if free_trial_days %}
After the Free Trial, you&rsquo;ll be charged After the Free Trial, you&rsquo;ll be charged
<b>$<span id="charged_amount"></span></b> for <b>{{ seat_count }}</b> <b>$<span id="charged_amount"></span></b> for <b>{{ seat_count }}</b>
users. users (or more if you later add more users).<br>
We'll automatically charge you for additional licenses as users We'll automatically charge you for additional licenses as users
are added, and remove licenses not in use at the end of each billing are added, and remove licenses not in use at the end of each billing
period. period.
@ -156,6 +163,11 @@
<div id="invoice-error" class="alert alert-danger"></div> <div id="invoice-error" class="alert alert-danger"></div>
<div id="invoice-input-section"> <div id="invoice-input-section">
<form id="invoice-form" method="post"> <form id="invoice-form" method="post">
{% if onboarding and free_trial_days %}
<p><b>Not ready to start your trial?</b> <a href="/">Continue with the Zulip Cloud Free plan</a>.</p>
<hr>
<h2>Zulip Standard free trial</h2>
{% endif %}
<input type="hidden" name="signed_seat_count" value="{{ signed_seat_count }}"> <input type="hidden" name="signed_seat_count" value="{{ signed_seat_count }}">
<input type="hidden" name="salt" value="{{ salt }}"> <input type="hidden" name="salt" value="{{ salt }}">
<input type="hidden" name="billing_modality" value="send_invoice"> <input type="hidden" name="billing_modality" value="send_invoice">
@ -177,7 +189,7 @@
<p> <p>
{% if free_trial_days %} {% if free_trial_days %}
Enter the number of users you would like to pay for.<br> Enter the number of users you would like to pay for.<br>
We'll email you an invoice after the Free Trial. We'll email you an invoice after the free trial.
Invoices can be paid by ACH transfer or credit card. Invoices can be paid by ACH transfer or credit card.
{% else %} {% else %}
Enter the number of users you would like to pay for.<br> Enter the number of users you would like to pay for.<br>
@ -207,15 +219,6 @@
</div> </div>
</div> </div>
</div> </div>
{% if onboarding %}
<div id="zulip-limited-section">
<br>
<h3>
<b><a href="/">Or start with Zulip Limited (Free) plan</a></b>
</h3>
</div>
{% endif %}
<hr>
<div class="support-link"> <div class="support-link">
<p> <p>
We're happy to help! We're happy to help!

View File

@ -2193,7 +2193,7 @@ class RealmCreationTest(ZulipTestCase):
self.assertEqual(result.url, 'http://zuliptest.testserver/upgrade/?onboarding=true') self.assertEqual(result.url, 'http://zuliptest.testserver/upgrade/?onboarding=true')
result = self.client_get(result.url, subdomain=string_id) result = self.client_get(result.url, subdomain=string_id)
self.assert_in_success_response(["Or start with Zulip Limited (Free) plan"], result) self.assert_in_success_response(["Not ready to start your trial?"], result)
realm = get_realm(string_id) realm = get_realm(string_id)
self.assertEqual(realm.string_id, string_id) self.assertEqual(realm.string_id, string_id)