diff --git a/Changelog b/Changelog
index 98142cd4..5ab95416 100644
--- a/Changelog
+++ b/Changelog
@@ -1,20 +1,24 @@
+1.0.22: 2017-07-30
+ * #3593: [datacenterlight] Removed underbars between social icons in index
+ * #3509: [datacenterlight, hosting] Made navbar transparent and removed mobile navbar bug in login/signup/reset-password
+ * #3592: [datacenterlight] Changed “Order Now” button text to “Continue/weiter”
+ * #3579: [datacenterlight] Removed “blinks” on click on navbar menus
+ * #3577: [datacenterlight] Added backend CPU, RAM, SSD fields validation
+ * #3615: [datacenterlight] Decoupled landing VM templates from OpenNebula
+ * #3604: [datacenterlight, hosting] Font colour change for better visibility in signup/login/password request footer links
+ [all] Introduced ENABLE_DEBUG_LOGGING
+ * #3542: [datacenterlight, hosting] Fixed warning messages and deprecated url
+ * #3603: [datacenterlight] Removed navbar language option dropdown
+ * #3629: [datacenterlight] Fixed navbar language switching bug
1.0.21: 2017-07-21
* #3591: [datacenterlight, payment] Fixed card holder name to appear on Confirm Order page
* #3558: [datacenterlight] Changed font family and background color for header
* #3581: [datacenterlight] Lead font weight change
* #3584: [all] Add flag is_superuser=True in MyUserManager
1.0.20: 2017-07-18
- * #3590: [digitalglarus] Added impact hub partner logo and text in digitalglarus
- [datacenterlight, hosting] Fixed overlapping of date and billing address in the mobile view
- * #3580: [datacenterlight, hosting] Introduced newly designed payment page. Cust1.0.20: 2017-07-18
* #3590: [digitalglarus] Added impact hub partner logo and text in digitalglarus
[datacenterlight, hosting] Fixed overlapping of date and billing address in the mobile view
* #3580: [datacenterlight, hosting] Introduced newly designed payment page. Customized Stripe credit card input fields
- * #3568: [all] Improved the way of adding Google analytics (ga) code. We now have ga code for ungleich, digitalglarus, blog, hosting
- and datacenterlight
- * #3564: [datacenterlight] Improved calculator form validations, both client side and server side
- [datacenterlight] Changed "Place order" button to "Submit" in the payment page
- * #3540: [datacenterlight] Improved credit card section with Stripe clarification texts and corresponding DE translationsomized Stripe credit card input fields
* #3568: [all] Improved the way of adding Google analytics (ga) code. We now have ga code for ungleich, digitalglarus, blog, hosting
and datacenterlight
* #3564: [datacenterlight] Improved calculator form validations, both client side and server side
diff --git a/alplora/urls.py b/alplora/urls.py
index 071bb2ac..058f5499 100644
--- a/alplora/urls.py
+++ b/alplora/urls.py
@@ -4,9 +4,9 @@ from .views import IndexView, LoginView, ContactView
urlpatterns = [
- url(r'^/?$', IndexView.as_view(), name='index'),
- url(r'/login/', LoginView.as_view(), name='login'),
- url(r'/contact', ContactView.as_view(), name='contact'),
+ url(r'^$', IndexView.as_view(), name='index'),
+ url(r'login/', LoginView.as_view(), name='login'),
+ url(r'contact', ContactView.as_view(), name='contact'),
# url(r'^/beta-program/?$', BetaProgramView.as_view(), name='beta'),
# url(r'^/landing/?$', LandingProgramView.as_view(), name='landing'),
]
diff --git a/datacenterlight/static/datacenterlight/css/landing-page.css b/datacenterlight/static/datacenterlight/css/landing-page.css
index 07ecc3b6..ba2546c8 100755
--- a/datacenterlight/static/datacenterlight/css/landing-page.css
+++ b/datacenterlight/static/datacenterlight/css/landing-page.css
@@ -156,6 +156,14 @@ h6 {
background-color: transparent;
}
+.navbar-transparent .navbar-nav>li>.on-hover-border {
+ transition: all 0.3s linear;
+ box-shadow: none;
+}
+.navbar-transparent .navbar-nav>li>.on-hover-border:hover {
+ box-shadow: 0 0 0 1px #eee;
+ border-radius: 5px;
+}
.navbar-default .btn-link {
box-shadow: none;
}
@@ -196,44 +204,61 @@ h6 {
margin-right: 5px;
font-family: 'Lato', sans-serif;
}
-
-.nav-language .drop-language {
- position: absolute;
+.nav-language .drop-language{
+ /*position: absolute;*/
top: 45px;
- left: -8px;
- background: #fff;
+ left: auto !important;
+ /* background: #fff; */
width: 100px;
+ min-width: 100px;
height: 40px;
padding: 9px 10px;
- -webkit-box-shadow: -8px 13px 31px -8px rgba(77, 77, 77, 1);
- -moz-box-shadow: -8px 13px 31px -8px rgba(77, 77, 77, 1);
- box-shadow: -8px 13px 31px -8px rgba(77, 77, 77, 1);
- display: none;
+ -webkit-box-shadow: -8px 13px 31px -8px rgba(77,77,77,1);
+ -moz-box-shadow: -8px 13px 31px -8px rgba(77,77,77,1);
+ box-shadow: -8px 13px 31px -8px rgba(77,77,77,1);
+ /*display: none;*/
z-index: 100;
/* margin-left: 10px; */
text-align: center;
border-radius: 4px;
}
-.nav-language .drop-language a {
- cursor: pointer;
- font-family: 'Lato', sans-serif;
+.nav-language .open .drop-language{
+ width: 100px;
+ min-width: 100px;
}
-.navbar-transparent .nav-language .drop-language {
+.nav-language .drop-language a{
+ cursor: pointer;
+ padding: 5px 10px !important;
+ font-family: 'Lato-Light', sans-serif;
+}
+
+/* Show the dropdown menu on hover */
+@media (min-width: 769px) {
+ .nav-language .dropdown:hover .dropdown-menu {
+ display: block;
+ }
+}
+@media (max-width: 767px){
+ .nav-language .open .dropdown-menu>li>a {
+ line-height: 1.42857143;
+ }
+}
+
+.navbar-transparent .nav-language .drop-language{
background: transparent;
border: 1px solid #fff;
}
.navbar-transparent .nav-language .drop-language a {
color: #fff;
+ padding: 5px 10px !important;
font-family: 'Lato-Light', sans-serif;
}
-
-.nav-language:hover .drop-language {
+/* .nav-language:hover .drop-language{
display: block;
-}
-
+} */
.intro-header {
height: 100vh;
text-align: center;
@@ -1188,8 +1213,8 @@ tech-sub-sec h2 {
font-size: 14px;
color: #777;
}
- .nav-language:hover {
- height: 80px;
+ .nav-language:hover{
+ /*height: 80px;*/
}
.navbar-transparent .nav-language .select-language {
color: #777;
diff --git a/datacenterlight/static/datacenterlight/js/main.js b/datacenterlight/static/datacenterlight/js/main.js
index 44b92a0c..5594fe11 100644
--- a/datacenterlight/static/datacenterlight/js/main.js
+++ b/datacenterlight/static/datacenterlight/js/main.js
@@ -91,16 +91,12 @@
var href = $(this).attr('data-url');
$('.navbar-collapse').removeClass('in');
$('.navbar-collapse').addClass('collapsing');
- var url = window.location.pathname;
- var urlSplit = url.split('/');
- if (urlSplit.length === 3 && urlSplit[2] === 'datacenterlight') {
+ if ($(href).length) {
$('html, body').animate({
scrollTop: $(href).offset().top
}, 1000);
} else {
- var allUrl = window.location.href;
- var redirect = allUrl.split('whydatacenterlight')
- window.location.href = '/en-us/datacenterlight' + href;
+ window.location.href = '/datacenterlight' + href;
}
});
}
diff --git a/datacenterlight/templates/datacenterlight/includes/_footer.html b/datacenterlight/templates/datacenterlight/includes/_footer.html
index 2a53c2e1..f9d0758c 100644
--- a/datacenterlight/templates/datacenterlight/includes/_footer.html
+++ b/datacenterlight/templates/datacenterlight/includes/_footer.html
@@ -4,7 +4,7 @@
-
+
{% if request.resolver_match.url_name == "index" %}
-
@@ -45,7 +45,7 @@
{% endif %}
-
+
Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved
diff --git a/datacenterlight/templates/datacenterlight/includes/_navbar.html b/datacenterlight/templates/datacenterlight/includes/_navbar.html
index 84358b4d..99f6a4a8 100644
--- a/datacenterlight/templates/datacenterlight/includes/_navbar.html
+++ b/datacenterlight/templates/datacenterlight/includes/_navbar.html
@@ -1,8 +1,6 @@
-{% load staticfiles i18n%}
-{% get_current_language as LANGUAGE_CODE %}
-{% load custom_tags %}
+{% load staticfiles i18n%} {% get_current_language as LANGUAGE_CODE %} {% load custom_tags %}
-
+
\ No newline at end of file
diff --git a/datacenterlight/urls.py b/datacenterlight/urls.py
index a08bacdb..a3aed7a6 100644
--- a/datacenterlight/urls.py
+++ b/datacenterlight/urls.py
@@ -5,13 +5,13 @@ from .views import IndexView, BetaProgramView, LandingProgramView, BetaAccessVie
urlpatterns = [
- url(r'^/?$', IndexView.as_view(), name='index'),
- url(r'^/whydatacenterlight/?$', WhyDataCenterLightView.as_view(), name='whydatacenterlight'),
- url(r'^/beta-program/?$', BetaProgramView.as_view(), name='beta'),
- url(r'^/landing/?$', LandingProgramView.as_view(), name='landing'),
- url(r'^/pricing/?$', PricingView.as_view(), name='pricing'),
- url(r'^/payment/?$', PaymentOrderView.as_view(), name='payment'),
- url(r'^/order-confirmation/?$', OrderConfirmationView.as_view(), name='order_confirmation'),
- url(r'^/order-success/?$', SuccessView.as_view(), name='order_success'),
- url(r'^/beta_access?$', BetaAccessView.as_view(), name='beta_access'),
+ url(r'^$', IndexView.as_view(), name='index'),
+ url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(), name='whydatacenterlight'),
+ url(r'^beta-program/?$', BetaProgramView.as_view(), name='beta'),
+ url(r'^landing/?$', LandingProgramView.as_view(), name='landing'),
+ url(r'^pricing/?$', PricingView.as_view(), name='pricing'),
+ url(r'^payment/?$', PaymentOrderView.as_view(), name='payment'),
+ url(r'^order-confirmation/?$', OrderConfirmationView.as_view(), name='order_confirmation'),
+ url(r'^order-success/?$', SuccessView.as_view(), name='order_success'),
+ url(r'^beta_access?$', BetaAccessView.as_view(), name='beta_access'),
]
diff --git a/digitalglarus/urls.py b/digitalglarus/urls.py
index eba9896e..92cd8e11 100644
--- a/digitalglarus/urls.py
+++ b/digitalglarus/urls.py
@@ -1,5 +1,6 @@
from django.conf.urls import url
from django.utils.translation import ugettext_lazy as _
+from django.contrib.auth import views as auth_views
from . import views
from .views import ContactView, IndexView, HistoryView, LoginView, SignupView,\
@@ -20,7 +21,7 @@ urlpatterns = [
url(_(r'contact/?$'), ContactView.as_view(), name='contact'),
url(_(r'login/?$'), LoginView.as_view(), name='login'),
url(_(r'signup/?$'), SignupView.as_view(), name='signup'),
- url(r'^logout/?$', 'django.contrib.auth.views.logout',
+ url(r'^logout/?$', auth_views.logout,
{'next_page': '/digitalglarus/login?logged_out=true'}, name='logout'),
url(r'reset-password/?$', PasswordResetView.as_view(), name='reset_password'),
url(r'reset-password-confirm/(?P[0-9A-Za-z]+)-(?P.+)/$',
diff --git a/dynamicweb/settings/base.py b/dynamicweb/settings/base.py
index bd6e30e3..278d08fc 100644
--- a/dynamicweb/settings/base.py
+++ b/dynamicweb/settings/base.py
@@ -199,13 +199,11 @@ DATABASES = {
}
}
-
AUTHENTICATION_BACKENDS = (
'guardian.backends.ObjectPermissionBackend',
'django.contrib.auth.backends.ModelBackend',
)
-
# Internationalization
# https://docs.djangoproject.com/en/1.7/topics/i18n/
@@ -464,7 +462,6 @@ META_USE_SITES = True
PARLER_LANGUAGES = {1: ({'code': 'en-us'}, {'code': 'de'},)}
AUTH_USER_MODEL = 'membership.CustomUser'
-
# PAYMENT
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
@@ -481,7 +478,6 @@ STRIPE_API_PUBLIC_KEY = env('STRIPE_API_PUBLIC_KEY')
ANONYMOUS_USER_NAME = 'anonymous@ungleich.ch'
GUARDIAN_GET_INIT_ANONYMOUS_USER = 'membership.models.get_anonymous_user_instance'
-
#############################################
# configurations for opennebula-integration #
#############################################
@@ -508,7 +504,6 @@ OPENNEBULA_PORT = env('OPENNEBULA_PORT')
# default value is /RPC2
OPENNEBULA_ENDPOINT = env('OPENNEBULA_ENDPOINT')
-
# dcl email configurations
DCL_TEXT = env('DCL_TEXT')
DCL_SUPPORT_FROM_ADDRESS = env('DCL_SUPPORT_FROM_ADDRESS')
@@ -526,9 +521,31 @@ GOOGLE_ANALYTICS_PROPERTY_IDS = {
'dynamicweb-staging.ungleich.ch': 'staging'
}
+ENABLE_DEBUG_LOGGING = bool_env('ENABLE_DEBUG_LOGGING')
+
+if ENABLE_DEBUG_LOGGING:
+ LOGGING = {
+ 'version': 1,
+ 'disable_existing_loggers': False,
+ 'handlers': {
+ 'file': {
+ 'level': 'DEBUG',
+ 'class': 'logging.FileHandler',
+ 'filename': "{PROJECT_DIR}/debug.log".format(PROJECT_DIR=PROJECT_DIR),
+ },
+ },
+ 'loggers': {
+ 'django': {
+ 'handlers': ['file'],
+ 'level': 'DEBUG',
+ 'propagate': True,
+ },
+ },
+ }
+
DEBUG = bool_env('DEBUG')
if DEBUG:
- from .local import * # flake8: noqa
+ from .local import * # flake8: noqa
else:
- from .prod import * # flake8: noqa
+ from .prod import * # flake8: noqa
diff --git a/dynamicweb/urls.py b/dynamicweb/urls.py
index 66bf74df..b5cccff3 100644
--- a/dynamicweb/urls.py
+++ b/dynamicweb/urls.py
@@ -1,8 +1,8 @@
-from django.conf.urls import patterns, include, url
+from django.conf.urls import include, url
from django.contrib import admin
-# deprecated in version 1.8
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
+from django.views import i18n, static as static_view
from django.conf import settings
from hosting.views import RailsHostingView, DjangoHostingView, NodeJSHostingView
@@ -22,17 +22,17 @@ urlpatterns = [url(r'^index.html$', LandingView.as_view()),
url(r'^nosystemd/', include('nosystemd.urls', namespace="nosystemd")),
url(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')),
url(r'^jsi18n/(?P\S+?)/$',
- 'django.views.i18n.javascript_catalog'),
+ i18n.javascript_catalog),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
# note the django CMS URLs included via i18n_patterns
-urlpatterns += i18n_patterns('',
- url(r'^/?$', LandingView.as_view()),
+urlpatterns += i18n_patterns(
+ url(r'^$', LandingView.as_view()),
url(r'^admin/', include(admin.site.urls)),
- url(r'^datacenterlight', include('datacenterlight.urls', namespace="datacenterlight")),
+ url(r'^datacenterlight/', include('datacenterlight.urls', namespace="datacenterlight")),
url(r'^hosting/', RedirectView.as_view(
url=reverse_lazy('hosting:login')), name='redirect_hosting_login'),
- url(r'^alplora', include('alplora.urls', namespace="alplora")),
+ url(r'^alplora/', include('alplora.urls', namespace="alplora")),
url(r'^membership/', include(membership_urls)),
url(r'^digitalglarus/', include('digitalglarus.urls',
namespace="digitalglarus")),
@@ -43,11 +43,11 @@ urlpatterns += i18n_patterns('',
url(r'^blog/', include('ungleich.urls', namespace='ungleich')),
url(r'^', include('cms.urls'))
)
-urlpatterns += patterns('',
+urlpatterns += [
url(r'^media/(?P.*)$',
- 'django.views.static.serve', {
+ static_view.serve, {
'document_root': settings.MEDIA_ROOT,
}),
- )
+ ]
if settings.DEBUG:
- urlpatterns += patterns('', url(r'^__debug__/', include(debug_toolbar.urls)))
+ urlpatterns += [url(r'^__debug__/', include(debug_toolbar.urls))]
diff --git a/hosting/static/hosting/css/landing-page.css b/hosting/static/hosting/css/landing-page.css
index 63a2f54a..a7d69094 100644
--- a/hosting/static/hosting/css/landing-page.css
+++ b/hosting/static/hosting/css/landing-page.css
@@ -714,3 +714,8 @@ a.unlink:hover {
width: 100% !important;
}
}
+
+
+.footer-light a:hover, .footer-light a:focus, .footer-light a:active {
+ color: #ddd;
+}
\ No newline at end of file
diff --git a/hosting/templates/hosting/base_short.html b/hosting/templates/hosting/base_short.html
index 39b5a0fc..b4f4949e 100644
--- a/hosting/templates/hosting/base_short.html
+++ b/hosting/templates/hosting/base_short.html
@@ -119,7 +119,9 @@
{% else %}
- {% include "datacenterlight/includes/_footer.html" %}
+
{% endif %}
diff --git a/hosting/urls.py b/hosting/urls.py
index 495ac312..c243f29b 100644
--- a/hosting/urls.py
+++ b/hosting/urls.py
@@ -1,4 +1,5 @@
from django.conf.urls import url
+from django.contrib.auth import views as auth_views
from .views import DjangoHostingView, RailsHostingView, PaymentVMView,\
NodeJSHostingView, LoginView, SignupView, SignupValidateView, SignupValidatedView, IndexView, \
@@ -39,7 +40,7 @@ urlpatterns = [
url(r'reset-password/?$', PasswordResetView.as_view(), name='reset_password'),
url(r'reset-password-confirm/(?P[0-9A-Za-z]+)-(?P.+)/$',
PasswordResetConfirmView.as_view(), name='reset_password_confirm'),
- url(r'^logout/?$', 'django.contrib.auth.views.logout',
+ url(r'^logout/?$', auth_views.logout,
{'next_page': '/hosting/login?logged_out=true'}, name='logout'),
url(r'^validate/(?P.*)/$', SignupValidatedView.as_view(), name='validate')
]
diff --git a/nosystemd/urls.py b/nosystemd/urls.py
index d95127da..7c3965f8 100644
--- a/nosystemd/urls.py
+++ b/nosystemd/urls.py
@@ -1,4 +1,5 @@
from django.conf.urls import url
+from django.contrib.auth import views as auth_views
from .views import LandingView, LoginView, SignupView, PasswordResetView,\
PasswordResetConfirmView, DonationView, DonationDetailView, ChangeDonatorStatusDetailView,\
@@ -8,7 +9,7 @@ urlpatterns = [
url(r'^$', LandingView.as_view(), name='landing'),
url(r'^login/?$', LoginView.as_view(), name='login'),
url(r'^signup/?$', SignupView.as_view(), name='signup'),
- url(r'^logout/?$', 'django.contrib.auth.views.logout',
+ url(r'^logout/?$', auth_views.logout,
{'next_page': '/nosystemd/login?logged_out=true'}, name='logout'),
url(r'reset-password/?$', PasswordResetView.as_view(), name='reset_password'),
url(r'reset-password-confirm/(?P[0-9A-Za-z]+)-(?P.+)/$',