Commit ce7848f3 authored by N. Peraldi's avatar N. Peraldi
Browse files

Merge branch 'master' into 17-integration-html-page-d-accueil

# Conflicts:
#	functions.php
#	style.css
parents 7d2aef47 52dabf39
......@@ -141,7 +141,7 @@ $max_member_numero = ($page * $maxMembersPerPage);
</ul>
</div>
</div>
<div class='adullact-members-list'>
<?php
$args = array(
"post_type" => "page",
......@@ -153,9 +153,11 @@ $max_member_numero = ($page * $maxMembersPerPage);
$number_of_total_posts = count($mypages); //pour les pages
if (($number_of_total_posts == 0) || ($number_of_total_posts < $min_member_numero)) {
echo "<h3>Aucun résultat.</h3>";
echo "<h3 class='adullact-blue'>Aucun résultat.</h3>";
$pagination = false;
} else {
echo "<h3 class='adullact-blue adullact-no-padding'>" . $number_of_total_posts . " résultats</h3>";
echo "<div class='adullact-members-list'>";
$counter = 1;
foreach ($mypages as $post) : setup_postdata($post);
if ($counter >= $min_member_numero) {
......@@ -181,7 +183,9 @@ $max_member_numero = ($page * $maxMembersPerPage);
}
$counter += 1;
endforeach;
echo "</div></div>";
?>
</div>
<?php
wp_reset_postdata();
}
......
<?php
/**
* Adresse mail cible de l'Adullact.
* Lorsqu'on envoie un mail informatif à l'Adullact, à qui l'envoie-t-on ?
*/
define("MAIL_CIBLE_ADULLACT","nathan.peraldi@adullact.org");
/**
* Le chemin d'accès aux logs du formulaire d'adhésion
*/
$theme_path = get_stylesheet_directory();
$membership_logs_path = $theme_path . "/logs/adhesion/logs.log";
define("MEMBERSHIP_LOGS_DIRECTORY",$membership_logs_path);
\ No newline at end of file
......@@ -2,22 +2,28 @@
const blocks = ["link", "paraSecondSelection", "cotisation", "informationsCollectivite", "formulaireEPCIMutualisant", "boutonEnvoyer", "chorus_pro"];
const maxCotisation = 12000;
function getElementsByAttribute(attribute){
var list = document.getElementsByTagName('*');
var result = [];
for (var i = 0; i<list.length; i++) {
if ( list[i].getAttribute(attribute) ){
/**
* Récupère tous les éléments en fonction de leur attribut "attribute"
* @param attribute : string
* @returns {[]}
*/
function getElementsByAttribute(attribute) {
let list = document.getElementsByTagName('*');
let result = [];
for (let i = 0; i < list.length; i++) {
if (list[i].getAttribute(attribute)) {
result.push(list[i]);
}
}
return result;
}
/**
* fonction qui affiche / cache les formulaires / informations en fonction des données entrées dans les formulaires
* @param display : array
*/
function displayMask(display) {
//fonction qui affiche / cache les formulaires / informations en fonction des données entrées dans les formulaires
for (let h = 0; h < blocks.length; h++) {
if (isWordIn(blocks[h], display)) {
document.getElementById(blocks[h]).style.display = "block";
......@@ -27,13 +33,12 @@ function displayMask(display) {
}
}
/**
* sert à afficher / cacher les options du 2e <select>, et modifier le label de cotisation associé
* @param display : string
*/
function displayMaskOptions(display) {
//sert à afficher / cacher les options du 2e select menu, et modifier le label qui va avec
var toutesLesOptions = getElementsByAttribute("data-type");
if(toutesLesOptions.length>0){
console.log(toutesLesOptions.length + " data-type trouvés.")
}
let toutesLesOptions = getElementsByAttribute("data-type");
for (let j = 0; j < toutesLesOptions.length; j++) {
//boucle for qui va parcourir la liste des classes des options disponibles
......@@ -41,32 +46,29 @@ function displayMaskOptions(display) {
if (display === toutesLesOptions[j].getAttribute("class")) {
//si l'element en cours est celui de la classe recherchée
if (toutesLesOptions[j].getAttribute("value") === "") {
toutesLesOptions[j].selected = true;
}
toutesLesOptions[j].hidden = false;
//on affiche le label
document.getElementById("TYPENBR-" + toutesLesOptions[j].getAttribute("class")).style.display = "block";
} else {
toutesLesOptions[j].hidden = true;
//On cache le label
document.getElementById("TYPENBR-" + toutesLesOptions[j].getAttribute("class")).style.display = "none";
}
}
}
/**
* fonction effectuée lorsque le premier select est validé
*/
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;
let e = document.getElementById("firstSelect");
let strUser = e.options[e.selectedIndex].value;
//on reagit en fonction
//si il a cliqué sur individu, redirigé vers helloasso
......@@ -84,15 +86,15 @@ function firstAction() {
setChorusProRequired(false);
} else if (strUser === "EPCIMutualisant") {
//formulaire contenant la formule spécifique à EPCI mutualisant
//formulaire contenant la formule spécifique à EPCI mutualisant
displayMask(["formulaireEPCIMutualisant", "cotisation", "informationsCollectivite", "chorus_pro", "boutonEnvoyer"]);
setSizeRequired(false);
setEPCIRequired(true);
setChorusProRequired(true);
setCotisation("EPCIMutualisant", 1200);
} else if (strUser === "none") {
} else if (strUser === "") {
//premier choix avec des tirets
displayMask([""]);
}
......@@ -101,18 +103,22 @@ function firstAction() {
else {
displayMaskOptions(strUser);
setSizeRequired(true);
displayMask(["paraSecondSelection", "cotisation", "informationsCollectivite", "chorus_pro", "boutonEnvoyer"]);
setEPCIRequired(false);
setChorusProRequired(true);
setCotisation("EPCIMutualisant", 0);
}
}
/**
* Word est-il contenu dans list ?
* @param word : string
* @param list : array
* @returns {boolean}
*/
function isWordIn(word, list) {
//le word est il contenu dans list ?
for (a = 0; a < list.length; a++) {
for (let a = 0; a < list.length; a++) {
if (word === list[a]) {
return true
}
......@@ -120,44 +126,49 @@ function isWordIn(word, list) {
return false
}
/**
* définit le lien de redirection et son titre
* @param link : string
* @param title : string
*/
function linkRedirection(link, title) {
//définit le lien de redirection et son titre
document.getElementById("linkRedirection").setAttribute("href", link);
document.getElementById("linkRedirection").innerHTML = title;
}
/**
* Première fonction appelée pour préparer le document, associer les boutons aux fonctions... etc
*/
function prepareDocument() {
//prépare la page html en ajoutant les event listener
displayMask([""]);
document.getElementById("firstSelect").addEventListener("change", firstAction, false);
document.getElementById("nombreHabitantsEPCI").addEventListener("change", traitementEPCIMutualisant, false);
document.getElementById("nombreHabitantsEPCI").addEventListener("keyup", traitementEPCIMutualisant, false);
document.getElementById("nombreCommunesMembresEPCI").addEventListener("change", traitementEPCIMutualisant, false);
document.getElementById("nombreCommunesMembresEPCI").addEventListener("keyup", 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");
let choiceType = document.getElementById("ancienSelectType").getAttribute("value");
if (choiceType.length > 0) {
var listOfFirstOptions = document.getElementsByClassName("optionFirstSelect");
for (var a = 0; a < listOfFirstOptions.length; a++) {
let listOfFirstOptions = document.getElementsByClassName("optionFirstSelect");
for (let 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");
let choiceSize = document.getElementById("ancienSelectSize").getAttribute("value");
if (choiceSize.length > 0 && choiceSize !== "none") {
let listOfSizeOptions = document.getElementsByClassName(choiceType);
var listOfSizeOptions = document.getElementsByClassName(choiceType);
for (var b = 0; b < listOfSizeOptions.length; b++) {
for (let b = 0; b < listOfSizeOptions.length; b++) {
if (listOfSizeOptions[b].getAttribute("value") === choiceSize) {
listOfSizeOptions[b].selected = true;
break;
......@@ -167,43 +178,45 @@ function prepareDocument() {
}
}
}
var choicePeriod = document.getElementById("ancienSelectPeriod").getAttribute("value");
var listOfPeriodOptions = document.getElementsByClassName("optionPeriod");
for (var c = 0; c < listOfPeriodOptions.length; c++) {
let choicePeriod = document.getElementById("ancienSelectPeriod").getAttribute("value");
let listOfPeriodOptions = document.getElementsByClassName("optionPeriod");
for (let c = 0; c < listOfPeriodOptions.length; c++) {
if (listOfPeriodOptions[c].getAttribute("value") === choicePeriod) {
listOfPeriodOptions[c].selected = true;
}
}
}
/**
* fonction exécutée lorsque le 2e select est cliqué : on définit le montant de la cotisation en fonction du choix.
*/
function secondAction() {
//fonction exécutée lorsque le 2e select est cliqué
var e = document.getElementById("secondSelection");
let e = document.getElementById("secondSelection");
if (e.options[e.selectedIndex].value !== "") {
//s'il a sélectionné autre chose que les tirets
var selectedTranch = e.options[e.selectedIndex].getAttribute("id");
let selectedTranch = e.options[e.selectedIndex].getAttribute("id");
setCotisation(selectedTranch);
//displayMask("paraSecondSelection","cotisation","informationsCollectivite","chorus_pro","boutonEnvoyer");
console.log("ok 1");
} else {
setCotisation("EPCIMutualisant", 0);
}
}
/**
* définit la cotisation à afficher, l'option x sert uniquement pour le tarif EPCI mutualisant qui varie.
* @param id : string
* @param x : int : x va servir à définir un montant personnalisé à la cotisation. Sinon, on fait en fonction de l'id qui va chercher
* la valeur correspondante pour la cotisation.
*/
function setCotisation(id, x = -1) {
let paragraphCotList = document.getElementsByClassName("PCOT");
let research = "PCOT-" + id;
//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++) {
for (let b = 0; b < paragraphCotList.length; b++) {
if (paragraphCotList[b].getAttribute("id") === research) {
paragraphCotList[b].style.display = "block";
if (x > -1) {
document.getElementById("montantCotisation").innerHTML = x;
......@@ -214,42 +227,55 @@ function setCotisation(id, x = -1) {
}
}
/**
* Le formulaire chorus pro est il requis ?
* @param boolean : boolean
*/
function setChorusProRequired(boolean) {
document.getElementById("siretCollectivite").required = boolean;
document.getElementById("numeroEngagementCollectivite").required = boolean;
document.getElementById("codeCollectivite").required = boolean;
}
/**
* Le formulaire EPCI est il requis ?
* @param boolean : boolean
*/
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;
}
/**
* La taille de la collectivité (2e <select>) est elle requise ?
* @param boolean : boolean
*/
function setSizeRequired(boolean) {
document.getElementById("secondSelection").required = boolean;
}
/**
* lorsque l'utilisateur valide les 2 nombres entrés pour l'EPCI, les traitements nécessaires sont ici
*/
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;
let nombreHabitants = document.getElementById("nombreHabitantsEPCI").value;
let nombreCommunesMembres = document.getElementById("nombreCommunesMembresEPCI").value;
if (nombreHabitants !== "" && parseInt(nombreHabitants) >= 0) {
if (nombreCommunesMembres !== "" && parseInt(nombreCommunesMembres) >= 0) {
console.log("nombreHabitants = " + nombreHabitants);
console.log("nombreCommunesMembres = " + nombreCommunesMembres);
var resultat = (0.035 * nombreHabitants) + (15 * nombreCommunesMembres) + 1200;
let resultat = (0.035 * nombreHabitants) + (15 * nombreCommunesMembres) + 1200;
//on arrondit à la centaine
resultat = resultat / 100;
resultat = Math.round(resultat);
resultat = resultat * 100;
//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 code
resultat = maxCotisation;
......
<?php
/*
Template Name: Formulaire d'adhésion
*/
require_once "formulaire-adhesion-functions.php";
get_header();
?>
<div class="wrap">
<div id="primary" class="content-area">
<?php
if ($isFormulaireValide) {
?>
<h1 class="adullact-title">Formulaire de renouvellement d'adhésion</h1>
<p>La demande de renouvellement d'adhésion a bien été prise en compte. Nous allons vous recontacter sous
peu.</p>
<?php
} else {
?>
<main id="main" class="site-main" role="main">
<form action="" method="post" id="adullact-membership-form">
<h1 class="adullact-title">Formulaire de renouvellement d'adhésion</h1>
<p>Les champs portant une astérisque
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
sont obligatoires
</p>
<!-- Pot de miel -->
<label for="adullact-potdemiel"></label>
<input type="checkbox" id="adullact-potdemiel" name="adullact_validation_checkbox[]" value="1">
<?php
if ($numberOfErrors == 1) {
echo "<p class='adullact-error'>Une erreur est survenue lors de l'envoi du formulaire. Veuillez vérifier vos informations.</p>";
} elseif ($numberOfErrors > 1) {
echo "<p class='adullact-error'>Plusieurs erreurs sont survenues lors de l'envoi du formulaire. Veuillez vérifier vos informations.</p>";
}
?>
<!--premières infos qui vont servir pour js-->
<input id="ancienSelectType" type="hidden" name="ancienSelectType"
value="<?php tryToEcho("firstSelection",$isFormulaireValide) ?>">
<input id="ancienSelectSize" type="hidden" name="ancienSelectSize"
value="<?php tryToEcho("secondSelection",$isFormulaireValide) ?>">
<input id="ancienSelectPeriod" type="hidden" name="ancienSelectPeriod"
value="<?php tryToEcho("periodeAdhesionCollectivite",$isFormulaireValide) ?>">
<label for="firstSelect">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
Veuillez sélectionner le type de collectivité :
</label>
<select id="firstSelect" required="" name="firstSelection">
<option value="">---</option>
<?php
//on génère les options en fonction du fichier et des valeurs par défaut.
for ($i = 0; $i < count($textsSelectMenuExtended); $i++) {
?>
<option class="optionFirstSelect"
value="<?php echo $classSelectMenuExtended[$i] ?>"><?php echo $textsSelectMenuExtended[$i] . " " . $descriptions[$textsSelectMenuExtended[$i]] ?></option>
<?php
}
?>
</select>
<?php tryToShowError($errors,"first selection",$isFormulaireValide); ?>
<div id="link">
<a href="formulaire-adhesion.php" id="linkRedirection">Texte</a>
</div>
<div id="formulaireEPCIMutualisant">
<label for="nombreHabitantsEPCI">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
Nombre d'habitants de l'EPCI :
</label>
<input type="number" name="nombreHabitantsEPCI" id="nombreHabitantsEPCI"
value="<?php tryToEcho("nombreHabitantsEPCI",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"EPCI hab",$isFormulaireValide); ?>
<label for="nombreCommunesMembresEPCI">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
Nombre de communes membres :
</label>
<input type="number" name="nombreCommunesMembresEPCI" id="nombreCommunesMembresEPCI"
value="<?php tryToEcho("nombreCommunesMembresEPCI",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"EPCI com",$isFormulaireValide); ?>
</div>
<div id="paraSecondSelection">
<?php
//on génère les labels
generateLabelCotisations($listeGrilleEntiere); ?>
<select id="secondSelection" name="secondSelection">
<?php
//et on génère les options qui seront cachées plus tard
generateSecondSelection($listeGrilleEntiere); ?>
</select>
<?php tryToShowError($errors,"second Selection",$isFormulaireValide); ?>
</div>
<div id="cotisation">
<?php generateCotisations($listeGrilleEntiere); ?>
<p id="PCOT-EPCIMutualisant" class="PCOT">Montant de la cotisation : <span
id="montantCotisation"></span></p>
<p id="PCOT-Association" class="PCOT">Montant de la cotisation : 15€</p>
</div>
<div id="informationsCollectivite">
<label for="periodeAdhesionCollectivite">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
Période d'adhésion :
</label>
<select name="periodeAdhesionCollectivite" id="periodeAdhesionCollectivite" required="">
<option class="optionPeriod" value="" selected>---</option>
<?php generateDates(); ?>
<option class="optionPeriod" value="Autre" selected>Autre : nous vous recontacterons.
</option>
</select>
<?php tryToShowError($errors,"periode",$isFormulaireValide); ?>
<h3>Personne morale :</h3>
<label for="nomCollectivite">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
Nom de la collectivité :
</label>
<input type="text" name="nomCollectivite" id="nomCollectivite" required=""
value="<?php tryToEcho("nomCollectivite",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"nom",$isFormulaireValide); ?>
<label for="adresseCollectivite">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
Adresse :</label>
<input type="text" name="adresseCollectivite" id="adresseCollectivite" required=""
value="<?php tryToEcho("adresseCollectivite",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"adresse",$isFormulaireValide); ?>
<label for="codePostalCollectivite">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
Code postal :</label>
<input type="text" name="codePostalCollectivite" id="codePostalCollectivite" required=""
value="<?php tryToEcho("codePostalCollectivite",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"CP",$isFormulaireValide); ?>
<label for="villeCollectivite">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
Ville :</label>
<input type="text" name="villeCollectivite" id="villeCollectivite" required=""
value="<?php tryToEcho("villeCollectivite",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"ville",$isFormulaireValide); ?>
<label for="telCollectivite">Téléphone :</label>
<input type="tel" name="telCollectivite" id="telCollectivite"
value="<?php tryToEcho("telCollectivite",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"tel",$isFormulaireValide); ?>
<label for="siteCollectivite">Site internet :</label>
<input type="url" name="siteCollectivite" id="siteCollectivite"
value="<?php tryToEcho("siteCollectivite",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"site",$isFormulaireValide); ?>
<h3>Personne physique / représentant de la personne morale :</h3>
<label for="nomUser">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
Nom de famille :
</label>
<input type="text" name="nomUser" id="nomUser" required=""
value="<?php tryToEcho("nomUser",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"nomUser",$isFormulaireValide); ?>
<label for="prenomUser">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
Prénom :
</label>
<input type="text" name="prenomUser" id="prenomUser" required=""
value="<?php tryToEcho("prenomUser",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"prenomUser",$isFormulaireValide); ?>
<label for="fonctionUser">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
Fonction :
</label>
<input type="text" name="fonctionUser" id="fonctionUser" required=""
value="<?php tryToEcho("fonctionUser",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"fonctionUser",$isFormulaireValide); ?>
<label for="mailUser">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
Adresse e-mail :
</label>
<input type="email" name="mailUser" id="mailUser" required=""
value="<?php tryToEcho("mailUser",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"mailUser",$isFormulaireValide); ?>
<label for="telUser">Téléphone :</label>
<input type="tel" name="telUser" id="telUser"
value="<?php tryToEcho("telUser",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"telUser",$isFormulaireValide); ?>
</div>
<div id="chorus_pro">
<h3>Informations relatives à Chorus Pro : </h3>
<label for="siretCollectivite">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
SIRET :
</label>
<input type="number" name="siretCollectivite" id="siretCollectivite" required=""
value="<?php tryToEcho("siretCollectivite",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"siret",$isFormulaireValide); ?>
<label for="numeroEngagementCollectivite">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>
N° d'engagement :
</label>
<input type="text" name="numeroEngagementCollectivite" id="numeroEngagementCollectivite"
required=""
value="<?php tryToEcho("numeroEngagementCollectivite",$isFormulaireValide); ?>"><br>
<?php tryToShowError($errors,"numeroEngagement",$isFormulaireValide); ?>
<label for="codeCollectivite">
<abbr class="adullact-required" title="Champ obligatoire">*</abbr>