Commit 918d4e21 authored by Matthieu FAURE's avatar Matthieu FAURE

Merge branch '2-creation-du-theme-enfant' into 'master'

Resolve "Création du thème enfant"

Closes #2

See merge request !1
parents 3403f184 5e704d10
//liste des blocs qui peuvent être affichés / cachés
var blocks = ["link", "paraSecondSelection", "cotisation", "informationsCollectivite", "formulaireEPCIMutualisant", "boutonEnvoyer"];
var maxCotisation = 12000;
function displayMask(display) {
//fonction qui affiche / cache les formulaires / informations en fonction des données entrées dans les formulaires
for (var h = 0; h < blocks.length; h++) {
if (isWordIn(blocks[h], display)) {
document.getElementById(blocks[h]).style.display = "block";
} else {
document.getElementById(blocks[h]).style.display = "none";
}
}
}
function displayMaskOptions(display) {
//sert à afficher / cacher les options du 2e select menu
var toutesLesOptions = document.getElementsByName("optionSelect2");
for (var j = 0; j < toutesLesOptions.length; j++) {
//boucle for qui va parcourir la liste des classes des options disponibles
if (display === toutesLesOptions[j].getAttribute("class")) {
//si l'element en cours est celui de la classe recherchée
console.log(display + "===" + toutesLesOptions[j].getAttribute("class"));
if (toutesLesOptions[j].getAttribute("value") === "none") {
toutesLesOptions[j].selected = true;
}
toutesLesOptions[j].hidden = false;
} else {
console.log(display + "=/=" + toutesLesOptions[j].getAttribute("class"));
toutesLesOptions[j].hidden = true;
}
}
}
function firstAction() {
//fonction effectuée lorsque le premier select est validé
//on recup ce qui a été cliqué
var e = document.getElementById("firstSelect");
var strUser = e.options[e.selectedIndex].value;
//on reagit en fonction
//si il a cliqué sur individu, redirigé vers helloasso
if (strUser === "Individu") {
linkRedirection("https://helloasso.com", "Redirection vers HelloAsso");
displayMask(["link"]);
}
//si il a cliqué sur association
else if (strUser === "Association") {
setCotisation("Association");
displayMask(["cotisation", "informationsCollectivite", "boutonEnvoyer"]);
document.getElementById("secondSelection").required = false;
setEPCIRequired(false);
} else if (strUser === "EPCIMutualisant") {
//formulaire contenant la formule spécifique à EPCI mutualisant
displayMask(["formulaireEPCIMutualisant"]);
setEPCIRequired(true);
} else if (strUser === "none") {
//premier choix avec des tirets
displayMask([""]);
}
//si il a cliqué sur autre chose : on cherche à connaitre la taille de la collectivité, on affiche le 2e select
else {
displayMaskOptions(strUser);
document.getElementById("secondSelection").required = true;
displayMask(["paraSecondSelection"]);
setEPCIRequired(false);
}
}
function isWordIn(word, list) {
//le word est il contenu dans list ?
for (a = 0; a < list.length; a++) {
if (word === list[a]) {
return true
}
}
return false
}
function linkRedirection(link, title) {
//définit le lien de redirection et son titre
document.getElementById("linkRedirection").setAttribute("href", link);
document.getElementById("linkRedirection").setAttribute("title", title);
}
function prepareDocument() {
//prépare la page html en ajoutant les event listener
displayMask([""]);
document.getElementById("firstSelect").addEventListener("change", firstAction, false);
document.getElementById("boutonValiderNombresEPCI").addEventListener("click", traitementEPCIMutualisant, false);
document.getElementById("secondSelection").addEventListener("change", secondAction, false);
setCotisation("");
//si le formulaire a échoué, il y a probablement des zones à afficher en fonction de ce qui a été rempli
var choiceType = document.getElementById("ancienSelectType").getAttribute("value");
if (choiceType.length > 0) {
var listOfFirstOptions = document.getElementsByClassName("optionFirstSelect");
for (var a = 0; a < listOfFirstOptions.length; a++) {
if (listOfFirstOptions[a].getAttribute("value") === choiceType) {
listOfFirstOptions[a].selected = true;
break;
}
}
firstAction();
if (choiceType === "EPCIMutualisant") {
traitementEPCIMutualisant();
} else {
var choiceSize = document.getElementById("ancienSelectSize").getAttribute("value");
if (choiceSize.length > 0 && choiceSize !== "none") {
var listOfSizeOptions = document.getElementsByClassName(choiceType);
for (var b = 0; b < listOfSizeOptions.length; b++) {
if (listOfSizeOptions[b].getAttribute("value") === choiceSize) {
listOfSizeOptions[b].selected = true;
break;
}
}
secondAction();
}
}
}
var choicePeriod = document.getElementById("ancienSelectPeriod").getAttribute("value");
var listOfPeriodOptions = document.getElementsByClassName("optionPeriod");
for (var c = 0; c < listOfPeriodOptions.length; c++) {
if (listOfPeriodOptions[c].getAttribute("value") === choicePeriod) {
listOfPeriodOptions[c].selected = true;
}
}
}
function secondAction() {
//fonction exécutée lorsque le 2e select est cliqué
var e = document.getElementById("secondSelection");
if (e.options[e.selectedIndex].value !== "none") {
//s'il a sélectionné autre chose que les tirets
var selectedTranch = e.options[e.selectedIndex].getAttribute("id");
setCotisation(selectedTranch);
displayMask(["paraSecondSelection", "cotisation", "informationsCollectivite", "boutonEnvoyer"]);
} else {
displayMask(["paraSecondSelection"]);
}
}
function setCotisation(id, x = 0) {
//définit la cotisation à afficher, l'option x sert uniquement pour le tarif EPCI mutualisant qui varie.
var paragraphCotList = document.getElementsByClassName("PCOT");
var research = "PCOT-" + id;
for (var b = 0; b < paragraphCotList.length; b++) {
if (paragraphCotList[b].getAttribute("id") === research) {
console.log(paragraphCotList[b].getAttribute("id") + "===" + research);
paragraphCotList[b].style.display = "block";
if (x > 0) {
document.getElementById("montantCotisation").innerHTML = x;
}
} else {
paragraphCotList[b].style.display = "none";
console.log(paragraphCotList[b].getAttribute("id") + "=/=" + research);
}
}
}
function setEPCIRequired(boolean) {
//le formulaire EPCI est il requis ? cela varie selon les choix faits par l'utilisateur
document.getElementById("nombreHabitantsEPCI").required = boolean;
document.getElementById("nombreCommunesMembresEPCI").required = boolean;
}
function traitementEPCIMutualisant() {
//lorsque l'utilisateur valide les 2 nombres entrés pour l'EPCI, les traitements nécessaires sont ici
var nombreHabitants = document.getElementById("nombreHabitantsEPCI").value;
var nombreCommunesMembres = document.getElementById("nombreCommunesMembresEPCI").value;
if (nombreHabitants !== "") {
if (nombreCommunesMembres !== "") {
var resultat = (0.035 * nombreHabitants) + (15 * nombreCommunesMembres) + 1200;
resultat = Math.round(resultat);
//cette fonction arrondit le nombre en fonction du nombre après la virgule.
//exemple :
// Math.round(20,4999) donnera 20
// Math.round(20,5) donnera 21
if (resultat > maxCotisation) {
//valeur fixée en haut du document
resultat = maxCotisation;
}
setCotisation("EPCIMutualisant", resultat);
displayMask(["cotisation", "informationsCollectivite", "formulaireEPCIMutualisant", "boutonEnvoyer"]);
}
}
}
This diff is collapsed.
<?php
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
function my_theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
?>
nature;taille;cotisation
Ville;< 1 000;100
Ville;1 000 à 2 500;250
Ville;2 501 à 5 000;500
Ville;5 001 à 10 000;900
Ville;10 001 à 20 000;1500
Ville;20 001 à 30 000;2500
Ville;30 001 à 50 000;3000
Ville;50 001 à 80 000;3500
Ville;80 001 à 100 000;4000
Ville;+ de 100 000;4500
Ville;à arrondissement;6000
Département;- de 1 000 000;4000
Département;1 000 000 à 2 000 000;4500
Département;+ de 2 000 000;6000
Région;- de 2 500 000;4500
Région;+ de 2 500 000;6000
EPCI à fiscalité propre;- de 10 000;1750
EPCI à fiscalité propre;10 001 à 50 000;2500
EPCI à fiscalité propre;50 001 à 100 000;3000
EPCI à fiscalité propre;100 001 à 250 000;3500
EPCI à fiscalité propre;250 001 à 500 000;4000
EPCI à fiscalité propre;500 001 à 1 000 000;4500
EPCI à fiscalité propre;+ de 1 000 000;6000
Etablissement Public;- de 25;250
Etablissement Public;25 à 50;500
Etablissement Public;51 à 100;1250
Etablissement Public;101 à 500;1750
Etablissement Public;+ de 500;2500
<?php
//ce fichier contient les fonctions nécessaires pour générer 12 <option> </option>
//ces options sont utilisées pour sélectionner une période d'un an, 12 choix sont disponibles
function actualMonthYear($plus = 0)
{
//retourne un string : le numéro du mois actuel auquel on ajoute $plus et les années à rajouter en fonction
//sous la forme MM/01/YY
$month = date("m");
$year = date("y");
$month = $month + $plus;
while ($month > 12) {
$month -= 12;
$year += 1;
}
$month = addZero($month);
$year = addZero($year);
return $month . "/01/" . $year;;
}
function addZero($number)
{
//ajoute un zéro à $number s'il le faut
//exemple : addZero("1") retourne "01"
if (strlen($number) == 1) {
return "0" . $number;
}
return $number;
}
function generateDates()
{
//cette fonction génère les options pour la question "période d'adhésion"
for ($i = 1; $i < 13; $i++) {
$premiereDate = new DateTime(actualMonthYear($i));
$annee = new DateInterval("P1Y");
$jour = new DateInterval("P1D");
$message = "du " . $premiereDate->format("d/m/y") . " au ";
$premiereDate->add($annee);
$premiereDate->sub($jour);
$message = $message . $premiereDate->format("d/m/y");
$message = "<option class='optionPeriod' value='" . $message . "'>" . $message . "</option>";
echo $message;
}
}
?>
\ No newline at end of file
/*
Theme Name: Thème Adullact.org
Theme URI: https://gitlab.adullact.net/adullact/theme-wordpress-adullact-org
Description: Thème Adullact.org (fils de TwentySeventeen)
Author: Adullact
Author URI: https://adullact.org
Template: twentyseventeen
Version: 0.8
*/
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment