resolve merge conflict
49
design_membership/confirm.html
Normal file
|
@ -0,0 +1,49 @@
|
|||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="membership.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-2"></div>
|
||||
<div class="col-md-8">
|
||||
<div class="col-md-12 text-left">
|
||||
<h2 class="text-center text-muted">Your membership is almost ready!</h2>
|
||||
<h5 class="text-center text-muted">If this is correct information, click CONFIRM</h5>
|
||||
<br>
|
||||
<h4 class="text-center text-muted">Name: Nico Schottelius</h4>
|
||||
<h4 class="text-center text-muted">Email: nico.schottelius@digitalglarus.ch</h4>
|
||||
<h4 class="text-center text-muted">Membership requested for:
|
||||
<br><br>01.01.2016-31.12.2016</h4>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<p class="text-center text-muted">Have probelm? Contact
|
||||
<a href="">help@digitalglarus.ch.</a>
|
||||
<br>
|
||||
</p>
|
||||
<a class="btn btn-primary">GO BACK</a>
|
||||
<a class="btn btn-primary">CONFIRM</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body></html>
|
66
design_membership/creditcard.html
Normal file
|
@ -0,0 +1,66 @@
|
|||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="membership.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-2"></div>
|
||||
<div class="col-md-8">
|
||||
<h3 class="text-left text-muted">Payment details</h3>
|
||||
<hr>
|
||||
<div class="page-header text-muted" contenteditable="true">
|
||||
<h5>1 Year coworking membership (360 CHF)</h5>
|
||||
<h5> +2 free working days included (0 CHF)</h5>
|
||||
<div class="page-header text-muted">
|
||||
<h5>Valid 01.01.2016 - 31.12.2016 </h5>
|
||||
<h5>Coworker Name : Nico Schottelius </h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-header text-muted">
|
||||
<h3 class="text-right">Total : 360 CHF</h3>
|
||||
</div>
|
||||
<form role="form">
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="exampleInputEmail1">Name*</label>
|
||||
<input class="form-control" id="exampleInputEmail1" placeholder="Enter name on card" type="email">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="exampleInputPassword1">Card Number*</label>
|
||||
<input class="form-control" id="exampleInputPassword1" placeholder="Card Number" type="text">
|
||||
</div>
|
||||
</form>
|
||||
<form role="form">
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="exampleInputEmail1">Expiry Date*</label>
|
||||
<input class="form-control" id="exampleInputEmail1" placeholder="MM/YY" type="email">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="exampleInputPassword1">CCV*</label>
|
||||
<input class="form-control" id="exampleInputPassword1" placeholder="CVV" type="password">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-block btn-primary">Submit</button>
|
||||
</form>
|
||||
<a class="btn btn-block btn-info">Cancel</a>
|
||||
</div>
|
||||
<div class="col-md-2"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-11">
|
||||
<br>
|
||||
<p class="text-center text-muted">Have probelm? Contact
|
||||
<a href="">help@digitalglarus.ch.</a>
|
||||
<br>
|
||||
<br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body></html>
|
44
design_membership/error.html
Normal file
|
@ -0,0 +1,44 @@
|
|||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="membership.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h1 class="text-center">Oops! Something went wrong..</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<p class="text-center">Your last action was not complete.
|
||||
<br>Have problems? contact us at
|
||||
<a href="">help@digitalglarus.ch</a>
|
||||
</p>
|
||||
<p></p>
|
||||
</div>
|
||||
<a hrefhelp@digitalglarus.ch<="" p="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<a class="btn btn-primary">Back</a>
|
||||
</div>
|
||||
</div>
|
||||
<a hrefhelp@digitalglarus.ch<="" p="">
|
||||
</a>
|
||||
</div>
|
||||
<a hrefhelp@digitalglarus.ch<="" p="">
|
||||
</a>
|
||||
</div>
|
||||
<a hrefhelp@digitalglarus.ch<="" p="">
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</body></html>
|
109
design_membership/login.html
Normal file
|
@ -0,0 +1,109 @@
|
|||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="membership.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<div class="navbar navbar-default navbar-static-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-ex-collapse">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#"><span>Brand</span></a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar-ex-collapse">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="active">
|
||||
<a href="#">Home</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Contacts</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<h1>I'm already a member!</h1>
|
||||
<p>To book you need to be logged in.</p>
|
||||
<h2>Log in</h2>
|
||||
<hr>
|
||||
<form role="form">
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="exampleInputEmail1">Email address</label>
|
||||
<input class="form-control" id="exampleInputEmail1" placeholder="Enter email" type="email">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="exampleInputPassword1">Password</label>
|
||||
<input class="form-control" id="exampleInputPassword1" placeholder="Password" type="password">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-default">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h1></h1>
|
||||
<h1>Not yet a member?</h1>
|
||||
<p>It only takes your email to register!
|
||||
You'll get a mail from us for confirmation.</p>
|
||||
<h2>Register</h2>
|
||||
<hr>
|
||||
<form role="form">
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="exampleInputEmail1">Name</label>
|
||||
<input class="form-control" id="exampleInputEmail1" placeholder="Enter name" type="text">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="exampleInputPassword1">Email address</label>
|
||||
<input class="form-control" id="exampleInputPassword1" placeholder="Enter email" type="email">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-default">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="section section-primary">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h1>Digital Glarus</h1>
|
||||
<p>In der Au 7 8762 Schwanden
|
||||
<br>Copyright © ungleich GmbH 2016</p>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<p class="text-info text-right">
|
||||
<br>
|
||||
<br>
|
||||
</p>
|
||||
<div class="row">
|
||||
<div class="col-md-12 hidden-lg hidden-md hidden-sm text-left">
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-instagram text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-twitter text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-facebook text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-github text-inverse"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 hidden-xs text-right">
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-instagram text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-twitter text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-facebook text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-github text-inverse"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
</body></html>
|
6778
design_membership/membership.css
Normal file
193
design_membership/membership.html
Normal file
|
@ -0,0 +1,193 @@
|
|||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="membership.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<div class="cover">
|
||||
<div class="navbar">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-ex-collapse">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#"><span>Digital Glarus</span></a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar-ex-collapse">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="active">
|
||||
<a href="#">Home</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Contacts</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cover-image" style="background-image : url('photo-1418479631014-8cbf89db3431 2.jpg')"></div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<h2 class="text-inverse">When do you want to cowork?</h2>
|
||||
<p class="text-inverse">Pick a date!</p>
|
||||
<a class="btn btn-lg btn-primary">Calender</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2 class="text-center">Become a member!</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<p class="text-center">Become our member of Digital Glarus! </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<img src="https://ununsplash.imgix.net/photo-1423753623104-718aaace6772?w=1024&q=50&fm=jpg&s=1ffa61419561b5c796bca3158e7c704c" class="img-responsive">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h2 class="text-muted">The Spontaneous</h2>
|
||||
<h3>35CHF/Month (1 day pass included)</h3>
|
||||
<p>Do you dream of having a place to be inspired in the middle of the Alps?
|
||||
With only 35CHF a month, you can enjoy the full benefit of a Digital Chalet
|
||||
Schwanden membership! You can enjoy high speed network connection and comfortable
|
||||
working desks where you can come up with best ideas for your project surrounded
|
||||
by friendly coworkers. And if your work gets too productive to leave, you
|
||||
can crash on our guest bed for the night, the house has everything a coworker
|
||||
needs from an equipped kitchen to a shower. The Spontaneous includes 1
|
||||
day pass included, it is perfect for you if you are planning a retreat
|
||||
month of a coworking in the nature, or coming for a limited period to Switzerland
|
||||
for coworking. It is a perfect try-out package!
|
||||
<br>
|
||||
</p>
|
||||
<a class="btn btn-primary">Buy Now</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<h2 class="text-muted">The Committed</h2>
|
||||
<h3>360CHF/Year (2 free day per month included)</h3>
|
||||
<p>Be a regular coworker in our Digital Chalet Schwanden! With only 360CHF,
|
||||
you can enjoy the full coworking space for the whole year, with additional
|
||||
2 free day passes for each month. It is an ideal deal for our busy and
|
||||
active coworkers who would like to save time(and nerve)for requesting new
|
||||
membership every month. Signifiantly discounted price is applied for yearly
|
||||
membership.
|
||||
<br>
|
||||
</p>
|
||||
<a class="btn btn-primary">Buy Now</a>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<img src="https://unsplash.imgix.net/photo-1413834932717-29e7d4714192?w=1024&q=50&fm=jpg&s=d9d6cbc32dd4968d0c21e331436a6af6" class="img-responsive">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2 class="text-center text-primary">A Quick Glance..</h2>
|
||||
<p class="text-center">A short guide for membership features.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>The Spontaneous</th>
|
||||
<th>The Committed</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Includes</td>
|
||||
<td>1 work day included</td>
|
||||
<td>2 free work days per month</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Fits for</td>
|
||||
<td>Great for trial, see how it goes</td>
|
||||
<td>Perfect for coworking with great price</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Price</td>
|
||||
<td>Decicde every month</td>
|
||||
<td>Pay once per year</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Membership price</td>
|
||||
<td>35CHF/Month</td>
|
||||
<td>360CHF/Year</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Price per additional day</td>
|
||||
<td>20 CHF</td>
|
||||
<td>15 CHF</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="section section-primary">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h1>Digital Glarus</h1>
|
||||
<p>In der Au 7 8762 Schwanden
|
||||
<br>Copyright © ungleich GmbH 2016</p>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<p class="text-info text-right">
|
||||
<br>
|
||||
<br>
|
||||
</p>
|
||||
<div class="row">
|
||||
<div class="col-md-12 hidden-lg hidden-md hidden-sm text-left">
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-instagram text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-twitter text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-facebook text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-github text-inverse"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 hidden-xs text-right">
|
||||
<a href="https://twitter.com/DigitalGlarus"><i class="fa fa-twitter"></i></a>
|
||||
<i class="fa fa-3x fa-fw fa-instagram text-inverse"></i>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-twitter text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-facebook text-inverse"></i></a>
|
||||
<a href="https://github.com/ungleich"><i class="fa fa-github"></i></a>
|
||||
<i class="fa fa-3x fa-fw fa-github text-inverse"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
</body></html>
|
733
design_membership/membership.less
Normal file
|
@ -0,0 +1,733 @@
|
|||
/*!
|
||||
* Default theme for Pingendo
|
||||
* Homepage: http://pingendo.com
|
||||
* Copyright 2015 Pingendo
|
||||
* Licensed under MIT
|
||||
* Based on Bootstrap v3.3.4
|
||||
*/
|
||||
|
||||
|
||||
/* Add custom CSS classes here
|
||||
*
|
||||
* img {
|
||||
* box-shadow : 0px 0px 10px black !important;
|
||||
* }
|
||||
*/
|
||||
|
||||
//
|
||||
// Variables
|
||||
// --------------------------------------------------
|
||||
//== Colors
|
||||
//
|
||||
//## Gray and brand colors for use across Bootstrap.
|
||||
@gray-base : #000;
|
||||
@gray-darker : lighten(@gray-base, 13.5%); // #222
|
||||
@gray-dark : lighten(@gray-base, 20%); // #333
|
||||
@gray : lighten(@gray-base, 33.5%); // #555
|
||||
@gray-light : lighten(@gray-base, 46.7%); // #777
|
||||
@gray-lighter : lighten(@gray-base, 93.5%); // #eee
|
||||
@brand-primary : #a0ced7;
|
||||
@brand-success : #5cb85c;
|
||||
@brand-info : #5bc0de;
|
||||
@brand-warning : #f0ad4e;
|
||||
@brand-danger : #d9534f;
|
||||
//== Scaffolding
|
||||
//
|
||||
//## Settings for some of the most global styles.
|
||||
//** Background color for `<body>`.
|
||||
@body-bg : white;
|
||||
//** Global text color on `<body>`.
|
||||
@text-color : black;
|
||||
//** Global textual link color.
|
||||
@link-color : @brand-primary;
|
||||
//** Link hover color set via `darken()` function.
|
||||
@link-hover-color : darken(@link-color, 15%);
|
||||
//** Link hover decoration.
|
||||
@link-hover-decoration : underline;
|
||||
//== Typography
|
||||
//
|
||||
//## Font, line-height, and color for body text, headings, and more.
|
||||
@font-family-sans-serif : "Helvetica Neue",
|
||||
Helvetica,
|
||||
Arial,
|
||||
sans-serif;
|
||||
@font-family-serif : Georgia,
|
||||
"Times New Roman",
|
||||
Times,
|
||||
serif;
|
||||
//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
|
||||
@font-family-monospace : Menlo,
|
||||
Monaco,
|
||||
Consolas,
|
||||
"Courier New",
|
||||
monospace;
|
||||
@font-family-base : Lato;
|
||||
@font-size-base : 14px;
|
||||
@font-size-large : ceil((@font-size-base * 1.25)); // ~18px
|
||||
@font-size-small : ceil((@font-size-base * 0.85)); // ~12px
|
||||
@font-size-h1 : floor((@font-size-base * 2.6)); // ~36px
|
||||
@font-size-h2 : floor((@font-size-base * 2.15)); // ~30px
|
||||
@font-size-h3 : ceil((@font-size-base * 1.7)); // ~24px
|
||||
@font-size-h4 : ceil((@font-size-base * 1.25)); // ~18px
|
||||
@font-size-h5 : @font-size-base;
|
||||
@font-size-h6 : ceil((@font-size-base * 0.85)); // ~12px
|
||||
//** Unit-less `line-height` for use in components like buttons.
|
||||
@line-height-base : 1.428571429; // 20/14
|
||||
//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
|
||||
@line-height-computed : floor((@font-size-base * @line-height-base)); // ~20px
|
||||
//** By default, this inherits from the `<body>`.
|
||||
@headings-font-family : Lato;
|
||||
@headings-font-weight : 500;
|
||||
@headings-line-height : 1.1;
|
||||
@headings-color : inherit;
|
||||
//== Iconography
|
||||
//
|
||||
//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
|
||||
//** Load fonts from this directory.
|
||||
@icon-font-path : "../fonts/";
|
||||
//** File name for all font files.
|
||||
@icon-font-name : "glyphicons-halflings-regular";
|
||||
//** Element ID within SVG icon file.
|
||||
@icon-font-svg-id : "glyphicons_halflingsregular";
|
||||
//== Components
|
||||
//
|
||||
//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
|
||||
@padding-base-vertical : 6px;
|
||||
@padding-base-horizontal : 12px;
|
||||
@padding-large-vertical : 10px;
|
||||
@padding-large-horizontal : 16px;
|
||||
@padding-small-vertical : 5px;
|
||||
@padding-small-horizontal : 10px;
|
||||
@padding-xs-vertical : 1px;
|
||||
@padding-xs-horizontal : 5px;
|
||||
@line-height-large : 1.3333333; // extra decimals for Win 8.1 Chrome
|
||||
@line-height-small : 1.5;
|
||||
@border-radius-base : 4px;
|
||||
@border-radius-large : 6px;
|
||||
@border-radius-small : 3px;
|
||||
//** Global color for active items (e.g., navs or dropdowns).
|
||||
@component-active-color : contrast(@component-active-bg, @text-color, @text-inverse, 43%);
|
||||
//** Global background color for active items (e.g., navs or dropdowns).
|
||||
@component-active-bg : @brand-primary;
|
||||
//** Width of the `border` for generating carets that indicator dropdowns.
|
||||
@caret-width-base : 4px;
|
||||
//** Carets increase slightly in size for larger components.
|
||||
@caret-width-large : 5px;
|
||||
//== Tables
|
||||
//
|
||||
//## Customizes the `.table` component with basic values, each used across all table variations.
|
||||
//** Padding for `<th>`s and `<td>`s.
|
||||
@table-cell-padding : 8px;
|
||||
//** Padding for cells in `.table-condensed`.
|
||||
@table-condensed-cell-padding : 5px;
|
||||
//** Default background color used for all tables.
|
||||
@table-bg : transparent;
|
||||
//** Background color used for `.table-striped`.
|
||||
@table-bg-accent : #f9f9f9;
|
||||
//** Background color used for `.table-hover`.
|
||||
@table-bg-hover : #f5f5f5;
|
||||
@table-bg-active : @table-bg-hover;
|
||||
//** Border color for table and cell borders.
|
||||
@table-border-color : #ddd;
|
||||
//== Buttons
|
||||
//
|
||||
//## For each of Bootstrap's buttons, define text, background and border color.
|
||||
@btn-font-weight : normal;
|
||||
@btn-default-color : @text-color;
|
||||
@btn-default-bg : @body-bg;
|
||||
@btn-default-border :;
|
||||
@btn-primary-color : white;
|
||||
@btn-primary-bg : @brand-primary; #a0ced7
|
||||
@btn-primary-border : darken(@btn-primary-bg, 5%);
|
||||
@btn-success-color : white;
|
||||
@btn-success-bg : @brand-success;
|
||||
@btn-success-border : darken(@btn-success-bg, 5%);
|
||||
@btn-info-color : white;
|
||||
@btn-info-bg : @brand-info;
|
||||
@btn-info-border : darken(@btn-info-bg, 5%);
|
||||
@btn-warning-color : white;
|
||||
@btn-warning-bg : @brand-warning;
|
||||
@btn-warning-border : darken(@btn-warning-bg, 5%);
|
||||
@btn-danger-color : contrast(@btn-danger-bg, @text-color, @text-inverse, 43%);
|
||||
@btn-danger-bg : @brand-danger;
|
||||
@btn-danger-border : darken(@btn-danger-bg, 5%);
|
||||
@btn-link-disabled-color : @gray-light;
|
||||
//== Forms
|
||||
//
|
||||
//##
|
||||
//** `<input>` background color
|
||||
@input-bg : #fff;
|
||||
//** `<input disabled>` background color
|
||||
@input-bg-disabled : @gray-lighter;
|
||||
//** Text color for `<input>`s
|
||||
@input-color : @gray;
|
||||
//** `<input>` border color
|
||||
@input-border : #ccc;
|
||||
// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
|
||||
//** Default `.form-control` border radius
|
||||
@input-border-radius : @border-radius-base;
|
||||
//** Large `.form-control` border radius
|
||||
@input-border-radius-large : @border-radius-large;
|
||||
//** Small `.form-control` border radius
|
||||
@input-border-radius-small : @border-radius-small;
|
||||
//** Border color for inputs on focus
|
||||
@input-border-focus : #66afe9;
|
||||
//** Placeholder text color
|
||||
@input-color-placeholder : #999;
|
||||
//** Default `.form-control` height
|
||||
@input-height-base : (@line-height-computed + (@padding-base-vertical * 2) + 2);
|
||||
//** Large `.form-control` height
|
||||
@input-height-large : (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
|
||||
//** Small `.form-control` height
|
||||
@input-height-small : (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
|
||||
//** `.form-group` margin
|
||||
@form-group-margin-bottom: 15px;
|
||||
@legend-color : @gray-dark;
|
||||
@legend-border-color : #e5e5e5;
|
||||
//** Background color for textual input addons
|
||||
@input-group-addon-bg : @gray-lighter;
|
||||
//** Border color for textual input addons
|
||||
@input-group-addon-border-color : @input-border;
|
||||
//** Disabled cursor for form controls and buttons.
|
||||
@cursor-disabled : not-allowed;
|
||||
//== Dropdowns
|
||||
//
|
||||
//## Dropdown menu container and contents.
|
||||
//** Background for the dropdown menu.
|
||||
@dropdown-bg : #fff;
|
||||
//** Dropdown menu `border-color`.
|
||||
@dropdown-border : rgba(0, 0, 0, .15);
|
||||
//** Dropdown menu `border-color` **for IE8**.
|
||||
@dropdown-fallback-border : #ccc;
|
||||
//** Divider color for between dropdown items.
|
||||
@dropdown-divider-bg : #e5e5e5;
|
||||
//** Dropdown link text color.
|
||||
@dropdown-link-color : @gray-dark;
|
||||
//** Hover color for dropdown links.
|
||||
@dropdown-link-hover-color : darken(@gray-dark, 5%);
|
||||
//** Hover background for dropdown links.
|
||||
@dropdown-link-hover-bg : #f5f5f5;
|
||||
//** Active dropdown menu item text color.
|
||||
@dropdown-link-active-color : @component-active-color;
|
||||
//** Active dropdown menu item background color.
|
||||
@dropdown-link-active-bg : @component-active-bg;
|
||||
//** Disabled dropdown menu item background color.
|
||||
@dropdown-link-disabled-color : @gray-light;
|
||||
//** Text color for headers within dropdown menus.
|
||||
@dropdown-header-color : @gray-light;
|
||||
//** Deprecated `@dropdown-caret-color` as of v3.1.0
|
||||
@dropdown-caret-color : #000;
|
||||
//-- Z-index master list
|
||||
//
|
||||
// Warning: Avoid customizing these values. They're used for a bird's eye view
|
||||
// of components dependent on the z-axis and are designed to all work together.
|
||||
//
|
||||
// Note: These variables are not generated into the Customizer.
|
||||
@zindex-navbar : 1000;
|
||||
@zindex-dropdown : 1000;
|
||||
@zindex-popover : 1060;
|
||||
@zindex-tooltip : 1070;
|
||||
@zindex-navbar-fixed : 1030;
|
||||
@zindex-modal-background: 1040;
|
||||
@zindex-modal: 1050;
|
||||
//== Media queries breakpoints
|
||||
//
|
||||
//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
|
||||
// Extra small screen / phone
|
||||
//** Deprecated `@screen-xs` as of v3.0.1
|
||||
@screen-xs : 480px;
|
||||
//** Deprecated `@screen-xs-min` as of v3.2.0
|
||||
@screen-xs-min : @screen-xs;
|
||||
//** Deprecated `@screen-phone` as of v3.0.1
|
||||
@screen-phone : @screen-xs-min;
|
||||
// Small screen / tablet
|
||||
//** Deprecated `@screen-sm` as of v3.0.1
|
||||
@screen-sm : 768px;
|
||||
@screen-sm-min : @screen-sm;
|
||||
//** Deprecated `@screen-tablet` as of v3.0.1
|
||||
@screen-tablet : @screen-sm-min;
|
||||
// Medium screen / desktop
|
||||
//** Deprecated `@screen-md` as of v3.0.1
|
||||
@screen-md : 992px;
|
||||
@screen-md-min : @screen-md;
|
||||
//** Deprecated `@screen-desktop` as of v3.0.1
|
||||
@screen-desktop : @screen-md-min;
|
||||
// Large screen / wide desktop
|
||||
//** Deprecated `@screen-lg` as of v3.0.1
|
||||
@screen-lg : 1200px;
|
||||
@screen-lg-min : @screen-lg;
|
||||
//** Deprecated `@screen-lg-desktop` as of v3.0.1
|
||||
@screen-lg-desktop : @screen-lg-min;
|
||||
// So media queries don't overlap when required, provide a maximum
|
||||
@screen-xs-max : (@screen-sm-min - 1);
|
||||
@screen-sm-max : (@screen-md-min - 1);
|
||||
@screen-md-max : (@screen-lg-min - 1);
|
||||
//== Grid system
|
||||
//
|
||||
//## Define your custom responsive grid.
|
||||
//** Number of columns in the grid.
|
||||
@grid-columns : 12;
|
||||
//** Padding between columns. Gets divided in half for the left and right.
|
||||
@grid-gutter-width : 30px;
|
||||
// Navbar collapse
|
||||
//** Point at which the navbar becomes uncollapsed.
|
||||
@grid-float-breakpoint : @screen-sm-min;
|
||||
//** Point at which the navbar begins collapsing.
|
||||
@grid-float-breakpoint-max : (@grid-float-breakpoint - 1);
|
||||
//== Container sizes
|
||||
//
|
||||
//## Define the maximum width of `.container` for different screen sizes.
|
||||
// Small screen / tablet
|
||||
@container-tablet : (720px + @grid-gutter-width);
|
||||
//** For `@screen-sm-min` and up.
|
||||
@container-sm : @container-tablet;
|
||||
// Medium screen / desktop
|
||||
@container-desktop : (940px + @grid-gutter-width);
|
||||
//** For `@screen-md-min` and up.
|
||||
@container-md : @container-desktop;
|
||||
// Large screen / wide desktop
|
||||
@container-large-desktop : (1140px + @grid-gutter-width);
|
||||
//** For `@screen-lg-min` and up.
|
||||
@container-lg : @container-large-desktop;
|
||||
//== Navbar
|
||||
//
|
||||
//##
|
||||
// Basics of a navbar
|
||||
@navbar-height : 50px;
|
||||
@navbar-margin-bottom : @line-height-computed;
|
||||
@navbar-border-radius : @border-radius-base;
|
||||
@navbar-padding-horizontal : floor((@grid-gutter-width / 2));
|
||||
@navbar-padding-vertical : ((@navbar-height - @line-height-computed) / 2);
|
||||
@navbar-collapse-max-height : 340px;
|
||||
@navbar-default-color : black;
|
||||
@navbar-default-bg : #f8f8f8;
|
||||
@navbar-default-border : darken(@navbar-default-bg, 6.5%);
|
||||
// Navbar links
|
||||
@navbar-default-link-color : contrast(@navbar-default-bg, @text-color, @text-inverse, 43%);
|
||||
@navbar-default-link-hover-color : @navbar-default-color;
|
||||
@navbar-default-link-hover-bg : transparent;
|
||||
@navbar-default-link-active-color : @navbar-default-color;
|
||||
@navbar-default-link-active-bg : darken(@navbar-default-bg, 6.5%);
|
||||
@navbar-default-link-disabled-color : #ccc;
|
||||
@navbar-default-link-disabled-bg : transparent;
|
||||
// Navbar brand label
|
||||
@navbar-default-brand-color : @navbar-default-link-color;
|
||||
@navbar-default-brand-hover-color : darken(@navbar-default-brand-color, 10%);
|
||||
@navbar-default-brand-hover-bg : transparent;
|
||||
// Navbar toggle
|
||||
@navbar-default-toggle-hover-bg : #ddd;
|
||||
@navbar-default-toggle-icon-bar-bg : #888;
|
||||
@navbar-default-toggle-border-color : #ddd;
|
||||
// Inverted navbar
|
||||
// Reset inverted navbar basics
|
||||
@navbar-inverse-color : lighten(@gray-light, 15%);
|
||||
@navbar-inverse-bg : #222;
|
||||
@navbar-inverse-border : darken(@navbar-inverse-bg, 10%);
|
||||
// Inverted navbar links
|
||||
@navbar-inverse-link-color : lighten(@gray-light, 15%);
|
||||
@navbar-inverse-link-hover-color : #fff;
|
||||
@navbar-inverse-link-hover-bg : transparent;
|
||||
@navbar-inverse-link-active-color : @navbar-inverse-link-hover-color;
|
||||
@navbar-inverse-link-active-bg : darken(@navbar-inverse-bg, 10%);
|
||||
@navbar-inverse-link-disabled-color : #444;
|
||||
@navbar-inverse-link-disabled-bg : transparent;
|
||||
// Inverted navbar brand label
|
||||
@navbar-inverse-brand-color : @navbar-inverse-link-color;
|
||||
@navbar-inverse-brand-hover-color : #fff;
|
||||
@navbar-inverse-brand-hover-bg : transparent;
|
||||
// Inverted navbar toggle
|
||||
@navbar-inverse-toggle-hover-bg : #333;
|
||||
@navbar-inverse-toggle-icon-bar-bg : #fff;
|
||||
@navbar-inverse-toggle-border-color : #333;
|
||||
//== Navs
|
||||
//
|
||||
//##
|
||||
//=== Shared nav styles
|
||||
@nav-link-padding : 10px 15px;
|
||||
@nav-link-hover-bg : @gray-lighter;
|
||||
@nav-disabled-link-color : @gray-light;
|
||||
@nav-disabled-link-hover-color : @gray-light;
|
||||
//== Tabs
|
||||
@nav-tabs-border-color : #ddd;
|
||||
@nav-tabs-link-hover-border-color : @gray-lighter;
|
||||
@nav-tabs-active-link-hover-bg : @body-bg;
|
||||
@nav-tabs-active-link-hover-color : @gray;
|
||||
@nav-tabs-active-link-hover-border-color : #ddd;
|
||||
@nav-tabs-justified-link-border-color : #ddd;
|
||||
@nav-tabs-justified-active-link-border-color : @body-bg;
|
||||
//== Pills
|
||||
@nav-pills-border-radius : @border-radius-base;
|
||||
@nav-pills-active-link-hover-bg : @component-active-bg;
|
||||
@nav-pills-active-link-hover-color : @component-active-color;
|
||||
//== Pagination
|
||||
//
|
||||
//##
|
||||
@pagination-color : @link-color;
|
||||
@pagination-bg : #fff;
|
||||
@pagination-border : #ddd;
|
||||
@pagination-hover-color : @link-hover-color;
|
||||
@pagination-hover-bg : @gray-lighter;
|
||||
@pagination-hover-border : #ddd;
|
||||
@pagination-active-color : #fff;
|
||||
@pagination-active-bg : @brand-primary;
|
||||
@pagination-active-border : @brand-primary;
|
||||
@pagination-disabled-color : @gray-light;
|
||||
@pagination-disabled-bg : #fff;
|
||||
@pagination-disabled-border : #ddd;
|
||||
//== Pager
|
||||
//
|
||||
//##
|
||||
@pager-bg : @pagination-bg;
|
||||
@pager-border : @pagination-border;
|
||||
@pager-border-radius : 15px;
|
||||
@pager-hover-bg : @pagination-hover-bg;
|
||||
@pager-active-bg : @pagination-active-bg;
|
||||
@pager-active-color : @pagination-active-color;
|
||||
@pager-disabled-color : @pagination-disabled-color;
|
||||
//== Jumbotron
|
||||
//
|
||||
//##
|
||||
@jumbotron-padding : 30px;
|
||||
@jumbotron-color : inherit;
|
||||
@jumbotron-bg : @gray-lighter;
|
||||
@jumbotron-heading-color : inherit;
|
||||
@jumbotron-font-size : ceil((@font-size-base * 1.5));
|
||||
@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));
|
||||
//== Form states and alerts
|
||||
//
|
||||
//## Define colors for form feedback states and, by default, alerts.
|
||||
@state-success-text : @brand-success;
|
||||
@state-success-bg : lighten(@brand-success, 20%);
|
||||
@state-success-border : darken(spin(@state-success-bg, -10), 5%);
|
||||
@state-info-text : @brand-info;
|
||||
@state-info-bg : lighten(@brand-info, 20%);
|
||||
@state-info-border : darken(spin(@state-info-bg, -10), 7%);
|
||||
@state-warning-text : @brand-warning;
|
||||
@state-warning-bg : lighten(@brand-warning, 20%);
|
||||
@state-warning-border : darken(spin(@state-warning-bg, -10), 5%);
|
||||
@state-danger-text : @brand-danger;
|
||||
@state-danger-bg : lighten(@brand-danger, 20%);
|
||||
@state-danger-border : darken(spin(@state-danger-bg, -10), 5%);
|
||||
//== Tooltips
|
||||
//
|
||||
//##
|
||||
//** Tooltip max width
|
||||
@tooltip-max-width : 200px;
|
||||
//** Tooltip text color
|
||||
@tooltip-color : #fff;
|
||||
//** Tooltip background color
|
||||
@tooltip-bg : #000;
|
||||
@tooltip-opacity : .9;
|
||||
//** Tooltip arrow width
|
||||
@tooltip-arrow-width : 5px;
|
||||
//** Tooltip arrow color
|
||||
@tooltip-arrow-color : @tooltip-bg;
|
||||
//== Popovers
|
||||
//
|
||||
//##
|
||||
//** Popover body background color
|
||||
@popover-bg : #fff;
|
||||
//** Popover maximum width
|
||||
@popover-max-width : 276px;
|
||||
//** Popover border color
|
||||
@popover-border-color : rgba(0, 0, 0, .2);
|
||||
//** Popover fallback border color
|
||||
@popover-fallback-border-color : #ccc;
|
||||
//** Popover title background color
|
||||
@popover-title-bg : darken(@popover-bg, 3%);
|
||||
//** Popover arrow width
|
||||
@popover-arrow-width : 10px;
|
||||
//** Popover arrow color
|
||||
@popover-arrow-color : @popover-bg;
|
||||
//** Popover outer arrow width
|
||||
@popover-arrow-outer-width : (@popover-arrow-width + 1);
|
||||
//** Popover outer arrow color
|
||||
@popover-arrow-outer-color : fadein(@popover-border-color, 5%);
|
||||
//** Popover outer arrow fallback color
|
||||
@popover-arrow-outer-fallback-color : darken(@popover-fallback-border-color, 20%);
|
||||
//== Labels
|
||||
//
|
||||
//##
|
||||
//** Default label background color
|
||||
@label-default-bg : @gray-light;
|
||||
//** Primary label background color
|
||||
@label-primary-bg : @brand-primary;
|
||||
//** Success label background color
|
||||
@label-success-bg : @brand-success;
|
||||
//** Info label background color
|
||||
@label-info-bg : @brand-info;
|
||||
//** Warning label background color
|
||||
@label-warning-bg : @brand-warning;
|
||||
//** Danger label background color
|
||||
@label-danger-bg : @brand-danger;
|
||||
//** Default label text color
|
||||
@label-color : #fff;
|
||||
//** Default text color of a linked label
|
||||
@label-link-hover-color : #fff;
|
||||
//== Modals
|
||||
//
|
||||
//##
|
||||
//** Padding applied to the modal body
|
||||
@modal-inner-padding : 15px;
|
||||
//** Padding applied to the modal title
|
||||
@modal-title-padding : 15px;
|
||||
//** Modal title line-height
|
||||
@modal-title-line-height : @line-height-base;
|
||||
//** Background color of modal content area
|
||||
@modal-content-bg : #fff;
|
||||
//** Modal content border color
|
||||
@modal-content-border-color : rgba(0, 0, 0, .2);
|
||||
//** Modal content border color **for IE8**
|
||||
@modal-content-fallback-border-color : #999;
|
||||
//** Modal backdrop background color
|
||||
@modal-backdrop-bg : #000;
|
||||
//** Modal backdrop opacity
|
||||
@modal-backdrop-opacity : .5;
|
||||
//** Modal header border color
|
||||
@modal-header-border-color : #e5e5e5;
|
||||
//** Modal footer border color
|
||||
@modal-footer-border-color : @modal-header-border-color;
|
||||
@modal-lg : 900px;
|
||||
@modal-md : 600px;
|
||||
@modal-sm : 300px;
|
||||
//== Alerts
|
||||
//
|
||||
//## Define alert colors, border radius, and padding.
|
||||
@alert-padding : 15px;
|
||||
@alert-border-radius : @border-radius-base;
|
||||
@alert-link-font-weight : bold;
|
||||
@alert-success-bg : @state-success-bg;
|
||||
@alert-success-text : @state-success-text;
|
||||
@alert-success-border : @state-success-border;
|
||||
@alert-info-bg : @state-info-bg;
|
||||
@alert-info-text : @state-info-text;
|
||||
@alert-info-border : @state-info-border;
|
||||
@alert-warning-bg : @state-warning-bg;
|
||||
@alert-warning-text : @state-warning-text;
|
||||
@alert-warning-border : @state-warning-border;
|
||||
@alert-danger-bg : @state-danger-bg;
|
||||
@alert-danger-text : @state-danger-text;
|
||||
@alert-danger-border : @state-danger-border;
|
||||
//== Progress bars
|
||||
//
|
||||
//##
|
||||
//** Background color of the whole progress component
|
||||
@progress-bg : #f5f5f5;
|
||||
//** Progress bar text color
|
||||
@progress-bar-color : #fff;
|
||||
//** Variable for setting rounded corners on progress bar.
|
||||
@progress-border-radius : @border-radius-base;
|
||||
//** Default progress bar color
|
||||
@progress-bar-bg : @brand-primary;
|
||||
//** Success progress bar color
|
||||
@progress-bar-success-bg : @brand-success;
|
||||
//** Warning progress bar color
|
||||
@progress-bar-warning-bg : @brand-warning;
|
||||
//** Danger progress bar color
|
||||
@progress-bar-danger-bg : @brand-danger;
|
||||
//** Info progress bar color
|
||||
@progress-bar-info-bg : @brand-info;
|
||||
//== List group
|
||||
//
|
||||
//##
|
||||
//** Background color on `.list-group-item`
|
||||
@list-group-bg : @body-bg;
|
||||
//** `.list-group-item` border color
|
||||
@list-group-border : darken(@list-group-bg, 40%);
|
||||
//** List group border radius
|
||||
@list-group-border-radius : @border-radius-base;
|
||||
//** Background color of single list items on hover
|
||||
@list-group-hover-bg : #f5f5f5;
|
||||
//** Text color of active list items
|
||||
@list-group-active-color : @component-active-color;
|
||||
//** Background color of active list items
|
||||
@list-group-active-bg : @component-active-bg;
|
||||
//** Border color of active list elements
|
||||
@list-group-active-border : @list-group-active-bg;
|
||||
//** Text color for content within active list items
|
||||
@list-group-active-text-color : darken(@list-group-active-bg, 40%);
|
||||
//** Text color of disabled list items
|
||||
@list-group-disabled-color : @gray-light;
|
||||
//** Background color of disabled list items
|
||||
@list-group-disabled-bg : @gray-lighter;
|
||||
//** Text color for content within disabled list items
|
||||
@list-group-disabled-text-color : @list-group-disabled-color;
|
||||
@list-group-link-color : #555;
|
||||
@list-group-link-hover-color : @list-group-link-color;
|
||||
@list-group-link-heading-color : #333;
|
||||
//== Panels
|
||||
//
|
||||
//##
|
||||
@panel-bg : @body-bg;
|
||||
@panel-body-padding : 15px;
|
||||
@panel-heading-padding : 10px 15px;
|
||||
@panel-footer-padding : @panel-heading-padding;
|
||||
@panel-border-radius : @border-radius-base;
|
||||
//** Border color for elements within panels
|
||||
@panel-inner-border : #ddd;
|
||||
@panel-footer-bg : #f5f5f5;
|
||||
@panel-default-text : @gray-dark;
|
||||
@panel-default-border : #ddd;
|
||||
@panel-default-heading-bg : #f5f5f5;
|
||||
@panel-primary-text : contrast(@brand-primary, @text-color, @text-inverse, 43%);
|
||||
@panel-primary-border : @brand-primary;
|
||||
@panel-primary-heading-bg : @brand-primary;
|
||||
@panel-success-text : @state-success-text;
|
||||
@panel-success-border : @state-success-border;
|
||||
@panel-success-heading-bg : @state-success-bg;
|
||||
@panel-info-text : @state-info-text;
|
||||
@panel-info-border : @state-info-border;
|
||||
@panel-info-heading-bg : @state-info-bg;
|
||||
@panel-warning-text : @state-warning-text;
|
||||
@panel-warning-border : @state-warning-border;
|
||||
@panel-warning-heading-bg : @state-warning-bg;
|
||||
@panel-danger-text : @state-danger-text;
|
||||
@panel-danger-border : @state-danger-border;
|
||||
@panel-danger-heading-bg : @state-danger-bg;
|
||||
//== Thumbnails
|
||||
//
|
||||
//##
|
||||
//** Padding around the thumbnail image
|
||||
@thumbnail-padding : 4px;
|
||||
//** Thumbnail background color
|
||||
@thumbnail-bg : @body-bg;
|
||||
//** Thumbnail border color
|
||||
@thumbnail-border : #ddd;
|
||||
//** Thumbnail border radius
|
||||
@thumbnail-border-radius : @border-radius-base;
|
||||
//** Custom text color for thumbnail captions
|
||||
@thumbnail-caption-color : @text-color;
|
||||
//** Padding around the thumbnail caption
|
||||
@thumbnail-caption-padding : 9px;
|
||||
//== Wells
|
||||
//
|
||||
//##
|
||||
@well-bg : #f5f5f5;
|
||||
@well-border : darken(@well-bg, 7%);
|
||||
//== Badges
|
||||
//
|
||||
//##
|
||||
@badge-color : #fff;
|
||||
//** Linked badge text color on hover
|
||||
@badge-link-hover-color : #fff;
|
||||
@badge-bg : @gray-light;
|
||||
//** Badge text color in active nav link
|
||||
@badge-active-color : @link-color;
|
||||
//** Badge background color in active nav link
|
||||
@badge-active-bg : #fff;
|
||||
@badge-font-weight : bold;
|
||||
@badge-line-height : 1;
|
||||
@badge-border-radius : 10px;
|
||||
//== Breadcrumbs
|
||||
//
|
||||
//##
|
||||
@breadcrumb-padding-vertical : 8px;
|
||||
@breadcrumb-padding-horizontal : 15px;
|
||||
//** Breadcrumb background color
|
||||
@breadcrumb-bg : #f5f5f5;
|
||||
//** Breadcrumb text color
|
||||
@breadcrumb-color : #ccc;
|
||||
//** Text color of current page in the breadcrumb
|
||||
@breadcrumb-active-color : @gray-light;
|
||||
//** Textual separator for between breadcrumb elements
|
||||
@breadcrumb-separator : "/";
|
||||
//== Carousel
|
||||
//
|
||||
//##
|
||||
@carousel-text-shadow : 0 1px 2px rgba(0, 0, 0, .6);
|
||||
@carousel-control-color : #fff;
|
||||
@carousel-control-width : 15%;
|
||||
@carousel-control-opacity : .5;
|
||||
@carousel-control-font-size : 20px;
|
||||
@carousel-indicator-active-bg : #fff;
|
||||
@carousel-indicator-border-color : #fff;
|
||||
@carousel-caption-color : #fff;
|
||||
//== Close
|
||||
//
|
||||
//##
|
||||
@close-font-weight : bold;
|
||||
@close-color : #000;
|
||||
@close-text-shadow : 0 1px 0 #fff;
|
||||
//== Code
|
||||
//
|
||||
//##
|
||||
@code-color : #c7254e;
|
||||
@code-bg : #f9f2f4;
|
||||
@kbd-color : #fff;
|
||||
@kbd-bg : #333;
|
||||
@pre-bg : #f5f5f5;
|
||||
@pre-color : @gray-dark;
|
||||
@pre-border-color : #ccc;
|
||||
@pre-scrollable-max-height : 340px;
|
||||
//== Type
|
||||
//
|
||||
//##
|
||||
//** Horizontal offset for forms and lists.
|
||||
@component-offset-horizontal : 180px;
|
||||
//** Text muted color
|
||||
@text-muted : @gray-light;
|
||||
//** Abbreviations and acronyms border color
|
||||
@abbr-border-color : @gray-light;
|
||||
//** Headings small color
|
||||
@headings-small-color : @gray-light;
|
||||
//** Blockquote small color
|
||||
@blockquote-small-color : @gray-light;
|
||||
//** Blockquote font size
|
||||
@blockquote-font-size : (@font-size-base * 1.25);
|
||||
//** Blockquote border color
|
||||
@blockquote-border-color : @gray-lighter;
|
||||
//** Page header border color
|
||||
@page-header-border-color: @gray-lighter;
|
||||
//** Width of horizontal description list titles
|
||||
@dl-horizontal-offset : @component-offset-horizontal;
|
||||
//** Horizontal line color.
|
||||
@hr-border : @gray-lighter;
|
||||
// Pingendo variables
|
||||
@section-spacing : 35px;
|
||||
// Core variables and mixins
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/mixins.less";
|
||||
// Reset and dependencies
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/normalize.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/print.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/glyphicons.less";
|
||||
// Core CSS
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/scaffolding.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/type.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/code.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/grid.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/tables.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/forms.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/buttons.less";
|
||||
// Components
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/component-animations.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/dropdowns.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/button-groups.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/input-groups.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/navs.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/navbar.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/breadcrumbs.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/pagination.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/pager.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/labels.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/badges.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/jumbotron.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/thumbnails.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/alerts.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/progress-bars.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/media.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/list-group.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/panels.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/responsive-embed.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/wells.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/close.less";
|
||||
// Components w/ JavaScript
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/modals.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/tooltip.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/popovers.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/carousel.less";
|
||||
// Utility classes
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/utilities.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/responsive-utilities.less";
|
||||
@import "https://raw.githubusercontent.com/Pingendo/pingendo-bootstrap/gh-pages/less/pingendo-custom.less";
|
||||
|
||||
/* PINGENDO COMMENT DO NOT REMOVE */
|
BIN
design_membership/photo-1418479631014-8cbf89db3431 2.jpg
Normal file
After Width: | Height: | Size: 473 KiB |
BIN
design_membership/photo-1418479631014-8cbf89db3431 2@2x.png
Normal file
After Width: | Height: | Size: 2.5 MiB |
BIN
design_membership/photo-1418479631014-8cbf89db3431.jpeg
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
design_membership/photo-1418479631014-8cbf89db3431.sketch
Normal file
26
design_membership/success.html
Normal file
|
@ -0,0 +1,26 @@
|
|||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="http://pingendo.github.io/pingendo-bootstrap/themes/default/bootstrap.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h1 class="text-center text-muted">You're successfully registered!</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<p class="text-center text-muted">Your password is sent to your email!
|
||||
<br>Check your email to activate your account.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body></html>
|
|
@ -1,5 +1,6 @@
|
|||
from cms.plugin_base import CMSPluginBase
|
||||
from cms.plugin_pool import plugin_pool
|
||||
from cms.wizards import wizard_base
|
||||
from .models import DGGalleryPlugin, DGSupportersPlugin, Supporter
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
|
@ -29,5 +30,7 @@ class CMSSupportersPlugin(CMSPluginBase):
|
|||
})
|
||||
return context
|
||||
|
||||
|
||||
|
||||
plugin_pool.register_plugin(CMSGalleryPlugin)
|
||||
plugin_pool.register_plugin(CMSSupportersPlugin)
|
||||
|
|
|
@ -1,19 +1,67 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2016-03-13 21:39
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import filer.fields.image
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('filer', '0002_auto_20150606_2003'),
|
||||
('cms', '0013_urlconfrevision'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DGGallery',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=30)),
|
||||
('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='digitalglarus.DGGallery')),
|
||||
],
|
||||
options={
|
||||
'verbose_name_plural': 'dgGallery',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DGGalleryPlugin',
|
||||
fields=[
|
||||
('cmsplugin_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='cms.CMSPlugin')),
|
||||
('dgGallery', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='digitalglarus.DGGallery')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('cms.cmsplugin',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DGPicture',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('description', models.CharField(max_length=60)),
|
||||
('gallery', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='digitalglarus.DGGallery')),
|
||||
('image', filer.fields.image.FilerImageField(on_delete=django.db.models.deletion.CASCADE, related_name='dg_gallery', to='filer.Image')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DGSupportersPlugin',
|
||||
fields=[
|
||||
('cmsplugin_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='cms.CMSPlugin')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('cms.cmsplugin',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Message',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, primary_key=True, auto_created=True)),
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('email', models.EmailField(max_length=254)),
|
||||
('phone_number', models.CharField(max_length=200)),
|
||||
|
@ -21,4 +69,12 @@ class Migration(migrations.Migration):
|
|||
('received_date', models.DateTimeField(verbose_name='date received')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Supporter',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('description', models.TextField(blank=True, null=True)),
|
||||
],
|
||||
),
|
||||
]
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('digitalglarus', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='message',
|
||||
name='email',
|
||||
field=models.EmailField(max_length=75),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
|
@ -1,19 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('digitalglarus', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='message',
|
||||
name='email',
|
||||
field=models.EmailField(max_length=75),
|
||||
),
|
||||
]
|
|
@ -1,25 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('digitalglarus', '0003_merge'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Supporter',
|
||||
fields=[
|
||||
('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('description', models.CharField(max_length=500)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
]
|
|
@ -1,20 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('digitalglarus', '0004_supporter'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='supporter',
|
||||
name='description',
|
||||
field=models.TextField(),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
|
@ -1,51 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
import filer.fields.image
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cms', '0012_auto_20150607_2207'),
|
||||
('digitalglarus', '0005_auto_20160208_0218'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DGGallery',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, verbose_name='ID', serialize=False, primary_key=True)),
|
||||
('name', models.CharField(max_length=30)),
|
||||
('parent', models.ForeignKey(blank=True, to='digitalglarus.DGGallery', null=True)),
|
||||
],
|
||||
options={
|
||||
'verbose_name_plural': 'dgGallery',
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DGGalleryPlugin',
|
||||
fields=[
|
||||
('cmsplugin_ptr', models.OneToOneField(primary_key=True, to='cms.CMSPlugin', auto_created=True, parent_link=True, serialize=False)),
|
||||
('dgGallery', models.ForeignKey(to='digitalglarus.DGGallery')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('cms.cmsplugin',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DGPicture',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, verbose_name='ID', serialize=False, primary_key=True)),
|
||||
('description', models.CharField(max_length=60)),
|
||||
('gallery', models.ForeignKey(to='digitalglarus.DGGallery')),
|
||||
('image', filer.fields.image.FilerImageField(related_name='dg_gallery', to='filer.Image')),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
]
|
|
@ -1,20 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('digitalglarus', '0006_dggallery_dggalleryplugin_dgpicture'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='supporter',
|
||||
name='description',
|
||||
field=models.TextField(blank=True, null=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
|
@ -1,26 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cms', '0012_auto_20150607_2207'),
|
||||
('digitalglarus', '0007_auto_20160208_1031'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DGSupportersPlugin',
|
||||
fields=[
|
||||
('cmsplugin_ptr', models.OneToOneField(primary_key=True, auto_created=True, parent_link=True, to='cms.CMSPlugin', serialize=False)),
|
||||
('dgSupporters', models.ManyToManyField(to='digitalglarus.Supporter')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('cms.cmsplugin',),
|
||||
),
|
||||
]
|
|
@ -1,18 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('digitalglarus', '0008_dgsupportersplugin'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='dgsupportersplugin',
|
||||
name='dgSupporters',
|
||||
),
|
||||
]
|
|
@ -1,19 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('digitalglarus', '0009_remove_dgsupportersplugin_dgsupporters'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='message',
|
||||
name='email',
|
||||
field=models.EmailField(max_length=254),
|
||||
),
|
||||
]
|
BIN
digitalglarus/static/digitalglarus/img/img_2.psd
Normal file
|
@ -23,8 +23,10 @@
|
|||
<link href="{% static 'digitalglarus/css/business-casual.css' %}" rel="stylesheet">
|
||||
|
||||
<!-- Fonts -->
|
||||
<link href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
|
||||
<link href="//fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic" rel="stylesheet" type="text/css">
|
||||
<link href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
|
||||
rel="stylesheet" type="text/css">
|
||||
<link href="//fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic"
|
||||
rel="stylesheet" type="text/css">
|
||||
|
||||
{% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
|
||||
{% render_block "js" postprocessor "compressor.contrib.sekizai.compress" %}
|
||||
|
@ -36,9 +38,16 @@
|
|||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
(function (i, s, o, g, r, a, m) {
|
||||
i['GoogleAnalyticsObject'] = r;
|
||||
i[r] = i[r] || function () {
|
||||
(i[r].q = i[r].q || []).push(arguments)
|
||||
}, i[r].l = 1 * new Date();
|
||||
a = s.createElement(o),
|
||||
m = s.getElementsByTagName(o)[0];
|
||||
a.async = 1;
|
||||
a.src = g;
|
||||
m.parentNode.insertBefore(a, m)
|
||||
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
|
||||
|
||||
ga('create', 'UA-62285904-2', 'auto');
|
||||
|
@ -57,7 +66,8 @@
|
|||
<div class="container">
|
||||
<!-- Brand and toggle get grouped for better mobile display -->
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse"
|
||||
data-target="#bs-example-navbar-collapse-1">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
|
@ -73,9 +83,6 @@
|
|||
{% show_menu_below_id "digital-glarus-page" 0 %}
|
||||
<li>
|
||||
<a href="{% url 'digitalglarus:supporters' %}">Supporters</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{% url 'digitalglarus:blog' %}">Blog</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -93,7 +100,8 @@
|
|||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12 text-center">
|
||||
<p class="text-center">Copyright © <a href="http://www.ungleich.ch">ungleich GmbH 2015</a></p>
|
||||
<p class="text-center">Copyright © <a href="http://www.ungleich.ch">ungleich GmbH
|
||||
2015</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<header>
|
||||
<hr></hr>
|
||||
<h2 class="text-center intro-text">
|
||||
<a href="{% url 'digitalglarus:blog-detail' post.slug %}" class="post-title center-block">
|
||||
<a href="{% url 'djangocms_blog:post-detail' post.slug %}" class="post-title center-block">
|
||||
<b>{{ post.title }}</b>
|
||||
</a>
|
||||
<small>
|
||||
|
@ -28,6 +28,6 @@
|
|||
</p>
|
||||
</div>
|
||||
<div class="read-more">
|
||||
<a class="lead" href="{% url 'digitalglarus:blog-detail' post.slug %}">{% trans "read more" %} »</a>
|
||||
<a class="lead" href="{% url 'djangocms_blog:post-detail' post.slug %}">{% trans "read more" %} »</a>
|
||||
</div>
|
||||
</article>
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
{% block title %}{{ post.get_title }}{% endblock %}
|
||||
|
||||
{% block content_blog %}{% spaceless %}
|
||||
{% debug %}
|
||||
<article id="post-{{ post.slug }}" class="post-item post-detail">
|
||||
{% if post.main_image_id %}
|
||||
<div class="blog-visual">
|
||||
|
@ -17,7 +18,7 @@
|
|||
<header class="text-center">
|
||||
<hr></hr>
|
||||
<h2 class="text-center intro-text">
|
||||
<a href="{% url 'digitalglarus:blog-detail' post.slug %}" class="post-title center-block">
|
||||
<a href="{% url 'djangocms_blog:post-detail' post.slug %}" class="post-title center-block">
|
||||
<b>{{ post.title }}</b>
|
||||
</a>
|
||||
<small>
|
||||
|
@ -26,7 +27,7 @@
|
|||
</h2>
|
||||
<hr></hr>
|
||||
{% block blog_meta %}
|
||||
{# include "glarus_blog/includes/blog_meta.html" #}
|
||||
include "glarus_blog/includes/blog_meta.html"
|
||||
{% endblock %}
|
||||
</header>
|
||||
{% endspaceless %}
|
||||
|
|
|
@ -9,6 +9,7 @@ urlpatterns = [
|
|||
url(r'old_letscowork$', views.letscowork, name='letscowork'),
|
||||
url(r'old_home$', views.home, name='home'),
|
||||
url(r'supporters/$', views.supporters, name='supporters'),
|
||||
url(r'blog/$', views.blog, name='blog'),
|
||||
url(r'^blog/(?P<slug>\w[-\w]*)/$', views.blog_detail, name='blog-detail'),
|
||||
url(r'', views.index, name='index')
|
||||
# url(r'blog/',views.blog,name='blog'),
|
||||
# url(r'^blog/(?P<slug>\w[-\w]*)/$', views.blog_detail, name='blog-detail'),
|
||||
]
|
||||
|
|
|
@ -6,6 +6,7 @@ from django.http import HttpResponseRedirect
|
|||
from django.core.urlresolvers import reverse
|
||||
from django.utils.translation import get_language
|
||||
from djangocms_blog.models import Post
|
||||
from django.core.urlresolvers import resolve
|
||||
|
||||
from .models import Message, Supporter
|
||||
|
||||
|
|
14938
dumpall-20160316-0200.sql
Normal file
|
@ -46,7 +46,8 @@ SECRET_KEY = env('DJANGO_SECRET_KEY')
|
|||
# Application definition
|
||||
|
||||
INSTALLED_APPS = (
|
||||
'djangocms_admin_style',
|
||||
#1st migrate
|
||||
'membership',
|
||||
'django.contrib.admin',
|
||||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
|
@ -54,46 +55,54 @@ INSTALLED_APPS = (
|
|||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'django.contrib.sites',
|
||||
'cms', # django CMS itself
|
||||
'treebeard', # utilities for implementing a tree
|
||||
'menus', # helper for model independent hierarchical website navigation
|
||||
'sekizai', # for javascript and css management
|
||||
# django-cms plugins
|
||||
'djangocms_flash',
|
||||
'djangocms_googlemap',
|
||||
'djangocms_inherit',
|
||||
'djangocms_link',
|
||||
'djangocms_snippet',
|
||||
'djangocms_teaser',
|
||||
'djangocms_page_meta',
|
||||
# django-filer
|
||||
'cmsplugin_filer_file',
|
||||
'cmsplugin_filer_folder',
|
||||
'cmsplugin_filer_link',
|
||||
'cmsplugin_filer_teaser',
|
||||
'cmsplugin_filer_video',
|
||||
# versioning
|
||||
'reversion',
|
||||
# ck-editor
|
||||
'djangocms_text_ckeditor',
|
||||
# djangocms-blog
|
||||
'filer',
|
||||
'easy_thumbnails',
|
||||
'cmsplugin_filer_image',
|
||||
'mptt',
|
||||
'parler',
|
||||
'taggit',
|
||||
'taggit_autosuggest',
|
||||
'django_select2',
|
||||
'meta',
|
||||
'meta_mixin',
|
||||
# 'admin_enhancer',
|
||||
'djangocms_blog',
|
||||
'bootstrap3',
|
||||
'compressor',
|
||||
'filer',
|
||||
'djangocms_blog',
|
||||
'cms', # django CMS itself
|
||||
'treebeard', # utilities for implementing a tree
|
||||
'sekizai', # for javascript and css management
|
||||
'menus', # helper for model independent hierarchical website navigation
|
||||
'cmsplugin_filer_image',
|
||||
|
||||
#2nd migrate
|
||||
# django-cms plugins
|
||||
'djangocms_file',
|
||||
'djangocms_picture',
|
||||
'djangocms_video',
|
||||
'djangocms_flash',
|
||||
|
||||
'djangocms_googlemap',
|
||||
'djangocms_inherit',
|
||||
'djangocms_link',
|
||||
'djangocms_teaser',
|
||||
'djangocms_page_meta',
|
||||
'djangocms_text_ckeditor',
|
||||
'djangocms_admin_style',
|
||||
'cmsplugin_filer_file',
|
||||
'cmsplugin_filer_folder',
|
||||
'cmsplugin_filer_link',
|
||||
'cmsplugin_filer_teaser',
|
||||
'cmsplugin_filer_video',
|
||||
#
|
||||
#blog
|
||||
# versioning
|
||||
'reversion',
|
||||
# ungleich
|
||||
'ungleich',
|
||||
'hosting',
|
||||
'digitalglarus',
|
||||
'django_extensions',
|
||||
'debug_toolbar'
|
||||
)
|
||||
|
||||
MIDDLEWARE_CLASSES = (
|
||||
|
@ -117,7 +126,13 @@ ROOT_URLCONF = 'dynamicweb.urls'
|
|||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [],
|
||||
'DIRS': [
|
||||
os.path.join(PROJECT_DIR, 'membership/'), # membership template
|
||||
os.path.join(PROJECT_DIR, 'templates/'),
|
||||
os.path.join(PROJECT_DIR, 'templates/digitalglarus/partials'),
|
||||
os.path.join(PROJECT_DIR, 'templates/cms'),
|
||||
os.path.join(PROJECT_DIR, 'templates/digitalglarus'),
|
||||
],
|
||||
'APP_DIRS': True,
|
||||
'OPTIONS': {
|
||||
'context_processors': [
|
||||
|
@ -263,16 +278,14 @@ FILE_UPLOAD_PERMISSIONS = 0o644
|
|||
|
||||
META_SITE_PROTOCOL = 'http'
|
||||
META_USE_SITES = True
|
||||
|
||||
MIGRATION_MODULES = {
|
||||
'cms': 'cms.migrations',
|
||||
# 'filer': 'filer.migrations_django',
|
||||
'menus': 'menus.migrations_django',
|
||||
# 'menus': 'menus.migrations_django',
|
||||
'djangocms_flash': 'djangocms_flash.migrations_django',
|
||||
'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
|
||||
'djangocms_inherit': 'djangocms_inherit.migrations_django',
|
||||
'djangocms_link': 'djangocms_link.migrations_django',
|
||||
'djangocms_snippet': 'djangocms_snippet.migrations_django',
|
||||
'djangocms_teaser': 'djangocms_teaser.migrations_django',
|
||||
'djangocms_column': 'djangocms_column.migrations_django',
|
||||
'djangocms_flash': 'djangocms_flash.migrations_django',
|
||||
|
@ -295,9 +308,9 @@ STATICFILES_FINDERS = (
|
|||
'compressor.finders.CompressorFinder',
|
||||
)
|
||||
|
||||
COMPRESS_PRECOMPILERS = (
|
||||
('text/less', 'lesscpy {infile}'),
|
||||
)
|
||||
#COMPRESS_PRECOMPILERS = (
|
||||
# ('text/less', 'lesscpy {infile}'),
|
||||
#)
|
||||
|
||||
THUMBNAIL_PROCESSORS = (
|
||||
'easy_thumbnails.processors.colorspace',
|
||||
|
@ -404,3 +417,20 @@ META_INCLUDE_KEYWORDS = ["ungleich", "hosting", "switzerland",
|
|||
META_USE_SITES = True
|
||||
|
||||
PARLER_LANGUAGES = {1: ({'code': 'en-us'}, {'code': 'de'},)}
|
||||
AUTH_USER_MODEL = 'membership.CustomUser'
|
||||
|
||||
|
||||
# PAYMENT
|
||||
|
||||
STRIPE_API_PUBLIC_KEY = 'pk_test_uvWyHNJgVL2IB8kjfgJkGjg4' # used in frontend to call from user browser
|
||||
STRIPE_API_PRIVATE_KEY = 'sk_test_uIPMdgXoRGydrcD7fkwcn7dj' # used in backend payment
|
||||
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
|
||||
|
||||
# EMAIL MESSAGES
|
||||
REGISTRATION_MESSAGE = {'subject': "Validation mail",
|
||||
'message': 'Please validate Your account under this link http://localhost:8000/en-us/validate/{}',
|
||||
'from': 'test@test.com'}
|
||||
|
||||
|
||||
#dont migrate test
|
||||
# SOUTH_TESTS_MIGRATE = False
|
||||
|
|
|
@ -10,6 +10,7 @@ ALLOWED_HOSTS = [
|
|||
# 'NAME': 'app.db',
|
||||
# }
|
||||
# }
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
|
||||
|
||||
CACHES = {
|
||||
'default': {
|
||||
|
@ -17,5 +18,7 @@ CACHES = {
|
|||
'LOCATION': 'unique-snowflake'
|
||||
}
|
||||
}
|
||||
MIDDLEWARE_CLASSES+=("debug_toolbar.middleware.DebugToolbarMiddleware",)
|
||||
|
||||
|
||||
DEBUG = True
|
||||
|
|
|
@ -6,6 +6,7 @@ from django.conf.urls.static import static
|
|||
|
||||
from django.conf import settings
|
||||
from hosting.views import railshosting
|
||||
from membership import urls as membership_urls
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^hosting/', include('hosting.urls', namespace="hosting")),
|
||||
|
@ -17,9 +18,10 @@ urlpatterns = [
|
|||
|
||||
# note the django CMS URLs included via i18n_patterns
|
||||
urlpatterns += i18n_patterns('',
|
||||
url(r'^login/',include(membership_urls)),
|
||||
url(r'^admin/', include(admin.site.urls)),
|
||||
url(r'^digitalglarus/', include('digitalglarus.urls',
|
||||
namespace="digitalglarus")),
|
||||
namespace="digitalglarus"),name='digitalglarus'),
|
||||
url(r'^', include('cms.urls')),
|
||||
)
|
||||
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2016-03-13 20:58
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('digitalglarus', '0002_auto_20150522_0450'),
|
||||
('digitalglarus', '0002_auto_20150527_1023'),
|
||||
]
|
||||
|
||||
operations = [
|
25
hosting/migrations/0002_railsbetauser.py
Normal file
|
@ -0,0 +1,25 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2016-03-13 21:39
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('hosting', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='RailsBetaUser',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('email', models.EmailField(max_length=254, unique=True)),
|
||||
('received_date', models.DateTimeField(verbose_name='date received')),
|
||||
],
|
||||
),
|
||||
]
|
0
membership/__init__.py
Normal file
3
membership/admin.py
Normal file
|
@ -0,0 +1,3 @@
|
|||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
50
membership/forms.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
__author__ = 'tomislav'
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
import six
|
||||
|
||||
from .models import CreditCards
|
||||
|
||||
|
||||
class LoginForm(forms.Form):
|
||||
email = forms.EmailField(label="Email address", max_length=50,
|
||||
widget=forms.TextInput(
|
||||
attrs={'class': 'form-control', 'placeholder': 'Enter email'}))
|
||||
password = forms.CharField(label='Password', max_length=50,
|
||||
widget=forms.TextInput(
|
||||
attrs={'class': 'form-control', 'placeholder': 'Password',
|
||||
'type': 'password'}))
|
||||
|
||||
|
||||
class RegisterForm(LoginForm):
|
||||
name = forms.CharField(label='Name', max_length=50,
|
||||
widget=forms.TextInput(
|
||||
attrs={'class': 'form-control', 'placeholder': 'Enter name'}))
|
||||
|
||||
|
||||
class PaymentForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = CreditCards
|
||||
fields = ('name', 'card_number', 'expiry_date', 'ccv', 'user_id')
|
||||
labels = {'name': _('Name'), 'card_number': _('Card number'), 'expiry_date': _('Expiry date'),
|
||||
'ccv': _('CCV')}
|
||||
exclude = ('user_id','payment_type')
|
||||
widgets = {
|
||||
'name': forms.TextInput(
|
||||
attrs={'class': 'form-control', "placeholder": "Enter name on card",
|
||||
'placeholder': 'Enter name on card'}),
|
||||
'card_number': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Card Number','data-stripe':'number'}),
|
||||
'expiry_date': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'MM/YYYY'}),
|
||||
'ccv': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'CCV','data-stripe':'cvc'})}
|
||||
|
||||
def clean(self):
|
||||
data = self.cleaned_data
|
||||
|
||||
# if CreditCards.objects.filter(card_number=data.get("card_number")):
|
||||
# raise forms.ValidationError({'card_number': _('Credit card is used before.')})
|
||||
return self.cleaned_data
|
||||
|
||||
def save(self, user_id):
|
||||
self.instance.user_id = user_id
|
||||
self.instance.user_id_id = user_id.id
|
||||
super(PaymentForm, self).save()
|
42
membership/migrations/0001_initial.py
Normal file
|
@ -0,0 +1,42 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
from django.conf import settings
|
||||
import django.core.validators
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='CustomUser',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, serialize=False, verbose_name='ID', primary_key=True)),
|
||||
('password', models.CharField(verbose_name='password', max_length=128)),
|
||||
('last_login', models.DateTimeField(null=True, verbose_name='last login', blank=True)),
|
||||
('name', models.CharField(max_length=50)),
|
||||
('email', models.EmailField(unique=True, max_length=254)),
|
||||
('validated', models.IntegerField(default=0, choices=[(0, 'Not validated'), (1, 'Validated')])),
|
||||
('validation_slug', models.CharField(unique=True, max_length=50, db_index=True)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CreditCards',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, serialize=False, verbose_name='ID', primary_key=True)),
|
||||
('name', models.CharField(max_length=50)),
|
||||
('card_number', models.CharField(max_length=50)),
|
||||
('expiry_date', models.CharField(validators=[django.core.validators.RegexValidator('\\d{2}\\/\\d{4}', 'Use this pattern(MM/YYYY).')], max_length=50)),
|
||||
('ccv', models.CharField(validators=[django.core.validators.RegexValidator('\\d{3,4}', 'Wrong CCV number.')], max_length=4)),
|
||||
('payment_type', models.CharField(max_length=5, default='N')),
|
||||
('user_id', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
]
|
0
membership/migrations/__init__.py
Normal file
128
membership/models.py
Normal file
|
@ -0,0 +1,128 @@
|
|||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.contrib.auth.models import User, AbstractBaseUser, BaseUserManager,AbstractUser
|
||||
from django.contrib.auth.hashers import make_password
|
||||
from django.core.mail import send_mail
|
||||
from django.core.validators import RegexValidator
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
REGISTRATION_MESSAGE = {'subject': "Validation mail",
|
||||
'message': 'Please validate Your account under this link http://localhost:8000/en-us/login/validate/{}',
|
||||
'from': 'test@test.com'}
|
||||
|
||||
|
||||
class MyUserManager(BaseUserManager):
|
||||
def create_user(self, email, name, password=None):
|
||||
"""
|
||||
Creates and saves a User with the given email,name and password.
|
||||
"""
|
||||
if not email:
|
||||
raise ValueError('Users must have an email address')
|
||||
|
||||
user = self.model(
|
||||
email=self.normalize_email(email),
|
||||
name=name,
|
||||
validation_slug=make_password(None)
|
||||
)
|
||||
user.set_password(password)
|
||||
user.save(using=self._db)
|
||||
return user
|
||||
|
||||
def create_superuser(self, email, name, password):
|
||||
"""
|
||||
Creates and saves a superuser with the given email, name and password.
|
||||
"""
|
||||
user = self.create_user(email,
|
||||
password=password,
|
||||
name=name,
|
||||
)
|
||||
user.is_admin = True
|
||||
user.save(using=self._db)
|
||||
return user
|
||||
|
||||
|
||||
class CustomUser(AbstractBaseUser):
|
||||
VALIDATED_CHOICES = ((0, 'Not validated'), (1, 'Validated'))
|
||||
name = models.CharField(max_length=50)
|
||||
email = models.EmailField(unique=True)
|
||||
|
||||
validated = models.IntegerField(choices=VALIDATED_CHOICES, default=0)
|
||||
validation_slug = models.CharField(db_index=True, unique=True, max_length=50)
|
||||
is_staff = models.BooleanField(
|
||||
_('staff status'),
|
||||
default=False,
|
||||
help_text=_('Designates whether the user can log into this admin site.'),
|
||||
)
|
||||
|
||||
objects = MyUserManager()
|
||||
|
||||
USERNAME_FIELD = "email"
|
||||
REQUIRED_FIELDS = ['name', 'password']
|
||||
|
||||
@classmethod
|
||||
def register(cls, name, password, email):
|
||||
user = cls.objects.filter(email=email).first()
|
||||
if not user:
|
||||
user = cls.objects.create_user(name=name, email=email, password=password)
|
||||
if user:
|
||||
send_mail(REGISTRATION_MESSAGE['subject'],
|
||||
REGISTRATION_MESSAGE['message'].format(user.validation_slug),
|
||||
REGISTRATION_MESSAGE['from'], [user.email], fail_silently=False)
|
||||
return user
|
||||
else:
|
||||
return None
|
||||
else:
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def validate_url(cls, validation_slug):
|
||||
user = cls.objects.filter(validation_slug=validation_slug).first()
|
||||
if user:
|
||||
user.validated = 1
|
||||
user.save()
|
||||
return True
|
||||
return False
|
||||
|
||||
def is_superuser(self):
|
||||
return False
|
||||
|
||||
def is_admin(self):
|
||||
return True
|
||||
|
||||
def get_full_name(self):
|
||||
# The user is identified by their email address
|
||||
return self.email
|
||||
|
||||
def get_short_name(self):
|
||||
# The user is identified by their email address
|
||||
return self.email
|
||||
|
||||
def __str__(self): # __unicode__ on Python 2
|
||||
return self.email
|
||||
|
||||
def has_perm(self, perm, obj=None):
|
||||
print(perm)
|
||||
"Does the user have a specific permission?"
|
||||
# Simplest possible answer: Yes, always
|
||||
return True
|
||||
|
||||
def has_module_perms(self, app_label):
|
||||
"Does the user have permissions to view the app `app_label`?"
|
||||
# Simplest possible answer: Yes, always
|
||||
return True
|
||||
|
||||
@property
|
||||
def is_staff(self):
|
||||
"Is the user a member of staff?"
|
||||
# Simplest possible answer: All admins are staff
|
||||
return self.is_admin
|
||||
|
||||
|
||||
class CreditCards(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
user_id = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
|
||||
card_number = models.CharField(max_length=50)
|
||||
expiry_date = models.CharField(max_length=50, validators=[RegexValidator(r'\d{2}\/\d{4}', _(
|
||||
'Use this pattern(MM/YYYY).'))])
|
||||
ccv = models.CharField(max_length=4,validators=[RegexValidator(r'\d{3,4}',_('Wrong CCV number.'))])
|
||||
payment_type = models.CharField(max_length=5,default='N')
|
46
membership/payment.py
Normal file
|
@ -0,0 +1,46 @@
|
|||
__author__ = 'tomislav'
|
||||
from django.conf import settings
|
||||
from .models import CreditCards
|
||||
import stripe
|
||||
stripe.api_key = settings.STRIPE_API_PRIVATE_KEY
|
||||
|
||||
|
||||
class StripePayment(object):
|
||||
|
||||
@classmethod
|
||||
def make_payment(cls,user,amount,token,time):
|
||||
try:
|
||||
# Use Stripe's library to make requests...
|
||||
charge = stripe.Charge.create(
|
||||
amount=amount,
|
||||
currency='chf',
|
||||
source=token,
|
||||
description=settings.STRIPE_DESCRIPTION_ON_PAYMENT
|
||||
)
|
||||
if charge['status'] =='succeeded':
|
||||
obj = CreditCards.objects.filter(user_id=user.id).first()
|
||||
obj.payment_type = time
|
||||
obj.save()
|
||||
return charge['status']
|
||||
|
||||
except stripe.error.CardError as e:
|
||||
# Since it's a decline, stripe.error.CardError will be caught
|
||||
body = e.json_body
|
||||
err = body['error']
|
||||
return err['message']
|
||||
except stripe.error.RateLimitError as e:
|
||||
return "Too many requests made to the API too quickly"
|
||||
except stripe.error.InvalidRequestError as e:
|
||||
return "Invalid parameters"
|
||||
except stripe.error.AuthenticationError as e:
|
||||
# Authentication with Stripe's API failed
|
||||
# (maybe you changed API keys recently)
|
||||
pass
|
||||
except stripe.error.APIConnectionError as e:
|
||||
return "Currently its not possible to make payments."
|
||||
except stripe.error.StripeError as e:
|
||||
return "Currently its not possible to make payments."
|
||||
#maybe send email
|
||||
except Exception as e:
|
||||
return "Currently its not possible to make payments."
|
||||
#maybe send email
|
6778
membership/static/membership.css
Normal file
733
membership/static/membership.less
Normal file
|
@ -0,0 +1,733 @@
|
|||
/*!
|
||||
* Default theme for Pingendo
|
||||
* Homepage: http://pingendo.com
|
||||
* Copyright 2015 Pingendo
|
||||
* Licensed under MIT
|
||||
* Based on Bootstrap v3.3.4
|
||||
*/
|
||||
|
||||
|
||||
/* Add custom CSS classes here
|
||||
*
|
||||
* img {
|
||||
* box-shadow : 0px 0px 10px black !important;
|
||||
* }
|
||||
*/
|
||||
|
||||
//
|
||||
// Variables
|
||||
// --------------------------------------------------
|
||||
//== Colors
|
||||
//
|
||||
//## Gray and brand colors for use across Bootstrap.
|
||||
@gray-base : #000;
|
||||
@gray-darker : lighten(@gray-base, 13.5%); // #222
|
||||
@gray-dark : lighten(@gray-base, 20%); // #333
|
||||
@gray : lighten(@gray-base, 33.5%); // #555
|
||||
@gray-light : lighten(@gray-base, 46.7%); // #777
|
||||
@gray-lighter : lighten(@gray-base, 93.5%); // #eee
|
||||
@brand-primary : #a0ced7;
|
||||
@brand-success : #5cb85c;
|
||||
@brand-info : #5bc0de;
|
||||
@brand-warning : #f0ad4e;
|
||||
@brand-danger : #d9534f;
|
||||
//== Scaffolding
|
||||
//
|
||||
//## Settings for some of the most global styles.
|
||||
//** Background color for `<body>`.
|
||||
@body-bg : white;
|
||||
//** Global text color on `<body>`.
|
||||
@text-color : black;
|
||||
//** Global textual link color.
|
||||
@link-color : @brand-primary;
|
||||
//** Link hover color set via `darken()` function.
|
||||
@link-hover-color : darken(@link-color, 15%);
|
||||
//** Link hover decoration.
|
||||
@link-hover-decoration : underline;
|
||||
//== Typography
|
||||
//
|
||||
//## Font, line-height, and color for body text, headings, and more.
|
||||
@font-family-sans-serif : "Helvetica Neue",
|
||||
Helvetica,
|
||||
Arial,
|
||||
sans-serif;
|
||||
@font-family-serif : Georgia,
|
||||
"Times New Roman",
|
||||
Times,
|
||||
serif;
|
||||
//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
|
||||
@font-family-monospace : Menlo,
|
||||
Monaco,
|
||||
Consolas,
|
||||
"Courier New",
|
||||
monospace;
|
||||
@font-family-base : Lato;
|
||||
@font-size-base : 14px;
|
||||
@font-size-large : ceil((@font-size-base * 1.25)); // ~18px
|
||||
@font-size-small : ceil((@font-size-base * 0.85)); // ~12px
|
||||
@font-size-h1 : floor((@font-size-base * 2.6)); // ~36px
|
||||
@font-size-h2 : floor((@font-size-base * 2.15)); // ~30px
|
||||
@font-size-h3 : ceil((@font-size-base * 1.7)); // ~24px
|
||||
@font-size-h4 : ceil((@font-size-base * 1.25)); // ~18px
|
||||
@font-size-h5 : @font-size-base;
|
||||
@font-size-h6 : ceil((@font-size-base * 0.85)); // ~12px
|
||||
//** Unit-less `line-height` for use in components like buttons.
|
||||
@line-height-base : 1.428571429; // 20/14
|
||||
//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
|
||||
@line-height-computed : floor((@font-size-base * @line-height-base)); // ~20px
|
||||
//** By default, this inherits from the `<body>`.
|
||||
@headings-font-family : Lato;
|
||||
@headings-font-weight : 500;
|
||||
@headings-line-height : 1.1;
|
||||
@headings-color : inherit;
|
||||
//== Iconography
|
||||
//
|
||||
//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
|
||||
//** Load fonts from this directory.
|
||||
@icon-font-path : "../fonts/";
|
||||
//** File name for all font files.
|
||||
@icon-font-name : "glyphicons-halflings-regular";
|
||||
//** Element ID within SVG icon file.
|
||||
@icon-font-svg-id : "glyphicons_halflingsregular";
|
||||
//== Components
|
||||
//
|
||||
//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
|
||||
@padding-base-vertical : 6px;
|
||||
@padding-base-horizontal : 12px;
|
||||
@padding-large-vertical : 10px;
|
||||
@padding-large-horizontal : 16px;
|
||||
@padding-small-vertical : 5px;
|
||||
@padding-small-horizontal : 10px;
|
||||
@padding-xs-vertical : 1px;
|
||||
@padding-xs-horizontal : 5px;
|
||||
@line-height-large : 1.3333333; // extra decimals for Win 8.1 Chrome
|
||||
@line-height-small : 1.5;
|
||||
@border-radius-base : 4px;
|
||||
@border-radius-large : 6px;
|
||||
@border-radius-small : 3px;
|
||||
//** Global color for active items (e.g., navs or dropdowns).
|
||||
@component-active-color : contrast(@component-active-bg, @text-color, @text-inverse, 43%);
|
||||
//** Global background color for active items (e.g., navs or dropdowns).
|
||||
@component-active-bg : @brand-primary;
|
||||
//** Width of the `border` for generating carets that indicator dropdowns.
|
||||
@caret-width-base : 4px;
|
||||
//** Carets increase slightly in size for larger components.
|
||||
@caret-width-large : 5px;
|
||||
//== Tables
|
||||
//
|
||||
//## Customizes the `.table` component with basic values, each used across all table variations.
|
||||
//** Padding for `<th>`s and `<td>`s.
|
||||
@table-cell-padding : 8px;
|
||||
//** Padding for cells in `.table-condensed`.
|
||||
@table-condensed-cell-padding : 5px;
|
||||
//** Default background color used for all tables.
|
||||
@table-bg : transparent;
|
||||
//** Background color used for `.table-striped`.
|
||||
@table-bg-accent : #f9f9f9;
|
||||
//** Background color used for `.table-hover`.
|
||||
@table-bg-hover : #f5f5f5;
|
||||
@table-bg-active : @table-bg-hover;
|
||||
//** Border color for table and cell borders.
|
||||
@table-border-color : #ddd;
|
||||
//== Buttons
|
||||
//
|
||||
//## For each of Bootstrap's buttons, define text, background and border color.
|
||||
@btn-font-weight : normal;
|
||||
@btn-default-color : @text-color;
|
||||
@btn-default-bg : @body-bg;
|
||||
@btn-default-border :;
|
||||
@btn-primary-color : white;
|
||||
@btn-primary-bg : @brand-primary; #a0ced7
|
||||
@btn-primary-border : darken(@btn-primary-bg, 5%);
|
||||
@btn-success-color : white;
|
||||
@btn-success-bg : @brand-success;
|
||||
@btn-success-border : darken(@btn-success-bg, 5%);
|
||||
@btn-info-color : white;
|
||||
@btn-info-bg : @brand-info;
|
||||
@btn-info-border : darken(@btn-info-bg, 5%);
|
||||
@btn-warning-color : white;
|
||||
@btn-warning-bg : @brand-warning;
|
||||
@btn-warning-border : darken(@btn-warning-bg, 5%);
|
||||
@btn-danger-color : contrast(@btn-danger-bg, @text-color, @text-inverse, 43%);
|
||||
@btn-danger-bg : @brand-danger;
|
||||
@btn-danger-border : darken(@btn-danger-bg, 5%);
|
||||
@btn-link-disabled-color : @gray-light;
|
||||
//== Forms
|
||||
//
|
||||
//##
|
||||
//** `<input>` background color
|
||||
@input-bg : #fff;
|
||||
//** `<input disabled>` background color
|
||||
@input-bg-disabled : @gray-lighter;
|
||||
//** Text color for `<input>`s
|
||||
@input-color : @gray;
|
||||
//** `<input>` border color
|
||||
@input-border : #ccc;
|
||||
// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
|
||||
//** Default `.form-control` border radius
|
||||
@input-border-radius : @border-radius-base;
|
||||
//** Large `.form-control` border radius
|
||||
@input-border-radius-large : @border-radius-large;
|
||||
//** Small `.form-control` border radius
|
||||
@input-border-radius-small : @border-radius-small;
|
||||
//** Border color for inputs on focus
|
||||
@input-border-focus : #66afe9;
|
||||
//** Placeholder text color
|
||||
@input-color-placeholder : #999;
|
||||
//** Default `.form-control` height
|
||||
@input-height-base : (@line-height-computed + (@padding-base-vertical * 2) + 2);
|
||||
//** Large `.form-control` height
|
||||
@input-height-large : (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
|
||||
//** Small `.form-control` height
|
||||
@input-height-small : (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
|
||||
//** `.form-group` margin
|
||||
@form-group-margin-bottom: 15px;
|
||||
@legend-color : @gray-dark;
|
||||
@legend-border-color : #e5e5e5;
|
||||
//** Background color for textual input addons
|
||||
@input-group-addon-bg : @gray-lighter;
|
||||
//** Border color for textual input addons
|
||||
@input-group-addon-border-color : @input-border;
|
||||
//** Disabled cursor for form controls and buttons.
|
||||
@cursor-disabled : not-allowed;
|
||||
//== Dropdowns
|
||||
//
|
||||
//## Dropdown menu container and contents.
|
||||
//** Background for the dropdown menu.
|
||||
@dropdown-bg : #fff;
|
||||
//** Dropdown menu `border-color`.
|
||||
@dropdown-border : rgba(0, 0, 0, .15);
|
||||
//** Dropdown menu `border-color` **for IE8**.
|
||||
@dropdown-fallback-border : #ccc;
|
||||
//** Divider color for between dropdown items.
|
||||
@dropdown-divider-bg : #e5e5e5;
|
||||
//** Dropdown link text color.
|
||||
@dropdown-link-color : @gray-dark;
|
||||
//** Hover color for dropdown links.
|
||||
@dropdown-link-hover-color : darken(@gray-dark, 5%);
|
||||
//** Hover background for dropdown links.
|
||||
@dropdown-link-hover-bg : #f5f5f5;
|
||||
//** Active dropdown menu item text color.
|
||||
@dropdown-link-active-color : @component-active-color;
|
||||
//** Active dropdown menu item background color.
|
||||
@dropdown-link-active-bg : @component-active-bg;
|
||||
//** Disabled dropdown menu item background color.
|
||||
@dropdown-link-disabled-color : @gray-light;
|
||||
//** Text color for headers within dropdown menus.
|
||||
@dropdown-header-color : @gray-light;
|
||||
//** Deprecated `@dropdown-caret-color` as of v3.1.0
|
||||
@dropdown-caret-color : #000;
|
||||
//-- Z-index master list
|
||||
//
|
||||
// Warning: Avoid customizing these values. They're used for a bird's eye view
|
||||
// of components dependent on the z-axis and are designed to all work together.
|
||||
//
|
||||
// Note: These variables are not generated into the Customizer.
|
||||
@zindex-navbar : 1000;
|
||||
@zindex-dropdown : 1000;
|
||||
@zindex-popover : 1060;
|
||||
@zindex-tooltip : 1070;
|
||||
@zindex-navbar-fixed : 1030;
|
||||
@zindex-modal-background: 1040;
|
||||
@zindex-modal: 1050;
|
||||
//== Media queries breakpoints
|
||||
//
|
||||
//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
|
||||
// Extra small screen / phone
|
||||
//** Deprecated `@screen-xs` as of v3.0.1
|
||||
@screen-xs : 480px;
|
||||
//** Deprecated `@screen-xs-min` as of v3.2.0
|
||||
@screen-xs-min : @screen-xs;
|
||||
//** Deprecated `@screen-phone` as of v3.0.1
|
||||
@screen-phone : @screen-xs-min;
|
||||
// Small screen / tablet
|
||||
//** Deprecated `@screen-sm` as of v3.0.1
|
||||
@screen-sm : 768px;
|
||||
@screen-sm-min : @screen-sm;
|
||||
//** Deprecated `@screen-tablet` as of v3.0.1
|
||||
@screen-tablet : @screen-sm-min;
|
||||
// Medium screen / desktop
|
||||
//** Deprecated `@screen-md` as of v3.0.1
|
||||
@screen-md : 992px;
|
||||
@screen-md-min : @screen-md;
|
||||
//** Deprecated `@screen-desktop` as of v3.0.1
|
||||
@screen-desktop : @screen-md-min;
|
||||
// Large screen / wide desktop
|
||||
//** Deprecated `@screen-lg` as of v3.0.1
|
||||
@screen-lg : 1200px;
|
||||
@screen-lg-min : @screen-lg;
|
||||
//** Deprecated `@screen-lg-desktop` as of v3.0.1
|
||||
@screen-lg-desktop : @screen-lg-min;
|
||||
// So media queries don't overlap when required, provide a maximum
|
||||
@screen-xs-max : (@screen-sm-min - 1);
|
||||
@screen-sm-max : (@screen-md-min - 1);
|
||||
@screen-md-max : (@screen-lg-min - 1);
|
||||
//== Grid system
|
||||
//
|
||||
//## Define your custom responsive grid.
|
||||
//** Number of columns in the grid.
|
||||
@grid-columns : 12;
|
||||
//** Padding between columns. Gets divided in half for the left and right.
|
||||
@grid-gutter-width : 30px;
|
||||
// Navbar collapse
|
||||
//** Point at which the navbar becomes uncollapsed.
|
||||
@grid-float-breakpoint : @screen-sm-min;
|
||||
//** Point at which the navbar begins collapsing.
|
||||
@grid-float-breakpoint-max : (@grid-float-breakpoint - 1);
|
||||
//== Container sizes
|
||||
//
|
||||
//## Define the maximum width of `.container` for different screen sizes.
|
||||
// Small screen / tablet
|
||||
@container-tablet : (720px + @grid-gutter-width);
|
||||
//** For `@screen-sm-min` and up.
|
||||
@container-sm : @container-tablet;
|
||||
// Medium screen / desktop
|
||||
@container-desktop : (940px + @grid-gutter-width);
|
||||
//** For `@screen-md-min` and up.
|
||||
@container-md : @container-desktop;
|
||||
// Large screen / wide desktop
|
||||
@container-large-desktop : (1140px + @grid-gutter-width);
|
||||
//** For `@screen-lg-min` and up.
|
||||
@container-lg : @container-large-desktop;
|
||||
//== Navbar
|
||||
//
|
||||
//##
|
||||
// Basics of a navbar
|
||||
@navbar-height : 50px;
|
||||
@navbar-margin-bottom : @line-height-computed;
|
||||
@navbar-border-radius : @border-radius-base;
|
||||
@navbar-padding-horizontal : floor((@grid-gutter-width / 2));
|
||||
@navbar-padding-vertical : ((@navbar-height - @line-height-computed) / 2);
|
||||
@navbar-collapse-max-height : 340px;
|
||||
@navbar-default-color : black;
|
||||
@navbar-default-bg : #f8f8f8;
|
||||
@navbar-default-border : darken(@navbar-default-bg, 6.5%);
|
||||
// Navbar links
|
||||
@navbar-default-link-color : contrast(@navbar-default-bg, @text-color, @text-inverse, 43%);
|
||||
@navbar-default-link-hover-color : @navbar-default-color;
|
||||
@navbar-default-link-hover-bg : transparent;
|
||||
@navbar-default-link-active-color : @navbar-default-color;
|
||||
@navbar-default-link-active-bg : darken(@navbar-default-bg, 6.5%);
|
||||
@navbar-default-link-disabled-color : #ccc;
|
||||
@navbar-default-link-disabled-bg : transparent;
|
||||
// Navbar brand label
|
||||
@navbar-default-brand-color : @navbar-default-link-color;
|
||||
@navbar-default-brand-hover-color : darken(@navbar-default-brand-color, 10%);
|
||||
@navbar-default-brand-hover-bg : transparent;
|
||||
// Navbar toggle
|
||||
@navbar-default-toggle-hover-bg : #ddd;
|
||||
@navbar-default-toggle-icon-bar-bg : #888;
|
||||
@navbar-default-toggle-border-color : #ddd;
|
||||
// Inverted navbar
|
||||
// Reset inverted navbar basics
|
||||
@navbar-inverse-color : lighten(@gray-light, 15%);
|
||||
@navbar-inverse-bg : #222;
|
||||
@navbar-inverse-border : darken(@navbar-inverse-bg, 10%);
|
||||
// Inverted navbar links
|
||||
@navbar-inverse-link-color : lighten(@gray-light, 15%);
|
||||
@navbar-inverse-link-hover-color : #fff;
|
||||
@navbar-inverse-link-hover-bg : transparent;
|
||||
@navbar-inverse-link-active-color : @navbar-inverse-link-hover-color;
|
||||
@navbar-inverse-link-active-bg : darken(@navbar-inverse-bg, 10%);
|
||||
@navbar-inverse-link-disabled-color : #444;
|
||||
@navbar-inverse-link-disabled-bg : transparent;
|
||||
// Inverted navbar brand label
|
||||
@navbar-inverse-brand-color : @navbar-inverse-link-color;
|
||||
@navbar-inverse-brand-hover-color : #fff;
|
||||
@navbar-inverse-brand-hover-bg : transparent;
|
||||
// Inverted navbar toggle
|
||||
@navbar-inverse-toggle-hover-bg : #333;
|
||||
@navbar-inverse-toggle-icon-bar-bg : #fff;
|
||||
@navbar-inverse-toggle-border-color : #333;
|
||||
//== Navs
|
||||
//
|
||||
//##
|
||||
//=== Shared nav styles
|
||||
@nav-link-padding : 10px 15px;
|
||||
@nav-link-hover-bg : @gray-lighter;
|
||||
@nav-disabled-link-color : @gray-light;
|
||||
@nav-disabled-link-hover-color : @gray-light;
|
||||
//== Tabs
|
||||
@nav-tabs-border-color : #ddd;
|
||||
@nav-tabs-link-hover-border-color : @gray-lighter;
|
||||
@nav-tabs-active-link-hover-bg : @body-bg;
|
||||
@nav-tabs-active-link-hover-color : @gray;
|
||||
@nav-tabs-active-link-hover-border-color : #ddd;
|
||||
@nav-tabs-justified-link-border-color : #ddd;
|
||||
@nav-tabs-justified-active-link-border-color : @body-bg;
|
||||
//== Pills
|
||||
@nav-pills-border-radius : @border-radius-base;
|
||||
@nav-pills-active-link-hover-bg : @component-active-bg;
|
||||
@nav-pills-active-link-hover-color : @component-active-color;
|
||||
//== Pagination
|
||||
//
|
||||
//##
|
||||
@pagination-color : @link-color;
|
||||
@pagination-bg : #fff;
|
||||
@pagination-border : #ddd;
|
||||
@pagination-hover-color : @link-hover-color;
|
||||
@pagination-hover-bg : @gray-lighter;
|
||||
@pagination-hover-border : #ddd;
|
||||
@pagination-active-color : #fff;
|
||||
@pagination-active-bg : @brand-primary;
|
||||
@pagination-active-border : @brand-primary;
|
||||
@pagination-disabled-color : @gray-light;
|
||||
@pagination-disabled-bg : #fff;
|
||||
@pagination-disabled-border : #ddd;
|
||||
//== Pager
|
||||
//
|
||||
//##
|
||||
@pager-bg : @pagination-bg;
|
||||
@pager-border : @pagination-border;
|
||||
@pager-border-radius : 15px;
|
||||
@pager-hover-bg : @pagination-hover-bg;
|
||||
@pager-active-bg : @pagination-active-bg;
|
||||
@pager-active-color : @pagination-active-color;
|
||||
@pager-disabled-color : @pagination-disabled-color;
|
||||
//== Jumbotron
|
||||
//
|
||||
//##
|
||||
@jumbotron-padding : 30px;
|
||||
@jumbotron-color : inherit;
|
||||
@jumbotron-bg : @gray-lighter;
|
||||
@jumbotron-heading-color : inherit;
|
||||
@jumbotron-font-size : ceil((@font-size-base * 1.5));
|
||||
@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));
|
||||
//== Form states and alerts
|
||||
//
|
||||
//## Define colors for form feedback states and, by default, alerts.
|
||||
@state-success-text : @brand-success;
|
||||
@state-success-bg : lighten(@brand-success, 20%);
|
||||
@state-success-border : darken(spin(@state-success-bg, -10), 5%);
|
||||
@state-info-text : @brand-info;
|
||||
@state-info-bg : lighten(@brand-info, 20%);
|
||||
@state-info-border : darken(spin(@state-info-bg, -10), 7%);
|
||||
@state-warning-text : @brand-warning;
|
||||
@state-warning-bg : lighten(@brand-warning, 20%);
|
||||
@state-warning-border : darken(spin(@state-warning-bg, -10), 5%);
|
||||
@state-danger-text : @brand-danger;
|
||||
@state-danger-bg : lighten(@brand-danger, 20%);
|
||||
@state-danger-border : darken(spin(@state-danger-bg, -10), 5%);
|
||||
//== Tooltips
|
||||
//
|
||||
//##
|
||||
//** Tooltip max width
|
||||
@tooltip-max-width : 200px;
|
||||
//** Tooltip text color
|
||||
@tooltip-color : #fff;
|
||||
//** Tooltip background color
|
||||
@tooltip-bg : #000;
|
||||
@tooltip-opacity : .9;
|
||||
//** Tooltip arrow width
|
||||
@tooltip-arrow-width : 5px;
|
||||
//** Tooltip arrow color
|
||||
@tooltip-arrow-color : @tooltip-bg;
|
||||
//== Popovers
|
||||
//
|
||||
//##
|
||||
//** Popover body background color
|
||||
@popover-bg : #fff;
|
||||
//** Popover maximum width
|
||||
@popover-max-width : 276px;
|
||||
//** Popover border color
|
||||
@popover-border-color : rgba(0, 0, 0, .2);
|
||||
//** Popover fallback border color
|
||||
@popover-fallback-border-color : #ccc;
|
||||
//** Popover title background color
|
||||
@popover-title-bg : darken(@popover-bg, 3%);
|
||||
//** Popover arrow width
|
||||
@popover-arrow-width : 10px;
|
||||
//** Popover arrow color
|
||||
@popover-arrow-color : @popover-bg;
|
||||
//** Popover outer arrow width
|
||||
@popover-arrow-outer-width : (@popover-arrow-width + 1);
|
||||
//** Popover outer arrow color
|
||||
@popover-arrow-outer-color : fadein(@popover-border-color, 5%);
|
||||
//** Popover outer arrow fallback color
|
||||
@popover-arrow-outer-fallback-color : darken(@popover-fallback-border-color, 20%);
|
||||
//== Labels
|
||||
//
|
||||
//##
|
||||
//** Default label background color
|
||||
@label-default-bg : @gray-light;
|
||||
//** Primary label background color
|
||||
@label-primary-bg : @brand-primary;
|
||||
//** Success label background color
|
||||
@label-success-bg : @brand-success;
|
||||
//** Info label background color
|
||||
@label-info-bg : @brand-info;
|
||||
//** Warning label background color
|
||||
@label-warning-bg : @brand-warning;
|
||||
//** Danger label background color
|
||||
@label-danger-bg : @brand-danger;
|
||||
//** Default label text color
|
||||
@label-color : #fff;
|
||||
//** Default text color of a linked label
|
||||
@label-link-hover-color : #fff;
|
||||
//== Modals
|
||||
//
|
||||
//##
|
||||
//** Padding applied to the modal body
|
||||
@modal-inner-padding : 15px;
|
||||
//** Padding applied to the modal title
|
||||
@modal-title-padding : 15px;
|
||||
//** Modal title line-height
|
||||
@modal-title-line-height : @line-height-base;
|
||||
//** Background color of modal content area
|
||||
@modal-content-bg : #fff;
|
||||
//** Modal content border color
|
||||
@modal-content-border-color : rgba(0, 0, 0, .2);
|
||||
//** Modal content border color **for IE8**
|
||||
@modal-content-fallback-border-color : #999;
|
||||
//** Modal backdrop background color
|
||||
@modal-backdrop-bg : #000;
|
||||
//** Modal backdrop opacity
|
||||
@modal-backdrop-opacity : .5;
|
||||
//** Modal header border color
|
||||
@modal-header-border-color : #e5e5e5;
|
||||
//** Modal footer border color
|
||||
@modal-footer-border-color : @modal-header-border-color;
|
||||
@modal-lg : 900px;
|
||||
@modal-md : 600px;
|
||||
@modal-sm : 300px;
|
||||
//== Alerts
|
||||
//
|
||||
//## Define alert colors, border radius, and padding.
|
||||
@alert-padding : 15px;
|
||||
@alert-border-radius : @border-radius-base;
|
||||
@alert-link-font-weight : bold;
|
||||
@alert-success-bg : @state-success-bg;
|
||||
@alert-success-text : @state-success-text;
|
||||
@alert-success-border : @state-success-border;
|
||||
@alert-info-bg : @state-info-bg;
|
||||
@alert-info-text : @state-info-text;
|
||||
@alert-info-border : @state-info-border;
|
||||
@alert-warning-bg : @state-warning-bg;
|
||||
@alert-warning-text : @state-warning-text;
|
||||
@alert-warning-border : @state-warning-border;
|
||||
@alert-danger-bg : @state-danger-bg;
|
||||
@alert-danger-text : @state-danger-text;
|
||||
@alert-danger-border : @state-danger-border;
|
||||
//== Progress bars
|
||||
//
|
||||
//##
|
||||
//** Background color of the whole progress component
|
||||
@progress-bg : #f5f5f5;
|
||||
//** Progress bar text color
|
||||
@progress-bar-color : #fff;
|
||||
//** Variable for setting rounded corners on progress bar.
|
||||
@progress-border-radius : @border-radius-base;
|
||||
//** Default progress bar color
|
||||
@progress-bar-bg : @brand-primary;
|
||||
//** Success progress bar color
|
||||
@progress-bar-success-bg : @brand-success;
|
||||
//** Warning progress bar color
|
||||
@progress-bar-warning-bg : @brand-warning;
|
||||
//** Danger progress bar color
|
||||
@progress-bar-danger-bg : @brand-danger;
|
||||
//** Info progress bar color
|
||||
@progress-bar-info-bg : @brand-info;
|
||||
//== List group
|
||||
//
|
||||
//##
|
||||
//** Background color on `.list-group-item`
|
||||
@list-group-bg : @body-bg;
|
||||
//** `.list-group-item` border color
|
||||
@list-group-border : darken(@list-group-bg, 40%);
|
||||
//** List group border radius
|
||||
@list-group-border-radius : @border-radius-base;
|
||||
//** Background color of single list items on hover
|
||||
@list-group-hover-bg : #f5f5f5;
|
||||
//** Text color of active list items
|
||||
@list-group-active-color : @component-active-color;
|
||||
//** Background color of active list items
|
||||
@list-group-active-bg : @component-active-bg;
|
||||
//** Border color of active list elements
|
||||
@list-group-active-border : @list-group-active-bg;
|
||||
//** Text color for content within active list items
|
||||
@list-group-active-text-color : darken(@list-group-active-bg, 40%);
|
||||
//** Text color of disabled list items
|
||||
@list-group-disabled-color : @gray-light;
|
||||
//** Background color of disabled list items
|
||||
@list-group-disabled-bg : @gray-lighter;
|
||||
//** Text color for content within disabled list items
|
||||
@list-group-disabled-text-color : @list-group-disabled-color;
|
||||
@list-group-link-color : #555;
|
||||
@list-group-link-hover-color : @list-group-link-color;
|
||||
@list-group-link-heading-color : #333;
|
||||
//== Panels
|
||||
//
|
||||
//##
|
||||
@panel-bg : @body-bg;
|
||||
@panel-body-padding : 15px;
|
||||
@panel-heading-padding : 10px 15px;
|
||||
@panel-footer-padding : @panel-heading-padding;
|
||||
@panel-border-radius : @border-radius-base;
|
||||
//** Border color for elements within panels
|
||||
@panel-inner-border : #ddd;
|
||||
@panel-footer-bg : #f5f5f5;
|
||||
@panel-default-text : @gray-dark;
|
||||
@panel-default-border : #ddd;
|
||||
@panel-default-heading-bg : #f5f5f5;
|
||||
@panel-primary-text : contrast(@brand-primary, @text-color, @text-inverse, 43%);
|
||||
@panel-primary-border : @brand-primary;
|
||||
@panel-primary-heading-bg : @brand-primary;
|
||||
@panel-success-text : @state-success-text;
|
||||
@panel-success-border : @state-success-border;
|
||||
@panel-success-heading-bg : @state-success-bg;
|
||||
@panel-info-text : @state-info-text;
|
||||
@panel-info-border : @state-info-border;
|
||||
@panel-info-heading-bg : @state-info-bg;
|
||||
@panel-warning-text : @state-warning-text;
|
||||
@panel-warning-border : @state-warning-border;
|
||||
@panel-warning-heading-bg : @state-warning-bg;
|
||||
@panel-danger-text : @state-danger-text;
|
||||
@panel-danger-border : @state-danger-border;
|
||||
@panel-danger-heading-bg : @state-danger-bg;
|
||||
//== Thumbnails
|
||||
//
|
||||
//##
|
||||
//** Padding around the thumbnail image
|
||||
@thumbnail-padding : 4px;
|
||||
//** Thumbnail background color
|
||||
@thumbnail-bg : @body-bg;
|
||||
//** Thumbnail border color
|
||||
@thumbnail-border : #ddd;
|
||||
//** Thumbnail border radius
|
||||
@thumbnail-border-radius : @border-radius-base;
|
||||
//** Custom text color for thumbnail captions
|
||||
@thumbnail-caption-color : @text-color;
|
||||
//** Padding around the thumbnail caption
|
||||
@thumbnail-caption-padding : 9px;
|
||||
//== Wells
|
||||
//
|
||||
//##
|
||||
@well-bg : #f5f5f5;
|
||||
@well-border : darken(@well-bg, 7%);
|
||||
//== Badges
|
||||
//
|
||||
//##
|
||||
@badge-color : #fff;
|
||||
//** Linked badge text color on hover
|
||||
@badge-link-hover-color : #fff;
|
||||
@badge-bg : @gray-light;
|
||||
//** Badge text color in active nav link
|
||||
@badge-active-color : @link-color;
|
||||
//** Badge background color in active nav link
|
||||
@badge-active-bg : #fff;
|
||||
@badge-font-weight : bold;
|
||||
@badge-line-height : 1;
|
||||
@badge-border-radius : 10px;
|
||||
//== Breadcrumbs
|
||||
//
|
||||
//##
|
||||
@breadcrumb-padding-vertical : 8px;
|
||||
@breadcrumb-padding-horizontal : 15px;
|
||||
//** Breadcrumb background color
|
||||
@breadcrumb-bg : #f5f5f5;
|
||||
//** Breadcrumb text color
|
||||
@breadcrumb-color : #ccc;
|
||||
//** Text color of current page in the breadcrumb
|
||||
@breadcrumb-active-color : @gray-light;
|
||||
//** Textual separator for between breadcrumb elements
|
||||
@breadcrumb-separator : "/";
|
||||
//== Carousel
|
||||
//
|
||||
//##
|
||||
@carousel-text-shadow : 0 1px 2px rgba(0, 0, 0, .6);
|
||||
@carousel-control-color : #fff;
|
||||
@carousel-control-width : 15%;
|
||||
@carousel-control-opacity : .5;
|
||||
@carousel-control-font-size : 20px;
|
||||
@carousel-indicator-active-bg : #fff;
|
||||
@carousel-indicator-border-color : #fff;
|
||||
@carousel-caption-color : #fff;
|
||||
//== Close
|
||||
//
|
||||
//##
|
||||
@close-font-weight : bold;
|
||||
@close-color : #000;
|
||||
@close-text-shadow : 0 1px 0 #fff;
|
||||
//== Code
|
||||
//
|
||||
//##
|
||||
@code-color : #c7254e;
|
||||
@code-bg : #f9f2f4;
|
||||
@kbd-color : #fff;
|
||||
@kbd-bg : #333;
|
||||
@pre-bg : #f5f5f5;
|
||||
@pre-color : @gray-dark;
|
||||
@pre-border-color : #ccc;
|
||||
@pre-scrollable-max-height : 340px;
|
||||
//== Type
|
||||
//
|
||||
//##
|
||||
//** Horizontal offset for forms and lists.
|
||||
@component-offset-horizontal : 180px;
|
||||
//** Text muted color
|
||||
@text-muted : @gray-light;
|
||||
//** Abbreviations and acronyms border color
|
||||
@abbr-border-color : @gray-light;
|
||||
//** Headings small color
|
||||
@headings-small-color : @gray-light;
|
||||
//** Blockquote small color
|
||||
@blockquote-small-color : @gray-light;
|
||||
//** Blockquote font size
|
||||
@blockquote-font-size : (@font-size-base * 1.25);
|
||||
//** Blockquote border color
|
||||
@blockquote-border-color : @gray-lighter;
|
||||
//** Page header border color
|
||||
@page-header-border-color: @gray-lighter;
|
||||
//** Width of horizontal description list titles
|
||||
@dl-horizontal-offset : @component-offset-horizontal;
|
||||
//** Horizontal line color.
|
||||
@hr-border : @gray-lighter;
|
||||
// Pingendo variables
|
||||
@section-spacing : 35px;
|
||||
// Core variables and mixins
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/mixins.less";
|
||||
// Reset and dependencies
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/normalize.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/print.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/glyphicons.less";
|
||||
// Core CSS
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/scaffolding.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/type.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/code.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/grid.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/tables.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/forms.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/buttons.less";
|
||||
// Components
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/component-animations.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/dropdowns.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/button-groups.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/input-groups.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/navs.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/navbar.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/breadcrumbs.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/pagination.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/pager.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/labels.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/badges.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/jumbotron.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/thumbnails.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/alerts.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/progress-bars.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/media.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/list-group.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/panels.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/responsive-embed.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/wells.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/close.less";
|
||||
// Components w/ JavaScript
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/modals.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/tooltip.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/popovers.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/carousel.less";
|
||||
// Utility classes
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/utilities.less";
|
||||
@import "https://raw.githubusercontent.com/twbs/bootstrap/v3.3.4/less/responsive-utilities.less";
|
||||
@import "https://raw.githubusercontent.com/Pingendo/pingendo-bootstrap/gh-pages/less/pingendo-custom.less";
|
||||
|
||||
/* PINGENDO COMMENT DO NOT REMOVE */
|
BIN
membership/static/photo-1418479631014-8cbf89db3431 2.jpg
Normal file
After Width: | Height: | Size: 473 KiB |
BIN
membership/static/photo-1418479631014-8cbf89db3431 2@2x.png
Normal file
After Width: | Height: | Size: 2.5 MiB |
BIN
membership/static/photo-1418479631014-8cbf89db3431.jpeg
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
membership/static/photo-1418479631014-8cbf89db3431.sketch
Normal file
57
membership/templates/confirm.html
Normal file
|
@ -0,0 +1,57 @@
|
|||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
{% load static %}
|
||||
<link href="{% get_static_prefix %}membership.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-2"></div>
|
||||
<div class="col-md-8">
|
||||
<div class="col-md-12 text-left">
|
||||
<h2 class="text-center text-muted">Your membership is almost ready!</h2>
|
||||
<h5 class="text-center text-muted">If this is correct information, click CONFIRM</h5>
|
||||
<br>
|
||||
<h4 class="text-center text-muted">Name: {{ name }}</h4>
|
||||
|
||||
{% if email %}
|
||||
<h4 class="text-center text-muted">Email: {{ email }}</h4>
|
||||
{% else %}
|
||||
<script type="text/javascript">
|
||||
|
||||
</script>
|
||||
{% endif %}
|
||||
<h4 class="text-center text-muted">Membership requested for:
|
||||
<br><br>01.01.2016-31.12.2016</h4>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<p class="text-center text-muted">Have problem? Contact
|
||||
<a href="">help@digitalglarus.ch.</a>
|
||||
<br>
|
||||
</p>
|
||||
<a class="btn btn-primary" href="{% url 'reset' time=request.session.time %}">GO BACK</a>
|
||||
<a class="btn btn-primary" href='.'>CONFIRM</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body></html>
|
104
membership/templates/creditcard.html
Normal file
|
@ -0,0 +1,104 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript"
|
||||
src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript"
|
||||
src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
|
||||
<script type="text/javascript">
|
||||
Stripe.setPublishableKey('{{ stripe_key }}');
|
||||
var stripeResponseHandler = function (status, response) {
|
||||
var $form = $('#payment-form');
|
||||
if (response.error) {
|
||||
debugger;
|
||||
// Show the errors on the form
|
||||
$form.find('.payment-errors').text(response.error.message);
|
||||
$form.find('button').prop('disabled', false);
|
||||
} else {
|
||||
// token contains id, last4, and card type
|
||||
var token = response.id;
|
||||
// Insert the token into the form so it gets submitted to the server
|
||||
$form.append($('<input type="hidden" name="stripeToken" />').val(token));
|
||||
// and re-submit
|
||||
$form.get(0).submit();
|
||||
}
|
||||
};
|
||||
jQuery(function ($) {
|
||||
$('#payment-form').submit(function (e) {
|
||||
var $form = $(this);
|
||||
m_y = $("#id_expiry_date").val().split("/")
|
||||
// Disable the submit button to prevent repeated clicks
|
||||
$form.find('button').prop('disabled', true);
|
||||
Stripe.card.createToken({
|
||||
number: $("#id_card_number").val(),
|
||||
cvc: $("#id_ccv").val(),
|
||||
exp_month:m_y[0],
|
||||
exp_year:m_y[1]
|
||||
}, stripeResponseHandler);
|
||||
// Prevent the form from submitting with the default action
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css"
|
||||
rel="stylesheet" type="text/css">
|
||||
{% load static %}
|
||||
<link href="{% get_static_prefix %}membership.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-2"></div>
|
||||
<div class="col-md-8">
|
||||
<h3 class="text-left text-muted">Payment details</h3>
|
||||
<hr>
|
||||
<div class="page-header text-muted" contenteditable="true">
|
||||
<h5>{{ time }} coworking membership ({{ price }} CHF)</h5>
|
||||
<h5> +{{ free }} free working days included (0 CHF)</h5>
|
||||
|
||||
<div class="page-header text-muted">
|
||||
<h5>Valid 01.01.2016 - 31.12.2016 </h5>
|
||||
<h5>Coworker Name : {{ name }} </h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-header text-muted">
|
||||
<h3 class="text-right">Total : {{ price }} CHF</h3>
|
||||
</div>
|
||||
<form id="payment-form" role="form" method="post">
|
||||
<div class="payment-error"></div>
|
||||
{% csrf_token %}
|
||||
{% for field in form %}
|
||||
<div class="form-group">
|
||||
<label class="control-label">{{ field.label }}*</label>
|
||||
{{ field }}
|
||||
{% for error in field.errors %}
|
||||
{{ error|striptags }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
<button type="submit" class="btn btn-block btn-primary">Submit</button>
|
||||
</form>
|
||||
<a class="btn btn-block btn-info">Cancel</a>
|
||||
</div>
|
||||
<div class="col-md-2"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-11">
|
||||
<br>
|
||||
|
||||
<p class="text-center text-muted">Have probelm? Contact
|
||||
<a href="">help@digitalglarus.ch.</a>
|
||||
<br>
|
||||
<br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
55
membership/templates/error.html
Normal file
|
@ -0,0 +1,55 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript"
|
||||
src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript"
|
||||
src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css"
|
||||
rel="stylesheet"
|
||||
type="text/css">
|
||||
{% load static %}
|
||||
<link href="{% get_static_prefix %}membership.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h1 class="text-center">Oops! Something went wrong..</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<p class="text-center">Your last action was not complete. {{ msg }}
|
||||
<br>Have problems? contact us at
|
||||
<a href="">help@digitalglarus.ch</a>
|
||||
</p>
|
||||
|
||||
|
||||
<p></p>
|
||||
</div>
|
||||
<a hrefhelp@digitalglarus.ch<="" p="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<a class="btn btn-primary" href="{% url 'login' %}">Back</a>
|
||||
</div>
|
||||
</div>
|
||||
<a hrefhelp@digitalglarus.ch<="" p="">
|
||||
</a>
|
||||
</div>
|
||||
<a hrefhelp@digitalglarus.ch<="" p="">
|
||||
</a>
|
||||
</div>
|
||||
<a hrefhelp@digitalglarus.ch<="" p="">
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
122
membership/templates/login.html
Normal file
|
@ -0,0 +1,122 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet"
|
||||
type="text/css">
|
||||
{% load static %}
|
||||
<link href="{% get_static_prefix %}membership.css" rel="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="navbar navbar-default navbar-static-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-ex-collapse">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#"><span>Brand</span></a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar-ex-collapse">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="active">
|
||||
<a href="#">Home</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Contacts</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<h1>I'm already a member!</h1>
|
||||
|
||||
<p>To book you need to be logged in.</p>
|
||||
|
||||
<h2>Log in</h2>
|
||||
<hr>
|
||||
<form role="form" action="" method="POST">
|
||||
{% csrf_token %}
|
||||
{% for field in login_form %}
|
||||
<div class="form-group">
|
||||
{{ field.errors }}
|
||||
<label class="control-label">{{ field.label }}</label>{{ field }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<button type="submit" class="btn btn-default">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h1></h1>
|
||||
|
||||
<h1>Not yet a member?</h1>
|
||||
|
||||
<p>It only takes your email to register!
|
||||
You'll get a mail from us for confirmation.</p>
|
||||
|
||||
<h2>Register</h2>
|
||||
<hr>
|
||||
<form role="form" action="" method="POST">
|
||||
{% csrf_token %}
|
||||
<div class="form-group">
|
||||
{% for field in register_form %}
|
||||
{{ field.errors }}
|
||||
<label class="control-label">{{ field.label }}</label>
|
||||
{{ field }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<button type="submit" class="btn btn-default">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="section section-primary">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h1>Digital Glarus</h1>
|
||||
|
||||
<p>In der Au 7 8762 Schwanden
|
||||
<br>Copyright © ungleich GmbH 2016</p>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<p class="text-info text-right">
|
||||
<br>
|
||||
<br>
|
||||
</p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12 hidden-lg hidden-md hidden-sm text-left">
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-instagram text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-twitter text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-facebook text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-github text-inverse"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 hidden-xs text-right">
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-instagram text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-twitter text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-facebook text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-github text-inverse"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
196
membership/templates/membership.html
Normal file
|
@ -0,0 +1,196 @@
|
|||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
{% load static %}
|
||||
<link href="{% get_static_prefix %}membership.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<div class="cover">
|
||||
<div class="navbar">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-ex-collapse">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#"><span>Digital Glarus</span></a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar-ex-collapse">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="active">
|
||||
<a href="#">Home</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Contacts</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% load static %}
|
||||
|
||||
<div class="cover-image" style="background-image : url('{% get_static_prefix %}photo-1418479631014-8cbf89db3431 2.jpg')"></div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<h2 class="text-inverse">When do you want to cowork?</h2>
|
||||
<p class="text-inverse">Pick a date!</p>
|
||||
<a class="btn btn-lg btn-primary">Calender</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2 class="text-center">Become a member!</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<p class="text-center">Become our member of Digital Glarus! </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<img src="https://ununsplash.imgix.net/photo-1423753623104-718aaace6772?w=1024&q=50&fm=jpg&s=1ffa61419561b5c796bca3158e7c704c" class="img-responsive">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h2 class="text-muted">The Spontaneous</h2>
|
||||
<h3>35CHF/Month (1 day pass included)</h3>
|
||||
<p>Do you dream of having a place to be inspired in the middle of the Alps?
|
||||
With only 35CHF a month, you can enjoy the full benefit of a Digital Chalet
|
||||
Schwanden membership! You can enjoy high speed network connection and comfortable
|
||||
working desks where you can come up with best ideas for your project surrounded
|
||||
by friendly coworkers. And if your work gets too productive to leave, you
|
||||
can crash on our guest bed for the night, the house has everything a coworker
|
||||
needs from an equipped kitchen to a shower. The Spontaneous includes 1
|
||||
day pass included, it is perfect for you if you are planning a retreat
|
||||
month of a coworking in the nature, or coming for a limited period to Switzerland
|
||||
for coworking. It is a perfect try-out package!
|
||||
<br>
|
||||
</p>
|
||||
<a class="btn btn-primary" href="/login/buy/month/">Buy Now</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<h2 class="text-muted">The Committed</h2>
|
||||
<h3>360CHF/Year (2 free day per month included)</h3>
|
||||
<p>Be a regular coworker in our Digital Chalet Schwanden! With only 360CHF,
|
||||
you can enjoy the full coworking space for the whole year, with additional
|
||||
2 free day passes for each month. It is an ideal deal for our busy and
|
||||
active coworkers who would like to save time(and nerve)for requesting new
|
||||
membership every month. Signifiantly discounted price is applied for yearly
|
||||
membership.
|
||||
<br>
|
||||
</p>
|
||||
<a class="btn btn-primary" href="/login/buy/year/">Buy Now</a>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<img src="https://unsplash.imgix.net/photo-1413834932717-29e7d4714192?w=1024&q=50&fm=jpg&s=d9d6cbc32dd4968d0c21e331436a6af6" class="img-responsive">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2 class="text-center text-primary">A Quick Glance..</h2>
|
||||
<p class="text-center">A short guide for membership features.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>The Spontaneous</th>
|
||||
<th>The Committed</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Includes</td>
|
||||
<td>1 work day included</td>
|
||||
<td>2 free work days per month</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Fits for</td>
|
||||
<td>Great for trial, see how it goes</td>
|
||||
<td>Perfect for coworking with great price</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Price</td>
|
||||
<td>Decicde every month</td>
|
||||
<td>Pay once per year</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Membership price</td>
|
||||
<td>35CHF/Month</td>
|
||||
<td>360CHF/Year</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Price per additional day</td>
|
||||
<td>20 CHF</td>
|
||||
<td>15 CHF</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="section section-primary">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h1>Digital Glarus</h1>
|
||||
<p>In der Au 7 8762 Schwanden
|
||||
<br>Copyright © ungleich GmbH 2016</p>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<p class="text-info text-right">
|
||||
<br>
|
||||
<br>
|
||||
</p>
|
||||
<div class="row">
|
||||
<div class="col-md-12 hidden-lg hidden-md hidden-sm text-left">
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-instagram text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-twitter text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-facebook text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-github text-inverse"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 hidden-xs text-right">
|
||||
<a href="https://twitter.com/DigitalGlarus"><i class="fa fa-twitter"></i></a>
|
||||
<i class="fa fa-3x fa-fw fa-instagram text-inverse"></i>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-twitter text-inverse"></i></a>
|
||||
<a href="#"><i class="fa fa-3x fa-fw fa-facebook text-inverse"></i></a>
|
||||
<a href="https://github.com/ungleich"><i class="fa fa-github"></i></a>
|
||||
<i class="fa fa-3x fa-fw fa-github text-inverse"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
</body></html>
|
31
membership/templates/success.html
Normal file
|
@ -0,0 +1,31 @@
|
|||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="http://pingendo.github.io/pingendo-bootstrap/themes/default/bootstrap.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h1 class="text-center text-muted">You're successfully registered!</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<p class="text-center text-muted">
|
||||
<br>Check your email to activate your account.</p>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<a class="btn btn-primary" href="{% url 'login' %}">Back</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body></html>
|
39
membership/templates/validated.html
Normal file
|
@ -0,0 +1,39 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet"
|
||||
type="text/css">
|
||||
<link href="http://pingendo.github.io/pingendo-bootstrap/themes/default/bootstrap.css" rel="stylesheet"
|
||||
type="text/css">
|
||||
{% if request.session.next == None %}
|
||||
<script>
|
||||
type = "text/javascript" >
|
||||
setTimeout(function () {
|
||||
window.location.href = "/";
|
||||
}, 5000);
|
||||
</script>
|
||||
{% endif %}
|
||||
</head>
|
||||
<body>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h3 class="text-center text-muted">
|
||||
{% if msg == 'succeeded' %}
|
||||
Thank You for Your payment!<br> <p>redirecting...</p>
|
||||
{% else %}
|
||||
Your payment was not processed correctly.<br> Reason: {{ msg }}
|
||||
{% endif %}
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
39
membership/templates/validated_email.html
Normal file
|
@ -0,0 +1,39 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet"
|
||||
type="text/css">
|
||||
<link href="http://pingendo.github.io/pingendo-bootstrap/themes/default/bootstrap.css" rel="stylesheet"
|
||||
type="text/css">
|
||||
{% if request.session.next == None %}
|
||||
<script>
|
||||
type = "text/javascript" >
|
||||
setTimeout(function () {
|
||||
window.location.href = "/";
|
||||
}, 5000);
|
||||
</script>
|
||||
{% endif %}
|
||||
</head>
|
||||
<body>
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h3 class="text-center text-muted">
|
||||
{% if msg %}
|
||||
Email verified!<br> <p>redirecting...</p>
|
||||
{% else %}
|
||||
<p>Email not verfied!</p>
|
||||
{% endif %}
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
13
membership/tests.py
Normal file
|
@ -0,0 +1,13 @@
|
|||
import unittest
|
||||
from django.test import TestCase,Client
|
||||
|
||||
# Create your tests here.
|
||||
class LoginTestCase(unittest.TestCase):
|
||||
def test_login(self):
|
||||
client = Client()
|
||||
response = client.get("/login")
|
||||
|
||||
|
||||
|
||||
|
||||
|
13
membership/urls.py
Normal file
|
@ -0,0 +1,13 @@
|
|||
__author__ = 'tomislav'
|
||||
from django.conf.urls import url
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
from . import views
|
||||
|
||||
urlpatterns = (
|
||||
url(r"^$", views.LoginRegistrationView.as_view(), name='login'),
|
||||
url(r"^validate/(?P<validate_slug>.*)/$", views.validate_email),
|
||||
url(r"^membership/$", login_required(views.MembershipView.as_view()), name='membership'),
|
||||
url(r"^buy/(?P<time>\w+)/$", login_required(views.CreditCardView.as_view()), name='payment'),
|
||||
url(r'^buy/(?P<time>\w+)/reset',login_required(views.reset),name='reset')
|
||||
)
|
113
membership/views.py
Normal file
|
@ -0,0 +1,113 @@
|
|||
from django.shortcuts import render, redirect
|
||||
from django.views.generic import View
|
||||
from django.contrib.auth import authenticate, login
|
||||
from django.views.decorators.cache import cache_control
|
||||
from django.conf import settings
|
||||
from django.db.models import Q
|
||||
|
||||
from .models import CustomUser
|
||||
from .forms import (LoginForm, RegisterForm, PaymentForm)
|
||||
from .payment import StripePayment
|
||||
|
||||
|
||||
def validate_email(request, validate_slug):
|
||||
validated = CustomUser.validate_url(validate_slug)
|
||||
if validated:
|
||||
return render(request, 'templates/validated_email.html',{'msg':True})
|
||||
else:
|
||||
return render(request, 'templates/error.html',{'msg':'Validation failed.'})
|
||||
|
||||
def reset(request,time):
|
||||
request.session['next']=0
|
||||
return redirect('payment',time=time)
|
||||
|
||||
class CreditCardView(View):
|
||||
def _get_context(self, request, time):
|
||||
request.session['time'] = time
|
||||
context = {}
|
||||
context['name'] = request.user.name
|
||||
if time == 'month':
|
||||
context['time'] = "1 month"
|
||||
context['price'] = "35"
|
||||
context['free'] = "1"
|
||||
elif time == 'year':
|
||||
context['time'] = '1 year'
|
||||
context['price'] = '360'
|
||||
context['free'] = "2"
|
||||
context['stripe_key'] = settings.STRIPE_API_PUBLIC_KEY
|
||||
context['form'] = PaymentForm()
|
||||
return context
|
||||
|
||||
@cache_control(no_cache=True,must_revalidate=True)
|
||||
def get(self, request, time=None):
|
||||
context = self._get_context(request, time)
|
||||
next = request.session.get('next')
|
||||
if next == 1 or next ==0:
|
||||
template = 'templates/creditcard.html'
|
||||
request.session['next'] +=1
|
||||
elif next == 2:
|
||||
msg = StripePayment.make_payment(request.user, request.session['amount'],
|
||||
request.session['token'],request.session['time'])
|
||||
template = 'templates/validated.html'
|
||||
context['msg'] = msg
|
||||
request.session['next'] = None
|
||||
return render(request, template, context)
|
||||
|
||||
def post(self, request, time=None):
|
||||
form = PaymentForm(request.POST)
|
||||
stripe_token = request.POST['stripeToken']
|
||||
|
||||
if form.is_valid():
|
||||
ret = form.save(request.user)
|
||||
amount = 35 if time == 'month' else 360
|
||||
amount = amount * 100 # payments are in 'cents'
|
||||
request.session['token'] = stripe_token
|
||||
request.session['amount'] = amount
|
||||
request.session['next'] +=1
|
||||
return render(request, 'templates/confirm.html',
|
||||
context={'name': request.user.name, 'email': request.user.email})
|
||||
else:
|
||||
context = self._get_context(request, time)
|
||||
context['form'] = form
|
||||
return render(request, 'templates/creditcard.html', context=context)
|
||||
|
||||
|
||||
class LoginRegistrationView(View):
|
||||
def get(self, request):
|
||||
login_form = LoginForm()
|
||||
register_form = RegisterForm()
|
||||
request.session['next'] = None
|
||||
if request.user.is_authenticated():
|
||||
return redirect("membership")
|
||||
else:
|
||||
return render(request, 'templates/login.html',
|
||||
{'login_form': login_form, 'register_form': register_form})
|
||||
|
||||
def post(self, request):
|
||||
email = request.POST.get('email')
|
||||
password = request.POST.get('password')
|
||||
name = request.POST.get('name')
|
||||
if name and email and password:
|
||||
user = CustomUser.register(name, password, email)
|
||||
if user:
|
||||
return render(request, 'templates/success.html')
|
||||
else:
|
||||
return render(request, 'templates/error.html')
|
||||
|
||||
elif email and password and not name:
|
||||
user = authenticate(email=email, password=password)
|
||||
if user:
|
||||
login(request, user)
|
||||
return redirect('membership')
|
||||
else:
|
||||
return redirect('login')
|
||||
|
||||
|
||||
class MembershipView(View):
|
||||
def get(self, request):
|
||||
#if the user has payed allready
|
||||
member_payed = request.user.creditcards_set.filter(Q(payment_type='month') | Q(payment_type='year'))
|
||||
if member_payed:
|
||||
return redirect('/')
|
||||
request.session['next'] = 0
|
||||
return render(request, 'templates/membership.html')
|
|
@ -1,71 +1,47 @@
|
|||
# django
|
||||
django>=1.8
|
||||
|
||||
django-dotenv
|
||||
django-parler
|
||||
Django==1.9.4
|
||||
aldryn-newsblog
|
||||
wheel
|
||||
django-bootstrap3
|
||||
django_compressor
|
||||
|
||||
# django-cms + plugins
|
||||
django-cms
|
||||
djangocms-admin-style
|
||||
djangocms-flash
|
||||
djangocms-googlemap
|
||||
djangocms-inherit
|
||||
djangocms-link
|
||||
djangocms-snippet
|
||||
djangocms-teaser
|
||||
djangocms-page-meta
|
||||
cmsplugin-filer
|
||||
django-reversion
|
||||
djangocms-text-ckeditor
|
||||
|
||||
django-compressor
|
||||
django-filter
|
||||
django-taggit
|
||||
django-taggit-autosuggest
|
||||
|
||||
django-taggit-templatetags
|
||||
django-templatetag-sugar
|
||||
django-model-utils
|
||||
djangocms-blog
|
||||
django-dotenv
|
||||
psycopg2
|
||||
django-mptt
|
||||
easy_thumbnails
|
||||
django-polymorphic
|
||||
|
||||
# lib
|
||||
psycopg2>=2.6
|
||||
# memcache
|
||||
pylibmc
|
||||
#PLUGINS
|
||||
djangocms_flash
|
||||
djangocms_googlemap
|
||||
djangocms_inherit
|
||||
djangocms_link
|
||||
djangocms_teaser
|
||||
djangocms_page_meta
|
||||
djangocms_text_ckeditor
|
||||
djangocms_file
|
||||
djangocms_picture
|
||||
djangocms_video
|
||||
|
||||
#PAYMENT
|
||||
stripe
|
||||
|
||||
django-treebeard
|
||||
django-sekizai
|
||||
django-classy-tags
|
||||
djangocms-admin-style
|
||||
html5lib
|
||||
six
|
||||
|
||||
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
||||
|
||||
# Optional, recommended packages
|
||||
Pillow>=2
|
||||
html5lib==0.999
|
||||
six==1.3.0 #compat
|
||||
python-memcached
|
||||
|
||||
|
||||
# django-assets
|
||||
lesscpy
|
||||
|
||||
# django apps
|
||||
django-treebeard>=4.0
|
||||
django-sekizai>=0.9
|
||||
django-filer>=1.1.1
|
||||
django-classy-tags>=0.7.1
|
||||
|
||||
|
||||
# django-cms-plugins
|
||||
djangocms-admin-style==0.2.5
|
||||
django-select2>=4.3.1
|
||||
|
||||
|
||||
djangocms-style
|
||||
djangocms-column
|
||||
djangocms-grid
|
||||
djangocms-oembed
|
||||
djangocms-table
|
||||
|
||||
|
||||
# production
|
||||
# circus-web
|
||||
# chaussette
|
||||
# meinheld
|
||||
|
||||
# python3 support
|
||||
gevent>=1.1a2
|
||||
django-filer
|
||||
cmsplugin-filer
|
||||
django-reversion
|
||||
pylibmc
|
||||
|
|
102
requirements_old.txt
Normal file
|
@ -0,0 +1,102 @@
|
|||
aldryn-blog==0.4.6
|
||||
aldryn-boilerplates==0.7
|
||||
aldryn-common==0.1.3
|
||||
aldryn-search==0.2.7
|
||||
anyjson==0.3.3
|
||||
chaussette==1.3.0
|
||||
cmsplugin-filer==1.0.1
|
||||
cssselect==0.9.1
|
||||
Django
|
||||
django-admin-enhancer==1.0.0
|
||||
django-appconf==1.0.1
|
||||
django-appdata==0.1.4
|
||||
django-bootstrap3==7.0.0
|
||||
django-classy-tags==0.7.1
|
||||
django-cms==3.2.1
|
||||
django-compressor==1.5
|
||||
django-countries==3.3
|
||||
django-debug-toolbar==1.3.2
|
||||
django-dotenv==1.3.0
|
||||
django-extensions==1.5.5
|
||||
django-filer==1.1.1
|
||||
django-filter==0.10.0
|
||||
django-formtools==1.0
|
||||
django-fsm==2.2.1
|
||||
django-fsm-admin==1.2.1
|
||||
django-guardian==1.2.0
|
||||
django-haystack==2.3.1
|
||||
django-hvad==1.2.1
|
||||
-e git+git@github.com:agiliq/merchant.git@2584954a1371ee6c7d11be2d75a94402e7c641d8#egg=django_merchant
|
||||
django-meta==0.3.1
|
||||
django-meta-mixin==0.1.1
|
||||
django-model-utils==2.2
|
||||
django-money==0.7.0
|
||||
django-mptt==0.8.2
|
||||
django-parler==1.6.1
|
||||
django-polymorphic==0.8.1
|
||||
django-reversion==1.10.1
|
||||
django-sekizai==0.9.0
|
||||
Django-Select2==5.8.1
|
||||
django-sortedm2m==0.10.0
|
||||
django-spurl==0.6
|
||||
django-standard-form==1.1.1
|
||||
django-taggit==0.18.0
|
||||
django-taggit-autosuggest==0.2.8
|
||||
django-taggit-templatetags==0.2.5
|
||||
django-templatetag-sugar==1.0
|
||||
django-treebeard==4.0
|
||||
djangocms-admin-style==1.1.0
|
||||
djangocms-blog==0.5.0
|
||||
djangocms-column==1.5
|
||||
djangocms-flash==0.2.0
|
||||
djangocms-googlemap==0.3
|
||||
djangocms-grid==1.2
|
||||
djangocms-inherit==0.1
|
||||
djangocms-link==1.6.2
|
||||
djangocms-oembed==0.5
|
||||
djangocms-page-meta==0.5.5
|
||||
djangocms-snippet==1.5
|
||||
djangocms-style==1.5
|
||||
djangocms-table==1.2
|
||||
djangocms-teaser==0.1
|
||||
djangocms-text-ckeditor==2.6.0
|
||||
djangorestframework==3.1.3
|
||||
easy-thumbnails==2.3
|
||||
factory-boy==2.5.2
|
||||
gevent==1.1b5
|
||||
gnureadline==6.3.3
|
||||
greenlet==0.4.9
|
||||
html5lib==0.9999999
|
||||
iowait==0.2
|
||||
ipdb==0.8.1
|
||||
ipython==3.2.0
|
||||
lesscpy==0.10.2
|
||||
lxml==3.4.4
|
||||
Mako==1.0.2
|
||||
Markdown==2.6.2
|
||||
MarkupSafe==0.23
|
||||
meinheld==0.5.8
|
||||
micawber==0.3.3
|
||||
mock==1.3.0
|
||||
pbr==1.8.1
|
||||
Pillow==3.1.1
|
||||
ply==3.6
|
||||
psutil==3.2.1
|
||||
psycopg2==2.6.1
|
||||
py-moneyed==0.5.0
|
||||
pylibmc==1.5.0
|
||||
pyquery==1.2.9
|
||||
python-memcached==1.57
|
||||
pytz==2015.6
|
||||
pyzmq==14.7.0
|
||||
requests==2.9.1
|
||||
simplejson==3.8.0
|
||||
six==1.10.0
|
||||
sqlparse==0.1.15
|
||||
stripe==1.30.0
|
||||
tomako==0.1.0
|
||||
TornadIO2==0.0.3
|
||||
tornado==4.2.1
|
||||
Unidecode==0.4.19
|
||||
URLObject==2.4.0
|
||||
YURL==0.13
|
|
@ -1,403 +0,0 @@
|
|||
/*!
|
||||
* Clean Blog v1.0.0 (http://startbootstrap.com)
|
||||
* Copyright 2014 Start Bootstrap
|
||||
* Licensed under Apache 2.0 (https://github.com/IronSummitMedia/startbootstrap/blob/gh-pages/LICENSE)
|
||||
*/
|
||||
|
||||
body {
|
||||
font-family: 'Lora', 'Times New Roman', serif;
|
||||
font-size: 20px;
|
||||
color: #404040;
|
||||
}
|
||||
p {
|
||||
line-height: 1.5;
|
||||
margin: 30px 0;
|
||||
}
|
||||
p a {
|
||||
text-decoration: underline;
|
||||
}
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
font-weight: 800;
|
||||
}
|
||||
a {
|
||||
color: #404040;
|
||||
}
|
||||
a:hover,
|
||||
a:focus {
|
||||
color: #0085a1;
|
||||
}
|
||||
a img:hover,
|
||||
a img:focus {
|
||||
cursor: zoom-in;
|
||||
}
|
||||
blockquote {
|
||||
color: #808080;
|
||||
font-style: italic;
|
||||
}
|
||||
hr.small {
|
||||
max-width: 100px;
|
||||
margin: 15px auto;
|
||||
border-width: 4px;
|
||||
border-color: white;
|
||||
}
|
||||
.navbar-custom {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 3;
|
||||
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
}
|
||||
.navbar-custom .navbar-brand {
|
||||
font-weight: 800;
|
||||
}
|
||||
.navbar-custom .nav li a {
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
font-weight: 800;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
.navbar-custom {
|
||||
background: transparent;
|
||||
border-bottom: 1px solid transparent;
|
||||
}
|
||||
.navbar-custom .navbar-brand {
|
||||
color: white;
|
||||
padding: 20px;
|
||||
}
|
||||
.navbar-custom .navbar-brand:hover,
|
||||
.navbar-custom .navbar-brand:focus {
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
.navbar-custom .nav li a {
|
||||
color: white;
|
||||
padding: 20px;
|
||||
}
|
||||
.navbar-custom .nav li a:hover,
|
||||
.navbar-custom .nav li a:focus {
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 1170px) {
|
||||
.navbar-custom {
|
||||
-webkit-transition: background-color 0.3s;
|
||||
-moz-transition: background-color 0.3s;
|
||||
transition: background-color 0.3s;
|
||||
/* Force Hardware Acceleration in WebKit */
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-moz-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
}
|
||||
.navbar-custom.is-fixed {
|
||||
/* when the user scrolls down, we hide the header right above the viewport */
|
||||
position: fixed;
|
||||
top: -61px;
|
||||
background-color: rgba(255, 255, 255, 0.9);
|
||||
border-bottom: 1px solid #f2f2f2;
|
||||
-webkit-transition: -webkit-transform 0.3s;
|
||||
-moz-transition: -moz-transform 0.3s;
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
.navbar-custom.is-fixed .navbar-brand {
|
||||
color: #404040;
|
||||
}
|
||||
.navbar-custom.is-fixed .navbar-brand:hover,
|
||||
.navbar-custom.is-fixed .navbar-brand:focus {
|
||||
color: #0085a1;
|
||||
}
|
||||
.navbar-custom.is-fixed .nav li a {
|
||||
color: #404040;
|
||||
}
|
||||
.navbar-custom.is-fixed .nav li a:hover,
|
||||
.navbar-custom.is-fixed .nav li a:focus {
|
||||
color: #0085a1;
|
||||
}
|
||||
.navbar-custom.is-visible {
|
||||
/* if the user changes the scrolling direction, we show the header */
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
-moz-transform: translate3d(0, 100%, 0);
|
||||
-ms-transform: translate3d(0, 100%, 0);
|
||||
-o-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0);
|
||||
}
|
||||
}
|
||||
.intro-header {
|
||||
background-color: #808080;
|
||||
background: no-repeat center center;
|
||||
background-attachment: scroll;
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
background-size: cover;
|
||||
-o-background-size: cover;
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
.intro-header .site-heading,
|
||||
.intro-header .post-heading,
|
||||
.intro-header .page-heading {
|
||||
padding: 100px 0 50px;
|
||||
color: white;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
.intro-header .site-heading,
|
||||
.intro-header .post-heading,
|
||||
.intro-header .page-heading {
|
||||
padding: 150px 0;
|
||||
}
|
||||
}
|
||||
.intro-header .site-heading,
|
||||
.intro-header .page-heading {
|
||||
text-align: center;
|
||||
}
|
||||
.intro-header .site-heading h1,
|
||||
.intro-header .page-heading h1 {
|
||||
margin-top: 0;
|
||||
font-size: 50px;
|
||||
}
|
||||
.intro-header .site-heading .subheading,
|
||||
.intro-header .page-heading .subheading {
|
||||
font-size: 24px;
|
||||
line-height: 1.1;
|
||||
display: block;
|
||||
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
font-weight: 300;
|
||||
margin: 10px 0 0;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
.intro-header .site-heading h1,
|
||||
.intro-header .page-heading h1 {
|
||||
font-size: 80px;
|
||||
}
|
||||
}
|
||||
.intro-header .post-heading h1 {
|
||||
font-size: 35px;
|
||||
}
|
||||
.intro-header .post-heading .subheading,
|
||||
.intro-header .post-heading .meta {
|
||||
line-height: 1.1;
|
||||
display: block;
|
||||
}
|
||||
.intro-header .post-heading .subheading {
|
||||
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
font-size: 24px;
|
||||
margin: 10px 0 30px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.intro-header .post-heading .meta {
|
||||
font-family: 'Lora', 'Times New Roman', serif;
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
font-size: 20px;
|
||||
}
|
||||
.intro-header .post-heading .meta a {
|
||||
color: white;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
.intro-header .post-heading h1 {
|
||||
font-size: 55px;
|
||||
}
|
||||
.intro-header .post-heading .subheading {
|
||||
font-size: 30px;
|
||||
}
|
||||
}
|
||||
.post-preview > a {
|
||||
color: #404040;
|
||||
}
|
||||
.post-preview > a:hover,
|
||||
.post-preview > a:focus {
|
||||
text-decoration: none;
|
||||
color: #0085a1;
|
||||
}
|
||||
.post-preview > a > .post-title {
|
||||
font-size: 30px;
|
||||
margin-top: 30px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.post-preview > a > .post-subtitle {
|
||||
margin: 0;
|
||||
font-weight: 300;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.post-preview > .post-meta {
|
||||
color: #808080;
|
||||
font-size: 18px;
|
||||
font-style: italic;
|
||||
margin-top: 0;
|
||||
}
|
||||
.post-preview > .post-meta > a {
|
||||
text-decoration: none;
|
||||
color: #404040;
|
||||
}
|
||||
.post-preview > .post-meta > a:hover,
|
||||
.post-preview > .post-meta > a:focus {
|
||||
color: #0085a1;
|
||||
text-decoration: underline;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
.post-preview > a > .post-title {
|
||||
font-size: 36px;
|
||||
}
|
||||
}
|
||||
.section-heading {
|
||||
font-size: 36px;
|
||||
margin-top: 60px;
|
||||
font-weight: 700;
|
||||
}
|
||||
.caption {
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
padding: 10px;
|
||||
font-style: italic;
|
||||
margin: 0;
|
||||
display: block;
|
||||
border-bottom-right-radius: 5px;
|
||||
border-bottom-left-radius: 5px;
|
||||
}
|
||||
footer {
|
||||
padding: 50px 0 65px;
|
||||
}
|
||||
footer .list-inline {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
footer .copyright {
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.floating-label-form-group {
|
||||
font-size: 14px;
|
||||
position: relative;
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 0.5em;
|
||||
border-bottom: 1px solid #eeeeee;
|
||||
}
|
||||
.floating-label-form-group input,
|
||||
.floating-label-form-group textarea {
|
||||
z-index: 1;
|
||||
position: relative;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
font-size: 1.5em;
|
||||
background: none;
|
||||
box-shadow: none !important;
|
||||
resize: none;
|
||||
}
|
||||
.floating-label-form-group label {
|
||||
display: block;
|
||||
z-index: 0;
|
||||
position: relative;
|
||||
top: 2em;
|
||||
margin: 0;
|
||||
font-size: 0.85em;
|
||||
line-height: 1.764705882em;
|
||||
vertical-align: middle;
|
||||
vertical-align: baseline;
|
||||
opacity: 0;
|
||||
-webkit-transition: top 0.3s ease,opacity 0.3s ease;
|
||||
-moz-transition: top 0.3s ease,opacity 0.3s ease;
|
||||
-ms-transition: top 0.3s ease,opacity 0.3s ease;
|
||||
transition: top 0.3s ease,opacity 0.3s ease;
|
||||
}
|
||||
.floating-label-form-group::not(:first-child) {
|
||||
padding-left: 14px;
|
||||
border-left: 1px solid #eeeeee;
|
||||
}
|
||||
.floating-label-form-group-with-value label {
|
||||
top: 0;
|
||||
opacity: 1;
|
||||
}
|
||||
.floating-label-form-group-with-focus label {
|
||||
color: #0085a1;
|
||||
}
|
||||
form .row:first-child .floating-label-form-group {
|
||||
border-top: 1px solid #eeeeee;
|
||||
}
|
||||
.btn {
|
||||
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
font-weight: 800;
|
||||
letter-spacing: 1px;
|
||||
border-radius: 0;
|
||||
padding: 15px 25px;
|
||||
}
|
||||
.btn-lg {
|
||||
font-size: 16px;
|
||||
padding: 25px 35px;
|
||||
}
|
||||
.btn-default:hover,
|
||||
.btn-default:focus {
|
||||
background-color: #0085a1;
|
||||
border: 1px solid #0085a1;
|
||||
color: white;
|
||||
}
|
||||
.pager {
|
||||
margin: 20px 0 0;
|
||||
}
|
||||
.pager li > a,
|
||||
.pager li > span {
|
||||
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
font-weight: 800;
|
||||
letter-spacing: 1px;
|
||||
padding: 15px 25px;
|
||||
background-color: white;
|
||||
border-radius: 0;
|
||||
}
|
||||
.pager li > a:hover,
|
||||
.pager li > a:focus {
|
||||
color: white;
|
||||
background-color: #0085a1;
|
||||
border: 1px solid #0085a1;
|
||||
}
|
||||
.pager .disabled > a,
|
||||
.pager .disabled > a:hover,
|
||||
.pager .disabled > a:focus,
|
||||
.pager .disabled > span {
|
||||
color: #808080;
|
||||
background-color: #404040;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
::-moz-selection {
|
||||
color: white;
|
||||
text-shadow: none;
|
||||
background: #0085a1;
|
||||
}
|
||||
::selection {
|
||||
color: white;
|
||||
text-shadow: none;
|
||||
background: #0085a1;
|
||||
}
|
||||
img::selection {
|
||||
color: white;
|
||||
background: transparent;
|
||||
}
|
||||
img::-moz-selection {
|
||||
color: white;
|
||||
background: transparent;
|
||||
}
|
||||
body {
|
||||
webkit-tap-highlight-color: #0085a1;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.blog-content img {
|
||||
width: 100%;
|
||||
}
|
Before Width: | Height: | Size: 169 KiB |
|
@ -1,70 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="130px" height="40px" viewBox="0 0 130 40" enable-background="new 0 0 130 40" xml:space="preserve">
|
||||
<g>
|
||||
<path fill="#FFFFFF" d="M41.207,31.459c0-0.431,0.15-0.846,0.453-1.25c0.301-0.406,0.733-0.771,1.293-1.094v-0.09
|
||||
c-0.294-0.16-0.552-0.388-0.774-0.675c-0.22-0.287-0.331-0.66-0.331-1.116c0-0.354,0.115-0.711,0.345-1.074
|
||||
c0.227-0.36,0.55-0.681,0.963-0.96v-0.088c-0.386-0.281-0.709-0.655-0.975-1.121c-0.263-0.462-0.396-1.019-0.396-1.666
|
||||
c0-0.605,0.117-1.148,0.352-1.627c0.237-0.48,0.554-0.887,0.954-1.228c0.397-0.34,0.857-0.597,1.382-0.775
|
||||
c0.521-0.177,1.079-0.265,1.667-0.265c0.605,0,1.151,0.088,1.637,0.265h4.444v1.659h-2.698c0.222,0.235,0.42,0.528,0.596,0.874
|
||||
c0.178,0.348,0.267,0.734,0.267,1.161c0,0.592-0.11,1.115-0.332,1.571c-0.221,0.457-0.524,0.844-0.907,1.16
|
||||
c-0.384,0.319-0.833,0.56-1.349,0.717c-0.515,0.162-1.069,0.245-1.659,0.245c-0.263,0-0.548-0.027-0.853-0.088
|
||||
c-0.301-0.057-0.599-0.148-0.895-0.266c-0.502,0.326-0.751,0.701-0.751,1.128c0,0.396,0.184,0.686,0.552,0.861
|
||||
c0.368,0.18,0.899,0.265,1.591,0.265h2.299c1.418,0,2.465,0.205,3.153,0.608c0.685,0.405,1.027,1.075,1.027,2.001
|
||||
c0,0.517-0.145,1.001-0.432,1.46c-0.288,0.457-0.697,0.857-1.229,1.204c-0.529,0.346-1.172,0.621-1.924,0.817
|
||||
c-0.751,0.201-1.591,0.302-2.522,0.302c-1.533,0-2.742-0.249-3.625-0.744C41.65,33.143,41.207,32.416,41.207,31.459z
|
||||
M43.062,31.193c0,0.516,0.284,0.932,0.853,1.249c0.568,0.317,1.39,0.477,2.464,0.477c0.575,0,1.095-0.056,1.56-0.167
|
||||
c0.464-0.109,0.863-0.257,1.195-0.441c0.333-0.186,0.584-0.395,0.763-0.628c0.177-0.235,0.263-0.485,0.263-0.755
|
||||
c0-0.47-0.196-0.782-0.584-0.939c-0.392-0.154-0.978-0.229-1.758-0.229h-1.902c-0.339,0-0.64-0.014-0.905-0.036
|
||||
c-0.267-0.019-0.518-0.066-0.752-0.143c-0.443,0.251-0.751,0.509-0.931,0.773C43.154,30.616,43.062,30.897,43.062,31.193z
|
||||
M46.138,24.668c0.621,0,1.149-0.205,1.594-0.618c0.441-0.414,0.664-0.986,0.664-1.724c0-0.71-0.223-1.276-0.664-1.703
|
||||
c-0.445-0.428-0.973-0.642-1.594-0.642s-1.149,0.213-1.591,0.642c-0.441,0.427-0.663,0.995-0.663,1.703
|
||||
c0,0.737,0.223,1.31,0.663,1.724C44.988,24.462,45.518,24.668,46.138,24.668z"/>
|
||||
</g>
|
||||
<path fill="#FFFFFF" d="M24.624,29.806H22.77l-0.184-1.853h-0.09c-0.55,0.64-1.15,1.154-1.796,1.544
|
||||
c-0.649,0.387-1.4,0.581-2.254,0.581c-1.327,0-2.296-0.385-2.904-1.153c-0.612-0.772-0.916-1.896-0.916-3.376v-5.616l-2.962-0.058
|
||||
l5.249-2.02l-0.022,1.528v5.871c0,0.991,0.175,1.719,0.526,2.186c0.351,0.466,0.953,0.7,1.808,0.7c0.579,0,1.109-0.144,1.589-0.426
|
||||
c0.48-0.282,0.996-0.76,1.544-1.431v-7.665h2.265L24.624,29.806L24.624,29.806z"/>
|
||||
<path fill="#FFFFFF" d="M28.376,18.619h1.851l0.184,1.807h0.091c0.565-0.58,1.174-1.072,1.832-1.476
|
||||
c0.654-0.404,1.418-0.605,2.287-0.605c1.312,0,2.274,0.39,2.882,1.165c0.61,0.777,0.917,1.9,0.917,3.365v6.93h-2.267V23.17
|
||||
c0-0.975-0.173-1.695-0.525-2.161c-0.349-0.468-0.953-0.701-1.808-0.701c-0.596,0-1.128,0.152-1.603,0.447
|
||||
c-0.471,0.298-1,0.743-1.579,1.339v7.709h-2.263L28.376,18.619L28.376,18.619z"/>
|
||||
<path fill="#FFFFFF" d="M63.696,24.225c0-0.917,0.161-1.737,0.481-2.461s0.746-1.343,1.281-1.853c0.532-0.51,1.143-0.9,1.831-1.167
|
||||
c0.687-0.267,1.397-0.399,2.128-0.399c0.823,0,1.551,0.128,2.187,0.389c0.629,0.259,1.17,0.621,1.609,1.084
|
||||
c0.444,0.467,0.781,1.023,1.007,1.672c0.229,0.647,0.346,1.36,0.346,2.139c0,0.23-0.013,0.447-0.035,0.653
|
||||
c-0.022,0.208-0.049,0.378-0.08,0.514H66.03c0.076,1.098,0.483,1.956,1.225,2.574c0.74,0.618,1.673,0.928,2.802,0.928
|
||||
c0.611,0,1.178-0.087,1.705-0.254c0.527-0.166,1.041-0.403,1.541-0.708l0.803,1.439c-0.575,0.366-1.23,0.674-1.956,0.928
|
||||
c-0.724,0.25-1.521,0.376-2.392,0.376c-0.838,0-1.627-0.131-2.366-0.397c-0.74-0.268-1.384-0.652-1.933-1.156
|
||||
c-0.55-0.504-0.981-1.118-1.294-1.844C63.853,25.957,63.696,25.138,63.696,24.225z M72.459,23.241c0-1.01-0.263-1.777-0.78-2.312
|
||||
s-1.256-0.8-2.218-0.8c-0.84,0-1.586,0.266-2.241,0.8c-0.657,0.535-1.063,1.302-1.214,2.312H72.459z"/>
|
||||
<path fill="#FFFFFF" d="M82.007,18.264l0.008,11.77h-2.267V21.44h-4.247L82.007,18.264z M80.688,15.958
|
||||
c-0.488,0-0.891-0.146-1.215-0.434c-0.316-0.29-0.478-0.68-0.478-1.167s0.161-0.879,0.478-1.177
|
||||
c0.324-0.297,0.725-0.446,1.215-0.446c0.486,0,0.894,0.148,1.212,0.446c0.323,0.298,0.483,0.69,0.483,1.177
|
||||
c0,0.487-0.16,0.878-0.483,1.167C81.581,15.811,81.174,15.958,80.688,15.958z"/>
|
||||
<path fill="#FFFFFF" d="M85.153,24.45c0-0.928,0.169-1.762,0.505-2.491c0.336-0.733,0.795-1.351,1.374-1.855
|
||||
c0.577-0.503,1.244-0.882,2-1.143c0.756-0.258,1.56-0.388,2.413-0.388c0.916,0,1.715,0.155,2.402,0.467
|
||||
c0.689,0.312,1.261,0.692,1.717,1.132l-1.096,1.44c-0.444-0.365-0.903-0.652-1.377-0.857c-0.469-0.205-0.981-0.307-1.531-0.307
|
||||
c-0.593,0-1.143,0.095-1.648,0.286c-0.502,0.19-0.933,0.46-1.29,0.812c-0.359,0.352-0.639,0.773-0.834,1.269
|
||||
c-0.199,0.495-0.298,1.043-0.298,1.635c0,0.596,0.096,1.142,0.285,1.636c0.191,0.497,0.466,0.919,0.822,1.271
|
||||
c0.358,0.348,0.782,0.621,1.269,0.812c0.49,0.189,1.029,0.284,1.627,0.284c0.685,0,1.304-0.129,1.852-0.389
|
||||
c0.548-0.259,1.045-0.571,1.487-0.94l0.962,1.467c-0.641,0.548-1.343,0.973-2.104,1.269c-0.763,0.297-1.558,0.444-2.38,0.444
|
||||
c-0.87,0-1.681-0.128-2.437-0.388c-0.755-0.258-1.405-0.641-1.955-1.145c-0.552-0.504-0.982-1.119-1.294-1.843
|
||||
C85.311,26.21,85.153,25.383,85.153,24.45z"/>
|
||||
<path fill="#FFFFFF" d="M95.906,13.877l4.743-2.351v6.589l-0.138,2.517c0.566-0.58,1.173-1.068,1.832-1.465
|
||||
c0.655-0.396,1.416-0.594,2.287-0.594c1.311,0,2.271,0.388,2.881,1.165c0.608,0.778,0.914,1.901,0.914,3.364v6.93h-2.264v-6.635
|
||||
c0-0.977-0.175-1.695-0.527-2.161c-0.351-0.466-0.95-0.699-1.807-0.699c-0.594,0-1.13,0.149-1.599,0.446
|
||||
c-0.477,0.299-1.001,0.745-1.581,1.34v7.709h-2.265l-0.05-16.251L95.906,13.877z"/>
|
||||
<g>
|
||||
<polygon fill="#FFFFFF" points="108.854,8.822 108.09,10.416 117.573,10.456 118.336,8.831 "/>
|
||||
<polygon fill="#FFFFFF" points="108.103,12.298 107.315,13.971 116.812,13.991 117.573,12.336 "/>
|
||||
<polygon fill="#FFFFFF" points="109.955,15.869 114.305,6.606 115.98,6.631 111.682,15.871 "/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#FFFFFF" d="M58.023,26.167c0,0.749,0.188,1.293,0.564,1.625c0.375,0.333,0.864,0.499,1.47,0.499
|
||||
c0.294,0,0.598-0.039,0.907-0.112c0.309-0.074,0.657-0.191,1.038-0.354l0.53,1.639c-0.25,0.086-0.491,0.166-0.718,0.243
|
||||
c-0.23,0.072-0.462,0.134-0.696,0.186c-0.236,0.054-0.482,0.097-0.739,0.133c-0.26,0.037-0.542,0.057-0.852,0.057
|
||||
c-1.21,0-2.128-0.346-2.755-1.041c-0.626-0.691-0.939-1.693-0.939-3.007V11.309h-3.539l5.727-4.035"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 6.6 KiB |
|
@ -1,29 +0,0 @@
|
|||
// Navigation Scripts to Show Header on Scroll-Up
|
||||
jQuery(document).ready(function($) {
|
||||
var MQL = 1170;
|
||||
|
||||
//primary navigation slide-in effect
|
||||
if ($(window).width() > MQL) {
|
||||
var headerHeight = $('.navbar-custom').height();
|
||||
$(window).on('scroll', {
|
||||
previousTop: 0
|
||||
},
|
||||
function() {
|
||||
var currentTop = $(window).scrollTop();
|
||||
//check if user is scrolling up
|
||||
if (currentTop < this.previousTop) {
|
||||
//if scrolling up...
|
||||
if (currentTop > 0 && $('.navbar-custom').hasClass('is-fixed')) {
|
||||
$('.navbar-custom').addClass('is-visible');
|
||||
} else {
|
||||
$('.navbar-custom').removeClass('is-visible is-fixed');
|
||||
}
|
||||
} else {
|
||||
//if scrolling down...
|
||||
$('.navbar-custom').removeClass('is-visible');
|
||||
if (currentTop > headerHeight && !$('.navbar-custom').hasClass('is-fixed')) $('.navbar-custom').addClass('is-fixed');
|
||||
}
|
||||
this.previousTop = currentTop;
|
||||
});
|
||||
}
|
||||
});
|
|
@ -1,458 +0,0 @@
|
|||
@import "variables.less";
|
||||
@import "mixins.less";
|
||||
|
||||
// Global Components
|
||||
|
||||
body {
|
||||
.serif;
|
||||
font-size: 20px;
|
||||
color: @gray-dark;
|
||||
}
|
||||
|
||||
// -- Typography
|
||||
|
||||
p {
|
||||
line-height: 1.5;
|
||||
margin: 30px 0;
|
||||
a {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
.sans-serif;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
a {
|
||||
color: @gray-dark;
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @brand-primary;
|
||||
}
|
||||
}
|
||||
|
||||
a img {
|
||||
&:hover,
|
||||
&:focus {
|
||||
cursor: zoom-in;
|
||||
}
|
||||
}
|
||||
|
||||
blockquote {
|
||||
color: @gray;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
hr.small {
|
||||
max-width: 100px;
|
||||
margin: 15px auto;
|
||||
border-width: 4px;
|
||||
border-color: white;
|
||||
}
|
||||
|
||||
// Navigation
|
||||
|
||||
.navbar-custom {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 3;
|
||||
.sans-serif;
|
||||
.navbar-brand {
|
||||
font-weight: 800;
|
||||
}
|
||||
.nav {
|
||||
li {
|
||||
a {
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
font-weight: 800;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
background: transparent;
|
||||
border-bottom: 1px solid transparent;
|
||||
.navbar-brand {
|
||||
color: white;
|
||||
padding: 20px;
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @white-faded;
|
||||
}
|
||||
}
|
||||
.nav {
|
||||
li {
|
||||
a {
|
||||
color: white;
|
||||
padding: 20px;
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @white-faded;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 1170px) {
|
||||
-webkit-transition: background-color 0.3s;
|
||||
-moz-transition: background-color 0.3s;
|
||||
transition: background-color 0.3s;
|
||||
/* Force Hardware Acceleration in WebKit */
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-moz-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
&.is-fixed {
|
||||
/* when the user scrolls down, we hide the header right above the viewport */
|
||||
position: fixed;
|
||||
top: -61px;
|
||||
background-color: fade(white, 90%);
|
||||
border-bottom: 1px solid darken(white, 5%);
|
||||
-webkit-transition: -webkit-transform 0.3s;
|
||||
-moz-transition: -moz-transform 0.3s;
|
||||
transition: transform 0.3s;
|
||||
.navbar-brand {
|
||||
color: @gray-dark;
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @brand-primary;
|
||||
}
|
||||
}
|
||||
.nav {
|
||||
li {
|
||||
a {
|
||||
color: @gray-dark;
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @brand-primary;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
&.is-visible {
|
||||
/* if the user changes the scrolling direction, we show the header */
|
||||
-webkit-transform: translate3d(0, 100%, 0);
|
||||
-moz-transform: translate3d(0, 100%, 0);
|
||||
-ms-transform: translate3d(0, 100%, 0);
|
||||
-o-transform: translate3d(0, 100%, 0);
|
||||
transform: translate3d(0, 100%, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Header
|
||||
|
||||
.intro-header {
|
||||
background-color: @gray;
|
||||
background: no-repeat center center;
|
||||
background-attachment: scroll;
|
||||
.background-cover;
|
||||
// NOTE: Background images are set within the HTML using inline CSS!
|
||||
margin-bottom: 50px;
|
||||
.site-heading,
|
||||
.post-heading,
|
||||
.page-heading {
|
||||
padding: 100px 0 50px;
|
||||
color: white;
|
||||
@media only screen and (min-width: 768px) {
|
||||
padding: 150px 0;
|
||||
}
|
||||
}
|
||||
.site-heading,
|
||||
.page-heading {
|
||||
text-align: center;
|
||||
h1 {
|
||||
margin-top: 0;
|
||||
font-size: 50px;
|
||||
}
|
||||
.subheading {
|
||||
font-size: 24px;
|
||||
line-height: 1.1;
|
||||
display: block;
|
||||
.sans-serif;
|
||||
font-weight: 300;
|
||||
margin: 10px 0 0;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
h1 {
|
||||
font-size: 80px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.post-heading {
|
||||
h1 {
|
||||
font-size: 35px;
|
||||
}
|
||||
.subheading,
|
||||
.meta {
|
||||
line-height: 1.1;
|
||||
display: block;
|
||||
}
|
||||
.subheading {
|
||||
.sans-serif;
|
||||
font-size: 24px;
|
||||
margin: 10px 0 30px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.meta {
|
||||
.serif;
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
font-size: 20px;
|
||||
a {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
h1 {
|
||||
font-size: 55px;
|
||||
}
|
||||
.subheading {
|
||||
font-size: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Post Preview Pages
|
||||
|
||||
.post-preview {
|
||||
> a {
|
||||
color: @gray-dark;
|
||||
&:hover,
|
||||
&:focus {
|
||||
text-decoration: none;
|
||||
color: @brand-primary;
|
||||
}
|
||||
> .post-title {
|
||||
font-size: 30px;
|
||||
margin-top: 30px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
> .post-subtitle {
|
||||
margin: 0;
|
||||
font-weight: 300;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
> .post-meta {
|
||||
color: @gray;
|
||||
font-size: 18px;
|
||||
font-style: italic;
|
||||
margin-top: 0;
|
||||
> a {
|
||||
text-decoration: none;
|
||||
color: @gray-dark;
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @brand-primary;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
> a {
|
||||
> .post-title {
|
||||
font-size: 36px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sections
|
||||
|
||||
.section-heading {
|
||||
font-size: 36px;
|
||||
margin-top: 60px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.caption {
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
padding: 10px;
|
||||
font-style: italic;
|
||||
margin: 0;
|
||||
display: block;
|
||||
border-bottom-right-radius: 5px;
|
||||
border-bottom-left-radius: 5px;
|
||||
}
|
||||
|
||||
footer {
|
||||
padding: 50px 0 65px;
|
||||
.list-inline {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.copyright {
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Contact Form Styles
|
||||
|
||||
.floating-label-form-group {
|
||||
font-size: 14px;
|
||||
position: relative;
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 0.5em;
|
||||
border-bottom: 1px solid @gray-light;
|
||||
input,
|
||||
textarea {
|
||||
z-index: 1;
|
||||
position: relative;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
font-size: 1.5em;
|
||||
background: none;
|
||||
box-shadow: none !important;
|
||||
resize: none;
|
||||
}
|
||||
label {
|
||||
display: block;
|
||||
z-index: 0;
|
||||
position: relative;
|
||||
top: 2em;
|
||||
margin: 0;
|
||||
font-size: 0.85em;
|
||||
line-height: 1.764705882em;
|
||||
vertical-align: middle;
|
||||
vertical-align: baseline;
|
||||
opacity: 0;
|
||||
-webkit-transition: top 0.3s ease,opacity 0.3s ease;
|
||||
-moz-transition: top 0.3s ease,opacity 0.3s ease;
|
||||
-ms-transition: top 0.3s ease,opacity 0.3s ease;
|
||||
transition: top 0.3s ease,opacity 0.3s ease;
|
||||
}
|
||||
&::not(:first-child) {
|
||||
padding-left: 14px;
|
||||
border-left: 1px solid @gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
.floating-label-form-group-with-value {
|
||||
label {
|
||||
top: 0;
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.floating-label-form-group-with-focus {
|
||||
label {
|
||||
color: @brand-primary;
|
||||
}
|
||||
}
|
||||
|
||||
form .row:first-child .floating-label-form-group {
|
||||
border-top: 1px solid @gray-light;
|
||||
}
|
||||
|
||||
// Button Styles
|
||||
|
||||
.btn {
|
||||
.sans-serif;
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
font-weight: 800;
|
||||
letter-spacing: 1px;
|
||||
border-radius: 0;
|
||||
padding: 15px 25px;
|
||||
}
|
||||
|
||||
.btn-lg {
|
||||
font-size: 16px;
|
||||
padding: 25px 35px;
|
||||
}
|
||||
|
||||
.btn-default {
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: @brand-primary;
|
||||
border: 1px solid @brand-primary;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
// Pager Styling
|
||||
|
||||
.pager {
|
||||
|
||||
margin: 20px 0 0;
|
||||
|
||||
li {
|
||||
> a,
|
||||
> span {
|
||||
.sans-serif;
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
font-weight: 800;
|
||||
letter-spacing: 1px;
|
||||
padding: 15px 25px;
|
||||
background-color: white;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
> a:hover,
|
||||
> a:focus {
|
||||
color: white;
|
||||
background-color: @brand-primary;
|
||||
border: 1px solid @brand-primary;
|
||||
}
|
||||
}
|
||||
|
||||
.disabled {
|
||||
> a,
|
||||
> a:hover,
|
||||
> a:focus,
|
||||
> span {
|
||||
color: @gray;
|
||||
background-color: @gray-dark;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -- Highlight Color Customization
|
||||
|
||||
::-moz-selection {
|
||||
color: white;
|
||||
text-shadow: none;
|
||||
background: @brand-primary;
|
||||
}
|
||||
|
||||
::selection {
|
||||
color: white;
|
||||
text-shadow: none;
|
||||
background: @brand-primary;
|
||||
}
|
||||
|
||||
img::selection {
|
||||
color: white;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
img::-moz-selection {
|
||||
color: white;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
body {
|
||||
webkit-tap-highlight-color: @brand-primary;
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
// Mixins
|
||||
|
||||
.transition-all() {
|
||||
-webkit-transition: all 0.5s;
|
||||
-moz-transition: all 0.5s;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
|
||||
.background-cover() {
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
background-size: cover;
|
||||
-o-background-size: cover;
|
||||
}
|
||||
|
||||
.serif() {
|
||||
font-family: 'Lora', 'Times New Roman', serif;
|
||||
}
|
||||
|
||||
.sans-serif () {
|
||||
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
// Variables
|
||||
|
||||
@brand-primary: #0085A1;
|
||||
@gray-dark: lighten(black, 25%);
|
||||
@gray: lighten(black, 50%);
|
||||
@white-faded: fade(white, 80%);
|
||||
@gray-light: #eee;
|
|
@ -51,7 +51,7 @@
|
|||
{% cms_toolbar %}
|
||||
<div class="brand">Digital Glarus</div>
|
||||
<div class="address-bar">
|
||||
{% placeholder 'digital_glarus_legend' %}
|
||||
{# {% placeholder 'digital_glarus_legend' %}#}
|
||||
</div>
|
||||
<div class="center-block">
|
||||
<ul class="list-inline center-block language-chooser-list">
|
|
@ -1,4 +1,4 @@
|
|||
{% extends "cms/digitalglarus/base.html" %}
|
||||
{% extends "digitalglarus/base.html" %}
|
||||
{% load staticfiles cms_tags %}
|
||||
{% block title %}crowdfunding{% endblock %}
|
||||
|
|
@ -18,9 +18,6 @@
|
|||
<ul class="nav navbar-nav">
|
||||
{% show_menu 0 0 0 1 %}
|
||||
{% show_menu_below_id "digital-glarus-page" 0 %}
|
||||
<li>
|
||||
<a href="{% url 'digitalglarus:blog' %}">Blog</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /.navbar-collapse -->
|
|
@ -4,8 +4,6 @@
|
|||
<header class="intro-header"
|
||||
{% if post.main_image_id %}
|
||||
style="background-image: url('{{ post.main_image.url }}');"
|
||||
{% else %}
|
||||
style="background-image: url('{% static 'blog.ungleich.ch/img/home-bg.jpg' %}');"
|
||||
{% endif %}
|
||||
>
|
||||
<div class="container">
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{% load i18n thumbnail cms_tags %}
|
||||
{% load url from future %}
|
||||
|
||||
<div class="post-preview">
|
||||
<a href=" {{ post.get_absolute_url }} ">
|
||||
|
|
|
@ -1,21 +1,37 @@
|
|||
{% extends "djangocms_blog/base.html" %}
|
||||
{% extends "glarus_blog/base.html" %}
|
||||
{% load i18n thumbnail cms_tags %}
|
||||
{% load url from future %}
|
||||
|
||||
{% block meta_description %}{{ post.meta_description }}{% endblock meta_description %}
|
||||
{% block meta_keywords %}{{ post.meta_keywords }}{% endblock meta_keywords %}
|
||||
{% block canonical_url %}<link rel="canonical" href="{{ SITE.domain }}{{ view.get_view_url }}"/>{% endblock canonical_url %}
|
||||
{% block title %}{% page_attribute "page_title" %} - {{ post.get_title }}{% endblock %}
|
||||
<!-- page header -->
|
||||
{% block base_header %}
|
||||
{% include "djangocms_blog/_header_post_detail.html" %}
|
||||
{% endblock %}
|
||||
<!-- page header -->
|
||||
{% block content_blog %}
|
||||
<article>
|
||||
{% if use_placeholder %}
|
||||
<div class="blog-content">{% render_placeholder post.content %}</div>
|
||||
{% else %}
|
||||
<div class="blog-content">{% render_model post "post_text" "post_text" %}</div>
|
||||
{% block canonical_url %}
|
||||
<link rel="canonical" href="{{ SITE.domain }}{{ view.get_view_url }}"/>{% endblock canonical_url %}
|
||||
{% block title %}{{ post.get_title }}{% endblock %}
|
||||
|
||||
{% block content_blog %}{% spaceless %}
|
||||
<article id="post-{{ post.slug }}" class="post-item post-detail">
|
||||
{% if post.main_image_id %}
|
||||
<div class="blog-visual">
|
||||
{% thumbnail post.main_image post.full_image_options.size crop=post.full_image_options.crop upscale=post.full_image_options.upscale subject_location=post.main_image.subject_location as thumb %}
|
||||
<img src="{{ post.main_image.url }}" alt="{{ post.main_image.default_alt_text }}"
|
||||
class="img-responsive img-full"/>
|
||||
</div>
|
||||
{% endif %}
|
||||
<header class="text-center">
|
||||
<hr></hr>
|
||||
<h2 class="text-center intro-text">
|
||||
<a href="{% url 'djangocms_blog:post-detail' post.slug %}" class="post-title center-block">
|
||||
<b>{{ post.title }}</b>
|
||||
</a>
|
||||
<small>
|
||||
{{ post.date_created }}
|
||||
</small>
|
||||
</h2>
|
||||
<hr></hr>
|
||||
{# {% block blog_meta %}#}
|
||||
{# include "glarus_blog/includes/blog_meta.html"#}
|
||||
{# {% endblock %}#}
|
||||
</header>
|
||||
{% endspaceless %}
|
||||
<div class="digitalglarus-blog-content">{{ post.abstract| safe }}</div>
|
||||
</article>
|
||||
{% endblock content_blog %}
|
|
@ -1,4 +1,4 @@
|
|||
{% extends "djangocms_blog/base.html" %}
|
||||
{% extends "glarus_blog/base.html" %}
|
||||
{% load i18n thumbnail %}{% spaceless %}
|
||||
|
||||
{% block canonical_url %}<link rel="canonical" href="{{ SITE.domain }}{{ view.get_view_url }}"/>{% endblock canonical_url %}
|
||||
|
@ -7,40 +7,28 @@
|
|||
<section class="blog-list">
|
||||
{% block blog_title %}
|
||||
<header>
|
||||
<h2>
|
||||
{% if author %}{% trans "Articles by" %} {{ author.get_full_name }}
|
||||
{% elif archive_date %}{% trans "Archive" %} – {% if month %}{{ archive_date|date:'F' }} {% endif %}{{ year }}
|
||||
{% elif tagged_entries %}{% trans "Tag" %} – {{ tagged_entries|capfirst }}
|
||||
{% elif category %}{% trans "Category" %} – {{ category }}{% endif %}
|
||||
</h2>
|
||||
</header>
|
||||
{% endblock %}
|
||||
{% for post in post_list %}
|
||||
{% include "djangocms_blog/includes/blog_item.html" with post=post image="true" TRUNCWORDS_COUNT=TRUNCWORDS_COUNT %}
|
||||
{% include "glarus_blog/includes/blog_item.html" with post=post image="true" TRUNCWORDS_COUNT=TRUNCWORDS_COUNT %}
|
||||
{% empty %}
|
||||
<p class="blog-empty">{% trans "No article found." %}</p>
|
||||
<p class="blog-empty text-center lead">{% trans "No article found." %}</p>
|
||||
{% endfor %}
|
||||
{% if author or archive_date or tagged_entries %}
|
||||
<p class="blog-back"><a href="{% url 'djangocms_blog:posts-latest' %}">{% trans "Back" %}</a></p>
|
||||
{% endif %}
|
||||
{% if is_paginated %}
|
||||
<!-- Pager -->
|
||||
<ul class="pager">
|
||||
<nav class="{% firstof css_grid instance.css_grid %} pagination">
|
||||
{% if page_obj.has_previous %}
|
||||
<li class="previous">
|
||||
<a href="?{{ view.page_kwarg }}={{ page_obj.previous_page_number }}">
|
||||
« {% trans "Newer Posts" %}
|
||||
</a>
|
||||
</li>
|
||||
<a href="?{{ view.page_kwarg }}={{ page_obj.previous_page_number }}">« {% trans "previous" %}</a>
|
||||
{% endif %}
|
||||
<span class="current">
|
||||
{% trans "Page" %} {{ page_obj.number }} {% trans "of" %} {{ paginator.num_pages }}
|
||||
</span>
|
||||
{% if page_obj.has_next %}
|
||||
<li class="next">
|
||||
<a href="?{{ view.page_kwarg }}={{ page_obj.next_page_number }}">
|
||||
{% trans "Older Posts" %} →
|
||||
</a>
|
||||
</li>
|
||||
<a href="?{{ view.page_kwarg }}={{ page_obj.next_page_number }}">{% trans "next" %} »</a>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
{% endif %}
|
||||
</section>
|
||||
{% endblock %}
|
||||
|
|