master
Igor Laborie 6 years ago
parent 39e6699fc4
commit 5119fe11e3
  1. 53
      test-hugo/config.toml
  2. 11
      test-hugo/content/blog/cfp.md
  3. 4
      test-hugo/content/blog/cr-cfp.md
  4. 5
      test-hugo/content/blog/hello-2019.md
  5. 18
      test-hugo/content/faq.md
  6. 1
      test-hugo/data/home.yml
  7. 9
      test-hugo/data/location.yml
  8. 43
      test-hugo/data/team.yml
  9. 2
      test-hugo/data/tickets.yml
  10. 67
      test-hugo/themes/devfest-theme-hugo/assets/script/good-map.js
  11. 6
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_home.scss
  12. 7
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_team.scss
  13. 6
      test-hugo/themes/devfest-theme-hugo/layouts/_default/baseof.html
  14. 48
      test-hugo/themes/devfest-theme-hugo/layouts/index.html
  15. 1
      test-hugo/themes/devfest-theme-hugo/layouts/partials/head.html
  16. 6
      test-hugo/themes/devfest-theme-hugo/layouts/team/single.html
  17. 2
      tools/extract-data.js
  18. 0
      tools/firebase-data.json
  19. 2
      tools/generate-sessions.js
  20. 2
      tools/generate-speakers.js

@ -22,13 +22,62 @@ googleAnalytics = "UA-37717223-7"
description = "Le DevFest, ou 'Developers Festival', est une conférence technique destinée aux développeurs. Elle s'adresse aussi bien aux étudiants, aux professionnels ou tout simplement aux curieux technophiles." description = "Le DevFest, ou 'Developers Festival', est une conférence technique destinée aux développeurs. Elle s'adresse aussi bien aux étudiants, aux professionnels ou tout simplement aux curieux technophiles."
images = ["/images/logo.svg", "/images/logo-monochrome.svg"] images = ["/images/logo.svg", "/images/logo-monochrome.svg"]
email = "contact@devfesttoulouse.fr" email = "contact@devfesttoulouse.fr"
keywords = "event, gdg, gde, devfest, google, programming, android, chrome, polymer, developers, web, cloud, androiddev" keywords = "event, gdg, gde, devfest, google, programming, android, chrome, developers, web, cloud, androiddev"
googleMapsAPIKey = "AIzaSyAsYarycfx4sV9QhauT5li-63snSTqoJ3g"
[params.logos] [params.logos]
header = "/images/logo.svg" header = "/images/logo.svg"
footer = "/images/logo-monochrome.svg" footer = "/images/logo-monochrome.svg"
[params.location]
name = "Centre de Congrès Pierre Baudis"
description = "Le Centre de Congrès Pierre Baudis est un lieu d'échanges moderne, situé sur un emplacement privilégié, à proximité immédiate du centre de Toulouse et dans un environnement verdoyant."
address = "11 Espl. Compans Caffarelli, 31000 Toulouse"
[params.location.pointer ]
latitude = 43.6110956
longitude = 1.4332799
[params.map]
googleMapsAPIKey = "AIzaSyAsYarycfx4sV9QhauT5li-63snSTqoJ3g"
latitude = 48
longitude = 8
zoom = 5
options = '''{
"disableDefaultUI": true,
"disableDoubleClickZoom": true,
"scrollwheel": false,
"draggable": false,
"styles": [{
"stylers": [{
"lightness": 40
},
{
"visibility": "on"
},
{
"gamma": 0.9
},
{
"weight": 0.4
}
]
}, {
"elementType": "labels",
"stylers": [{
"visibility": "on"
}]
}, {
"featureType": "water",
"stylers": [{
"color": "#5dc7ff"
}]
}, {
"featureType": "road",
"stylers": [{
"visibility": "off"
}]
}]
}'''
[taxonomies] [taxonomies]
tag = "tags" tag = "tags"

@ -16,6 +16,7 @@ En attendant, le jour J, le [CFP](https://devfest-toulouse.cfp.io/) (Call For Pa
## Les formats ## Les formats
Nouveauté cette année, vous vous proposons deux types de talks : Nouveauté cette année, vous vous proposons deux types de talks :
- le format **lightning talk**/quickie, d’une durée de **15 minutes**, comme l’an dernier - le format **lightning talk**/quickie, d’une durée de **15 minutes**, comme l’an dernier
- le format **conférence** qui passe de 45 à **40 minutes** SANS QUESTION! - le format **conférence** qui passe de 45 à **40 minutes** SANS QUESTION!
@ -46,11 +47,7 @@ Vous pouvez soumettre un talk en Français ou en Anglais.
Comme dit ci-dessus, les soumissions sont ouvertes **jusqu’au 1er Juillet 2018**. L’année dernière nous avons reçu plus de 150 soumissions ! N’attendez pas le dernier moment, soumettez un talk dès à présent ! Comme dit ci-dessus, les soumissions sont ouvertes **jusqu’au 1er Juillet 2018**. L’année dernière nous avons reçu plus de 150 soumissions ! N’attendez pas le dernier moment, soumettez un talk dès à présent !
<div layout horizontal center-justified> [Je soumets !](https://devfest-toulouse.cfp.io/#/dashboard)
<a href="https://devfest-toulouse.cfp.io/#/dashboard" rel="noopener noreferrer">
<paper-button primary>Je soumets !</paper-button>
</a>
</div>
Vous avez des questions ? Vous pouvez écrire un message à l’équipe à [contact@devfesttoulouse.fr](contact@devfesttoulouse.fr Vous avez des questions ? Vous pouvez écrire un message à l’équipe à [contact@devfesttoulouse.fr](contact@devfesttoulouse.fr) ou bien sur notre compte Twitter [@DevFestToulouse](https://devfesttoulouse.fr).
) ou bien sur notre compte Twitter [@DevFestToulouse](https://devfesttoulouse.fr).

@ -36,8 +36,8 @@ Les propositions de sujets ont été assez variées avec une nette domination po
![](graph-theme.png) ![](graph-theme.png)
La liste complète des speakers est disponible sur le site : https://devfesttoulouse.fr/speakers/ La liste complète des speakers est disponible sur le site : <https://devfesttoulouse.fr/speakers/>
Bon, on ne va pas vous mentir, il est possible que cette liste évolue légèrement selon les disponibilités et les contretemps de chacun(e). Nous la mettons à jour dès que possible donc n’hésitez pas à y jeter un coup d’oeil de temps en temps ou vous inscrire à la newsletter pour rester informés (par ici : https://devfesttoulouse.fr/). Bon, on ne va pas vous mentir, il est possible que cette liste évolue légèrement selon les disponibilités et les contretemps de chacun(e). Nous la mettons à jour dès que possible donc n’hésitez pas à y jeter un coup d’oeil de temps en temps ou vous inscrire à la newsletter pour rester informés (par ici : <https://devfesttoulouse.fr/>).
Nous vous en informerons aussi sur notre compte Twitter @DevFestToulouse . Nous vous en informerons aussi sur notre compte Twitter @DevFestToulouse .
Pour les sujets, allez, on est sympa, on vous dit tout : Pour les sujets, allez, on est sympa, on vous dit tout :

@ -19,10 +19,8 @@ Situé en plein coeur de Toulouse, dans le quartier de Compans Cafarelli, access
Et… roulement de tambour, petite **nouveauté 2019**, il y aura un thème : Et… roulement de tambour, petite **nouveauté 2019**, il y aura un thème :
**LE FROMAGE :cheese:** **LE FROMAGE :cheese:**
Ce thème sera décliné sur l’ensemble de la journée avec des **goodies**, une **décoration au top** et si vous voulez vous déguiser en Camenbert ou en Roquefort, Ce thème sera décliné sur l’ensemble de la journée avec des **goodies**, une **décoration au top** et si vous voulez vous déguiser en Camenbert ou en Roquefort,
faites vous plaisir ! faites vous plaisir !
@ -42,8 +40,7 @@ Nous invitons également nos partenaires à jouer le jeu ;-).
- XX conférences, - XX conférences,
- XXX speakers d’exception, - XXX speakers d’exception,
- XXX 20 partenaires, - XXX 20 partenaires,
- et pas mal de nuits courtes, de midis et de week-end bien chargés pour - et pas mal de nuits courtes, de midis et de week-end bien chargés pour les XX bénévoles.
les XX bénévoles.
<!-- ![](/images/posts/2018-03-27-lancement-devfest-toulouse-2018/lancement-1.jpg) --> <!-- ![](/images/posts/2018-03-27-lancement-devfest-toulouse-2018/lancement-1.jpg) -->

@ -2,10 +2,10 @@
title: FAQs title: FAQs
--- ---
## Général ## Général
### Qu'est ce que le DevFest Toulouse ? ### Qu'est ce que le DevFest Toulouse ?
Le DevFest, ou “Developers Festival”, est une conférence technique destinée aux développeur·se·s. Le DevFest, ou “Developers Festival”, est une conférence technique destinée aux développeur·se·s.
Elle s'adresse aussi bien aux étudiants, aux professionnels ou tout simplement aux curieux technophiles. Elle s'adresse aussi bien aux étudiants, aux professionnels ou tout simplement aux curieux technophiles.
Durant toute la journée, des orateurs reconnus viendront présenter des sujets variés : autour du développement mobile, du web, de la data, des objets connectés, du cloud, du DevOps, etc... ainsi que des bonnes pratiques de développement. Durant toute la journée, des orateurs reconnus viendront présenter des sujets variés : autour du développement mobile, du web, de la data, des objets connectés, du cloud, du DevOps, etc... ainsi que des bonnes pratiques de développement.
@ -17,6 +17,7 @@ Cette journée sera l'occasion de rencontrer des orateurs de renommée internati
Le DevFest s'inscrit dans un [cadre international](https://developers.google.com/events/devfest/) et est organisé en partenariat avec Google. Le DevFest s'inscrit dans un [cadre international](https://developers.google.com/events/devfest/) et est organisé en partenariat avec Google.
### Les communautés organisatrices ### Les communautés organisatrices
Le DevFest Toulouse est un événement organisé par les communautés de développeurs de Toulouse, et porté administrativement par le GDG Toulouse (ex TAUG). Le DevFest Toulouse est un événement organisé par les communautés de développeurs de Toulouse, et porté administrativement par le GDG Toulouse (ex TAUG).
Vous retrouverez la liste des communautés en bas de page principale. Vous retrouverez la liste des communautés en bas de page principale.
@ -26,9 +27,11 @@ Pour rendre tout cela possible, une équipe de bénévoles sur-vitaminée s’ac
## Conférence ## Conférence
### Où et quand aura lieu le DevFest ? ### Où et quand aura lieu le DevFest ?
Le DevFest Toulouse 2017 a lieu le jeudi 8 novembre au Centre de Congrés Pierre Baudis. Le DevFest Toulouse 2017 a lieu le jeudi 8 novembre au Centre de Congrés Pierre Baudis.
### Comment s'y rendre ? ### Comment s'y rendre ?
Le centre de congrés est idéalement situé en centre ville. Le centre de congrés est idéalement situé en centre ville.
EN AVION : EN AVION :
@ -44,11 +47,13 @@ EN METRO :
Ligne B, descendez station Compans-Cafarelli. Ligne B, descendez station Compans-Cafarelli.
### Comment devenir sponsor/partenaire ? ### Comment devenir sponsor/partenaire ?
Le dossier de partenariat est en cours de finalisation. Le dossier de partenariat est en cours de finalisation.
## CFP ## CFP
### Quel est le format des conférences ? ### Quel est le format des conférences ?
Deux types de conférences sont proposées : Deux types de conférences sont proposées :
- Les **lightning talks**, d’une durée de **15 minutes**, sans question. - Les **lightning talks**, d’une durée de **15 minutes**, sans question.
@ -59,6 +64,7 @@ Pour les conférences données en toute fin de de journée, 10 minutes de questi
### Comment devenir orateur/oratrice ? ### Comment devenir orateur/oratrice ?
Le CFP est ouvert, il ferme le 1 Juillet 2018. Le CFP est ouvert, il ferme le 1 Juillet 2018.
Il vous suffit de soumettre un ou plusieurs sujets sur notre [CFP](https://devfest-toulouse.cfp.io). Il vous suffit de soumettre un ou plusieurs sujets sur notre [CFP](https://devfest-toulouse.cfp.io).
@ -67,25 +73,30 @@ Si votre sujet a été pré-sélectionné, nous vous offrons une place à la con
Que vous présentiez un talk seul ou en duo, chaque conférencier a son entrée offerte. Que vous présentiez un talk seul ou en duo, chaque conférencier a son entrée offerte.
### Est-ce que l'on peut soumettre un talk a plusieurs ? ### Est-ce que l'on peut soumettre un talk a plusieurs ?
Oui, sur le site du CFP, si vous n'êtes pas seul lors de la présentation, renseignez l'e-mail des autres conférenciers, ceux-ci doivent s'être préalablement inscrits sur le CFP avec cette même adresse. Oui, sur le site du CFP, si vous n'êtes pas seul lors de la présentation, renseignez l'e-mail des autres conférenciers, ceux-ci doivent s'être préalablement inscrits sur le CFP avec cette même adresse.
Pour des raisons pratiques, nous n’acceptons pas les sujets impliquant plus de trois orateur·rice·s. Pour des raisons pratiques, nous n’acceptons pas les sujets impliquant plus de trois orateur·rice·s.
### J’ai proposé une conférence. Dois-je acheter mon entrée ? ### J’ai proposé une conférence. Dois-je acheter mon entrée ?
Si votre sujet (conférence ou lightning talk) a été sélectionné, nous vous offrons votre entrée au DevFest, vous n'avez donc pas à acheter votre place à l'avance. Si votre sujet (conférence ou lightning talk) a été sélectionné, nous vous offrons votre entrée au DevFest, vous n'avez donc pas à acheter votre place à l'avance.
Si vous présentez un talk à plusieurs, deux entrées vous seront offertes par conférence, les autres intervenants devront acheter leur propre place (en l’absence d’autres conférences acceptées.) Si vous présentez un talk à plusieurs, deux entrées vous seront offertes par conférence, les autres intervenants devront acheter leur propre place (en l’absence d’autres conférences acceptées.)
Au cas où votre sujet ne serait pas accepté, il vous sera encore possible d’acheter votre place après la notification, au tarif early-bird. Au cas où votre sujet ne serait pas accepté, il vous sera encore possible d’acheter votre place après la notification, au tarif early-bird.
### Prenez-vous en charge les frais de déplacement et d’hébergement? ### Prenez-vous en charge les frais de déplacement et d’hébergement?
Les speakers présentant une conférence complète (40 minutes) peuvent demander un remboursement de leurs frais (transport et hébergement) sur présentation des factures, et dans une limite de 250€ par conférence (et non pas par speaker). Les speakers présentant une conférence complète (40 minutes) peuvent demander un remboursement de leurs frais (transport et hébergement) sur présentation des factures, et dans une limite de 250€ par conférence (et non pas par speaker).
Pour les lightning talks, les frais de déplacement ne sont pas remboursés. Pour les lightning talks, les frais de déplacement ne sont pas remboursés.
### Quels lieux recommandez-vous pour loger ? ### Quels lieux recommandez-vous pour loger ?
Le centre de congrès Pierre Baudis est situé à 15 minutes à pied de l’hyper-centre de Toulouse, ou 5 minutes en métro (arrêt Compans-Caffarelli). Le centre de congrès Pierre Baudis est situé à 15 minutes à pied de l’hyper-centre de Toulouse, ou 5 minutes en métro (arrêt Compans-Caffarelli).
De nombreux hôtels et chambres d’hôtes sont disponibles à proximité. De nombreux hôtels et chambres d’hôtes sont disponibles à proximité.
### Quel est le format attendu pour les slides ? ### Quel est le format attendu pour les slides ?
Vous pouvez présenter votre conférence à partir de votre propre ordinateur, ou nous fournir au préalable les slides au format PDF. Vous pouvez présenter votre conférence à partir de votre propre ordinateur, ou nous fournir au préalable les slides au format PDF.
Le thème des slides est entièrement libre, et les présentations seront diffusées ensuite sur la chaîne YouTube GDG France, qui héberge déjà les présentations des années précédentes. Le thème des slides est entièrement libre, et les présentations seront diffusées ensuite sur la chaîne YouTube GDG France, qui héberge déjà les présentations des années précédentes.
@ -93,16 +104,21 @@ Le thème des slides est entièrement libre, et les présentations seront diffus
## Billetterie ## Billetterie
### Quelles sont les conditions de remboursements de votre billet ? ### Quelles sont les conditions de remboursements de votre billet ?
Nous permettons un remboursement jusqu'à 15 jours avant l'événement hors frais de traitement de notre partenaire billetterie. Nous permettons un remboursement jusqu'à 15 jours avant l'événement hors frais de traitement de notre partenaire billetterie.
### Faut-il se munir d'une pièce d'identité ou y-a-t-il un âge minimum pour entrer à l'événement ? ### Faut-il se munir d'une pièce d'identité ou y-a-t-il un âge minimum pour entrer à l'événement ?
Votre billet suffit, il n'y a pas d'âge minimum. Votre billet suffit, il n'y a pas d'âge minimum.
### Puis-je mettre à jour les informations de mon inscription ? ### Puis-je mettre à jour les informations de mon inscription ?
Oui, vous pouvez modifier les informations de votre commande sur le site de notre partenaire billetterie. Oui, vous pouvez modifier les informations de votre commande sur le site de notre partenaire billetterie.
### Est-ce un problème si le nom indiqué sur mon billet ou mon inscription ne correspond pas à celui du participant ? ### Est-ce un problème si le nom indiqué sur mon billet ou mon inscription ne correspond pas à celui du participant ?
Oui. Merci de nous contacter en cas de question précise. Oui. Merci de nous contacter en cas de question précise.
### J'aimerais une facture, comment l'obtenir ? ### J'aimerais une facture, comment l'obtenir ?
Notre association est désormais soumise à TVA. Il vous est donc possible d'obtenir une facture auprès de notre partenaire billetterie. Notre association est désormais soumise à TVA. Il vous est donc possible d'obtenir une facture auprès de notre partenaire billetterie.

@ -1,5 +1,6 @@
info: >- info: >-
Le DevFest, ou 'Developers Festival', est une conférence technique destinée aux développeurs. Elle s'adresse aussi bien aux étudiants, aux professionnels ou tout simplement aux curieux technophiles. Le DevFest, ou 'Developers Festival', est une conférence technique destinée aux développeurs. Elle s'adresse aussi bien aux étudiants, aux professionnels ou tout simplement aux curieux technophiles.
what: what:
- label: Participants - label: Participants
value: 700 value: 700

@ -1,9 +0,0 @@
name: Centre de Congrès Pierre Baudis
description: >-
Le Centre de Congrès Pierre Baudis est un lieu d'échanges moderne, situé sur un emplacement privilégié, à proximité immédiate du centre de Toulouse et dans un environnement verdoyant.
address: 11 Espl. Compans Caffarelli, 31000 Toulouse
pointer:
latitude: 43.6110956
longitude: 1.4332799
zoom: 5
mapCenter: 48,8

@ -1,12 +1,13 @@
- members:
- name: Julien Del Rio - name: Julien Del Rio
title: GDG Toulouse
photoUrl: /images/people/julien_delrio.jpg photoUrl: /images/people/julien_delrio.jpg
socials: socials:
- icon: twitter - icon: twitter
link: 'https://twitter.com/JulienDelRio' link: 'https://twitter.com/JulienDelRio'
name: Twitter name: Twitter
title: GDG Toulouse
- name: Julien Renaux - name: Julien Renaux
title: GDG Toulouse
photoUrl: /images/people/julien_renaux.jpg photoUrl: /images/people/julien_renaux.jpg
socials: socials:
- icon: twitter - icon: twitter
@ -18,8 +19,9 @@
- icon: linkedin - icon: linkedin
link: 'https://www.linkedin.com/in/julienrenaux/' link: 'https://www.linkedin.com/in/julienrenaux/'
name: LinkedIn name: LinkedIn
title: GDG Toulouse
- name: Alexia Audevart - name: Alexia Audevart
title: Toulouse Data Science
photoUrl: 'https://www.ekito.fr/img/team/aaudevart.jpg' photoUrl: 'https://www.ekito.fr/img/team/aaudevart.jpg'
socials: socials:
- icon: twitter - icon: twitter
@ -31,8 +33,9 @@
- icon: linkedin - icon: linkedin
link: 'https://www.linkedin.com/in/alexia-audevart-450b8a1/' link: 'https://www.linkedin.com/in/alexia-audevart-450b8a1/'
name: Linkedin name: Linkedin
title: Toulouse Data Science
- name: Kevin Davin - name: Kevin Davin
title: GDG Toulouse & Toulouse JUG
photoUrl: /images/people/kevin_davin.png photoUrl: /images/people/kevin_davin.png
socials: socials:
- icon: gplus - icon: gplus
@ -47,8 +50,9 @@
- icon: linkedin - icon: linkedin
link: www.linkedin.com/in/davinkevin link: www.linkedin.com/in/davinkevin
name: LinkedIn name: LinkedIn
title: GDG Toulouse & Toulouse JUG
- name: Aurélie Vache - name: Aurélie Vache
title: Duchess France / Toulouse Data Science
photoUrl: /images/people/aurelie_vache.png photoUrl: /images/people/aurelie_vache.png
socials: socials:
- icon: twitter - icon: twitter
@ -63,37 +67,42 @@
- icon: github - icon: github
link: 'https://github.com/scraly' link: 'https://github.com/scraly'
name: Github name: Github
title: Duchess France / Toulouse Data Science
- name: Maxime Pawlak - name: Maxime Pawlak
title: GDG Toulouse
photoUrl: /images/people/maxime_pawlak.jpg photoUrl: /images/people/maxime_pawlak.jpg
socials: socials:
- icon: twitter - icon: twitter
link: 'https://twitter.com/Maxime_Pawlak' link: 'https://twitter.com/Maxime_Pawlak'
name: Twitter name: Twitter
title: GDG Toulouse
- name: Michaël Bitard - name: Michaël Bitard
title: Electron liiiibre
photoUrl: /images/people/michael_bitard.jpg photoUrl: /images/people/michael_bitard.jpg
socials: socials:
- icon: twitter - icon: twitter
link: 'https://twitter.com/bitardmichael' link: 'https://twitter.com/bitardmichael'
name: Twitter name: Twitter
title: Electron liiiibre
- name: Didier Plaindoux - name: Didier Plaindoux
title: Toulouse JUG
photoUrl: /images/people/didier_plaindoux.jpeg photoUrl: /images/people/didier_plaindoux.jpeg
socials: socials:
- icon: twitter - icon: twitter
link: 'https://twitter.com/dplaindoux' link: 'https://twitter.com/dplaindoux'
name: Twitter name: Twitter
title: Toulouse JUG
- name: Vincent Ferries - name: Vincent Ferries
title: Toulouse JUG
photoUrl: >- photoUrl: >-
https://pbs.twimg.com/profile_images/697834407407849472/bzv1VZJm_400x400.jpg https://pbs.twimg.com/profile_images/697834407407849472/bzv1VZJm_400x400.jpg
socials: socials:
- icon: twitter - icon: twitter
link: 'https://twitter.com/VincentFERRIES' link: 'https://twitter.com/VincentFERRIES'
name: Twitter name: Twitter
title: Toulouse JUG
- name: Igor Laborie - name: Igor Laborie
title: Folivoraphile
photoUrl: >- photoUrl: >-
https://pbs.twimg.com/profile_images/3404066863/94e02f3bca9b038c4546f4e42ed05bc6.jpeg https://pbs.twimg.com/profile_images/3404066863/94e02f3bca9b038c4546f4e42ed05bc6.jpeg
socials: socials:
@ -103,22 +112,25 @@
- icon: github - icon: github
link: 'https://github.com/ilaborie' link: 'https://github.com/ilaborie'
name: Github name: Github
title: Folivoraphile
- name: Emmanuel Vinas - name: Emmanuel Vinas
title: GDG Toulouse
photoUrl: /images/people/emmanuel_vinas.jpeg photoUrl: /images/people/emmanuel_vinas.jpeg
socials: socials:
- icon: twitter - icon: twitter
link: 'https://twitter.com/EmmanuelVinas' link: 'https://twitter.com/EmmanuelVinas'
name: Twitter name: Twitter
title: GDG Toulouse
- name: Lionel Porcheron - name: Lionel Porcheron
title: Toulouse DevOps
photoUrl: /images/people/lionel_porcheron.jpg photoUrl: /images/people/lionel_porcheron.jpg
socials: socials:
- icon: twitter - icon: twitter
link: 'https://twitter.com/lporcheron' link: 'https://twitter.com/lporcheron'
name: Twitter name: Twitter
title: Toulouse DevOps
- name: Michaël Pailloncy - name: Michaël Pailloncy
title: Toulouse JAM / JUG
photoUrl: 'https://s.gravatar.com/avatar/1b42d100589ea585ce9a1f359b8d4496?s=160' photoUrl: 'https://s.gravatar.com/avatar/1b42d100589ea585ce9a1f359b8d4496?s=160'
socials: socials:
- icon: twitter - icon: twitter
@ -130,8 +142,9 @@
- icon: linkedin - icon: linkedin
link: 'https://www.linkedin.com/in/michael-pailloncy-21119827/' link: 'https://www.linkedin.com/in/michael-pailloncy-21119827/'
name: LinkedIn name: LinkedIn
title: Toulouse JAM / JUG
- name: Elodie Lerare - name: Elodie Lerare
title: ''
photoUrl: images/people/elodie_lerare.jpg photoUrl: images/people/elodie_lerare.jpg
socials: socials:
- icon: twitter - icon: twitter
@ -140,5 +153,3 @@
- icon: linkedin - icon: linkedin
link: 'https://www.linkedin.com/in/elodie-lerare-223a6b41/' link: 'https://www.linkedin.com/in/elodie-lerare-223a6b41/'
name: LinkedIn name: LinkedIn
title: ''
title: Core Team

@ -9,6 +9,7 @@
regular: true regular: true
soldOut: true soldOut: true
url: 'https://www.billetweb.fr/devfest-toulouse-2018' url: 'https://www.billetweb.fr/devfest-toulouse-2018'
- currency: - currency:
starts: 06 Juin starts: 06 Juin
ends: 08 Novembre ends: 08 Novembre
@ -20,6 +21,7 @@
regular: true regular: true
soldOut: true soldOut: true
url: 'https://www.billetweb.fr/devfest-toulouse-2018' url: 'https://www.billetweb.fr/devfest-toulouse-2018'
- currency: - currency:
starts: 01 Août starts: 01 Août
ends: 08 Novembre ends: 08 Novembre

@ -0,0 +1,67 @@
'use strict';
{
let initCalled;
const callbackPromise = new Promise((r) => window.__initGoodMap = r);
function loadGoogleMaps(apiKey) {
if (!initCalled) {
const script = document.createElement('script');
script.src = 'https://maps.googleapis.com/maps/api/js?' +
(apiKey ? `key=${apiKey}&` : '') +
'callback=__initGoodMap';
document.head.appendChild(script);
initCalled = true;
}
return callbackPromise;
}
customElements.define('good-map', class extends HTMLElement {
static get observedAttributes() {
return ['api-key', 'zoom', 'latitude', 'longitude', 'map-options'];
}
attributeChangedCallback(name, oldVal, val) {
switch (name) {
case 'api-key':
this.apiKey = val;
break;
case 'zoom':
case 'latitude':
case 'longitude':
this[name] = parseFloat(val);
break;
case 'map-options':
this.mapOptions = JSON.parse(val);
break
}
}
constructor() {
super();
this.map = null;
this.apiKey = null;
this.zoom = null;
this.latitude = null;
this.longitude = null;
this.mapOptions = {};
}
connectedCallback() {
loadGoogleMaps(this.apiKey).then(() => {
if (!this.mapOptions.zoom) {
this.mapOptions.zoom = this.zoom || 0;
}
if (!this.mapOptions.center) {
this.mapOptions.center = {
lat: this.latitude || 0,
lng: this.longitude || 0
};
}
this.map = new google.maps.Map(this, this.mapOptions);
this.dispatchEvent(new CustomEvent('google-map-ready', { detail: this.map }));
});
}
});
}

@ -74,10 +74,16 @@
} }
section.location { section.location {
padding: 0;
position: relative; position: relative;
background: var(--darken-1); background: var(--darken-1);
font-weight: 300; font-weight: 300;
#map {
display: block;
height: 664px;
}
.description { .description {
display: inline-block; display: inline-block;
padding: var(--space-4); padding: var(--space-4);

@ -32,13 +32,18 @@
display: flex; display: flex;
margin: 0; margin: 0;
padding: 0; padding: 0;
font-size: 1.5em;
li {
filter: grayscale(1); filter: grayscale(1);
transition: filter var(--animation); transition: filter var(--animation);
&:hover, &:focus { &:hover,
&:focus {
filter: grayscale(0); filter: grayscale(0);
} }
} }
}
} }
} }

@ -18,13 +18,15 @@
{{ end }} {{ end }}
{{ block "scripts" . }}
{{ $base := resources.Get "script/base.js" }} {{ $base := resources.Get "script/base.js" }}
{{ $subscription := resources.Get "script/subscription.js" }} {{ $subscription := resources.Get "script/subscription.js" }}
{{ $shuffle := resources.Get "script/shuffle.js" }} {{ $shuffle := resources.Get "script/shuffle.js" }}
{{ $map := resources.Get "script/good-map.js" }}
{{ $js := slice $base $subscription $shuffle | resources.Concat "script/main.js" }} {{ $js := slice $base $subscription $shuffle $map | resources.Concat "script/main.js" }}
<script src="{{ $js.Permalink }}"></script> <script src="{{ $js.Permalink }}"></script>
{{ block "scripts" . }}
<!-- No extra scripts -->
{{ end }} {{ end }}
</body> </body>

@ -68,29 +68,20 @@
</section> </section>
{{ end }} {{ end }}
{{ if .Params.location }} {{ if .Params.location }}
<section class="location"> <section class="location">
<iframe <good-map id="map" api-key="{{ .Site.Params.map.googleMapsAPIKey }}" latitude="{{ .Site.Params.map.latitude }}"
src='https://www.google.com/maps/embed/v1/view?key={{ .Site.Params.googleMapsAPIKey }}&zoom={{ .Site.Data.location.pointer.zoom }}&center={{ .Site.Data.location.mapCenter }}' longitude="{{ .Site.Params.map.longitude }}" zoom="{{ .Site.Params.map.zoom }}" map-options="{{ replace .Site.Params.map.options "\n" ""}}">
frameborder="0" </good-map>
scrolling="no"
width="100%"
height="400">
</iframe>
<div class="description"> <div class="description">
<h2>Le lieu</h2> <h2>Le lieu</h2>
<h3>{{ .Site.Data.location.name }}</h3> <h3>{{ .Site.Params.location.name }}</h3>
<p>{{ .Site.Data.location.description }}</p> <p>{{ .Site.Params.location.description }}</p>
<div class="direction"> <div class="direction">
{{ .Site.Data.location.address }} {{ .Site.Params.location.address }}
{{ if .Site.Data.location.pointer }} {{ if .Site.Params.location.pointer }}
<a class="btn btn-icon-only icon-direction" <a class="btn btn-icon-only icon-direction" target="_blank" aria-label="Itinéraire" href="https://www.google.com/maps/dir/?api=1&destination={{ .Site.Params.location.pointer.latitude }},{{ .Site.Params.location.pointer.longitude }}"></a>
target="_blank"
aria-label="Itinéraire"
href="https://www.google.com/maps/dir/?api=1&destination={{ .Site.Data.location.pointer.latitude }},{{ .Site.Data.location.pointer.longitude }}"></a>
{{ end }} {{ end }}
</div> </div>
</div> </div>
@ -108,3 +99,26 @@
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ define "scripts"}}
<script>
document.querySelector('#map')
.addEventListener('google-map-ready', (e) => {
new google.maps.Marker({
position: {
lat: parseFloat('{{ .Site.Params.location.pointer.latitude }}'),
lng: parseFloat('{{ .Site.Params.location.pointer.longitude }}'),
},
icon: {
url: 'images/map-marker.svg',
anchor: new google.maps.Point(25, 50),
scaledSize: new google.maps.Size(50, 50),
},
map: e.detail,
});
}, {
once: true
});
</script>
{{ end }}

@ -38,4 +38,5 @@
{{ $style := resources.Get "style/main.scss" | resources.ToCSS | resources.Minify | resources.Fingerprint }} {{ $style := resources.Get "style/main.scss" | resources.ToCSS | resources.Minify | resources.Fingerprint }}
<link rel="stylesheet" href="{{ $style.Permalink }}"> <link rel="stylesheet" href="{{ $style.Permalink }}">
</head> </head>

@ -1,16 +1,12 @@
{{ define "main" }} {{ define "main" }}
{{ .Content }} {{ .Content }}
{{ range .Site.Data.team }}
<section> <section>
<h2>{{ .title }}</h2>
<ul class="members shuffle"> <ul class="members shuffle">
{{ range (shuffle .members) }} {{ range (shuffle .Site.Data.team) }}
<li>{{ partial "team.html" . }}</li> <li>{{ partial "team.html" . }}</li>
{{ end }} {{ end }}
</ul> </ul>
</section> </section>
{{ end }}
{{ end }} {{ end }}

@ -13,7 +13,7 @@ const writeToYml = (list, dest) => {
fs.writeFileSync(dest, data, writeOption); fs.writeFileSync(dest, data, writeOption);
}; };
const firebaseData = require('../test-hugo/data/firebase-data.json'); const firebaseData = require('./firebase-data.json');
['partners', 'team', 'tickets'] ['partners', 'team', 'tickets']
.forEach(key => { .forEach(key => {

@ -7,7 +7,7 @@ const writeOption = {
flag: 'w' flag: 'w'
}; };
const firebaseData = require('../test-hugo/data/firebase-data.json'); const firebaseData = require('./firebase-data.json');
const generateSessionData = (id, session) => { const generateSessionData = (id, session) => {

@ -7,7 +7,7 @@ const writeOption = {
flag: 'w' flag: 'w'
}; };
const firebaseData = require('../test-hugo/data/firebase-data.json'); const firebaseData = require('./firebase-data.json');
const generateSpeakerData = (id, speaker) => { const generateSpeakerData = (id, speaker) => {
const frontMatter = {id, ...speaker}; const frontMatter = {id, ...speaker};

Loading…
Cancel
Save