Merge remote-tracking branch 'mainRepo/master' into task/3377/navbar_rearrange

This commit is contained in:
M.Ravi 2017-06-15 02:37:07 +05:30
commit 412236f6a1
100 changed files with 1510 additions and 1699 deletions

1
.gitignore vendored
View file

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

View file

@ -1,3 +1,10 @@
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 1.0.13: 2017-06-13
* [datacenterlight] Added translations for email and name placeholders fields * [datacenterlight] Added translations for email and name placeholders fields
1.0.12: 2017-06-13 1.0.12: 2017-06-13
@ -38,3 +45,7 @@
* [datacenterlight] Fix initially shown price * [datacenterlight] Fix initially shown price
1.0.0: 2017-05-25 1.0.0: 2017-05-25
* Initial stable release * Initial stable release
Next:
[datacenterlight] Fixed error trying to delete ssh key
[datacenterlight] Fixed footer links

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-13 01:16-0500\n" "POT-Creation-Date: 2017-06-13 13:41-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -30,11 +30,11 @@ msgstr "E-Mail-Adresse"
msgid "Request Beta Access" msgid "Request Beta Access"
msgstr "Beantrage Beta-Zugang" msgstr "Beantrage Beta-Zugang"
#: templates/datacenterlight/beta_success.html:9 #: templates/datacenterlight/beta_success.html:10
msgid "Request Sent" msgid "Request Sent"
msgstr "Anfrage verschickt" msgstr "Anfrage verschickt"
#: templates/datacenterlight/beta_success.html:12 #: templates/datacenterlight/beta_success.html:13
msgid "" msgid ""
"Thank you for your subscription! You will receive a confirmation mail from " "Thank you for your subscription! You will receive a confirmation mail from "
"our team" "our team"
@ -75,6 +75,7 @@ msgstr ""
msgid "Thank you!" msgid "Thank you!"
msgstr "Vielen Dank!" msgstr "Vielen Dank!"
#: templates/datacenterlight/home.html:15
#: templates/datacenterlight/index.html:62 #: templates/datacenterlight/index.html:62
#: templates/datacenterlight/index.html:160 #: templates/datacenterlight/index.html:160
#: templates/datacenterlight/index.html:383 #: templates/datacenterlight/index.html:383
@ -126,33 +127,64 @@ msgstr "Kontakt"
msgid "Finally, an affordable VM hosting in Switzerland!" msgid "Finally, an affordable VM hosting in Switzerland!"
msgstr "Endlich: bezahlbares VM Hosting in der Schweiz" msgstr "Endlich: bezahlbares VM Hosting in der Schweiz"
#: templates/datacenterlight/index.html:131 #: templates/datacenterlight/home.html:19
msgid "What is it?" msgid "What is it?"
msgstr "Was ist es?" msgstr "Was ist es?"
#: templates/datacenterlight/index.html:134 #: templates/datacenterlight/home.html:22
msgid "I want it!" msgid "I want it!"
msgstr "Das will ich haben!" msgstr "Das will ich haben!"
#: templates/datacenterlight/index.html:165 #: templates/datacenterlight/home.html:46
msgid "Reuse existing factory halls intead of building an expensive building." #: templates/datacenterlight/includes/_footer.html:11
msgstr "" #: templates/datacenterlight/includes/_footer.html:31
"Nachhaltigkeit: Wiederverwendung ehemaliger Fabrikhallen an Stelle der " #: templates/datacenterlight/includes/_navbar.html:26
"Errichtung eines neuen Gebäudes" msgid "What is it"
msgstr "Was ist es?"
#: templates/datacenterlight/index.html:168 #: templates/datacenterlight/home.html:49
msgid "Being creative, using modern and alternative design for a datacenter." msgid "Our data center"
msgstr "" msgstr "Unser Datacenter"
"Kreativität: Verwendung eines modernen und alternativen Designs für unser "
"Datencenter"
#: templates/datacenterlight/index.html:170 #: templates/datacenterlight/home.html:56
msgid "Being open: Using FOSS exclusively, we can save money for licenses." msgid ""
"Reuses existing factory halls instead of building a new expensive building."
msgstr "" msgstr ""
"Offene Verfahrensweise: Die Benutzung eines eigenen Frameworks, FOSS, " "Verwendet ehemalige Fabrikhallen anstatt ein neues, teures Gebäude zu "
"erspart Lizenzgebühren" "errichten."
#: templates/datacenterlight/index.html:192 #: templates/datacenterlight/home.html:61
msgid "Only wants you to pay for what you actually need."
msgstr ""
"Möchte, dass du nur bezahlst, was du auch wirklich brauchst: Wähle deine "
"Ressourcen individuell aus!"
#: templates/datacenterlight/home.html:65
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 ""
"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/home.html:69
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/home.html:89
#: templates/datacenterlight/includes/_footer.html:14
#: templates/datacenterlight/includes/_footer.html:34
#: templates/datacenterlight/includes/_navbar.html:29
msgid "Scale out"
msgstr "Skalierung"
#: templates/datacenterlight/home.html:92
msgid "" msgid ""
"We don't use special hardware. We use commodity hardware: we buy computers " "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 " "that you buy. Just many more and put them in a cozy home for computers "
@ -162,7 +194,14 @@ msgstr ""
"erschwingliche Systeme. Bei grösserer Auslastung werden mehr Standard " "erschwingliche Systeme. Bei grösserer Auslastung werden mehr Standard "
"komponenten hinzugekauft und skalieren so das Datencenter." "komponenten hinzugekauft und skalieren so das Datencenter."
#: templates/datacenterlight/index.html:218 #: templates/datacenterlight/home.html:115
#: templates/datacenterlight/includes/_footer.html:17
#: templates/datacenterlight/includes/_footer.html:37
#: templates/datacenterlight/includes/_navbar.html:32
msgid "Reliable and light"
msgstr "Zuverlässig und leicht"
#: templates/datacenterlight/home.html:118
msgid "" msgid ""
"Our VMs are located in Switzerland, with reliable power supply and fast " "Our VMs are located in Switzerland, with reliable power supply and fast "
"internet connection. Our VM costs less thanks to our featherlight " "internet connection. Our VM costs less thanks to our featherlight "
@ -172,6 +211,12 @@ msgstr ""
"Energieversorgung sowie schneller Internetverbindung ausgestattet. Unser " "Energieversorgung sowie schneller Internetverbindung ausgestattet. Unser "
"Angebot ist aufgrund unserer leichten Infrastruktur überaus kostengünstig." "Angebot ist aufgrund unserer leichten Infrastruktur überaus kostengünstig."
#: templates/datacenterlight/home.html:136
#: 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"
#: templates/datacenterlight/index.html:236 #: templates/datacenterlight/index.html:236
#: templates/datacenterlight/order.html:143 #: templates/datacenterlight/order.html:143
#: templates/datacenterlight/pricing.html:168 #: templates/datacenterlight/pricing.html:168
@ -180,31 +225,23 @@ msgstr ""
"Einfach und bezahlbar: Teste nun unsere virtuellen Maschinen mit " "Einfach und bezahlbar: Teste nun unsere virtuellen Maschinen mit "
"federleichten Preisen." "federleichten Preisen."
#: templates/datacenterlight/index.html:237 #: templates/datacenterlight/home.html:137
msgid "Affordable VM hosting based in Switzerland" msgid "Affordable VM hosting based in Switzerland"
msgstr "Bezahlbares VM Hosting in der Schweiz" msgstr "Bezahlbares VM Hosting in der Schweiz"
#: templates/datacenterlight/index.html:248 #: templates/datacenterlight/home.html:144
#: templates/datacenterlight/order.html:81 #: templates/datacenterlight/order.html:22
#: templates/datacenterlight/pricing.html:119 #: templates/datacenterlight/pricing.html:22
msgid "VM hosting" msgid "VM hosting"
msgstr "VM Hosting" msgstr "VM Hosting"
#: templates/datacenterlight/index.html:252 #: templates/datacenterlight/home.html:151
msgid "month" msgid "Based in Switzerland"
msgstr "Monat"
#: templates/datacenterlight/index.html:256
#: templates/datacenterlight/order.html:89
#: templates/datacenterlight/pricing.html:127
msgid "Hosted in Switzerland"
msgstr "Standort des Datacenters ist in der Schweiz" msgstr "Standort des Datacenters ist in der Schweiz"
#: templates/datacenterlight/index.html:273 #: templates/datacenterlight/home.html:160
#: templates/datacenterlight/order.html:106 msgid "10 GB Storage (SSD)"
#: templates/datacenterlight/pricing.html:144 msgstr "10 GB Storage (SSD)"
msgid "GB Storage (SSD)"
msgstr "GB Storage (SSD)"
#: templates/datacenterlight/index.html:289 #: templates/datacenterlight/index.html:289
msgid "Name" msgid "Name"
@ -228,6 +265,91 @@ msgstr "Deine E-Mail"
msgid "Order Now!" msgid "Order Now!"
msgstr "Bestelle jetzt!" msgstr "Bestelle jetzt!"
#: templates/datacenterlight/home.html:186
msgid "Switzerland "
msgstr "Schweiz"
#: templates/datacenterlight/home.html:203
msgid "Questions?"
msgstr "Fragen?"
#: templates/datacenterlight/home.html:203
msgid "Contact us!"
msgstr "Kontaktiere uns!"
#: templates/datacenterlight/includes/_footer.html:20
#: templates/datacenterlight/includes/_navbar.html:35
msgid "Order VM"
msgstr "VM bestellen"
#: templates/datacenterlight/includes/_footer.html:23
#: templates/datacenterlight/includes/_footer.html:44
#: templates/datacenterlight/includes/_navbar.html:38
msgid "Contact"
msgstr "Kontakt"
#: templates/datacenterlight/includes/_footer.html:27
msgid "Home"
msgstr "Home"
#: templates/datacenterlight/includes/_footer.html:40
msgid "Pricing"
msgstr "Preise"
#: templates/datacenterlight/order.html:30
#: templates/datacenterlight/pricing.html:30
msgid "Hosted in Switzerland"
msgstr "Standort des Datacenters ist in der Schweiz"
#: templates/datacenterlight/order.html:47
#: templates/datacenterlight/pricing.html:47
msgid "GB Storage (SSD)"
msgstr "GB Storage (SSD)"
#: templates/datacenterlight/order.html:84
#: templates/datacenterlight/pricing.html:83
msgid "Simple and affordable: Try our virtual machine with featherlight price."
msgstr ""
"Einfach und bezahlbar: Testen Sie unsere virtuellen Maschinen mit "
"federleichten Preisen"
#: templates/datacenterlight/order.html:87
#: templates/datacenterlight/pricing.html:86
#: templates/datacenterlight/index.html:248
#: templates/datacenterlight/order.html:81
#: templates/datacenterlight/pricing.html:119
msgid "VM hosting"
msgstr "VM Hosting"
#: templates/datacenterlight/index.html:252
msgid "month"
msgstr "Monat"
#: templates/datacenterlight/index.html:256
#: templates/datacenterlight/order.html:89
#: templates/datacenterlight/pricing.html:127
msgid "Hosted in Switzerland"
msgstr "Standort des Datacenters ist in der Schweiz"
#: templates/datacenterlight/index.html:273
#: templates/datacenterlight/order.html:106
#: templates/datacenterlight/pricing.html:144
msgid "GB Storage (SSD)"
msgstr "GB Storage (SSD)"
#: templates/datacenterlight/index.html:297
#: templates/datacenterlight/order.html:133
#: templates/datacenterlight/pricing.html:161
msgid "Order Now!"
msgstr "Bestelle jetzt!"
#: templates/datacenterlight/index.html:302
msgid "Want to know more? Subscribe to our newsletter!"
msgstr "Willst du mehr wissen? Abonniere unseren Newsletter!"
#: templates/datacenterlight/index.html:364
#: templates/datacenterlight/index.html:279
#: templates/datacenterlight/index.html:317 #: templates/datacenterlight/index.html:317
msgid "I want to have it!" msgid "I want to have it!"
msgstr "Das möchte ich haben!" msgstr "Das möchte ich haben!"
@ -250,6 +372,10 @@ msgstr "Kontaktiere uns!"
msgid "Home" msgid "Home"
msgstr "Home" msgstr "Home"
#: templates/datacenterlight/index.html:377
#: templates/datacenterlight/index.html:354
#: templates/datacenterlight/new-order.html:212
#: templates/datacenterlight/order.html:212
#: templates/datacenterlight/index.html:392 #: templates/datacenterlight/index.html:392
#: templates/datacenterlight/order.html:174 #: templates/datacenterlight/order.html:174
#: templates/datacenterlight/pricing.html:199 #: templates/datacenterlight/pricing.html:199
@ -284,12 +410,57 @@ msgstr ""
"uns unter support@datacenterlight.ch. Unser Team wird sich umgehend um dein " "uns unter support@datacenterlight.ch. Unser Team wird sich umgehend um dein "
"Anliegen kümmern!" "Anliegen kümmern!"
#: templates/datacenterlight/success.html:8
#: templates/datacenterlight/success.html:62 #: templates/datacenterlight/success.html:62
msgid "Thank you for order! Our team will contact you via email" msgid "Thank you for order! Our team will contact you via email"
msgstr "" msgstr ""
"Vielen Dank für die Bestellung. Unser Team setzt sich sobald wie möglich mit " "Vielen Dank für die Bestellung. Unser Team setzt sich sobald wie möglich mit "
"Ihnen via E-Mail in Verbindung." "Ihnen via E-Mail in Verbindung."
#: templates/datacenterlight/success.html:10
msgid "as soon as possible!"
msgstr ""
#~ msgid "month"
#~ msgstr "Monat"
#~ 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 "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"
#: templates/datacenterlight/success.html:64 #: templates/datacenterlight/success.html:64
msgid "as soon as possible!" msgid "as soon as possible!"
msgstr "" msgstr ""
@ -306,12 +477,6 @@ msgstr ""
#~ msgid "How it works" #~ msgid "How it works"
#~ msgstr "Wie es funktioniert" #~ 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." #~ msgid "Our VMs are hosted in Glarus, Switzerland."
#~ msgstr "Standort des Datacenters ist in der Schweiz" #~ 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. * For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/ */
@font-face { @font-face {
font-family: 'Montserrat-Regular'; font-family: 'Lato-Regular';
src: url('../fonts/Montserrat/Montserrat-Regular.ttf'); src: url('../fonts/Lato/Lato-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');
} }
body, body,
html { html {
@ -32,8 +20,8 @@ h3,
h4, h4,
h5, h5,
h6 { h6 {
font-family: 'Montserrat-Regular', sans-serif; font-family: 'Lato-Regular', sans-serif;
font-weight: 700; font-weight: 300;
} }
/*blue light #5A74AF*/ /*blue light #5A74AF*/
/*blue dark #29427A*/ /*blue dark #29427A*/
@ -128,6 +116,10 @@ h6 {
.navbar-transparent .navbar-nav>li>a:hover { .navbar-transparent .navbar-nav>li>a:hover {
color: #fff; 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 { .navbar-default .btn-link {
box-shadow: none; box-shadow: none;
} }
@ -263,7 +255,6 @@ h6 {
margin: 0; margin: 0;
font-weight: 400; font-weight: 400;
font-size: 6em; font-size: 6em;
font-family: 'Montserrat-Medium';
} }
.intro-divider { .intro-divider {
@ -274,7 +265,7 @@ h6 {
.intro-message > h3 { .intro-message > h3 {
font-weight: 300; font-weight: 300;
font-family: 'Montserrat-Light';
} }
.intro-pricing{ .intro-pricing{
@ -331,7 +322,6 @@ h6 {
margin-bottom: 25px; margin-bottom: 25px;
} }
.split-section .split-text .split-title h2{ .split-section .split-text .split-title h2{
font-family: 'Montserrat-Bold';
font-size: 50px; font-size: 50px;
line-height: 50px; line-height: 50px;
padding-bottom: 25px; padding-bottom: 25px;
@ -352,6 +342,12 @@ h6 {
width: 90%; width: 90%;
margin-left: auto; margin-left: auto;
} }
.split-section.right .split-description.title p{
font-size: 27px;
margin-bottom: 10px;
text-align: left;
}
.split-section.right .split-text { .split-section.right .split-text {
text-align: right; text-align: right;
} }
@ -386,6 +382,20 @@ h6 {
width: 70px; width: 70px;
left: 0; 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{ .pricing-section{
padding: 80px 0 !important; padding: 80px 0 !important;
background: -webkit-linear-gradient(top, #f0f4f7, #fff) no-repeat; background: -webkit-linear-gradient(top, #f0f4f7, #fff) no-repeat;
@ -409,10 +419,8 @@ h6 {
} }
.pricing-section .card .title{ .pricing-section .card .title{
padding: 15px 40px; padding: 15px 40px;
font-family: 'Montserrat-Medium';
} }
.pricing-section .card .title h3{ .pricing-section .card .title h3{
font-family: 'Montserrat-Medium';
} }
.pricing-section .card .price{ .pricing-section .card .price{
background: #5A74AF; background: #5A74AF;
@ -437,7 +445,6 @@ h6 {
text-align: left; text-align: left;
} }
.pricing-section .text .section-heading{ .pricing-section .text .section-heading{
font-family: 'Montserrat-Bold';
font-size: 50px; font-size: 50px;
line-height: 50px; line-height: 50px;
padding-bottom: 25px; padding-bottom: 25px;
@ -464,7 +471,6 @@ h6 {
padding: 70px 0; padding: 70px 0;
} }
.request-section .title h2{ .request-section .title h2{
font-family: 'Montserrat-Bold';
font-size: 45px; font-size: 45px;
margin: 0; margin: 0;
color: #fff; color: #fff;
@ -505,7 +511,6 @@ h6 {
position: relative; position: relative;
} }
.full-contact-section{ .full-contact-section{
padding-top: 90px;
background-image: -ms-linear-gradient(right, #29427A 50%, #4F6699 100%); background-image: -ms-linear-gradient(right, #29427A 50%, #4F6699 100%);
background-image: -moz-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%); background-image: -o-linear-gradient(right, #29427A 50%, #4F6699 100%);
@ -540,7 +545,6 @@ h6 {
.contact-section .card .subtitle h3{ .contact-section .card .subtitle h3{
font-size: 30px; font-size: 30px;
margin-bottom: 23px; margin-bottom: 23px;
font-family: 'Montserrat-Medium';
} }
.contact-section .card .social a:hover{ .contact-section .card .social a:hover{
text-decoration: none; text-decoration: none;
@ -551,7 +555,6 @@ h6 {
max-width: 468px; max-width: 468px;
} }
.contact-section .title h2{ .contact-section .title h2{
font-family: 'Montserrat-Bold';
font-size: 65px; font-size: 65px;
margin: 0; margin: 0;
color: #fff; color: #fff;
@ -581,10 +584,9 @@ h6 {
width: 50%; width: 50%;
} }
.price-calc-section .text .section-heading{ .price-calc-section .text .section-heading{
font-family: 'Montserrat-Bold'; font-size: 48px;
font-size: 50px; line-height: 48px;
line-height: 50px; padding-bottom: 27px;
padding-bottom: 25px;
color: #3a3a3a; color: #3a3a3a;
letter-spacing: 1px; letter-spacing: 1px;
position: relative; position: relative;
@ -630,10 +632,8 @@ h6 {
} }
.price-calc-section .card .title{ .price-calc-section .card .title{
padding: 15px 40px; padding: 15px 40px;
font-family: 'Montserrat-Medium';
} }
.price-calc-section .card .title h3{ .price-calc-section .card .title h3{
font-family: 'Montserrat-Medium';
} }
.price-calc-section .card .price{ .price-calc-section .card .price{
background: #5A74AF; background: #5A74AF;
@ -704,7 +704,7 @@ h6 {
.price-calc-section .card .description.input label{ .price-calc-section .card .description.input label{
font-size: 15px; font-size: 15px;
font-weight: 800; font-weight: 800;
font-family: 'Montserrat-Regular'; font-family: 'Lato-Regular';
margin-bottom: 0; margin-bottom: 0;
width: 40px; width: 40px;
} }
@ -718,6 +718,7 @@ h6 {
background: #fff; background: #fff;
margin-left: 10px; margin-left: 10px;
} }
.price-calc-section .card .check-ip input[type=checkbox]{ .price-calc-section .card .check-ip input[type=checkbox]{
font-size: 17px; font-size: 17px;
margin: 0 8px; margin: 0 8px;
@ -799,9 +800,38 @@ h6 {
border: 1px solid rgba(119, 119, 119, 0.4); border: 1px solid rgba(119, 119, 119, 0.4);
box-shadow: none; 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 { .split-section {
padding: 10px 0; padding: 10px 0;
} }
.split-section .icon-section {
min-height: 160px;
}
.split-section.what .icon-section{
min-height: 160px;
}
.split-section .icon-section i{ .split-section .icon-section i{
font-size: 120px; font-size: 120px;
} }
@ -841,6 +871,10 @@ h6 {
left: 50%; left: 50%;
transform: translate(-50%, 0); transform: translate(-50%, 0);
} }
.contact-section .card .social a {
color: #29427A;
font-size: 30px;
}
.intro-pricing .intro-message .section-heading { .intro-pricing .intro-message .section-heading {
font-size: 30px; font-size: 30px;
@ -860,8 +894,7 @@ h6 {
margin-top: 20px; margin-top: 20px;
} }
.price-calc-section .text .section-heading { .price-calc-section .text .section-heading {
font-family: 'Montserrat-Bold'; font-size: 35px;
font-size: 35px;
line-height: 35px; line-height: 35px;
padding-bottom: 15px; padding-bottom: 15px;
text-align: center; text-align: center;
@ -881,7 +914,6 @@ h6 {
width: 60px; width: 60px;
} }
} }
@media(max-width:540px) { @media(max-width:540px) {
@ -927,7 +959,6 @@ h6 {
.section-heading { .section-heading {
margin-bottom: 30px; margin-bottom: 30px;
font-family: 'Montserrat-Medium';
} }
.section-heading-spacer { .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 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: This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL http://scripts.sil.org/OFL

View file

@ -74,7 +74,8 @@
function _initNavUrl(){ function _initNavUrl(){
$('.url').click(function(){ $('.url').click(function(){
var href = $(this).attr('data-url'); var href = $(this).attr('data-url');
console.log(href); $('.navbar-collapse').removeClass('in');
$('.navbar-collapse').addClass('collapsing');
$('html, body').animate({ $('html, body').animate({
scrollTop: $(href).offset().top scrollTop: $(href).offset().top
}, 1000); }, 1000);
@ -121,8 +122,7 @@
} }
function _calcPricing(){ function _calcPricing(){
var total = (cardPricing['cpu'].value * 5) + (2* cardPricing['ram'].value) + (0.6* cardPricing['storage'].value) var total = (cardPricing['cpu'].value * 5) + (2* cardPricing['ram'].value) + (0.6* cardPricing['storage'].value);
console.log(total);
total = parseFloat(total.toFixed(2)); total = parseFloat(total.toFixed(2));
$("#total").text(total); $("#total").text(total);
@ -138,59 +138,3 @@
})(jQuery); })(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 - <title>Data Center Light -
{% block title %}VM hosting made in Switzerland{% endblock %}</title> {% block title %}VM hosting made in Switzerland{% endblock %}</title>
<!-- Bootstrap Core CSS --> <!-- Bootstrap Core CSS -->
<link href="{% static 'datacenterlight/css/bootstrap.min.css' %}" rel="stylesheet"> <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> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]--> <![endif]-->
</head> </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> </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({ $('#beta_access').ajaxForm({
target: '#beta_access_form', success: function(response) { } target: '#beta_access_form', success: function(response) { }
}); });
</script> </script>

View file

@ -1,3 +1,4 @@
{% load i18n %} {% load i18n %}
<div class="modal fade bs-example-modal-sm" style="color:black;" id="successModal" tabindex="-1" role="dialog"> <div class="modal fade bs-example-modal-sm" style="color:black;" id="successModal" tabindex="-1" role="dialog">
@ -44,4 +45,4 @@
margin: 0 auto; margin: 0 auto;
pointer-events: all; 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,212 @@
{% extends "datacenterlight/base.html" %}
{% load staticfiles i18n%}
{% get_current_language as LANGUAGE_CODE %}
{% block content %}
<!-- Header -->
<div class="intro-header" id="home">
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="intro-message">
<h1>DataCenterLight</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>
</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>
</li>
</ul>
</div>
</div>
</div>
</div>
<!-- /.container -->
</div>
<!-- /.intro-header -->
<!-- Page Content -->
<div class="split-section right what" id="how">
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6 icon-section">
<i class="fa fa-cogs" aria-hidden="true"></i>
</div>
<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>
</div>
<div class="split-description title">
<p class="lead">{% trans "Our data center" %}</p>
</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 "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 "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>
</div>
</div>
</div>
</div>
<!-- /.container -->
<!-- /.option 1 -->
</div>
<div class="split-section left" id="your">
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="split-text">
<div class="split-title">
<h2>{% trans "Scale out" %}</h2>
</div>
<div class="split-description">
<p class="lead">{% trans "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." %}</p>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-6 icon-section">
<i class="fa fa-rocket" aria-hidden="true"></i>
</div>
</div>
</div>
<!-- /.container -->
<!-- /.option 1 -->
</div>
<div class="split-section right" id="our">
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6 icon-section">
<i class="fa fa-handshake-o" aria-hidden="true"></i>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="split-text">
<div class="split-title">
<h2>{% trans "Reliable and light" %}</h2>
</div>
<div class="split-description">
<p class="lead">{% trans "Our VMs are located in Switzerland, with reliable power supply and fast internet connection. Our VM costs less thanks to our featherlight infrastructure." %}</p>
</div>
</div>
</div>
</div>
</div>
<!-- /.container -->
<!-- /.option 1 -->
</div>
<!-- /.content-section-b -->
<div class="content-section-a pricing-section" id="price">
<div class="container">
<!-- Page Features -->
<div class="row text-center">
<div class="col-xs-12 col-md-6 text">
<h2 class="section-heading">{% trans "We are cutting down the costs significantly!" %}</h2>
<p class="lead">{% trans "Affordable VM hosting based in Switzerland" %}</p>
</div>
<div class="col-xs-12 col-md-6 hero-feature">
<div class="card">
<div class="caption">
<div class="title">
<h3>{% trans "VM hosting" %} </h3>
</div>
<div class="price">
<span>15 CHF/month</span>
</div>
<div class="descriptions">
<div class="description">
<p>{% trans "Based in Switzerland" %}</p>
</div>
<div class="description">
<p>1 Core, </p>
</div>
<div class="description">
<p>2 GB RAM, </p>
</div>
<div class="description">
<p>{% trans "10 GB Storage (SSD)" %}</p>
</div>
</div>
<a href="{% url 'datacenterlight:order' %}" class="btn btn-primary">{% trans "Order Now!" %}</a>
</div>
<img class="img-beta" src="{% static 'datacenterlight/img/beta-img.png' %}" alt="">
</div>
</div>
</div>
</div>
</div>
<div class="full-contact-section">
<div class="intro-header-2 contact-section" id="contact">
<div class="container">
<div class="row">
<div class="col-sm-6 col-md-6">
<div class="card">
<div class="subtitle">
<h3>ungleich GmbH </h3>
</div>
<div class="description">
<p><i class="fa fa-envelope-o"></i> info@datacenterlight.ch</p>
<p>In der Au 7, Schwanden 8762</p>
<p>{% trans "Switzerland " %}</p>
</div>
<div class="social">
<a target="_blank" class="" href="https://twitter.com/datacenterlight">
<i class="fa fa-twitter fa-fw"></i>
</a>
<a target="_blank" class="" href="https://github.com/ungleich">
<i class="fa fa-github fa-fw"></i>
</a>
<a target="_blank" class="" href="https://www.facebook.com/ungleich.ch/">
<i class="fa fa-facebook fa-fw"></i>
</a>
</div>
</div>
</div>
<div class="col-sm-6 col-md-6">
<div class="title">
<h2>{% trans "Questions?" %} {% trans "Contact us!" %}</h2>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

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 "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>
{% 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 "What is it" %}</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 "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>
{% 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%} {% load staticfiles i18n%}
{% get_current_language as LANGUAGE_CODE %} {% 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 --> <!-- Header -->
<div class="intro-header" id="home"> <div class="intro-header" id="home">
@ -131,7 +20,7 @@
<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 "What is it?" %}</span></a>
</li> </li>
<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> </li>
</ul> </ul>
</div> </div>
@ -161,13 +50,23 @@
</div> </div>
<div class="split-description"> <div class="split-description">
<ul class="fa-ul"> <ul class="fa-ul">
<li><i class="fa-li fa fa-check-square-o fa-lg"></i> <li>
<p class="lead">{% trans "Reuse existing factory halls intead of building an expensive building." %}</p> <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>
<li><i class="fa-li fa fa-check-square-o fa-lg"></i> <li>
<p class="lead">{% trans "Being creative, using modern and alternative design for a datacenter." %}</p></li> <i class="fa-li fa fa-check-square-o fa-lg"></i>
<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>
<p class="lead">{% trans "Being open: Using FOSS exclusively, we can save money for licenses." %}</p></li> </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> </ul>
</div> </div>
@ -309,7 +208,7 @@
</div> </div>
<!-- Configure --> <!-- Configure -->
<div class="request-section" id="request"> <!-- <div class="request-section" id="request">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-sm-6 col-md-6"> <div class="col-sm-6 col-md-6">
@ -318,14 +217,14 @@
</div> </div>
</div> </div>
<div class="col-sm-6 col-md-6"> <div class="col-sm-6 col-md-6">
<!-- Beta access form, will be loaded via ajax --> <!-- Beta access form, will be loaded via ajax
<div class="form" id="beta_access_form"> <div class="form" id="beta_access_form">
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div> -->
<!-- /.content-section-a --> <!-- /.content-section-a -->
<!-- / contact section --> <!-- / contact section -->
<div class="full-contact-section"> <div class="full-contact-section">
@ -368,93 +267,4 @@
</div> </div>
<!-- /.banner --> <!-- /.banner -->
{% endblock %}
<!-- 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>

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" %} {% extends "datacenterlight/base.html" %}
{% load staticfiles i18n %} {% 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-pricing">
<div class="intro-message"> <div class="intro-message">
@ -149,94 +90,6 @@
</div> </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 %} {% endblock %}
</html> </html>

View file

@ -1,105 +1,8 @@
{% extends "datacenterlight/base.html" %}
{% load staticfiles i18n%} {% load staticfiles i18n%}
{% get_current_language as LANGUAGE_CODE %} {% get_current_language as LANGUAGE_CODE %}
<!DOCTYPE html>
<html lang="{{LANGUAGE_CODE}}">
<head> {% block content %}
<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>
<div class="intro-pricing"> <div class="intro-pricing">
<div class="intro-message"> <div class="intro-message">
@ -144,9 +47,11 @@
<span>{% trans "GB Storage (SSD)" %}</span> <span>{% trans "GB Storage (SSD)" %}</span>
<i class="fa fa-plus-circle right" data-plus="storage" aria-hidden="true"></i> <i class="fa fa-plus-circle right" data-plus="storage" aria-hidden="true"></i>
</div> </div>
<div class="description select-configuration">
<div class="description select-configuration input">
<label for="name">OS</label>
<select name="config" id=""> <select name="config" id="">
{% for template in templates %} {% for template in templates %}
<option value="{{template.id}}">{{template.name}} </option> <option value="{{template.id}}">{{template.name}} </option>
@ -154,6 +59,16 @@
</select> </select>
</div> </div>
<input type="hidden" name="total"> <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"> <!--<div class="description check-ip">
<input type="checkbox" name="ipv6"> Ipv6 Only<br> <input type="checkbox" name="ipv6"> Ipv6 Only<br>
</div>--> </div>-->
@ -172,68 +87,7 @@
</div> </div>
</div> </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" %} {% extends "datacenterlight/base.html" %}
{% load staticfiles i18n %} {% 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-pricing success-pricing">
<div class="intro-message"> <div class="intro-message">
@ -91,5 +37,4 @@
<script src="{% static 'datacenterlight/js/main.js' %}"></script> <script src="{% static 'datacenterlight/js/main.js' %}"></script>
{% endblock %} {% endblock %}
</html>

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', 'subject': 'DatacenterLight Beta Access Request',
'from_address': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>', 'from_address': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>',
'to': form.cleaned_data.get('email'), 'to': form.cleaned_data.get('email'),
'from': '(datacenterlight) DatacenterLight Support support@datacenterlight.ch',
'context': context, 'context': context,
'template_name': 'request_access_confirmation', 'template_name': 'request_access_confirmation',
'template_path': 'datacenterlight/emails/' 'template_path': 'datacenterlight/emails/'
@ -327,6 +328,7 @@ class IndexView(CreateView):
'subject': 'DatacenterLight Beta Access Request', 'subject': 'DatacenterLight Beta Access Request',
'from_address': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>', 'from_address': '(datacenterlight) datacenterlight Support <support@datacenterlight.ch>',
'to': form.cleaned_data.get('email'), 'to': form.cleaned_data.get('email'),
'from': '(datacenterlight) DatacenterLight Support support@datacenterlight.ch',
'context': context, 'context': context,
'template_name': 'request_access_confirmation', 'template_name': 'request_access_confirmation',
'template_path': 'datacenterlight/emails/' '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', 'digitalglarus',
'nosystemd', 'nosystemd',
'datacenterlight', 'datacenterlight',
'datacenterlight.templatetags',
'alplora', 'alplora',
'rest_framework', 'rest_framework',
'opennebula_api' 'opennebula_api'

View file

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

View file

@ -1,7 +1,23 @@
.dashboard-container { .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 { .borderless td {
border: none !important; border: none !important;
} }
@ -26,3 +42,19 @@
.space-above-big { .space-above-big {
margin-top: 20%; 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. * For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/ */
@font-face { @font-face {
font-family: 'Montserrat-Regular'; font-family: 'Lato-Regular';
src: url('../fonts/Montserrat/Montserrat-Regular.ttf'); src: url('../fonts/Lato/Lato-Regular.ttf');
} }
@font-face { @font-face {
font-family: 'Montserrat-Bold'; src: url('../fonts/Lato/Lato-Black.ttf');
src: url('../fonts/Montserrat/Montserrat-Bold.ttf');
} }
@font-face { @font-face {
font-family: 'Montserrat-Medium'; font-family: 'Lato-Light';
src: url('../fonts/Montserrat/Montserrat-Medium.ttf'); src: url('../fonts/Lato/Lato-Light.ttf');
}
@font-face {
font-family: 'Montserrat-Light';
src: url('../fonts/Montserrat/Montserrat-Light.ttf');
} }
body, body,
html { html {
width: 100%; width: 100%;
@ -33,8 +30,8 @@ h3,
h4, h4,
h5, h5,
h6 { h6 {
font-family: 'Montserrat-Regular', sans-serif; font-family: 'Lato-Regular', sans-serif;
font-weight: 700; font-weight: 300;
} }
.topnav { .topnav {
font-size: 14px; font-size: 14px;
@ -226,18 +223,23 @@ h6 {
z-index: 1000; z-index: 1000;
} }
.auth-container .auth-content{ .auth-container .auth-content{
width: 80%; width: 100%;
margin: 0 auto; margin: 0 auto;
max-width: 390px; 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{ .auth-container .auth-title{
margin-top: 40px; margin-bottom: 50px;
} }
.auth-container .auth-title h2{ .auth-container .auth-title h2{
color: #fff; color: #fff;
font-family: 'Montserrat-Bold';
font-size: 44px; font-size: 44px;
text-align: center; text-align: center;
width: 425px; width: 425px;
@ -276,7 +278,6 @@ h6 {
font-size: 20px; font-size: 20px;
border-radius: 3px 3px 0px 0px; border-radius: 3px 3px 0px 0px;
margin: 0 auto; margin: 0 auto;
font-family: 'Montserrat-Medium';
} }
.auth-box .form{ .auth-box .form{
padding: 20px; padding: 20px;
@ -340,6 +341,19 @@ h6 {
ul.banner-social-buttons > li:last-child { ul.banner-social-buttons > li:last-child {
margin-bottom: 0; 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) { @media (max-width: 540px) {
.auth-container .auth-title h2{ .auth-container .auth-title h2{
@ -347,9 +361,16 @@ h6 {
width: 90%; width: 90%;
margin-bottom: 50px; margin-bottom: 50px;
} }
.auth-box .form { .auth-container.auth-signup .auth-title h2{
padding: 15px; font-size: 20px;
width: 90%; width: 90%;
margin-bottom: 50px;
}
.auth-box .form {
width: 90%;
}
.auth-box .section-heading {
font-size: 15px;
} }
} }
footer { 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 { .order-detail-container .invoice-title h2, .invoice-title h3 {
display: inline-block; 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{ .virtual-machine-container .right-place{
margin-top: 15px; 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 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 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="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 --> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
@ -115,58 +117,23 @@
{% endif %} {% endif %}
<!-- Header --> <div class="content-dashboard">
<a name="about"></a> {% block content %}
{% block content %} {% endblock %}
{% endblock %} </div>
<!-- Footer --> <!-- Footer -->
{% if request.user.is_authenticated %} {% if request.user.is_authenticated %}
<footer class="navbar-fixed-bottom"> <footer class="footer-vm">
<div class="container"> <div class="container">
<div class="row"> <p class="copyright text-muted small">Copyright &copy; ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
<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>
</div> </div>
</footer> </footer>
{% endif %} {% endif %}
<!-- jQuery --> <!-- jQuery -->
<script src="{% static 'hosting/js/jquery.js' %}"></script> <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 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 --> <!-- Copy Clipboard -->
<script src="//cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.10/clipboard.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.10/clipboard.min.js"></script>
@ -177,6 +144,9 @@
<!-- Virtual Machine Detail Javascript --> <!-- Virtual Machine Detail Javascript -->
<script src="{% static 'hosting/js/virtual_machine_detail.js' %}"></script> <script src="{% static 'hosting/js/virtual_machine_detail.js' %}"></script>
<!-- Create Virtual Machine Javascript -->
<script src="{% static 'hosting/js/createvm.js' %}"></script>
<!-- Init JavaScript --> <!-- Init JavaScript -->
<script src="{% static 'hosting/js/initial.js' %}"></script> <script src="{% static 'hosting/js/initial.js' %}"></script>

View file

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

View file

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

View file

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

View file

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

View file

@ -2,9 +2,9 @@
{% load staticfiles bootstrap3 i18n %} {% load staticfiles bootstrap3 i18n %}
{% block content %} {% block content %}
<div> <div>
<div class="container dashboard-container"> <div class="dashboard-container" >
<div class="row"> <div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="col-md-12"> <div class="col-md-12">
<br/> <br/>
{% if messages %} {% if messages %}
@ -16,39 +16,52 @@
{% endif %} {% endif %}
</div> </div>
{% if not error %} {% if not error %}
<h3><i class="fa fa-server" aria-hidden="true"></i> {% trans "New Virtual Machine"%} </h3> <div class="dashboard-title">
<hr/> <h3>{% trans "New Virtual Machine"%} </h3>
<form method="POST" action=""> <hr/>
</div>
<form method="POST" action="">
{% csrf_token %} {% csrf_token %}
<div class="form-group">
{% trans "Select VM Template:" %} <div class="step-title">
<select name="vm_template_id"> <h4>{% trans "Step 1. Select VM Template:" %} </h4>
{% 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> </div>
<div class="form-group"> <div class="parent-container">
<button class="btn btn-success" >{% trans "Start VM"%} </button> <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> </div>
</form> </form>
{% endif %} {% endif %}
</div>
</div> </div>
</div> </div>

View file

@ -5,29 +5,14 @@
<div class="auth-container"> <div class="auth-container">
<div class="auth-bg"></div> <div class="auth-bg"></div>
<div class="container">
<div class="auth-center">
<div class="auth-title"> <div class="auth-title">
<h2>{% trans "Your VM hosted in Switzerland"%}</h2> <h2>{% trans "Your VM hosted in Switzerland"%}</h2>
</div> </div>
<div class="auth-content"> <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"> <div class="intro-message auth-box">
<h2 class="section-heading">{% trans "Login"%}</h2> <h2 class="section-heading">{% trans "Login"%}</h2>
<form action="{% url 'hosting:login' %}" method="post" class="form" novalidated> <form action="{% url 'hosting:login' %}" method="post" class="form" novalidated>
@ -55,9 +40,8 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</div> </div>
</div>
<!-- /.container -->
</div> </div>
{% endblock %} {% endblock %}

View file

@ -2,11 +2,11 @@
{% load staticfiles bootstrap3 i18n %} {% load staticfiles bootstrap3 i18n %}
{% block content %} {% block content %}
<div> <div>
<div class="container virtual-machine-container dashboard-container "> <div class="virtual-machine-container dashboard-container ">
<div class="row"> <div class="row">
<div class="col-md-9 col-md-offset-2"> <div class="col-xs-12">
<div class="col-sm-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/> <hr/>
<div class="col-md-3"> <!-- required for floating --> <div class="col-md-3"> <!-- required for floating -->
<!-- Nav tabs --> <!-- Nav tabs -->

View file

@ -3,9 +3,9 @@
{% load i18n %} {% load i18n %}
{% block content %} {% block content %}
<div class="container order-detail-container"> <div class="order-detail-container">
<div class="row"> <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"> <div class="invoice-title">
<h2>{% trans "Invoice"%}</h2><h3 class="pull-right">{% trans "Order #"%} {{order.id}}</h3> <h2>{% trans "Invoice"%}</h2><h3 class="pull-right">{% trans "Order #"%} {{order.id}}</h3>
</div> </div>

View file

@ -5,11 +5,11 @@
{% block content %} {% block content %}
<div> <div>
<div class="container orders-container"> <div class="orders-container">
<div class="row"> <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"> <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/> <br/>
<thead> <thead>
<tr> <tr>

View file

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

View file

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

View file

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

View file

@ -2,13 +2,13 @@
{% load staticfiles bootstrap3 i18n %} {% load staticfiles bootstrap3 i18n %}
{% block content %} {% block content %}
<div> <div>
<div class="container virtual-machine-container dashboard-container "> <div class="virtual-machine-container dashboard-container ">
<div class="row"> <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"> <div class="col-sm-12">
<form method="POST" action="" novalidate> <form method="POST" action="" novalidate class="form-ssh">
{% csrf_token %} {% 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 %} {% if messages %}
<div class="alert alert-warning"> <div class="alert alert-warning">
{% for message in messages %} {% for message in messages %}

View file

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

View file

@ -298,7 +298,7 @@ class SSHKeyDeleteView(LoginRequiredMixin, DeleteView):
manager = OpenNebulaManager() manager = OpenNebulaManager()
pk = self.kwargs.get('pk') pk = self.kwargs.get('pk')
# Get user ssh key # 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 # Add ssh key to user
try: try:
manager.remove_public_key(user=owner, public_key=public_key) manager.remove_public_key(user=owner, public_key=public_key)
@ -369,7 +369,7 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView):
manager = OpenNebulaManager() manager = OpenNebulaManager()
# Get user ssh key # 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 # Add ssh key to user
try: try:
manager.add_public_key(user=owner, public_key=public_key, merge=True) 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 # TODO: Check if we can remove this first try because we basically just
# raise the possible Errors # raise the possible Errors
try: try:
open_user = self._get_user(user) open_user = self._get_user(user)
try: try:
@ -492,14 +493,16 @@ class OpenNebulaManager():
try: try:
old_key = open_user.template.ssh_public_key old_key = open_user.template.ssh_public_key
if public_key not in old_key: if public_key not in old_key:
raise KeyDoesNotExistsError() return False
# raise KeyDoesNotExistsError()
if '\n{}'.format(public_key) in old_key: if '\n{}'.format(public_key) in old_key:
public_key = old_key.replace('\n{}'.format(public_key), '') public_key = old_key.replace('\n{}'.format(public_key), '')
else: else:
public_key = old_key.replace(public_key, '') public_key = old_key.replace(public_key, '')
except AttributeError: except AttributeError:
raise KeyDoesNotExistsError() return False
#raise KeyDoesNotExistsError()
self.oneadmin_client.call('user.update', open_user.id, self.oneadmin_client.call('user.update', open_user.id,
'<CONTEXT><SSH_PUBLIC_KEY>{key}</SSH_PUBLIC_KEY></CONTEXT>'.format(key=public_key)) '<CONTEXT><SSH_PUBLIC_KEY>{key}</SSH_PUBLIC_KEY></CONTEXT>'.format(key=public_key))

View file

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