resolve merge conflict

This commit is contained in:
Your Name 2016-03-22 15:16:21 +00:00
commit 1ce3f4bbac
92 changed files with 31933 additions and 1445 deletions

View 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>

View 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 &nbsp;(360 CHF)</h5>
<h5>&nbsp; +2 free working days included &nbsp;(0 CHF)</h5>
<div class="page-header text-muted">
<h5>Valid 01.01.2016 - 31.12.2016&nbsp;</h5>
<h5>Coworker Name&nbsp;: Nico Schottelius&nbsp;</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>

View 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>

View 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>

File diff suppressed because it is too large Load diff

View 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!&nbsp;</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&amp;q=50&amp;fm=jpg&amp;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&amp;q=50&amp;fm=jpg&amp;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>

View 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 */

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View 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>

View file

@ -1,5 +1,6 @@
from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool
from cms.wizards import wizard_base
from .models import DGGalleryPlugin, DGSupportersPlugin, Supporter
from django.utils.translation import ugettext as _
@ -29,5 +30,7 @@ class CMSSupportersPlugin(CMSPluginBase):
})
return context
plugin_pool.register_plugin(CMSGalleryPlugin)
plugin_pool.register_plugin(CMSSupportersPlugin)

View file

@ -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)),
],
),
]

View file

@ -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,
),
]

View file

@ -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),
),
]

View file

@ -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,),
),
]

View file

@ -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,
),
]

View file

@ -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,),
),
]

View file

@ -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,
),
]

View file

@ -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',),
),
]

View file

@ -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',
),
]

View file

@ -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),
),
]

Binary file not shown.

View file

@ -23,8 +23,10 @@
<link href="{% static 'digitalglarus/css/business-casual.css' %}" rel="stylesheet">
<!-- Fonts -->
<link href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic"
rel="stylesheet" type="text/css">
{% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
{% render_block "js" postprocessor "compressor.contrib.sekizai.compress" %}
@ -36,9 +38,16 @@
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-62285904-2', 'auto');
@ -57,7 +66,8 @@
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<button type="button" class="navbar-toggle" data-toggle="collapse"
data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
@ -73,9 +83,6 @@
{% show_menu_below_id "digital-glarus-page" 0 %}
<li>
<a href="{% url 'digitalglarus:supporters' %}">Supporters</a>
</li>
<li>
<a href="{% url 'digitalglarus:blog' %}">Blog</a>
</li>
</ul>
</div>
@ -93,7 +100,8 @@
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
<p class="text-center">Copyright &copy; <a href="http://www.ungleich.ch">ungleich GmbH 2015</a></p>
<p class="text-center">Copyright &copy; <a href="http://www.ungleich.ch">ungleich GmbH
2015</a></p>
</div>
</div>
</div>

View file

@ -10,7 +10,7 @@
<header>
<hr></hr>
<h2 class="text-center intro-text">
<a href="{% url 'digitalglarus:blog-detail' post.slug %}" class="post-title center-block">
<a href="{% url 'djangocms_blog:post-detail' post.slug %}" class="post-title center-block">
<b>{{ post.title }}</b>
</a>
<small>
@ -28,6 +28,6 @@
</p>
</div>
<div class="read-more">
<a class="lead" href="{% url 'digitalglarus:blog-detail' post.slug %}">{% trans "read more" %} &raquo;</a>
<a class="lead" href="{% url 'djangocms_blog:post-detail' post.slug %}">{% trans "read more" %} &raquo;</a>
</div>
</article>

View file

@ -7,6 +7,7 @@
{% block title %}{{ post.get_title }}{% endblock %}
{% block content_blog %}{% spaceless %}
{% debug %}
<article id="post-{{ post.slug }}" class="post-item post-detail">
{% if post.main_image_id %}
<div class="blog-visual">
@ -17,7 +18,7 @@
<header class="text-center">
<hr></hr>
<h2 class="text-center intro-text">
<a href="{% url 'digitalglarus:blog-detail' post.slug %}" class="post-title center-block">
<a href="{% url 'djangocms_blog:post-detail' post.slug %}" class="post-title center-block">
<b>{{ post.title }}</b>
</a>
<small>
@ -26,7 +27,7 @@
</h2>
<hr></hr>
{% block blog_meta %}
{# include "glarus_blog/includes/blog_meta.html" #}
include "glarus_blog/includes/blog_meta.html"
{% endblock %}
</header>
{% endspaceless %}

View file

@ -9,6 +9,7 @@ urlpatterns = [
url(r'old_letscowork$', views.letscowork, name='letscowork'),
url(r'old_home$', views.home, name='home'),
url(r'supporters/$', views.supporters, name='supporters'),
url(r'blog/$', views.blog, name='blog'),
url(r'^blog/(?P<slug>\w[-\w]*)/$', views.blog_detail, name='blog-detail'),
url(r'', views.index, name='index')
# url(r'blog/',views.blog,name='blog'),
# url(r'^blog/(?P<slug>\w[-\w]*)/$', views.blog_detail, name='blog-detail'),
]

View file

@ -6,6 +6,7 @@ from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.utils.translation import get_language
from djangocms_blog.models import Post
from django.core.urlresolvers import resolve
from .models import Message, Supporter

14938
dumpall-20160316-0200.sql Normal file

File diff suppressed because one or more lines are too long

View file

@ -46,7 +46,8 @@ SECRET_KEY = env('DJANGO_SECRET_KEY')
# Application definition
INSTALLED_APPS = (
'djangocms_admin_style',
#1st migrate
'membership',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
@ -54,46 +55,54 @@ INSTALLED_APPS = (
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'cms', # django CMS itself
'treebeard', # utilities for implementing a tree
'menus', # helper for model independent hierarchical website navigation
'sekizai', # for javascript and css management
# django-cms plugins
'djangocms_flash',
'djangocms_googlemap',
'djangocms_inherit',
'djangocms_link',
'djangocms_snippet',
'djangocms_teaser',
'djangocms_page_meta',
# django-filer
'cmsplugin_filer_file',
'cmsplugin_filer_folder',
'cmsplugin_filer_link',
'cmsplugin_filer_teaser',
'cmsplugin_filer_video',
# versioning
'reversion',
# ck-editor
'djangocms_text_ckeditor',
# djangocms-blog
'filer',
'easy_thumbnails',
'cmsplugin_filer_image',
'mptt',
'parler',
'taggit',
'taggit_autosuggest',
'django_select2',
'meta',
'meta_mixin',
# 'admin_enhancer',
'djangocms_blog',
'bootstrap3',
'compressor',
'filer',
'djangocms_blog',
'cms', # django CMS itself
'treebeard', # utilities for implementing a tree
'sekizai', # for javascript and css management
'menus', # helper for model independent hierarchical website navigation
'cmsplugin_filer_image',
#2nd migrate
# django-cms plugins
'djangocms_file',
'djangocms_picture',
'djangocms_video',
'djangocms_flash',
'djangocms_googlemap',
'djangocms_inherit',
'djangocms_link',
'djangocms_teaser',
'djangocms_page_meta',
'djangocms_text_ckeditor',
'djangocms_admin_style',
'cmsplugin_filer_file',
'cmsplugin_filer_folder',
'cmsplugin_filer_link',
'cmsplugin_filer_teaser',
'cmsplugin_filer_video',
#
#blog
# versioning
'reversion',
# ungleich
'ungleich',
'hosting',
'digitalglarus',
'django_extensions',
'debug_toolbar'
)
MIDDLEWARE_CLASSES = (
@ -117,7 +126,13 @@ ROOT_URLCONF = 'dynamicweb.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'DIRS': [
os.path.join(PROJECT_DIR, 'membership/'), # membership template
os.path.join(PROJECT_DIR, 'templates/'),
os.path.join(PROJECT_DIR, 'templates/digitalglarus/partials'),
os.path.join(PROJECT_DIR, 'templates/cms'),
os.path.join(PROJECT_DIR, 'templates/digitalglarus'),
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
@ -263,16 +278,14 @@ FILE_UPLOAD_PERMISSIONS = 0o644
META_SITE_PROTOCOL = 'http'
META_USE_SITES = True
MIGRATION_MODULES = {
'cms': 'cms.migrations',
# 'filer': 'filer.migrations_django',
'menus': 'menus.migrations_django',
# 'menus': 'menus.migrations_django',
'djangocms_flash': 'djangocms_flash.migrations_django',
'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
'djangocms_inherit': 'djangocms_inherit.migrations_django',
'djangocms_link': 'djangocms_link.migrations_django',
'djangocms_snippet': 'djangocms_snippet.migrations_django',
'djangocms_teaser': 'djangocms_teaser.migrations_django',
'djangocms_column': 'djangocms_column.migrations_django',
'djangocms_flash': 'djangocms_flash.migrations_django',
@ -295,9 +308,9 @@ STATICFILES_FINDERS = (
'compressor.finders.CompressorFinder',
)
COMPRESS_PRECOMPILERS = (
('text/less', 'lesscpy {infile}'),
)
#COMPRESS_PRECOMPILERS = (
# ('text/less', 'lesscpy {infile}'),
#)
THUMBNAIL_PROCESSORS = (
'easy_thumbnails.processors.colorspace',
@ -404,3 +417,20 @@ META_INCLUDE_KEYWORDS = ["ungleich", "hosting", "switzerland",
META_USE_SITES = True
PARLER_LANGUAGES = {1: ({'code': 'en-us'}, {'code': 'de'},)}
AUTH_USER_MODEL = 'membership.CustomUser'
# PAYMENT
STRIPE_API_PUBLIC_KEY = 'pk_test_uvWyHNJgVL2IB8kjfgJkGjg4' # used in frontend to call from user browser
STRIPE_API_PRIVATE_KEY = 'sk_test_uIPMdgXoRGydrcD7fkwcn7dj' # used in backend payment
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
# EMAIL MESSAGES
REGISTRATION_MESSAGE = {'subject': "Validation mail",
'message': 'Please validate Your account under this link http://localhost:8000/en-us/validate/{}',
'from': 'test@test.com'}
#dont migrate test
# SOUTH_TESTS_MIGRATE = False

View file

@ -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')),
)

View file

@ -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 = [

View 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
View file

3
membership/admin.py Normal file
View file

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

50
membership/forms.py Normal file
View 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()

View 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)),
],
),
]

View file

128
membership/models.py Normal file
View file

@ -0,0 +1,128 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User, AbstractBaseUser, BaseUserManager,AbstractUser
from django.contrib.auth.hashers import make_password
from django.core.mail import send_mail
from django.core.validators import RegexValidator
from django.contrib.auth.models import User
REGISTRATION_MESSAGE = {'subject': "Validation mail",
'message': 'Please validate Your account under this link http://localhost:8000/en-us/login/validate/{}',
'from': 'test@test.com'}
class MyUserManager(BaseUserManager):
def create_user(self, email, name, password=None):
"""
Creates and saves a User with the given email,name and password.
"""
if not email:
raise ValueError('Users must have an email address')
user = self.model(
email=self.normalize_email(email),
name=name,
validation_slug=make_password(None)
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, name, password):
"""
Creates and saves a superuser with the given email, name and password.
"""
user = self.create_user(email,
password=password,
name=name,
)
user.is_admin = True
user.save(using=self._db)
return user
class CustomUser(AbstractBaseUser):
VALIDATED_CHOICES = ((0, 'Not validated'), (1, 'Validated'))
name = models.CharField(max_length=50)
email = models.EmailField(unique=True)
validated = models.IntegerField(choices=VALIDATED_CHOICES, default=0)
validation_slug = models.CharField(db_index=True, unique=True, max_length=50)
is_staff = models.BooleanField(
_('staff status'),
default=False,
help_text=_('Designates whether the user can log into this admin site.'),
)
objects = MyUserManager()
USERNAME_FIELD = "email"
REQUIRED_FIELDS = ['name', 'password']
@classmethod
def register(cls, name, password, email):
user = cls.objects.filter(email=email).first()
if not user:
user = cls.objects.create_user(name=name, email=email, password=password)
if user:
send_mail(REGISTRATION_MESSAGE['subject'],
REGISTRATION_MESSAGE['message'].format(user.validation_slug),
REGISTRATION_MESSAGE['from'], [user.email], fail_silently=False)
return user
else:
return None
else:
return None
@classmethod
def validate_url(cls, validation_slug):
user = cls.objects.filter(validation_slug=validation_slug).first()
if user:
user.validated = 1
user.save()
return True
return False
def is_superuser(self):
return False
def is_admin(self):
return True
def get_full_name(self):
# The user is identified by their email address
return self.email
def get_short_name(self):
# The user is identified by their email address
return self.email
def __str__(self): # __unicode__ on Python 2
return self.email
def has_perm(self, perm, obj=None):
print(perm)
"Does the user have a specific permission?"
# Simplest possible answer: Yes, always
return True
def has_module_perms(self, app_label):
"Does the user have permissions to view the app `app_label`?"
# Simplest possible answer: Yes, always
return True
@property
def is_staff(self):
"Is the user a member of staff?"
# Simplest possible answer: All admins are staff
return self.is_admin
class CreditCards(models.Model):
name = models.CharField(max_length=50)
user_id = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
card_number = models.CharField(max_length=50)
expiry_date = models.CharField(max_length=50, validators=[RegexValidator(r'\d{2}\/\d{4}', _(
'Use this pattern(MM/YYYY).'))])
ccv = models.CharField(max_length=4,validators=[RegexValidator(r'\d{3,4}',_('Wrong CCV number.'))])
payment_type = models.CharField(max_length=5,default='N')

46
membership/payment.py Normal file
View 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

File diff suppressed because it is too large Load diff

View 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 */

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View 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>

View 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 &nbsp;({{ price }} CHF)</h5>
<h5>&nbsp; +{{ free }} free working days included &nbsp;(0 CHF)</h5>
<div class="page-header text-muted">
<h5>Valid 01.01.2016 - 31.12.2016&nbsp;</h5>
<h5>Coworker Name&nbsp;: {{ name }}&nbsp;</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>

View 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>

View 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>

View 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!&nbsp;</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&amp;q=50&amp;fm=jpg&amp;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&amp;q=50&amp;fm=jpg&amp;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>

View 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>

View 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>

View 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
View 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
View 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
View 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')

View file

@ -1,71 +1,47 @@
# django
django>=1.8
django-dotenv
django-parler
Django==1.9.4
aldryn-newsblog
wheel
django-bootstrap3
django_compressor
# django-cms + plugins
django-cms
djangocms-admin-style
djangocms-flash
djangocms-googlemap
djangocms-inherit
djangocms-link
djangocms-snippet
djangocms-teaser
djangocms-page-meta
cmsplugin-filer
django-reversion
djangocms-text-ckeditor
django-compressor
django-filter
django-taggit
django-taggit-autosuggest
django-taggit-templatetags
django-templatetag-sugar
django-model-utils
djangocms-blog
django-dotenv
psycopg2
django-mptt
easy_thumbnails
django-polymorphic
# lib
psycopg2>=2.6
# memcache
pylibmc
#PLUGINS
djangocms_flash
djangocms_googlemap
djangocms_inherit
djangocms_link
djangocms_teaser
djangocms_page_meta
djangocms_text_ckeditor
djangocms_file
djangocms_picture
djangocms_video
#PAYMENT
stripe
django-treebeard
django-sekizai
django-classy-tags
djangocms-admin-style
html5lib
six
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Optional, recommended packages
Pillow>=2
html5lib==0.999
six==1.3.0 #compat
python-memcached
# django-assets
lesscpy
# django apps
django-treebeard>=4.0
django-sekizai>=0.9
django-filer>=1.1.1
django-classy-tags>=0.7.1
# django-cms-plugins
djangocms-admin-style==0.2.5
django-select2>=4.3.1
djangocms-style
djangocms-column
djangocms-grid
djangocms-oembed
djangocms-table
# production
# circus-web
# chaussette
# meinheld
# python3 support
gevent>=1.1a2
django-filer
cmsplugin-filer
django-reversion
pylibmc

102
requirements_old.txt Normal file
View 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

View file

@ -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%;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

View file

@ -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

View file

@ -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;
});
}
});

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;

File diff suppressed because one or more lines are too long

View file

@ -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">

View file

@ -1,4 +1,4 @@
{% extends "cms/digitalglarus/base.html" %}
{% extends "digitalglarus/base.html" %}
{% load staticfiles cms_tags %}
{% block title %}crowdfunding{% endblock %}

View file

@ -18,9 +18,6 @@
<ul class="nav navbar-nav">
{% show_menu 0 0 0 1 %}
{% show_menu_below_id "digital-glarus-page" 0 %}
<li>
<a href="{% url 'digitalglarus:blog' %}">Blog</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->

View file

@ -4,8 +4,6 @@
<header class="intro-header"
{% if post.main_image_id %}
style="background-image: url('{{ post.main_image.url }}');"
{% else %}
style="background-image: url('{% static 'blog.ungleich.ch/img/home-bg.jpg' %}');"
{% endif %}
>
<div class="container">

View file

@ -1,5 +1,4 @@
{% load i18n thumbnail cms_tags %}
{% load url from future %}
<div class="post-preview">
<a href=" {{ post.get_absolute_url }} ">

View file

@ -1,21 +1,37 @@
{% extends "djangocms_blog/base.html" %}
{% extends "glarus_blog/base.html" %}
{% load i18n thumbnail cms_tags %}
{% load url from future %}
{% block meta_description %}{{ post.meta_description }}{% endblock meta_description %}
{% block meta_keywords %}{{ post.meta_keywords }}{% endblock meta_keywords %}
{% block canonical_url %}<link rel="canonical" href="{{ SITE.domain }}{{ view.get_view_url }}"/>{% endblock canonical_url %}
{% block title %}{% page_attribute "page_title" %} - {{ post.get_title }}{% endblock %}
<!-- page header -->
{% block base_header %}
{% include "djangocms_blog/_header_post_detail.html" %}
{% endblock %}
<!-- page header -->
{% block content_blog %}
<article>
{% if use_placeholder %}
<div class="blog-content">{% render_placeholder post.content %}</div>
{% else %}
<div class="blog-content">{% render_model post "post_text" "post_text" %}</div>
{% block canonical_url %}
<link rel="canonical" href="{{ SITE.domain }}{{ view.get_view_url }}"/>{% endblock canonical_url %}
{% block title %}{{ post.get_title }}{% endblock %}
{% block content_blog %}{% spaceless %}
<article id="post-{{ post.slug }}" class="post-item post-detail">
{% if post.main_image_id %}
<div class="blog-visual">
{% thumbnail post.main_image post.full_image_options.size crop=post.full_image_options.crop upscale=post.full_image_options.upscale subject_location=post.main_image.subject_location as thumb %}
<img src="{{ post.main_image.url }}" alt="{{ post.main_image.default_alt_text }}"
class="img-responsive img-full"/>
</div>
{% endif %}
<header class="text-center">
<hr></hr>
<h2 class="text-center intro-text">
<a href="{% url 'djangocms_blog:post-detail' post.slug %}" class="post-title center-block">
<b>{{ post.title }}</b>
</a>
<small>
{{ post.date_created }}
</small>
</h2>
<hr></hr>
{# {% block blog_meta %}#}
{# include "glarus_blog/includes/blog_meta.html"#}
{# {% endblock %}#}
</header>
{% endspaceless %}
<div class="digitalglarus-blog-content">{{ post.abstract| safe }}</div>
</article>
{% endblock content_blog %}

View file

@ -1,4 +1,4 @@
{% extends "djangocms_blog/base.html" %}
{% extends "glarus_blog/base.html" %}
{% load i18n thumbnail %}{% spaceless %}
{% block canonical_url %}<link rel="canonical" href="{{ SITE.domain }}{{ view.get_view_url }}"/>{% endblock canonical_url %}
@ -7,40 +7,28 @@
<section class="blog-list">
{% block blog_title %}
<header>
<h2>
{% if author %}{% trans "Articles by" %} {{ author.get_full_name }}
{% elif archive_date %}{% trans "Archive" %} &ndash; {% if month %}{{ archive_date|date:'F' }} {% endif %}{{ year }}
{% elif tagged_entries %}{% trans "Tag" %} &ndash; {{ tagged_entries|capfirst }}
{% elif category %}{% trans "Category" %} &ndash; {{ category }}{% endif %}
</h2>
</header>
{% endblock %}
{% for post in post_list %}
{% include "djangocms_blog/includes/blog_item.html" with post=post image="true" TRUNCWORDS_COUNT=TRUNCWORDS_COUNT %}
{% include "glarus_blog/includes/blog_item.html" with post=post image="true" TRUNCWORDS_COUNT=TRUNCWORDS_COUNT %}
{% empty %}
<p class="blog-empty">{% trans "No article found." %}</p>
<p class="blog-empty text-center lead">{% trans "No article found." %}</p>
{% endfor %}
{% if author or archive_date or tagged_entries %}
<p class="blog-back"><a href="{% url 'djangocms_blog:posts-latest' %}">{% trans "Back" %}</a></p>
{% endif %}
{% if is_paginated %}
<!-- Pager -->
<ul class="pager">
<nav class="{% firstof css_grid instance.css_grid %} pagination">
{% if page_obj.has_previous %}
<li class="previous">
<a href="?{{ view.page_kwarg }}={{ page_obj.previous_page_number }}">
&laquo; {% trans "Newer Posts" %}
</a>
</li>
<a href="?{{ view.page_kwarg }}={{ page_obj.previous_page_number }}">&laquo; {% trans "previous" %}</a>
{% endif %}
<span class="current">
{% trans "Page" %} {{ page_obj.number }} {% trans "of" %} {{ paginator.num_pages }}
</span>
{% if page_obj.has_next %}
<li class="next">
<a href="?{{ view.page_kwarg }}={{ page_obj.next_page_number }}">
{% trans "Older Posts" %} &rarr;
</a>
</li>
<a href="?{{ view.page_kwarg }}={{ page_obj.next_page_number }}">{% trans "next" %} &raquo;</a>
{% endif %}
</ul>
</nav>
{% endif %}
</section>
{% endblock %}