copy PricingView
This commit is contained in:
parent
2ead42bd1a
commit
515cbff001
5 changed files with 205 additions and 105 deletions
|
@ -1,5 +1,7 @@
|
||||||
|
{% load staticfiles i18n%}
|
||||||
|
{% get_current_language as LANGUAGE_CODE %}
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="{{LANGUAGE_CODE}}">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
|
|
||||||
|
@ -9,19 +11,24 @@
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
<meta name="author" content="">
|
<meta name="author" content="">
|
||||||
|
|
||||||
<title>Rails Hosting.ch - Ruby on Rails as easy as possible</title>
|
<title>datacenterlight.ch - Featherlight Swiss VM</title>
|
||||||
|
|
||||||
<!-- Bootstrap Core CSS -->
|
<!-- Bootstrap Core CSS -->
|
||||||
<link href="css/bootstrap.min.css" rel="stylesheet">
|
<link href="{% static 'datacenterlight/css/bootstrap.min.css' %}" rel="stylesheet">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Custom CSS -->
|
|
||||||
<link href="css/landing-page.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom Fonts -->
|
<!-- Custom Fonts -->
|
||||||
<link href='http://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
|
<!--Import Google Icon Font-->
|
||||||
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
<link href="//fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||||
<link href="http://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
|
<link href="{% static 'datacenterlight/font-awesome/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css">
|
||||||
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
|
<link href="//fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
|
||||||
|
<link rel="shortcut icon" href="{% static 'datacenterlight/img/favicon.ico' %}" type="image/x-icon" />
|
||||||
|
<link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/bootstrap-select.min.css" rel="stylesheet">
|
||||||
|
|
||||||
|
<!-- Custom CSS -->
|
||||||
|
<link href="{% static 'datacenterlight/css/landing-page.css' %}" rel="stylesheet">
|
||||||
|
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||||
|
@ -36,7 +43,7 @@
|
||||||
|
|
||||||
<!-- Navigation -->
|
<!-- Navigation -->
|
||||||
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
|
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
|
||||||
<div class="container topnav">
|
<div class="topnav">
|
||||||
<!-- Brand and toggle get grouped for better mobile display -->
|
<!-- Brand and toggle get grouped for better mobile display -->
|
||||||
<div class="navbar-header">
|
<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">
|
||||||
|
@ -45,109 +52,134 @@
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand topnav" href="#"><img src="img/logo_black.svg"></a>
|
<a id="logoBlack" class="navbar-brand topnav url" href="{% url 'datacenterlight:index' %}" ><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a>
|
||||||
|
<a id="logoWhite" class="navbar-brand topnav url" href="{% url 'datacenterlight:index' %}" ><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a>
|
||||||
</div>
|
</div>
|
||||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
<li>
|
<!-- <li>
|
||||||
<a href="#how">How it works</a>
|
<a class="url" href="javascript:void(0)" data-url="#how" >{% trans "What is it" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#your">Your infrastructure</a>
|
<a class="url" href="javascript:void(0)" data-url="#your" >{% trans "Scale out" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#our">Our inftrastructure</a>
|
<a class="url" href="javascript:void(0)" data-url="#our">{% trans "Reliable and light" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#price">Pricing</a>
|
<a class="url" href="javascript:void(0)" data-url="#price" >{% trans "Buy VM" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#contact">Contact</a>
|
<a class="url" href="javascript:void(0)" data-url="#contact" >{% trans "Contact" %}</a>
|
||||||
</li>
|
</li> -->
|
||||||
|
|
||||||
|
<select class="selectpicker" data-width="fit" onchange="location = this.value;" style="margin-top:10px;">
|
||||||
|
{% if LANGUAGE_CODE == 'en-us'%}
|
||||||
|
<option selected="selected" value="{{base_url}}/en-us/datacenterlight/">English</option>
|
||||||
|
{% else %}
|
||||||
|
<option value="{{base_url}}/en-us/datacenterlight/">English</option>
|
||||||
|
{% endif %}
|
||||||
|
{% if LANGUAGE_CODE == 'de'%}
|
||||||
|
<option selected="selected" value="{{base_url}}/de/datacenterlight/">Deutsch</option>
|
||||||
|
{% else %}
|
||||||
|
<option value="{{base_url}}/de/datacenterlight/">Deutsch</option>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</select>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- /.navbar-collapse -->
|
<!-- /.navbar-collapse -->
|
||||||
</div>
|
</div>
|
||||||
<!-- /.container -->
|
<!-- /.container -->
|
||||||
</nav>
|
</nav>
|
||||||
|
<div class="intro-pricing">
|
||||||
|
|
||||||
|
<div class="intro-message">
|
||||||
<!-- Header -->
|
<h2 class="section-heading">{% trans "We are cutting down the costs significantly!" %}</h2>
|
||||||
<a name="about"></a>
|
|
||||||
<div class="intro-header">
|
|
||||||
<div class="container">
|
|
||||||
<div class="col-md-4"> </div><div class="col-md-4">
|
|
||||||
|
|
||||||
<div class="intro-message">
|
|
||||||
<p><img class="responsive" src="img/Beta.png"></p>
|
|
||||||
<h2>Order Now </h2>
|
|
||||||
<p> </p>
|
|
||||||
<!--Location button-->
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="button">Loation<br></label>
|
|
||||||
<div class="btn-group">
|
|
||||||
<button type="button" class="btn btn-default">Switzerland</button>
|
|
||||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
||||||
<span class="caret"></span>
|
|
||||||
<span class="sr-only">Location</span>
|
|
||||||
</button>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="#">Germany</a></li>
|
|
||||||
<li><a href="#">Switzerland</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!--/Location button-->
|
|
||||||
<p> </p>
|
|
||||||
<!--Configuration button-->
|
|
||||||
<form>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="button">Configuration<br></label>
|
|
||||||
<div class="btn-group">
|
|
||||||
<button type="button" class="btn btn-default">Ruby On Rails on Debian 7</button>
|
|
||||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
||||||
<span class="caret"></span>
|
|
||||||
<span class="sr-only">Configuration</span>
|
|
||||||
</button>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="#">Ruby On Rails on Debian 7</a></li>
|
|
||||||
<li><a href="#">Ubuntu 14.04</a></li>
|
|
||||||
<li><a href="#">Debian 7</a></li>
|
|
||||||
<li><a href="#">CentOS 7</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<p>VM size sliders to be inserted</p>
|
|
||||||
<!--/Configuration button-->
|
|
||||||
<form>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="exampleInputEmail1"><br>
|
|
||||||
Email address</label>
|
|
||||||
<input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="exampleInputPassword1">Password</label>
|
|
||||||
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
|
|
||||||
</div>
|
|
||||||
<div class>
|
|
||||||
<p><a href="#" id="forgotpassword">
|
|
||||||
Forgot password?</a>
|
|
||||||
</p>
|
|
||||||
<p> </p>
|
|
||||||
</div>
|
|
||||||
<button type="submit" class="btn btn-default">Order</button>
|
|
||||||
</form></p>
|
|
||||||
<ul class="list-inline intro-social-buttons">
|
|
||||||
|
|
||||||
</ul></div> <div class="col-md-4"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- /.container -->
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- /.intro-header -->
|
|
||||||
|
<div class="price-calc-section">
|
||||||
|
<div class="card">
|
||||||
|
<img class="img-beta" src="{% static 'datacenterlight/img/beta-img.png' %}" alt="">
|
||||||
|
<div class="caption">
|
||||||
|
<form method="POST" action="">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
|
<div class="title">
|
||||||
|
<h3>{% trans "VM hosting" %} </h3>
|
||||||
|
</div>
|
||||||
|
<div class="price">
|
||||||
|
<span id="total">15</span>
|
||||||
|
<span>CHF</span>
|
||||||
|
</div>
|
||||||
|
<div class="descriptions">
|
||||||
|
<div class="description">
|
||||||
|
<p>{% trans "Hosted in Switzerland" %}</p>
|
||||||
|
</div>
|
||||||
|
<div class="description">
|
||||||
|
<i class="fa fa-minus-circle left" data-minus="cpu" aria-hidden="true"></i>
|
||||||
|
<input class="input-price" type="number" min="1" max="42" id="coreValue" name="cpu">
|
||||||
|
<span> Core</span>
|
||||||
|
<i class="fa fa-plus-circle right" data-plus="cpu" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
<div class="description">
|
||||||
|
<i class="fa fa-minus-circle left" data-minus="ram" aria-hidden="true"></i>
|
||||||
|
<input id="ramValue" class="input-price" type="number" min="2" max="200" name="ram">
|
||||||
|
<span> GB RAM</span>
|
||||||
|
<i class="fa fa-plus-circle right" data-plus="ram" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
<div class="description">
|
||||||
|
<i class="fa fa-minus-circle left" data-minus="storage" aria-hidden="true"></i>
|
||||||
|
<input id="storageValue" class="input-price" type="number" min="10" max="500" step="10" name="storage">
|
||||||
|
<span>{% trans "GB Storage (SSD)" %}</span>
|
||||||
|
<i class="fa fa-plus-circle right" data-plus="storage" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="description select-configuration input">
|
||||||
|
<label for="config">OS</label>
|
||||||
|
<select name="config" id="">
|
||||||
|
{% for template in templates %}
|
||||||
|
<option value="{{template.id}}">{{template.name}} </option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="total">
|
||||||
|
<!--<div class="description check-ip">
|
||||||
|
<input type="checkbox" name="ipv6"> Ipv6 Only<br>
|
||||||
|
</div>-->
|
||||||
|
|
||||||
|
<div class="description input">
|
||||||
|
<label for="name">Name</label>
|
||||||
|
<input type="text" name="name" placeholder="Your Name">
|
||||||
|
</div>
|
||||||
|
<div class="description input">
|
||||||
|
<label for="email">Email</label>
|
||||||
|
<input type="email" name="email" placeholder="Your Email">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="submit" class="btn btn-primary" value="{% trans 'Order Now!' %}"></input>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text">
|
||||||
|
<h2 class="section-heading">{% trans "Simple and affordable: Try our virtual machine with featherlight price." %}</h2>
|
||||||
|
|
||||||
|
<div class="description">
|
||||||
|
<p>Our VMs are hosted in Glarus, Switzerland. WARNING: We are currently running in BETA mode, especially our website We hope you will not encounter any hiccups, but if you, please let us know at support@datacenterlight.ch</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- /.banner -->
|
||||||
|
|
||||||
<!-- Footer -->
|
<!-- Footer -->
|
||||||
<footer>
|
<footer>
|
||||||
|
@ -156,37 +188,56 @@
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<ul class="list-inline">
|
<ul class="list-inline">
|
||||||
<li>
|
<li>
|
||||||
<a href="#">Home</a>
|
<a href="#">{% trans "Home" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="footer-menu-divider">⋅</li>
|
<li class="footer-menu-divider">⋅</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#about">How it works</a></li>
|
<a href="#about">{% trans "How it works" %}</a></li>
|
||||||
<li class="footer-menu-divider">⋅</li>
|
<li class="footer-menu-divider">⋅</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#about">Your infrastructure</a></li>
|
<a href="#about">{% trans "Scale out" %}</a></li>
|
||||||
<li>⋅</li>
|
<li>⋅</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#about">Our infrastructure</a></li>
|
<a href="#about">{% trans "Reliable and light" %}</a></li>
|
||||||
<li class="footer-menu-divider">⋅</li>
|
<li class="footer-menu-divider">⋅</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#services">Pricing</a>
|
<a href="#services">{% trans "Pricing" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="footer-menu-divider">⋅</li>
|
<li class="footer-menu-divider">⋅</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#contact">Contact</a>
|
<a href="#contact">{% trans "Contact" %}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p class="copyright text-muted small">Copyright © ungleich GmbH 2015. All Rights Reserved</p>
|
<p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<!-- jQuery -->
|
<!-- jQuery -->
|
||||||
<script src="js/jquery.js"></script>
|
<script src="{% static 'datacenterlight/js/jquery.js' %}"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
window.onload=function(){
|
||||||
|
$('.selectpicker').selectpicker({
|
||||||
|
style: 'btn-link',
|
||||||
|
windowPadding: 10,
|
||||||
|
});
|
||||||
|
|
||||||
|
var hash = window.location.hash.substr(1);
|
||||||
|
console.log(hash);
|
||||||
|
if (hash == 'requestform'){
|
||||||
|
$('#reques-success-message').modal('show');
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/bootstrap-select.js"></script>
|
||||||
|
|
||||||
<!-- Bootstrap Core JavaScript -->
|
<!-- Bootstrap Core JavaScript -->
|
||||||
<script src="js/bootstrap.min.js"></script>
|
<script src="{% static 'datacenterlight/js/bootstrap.min.js' %}"></script>
|
||||||
|
<script src="{% static 'datacenterlight/js/main.js' %}"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% load staticfiles i18n%}
|
{% load staticfiles i18n%}
|
||||||
{% get_current_language as LANGUAGE_CODE %}
|
{% get_current_language as LANGUAGE_CODE %}
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="{{LANGUAGE_CODE}}">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% load staticfiles i18n%}
|
{% load staticfiles i18n%}
|
||||||
{% get_current_language as LANGUAGE_CODE %}
|
{% get_current_language as LANGUAGE_CODE %}
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="{{LANGUAGE_CODE}}">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
|
|
||||||
from .views import IndexView, BetaProgramView, LandingProgramView, BetaAccessView, PricingView, SuccessView
|
from .views import IndexView, BetaProgramView, LandingProgramView, BetaAccessView, PricingView, SuccessView, OrderView
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
@ -8,6 +8,7 @@ urlpatterns = [
|
||||||
url(r'^/beta-program/?$', BetaProgramView.as_view(), name='beta'),
|
url(r'^/beta-program/?$', BetaProgramView.as_view(), name='beta'),
|
||||||
url(r'^/landing/?$', LandingProgramView.as_view(), name='landing'),
|
url(r'^/landing/?$', LandingProgramView.as_view(), name='landing'),
|
||||||
url(r'^/pricing/?$', PricingView.as_view(), name='pricing'),
|
url(r'^/pricing/?$', PricingView.as_view(), name='pricing'),
|
||||||
url(r'^/pricing-success/?$', SuccessView.as_view(), name='success'),
|
url(r'^/order/?$', OrderView.as_view(), name='order'),
|
||||||
|
url(r'^/order-success/?$', SuccessView.as_view(), name='success'),
|
||||||
url(r'^/beta_access?$', BetaAccessView.as_view(), name='beta_access'),
|
url(r'^/beta_access?$', BetaAccessView.as_view(), name='beta_access'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -66,6 +66,54 @@ class PricingView(TemplateView):
|
||||||
|
|
||||||
return redirect(reverse('hosting:payment'))
|
return redirect(reverse('hosting:payment'))
|
||||||
|
|
||||||
|
class OrderView(TemplateView):
|
||||||
|
template_name = "datacenterlight/order.html"
|
||||||
|
|
||||||
|
def get(self, request, *args, **kwargs):
|
||||||
|
try:
|
||||||
|
manager = OpenNebulaManager()
|
||||||
|
templates = manager.get_templates()
|
||||||
|
|
||||||
|
context = {
|
||||||
|
'templates': VirtualMachineTemplateSerializer(templates, many=True).data,
|
||||||
|
}
|
||||||
|
except:
|
||||||
|
messages.error( request,
|
||||||
|
'We could not load the VM templates due to a backend connection \
|
||||||
|
error. Please try again in a few minutes'
|
||||||
|
)
|
||||||
|
context = {
|
||||||
|
'error' : 'connection'
|
||||||
|
}
|
||||||
|
|
||||||
|
return render(request, self.template_name, context)
|
||||||
|
|
||||||
|
|
||||||
|
def post(self, request):
|
||||||
|
|
||||||
|
cores = request.POST.get('cpu')
|
||||||
|
memory = request.POST.get('ram')
|
||||||
|
storage = request.POST.get('storage')
|
||||||
|
price = request.POST.get('total')
|
||||||
|
|
||||||
|
template_id = int(request.POST.get('config'))
|
||||||
|
|
||||||
|
manager = OpenNebulaManager()
|
||||||
|
template = manager.get_template(template_id)
|
||||||
|
|
||||||
|
request.session['template'] = VirtualMachineTemplateSerializer(template).data
|
||||||
|
|
||||||
|
if not request.user.is_authenticated():
|
||||||
|
request.session['next'] = reverse('hosting:payment')
|
||||||
|
|
||||||
|
request.session['specs'] = {
|
||||||
|
'cpu':cores,
|
||||||
|
'memory': memory,
|
||||||
|
'disk_size': storage,
|
||||||
|
'price': price,
|
||||||
|
}
|
||||||
|
|
||||||
|
return redirect(reverse('hosting:payment'))
|
||||||
|
|
||||||
class BetaAccessView(FormView):
|
class BetaAccessView(FormView):
|
||||||
template_name = "datacenterlight/beta_access.html"
|
template_name = "datacenterlight/beta_access.html"
|
||||||
|
|
Loading…
Reference in a new issue