Merge branch 'master' into bug/3313/pwd_reset_email_from_dcl_support

This commit is contained in:
Levi Velázquez 2017-06-15 01:17:14 -05:00 committed by GitHub
commit 657e93862d
99 changed files with 1282 additions and 1811 deletions

1
.gitignore vendored
View File

@ -34,3 +34,4 @@ secret-key
.idea/
.env
*.mo

View File

@ -1,3 +1,22 @@
1.0.16: 2017-06-15
* [datacenterlight] .po file issue with multiple definition fixed
* [datacenterlight] Navbar items in dcl user area rearranged
* [datacenterlight] Typos in german fixed (#3364)
* [datacenterlight] Added "VAT included" text in calculator box
1.0.15: 2017-06-14
* [datacenterlight] Fixed error trying to delete ssh key
* [datacenterlight] Fixed footer links
* [datacenterlight] Fixed some styles on landing
1.0.14: 2017-06-14
* [all] Added deploy.sh
* [all] Removed .mo files and updated .gitignore
1.0.13: 2017-06-13
* [datacenterlight] Added translations for email and name placeholders fields
1.0.12: 2017-06-13
* [datacenterlight] Added from address for EmailMessage that was missing
1.0.11: 2017-06-12
* [datacenterlight] month added to landing calculator box
* [datacenterlight] dcl_email from address fixed to come from support@dcl
1.0.10: 2017-06-11
* [datacenterlight] Send plain text email only for new orders
1.0.9: 2017-06-11
@ -31,3 +50,7 @@
* [datacenterlight] Fix initially shown price
1.0.0: 2017-05-25
* Initial stable release
Next:
[datacenterlight] Fixed error trying to delete ssh key
[datacenterlight] Fixed footer links

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-11 17:42+0530\n"
"POT-Creation-Date: 2017-06-14 17:33-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -30,11 +30,11 @@ msgstr "E-Mail-Adresse"
msgid "Request Beta Access"
msgstr "Beantrage Beta-Zugang"
#: templates/datacenterlight/beta_success.html:9
#: templates/datacenterlight/beta_success.html:10
msgid "Request Sent"
msgstr "Anfrage verschickt"
#: templates/datacenterlight/beta_success.html:12
#: templates/datacenterlight/beta_success.html:13
msgid ""
"Thank you for your subscription! You will receive a confirmation mail from "
"our team"
@ -75,178 +75,187 @@ msgstr ""
msgid "Thank you!"
msgstr "Vielen Dank!"
#: templates/datacenterlight/index.html:62
#: templates/datacenterlight/index.html:160
#: templates/datacenterlight/index.html:383
#: templates/datacenterlight/order.html:24
#: templates/datacenterlight/order.html:165
#: templates/datacenterlight/pricing.html:62
#: templates/datacenterlight/pricing.html:190
#: templates/datacenterlight/success.html:23
msgid "What is it"
msgstr "Was ist es?"
#: templates/datacenterlight/includes/_footer.html:11
#: templates/datacenterlight/includes/_footer.html:31
#: templates/datacenterlight/includes/_navbar.html:27
#: templates/datacenterlight/index.html:20
#: templates/datacenterlight/index.html:47
msgid "Highlights"
msgstr ""
#: templates/datacenterlight/index.html:65
#: templates/datacenterlight/index.html:189
#: templates/datacenterlight/index.html:386
#: templates/datacenterlight/order.html:27
#: templates/datacenterlight/order.html:168
#: templates/datacenterlight/pricing.html:65
#: templates/datacenterlight/pricing.html:193
#: templates/datacenterlight/success.html:26
#: templates/datacenterlight/includes/_footer.html:14
#: templates/datacenterlight/includes/_footer.html:34
#: templates/datacenterlight/includes/_navbar.html:30
#: templates/datacenterlight/index.html:86
msgid "Scale out"
msgstr "Skalierung"
#: templates/datacenterlight/index.html:68
#: templates/datacenterlight/index.html:215
#: templates/datacenterlight/index.html:389
#: templates/datacenterlight/order.html:30
#: templates/datacenterlight/order.html:171
#: templates/datacenterlight/pricing.html:68
#: templates/datacenterlight/pricing.html:196
#: templates/datacenterlight/success.html:29
#: templates/datacenterlight/includes/_footer.html:17
#: templates/datacenterlight/includes/_footer.html:37
#: templates/datacenterlight/includes/_navbar.html:33
#: templates/datacenterlight/index.html:112
msgid "Reliable and light"
msgstr "Zuverlässig und leicht"
#: templates/datacenterlight/index.html:71
#: templates/datacenterlight/includes/_footer.html:20
#: templates/datacenterlight/includes/_navbar.html:36
msgid "Order VM"
msgstr "VM bestellen"
#: templates/datacenterlight/index.html:74
#: templates/datacenterlight/index.html:396
#: templates/datacenterlight/order.html:36
#: templates/datacenterlight/order.html:178
#: templates/datacenterlight/pricing.html:74
#: templates/datacenterlight/pricing.html:203
#: templates/datacenterlight/success.html:35
#: templates/datacenterlight/includes/_footer.html:23
#: templates/datacenterlight/includes/_footer.html:44
#: templates/datacenterlight/includes/_navbar.html:39
msgid "Contact"
msgstr "Kontakt"
#: templates/datacenterlight/index.html:127
#: templates/datacenterlight/includes/_footer.html:27
msgid "Home"
msgstr "Home"
#: templates/datacenterlight/includes/_footer.html:40
msgid "Pricing"
msgstr "Preise"
#: templates/datacenterlight/index.html:16
msgid "Finally, an affordable VM hosting in Switzerland!"
msgstr "Endlich: bezahlbares VM Hosting in der Schweiz"
#: templates/datacenterlight/index.html:131
msgid "What is it?"
msgstr "Was ist es?"
#: templates/datacenterlight/index.html:134
#: templates/datacenterlight/index.html:23
msgid "I want it!"
msgstr "Das will ich haben!"
#: templates/datacenterlight/index.html:165
msgid "Reuse existing factory halls intead of building an expensive building."
#: templates/datacenterlight/index.html:53
msgid ""
"Reuses existing factory halls instead of building a new expensive building."
msgstr ""
"Nachhaltigkeit: Wiederverwendung ehemaliger Fabrikhallen an Stelle der "
"Errichtung eines neuen Gebäudes"
"Verwendet ehemalige Fabrikhallen anstatt ein neues, teures Gebäude zu "
"errichten."
#: templates/datacenterlight/index.html:168
msgid "Being creative, using modern and alternative design for a datacenter."
#: templates/datacenterlight/index.html:58
msgid "Only wants you to pay for what you actually need."
msgstr ""
"Kreativität: Verwendung eines modernen und alternativen Designs für unser "
"Datencenter"
"Möchte, dass du nur bezahlst, was du auch wirklich brauchst: Wähle deine "
"Ressourcen individuell aus!"
#: templates/datacenterlight/index.html:170
msgid "Being open: Using FOSS exclusively, we can save money for licenses."
#: templates/datacenterlight/index.html:62
msgid ""
"Is creative, using a modern and alternative design for a data center in "
"order to make it more sustainable and affordable at the same time."
msgstr ""
"Offene Verfahrensweise: Die Benutzung eines eigenen Frameworks, FOSS, "
"erspart Lizenzgebühren"
"Ist kreativ, indem es sich ein modernes und alternatives Layout zu Nutze "
"macht um Nachhaltigkeit zu fördern und somit erschwingliche Preise bieten zu "
"können."
#: templates/datacenterlight/index.html:192
#: templates/datacenterlight/index.html:66
msgid ""
"Cuts down the costs for you by using FOSS (Free Open Source Software) "
"exclusively, wherefore we can save money from paying licenses."
msgstr ""
"Sorgt dafür, dass unnötige Kosten erspart werden, indem es ausschliesslich "
"mit FOSS (Free Open Source Software) arbeitet und wir daher auf "
"Lizenzgebühren verzichten können."
#: templates/datacenterlight/index.html:89
msgid ""
"We don't use special hardware. We use commodity hardware: we buy computers "
"that you buy. Just many more and put them in a cozy home for computers "
"called data center."
msgstr ""
"Wir benutzen keine spezielle Hardware, sondern am Markt verfügbare, "
"erschwingliche Systeme. Bei grösserer Auslastung werden mehr Standard "
"komponenten hinzugekauft und skalieren so das Datencenter."
"erschwingliche Systeme. Bei grösserer Auslastung werden mehr "
"Standardkomponenten hinzugekauft und skalieren so das Datencenter."
#: templates/datacenterlight/index.html:218
#: templates/datacenterlight/index.html:115
msgid ""
"Our VMs are located in Switzerland, with reliable power supply and fast "
"internet connection. Our VM costs less thanks to our featherlight "
"infrastructure."
msgstr ""
"Unser Datacenter befindet sich in der Schweiz und ist mit zuverlässiger "
"Energieversorgung sowie schneller Internetverbindung ausgestattet. Unser "
"Energieversorgung, sowie schneller Internetverbindung ausgestattet. Unser "
"Angebot ist aufgrund unserer leichten Infrastruktur überaus kostengünstig."
#: templates/datacenterlight/index.html:236
#: templates/datacenterlight/order.html:143
#: templates/datacenterlight/pricing.html:168
#: templates/datacenterlight/index.html:133
#: templates/datacenterlight/order.html:87
#: templates/datacenterlight/pricing.html:86
msgid "Simple and affordable: Try our virtual machine with featherlight price."
msgstr "Einfach und bezahlbar: Teste nun unsere virtuellen Maschinen mit federleichten Preisen."
msgstr ""
"Einfach und bezahlbar: Teste nun unsere virtuellen Maschinen mit "
"federleichten Preisen."
#: templates/datacenterlight/index.html:237
#: templates/datacenterlight/index.html:134
msgid "Affordable VM hosting based in Switzerland"
msgstr "Bezahlbares VM Hosting in der Schweiz"
#: templates/datacenterlight/index.html:248
#: templates/datacenterlight/order.html:81
#: templates/datacenterlight/pricing.html:119
#: templates/datacenterlight/index.html:145
#: templates/datacenterlight/order.html:22
#: templates/datacenterlight/pricing.html:22
msgid "VM hosting"
msgstr "VM Hosting"
msgstr ""
#: templates/datacenterlight/index.html:256
#: templates/datacenterlight/order.html:89
#: templates/datacenterlight/pricing.html:127
#: templates/datacenterlight/index.html:149
msgid "month"
msgstr "Monat"
#: templates/datacenterlight/index.html:151
#: templates/datacenterlight/order.html:28
#: templates/datacenterlight/pricing.html:28
msgid "VAT included"
msgstr "MwSt. inklusive"
#: templates/datacenterlight/index.html:156
#: templates/datacenterlight/order.html:33
#: templates/datacenterlight/pricing.html:33
msgid "Hosted in Switzerland"
msgstr "Standort des Datacenters ist in der Schweiz"
msgstr "Standort: Schweiz"
#: templates/datacenterlight/index.html:273
#: templates/datacenterlight/order.html:106
#: templates/datacenterlight/pricing.html:144
#: templates/datacenterlight/index.html:173
#: templates/datacenterlight/order.html:50
#: templates/datacenterlight/pricing.html:50
msgid "GB Storage (SSD)"
msgstr "GB Storage (SSD)"
#: templates/datacenterlight/index.html:297
#: templates/datacenterlight/order.html:133
#: templates/datacenterlight/pricing.html:161
#: templates/datacenterlight/index.html:189
msgid "Name"
msgstr ""
#: templates/datacenterlight/index.html:190
msgid "Your Name"
msgstr "Dein Name"
#: templates/datacenterlight/index.html:193
msgid "Email"
msgstr "E-Mail-Adresse"
#: templates/datacenterlight/index.html:194
msgid "Your Email"
msgstr "Deine E-Mail"
#: templates/datacenterlight/index.html:197
#: templates/datacenterlight/order.html:77
#: templates/datacenterlight/pricing.html:79
msgid "Order Now!"
msgstr "Bestelle jetzt!"
#: templates/datacenterlight/index.html:317
msgid "I want to have it!"
msgstr "Das möchte ich haben!"
#: templates/datacenterlight/index.html:344
#: templates/datacenterlight/index.html:226
msgid "Switzerland "
msgstr "Schweiz"
#: templates/datacenterlight/index.html:361
#: templates/datacenterlight/index.html:243
msgid "Questions?"
msgstr "Fragen?"
#: templates/datacenterlight/index.html:361
#: templates/datacenterlight/index.html:243
msgid "Contact us!"
msgstr "Kontaktiere uns!"
#: templates/datacenterlight/index.html:379
#: templates/datacenterlight/order.html:161
#: templates/datacenterlight/pricing.html:186
msgid "Home"
msgstr "Home"
#: templates/datacenterlight/index.html:392
#: templates/datacenterlight/order.html:174
#: templates/datacenterlight/pricing.html:199
msgid "Pricing"
msgstr "Preise"
#: templates/datacenterlight/order.html:33
#: templates/datacenterlight/pricing.html:71
#: templates/datacenterlight/success.html:32
msgid "Buy VM"
msgstr "VM Kaufen"
#: templates/datacenterlight/order.html:68
#: templates/datacenterlight/pricing.html:106
#: templates/datacenterlight/order.html:9
#: templates/datacenterlight/pricing.html:9
msgid "We are cutting down the costs significantly!"
msgstr "Wir sorgen dafür, dass die Kosten für Sie signifikant abnehmen"
msgstr "Wir sorgen dafür, dass die Kosten für Dich signifikant abnehmen"
#: templates/datacenterlight/order.html:146
#: templates/datacenterlight/pricing.html:171
#: templates/datacenterlight/order.html:90
#: templates/datacenterlight/pricing.html:89
msgid ""
"Our VMs are hosted in Glarus, Switzerland, and our website is currently "
"running in BETA mode. If you want more information that you did not find on "
@ -262,34 +271,60 @@ msgstr ""
"uns unter support@datacenterlight.ch. Unser Team wird sich umgehend um dein "
"Anliegen kümmern!"
#: templates/datacenterlight/success.html:62
#: templates/datacenterlight/success.html:8
msgid "Thank you for order! Our team will contact you via email"
msgstr ""
"Vielen Dank für die Bestellung. Unser Team setzt sich sobald wie möglich mit "
"Ihnen via E-Mail in Verbindung."
#: templates/datacenterlight/success.html:64
#: templates/datacenterlight/success.html:10
msgid "as soon as possible!"
msgstr ""
#~ msgid "Our data center"
#~ msgstr "Unser Datacenter"
#~ msgid "Based in Switzerland"
#~ msgstr "Standort des Datacenters ist in der Schweiz"
#~ msgstr "Starndort: Schweiz"
#~ msgid "10 GB Storage (SSD)"
#~ msgstr "10 GB Storage (SSD)"
#~ msgid "Want to know more? Subscribe to our newsletter!"
#~ msgstr "Willst du mehr wissen? Abonniere unseren Newsletter!"
#~ msgid "I want to have it!"
#~ msgstr "Das möchte ich haben!"
#~ msgid "Buy VM"
#~ msgstr "VM Kaufen"
#~ msgid ""
#~ "Reuse existing factory halls intead of building an expensive building."
#~ msgstr ""
#~ "Nachhaltigkeit: Wiederverwendung ehemaliger Fabrikhallen an Stelle der "
#~ "Errichtung eines neuen Gebäudes"
#~ msgid ""
#~ "Being creative, using modern and alternative design for a datacenter."
#~ msgstr ""
#~ "Kreativität: Verwendung eines modernen und alternativen Designs für unser "
#~ "Datencenter"
#~ msgid "Being open: Using FOSS exclusively, we can save money for licenses."
#~ msgstr ""
#~ "Offene Verfahrensweise: Die Benutzung eines eigenen Frameworks, FOSS, "
#~ "erspart Lizenzgebühren"
#~ msgid "More Info"
#~ msgstr "Weitere Informationen"
#~ msgid "Request Newsletter"
#~ msgstr "Newsletter abonnieren"
#~ msgid "How it works"
#~ msgstr "Wie es funktioniert"
#~ msgid "More Info"
#~ msgstr "Weitere Informationen"
#~ msgid "Want to know more? Subscribe to our newsletter!"
#~ msgstr "Willst du mehr wissen? Abonniere unseren Newsletter!"
#~ msgid "Our VMs are hosted in Glarus, Switzerland."
#~ msgstr "Standort des Datacenters ist in der Schweiz"

View File

@ -4,20 +4,8 @@
* For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/
@font-face {
font-family: 'Montserrat-Regular';
src: url('../fonts/Montserrat/Montserrat-Regular.ttf');
}
@font-face {
font-family: 'Montserrat-Bold';
src: url('../fonts/Montserrat/Montserrat-Bold.ttf');
}
@font-face {
font-family: 'Montserrat-Medium';
src: url('../fonts/Montserrat/Montserrat-Medium.ttf');
}
@font-face {
font-family: 'Montserrat-Light';
src: url('../fonts/Montserrat/Montserrat-Light.ttf');
font-family: 'Lato-Regular';
src: url('../fonts/Lato/Lato-Regular.ttf');
}
body,
html {
@ -32,8 +20,8 @@ h3,
h4,
h5,
h6 {
font-family: 'Montserrat-Regular', sans-serif;
font-weight: 700;
font-family: 'Lato-Regular', sans-serif;
font-weight: 300;
}
/*blue light #5A74AF*/
/*blue dark #29427A*/
@ -128,6 +116,10 @@ h6 {
.navbar-transparent .navbar-nav>li>a:hover {
color: #fff;
}
.navbar-transparent .navbar-nav>li>a:focus, .navbar-transparent .navbar-nav>li>a:hover {
color: #fff;
background-color: transparent;
}
.navbar-default .btn-link {
box-shadow: none;
}
@ -263,7 +255,6 @@ h6 {
margin: 0;
font-weight: 400;
font-size: 6em;
font-family: 'Montserrat-Medium';
}
.intro-divider {
@ -274,7 +265,7 @@ h6 {
.intro-message > h3 {
font-weight: 300;
font-family: 'Montserrat-Light';
}
.intro-pricing{
@ -331,7 +322,6 @@ h6 {
margin-bottom: 25px;
}
.split-section .split-text .split-title h2{
font-family: 'Montserrat-Bold';
font-size: 50px;
line-height: 50px;
padding-bottom: 25px;
@ -352,6 +342,12 @@ h6 {
width: 90%;
margin-left: auto;
}
.split-section.right .split-description.title p{
font-size: 27px;
margin-bottom: 10px;
text-align: left;
}
.split-section.right .split-text {
text-align: right;
}
@ -386,6 +382,20 @@ h6 {
width: 70px;
left: 0;
}
.split-section.what .icon-section{
position: relative;
min-height: 500px;
}
.split-section.what .split-text .lead {
font-size: 19px;
color: #3a3a3a;
margin-bottom: 5px;
line-height: 29px;
}
.split-section.what .fa-li.fa-lg{
font-size: 17px;
}
.pricing-section{
padding: 80px 0 !important;
background: -webkit-linear-gradient(top, #f0f4f7, #fff) no-repeat;
@ -409,10 +419,8 @@ h6 {
}
.pricing-section .card .title{
padding: 15px 40px;
font-family: 'Montserrat-Medium';
}
.pricing-section .card .title h3{
font-family: 'Montserrat-Medium';
}
.pricing-section .card .price{
background: #5A74AF;
@ -437,7 +445,6 @@ h6 {
text-align: left;
}
.pricing-section .text .section-heading{
font-family: 'Montserrat-Bold';
font-size: 50px;
line-height: 50px;
padding-bottom: 25px;
@ -464,7 +471,6 @@ h6 {
padding: 70px 0;
}
.request-section .title h2{
font-family: 'Montserrat-Bold';
font-size: 45px;
margin: 0;
color: #fff;
@ -505,7 +511,6 @@ h6 {
position: relative;
}
.full-contact-section{
padding-top: 90px;
background-image: -ms-linear-gradient(right, #29427A 50%, #4F6699 100%);
background-image: -moz-linear-gradient(right, #29427A 50%, #4F6699 100%);
background-image: -o-linear-gradient(right, #29427A 50%, #4F6699 100%);
@ -540,7 +545,6 @@ h6 {
.contact-section .card .subtitle h3{
font-size: 30px;
margin-bottom: 23px;
font-family: 'Montserrat-Medium';
}
.contact-section .card .social a:hover{
text-decoration: none;
@ -551,7 +555,6 @@ h6 {
max-width: 468px;
}
.contact-section .title h2{
font-family: 'Montserrat-Bold';
font-size: 65px;
margin: 0;
color: #fff;
@ -581,10 +584,9 @@ h6 {
width: 50%;
}
.price-calc-section .text .section-heading{
font-family: 'Montserrat-Bold';
font-size: 50px;
line-height: 50px;
padding-bottom: 25px;
font-size: 48px;
line-height: 48px;
padding-bottom: 27px;
color: #3a3a3a;
letter-spacing: 1px;
position: relative;
@ -630,10 +632,8 @@ h6 {
}
.price-calc-section .card .title{
padding: 15px 40px;
font-family: 'Montserrat-Medium';
}
.price-calc-section .card .title h3{
font-family: 'Montserrat-Medium';
}
.price-calc-section .card .price{
background: #5A74AF;
@ -641,6 +641,9 @@ h6 {
color: #fff;
font-size: 32px;
}
.price-calc-section .card .price .price-text{
font-size: 14px;
}
.price-calc-section .card .description{
padding: 12px;
border-bottom: 1px solid rgba(128, 128, 128, 0.3);
@ -704,7 +707,7 @@ h6 {
.price-calc-section .card .description.input label{
font-size: 15px;
font-weight: 800;
font-family: 'Montserrat-Regular';
font-family: 'Lato-Regular';
margin-bottom: 0;
width: 40px;
}
@ -718,6 +721,7 @@ h6 {
background: #fff;
margin-left: 10px;
}
.price-calc-section .card .check-ip input[type=checkbox]{
font-size: 17px;
margin: 0 8px;
@ -799,9 +803,38 @@ h6 {
border: 1px solid rgba(119, 119, 119, 0.4);
box-shadow: none;
}
.navbar-default .nav-language .drop-language {
background: #fff;
/* border: 1px solid #fff; */
z-index: 100000;
left: 9px;
border: 1px solid rgba(119, 119, 119, 0.4);
box-shadow: none;
}
.navbar-default .nav-language .select-language {
color: #777;
}
.navbar-default .nav-language .drop-language a {
color: #777;
}
.navbar-transparent .navbar-nav>li>a:focus, .navbar-transparent .navbar-nav>li>a:hover {
color: #333;
background-color: transparent;
}
.navbar-default .navbar-nav>li>a:focus, .navbar-default .navbar-nav>li>a:hover {
color: #333;
background-color: transparent;
}
.split-section {
padding: 10px 0;
}
.split-section .icon-section {
min-height: 160px;
}
.split-section.what .icon-section{
min-height: 160px;
}
.split-section .icon-section i{
font-size: 120px;
}
@ -841,6 +874,10 @@ h6 {
left: 50%;
transform: translate(-50%, 0);
}
.contact-section .card .social a {
color: #29427A;
font-size: 30px;
}
.intro-pricing .intro-message .section-heading {
font-size: 30px;
@ -860,8 +897,7 @@ h6 {
margin-top: 20px;
}
.price-calc-section .text .section-heading {
font-family: 'Montserrat-Bold';
font-size: 35px;
font-size: 35px;
line-height: 35px;
padding-bottom: 15px;
text-align: center;
@ -881,7 +917,6 @@ h6 {
width: 60px;
}
}
@media(max-width:540px) {
@ -927,7 +962,6 @@ h6 {
.section-heading {
margin-bottom: 30px;
font-family: 'Montserrat-Medium';
}
.section-heading-spacer {

View File

@ -1,4 +1,4 @@
Copyright 2011 The Montserrat Project Authors (julieta.ulanovsky@gmail.com)
Copyright (c) 2010-2014 by tyPoland Lukasz Dziedzic (team@latofonts.com) with Reserved Font Name "Lato"
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL

View File

@ -74,7 +74,8 @@
function _initNavUrl(){
$('.url').click(function(){
var href = $(this).attr('data-url');
console.log(href);
$('.navbar-collapse').removeClass('in');
$('.navbar-collapse').addClass('collapsing');
$('html, body').animate({
scrollTop: $(href).offset().top
}, 1000);
@ -121,8 +122,7 @@
}
function _calcPricing(){
var total = (cardPricing['cpu'].value * 5) + (2* cardPricing['ram'].value) + (0.6* cardPricing['storage'].value)
console.log(total);
var total = (cardPricing['cpu'].value * 5) + (2* cardPricing['ram'].value) + (0.6* cardPricing['storage'].value);
total = parseFloat(total.toFixed(2));
$("#total").text(total);
@ -138,59 +138,3 @@
})(jQuery);
// (function($){
// 'use strict'; // Start of use strict
// $(document).ready(function(){
// verifiedUrl();
// init_options_interested();
// init_nav();
// change_values();
// });
// function verifiedUrl(){
// if(window.location.href.indexOf('#success') > -1){
// form_success();
// }
// }
// function init_options_interested(){
// $('.row-vms').click(function(){
// $('.row-vms').removeClass('row-vms__active');
// $(this).addClass('row-vms__active');
// var number = $('.row-vms__active input').val();
// var price = $('.row-vms__active input').data('price');
// _calculate(number, price);
// });
// }
// function init_nav(){
// $('.nav-local').click(function(){
// $('html, body').animate({
// scrollTop: $('#'+$(this).data('href')).offset().top
// });
// });
// }
// function change_values(){
// $('.number-vms').keyup(function () {
// var number = $(this).val();
// var price = $(this).data('price');
// _calculate(number, price);
// });
// }
// function form_success(){
// $('#sucessModal').modal('show');
// }
// function _calculate(numbers, price){
// $('#valueTotal').text(numbers*price*31);
// }
// })(jQuery); // End of use strict

View File

@ -13,7 +13,6 @@
<title>Data Center Light -
{% block title %}VM hosting made in Switzerland{% endblock %}</title>
<!-- Bootstrap Core CSS -->
<link href="{% static 'datacenterlight/css/bootstrap.min.css' %}" rel="stylesheet">
@ -35,9 +34,77 @@
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
{% block body %}
{% endblock %}
</body>
<body>
<!-- Navigation -->
{% include "datacenterlight/includes/_navbar.html" %}
{% block content %}
{% endblock %}
{% include "datacenterlight/includes/_footer.html" %}
<!-- Footer -->
<!-- jQuery -->
<script src="{% static 'datacenterlight/js/jquery.js' %}"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/bootstrap-select.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="{% static 'datacenterlight/js/bootstrap.min.js' %}"></script>
<script src="{% static 'datacenterlight/js/main.js' %}"></script>
<!-- Load form js -->
<script src="{% static 'datacenterlight/js/form.js' %}"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/bootstrap-select.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/bootstrap-select.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.validator.setDefaults({
ignore: []
});
$('#order_form').validate({
wrapper: 'div',
errorLabelContainer: "#error_message_box",
rules: {
name: {
required: true,
minlength: 3
},
email: {
required: true,
email: true
}
},
messages: {
name: "Please enter your name",
email: "Please enter a valid email address"
},
submitHandler: function (form) {
return true;
}
});
});
// 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>
</html>

View File

@ -1,107 +0,0 @@
{% load staticfiles i18n%}
<!doctype html>
<html class="no-js">
<head>
<meta charset="utf-8">
<meta name="description" content="">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>landings</title>
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<link rel="shortcut icon" href="{% static 'datacenterlight/img/favicon.ico' %}" type="image/x-icon" />
<link rel="stylesheet" href="{% static 'datacenterlight/css/main.css' %}">
<script src="{% static 'datacenterlight/js/vendor/modernizr.js' %}"></script>
</head>
<body>
<!--[if IE]><p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p><![endif]-->
<nav class="navbar navbar-toggleable-md navbar-light bg-faded navbar-landing d-flex justify-content-between"><a class="navbar-brand nav-local" href="javascript:void(0)" data-href="home">Data Center Light</a> <a class="navbar-brand nav-local" href="javascript:void(0)" data-href="beta">Beta Program</a></nav>
<section class="section-home" id="home">
<div class="container d-flex justify-content-center align-items-center">
<div class="title">
<h1>Your affordable Swiss VM</h1></div>
</div>
</section>
<section class="section-description">
<div class="container">
<p>Are you looking for a secure and affordable VM in the midst of the Swiss mountains?</p>
<p>While there are many offers in Switzerland for secure hosting, we haven't found any that is affordable. So we decided we will built one in the Glarus mountains.</p>
<p>Right now we are in a preparing the tech stack and talking to infrastructure providers to find the optimal location.</p>
<p>Our objective is to launch this offer starting in 2017. Are you curious how it works? Be one of the first to try it and <a class="nav-local" href="javascript:void(0)" data-href="beta">request access to our beta program.</a></p>
</div>
</section>
<section class="section-beta" id="beta">
<div class="contain-form">
<div class="title">
<h1>Beta Program</h1></div>
<div class="form-interested">
<h2>I am interested in running</h2>
<form action="." method="POST">
{% for vm in vms %}
<div class="row-vms d-flex align-items-center">
<div class="form-group">
<input type="number" name="vm-{{vm.id}}" class="form-control number-vms" value="0" data-price="{{vm.price}}">
</div>
<div class="text"><span>number of VMs ({{vm.ssd}} GB SSD, {{vm.ram}} GB RAM, {{vm.cpu}} CPU) - {{vm.price}}chf / day</span></div>
</div>
{% endfor %}
<p class="total">At a monthly total of <span id="valueTotal">0</span>chf per day</p>
<div class="form-group">
<label for="example-email-input" class="col-form-label">You can reach me at</label>
<div class="form-group form-300">
<label for="email" class="col-form-label">Email</label>
<input class="form-control" name="email" type="email" placeholder="Your email" id="example-email-input">
</div>
<div class="form-group form-300">
<label for="name" class="col-form-label">Name</label>
<input class="form-control" name="name" type="text" placeholder="Your name" id="name">
</div>
</div>
<div class="notice">
<p>Notice: this is <strong>no</strong> an order - you don't have to pay anything, it just helps us to setup the right infrastructure</p>
</div>
{% csrf_token %}
<div class="submit">
<button type="submit" class="btn btn-block btn-success">Submit</button>
</div>
</form>
</div>
</div>
</section>
<div class="modal fade" id="sucessModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">Thank You</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="success-message">
<div class="title">
<h1>Thank You</h1>
</div>
<div class="container" style="margin-top: 3rem">
<p>Thanks for letting us know about your interest! We will come back to you as soon as our beta program starts!</p>
<p>Meanwhile, you can checkout news about it on <a href="#" >Twitter</a>, <a href="#" >Facebook</a> and <a href="#" >Instagram</a> </p>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
! function(e, t, a, n, c, o) {
e.GoogleAnalyticsObject = n, e[n] || (e[n] = function() {
(e[n].q = e[n].q || []).push(arguments)
}), e[n].l = +new Date, c = t.createElement(a), o = t.getElementsByTagName(a)[0], c.src = "https://www.google-analytics.com/analytics.js", o.parentNode.insertBefore(c, o)
}(window, document, "script", "ga"), ga("create", "UA-XXXXX-X"), ga("send", "pageview")
</script>
<script src="{% static 'datacenterlight/js/vendor.js' %}"></script>
<script src="{% static 'datacenterlight/js/plugin.js' %}"></script>
<script src="{% static 'datacenterlight/js/beta.js' %}"></script>
</body>
</html>

View File

@ -24,4 +24,4 @@
$('#beta_access').ajaxForm({
target: '#beta_access_form', success: function(response) { }
});
</script>
</script>

View File

@ -1,3 +1,4 @@
{% load i18n %}
<div class="modal fade bs-example-modal-sm" style="color:black;" id="successModal" tabindex="-1" role="dialog">
@ -44,4 +45,4 @@
margin: 0 auto;
pointer-events: all;
}
</style>
</style>

View File

@ -1,158 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Rails Hosting.ch - Ruby on Rails as easy as possible</title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/landing-page.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href='http://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
<!-- 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:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
<div class="container topnav">
<!-- 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">
<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 topnav" href="#"><img src="img/logo_black.svg"></a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="#how">How it works</a>
</li>
<li>
<a href="#your">Your infrastructure</a>
</li>
<li>
<a href="#our">Our inftrastructure</a>
</li>
<li>
<a href="#price">Pricing</a>
</li>
<li>
<a href="#contact">Contact</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<!-- Header -->
<a name="about"></a>
<div class="intro-header-2">
<div class="container">
<div class="col-md-4">&nbsp;</div><div class="col-md-4">
<div class="intro-"><img class="responsive" src="img/Beta.png">
<h2>Check Out</h2>
<form>
<ul class="fa-ul">
<li><i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">OS : Ubuntu 14.04</p>
</li>
<li><i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">RAM : 1GiB </p></li>
<li><i class="fa-li fa fa-check-square-o fa-lg"></i><p class="lead">CPU Cores : 4</p></li>
<li><i class="fa-li fa fa-check-square-o fa-lg"></i><p class="lead">Additional Disk: 20 GB
</ul><div class="checkbox">
<label>
<input type="checkbox">
Everything Correct!
</label>
</div>
<div class>
<p>&nbsp;</p>
</div>
<button type="submit" class="btn btn-default">Confirm Check Out</button>
</form></p></div>
<ul class="list-inline intro-social-buttons">
</ul>
</div>
</div>
</div>
</div>
<!-- /.container -->
</div>
<!-- /.intro-header -->
<!-- Footer -->
<footer>
<div class="container">
<div class="row">
<div class="col-lg-12">
<ul class="list-inline">
<li>
<a href="#">Home</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#about">How it works</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#about">Your infrastructure</a></li>
<li>&sdot;</li>
<li>
<a href="#about">Our infrastructure</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#services">Pricing</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#contact">Contact</a>
</li>
</ul>
<p class="copyright text-muted small">Copyright &copy; ungleich GmbH 2015. All Rights Reserved</p>
</div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="js/jquery.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>

View File

@ -1,57 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Rails Hosting.ch - Ruby on Rails as easy as possible | Page not found</title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/landing-page.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href='http://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
<!-- 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:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<body class="error404">
<div class="content-404">
<div class="container">
<div class="text-center">
<h1>&nbsp;</h1>
<h1>404</h1>
<p class-"lead">
"Sorry, we could not find the page you are looking for!"
</p>
</div>
</div>
</div>
<!-- Footer --><!-- jQuery -->
<script src="js/jquery.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>

View File

@ -0,0 +1,53 @@
{% load staticfiles i18n%}
{% get_current_language as LANGUAGE_CODE %}
<footer>
<div class="container">
<div class="row">
<div class="col-lg-12">
<ul class="list-inline">
{% if request.resolver_match.url_name == "index" %}
<li>
<a class="url" href="javascript:void(0)" data-url="#how" >{% trans "Highlights" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#your" >{% trans "Scale out" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#our">{% trans "Reliable and light" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#price" >{% trans "Order VM" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#contact" >{% trans "Contact" %}</a>
</li>
{% else %}
<li>
<a href="{% url 'datacenterlight:index' %}">{% trans "Home" %}</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="{% url 'datacenterlight:index' %}#how">{% trans "Highlights" %}</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="{% url 'datacenterlight:index' %}#your">{% trans "Scale out" %}</a></li>
<li>&sdot;</li>
<li>
<a href="{% url 'datacenterlight:index' %}#our">{% trans "Reliable and light" %}</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="{% url 'datacenterlight:index' %}#price">{% trans "Pricing" %}</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="{% url 'datacenterlight:index' %}#contact">{% trans "Contact" %}</a>
</li>
{% endif %}
</ul>
<p class="copyright text-muted small">Copyright &copy; ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
</div>
</div>
</div>
</footer>

View File

@ -0,0 +1,67 @@
{% load staticfiles i18n%}
{% get_current_language as LANGUAGE_CODE %}
{% load custom_tags %}
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
<div class="topnav">
<!-- 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">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
{% if request.resolver_match.url_name == "index" %}
<a id="logoBlack" class="navbar-brand topnav url" data-url="#home"><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a>
<a id="logoWhite" class="navbar-brand topnav url" data-url="#home"><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a>
{% else %}
<a id="logoBlack" class="navbar-brand topnav url" href="/datacenterlight"><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a>
<a id="logoWhite" class="navbar-brand topnav url" href="/datacenterlight"><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a>
{% endif %}
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
{% if request.resolver_match.url_name == "index" %}
<li>
<a class="url" href="javascript:void(0)" data-url="#how" >{% trans "Highlights" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#your" >{% trans "Scale out" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#our">{% trans "Reliable and light" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#price" >{% trans "Order VM" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#contact" >{% trans "Contact" %}</a>
</li>
{% endif %}
<li class="nav-language">
<div class="select-language">
{% if LANGUAGE_CODE == 'en-us'%}
<span>English</span>
{% else %}
<span>Deutsch</span>
{% endif %}
<i class="fa fa-globe" aria-hidden="true"></i>
</div>
<div class="drop-language">
{% if LANGUAGE_CODE == 'en-us'%}
<a class="url" href="{% change_lang 'de' %}">Deutsch</a>
{% else %}
<a class="url" href="{% change_lang 'en-us' %}" >English</a>
{% endif %}
</div>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>

View File

@ -1,119 +1,8 @@
{% extends "datacenterlight/base.html" %}
{% load staticfiles i18n%}
{% get_current_language as LANGUAGE_CODE %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>datacenterlight.ch - Featherlight Swiss VM</title>
<!-- Bootstrap Core CSS -->
<link href="{% static 'datacenterlight/css/bootstrap.min.css' %}" rel="stylesheet">
<!-- Custom Fonts -->
<!--Import Google Icon Font-->
<link href="//fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="{% static 'datacenterlight/font-awesome/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css">
<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 -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
<div class="topnav">
<!-- 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">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a id="logoBlack" class="navbar-brand topnav url" data-url="#home"><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a>
<a id="logoWhite" class="navbar-brand topnav url" data-url="#home"><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li>
<a class="url" href="javascript:void(0)" data-url="#how" >{% trans "What is it" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#your" >{% trans "Scale out" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#our">{% trans "Reliable and light" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#price" >{% trans "Order VM" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#contact" >{% trans "Contact" %}</a>
</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> -->
<li class="nav-language">
<div class="select-language">
{% if LANGUAGE_CODE == 'en-us'%}
<span>English</span>
{% else %}
<span>Deutsch</span>
{% endif %}
<i class="fa fa-globe" aria-hidden="true"></i>
</div>
<div class="drop-language">
{% if LANGUAGE_CODE == 'en-us'%}
<a class="url" href="{{base_url}}/de/datacenterlight" >Deutsch</a>
{% else %}
<a class="url" href="{{base_url}}/en-us/datacenterlight" >English</a>
{% endif %}
</div>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
{% block content %}
<!-- Header -->
<div class="intro-header" id="home">
@ -123,15 +12,15 @@
<div class="col-lg-12">
<div class="intro-message">
<h1>DataCenterLight</h1>
<h1>Data Center Light</h1>
<h3>{% trans "Finally, an affordable VM hosting in Switzerland!" %}</h3>
<hr class="intro-divider">
<ul class="list-inline intro-social-buttons">
<li>
<a class="btn btn-default btn-lg btn-transparent url" href="javascript:void(0)" data-url="#how" ><i class="#Services"></i> <span class="network-name">{% trans "What is it?" %}</span></a>
<a class="btn btn-default btn-lg btn-transparent url" href="javascript:void(0)" data-url="#how" ><i class="#Services"></i> <span class="network-name">{% trans "Highlights" %}</span></a>
</li>
<li>
<a class="btn btn-primary btn-lg page-scroll url" href="javascript:void(0)" data-url="#request" ><span class="network-name">{% trans "I want it!" %}</span></a>
<a class="btn btn-primary btn-lg page-scroll url" href="javascript:void(0)" data-url="#price" ><span class="network-name">{% trans "I want it!" %}</span></a>
</li>
</ul>
</div>
@ -139,8 +28,6 @@
</div>
</div>
<div class="triangle-left"></div>
<div class="triangle-right"></div>
<!-- /.container -->
</div>
@ -157,17 +44,27 @@
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="split-text">
<div class="split-title">
<h2>{% trans "What is it" %}</h2>
<h2>{% trans "Highlights" %}</h2>
</div>
<div class="split-description">
<ul class="fa-ul">
<li><i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Reuse existing factory halls intead of building an expensive building." %}</p>
<li>
<i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Reuses existing factory halls instead of building a new expensive building." %}
</p>
</li>
<li><i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Being creative, using modern and alternative design for a datacenter." %}</p></li>
<li><i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Being open: Using FOSS exclusively, we can save money for licenses." %}</p></li>
<li>
<i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Only wants you to pay for what you actually need." %}</p>
</li>
<li>
<i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Is creative, using a modern and alternative design for a data center in order to make it more sustainable and affordable at the same time." %}</p>
</li>
<li>
<i class="fa-li fa fa-check-square-o fa-lg"></i>
<p class="lead">{% trans "Cuts down the costs for you by using FOSS (Free Open Source Software) exclusively, wherefore we can save money from paying licenses." %}</p>
</li>
</ul>
</div>
@ -249,7 +146,10 @@
</div>
<div class="price">
<span id="total">15</span>
<span>CHF</span>
<span>CHF/{% trans "month" %}</span>
<div class="price-text">
<p>{% trans "VAT included" %}</p>
</div>
</div>
<div class="descriptions">
<div class="description">
@ -286,12 +186,12 @@
<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">
<label for="name">{% trans "Name"%}</label>
<input type="text" name="name" placeholder="{% trans "Your Name" %}">
</div>
<div class="description input">
<label for="email">Email</label>
<input type="email" name="email" placeholder="Your Email">
<label for="email">{% trans "Email" %}</label>
<input type="email" name="email" placeholder="{% trans "Your Email" %}">
</div>
</div>
<input type="submit" class="btn btn-primary" value="{% trans 'Order Now!' %}"></input>
@ -308,25 +208,7 @@
</div>
</div>
<!-- Configure -->
<div class="request-section" id="request">
<div class="container">
<div class="row">
<div class="col-sm-6 col-md-6">
<div class="title">
<h2>{% trans "I want to have it!" %}</h2>
</div>
</div>
<div class="col-sm-6 col-md-6">
<!-- Beta access form, will be loaded via ajax -->
<div class="form" id="beta_access_form">
</div>
</div>
</div>
</div>
</div>
<!-- /.content-section-a -->
<!-- / contact section -->
<div class="full-contact-section">
<div class="intro-header-2 contact-section" id="contact">
@ -368,93 +250,4 @@
</div>
<!-- /.banner -->
<!-- Footer -->
<footer>
<div class="container">
<div class="row">
<div class="col-lg-12">
<ul class="list-inline">
<li>
<a href="#">{% trans "Home" %}</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#about">{% trans "What is it" %}</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#about">{% trans "Scale out" %}</a></li>
<li>&sdot;</li>
<li>
<a href="#about">{% trans "Reliable and light" %}</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#services">{% trans "Pricing" %}</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#contact">{% trans "Contact" %}</a>
</li>
</ul>
<p class="copyright text-muted small">Copyright &copy; ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
</div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="{% static 'datacenterlight/js/jquery.js' %}"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.validator.setDefaults({
ignore: []
});
$('#order_form').validate({
wrapper: 'div',
errorLabelContainer: "#error_message_box",
rules: {
name: {
required: true,
minlength: 3
},
email: {
required: true,
email: true
}
},
messages: {
name: "Please enter your name",
email: "Please enter a valid email address"
},
submitHandler: function (form) {
return true;
}
});
});
window.onload=function(){
$('.selectpicker').selectpicker({
style: 'btn-link',
windowPadding: 10,
});
$.ajax({
url: "{% url 'datacenterlight:beta_access' %}",
context: document.body
}).done(function(response) {
$('#beta_access_form').html(response);
});
};
</script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/bootstrap-select.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="{% static 'datacenterlight/js/bootstrap.min.js' %}"></script>
<script src="{% static 'datacenterlight/js/main.js' %}"></script>
<!-- Load form js -->
<script src="{% static 'datacenterlight/js/form.js' %}"></script>
</body>
</html>
{% endblock %}

View File

@ -1,86 +0,0 @@
{% load staticfiles i18n%}
<!doctype html>
<html class="no-js">
<head>
<meta charset="utf-8">
<meta name="description" content="">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>landings</title>
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<link rel="stylesheet" href="{% static 'datacenterlight/css/main.css' %}">
<link rel="shortcut icon" href="{% static 'datacenterlight/img/favicon.ico' %}" type="image/x-icon" />
<script src="{% static 'datacenterlight/js/vendor/modernizr.js' %}"></script>
</head>
<body>
<!--[if IE]><p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p><![endif]-->
<nav class="navbar navbar-toggleable-md navbar-light bg-faded navbar-landing d-flex justify-content-between"><a class="navbar-brand nav-local" href="javascript:void(0)" data-href="home">DCL Interest</a> <a class="navbar-brand" href="index.html" data-href="beta">Beta Program</a></nav>
<section class="section-home" id="home">
<div class="container d-flex justify-content-center align-items-center">
<div class="title title-landings">
<h1>Swiss 2 GB VM for 0.5 CHF per day</h1></div>
</div>
</section>
<section class="section-beta" id="beta">
<div class="contain-form">
<div class="form-interested">
<h2>Details about the offer..<ul><li><span>2 GB RAM</span></li><li><span>1 CPU</span></li><li><span>10 GB Dus</span></li></ul><h2>I am interested in running</h2>
<form action="">
<div class="row-vms d-flex align-items-center justify-content-between row-vms__active">
<div class="form-group ">
<input type="number" class="form-control number-vms" value='1' data-price="0.5">
</div>
<div class="text text__landing">
<span>number of VMs </span>
</div>
<div class="form-group form-group__email">
<input class="form-control" type="email" placeholder="email" id="example-email-input">
</div>
<div class="submit">
<button type="button" id="submit" class="btn btn-block btn-success">Submit</button>
</div>
</div>
<p >Interested in other offers? <a href="index.html">Checkout our beta program offers!</a></p>
</form>
</h2>
</div>
</div>
</section>
<div class="modal fade" id="sucessModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">Thank You</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="success-message">
<div class="title">
<h1>Thank You</h1>
</div>
<div class="container" style="margin-top: 3rem">
<p>Thanks for letting us know about your interest! We will come back to you as soon as our beta program starts!</p>
<p>Meanwhile, you can checkout news about it on <a href="#" >Twitter</a>, <a href="#" >Facebook</a> and <a href="#" >Instagram</a> </p>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
! function(e, t, a, n, c, o) {
e.GoogleAnalyticsObject = n, e[n] || (e[n] = function() {
(e[n].q = e[n].q || []).push(arguments)
}), e[n].l = +new Date, c = t.createElement(a), o = t.getElementsByTagName(a)[0], c.src = "https://www.google-analytics.com/analytics.js", o.parentNode.insertBefore(c, o)
}(window, document, "script", "ga"), ga("create", "UA-XXXXX-X"), ga("send", "pageview")
</script>
<script src="{% static 'datacenterlight/js/vendor.js' %}"></script>
<script src="{% static 'datacenterlight/js/plugin.js' %}"></script>
<script src="{% static 'datacenterlight/js/main.js' %}"></script>
</body>
</html>

View File

@ -1,155 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Rails Hosting.ch - Ruby on Rails as easy as possible</title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/landing-page.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href='http://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
<!-- 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:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
<div class="container topnav">
<!-- 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">
<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 topnav" href="#"><img src="img/logo_black.svg"></a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="#how">How it works</a>
</li>
<li>
<a href="#your">Your infrastructure</a>
</li>
<li>
<a href="#our">Our inftrastructure</a>
</li>
<li>
<a href="#price">Pricing</a>
</li>
<li>
<a href="#contact">Contact</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<!-- Header -->
<a name="about"></a>
<div class="intro-header">
<div class="container">
<div class="col-md-4">&nbsp;</div><div class="col-md-4">
<div class="intro-message"><img class="responsive" src="img/Beta.png">
<h3>Log In</h3>
<form>
<div class="form-group">
<label for="exampleInputEmail1">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>&nbsp;</p>
</div>
<button type="submit" class="btn btn-default">Log In</button>
</form></p>
<ul class="list-inline intro-social-buttons">
</ul></div>&nbsp;<div class="col-md-4"></div>
</div>
</div>
</div>
</div>
<!-- /.container -->
</div>
<!-- /.intro-header -->
<!-- Footer -->
<footer>
<div class="container">
<div class="row">
<div class="col-lg-12">
<ul class="list-inline">
<li>
<a href="#">Home</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#about">How it works</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#about">Your infrastructure</a></li>
<li>&sdot;</li>
<li>
<a href="#about">Our infrastructure</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#services">Pricing</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#contact">Contact</a>
</li>
</ul>
<p class="copyright text-muted small">Copyright &copy; ungleich GmbH 2015. All Rights Reserved</p>
</div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="js/jquery.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>

View File

@ -1,67 +1,8 @@
{% extends "datacenterlight/base.html" %}
{% load staticfiles i18n %}
{% block body %}
{% block content %}
<!-- Navigation -->
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
<div class="topnav">
<!-- 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">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<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>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<!-- <li>
<a class="url" href="javascript:void(0)" data-url="#how" >{% trans "What is it" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#your" >{% trans "Scale out" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#our">{% trans "Reliable and light" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#price" >{% trans "Buy VM" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#contact" >{% trans "Contact" %}</a>
</li> -->
<li class="nav-language">
<div class="select-language">
{% if LANGUAGE_CODE == 'en-us'%}
<span>English</span>
{% else %}
<span>Deutsch</span>
{% endif %}
<i class="fa fa-globe" aria-hidden="true"></i>
</div>
<div class="drop-language">
{% if LANGUAGE_CODE == 'en-us'%}
<a class="url" href="{{base_url}}/de/datacenterlight/order" >Deutsch</a>
{% else %}
<a class="url" href="{{base_url}}/en-us/datacenterlight/order" >English</a>
{% endif %}
</div>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<div class="intro-pricing">
<div class="intro-message">
@ -83,6 +24,9 @@
<div class="price">
<span id="total">15</span>
<span>CHF</span>
<div class="price-text">
<p>{% trans "VAT included" %}</p>
</div>
</div>
<div class="descriptions">
<div class="description">
@ -149,94 +93,6 @@
</div>
<!-- /.banner -->
<!-- Footer -->
<footer>
<div class="container">
<div class="row">
<div class="col-lg-12">
<ul class="list-inline">
<li>
<a href="#">{% trans "Home" %}</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#about">{% trans "What is it" %}</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#about">{% trans "Scale out" %}</a></li>
<li>&sdot;</li>
<li>
<a href="#about">{% trans "Reliable and light" %}</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#services">{% trans "Pricing" %}</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#contact">{% trans "Contact" %}</a>
</li>
</ul>
<p class="copyright text-muted small">Copyright &copy; ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
</div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="{% static 'datacenterlight/js/jquery.js' %}"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.5.4/bootstrap-select.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.validator.setDefaults({
ignore: []
});
$('#order_form').validate({
wrapper: 'div',
errorLabelContainer: "#error_message_box",
rules: {
name: {
required: true,
minlength: 3
},
email: {
required: true,
email: true
}
},
messages: {
name: "Please enter your name",
email: "Please enter a valid email address"
},
submitHandler: function (form) {
return true;
}
});
});
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 -->
<script src="{% static 'datacenterlight/js/bootstrap.min.js' %}"></script>
<script src="{% static 'datacenterlight/js/main.js' %}"></script>
{% endblock %}
</html>

View File

@ -1,105 +1,8 @@
{% extends "datacenterlight/base.html" %}
{% load staticfiles i18n%}
{% get_current_language as LANGUAGE_CODE %}
<!DOCTYPE html>
<html lang="{{LANGUAGE_CODE}}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>datacenterlight.ch - Featherlight Swiss VM</title>
<!-- Bootstrap Core CSS -->
<link href="{% static 'datacenterlight/css/bootstrap.min.css' %}" rel="stylesheet">
<!-- Custom Fonts -->
<!--Import Google Icon Font-->
<link href="//fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="{% static 'datacenterlight/font-awesome/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css">
<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 -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
<div class="topnav">
<!-- 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">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<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>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<!-- <li>
<a class="url" href="javascript:void(0)" data-url="#how" >{% trans "What is it" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#your" >{% trans "Scale out" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#our">{% trans "Reliable and light" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#price" >{% trans "Buy VM" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#contact" >{% trans "Contact" %}</a>
</li> -->
<li class="nav-language">
<div class="select-language">
{% if LANGUAGE_CODE == 'en-us'%}
<span>English</span>
{% else %}
<span>Deutsch</span>
{% endif %}
<i class="fa fa-globe" aria-hidden="true"></i>
</div>
<div class="drop-language">
{% if LANGUAGE_CODE == 'en-us'%}
<a class="url" href="{{base_url}}/de/datacenterlight/pricing" >Deutsch</a>
{% else %}
<a class="url" href="{{base_url}}/en-us/datacenterlight/pricing" >English</a>
{% endif %}
</div>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
{% block content %}
<div class="intro-pricing">
<div class="intro-message">
@ -121,6 +24,9 @@
<div class="price">
<span id="total">15</span>
<span>CHF</span>
<div class="price-text">
<p>{% trans "VAT included" %}</p>
</div>
</div>
<div class="descriptions">
<div class="description">
@ -144,9 +50,11 @@
<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">
<div class="description select-configuration input">
<label for="name">OS</label>
<select name="config" id="">
{% for template in templates %}
<option value="{{template.id}}">{{template.name}} </option>
@ -154,6 +62,16 @@
</select>
</div>
<input type="hidden" name="total">
<!-- <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 class="description check-ip">
<input type="checkbox" name="ipv6"> Ipv6 Only<br>
</div>-->
@ -172,68 +90,7 @@
</div>
</div>
</div>
{% endblock %}
<!-- /.banner -->
<!-- Footer -->
<footer>
<div class="container">
<div class="row">
<div class="col-lg-12">
<ul class="list-inline">
<li>
<a href="#">{% trans "Home" %}</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#about">{% trans "What is it" %}</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#about">{% trans "Scale out" %}</a></li>
<li>&sdot;</li>
<li>
<a href="#about">{% trans "Reliable and light" %}</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#services">{% trans "Pricing" %}</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#contact">{% trans "Contact" %}</a>
</li>
</ul>
<p class="copyright text-muted small">Copyright &copy; ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
</div>
</div>
</div>
</footer>
<!-- jQuery -->
<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 -->
<script src="{% static 'datacenterlight/js/bootstrap.min.js' %}"></script>
<script src="{% static 'datacenterlight/js/main.js' %}"></script>
</body>
</html>

View File

@ -1,156 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Rails Hosting.ch - Ruby on Rails as easy as possible</title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/landing-page.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href='http://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
<!-- 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:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
<div class="container topnav">
<!-- 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">
<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 topnav" href="#"><img src="img/logo_black.svg"></a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="#how">How it works</a>
</li>
<li>
<a href="#your">Your infrastructure</a>
</li>
<li>
<a href="#our">Our inftrastructure</a>
</li>
<li>
<a href="#price">Pricing</a>
</li>
<li>
<a href="#contact">Contact</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<!-- Header -->
<a name="about"></a>
<div class="intro-header-2">
<div class="container">
<div class="col-md-4">&nbsp;</div><div class="col-md-4">
<div class="intro-"><img class="responsive" src="img/Beta.png">
<h2>Sign up</h2>
<form>
<div class="form-group">
<input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter your name or comapny name">
</div>
<div class="form-group">
<input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
</div>
<div class="form-group">
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
</div>
<div class="form-group">
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Confirm Password">
</div><div class="col-md-4">&nbsp;</div>
<div class>
<p>&nbsp;</p>
</div>
<button type="submit" class="btn btn-default">Sign Up</button>
</form></p></div>
<ul class="list-inline intro-social-buttons">
</ul>
</div>
</div>
</div>
</div>
<!-- /.container -->
</div>
<!-- /.intro-header -->
<!-- Footer -->
<footer>
<div class="container">
<div class="row">
<div class="col-lg-12">
<ul class="list-inline">
<li>
<a href="#">Home</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#about">How it works</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#about">Your infrastructure</a></li>
<li>&sdot;</li>
<li>
<a href="#about">Our infrastructure</a></li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#services">Pricing</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="#contact">Contact</a>
</li>
</ul>
<p class="copyright text-muted small">Copyright &copy; ungleich GmbH 2015. All Rights Reserved</p>
</div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="js/jquery.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>

View File

@ -1,61 +1,7 @@
{% extends "datacenterlight/base.html" %}
{% load staticfiles i18n %}
{% block body %}
{% block content %}
<!-- Navigation -->
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
<div class="topnav">
<!-- 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">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<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>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<!-- <li>
<a class="url" href="javascript:void(0)" data-url="#how" >{% trans "What is it" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#your" >{% trans "Scale out" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#our">{% trans "Reliable and light" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#price" >{% trans "Buy VM" %}</a>
</li>
<li>
<a class="url" href="javascript:void(0)" data-url="#contact" >{% trans "Contact" %}</a>
</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/order-success/">English</option>
{% else %}
<option value="{{base_url}}/en-us/datacenterlight/order-success/">English</option>
{% endif %}
{% if LANGUAGE_CODE == 'de'%}
<option selected="selected" value="{{base_url}}/de/datacenterlight/order-success/">Deutsch</option>
{% else %}
<option value="{{base_url}}/de/datacenterlight/order-success/">Deutsch</option>
{% endif %}
</select>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<div class="intro-pricing success-pricing">
<div class="intro-message">
@ -91,5 +37,4 @@
<script src="{% static 'datacenterlight/js/main.js' %}"></script>
{% endblock %}
</html>
{% endblock %}

View File

View File

@ -0,0 +1,24 @@
from django import template
from django.core.urlresolvers import resolve, reverse
from django.utils.translation import activate, get_language
register = template.Library()
@register.simple_tag(takes_context=True)
def change_lang(context, lang=None, *args, **kwargs):
path = context['request'].path
url_parts = resolve( path )
url = path
cur_language = get_language()
try:
activate(lang)
url = reverse( url_parts.view_name, kwargs=url_parts.kwargs )
finally:
activate(cur_language)
return "%s" % url

View File

@ -157,6 +157,7 @@ class BetaAccessView(FormView):
'subject': 'DatacenterLight Beta Access Request',
'from_address': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>',
'to': form.cleaned_data.get('email'),
'from': '(datacenterlight) DatacenterLight Support support@datacenterlight.ch',
'context': context,
'template_name': 'request_access_confirmation',
'template_path': 'datacenterlight/emails/'
@ -295,6 +296,7 @@ class IndexView(CreateView):
}
email_data = {
'subject': "Data Center Light Order from %s" % context['email'],
'from_email': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>',
'to': ['info@ungleich.ch'],
'body': "\n".join(["%s=%s" % (k, v) for (k, v) in context.items()]),
'reply_to': [context['email']],
@ -326,6 +328,7 @@ class IndexView(CreateView):
'subject': 'DatacenterLight Beta Access Request',
'from_address': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>',
'to': form.cleaned_data.get('email'),
'from': '(datacenterlight) DatacenterLight Support support@datacenterlight.ch',
'context': context,
'template_name': 'request_access_confirmation',
'template_path': 'datacenterlight/emails/'

74
deploy.sh Executable file
View File

@ -0,0 +1,74 @@
#!/bin/bash
#
# deploy.sh
#
# This script made to deploy dynamicweb project.
# Please run this script as app user.
#
APP_HOME_DIR=~/app
echo "" > $APP_HOME_DIR/deploy.log
while true; do
case "$1" in
-h | --help ) HELP=true; shift ;;
-v | --verbose ) VERBOSE=true; shift ;;
-d | --dbmigrate ) DB_MIGRATE=true; shift ;;
-n | --nogit ) NO_GIT=true; shift ;;
-b | --branch ) BRANCH="$2"; shift 2 ;;
-- ) shift; break ;;
* ) break ;;
esac
done
if [ "$BRANCH" == "" ]; then
BRANCH="master"
fi
if [ "$HELP" == "true" ]; then
echo "./deploy.sh <options>"
echo " "
echo "options are : "
echo " -h, --help: Print this help message"
echo " -v, --verbose: Show verbose output to stdout. Without this a deploy.log is written to ~/app folder"
echo " -d, --dbmigrate: Do DB migrate"
echo " -n, --nogit: Don't execute git commands. With this --branch has no effect."
echo " -b, --branch: The branch to pull from origin repo."
exit
fi
echo "BRANCH="$BRANCH
echo "DB_MIGRATE="$DB_MIGRATE
echo "NO_GIT="$NO_GIT
echo "VERBOSE="$VERBOSE
# The project directory exists, we pull the specified branch
cd $APP_HOME_DIR
if [ -z "$NO_GIT" ]; then
echo 'We are executing default git commands. Please -no_git to not use this.'
# Save any modified changes before git pulling
git stash
# Fetch all branches/tags
git fetch -a
git checkout $BRANCH
git pull origin $BRANCH
else
echo 'Not using git commands.'
fi
source ~/pyvenv/bin/activate
pip install -r requirements.txt > deploy.log 2>&1
echo "###" >> deploy.log
if [ -z "$DB_MIGRATE" ]; then
echo 'We are not doing DB migration'
else
./manage.py makemigrations >> deploy.log 2>&1
echo "###" >> deploy.log
./manage.py migrate >> deploy.log 2>&1
echo "###" >> deploy.log
fi
printf 'yes' | ./manage.py collectstatic >> deploy.log 2>&1
echo "###" >> deploy.log
django-admin compilemessages
sudo systemctl restart uwsgi

View File

@ -110,6 +110,7 @@ INSTALLED_APPS = (
'digitalglarus',
'nosystemd',
'datacenterlight',
'datacenterlight.templatetags',
'alplora',
'rest_framework',
'opennebula_api'

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-01 21:03+0000\n"
"POT-Creation-Date: 2017-05-30 13:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -79,70 +79,68 @@ msgstr "Anmelden"
msgid "Home"
msgstr "Home"
#: hosting/templates/hosting/bill_detail.html:11
#: hosting/templates/hosting/order_detail.html:10
#: templates/hosting/bill_detail.html:11 templates/hosting/order_detail.html:10
msgid "Invoice"
msgstr "Rechnung"
#: hosting/templates/hosting/bill_detail.html:11
#: hosting/templates/hosting/order_detail.html:10
#: templates/hosting/bill_detail.html:11 templates/hosting/order_detail.html:10
msgid "Order #"
msgstr "Rechnung #"
#: hosting/templates/hosting/bill_detail.html:25
#: templates/hosting/bill_detail.html:25
msgid "ungleich GmbH"
msgstr ""
#: hosting/templates/hosting/bill_detail.html:26
#: templates/hosting/bill_detail.html:26
msgid "buchhaltung@ungleich.ch"
msgstr ""
#: hosting/templates/hosting/bill_detail.html:27
#: templates/hosting/bill_detail.html:27
msgid "Hauptstrasse 14"
msgstr ""
#: hosting/templates/hosting/bill_detail.html:28
#: templates/hosting/bill_detail.html:28
msgid "CH-8775 Luchsingen"
msgstr ""
#: hosting/templates/hosting/bill_detail.html:29
#: templates/hosting/bill_detail.html:29
msgid "Mwst-Nummer: CHE-109.549.333 MWST"
msgstr ""
#: hosting/templates/hosting/bill_detail.html:60
#: templates/hosting/bill_detail.html:60
msgid "Total:"
msgstr ""
#: hosting/templates/hosting/bill_detail.html:68
#: templates/hosting/bill_detail.html:68
#, python-format
msgid "Alles Preise in CHF mit 8%% Mehrwertsteuer."
msgstr "All prices in CHF including 8%% VAT"
#: hosting/templates/hosting/bill_detail.html:69
#: templates/hosting/bill_detail.html:69
msgid "Betrag zahlbar innerhalb von 30 Tagen ab Rechnungseingang."
msgstr ""
#: hosting/templates/hosting/bill_detail.html:70
#: templates/hosting/bill_detail.html:70
msgid "Kontoverbindung:"
msgstr ""
#: hosting/templates/hosting/bill_detail.html:73
#: templates/hosting/bill_detail.html:73
msgid "IBAN:"
msgstr ""
#: hosting/templates/hosting/bill_detail.html:76
#: templates/hosting/bill_detail.html:76
msgid "BIC:"
msgstr ""
#: hosting/templates/hosting/bill_detail.html:81
#: templates/hosting/bill_detail.html:81
msgid "CH02 0900 0000 6071 8848 8"
msgstr ""
#: hosting/templates/hosting/bill_detail.html:84
#: templates/hosting/bill_detail.html:84
msgid "POFICHBEXXX"
msgstr ""
#: hosting/templates/hosting/bills.html:12
#: templates/hosting/bills.html:12
msgid "Customers"
msgstr "Kunden"
@ -151,27 +149,31 @@ msgstr "Kunden"
msgid "Name"
msgstr ""
#: hosting/templates/hosting/bills.html:17
#: templates/hosting/bills.html:17
msgid "Email"
msgstr ""
#: hosting/templates/hosting/bills.html:28
#: templates/hosting/bills.html:28
msgid "View Bill"
msgstr "Rechnung anzeigen"
#: hosting/templates/hosting/bills.html:41
#: hosting/templates/hosting/orders.html:83
#: hosting/templates/hosting/virtual_machines.html:70
#: templates/hosting/bills.html:41 templates/hosting/orders.html.py:83
#: templates/hosting/virtual_machines.html:70
msgid "previous"
msgstr "vorherige"
#: hosting/templates/hosting/bills.html:47
#: hosting/templates/hosting/orders.html:89
#: hosting/templates/hosting/virtual_machines.html:76
#: templates/hosting/bills.html:47 templates/hosting/orders.html.py:89
#: templates/hosting/virtual_machines.html:76
msgid "next"
msgstr "nächste"
#: hosting/templates/hosting/confirm_reset_password.html:19
#: templates/hosting/confirm_reset_password.html:10
#: templates/hosting/login.html:9 templates/hosting/reset_password.html.py:9
#: templates/hosting/signup.html:8
msgid "Your VM hosted in Switzerland"
msgstr "Ihre VM in der Schweiz"
#: templates/hosting/confirm_reset_password.html:14
msgid "Set your new password"
msgstr "Setzen Ihr neues Passwort"
@ -206,40 +208,34 @@ msgstr "Wählen Sie eine Konfiguration"
msgid "CHF/Month"
msgstr "CHF/Monat"
#: hosting/templates/hosting/create_virtual_machine.html:45
#: templates/hosting/create_virtual_machine.html:45
msgid "Start VM"
msgstr "Start VM"
#: hosting/templates/hosting/emails/password_reset_email.html:2
#: hosting/templates/hosting/emails/password_reset_email.txt:2
#: templates/hosting/emails/password_reset_email.html:2
#: templates/hosting/emails/password_reset_email.txt:2
#, python-format
msgid ""
"You're receiving this email because you requested a password reset for your "
"user account at %(site_name)s."
msgstr ""
#: hosting/templates/hosting/emails/password_reset_email.html:4
#: hosting/templates/hosting/emails/password_reset_email.txt:4
#: templates/hosting/emails/password_reset_email.html:4
#: templates/hosting/emails/password_reset_email.txt:4
msgid "Please go to the following page and choose a new password:"
msgstr ""
#: hosting/templates/hosting/emails/password_reset_email.html:9
#: hosting/templates/hosting/emails/password_reset_email.txt:9
#: templates/hosting/emails/password_reset_email.html:9
#: templates/hosting/emails/password_reset_email.txt:9
msgid "Thanks for using our site!"
msgstr ""
#: hosting/templates/hosting/emails/password_reset_email.html:11
#: hosting/templates/hosting/emails/password_reset_email.txt:11
#: templates/hosting/emails/password_reset_email.html:11
#: templates/hosting/emails/password_reset_email.txt:11
#, python-format
msgid "The %(site_name)s team"
msgstr ""
#: hosting/templates/hosting/login.html:10
#: hosting/templates/hosting/reset_password.html:10
#: hosting/templates/hosting/signup.html:9
msgid "Your VM hosted in Switzerland"
msgstr "Ihre VM gehostet in der Schweiz"
#: hosting/templates/hosting/login.html:26
msgid "You haven been logged out"
msgstr "Sie wurden abgmeldet"
@ -258,44 +254,44 @@ msgstr "Registrieren"
msgid "Forgot your password ? "
msgstr "Passwort vergessen?"
#: hosting/templates/hosting/notifications.html:9
#: templates/hosting/notifications.html:9
msgid "Notifications"
msgstr "Benachrichtigungen"
#: hosting/templates/hosting/notifications.html:16
#: templates/hosting/notifications.html:16
msgid "Unread"
msgstr "Ungelesen"
#: hosting/templates/hosting/notifications.html:26
#: templates/hosting/notifications.html:26
msgid "All"
msgstr "Alle"
#: hosting/templates/hosting/notifications.html:38
#: templates/hosting/notifications.html:38
msgid "Unread notifications"
msgstr "Ungelesene Benachrichtigungen"
#: hosting/templates/hosting/notifications.html:48
#: templates/hosting/notifications.html:48
msgid "Mark as read"
msgstr "Als gelesen markieren"
#: hosting/templates/hosting/notifications.html:59
#: templates/hosting/notifications.html:59
msgid "All notifications"
msgstr "Alle Benachrichtigungen"
#: hosting/templates/hosting/order_detail.html:16
#: hosting/templates/hosting/order_detail.html:24
#: templates/hosting/order_detail.html:16
#: templates/hosting/order_detail.html:24
msgid "Billed To:"
msgstr ""
#: hosting/templates/hosting/order_detail.html:26
#: templates/hosting/order_detail.html:26
msgid "Status:"
msgstr ""
#: hosting/templates/hosting/order_detail.html:38
#: templates/hosting/order_detail.html:38
msgid "Payment Method:"
msgstr "Bezahlmethode"
#: hosting/templates/hosting/order_detail.html:49
#: templates/hosting/order_detail.html:49
msgid "Order summary"
msgstr "Bestellungsübersicht"
@ -308,6 +304,8 @@ msgstr "Prozessorkerne"
#: hosting/templates/hosting/order_detail.html:54
#: hosting/templates/hosting/payment.html:20
#: hosting/templates/hosting/virtual_machine_detail.html:81
#: templates/hosting/order_detail.html:54
#: templates/hosting/virtual_machine_detail.html:82
msgid "Memory"
msgstr "Arbeitsspeicher"
@ -316,19 +314,19 @@ msgstr "Arbeitsspeicher"
msgid "Disk space"
msgstr "Festplattenkapazität"
#: hosting/templates/hosting/order_detail.html:58
#: templates/hosting/order_detail.html:58
msgid "Total"
msgstr ""
#: hosting/templates/hosting/order_detail.html:64
#: templates/hosting/order_detail.html:64
msgid "Finish Configuration"
msgstr "Konfiguration beenden"
#: hosting/templates/hosting/orders.html:17
#: templates/hosting/orders.html:17
msgid "Date"
msgstr "Datum"
#: hosting/templates/hosting/orders.html:18
#: templates/hosting/orders.html:18
msgid "Amount"
msgstr "Betrag"
@ -339,32 +337,31 @@ msgstr "Betrag"
msgid "Status"
msgstr ""
#: hosting/templates/hosting/orders.html:30
#: templates/hosting/orders.html:30
msgid "Approved"
msgstr "Akzeptiert"
#: hosting/templates/hosting/orders.html:32
#: templates/hosting/orders.html:32
msgid "Declined"
msgstr "Abgelehnt"
#: hosting/templates/hosting/orders.html:37
#: hosting/templates/hosting/virtual_machines.html:58
#: templates/hosting/orders.html:37 templates/hosting/virtual_machines.html:58
msgid "View Detail"
msgstr "Details anzeigen"
#: hosting/templates/hosting/orders.html:41
#: templates/hosting/orders.html:41
msgid "Cancel Order"
msgstr "Bestellung stornieren"
#: hosting/templates/hosting/orders.html:56
#: templates/hosting/orders.html:56
msgid "Do You want do delete your order?"
msgstr "Wollen Sie ihre Bestellung löschen?"
#: hosting/templates/hosting/orders.html:64
#: templates/hosting/orders.html:64
msgid "Close"
msgstr "Schliessen"
#: hosting/templates/hosting/orders.html:66
#: templates/hosting/orders.html:66
msgid "Delete"
msgstr "Löschen"
@ -405,51 +402,51 @@ msgstr "CV Code"
msgid "Reset your password"
msgstr "Passwort zurücksetzen"
#: hosting/templates/hosting/virtual_machine_detail.html:19
#: templates/hosting/virtual_machine_detail.html:19
msgid "Settings"
msgstr "Einstellungen"
#: hosting/templates/hosting/virtual_machine_detail.html:25
#: templates/hosting/virtual_machine_detail.html:25
msgid "Billing"
msgstr "Abrechnungen"
#: hosting/templates/hosting/virtual_machine_detail.html:60
#: templates/hosting/virtual_machine_detail.html:60
msgid "Ip not assigned yet"
msgstr "Ip nicht zugewiesen"
#: hosting/templates/hosting/virtual_machine_detail.html:87
#: templates/hosting/virtual_machine_detail.html:89
msgid "Disk"
msgstr "Festplatte"
#: hosting/templates/hosting/virtual_machine_detail.html:96
#: templates/hosting/virtual_machine_detail.html:98
msgid "Configuration"
msgstr "Konfiguration"
#: hosting/templates/hosting/virtual_machine_detail.html:106
#: templates/hosting/virtual_machine_detail.html:108
msgid "Current pricing"
msgstr "Aktueller Preis"
#: hosting/templates/hosting/virtual_machine_detail.html:115
#: templates/hosting/virtual_machine_detail.html:117
msgid "Current status"
msgstr "Aktueller Status"
#: hosting/templates/hosting/virtual_machine_detail.html:140
#: templates/hosting/virtual_machine_detail.html:142
msgid "Terminate Virtual Machine"
msgstr "Virtuelle Maschine beenden"
#: hosting/templates/hosting/virtual_machine_detail.html:161
#: templates/hosting/virtual_machine_detail.html:163
msgid "Terminate your Virtual Machine"
msgstr "Ihre virtuelle Maschine beenden"
#: hosting/templates/hosting/virtual_machine_detail.html:164
#: templates/hosting/virtual_machine_detail.html:166
msgid "Are you sure do you want to cancel your Virtual Machine "
msgstr "Sind Sie sicher, dass Sie ihre virtuelle Maschine beenden wollen "
#: hosting/templates/hosting/virtual_machine_detail.html:167
#: templates/hosting/virtual_machine_detail.html:169
msgid "Cancel"
msgstr "Beenden"
#: hosting/templates/hosting/virtual_machine_key.html:11
#: templates/hosting/virtual_machine_key.html:11
msgid "Access Key"
msgstr "Zugriffsschlüssel"
@ -511,22 +508,22 @@ msgstr ""
msgid "Generate my key"
msgstr "Generiere meinen Schlüssel"
#: hosting/templates/hosting/virtual_machines.html:9
#: templates/hosting/virtual_machines.html:9
msgid "Virtual Machines"
msgstr "Virtuelle Maschinen"
#: hosting/templates/hosting/virtual_machines.html:22
#: templates/hosting/virtual_machines.html:22
msgid "Create VM"
msgstr "Neue VM"
#: hosting/templates/hosting/virtual_machines.html:28
#: templates/hosting/virtual_machines.html:28
msgid "ID"
msgstr ""
#: hosting/templates/hosting/virtual_machines.html:29
#: templates/hosting/virtual_machines.html:29
msgid "Ipv4"
msgstr ""
#: hosting/templates/hosting/virtual_machines.html:30
#: templates/hosting/virtual_machines.html:30
msgid "Ipv6"
msgstr ""

View File

@ -1,7 +1,23 @@
.dashboard-container {
padding-top:70px; padding-bottom: 11%;
padding-top:70px; padding-bottom: 70px;
width: 90%;
margin: 0 auto;
max-width: 768px;
}
.content-dashboard{
min-height: 100vh;
width: 80%;
margin: 0 auto;
max-width: 1120px;
}
.container-table{
margin-top: 35px;
overflow-y: hidden;
}
.container-table table{
overflow-y: auto;
}
.borderless td {
border: none !important;
}
@ -26,3 +42,19 @@
.space-above-big {
margin-top: 20%;
}
.table>tbody>tr>td{
vertical-align: middle;
}
.fa-separate{
margin-right: 15px;
}
@media (max-width: 540px) {
select {
width: 280px;
}
.content-dashboard {
width: 90%;
}
}

View File

@ -4,22 +4,19 @@
* For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/
@font-face {
font-family: 'Montserrat-Regular';
src: url('../fonts/Montserrat/Montserrat-Regular.ttf');
font-family: 'Lato-Regular';
src: url('../fonts/Lato/Lato-Regular.ttf');
}
@font-face {
font-family: 'Montserrat-Bold';
src: url('../fonts/Montserrat/Montserrat-Bold.ttf');
src: url('../fonts/Lato/Lato-Black.ttf');
}
@font-face {
font-family: 'Montserrat-Medium';
src: url('../fonts/Montserrat/Montserrat-Medium.ttf');
}
@font-face {
font-family: 'Montserrat-Light';
src: url('../fonts/Montserrat/Montserrat-Light.ttf');
font-family: 'Lato-Light';
src: url('../fonts/Lato/Lato-Light.ttf');
}
body,
html {
width: 100%;
@ -33,8 +30,8 @@ h3,
h4,
h5,
h6 {
font-family: 'Montserrat-Regular', sans-serif;
font-weight: 700;
font-family: 'Lato-Regular', sans-serif;
font-weight: 300;
}
.topnav {
font-size: 14px;
@ -226,18 +223,23 @@ h6 {
z-index: 1000;
}
.auth-container .auth-content{
width: 80%;
width: 100%;
margin: 0 auto;
max-width: 390px;
margin-top: 60px;
}
.auth-container .auth-center{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
width: 100%;
}
.auth-container .auth-title{
margin-top: 40px;
margin-bottom: 50px;
}
.auth-container .auth-title h2{
color: #fff;
font-family: 'Montserrat-Bold';
font-size: 44px;
text-align: center;
width: 425px;
@ -276,7 +278,6 @@ h6 {
font-size: 20px;
border-radius: 3px 3px 0px 0px;
margin: 0 auto;
font-family: 'Montserrat-Medium';
}
.auth-box .form{
padding: 20px;
@ -340,6 +341,19 @@ h6 {
ul.banner-social-buttons > li:last-child {
margin-bottom: 0;
}
.auth-box .form {
padding: 15px 0px 0 0;
}
.auth-box.sign-up .form {
padding: 15px 0px 0 0;
}
.auth-box .form .form-control {
height: 44px;
font-size: 13px;
}
.auth-container .auth-title {
display: none;
}
}
@media (max-width: 540px) {
.auth-container .auth-title h2{
@ -347,9 +361,16 @@ h6 {
width: 90%;
margin-bottom: 50px;
}
.auth-box .form {
padding: 15px;
.auth-container.auth-signup .auth-title h2{
font-size: 20px;
width: 90%;
margin-bottom: 50px;
}
.auth-box .form {
width: 90%;
}
.auth-box .section-heading {
font-size: 15px;
}
}
footer {

View File

@ -1,4 +1,4 @@
.order-detail-container {padding-top: 70px; padding-bottom: 11%;}
.order-detail-container {padding-top: 70px; padding-bottom: 70px; margin-bottom: 70px;}
.order-detail-container .invoice-title h2, .invoice-title h3 {
display: inline-block;

View File

@ -0,0 +1,6 @@
/**
* Owl Carousel v2.2.1
* Copyright 2013-2017 David Deutsch
* Licensed under ()
*/
.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%}

View File

@ -0,0 +1,6 @@
/**
* Owl Carousel v2.2.1
* Copyright 2013-2017 David Deutsch
* Licensed under ()
*/
.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791}

View File

@ -43,4 +43,188 @@
.virtual-machine-container .right-place{
margin-top: 15px;
}
.virtual-machine-container .separate-md{
margin-top: 35px;
}
.virtual-machine-container .box-setting{
height: 100px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.virtual-machine-container .box-setting .label-success{
padding-top: 4px;
}
.virtual-machine-container .form-ssh textarea{
height: 150px !important
}
/*Create VM Styles*/
.parent-container{
overflow-x: hidden;
overflow-y: hidden;
}
.parent-container ::-webkit-scrollbar {
display: none;
}
.container-os{
overflow: auto;
padding: 0px 0px;
min-width: 300px;
width: auto;
max-width: 800px;
min-height: 150px;
}
.container-os .owl-next{
position: absolute;
right: -12px;
top: 6px;
color: gray !important;
background: transparent !important;
font-size: 54px !important;
}
.container-os .owl-prev{
position: absolute;
left: -12px;
top: 6px;
color: gray !important;
background: transparent !important;
font-size: 54px !important;
}
.container-os .owl-dots{
display: none;
}
.container-os .os-circle{
width: 120px;
height: 120px;
display: flex;
margin: 0 auto;
justify-content: center;
align-items: center;
background: #f7f7f7;
border-radius: 50%;
cursor: pointer;
text-align: center;
min-width: 120px;
border: 4px solid #b9b9b9;
transition: all .1s ease-in;
}
.step-title{
margin-bottom: 25px;
}
.container-os.config .config-box{
width: 115px;
height: 115px;
display: flex;
margin: 0 auto;
flex-direction: column;
justify-content: center;
align-items: center;
background: #f7f7f7;
/* border-radius: 50%; */
cursor: pointer;
text-align: center;
min-width: 115px;
border-radius: 7px;
border: 4px solid #b9b9b9;
transition: all .1s ease-in;
}
.container-os .os-circle.active{
border: 6px solid #2dc32d;
min-width: 135px;
width: 135px;
height: 135px;
}
.container-os .os-circle.active .text{
font-size: 20px;
line-height: 20px;
}
.container-os.config .config-box.active{
border: 6px solid #5cb85c;
min-width: 125px;
width: 125px;
height: 125px;
}
.container-os.config .config-box span{
font-size: 14px;
}
.container-os.config .config-box.active span{
font-size: 16px;
}
.container-os .os-circle .text{
font-size: 16px;
width: 50%;
line-height: 16px;
}
.container-button{
text-align: right;
display: none;
}
.container-button .btn{
font-size: 17px;
width: 150px;
margin-top: 5px;
}
.container-button .price{
font-size: 18px;
}
@media (max-width: 990px) {
.virtual-machine-container .tabs-left {
border-right: 0;
}
.virtual-machine-container .tabs-left>li.active>a,
.virtual-machine-container .tabs-left>li.active>a:hover,
.virtual-machine-container .tabs-left>li.active>a:focus {
border: 1px solid #ddd;
}
.virtual-machine-container .tabs-left>li>a {
border-radius: 4px;
margin-right: 0;
display:block;
}
}
@media (max-width: 768px) {
.container-button{
text-align: center;
}
.step-title{
text-align: center;
}
.dashboard-title{
text-align: center;
}
.container-os .os-circle{
width: 105px;
height: 105px;
min-width: 105px;
}
.container-os .os-circle .text{
font-size: 14px;
line-height: 15px;
}
.container-os .owl-next {
right: 20px;
top: 20px;
font-size: 40px !important;
}
.container-os .owl-prev{
position: absolute;
left: 20px;
top: 20px;
font-size: 40px !important;
}
}
@media (max-width: 420px) {
.btn-create-vm {
float: left !important;
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,92 @@
Copyright (c) 2010-2014 by tyPoland Lukasz Dziedzic (team@latofonts.com) with Reserved Font Name "Lato"
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -0,0 +1,89 @@
(function($){
"use strict"; // Start of use strict
$(window).load(function(){
});
$(document).ready(function(){
_initOs();
_ifOverflow();
});
$(window).resize(function(){
_ifOverflow();
});
function _initOs(){
$('.os-circle').click(function(event){
$('.os-circle').removeClass('active');
$(this).addClass('active');
var idTemplate = $(this).data('id');
$('input[name=vm_template_id]').val(idTemplate);
});
$('.config-box').click(function(event){
$('.config-box').removeClass('active');
$(this).addClass('active');
var idConfig = $(this).data('id');
var price = $(this).data('price');
$('input[name=configuration]').val(idConfig);
$('.container-button').fadeIn();
$('#priceValue').text(price);
});
$('.owl-carousel').owlCarousel({
items:4,
nav: true,
margin:30,
responsiveClass:true,
navText: ['<i class="fa fa-angle-left"></i>', '<i class="fa fa-angle-right"></i>'],
responsive:{
0:{
items:1,
nav:true
},
600:{
items:2,
nav:true
},
768:{
items:3,
nav:true
},
990:{
items:4,
nav:true
}
}
});
}
function _ifOverflow(){
var dcContainer= document.getElementById('dcContainer');
var containerOs= document.getElementById('containerOs');
console.log('d-c', dcContainer.offsetWidth-20);
console.log('d-os', containerOs.scrollWidth);
if(dcContainer.offsetWidth-20 < containerOs.scrollWidth){
console.log('oooVerrflowwww');
}
}
})(jQuery);

File diff suppressed because one or more lines are too long

View File

@ -29,6 +29,8 @@
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
<link href="//fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="{% static 'hosting/css/owl.carousel.min.css' %}">
<link rel="stylesheet" href="{% static 'hosting/css/owl.theme.default.min.css' %}">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
@ -60,9 +62,6 @@
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="{% url 'hosting:virtual_machines' %}">
<i class="fa fa-server" aria-hidden="true"></i> {% trans "My Virtual Machines"%}
@ -73,22 +72,21 @@
<i class="fa fa-credit-card"></i> {% trans "My Orders"%}
</a>
</li>
<li>
<a href="{% url 'hosting:notifications' %}">
<i class="fa fa-bell"></i> {% trans "Notifications "%}
</a>
</li>
<li class="dropdown">
<a class="dropdown-toggle" role="button" data-toggle="dropdown" href="#">
<i class="glyphicon glyphicon-user"></i> {{request.user.name}} <span class="caret"></span></a>
<ul id="g-account-menu" class="dropdown-menu" role="menu">
<li>
<a href="{% url 'hosting:ssh_keys' %}">
<i class="fa fa-key"></i> {% trans "Keys"%}
</a>
</li>
<li>
<a href="{% url 'hosting:notifications' %}">
<i class="fa fa-bell"></i> {% trans "Notifications "%}
</a>
</li>
<li><a href="{% url 'hosting:logout' %}"><i class="glyphicon glyphicon-lock"></i>{% trans "Logout"%} </a></li>
<li>
<a href="{% url 'hosting:ssh_keys' %}">
<i class="fa fa-key"></i> {% trans "Keys"%}
</a>
</li>
</ul>
</li>
<!--
@ -119,58 +117,23 @@
{% endif %}
<!-- Header -->
<a name="about"></a>
{% block content %}
{% endblock %}
<div class="content-dashboard">
{% block content %}
{% endblock %}
</div>
<!-- Footer -->
{% if request.user.is_authenticated %}
<footer class="navbar-fixed-bottom">
<footer class="footer-vm">
<div class="container">
<div class="row">
<div class="col-lg-12 hidden-xs">
<ul class="list-inline">
<li>
<a href="#">{% trans "Home"%}</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="{% url 'hosting:virtual_machines' %}">
{% trans "My Virtual Machines"%}
</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="{% url 'hosting:orders' %}">
{% trans "My Orders"%}
</a>
</li>
<li>&sdot;</li>
<li>
<li>
<a href="{% url 'hosting:ssh_keys' %}">
{% trans "Keys"%}
</a>
</li>
<li class="footer-menu-divider">&sdot;</li>
<li>
<a href="{% url 'hosting:notifications' %}">
{% trans "Notifications "%}
</a>
</li>
</ul>
<p class="copyright text-muted small">Copyright &copy; ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
</div>
</div>
<p class="copyright text-muted small">Copyright &copy; ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
</div>
</footer>
{% endif %}
<!-- jQuery -->
<script src="{% static 'hosting/js/jquery.js' %}"></script>
<script type="text/javascript" src="//cdn.jsdelivr.net/jquery.validation/1.13.1/jquery.validate.min.js"></script>
<script src="{% static 'hosting/js/vendor/owl.carousel.min.js'%}"></script>
<!-- Copy Clipboard -->
<script src="//cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.10/clipboard.min.js"></script>
@ -181,6 +144,9 @@
<!-- Virtual Machine Detail Javascript -->
<script src="{% static 'hosting/js/virtual_machine_detail.js' %}"></script>
<!-- Create Virtual Machine Javascript -->
<script src="{% static 'hosting/js/createvm.js' %}"></script>
<!-- Init JavaScript -->
<script src="{% static 'hosting/js/initial.js' %}"></script>

View File

@ -3,7 +3,7 @@
{% load i18n %}
{% block content %}
<div class="container">
<div class="">
<div class="orders-container" style="padding-bottom: 15%">
{# Adress bar #}
<div class="row">

View File

@ -3,8 +3,8 @@
{% load i18n %}
{% block content %}
<div class="container">
<div class="container orders-container">
<div class="">
<div class="orders-container">
<h1>Error</h1>
<p> Could not get HostingBill object for client. </p>
<p> Please create a HostingBill object via the admin page </p>

View File

@ -5,7 +5,7 @@
{% block content %}
<div>
<div class="container orders-container">
<div class="orders-container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<table class="table borderless table-hover">

View File

@ -3,11 +3,15 @@
{% load i18n %}
{% block content %}
<div class="intro-auth intro-reset-password">
<div class="container">
<div class="col-md-4">&nbsp;</div>
<div class="col-md-4">
<div class="intro-message">
<div class="auth-container">
<div class="auth-bg"></div>
<div class="auth-center">
<div class="auth-title">
<h2>{% trans "Your VM hosted in Switzerland"%}</h2>
</div>
<div class="auth-content">
<div class="intro-message auth-box sign-up">
<h2 class="section-heading">{% trans "Set your new password"%}</h2>
{% if messages %}
<ul class="list-unstyled">
{% for message in messages %}
@ -15,10 +19,7 @@
{% endfor %}
</ul>
{% endif %}
<h2 class="section-heading">{% trans "Set your new password"%}</h2>
<form action="" method="post" class="form" novalidate>
<form action="" method="post" class="form" novalidate>
{% csrf_token %}
{% for field in form %}
{% bootstrap_field field show_label=False %}
@ -29,11 +30,17 @@
</button>
{% endbuttons %}
</form>
<span>{% trans "Already have an account ?"%}<a class="unlink" href="{% url 'hosting:login' %}">{% trans "Log in"%}</a></span>
<ul class="list-inline intro-social-buttons">
</ul>
</div>
<div class="auth-footer">
<div class="text">
<span>{% trans "Already have an account ?"%}</span>
</div>
<div class="links">
<a class="unlink" href="{% url 'hosting:login' %}">{% trans "Login"%}</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -2,9 +2,9 @@
{% load staticfiles bootstrap3 i18n %}
{% block content %}
<div>
<div class="container dashboard-container">
<div class="dashboard-container" >
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="col-md-12">
<br/>
{% if messages %}
@ -16,39 +16,52 @@
{% endif %}
</div>
{% if not error %}
<h3><i class="fa fa-server" aria-hidden="true"></i> {% trans "New Virtual Machine"%} </h3>
<hr/>
<form method="POST" action="">
<div class="dashboard-title">
<h3>{% trans "New Virtual Machine"%} </h3>
<hr/>
</div>
<form method="POST" action="">
{% csrf_token %}
<div class="form-group">
{% trans "Select VM Template:" %}
<select name="vm_template_id">
{% for template in templates %}
<option value="{{template.id}}">{{template.name}} </option>
{% endfor %}
</select>
</div>
<div class="form-group">
{% trans "Select VM Configuration:" %}
<select name="configuration">
{% for config in configuration_options %}
<option value="{{config.id}}">
CORE: {{config.cpu|floatformat}},
RAM: {{config.memory|floatformat}} GB,
SSD: {{config.disk_size|floatformat}} GB,
PRICE: {{config.price|floatformat}} {% trans "CHF/Month" %}
</option>
{% endfor %}
</select>
<div class="step-title">
<h4>{% trans "Step 1. Select VM Template:" %} </h4>
</div>
<div class="form-group">
<button class="btn btn-success" >{% trans "Start VM"%} </button>
<div class="parent-container">
<div class="container-os owl-carousel owl-theme" id="containerOs">
{% for template in templates %}
<div class="os-circle" data-id="{{template.id}}">
<span class="text" >{{template.name}}</span>
</div>
{% endfor %}
</div>
<input type="hidden" name="vm_template_id">
</div>
<div class="step-title">
<h4>{% trans "Step2. Select VM Configuration" %}</h4>
</div>
<div class="parent-container">
<div class="container-os config owl-carousel owl-theme">
{% for config in configuration_options %}
<div class="config-box" data-id="{{config.id}}" data-price="{{config.price|floatformat}}">
<span>CORE: {{config.cpu|floatformat}}</span>
<span>RAM: {{config.memory|floatformat}} GB</span>
<span>SSD: {{config.disk_size|floatformat}} GB</span>
</div>
{% endfor %}
</div>
<input type="hidden" name="configuration">
</div>
<div class="container-button">
<div class="price">
<span class="label-price">{% trans "Price " %}<span id="priceValue">0</span>{% trans "CHF/Month" %}</span>
</div>
<button class="btn btn-success" >{% trans "Start VM"%} </button>
</div>
</form>
{% endif %}
</div>
</div>
</div>

View File

@ -5,29 +5,14 @@
<div class="auth-container">
<div class="auth-bg"></div>
<div class="container">
<div class="auth-center">
<div class="auth-title">
<h2>{% trans "Your VM hosted in Switzerland"%}</h2>
</div>
<div class="auth-content">
{% if messages %}
<ul class="list-unstyled" style="color: #fff">
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% block messages %}
{% if request.GET.logged_out %}
<div class="alert"> <!-- singular -->
<a class="close" data-dismiss="alert">×</a>
{% trans "You haven been logged out"%}
</div>
{% endif %}
{% endblock %}
<div class="intro-message auth-box">
<h2 class="section-heading">{% trans "Login"%}</h2>
<form action="{% url 'hosting:login' %}" method="post" class="form" novalidated>
@ -55,9 +40,8 @@
</div>
</div>
</div>
</div>
</div>
</div>
<!-- /.container -->
</div>
{% endblock %}

View File

@ -2,11 +2,11 @@
{% load staticfiles bootstrap3 i18n %}
{% block content %}
<div>
<div class="container virtual-machine-container dashboard-container ">
<div class="virtual-machine-container dashboard-container ">
<div class="row">
<div class="col-md-9 col-md-offset-2">
<div class="col-xs-12">
<div class="col-sm-12">
<h3><i class="fa fa-bell" aria-hidden="true"></i>{% trans "Notifications"%} </h3>
<h3><i class="fa fa-bell fa-separate" aria-hidden="true"></i>{% trans "Notifications"%} </h3>
<hr/>
<div class="col-md-3"> <!-- required for floating -->
<!-- Nav tabs -->

View File

@ -3,9 +3,9 @@
{% load i18n %}
{% block content %}
<div class="container order-detail-container">
<div class="order-detail-container">
<div class="row">
<div class="col-xs-8 col-xs-offset-2">
<div class="col-xs-12 col-md-8 col-md-offset-2">
<div class="invoice-title">
<h2>{% trans "Invoice"%}</h2><h3 class="pull-right">{% trans "Order #"%} {{order.id}}</h3>
</div>

View File

@ -5,11 +5,11 @@
{% block content %}
<div>
<div class="container orders-container">
<div class="orders-container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="container-table col-md-8 col-md-offset-2">
<table class="table borderless table-hover">
<h3><i class="fa fa-credit-card"></i>{% trans "My Orders"%}</h3>
<h3><i class="fa fa-credit-card fa-separate"></i>{% trans "My Orders"%}</h3>
<br/>
<thead>
<tr>

View File

@ -3,7 +3,7 @@
{% block content %}
<!-- Credit card form -->
<div>
<div class="container payment-container">
<div class="payment-container">
<div class="row">
<div class="col-xs-12 col-md-offset-2 col-md-4 summary-box">
<form role="form" novalidate>

View File

@ -5,11 +5,12 @@
{% block content %}
<div class="auth-container">
<div class="auth-bg"></div>
<div class="container">
<div class="auth-center">
<div class="auth-title">
<h2>{% trans "Your VM hosted in Switzerland"%}</h2>
</div>
<div class="auth-content">
<div class="intro-message auth-box sign-up">
<h2 class="section-heading">{% trans "Reset your password"%}</h2>
<form action="{% url 'hosting:reset_password' %}" method="post" class="form" novalidate>
@ -32,7 +33,7 @@
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -2,9 +2,9 @@
{% load staticfiles bootstrap3 i18n %}
{% block content %}
<div class="auth-container">
<div class="auth-container auth-signup">
<div class="auth-bg"></div>
<div class="container">
<div class="auth-center ">
<div class="auth-title">
<h2>{% trans "Your VM hosted in Switzerland"%}</h2>
</div>
@ -31,7 +31,8 @@
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -2,13 +2,13 @@
{% load staticfiles bootstrap3 i18n %}
{% block content %}
<div>
<div class="container virtual-machine-container dashboard-container ">
<div class="virtual-machine-container dashboard-container ">
<div class="row">
<div class="col-md-9 col-md-offset-2">
<div class="container-table col-md-9 col-md-offset-2">
<div class="col-sm-12">
<form method="POST" action="" novalidate>
<form method="POST" action="" novalidate class="form-ssh">
{% csrf_token %}
<h3><i class="fa fa-key" aria-hidden="true"></i>{% trans "Access Key"%} </h3>
<h3><i class="fa fa-key fa-separate" aria-hidden="true"></i>{% trans "Access Key"%} </h3>
{% if messages %}
<div class="alert alert-warning">
{% for message in messages %}

View File

@ -4,11 +4,11 @@
{% block content %}
<div>
<div class="container virtual-machine-container dashboard-container ">
<div class="virtual-machine-container dashboard-container ">
<div class="row">
<div class="col-md-9 col-md-offset-2">
<div class="col-sm-12">
<h3><i class="fa fa-cloud" aria-hidden="true"></i> {{virtual_machine.name}}</h3>
<h3><i class="fa fa-cloud fa-separate" aria-hidden="true"></i> {{virtual_machine.name}}</h3>
<hr/>
<div class="col-md-3"> <!-- required for floating -->
<!-- Nav tabs -->
@ -71,20 +71,22 @@
<div class="col-md-12">
<div class="row">
<div class="col-md-3">
<div class="well text-center">
<i class="fa fa-cubes" aria-hidden="true"></i>{% trans "Cores"%} <br/>
<div class="well text-center box-setting">
<i class="fa fa-cubes" aria-hidden="true"></i>
<span>{% trans "Cores"%}</span>
<span class="label label-success">{{virtual_machine.cores}}</span>
</div>
</div>
<div class="col-md-3">
<div class="well text-center">
<div class="well text-center box-setting">
<i class="fa fa-tachometer" aria-hidden="true"></i> {% trans "Memory"%} <br/>
<span class="label label-success">{{virtual_machine.memory}} GiB</span>
</div>
</div>
<div class="col-md-3">
<div class="well text-center">
<i class="fa fa-hdd-o" aria-hidden="true"></i> {% trans "Disk"%} <br/>
<div class="well text-center box-setting">
<i class="fa fa-hdd-o" aria-hidden="true"></i>
<span>{% trans "Disk"%}</span>
<span class="label label-success">{{virtual_machine.disk_size|floatformat:2}} GiB</span>
</div>
</div>
@ -130,7 +132,7 @@
</div>
{% if not virtual_machine.status == 'canceled' %}
<div class="row">
<div class="col-md-12 space-above-big">
<div class="col-md-12 separate-md">
<div class="pull-right">
<form method="POST"
id="virtual_machine_cancel_form" class="cancel-form" action="{% url 'hosting:virtual_machines' virtual_machine.vm_id %}">

View File

@ -2,11 +2,11 @@
{% load staticfiles bootstrap3 i18n %}
{% block content %}
<div>
<div class="container dashboard-container">
<div class="dashboard-container">
<div class="row">
<div class="col-md-8 col-md-offset-2" style="margin-top: 35px;">
<div class="col-xs-12 container-table">
<table class="table borderless table-hover">
<h3 class="pull-left"><i class="fa fa-server" aria-hidden="true"></i> {% trans "Virtual Machines"%} </h3>
<h3 class="pull-left"><i class="fa fa-server fa-separate" aria-hidden="true"></i> {% trans "Virtual Machines"%} </h3>
<div class="col-md-12">
<br/>
{% if messages %}
@ -18,7 +18,7 @@
{% endif %}
</div>
{% if not error %}
<p class="pull-right">
<p class="pull-right btn-create-vm">
<a class="btn btn-success" href="{% url 'hosting:create_virtual_machine' %}" >{% trans "Create VM"%} </a>
</p>
<br/>

View File

@ -299,7 +299,7 @@ class SSHKeyDeleteView(LoginRequiredMixin, DeleteView):
manager = OpenNebulaManager()
pk = self.kwargs.get('pk')
# Get user ssh key
public_key = UserHostingKey.objects.get(pk=pk)
public_key = UserHostingKey.objects.get(pk=pk).public_key
# Add ssh key to user
try:
manager.remove_public_key(user=owner, public_key=public_key)
@ -370,7 +370,7 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView):
manager = OpenNebulaManager()
# Get user ssh key
public_key = form.cleaned_data.get('public_key')
public_key = form.cleaned_data.get('public_key', '').decode('utf-8')
# Add ssh key to user
try:
manager.add_public_key(user=owner, public_key=public_key, merge=True)

View File

@ -449,6 +449,7 @@ class OpenNebulaManager():
"""
# TODO: Check if we can remove this first try because we basically just
# raise the possible Errors
try:
open_user = self._get_user(user)
try:
@ -492,14 +493,16 @@ class OpenNebulaManager():
try:
old_key = open_user.template.ssh_public_key
if public_key not in old_key:
raise KeyDoesNotExistsError()
return False
# raise KeyDoesNotExistsError()
if '\n{}'.format(public_key) in old_key:
public_key = old_key.replace('\n{}'.format(public_key), '')
else:
public_key = old_key.replace(public_key, '')
except AttributeError:
raise KeyDoesNotExistsError()
return False
#raise KeyDoesNotExistsError()
self.oneadmin_client.call('user.update', open_user.id,
'<CONTEXT><SSH_PUBLIC_KEY>{key}</SSH_PUBLIC_KEY></CONTEXT>'.format(key=public_key))

View File

@ -67,6 +67,7 @@ class PasswordResetViewMixin(FormView):
# form_class = PasswordResetRequestForm
success_message = "The link to reset your email has been sent to your email"
site = ''
success_message = "Thank you! You will shortly receive a password reset mail from us"
# success_url = reverse_lazy('hosting:login')
def test_generate_email_context(self, user):