remotes/1693055039339581669/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. 2
      test-hugo/content/code-of-conduct.md
  6. 18
      test-hugo/content/faq.md
  7. 1
      test-hugo/data/home.yml
  8. 9
      test-hugo/data/location.yml
  9. 299
      test-hugo/data/team.yml
  10. 2
      test-hugo/data/tickets.yml
  11. 67
      test-hugo/themes/devfest-theme-hugo/assets/script/good-map.js
  12. 6
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_home.scss
  13. 13
      test-hugo/themes/devfest-theme-hugo/assets/style/pages/_team.scss
  14. 6
      test-hugo/themes/devfest-theme-hugo/layouts/_default/baseof.html
  15. 48
      test-hugo/themes/devfest-theme-hugo/layouts/index.html
  16. 1
      test-hugo/themes/devfest-theme-hugo/layouts/partials/head.html
  17. 6
      test-hugo/themes/devfest-theme-hugo/layouts/team/single.html
  18. 2
      tools/extract-data.js
  19. 0
      tools/firebase-data.json
  20. 2
      tools/generate-sessions.js
  21. 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) -->

@ -40,7 +40,7 @@ The following actions are considered harassment and are unacceptable within our
- Advocating for, or encouraging, any of the above behavior. - Advocating for, or encouraging, any of the above behavior.
- Sustained disruption of community events, including talks and, presentations. - Sustained disruption of community events, including talks and, presentations.
## 5. Consequences of Unacceptable Behavior ## 5. Consequences of Unacceptable Behavior
Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated. Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.
Anyone asked to stop unacceptable behavior is expected to comply immediately. Anyone asked to stop unacceptable behavior is expected to comply immediately.

@ -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,144 +1,155 @@
- 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
photoUrl: /images/people/julien_renaux.jpg title: GDG Toulouse
socials: photoUrl: /images/people/julien_renaux.jpg
- icon: twitter socials:
link: 'https://twitter.com/julienrenaux' - icon: twitter
name: Twitter link: 'https://twitter.com/julienrenaux'
- icon: github name: Twitter
link: 'https://github.com/shprink' - icon: github
name: Github link: 'https://github.com/shprink'
- icon: linkedin name: Github
link: 'https://www.linkedin.com/in/julienrenaux/' - icon: linkedin
name: LinkedIn link: 'https://www.linkedin.com/in/julienrenaux/'
title: GDG Toulouse name: LinkedIn
- name: Alexia Audevart
photoUrl: 'https://www.ekito.fr/img/team/aaudevart.jpg' - name: Alexia Audevart
socials: title: Toulouse Data Science
- icon: twitter photoUrl: 'https://www.ekito.fr/img/team/aaudevart.jpg'
link: 'https://www.twitter.com/aaudevart' socials:
name: Twitter - icon: twitter
- icon: github link: 'https://www.twitter.com/aaudevart'
link: 'https://github.com/aaudevart' name: Twitter
name: Github - icon: github
- icon: linkedin link: 'https://github.com/aaudevart'
link: 'https://www.linkedin.com/in/alexia-audevart-450b8a1/' name: Github
name: Linkedin - icon: linkedin
title: Toulouse Data Science link: 'https://www.linkedin.com/in/alexia-audevart-450b8a1/'
- name: Kevin Davin name: Linkedin
photoUrl: /images/people/kevin_davin.png
socials: - name: Kevin Davin
- icon: gplus title: GDG Toulouse & Toulouse JUG
link: 'https://plus.google.com/+KevinDavin' photoUrl: /images/people/kevin_davin.png
name: Google+ socials:
- icon: twitter - icon: gplus
link: 'https://twitter.com/davinkevin' link: 'https://plus.google.com/+KevinDavin'
name: Twitter name: Google+
- icon: github - icon: twitter
link: 'https://github.com/davinkevin/' link: 'https://twitter.com/davinkevin'
name: Github name: Twitter
- icon: linkedin - icon: github
link: www.linkedin.com/in/davinkevin link: 'https://github.com/davinkevin/'
name: LinkedIn name: Github
title: GDG Toulouse & Toulouse JUG - icon: linkedin
- name: Aurélie Vache link: www.linkedin.com/in/davinkevin
photoUrl: /images/people/aurelie_vache.png name: LinkedIn
socials:
- icon: twitter - name: Aurélie Vache
link: 'https://www.twitter.com/aurelievache' title: Duchess France / Toulouse Data Science
name: Twitter photoUrl: /images/people/aurelie_vache.png
- icon: website socials:
link: 'http://scraly.com/' - icon: twitter
name: Site link: 'https://www.twitter.com/aurelievache'
- icon: linkedin name: Twitter
link: 'https://www.linkedin.com/in/aurelievache' - icon: website
name: LinkedIn link: 'http://scraly.com/'
- icon: github name: Site
link: 'https://github.com/scraly' - icon: linkedin
name: Github link: 'https://www.linkedin.com/in/aurelievache'
title: Duchess France / Toulouse Data Science name: LinkedIn
- name: Maxime Pawlak - icon: github
photoUrl: /images/people/maxime_pawlak.jpg link: 'https://github.com/scraly'
socials: name: Github
- icon: twitter
link: 'https://twitter.com/Maxime_Pawlak' - name: Maxime Pawlak
name: Twitter title: GDG Toulouse
title: GDG Toulouse photoUrl: /images/people/maxime_pawlak.jpg
- name: Michaël Bitard socials:
photoUrl: /images/people/michael_bitard.jpg - icon: twitter
socials: link: 'https://twitter.com/Maxime_Pawlak'
- icon: twitter name: Twitter
link: 'https://twitter.com/bitardmichael'
name: Twitter - name: Michaël Bitard
title: Electron liiiibre title: Electron liiiibre
- name: Didier Plaindoux photoUrl: /images/people/michael_bitard.jpg
photoUrl: /images/people/didier_plaindoux.jpeg socials:
socials: - icon: twitter
- icon: twitter link: 'https://twitter.com/bitardmichael'
link: 'https://twitter.com/dplaindoux' name: Twitter
name: Twitter
title: Toulouse JUG - name: Didier Plaindoux
- name: Vincent Ferries title: Toulouse JUG
photoUrl: >- photoUrl: /images/people/didier_plaindoux.jpeg
https://pbs.twimg.com/profile_images/697834407407849472/bzv1VZJm_400x400.jpg socials:
socials: - icon: twitter
- icon: twitter link: 'https://twitter.com/dplaindoux'
link: 'https://twitter.com/VincentFERRIES' name: Twitter
name: Twitter
title: Toulouse JUG - name: Vincent Ferries
- name: Igor Laborie title: Toulouse JUG
photoUrl: >- photoUrl: >-
https://pbs.twimg.com/profile_images/3404066863/94e02f3bca9b038c4546f4e42ed05bc6.jpeg https://pbs.twimg.com/profile_images/697834407407849472/bzv1VZJm_400x400.jpg
socials: socials:
- icon: twitter - icon: twitter
link: 'https://twitter.com/ilaborie' link: 'https://twitter.com/VincentFERRIES'
name: Twitter name: Twitter
- icon: github
link: 'https://github.com/ilaborie' - name: Igor Laborie
name: Github title: Folivoraphile
title: Folivoraphile photoUrl: >-
- name: Emmanuel Vinas https://pbs.twimg.com/profile_images/3404066863/94e02f3bca9b038c4546f4e42ed05bc6.jpeg
photoUrl: /images/people/emmanuel_vinas.jpeg socials:
socials: - icon: twitter
- icon: twitter link: 'https://twitter.com/ilaborie'
link: 'https://twitter.com/EmmanuelVinas' name: Twitter
name: Twitter - icon: github
title: GDG Toulouse link: 'https://github.com/ilaborie'
- name: Lionel Porcheron name: Github
photoUrl: /images/people/lionel_porcheron.jpg
socials: - name: Emmanuel Vinas
- icon: twitter title: GDG Toulouse
link: 'https://twitter.com/lporcheron' photoUrl: /images/people/emmanuel_vinas.jpeg
name: Twitter socials:
title: Toulouse DevOps - icon: twitter
- name: Michaël Pailloncy link: 'https://twitter.com/EmmanuelVinas'
photoUrl: 'https://s.gravatar.com/avatar/1b42d100589ea585ce9a1f359b8d4496?s=160' name: Twitter
socials:
- icon: twitter - name: Lionel Porcheron
link: 'https://twitter.com/mpailloncy' title: Toulouse DevOps
name: Twitter photoUrl: /images/people/lionel_porcheron.jpg
- icon: github socials:
link: 'https://github.com/mpailloncy' - icon: twitter
name: Github link: 'https://twitter.com/lporcheron'
- icon: linkedin name: Twitter
link: 'https://www.linkedin.com/in/michael-pailloncy-21119827/'
name: LinkedIn - name: Michaël Pailloncy
title: Toulouse JAM / JUG title: Toulouse JAM / JUG
- name: Elodie Lerare photoUrl: 'https://s.gravatar.com/avatar/1b42d100589ea585ce9a1f359b8d4496?s=160'
photoUrl: images/people/elodie_lerare.jpg socials:
socials: - icon: twitter
- icon: twitter link: 'https://twitter.com/mpailloncy'
link: 'https://twitter.com/EloBlou' name: Twitter
name: Twitter - icon: github
- icon: linkedin link: 'https://github.com/mpailloncy'
link: 'https://www.linkedin.com/in/elodie-lerare-223a6b41/' name: Github
name: LinkedIn - icon: linkedin
title: '' link: 'https://www.linkedin.com/in/michael-pailloncy-21119827/'
title: Core Team name: LinkedIn
- name: Elodie Lerare
title: ''
photoUrl: images/people/elodie_lerare.jpg
socials:
- icon: twitter
link: 'https://twitter.com/EloBlou'
name: Twitter
- icon: linkedin
link: 'https://www.linkedin.com/in/elodie-lerare-223a6b41/'
name: LinkedIn

@ -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,11 +32,16 @@
display: flex; display: flex;
margin: 0; margin: 0;
padding: 0; padding: 0;
filter: grayscale(1); font-size: 1.5em;
transition: filter var(--animation);
&:hover, &:focus { li {
filter: grayscale(0); filter: grayscale(1);
transition: filter var(--animation);
&:hover,
&:focus {
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