PHP dynamique + cache JSON, nettoyage CSS/HTML, CI Forgejo

- Renommage classes/IDs (BEM cohérent, anglais, noms sémantiques)
- Correction HTML : h3→h2 FAQ, button>a→a[role=button] CTA mobile
- Conversion index.html → index.php (FR/EN) avec cache JSON depuis API Kirby
- Pages merci/thanks converties en PHP dynamique
- Ajout includes/cache.php + includes/config.php (cache TTL 5min)
- Ajout CI Forgejo (deploy FTP via lftp)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
isUnknown 2026-04-12 08:00:58 +02:00
parent 119c98edab
commit 322d9136b6
29 changed files with 917 additions and 1485 deletions

View file

@ -1,4 +1,4 @@
#btn--don__mobile {
#donation-cta-mobile {
width: 100%;
display: flex;
align-items: center;
@ -28,7 +28,7 @@
}
}
.btn--don {
.donation-cta {
--vertical-padding: 0.5ch;
height: calc(var(--h-block) + var(--vertical-padding));
border-radius: calc(var(--h-block) / 1);

View file

@ -1,4 +1,4 @@
.form__newsletter{
.newsletter-form{
--size: 24px;
position: relative;

View file

@ -1,4 +1,4 @@
.gauge__container {
.gauge-container {
width: 100%;
display: flex;
flex-wrap: wrap;
@ -36,7 +36,7 @@
}
}
.gauge--infos {
.gauge-info {
.property {
font-size: var(--fs-small);
padding-bottom: 3px;
@ -51,7 +51,7 @@
}
}
#gauge--infos__donors {
#gauge-info--supporters {
text-align: center;
display: flex;
flex-direction: column;
@ -79,7 +79,7 @@
}
}
.gauge--infos {
.gauge-info {
.property {
font-size: var(--fs-small);
}

View file

@ -3,7 +3,7 @@
[data-template="support"],
[data-template="store"]{
.p__baseline-big{
.hero-heading{
font-family: var(--title);
font-size: var(--fs-big);
font-weight: var(--fw-bold);
@ -32,7 +32,7 @@
}
}
.p__baseline{
.subheading{
font-size: var(--fs-medium);
font-weight: var(--fw-medium);
line-height: 1.1;
@ -44,13 +44,13 @@
}
}
.p__details{
.text-details{
font-size: var(--fs-small);
margin-bottom: 0.5em;
color: var(--grey-400);
}
.section__heading{
.section-heading{
font-size: var(--fs-normal);
font-weight: var(--fw-medium);
line-height: 1;

View file

@ -19,12 +19,12 @@
}
}
.p__small{
.text-small{
font-size: var(--fs-x-small);
// margin-top: calc(var(--spacing)*0.5)
}
#list-socials {
#socials-list {
list-style: none;
columns: 2;
max-width: 500px;
@ -68,10 +68,10 @@
@media #{$small}{
margin-top: calc(var(--spacing)*2);
.footer__socials{
.footer-socials{
margin-top: calc(var(--spacing)*1.5);
}
.footer__mentions{
.footer-mentions{
margin-top: calc(var(--spacing)*0.5);
p{
// font-size: var(--font-size);
@ -83,7 +83,7 @@
@media #{$small-up}{
.site-footer__container{
.footer-container{
display: grid;
grid-template-columns: 1fr 1fr;
column-gap: calc(var(--spacing)*2);
@ -92,7 +92,7 @@
margin: 0 auto;
}
.footer__mentions{
.footer-mentions{
grid-column: span 2;
text-align: center;
p{
@ -105,13 +105,13 @@
}
@media #{$medium-up}{
.site-footer__container{
.footer-container{
column-gap: calc(var(--spacing)*4);
}
}
@media #{$small}{
.footer__mentions{
.footer-mentions{
padding-top: calc(var(--spacing)*1);
p{ margin-top: 0;}

File diff suppressed because one or more lines are too long

View file

@ -3,7 +3,7 @@
margin-bottom: calc(var(--spacing) * 2);
}
.p__baseline-big {
.hero-heading {
margin-top: calc(var(--spacing) * 2);
}

View file

@ -79,7 +79,7 @@
padding-top: calc(var(--spacing) * 0.5);
border-top: var(--border-light);
.p__baseline-big {
.hero-heading {
margin: 0;
text-align: left;
}

View file

@ -1,11 +1,11 @@
[data-template="thanks"]{
.p__baseline-big {
.hero-heading {
margin-top: calc(var(--spacing) * 3);
margin-bottom: calc(var(--spacing) * 3);
// font-size: var(--fs-x-big);
}
.p__baseline {
.subheading {
// font-size: var(--fs-big);
text-align: left;
max-width: 800px;

View file

@ -11,7 +11,7 @@
margin-bottom: calc(var(--spacing)*4);
.form__newsletter{
.newsletter-form{
margin: calc(var(--spacing)*1) 0;
input[type="email"]{
@ -34,13 +34,13 @@
}
}
.p__baseline{
.subheading{
max-width: 52ch;
// margin: 0 auto;
text-align: left;
}
.p__details{
.text-details{
color: var(--color-txt);
max-width: 80ch;
}

View file

@ -63,7 +63,7 @@
padding: calc(var(--spacing)*0.5) 0;
}
.gauge__container{
.gauge-container{
padding-top: calc(var(--spacing)*1);
}

View file

@ -1,5 +1,5 @@
.comment__text{
.comment-text{
font-size: var(--fs-medium);
font-weight: var(--fw-medium);
line-height: var(--leading-tight);
@ -8,7 +8,7 @@
text-align: center;
}
.comment__name {
.comment-name {
margin-top: calc(var(--spacing)*0.5);
text-align: center;
}
@ -29,7 +29,7 @@
align-items: center;
}
.comments-slider__dots{
.comments-dots{
position: absolute;
bottom: 10px; /* espace du bas */
left: 0;

View file

@ -5,7 +5,7 @@
.btn--donation__container{
.donation-grid{
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: calc(var(--padding-body)*0.75);
@ -19,7 +19,7 @@
max-width: 420px;
}
.btn--donation__grow-2{
.donation-btn--full{
grid-column: span 2;
}
@ -30,7 +30,7 @@
}
.btn--donation{
.donation-btn{
background-color: var(--color-txt);
color: var(--color-bg);
border-radius: var(--radius-small);

View file

@ -1,7 +1,7 @@
#section__video{
margin-bottom: calc(var(--spacing)*2);
.btn__deploy{
.btn-expand{
margin-top: calc(var(--spacing)*1);
--size: var(--h-block);
font-family: var(--font);
@ -45,13 +45,13 @@
}
.videos__ul{
.testimonies-list{
list-style: none;
width: 100%;
margin-top: calc(var(--spacing)*1);
display: none;
.videos__li{
.testimony-item{
position: relative;
padding-left: 40px;
@ -66,7 +66,7 @@
cursor: pointer;
@media screen and (max-width: 520px){
.br-desktop{ display: none; }
.desktop-break{ display: none; }
}
@ -96,9 +96,9 @@
}
}
#videos__input{ display: none }
#testimonies-toggle{ display: none }
#videos__input:checked ~ .videos__ul{
#testimonies-toggle:checked ~ .testimonies-list{
display: block;
}
}

View file

@ -74,7 +74,7 @@
function initTabs() {
const tabButtons = document.querySelectorAll('.nav--tabs__btn');
const containers = document.querySelectorAll('.btn--donation__container');
const containers = document.querySelectorAll('.donation-grid');
tabButtons.forEach((button, index) => {
button.addEventListener('click', () => {
@ -91,9 +91,9 @@
function initDonationButtons() {
const oneOffContainer = document.querySelector(
'[data-donnation="one-off"]'
'[data-donation="one-off"]'
);
const oneOffButtons = oneOffContainer.querySelectorAll('.btn--donation');
const oneOffButtons = oneOffContainer.querySelectorAll('.donation-btn');
oneOffButtons.forEach((button, index) => {
if (index < AMOUNTS.oneOff.length) {
@ -118,9 +118,9 @@
});
const monthlyContainer = document.querySelector(
'[data-donnation="monthly"]'
'[data-donation="monthly"]'
);
const monthlyButtons = monthlyContainer.querySelectorAll('.btn--donation');
const monthlyButtons = monthlyContainer.querySelectorAll('.donation-btn');
monthlyButtons.forEach((button, index) => {
if (index < AMOUNTS.monthly.length) {

View file

@ -45,7 +45,7 @@ function updateGaugeDisplay(campaignData) {
}
const countElement = document.querySelector(
'#gauge--infos__donateurs .value'
'#gauge-info--supporters .value'
);
if (countElement) {
countElement.textContent = totalSupport;

View file

@ -81,7 +81,7 @@
}
function initNewsletterForms() {
const forms = document.querySelectorAll('.form__newsletter');
const forms = document.querySelectorAll('.newsletter-form');
forms.forEach((form) => form.addEventListener('submit', handleFormSubmit));
}

View file

@ -27,7 +27,7 @@ function headerShrink() {
}
function toggleDonationButton() {
const btn = document.getElementById('btn--don__mobile');
const btn = document.getElementById('donation-cta-mobile');
const section = document.getElementById('section__donation');
const footer = document.getElementById('site-footer');
@ -61,7 +61,7 @@ function videos(){
let section = document.getElementById("section__video");
console.log(section);
let videoslinks = document.querySelectorAll(".videos__li");
let videoslinks = document.querySelectorAll(".testimony-item");
videoslinks.forEach(function (video, index) {
video.addEventListener("click", (event) => {