Compare commits

..

No commits in common. "master" and "francois-bonningues" have entirely different histories.

284 changed files with 9880 additions and 5352 deletions
.eleventy.js.gitignoreREADME.mddeploy.jspackage-lock.jsonpackage.json
src
.htaccess
_data
_includes
feed.njk
filters
form
images
pages
partners
poisson-haut.jpg
posts
AG2024
Adalovelace_calculusletterlarge.pngAffiche-MoisESS2021.jpgAffiche-MoisESS2022.jpgAffiche-PAE-Thorigne-JIDF-Mars2023.jpgCAB500-alice-recoque.jpegCNIL-logo-alice-recoque.pngCOBOL-grace-hopper.pngCarte_CAE_COPEA_France_Metro.jpgCarte_CAE_France_Metro.jpgCopeaSete2020.pngEDO23-Pres-Astrolabe-ITGP1.pngEntreprendreCAE-Plaquette2022-p1.jpgFlorent-DevFreelanceCAE.jpgFlyer-CAE-OuestP1.jpegHappy-Dev-bigre.pngIllustration_SCOP_CAE_cquoi.jpgLicenceLibreCOPEA2020P1.jpgMARK1-grace-hopper.JPGMois-ESS2023-Apec.jpgPeopleNetwork.svgPodcast-LaboESS-CitationAnneCLairePignal.jpgPodcast-LaboESS-Logo.jpgPres-Atelier-Libre-CAE-sete.pngProgrammation-PAE-Thorigne-JIDF-Mars2023.jpgProgrammeCommunsRennes121019.jpgQuestionMark.svgSEEPH2023-Rennes.pngSocialNetworking.pngada-lovelace.pngada_language_logo.pngaffiche-forum-seisme2024.jpgagrement-cir-astrolabe2024.jpgalice-recoque.jpegall-smartphone.jpgastro-stop-pv.jpegatelier-CAE-PAE-betton-2022.jpgbateau-cae.jpgbigre-mois-ess2023.jpgbigre_rennes.jpgbirthday.pngbreizh_tour_2022_v5-Saint_Brieuc.jpgbreizh_tour_2022_v5-Saint_Malo.jpgbreizh_tour_2022_v5.pngbreizh_tour_2022_v5_small.pngchatgptel.jpgcrew-join.pngfishing.pngflorent-radiolaser.jpggrace-hopper.jpgillustration-reu-astrolabe-talorig.pngillustration_Baloop_PC.jpgillustration_berlaymont.jpglogo-11ty.png

View File

@ -1,31 +1,27 @@
import rssPlugin from '@11ty/eleventy-plugin-rss';
import syntaxHighlight from '@11ty/eleventy-plugin-syntaxhighlight';
import fs from 'fs';
import util from 'util';
const rssPlugin = require('@11ty/eleventy-plugin-rss');
const syntaxHighlight = require('@11ty/eleventy-plugin-syntaxhighlight');
const fs = require('fs');
const util = require('util')
// Import filters
import dateFilter from './src/filters/date-filter.js';
import markdownFilter from './src/filters/markdown-filter.js';
import w3DateFilter from './src/filters/w3-date-filter.js';
const dateFilter = require('./src/filters/date-filter.js');
const markdownFilter = require('./src/filters/markdown-filter.js');
const w3DateFilter = require('./src/filters/w3-date-filter.js');
// Import transforms
import htmlMinTransform from './src/transforms/html-min-transform.js';
import parseTransform from './src/transforms/parse-transform.js';
const htmlMinTransform = require('./src/transforms/html-min-transform.js');
const parseTransform = require('./src/transforms/parse-transform.js');
// Import data files
import {createRequire} from 'node:module';
const require = createRequire(import.meta.url);
// need this because of issue when using ESM : https://github.com/11ty/eleventy-dependency-tree-esm/issues/2
// This will get soon resolved
const site = require('./src/_data/site.json');
export default function(config) {
module.exports = function(config) {
// Filters
config.addFilter('dateFilter', dateFilter);
config.addFilter('markdownFilter', markdownFilter);
config.addFilter('w3DateFilter', w3DateFilter);
config.addFilter('dump', obj => {
return util.inspect(obj);
return util.inspect(obj)
});
// Layout aliases
@ -52,9 +48,11 @@ export default function(config) {
const livePosts = post => post.date <= now && !post.data.draft;
const newsPosts = post => post.data.type === 'news';
const eventPosts = post => post.data.type === 'event';
config.addCollection('posts', collection => {
return [...collection.getFilteredByGlob('./src/posts/*.md')].reverse();
return [
...collection.getFilteredByGlob('./src/posts/*.md')
].reverse();
});
config.addCollection('news', collection => {
return [
@ -72,59 +70,56 @@ export default function(config) {
.slice(0, site.maxNewsPerPage);
});
config.addCollection('members', collection => {
return [...collection.getFilteredByGlob('./src/members/*.md')];
return [...collection.getFilteredByGlob("./src/members/*.md")];
});
config.addCollection('profiles', collection => {
return [...collection.getFilteredByGlob('./src/members/*.md')]
.reverse()
.slice(0, site.maxProfilePreview);
return [...collection.getFilteredByGlob("./src/members/*.md")]
.reverse()
.slice(0, site.maxProfilePreview)
;
});
config.addCollection('tagsList', function(collectionApi) {
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));
}
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) {
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);
}
});
}
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')
config.addCollection("membersLocations", function(collectionApi) {
return collectionApi.getFilteredByGlob("./src/members/*.md")
.filter(item => typeof item.data.location !== 'undefined')
.map(member => {
.map( member => {
return {
name: member.data.name,
url: member.data.url,
location: member.data.location
location: member.data.location,
};
});
});
});
config.addCollection('customers', collection => {
return [...collection.getFilteredByGlob('./src/customers/*.md')]
.reverse()
.slice(0, site.maxCustomerPerPage);
return [...collection.getFilteredByGlob("./src/customers/*.md")]
.reverse()
.slice(0, site.maxCustomerPerPage);
});
config.addCollection('partners', collection => {
return [...collection.getFilteredByGlob('./src/partners/*.md')]
.reverse()
.slice(0, site.maxPartnerPerPage);
return [...collection.getFilteredByGlob("./src/partners/*.md")]
.reverse()
.slice(0, site.maxPartnerPerPage);
});
// Plugins
@ -151,6 +146,6 @@ export default function(config) {
input: 'src',
output: 'dist'
},
passthroughFileCopy: true
passthroughFileCopy: true,
};
}
};

1
.gitignore vendored
View File

@ -7,7 +7,6 @@ npm-debug.*
*.swp
.DS_Store
.vscode
nohup.out
*.code-workspace
.sass-cache
node_modules

View File

@ -131,19 +131,3 @@ Fill in the meta information :
### FAQ section
Edit `_data/faq.json` file to add a new Q/A couple object. Plain html e.g. `<br>` or `<a href="">link</a>` is supported
### Contact form
Edit `partials/components/contact-form.html` file to modify the contact form and `src/form/contact-form-handler.php` to modify the form handler.
To test it in a local environment, because there is PHP to execute, you will need to setup a apache vhost with the `dist` folder as the root and the phpmailer library installed.
The captcha service is hCaptcha, you will need to create an account and get your own site key (change it in the contact form partial) and secret key.
Add these lines to the vhost configuration file (here with mailtrap as smtp provider for testing purposes):
```
SetEnv ASTRO_SMTP_FROM test@astrolabe.test
SetEnv ASTRO_SMTP_HOSTNAME sandbox.smtp.mailtrap.io
SetEnv ASTRO_SMTP_USERNAME xxxxx
SetEnv ASTRO_SMTP_PASSWORD xxxxx
SetEnv HCAPTCHA_SECRET_KEY xxxxx
```

View File

@ -13,7 +13,7 @@ var config = {
// e.g. exclude sourcemaps, and ALL files in node_modules (including dot files)
exclude: ["dist/**/*.map", "node_modules/**", "node_modules/**/.*", ".git/**"],
// delete ALL existing files at destination before uploading, if true
deleteRemote: true,
deleteRemote: false,
// Passive mode is forced (EPSV command is not sent)
forcePasv: true
};

11101
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,10 +3,9 @@
"version": "0.1.0",
"description": "Site web de la coopérative Astrolabe CAE",
"main": "index.js",
"type": "module",
"dependencies": {
"@11ty/eleventy": "^3.0.0",
"@11ty/eleventy-plugin-rss": "^2.0.2",
"@11ty/eleventy": "^2.0.0",
"@11ty/eleventy-plugin-rss": "^1.0.7",
"@11ty/eleventy-plugin-syntaxhighlight": "^2.0.3",
"@tbranyen/jsdom": "^13.0.0",
"bootstrap": "^5.1.3",
@ -30,7 +29,7 @@
"make-dir-cli": "^3.0.0",
"prettier": "^1.19.1",
"rimraf": "^3.0.2",
"rollup": "^4.24.0",
"rollup": "^1.32.1",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-json": "^4.0.0",
"rollup-plugin-node-resolve": "^5.2.0",

View File

@ -1,16 +1,12 @@
# Prevent viewing of htaccess file.
<Files .htaccess>
<IfModule mod_access_compat.c>
Order Allow,Deny
Deny from all
</IfModule>
order allow,deny
deny from all
</Files>
# Prevent directory listings
Options All -Indexes
ErrorDocument 404 /404.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP_HOST} ^astrolabe\.coop [NC]
RewriteRule ^ https://www.astrolabe.coop%{REQUEST_URI} [L,NE,R=301]
</IfModule>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP_HOST} ^astrolabe\.coop [NC]
RewriteRule ^ https://www.astrolabe.coop%{REQUEST_URI} [L,NE,R=301]

View File

@ -1,4 +1,4 @@
export default {
module.exports = {
random() {
const segment = () => {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);

View File

@ -1,4 +1,4 @@
export default {
module.exports = {
getNextHeadingLevel(currentLevel) {
return parseInt(currentLevel, 10) + 1;
},

View File

@ -10,16 +10,13 @@
"authorCity": "35000 Rennes",
"authorSocial": {
"mastodon": "https://framapiaf.org/@AstrolabeCAE",
"twitter": "https://twitter.com/AstrolabeCae",
"linkedin": "https://www.linkedin.com/company/astrolabe-cae/",
"facebook": "https://www.facebook.com/profile.php?id=61558600207926",
"instagram": "https://www.instagram.com/cae_astrolabe/",
"peertube" : "https://peertube.astrolabe.coop/c/astrolabe_cae/videos",
"youtube" : "https://www.youtube.com/channel/UCdxBGpXwL_A5rOcGbN_Xiag",
"twitch" : "https://www.twitch.tv/astrolabe_cae",
"rss" : "https://www.astrolabe.coop/feed.xml"
"meetup": "https://www.meetup.com/fr-FR/Astrolabe-CAE/",
"mobilizon": "https://mobilizon.fr/@discussion_astrolabe_cae"
},
"designerName": "Yves Gatesoupe et Astrolabe",
"designerHandle": "/equipe/",
"designerName": "Yves Gatesoupe",
"designerHandle": "/members/yves-gatesoupe/",
"illustrators": "Igé Maulana, Leopold Merleau, Visual Glow, Galaxicon, Made, Eucalyp, yurr",
"enableThirdPartyComments": false,
"maxPostsPerPage": 5,

View File

@ -1,11 +1,6 @@
import {createRequire} from 'node:module';
const require = createRequire(import.meta.url);
// need this because of issue when using ESM : https://github.com/11ty/eleventy-dependency-tree-esm/issues/2
// This will get soon resolved
const tokens = require('./tokens.json');
export default {
module.exports = {
colors() {
let response = [];

View File

@ -3,7 +3,6 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="google-site-verification" content="-haql21y-2aWWdYUVglG0kBA4yjCcyG6y8mAzTrZ-Eg" />
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="icon" href="{{ site.faviconPath }}" type="image/png" />
{% include "partials/global/meta-info.njk" %}

View File

@ -21,7 +21,6 @@
</p>
{% endif %}
<ul class="social-links">
<li><a href="{{ [url , "/contact/"] | join | url }}" title="Écrire à {{ name }}" class="member-contact-at"><span>@</span></a></li>
{% if socialMastodon %}
<li><a href="{{ socialMastodon }}" title="mastodon"><svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.956 18.293c3.007-.36 5.625-2.212 5.954-3.905.519-2.667.476-6.508.476-6.508 0-5.207-3.411-6.733-3.411-6.733C18.255.357 15.302.025 12.233 0h-.075c-3.068.025-6.02.357-7.74 1.147 0 0-3.41 1.526-3.41 6.733 0 .315-.003.647-.004.993-.005.96-.01 2.024.018 3.136.123 5.091.933 10.11 5.64 11.355 2.171.575 4.035.695 5.535.613 2.722-.151 4.25-.972 4.25-.972l-.09-1.974s-1.945.613-4.13.538c-2.163-.074-4.448-.233-4.798-2.89a5.448 5.448 0 01-.048-.745s2.124.519 4.816.642c1.647.076 3.19-.096 4.759-.283zm2.406-3.705V8.283c0-1.288-.328-2.312-.987-3.07-.68-.757-1.57-1.145-2.674-1.145-1.278 0-2.246.491-2.885 1.474l-.623 1.043-.622-1.043c-.64-.983-1.608-1.474-2.886-1.474-1.104 0-1.994.388-2.674 1.146-.659.757-.987 1.781-.987 3.07v6.303h2.498V8.47c0-1.29.543-1.945 1.628-1.945 1.2 0 1.802.777 1.802 2.312v3.35h2.483v-3.35c0-1.535.601-2.312 1.801-2.312 1.086 0 1.629.655 1.629 1.945v6.119h2.497z"/></svg></a></li>
{% endif %}
@ -43,7 +42,7 @@
<ul class="tag-list mt-3">
{% for item in tags %}
<li class="tag-item">
<a href="/equipe/{{ item }}/">{{ item }}</a>
<a href="/equipe/{{ item }}">{{ item }}</a>
</li>
{% endfor %}
</ul>
@ -51,14 +50,8 @@
</div>
</div>
</article>
<a class="return-link" href="/equipe/">Voir tous les membres</a>
<a class="return-link" href="/equipe">Voir tous les membres</a>
</section>
{% if emailSlug %}
{% set contactMember = emailSlug %}
{% elif url %}
{% set contactMember = url | replace("/members/","") | replace("-",".") %}
{% endif %}
{% set contactTitle = ["Écrire à ",name] | join %}
{% include "partials/components/contact-form.njk" %}
</main>
{% endblock %}

View File

@ -12,7 +12,7 @@
<img class="post-pic" src="{{ illustration }}" alt="illustration de l'article">
{% endif %}
{{ content | safe }}
<a class="return-link" href="/posts/">Voir toute l'actualité</a>
<a class="return-link" href="/posts">Voir toute l'actualité</a>
</div>
</article>
{% include "partials/components/contact-form.njk" %}

View File

@ -8,13 +8,13 @@
<h1 class="[ member-list__heading ]">{{ pageHeading }}</h1>
<ul class="post-filter">
<li>
<a href="/posts/">Tout</a>
<a href="/posts">Tout</a>
</li>
<li>
<a href="/posts-news/">Actualités</a>
<a href="/posts-news">Actualités</a>
</li>
<li class="active">
<a href="/posts-events/">Évènements</a>
<a href="/posts-events">Évènements</a>
</li>
</ul>
</div>

View File

@ -8,13 +8,13 @@
<h1 class="[ member-list__heading ]">{{ pageHeading }}</h1>
<ul class="post-filter">
<li>
<a href="/posts/">Tout</a>
<a href="/posts">Tout</a>
</li>
<li class="active">
<a href="/posts-news/">Actualités</a>
<a href="/posts-news">Actualités</a>
</li>
<li>
<a href="/posts-events/">Évènements</a>
<a href="/posts-events">Évènements</a>
</li>
</ul>
</div>

View File

@ -8,13 +8,13 @@
<h1 class="[ member-list__heading ]">{{ pageHeading }}</h1>
<ul class="post-filter">
<li class="active">
<a href="/posts/">Tout</a>
<a href="/posts">Tout</a>
</li>
<li>
<a href="/posts-news/">Actualités</a>
<a href="/posts-news">Actualités</a>
</li>
<li>
<a href="/posts-events/">Évènements</a>
<a href="/posts-events">Évènements</a>
</li>
</ul>
</div>

View File

@ -13,7 +13,7 @@
</div>
<ul class="tag-list mt-3" id="tagList">
{% for skill in collections.skillsList %}
<li class="tag-item visually-hidden"><a href="/equipe/{{ skill }}/">{{ skill }}</a></li>
<li class="tag-item visually-hidden"><a href="/equipe/{{ skill }}">{{ skill }}</a></li>
{% endfor %}
</ul>
</div>

View File

@ -1,19 +1,10 @@
{% from "macros/form.njk" import label, field, select, option, textarea, checkboxes, button, hidden_field %}
{% from "macros/form.njk" import label, field, select, option, textarea, checkboxes, button %}
<section class="[ form-container ]">
{% if not removeWave %}
<svg aria-hidden="true" viewBox="0 0 1440 131" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="#fff" d="M0 0h1440v131H0z"/><path d="M0 4.643l40-2.326c40-2.5 120-6.888 200 11.67 80 18.735 160 60.854 240 74.894 80 14.04 160 0 240-16.365 80-16.54 160-34.968 240-28.08 80 7.152 160 39.619 240 39.75 80-.131 160-32.598 200-49.139l40-16.365V131H0V4.643z" fill="#D6F253"/></svg>
{% endif %}
<svg aria-hidden="true" viewBox="0 0 1440 131" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="#fff" d="M0 0h1440v131H0z"/><path d="M0 4.643l40-2.326c40-2.5 120-6.888 200 11.67 80 18.735 160 60.854 240 74.894 80 14.04 160 0 240-16.365 80-16.54 160-34.968 240-28.08 80 7.152 160 39.619 240 39.75 80-.131 160-32.598 200-49.139l40-16.365V131H0V4.643z" fill="#D6F253"/></svg>
<div class="[ inner-wrapper ]">
{% if not contactMember %}
<h2 id="contact-form" class="[ contact-heading ]">Nous contacter</h2>
{% elif contactTitle %}
<h2 id="contact-form" class="[ contact-heading ]">{{ contactTitle }}</h2>
{% endif %}
<div class="form-messages" aria-live="polite"></div>
<form name="contact" method="POST" action="/form/contact-form-handler.php" class="contact-form">
<h2 id="contact-form" class="[ contact-heading ]">Nous contacter</h2>
<form name="contact" method="POST" action="/form/contact-form-handler.php">
<ol class="[ field-list ]">
<li class="[ field-list__field-group ]">
{{ label("Nom", "namezzz") }}
@ -25,31 +16,20 @@
</li>
<li class="[ field-list__field-group ] [ full-width ]">
{{ label("Je vous contacte pour :", "select") }}
{% if contactMember %}
{{ select( "select", [
{label: "Obtenir un rendez-vous (décrivez votre projet en quelques lignes)", value: "option 1"},
{label: "Proposer une mission à un coopérateur", value: "option 3"}
], { required: true, options_before: [""], options_after: ["Autre demande"] } ) }}
{% else %}
{{ select( "select", [
{label: "Obtenir un rendez-vous (décrivez votre projet en quelques lignes)", value: "option 1"},
{label: "Obtenir des précisions sur le statut d'entrepreneur salarié", value: "option 2"},
{label: "Proposer une mission à un coopérateur", value: "option 3"},
{label: "Proposer un partenariat", value: "option 4"}
], { required: true, options_before: [""], options_after: ["Autre demande"] } ) }}
{% endif %}
{{ select( "select", [
{label: "Obtenir un rendez-vous (décrivez votre projet en quelques lignes)", value: "option 1"},
{label: "Obtenir des précisions sur le statut dentrepreneur salarié", value: "option 2"},
{label: "Proposer une mission à un coopérateur", value: "option 3"},
{label: "Proposer un partenariat", value: "option 4"}
], { required: true, options_before: [""], options_after: ["Autre demande"] } ) }}
</li>
<li class="[ field-list__field-group ] [ full-width ]">
{{ label("Votre message", "message") }}
{{ textarea( "message", { required: true, autocapitalize: "sentences", spellcheck: "true" } ) }}
</li>
{% if contactMember %}
{{ hidden_field('subscribe', '') }}
{% else %}
<li class="[ field-list__field-group ] [ full-width ]">
{{ checkboxes("", "subscribe", [ "Je souhaite être tenu au courant de l'actualité Astrolabe"], { description: "" } ) }}
</li>
{% endif %}
<li class="[ field-list__field-group ] [ full-width ]">
{{ checkboxes("", "subscribe", [ "Je souhaite être tenu au courant de lactualité Astrolabe"], { description: "" } ) }}
</li>
<!-- H o n e y p o t -->
<li aria-hidden="true">
<label class="ohnohoney" for="name"></label>
@ -59,82 +39,8 @@
<label class="ohnohoney" for="email"></label>
<input tabindex="-1" class="ohnohoney" autocomplete="off" type="email" id="email" name="email" placeholder="Your e-mail here">
</li>
<div class="h-captcha" data-sitekey="b07c49fe-50ee-4432-af0a-96d675c6326a"></div>
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
</ol>
{% if contactMember %}
{{ hidden_field('contactTo', contactMember) }}
{% endif %}
{{ button("Envoyer") }}
</form>
</div>
</section>
<style>
.form-messages {
margin-bottom: 1rem;
}
.form-messages .error {
color: #dc3545;
margin-bottom: 0.5rem;
}
.form-messages .success {
color: #28a745;
}
.field-error {
color: #dc3545;
font-size: 0.875rem;
margin-top: 0.25rem;
}
</style>
<script>
document.addEventListener('DOMContentLoaded', function() {
const form = document.querySelector('.contact-form');
const messagesContainer = document.querySelector('.form-messages');
form.addEventListener('submit', async function(e) {
e.preventDefault();
// Clean previous messages
messagesContainer.innerHTML = '';
// Get form data
const formData = new FormData(form);
try {
const response = await fetch(form.action, {
method: 'POST',
body: formData
});
const data = await response.json();
if (data.success) {
// Display success message
messagesContainer.innerHTML = `<div class="success">${data.message}</div>`;
form.reset();
// Redirect to thank you page
window.location.href = '/thank-you/index.html';
} else {
// Display errors
const errorHtml = data.errors.map(error =>
`<div class="error">${error}</div>`
).join('');
messagesContainer.innerHTML = errorHtml;
// Scroll to error messages
messagesContainer.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}
} catch (error) {
messagesContainer.innerHTML = `
<div class="error">Une erreur est survenue lors de l'envoi du formulaire. Veuillez réessayer.</div>
`;
}
});
});
</script>

View File

@ -3,11 +3,11 @@
<h1 class="[ intro__heading ]">{{ brandHeading }}</h1>
<svg viewBox="0 0 127 237" width="100%" height="100%" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M116.77 20.74c-.472-1.843-2.433-5.326-6.48-5.326h-4.283C105.395 6.814 98.249 0 89.533 0c-9.116 0-16.534 7.448-16.534 16.605v20.597L10.073 61.124a2.422 2.422 0 00-1.403 3.124c6.302 16.578 22.13 26.795 38.897 26.795 2.778 0 5.582-.315 8.375-.895 2.026.425 4.09.704 6.169.824v21.449a2.422 2.422 0 104.842 0V90.962a41.398 41.398 0 006.046-.8v22.259a2.422 2.422 0 104.843 0v-23.59c16.39-5.573 28.22-21.102 28.22-39.352V20.256h4.228c1.262 0 1.737 1.513 1.793 1.708a2.425 2.425 0 002.94 1.723 2.424 2.424 0 001.747-2.948zM32.478 82.973c-8.206-3.684-14.61-10.117-18.31-18.225l62.113-23.615c.013-.004.023-.013.034-.017.09-.036.173-.083.257-.128.058-.032.119-.058.174-.093.066-.044.124-.096.186-.146.06-.05.127-.095.184-.151.05-.05.092-.109.138-.162.054-.063.112-.124.159-.192.043-.065.077-.136.116-.203.037-.067.079-.131.11-.202.03-.07.05-.146.074-.22.024-.076.053-.15.07-.229.015-.065.019-.132.028-.199.013-.093.028-.187.03-.282l.003-.039V16.605c0-6.485 5.245-11.762 11.69-11.762 6.416 0 11.637 5.226 11.687 11.667v30.547H86.663a2.421 2.421 0 00-2.422 2.422c0 .023.007.043.007.068-.033 15.12-9.538 28.88-23.678 34.255-9.166 3.483-19.144 3.192-28.092-.828zm34.639 3.12c12.614-6.78 21.023-19.79 21.88-34.194h12.133c-1.194 18.255-15.785 32.903-34.013 34.195z" fill="#1E1E1E"/><path d="M89.53 20.256h4.464a2.421 2.421 0 100-4.842h-4.463a2.421 2.421 0 100 4.842zM123.897 194.561h-4.496V114.15a2.241 2.241 0 00-2.248-2.233H6.994c-1.24 0-2.248 1-2.248 2.233v80.411H2.498a2.242 2.242 0 00-2.248 2.234v37.971A2.242 2.242 0 002.498 237h121.399a2.243 2.243 0 002.249-2.234v-37.971a2.243 2.243 0 00-2.249-2.234zM9.243 116.384h105.662v78.177H9.243v-78.177zm112.406 116.149H4.746v-33.505H121.65v33.505z" fill="#1E1E1E"/><path d="M103.663 125.318h-83.18a2.242 2.242 0 00-2.249 2.234v55.841a2.241 2.241 0 002.248 2.233h83.181c1.241 0 2.248-1 2.248-2.233v-55.841a2.242 2.242 0 00-2.248-2.234zm-2.248 55.841H22.73v-51.373h78.685v51.373zM114.904 206.846h-13.488a2.242 2.242 0 00-2.248 2.234v13.401a2.242 2.242 0 002.248 2.234h13.488a2.243 2.243 0 002.249-2.234V209.08a2.243 2.243 0 00-2.249-2.234zm-2.248 13.402h-8.992v-8.935h8.992v8.935zM92.423 206.846h-13.49a2.242 2.242 0 00-2.247 2.234v13.401a2.242 2.242 0 002.248 2.234h13.489a2.242 2.242 0 002.248-2.234V209.08a2.242 2.242 0 00-2.248-2.234zm-2.248 13.402h-8.993v-8.935h8.993v8.935z" fill="#1E1E1E"/><path d="M78.934 134.253H27.227v4.467h51.707v-4.467zM63.197 143.187h-35.97v4.468h35.97v-4.468zM45.212 152.122H27.227v4.467h17.985v-4.467zM58.7 152.122h-8.993v4.467h8.992v-4.467z" fill="#111"/></svg>
<div class="btn-grp">
<a role="button" href="/comprendre-la-cae/" class="btn btn-secondary">Une CAE c'est quoi ?</a>
<a role="button" href="/nous-rejoindre/" class="btn btn-primary">Nous rejoindre
<a role="button" href="/comprendre-la-cae" class="btn btn-secondary">Une CAE c'est quoi ?</a>
<a role="button" href="/nous-rejoindre" class="btn btn-primary">Nous rejoindre
<svg width="18" height="14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M17.602 5.823L12.05.376a1.357 1.357 0 00-1.875 0 1.295 1.295 0 000 1.84l3.278 3.235H1.326C.587 5.451 0 6.027 0 6.752s.587 1.302 1.326 1.302h12.127l-3.278 3.215a1.295 1.295 0 000 1.84 1.349 1.349 0 001.894 0l5.533-5.427c.246-.242.398-.576.398-.93 0-.353-.133-.687-.398-.93z" fill="#111"/></svg>
</a>
<a role="button" href="/posts/flyer-2023/" class="btn btn-secondary">Notre flyer 📄</a>
<a role="button" href="/posts/flyer-2023" class="btn btn-secondary">Notre flyer 📄</a>
</div>
</div>
</header>

View File

@ -30,7 +30,7 @@
var members = {{ collections.membersLocations | dump | safe }};
var markerGroup = members.map( member => {
return new L.marker(member.location, {icon: iconMarker}).bindPopup('<a href="'+member.url+'/">'+member.name+'</a>');
return new L.marker(member.location, {icon: iconMarker}).bindPopup('<a href="'+member.url+'">'+member.name+'</a>');
});
var markerSiege = L.marker([48.10494125597395, -1.6795760019626425], {icon: iconMarkerAlt}).bindPopup('Siège Astrolabe CAE')

View File

@ -1,5 +1,5 @@
<section id="Meeting" class="[ meeting ]">
<a class="[ meeting__link btn btn-secondary ]" href="https://nuage.astrolabe.coop/apps/forms/embed/jiKKjDLEJZ7DEck3tacdRMX3" target="_blank">
<a class="[ meeting__link btn btn-secondary ]" href="https://framaforms.org/reunion-dinformation-collective-astrolabe-cae-1591805443" target="_blank">
Réunions d'information&nbsp;
<svg width="18" height="14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M17.602 5.823L12.05.376a1.357 1.357 0 00-1.875 0 1.295 1.295 0 000 1.84l3.278 3.235H1.326C.587 5.451 0 6.027 0 6.752s.587 1.302 1.326 1.302h12.127l-3.278 3.215a1.295 1.295 0 000 1.84 1.349 1.349 0 001.894 0l5.533-5.427c.246-.242.398-.576.398-.93 0-.353-.133-.687-.398-.93z" fill="#FFF"></path></svg>
</a>

View File

@ -4,7 +4,7 @@
<ol class="[ member-list__items ]" reversed>
{% for item in teamListItems %}
<li class="member-list__item">
<a href="{{ item.data.url }}/" class="">
<a href="{{ item.data.url }}" class="">
<img src=" {{ item.data.profile }}" alt="photo de {{ item.data.name }}">
<span class="member-name btn btn-primary">{{ item.data.name }}</span>
</a>

View File

@ -4,7 +4,7 @@
<ol class="[ member-list__items ]" reversed>
{% for item in teamListItems %}
<li class="member-list__item">
<a href="{{ item.data.url }}/" class="">
<a href="{{ item.data.url }}" class="">
<img src=" {{ item.data.profile }}" alt="photo de {{ item.data.name }}">
<span class="member-name btn btn-primary">{{ item.data.name }}</span>
</a>
@ -16,7 +16,7 @@
{% endfor %}
<li class="member-list__item info">
<p>Vous êtes porteur dun projet entrepreneurial en numérique et nouvelles technologies ?</p>
<a role="button" href="/nous-rejoindre/" class="btn btn-secondary">Rejoignez-nous</a>
<a role="button" href="/nous-rejoindre" class="btn btn-secondary">Rejoignez-nous</a>
</li>
</ol>
{% endif %}

View File

@ -4,7 +4,7 @@
<div class="news-list__inner">
<h2 class="[ news-list__heading ]">{{ newsListHeading }}</h2>
{% include "partials/components/posts-list.njk" %}
<a href="/posts/" class="return-link">Voir tout</a>
<a href="/posts" class="return-link">Voir tout</a>
</div>
</div>
</section>

View File

@ -14,7 +14,7 @@
{# <figure> #}
<img src="/images/crew-join.svg" alt="équipage astrolabe" loading="lazy" style="width: 22rem;">
{# </figure> #}
<a role="button" href="/nous-rejoindre/" class="btn btn-primary">Nous rejoindre
<a role="button" href="/nous-rejoindre" class="btn btn-primary">Nous rejoindre
<svg width="18" height="14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M17.602 5.823L12.05.376a1.357 1.357 0 00-1.875 0 1.295 1.295 0 000 1.84l3.278 3.235H1.326C.587 5.451 0 6.027 0 6.752s.587 1.302 1.326 1.302h12.127l-3.278 3.215a1.295 1.295 0 000 1.84 1.349 1.349 0 001.894 0l5.533-5.427c.246-.242.398-.576.398-.93 0-.353-.133-.687-.398-.93z" fill="#111"></path></svg>
</a>
</div>
@ -40,22 +40,20 @@
<p>
Nos coopérateurs possèdent des compétences propres allant de développement linux embarqué au web design et créent ainsi la <b>pluralité</b> de nos prestations.
<br><br>
Nous sommes également <b>fournisseur de service SAAS</b> de la solution logicielle libre de gestion de CAE <a href="https://www.baloop-erp.fr/" target="_blank" rel="noreferrer noopener">Baloop</a>.
<br><br>
Nous sommes détenteur de l'<a href="https://www.astrolabe.coop/posts/agrement-cir-2024/" target="_blank" rel="noreferrer noopener">Agrément CIR</a> utile pour nos membres qui travaillent dans le domaine de la R&D.
Nous sommes également <b>distributeurs</b> de la solution logicielle <a href="https://www.crealead.com/naega#bootstrap-fieldgroup-nav-item--prsentation" target="_blank" rel="noreferrer noopener">Naega</a>.
</p>
</div>
<div class="side-info">
<ul class="profile-preview">
{% for profile in profilePics %}
<li>
<a href="{{ profile.data.url }}/" title="{{ profile.data.name }}">
<a href="{{ profile.data.url }}" title="{{ profile.data.name }}">
<img src="{{ profile.data.profile }}" alt="photo de {{ profile.data.name }}">
</a>
</li>
{% endfor %}
</ul>
<a role="button" href="/equipe/" class="btn btn-primary">Voir l'équipe</a>
<a role="button" href="/equipe" class="btn btn-primary">Voir l'équipe</a>
</div>
</article>
</div>

View File

@ -7,13 +7,12 @@
{% set pageTitle = metaTitle %}
{% endif %}
{% if description %}
{% set pageDesc = description %}
{% if metaDesc %}
{% set pageDesc = metaDesc %}
{% endif %}
<title>{{ pageTitle }}</title>
<link rel="canonical" href="{{ currentUrl }}" />
<link rel="alternate" type="application/rss+xml" title="Astrolabe CAE's RSS Feed" href="/feed.xml" />
<meta property="og:site_name" content="{{ siteTitle }}" />
<meta property="og:title" content="{{ pageTitle }}" />
@ -24,10 +23,10 @@
<meta name="twitter:creator" content="@{{ site.authorHandle | replace('@', '') }}" />
{% endif %}
{% if description %}
<meta name="description" content="{{ description }}" />
<meta name="twitter:description" content="{{ description }}" />
<meta property="og:description" content="{{ description }}" />
{% if metaDesc %}
<meta name="description" content="{{ metaDesc }}" />
<meta name="twitter:description" content="{{ metaDesc }}" />
<meta property="og:description" content="{{ metaDesc }}" />
{% endif %}
{% if socialImage %}

View File

@ -10,23 +10,18 @@
</p>
</div>
<div class="">
<h3><a class="footer-link" href="{{site.url}}/mentions-legales/" title="Mentions légales">Mentions légales</a></h3>
<p><a class="footer-link" href="{{site.url}}/rgpd/" title="Protection des données">Protection des données</a></p>
<h3><a class="footer-link" href="{{site.url}}/mentions-legales" title="Mentions légales">Mentions légales</a></h3>
<p><a class="footer-link" href="{{site.url}}/rgpd" title="Protection des données">Protection des données</a></p>
</div>
<div class="">
<h3>Contact</h3>
<p>{{site.authorName}}</p>
<p>{{site.authorAddress}}<br>{{site.authorCity}}</p>
<div class="socials">
<a href="{{site.authorSocial.mastodon}}" class="social" title="Mastodon"><svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.956 18.293c3.007-.36 5.625-2.212 5.954-3.905.519-2.667.476-6.508.476-6.508 0-5.207-3.411-6.733-3.411-6.733C18.255.357 15.302.025 12.233 0h-.075c-3.068.025-6.02.357-7.74 1.147 0 0-3.41 1.526-3.41 6.733 0 .315-.003.647-.004.993-.005.96-.01 2.024.018 3.136.123 5.091.933 10.11 5.64 11.355 2.171.575 4.035.695 5.535.613 2.722-.151 4.25-.972 4.25-.972l-.09-1.974s-1.945.613-4.13.538c-2.163-.074-4.448-.233-4.798-2.89a5.448 5.448 0 01-.048-.745s2.124.519 4.816.642c1.647.076 3.19-.096 4.759-.283zm2.406-3.705V8.283c0-1.288-.328-2.312-.987-3.07-.68-.757-1.57-1.145-2.674-1.145-1.278 0-2.246.491-2.885 1.474l-.623 1.043-.622-1.043c-.64-.983-1.608-1.474-2.886-1.474-1.104 0-1.994.388-2.674 1.146-.659.757-.987 1.781-.987 3.07v6.303h2.498V8.47c0-1.29.543-1.945 1.628-1.945 1.2 0 1.802.777 1.802 2.312v3.35h2.483v-3.35c0-1.535.601-2.312 1.801-2.312 1.086 0 1.629.655 1.629 1.945v6.119h2.497z" fill="#fff"/></svg></a>
<a href="{{site.authorSocial.facebook}}" class="social" title="Facebook"><svg fill="#FFFFFF" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="24px" height="24px"><path d="M24,4C12.972,4,4,12.972,4,24c0,10.006,7.394,18.295,17,19.75V29h-4c-0.552,0-1-0.447-1-1v-3c0-0.553,0.448-1,1-1h4v-3.632 C21,15.617,23.427,13,27.834,13c1.786,0,3.195,0.124,3.254,0.129C31.604,13.175,32,13.607,32,14.125V17.5c0,0.553-0.448,1-1,1h-2 c-1.103,0-2,0.897-2,2V24h4c0.287,0,0.56,0.123,0.75,0.338c0.19,0.216,0.278,0.502,0.243,0.786l-0.375,3 C31.555,28.624,31.129,29,30.625,29H27v14.75c9.606-1.455,17-9.744,17-19.75C44,12.972,35.028,4,24,4z"/></svg></a>
<a href="{{site.authorSocial.linkedin}}" class="social" title="Linkedin"><svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4.98 2.5A2.49 2.49 0 012.5 5 2.49 2.49 0 01.02 2.5C.02 1.12 1.13 0 2.5 0a2.49 2.49 0 012.48 2.5zM5 7H0v16h5V7zm7.982 0H8.014v16h4.969v-8.399c0-4.67 6.029-5.052 6.029 0V23H24V12.869c0-7.88-8.922-7.593-11.018-3.714V7z" fill="#fff"/></svg></a>
<a href="{{site.authorSocial.instagram}}" class="social" title="Instagram"><svg fill="#FFFFFF" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="24px" height="24px"><path d="M 16 3 C 8.83 3 3 8.83 3 16 L 3 34 C 3 41.17 8.83 47 16 47 L 34 47 C 41.17 47 47 41.17 47 34 L 47 16 C 47 8.83 41.17 3 34 3 L 16 3 z M 37 11 C 38.1 11 39 11.9 39 13 C 39 14.1 38.1 15 37 15 C 35.9 15 35 14.1 35 13 C 35 11.9 35.9 11 37 11 z M 25 14 C 31.07 14 36 18.93 36 25 C 36 31.07 31.07 36 25 36 C 18.93 36 14 31.07 14 25 C 14 18.93 18.93 14 25 14 z M 25 16 C 20.04 16 16 20.04 16 25 C 16 29.96 20.04 34 25 34 C 29.96 34 34 29.96 34 25 C 34 20.04 29.96 16 25 16 z"/></svg></a>
<a href="{{site.authorSocial.peertube}}" class="social" title="Peertube"><svg fill="#FFFFFF" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="24px" height="24px"><path d="M8.83,4.5l16.89,9.75L42.6,24,25.72,33.75,8.83,43.5V24l8.36,4.83,8.42,4.87V14.27l-8.42,4.87L8.83,24V4.5Z"/></g></svg></a>
<a href="{{site.authorSocial.youtube}}" class="social" title="Youtube"><svg fill="#FFFFFF" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="24px" height="24px"><path d="M44.9,14.5c-0.4-2.2-2.3-3.8-4.5-4.3C37.1,9.5,31,9,24.4,9c-6.6,0-12.8,0.5-16.1,1.2c-2.2,0.5-4.1,2-4.5,4.3C3.4,17,3,20.5,3,25s0.4,8,0.9,10.5c0.4,2.2,2.3,3.8,4.5,4.3c3.5,0.7,9.5,1.2,16.1,1.2s12.6-0.5,16.1-1.2c2.2-0.5,4.1-2,4.5-4.3c0.4-2.5,0.9-6.1,1-10.5C45.9,20.5,45.4,17,44.9,14.5z M19,32V18l12.2,7L19,32z"/></g></svg></a>
<a href="{{site.authorSocial.twitch}}" class="social" title="Twitch"><svg fill="#FFFFFF" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="24px" height="24px"><path d="M31.16,12.16v8.19h2.47V12.16Zm-7.75,0v8.19H26V12.16ZM14.11,4.5,7.23,11.34l0,25.12h8.3l0,7,7.06-7H28.2L40.77,24V4.5Zm1.42,2.89H38v15.2L32.55,28H26.94l-5.12,5.13V28H15.53Z"/></g></svg></a>
<a href="{{site.authorSocial.rss}}" class="social" title="RSS"><svg fill="#FFFFFF" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="24px" height="24px"><path class="a" d="M5.5,13.5729A28.9269,28.9269,0,0,1,34.4271,42.5v0H42.5a37,37,0,0,0-37-37Z"></path><path class="a" d="M29.7179,42.5h-7.4A16.818,16.818,0,0,0,5.5,25.6819v-7.4A24.2183,24.2183,0,0,1,29.7181,42.5Z"></path><circle class="a" cx="10.2459" cy="37.7549" r="4.7453"></circle>/svg></a>
</div>
<a href="{{site.authorSocial.mastodon}}" class="social" title="mastodon"><svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.956 18.293c3.007-.36 5.625-2.212 5.954-3.905.519-2.667.476-6.508.476-6.508 0-5.207-3.411-6.733-3.411-6.733C18.255.357 15.302.025 12.233 0h-.075c-3.068.025-6.02.357-7.74 1.147 0 0-3.41 1.526-3.41 6.733 0 .315-.003.647-.004.993-.005.96-.01 2.024.018 3.136.123 5.091.933 10.11 5.64 11.355 2.171.575 4.035.695 5.535.613 2.722-.151 4.25-.972 4.25-.972l-.09-1.974s-1.945.613-4.13.538c-2.163-.074-4.448-.233-4.798-2.89a5.448 5.448 0 01-.048-.745s2.124.519 4.816.642c1.647.076 3.19-.096 4.759-.283zm2.406-3.705V8.283c0-1.288-.328-2.312-.987-3.07-.68-.757-1.57-1.145-2.674-1.145-1.278 0-2.246.491-2.885 1.474l-.623 1.043-.622-1.043c-.64-.983-1.608-1.474-2.886-1.474-1.104 0-1.994.388-2.674 1.146-.659.757-.987 1.781-.987 3.07v6.303h2.498V8.47c0-1.29.543-1.945 1.628-1.945 1.2 0 1.802.777 1.802 2.312v3.35h2.483v-3.35c0-1.535.601-2.312 1.801-2.312 1.086 0 1.629.655 1.629 1.945v6.119h2.497z" fill="#fff"/></svg></a>
<a href="{{site.authorSocial.twitter}}" class="social" title="twitter"><svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M24 4.309a9.83 9.83 0 01-2.828.775 4.932 4.932 0 002.165-2.724 9.864 9.864 0 01-3.127 1.195A4.916 4.916 0 0016.616 2c-3.179 0-5.515 2.966-4.797 6.045A13.978 13.978 0 011.671 2.901a4.93 4.93 0 001.523 6.574 4.903 4.903 0 01-2.229-.616c-.054 2.281 1.581 4.415 3.949 4.89a4.935 4.935 0 01-2.224.084 4.928 4.928 0 004.6 3.419A9.9 9.9 0 010 19.292a13.94 13.94 0 007.548 2.212c9.142 0 14.307-7.721 13.995-14.646A10.025 10.025 0 0024 4.309z" fill="#fff"/></svg></a>
<a href="{{site.authorSocial.linkedin}}" class="social" title="linkedin"><svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4.98 2.5A2.49 2.49 0 012.5 5 2.49 2.49 0 01.02 2.5C.02 1.12 1.13 0 2.5 0a2.49 2.49 0 012.48 2.5zM5 7H0v16h5V7zm7.982 0H8.014v16h4.969v-8.399c0-4.67 6.029-5.052 6.029 0V23H24V12.869c0-7.88-8.922-7.593-11.018-3.714V7z" fill="#fff"/></svg></a>
<a href="{{site.authorSocial.meetup}}" class="social" title="meetup"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M16.001 17.372c.002 1.856 1.194 3.497 2.884 4.055.847.28 1.721.412 2.608.451.633.028 1.265-.016 1.85-.308.46-.23.676-.609.656-1.114-.021-.509-.249-.89-.736-1.092a2.458 2.458 0 00-.52-.159c-.537-.096-1.076-.176-1.61-.282-.882-.176-1.251-.642-1.263-1.534-.01-.788.203-1.532.446-2.268.444-1.346 1.042-2.63 1.616-3.924.553-1.25 1.133-2.489 1.524-3.805.216-.723.319-1.448.123-2.196-.298-1.134-.978-1.895-2.151-2.113-1.073-.2-2.141-.223-3.112.417-.323.212-.633.162-.913-.086-.214-.188-.418-.387-.627-.58-.991-.914-2.3-.959-3.363-.124-.429.337-.79.755-1.255 1.047-.417.262-.837.336-1.298.09-.439-.234-.893-.44-1.347-.646-.459-.207-.904-.464-1.422-.507-1.635-.14-3.347.833-4.068 2.31a20.107 20.107 0 00-.83 2.017c-1.144 3.16-2.077 6.389-3.041 9.606-.433 1.44.077 2.857 1.297 3.634.951.606 1.992.756 3.071.432.873-.263 1.352-.966 1.686-1.756 1.111-2.62 2.112-5.285 3.171-7.927.291-.726.574-1.456.883-2.175.312-.726 1.209-.974 1.741-.492.325.294.411.685.379 1.103-.035.447-.208.86-.371 1.27-.689 1.743-1.391 3.48-2.083 5.221-.14.352-.292.701-.353 1.079-.106.649.151 1.224.681 1.453.542.233 1.104.272 1.665.069.653-.237 1.044-.748 1.344-1.339 1.034-2.029 2.059-4.063 3.091-6.092.477-.938.963-1.871 1.45-2.803.181-.345.393-.672.731-.887a.882.882 0 01.947-.032c.306.171.326.484.313.792a1.42 1.42 0 01-.117.482c-.134.321-.259.646-.407.961-.859 1.806-1.731 3.606-2.582 5.416-.359.765-.732 1.532-.688 2.336z" fill="#fff"/></svg></a>
<a href="{{site.authorSocial.mobilizon}}" class="social" title="mobilizon"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M19.42 15.192c0-2.985-.795-5.279-2.384-6.883A6.831 6.831 0 0012 6.395a6.831 6.831 0 00-5.036 1.914C5.375 9.898 4.58 12.192 4.58 15.192c0 2.999.791 5.295 2.373 6.888a6.83 6.83 0 005.036 1.914 6.831 6.831 0 005.036-1.914c1.597-1.593 2.395-3.889 2.395-6.888zm-7.414 5.64c-2.116 0-3.173-1.88-3.173-5.64 0-3.761 1.057-5.641 3.173-5.641 2.115 0 3.172 1.88 3.172 5.641 0 3.76-1.057 5.64-3.172 5.64zm-1.953-17a4.123 4.123 0 01-.336-1.679 4.135 4.135 0 01.336-1.678 4.51 4.51 0 012.165-.47 3.939 3.939 0 012.065.47c.228.53.343 1.101.336 1.678a4.14 4.14 0 01-.336 1.679 4.174 4.174 0 01-2.165.47 3.633 3.633 0 01-2.065-.47z" fill="#fff"/></svg></a>
</div>
</div>
</footer>

View File

@ -1,35 +0,0 @@
---json
{
"permalink": "feed.xml",
"eleventyExcludeFromCollections": true,
"metadata": {
"title": "Actualité d'Astrolabe",
"description": "Retrouvez nos dernières actualités",
"language": "fr",
"base": "https://www.astrolabe.coop/",
"author": "Astrolabe CAE"
}
}
---
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="{{ metadata.base | addPathPrefixToFullUrl }}" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>{{ metadata.title }}</title>
<link>{{ metadata.base | addPathPrefixToFullUrl }}</link>
<atom:link href="{{ permalink | htmlBaseUrl(metadata.base) }}" rel="self" type="application/rss+xml" />
<description>{{ metadata.description }}</description>
<language>{{ metadata.language or page.lang }}</language>
{%- for post in collections.posts %}
{%- set absolutePostUrl = post.url | htmlBaseUrl(metadata.base) %}
<item>
<title>{{ post.data.title }}</title>
<link>{{ absolutePostUrl }}</link>
<description>{{ post.data.description }}</description>
<pubDate>{{ post.date | dateToRfc822 }}</pubDate>
<category>{{ post.data.type }}</category>
<dc:creator>{{ post.data.author or metadata.author }}</dc:creator>
<guid>{{ absolutePostUrl }}</guid>
</item>
{%- endfor %}
</channel>
</rss>

View File

@ -5,28 +5,13 @@ const appendSuffix = n => {
return n + (s[(v - 20) % 10] || s[v] || s[0]);
};
export default function dateFilter(value) {
module.exports = function dateFilter(value) {
const dateObject = new Date(value);
// const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
const months = [
'janv.',
'févr.',
'mars',
'avr.',
'mai',
'juin',
'juill.',
'août',
'sept.',
'oct.',
'nov.',
'déc.'
];
const months = ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juill.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'];
const dayWithSuffix = appendSuffix(dateObject.getDate());
// return `${dayWithSuffix} ${months[dateObject.getMonth()]} ${dateObject.getFullYear()}`;
return `${dateObject.getDate()} ${
months[dateObject.getMonth()]
} ${dateObject.getFullYear()}`;
}
return `${dateObject.getDate()} ${months[dateObject.getMonth()]} ${dateObject.getFullYear()}`;
};

View File

@ -1,11 +1,9 @@
import markdownIt from 'markdown-it';
const m = markdownIt({
const markdownIt = require('markdown-it')({
html: true,
breaks: true,
linkify: true
});
export default function markdown(value) {
return m.render(value);
}
module.exports = function markdown(value) {
return markdownIt.render(value);
};

View File

@ -1,5 +1,5 @@
export default function w3cDate(value) {
module.exports = function w3cDate(value) {
const dateObject = new Date(value);
return dateObject.toISOString();
}
};

View File

@ -1,152 +1,102 @@
<?php
require("/usr/share/php/libphp-phpmailer/autoload.php");
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// Set header to return JSON
header('Content-Type: application/json');
$mail = new PHPMailer(true);
$errors = [];
$myEmail = getenv('ASTRO_SMTP_FROM');
$myEmailSplitted = explode('@', $myEmail);
$domainFromMyEmail = (
empty($myEmailSplitted[1])
|| count($myEmailSplitted) != 2
) ? ''
: $myEmailSplitted[1];
$wantedContact = filter_input(INPUT_POST, 'contactTo', FILTER_SANITIZE_SPECIAL_CHARS);
$wantedContact = (
empty($wantedContact)
|| strpos($wantedContact, '@') !== false
|| strpos($wantedContact, '&') !== false
|| empty($domainFromMyEmail)
) ? $myEmail : "$wantedContact@$domainFromMyEmail" ;
/* hCaptcha */
$hcaptchaSecret = getenv('HCAPTCHA_SECRET_KEY');
$hcaptchaVerifyUrl = "https://api.hcaptcha.com/siteverify";
if(empty($_POST['namezzz']) || empty($_POST['emailzzz']) || empty($_POST['message'])) {
$errors[] = "Erreur : champs obligatoires manquants.";
}
if(!empty($_POST['name']) && !empty($_POST['email'])) {
$errors[] = "Erreur : spam détecté.";
}
/* Captcha verification */
if(!empty($_POST['h-captcha-response'])) {
$responseKey = $_POST['h-captcha-response'];
$data = array(
'secret' => $hcaptchaSecret,
'response' => $responseKey
);
$checkRequest = curl_init();
curl_setopt($checkRequest, CURLOPT_URL, $hcaptchaVerifyUrl);
curl_setopt($checkRequest, CURLOPT_POST, 1);
curl_setopt($checkRequest, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($checkRequest, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($checkRequest);
curl_close($checkRequest);
$responseData = json_decode($response, true);
if(!$responseData['success']) {
$errors[] = "Erreur lors de la validation du captcha.";
}
} else {
$errors[] = "Erreur lors de la validation du captcha.";
}
$name = $_POST['namezzz'];
$emailAddress = $_POST['emailzzz'];
$select = $_POST['select'];
$message = $_POST['message'];
$subscribe = $_POST['subscribe'];
if (!filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) {
$errors[] = "Erreur d'adresse e-mail invalide : $emailAddress";
}
if(empty($errors)) {
try {
$emailSubject = "[Formulaire Astrolabe] Nouveau message";
switch ($select) {
case "option 1":
$purpose = "Demande de rendez-vous";
break;
case "option 2":
$purpose = "Demande de précisions sur le statut d'entrepreneur salarié";
break;
case "option 3":
$purpose = "Proposition de misson";
break;
case "option 4":
$purpose = "Proposition de partenariat";
break;
default:
$purpose = "Autre demande";
}
$emailSubject .= " : $purpose";
$emailBody = "Vous avez reçu un nouveau message depuis le formulaire du site Astrolabe :".
"\r\n\r\nNom: $name \r\nEmail: $emailAddress \r\nRaison: $purpose\r\nSubscribe: $subscribe\r\n\r\n$message";
$emailBodyHTML = str_replace("\r\n", "<br>", $emailBody);
$mail->isSMTP();
$mail->Host = getenv('ASTRO_SMTP_HOSTNAME');
$mail->SMTPAuth = true;
$mail->Username = getenv('ASTRO_SMTP_USERNAME');
$mail->Password = getenv('ASTRO_SMTP_PASSWORD');
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
//Options
$mail->CharSet = 'UTF-8';
$mail->WordWrap = 70;
//Recipients
$mail->setFrom($myEmail);
$mail->addAddress($wantedContact);
$mail->addReplyTo($emailAddress, $name);
// Content
$mail->isHTML(true);
$mail->Subject = $emailSubject;
$mail->Body = $emailBodyHTML;
$mail->AltBody = $emailBody;
$mail->send();
// if subscribe add to mailing list
if(!empty($subscribe)) {
// process
// enovoi mail add to mailing list
}
http_response_code(200);
echo json_encode([
'success' => true,
'message' => 'Message envoyé avec succès'
]);
} catch (Exception $e) {
http_response_code(500);
echo json_encode([
'success' => false,
'errors' => ["Erreur lors de l'envoi du message : " . $mail->ErrorInfo]
]);
}
} else {
http_response_code(400);
echo json_encode([
'success' => false,
'errors' => $errors
]);
}
<?php
require("/usr/share/php/libphp-phpmailer/autoload.php");
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer(true);
$errors = '';
$myEmail = getenv('ASTRO_SMTP_FROM');
if(empty($_POST['namezzz']) || empty($_POST['emailzzz']) || empty($_POST['message'])) {
$errors .= "\n Error: all fields are required";
}
if(!empty($_POST['name']) && !empty($_POST['email'])) {
$errors .= "\n Error: spam";
}
$name = $_POST['namezzz'];
$emailAddress = $_POST['emailzzz'];
$select = $_POST['select'];
$message = $_POST['message'];
$subscribe = $_POST['subscribe'];
if (!filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) {
$errors .= "\n Error: Invalid email address $emailAddress";
}
if( empty($errors)) {
$to = $myEmail;
$emailSubject = "[Formulaire Astrolabe] Nouveau message";
switch ($select) {
case "option 1":
$purpose = "Demande de rendez-vous";
break;
case "option 2":
$purpose = "Demande de précisions sur le statut dentrepreneur salarié";
break;
case "option 3":
$purpose = "Proposition de misson";
break;
case "option 4":
$purpose = "Proposition de partenariat";
break;
default:
$purpose = "Autre demande";
}
$emailBody = "Vous avez reçu un nouveau message depuis le formulaire du site Astrolabe :".
"\r\n\r\nNom: $name \r\nEmail: $emailAddress \r\nRaison: $purpose\r\nSubscribe: $subscribe\r\n\r\n$message";
$emailBodyHTML = str_replace("\r\n", "<br>", $emailBody);
$mail->isSMTP();
$mail->Host = getenv('ASTRO_SMTP_HOSTNAME');
$mail->SMTPAuth = true;
$mail->Username = getenv('ASTRO_SMTP_USERNAME');
$mail->Password = getenv('ASTRO_SMTP_PASSWORD');
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
//Options
$mail->CharSet = 'UTF-8';
$mail->WordWrap = 70;
//Recipients
$mail->setFrom($myEmail);
$mail->addAddress($myEmail);
$mail->addReplyTo($emailAddress, $name);
// Content
$mail->isHTML(true);
$mail->Subject = $emailSubject;
$mail->Body = $emailBodyHTML;
$mail->AltBody = $emailBody;
$mail->send();
// if subscribe add to mailing list
if(!empty($subscribe)) {
// process
// enovoi mail add to mailing list
}
// redirect to the 'thank you' page
header("Location: /thank-you/index.html");
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Contact form handler</title>
</head>
<body>
<!-- This page is displayed only if there is some error -->
<?php
echo nl2br($errors);
?>
</body>
</html>

Binary file not shown.

Before

(image error) Size: 39 KiB

Binary file not shown.

Before

(image error) Size: 7.5 KiB

Binary file not shown.

Before

(image error) Size: 7.2 KiB

View File

Before

(image error) Size: 101 KiB

After

(image error) Size: 101 KiB

Binary file not shown.

Before

(image error) Size: 102 KiB

Binary file not shown.

Before

(image error) Size: 36 KiB

Binary file not shown.

Before

(image error) Size: 117 KiB

Binary file not shown.

Before

(image error) Size: 34 KiB

Binary file not shown.

Before

(image error) Size: 57 KiB

Binary file not shown.

Before

(image error) Size: 108 KiB

Binary file not shown.

Before

(image error) Size: 114 KiB

Binary file not shown.

Before

(image error) Size: 110 KiB

Binary file not shown.

Before

(image error) Size: 100 KiB

Binary file not shown.

Before

(image error) Size: 77 KiB

Binary file not shown.

Before

(image error) Size: 605 KiB

After

(image error) Size: 734 KiB

Binary file not shown.

Before

(image error) Size: 233 KiB

After

(image error) Size: 238 KiB

Binary file not shown.

Before

(image error) Size: 98 KiB

After

(image error) Size: 111 KiB

Binary file not shown.

Before

(image error) Size: 56 KiB

After

(image error) Size: 56 KiB

Binary file not shown.

Before

(image error) Size: 24 KiB

After

(image error) Size: 26 KiB

Binary file not shown.

Before

(image error) Size: 21 KiB

After

(image error) Size: 28 KiB

Binary file not shown.

Before

(image error) Size: 894 B

After

(image error) Size: 4.2 KiB

Binary file not shown.

Before

(image error) Size: 143 KiB

After

(image error) Size: 145 KiB

Binary file not shown.

Before

(image error) Size: 149 KiB

After

(image error) Size: 163 KiB

Binary file not shown.

Before

(image error) Size: 52 KiB

After

(image error) Size: 92 KiB

Binary file not shown.

Before

(image error) Size: 128 KiB

After

(image error) Size: 159 KiB

Binary file not shown.

Before

(image error) Size: 62 KiB

After

(image error) Size: 78 KiB

Binary file not shown.

Before

(image error) Size: 72 KiB

After

(image error) Size: 85 KiB

Binary file not shown.

Before

(image error) Size: 98 KiB

After

(image error) Size: 102 KiB

Binary file not shown.

Before

(image error) Size: 234 KiB

After

(image error) Size: 253 KiB

Binary file not shown.

Before

(image error) Size: 82 KiB

Binary file not shown.

Before

(image error) Size: 52 KiB

After

(image error) Size: 54 KiB

Binary file not shown.

Before

(image error) Size: 106 KiB

After

(image error) Size: 110 KiB

Binary file not shown.

Before

(image error) Size: 31 KiB

After

(image error) Size: 41 KiB

File diff suppressed because one or more lines are too long

Before

(image error) Size: 23 KiB

Binary file not shown.

Before

(image error) Size: 30 KiB

After

(image error) Size: 34 KiB

Binary file not shown.

Before

(image error) Size: 18 KiB

After

(image error) Size: 22 KiB

Binary file not shown.

Before

(image error) Size: 101 KiB

After

(image error) Size: 135 KiB

Binary file not shown.

Before

(image error) Size: 91 KiB

After

(image error) Size: 94 KiB

Binary file not shown.

Before

(image error) Size: 159 KiB

After

(image error) Size: 167 KiB

View File

@ -1,108 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<!-- ClipArt by Arvin61r58 (http://openclipart.org/user-detail/Arvin61r58) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="410" height="406.81238" viewBox="0 0 410.00001 406.81238" id="svg2" version="1.1">
<title id="title4560">Question</title>
<defs id="defs4">
<linearGradient id="linearGradient4161">
<stop style="stop-color:#e9e9a1;stop-opacity:1" offset="0" id="stop4163"/>
<stop style="stop-color:#dcdc60;stop-opacity:1" offset="1" id="stop4165"/>
</linearGradient>
<linearGradient xlink:href="#linearGradient4161" id="linearGradient4167" x1="328.08224" y1="427.12909" x2="346.86435" y2="450.64029" gradientUnits="userSpaceOnUse"/>
<filter style="color-interpolation-filters:sRGB" id="filter3591" x="0" y="0" width="1" height="1">
<feGaussianBlur stdDeviation="6" in="SourceGraphic" result="result0" id="feGaussianBlur3593"/>
<feDiffuseLighting lighting-color="#ffffff" diffuseConstant="1" surfaceScale="4" result="result5" id="feDiffuseLighting3595">
<feDistantLight elevation="45" azimuth="235" id="feDistantLight3597"/>
</feDiffuseLighting>
<feComposite k4="0" k3="0" k2="0" k1="1.4" in2="SourceGraphic" in="result5" result="fbSourceGraphic" operator="arithmetic" id="feComposite3599"/>
<feGaussianBlur result="result0" in="fbSourceGraphic" stdDeviation="6" id="feGaussianBlur3601"/>
<feSpecularLighting specularExponent="25" specularConstant="1" surfaceScale="4" lighting-color="#f4d8d8" result="result1" in="result0" id="feSpecularLighting3603">
<feDistantLight azimuth="235" elevation="45" id="feDistantLight3605"/>
</feSpecularLighting>
<feComposite k4="0" k1="0" k3="1" k2="1" operator="arithmetic" in="fbSourceGraphic" in2="result1" result="result4" id="feComposite3607"/>
<feComposite operator="in" result="result2" in2="SourceGraphic" in="result4" id="feComposite3609"/>
</filter>
<linearGradient xlink:href="#linearGradient4289" id="linearGradient4287" x1="283.95834" y1="445.63168" x2="350.92413" y2="516.63171" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.23435119,0,0,0.23307791,63.982245,2.0660009)"/>
<linearGradient id="linearGradient4289">
<stop style="stop-color:#e30000;stop-opacity:1" offset="0" id="stop4295"/>
<stop id="stop4293" offset="0.42441505" style="stop-color:#eb0000;stop-opacity:1;"/>
<stop style="stop-color:#f30000;stop-opacity:1" offset="1" id="stop4291"/>
</linearGradient>
<radialGradient xlink:href="#linearGradient4271" id="radialGradient4277" cx="49.022663" cy="617.35596" fx="49.022663" fy="617.35596" r="90.419113" gradientTransform="matrix(0.99549505,0,0,0.79302994,15.097996,-241.33907)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/>
<linearGradient id="linearGradient4271">
<stop style="stop-color:#f30000;stop-opacity:1" offset="0" id="stop4273"/>
<stop id="stop4279" offset="0.61115956" style="stop-color:#eb0000;stop-opacity:1;"/>
<stop style="stop-color:#e30000;stop-opacity:1" offset="1" id="stop4275"/>
</linearGradient>
<linearGradient id="linearGradient6132">
<stop id="stop6134" offset="0" style="stop-color:#000000;stop-opacity:1;"/>
<stop id="stop6136" offset="1" style="stop-color:#929292;stop-opacity:1"/>
</linearGradient>
<linearGradient xlink:href="#linearGradient6132" id="linearGradient6249-9" x1="317.39783" y1="500.30765" x2="270.21759" y2="411.76746" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.081474,-0.73755362,0.89337594,1.3099561,-489.15414,-166.26019)"/>
<linearGradient xlink:href="#linearGradient6132" id="linearGradient6257-6" x1="259.8067" y1="449.50244" x2="318.88879" y2="480.11429" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.081474,-0.73755362,0.89337594,1.3099561,-489.15414,-166.26019)"/>
</defs>
<metadata id="metadata7">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title>Question</dc:title>
<dc:subject>
<rdf:Bag>
<rdf:li>Question</rdf:li>
<rdf:li>business</rdf:li>
<rdf:li>communication</rdf:li>
<rdf:li>information</rdf:li>
<rdf:li>newsletter</rdf:li>
<rdf:li>newsletter clipart</rdf:li>
<rdf:li>newsletter graphic</rdf:li>
<rdf:li>note</rdf:li>
<rdf:li>presentation</rdf:li>
<rdf:li>presentation clipart</rdf:li>
<rdf:li>presentation graphic</rdf:li>
<rdf:li>red</rdf:li>
<rdf:li>stationery</rdf:li>
<rdf:li>note</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:description>"sticky note" with a question mark and red push-pin</dc:description>
<dc:creator>
<cc:Agent>
<dc:title>Arvin61r58</dc:title>
</cc:Agent>
</dc:creator>
<dc:publisher>
<cc:Agent>
<dc:title>Openclipart.org</dc:title>
</cc:Agent>
</dc:publisher>
<dc:identifier>https://openclipart.org/</dc:identifier>
<dc:source>https://openclipart.org/user-detail/Arvin61r58</dc:source>
<cc:license rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/"/>
</cc:Work>
<cc:License rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
<cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
<cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
</cc:License>
</rdf:RDF>
</metadata>
<g id="g4578">
<title id="title4580">Question -- by Arvin61r58</title>
<flowRoot transform="translate(-167.04724,-322.77491)" xml:space="preserve" id="flowRoot4211" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:semi-condensed;font-size:45px;line-height:125%;font-family:Andy;-inkscape-font-specification:'Andy Bold Semi-Condensed';text-align:center;writing-mode:lr-tb;text-anchor:middle;opacity:1;fill:#e9e9a1;fill-opacity:1;fill-rule:nonzero;stroke:#a20000;stroke-width:1;image-rendering:auto"><flowRegion id="flowRegion4213"><rect id="rect4215" width="287" height="165" x="382" y="35" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:semi-condensed;font-family:Andy;-inkscape-font-specification:'Andy Bold Semi-Condensed'"/></flowRegion><flowPara id="flowPara4217"/></flowRoot> <g transform="matrix(1.138591,0,0,1.138591,-12.078873,-12.078872)" id="g4704">
<g style="image-rendering:auto" transform="rotate(-31.466106,-82.210766,304.04103)" id="g4207">
<path id="path4147" d="m 69.839434,241.81751 v 225 H 313.58875 l 56.25068,-42.18819 V 241.81751 Z" style="fill:#ffff99;fill-opacity:1;fill-rule:evenodd;stroke:none"/>
<path id="path4149" d="m 313.58875,466.81751 c 4.26456,-13.74772 8.38223,-27.53741 14.55782,-40.73912 5.6503,7.20506 20.59866,7.15853 41.69286,-1.44907 z" style="fill:url(#linearGradient4167);fill-opacity:1;fill-rule:evenodd;stroke:none"/>
</g>
<g id="g4695">
<ellipse transform="matrix(0.20425508,-0.11640484,0.11722693,0.20162346,104.22181,78.337199)" ry="71.204697" rx="89.51403" cy="248.24268" cx="63.899811" id="ellipse3726" style="opacity:1;fill:url(#radialGradient4277);fill-opacity:1;stroke:#c30000;stroke-width:4.27065849;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3591);image-rendering:auto"/>
<path style="opacity:1;fill:url(#linearGradient4287);fill-opacity:1;stroke:#c30000;stroke-width:0.99999458;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto" d="m 117.52172,103.01232 c 4.79354,0.20507 10.7838,7.46315 17.27072,17.64442 4.43007,6.95303 10.69517,2.69045 12.79201,0.64875 1.96256,-1.91089 6.00019,-7.47523 -0.88017,-12.07736 -10.07486,-6.73888 -17.21421,-12.894499 -17.27072,-17.644423 l -5.95592,5.714306 z" id="rect3717"/>
<ellipse style="opacity:1;fill:#f30000;fill-opacity:1;stroke:#c30000;stroke-width:4.27065849;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3591);image-rendering:auto" id="path3715" cx="32.698029" cy="101.36741" rx="71.611221" ry="56.963757" transform="matrix(0.20425508,-0.11640484,0.11722693,0.20162346,104.22181,78.337199)"/>
</g>
</g>
<text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:192px;line-height:6.125px;font-family:Andy;-inkscape-font-specification:Andy;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none" x="-289" y="220.81238" id="text4519"><tspan id="tspan4517" x="-289" y="261.98206"/></text>
<path style="fill:url(#linearGradient6249-9);fill-opacity:1;stroke:url(#linearGradient6257-6);stroke-width:1.4406929" d="m 259.18675,286.24342 c -4.04333,-0.0667 -9.92317,-3.72216 -12.82048,-7.97049 -2.89731,-4.24832 -4.15382,-11.05685 -2.73974,-14.84544 1.28173,-3.43401 10.60734,-9.79398 14.27228,-9.73354 7.02376,0.11583 14.8928,8.01882 15.93919,16.00796 0.82109,6.26898 -0.4389,8.72738 -6.64067,12.95692 -3.51586,2.39778 -6.23356,3.61391 -8.01058,3.58459 z M 238.1146,251.87349 c -2.71861,-0.52604 -7.76471,-8.95469 -9.87977,-16.50251 -3.12692,-11.15875 -3.64144,-18.1978 -2.07336,-28.36482 0.80732,-5.23426 1.36553,-11.33631 1.24051,-13.56012 -0.34362,-6.11175 -4.40708,-14.6013 -11.30197,-23.61268 -5.46037,-7.13652 -6.92811,-8.61857 -11.83232,-10.56234 -5.30771,-2.10366 -12.3085,-3.49652 -17.07278,-0.4109 -6.62106,4.28819 -10.69742,14.08141 -9.17358,21.8792 1.00804,5.15836 5.2387,15.22224 11.09156,11.23065 5.48548,-3.74104 13.39696,-0.64923 20.12631,7.86533 5.21321,6.59623 7.08416,12.18347 6.23146,18.60896 -0.64436,4.85546 -0.98668,5.40296 -5.15594,8.24635 -4.08191,2.78382 -4.90555,2.95889 -9.58221,2.0368 -9.90595,-1.95315 -21.44396,-14.07756 -27.16999,-28.5508 -3.08636,-7.80115 -3.98299,-20.67179 -2.57101,-30.88793 0.57042,-4.12697 2.26231,-8.10817 4.37782,-11.6821 2.30519,-3.89439 5.13355,-7.70783 8.8492,-10.27923 3.84467,-2.6605 8.51141,-4.42113 13.17929,-4.82115 9.20012,-0.78844 19.41693,0.0672 27.31857,4.93498 12.54504,7.72826 24.60629,24.24606 26.68121,35.32077 2.03482,10.8607 1.50118,15.87625 -2.6873,25.25718 -5.7854,12.95752 -6.2825,22.15845 -1.66165,30.75606 1.17805,2.19188 2.09372,4.69284 2.03486,5.55765 -0.13815,2.0294 -8.77304,7.96553 -10.96894,7.54061 z" id="path3469">
<title id="title3579">Question Mark</title>
</path>
</g>
</svg>

Before

(image error) Size: 11 KiB

Binary file not shown.

Before

(image error) Size: 249 KiB

After

(image error) Size: 317 KiB

Binary file not shown.

Before

(image error) Size: 61 KiB

Binary file not shown.

Before

(image error) Size: 87 KiB

After

(image error) Size: 124 KiB

Binary file not shown.

Before

(image error) Size: 11 KiB

After

(image error) Size: 23 KiB

Binary file not shown.

Before

(image error) Size: 335 KiB

Binary file not shown.

Before

(image error) Size: 64 KiB

Binary file not shown.

Before

(image error) Size: 41 KiB

After

(image error) Size: 42 KiB

Binary file not shown.

Before

(image error) Size: 92 KiB

After

(image error) Size: 105 KiB

Binary file not shown.

Before

(image error) Size: 57 KiB

Binary file not shown.

Before

(image error) Size: 162 KiB

After

(image error) Size: 180 KiB

Binary file not shown.

Before

(image error) Size: 55 KiB

After

(image error) Size: 66 KiB

Binary file not shown.

Before

(image error) Size: 80 KiB

After

(image error) Size: 89 KiB

Binary file not shown.

Before

(image error) Size: 70 KiB

After

(image error) Size: 71 KiB

Binary file not shown.

Before

(image error) Size: 21 KiB

After

(image error) Size: 31 KiB

Binary file not shown.

Before

(image error) Size: 401 KiB

After

(image error) Size: 494 KiB

Binary file not shown.

Before

(image error) Size: 198 KiB

After

(image error) Size: 226 KiB

Binary file not shown.

Before

(image error) Size: 295 KiB

After

(image error) Size: 335 KiB

Binary file not shown.

Before

(image error) Size: 130 KiB

After

(image error) Size: 161 KiB

Binary file not shown.

Before

(image error) Size: 179 KiB

After

(image error) Size: 184 KiB

Binary file not shown.

Before

(image error) Size: 24 KiB

After

(image error) Size: 47 KiB

Binary file not shown.

Before

(image error) Size: 8.0 KiB

After

(image error) Size: 11 KiB

Binary file not shown.

Before

(image error) Size: 46 KiB

After

(image error) Size: 59 KiB

Binary file not shown.

Before

(image error) Size: 21 KiB

After

(image error) Size: 22 KiB

Binary file not shown.

Before

(image error) Size: 200 KiB

After

(image error) Size: 248 KiB

Binary file not shown.

Before

(image error) Size: 107 KiB

Binary file not shown.

Before

(image error) Size: 62 KiB

Binary file not shown.

Before

(image error) Size: 2.0 KiB

After

(image error) Size: 2.3 KiB

Some files were not shown because too many files have changed in this diff Show More