Compare commits

..

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

282 changed files with 8778 additions and 5349 deletions

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,
};
}
};

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
};

10758
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://tube.troopers.agency/a/astrolabe_peertube/video-channels",
"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,15 +1,9 @@
{% 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 %}
<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 ]">
@ -22,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 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"] } ) }}
{% 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 lactualité 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>
@ -57,9 +40,6 @@
<input tabindex="-1" class="ohnohoney" autocomplete="off" type="email" id="email" name="email" placeholder="Your e-mail here">
</li>
</ol>
{% if contactMember %}
{{ hidden_field('contactTo', contactMember) }}
{% endif %}
{{ button("Envoyer") }}
</form>
</div>

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,116 +1,102 @@
<?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');
$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" ;
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)) {
$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";
}
$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
}
// 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>
<?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

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

View File

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 605 KiB

After

Width:  |  Height:  |  Size: 734 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 KiB

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 894 B

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 KiB

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 KiB

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 335 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

After

Width:  |  Height:  |  Size: 494 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 KiB

After

Width:  |  Height:  |  Size: 335 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 KiB

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 11 KiB

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