diff --git a/.eleventy.js b/.eleventy.js index 0c0e491..95ccb7f 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,6 +1,7 @@ const rssPlugin = require('@11ty/eleventy-plugin-rss'); const syntaxHighlight = require('@11ty/eleventy-plugin-syntaxhighlight'); const fs = require('fs'); +const util = require('util') // Import filters const dateFilter = require('./src/filters/date-filter.js'); @@ -19,6 +20,9 @@ module.exports = function(config) { config.addFilter('dateFilter', dateFilter); config.addFilter('markdownFilter', markdownFilter); config.addFilter('w3DateFilter', w3DateFilter); + config.addFilter('dump', obj => { + return util.inspect(obj) + }); // Layout aliases config.addLayoutAlias('home', 'layouts/home.njk'); @@ -74,6 +78,39 @@ module.exports = function(config) { .slice(0, site.maxProfilePreview) ; }); + config.addCollection("tagsList", function(collectionApi) { + const tagsList = new Set(); + collectionApi.getAll().map( item => { + if (item.data.tags) { // handle pages that don't have tags + item.data.tags.map( tag => tagsList.add(tag)) + } + }); + return tagsList; + }); + config.addCollection("skillsList", function(collectionApi) { + const skillsList = new Set(); + collectionApi.getFilteredByGlob("./src/members/*.md").map( item => { + if (item.data.tags) { // handle pages that don't have skills + item.data.tags.map( skill => { // exclude non related tags + if (['post', 'news', 'event'].indexOf(skill) == -1) { + skillsList.add(skill) + } + }) + } + }); + return skillsList; + }); + config.addCollection("membersLocations", function(collectionApi) { + return collectionApi.getFilteredByGlob("./src/members/*.md") + .filter(item => typeof item.data.location !== 'undefined') + .map( member => { + return { + name: member.data.name, + url: member.data.url, + location: member.data.location, + }; + }); + }); config.addCollection('customers', collection => { return [...collection.getFilteredByGlob("./src/customers/*.md")] .reverse() diff --git a/package.json b/package.json index 303692b..900a930 100755 --- a/package.json +++ b/package.json @@ -8,10 +8,13 @@ "@11ty/eleventy-plugin-rss": "^1.0.7", "@11ty/eleventy-plugin-syntaxhighlight": "^2.0.3", "@tbranyen/jsdom": "^13.0.0", + "bootstrap": "^5.1.3", "concurrently": "^4.1.2", + "copyfiles": "^2.4.1", "html-minifier": "^4.0.0", "image-size": "^0.8.3", "json-to-scss": "^1.5.0", + "leaflet": "^1.7.1", "sass": "^1.26.3", "semver": "^6.3.0", "slugify": "^1.4.0", @@ -36,9 +39,12 @@ "sass:tokens": "npx json-to-scss src/_data/tokens.json src/scss/_tokens.scss", "sass:lint": "npx stylelint src/scss/**/*.scss", "sass:process": "npm run sass:tokens && npm run sass:lint && sass src/scss/global.scss src/_includes/assets/css/global.css --style=compressed", - "start": "concurrently \"npm run sass:process -- --watch\" \"npm run serve\"", + "vendor:css": "copyfiles node_modules/leaflet/dist/leaflet.css node_modules/bootstrap/dist/css/bootstrap.min.css -f dist/vendor/css", + "vendor:js": "copyfiles node_modules/leaflet/dist/leaflet.js node_modules/bootstrap/dist/js/bootstrap.min.js -f dist/vendor/js", + "vendor": "npm run vendor:css && npm run vendor:js", + "start": "concurrently \"npm run vendor\" \"npm run sass:process -- --watch\" \"npm run serve\"", "serve": "cross-env ELEVENTY_ENV=development npx eleventy --serve", - "prod": "cross-env ELEVENTY_ENV=prod npm run sass:process && npx eleventy", + "prod": "cross-env ELEVENTY_ENV=prod npm run vendor && npm run sass:process && npx eleventy", "deploy-preprod": "npm run prod && node deploy-preprod", "deploy-prod": "npm run prod && node deploy-prod" }, diff --git a/src/_includes/layouts/base.njk b/src/_includes/layouts/base.njk index 8a60f1c..59f59b6 100644 --- a/src/_includes/layouts/base.njk +++ b/src/_includes/layouts/base.njk @@ -7,6 +7,8 @@ {% include "partials/global/meta-info.njk" %} + + {% block head %} {% endblock %} @@ -19,6 +21,7 @@ {% block foot %} {% endblock %} + + diff --git a/src/_includes/partials/components/member-list-simple.njk b/src/_includes/partials/components/member-list-simple.njk new file mode 100644 index 0000000..32e332f --- /dev/null +++ b/src/_includes/partials/components/member-list-simple.njk @@ -0,0 +1,20 @@ +
+
+ {% if teamListItems.length %} +
    + {% for item in teamListItems %} +
  1. + + photo de {{ item.data.name }} + {{ item.data.name }} + +

    {{ item.data.position }}

    + {% if item.data.positionInternal %} +

    {{ item.data.positionInternal }}

    + {% endif %} +
  2. + {% endfor %} +
+ {% endif %} +
+
diff --git a/src/_includes/partials/components/member-list.njk b/src/_includes/partials/components/member-list.njk index 130420c..ccb52de 100644 --- a/src/_includes/partials/components/member-list.njk +++ b/src/_includes/partials/components/member-list.njk @@ -4,11 +4,9 @@
    {% for item in teamListItems %}
  1. - {#
    #} + photo de {{ item.data.name }} - {#
    #} - {{ item.data.name }}  - + {{ item.data.name }}

    {{ item.data.position }}

    {% if item.data.positionInternal %} @@ -18,9 +16,7 @@ {% endfor %}
  2. Vous êtes porteur d’un projet entrepreneurial en numérique et nouvelles technologies ?

    - Rejoignez-nous - - + Rejoignez-nous
{% endif %} diff --git a/src/_includes/partials/components/posts-list.njk b/src/_includes/partials/components/posts-list.njk index b1f4091..7d41009 100644 --- a/src/_includes/partials/components/posts-list.njk +++ b/src/_includes/partials/components/posts-list.njk @@ -3,19 +3,24 @@ {% for item in newsListItems %} {% if item.date.getTime() <= global.now %}
  • -

    - {{ item.data.title }} -

    -

    - {% if item.data.eventDate %} - + + {% if item.data.type == 'event' %} +

    Évènement

    {% else %} - +

    Actualité

    {% endif %} - {% if item.data.eventTime %} - - {% endif %} -

    +

    {{ item.data.title }}

    +

    + {% if item.data.eventDate %} + + {% else %} + + {% endif %} + {% if item.data.eventTime %} + + {% endif %} +

    +
  • {% endif %} {% endfor %} diff --git a/src/images/marker-alt.svg b/src/images/marker-alt.svg new file mode 100644 index 0000000..6b33419 --- /dev/null +++ b/src/images/marker-alt.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/marker-logo-alt.svg b/src/images/marker-logo-alt.svg new file mode 100644 index 0000000..be2ef7b --- /dev/null +++ b/src/images/marker-logo-alt.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/marker-stroke.svg b/src/images/marker-stroke.svg new file mode 100644 index 0000000..0001bf3 --- /dev/null +++ b/src/images/marker-stroke.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/members/florent-le-saout.md b/src/members/florent-le-saout.md index f6805f0..87977b6 100644 --- a/src/members/florent-le-saout.md +++ b/src/members/florent-le-saout.md @@ -9,6 +9,7 @@ socialTwitter: 'https://twitter.com/AstrolabeCae' socialLinkedin: 'https://www.linkedin.com/company/astrolabe-cae' socialMastodon: 'https://framapiaf.org/@AstrolabeCAE' url: '/members/florent-le-saout' +tags: [ linux, dev ] --- Je suis co-fondateur et co-gérant de la SCOP CAE Astrolabe. diff --git a/src/members/jean-christophe-piriou.md b/src/members/jean-christophe-piriou.md index c563bb1..ace2f14 100644 --- a/src/members/jean-christophe-piriou.md +++ b/src/members/jean-christophe-piriou.md @@ -6,6 +6,7 @@ date: '2020-12-01' profile: '/images/profiles/jcp-profile.jpg' socialLinkedin: 'https://www.linkedin.com/in/piriou-jean-christophe-9bb4bb3b/' url: '/members/jean-christophe-piriou' +location: [43.610632310943636, 3.873482372219893] --- Je suis ingénieur conseil auprès des collectivités dans le domaine de l’eau et l’aménagement du territoire ainsi que Product Owner de la solution informatique NAEGA que je co-développe avec mes collègues des CAE. diff --git a/src/members/vincent-genieux.md b/src/members/vincent-genieux.md index cb1776d..b8dd90f 100644 --- a/src/members/vincent-genieux.md +++ b/src/members/vincent-genieux.md @@ -9,6 +9,7 @@ socialTwitter: 'https://twitter.com/AstrolabeCae' socialLinkedin: 'https://www.linkedin.com/in/vincent-g%C3%A9nieux-4223982/' socialMastodon: 'https://framapiaf.org/@AstrolabeCAE' url: '/members/vincent-genieux' +tags: [ linux, dev ] --- ### Co-fondateur et co-gérant d'Astrolabe diff --git a/src/members/yves-gatesoupe.md b/src/members/yves-gatesoupe.md index 749c17a..67e41da 100644 --- a/src/members/yves-gatesoupe.md +++ b/src/members/yves-gatesoupe.md @@ -1,6 +1,6 @@ --- name: 'Yves Gatesoupe' -position: 'Designer Web' +position: 'Développeur Web' positionInternal: 'Membre' date: '2020-06-01' profile: '/images/profiles/yg-profile.jpg' @@ -8,9 +8,11 @@ personalSite: 'https://www.behance.net/ygates' socialTwitter: 'https://twitter.com/YGdsgn' socialLinkedin: 'https://www.linkedin.com/in/yves-gatesoupe-05990b17a/' url: '/members/yves-gatesoupe' +tags: [ web, dev, design, front-end ] +location: [48.1047728782418, -1.6795127572657111] --- -Je suis designer web indépendant depuis janvier 2020. +Je suis développeur web indépendant depuis janvier 2020. J’ai construit mon expérience en tant que développeur web front end pour Orange Business Services en contribuant notamment à la mise en place du Bootstrap Orange [Boosted](https://boosted.orange.com) qui est un framework aux couleurs de la marque avec un focus sur l’accessibilité numérique. diff --git a/src/pages/comprendre-la-cae.md b/src/pages/comprendre-la-cae.md index 1f2af9d..316f2dc 100644 --- a/src/pages/comprendre-la-cae.md +++ b/src/pages/comprendre-la-cae.md @@ -1,6 +1,7 @@ --- title: 'Comprendre la CAE' permalink: '/comprendre-la-cae/index.html' +eleventyExcludeFromCollections: true --- # Une entreprise partagée diff --git a/src/pages/contact.md b/src/pages/contact.md index 69287bf..e16b627 100644 --- a/src/pages/contact.md +++ b/src/pages/contact.md @@ -2,6 +2,7 @@ title: 'Contact' permalink: '/contact/index.html' layout: 'layouts/contact.njk' +eleventyExcludeFromCollections: true --- You can have a contact page which uses a basic form. The [code with the form fields lives here](https://github.com/hankchizljaw/hylia/blob/master/src/_includes/layouts/contact.njk). diff --git a/src/pages/equipe.md b/src/pages/equipe.md index 10967eb..b9f7c83 100644 --- a/src/pages/equipe.md +++ b/src/pages/equipe.md @@ -3,6 +3,8 @@ title: 'L''équipe Astrolabe' permalink: '/equipe/index.html' layout: 'layouts/team.njk' teamListHeading: 'L''équipe Astrolabe' +tagSearchHeading: 'Filtrer par mots-clés :' +eleventyExcludeFromCollections: true --- Astrolabe CAE est confondée par Florent Le Saout et Vincent Génieux en 2019.
    diff --git a/src/pages/nous-rejoindre.md b/src/pages/nous-rejoindre.md index 34a6f2f..72f2165 100644 --- a/src/pages/nous-rejoindre.md +++ b/src/pages/nous-rejoindre.md @@ -1,6 +1,7 @@ --- title: 'Nous rejoindre' permalink: '/nous-rejoindre/index.html' +eleventyExcludeFromCollections: true --- # Comment rejoindre Astrolabe @@ -29,7 +30,8 @@ permalink: '/nous-rejoindre/index.html' - Ouverture des droits allocation chômage si rémunération - Attention, ce n’est pas un contrat de travail - [Voir le contrat CAPE en détail]() + + Voir le contrat CAPE en détail
    @@ -56,7 +58,8 @@ permalink: '/nous-rejoindre/index.html' - Ouverture des droits allocation chômage - Mutuelle santé - [Voir le contrat CESA en détail]() + + Voir le contrat CESA en détail Equipage Astrolabe @@ -77,3 +80,39 @@ permalink: '/nous-rejoindre/index.html' Petit bateau à voile
    + + + + + + diff --git a/src/pages/posts-events.md b/src/pages/posts-events.md index 6babb53..786974b 100644 --- a/src/pages/posts-events.md +++ b/src/pages/posts-events.md @@ -3,6 +3,7 @@ title: 'Actualité & Évènements' permalink: '/posts-events/index.html' layout: 'layouts/posts-events.njk' pageHeading: 'Actualité & Évènements' +eleventyExcludeFromCollections: true --- diff --git a/src/pages/posts-news.md b/src/pages/posts-news.md index 32e7e00..975f84b 100644 --- a/src/pages/posts-news.md +++ b/src/pages/posts-news.md @@ -3,6 +3,7 @@ title: 'Actualité & Évènements' permalink: '/posts-news/index.html' layout: 'layouts/posts-news.njk' pageHeading: 'Actualité & Évènements' +eleventyExcludeFromCollections: true --- diff --git a/src/pages/posts.md b/src/pages/posts.md index a7557b2..1eed3a2 100644 --- a/src/pages/posts.md +++ b/src/pages/posts.md @@ -3,6 +3,7 @@ title: 'Actualité & Évènements' permalink: '/posts/index.html' layout: 'layouts/posts.njk' pageHeading: 'Actualité & Évènements' +eleventyExcludeFromCollections: true --- diff --git a/src/pages/thank-you.md b/src/pages/thank-you.md index 590a28d..25392ef 100644 --- a/src/pages/thank-you.md +++ b/src/pages/thank-you.md @@ -1,6 +1,7 @@ --- title: 'Thank you' permalink: '/thank-you/index.html' +eleventyExcludeFromCollections: true --- # Merci ! diff --git a/src/posts/laboess-cae.md b/src/posts/laboess-cae.md index 11924c6..ba17eac 100644 --- a/src/posts/laboess-cae.md +++ b/src/posts/laboess-cae.md @@ -1,7 +1,7 @@ --- title: On parle des CAE au Labo de L'ESS date: '2021-06-16' -type: 'new' +type: 'news' illustration: '/images/posts/Podcast-LaboESS-Logo.jpg' --- diff --git a/src/scss/_theme.scss b/src/scss/_theme.scss index 86522b2..d948d23 100644 --- a/src/scss/_theme.scss +++ b/src/scss/_theme.scss @@ -49,6 +49,15 @@ a:not([class]):visited { } } +.link { + font-weight: 400; + color: var(--color-dark); + + &:visited { + color: inherit; + } +} + .return-link { align-self: flex-end; font-size: 1.125rem; @@ -60,3 +69,27 @@ a:not([class]):visited { color: inherit; } } + +.justify-end { + justify-content: flex-end; +} + +.ml-1 { + margin-left: 1rem; +} + +.align-center { + align-items: center; +} + +.fw-400 { + font-weight: 400; +} + +.fs-h2 { + font-size: 1.5rem; +} + +.fs-h3 { + font-size: 1.25rem; +} diff --git a/src/scss/components/_form.scss b/src/scss/components/_form.scss index 496c62c..df0cef9 100644 --- a/src/scss/components/_form.scss +++ b/src/scss/components/_form.scss @@ -5,6 +5,7 @@ } .form-container { + margin-top: 8rem; padding: 0 0 6rem; background-color: var(--color-primary); color: var(--color-dark); diff --git a/src/scss/components/_member-list.scss b/src/scss/components/_member-list.scss index a31b545..1475553 100644 --- a/src/scss/components/_member-list.scss +++ b/src/scss/components/_member-list.scss @@ -1,6 +1,4 @@ .member-list { - margin-bottom: 8rem; - &__heading { margin: 8rem 0 4rem; } @@ -8,10 +6,10 @@ &__items { margin-top: 4rem; display: grid; - grid-template-columns: repeat(3, 1fr); + grid-template-columns: repeat(4, 1fr); grid-template-rows: auto; - grid-column-gap: 1.5rem; - grid-row-gap: 6rem; + grid-column-gap: 2rem; + grid-row-gap: 4rem; } &__item { @@ -19,15 +17,32 @@ flex-direction: column; align-items: center; color: var(--color-dark); + + > p { + text-align: center; + } + + > .btn { + text-align: center; + } + + > a { + display: flex; + flex-direction: column; + text-decoration: none; + } img { border-radius: 50%; - height: 17rem; - width: auto; + height: auto; + width: 100%; + padding: 0 1rem; + .btn { margin-top: -1.5rem; margin-bottom: .5rem; + text-align: center; + align-self: center; + p { font-size: 1.125rem; @@ -40,13 +55,12 @@ flex-direction: column; background-color: var(--color-white); color: var(--color-dark); - padding: 2rem; - font-size: 1.5rem; font-weight: 600; p { + font-size: 1.2rem; text-align: center; - margin: 1rem 0 3.125rem; + margin: 2rem 0 3.125rem; } } } diff --git a/src/scss/components/_posts-list.scss b/src/scss/components/_posts-list.scss index a5c8554..cc60c75 100644 --- a/src/scss/components/_posts-list.scss +++ b/src/scss/components/_posts-list.scss @@ -25,20 +25,32 @@ } &__item { - display: flex; - flex-direction: column; + background-color: var(--color-primary); color: var(--color-dark); border-radius: 1rem; - &.event { + &.event, + &.event &-type { background-color: var(--color-light-blue); } + &-type { + margin-bottom: auto; + align-self: flex-start; + border-radius: 1rem 0; + padding: .125rem 1rem; + font-size: .875rem; + font-weight: 600; + background-color: var(--color-primary); + } + &-heading { font-size: 1.125rem; - font-weight: 600; - padding: 4.5rem 1.5rem 4rem; + font-weight: 400; + padding: 1rem 1.5rem; + background-color: rgba(0, 0, 0, .65); + color: #fff; } &-date { @@ -47,7 +59,6 @@ background-color: var(--color-light-gray); border-radius: 0 0 1rem 1rem; padding: 1rem 1.5rem; - margin-top: auto; display: flex; time + time { @@ -57,6 +68,15 @@ } &__link { + border-radius: 1rem; + display: flex; + flex-direction: column; + justify-content: flex-end; + height: 16rem; + background-repeat: no-repeat; + background-position: center; + background-size: cover; + &, &:visited { color: var(--color-dark); @@ -64,7 +84,9 @@ } &:hover { - text-decoration: underline; + h3 { + text-decoration: underline; + } } } } diff --git a/src/scss/components/_tags.scss b/src/scss/components/_tags.scss new file mode 100644 index 0000000..9e62ba0 --- /dev/null +++ b/src/scss/components/_tags.scss @@ -0,0 +1,21 @@ +.tag-list { + list-style: none; + display: flex; + + .tag-item + .tag-item { + margin-left: 1rem; + } +} + +.tag-item { + padding: .5rem 1rem; + background-color: var(--color-light-gray); + + a { + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } +} diff --git a/src/scss/global.scss b/src/scss/global.scss index b2226d2..c5545d3 100644 --- a/src/scss/global.scss +++ b/src/scss/global.scss @@ -75,4 +75,5 @@ img { @import 'components/partner'; @import 'components/skip-link'; @import 'components/video-player'; +@import 'components/tags'; @import 'utilities/responsive'; diff --git a/src/team-skills.njk b/src/team-skills.njk new file mode 100644 index 0000000..05a897e --- /dev/null +++ b/src/team-skills.njk @@ -0,0 +1,38 @@ +--- +title: 'L''équipe Astrolabe' +pagination: + data: collections + size: 1 + alias: tag + filter: + - post + - news + - event + - customer + - partner +permalink: /equipe/{{ tag }}/ +--- + +{% extends 'layouts/base.njk' %} + +{% set teamListItems = collections[tag] %} + +{% block content %} +
    +
    +

    {{ teamListHeading }}

    + {{ content | safe }} +
    +

    Profils par mot-clé :

    + {{ tag }} + tout +
    +
    + {% include "partials/components/member-list-simple.njk" %} +
    + Voir tous les membres +
    + {% include "partials/components/map.njk" %} + {% include "partials/components/contact-form.njk" %} +
    +{% endblock %}