From 6d18a909fbd3ddc7cc9d1d4b3b55564e6b27042c Mon Sep 17 00:00:00 2001 From: Situphen Date: Sat, 5 Dec 2015 15:00:02 +0100 Subject: [PATCH 1/8] =?UTF-8?q?Pr=C3=A9pare=20l'utilisation=20de=20changem?= =?UTF-8?q?ents=20visuels=20temporaires=20(aka=20th=C3=A8mes)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/base.html | 11 +++++++++- zds/member/api/serializers.py | 2 +- zds/member/api/tests.py | 1 + zds/member/commons.py | 3 ++- zds/member/forms.py | 4 ++++ .../0004_profile_allow_temp_visual_changes.py | 20 +++++++++++++++++++ zds/member/models.py | 2 ++ zds/member/views.py | 2 ++ zds/settings.py | 3 ++- 9 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 zds/member/migrations/0004_profile_allow_temp_visual_changes.py diff --git a/templates/base.html b/templates/base.html index 971ef6745c..a848a9ed65 100644 --- a/templates/base.html +++ b/templates/base.html @@ -113,7 +113,16 @@ {# OpenSearch plugin autodiscovery #} - diff --git a/zds/member/api/serializers.py b/zds/member/api/serializers.py index b198d87e4b..28ca7d6f40 100644 --- a/zds/member/api/serializers.py +++ b/zds/member/api/serializers.py @@ -80,7 +80,7 @@ class Meta: model = Profile fields = ('id', 'username', 'email', 'is_active', 'date_joined', 'site', 'avatar_url', 'biography', 'sign', 'show_email', - 'show_sign', 'hover_or_click', 'email_for_answer', 'last_visit') + 'show_sign', 'hover_or_click', 'allow_temp_visual_changes', 'email_for_answer', 'last_visit') def __init__(self, *args, **kwargs): """ diff --git a/zds/member/api/tests.py b/zds/member/api/tests.py index de390ba0e2..abb807c93b 100644 --- a/zds/member/api/tests.py +++ b/zds/member/api/tests.py @@ -352,6 +352,7 @@ def test_detail_of_the_member(self): self.assertFalse(response.data.get('show_email')) self.assertEqual(profile.show_sign, response.data.get('show_sign')) self.assertEqual(profile.hover_or_click, response.data.get('hover_or_click')) + self.assertEqual(profile.allow_temp_visual_changes, response.data.get('allow_temp_visual_changes')) self.assertEqual(profile.email_for_answer, response.data.get('email_for_answer')) def test_detail_of_the_member_not_authenticated(self): diff --git a/zds/member/commons.py b/zds/member/commons.py index 57bc814de2..f2bfb8a051 100644 --- a/zds/member/commons.py +++ b/zds/member/commons.py @@ -32,7 +32,8 @@ def create_profile(self, data): user.set_password(password) user.is_active = False user.backend = 'django.contrib.auth.backends.ModelBackend' - profile = Profile(user=user, show_email=False, show_sign=True, hover_or_click=True, email_for_answer=False) + profile = Profile(user=user, show_email=False, show_sign=True, hover_or_click=True, + allow_temp_visual_changes=True, email_for_answer=False) return profile def save_profile(self, profile): diff --git a/zds/member/forms.py b/zds/member/forms.py index b7c8ac50c0..4aa6bca21b 100644 --- a/zds/member/forms.py +++ b/zds/member/forms.py @@ -293,6 +293,7 @@ class ProfileForm(MiniProfileForm): ('show_email', _(u"Afficher mon adresse courriel publiquement")), ('show_sign', _(u"Afficher les signatures")), ('hover_or_click', _(u"Cochez pour dérouler les menus au survol")), + ('allow_temp_visual_changes', _(u"Activer les changements visuels temporaires ?")), ('email_for_answer', _(u'Recevez un courriel lorsque vous ' u'recevez une réponse à un message privé')), ), @@ -318,6 +319,9 @@ def __init__(self, *args, **kwargs): if 'hover_or_click' in initial and initial['hover_or_click']: self.fields['options'].initial += 'hover_or_click' + if 'allow_temp_visual_changes' in initial and initial['allow_temp_visual_changes']: + self.fields['options'].initial += 'allow_temp_visual_changes' + if 'email_for_answer' in initial and initial['email_for_answer']: self.fields['options'].initial += 'email_for_answer' diff --git a/zds/member/migrations/0004_profile_allow_temp_visual_changes.py b/zds/member/migrations/0004_profile_allow_temp_visual_changes.py new file mode 100644 index 0000000000..95604a82de --- /dev/null +++ b/zds/member/migrations/0004_profile_allow_temp_visual_changes.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('member', '0003_auto_20151019_2333'), + ] + + operations = [ + migrations.AddField( + model_name='profile', + name='allow_temp_visual_changes', + field=models.BooleanField(default=True, verbose_name=b'Activer les changements visuels temporaires ?'), + preserve_default=True, + ), + ] diff --git a/zds/member/models.py b/zds/member/models.py index 47baf7fdf0..f95f837ab7 100644 --- a/zds/member/models.py +++ b/zds/member/models.py @@ -66,6 +66,8 @@ class Meta: # TODO: Change this name. This is a boolean: "true" is "hover" or "click" ?! hover_or_click = models.BooleanField('Survol ou click ?', default=False) + allow_temp_visual_changes = models.BooleanField('Activer les changements visuels temporaires ?', default=True) + email_for_answer = models.BooleanField('Envoyer pour les réponse MP', default=False) # SdZ tutorial IDs separated by columns (:). diff --git a/zds/member/views.py b/zds/member/views.py index 9304f7bdcb..02aa9826ea 100644 --- a/zds/member/views.py +++ b/zds/member/views.py @@ -115,6 +115,7 @@ def get_form(self, form_class): 'show_email': profile.show_email, 'show_sign': profile.show_sign, 'hover_or_click': profile.hover_or_click, + 'allow_temp_visual_changes': profile.allow_temp_visual_changes, 'email_for_answer': profile.email_for_answer, 'sign': profile.sign }) @@ -143,6 +144,7 @@ def update_profile(self, profile, form): profile.show_email = 'show_email' in cleaned_data_options profile.show_sign = 'show_sign' in cleaned_data_options profile.hover_or_click = 'hover_or_click' in cleaned_data_options + profile.allow_temp_visual_changes = 'allow_temp_visual_changes' in cleaned_data_options profile.email_for_answer = 'email_for_answer' in cleaned_data_options profile.avatar_url = form.data['avatar_url'] profile.sign = form.data['sign'] diff --git a/zds/settings.py b/zds/settings.py index 84005931f0..8c37973e67 100644 --- a/zds/settings.py +++ b/zds/settings.py @@ -500,7 +500,8 @@ }, 'paginator': { 'folding_limit': 4 - } + }, + 'visual_changes': '' } LOGIN_REDIRECT_URL = "/" From bce3f5d9f7bcd90ce9325fc1dc55e18622770ff0 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Sun, 14 Dec 2014 23:16:11 +0100 Subject: [PATCH 2/8] Let it snow :notes: --- assets/js/snow.js | 117 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 assets/js/snow.js diff --git a/assets/js/snow.js b/assets/js/snow.js new file mode 100644 index 0000000000..f6d064ee17 --- /dev/null +++ b/assets/js/snow.js @@ -0,0 +1,117 @@ +var LetItSnow = function(element) { + this._parent = element; + + this._canvas = document.createElement("canvas"); + this.resize(); + + this._canvas.style.zIndex = 0; + this._canvas.style.position = "absolute"; + this._canvas.style.top = this._canvas.style.left = this._canvas.style.right = this._canvas.style.bottom = 0; + + for(var i = 0; i < this._parent.children.length; i++) { // Set all the children on front of the canvas + this._parent.children[i].style.position = "relative"; + this._parent.children[i].style.zIndex = this._parent.children[i].style.zIndex || 1; + } + + // Append the canvas... + if(this._parent.children.length > 0) { // As first element if there is other children + this._parent.insertBefore(this._canvas, this._parent.children[0]); + } + else { + this._parent.appendChild(this._canvas); + } + + this._ctx = this._canvas.getContext("2d"); + + this.setup(); +}; + +LetItSnow.prototype = { + PARTICLES_COLOR: "rgba(255, 255, 255, 0.8)", // Color + MAX_PARTICLES: 25, // Particles limits + SPAWN_RATE: 100, // time (ms) between two particles spawns + PARTICLES_SPEED: 15, // Base speed + PARTICLES_SIZE: 2, // Base size + TURBULENCES_X: 1, // Turbulences amount (X) + TURBULENCES_Y: 0.5, // Turbulences amount (Y) + TURBULENCES_SPEED: 1, // Turbulences speed + MAX_TIMESHIFT: Math.PI / 3, // Max time shifting (turbulences) between two particles + + setup: function() { + this.particles = []; + this._lastSpawn = this._lastLoop = Date.now(); + this.loop(); + + window.addEventListener("resize", this.resize.bind(this)); + }, + + resize: function() { + var rect = this._parent.getBoundingClientRect(); + console.log(rect); + + this.H = rect.height; + this.W = rect.width; + + this._canvas.height = this.H; + this._canvas.width = this.W; + }, + + spawnParticle: function() { + this.particles.push({ + x: Math.random() * this.W, + y: - this.PARTICLES_SIZE, + d: Math.random() + 1, // Density (affects speed and size) + s: Math.random() * this.MAX_TIMESHIFT // Time shift + }); + }, + + loop: function() { + this.update(); + this.draw(); + + requestAnimationFrame(this.loop.bind(this)); + }, + + update: function() { + var p, now = Date.now(), delta = now - this._lastLoop; + for(var i in this.particles) { + p = this.particles[i]; + p.y += (delta / 1000) * (this.PARTICLES_SPEED * p.d * (1.5 + Math.sin(now * this.TURBULENCES_SPEED / 1000 + p.s) * this.TURBULENCES_Y)); + p.x += (delta / 1000) * (this.PARTICLES_SPEED * p.d* (Math.cos(now * this.TURBULENCES_SPEED / 1000 + p.s) * this.TURBULENCES_X)); + + if(p.y - (p.d * 4) > this.H || p.x - (p.d * 4) > this.W || p.x + (p.d * 4) < 0) { + this.particles.splice(i, 1); + } + } + + if(this._lastSpawn <= now - this.SPAWN_RATE && this.particles.length < this.MAX_PARTICLES) { + this._lastSpawn = now; + this.spawnParticle(); + } + + this._lastLoop = now; + }, + + draw: function() { + this._ctx.clearRect(0, 0, this.W, this.H); + + this._ctx.fillStyle = this.PARTICLES_COLOR; + this._ctx.beginPath(); + + var p; + for(var i in this.particles) { + p = this.particles[i]; + + this._ctx.moveTo(p.x, p.y); + this._ctx.arc(p.x, p.y, p.d * this.PARTICLES_SIZE, 0, Math.PI*2, true); + } + + this._ctx.fill(); + } +}; + +window.addEventListener("DOMContentLoaded", function() { + setTimeout(function() { + window.snow = new LetItSnow(document.querySelector(".header-container > header")); + }, 1000); // to be sure to have the DOM completely ready +}); From 01e29fcf250e590cd4e895966d90e7f86e5bba66 Mon Sep 17 00:00:00 2001 From: Situphen Date: Thu, 12 Nov 2015 21:35:48 +0100 Subject: [PATCH 3/8] =?UTF-8?q?Corrige=20un=20petit=20probl=C3=A8me=20de?= =?UTF-8?q?=20z-index=20sur=20la=20neige?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/js/snow.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/assets/js/snow.js b/assets/js/snow.js index f6d064ee17..73c287b602 100644 --- a/assets/js/snow.js +++ b/assets/js/snow.js @@ -4,14 +4,14 @@ var LetItSnow = function(element) { this._canvas = document.createElement("canvas"); this.resize(); - this._canvas.style.zIndex = 0; + this._canvas.style.zIndex = -1; this._canvas.style.position = "absolute"; this._canvas.style.top = this._canvas.style.left = this._canvas.style.right = this._canvas.style.bottom = 0; - for(var i = 0; i < this._parent.children.length; i++) { // Set all the children on front of the canvas - this._parent.children[i].style.position = "relative"; - this._parent.children[i].style.zIndex = this._parent.children[i].style.zIndex || 1; - } + this._canvas.style.background = window + .getComputedStyle(this._parent) + .getPropertyValue('background-color'); + this._parent.style.background = "transparent"; // Append the canvas... if(this._parent.children.length > 0) { // As first element if there is other children From ce71ba8b7024dd5238de39d5244e016065998baa Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Thu, 10 Dec 2015 17:14:50 +0100 Subject: [PATCH 4/8] `visual-changes` sous forme de tableau + prend le prend en compte dans le script de neige --- assets/js/snow.js | 10 ++++++---- templates/base.html | 8 ++------ zds/settings.py | 4 ++-- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/assets/js/snow.js b/assets/js/snow.js index 73c287b602..415fef057b 100644 --- a/assets/js/snow.js +++ b/assets/js/snow.js @@ -10,7 +10,7 @@ var LetItSnow = function(element) { this._canvas.style.background = window .getComputedStyle(this._parent) - .getPropertyValue('background-color'); + .getPropertyValue("background-color"); this._parent.style.background = "transparent"; // Append the canvas... @@ -111,7 +111,9 @@ LetItSnow.prototype = { }; window.addEventListener("DOMContentLoaded", function() { - setTimeout(function() { - window.snow = new LetItSnow(document.querySelector(".header-container > header")); - }, 1000); // to be sure to have the DOM completely ready + if($("body").hasClass("vc-snow")) { + setTimeout(function() { + window.snow = new LetItSnow(document.querySelector(".header-container > header")); + }, 1000); // to be sure to have the DOM completely ready + } }); diff --git a/templates/base.html b/templates/base.html index a848a9ed65..be6754bbcf 100644 --- a/templates/base.html +++ b/templates/base.html @@ -114,15 +114,11 @@ -{% if user.is_authenticated %} - {% if user.profile.allow_temp_visual_changes %} - {% set app.visual_changes as visual_changes %} - {% endif %} -{% else %} +{% if not user.is_authenticated or user.profile.allow_temp_visual_changes %} {% set app.visual_changes as visual_changes %} {% endif %} - diff --git a/zds/settings.py b/zds/settings.py index 8c37973e67..ee64e6f51b 100644 --- a/zds/settings.py +++ b/zds/settings.py @@ -177,7 +177,7 @@ 'zds.gallery', 'zds.mp', 'zds.article', - + 'zds.forum', 'zds.tutorial', 'zds.tutorialv2', @@ -501,7 +501,7 @@ 'paginator': { 'folding_limit': 4 }, - 'visual_changes': '' + 'visual_changes': [] } LOGIN_REDIRECT_URL = "/" From 27e5b4f2cff93139e04046687b4831eb6020f936 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Thu, 10 Dec 2015 20:10:15 +0100 Subject: [PATCH 5/8] Ajout de la doc pour les changements visuels + typo --- .../elements-specifiques-au-site.rst | 30 +++++++++++++++++++ zds/member/forms.py | 2 +- .../0004_profile_allow_temp_visual_changes.py | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/doc/source/front-end/elements-specifiques-au-site.rst b/doc/source/front-end/elements-specifiques-au-site.rst index f4f8aecbe0..b8d3542e57 100644 --- a/doc/source/front-end/elements-specifiques-au-site.rst +++ b/doc/source/front-end/elements-specifiques-au-site.rst @@ -231,3 +231,33 @@ Pour y remédier, il faut toujours mettre à la fin de votre liste d'articles tr Voici trois tutoriels sur deux colonnes sans le problème (Pour l'explication technique, c'est dû à l'utilisation de *flexbox*.) + +Ajouter un design temporaire +============================ + +Il y a dans le fichier ``settings.py`` un tableau ``ZDS_APP.visual_changes``. Ce tableau de chaînes de caractère est injecté sous forme de classes au body, avec comme prefixe ``vc-`` (si l'utilisateur n'as pas bloqué les designs temporaires dans ses paramètres). + +Il suffit donc, dans le style et dans les scripts si le ``body`` a la classe ``vc-{...}`` correspondante au changement visuel. + +.. sourcecode:: scss + + .element { + color: #FFF; + body.vc-noel & { // Donnera donc body.vc-noel .element + color #F00; + } + } + +.. sourcecode:: javascript + + if($("body").hasClass("vc-snow")) { + // ... + } + + +Actuellement, le seul changement visuel disponible est ``snow``, qui rajoute de la neige dans le header pour la période de noël. Pour l'activer, il faut ajouter dans le fichier ``settings_prod.py``: + +.. sourcecode:: python + + ZDS_APP['visual_changes'] = ['snow'] + diff --git a/zds/member/forms.py b/zds/member/forms.py index 4aa6bca21b..b784771130 100644 --- a/zds/member/forms.py +++ b/zds/member/forms.py @@ -293,7 +293,7 @@ class ProfileForm(MiniProfileForm): ('show_email', _(u"Afficher mon adresse courriel publiquement")), ('show_sign', _(u"Afficher les signatures")), ('hover_or_click', _(u"Cochez pour dérouler les menus au survol")), - ('allow_temp_visual_changes', _(u"Activer les changements visuels temporaires ?")), + ('allow_temp_visual_changes', _(u"Activer les changements visuels temporaires")), ('email_for_answer', _(u'Recevez un courriel lorsque vous ' u'recevez une réponse à un message privé')), ), diff --git a/zds/member/migrations/0004_profile_allow_temp_visual_changes.py b/zds/member/migrations/0004_profile_allow_temp_visual_changes.py index 95604a82de..3f4cbf6199 100644 --- a/zds/member/migrations/0004_profile_allow_temp_visual_changes.py +++ b/zds/member/migrations/0004_profile_allow_temp_visual_changes.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='profile', name='allow_temp_visual_changes', - field=models.BooleanField(default=True, verbose_name=b'Activer les changements visuels temporaires ?'), + field=models.BooleanField(default=True, verbose_name=b'Activer les changements visuels temporaires'), preserve_default=True, ), ] From 463e871aaf59e456a8121c66aa15f4e5a8d603f6 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Fri, 11 Dec 2015 20:48:50 +0100 Subject: [PATCH 6/8] visual-changes: Typo --- doc/source/front-end/elements-specifiques-au-site.rst | 8 ++++---- zds/member/models.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/source/front-end/elements-specifiques-au-site.rst b/doc/source/front-end/elements-specifiques-au-site.rst index b8d3542e57..b35bdef005 100644 --- a/doc/source/front-end/elements-specifiques-au-site.rst +++ b/doc/source/front-end/elements-specifiques-au-site.rst @@ -235,7 +235,7 @@ Pour y remédier, il faut toujours mettre à la fin de votre liste d'articles tr Ajouter un design temporaire ============================ -Il y a dans le fichier ``settings.py`` un tableau ``ZDS_APP.visual_changes``. Ce tableau de chaînes de caractère est injecté sous forme de classes au body, avec comme prefixe ``vc-`` (si l'utilisateur n'as pas bloqué les designs temporaires dans ses paramètres). +Il y a dans le fichier ``settings.py`` un tableau ``ZDS_APP.visual_changes``. Ce tableau de chaînes de caractères est injecté sous forme de classes au body, avec comme prefixe ``vc-`` (si l'utilisateur n'as pas bloqué les designs temporaires dans ses paramètres). Il suffit donc, dans le style et dans les scripts si le ``body`` a la classe ``vc-{...}`` correspondante au changement visuel. @@ -243,7 +243,7 @@ Il suffit donc, dans le style et dans les scripts si le ``body`` a la classe ``v .element { color: #FFF; - body.vc-noel & { // Donnera donc body.vc-noel .element + body.vc-clem-christmas & { // Donnera donc body.vc-clem-christmas .element color #F00; } } @@ -255,9 +255,9 @@ Il suffit donc, dans le style et dans les scripts si le ``body`` a la classe ``v } -Actuellement, le seul changement visuel disponible est ``snow``, qui rajoute de la neige dans le header pour la période de noël. Pour l'activer, il faut ajouter dans le fichier ``settings_prod.py``: +Actuellement, les changements visuels disponibles sont ``snow`` et ``clem-christmas``, qui respectivement rajoutent de la neige dans le header pour la période de noël, et mettent un bonnet à la Clem de l'accueil. Pour les activer, il faut ajouter dans le fichier ``settings_prod.py``: .. sourcecode:: python - ZDS_APP['visual_changes'] = ['snow'] + ZDS_APP['visual_changes'] = ['snow', 'clem-christmas'] diff --git a/zds/member/models.py b/zds/member/models.py index f95f837ab7..2ca5af6f2c 100644 --- a/zds/member/models.py +++ b/zds/member/models.py @@ -66,7 +66,7 @@ class Meta: # TODO: Change this name. This is a boolean: "true" is "hover" or "click" ?! hover_or_click = models.BooleanField('Survol ou click ?', default=False) - allow_temp_visual_changes = models.BooleanField('Activer les changements visuels temporaires ?', default=True) + allow_temp_visual_changes = models.BooleanField('Activer les changements visuels temporaires', default=True) email_for_answer = models.BooleanField('Envoyer pour les réponse MP', default=False) From 88eeba6ed29239e96037f5d6895fe55c759ab208 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Sat, 12 Dec 2015 10:08:13 +0100 Subject: [PATCH 7/8] =?UTF-8?q?Ajout=20d'un=20bonnet=20=C3=A0=20Clem=20+?= =?UTF-8?q?=20fix=20de=20snow.js=20quand=20jQuery=20est=20pas=20charg?= =?UTF-8?q?=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/images/home-clem-christmas.png | Bin 0 -> 13410 bytes assets/images/home-clem-christmas@2x.png | Bin 0 -> 39826 bytes assets/js/snow.js | 5 ++--- assets/scss/base/_high-pixel-ratio.scss | 6 ++++++ assets/scss/pages/_home.scss | 6 ++++++ 5 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 assets/images/home-clem-christmas.png create mode 100644 assets/images/home-clem-christmas@2x.png diff --git a/assets/images/home-clem-christmas.png b/assets/images/home-clem-christmas.png new file mode 100644 index 0000000000000000000000000000000000000000..50242f70563399a9aefef74f365463f364999be6 GIT binary patch literal 13410 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

-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 literal 0 HcmV?d00001 diff --git a/assets/images/home-clem-christmas@2x.png b/assets/images/home-clem-christmas@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a8bc6f9b3630e27c4a00fc2c3327672ff0628ce7 GIT binary patch literal 39826 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 z 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ν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 literal 0 HcmV?d00001 diff --git a/assets/js/snow.js b/assets/js/snow.js index 415fef057b..b616acf49c 100644 --- a/assets/js/snow.js +++ b/assets/js/snow.js @@ -47,7 +47,6 @@ LetItSnow.prototype = { resize: function() { var rect = this._parent.getBoundingClientRect(); - console.log(rect); this.H = rect.height; this.W = rect.width; @@ -77,7 +76,7 @@ LetItSnow.prototype = { for(var i in this.particles) { p = this.particles[i]; p.y += (delta / 1000) * (this.PARTICLES_SPEED * p.d * (1.5 + Math.sin(now * this.TURBULENCES_SPEED / 1000 + p.s) * this.TURBULENCES_Y)); - p.x += (delta / 1000) * (this.PARTICLES_SPEED * p.d* (Math.cos(now * this.TURBULENCES_SPEED / 1000 + p.s) * this.TURBULENCES_X)); + p.x += (delta / 1000) * (this.PARTICLES_SPEED * p.d * (Math.cos(now * this.TURBULENCES_SPEED / 1000 + p.s) * this.TURBULENCES_X)); if(p.y - (p.d * 4) > this.H || p.x - (p.d * 4) > this.W || p.x + (p.d * 4) < 0) { this.particles.splice(i, 1); @@ -111,7 +110,7 @@ LetItSnow.prototype = { }; window.addEventListener("DOMContentLoaded", function() { - if($("body").hasClass("vc-snow")) { + if(document.body.className.split(" ").indexOf("vc-snow") !== -1) { // No jQuery here setTimeout(function() { window.snow = new LetItSnow(document.querySelector(".header-container > header")); }, 1000); // to be sure to have the DOM completely ready diff --git a/assets/scss/base/_high-pixel-ratio.scss b/assets/scss/base/_high-pixel-ratio.scss index 666ea258ec..292706a42d 100644 --- a/assets/scss/base/_high-pixel-ratio.scss +++ b/assets/scss/base/_high-pixel-ratio.scss @@ -34,5 +34,11 @@ .home .home-search-box::before { background-image: url('../images/home-clem@2x.png'); + + @at-root { + body.vc-clem-christmas.home .home-search-box::before { + background-image: url('../images/home-clem-christmas@2x.png'); + } + } } } diff --git a/assets/scss/pages/_home.scss b/assets/scss/pages/_home.scss index eb57a75b61..a4d6085264 100644 --- a/assets/scss/pages/_home.scss +++ b/assets/scss/pages/_home.scss @@ -223,6 +223,12 @@ $content-width: 1145px; background-size: 100%; width: 68px; height: 134px; + + @at-root { + body.vc-clem-christmas.home .home-search-box::before { + background-image: url('../images/home-clem-christmas@2x.png'); + } + } } label, input { From f6b277e194b5d1b30ba144243d399221ae59bfaf Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Sat, 12 Dec 2015 14:58:01 +0100 Subject: [PATCH 8/8] doc: Ajout d'une liste des changements visuels --- doc/source/front-end/elements-specifiques-au-site.rst | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/doc/source/front-end/elements-specifiques-au-site.rst b/doc/source/front-end/elements-specifiques-au-site.rst index b35bdef005..06b5fb3477 100644 --- a/doc/source/front-end/elements-specifiques-au-site.rst +++ b/doc/source/front-end/elements-specifiques-au-site.rst @@ -255,7 +255,15 @@ Il suffit donc, dans le style et dans les scripts si le ``body`` a la classe ``v } -Actuellement, les changements visuels disponibles sont ``snow`` et ``clem-christmas``, qui respectivement rajoutent de la neige dans le header pour la période de noël, et mettent un bonnet à la Clem de l'accueil. Pour les activer, il faut ajouter dans le fichier ``settings_prod.py``: +Changements visuels disponibles +------------------------------- + +Les changements visuels disponibles sont: + + - ``snow``: ajoute de la neige dans le header + - ``clem-christmas``: ajoute un bonnet à la Clem de la page d'accueil + +Par exemple, pour activer les changements ``snow`` et ``clem-christmas``, il faut ajouter au ``settings_prod.py``: .. sourcecode:: python