diff --git a/Changelog b/Changelog index 537af052..088f7ab1 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,6 @@ +1.5.5: 2018-03-22 + * #4278: [dcl cms] edit options for cms navbar and header plugins + * bgfix: [dcl cms] fix link plugin issues and section image alignment 1.5.4: 2018-03-17 * bgfix: [dcl cms] update DCLNavbarPlugin to allow change of brand logo and url 1.5.3: 2018-03-16 diff --git a/datacenterlight/cms_models.py b/datacenterlight/cms_models.py index 214a2e90..c7a68a07 100644 --- a/datacenterlight/cms_models.py +++ b/datacenterlight/cms_models.py @@ -132,6 +132,10 @@ class DCLNavbarPluginModel(CMSPlugin): related_name="dcl_navbar_logo_dark", ) logo_url = models.URLField(max_length=300, null=True, blank=True) + language_dropdown = models.BooleanField( + default=True, + help_text='Select to include the language selection dropdown.' + ) def get_logo_dark(self): # used only if atleast one logo exists diff --git a/datacenterlight/migrations/0014_dclnavbarpluginmodel_language_dropdown.py b/datacenterlight/migrations/0014_dclnavbarpluginmodel_language_dropdown.py new file mode 100644 index 00000000..2c5e6306 --- /dev/null +++ b/datacenterlight/migrations/0014_dclnavbarpluginmodel_language_dropdown.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.4 on 2018-03-19 20:46 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('datacenterlight', '0013_dclnavbarpluginmodel'), + ] + + operations = [ + migrations.AddField( + model_name='dclnavbarpluginmodel', + name='language_dropdown', + field=models.BooleanField(default=True, help_text='Select to include the language selection dropdown.'), + ), + ] diff --git a/datacenterlight/static/datacenterlight/css/landing-page.css b/datacenterlight/static/datacenterlight/css/landing-page.css index 6361ea21..5ff6ed1d 100755 --- a/datacenterlight/static/datacenterlight/css/landing-page.css +++ b/datacenterlight/static/datacenterlight/css/landing-page.css @@ -58,6 +58,16 @@ textarea { min-width: 180px; } +.lead { + font-size: 18px; +} + +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} + /* Top navbar */ @@ -107,6 +117,12 @@ textarea { text-decoration: none; } +.topnav .nav .open>a, +.topnav .nav .open>a:focus, +.topnav .nav .open>a:hover { + background: transparent; +} + .navbar .dcl-link { display: block; padding: 15px; @@ -429,17 +445,20 @@ textarea { } .split-section.left .split-description { -/* width: 90%; */ margin-right: auto; } .split-section .split-description .lead { color: #3a3a3a; - font-size: 21px; } -.split-section .space .split-description .lead { - font-size: 20px; +@media (min-width: 768px) { + .split-section .split-description .lead { + font-size: 21px; + } + .split-section .space .split-description .lead { + font-size: 20px; + } } .split-section.right .split-description { @@ -536,6 +555,7 @@ textarea { padding-top: 20px; display: inline-block; color: #999 !important; + word-break: break-all; } .price-calc-section .card { @@ -764,17 +784,11 @@ textarea { .ssdimg { margin: 0 15px; - /* vertical-align: middle; */ - /* display: inline-block; */ -} - -.ssdimg img { - max-width: 125px; } @media (max-width: 767px) { .ssdimg img { - width: 100px; + max-height: 120px; } } @@ -1190,7 +1204,7 @@ footer { max-width: 430px; } .flex-row-rev .desc-text { - max-width: 710px; + max-width: 600px; text-align: left; } .flex-row-rev .percent-text { diff --git a/datacenterlight/static/datacenterlight/js/main.js b/datacenterlight/static/datacenterlight/js/main.js index 5e919045..dc5a9108 100644 --- a/datacenterlight/static/datacenterlight/js/main.js +++ b/datacenterlight/static/datacenterlight/js/main.js @@ -104,21 +104,33 @@ }); $('.url').click(function(event) { event.preventDefault(); - var href = $(this).attr('href'); + var $this = $(this); + var href = $this.attr('href'); $('.navbar-collapse').removeClass('in'); $('.navbar-collapse').addClass('collapsing'); if (href[0] === "#") { - if ($(href).length) { - $('html, body').animate({ - scrollTop: $(href).offset().top - 50 - }, 1000); - } + scrollToElement(href); } else if (href) { - window.location = href; + var path = $(this).prop('href').split('#'); + var currentPath = window.location.origin + window.location.pathname; + if (!path[1]) { + window.location = href; + } else if (currentPath == path[0]) { + scrollToElement('#' + path[1]); + } } }); } + function scrollToElement(el) { + var $el = $(el); + if ($el.length) { + $('html, body').animate({ + scrollTop: $el.offset().top - 50 + }, 1000); + } + } + function verifiedUrl() { if (window.location.href.indexOf('#success') > -1) { form_success(); diff --git a/datacenterlight/templates/datacenterlight/cms/contact.html b/datacenterlight/templates/datacenterlight/cms/contact.html index 63455dd0..33dc9034 100644 --- a/datacenterlight/templates/datacenterlight/cms/contact.html +++ b/datacenterlight/templates/datacenterlight/cms/contact.html @@ -1,11 +1,11 @@ -<div id="{{ instance.id }}" class="full-contact-section"> +<div id="contact" class="full-contact-section"> <div class="intro-header-2 contact-section"> <div class="container"> <div class="row"> <div class="col-sm-6"> - {% if instance.contact_text %} + {% if instance.heading%} <div class="title"> - <h2>{{ instance.contact_text }}</h2> + <h2>{{ instance.heading}}</h2> </div> {% endif %} <div class="contact-details"> @@ -40,4 +40,4 @@ </div> </div> </div> -</div> \ No newline at end of file +</div> diff --git a/datacenterlight/templates/datacenterlight/cms/navbar.html b/datacenterlight/templates/datacenterlight/cms/navbar.html index fdb28529..bfa3e086 100644 --- a/datacenterlight/templates/datacenterlight/cms/navbar.html +++ b/datacenterlight/templates/datacenterlight/cms/navbar.html @@ -10,13 +10,12 @@ <span class="icon-bar"></span> <span class="icon-bar"></span> </button> - {% url 'datacenterlight:index' as default_logo_url %} {% if instance.logo_dark or instance.logo_light %} - <a href="{{ instance.logo_url|default:default_logo_url }}" id="logoBlack" class="navbar-brand topnav"><img src="{{ instance.get_logo_dark }}"></a> - <a href="{{ instance.logo_url|default:default_logo_url }}" id="logoWhite" class="navbar-brand topnav"><img src="{{ instance.get_logo_light }}"></a> + <a href="{{ instance.logo_url|default:'/' }}" id="logoBlack" class="navbar-brand topnav"><img src="{{ instance.get_logo_dark }}"></a> + <a href="{{ instance.logo_url|default:'/' }}" id="logoWhite" class="navbar-brand topnav"><img src="{{ instance.get_logo_light }}"></a> {% else %} - <a href="{{ default_logo_url }}" id="logoBlack" class="navbar-brand topnav"><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a> - <a href="{{ default_logo_url }}" id="logoWhite" class="navbar-brand topnav"><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a> + <a href="/" id="logoBlack" class="navbar-brand topnav"><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a> + <a href="/" id="logoWhite" class="navbar-brand topnav"><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a> {% endif %} </div> <div class="collapse navbar-collapse" id="dcl-topnav"> @@ -27,13 +26,15 @@ {% render_plugin plugin %} </li> {% endfor %} - <li> - {% if LANGUAGE_CODE == 'en-us'%} - <a class="on-hover-border" href="{% change_lang 'de' %}">Deutsch <i class="fa fa-globe" aria-hidden="true"></i></a> - {% else %} - <a class="on-hover-border" href="{% change_lang 'en-us' %}">English <i class="fa fa-globe" aria-hidden="true"></i></a> - {% endif %} - </li> + {% if instance.language_dropdown %} + <li> + {% if LANGUAGE_CODE == 'en-us'%} + <a class="on-hover-border" href="{% change_lang 'de' %}">Deutsch <i class="fa fa-globe" aria-hidden="true"></i></a> + {% else %} + <a class="on-hover-border" href="{% change_lang 'en-us' %}">English <i class="fa fa-globe" aria-hidden="true"></i></a> + {% endif %} + </li> + {% endif %} {% if not request.user.is_authenticated %} <li> <a href="{% url 'hosting:login' %}">{% trans "Login" %} <span class="fa fa-sign-in"></span></a> diff --git a/datacenterlight/urls.py b/datacenterlight/urls.py index c08d6f01..af8e76f2 100644 --- a/datacenterlight/urls.py +++ b/datacenterlight/urls.py @@ -1,17 +1,20 @@ from django.conf.urls import url -from django.views.generic import TemplateView +from django.views.generic import TemplateView, RedirectView from .views import ( IndexView, PaymentOrderView, OrderConfirmationView, WhyDataCenterLightView, ContactUsView ) + urlpatterns = [ url(r'^$', IndexView.as_view(), name='index'), url(r'^t/$', IndexView.as_view(), name='index_t'), url(r'^g/$', IndexView.as_view(), name='index_g'), url(r'^f/$', IndexView.as_view(), name='index_f'), url(r'^l/$', IndexView.as_view(), name='index_l'), + url(r'^new/$', RedirectView.as_view(url='/cms/datacenterlight/'), + name='cms_index'), url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(), name='whydatacenterlight'), url(r'^payment/?$', PaymentOrderView.as_view(), name='payment'), diff --git a/datacenterlight/views.py b/datacenterlight/views.py index faa1d59c..5517abaf 100644 --- a/datacenterlight/views.py +++ b/datacenterlight/views.py @@ -96,12 +96,7 @@ class IndexView(CreateView): for session_var in ['specs', 'user', 'billing_address_data']: if session_var in request.session: del request.session[session_var] - - vm_templates = VMTemplate.objects.all() - context = { - 'templates': vm_templates - } - return render(request, self.template_name, context) + return HttpResponseRedirect(reverse('datacenterlight:cms_index')) def post(self, request): cores = request.POST.get('cpu') diff --git a/ungleich_page/migrations/0020_auto_20180320_0216.py b/ungleich_page/migrations/0020_auto_20180320_0216.py new file mode 100644 index 00000000..1dbd46d2 --- /dev/null +++ b/ungleich_page/migrations/0020_auto_20180320_0216.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.4 on 2018-03-19 20:46 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ungleich_page', '0019_merge'), + ] + + operations = [ + migrations.AlterField( + model_name='ungleichheaderwithbackgroundvideoslideritem', + name='btn_link', + field=models.CharField(blank=True, help_text='Url or #id to navigate on click. If this field is left empty, no button would be displayed.', max_length=100, null=True), + ), + ] diff --git a/ungleich_page/models.py b/ungleich_page/models.py index 4ffd1a33..6e25501f 100644 --- a/ungleich_page/models.py +++ b/ungleich_page/models.py @@ -125,9 +125,12 @@ class UngleichHeaderWithBackgroundVideoSliderItem(CMSPlugin): blank=True, null=True, help_text='An optional description for this slide.' ) - btn_link = models.URLField( - blank=True, null=True, - help_text='If this field is left empty, no button would be displayed.' + btn_link = models.CharField( + max_length=100, blank=True, null=True, + help_text=( + 'Url or #id to navigate on click. If this field is left empty, no ' + 'button would be displayed.' + ) ) btn_text = models.CharField( blank=True, null=True, max_length=50, diff --git a/ungleich_page/templates/ungleich_page/ungleich/_header_with_background_video_slider_item.html b/ungleich_page/templates/ungleich_page/ungleich/_header_with_background_video_slider_item.html index 78bb7ad8..f1edba16 100644 --- a/ungleich_page/templates/ungleich_page/ungleich/_header_with_background_video_slider_item.html +++ b/ungleich_page/templates/ungleich_page/ungleich/_header_with_background_video_slider_item.html @@ -22,6 +22,6 @@ {% endif %} {% if instance.btn_link %} {% trans "Learn More" as default_btn_text %} - <a class="btn btn-trans" href="{{ instance.btn_link }}">{{ instance.btn_text|default:default_btn_text }}</a> + <a class="btn btn-trans page-scroll url" href="{{ instance.btn_link }}">{{ instance.btn_text|default:default_btn_text }}</a> {% endif %} </div>