diff options
| author | Debulois <quentin@debulois.fr> | 2022-05-07 12:23:11 +0200 |
|---|---|---|
| committer | Debulois <quentin@debulois.fr> | 2022-05-07 12:23:11 +0200 |
| commit | 588c4ceb78fae443ca8f9446d256f5474a3bf66a (patch) | |
| tree | 224c5e5aa643012ac030af4410e935fffcefbe8f | |
| parent | 0048d676a2bed3addadea670fa5d802a314af473 (diff) | |
Ré-écriture du JS pour le rendre CSP compliant
| -rw-r--r-- | Static/Js/index.js | 8 | ||||
| -rw-r--r-- | Static/Js/main.js | 82 | ||||
| -rw-r--r-- | Static/Js/message.js | 11 | ||||
| -rw-r--r-- | Static/Js/notification.js | 8 | ||||
| -rw-r--r-- | Static/Js/register.js | 32 | ||||
| -rw-r--r-- | Static/Js/userinfo.js | 34 | ||||
| -rw-r--r-- | Template/Include/incl_form_admin.php | 6 | ||||
| -rw-r--r-- | Template/Include/incl_form_register.php | 4 | ||||
| -rw-r--r-- | Template/Include/incl_form_userInfo.php | 7 | ||||
| -rw-r--r-- | Template/Include/incl_global_message.php | 13 | ||||
| -rw-r--r-- | Template/Include/incl_global_navbar.php | 2 | ||||
| -rw-r--r-- | Template/Include/incl_global_notification.php | 4 | ||||
| -rw-r--r-- | Template/Include/incl_table_myMission.php | 6 | ||||
| -rw-r--r-- | Template/admin.php | 1 | ||||
| -rw-r--r-- | Template/message.php | 2 | ||||
| -rw-r--r-- | Template/myMission.php | 1 | ||||
| -rw-r--r-- | index.php | 2 |
17 files changed, 140 insertions, 83 deletions
diff --git a/Static/Js/index.js b/Static/Js/index.js index 393cafc..f06d0fd 100644 --- a/Static/Js/index.js +++ b/Static/Js/index.js @@ -5,14 +5,15 @@ // # # // ############################################################################ +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters + // **************************************************************************** // SLIDESHOW // **************************************************************************** -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters function slideshow_start() { let slideNumber = 1; - let images = [ + let images = [ "/Media/Images/slide0.jpg", "/Media/Images/slide1.jpg", "/Media/Images/slide2.jpg" @@ -37,3 +38,6 @@ function slideshow_start() { } , 3000); } + +// Activation du slider +slideshow_start(); diff --git a/Static/Js/main.js b/Static/Js/main.js index ca07988..33752de 100644 --- a/Static/Js/main.js +++ b/Static/Js/main.js @@ -10,20 +10,11 @@ // **************************************************************************** -// CHANGEMENT DE LANGUE -// **************************************************************************** -// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener -document.getElementById("navSelLang").addEventListener("change", () => { - document.getElementById("navFormLang").submit(); -}); - - -// **************************************************************************** // TOGGLE UNE CLASSE SUR UN ELEMENT PARMIS PLUSIEURS IDENTIQUES // **************************************************************************** -function show(parentId, element, id, className) { +function show(parentId, id, className) { // Récupération des tags dans l'élément parent (souvent table dans main) - let elements = document.getElementById(parentId).getElementsByTagName(element); + let elements = document.getElementById(parentId).getElementsByTagName("section"); // Rajout de la classe pour l'élément avec l'id donné elements[id].classList.add(className); // Suppression de cette même classe pour les autres tags @@ -34,14 +25,44 @@ function show(parentId, element, id, className) { } } +// On essaie de récupérer les tags main des pages admin & mes missions +let mainAdmin = document.getElementById("mainAdmin"); +let mainMyMission = document.getElementById("mainMyMission"); -// **************************************************************************** -// AFFICHER LA BAR DE NAVIGATION -// **************************************************************************** -function showNavButtons() { - document.getElementsByTagName("nav")[0].classList.toggle("showNav") - // first-child à chaque fois - document.getElementsByTagName("header")[0].getElementsByTagName("a")[0].getElementsByTagName("i")[0].classList.toggle("navLinkClicked") +// Si on est dans l'admin +if (mainAdmin) { + // On affiche la première section + show("mainAdmin", "secAdminJobs", "show_flex"); + // Boutton admin emplois + document.getElementById("btnAdminJobs").addEventListener("click", () => { + show("mainAdmin", "secAdminJobs", "show_flex"); + }); + // Boutton admin utilisateurs + document.getElementById("btnAdminUsers").addEventListener("click", () => { + show("mainAdmin", "secAdminUsers", "show_flex"); + }); + // Boutton admin missions + document.getElementById("btnAdminMissions").addEventListener("click", () => { + show("mainAdmin", "secAdminMissions", "show_flex"); + }); +} + +// Si on est dans mes missions +if (mainMyMission) { + // On affiche la première section + show("mainMyMission", "secPending", "show_block"); + // Boutton mission en attente + document.getElementById("btnMyMissionPending").addEventListener("click", () => { + show("mainMyMission", "secPending", "show_block"); + }); + // Boutton mission en cours + document.getElementById("btnMyMissionOngoing").addEventListener("click", () => { + show("mainMyMission", "secOngoing", "show_block"); + }); + // Boutton mission terminée + document.getElementById("btnMyMissionCompleted").addEventListener("click", () => { + show("mainMyMission", "secCompleted", "show_block"); + }); } @@ -51,3 +72,28 @@ function showNavButtons() { function redirect(page) { window.location.href = `/${page}.php`; } + +// On essaie de récupérer la division pour rediriger sans timer +let rNoTimer = document.getElementById("rNoTimer"); + +// Si elle existe on redirige vers la page indiquée +if (rNoTimer) { + redirect(rNoTimer.getAttribute("data-page")); +} + +// **************************************************************************** +// CHANGEMENT DE LANGUE +// **************************************************************************** +// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener +document.getElementById("navSelLang").addEventListener("change", () => { + document.getElementById("navFormLang").submit(); +}); + +// **************************************************************************** +// AFFICHER LA BAR DE NAVIGATION +// **************************************************************************** +document.getElementById("navButton").addEventListener("click", () => { + document.getElementsByTagName("nav")[0].classList.toggle("showNav") + // first-child à chaque fois + document.getElementsByTagName("header")[0].getElementsByTagName("a")[0].getElementsByTagName("i")[0].classList.toggle("navLinkClicked") +}); diff --git a/Static/Js/message.js b/Static/Js/message.js index 0c09120..ed5d846 100644 --- a/Static/Js/message.js +++ b/Static/Js/message.js @@ -11,7 +11,7 @@ // **************************************************************************** function start_timer(page) { let seconds = 2; - let text = document.getElementById("redirect").innerHTML; + let text = document.getElementById("redirect").innerHTML; setInterval(() => { if (seconds > 0) { document.getElementById("redirect").innerHTML = text + seconds + " ."; @@ -23,3 +23,12 @@ function start_timer(page) { }, 1000); } + + +// On essaie de récupérer la division pour rediriger avec un timer +let rTimer = document.getElementById("rTimer"); + +// Si elle existe on redirige vers la page indiquée +if (rTimer) { + start_timer(rTimer.getAttribute("data-page")); +} diff --git a/Static/Js/notification.js b/Static/Js/notification.js index 4747bc3..59094e1 100644 --- a/Static/Js/notification.js +++ b/Static/Js/notification.js @@ -11,6 +11,14 @@ function toggle_notif() { document.getElementById("notif").classList.toggle("show_notif"); } +document.getElementById("notifClose").addEventListener("click", () => { + toggle_notif(); +}); + +document.getElementById("notifRedirect").addEventListener("click", () => { + redirect("Template/myMission"); +}); + // Timeout pour ne pas non plus agressé le client setTimeout(() => { toggle_notif() diff --git a/Static/Js/register.js b/Static/Js/register.js index f5cdc92..c0d9df2 100644 --- a/Static/Js/register.js +++ b/Static/Js/register.js @@ -6,16 +6,16 @@ // ############################################################################ -// Num - N'importe quel chiffre entre 0 et 9 [0-9] +// Num - N'importe quel chiffre entre 0 et 9 [0-9] // Upper - N'importe quel lettre majuscule entre A et Z [A-Z] -// Spe - N'importe quel symbole présent entre les deux brackets [`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~µ°€£] +// Spe - N'importe quel symbole présent entre les deux brackets [`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~µ°€£] // Email - ^ -> Debut de la ligne obligatoire, doit contenir entre premiers brackets "[a-z]" "[0-9]" ou _, -, . // Ensuite il doit y avoir un @ et une suite de charcactère sans charactère speciaux "+@[a-zA-Z0-9-]" // et pour finir l'extension "+.[a-z]", "+$" pour la fin de la ligne. -const regNum = new RegExp(/[0-9]/); -const regUpper = new RegExp(/[A-Z]/); -const regSpecial = new RegExp(/[`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~µ°€£]/); -const regEmail = new RegExp(/^[a-z0-9._-]+@[a-z0-9-]+.[a-z]+$/) +const regNum = new RegExp(/[0-9]/); +const regUpper = new RegExp(/[A-Z]/); +const regSpecial = new RegExp(/[`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~µ°€£]/); +const regEmail = new RegExp(/^[a-z0-9._-]+@[a-z0-9-]+.[a-z]+$/) // Initialisation des variables let validEmail; @@ -49,21 +49,19 @@ function valid_reg(condition, element) { } } -function check_email() { +document.getElementById("email").addEventListener("keyup", () => { // On récupère l'email par id dans la page et on test notre regex - let email = document.getElementById("email").value; + let email = document.getElementById("email").value; validEmail = valid_reg(regEmail.test(email), "mailNotice"); - valid_all(); -} +}); -function check_pass() { +document.getElementById("password").addEventListener("keyup", () => { // On récupère la valeur par id du mdp dans la page et on test nos regex - let pass = document.getElementById("password").value; - validNumb = valid_reg(regNum.test(pass), "passNumb"); - validUpper = valid_reg(regUpper.test(pass), "passUpper"); + let pass = document.getElementById("password").value; + validNumb = valid_reg(regNum.test(pass), "passNumb"); + validUpper = valid_reg(regUpper.test(pass), "passUpper"); validSpecial = valid_reg(regSpecial.test(pass), "passSpecial"); - validLength = valid_reg((pass.length >= 8), "passLength"); - + validLength = valid_reg((pass.length >= 8), "passLength"); valid_all(); -}
\ No newline at end of file +});
\ No newline at end of file diff --git a/Static/Js/userinfo.js b/Static/Js/userinfo.js index ab8982c..28eee2f 100644 --- a/Static/Js/userinfo.js +++ b/Static/Js/userinfo.js @@ -26,22 +26,31 @@ var payload = []; function init() { // Récupération des emplois déja présent let jobs = document.getElementsByClassName("jobsListElem"); - // Pour chaque emploi disponible récupération de sa valeur for (i = 0; i < jobs.length; i ++) { if (jobs[i].getAttribute("data-value") !== "") { payload.push(jobs[i].getAttribute("data-value")); - jobs[i].onclick = (ptrEvent) => {remove(ptrEvent)}; + jobs[i].addEventListener("click", (ptrEvent) => {remove(ptrEvent)}); } } + // Transformation de la liste des emplois choisis en JSON + // et inscription de ce dernier dans la "value" de l'input "jobs". + document.getElementById("jobs").value = JSON.stringify(payload); +} +// Suppression d'un emploi +function remove(ptrEvent) { + // Suppression de l'emploi dans "payload" + payload.splice(payload.indexOf(ptrEvent.srcElement.getAttribute("data-value")), 1); + // Suppression du "div" de l'emploi + document.getElementById("jobsListGrid").removeChild(ptrEvent.srcElement); // Transformation de la liste des emplois choisis en JSON // et inscription de ce dernier dans la "value" de l'input "jobs". document.getElementById("jobs").value = JSON.stringify(payload); } // Ajout d'un emploi -function add() { +document.getElementById("addButton").addEventListener("click", () => { // Récupération du nom et de la valeur du choix dans le "select" des emplois let jobName = document.getElementById("jobsSel").options[jobsSel.selectedIndex].text; let jobValue = document.getElementById("jobsSel").options[jobsSel.selectedIndex].value; @@ -50,7 +59,6 @@ function add() { if (!payload.includes(jobValue) && jobValue !== "") { // Ajout à payload payload.push(jobValue); - // Création, configuration et ajout d'une nouvelle div pour l'emploi choisi // Création du "i" let i = document.createElement("i"); @@ -59,26 +67,16 @@ function add() { let div = document.createElement("div"); div.className = "jobsListElem"; div.dataset.value = jobValue; - div.onclick = (ptrEvent) => {remove(ptrEvent)}; + div.addEventListener("click", (ptrEvent) => {remove(ptrEvent)}); div.appendChild(document.createTextNode(jobName)); div.appendChild(i); // Enfin, ajout au document document.getElementById("jobsListGrid").appendChild(div); - // Transformation de la liste des emplois choisis en JSON // et inscription de ce dernier dans la "value" de l'input "jobs". document.getElementById("jobs").value = JSON.stringify(payload); } -} - -function remove(ptrEvent) { - // Suppression de l'emploi dans "payload" - payload.splice(payload.indexOf(ptrEvent.srcElement.getAttribute("data-value")), 1); - - // Suppression du "div" de l'emploi - document.getElementById("jobsListGrid").removeChild(ptrEvent.srcElement); +}); - // Transformation de la liste des emplois choisis en JSON - // et inscription de ce dernier dans la "value" de l'input "jobs". - document.getElementById("jobs").value = JSON.stringify(payload); -} +// Déclenchement de l'init +init(); diff --git a/Template/Include/incl_form_admin.php b/Template/Include/incl_form_admin.php index a366384..16385c0 100644 --- a/Template/Include/incl_form_admin.php +++ b/Template/Include/incl_form_admin.php @@ -32,9 +32,9 @@ echo('<!-- Division principale --> // **************************************************************************** echo('<!-- Bouttons de navigation --> <div id="adminButtons"> - <button onclick="show(\'mainAdmin\', \'section\', \'secAdminJobs\', \'show_flex\')">'.$text[basename(__FILE__, ".php")]["btManageJob"].'</button> - <button onclick="show(\'mainAdmin\', \'section\', \'secAdminUsers\', \'show_flex\')">'.$text[basename(__FILE__, ".php")]["btManageUser"].'</button> - <button onclick="show(\'mainAdmin\', \'section\', \'secAdminMissions\', \'show_flex\')">'.$text[basename(__FILE__, ".php")]["btManageMission"].'</button> + <button id="btnAdminJobs">'.$text[basename(__FILE__, ".php")]["btManageJob"].'</button> + <button id="btnAdminUsers">'.$text[basename(__FILE__, ".php")]["btManageUser"].'</button> + <button id="btnAdminMissions">'.$text[basename(__FILE__, ".php")]["btManageMission"].'</button> </div>'.PHP_EOL); // **************************************************************************** diff --git a/Template/Include/incl_form_register.php b/Template/Include/incl_form_register.php index 8462e02..0d8af79 100644 --- a/Template/Include/incl_form_register.php +++ b/Template/Include/incl_form_register.php @@ -20,14 +20,14 @@ echo('<!-- Division principale --> <div> <label> <i class="fas fa-envelope-square"></i> - <input type="email" name="email" id="email" maxlength="128" onkeyup="check_email()" placeholder="'.$text[basename(__FILE__, ".php")]["email"].'" maxlength="128" required> + <input type="email" name="email" id="email" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["email"].'" maxlength="128" required> </label> <p> <span id="mailNotice" class="invalid">'.$text[basename(__FILE__, ".php")]["mailNotice"].'</span> </p> <label> <i class="fas fa-lock"></i> - <input type="password" name="password" id="password" maxlength="128" onkeyup="check_pass()" placeholder="'.$text[basename(__FILE__, ".php")]["password"].'" maxlength="128" required> + <input type="password" name="password" id="password" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["password"].'" maxlength="128" required> </label> <p> '.$text[basename(__FILE__, ".php")]["passNotice"].' diff --git a/Template/Include/incl_form_userInfo.php b/Template/Include/incl_form_userInfo.php index 1fd78d5..c5091c5 100644 --- a/Template/Include/incl_form_userInfo.php +++ b/Template/Include/incl_form_userInfo.php @@ -86,7 +86,7 @@ if ($_SESSION["userStatus"] == 1) { echo(' <option value="'.$allJobs[$i]["jobCategoryId"].'">'.$allJobs[$i]["jobCategoryName".ucwords($_SESSION["lang"])].'</option>'.PHP_EOL); } echo(' </select> - <button type="button" onclick="add()">'.$text[basename(__FILE__, ".php")]["jobsAdd"].'</button> + <button type="button" id="addButton">'.$text[basename(__FILE__, ".php")]["jobsAdd"].'</button> </div> </label>'.PHP_EOL); @@ -121,10 +121,9 @@ if ($_SESSION["userStatus"] == 1) { </label>'.PHP_EOL); // **************************************************************************** - // CHARGEMENT ET DECLENCHEMENT DU JAVASCRIPT DEDIE A CETTE PAGE + // CHARGEMENT DU JAVASCRIPT DEDIE A CETTE PAGE UNIQUEMENT SI PRO // **************************************************************************** - echo(' <script src="/Static/Js/userinfo.js"></script> - <script>init()</script>'); + echo(' <script src="/Static/Js/userinfo.js"></script>'); } // **************************************************************************** diff --git a/Template/Include/incl_global_message.php b/Template/Include/incl_global_message.php index 1f8591f..bb9926c 100644 --- a/Template/Include/incl_global_message.php +++ b/Template/Include/incl_global_message.php @@ -34,10 +34,7 @@ if ($messageText[$name][$status]["success"]) { // **************************************************************************** echo('<!-- Texte principal --> <p>'.$messageText[$name][$status]["info"].'</p> -<p id="redirect" class="info">'.$redirect.'</p></main> -<!-- Chargement du javascript dédié à cette page --> -<script src="/Static/Js/message.js"></script> -<script src="/Static/Js/main.js"></script>'); +<p id="redirect" class="info">'.$redirect.'</p></main>'); // **************************************************************************** // RECUPERATION DE LA PAGE VERS LAQUELLE REDIRIGER SI CE N'EST PAS L'INDEX @@ -56,11 +53,11 @@ if ($messageText[$name][$status]["toSrc"]) { // DECLENCHEMENT DU JAVASCRIPT AVEC LA PAGE DE DESTINATION DONNEE EN ARGUMENT // **************************************************************************** if ($messageText[$name][$status]["timer"]) { - echo('<!-- Redirection avec timer --> - <script>start_timer("'.$dest.'");</script>'); + echo('<!-- Info pour JS, redirection avec timer --> + <div id="rTimer" data-page="'.$dest.'"></div>'); } else { - echo('<!-- Redirection sans timer --> - <script>redirect("'.$dest.'")</script>'); + echo('<!-- Info pour JS, redirection sans timer --> + <div id="rNoTimer" data-page="'.$dest.'"></div>'); } ?>
\ No newline at end of file diff --git a/Template/Include/incl_global_navbar.php b/Template/Include/incl_global_navbar.php index 26f5872..efcff81 100644 --- a/Template/Include/incl_global_navbar.php +++ b/Template/Include/incl_global_navbar.php @@ -16,7 +16,7 @@ require_once(dirname( __FILE__ )."/".$_SESSION["lang"]."/text.php"); echo('<!-- Header --> <header> <!-- Titre --> - <a onclick="showNavButtons()"><i class="fas fa-bars"></i></a> + <a id="navButton"><i class="fas fa-bars"></i></a> <!-- Espace vide --> <div class="spacer"></div> <a id="navTitle" href="/"><h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2></a> diff --git a/Template/Include/incl_global_notification.php b/Template/Include/incl_global_notification.php index 5edc9bd..55be411 100644 --- a/Template/Include/incl_global_notification.php +++ b/Template/Include/incl_global_notification.php @@ -12,8 +12,8 @@ require_once(dirname( __FILE__ )."/".$_SESSION["lang"]."/text.php"); // Partie html de la notification echo('<!-- Notification --> <aside id="notif"> - <button type="button" onclick="toggle_notif()">✖</button> - <a onclick="redirect(\'Template/myMission\')"> + <button type="button" id="notifClose">✖</button> + <a id="notifRedirect"> <span>🔔</span> <h3>'.$text[basename(__FILE__, ".php")]["header"].'</h3> <p>'.$text[basename(__FILE__, ".php")]["info"].'</p> diff --git a/Template/Include/incl_table_myMission.php b/Template/Include/incl_table_myMission.php index 96182ae..922f5b6 100644 --- a/Template/Include/incl_table_myMission.php +++ b/Template/Include/incl_table_myMission.php @@ -66,9 +66,9 @@ echo('<!-- Mes missions --> // BOUTTONS DE NAVIGATION // **************************************************************************** echo('<div id="myMissionButtons"> - <button onclick="show(\'mainMyMission\', \'section\', \'secPending\', \'show_block\')">'.$text[basename(__FILE__, ".php")]["pendingMission"].'</button> - <button onclick="show(\'mainMyMission\', \'section\', \'secOngoing\', \'show_block\')">'.$text[basename(__FILE__, ".php")]["ongoingMission"].'</button> - <button onclick="show(\'mainMyMission\', \'section\', \'secCompleted\',\'show_block\')">'.$text[basename(__FILE__, ".php")]["completedMission"].'</button> + <button id="btnMyMissionPending">'.$text[basename(__FILE__, ".php")]["pendingMission"].'</button> + <button id="btnMyMissionOngoing">'.$text[basename(__FILE__, ".php")]["ongoingMission"].'</button> + <button id="btnMyMissionCompleted">'.$text[basename(__FILE__, ".php")]["completedMission"].'</button> </div>'.PHP_EOL); // **************************************************************************** diff --git a/Template/admin.php b/Template/admin.php index b77ddf1..f302da7 100644 --- a/Template/admin.php +++ b/Template/admin.php @@ -41,6 +41,5 @@ if (!isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) <?php require_once(dirname( __FILE__ )."/Include/incl_form_admin.php"); ?> <?php require_once(dirname( __FILE__ )."/Include/incl_global_footer.php"); ?> <script src="/Static/Js/main.js"></script> - <script>show('mainAdmin', 'section', 'secAdminJobs', 'show_flex')</script> </body> </html>
\ No newline at end of file diff --git a/Template/message.php b/Template/message.php index 28fb116..b9bf58b 100644 --- a/Template/message.php +++ b/Template/message.php @@ -36,6 +36,8 @@ if (!isset($_SESSION["message"])) { <?php require_once(dirname( __FILE__ )."/Include/incl_global_navbar.php"); ?> <?php require_once(dirname( __FILE__ )."/Include/incl_global_message.php"); ?> <?php require_once(dirname( __FILE__ )."/Include/incl_global_footer.php"); ?> + <?php echo('<script src="/Static/Js/message.js"></script>'); ?> + <?php echo('<script src="/Static/Js/main.js"></script>'); ?> </body> </html> <?php unset($_SESSION["messageNumber"]); ?> diff --git a/Template/myMission.php b/Template/myMission.php index 9b28537..dc7b79f 100644 --- a/Template/myMission.php +++ b/Template/myMission.php @@ -44,6 +44,5 @@ $_SESSION["src"] = basename(__FILE__, ".php"); <?php require_once(dirname( __FILE__ )."/Include/incl_table_myMission.php"); ?> <?php require_once(dirname( __FILE__ )."/Include/incl_global_footer.php"); ?> <script src="/Static/Js/main.js"></script> - <script>show('mainMyMission', 'section', 'secPending', 'show_block')</script> </body> </html>
\ No newline at end of file @@ -66,7 +66,5 @@ if (isset($_COOKIE["autoLogin"]) && $_SESSION["loggedIn"] == false) { <?php if (isset($_SESSION["notification"]) && $_SESSION["notification"]) { echo(' <script src="/Static/Js/notification.js"></script>'); } ?> - <!-- Activation du slider --> - <script>slideshow_start();</script> </body> </html>
\ No newline at end of file |
