feat: ajoute actualité rectorat 17 octobre
20
.eleventy.js
|
@ -1,12 +1,13 @@
|
||||||
require('dotenv').config()
|
require('dotenv').config()
|
||||||
|
|
||||||
const { DateTime } = require("luxon");
|
|
||||||
|
|
||||||
const pluginNavigation = require("@11ty/eleventy-navigation");
|
const pluginNavigation = require("@11ty/eleventy-navigation");
|
||||||
|
const fg = require('fast-glob');
|
||||||
|
const { DateTime } = require("luxon");
|
||||||
const markdownIt = require('markdown-it')
|
const markdownIt = require('markdown-it')
|
||||||
const markdownItAttrs = require('markdown-it-attrs')
|
const markdownItAttrs = require('markdown-it-attrs')
|
||||||
|
|
||||||
const filters = require('./src/filters')
|
const filters = require('./src/filters')
|
||||||
|
const galleryShortcode = require('./src/shortcodes/gallery')
|
||||||
|
|
||||||
|
const photosRectorat20221017 = fg.sync(['**/src/images/rectorat-2022-10-17/*', '!**/_site'])
|
||||||
|
|
||||||
const markdownItOptions = {
|
const markdownItOptions = {
|
||||||
html: true,
|
html: true,
|
||||||
|
@ -34,6 +35,11 @@ module.exports = function(eleventyConfig) {
|
||||||
eleventyConfig.addPassthroughCopy("src/presse/audios");
|
eleventyConfig.addPassthroughCopy("src/presse/audios");
|
||||||
eleventyConfig.addPassthroughCopy("src/idees-recues/images");
|
eleventyConfig.addPassthroughCopy("src/idees-recues/images");
|
||||||
eleventyConfig.addPassthroughCopy("src/actualites/images");
|
eleventyConfig.addPassthroughCopy("src/actualites/images");
|
||||||
|
eleventyConfig.addPassthroughCopy({
|
||||||
|
"node_modules/photoswipe/dist/photoswipe.css": "js/photoswipe.css",
|
||||||
|
"node_modules/photoswipe/dist/photoswipe.esm.js": "js/photoswipe.esm.js",
|
||||||
|
"node_modules/photoswipe/dist/photoswipe-lightbox.esm.js": "js/photoswipe-lightbox.esm.js"
|
||||||
|
})
|
||||||
|
|
||||||
eleventyConfig.addFilter("toHTML", str => {
|
eleventyConfig.addFilter("toHTML", str => {
|
||||||
return new markdownIt(markdownItOptions).renderInline(str);
|
return new markdownIt(markdownItOptions).renderInline(str);
|
||||||
|
@ -74,6 +80,10 @@ module.exports = function(eleventyConfig) {
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
eleventyConfig.addCollection('photosRectorat20221017', function() {
|
||||||
|
return photosRectorat20221017;
|
||||||
|
});
|
||||||
|
|
||||||
eleventyConfig.addCollection('presseNonscollectif', collection => [
|
eleventyConfig.addCollection('presseNonscollectif', collection => [
|
||||||
...collection
|
...collection
|
||||||
.getFilteredByTags('presse', 'nonscollectif')
|
.getFilteredByTags('presse', 'nonscollectif')
|
||||||
|
@ -100,6 +110,8 @@ module.exports = function(eleventyConfig) {
|
||||||
.filter(post => post.date >= DateTime.fromISO('2022-09-15') && post.date < DateTime.fromISO('2022-09-17'))
|
.filter(post => post.date >= DateTime.fromISO('2022-09-15') && post.date < DateTime.fromISO('2022-09-17'))
|
||||||
])
|
])
|
||||||
|
|
||||||
|
eleventyConfig.addAsyncShortcode('gallery', galleryShortcode);
|
||||||
|
|
||||||
eleventyConfig.setLibrary('md', markdownIt(markdownItOptions).use(markdownItAttrs))
|
eleventyConfig.setLibrary('md', markdownIt(markdownItOptions).use(markdownItAttrs))
|
||||||
|
|
||||||
eleventyConfig.setFrontMatterParsingOptions({ excerpt: true });
|
eleventyConfig.setFrontMatterParsingOptions({ excerpt: true });
|
||||||
|
|
|
@ -10,17 +10,21 @@
|
||||||
"clean": "rm -rf _site",
|
"clean": "rm -rf _site",
|
||||||
"tailwind:watch": "postcss src/style/global.pcss --o src/css/global.css --watch",
|
"tailwind:watch": "postcss src/style/global.pcss --o src/css/global.css --watch",
|
||||||
"tailwind:build": "postcss src/style/global.pcss --o src/css/global.css --minify",
|
"tailwind:build": "postcss src/style/global.pcss --o src/css/global.css --minify",
|
||||||
"dev": "npm run clean && concurrently \"npm run tailwind:watch\" \"eleventy --serve\"",
|
"dev": "concurrently \"npm run tailwind:watch\" \"eleventy --serve\"",
|
||||||
"build": "npm run clean && npm run tailwind:build && eleventy"
|
"build": "npm run clean && npm run tailwind:build && eleventy"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@11ty/eleventy": "^1.0.1",
|
"@11ty/eleventy": "^1.0.1",
|
||||||
|
"@11ty/eleventy-img": "^2.0.1",
|
||||||
"@11ty/eleventy-navigation": "^0.3.3",
|
"@11ty/eleventy-navigation": "^0.3.3",
|
||||||
"autoprefixer": "^10.4.7",
|
"autoprefixer": "^10.4.7",
|
||||||
"concurrently": "^7.3.0",
|
"concurrently": "^7.3.0",
|
||||||
"dotenv": "^16.0.1",
|
"dotenv": "^16.0.1",
|
||||||
|
"fast-glob": "^3.2.12",
|
||||||
"markdown-it": "^13.0.1",
|
"markdown-it": "^13.0.1",
|
||||||
"markdown-it-attrs": "^4.1.4",
|
"markdown-it-attrs": "^4.1.4",
|
||||||
|
"outdent": "^0.8.0",
|
||||||
|
"photoswipe": "^5.3.2",
|
||||||
"postcss-cli": "^10.0.0",
|
"postcss-cli": "^10.0.0",
|
||||||
"tailwindcss": "^3.1.6"
|
"tailwindcss": "^3.1.6"
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,9 +41,9 @@
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<link rel="stylesheet" href="{{ '/css/global.css' | url }}">
|
<link rel="stylesheet" href="{{ '/css/global.css' | url }}">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||||||
<link rel="icon" type="image/png" href="favicon-16x16.png" sizes="16x16">
|
<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
|
||||||
<link rel="icon" type="image/png" href="favicon-32x32.png" sizes="32x32">
|
<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
|
||||||
<link rel="icon" type="image/png" href="android-chrome-192x192.png" sizes="192x192">
|
<link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
|
||||||
<link rel="icon" type="image/png" href="android-chrome-512x512.png" sizes="512x512">
|
<link rel="icon" type="image/png" href="/android-chrome-512x512.png" sizes="512x512">
|
||||||
<meta name="theme-color" content="#fff7ed">
|
<meta name="theme-color" content="#fff7ed">
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
---
|
||||||
|
title: Journée d’école hors les murs
|
||||||
|
description: Le NonSco’llectif a organisé une journée d’instruction hors-les-murs devant le rectorat afin de montrer à M. le recteur la réalité de l’instruction en famille.
|
||||||
|
date: 2022-10-17
|
||||||
|
modified: 2022-10-23
|
||||||
|
image: /images/rectorat-2022-10-17/journee.jpeg
|
||||||
|
---
|
||||||
|
|
||||||
|
Le NonSco’llectif a organisé une journée d’instruction hors-les-murs devant le rectorat afin de montrer à M. le recteur la réalité de l’instruction en famille.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
« À Toulouse, peut être plus qu’ailleurs, nous sommes très attentifs à tout ce qui a trait à l’application de la loi, notamment dans le contexte du séparatisme »<br>
|
||||||
|
- Mostafa Fourar
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p>Dans
|
||||||
|
<a target="_blank" href="https://www.ladepeche.fr/2022/10/17/instruction-en-famille-le-recteur-de-lacademie-de-toulouse-est-attentif-a-respecter-la-loi-du-24-aout-2021-10740055.php">La Dépêche d’aujourd’hui</a>,
|
||||||
|
Mostafa Fourar, recteur de l’académie de Toulouse, persévère dans sa posture irrecevable et continue d’assimiler les familles en IEF a des séparatistes.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>Alors le NonSco’llectif s’est déplacé jusqu’au rectorat pour une entreprise de vulgarisation afin de rétablir la vérité.</p>
|
||||||
|
|
||||||
|
<p>Tout l’après-midi, parents et enfants se sont rassemblés devant les grilles de l’institution pour une grande session d’école hors les murs. Échecs, lecture, atelier d’arts, atelier philo sur la liberté… </p>
|
||||||
|
|
||||||
|
<p>Le personnel académique et les médias ont pu découvrir des enfants socialisés, curieux, autonomes et ouverts sur le monde !</p>
|
||||||
|
|
||||||
|
<p>Merci à <a target="_blank" href="https://twitter.com/gverniol">Gisèle Verniol</a> - EELV - pour sa présence !</p>
|
||||||
|
|
||||||
|
<p>Le personnel académique et les médias ont pu découvrir lundi après-midi des enfants socialisés, curieux, autonomes et ouverts sur le monde !</p>
|
||||||
|
|
||||||
|
<p><a href="/presse/2022-10-17-via-occitanie/">viàOccitanie</a> est venu à notre journée d'instruction devant l'Académie De Toulouse :</p>
|
||||||
|
|
||||||
|
<iframe title="Un rassemblement pour défendre l'instruction en famille à Toulouse" src="https://peertube.stream/videos/embed/afbc0782-7f2e-4dfe-a905-34209a0a3e46?warningTitle=0" allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups" class="mx-auto my-2 w-1/2 video-iframe"></iframe>
|
||||||
|
|
||||||
|
<p class="mt-8">Malgré nos invitations en chansons, Moustafa Fourar n'est pas descendu à notre rencontre, ni aucun representant du rectorat.</p>
|
||||||
|
|
||||||
|
<p>Quelques photos de notre journée :</p>
|
||||||
|
|
||||||
|
{% gallery collections.photosRectorat20221017 %}
|
||||||
|
|
||||||
|
<p>Le NonSco'llectif continue à se mobiliser pour faire sauter l'article 49 de cette loi absurde.<br>
|
||||||
|
On ne s'arrêtera pas au Tribunal Administratif !
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>#OnLâcheRien
|
||||||
|
#SuppressionArt49IEF
|
||||||
|
</p>
|
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 967 KiB |
After Width: | Height: | Size: 667 KiB |
After Width: | Height: | Size: 928 KiB |
After Width: | Height: | Size: 588 KiB |
After Width: | Height: | Size: 544 KiB |
After Width: | Height: | Size: 649 KiB |
After Width: | Height: | Size: 722 KiB |
After Width: | Height: | Size: 517 KiB |
After Width: | Height: | Size: 859 KiB |
After Width: | Height: | Size: 738 KiB |
After Width: | Height: | Size: 741 KiB |
After Width: | Height: | Size: 664 KiB |
After Width: | Height: | Size: 718 KiB |
After Width: | Height: | Size: 769 KiB |
After Width: | Height: | Size: 995 KiB |
After Width: | Height: | Size: 892 KiB |
After Width: | Height: | Size: 722 KiB |
After Width: | Height: | Size: 736 KiB |
After Width: | Height: | Size: 786 KiB |
After Width: | Height: | Size: 861 KiB |
After Width: | Height: | Size: 750 KiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 806 KiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 554 KiB |
After Width: | Height: | Size: 524 KiB |
After Width: | Height: | Size: 610 KiB |
After Width: | Height: | Size: 750 KiB |
After Width: | Height: | Size: 624 KiB |
After Width: | Height: | Size: 709 KiB |
After Width: | Height: | Size: 602 KiB |
After Width: | Height: | Size: 641 KiB |
After Width: | Height: | Size: 694 KiB |
After Width: | Height: | Size: 798 KiB |
After Width: | Height: | Size: 952 KiB |
After Width: | Height: | Size: 810 KiB |
After Width: | Height: | Size: 967 KiB |
After Width: | Height: | Size: 931 KiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 937 KiB |
After Width: | Height: | Size: 789 KiB |
After Width: | Height: | Size: 989 KiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 974 KiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 702 KiB |
After Width: | Height: | Size: 685 KiB |
After Width: | Height: | Size: 669 KiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 460 KiB |
After Width: | Height: | Size: 469 KiB |
After Width: | Height: | Size: 624 KiB |
After Width: | Height: | Size: 801 KiB |
After Width: | Height: | Size: 813 KiB |
After Width: | Height: | Size: 837 KiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 674 KiB |
After Width: | Height: | Size: 616 KiB |
After Width: | Height: | Size: 818 KiB |
After Width: | Height: | Size: 833 KiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 726 KiB |
After Width: | Height: | Size: 919 KiB |
After Width: | Height: | Size: 541 KiB |
After Width: | Height: | Size: 847 KiB |
After Width: | Height: | Size: 767 KiB |
After Width: | Height: | Size: 992 KiB |
After Width: | Height: | Size: 774 KiB |
After Width: | Height: | Size: 584 KiB |
After Width: | Height: | Size: 757 KiB |
After Width: | Height: | Size: 787 KiB |
After Width: | Height: | Size: 634 KiB |
After Width: | Height: | Size: 870 KiB |
After Width: | Height: | Size: 738 KiB |
After Width: | Height: | Size: 902 KiB |
After Width: | Height: | Size: 798 KiB |
After Width: | Height: | Size: 782 KiB |
After Width: | Height: | Size: 694 KiB |
After Width: | Height: | Size: 921 KiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 364 KiB |
|
@ -10,7 +10,7 @@ description: Le NonSco’llectif œuvre pour préserver une liberté qui nous es
|
||||||
|
|
||||||
{% set liste = collections.actusHome %}
|
{% set liste = collections.actusHome %}
|
||||||
|
|
||||||
<ol id="actualites-liste" class="flex flex-col lg:grid lg:gap-4 lg:grid-cols-3">
|
<ol id="actualites-liste" class="flex flex-col md:grid md:gap-4 md:grid-cols-3">
|
||||||
{% for actualite in liste %}
|
{% for actualite in liste %}
|
||||||
<li class="{% if actualite.url == url %} famille-item-active{% endif %}">
|
<li class="{% if actualite.url == url %} famille-item-active{% endif %}">
|
||||||
<a href="{{ actualite.url | url }}" class="no-underline">
|
<a href="{{ actualite.url | url }}" class="no-underline">
|
||||||
|
|
|
@ -0,0 +1,104 @@
|
||||||
|
const Image = require("@11ty/eleventy-img");
|
||||||
|
const outdent = require('outdent');
|
||||||
|
|
||||||
|
|
||||||
|
const stringifyAttributes = (attributeMap) => {
|
||||||
|
return Object.entries(attributeMap)
|
||||||
|
.map(([attribute, value]) => {
|
||||||
|
if (typeof value === 'undefined') return '';
|
||||||
|
return `${attribute}="${value}"`;
|
||||||
|
})
|
||||||
|
.join(' ');
|
||||||
|
};
|
||||||
|
|
||||||
|
const sourceHtmlString = (imageMetadata) => Object.values(imageMetadata)
|
||||||
|
.map((images) => {
|
||||||
|
const { sourceType } = images[0];
|
||||||
|
|
||||||
|
const sourceAttributes = stringifyAttributes({
|
||||||
|
type: sourceType,
|
||||||
|
srcset: images.map((image) => image.srcset).join(', '),
|
||||||
|
sizes: '25rem',
|
||||||
|
});
|
||||||
|
|
||||||
|
return `<source ${sourceAttributes}>`;
|
||||||
|
})
|
||||||
|
.join('\n');
|
||||||
|
|
||||||
|
const getLargestImage = (imageMetadata, format) => {
|
||||||
|
const images = imageMetadata[format];
|
||||||
|
return images[images.length - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
const imgHtmlString = (image, imageMetadata) => {
|
||||||
|
const largestUnoptimizedImg = getLargestImage(imageMetadata, "jpeg");
|
||||||
|
|
||||||
|
const imgAttributes = stringifyAttributes({
|
||||||
|
src: largestUnoptimizedImg.url,
|
||||||
|
alt: image.split('/').at(-1),
|
||||||
|
loading: 'lazy',
|
||||||
|
decoding: 'async',
|
||||||
|
});
|
||||||
|
|
||||||
|
return `<img ${imgAttributes}>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const pictureHtml = (image, imageMetadata) => {
|
||||||
|
const pictureAttributes = stringifyAttributes({
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
const picture = `<picture ${pictureAttributes}>
|
||||||
|
${sourceHtmlString(imageMetadata)}
|
||||||
|
${imgHtmlString(image, imageMetadata)}
|
||||||
|
</picture>`;
|
||||||
|
|
||||||
|
return outdent`${picture}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const metadataToPicture = ([image, m]) => {
|
||||||
|
const largestUnoptimizedImg = getLargestImage(m, "jpeg");
|
||||||
|
|
||||||
|
return `<a
|
||||||
|
href="${largestUnoptimizedImg.url}"
|
||||||
|
class="${largestUnoptimizedImg.width >= largestUnoptimizedImg.height ? 'landscape' : 'portrait'}"
|
||||||
|
data-pswp-width="${largestUnoptimizedImg.width}"
|
||||||
|
data-pswp-height="${largestUnoptimizedImg.height}"
|
||||||
|
>`
|
||||||
|
+ pictureHtml(image, m)
|
||||||
|
+ `</a>`
|
||||||
|
}
|
||||||
|
|
||||||
|
const galleryShortcode = async (images) => {
|
||||||
|
console.log("Generating gallery …")
|
||||||
|
const metadatas = await Promise.all(images.map(async i => {
|
||||||
|
const metadata = await Image(i, {
|
||||||
|
widths: [300, 600, null],
|
||||||
|
formats: ['webp', 'jpeg'],
|
||||||
|
outputDir: '_site/images/generated',
|
||||||
|
urlPath: '/images/generated'
|
||||||
|
});
|
||||||
|
return [i, metadata];
|
||||||
|
}));
|
||||||
|
|
||||||
|
console.log("Gallery generated !")
|
||||||
|
|
||||||
|
return `
|
||||||
|
<script type="module">
|
||||||
|
import PhotoSwipeLightbox from '/js/photoswipe-lightbox.esm.js';
|
||||||
|
const lightbox = new PhotoSwipeLightbox({
|
||||||
|
gallery: '#gallery',
|
||||||
|
children: 'a',
|
||||||
|
pswpModule: () => import('/js/photoswipe.esm.js')
|
||||||
|
});
|
||||||
|
lightbox.init();
|
||||||
|
</script>
|
||||||
|
<link rel="stylesheet" href="/js/photoswipe.css">
|
||||||
|
<section id="gallery" class="gallery">`
|
||||||
|
+ metadatas.map(metadataToPicture).join('')
|
||||||
|
+ `</section>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = galleryShortcode
|
|
@ -5,7 +5,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
@apply object-cover object-top w-full;
|
@apply object-cover object-top w-full h-48;
|
||||||
max-height: 14rem;
|
max-height: 14rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,3 +38,18 @@
|
||||||
@apply p-4 w-full max-w-7xl aspect-video;
|
@apply p-4 w-full max-w-7xl aspect-video;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.gallery {
|
||||||
|
@apply grid grid-flow-row-dense grid-cols-2 md:grid-cols-3 gap-4;
|
||||||
|
|
||||||
|
a {
|
||||||
|
@apply w-full h-full;
|
||||||
|
|
||||||
|
&.portrait {
|
||||||
|
@apply row-span-2;
|
||||||
|
}
|
||||||
|
|
||||||
|
picture img {
|
||||||
|
@apply h-full w-full object-cover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,19 +1,18 @@
|
||||||
.wrapper-news {
|
.wrapper-news {
|
||||||
@apply flex flex-wrap mt-4 justify-center;
|
@apply flex flex-col lg:grid md:gap-2 lg:grid-cols-3;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@apply no-underline;
|
@apply no-underline;
|
||||||
|
|
||||||
.news-card {
|
.news-card {
|
||||||
@apply m-2 border-2 rounded-lg lg:w-[480px] relative flex flex-col items-center overflow-hidden bg-slate-600;
|
@apply m-2 border-2 rounded-lg relative flex flex-col items-center overflow-hidden bg-slate-600 max-w-xl mx-auto lg:h-[35rem];
|
||||||
height: 35rem;
|
|
||||||
|
|
||||||
.news-head {
|
.news-head {
|
||||||
@apply w-full flex items-center mt-2;
|
@apply w-full flex items-center mt-2;
|
||||||
height: 5rem;
|
height: 5rem;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
@apply w-1/4 mx-2 mt-2 py-2 px-2;
|
@apply h-full w-20 mx-2 mt-2 object-contain;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
|
|