Work on for-teams and pro improvements.
parent
b9d45d906c
commit
c4def5555f
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1989,9 +1989,9 @@ body.pro {
|
||||||
div.payment-loading {
|
div.payment-loading {
|
||||||
background: rgba(#F2F2F2, .6);
|
background: rgba(#F2F2F2, .6);
|
||||||
display: none;
|
display: none;
|
||||||
height: 287px;
|
height: 410px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 261px;
|
top: 278px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
|
@ -2006,6 +2006,10 @@ body.pro {
|
||||||
width: 120px;
|
width: 120px;
|
||||||
@include border-radius;
|
@include border-radius;
|
||||||
}
|
}
|
||||||
|
&.-teams {
|
||||||
|
height: 523px;
|
||||||
|
top: 449px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
div.stripe {
|
div.stripe {
|
||||||
color: #C2C2C2;
|
color: #C2C2C2;
|
||||||
|
@ -2030,6 +2034,19 @@ body.pro {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
div.login-first {
|
||||||
|
background: #FFF;
|
||||||
|
border: 3px solid #3299B7;
|
||||||
|
color: #666;
|
||||||
|
display: block;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 0 auto 10px auto;
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
width: 400px;
|
||||||
|
@include border-radius;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
body.search {
|
body.search {
|
||||||
div.empty-snipts {
|
div.empty-snipts {
|
||||||
|
|
|
@ -98,7 +98,6 @@
|
||||||
var $form = $('form#pro-signup');
|
var $form = $('form#pro-signup');
|
||||||
var $submit = $('button[type="submit"]', $form);
|
var $submit = $('button[type="submit"]', $form);
|
||||||
|
|
||||||
var $name = $('input#name');
|
|
||||||
var $cardNumber = $('input#number');
|
var $cardNumber = $('input#number');
|
||||||
var $expMonth = $('select#exp-month');
|
var $expMonth = $('select#exp-month');
|
||||||
var $expYear = $('select#exp-year');
|
var $expYear = $('select#exp-year');
|
||||||
|
@ -137,7 +136,6 @@
|
||||||
$('.payment-loading').show();
|
$('.payment-loading').show();
|
||||||
|
|
||||||
Stripe.createToken({
|
Stripe.createToken({
|
||||||
name: $name.val(),
|
|
||||||
number: $cardNumber.val(),
|
number: $cardNumber.val(),
|
||||||
cvc: $cvc.val(),
|
cvc: $cvc.val(),
|
||||||
exp_month: $expMonth.val(),
|
exp_month: $expMonth.val(),
|
||||||
|
|
|
@ -40,17 +40,26 @@
|
||||||
<li>Plans from $49/month, all with a 7-day free trial.</li>
|
<li>Plans from $49/month, all with a 7-day free trial.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
{% if not request.user.is_authenticated %}
|
||||||
|
<div class="login-first">
|
||||||
|
<span>
|
||||||
|
To create a team, <a href="/signup/?next=/for-teams/">sign up</a> or <a href="/login/?next=/for-teams/">log in</a>.
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="payment-loading -teams"><span>Please wait…</span></div>
|
||||||
|
<div class="payment-errors alert alert-error"></div>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label" for="name">Team username:</label>
|
<label class="control-label" for="team-name">Team name:</label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<input maxlength="30" required type="text" class="input-xlarge" name="name" id="name" />
|
<input maxlength="30" required type="text" class="input-xlarge" name="team-name" id="team-name" />
|
||||||
<p class="sub" style="margin-top: 3px; color: #999999;">
|
<p class="sub" style="margin-top: 3px; color: #999999;">
|
||||||
Maximum of 30 characters.
|
Maximum of 30 characters.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label" for="name">Team email:</label>
|
<label class="control-label" for="email">Team email:</label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<input required type="text" class="input-xlarge" name="email" id="email" />
|
<input required type="text" class="input-xlarge" name="email" id="email" />
|
||||||
<p class="sub" style="margin-top: 3px; color: #999999;">
|
<p class="sub" style="margin-top: 3px; color: #999999;">
|
||||||
|
@ -59,7 +68,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label" for="name">Payment plan:</label>
|
<label class="control-label" for="plan">Payment plan:</label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<select name="plan" type="text" class="input-xlarge" id="plan">
|
<select name="plan" type="text" class="input-xlarge" id="plan">
|
||||||
<option value="snipt-teams-25-monthly">25 users - $49/month</option>
|
<option value="snipt-teams-25-monthly">25 users - $49/month</option>
|
||||||
|
@ -73,12 +82,6 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group">
|
|
||||||
<label class="control-label" for="name">Name on card:</label>
|
|
||||||
<div class="controls">
|
|
||||||
<input type="text" class="input-xlarge" id="name" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label" for="number">Card number:</label>
|
<label class="control-label" for="number">Card number:</label>
|
||||||
<div class="controls cards">
|
<div class="controls cards">
|
||||||
|
@ -109,7 +112,6 @@
|
||||||
</select>
|
</select>
|
||||||
<select id="exp-year" class="span2">
|
<select id="exp-year" class="span2">
|
||||||
<option value="">----</option>
|
<option value="">----</option>
|
||||||
<option value="2014">2014</option>
|
|
||||||
<option value="2015">2015</option>
|
<option value="2015">2015</option>
|
||||||
<option value="2016">2016</option>
|
<option value="2016">2016</option>
|
||||||
<option value="2017">2017</option>
|
<option value="2017">2017</option>
|
||||||
|
@ -118,8 +120,9 @@
|
||||||
<option value="2020">2020</option>
|
<option value="2020">2020</option>
|
||||||
<option value="2021">2021</option>
|
<option value="2021">2021</option>
|
||||||
<option value="2022">2022</option>
|
<option value="2022">2022</option>
|
||||||
<option value="2022">2023</option>
|
<option value="2023">2023</option>
|
||||||
<option value="2022">2024</option>
|
<option value="2024">2024</option>
|
||||||
|
<option value="2025">2025</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -129,11 +132,17 @@
|
||||||
<input type="text" class="input-min span1" id="cvc">
|
<input type="text" class="input-min span1" id="cvc">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group">
|
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<button type="submit" class="btn btn-success">Start free trial and create team »</button>
|
<button type="submit" class="btn btn-success">Create team »</button>
|
||||||
|
<div class="security">
|
||||||
|
<a href="https://stripe.com/help/security">Secure</a> by default. Every Snipt page is secure.
|
||||||
</div>
|
</div>
|
||||||
|
<div class="stripe" style="margin-left: 125px;">
|
||||||
|
Your credit card is stored securely with <a href="https://stripe.com">Stripe</a> and we use <a href="https://stripe.com/docs/stripe.js">Stripe.js</a> for maximum security.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -47,7 +47,7 @@ def for_teams_complete(request):
|
||||||
error_message or
|
error_message or
|
||||||
'Your card was declined.')
|
'Your card was declined.')
|
||||||
|
|
||||||
team = Team(name=request.POST['name'],
|
team = Team(name=request.POST['team-name'],
|
||||||
email=request.POST['email'],
|
email=request.POST['email'],
|
||||||
owner=request.user)
|
owner=request.user)
|
||||||
team.stripe_id = customer.id
|
team.stripe_id = customer.id
|
||||||
|
|
|
@ -106,14 +106,19 @@
|
||||||
</li>
|
</li>
|
||||||
{% block add-snipt %}{% endblock %}
|
{% block add-snipt %}{% endblock %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if not request.user.is_authenticated %}
|
||||||
|
<li>
|
||||||
|
<a href="/for-teams/" class="{% if '/for-teams/' in request.path %}active{% endif %}">Teams</a>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
<li class="teams-nav">
|
<li class="teams-nav">
|
||||||
<a href="#" class="teams-nav {% if '/for-teams/' in request.path %}active{% endif %}">Teams</a>
|
<a href="#" class="teams-nav {% if '/for-teams/' in request.path %}active{% endif %}">Teams</a>
|
||||||
<ul>
|
<ul>
|
||||||
{% for team in request.user.profile.teams %}
|
{% for team in request.user.profile.teams|dictsort:'name' %}
|
||||||
<li>
|
<li>
|
||||||
<a href="/{{ team.user.username }}/">
|
<a href="/{{ team.user.username }}/">
|
||||||
<i class="icon-user icon-white"></i>
|
<i class="icon-user icon-white"></i>
|
||||||
{{ team.user.username }}
|
{{ team.name }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -125,6 +130,7 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
{% if request.user.is_authenticated %}
|
{% if request.user.is_authenticated %}
|
||||||
|
|
|
@ -40,6 +40,20 @@
|
||||||
Group discounts available. Email <a href="mailto:support@snipt.net">support@snipt.net</a> for details.
|
Group discounts available. Email <a href="mailto:support@snipt.net">support@snipt.net</a> for details.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
{% if not request.user.is_authenticated %}
|
||||||
|
<div class="login-first">
|
||||||
|
<span>
|
||||||
|
To go <span class="pro">Pro</span>, <a href="/signup/?next=/pro/">sign up</a> or <a href="/login/?next=/pro/">log in</a>.
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{% elif request.user.profile.is_pro %}
|
||||||
|
<div class="login-first">
|
||||||
|
<span>
|
||||||
|
You're already a <span class="pro">Pro</span>.
|
||||||
|
<a style="display: block; margin-top: 15px;" href="/account/billing/">View details »</a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
<div class="payment-loading"><span>Please wait…</span></div>
|
<div class="payment-loading"><span>Please wait…</span></div>
|
||||||
<div class="payment-errors alert alert-error"></div>
|
<div class="payment-errors alert alert-error"></div>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
|
@ -51,12 +65,6 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group">
|
|
||||||
<label class="control-label" for="name">Name on card:</label>
|
|
||||||
<div class="controls">
|
|
||||||
<input type="text" class="input-xlarge" id="name" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label" for="number">Card number:</label>
|
<label class="control-label" for="number">Card number:</label>
|
||||||
<div class="controls cards">
|
<div class="controls cards">
|
||||||
|
@ -87,7 +95,6 @@
|
||||||
</select>
|
</select>
|
||||||
<select id="exp-year" class="span2">
|
<select id="exp-year" class="span2">
|
||||||
<option value="">----</option>
|
<option value="">----</option>
|
||||||
<option value="2014">2014</option>
|
|
||||||
<option value="2015">2015</option>
|
<option value="2015">2015</option>
|
||||||
<option value="2016">2016</option>
|
<option value="2016">2016</option>
|
||||||
<option value="2017">2017</option>
|
<option value="2017">2017</option>
|
||||||
|
@ -96,8 +103,9 @@
|
||||||
<option value="2020">2020</option>
|
<option value="2020">2020</option>
|
||||||
<option value="2021">2021</option>
|
<option value="2021">2021</option>
|
||||||
<option value="2022">2022</option>
|
<option value="2022">2022</option>
|
||||||
<option value="2022">2023</option>
|
<option value="2023">2023</option>
|
||||||
<option value="2022">2024</option>
|
<option value="2024">2024</option>
|
||||||
|
<option value="2025">2025</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -120,6 +128,7 @@
|
||||||
<div class="form-actions" style="color: #A2A2A2;">
|
<div class="form-actions" style="color: #A2A2A2;">
|
||||||
Prefer to pay with PayPal? Email <a href="mailto:support@snipt.net">support@snipt.net</a>.
|
Prefer to pay with PayPal? Email <a href="mailto:support@snipt.net">support@snipt.net</a>.
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
3
views.py
3
views.py
|
@ -82,11 +82,8 @@ def login_redirect(request):
|
||||||
return HttpResponseRedirect('/')
|
return HttpResponseRedirect('/')
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
|
||||||
@render_to('pro.html')
|
@render_to('pro.html')
|
||||||
def pro(request):
|
def pro(request):
|
||||||
if request.user.profile.is_pro:
|
|
||||||
return HttpResponseRedirect('/' + request.user.username + '/')
|
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue