Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Adullact
Theme-WordPress-Adullact-org
Commits
918d4e21
Commit
918d4e21
authored
Jun 11, 2019
by
Matthieu FAURE
⛵
Browse files
Options
Browse Files
Download
Plain Diff
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
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1428 additions
and
0 deletions
+1428
-0
.gitignore
.gitignore
+2
-0
twentynineteen-child/adhesionForm.js
twentynineteen-child/adhesionForm.js
+256
-0
twentynineteen-child/contact.php
twentynineteen-child/contact.php
+503
-0
twentynineteen-child/functions.php
twentynineteen-child/functions.php
+9
-0
twentynineteen-child/grille.csv
twentynineteen-child/grille.csv
+29
-0
twentynineteen-child/logs/.gitkeep
twentynineteen-child/logs/.gitkeep
+0
-0
twentynineteen-child/logs/adhesion/.gitkeep
twentynineteen-child/logs/adhesion/.gitkeep
+0
-0
twentynineteen-child/periodSelection.php
twentynineteen-child/periodSelection.php
+67
-0
twentynineteen-child/style.css
twentynineteen-child/style.css
+9
-0
twentynineteen-child/traitementAdhesion.php
twentynineteen-child/traitementAdhesion.php
+553
-0
No files found.
.gitignore
0 → 100644
View file @
918d4e21
.idea
twentynineteen-child/adhesionForm.js
0 → 100644
View file @
918d4e21
//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
"
]);
}
}
}
twentynineteen-child/contact.php
0 → 100644
View file @
918d4e21
<?php
$errors
=
array
(
//Liste des éléments pouvant avoir une erreur
"first selection"
=>
""
,
"second Selection"
=>
""
,
"EPCI com"
=>
""
,
"EPCI hab"
=>
""
,
"nom"
=>
""
,
"adresse"
=>
""
,
"CP"
=>
""
,
"ville"
=>
""
,
"tel"
=>
""
,
"site"
=>
""
,
"periode"
=>
""
,
"siret"
=>
""
,
"numeroEngagement"
=>
""
,
"code"
=>
""
);
//le dossier où se trouvent les fichiers
$workingDirectory
=
$_SERVER
[
"CONTEXT_DOCUMENT_ROOT"
]
.
'/wp-content/themes/twentyseventeen-child/twentynineteen-child/'
;
$grillePath
=
$workingDirectory
.
'grille.csv'
;
$periodSelectionPath
=
$workingDirectory
.
"periodSelection.php"
;
$JSPath
=
'/wp-content/themes/twentyseventeen-child/twentynineteen-child/adhesionForm.js'
;
$debug_mode
=
false
;
$resultat
=
false
;
function
tryToEcho
(
$var
)
{
if
(
isset
(
$_POST
[
$var
]))
{
echo
$_POST
[
$var
];
}
}
function
tryToSetInputSelect
(
$key
,
$value
)
{
//fonction utilisée pour définir l'option sélectionnée lorsque l'envoi du formulaire a échoué.
if
(
isset
(
$_POST
[
$key
]))
{
if
(
$_POST
[
$key
]
==
$value
)
{
echo
"selected"
;
}
}
}
function
tryToShowError
(
$var
)
{
global
$errors
;
if
(
strlen
(
$errors
[
$var
])
>
0
)
{
echo
"<p class='error'> "
.
$errors
[
$var
]
.
"</p>"
;
}
}
$numberOfErrors
=
0
;
if
(
isset
(
$_POST
))
{
if
(
isset
(
$_POST
[
"firstSelection"
]))
{
include
"traitementAdhesion.php"
;
if
(
$debug_mode
)
{
echo
"<br> début du traitement <br>"
;
}
$errors
=
traitement
(
$_POST
,
$errors
);
if
(
$debug_mode
)
{
echo
"<br> fin du traitement <br>"
;
}
foreach
(
$errors
as
$key
=>
$value
)
{
if
(
$debug_mode
)
{
echo
$key
.
" : "
.
$value
.
"<br>"
;
}
if
(
strlen
(
$value
)
>
0
)
{
$numberOfErrors
+=
1
;
}
}
if
(
$debug_mode
)
{
echo
"<br> nombre d'erreurs : "
.
$numberOfErrors
.
" <br>"
;
var_dump
(
$errors
);
}
if
(
$numberOfErrors
==
0
)
{
sendAdhesionMail
(
$_POST
);
header
(
"Location:"
);
}
}
}
?>
<html
lang=
"fr"
>
<head>
<title>
Renouvellement d'adhésion
</title>
<meta
charset=
"UTF-8"
>
<script
type=
"text/javascript"
src=
"
<?php
echo
$JSPath
?>
"
></script>
</head>
<body>
<?php
/*
Template Name: Test
*/
get_header
();
include_once
$periodSelectionPath
;
$fichier
=
fopen
(
$grillePath
,
'r'
);
$ligne
=
fgetcsv
(
$fichier
,
1024
,
";"
);
//on effectue de nouveau cette instruction pour sauter les titres du tableau
$ligne
=
fgetcsv
(
$fichier
,
1024
,
";"
);
//------------------------Variables-------------------
$listeGrilleEntiere
=
[];
//contiendra l'intégralité des données dans grille.csv
$textsSelectMenu
=
[];
//contiendra les textes du premier select option gérés automatiquement
$textsSelectMenuExtended
=
[];
//même rôle qu'au dessus mais en ajoutant les options gérées automatiquement + manuellement
$classSelectMenu
=
[];
//contiendra les classes des option menu gérés automatiquement
$classSelectMenuExtended
=
[];
//contiendra les classes des option menu gérés automatiquement + manuellement
function
createFirstSelectionList
(
$liste
)
{
//fonction qui crée la première liste de sélection sans modifier les textes
$listeTempo
=
[];
for
(
$a
=
0
;
$a
<
count
(
$liste
);
$a
++
)
{
$mot
=
$liste
[
$a
][
0
];
if
(
!
isWordIn
(
$mot
,
$listeTempo
))
{
$listeTempo
[]
=
$mot
;
}
}
return
$listeTempo
;
}
function
createNameClass
(
$variable
)
{
//fonction qui nettoie la chaine pour pouvoir l'utiliser en tant que nom de classe
$chars
=
array
(
//tous les caractères susceptibles d'être remplacés
"é"
=>
"e"
,
"è"
=>
"e"
,
"ê"
=>
"e"
,
"ë"
=>
"e"
,
"à"
=>
"a"
,
"â"
=>
"a"
,
"ù"
=>
"u"
,
"û"
=>
"u"
,
"î"
=>
"i"
,
"ï"
=>
"i"
,
"ç"
=>
"c"
,
"É"
=>
"e"
,
"È"
=>
"e"
,
"Ê"
=>
"e"
,
"Ë"
=>
"e"
,
"À"
=>
"a"
,
"Â"
=>
"a"
,
"Ù"
=>
"u"
,
"Û"
=>
"u"
,
"Î"
=>
"i"
,
"Ï"
=>
"i"
,
"Ç"
=>
"c"
,
" "
=>
"_"
);
$variable
=
strtr
(
$variable
,
$chars
);
return
$variable
;
}
function
createSizeSelectList
(
$liste
)
{
//fonction qui crée la liste des classes qui sert pour le 2e select
$resultList
=
[];
for
(
$a
=
0
;
$a
<
count
(
$liste
);
$a
++
)
{
$mot
=
createNameClass
(
$liste
[
$a
][
0
]);
if
(
!
isWordIn
(
$mot
,
$resultList
))
{
$resultList
[]
=
$mot
;
}
}
return
$resultList
;
}
function
isWordIn
(
$word
,
$list
)
{
//on vérifie si word est contenu dans list
for
(
$a
=
0
;
$a
<
count
(
$list
);
$a
++
)
{
if
(
$word
==
$list
[
$a
])
{
return
true
;
}
}
return
false
;
}
while
(
$ligne
)
{
//boucle qui va récupérer tout le contenu du fichier pour le stocker dans listeGrilleEntiere
$listeGrilleEntiere
[]
=
(
$ligne
);
$ligne
=
fgetcsv
(
$fichier
,
1024
,
";"
);
}
fclose
(
$fichier
);
//on crée la première liste qui gère les textes de la première liste, avec accents et espaces
$textsSelectMenu
=
createFirstSelectionList
(
$listeGrilleEntiere
);
//on ajoute "association", epci mutualisant et "individu" qui possèdent un traitement différent
$textsSelectMenuExtended
=
$textsSelectMenu
;
$textsSelectMenuExtended
[]
=
(
"Association"
);
$textsSelectMenuExtended
[]
=
(
"Individu"
);
$textsSelectMenuExtended
[]
=
(
"EPCI Mutualisant"
);
//on crée la liste pour le 2e select qui contient le nom des classes gérés automatiquement
$classSelectMenu
=
createSizeSelectList
(
$listeGrilleEntiere
);
//classes gérées automatiquement + manuellement
$classSelectMenuExtended
=
$classSelectMenu
;
$classSelectMenuExtended
[]
=
(
"Association"
);
$classSelectMenuExtended
[]
=
(
"Individu"
);
$classSelectMenuExtended
[]
=
(
"EPCIMutualisant"
);
//on trie par ordre alphabétique
sort
(
$textsSelectMenu
);
sort
(
$textsSelectMenuExtended
);
sort
(
$classSelectMenu
);
sort
(
$classSelectMenuExtended
);
?>
<h1>
Formulaire de renouvellement d'adhésion
</h1>
<p>
<?php
if
(
$numberOfErrors
==
1
)
{
echo
"Une erreur est survenue lors de l'envoi du formulaire. Veuillez vérifier vos informations"
;
}
elseif
(
$numberOfErrors
>
1
)
{
echo
"Plusieurs erreurs sont survenues lors de l'envoi du formulaire. Veuillez vérifier vos informations"
;
}
?>
</p>
<form
action=
""
method=
"post"
>
<p>
<input
id=
"ancienSelectType"
type=
"hidden"
name=
"ancienSelectType"
value=
"
<?php
tryToEcho
(
"firstSelection"
)
?>
"
>
<input
id=
"ancienSelectSize"
type=
"hidden"
name=
"ancienSelectSize"
value=
"
<?php
tryToEcho
(
"secondSelection"
)
?>
"
>
<input
id=
"ancienSelectPeriod"
type=
"hidden"
name=
"ancienSelectPeriod"
value=
"
<?php
tryToEcho
(
"periodeAdhesionCollectivite"
)
?>
"
>
<label
for=
"firstSelect"
>
Veuillez sélectionner le type de collectivité :
</label>
<select
id=
"firstSelect"
required=
""
name=
"firstSelection"
>
<option
value=
"none"
>
---
</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
]
?>
</option>
<?php
}
?>
</select>
<?php
tryToShowError
(
"first selection"
);
?>
</p>
<div
id=
"link"
>
<a
href=
"contact.php"
id=
"linkRedirection"
title=
"Page par défaut"
>
Valider
</a>
</div>
<div
id=
"formulaireEPCIMutualisant"
>
<label
for=
"nombreHabitantsEPCI"
>
Nombre d'habitants de l'EPCI :
</label>
<input
type=
"number"
name=
"nombreHabitantsEPCI"
id=
"nombreHabitantsEPCI"
value=
"
<?php
tryToEcho
(
"nombreHabitantsEPCI"
);
?>
"
><br>
<?php
tryToShowError
(
"EPCI com"
);
?>
<label
for=
"nombreCommunesMembresEPCI"
>
Nombre de communes membres :
</label>
<input
type=
"number"
name=
"nombreCommunesMembresEPCI"
id=
"nombreCommunesMembresEPCI"
value=
"
<?php
tryToEcho
(
"nombreCommunesMembresEPCI"
);
?>
"
><br>
<?php
tryToShowError
(
"EPCI hab"
);
?>
<input
type=
"button"
value=
"Valider"
id=
"boutonValiderNombresEPCI"
>
</div>
<p
id=
"paraSecondSelection"
>
<label
for=
"secondSelection"
>
Veuillez sélectionner la taille :
</label>
<select
id=
"secondSelection"
name=
"secondSelection"
>
<?php
$classInTreatment
=
""
;
$counter
=
1
;
for
(
$a
=
0
;
$a
<
count
(
$listeGrilleEntiere
);
$a
++
)
{
//boucle qui génère les options du second select
//on récupère la ligne
$actualLine
=
$listeGrilleEntiere
[
$a
];