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:
parent
119c98edab
commit
322d9136b6
29 changed files with 917 additions and 1485 deletions
32
.forgejo/workflows/deploy.yml
Normal file
32
.forgejo/workflows/deploy.yml
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
name: Deploy
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
name: Deploy to Production
|
||||||
|
runs-on: docker
|
||||||
|
container:
|
||||||
|
image: forgejo-ci-php:latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
run: |
|
||||||
|
git clone --depth 1 --branch main https://oauth2:${{ github.token }}@forge.studio-variable.com/${{ github.repository }}.git .
|
||||||
|
|
||||||
|
- name: Deploy via FTP
|
||||||
|
env:
|
||||||
|
USERNAME: ${{ secrets.USERNAME }}
|
||||||
|
PASSWORD: ${{ secrets.PASSWORD }}
|
||||||
|
HOST: ${{ secrets.HOST }}
|
||||||
|
run: |
|
||||||
|
apt-get update -qq && apt-get install -y -qq lftp
|
||||||
|
cat > /tmp/lftp-script.txt <<SCRIPT
|
||||||
|
set ftp:ssl-allow no
|
||||||
|
open -u $USERNAME,$PASSWORD $HOST
|
||||||
|
mirror --reverse --verbose --ignore-time --parallel=10 -x cache/ -x .git/ -x .forgejo/ -x .claude/ -x backup/ . .
|
||||||
|
quit
|
||||||
|
SCRIPT
|
||||||
|
lftp -f /tmp/lftp-script.txt
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#btn--don__mobile {
|
#donation-cta-mobile {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn--don {
|
.donation-cta {
|
||||||
--vertical-padding: 0.5ch;
|
--vertical-padding: 0.5ch;
|
||||||
height: calc(var(--h-block) + var(--vertical-padding));
|
height: calc(var(--h-block) + var(--vertical-padding));
|
||||||
border-radius: calc(var(--h-block) / 1);
|
border-radius: calc(var(--h-block) / 1);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
.form__newsletter{
|
.newsletter-form{
|
||||||
--size: 24px;
|
--size: 24px;
|
||||||
|
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
.gauge__container {
|
.gauge-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.gauge--infos {
|
.gauge-info {
|
||||||
.property {
|
.property {
|
||||||
font-size: var(--fs-small);
|
font-size: var(--fs-small);
|
||||||
padding-bottom: 3px;
|
padding-bottom: 3px;
|
||||||
|
|
@ -51,7 +51,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#gauge--infos__donors {
|
#gauge-info--supporters {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
@ -79,7 +79,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.gauge--infos {
|
.gauge-info {
|
||||||
.property {
|
.property {
|
||||||
font-size: var(--fs-small);
|
font-size: var(--fs-small);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[data-template="support"],
|
[data-template="support"],
|
||||||
[data-template="store"]{
|
[data-template="store"]{
|
||||||
|
|
||||||
.p__baseline-big{
|
.hero-heading{
|
||||||
font-family: var(--title);
|
font-family: var(--title);
|
||||||
font-size: var(--fs-big);
|
font-size: var(--fs-big);
|
||||||
font-weight: var(--fw-bold);
|
font-weight: var(--fw-bold);
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.p__baseline{
|
.subheading{
|
||||||
font-size: var(--fs-medium);
|
font-size: var(--fs-medium);
|
||||||
font-weight: var(--fw-medium);
|
font-weight: var(--fw-medium);
|
||||||
line-height: 1.1;
|
line-height: 1.1;
|
||||||
|
|
@ -44,13 +44,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.p__details{
|
.text-details{
|
||||||
font-size: var(--fs-small);
|
font-size: var(--fs-small);
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.5em;
|
||||||
color: var(--grey-400);
|
color: var(--grey-400);
|
||||||
}
|
}
|
||||||
|
|
||||||
.section__heading{
|
.section-heading{
|
||||||
font-size: var(--fs-normal);
|
font-size: var(--fs-normal);
|
||||||
font-weight: var(--fw-medium);
|
font-weight: var(--fw-medium);
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
|
|
|
||||||
|
|
@ -19,12 +19,12 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.p__small{
|
.text-small{
|
||||||
font-size: var(--fs-x-small);
|
font-size: var(--fs-x-small);
|
||||||
// margin-top: calc(var(--spacing)*0.5)
|
// margin-top: calc(var(--spacing)*0.5)
|
||||||
}
|
}
|
||||||
|
|
||||||
#list-socials {
|
#socials-list {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
columns: 2;
|
columns: 2;
|
||||||
max-width: 500px;
|
max-width: 500px;
|
||||||
|
|
@ -68,10 +68,10 @@
|
||||||
|
|
||||||
@media #{$small}{
|
@media #{$small}{
|
||||||
margin-top: calc(var(--spacing)*2);
|
margin-top: calc(var(--spacing)*2);
|
||||||
.footer__socials{
|
.footer-socials{
|
||||||
margin-top: calc(var(--spacing)*1.5);
|
margin-top: calc(var(--spacing)*1.5);
|
||||||
}
|
}
|
||||||
.footer__mentions{
|
.footer-mentions{
|
||||||
margin-top: calc(var(--spacing)*0.5);
|
margin-top: calc(var(--spacing)*0.5);
|
||||||
p{
|
p{
|
||||||
// font-size: var(--font-size);
|
// font-size: var(--font-size);
|
||||||
|
|
@ -83,7 +83,7 @@
|
||||||
|
|
||||||
@media #{$small-up}{
|
@media #{$small-up}{
|
||||||
|
|
||||||
.site-footer__container{
|
.footer-container{
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
column-gap: calc(var(--spacing)*2);
|
column-gap: calc(var(--spacing)*2);
|
||||||
|
|
@ -92,7 +92,7 @@
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer__mentions{
|
.footer-mentions{
|
||||||
grid-column: span 2;
|
grid-column: span 2;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
p{
|
p{
|
||||||
|
|
@ -105,13 +105,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@media #{$medium-up}{
|
@media #{$medium-up}{
|
||||||
.site-footer__container{
|
.footer-container{
|
||||||
column-gap: calc(var(--spacing)*4);
|
column-gap: calc(var(--spacing)*4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media #{$small}{
|
@media #{$small}{
|
||||||
.footer__mentions{
|
.footer-mentions{
|
||||||
padding-top: calc(var(--spacing)*1);
|
padding-top: calc(var(--spacing)*1);
|
||||||
p{ margin-top: 0;}
|
p{ margin-top: 0;}
|
||||||
|
|
||||||
|
|
|
||||||
1312
assets/css/style.css
1312
assets/css/style.css
File diff suppressed because one or more lines are too long
|
|
@ -3,7 +3,7 @@
|
||||||
margin-bottom: calc(var(--spacing) * 2);
|
margin-bottom: calc(var(--spacing) * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.p__baseline-big {
|
.hero-heading {
|
||||||
margin-top: calc(var(--spacing) * 2);
|
margin-top: calc(var(--spacing) * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@
|
||||||
padding-top: calc(var(--spacing) * 0.5);
|
padding-top: calc(var(--spacing) * 0.5);
|
||||||
border-top: var(--border-light);
|
border-top: var(--border-light);
|
||||||
|
|
||||||
.p__baseline-big {
|
.hero-heading {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
[data-template="thanks"]{
|
[data-template="thanks"]{
|
||||||
.p__baseline-big {
|
.hero-heading {
|
||||||
margin-top: calc(var(--spacing) * 3);
|
margin-top: calc(var(--spacing) * 3);
|
||||||
margin-bottom: calc(var(--spacing) * 3);
|
margin-bottom: calc(var(--spacing) * 3);
|
||||||
// font-size: var(--fs-x-big);
|
// font-size: var(--fs-x-big);
|
||||||
}
|
}
|
||||||
|
|
||||||
.p__baseline {
|
.subheading {
|
||||||
// font-size: var(--fs-big);
|
// font-size: var(--fs-big);
|
||||||
text-align: left;
|
text-align: left;
|
||||||
max-width: 800px;
|
max-width: 800px;
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
margin-bottom: calc(var(--spacing)*4);
|
margin-bottom: calc(var(--spacing)*4);
|
||||||
|
|
||||||
|
|
||||||
.form__newsletter{
|
.newsletter-form{
|
||||||
margin: calc(var(--spacing)*1) 0;
|
margin: calc(var(--spacing)*1) 0;
|
||||||
|
|
||||||
input[type="email"]{
|
input[type="email"]{
|
||||||
|
|
@ -34,13 +34,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.p__baseline{
|
.subheading{
|
||||||
max-width: 52ch;
|
max-width: 52ch;
|
||||||
// margin: 0 auto;
|
// margin: 0 auto;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.p__details{
|
.text-details{
|
||||||
color: var(--color-txt);
|
color: var(--color-txt);
|
||||||
max-width: 80ch;
|
max-width: 80ch;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@
|
||||||
padding: calc(var(--spacing)*0.5) 0;
|
padding: calc(var(--spacing)*0.5) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gauge__container{
|
.gauge-container{
|
||||||
padding-top: calc(var(--spacing)*1);
|
padding-top: calc(var(--spacing)*1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
.comment__text{
|
.comment-text{
|
||||||
font-size: var(--fs-medium);
|
font-size: var(--fs-medium);
|
||||||
font-weight: var(--fw-medium);
|
font-weight: var(--fw-medium);
|
||||||
line-height: var(--leading-tight);
|
line-height: var(--leading-tight);
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.comment__name {
|
.comment-name {
|
||||||
margin-top: calc(var(--spacing)*0.5);
|
margin-top: calc(var(--spacing)*0.5);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.comments-slider__dots{
|
.comments-dots{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 10px; /* espace du bas */
|
bottom: 10px; /* espace du bas */
|
||||||
left: 0;
|
left: 0;
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.btn--donation__container{
|
.donation-grid{
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
grid-gap: calc(var(--padding-body)*0.75);
|
grid-gap: calc(var(--padding-body)*0.75);
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
max-width: 420px;
|
max-width: 420px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn--donation__grow-2{
|
.donation-btn--full{
|
||||||
grid-column: span 2;
|
grid-column: span 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.btn--donation{
|
.donation-btn{
|
||||||
background-color: var(--color-txt);
|
background-color: var(--color-txt);
|
||||||
color: var(--color-bg);
|
color: var(--color-bg);
|
||||||
border-radius: var(--radius-small);
|
border-radius: var(--radius-small);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#section__video{
|
#section__video{
|
||||||
margin-bottom: calc(var(--spacing)*2);
|
margin-bottom: calc(var(--spacing)*2);
|
||||||
|
|
||||||
.btn__deploy{
|
.btn-expand{
|
||||||
margin-top: calc(var(--spacing)*1);
|
margin-top: calc(var(--spacing)*1);
|
||||||
--size: var(--h-block);
|
--size: var(--h-block);
|
||||||
font-family: var(--font);
|
font-family: var(--font);
|
||||||
|
|
@ -45,13 +45,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.videos__ul{
|
.testimonies-list{
|
||||||
list-style: none;
|
list-style: none;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-top: calc(var(--spacing)*1);
|
margin-top: calc(var(--spacing)*1);
|
||||||
display: none;
|
display: none;
|
||||||
|
|
||||||
.videos__li{
|
.testimony-item{
|
||||||
|
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-left: 40px;
|
padding-left: 40px;
|
||||||
|
|
@ -66,7 +66,7 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
@media screen and (max-width: 520px){
|
@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;
|
display: block;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@
|
||||||
|
|
||||||
function initTabs() {
|
function initTabs() {
|
||||||
const tabButtons = document.querySelectorAll('.nav--tabs__btn');
|
const tabButtons = document.querySelectorAll('.nav--tabs__btn');
|
||||||
const containers = document.querySelectorAll('.btn--donation__container');
|
const containers = document.querySelectorAll('.donation-grid');
|
||||||
|
|
||||||
tabButtons.forEach((button, index) => {
|
tabButtons.forEach((button, index) => {
|
||||||
button.addEventListener('click', () => {
|
button.addEventListener('click', () => {
|
||||||
|
|
@ -91,9 +91,9 @@
|
||||||
|
|
||||||
function initDonationButtons() {
|
function initDonationButtons() {
|
||||||
const oneOffContainer = document.querySelector(
|
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) => {
|
oneOffButtons.forEach((button, index) => {
|
||||||
if (index < AMOUNTS.oneOff.length) {
|
if (index < AMOUNTS.oneOff.length) {
|
||||||
|
|
@ -118,9 +118,9 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
const monthlyContainer = document.querySelector(
|
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) => {
|
monthlyButtons.forEach((button, index) => {
|
||||||
if (index < AMOUNTS.monthly.length) {
|
if (index < AMOUNTS.monthly.length) {
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ function updateGaugeDisplay(campaignData) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const countElement = document.querySelector(
|
const countElement = document.querySelector(
|
||||||
'#gauge--infos__donateurs .value'
|
'#gauge-info--supporters .value'
|
||||||
);
|
);
|
||||||
if (countElement) {
|
if (countElement) {
|
||||||
countElement.textContent = totalSupport;
|
countElement.textContent = totalSupport;
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function initNewsletterForms() {
|
function initNewsletterForms() {
|
||||||
const forms = document.querySelectorAll('.form__newsletter');
|
const forms = document.querySelectorAll('.newsletter-form');
|
||||||
forms.forEach((form) => form.addEventListener('submit', handleFormSubmit));
|
forms.forEach((form) => form.addEventListener('submit', handleFormSubmit));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ function headerShrink() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggleDonationButton() {
|
function toggleDonationButton() {
|
||||||
const btn = document.getElementById('btn--don__mobile');
|
const btn = document.getElementById('donation-cta-mobile');
|
||||||
const section = document.getElementById('section__donation');
|
const section = document.getElementById('section__donation');
|
||||||
const footer = document.getElementById('site-footer');
|
const footer = document.getElementById('site-footer');
|
||||||
|
|
||||||
|
|
@ -61,7 +61,7 @@ function videos(){
|
||||||
let section = document.getElementById("section__video");
|
let section = document.getElementById("section__video");
|
||||||
console.log(section);
|
console.log(section);
|
||||||
|
|
||||||
let videoslinks = document.querySelectorAll(".videos__li");
|
let videoslinks = document.querySelectorAll(".testimony-item");
|
||||||
videoslinks.forEach(function (video, index) {
|
videoslinks.forEach(function (video, index) {
|
||||||
|
|
||||||
video.addEventListener("click", (event) => {
|
video.addEventListener("click", (event) => {
|
||||||
|
|
|
||||||
|
|
@ -89,36 +89,36 @@
|
||||||
<main>
|
<main>
|
||||||
<div class="col-left">
|
<div class="col-left">
|
||||||
<section id="section__hero">
|
<section id="section__hero">
|
||||||
<p class="p__baseline-big">
|
<p class="hero-heading">
|
||||||
To keep investigating, <br />Index needs your help
|
To keep investigating, <br />Index needs your help
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="gauge__container">
|
<div class="gauge-container">
|
||||||
<div id="gauge" style="--pourcent: 0%"></div>
|
<div id="gauge" style="--pourcent: 0%"></div>
|
||||||
<div class="gauge--infos" id="gauge--infos__donateurs">
|
<div class="gauge-info" id="gauge-info--supporters">
|
||||||
<p class="property">Regular supporters</p>
|
<p class="property">Regular supporters</p>
|
||||||
<p class="value">0</p>
|
<p class="value">0</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="gauge--infos" id="gauge--infos__objectif">
|
<div class="gauge-info" id="gauge-info--goal">
|
||||||
<p class="property">Goal</p>
|
<p class="property">Goal</p>
|
||||||
<p class="value">500</p>
|
<p class="value">500</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="p__baseline-big">
|
<p class="hero-heading">
|
||||||
Goal: 500 Supporters<br /><strong>by 21 June 2026</strong>
|
Goal: 500 Supporters<br /><strong>by 21 June 2026</strong>
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="section__baseline">
|
<section id="section__baseline">
|
||||||
<p class="p__baseline">
|
<p class="subheading">
|
||||||
Index is a not-for-profit, <br />digital investigation NGO.<br />Your
|
Index is a not-for-profit, <br />digital investigation NGO.<br />Your
|
||||||
support guarantees our independence.
|
support guarantees our independence.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="section__video">
|
<section id="section__video">
|
||||||
<h2 class="section__heading">Why support Index? Hear from those at the heart of it.</h2>
|
<h2 class="section-heading">Why support Index? Hear from those at the heart of it.</h2>
|
||||||
<div class="video-container">
|
<div class="video-container">
|
||||||
<iframe
|
<iframe
|
||||||
src="https://player.vimeo.com/video/1136957715?h=215c38e160&badge=0&autopause=0&player_id=0&app_id=58479&autoplay=1"
|
src="https://player.vimeo.com/video/1136957715?h=215c38e160&badge=0&autopause=0&player_id=0&app_id=58479&autoplay=1"
|
||||||
|
|
@ -131,7 +131,7 @@
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="section__questions">
|
<section id="section__questions">
|
||||||
<h3 class="section__heading">Frequently Asked Questions</h3>
|
<h2 class="section-heading">Frequently Asked Questions</h2>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>What are Index Supporters?</summary>
|
<summary>What are Index Supporters?</summary>
|
||||||
|
|
@ -343,49 +343,49 @@
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
data-donnation="one-off"
|
data-donation="one-off"
|
||||||
class="btn--donation__container"
|
class="donation-grid"
|
||||||
>
|
>
|
||||||
<button class="btn--donation">
|
<button class="donation-btn">
|
||||||
<p class="bold">200 €</p>
|
<p class="bold">200 €</p>
|
||||||
<p class="small">That is 68 € after tax</p>
|
<p class="small">That is 68 € after tax</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-1">
|
<button class="donation-btn donation-btn--wide">
|
||||||
<p class="bold">100 €</p>
|
<p class="bold">100 €</p>
|
||||||
<p class="small">That is 34 € after tax</p>
|
<p class="small">That is 34 € after tax</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-1">
|
<button class="donation-btn donation-btn--wide">
|
||||||
<p class="bold">50 €</p>
|
<p class="bold">50 €</p>
|
||||||
<p class="small">That is 17 € after tax</p>
|
<p class="small">That is 17 € after tax</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-1">
|
<button class="donation-btn donation-btn--wide">
|
||||||
<p class="bold">20 €</p>
|
<p class="bold">20 €</p>
|
||||||
<p class="small">That is 6.80 € after tax</p>
|
<p class="small">That is 6.80 € after tax</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-2">
|
<button class="donation-btn donation-btn--full">
|
||||||
<p class="bold">Choose your amount</p>
|
<p class="bold">Choose your amount</p>
|
||||||
<p class="small">With 66 % tax deduction</p>
|
<p class="small">With 66 % tax deduction</p>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-donnation="monthly" class="btn--donation__container is-selected">
|
<div data-donation="monthly" class="donation-grid is-selected">
|
||||||
<button class="btn--donation">
|
<button class="donation-btn">
|
||||||
<p class="bold">5€/month</p>
|
<p class="bold">5€/month</p>
|
||||||
<p class="small">That is X€ after taxes</p>
|
<p class="small">That is X€ after taxes</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-1">
|
<button class="donation-btn donation-btn--wide">
|
||||||
<p class="bold">10€/month</p>
|
<p class="bold">10€/month</p>
|
||||||
<p class="small">That is X€ after taxes</p>
|
<p class="small">That is X€ after taxes</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-1">
|
<button class="donation-btn donation-btn--wide">
|
||||||
<p class="bold">20€/month</p>
|
<p class="bold">20€/month</p>
|
||||||
<p class="small">That is X€ after taxes</p>
|
<p class="small">That is X€ after taxes</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-1">
|
<button class="donation-btn donation-btn--wide">
|
||||||
<p class="bold">50€/month</p>
|
<p class="bold">50€/month</p>
|
||||||
<p class="small">That is X€ after taxes</p>
|
<p class="small">That is X€ after taxes</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-2">
|
<button class="donation-btn donation-btn--full">
|
||||||
<p class="bold">Choose your amount</p>
|
<p class="bold">Choose your amount</p>
|
||||||
<p class="small">With tax deduction</p>
|
<p class="small">With tax deduction</p>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -393,60 +393,59 @@
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="section__comments">
|
<section id="section__comments">
|
||||||
<h2 class="section__heading">Donor comments</h2>
|
<h2 class="section-heading">Donor comments</h2>
|
||||||
|
|
||||||
<div class="swiper" id="comments-slider">
|
<div class="swiper" id="comments-slider">
|
||||||
<div class="swiper-wrapper">
|
<div class="swiper-wrapper">
|
||||||
<div class="swiper-slide comment">
|
<div class="swiper-slide comment">
|
||||||
<p class="comment__text">
|
<p class="comment-text">
|
||||||
You are doing admirable work. Thank you for helping Justice
|
You are doing admirable work. Thank you for helping Justice
|
||||||
with a capital J. Keep up the good work!
|
with a capital J. Keep up the good work!
|
||||||
</p>
|
</p>
|
||||||
<p class="comment__name">Olivier</p>
|
<p class="comment-name">Olivier</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="swiper-slide comment">
|
<div class="swiper-slide comment">
|
||||||
<p class="comment__text">
|
<p class="comment-text">
|
||||||
Thank you for the beneficial, valuable, and extremely
|
Thank you for the beneficial, valuable, and extremely
|
||||||
professional work you do.
|
professional work you do.
|
||||||
</p>
|
</p>
|
||||||
<p class="comment__name">Myriam</p>
|
<p class="comment-name">Myriam</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="swiper-slide comment">
|
<div class="swiper-slide comment">
|
||||||
<p class="comment__text">
|
<p class="comment-text">
|
||||||
You are truly serving the public good, and the methods you use
|
You are truly serving the public good, and the methods you use
|
||||||
deserve to be widely known.
|
deserve to be widely known.
|
||||||
</p>
|
</p>
|
||||||
<p class="comment__name">Frédéric</p>
|
<p class="comment-name">Frédéric</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="swiper-slide comment">
|
<div class="swiper-slide comment">
|
||||||
<p class="comment__text">
|
<p class="comment-text">
|
||||||
Thank you for continuing your tireless quest to reveal the
|
Thank you for continuing your tireless quest to reveal the
|
||||||
truths that are being kept from us.
|
truths that are being kept from us.
|
||||||
</p>
|
</p>
|
||||||
<p class="comment__name">Pauline</p>
|
<p class="comment-name">Pauline</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="swiper-slide comment">
|
<div class="swiper-slide comment">
|
||||||
<p class="comment__text">
|
<p class="comment-text">
|
||||||
Index investigators do essential work for democracy and
|
Index investigators do essential work for democracy and
|
||||||
justice. Through this citizen support, I express my gratitude
|
justice. Through this citizen support, I express my gratitude
|
||||||
for their commitment and rigor.
|
for their commitment and rigor.
|
||||||
</p>
|
</p>
|
||||||
<p class="comment__name">Anne</p>
|
<p class="comment-name">Anne</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="swiper-pagination comments-slider__dots"></div>
|
<div class="swiper-pagination comments-dots"></div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="btn--don__mobile">
|
<div id="donation-cta-mobile">
|
||||||
<button class="btn--don">
|
<a href="#section__donation" class="donation-cta" role="button">
|
||||||
<a href="#section__donation">
|
|
||||||
<span class="txt">Donate</span>
|
<span class="txt">Donate</span>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<svg
|
<svg
|
||||||
|
|
@ -463,21 +462,20 @@
|
||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<footer id="site-footer">
|
<footer id="site-footer">
|
||||||
<div class="site-footer__container">
|
<div class="footer-container">
|
||||||
<div class="footer__newsletter">
|
<div class="footer-newsletter">
|
||||||
<p>
|
<p>
|
||||||
Receive the latest investigation and news from Index directly in
|
Receive the latest investigation and news from Index directly in
|
||||||
your inbox.
|
your inbox.
|
||||||
</p>
|
</p>
|
||||||
<p>Sign up for the newsletter</p>
|
<p>Sign up for the newsletter</p>
|
||||||
|
|
||||||
<form class="form__newsletter">
|
<form class="newsletter-form">
|
||||||
<input
|
<input
|
||||||
type="email"
|
type="email"
|
||||||
name="email"
|
name="email"
|
||||||
|
|
@ -504,7 +502,7 @@
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<p class="p__small">
|
<p class="text-small">
|
||||||
By signing up, you agree to Index's
|
By signing up, you agree to Index's
|
||||||
<a target="_blank" href="https://www.index.ngo/mentions-legales/"
|
<a target="_blank" href="https://www.index.ngo/mentions-legales/"
|
||||||
>terms of use</a
|
>terms of use</a
|
||||||
|
|
@ -512,10 +510,10 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer__socials">
|
<div class="footer-socials">
|
||||||
<p>Follow Index on social media</p>
|
<p>Follow Index on social media</p>
|
||||||
|
|
||||||
<ul id="list-socials">
|
<ul id="socials-list">
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
href="https://www.youtube.com/index-ngo"
|
href="https://www.youtube.com/index-ngo"
|
||||||
|
|
@ -696,8 +694,8 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer__mentions">
|
<div class="footer-mentions">
|
||||||
<p class="p__small">
|
<p class="text-small">
|
||||||
© 2025 Index Investigation |
|
© 2025 Index Investigation |
|
||||||
<a target="_blank" href="https://www.index.ngo/mentions-legales/"
|
<a target="_blank" href="https://www.index.ngo/mentions-legales/"
|
||||||
>Legal notices</a
|
>Legal notices</a
|
||||||
|
|
@ -716,7 +714,7 @@
|
||||||
disableOnInteraction: false,
|
disableOnInteraction: false,
|
||||||
},
|
},
|
||||||
pagination: {
|
pagination: {
|
||||||
el: '.comments-slider__dots',
|
el: '.comments-dots',
|
||||||
clickable: true,
|
clickable: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
||||||
270
en/index.php
Normal file
270
en/index.php
Normal file
|
|
@ -0,0 +1,270 @@
|
||||||
|
<?php
|
||||||
|
require_once __DIR__ . '/../includes/cache.php';
|
||||||
|
$data = getSoutenirContent('en');
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title><?= htmlspecialchars($data['metaTitle'] ?? 'Support Index') ?></title>
|
||||||
|
<meta name="description" content="<?= htmlspecialchars($data['metaDescription'] ?? '') ?>" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@12/swiper-bundle.min.css" />
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/swiper@12/swiper-bundle.min.js"></script>
|
||||||
|
|
||||||
|
<link rel="icon" type="image/png" href="/assets/favicon.png" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/assets/fonts/stylesheet.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/assets/css/style.css" />
|
||||||
|
<script src="/assets/js/onload.js"></script>
|
||||||
|
<script src="/assets/js/temp/includeHtml.js"></script>
|
||||||
|
<script src="/assets/js/donorbox-gauge.js"></script>
|
||||||
|
<script src="/assets/js/donation.js"></script>
|
||||||
|
<script src="/assets/js/newsletter-brevo.js"></script>
|
||||||
|
<meta name="robots" content="index, nofollow" />
|
||||||
|
</head>
|
||||||
|
<body data-template="support">
|
||||||
|
<header id="site-header">
|
||||||
|
<div class="header-left"></div>
|
||||||
|
<div class="header-center">
|
||||||
|
<h1 class="site-title">
|
||||||
|
<a href="https://www.index.ngo/en" aria-label="Back to home" title="go to Index website">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 162 29" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<title>Index.ngo</title>
|
||||||
|
<g transform="matrix(1.04516,0,0,0.659091,57.4839,-6.59091)">
|
||||||
|
<rect x="-55" y="10" width="155" height="44" style="fill:none"/>
|
||||||
|
<clipPath id="_clip1"><rect x="-55" y="10" width="155" height="44"/></clipPath>
|
||||||
|
<g clip-path="url(#_clip1)">
|
||||||
|
<g transform="matrix(0.95679,0,0,1.51724,-55,10)">
|
||||||
|
<path d="M162,29L148.198,29L141.174,20.767L134.15,29L91.184,29L91.184,0.004L120.653,0.004L120.653,7.351L102.637,7.351L102.637,10.867L120.137,10.867L120.137,18.13L102.637,18.13L102.637,21.606L120.926,21.606L120.926,28.951L134.273,14.414L120.807,0L134.56,0L141.388,7.767L147.76,0L161.201,0L148.236,13.79L161.996,28.997L162,29ZM68.58,29L54.224,29L54.224,0.004L68.637,0.004C74.672,0.004 78.31,0.004 82.046,2.045C86.259,4.379 88.674,8.889 88.674,14.417C88.674,19.406 86.862,23.405 83.427,25.975C79.463,29 75.345,29 68.58,29ZM49.819,29L38.775,29L31.499,19.815C29.746,17.735 28.088,15.545 27.307,14.495C27.387,15.813 27.524,17.238 27.524,20.499L27.524,29L15.965,29L15.965,0.004L27.009,0.004L33.798,8.349C36.223,11.121 37.709,12.993 38.393,13.881C38.347,12.615 38.26,9.911 38.26,6.84L38.26,0.004L49.819,0.004L49.819,29ZM11.559,29L0,29L0,0.004L11.559,0.004L11.559,29ZM65.784,21.818L67.904,21.818C70.918,21.818 73.067,21.818 74.728,20.531C76.074,19.491 76.845,17.308 76.845,14.541C76.845,11.526 76.084,9.541 74.525,8.476C72.895,7.411 71.461,7.224 67.578,7.224L65.784,7.224L65.784,21.818Z" style="fill-rule:nonzero"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div class="header-right">
|
||||||
|
<ul id="toggle-lang">
|
||||||
|
<li><a href="../">Fr</a></li>
|
||||||
|
<li class="is-selected"><a href="./">En</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<div class="col-left">
|
||||||
|
<section id="section__hero">
|
||||||
|
<p class="hero-heading"><?= $data['heroHeading'] ?? '' ?></p>
|
||||||
|
|
||||||
|
<div class="gauge-container">
|
||||||
|
<div id="gauge" style="--pourcent: 0%"></div>
|
||||||
|
<div class="gauge-info" id="gauge-info--supporters">
|
||||||
|
<p class="property">Regular supporters</p>
|
||||||
|
<p class="value">0</p>
|
||||||
|
</div>
|
||||||
|
<div class="gauge-info" id="gauge-info--goal">
|
||||||
|
<p class="property">Goal</p>
|
||||||
|
<p class="value">500</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="hero-heading">
|
||||||
|
<?= htmlspecialchars($data['heroObjectiveLabel'] ?? '') ?><br />
|
||||||
|
<strong><?= htmlspecialchars($data['heroObjectiveDate'] ?? '') ?></strong>
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="section__baseline">
|
||||||
|
<p class="subheading"><?= $data['subheading'] ?? '' ?></p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="section__video">
|
||||||
|
<h2 class="section-heading"><?= $data['videoSectionHeading'] ?? '' ?></h2>
|
||||||
|
<div class="video-container">
|
||||||
|
<iframe
|
||||||
|
title="Campaign video"
|
||||||
|
src="<?= htmlspecialchars($data['mainVideoUrl'] ?? '') ?>"
|
||||||
|
style="aspect-ratio: 9/16; width: 100%; border: 0"
|
||||||
|
allow="autoplay; fullscreen; picture-in-picture"
|
||||||
|
allowfullscreen
|
||||||
|
></iframe>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php if (!empty($data['testimonies'])): ?>
|
||||||
|
<input type="checkbox" id="testimonies-toggle" />
|
||||||
|
<label class="btn-expand" for="testimonies-toggle">
|
||||||
|
<span class="txt"><?= htmlspecialchars($data['testimoniesButtonLabel'] ?? 'Watch testimonies') ?></span>
|
||||||
|
<span class="icon"><svg width="34px" height="34px" viewBox="0 0 16 13" version="1.1" xmlns="http://www.w3.org/2000/svg" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<rect x="0" y="0" width="15.43" height="12.636" style="fill:none"/>
|
||||||
|
<path d="M0,7.29L0,5.373L9.801,5.373C10.67,5.373 11.757,5.4 12.387,5.427C11.952,5.022 11.366,4.455 10.888,3.969L8.432,1.404L9.366,0L15.43,6.318L9.366,12.636L8.432,11.232L10.888,8.667C11.366,8.181 11.952,7.614 12.387,7.236C11.757,7.263 10.67,7.29 9.801,7.29L0,7.29Z" style="fill-rule:nonzero"/>
|
||||||
|
</svg></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<ul class="testimonies-list">
|
||||||
|
<?php foreach ($data['testimonies'] as $testimony): ?>
|
||||||
|
<li class="testimony-item" data-video="<?= htmlspecialchars($testimony['videoUrl']) ?>">
|
||||||
|
<span class="icon">
|
||||||
|
<svg height="80px" width="80px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
<p class="txt"><?= $testimony['description'] ?></p>
|
||||||
|
</li>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</ul>
|
||||||
|
<?php endif; ?>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="section__questions">
|
||||||
|
<h2 class="section-heading"><?= htmlspecialchars($data['faqHeading'] ?? 'Frequently Asked Questions') ?></h2>
|
||||||
|
|
||||||
|
<?php foreach (($data['questions'] ?? []) as $q): ?>
|
||||||
|
<details>
|
||||||
|
<summary><?= htmlspecialchars($q['question']) ?></summary>
|
||||||
|
<?= $q['answer'] ?>
|
||||||
|
</details>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-right">
|
||||||
|
<section id="section__donation">
|
||||||
|
<nav class="nav--tabs">
|
||||||
|
<button class="nav--tabs__btn is-selected">Monthly donation</button>
|
||||||
|
<button class="nav--tabs__btn">One-time donation</button>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div data-donation="one-off" class="donation-grid">
|
||||||
|
<button class="donation-btn">
|
||||||
|
<p class="bold">200 €</p>
|
||||||
|
<p class="small">That is 68 € after tax</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--wide">
|
||||||
|
<p class="bold">100 €</p>
|
||||||
|
<p class="small">That is 34 € after tax</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--wide">
|
||||||
|
<p class="bold">50 €</p>
|
||||||
|
<p class="small">That is 17 € after tax</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--wide">
|
||||||
|
<p class="bold">20 €</p>
|
||||||
|
<p class="small">That is 6.80 € after tax</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--full">
|
||||||
|
<p class="bold">Choose your amount</p>
|
||||||
|
<p class="small">With 66 % tax deduction</p>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-donation="monthly" class="donation-grid is-selected">
|
||||||
|
<button class="donation-btn">
|
||||||
|
<p class="bold">5€/month</p>
|
||||||
|
<p class="small">That is X€ after taxes</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--wide">
|
||||||
|
<p class="bold">10€/month</p>
|
||||||
|
<p class="small">That is X€ after taxes</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--wide">
|
||||||
|
<p class="bold">20€/month</p>
|
||||||
|
<p class="small">That is X€ after taxes</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--wide">
|
||||||
|
<p class="bold">50€/month</p>
|
||||||
|
<p class="small">That is X€ after taxes</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--full">
|
||||||
|
<p class="bold">Choose your amount</p>
|
||||||
|
<p class="small">With tax deduction</p>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="section__comments">
|
||||||
|
<h2 class="section-heading"><?= htmlspecialchars($data['commentsHeading'] ?? 'Donor comments') ?></h2>
|
||||||
|
|
||||||
|
<div class="swiper" id="comments-slider">
|
||||||
|
<div class="swiper-wrapper">
|
||||||
|
<?php foreach (($data['comments'] ?? []) as $comment): ?>
|
||||||
|
<div class="swiper-slide">
|
||||||
|
<p class="comment-text"><?= htmlspecialchars($comment['text']) ?></p>
|
||||||
|
<p class="comment-name"><?= htmlspecialchars($comment['name']) ?></p>
|
||||||
|
</div>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
<div class="swiper-pagination comments-dots"></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="donation-cta-mobile">
|
||||||
|
<a href="#section__donation" class="donation-cta" role="button">
|
||||||
|
<span class="txt">Donate</span>
|
||||||
|
<span class="icon">
|
||||||
|
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m14.523 18.787s4.501-4.505 6.255-6.26c.146-.146.219-.338.219-.53s-.073-.383-.219-.53c-1.753-1.754-6.255-6.258-6.255-6.258-.144-.145-.334-.217-.524-.217-.193 0-.385.074-.532.221-.293.292-.295.766-.004 1.056l4.978 4.978h-14.692c-.414 0-.75.336-.75.75s.336.75.75.75h14.692l-4.979 4.979c-.289.289-.286.762.006 1.054.148.148.341.222.533.222.19 0 .378-.072.522-.215z" fill-rule="nonzero"/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="site-footer">
|
||||||
|
<div class="footer-container">
|
||||||
|
<div class="footer-newsletter">
|
||||||
|
<p><?= $data['footerNewsletterText'] ?? '' ?></p>
|
||||||
|
|
||||||
|
<form class="newsletter-form">
|
||||||
|
<input type="email" name="email" placeholder="Your email address" required />
|
||||||
|
<button class="btn--bold" type="submit" aria-label="subscribe">
|
||||||
|
<span class="txt"><?= htmlspecialchars($data['footerNewsletterCta'] ?? 'Subscribe') ?></span>
|
||||||
|
<span class="icon">
|
||||||
|
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m14.523 18.787s4.501-4.505 6.255-6.26c.146-.146.219-.338.219-.53s-.073-.383-.219-.53c-1.753-1.754-6.255-6.258-6.255-6.258-.144-.145-.334-.217-.524-.217-.193 0-.385.074-.532.221-.293.292-.295.766-.004 1.056l4.978 4.978h-14.692c-.414 0-.75.336-.75.75s.336.75.75.75h14.692l-4.979 4.979c-.289.289-.286.762.006 1.054.148.148.341.222.533.222.19 0 .378-.072.522-.215z" fill-rule="nonzero"/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<p class="text-small"><?= $data['footerNewsletterDisclaimer'] ?? '' ?></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer-socials">
|
||||||
|
<p><?= htmlspecialchars($data['footerSocialsHeading'] ?? '') ?></p>
|
||||||
|
|
||||||
|
<ul id="socials-list">
|
||||||
|
<?php foreach (($data['footerSocials'] ?? []) as $social): ?>
|
||||||
|
<li>
|
||||||
|
<a href="<?= htmlspecialchars($social['url']) ?>" target="_blank" rel="noopener noreferrer">
|
||||||
|
<span class="icon"><?= $social['svgIcon'] ?></span>
|
||||||
|
<span class="text"><?= htmlspecialchars($social['name']) ?></span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer-mentions">
|
||||||
|
<p class="text-small"><?= $data['footerMentions'] ?? '' ?></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const swiper = new Swiper('#comments-slider', {
|
||||||
|
slidesPerView: 1,
|
||||||
|
loop: true,
|
||||||
|
autoplay: {
|
||||||
|
delay: 4000,
|
||||||
|
disableOnInteraction: false,
|
||||||
|
},
|
||||||
|
pagination: {
|
||||||
|
el: '.comments-dots',
|
||||||
|
clickable: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
42
includes/cache.php
Normal file
42
includes/cache.php
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
require_once __DIR__ . '/config.php';
|
||||||
|
|
||||||
|
function getSoutenirContent(string $lang = 'fr'): array {
|
||||||
|
$cacheFile = CACHE_DIR . "/content.{$lang}.json";
|
||||||
|
|
||||||
|
// Serve cache if fresh
|
||||||
|
if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < CACHE_TTL) {
|
||||||
|
return json_decode(file_get_contents($cacheFile), true) ?: [];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fetch from Kirby API
|
||||||
|
$url = KIRBY_API_URL . '?lang=' . urlencode($lang);
|
||||||
|
if (SOUTIEN_API_TOKEN) {
|
||||||
|
$url .= '&token=' . urlencode(SOUTIEN_API_TOKEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
$context = stream_context_create([
|
||||||
|
'http' => [
|
||||||
|
'timeout' => 5,
|
||||||
|
'header' => "Referer: https://soutenir.index.ngo\r\n",
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = @file_get_contents($url, false, $context);
|
||||||
|
|
||||||
|
if ($response !== false) {
|
||||||
|
$data = json_decode($response, true);
|
||||||
|
if ($data && !isset($data['error'])) {
|
||||||
|
@file_put_contents($cacheFile, $response, LOCK_EX);
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fallback: serve stale cache rather than nothing
|
||||||
|
if (file_exists($cacheFile)) {
|
||||||
|
return json_decode(file_get_contents($cacheFile), true) ?: [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
6
includes/config.php
Normal file
6
includes/config.php
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
define('KIRBY_API_URL', 'https://www.index.ngo/api/soutien-content');
|
||||||
|
define('SOUTIEN_API_TOKEN', ''); // À remplir avec le même token que dans la config Kirby
|
||||||
|
define('CACHE_TTL', 300); // 5 minutes
|
||||||
|
define('CACHE_DIR', __DIR__ . '/../cache');
|
||||||
128
index.html
128
index.html
|
|
@ -90,36 +90,36 @@
|
||||||
<main>
|
<main>
|
||||||
<div class="col-left">
|
<div class="col-left">
|
||||||
<section id="section__hero">
|
<section id="section__hero">
|
||||||
<p class="p__baseline-big">
|
<p class="hero-heading">
|
||||||
Pour continuer à enquêter, <br />Index a besoin de vous
|
Pour continuer à enquêter, <br />Index a besoin de vous
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="gauge__container">
|
<div class="gauge-container">
|
||||||
<div id="gauge" style="--pourcent: 0%"></div>
|
<div id="gauge" style="--pourcent: 0%"></div>
|
||||||
<div class="gauge--infos" id="gauge--infos__donateurs">
|
<div class="gauge-info" id="gauge-info--supporters">
|
||||||
<p class="property">Soutiens réguliers</p>
|
<p class="property">Soutiens réguliers</p>
|
||||||
<p class="value">0</p>
|
<p class="value">0</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="gauge--infos" id="gauge--infos__objectif">
|
<div class="gauge-info" id="gauge-info--goal">
|
||||||
<p class="property">Objectif</p>
|
<p class="property">Objectif</p>
|
||||||
<p class="value">500</p>
|
<p class="value">500</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="p__baseline-big">
|
<p class="hero-heading">
|
||||||
Objectif 500 Soutiens<br /><strong>au 21 juin 2026</strong>
|
Objectif 500 Soutiens<br /><strong>au 21 juin 2026</strong>
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="section__baseline">
|
<section id="section__baseline">
|
||||||
<p class="p__baseline">
|
<p class="subheading">
|
||||||
Index est une ONG d’investigation <br />à but non-lucratif.
|
Index est une ONG d’investigation <br />à but non-lucratif.
|
||||||
<br />Vos dons garantissent notre indépendance.
|
<br />Vos dons garantissent notre indépendance.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="section__video">
|
<section id="section__video">
|
||||||
<h2 class="section__heading">
|
<h2 class="section-heading">
|
||||||
Pourquoi soutenir Index  ? <br />Écoutez les premier·es
|
Pourquoi soutenir Index  ? <br />Écoutez les premier·es
|
||||||
concerné·es
|
concerné·es
|
||||||
</h2>
|
</h2>
|
||||||
|
|
@ -133,8 +133,8 @@
|
||||||
></iframe>
|
></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="checkbox" id="videos__input" />
|
<input type="checkbox" id="testimonies-toggle" />
|
||||||
<label class="btn__deploy" for="videos__input">
|
<label class="btn-expand" for="testimonies-toggle">
|
||||||
<span class="txt">Voir les témoignages</span>
|
<span class="txt">Voir les témoignages</span>
|
||||||
<span class="icon"
|
<span class="icon"
|
||||||
><svg
|
><svg
|
||||||
|
|
@ -169,9 +169,9 @@
|
||||||
></span>
|
></span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<ul class="videos__ul">
|
<ul class="testimonies-list">
|
||||||
<li
|
<li
|
||||||
class="videos__li"
|
class="testimony-item"
|
||||||
data-video="https://player.vimeo.com/video/1138884807?h=384a2d15ea&autoplay=1"
|
data-video="https://player.vimeo.com/video/1138884807?h=384a2d15ea&autoplay=1"
|
||||||
>
|
>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
|
|
@ -192,13 +192,13 @@
|
||||||
<p class="txt">
|
<p class="txt">
|
||||||
« Index fait un travail que la justice
|
« Index fait un travail que la justice
|
||||||
ne fait pas » :
|
ne fait pas » :
|
||||||
<span class="br-desktop"><br /></span>le témoignage
|
<span class="desktop-break"><br /></span>le témoignage
|
||||||
d’Issam El Khalfaoui
|
d’Issam El Khalfaoui
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li
|
<li
|
||||||
class="videos__li"
|
class="testimony-item"
|
||||||
data-video="https://player.vimeo.com/video/1145581831?h=ce46358189&autoplay=1"
|
data-video="https://player.vimeo.com/video/1145581831?h=ce46358189&autoplay=1"
|
||||||
>
|
>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
|
|
@ -224,7 +224,7 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li
|
<li
|
||||||
class="videos__li"
|
class="testimony-item"
|
||||||
data-video="https://player.vimeo.com/video/1142401468?h=f88778b3dd&autoplay=1"
|
data-video="https://player.vimeo.com/video/1142401468?h=f88778b3dd&autoplay=1"
|
||||||
>
|
>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
|
|
@ -244,13 +244,13 @@
|
||||||
</span>
|
</span>
|
||||||
<p class="txt">
|
<p class="txt">
|
||||||
« Les enquêtes d'Index doivent continuer » :
|
« Les enquêtes d'Index doivent continuer » :
|
||||||
<span class="br-desktop"><br /></span>le témoignage
|
<span class="desktop-break"><br /></span>le témoignage
|
||||||
d’Assa Traoré
|
d’Assa Traoré
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li
|
<li
|
||||||
class="videos__li"
|
class="testimony-item"
|
||||||
data-video="https://player.vimeo.com/video/1143395847?h=f28d317c46&autoplay=1"
|
data-video="https://player.vimeo.com/video/1143395847?h=f28d317c46&autoplay=1"
|
||||||
>
|
>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
|
|
@ -271,13 +271,13 @@
|
||||||
<p class="txt">
|
<p class="txt">
|
||||||
« Vous faites un travail rare
|
« Vous faites un travail rare
|
||||||
et concret » :
|
et concret » :
|
||||||
<span class="br-desktop"><br /></span>le témoignage
|
<span class="desktop-break"><br /></span>le témoignage
|
||||||
de Jérôme Rodrigues
|
de Jérôme Rodrigues
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li
|
<li
|
||||||
class="videos__li"
|
class="testimony-item"
|
||||||
data-video="https://player.vimeo.com/video/1144550389?h=5781ebef9b&autoplay=1"
|
data-video="https://player.vimeo.com/video/1144550389?h=5781ebef9b&autoplay=1"
|
||||||
>
|
>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
|
|
@ -297,13 +297,13 @@
|
||||||
</span>
|
</span>
|
||||||
<p class="txt">
|
<p class="txt">
|
||||||
« Index est d’un intérêt public absolu » :
|
« Index est d’un intérêt public absolu » :
|
||||||
<span class="br-desktop"><br /></span>le témoignage
|
<span class="desktop-break"><br /></span>le témoignage
|
||||||
de Fatiha B.
|
de Fatiha B.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li
|
<li
|
||||||
class="videos__li"
|
class="testimony-item"
|
||||||
data-video="https://player.vimeo.com/video/1145649552?h=63bd03334b&autoplay=1"
|
data-video="https://player.vimeo.com/video/1145649552?h=63bd03334b&autoplay=1"
|
||||||
>
|
>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
|
|
@ -324,13 +324,13 @@
|
||||||
<p class="txt">
|
<p class="txt">
|
||||||
« Je n’aurais jamais imaginé recevoir un tel
|
« Je n’aurais jamais imaginé recevoir un tel
|
||||||
soutien » :
|
soutien » :
|
||||||
<span class="br-desktop"><br /></span>le témoignage
|
<span class="desktop-break"><br /></span>le témoignage
|
||||||
de Jean-François Martin
|
de Jean-François Martin
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li
|
<li
|
||||||
class="videos__li"
|
class="testimony-item"
|
||||||
data-video="https://player.vimeo.com/video/1146620554?badge=0&autopause=0&player_id=0&app_id=58479&autoplay=1"
|
data-video="https://player.vimeo.com/video/1146620554?badge=0&autopause=0&player_id=0&app_id=58479&autoplay=1"
|
||||||
>
|
>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
|
|
@ -351,13 +351,13 @@
|
||||||
<p class="txt">
|
<p class="txt">
|
||||||
« Le travail d'Index a permis de rétablir
|
« Le travail d'Index a permis de rétablir
|
||||||
la vérité » :
|
la vérité » :
|
||||||
<span class="br-desktop"><br /></span>le témoignage de
|
<span class="desktop-break"><br /></span>le témoignage de
|
||||||
Mahamadou Camara, frère de Gaye
|
Mahamadou Camara, frère de Gaye
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li
|
<li
|
||||||
class="videos__li"
|
class="testimony-item"
|
||||||
data-video="https://player.vimeo.com/video/1148007280?h=2e9c81e900&autoplay=1"
|
data-video="https://player.vimeo.com/video/1148007280?h=2e9c81e900&autoplay=1"
|
||||||
>
|
>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
|
|
@ -378,7 +378,7 @@
|
||||||
<p class="txt">
|
<p class="txt">
|
||||||
« Pour les familles endeuillées, Index est
|
« Pour les familles endeuillées, Index est
|
||||||
essentiel » :
|
essentiel » :
|
||||||
<span class="br-desktop"><br /></span>le témoignage de
|
<span class="desktop-break"><br /></span>le témoignage de
|
||||||
Christelle Vendeiro-Bico, belle-sœur de Luis Bico
|
Christelle Vendeiro-Bico, belle-sœur de Luis Bico
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -396,7 +396,7 @@
|
||||||
</section> -->
|
</section> -->
|
||||||
|
|
||||||
<section id="section__questions">
|
<section id="section__questions">
|
||||||
<h3 class="section__heading">Questions fréquentes</h3>
|
<h2 class="section-heading">Questions fréquentes</h2>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Les Soutiens d'Index, c'est quoi ?</summary>
|
<summary>Les Soutiens d'Index, c'est quoi ?</summary>
|
||||||
|
|
@ -618,49 +618,49 @@
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
data-donnation="one-off"
|
data-donation="one-off"
|
||||||
class="btn--donation__container"
|
class="donation-grid"
|
||||||
>
|
>
|
||||||
<button class="btn--donation">
|
<button class="donation-btn">
|
||||||
<p class="bold">200 €</p>
|
<p class="bold">200 €</p>
|
||||||
<p class="small">Soit 68 € après impôts</p>
|
<p class="small">Soit 68 € après impôts</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-1">
|
<button class="donation-btn donation-btn--wide">
|
||||||
<p class="bold">100 €</p>
|
<p class="bold">100 €</p>
|
||||||
<p class="small">Soit 34 € après impôts</p>
|
<p class="small">Soit 34 € après impôts</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-1">
|
<button class="donation-btn donation-btn--wide">
|
||||||
<p class="bold">50 €</p>
|
<p class="bold">50 €</p>
|
||||||
<p class="small">Soit 17 € après impôts</p>
|
<p class="small">Soit 17 € après impôts</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-1">
|
<button class="donation-btn donation-btn--wide">
|
||||||
<p class="bold">20 €</p>
|
<p class="bold">20 €</p>
|
||||||
<p class="small">Soit 6.80 € après impôts</p>
|
<p class="small">Soit 6.80 € après impôts</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-2">
|
<button class="donation-btn donation-btn--full">
|
||||||
<p class="bold">Choisissez votre montant</p>
|
<p class="bold">Choisissez votre montant</p>
|
||||||
<p class="small">Avec déduction fiscale de 66 %</p>
|
<p class="small">Avec déduction fiscale de 66 %</p>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-donnation="monthly" class="btn--donation__container is-selected">
|
<div data-donation="monthly" class="donation-grid is-selected">
|
||||||
<button class="btn--donation">
|
<button class="donation-btn">
|
||||||
<p class="bold">5€/mois</p>
|
<p class="bold">5€/mois</p>
|
||||||
<p class="small">Soit X€ après impôts</p>
|
<p class="small">Soit X€ après impôts</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-1">
|
<button class="donation-btn donation-btn--wide">
|
||||||
<p class="bold">10€/mois</p>
|
<p class="bold">10€/mois</p>
|
||||||
<p class="small">Soit X€ après impôts</p>
|
<p class="small">Soit X€ après impôts</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-1">
|
<button class="donation-btn donation-btn--wide">
|
||||||
<p class="bold">20€/mois</p>
|
<p class="bold">20€/mois</p>
|
||||||
<p class="small">Soit X€ après impôts</p>
|
<p class="small">Soit X€ après impôts</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-1">
|
<button class="donation-btn donation-btn--wide">
|
||||||
<p class="bold">50€/mois</p>
|
<p class="bold">50€/mois</p>
|
||||||
<p class="small">Soit X€ après impôts</p>
|
<p class="small">Soit X€ après impôts</p>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn--donation btn--donation__grow-2">
|
<button class="donation-btn donation-btn--full">
|
||||||
<p class="bold">Choisissez votre montant</p>
|
<p class="bold">Choisissez votre montant</p>
|
||||||
<p class="small">Avec déduction fiscale</p>
|
<p class="small">Avec déduction fiscale</p>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -668,60 +668,59 @@
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="section__comments">
|
<section id="section__comments">
|
||||||
<h2 class="section__heading">Commentaires de donateur·ices</h2>
|
<h2 class="section-heading">Commentaires de donateur·ices</h2>
|
||||||
|
|
||||||
<div class="swiper" id="comments-slider">
|
<div class="swiper" id="comments-slider">
|
||||||
<div class="swiper-wrapper">
|
<div class="swiper-wrapper">
|
||||||
<div class="swiper-slide comment">
|
<div class="swiper-slide comment">
|
||||||
<p class="comment__text">
|
<p class="comment-text">
|
||||||
Vous faites un travail admirable. Merci de faire avancer la
|
Vous faites un travail admirable. Merci de faire avancer la
|
||||||
Justice avec un grand J. Force à vous!
|
Justice avec un grand J. Force à vous!
|
||||||
</p>
|
</p>
|
||||||
<p class="comment__name">Olivier</p>
|
<p class="comment-name">Olivier</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="swiper-slide comment">
|
<div class="swiper-slide comment">
|
||||||
<p class="comment__text">
|
<p class="comment-text">
|
||||||
Merci du travail salutaire, précieux et extrêmement
|
Merci du travail salutaire, précieux et extrêmement
|
||||||
professionnel que vous réalisez.
|
professionnel que vous réalisez.
|
||||||
</p>
|
</p>
|
||||||
<p class="comment__name">Myriam</p>
|
<p class="comment-name">Myriam</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="swiper-slide comment">
|
<div class="swiper-slide comment">
|
||||||
<p class="comment__text">
|
<p class="comment-text">
|
||||||
Vous êtes vraiment d'utilité publique et les méthodes que vous
|
Vous êtes vraiment d'utilité publique et les méthodes que vous
|
||||||
utilisez méritent d'être popularisées.
|
utilisez méritent d'être popularisées.
|
||||||
</p>
|
</p>
|
||||||
<p class="comment__name">Frédéric</p>
|
<p class="comment-name">Frédéric</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="swiper-slide comment">
|
<div class="swiper-slide comment">
|
||||||
<p class="comment__text">
|
<p class="comment-text">
|
||||||
Merci de poursuivre cette quête inlassable pour révéler les
|
Merci de poursuivre cette quête inlassable pour révéler les
|
||||||
vérités que l'on nous tait.
|
vérités que l'on nous tait.
|
||||||
</p>
|
</p>
|
||||||
<p class="comment__name">Pauline</p>
|
<p class="comment-name">Pauline</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="swiper-slide comment">
|
<div class="swiper-slide comment">
|
||||||
<p class="comment__text">
|
<p class="comment-text">
|
||||||
Les enquêteurs d'Index font un travail essentiel pour la
|
Les enquêteurs d'Index font un travail essentiel pour la
|
||||||
démocratie et la justice. Par ce soutien citoyen, j'exprime
|
démocratie et la justice. Par ce soutien citoyen, j'exprime
|
||||||
toute ma reconnaissance pour leur engagement et leur rigueur.
|
toute ma reconnaissance pour leur engagement et leur rigueur.
|
||||||
</p>
|
</p>
|
||||||
<p class="comment__name">Anne</p>
|
<p class="comment-name">Anne</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="swiper-pagination comments-slider__dots"></div>
|
<div class="swiper-pagination comments-dots"></div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="btn--don__mobile">
|
<div id="donation-cta-mobile">
|
||||||
<button class="btn--don">
|
<a href="#section__donation" class="donation-cta" role="button">
|
||||||
<a href="#section__donation">
|
|
||||||
<span class="txt">Faire un don</span>
|
<span class="txt">Faire un don</span>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<svg
|
<svg
|
||||||
|
|
@ -738,21 +737,20 @@
|
||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<footer id="site-footer">
|
<footer id="site-footer">
|
||||||
<div class="site-footer__container">
|
<div class="footer-container">
|
||||||
<div class="footer__newsletter">
|
<div class="footer-newsletter">
|
||||||
<p>
|
<p>
|
||||||
Recevez les dernières enquêtes et actualités d’Index directement
|
Recevez les dernières enquêtes et actualités d’Index directement
|
||||||
dans votre boîte mail.
|
dans votre boîte mail.
|
||||||
</p>
|
</p>
|
||||||
<p>Inscrivez-vous à la newsletter</p>
|
<p>Inscrivez-vous à la newsletter</p>
|
||||||
|
|
||||||
<form class="form__newsletter">
|
<form class="newsletter-form">
|
||||||
<input
|
<input
|
||||||
type="email"
|
type="email"
|
||||||
name="email"
|
name="email"
|
||||||
|
|
@ -779,7 +777,7 @@
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<p class="p__small">
|
<p class="text-small">
|
||||||
En vous inscrivant, vous acceptez les
|
En vous inscrivant, vous acceptez les
|
||||||
<a target="_blank" href="https://www.index.ngo/mentions-legales/"
|
<a target="_blank" href="https://www.index.ngo/mentions-legales/"
|
||||||
>conditions d’utilisation</a
|
>conditions d’utilisation</a
|
||||||
|
|
@ -789,10 +787,10 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer__socials">
|
<div class="footer-socials">
|
||||||
<p>Suivez Index sur les réseaux sociaux</p>
|
<p>Suivez Index sur les réseaux sociaux</p>
|
||||||
|
|
||||||
<ul id="list-socials">
|
<ul id="socials-list">
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
href="https://www.youtube.com/index-ngo"
|
href="https://www.youtube.com/index-ngo"
|
||||||
|
|
@ -973,8 +971,8 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer__mentions">
|
<div class="footer-mentions">
|
||||||
<p class="p__small">
|
<p class="text-small">
|
||||||
© 2025 Index Investigation |
|
© 2025 Index Investigation |
|
||||||
<a target="_blank" href="https://www.index.ngo/mentions-legales/"
|
<a target="_blank" href="https://www.index.ngo/mentions-legales/"
|
||||||
>Mentions légales</a
|
>Mentions légales</a
|
||||||
|
|
@ -993,7 +991,7 @@
|
||||||
disableOnInteraction: false, // continue après un swipe
|
disableOnInteraction: false, // continue après un swipe
|
||||||
},
|
},
|
||||||
pagination: {
|
pagination: {
|
||||||
el: '.comments-slider__dots',
|
el: '.comments-dots',
|
||||||
clickable: true,
|
clickable: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
||||||
270
index.php
Normal file
270
index.php
Normal file
|
|
@ -0,0 +1,270 @@
|
||||||
|
<?php
|
||||||
|
require_once __DIR__ . '/includes/cache.php';
|
||||||
|
$data = getSoutenirContent('fr');
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title><?= htmlspecialchars($data['metaTitle'] ?? 'Soutenir Index') ?></title>
|
||||||
|
<meta name="description" content="<?= htmlspecialchars($data['metaDescription'] ?? '') ?>" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@12/swiper-bundle.min.css" />
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/swiper@12/swiper-bundle.min.js"></script>
|
||||||
|
|
||||||
|
<link rel="icon" type="image/png" href="assets/favicon.png" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="assets/fonts/stylesheet.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="assets/css/style.css" />
|
||||||
|
<script src="assets/js/onload.js"></script>
|
||||||
|
<script src="assets/js/temp/includeHtml.js"></script>
|
||||||
|
<script src="assets/js/donorbox-gauge.js"></script>
|
||||||
|
<script src="assets/js/donation.js"></script>
|
||||||
|
<script src="assets/js/newsletter-brevo.js"></script>
|
||||||
|
<meta name="robots" content="index, nofollow" />
|
||||||
|
</head>
|
||||||
|
<body data-template="support">
|
||||||
|
<header id="site-header">
|
||||||
|
<div class="header-left"></div>
|
||||||
|
<div class="header-center">
|
||||||
|
<h1 class="site-title">
|
||||||
|
<a href="https://www.index.ngo/" aria-label="Retour à l'accueil" title="aller au site d'Index">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 162 29" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<title>Index.ngo</title>
|
||||||
|
<g transform="matrix(1.04516,0,0,0.659091,57.4839,-6.59091)">
|
||||||
|
<rect x="-55" y="10" width="155" height="44" style="fill:none"/>
|
||||||
|
<clipPath id="_clip1"><rect x="-55" y="10" width="155" height="44"/></clipPath>
|
||||||
|
<g clip-path="url(#_clip1)">
|
||||||
|
<g transform="matrix(0.95679,0,0,1.51724,-55,10)">
|
||||||
|
<path d="M162,29L148.198,29L141.174,20.767L134.15,29L91.184,29L91.184,0.004L120.653,0.004L120.653,7.351L102.637,7.351L102.637,10.867L120.137,10.867L120.137,18.13L102.637,18.13L102.637,21.606L120.926,21.606L120.926,28.951L134.273,14.414L120.807,0L134.56,0L141.388,7.767L147.76,0L161.201,0L148.236,13.79L161.996,28.997L162,29ZM68.58,29L54.224,29L54.224,0.004L68.637,0.004C74.672,0.004 78.31,0.004 82.046,2.045C86.259,4.379 88.674,8.889 88.674,14.417C88.674,19.406 86.862,23.405 83.427,25.975C79.463,29 75.345,29 68.58,29ZM49.819,29L38.775,29L31.499,19.815C29.746,17.735 28.088,15.545 27.307,14.495C27.387,15.813 27.524,17.238 27.524,20.499L27.524,29L15.965,29L15.965,0.004L27.009,0.004L33.798,8.349C36.223,11.121 37.709,12.993 38.393,13.881C38.347,12.615 38.26,9.911 38.26,6.84L38.26,0.004L49.819,0.004L49.819,29ZM11.559,29L0,29L0,0.004L11.559,0.004L11.559,29ZM65.784,21.818L67.904,21.818C70.918,21.818 73.067,21.818 74.728,20.531C76.074,19.491 76.845,17.308 76.845,14.541C76.845,11.526 76.084,9.541 74.525,8.476C72.895,7.411 71.461,7.224 67.578,7.224L65.784,7.224L65.784,21.818Z" style="fill-rule:nonzero"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div class="header-right">
|
||||||
|
<ul id="toggle-lang">
|
||||||
|
<li class="is-selected"><a href="./">Fr</a></li>
|
||||||
|
<li><a href="./en">En</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<div class="col-left">
|
||||||
|
<section id="section__hero">
|
||||||
|
<p class="hero-heading"><?= $data['heroHeading'] ?? '' ?></p>
|
||||||
|
|
||||||
|
<div class="gauge-container">
|
||||||
|
<div id="gauge" style="--pourcent: 0%"></div>
|
||||||
|
<div class="gauge-info" id="gauge-info--supporters">
|
||||||
|
<p class="property">Soutiens réguliers</p>
|
||||||
|
<p class="value">0</p>
|
||||||
|
</div>
|
||||||
|
<div class="gauge-info" id="gauge-info--goal">
|
||||||
|
<p class="property">Objectif</p>
|
||||||
|
<p class="value">500</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="hero-heading">
|
||||||
|
<?= htmlspecialchars($data['heroObjectiveLabel'] ?? '') ?><br />
|
||||||
|
<strong><?= htmlspecialchars($data['heroObjectiveDate'] ?? '') ?></strong>
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="section__baseline">
|
||||||
|
<p class="subheading"><?= $data['subheading'] ?? '' ?></p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="section__video">
|
||||||
|
<h2 class="section-heading"><?= $data['videoSectionHeading'] ?? '' ?></h2>
|
||||||
|
<div class="video-container">
|
||||||
|
<iframe
|
||||||
|
title="Vidéo de campagne"
|
||||||
|
src="<?= htmlspecialchars($data['mainVideoUrl'] ?? '') ?>"
|
||||||
|
style="aspect-ratio: 9/16; width: 100%; border: 0"
|
||||||
|
allow="autoplay; fullscreen; picture-in-picture"
|
||||||
|
allowfullscreen
|
||||||
|
></iframe>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php if (!empty($data['testimonies'])): ?>
|
||||||
|
<input type="checkbox" id="testimonies-toggle" />
|
||||||
|
<label class="btn-expand" for="testimonies-toggle">
|
||||||
|
<span class="txt"><?= htmlspecialchars($data['testimoniesButtonLabel'] ?? 'Voir les témoignages') ?></span>
|
||||||
|
<span class="icon"><svg width="34px" height="34px" viewBox="0 0 16 13" version="1.1" xmlns="http://www.w3.org/2000/svg" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<rect x="0" y="0" width="15.43" height="12.636" style="fill:none"/>
|
||||||
|
<path d="M0,7.29L0,5.373L9.801,5.373C10.67,5.373 11.757,5.4 12.387,5.427C11.952,5.022 11.366,4.455 10.888,3.969L8.432,1.404L9.366,0L15.43,6.318L9.366,12.636L8.432,11.232L10.888,8.667C11.366,8.181 11.952,7.614 12.387,7.236C11.757,7.263 10.67,7.29 9.801,7.29L0,7.29Z" style="fill-rule:nonzero"/>
|
||||||
|
</svg></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<ul class="testimonies-list">
|
||||||
|
<?php foreach ($data['testimonies'] as $testimony): ?>
|
||||||
|
<li class="testimony-item" data-video="<?= htmlspecialchars($testimony['videoUrl']) ?>">
|
||||||
|
<span class="icon">
|
||||||
|
<svg height="80px" width="80px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
<p class="txt"><?= $testimony['description'] ?></p>
|
||||||
|
</li>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</ul>
|
||||||
|
<?php endif; ?>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="section__questions">
|
||||||
|
<h2 class="section-heading"><?= htmlspecialchars($data['faqHeading'] ?? 'Questions fréquentes') ?></h2>
|
||||||
|
|
||||||
|
<?php foreach (($data['questions'] ?? []) as $q): ?>
|
||||||
|
<details>
|
||||||
|
<summary><?= htmlspecialchars($q['question']) ?></summary>
|
||||||
|
<?= $q['answer'] ?>
|
||||||
|
</details>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-right">
|
||||||
|
<section id="section__donation">
|
||||||
|
<nav class="nav--tabs">
|
||||||
|
<button class="nav--tabs__btn is-selected">Je donne tous les mois</button>
|
||||||
|
<button class="nav--tabs__btn">Je donne une fois</button>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div data-donation="one-off" class="donation-grid">
|
||||||
|
<button class="donation-btn">
|
||||||
|
<p class="bold">200 €</p>
|
||||||
|
<p class="small">Soit 68 € après impôts</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--wide">
|
||||||
|
<p class="bold">100 €</p>
|
||||||
|
<p class="small">Soit 34 € après impôts</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--wide">
|
||||||
|
<p class="bold">50 €</p>
|
||||||
|
<p class="small">Soit 17 € après impôts</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--wide">
|
||||||
|
<p class="bold">20 €</p>
|
||||||
|
<p class="small">Soit 6.80 € après impôts</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--full">
|
||||||
|
<p class="bold">Choisissez votre montant</p>
|
||||||
|
<p class="small">Avec déduction fiscale de 66 %</p>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-donation="monthly" class="donation-grid is-selected">
|
||||||
|
<button class="donation-btn">
|
||||||
|
<p class="bold">5€/mois</p>
|
||||||
|
<p class="small">Soit X€ après impôts</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--wide">
|
||||||
|
<p class="bold">10€/mois</p>
|
||||||
|
<p class="small">Soit X€ après impôts</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--wide">
|
||||||
|
<p class="bold">20€/mois</p>
|
||||||
|
<p class="small">Soit X€ après impôts</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--wide">
|
||||||
|
<p class="bold">50€/mois</p>
|
||||||
|
<p class="small">Soit X€ après impôts</p>
|
||||||
|
</button>
|
||||||
|
<button class="donation-btn donation-btn--full">
|
||||||
|
<p class="bold">Choisissez votre montant</p>
|
||||||
|
<p class="small">Avec déduction fiscale</p>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="section__comments">
|
||||||
|
<h2 class="section-heading"><?= htmlspecialchars($data['commentsHeading'] ?? 'Commentaires de donateur·ices') ?></h2>
|
||||||
|
|
||||||
|
<div class="swiper" id="comments-slider">
|
||||||
|
<div class="swiper-wrapper">
|
||||||
|
<?php foreach (($data['comments'] ?? []) as $comment): ?>
|
||||||
|
<div class="swiper-slide">
|
||||||
|
<p class="comment-text"><?= htmlspecialchars($comment['text']) ?></p>
|
||||||
|
<p class="comment-name"><?= htmlspecialchars($comment['name']) ?></p>
|
||||||
|
</div>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
<div class="swiper-pagination comments-dots"></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="donation-cta-mobile">
|
||||||
|
<a href="#section__donation" class="donation-cta" role="button">
|
||||||
|
<span class="txt">Faire un don</span>
|
||||||
|
<span class="icon">
|
||||||
|
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m14.523 18.787s4.501-4.505 6.255-6.26c.146-.146.219-.338.219-.53s-.073-.383-.219-.53c-1.753-1.754-6.255-6.258-6.255-6.258-.144-.145-.334-.217-.524-.217-.193 0-.385.074-.532.221-.293.292-.295.766-.004 1.056l4.978 4.978h-14.692c-.414 0-.75.336-.75.75s.336.75.75.75h14.692l-4.979 4.979c-.289.289-.286.762.006 1.054.148.148.341.222.533.222.19 0 .378-.072.522-.215z" fill-rule="nonzero"/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="site-footer">
|
||||||
|
<div class="footer-container">
|
||||||
|
<div class="footer-newsletter">
|
||||||
|
<p><?= $data['footerNewsletterText'] ?? '' ?></p>
|
||||||
|
|
||||||
|
<form class="newsletter-form">
|
||||||
|
<input type="email" name="email" placeholder="Votre adresse e-mail" required />
|
||||||
|
<button class="btn--bold" type="submit" aria-label="s'inscrire">
|
||||||
|
<span class="txt"><?= htmlspecialchars($data['footerNewsletterCta'] ?? "S'inscrire") ?></span>
|
||||||
|
<span class="icon">
|
||||||
|
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m14.523 18.787s4.501-4.505 6.255-6.26c.146-.146.219-.338.219-.53s-.073-.383-.219-.53c-1.753-1.754-6.255-6.258-6.255-6.258-.144-.145-.334-.217-.524-.217-.193 0-.385.074-.532.221-.293.292-.295.766-.004 1.056l4.978 4.978h-14.692c-.414 0-.75.336-.75.75s.336.75.75.75h14.692l-4.979 4.979c-.289.289-.286.762.006 1.054.148.148.341.222.533.222.19 0 .378-.072.522-.215z" fill-rule="nonzero"/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<p class="text-small"><?= $data['footerNewsletterDisclaimer'] ?? '' ?></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer-socials">
|
||||||
|
<p><?= htmlspecialchars($data['footerSocialsHeading'] ?? '') ?></p>
|
||||||
|
|
||||||
|
<ul id="socials-list">
|
||||||
|
<?php foreach (($data['footerSocials'] ?? []) as $social): ?>
|
||||||
|
<li>
|
||||||
|
<a href="<?= htmlspecialchars($social['url']) ?>" target="_blank" rel="noopener noreferrer">
|
||||||
|
<span class="icon"><?= $social['svgIcon'] ?></span>
|
||||||
|
<span class="text"><?= htmlspecialchars($social['name']) ?></span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer-mentions">
|
||||||
|
<p class="text-small"><?= $data['footerMentions'] ?? '' ?></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const swiper = new Swiper('#comments-slider', {
|
||||||
|
slidesPerView: 1,
|
||||||
|
loop: true,
|
||||||
|
autoplay: {
|
||||||
|
delay: 4000,
|
||||||
|
disableOnInteraction: false,
|
||||||
|
},
|
||||||
|
pagination: {
|
||||||
|
el: '.comments-dots',
|
||||||
|
clickable: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -78,27 +78,27 @@
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main>
|
<main>
|
||||||
<p class="p__baseline-big">
|
<p class="hero-heading">
|
||||||
Un grand merci !
|
Un grand merci !
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="p__baseline">
|
<p class="subheading">
|
||||||
Votre soutien nous permet de continuer à enquêter en toute indépendance.</p>
|
Votre soutien nous permet de continuer à enquêter en toute indépendance.</p>
|
||||||
|
|
||||||
<p class="p__baseline"> Nous vous remercions sincèrement pour votre solidarité, qui est essentielle à la poursuite de notre mission.</p>
|
<p class="subheading"> Nous vous remercions sincèrement pour votre solidarité, qui est essentielle à la poursuite de notre mission.</p>
|
||||||
|
|
||||||
<p class="p__baseline"><a href="https://www.index.ngo/" class="link-don">Retour à la page d’accueil →</a></p>
|
<p class="subheading"><a href="https://www.index.ngo/" class="link-don">Retour à la page d’accueil →</a></p>
|
||||||
</p>
|
</p>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<footer id="site-footer">
|
<footer id="site-footer">
|
||||||
<div class="site-footer__container">
|
<div class="footer-container">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="footer__mentions">
|
<div class="footer-mentions">
|
||||||
<p class="p__small">
|
<p class="text-small">
|
||||||
© 2025 Index Investigation | <a target="_blank" href="https://www.index.ngo/mentions-legales/">Mentions légales</a>
|
© 2025 Index Investigation | <a target="_blank" href="https://www.index.ngo/mentions-legales/">Mentions légales</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
63
merci/index.php
Normal file
63
merci/index.php
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
<?php
|
||||||
|
require_once __DIR__ . '/../includes/cache.php';
|
||||||
|
$data = getSoutenirContent('fr');
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Index.ngo</title>
|
||||||
|
<link rel="icon" type="image/png" href="/assets/favicon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@12/swiper-bundle.min.css" />
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/swiper@12/swiper-bundle.min.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/assets/fonts/stylesheet.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/assets/css/style.css" />
|
||||||
|
<script src="/assets/js/onload.js"></script>
|
||||||
|
<script src="/assets/js/temp/includeHtml.js"></script>
|
||||||
|
<script src="/assets/js/newsletter-brevo.js"></script>
|
||||||
|
</head>
|
||||||
|
<body data-template="thanks">
|
||||||
|
|
||||||
|
<header id="site-header">
|
||||||
|
<div class="header-left"></div>
|
||||||
|
<div class="header-center">
|
||||||
|
<h1 class="site-title">
|
||||||
|
<a href="/" aria-label="Retour à l'accueil">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 162 29" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<title>Index.ngo</title>
|
||||||
|
<g transform="matrix(1.04516,0,0,0.659091,57.4839,-6.59091)">
|
||||||
|
<rect x="-55" y="10" width="155" height="44" style="fill:none"/>
|
||||||
|
<clipPath id="_clip1"><rect x="-55" y="10" width="155" height="44"/></clipPath>
|
||||||
|
<g clip-path="url(#_clip1)">
|
||||||
|
<g transform="matrix(0.95679,0,0,1.51724,-55,10)">
|
||||||
|
<path d="M162,29L148.198,29L141.174,20.767L134.15,29L91.184,29L91.184,0.004L120.653,0.004L120.653,7.351L102.637,7.351L102.637,10.867L120.137,10.867L120.137,18.13L102.637,18.13L102.637,21.606L120.926,21.606L120.926,28.951L134.273,14.414L120.807,0L134.56,0L141.388,7.767L147.76,0L161.201,0L148.236,13.79L161.996,28.997L162,29ZM68.58,29L54.224,29L54.224,0.004L68.637,0.004C74.672,0.004 78.31,0.004 82.046,2.045C86.259,4.379 88.674,8.889 88.674,14.417C88.674,19.406 86.862,23.405 83.427,25.975C79.463,29 75.345,29 68.58,29ZM49.819,29L38.775,29L31.499,19.815C29.746,17.735 28.088,15.545 27.307,14.495C27.387,15.813 27.524,17.238 27.524,20.499L27.524,29L15.965,29L15.965,0.004L27.009,0.004L33.798,8.349C36.223,11.121 37.709,12.993 38.393,13.881C38.347,12.615 38.26,9.911 38.26,6.84L38.26,0.004L49.819,0.004L49.819,29ZM11.559,29L0,29L0,0.004L11.559,0.004L11.559,29ZM65.784,21.818L67.904,21.818C70.918,21.818 73.067,21.818 74.728,20.531C76.074,19.491 76.845,17.308 76.845,14.541C76.845,11.526 76.084,9.541 74.525,8.476C72.895,7.411 71.461,7.224 67.578,7.224L65.784,7.224L65.784,21.818Z" style="fill-rule:nonzero"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div class="header-right"></div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<p class="hero-heading"><?= htmlspecialchars($data['thanksHeading'] ?? 'Un grand merci !') ?></p>
|
||||||
|
|
||||||
|
<?= $data['thanksText'] ?? '' ?>
|
||||||
|
|
||||||
|
<p class="subheading"><a href="<?= htmlspecialchars($data['thanksLinkUrl'] ?? 'https://www.index.ngo/') ?>" class="link-don"><?= htmlspecialchars($data['thanksLinkText'] ?? "Retour à la page d'accueil →") ?></a></p>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="site-footer">
|
||||||
|
<div class="footer-container">
|
||||||
|
<div class="footer-mentions">
|
||||||
|
<p class="text-small"><?= $data['thanksMentions'] ?? '' ?></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -78,27 +78,27 @@
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main>
|
<main>
|
||||||
<p class="p__baseline-big">
|
<p class="hero-heading">
|
||||||
Thank you!
|
Thank you!
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="p__baseline">
|
<p class="subheading">
|
||||||
Your support allows us to continue investigating with complete independence.</p>
|
Your support allows us to continue investigating with complete independence.</p>
|
||||||
|
|
||||||
<p class="p__baseline">We sincerely thank you for your solidarity, which is essential to the pursuit of our mission.</p>
|
<p class="subheading">We sincerely thank you for your solidarity, which is essential to the pursuit of our mission.</p>
|
||||||
|
|
||||||
<p class="p__baseline"><a href="https://www.index.ngo/en/">Back to home page →</a></p>
|
<p class="subheading"><a href="https://www.index.ngo/en/">Back to home page →</a></p>
|
||||||
</p>
|
</p>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<footer id="site-footer">
|
<footer id="site-footer">
|
||||||
<div class="site-footer__container">
|
<div class="footer-container">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="footer__mentions">
|
<div class="footer-mentions">
|
||||||
<p class="p__small">
|
<p class="text-small">
|
||||||
© 2025 Index Investigation | <a target="_blank" href="https://www.index.ngo/mentions-legales/">Mentions légales</a>
|
© 2025 Index Investigation | <a target="_blank" href="https://www.index.ngo/mentions-legales/">Mentions légales</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
63
thanks/index.php
Normal file
63
thanks/index.php
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
<?php
|
||||||
|
require_once __DIR__ . '/../includes/cache.php';
|
||||||
|
$data = getSoutenirContent('en');
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Index.ngo</title>
|
||||||
|
<link rel="icon" type="image/png" href="/assets/favicon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@12/swiper-bundle.min.css" />
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/swiper@12/swiper-bundle.min.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/assets/fonts/stylesheet.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/assets/css/style.css" />
|
||||||
|
<script src="/assets/js/onload.js"></script>
|
||||||
|
<script src="/assets/js/temp/includeHtml.js"></script>
|
||||||
|
<script src="/assets/js/newsletter-brevo.js"></script>
|
||||||
|
</head>
|
||||||
|
<body data-template="thanks">
|
||||||
|
|
||||||
|
<header id="site-header">
|
||||||
|
<div class="header-left"></div>
|
||||||
|
<div class="header-center">
|
||||||
|
<h1 class="site-title">
|
||||||
|
<a href="/" aria-label="Back to home">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 162 29" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<title>Index.ngo</title>
|
||||||
|
<g transform="matrix(1.04516,0,0,0.659091,57.4839,-6.59091)">
|
||||||
|
<rect x="-55" y="10" width="155" height="44" style="fill:none"/>
|
||||||
|
<clipPath id="_clip1"><rect x="-55" y="10" width="155" height="44"/></clipPath>
|
||||||
|
<g clip-path="url(#_clip1)">
|
||||||
|
<g transform="matrix(0.95679,0,0,1.51724,-55,10)">
|
||||||
|
<path d="M162,29L148.198,29L141.174,20.767L134.15,29L91.184,29L91.184,0.004L120.653,0.004L120.653,7.351L102.637,7.351L102.637,10.867L120.137,10.867L120.137,18.13L102.637,18.13L102.637,21.606L120.926,21.606L120.926,28.951L134.273,14.414L120.807,0L134.56,0L141.388,7.767L147.76,0L161.201,0L148.236,13.79L161.996,28.997L162,29ZM68.58,29L54.224,29L54.224,0.004L68.637,0.004C74.672,0.004 78.31,0.004 82.046,2.045C86.259,4.379 88.674,8.889 88.674,14.417C88.674,19.406 86.862,23.405 83.427,25.975C79.463,29 75.345,29 68.58,29ZM49.819,29L38.775,29L31.499,19.815C29.746,17.735 28.088,15.545 27.307,14.495C27.387,15.813 27.524,17.238 27.524,20.499L27.524,29L15.965,29L15.965,0.004L27.009,0.004L33.798,8.349C36.223,11.121 37.709,12.993 38.393,13.881C38.347,12.615 38.26,9.911 38.26,6.84L38.26,0.004L49.819,0.004L49.819,29ZM11.559,29L0,29L0,0.004L11.559,0.004L11.559,29ZM65.784,21.818L67.904,21.818C70.918,21.818 73.067,21.818 74.728,20.531C76.074,19.491 76.845,17.308 76.845,14.541C76.845,11.526 76.084,9.541 74.525,8.476C72.895,7.411 71.461,7.224 67.578,7.224L65.784,7.224L65.784,21.818Z" style="fill-rule:nonzero"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div class="header-right"></div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<p class="hero-heading"><?= htmlspecialchars($data['thanksHeading'] ?? 'Thank you!') ?></p>
|
||||||
|
|
||||||
|
<?= $data['thanksText'] ?? '' ?>
|
||||||
|
|
||||||
|
<p class="subheading"><a href="<?= htmlspecialchars($data['thanksLinkUrl'] ?? 'https://www.index.ngo/en/') ?>"><?= htmlspecialchars($data['thanksLinkText'] ?? 'Back to home page →') ?></a></p>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer id="site-footer">
|
||||||
|
<div class="footer-container">
|
||||||
|
<div class="footer-mentions">
|
||||||
|
<p class="text-small"><?= $data['thanksMentions'] ?? '' ?></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue