Merge pull request #7 from tmslav/membership_payment
Membership payment
							
								
								
									
										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,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
									
								
							
							
						
						|  | @ -46,7 +46,21 @@ SECRET_KEY = env('DJANGO_SECRET_KEY') | |||
| # Application definition | ||||
| 
 | ||||
| INSTALLED_APPS = ( | ||||
|     'djangocms_admin_style', | ||||
|     #1st migrate | ||||
|     'membership', | ||||
|     'easy_thumbnails', | ||||
|     'mptt', | ||||
|     'parler', | ||||
|     'taggit', | ||||
|     'taggit_autosuggest', | ||||
|     'django_select2', | ||||
|     'meta', | ||||
|     'meta_mixin', | ||||
|     'bootstrap3', | ||||
|     'compressor', | ||||
|     'filer', | ||||
|     'djangocms_blog', | ||||
|     'cms',  # django CMS itself | ||||
|     'django.contrib.admin', | ||||
|     'django.contrib.auth', | ||||
|     'django.contrib.contenttypes', | ||||
|  | @ -54,19 +68,23 @@ 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 | ||||
|     '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_snippet', | ||||
|     'djangocms_teaser', | ||||
|     'djangocms_page_meta', | ||||
|     # django-filer | ||||
|     'djangocms_text_ckeditor', | ||||
|     'djangocms_admin_style', | ||||
|     'cmsplugin_filer_file', | ||||
|     'cmsplugin_filer_folder', | ||||
|     'cmsplugin_filer_link', | ||||
|  | @ -74,22 +92,6 @@ INSTALLED_APPS = ( | |||
|     'cmsplugin_filer_video', | ||||
|     # versioning | ||||
|     'reversion', | ||||
|     # ck-editor | ||||
|     'djangocms_text_ckeditor', | ||||
|     # djangocms-blog | ||||
|     'filer', | ||||
|     'easy_thumbnails', | ||||
|     'cmsplugin_filer_image', | ||||
|     'parler', | ||||
|     'taggit', | ||||
|     'taggit_autosuggest', | ||||
|     'django_select2', | ||||
|     'meta', | ||||
|     'meta_mixin', | ||||
|     'admin_enhancer', | ||||
|     'djangocms_blog', | ||||
|     'bootstrap3', | ||||
|     'compressor', | ||||
|     # ungleich | ||||
|     'ungleich', | ||||
|     'hosting', | ||||
|  | @ -117,7 +119,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 +271,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', | ||||
|  | @ -404,3 +410,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': { | ||||
|  |  | |||
|  | @ -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
									
								
							
							
						
						
							
								
								
									
										130
									
								
								membership/models.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,130 @@ | |||
| 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, | ||||
|             password=password, | ||||
|             validation_slug=make_password(None) | ||||
|         ) | ||||
|         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. | ||||
|         """ | ||||
|         import ipdb;ipdb.set_trace() | ||||
|         user = self.create_user(email, | ||||
|                                 password=password, | ||||
|                                 name=name, | ||||
|                                 validation_slug=make_password(None) | ||||
|                                 ) | ||||
|         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') | ||||
							
								
								
									
										150
									
								
								requirements.txt
									
										
									
									
									
								
							
							
						
						|  | @ -1,104 +1,46 @@ | |||
| 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==1.8.9 | ||||
| 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.7.0 | ||||
| simplejson==3.8.0 | ||||
| six==1.10.0 | ||||
| South==1.0.2 | ||||
| sqlparse==0.1.15 | ||||
| stripe==1.22.3 | ||||
| tomako==0.1.0 | ||||
| TornadIO2==0.0.3 | ||||
| tornado==4.2.1 | ||||
| Unidecode==0.4.19 | ||||
| URLObject==2.4.0 | ||||
| wheel==0.29.0 | ||||
| YURL==0.13 | ||||
| Django==1.9.4 | ||||
| wheel | ||||
| django-bootstrap3 | ||||
| django-cms | ||||
| 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 | ||||
| 
 | ||||
| #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 | ||||
| django-filer | ||||
| cmsplugin-filer | ||||
| django-reversion | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										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 %} | ||||
| 
 | ||||