diff options
| author | Debulois <quentin@debulois.fr> | 2022-04-10 21:25:00 +0200 |
|---|---|---|
| committer | Debulois <quentin@debulois.fr> | 2022-04-10 21:25:00 +0200 |
| commit | 2923e6fca634231533cca11e43a9091344ff4ba5 (patch) | |
| tree | 7181e1b0e26ddb072530adec7d55f77e9e389783 | |
| parent | 9939f74c0b274ee916f742a45a32d3c843e0960b (diff) | |
Ajout d'un système de notification pour alerter les pro et finition
42 files changed, 524 insertions, 263 deletions
diff --git a/Core/Functions/func_login.php b/Core/Functions/func_login.php index f0c72c7..bf593a3 100644 --- a/Core/Functions/func_login.php +++ b/Core/Functions/func_login.php @@ -10,7 +10,8 @@ function login($cookie, $email = null, $pass = null, $remember = 0) { // Instanciation de la gestion de la BDD utilisateur. - $dbuser = new DbUser; + $dbuser = new DbUser; + $dbmission = new DbMission; // On vérifie si la connection se fait via le formulaire de connection ou par cookie if (!$cookie) { @@ -34,6 +35,24 @@ function login($cookie, $email = null, $pass = null, $remember = 0) { $_SESSION[$key] = $value; } + // Partie notification, + // Ajout à la session d'un élément "notification". + $_SESSION["notification"] = 0; + // Si c'est un pro + if ($_SESSION["userStatus"] == "1") { + // on récupère et loop dans ses missions + $result = $dbmission->get_mission_by_proid($_SESSION["userId"]); + for ($i = 0; $i < count($result); $i++) { + // Si il y a une mission en attente + if (!$result[$i]["acceptedByPro"]) { + // l'élément de la liste notification devient vrai + $_SESSION["notification"] = 1; + // Et on stop le loop, inutile d'aller plus loin + break; + } + } + } + // Si était coché remember me ou que la connection s'est faite via cookie, // on en génère un nouveau. if ($remember || $cookie) { diff --git a/Core/Functions/func_myMission.php b/Core/Functions/func_myMission.php index bf3a2a6..c6d4594 100644 --- a/Core/Functions/func_myMission.php +++ b/Core/Functions/func_myMission.php @@ -5,12 +5,16 @@ // # Description: Fonction de gesrtion de ses missions # // # # // ############################################################################ + +// Acceptation d'une mission par un pro function mymission_accept_mission($missionId) { $dbmission = new DbMission; $accepted = $dbmission->accept_mission_by_missionid($missionId); // Sélection du message à afficher en fonction de réussite ou pas. if ($accepted) { + // Suppresion de l'élément "notification" de la session. + unset($_SESSION["notification"]); $message = ["missionAccepted", "success"]; } else { $message = ["missionAccepted", "fail"]; @@ -22,6 +26,7 @@ function mymission_accept_mission($missionId) { die(); } +// Validation de fin de mission par un pro ou un client function mymission_complete_mission($missionId, $userStatus) { $dbmission = new DbMission; diff --git a/Core/Functions/func_register.php b/Core/Functions/func_register.php index d8960ce..1a94bc1 100644 --- a/Core/Functions/func_register.php +++ b/Core/Functions/func_register.php @@ -8,14 +8,16 @@ function register($email, $password, $userStatus) { // les regex necessaire pour vérifier le mot de passe - $numb = "/[0-9]/"; - $upper = "/[A-Z]/"; - $special = "/[`!@#$%^&*()_+\-=\[\]{};':\"\\|,.<>\/?~µ°€£]/"; + $regNumb = "/[0-9]/"; + $regUpper = "/[A-Z]/"; + $regSpecial = "/[`!@#$%^&*()_+\-=\[\]{};':\"\\|,.<>\/?~µ°€£]/"; + $regEmail = "/^[a-z0-9_-]+@[a-z0-9-]+\.[a-z]/"; if ((strlen($password) >= 8) - && preg_match($numb, $password) - && preg_match($upper, $password) - && preg_match($special, $password) + && preg_match($regNumb, $password) + && preg_match($regUpper, $password) + && preg_match($regSpecial, $password) + && preg_match($regEmail, $email) ) { $dbuser = new DbUser; diff --git a/Database/dbmain.php b/Database/dbmain.php index b1777ba..67f27a4 100644 --- a/Database/dbmain.php +++ b/Database/dbmain.php @@ -22,7 +22,7 @@ class DbMain { // Pour gérer si "en production" private $debug = True; // Salt pour le chiffrement - private $salt = "cTKXHBoN3oxymlhNem2h"; + private $salt = "t87RL7dKfaNAJKtCAR6cVFhEfkn7qBGW"; // Configuration du serveur MYSQL / MARIADB private $conn; private $host = "127.0.0.1"; @@ -35,12 +35,12 @@ class DbMain { // **************************************************************************** // UserAccount, infos du compte nécessaire à la connection private $createTableUserAccount = "CREATE TABLE IF NOT EXISTS `alphajob`.`userAccount` ( - `userId` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `userId` INT UNSIGNED NOT NULL AUTO_INCREMENT, `email` VARCHAR(128) NOT NULL, `password` VARCHAR(128) NOT NULL, `tokenAutoLogin` VARCHAR(128) NULL DEFAULT NULL, - `inscriptionDate` TIMESTAMP NOT NULL, - `userStatus` TINYINT(1) UNSIGNED NOT NULL, + `inscriptionDate` TIMESTAMP NOT NULL, + `userStatus` TINYINT(1) UNSIGNED NOT NULL, PRIMARY KEY (`userId`) ) ENGINE = InnoDB @@ -50,14 +50,14 @@ class DbMain { private $createTableUserInfo = "CREATE TABLE IF NOT EXISTS `alphajob`.`userInfo` ( `lastname` VARCHAR(128) NOT NULL, `firstname` VARCHAR(128) NOT NULL, - `phoneNumber` VARCHAR(10) NOT NULL, + `phoneNumber` VARCHAR(10) NOT NULL, `adress` VARCHAR(128) NOT NULL, - `zipCode` VARCHAR(6) NOT NULL, + `zipCode` VARCHAR(6) NOT NULL, `city` VARCHAR(128) NOT NULL, `degree` VARCHAR(128) NULL DEFAULT NULL, `capability` VARCHAR(256) NULL DEFAULT NULL, `description` VARCHAR(256) NULL DEFAULT NULL, - `userId` INT UNSIGNED NOT NULL, + `userId` INT UNSIGNED NOT NULL, PRIMARY KEY (`userId`), INDEX `fk_userinfo_userId_idx` (`userId` ASC) VISIBLE, CONSTRAINT `fk_userinfo_userId` @@ -71,7 +71,7 @@ class DbMain { // Liste des categories d'emploie possible private $createTableJobCategory = "CREATE TABLE IF NOT EXISTS `alphajob`.`jobCategory` ( - `jobCategoryId` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `jobCategoryId` INT UNSIGNED NOT NULL AUTO_INCREMENT, `jobCategoryNameEn` VARCHAR(128) NOT NULL, `jobCategoryNameFr` VARCHAR(128) NOT NULL, PRIMARY KEY (`jobCategoryId`) @@ -101,17 +101,17 @@ class DbMain { // Infos sur les missions effectuées, liée à userAccount par userId et consultantId private $createTableMission = "CREATE TABLE IF NOT EXISTS `alphajob`.`mission` ( - `missionId` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `date` TIMESTAMP NOT NULL, + `missionId` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `date` TIMESTAMP NOT NULL, `subject` VARCHAR(128) NULL DEFAULT NULL, - `note` TINYINT(1) UNSIGNED NULL DEFAULT NULL, + `note` TINYINT(1) UNSIGNED NULL DEFAULT NULL, `review` VARCHAR(256) NULL DEFAULT NULL, - `acceptedByPro` TIMESTAMP NULL DEFAULT NULL, - `validatedByClient` TIMESTAMP NULL DEFAULT NULL, - `validatedByPro` TIMESTAMP NULL DEFAULT NULL, - `clientId` INT UNSIGNED NOT NULL, - `proId` INT UNSIGNED NOT NULL, - `jobCategoryId` INT UNSIGNED NOT NULL, + `acceptedByPro` TIMESTAMP NULL DEFAULT NULL, + `validatedByClient` TIMESTAMP NULL DEFAULT NULL, + `validatedByPro` TIMESTAMP NULL DEFAULT NULL, + `clientId` INT UNSIGNED NOT NULL, + `proId` INT UNSIGNED NOT NULL, + `jobCategoryId` INT UNSIGNED NOT NULL, PRIMARY KEY (`missionId`), INDEX `fk_mission_clientId_idx` (`clientId` ASC) VISIBLE, INDEX `fk_mission_proId_idx` (`proId` ASC) VISIBLE, diff --git a/Database/meth_dbmission.php b/Database/meth_dbmission.php index 5087bc5..f44edfc 100644 --- a/Database/meth_dbmission.php +++ b/Database/meth_dbmission.php @@ -117,7 +117,7 @@ class DbMission extends DbMain { SELECT missionId, date, subject, note, review, acceptedByPro, validatedByClient, - validatedByPro, jobCategoryId, lastname + validatedByPro, jobCategoryId, proId, lastname FROM ".$this->tableMission." LEFT JOIN diff --git a/Database/meth_dbuser.php b/Database/meth_dbuser.php index 4d983b5..5161a82 100644 --- a/Database/meth_dbuser.php +++ b/Database/meth_dbuser.php @@ -111,12 +111,16 @@ class DbUser extends DbMain { array_push($args, $userId); $this->exec_cmd($reqAddInfoClient, $args); } else { - // TODO: Commenter // https://stackoverflow.com/questions/15986235/how-to-use-json-stringify-and-json-decode-properly + // Récupération des emplois dans le JSON et supression de ces derniers de la liste $selectedJobs = json_decode(html_entity_decode($userInfos["jobs"])); unset($userInfos["jobs"]); - $jobsAdded = array_values(array_diff($selectedJobs, $userJobs)); + // array_value -> Qu'est ce qui est présent dans 1 mais pas dans 2 ? + // Comparaison des jobs anciennement présent avec ceux sélectionnés, donc ajoutés. + $jobsAdded = array_values(array_diff($selectedJobs, $userJobs)); + // Comparaison des jobs deja présent avec ceux sélectionnés, donc ajoutés. $jobsRemoved = array_values(array_diff($userJobs, $selectedJobs)); + // on continue classiquement avec les autres éléments $args = array_values($userInfos); array_push($args, $userId); $this->exec_cmd($reqAddInfoPro, $args); diff --git a/Documents_et_infos/Zooning_maquette_graphique/zooning_avance.epgz b/Documents_et_infos/Zooning_maquette_graphique/zooning_avance.epgz Binary files differindex db034cb..723e951 100644 --- a/Documents_et_infos/Zooning_maquette_graphique/zooning_avance.epgz +++ b/Documents_et_infos/Zooning_maquette_graphique/zooning_avance.epgz diff --git a/Documents_et_infos/todo.txt b/Documents_et_infos/todo.txt deleted file mode 100644 index 70bac07..0000000 --- a/Documents_et_infos/todo.txt +++ /dev/null @@ -1,16 +0,0 @@ - -################################################# - -- Global front - - Système de notification ? (5 sera l'élément suivi pour le dossier pro) - -- Revoir front Client & Pro - - Requète de mission pour un pro sur le moteur de recherche. (DONE) - - Page mes missions, passés, en cours, terminées. (DONE) - - Revoir mes infos pour adapter aux clients & pros. (DONE) - -- Revoir front Admin - - Doit pouvoir supprimer une mission (DONE) - - Doit pouvoir gérer les catégories de travail (DONE) - -################################################# diff --git a/Static/Css/admin.css b/Static/Css/admin.css index 96d9c03..91a04c1 100644 --- a/Static/Css/admin.css +++ b/Static/Css/admin.css @@ -7,12 +7,13 @@ ############################################################################ */ + /* BUTTONS */ #adminButtons { display: flex; justify-content: space-around; gap: 1em; - width: 80%; + max-width: 80%; margin-left: auto; margin-right: auto; padding: 2em; @@ -61,4 +62,4 @@ #secAdminMissions form { flex-direction: column; } -}
\ No newline at end of file +} diff --git a/Static/Css/footer.css b/Static/Css/footer.css index d0e4c02..ecbc25e 100644 --- a/Static/Css/footer.css +++ b/Static/Css/footer.css @@ -7,6 +7,7 @@ ############################################################################ */ + /* FOOTER */ footer { min-height: 10vh; diff --git a/Static/Css/login.css b/Static/Css/login.css index 0b373b1..2c3b2cc 100644 --- a/Static/Css/login.css +++ b/Static/Css/login.css @@ -7,6 +7,7 @@ ############################################################################ */ + /* MAIN */ #mainLogin form { display: flex; diff --git a/Static/Css/main.css b/Static/Css/main.css index ff1e229..7614cd3 100644 --- a/Static/Css/main.css +++ b/Static/Css/main.css @@ -6,7 +6,6 @@ # # ############################################################################ - Sites web utilisés pour le CSS: https://css-tricks.com/guides/ https://stackoverflow.com/ @@ -16,51 +15,60 @@ Toutes les recherches sont effectuées en anglais sur mon instance SearX https://searx.debulois.fr */ + :root { /* Global */ - --mainSiteColor: #c0392b; - --bodyBg: #fafafa; - --separatorBg: var(--bodyBg); - --bg: white; - --text: black; + --mainSiteColor: #c0392b; + --bodyBg: #fafafa; + --separatorBg: var(--bodyBg); + --bg: white; + --text: black; /* Header & navbar */ - --navbarTextColor: var(--text); - --headerBg: var(--bg); - --navBg: #f8f8f8; + --navbarTextColor: var(--text); + --headerBg: var(--bg); + --navBg: #f8f8f8; /* Slideshow */ - --slideText: whitesmoke; - --slideBg: black; - --slideStroke: black; + --slideText: whitesmoke; + --slideBg: black; + --slideStroke: black; /* Footer */ - --footerTextColor: #636e72; - --footerBgColor: #2d3436; + --footerTextColor: #636e72; + --footerBgColor: #2d3436; /* Tableaux */ - --tableText: var(--text); - --tableBg: var(--bodyBg); - --tdBorderColor: rgba(0, 0, 0, 0.2); - --tableStarUnchecked: darkgray; - --tableStarChecked: orange; + --tableText: var(--text); + --tableBg: var(--bodyBg); + --tdBorderColor: rgba(0, 0, 0, 0.2); + --tableStarUnchecked: darkgray; + --tableStarChecked: orange; /* Messages */ - --messageTextErrorColor: red; - --messageTextSuccessColor: green; + --messageTextErrorColor: red; + --messageTextSuccessColor: green; /* Input icon et button */ - --iconColor: white; - --btnHoverBg: #e74c3c; + --iconColor: white; + --btnHoverBg: #e74c3c; /* Input border */ - --inputBorder: 2px solid var(--mainSiteColor); - --thBorder: 2px solid var(--mainSiteColor); - --tdBorder: 2px solid var(--tdBorderColor); - --iBorderRadius: 5px 0px 0px 5px; - --inputBorderRadius: 0px 5px 5px 0px; + --inputBorder: 2px solid var(--mainSiteColor); + --thBorder: 2px solid var(--mainSiteColor); + --tdBorder: 2px solid var(--tdBorderColor); + --iBorderRadius: 5px 0px 0px 5px; + --inputBorderRadius: 0px 5px 5px 0px; + /* Notification */ + --notifAsideBg: #f8f8f8; + --notifAsideBorder: 4px solid #cf7e39; + --notifButtonCloseColor: #1a1a1a; + --notifButtonCloseBg: #d3c9c3c9; + --notifButtonCloseBorder: solid 1px #6e5e5e; + --notifButtonCloseHoverColor: #e7e7e7; + --notifButtonCloseHoverBg: #ff5959; /* Fonts size */ - --fontSizeI: 20px; - --fontSizeSlideP: 34px; - --fontSizeSmallPhone: 12px; - --fontSizeSmallLess: 14px; - --fontSizeSmall: 16px; - --fontSizeSmallPlus: 18px; - --fontSizeMedium: 26px; - --fontSizeLarge: 28px; + --fontSizeI: 20px; + --fontSizeSlideP: 34px; + --fontSizeSmallPhone: 12px; + --fontSizeSmallLess: 14px; + --fontSizeSmall: 16px; + --fontSizeSmallPlus: 18px; + --fontSizeMedium: 26px; + --fontSizeLarge: 28px; } @font-face { @@ -184,6 +192,7 @@ main table { main th { border: var(--thBorder); background-color: var(--tableBg); + } main td { @@ -203,7 +212,7 @@ main input[type="email"], main input[type="password"] { padding: 2px; height: 2.5em; - font-size: calc(32px / 2.5); + font-size: calc(32px / 2.5); /* nécessaire par rapport à quand c'est une div */ border: var(--inputBorder); border-radius: var(--inputBorderRadius); } @@ -237,4 +246,4 @@ main button:hover { main h3 { font-size: var(--fontSizeSmallPlus); } -}
\ No newline at end of file +} diff --git a/Static/Css/message.css b/Static/Css/message.css index d2276ea..22d27cd 100644 --- a/Static/Css/message.css +++ b/Static/Css/message.css @@ -7,6 +7,7 @@ ############################################################################ */ + .success { font-weight: bold; text-decoration: underline; @@ -23,4 +24,4 @@ #mainMessage h3 { border: none; -}
\ No newline at end of file +} diff --git a/Static/Css/mission.css b/Static/Css/mission.css index b9383d9..944227e 100644 --- a/Static/Css/mission.css +++ b/Static/Css/mission.css @@ -8,6 +8,7 @@ ############################################################################ */ + #mainMission form { display: flex; flex-direction: column; @@ -21,6 +22,12 @@ width: 70%; } +#mainMission select { + height: 3em; + font-size: calc((var(--fontSizeI) * 2) / 3); /* Pour avoir la même taille qu'un logo */ + border-radius: var(--inputBorderRadius); +} + #mainMission input[type="text"] { width: inherit; } diff --git a/Static/Css/myMission.css b/Static/Css/myMission.css index 34afff3..ca22ddb 100644 --- a/Static/Css/myMission.css +++ b/Static/Css/myMission.css @@ -7,6 +7,7 @@ ############################################################################ */ + #myMissionButtons { display: flex; justify-content: space-around; diff --git a/Static/Css/navbar.css b/Static/Css/navbar.css index 6887f0d..91b102b 100644 --- a/Static/Css/navbar.css +++ b/Static/Css/navbar.css @@ -7,6 +7,7 @@ ############################################################################ */ + .showNav { top: 0vh !important; } @@ -127,4 +128,4 @@ nav p { header a:first-child { min-width: 20%; } -}
\ No newline at end of file +} diff --git a/Static/Css/notification.css b/Static/Css/notification.css new file mode 100644 index 0000000..beddf4a --- /dev/null +++ b/Static/Css/notification.css @@ -0,0 +1,123 @@ + +/* +############################################################################ +# # +# Description: CSS du message de notification # +# # +############################################################################ +https://www.w3schools.com/howto/howto_js_scroll_to_top.asp +https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow +*/ + + +.show_notif { + left: 2em; +} + +/* Div de la notification */ +aside { + z-index: 2; /* Position en profondeur */ + position: fixed; /* Comment vas être positionné l'élément */ + left: -75%; /* position à gauche de l'écran (démarre masqué) */ + bottom: 2em; /* position en bas de l'écran */ + width: 350px; /* largeur de la div définie selon le contenu */ + padding: 0.3em; /* marge interne de 1 fois la taille du texte */ + background-color: var(--notifAsideBg); /* couleur du fond */ + border: var(--notifAsideBorder); /* taille type et couleur de la bordure */ + border-radius: 10px; /* arrondie des angles de la bordure */ + text-align: center; /* le texte est centré */ + box-shadow: 4px 4px 9px black; /* Ombre, déportation x, deportation y, diffusion, couleur */ + transition: all 0.6s ease-in-out; /* ajout d'un effet acceleration/decerelation de l'animation */ +} + +/* Zone clickable */ +aside a { + cursor: pointer; /* le curseur deviens un pointeur quand on le survole */ +} + +/* Boutton pour fermer */ +aside button { + position: absolute; /* Position fixe relative */ + right: 0px; /* tout à droite */ + top: 0px; /* tout en haut */ + border: none; /* sans bordure*/ + padding: 0px; + margin-top: 4px; + margin-right: 4px; + color: var(--notifButtonCloseColor); + background-color: var(--notifButtonCloseBg); + border-radius: 4px; + font-size: 19px; + width: 23px; + line-height: 23px; + height: 23px; + border: var(--notifButtonCloseBorder); + transition: all 0.05s ease-in-out; +} + +aside button:hover { + cursor: pointer; /* le curseur deviens un pointeur quand on le survole */ + color: var(--notifButtonCloseHoverColor); + background-color: var(--notifButtonCloseHoverBg); +} + +aside span { + float: left; /* float à gauche */ + position: absolute; /* position fixe relative */ + left: 0.5em; /* distance a gauche */ + /* (espace totale(h3, p pad & marg + font-size) - cloche font-size) / 2*/ + top: calc((52.8px - 32px) / 2); /* centré */ + font-size: 32px; /* taille de la cloche */ + animation-name: cloche; /* nom animation keyframe */ + animation-timing-function: ease-in-out; /* vitesse et style de transition */ + animation-iteration-count: infinite; /* répété à l'infini */ + animation-duration: 2.7s; /* duréé de l'animation */ +} + +/* Titre de la fenetre */ +aside h3 { + font-size: 17px; + margin-top: 0px; /* on supprime la marge du haut */ + padding-top: 0.3em; /* on la remplace avec du padding pour que la zone soit clickable */ + margin-bottom: 0.3em; +} + +/* Contenu */ +aside p { + font-style: italic; /* le texte est en italic */ + text-decoration: underline; + margin-bottom: 0px; + padding-bottom: 0.3em; + margin-top: 0.3em; +} + +/* Etapes de l'animation */ +@keyframes cloche { + 0% {transform: rotate(5deg) scale(1.1);} + 4% {transform: rotate(-10deg) scale(1.2);} + 8% {transform: rotate(10deg) scale(1.2);} + 12% {transform: rotate(-10deg) scale(1.2);} + 16% {transform: rotate(10deg) scale(1.2);} + 20% {transform: rotate(-10deg) scale(1.2);} + 24% {transform: rotate(10deg) scale(1.2);} + 28% {transform: rotate(-10deg) scale(1.2);} + 32% {transform: rotate(10deg) scale(1.2);} + 36% {transform: rotate(-5deg) scale(1.1);} + 40% {transform: rotate(0deg) scale(1);} + 100% {transform: rotate(0deg);} +} + +/* MOBILE */ +@media screen and (max-width: 768px) { + .show_notif { + bottom: 1em; + left: calc(5% - 0.3em - 4px); /* espace gauche, aside padding, aside border*/ + } + + /* Div de la notification */ + aside { + bottom: -300px; + width: 90%; + left: calc(5% - 0.3em - 4px); /* espace gauche, aside padding, aside border*/ + } +} diff --git a/Static/Css/register.css b/Static/Css/register.css index 56808af..9324ad3 100644 --- a/Static/Css/register.css +++ b/Static/Css/register.css @@ -7,6 +7,7 @@ ############################################################################ */ + .valid { color: #338533; } @@ -53,6 +54,7 @@ flex-direction: column; align-items: center; gap: 0.5em; + width: 100%; } #mainRegister input[type="email"], @@ -67,4 +69,4 @@ flex-direction: column; font-size: var(--fontSizeSmallPhone); } -}
\ No newline at end of file +} diff --git a/Static/Css/search.css b/Static/Css/search.css index 7362ac9..be96775 100644 --- a/Static/Css/search.css +++ b/Static/Css/search.css @@ -7,6 +7,7 @@ ############################################################################ */ + .star { width: 1.2em !important; background-color: var(--tableBg) !important; @@ -51,7 +52,7 @@ #mainSearch select { height: 3em; - font-size: calc((var(--fontSizeI) * 2) / 3); + font-size: calc((var(--fontSizeI) * 2) / 3); /* Pour avoir la même taille qu'un logo */ border-radius: var(--inputBorderRadius); } @@ -78,4 +79,4 @@ #divSearch { flex-direction: column; } -}
\ No newline at end of file +} diff --git a/Static/Css/slideshow.css b/Static/Css/slideshow.css index d2cdaa3..8dd6f39 100644 --- a/Static/Css/slideshow.css +++ b/Static/Css/slideshow.css @@ -7,6 +7,7 @@ ############################################################################ */ + .slideDotSelected { color: var(--mainSiteColor); transform: scale(1.4); @@ -72,4 +73,4 @@ #secSlides p { font-size: var(--fontSizeMedium); } -}
\ No newline at end of file +} diff --git a/Static/Css/userInfo.css b/Static/Css/userInfo.css index 45d1133..c9113df 100644 --- a/Static/Css/userInfo.css +++ b/Static/Css/userInfo.css @@ -7,6 +7,7 @@ ############################################################################ */ + .jobsListElem { border-radius: 10px; background-color: rgb(243, 201, 201); @@ -51,7 +52,7 @@ #userJob div { width: 70%; - font-size: calc(36px / 2.5); + font-size: calc(36px / 2.5); /* Pour avoir la meme hauter qu'un input */ height: 2.5em; line-height: 2.5em; display: flex; @@ -86,4 +87,4 @@ #userJob div span{ display: none; } -}
\ No newline at end of file +} diff --git a/Static/Js/index.js b/Static/Js/index.js index 31ee34f..0f15b3d 100644 --- a/Static/Js/index.js +++ b/Static/Js/index.js @@ -5,11 +5,13 @@ // # # // ############################################################################ + // **************************************************************************** // SLIDESHOW // **************************************************************************** // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters -function slideshow_start(slideNumber = 1) { +function slideshow_start() { + let slideNumber = 1; let images = [ "/Media/Images/slide0.jpg", "/Media/Images/slide1.jpg", @@ -18,7 +20,7 @@ function slideshow_start(slideNumber = 1) { setInterval(() => { // Changement de l'image de fond de de la div - document.getElementById("secSlides").style.backgroundImage = `url("${images[slideNumber]}")`; + document.getElementById("secSlides").style.backgroundImage = "url(" + images[slideNumber] + ")"; // Utilisation de ternary, utilisation: condition ? Sivrai : Sifaux // Untoggle les précedents document.getElementById(`slide_${slideNumber !== 0 ? slideNumber - 1 : images.length - 1}`).classList.toggle("show_block"); diff --git a/Static/Js/main.js b/Static/Js/main.js index 3a6c3e5..84f7151 100644 --- a/Static/Js/main.js +++ b/Static/Js/main.js @@ -12,6 +12,7 @@ // **************************************************************************** // CHANGEMENT DE LANGUE // **************************************************************************** +// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener document.getElementById("navSelLang").addEventListener("change", () => { document.getElementById("navFormLang").submit(); }); @@ -21,8 +22,11 @@ document.getElementById("navSelLang").addEventListener("change", () => { // TOGGLE UNE CLASSE SUR UN ELEMENT PARMIS PLUSIEURS IDENTIQUES // **************************************************************************** function show(parentId, element, id, className) { + // Récupération des tags dans l'élément parent (souvent table dans main) let elements = document.getElementById(parentId).getElementsByTagName(element); + // 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 for (i = 0; i < elements.length; i++) { if (elements[i].id !== id) { elements[i].classList.remove(className); @@ -39,3 +43,11 @@ function showNavButtons() { // first-child à chaque fois document.getElementsByTagName("header")[0].getElementsByTagName("a")[0].getElementsByTagName("i")[0].classList.toggle("navLinkClicked") } + + +// **************************************************************************** +// REDIRECTION +// **************************************************************************** +function redirect(page) { + window.location.href = `/${page}.php`; +} diff --git a/Static/Js/message.js b/Static/Js/message.js index 06ba511..8043a67 100644 --- a/Static/Js/message.js +++ b/Static/Js/message.js @@ -7,13 +7,6 @@ // **************************************************************************** -// REDIRECTION -// **************************************************************************** -function redirect(page) { - window.location.href = `/${page}.php`; -} - -// **************************************************************************** // DECLENCHEMENT DU TIMER POUR UNE REDIRECTION // **************************************************************************** function start_timer(page) { @@ -21,10 +14,10 @@ function start_timer(page) { let text = document.getElementById("redirect").innerHTML; setInterval(() => { if (seconds > 0) { - document.getElementById("redirect").innerHTML = `${text} ${seconds} .`; + document.getElementById("redirect").innerHTML = text + seconds + " ."; seconds --; } else { - document.getElementById("redirect").innerHTML = `${text} ${seconds} .`; + document.getElementById("redirect").innerHTML = text + seconds + " ."; redirect(page); } }, diff --git a/Static/Js/notification.js b/Static/Js/notification.js new file mode 100644 index 0000000..c15760a --- /dev/null +++ b/Static/Js/notification.js @@ -0,0 +1,18 @@ + +// ############################################################################ +// # # +// # Description: JS utile sur la page des messages # +// # # +// ############################################################################ + + +// Ajout de la class show_notif pour faire disparaitre ou apparaitre la bulle de notification +function toggle_notif() { + document.getElementById("notif").classList.toggle("show_notif"); +} + +// Timeout pour ne pas non plus agressé le client +setTimeout(() => { + toggle_notif() + } +, 1500) diff --git a/Static/Js/register.js b/Static/Js/register.js index c751b77..b22f4de 100644 --- a/Static/Js/register.js +++ b/Static/Js/register.js @@ -5,12 +5,38 @@ // # # // ############################################################################ -// Regex pour vérifier la validité du mdp -const numb = new RegExp(/[0-9]/) -const upper = new RegExp(/[A-Z]/) -const special = new RegExp(/[`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~µ°€£]/) -function is_valid(condition, element) { +// 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 [`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~µ°€£] +// 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]+$/) + +// Initialisation des variables +let validEmail; +let validNumb; +let validUpper; +let validSpecial; +let validLength; + +function valid_all() { + let submitButton = document.getElementById("submit"); + // Si tout est validé on active le button sumbit + if (validLength && validUpper && validNumb && validSpecial && validEmail) { + submitButton.classList.remove("deactivate"); + submitButton.disabled = false; + } else { + submitButton.classList.add("deactivate"); + submitButton.disabled = true; + } +} + +function valid_reg(condition, element) { // Si la regex est bonne on selectionne la class css pour l'afficher if (condition) { document.getElementById(element).classList.remove("invalid"); @@ -23,21 +49,21 @@ function is_valid(condition, element) { } } +function check_email() { + // On récupère l'email par id dans la page et on test notre regex + let email = document.getElementById("email").value; + validEmail = valid_reg(regEmail.test(email), "mailNotice"); + + valid_all(); +} + function check_pass() { - // On récupère les éléments dans la page et on test nos regex sur le mdp + // On récupère la valeur par id du mdp dans la page et on test nos regex let pass = document.getElementById("password").value; - let submitButton = document.getElementById("submit"); - let validNumb = is_valid(numb.test(pass), "passNumb"); - let validUpper = is_valid(upper.test(pass), "passUpper"); - let validSpecial = is_valid(special.test(pass), "passSpecial"); - let validLength = is_valid((pass.length >= 8), "passLength"); + 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"); - // Si tout est validé on active le button sumbit - if (validLength && validUpper && validNumb && validSpecial) { - submitButton.classList.remove("deactivate"); - submitButton.disabled = false; - } else { - submitButton.classList.add("deactivate"); - submitButton.disabled = true; - } + valid_all(); }
\ No newline at end of file diff --git a/Static/Js/userinfo.js b/Static/Js/userinfo.js index 8f1e239..460c91b 100644 --- a/Static/Js/userinfo.js +++ b/Static/Js/userinfo.js @@ -4,6 +4,7 @@ // # Description: JS utile sur la page user infos # // # # // ############################################################################ + // Mes sources pour créer cette partie: // https://stackoverflow.com/questions/1085801/get-selected-value-in-dropdown-list-using-javascript // https://stackoverflow.com/questions/47951287/dynamically-add-li-to-ul-javascript @@ -14,6 +15,7 @@ // https://www.w3docs.com/snippets/javascript/how-to-remove-an-element-from-an-array-in-javascript.html // On passe par du JSON pour passer la liste des emplois du pro + // **************************************************************************** // GESTION AJOUT/SUPPRESSION D'UN EMPLOI ET PASSAGE A L'INPUT // DES VALEURS SELECTIONNEES diff --git a/Template/Include/en/message.php b/Template/Include/en/message.php index 503fd98..8419b88 100644 --- a/Template/Include/en/message.php +++ b/Template/Include/en/message.php @@ -14,8 +14,8 @@ $messageText = [ "infosUpdate" => [ "success" => [ "success" => true, - "title" => "Update user information.", - "info" => "User informations updated !", + "title" => "Update user informations", + "info" => "Your informations have been updated!", "timer" => true, "toSrc" => true ] @@ -24,15 +24,15 @@ $messageText = [ "login" => [ "success" => [ "success" => true, - "title" => "Login.", - "info" => "Successfully logged in!", + "title" => "Sign-in", + "info" => "You are now successfully logged in!", "timer" => true, "toSrc" => false ], "fail" => [ "success" => false, - "title" => "Login.", - "info" => "Error bad credentials.", + "title" => "Sign-in", + "info" => "You have entered bad credentials.", "timer" => true, "toSrc" => true ] @@ -48,8 +48,8 @@ $messageText = [ ], "fail" => [ "success" => false, - "title" => "Login cookie.", - "info" => "Error with the cookie auto-login.", + "title" => "Auto-login", + "info" => "Something wrong happened.", "timer" => true, "toSrc" => false ] @@ -58,8 +58,8 @@ $messageText = [ "logout" => [ "success" => [ "success" => true, - "title" => "Log out.", - "info" => "Successefuly logged out!", + "title" => "Sign-out", + "info" => "You are now logged out.", "timer" => true, "toSrc" => false ] @@ -68,22 +68,22 @@ $messageText = [ "missionRegister" => [ "success" => [ "success" => true, - "title" => "Register a mission.", - "info" => "Mission registered !", + "title" => "Mandate a mission", + "info" => "Mission successfully mandated.", "timer" => true, "toSrc" => true ], "fail" => [ "success" => false, - "title" => "Mandate a mission.", - "info" => "Error, please sign-in before.", + "title" => "Mandate a mission", + "info" => "The mission has not been mandated.", "timer" => true, "toSrc" => true ], "notConnected" => [ "success" => false, - "title" => "Mandate infos.", - "info" => "Error, you must be connected, and connected as client.", + "title" => "Mandate a mission", + "info" => "You must sign-in as client first.", "timer" => true, "toSrc" => false ] @@ -92,15 +92,15 @@ $messageText = [ "missionAccepted" => [ "success" => [ "success" => true, - "title" => "Mission info.", - "info" => "Mission accepted !", + "title" => "Pending mission", + "info" => "You have accepted the mission!", "timer" => true, "toSrc" => true ], "fail" => [ "success" => false, - "title" => "Mandate infos.", - "info" => "Error, mission not accepted.", + "title" => "Pending mission", + "info" => "The mission has not been accepted.", "timer" => true, "toSrc" => true ] @@ -109,15 +109,15 @@ $messageText = [ "missionValidated" => [ "success" => [ "success" => true, - "title" => "Mission info.", - "info" => "Mission completed!", + "title" => "Mission update", + "info" => "The mission is now marked as completed!", "timer" => true, "toSrc" => true ], "fail" => [ "success" => false, - "title" => "Mandate info.", - "info" => "Error, mission not marked as completed.", + "title" => "Mandate update", + "info" => "The mission has not been marked as completed.", "timer" => true, "toSrc" => true ] @@ -126,14 +126,14 @@ $messageText = [ "missionReview" => [ "success" => [ "success" => true, - "title" => "Mission review.", - "info" => "Your review has been registered!", + "title" => "Mission review", + "info" => "Your review has been sucessfully registered!", "timer" => true, "toSrc" => true ], "fail" => [ "success" => false, - "title" => "Mission review.", + "title" => "Mission review", "info" => "Error, your review has not been resgistered.", "timer" => true, "toSrc" => true @@ -143,15 +143,15 @@ $messageText = [ "userAdd" => [ "success" => [ "success" => true, - "title" => "Register an user.", - "info" => "User successfully registered !", + "title" => "Sign-up", + "info" => "Your account has been successfully created, you can now sign-in with.", "timer" => true, "toSrc" => false ], "fail" => [ "success" => false, - "title" => "Register an user.", - "info" => "Error, user not registered.", + "title" => "Sign-up", + "info" => "We can't create an account with the given informations.", "timer" => true, "toSrc" => true ] @@ -160,15 +160,15 @@ $messageText = [ "adminDelUser" => [ "success" => [ "success" => true, - "title" => "Delete an user.", - "info" => "User deleted !", + "title" => "Deletion of an account", + "info" => "The account is successfully delated.", "timer" => true, "toSrc" => true ], "fail" => [ "success" => false, - "title" => "Delete an user.", - "info" => "No user was deleted.", + "title" => "Deletion of an account", + "info" => "The account is not delated.", "timer" => true, "toSrc" => true ] @@ -177,15 +177,15 @@ $messageText = [ "adminAddJob" => [ "success" => [ "success" => true, - "title" => "Add a job category.", - "info" => "Category added !", + "title" => "Add a job category", + "info" => "The job category is successfully added!", "timer" => true, "toSrc" => true ], "fail" => [ "success" => false, - "title" => "Add a job category.", - "info" => "Category not added.", + "title" => "Add a job category", + "info" => "The job category is not added.", "timer" => true, "toSrc" => true ] @@ -194,15 +194,15 @@ $messageText = [ "adminDelJob" => [ "success" => [ "success" => true, - "title" => "Deletion of a job category.", - "info" => "Category deleted !", + "title" => "Deletion of a job category", + "info" => "The job category is successfully deleted!", "timer" => true, "toSrc" => true ], "delete" => [ "success" => false, - "title" => "Deletion of a job category.", - "info" => "Category not deleted !", + "title" => "Deletion of a job category", + "info" => "The job category is not deleted.", "timer" => true, "toSrc" => true ] @@ -211,15 +211,15 @@ $messageText = [ "adminDelMission" => [ "success" => [ "success" => true, - "title" => "Deletion of a mission.", - "info" => "Mission deleted !", + "title" => "Deletion of a mission", + "info" => "The mission is successfully deleted!", "timer" => true, "toSrc" => true ], "delete" => [ "success" => false, - "title" => "Deletion of a mission.", - "info" => "Mission not deleted !", + "title" => "Deletion of a mission", + "info" => "The mission is not deleted.", "timer" => true, "toSrc" => true ] diff --git a/Template/Include/en/table.php b/Template/Include/en/table.php index 8aef67f..2feb5dc 100644 --- a/Template/Include/en/table.php +++ b/Template/Include/en/table.php @@ -62,7 +62,7 @@ $header = [ ], // En-tête des colonnes du tableau mes missions. "ongoingMissions" => [ - "Accpeted by pro date", + "Accepted by pro date", "Pro name", "Job", "Subject", diff --git a/Template/Include/en/text.php b/Template/Include/en/text.php index b6f81e0..417a1d9 100644 --- a/Template/Include/en/text.php +++ b/Template/Include/en/text.php @@ -7,6 +7,10 @@ // ############################################################################ $text = [ + "incl_global_notification" => [ + "header" => "Notification", + "info" => "You have a new mission!", + ], "incl_form_admin" => [ "btManageJob" => "Manage job categories", "btManageUser" => "Manage users", @@ -39,9 +43,9 @@ $text = [ "submit" => "Modify" ], "incl_form_login" => [ - "h2" => "Login", - "email" => "Email", - "password" => "Password", + "h2" => "Sign-in", + "email" => "Your email", + "password" => "Your password", "rememberMe" => "Remember me", "submit" => "Sign-in" ], @@ -49,7 +53,6 @@ $text = [ "h2" => "Form to register a mission", "subject" => "Subject", "review" => "Review", - "proId" => "Pro ID", "submit" => "Register", "jobsSel" => "Jobs" ], @@ -66,20 +69,20 @@ $text = [ "incl_global_navbar" => [ "h2" => "AlphaJob", "btnSearch" => "Search", - "btnInfos" => "Modif. infos", - "btnMission" => "Register mission", + "btnInfos" => "My infos", "btnMyMission" => "My missions", "btnAdmin" => "Administration", "btnLogin" => "Sign-in", - "btnLogout" => "Loggout", + "btnLogout" => "Sign-out", "btnRegister" => "Sign-up", "lang" => "Language", - "btnLang" => "Select" + "btnLang" => "Choose" ], "incl_form_register" => [ - "h2" => "Form to sign-up", - "email" => "Email", - "password" => "Password", + "h2" => "Sign-up", + "email" => "Your email", + "mailNotice" => "The email is valid.", + "password" => "Your password", "passNotice" => "The password must have at least:", "passLength" => "8 characters,", "passUpper" => "one uppercase,", @@ -102,9 +105,9 @@ $text = [ "mandate" => "Mandate" ], "incl_index_slideshow" => [ - "slide1" => "Find the right proffessional for you.<br><br>For all your needs.<br><br><span>AlphaJob</span>", - "slide2" => "Only the bests proffessionals can register!<br><br>Quality of work guarantee!<br><br><span>AlphaJob</span>", - "slide3" => "Find the bests offers for your website today.<br><br>Discover our ready to use solutions.<br><br><span>AlphaJob</span>" + "slide1" => "Find the right professional for you.<br><br>For all your needs.<br><br><span>AlphaJob</span>", + "slide2" => "Only the bests professionals register here!<br><br>Quality of work guarantee!<br><br><span>AlphaJob</span>", + "slide3" => "Find the best offers for your new website today.<br><br>Check our ready to use solutions.<br><br><span>AlphaJob</span>" ] ]; diff --git a/Template/Include/en/title.php b/Template/Include/en/title.php index c4fbeca..da773d6 100644 --- a/Template/Include/en/title.php +++ b/Template/Include/en/title.php @@ -8,11 +8,11 @@ $title = [ "index" => "AlphaJob - Index", - "login" => "AlphaJob - Login", + "login" => "AlphaJob - Sign-in", "message" => "AlphaJob - Message", "mission" => "AlphaJob - Manage a mission", "myMission" => "AlphaJob - My missions", - "register" => "AlphaJob - Register", + "register" => "AlphaJob - Sign-up", "userInfo" => "AlphaJob - My user informations", "admin" => "AlphaJob - Administration" ]; diff --git a/Template/Include/fr/message.php b/Template/Include/fr/message.php index ef86420..9046d07 100644 --- a/Template/Include/fr/message.php +++ b/Template/Include/fr/message.php @@ -14,8 +14,8 @@ $messageText = [ "infosUpdate" => [ "success" => [ "success" => true, - "title" => "Mise à jour des informations.", - "info" => "Informations mise à jour!", + "title" => "Mise à jour de vos informations", + "info" => "Vos Informations ont bien été mise à jour!", "timer" => true, "toSrc" => true ] @@ -24,15 +24,15 @@ $messageText = [ "login" => [ "success" => [ "success" => true, - "title" => "Connection.", - "info" => "Connection réussie!", + "title" => "Connexion", + "info" => "Vous êtes maintenant connecté!", "timer" => true, "toSrc" => false ], "fail" => [ "success" => false, - "title" => "Connection.", - "info" => "Erreur, connection échouée.", + "title" => "Connection", + "info" => "La connexion a échoué.", "timer" => true, "toSrc" => true ] @@ -48,8 +48,8 @@ $messageText = [ ], "fail" => [ "success" => false, - "title" => "Connection avec auto-connection.", - "info" => "Erreur, connection échouée.", + "title" => "Connexion auto.", + "info" => "La connexion a échoué.", "timer" => true, "toSrc" => false ] @@ -58,8 +58,8 @@ $messageText = [ "logout" => [ "success" => [ "success" => true, - "title" => "Déconnection.", - "info" => "Vous êtes déconnecté!", + "title" => "Déconnexion", + "info" => "Vous êtes maintenant déconnecté!", "timer" => true, "toSrc" => false ] @@ -68,22 +68,22 @@ $messageText = [ "missionRegister" => [ "success" => [ "success" => true, - "title" => "Requête de mission.", - "info" => "La requete a été émise!", + "title" => "Requête de mission", + "info" => "La requete a bien été émise!", "timer" => true, "toSrc" => true ], "fail" => [ "success" => false, - "title" => "Requête de mission.", - "info" => "Erreur lors de la requête.", + "title" => "Requête de mission", + "info" => "Erreur lors l'émission de la requête.", "timer" => true, "toSrc" => true ], "notConnected" => [ "success" => false, - "title" => "Requête de mission.", - "info" => "Erreur, vous devez être connecté, et connecté en tant que client.", + "title" => "Requête de mission", + "info" => "Vous devez d'abord être connecté en tant que client!", "timer" => true, "toSrc" => false ] @@ -92,15 +92,15 @@ $messageText = [ "missionAccepted" => [ "success" => [ "success" => true, - "title" => "Mission info.", - "info" => "Mission acceptée!", + "title" => "Mission info", + "info" => "La mission a été acceptée!", "timer" => true, "toSrc" => true ], "fail" => [ "success" => false, - "title" => "Mission info.", - "info" => "Erreur, mission non acceptée.", + "title" => "Mission info", + "info" => "La mission n'est pas acceptée.", "timer" => true, "toSrc" => true ] @@ -109,15 +109,15 @@ $messageText = [ "missionValidated" => [ "success" => [ "success" => true, - "title" => "Mission info.", - "info" => "Mission completée!", + "title" => "Mission info", + "info" => "La mission est signalée comme terminée!", "timer" => true, "toSrc" => true ], "fail" => [ "success" => false, - "title" => "Mandate info.", - "info" => "Erreur, mission non enregistrée comme completée.", + "title" => "Mandate info", + "info" => "La mission n'a pas pu être validée.", "timer" => true, "toSrc" => true ] @@ -126,15 +126,15 @@ $messageText = [ "missionReview" => [ "success" => [ "success" => true, - "title" => "Avis sur la mission.", + "title" => "Votre avis sur la mission", "info" => "Votre avis a bien été enregistré!", "timer" => true, "toSrc" => true ], "fail" => [ "success" => false, - "title" => "Avis sur la mission.", - "info" => "Erreur, votre avis n'a pas été enregistré.", + "title" => "Votre avis sur la mission.", + "info" => "Votre avis n'a pas pu être enregistré.", "timer" => true, "toSrc" => true ] @@ -143,15 +143,15 @@ $messageText = [ "userAdd" => [ "success" => [ "success" => true, - "title" => "Enregistrement d'un utilisateur.", - "info" => "Utilisateur enregistré!", + "title" => "Inscription", + "info" => "Votre inscription a bien été validé, vous pouvez maintenant vous connecter.", "timer" => true, "toSrc" => false ], "fail" => [ "success" => false, - "title" => "Enregistrement d'un utilisateur.", - "info" => "Erreur, l'utilisateur n'a pas été enregistré.", + "title" => "Inscription", + "info" => "Inscription impossible.", "timer" => true, "toSrc" => true ] @@ -160,15 +160,15 @@ $messageText = [ "adminDelUser" => [ "success" => [ "success" => true, - "title" => "Suppression d'un utilisateur.", - "info" => "Utilisateur supprimé!", + "title" => "Suppression d'un utilisateur", + "info" => "L'utilisateur a été supprimé!", "timer" => true, "toSrc" => true ], "fail" => [ "success" => false, - "title" => "Suppression d'un utilisateur.", - "info" => "Erreur, l'utilisateur n'a pas été supprimé.", + "title" => "Suppression d'un utilisateur", + "info" => "L'utilisateur n'a pas été supprimé.", "timer" => true, "toSrc" => true ] @@ -177,15 +177,15 @@ $messageText = [ "adminAddJob" => [ "success" => [ "success" => true, - "title" => "Ajout d'une catégorie d'emploi.", + "title" => "Ajout d'une catégorie d'emploi", "info" => "La catégorie a bien été ajoutée!", "timer" => true, "toSrc" => true ], "fail" => [ "success" => false, - "title" => "Ajout d'une catégorie d'emploi.", - "info" => "Erreur, la catégorie n'a pas été ajoutée.", + "title" => "Ajout d'une catégorie d'emploi", + "info" => "La catégorie n'a pas été ajoutée.", "timer" => true, "toSrc" => true ] @@ -194,15 +194,15 @@ $messageText = [ "adminDelJob" => [ "success" => [ "success" => true, - "title" => "Suppression d'une catégorie.", + "title" => "Suppression d'une catégorie", "info" => "Categorie supprimée!", "timer" => true, "toSrc" => true ], "delete" => [ "success" => false, - "title" => "Suppression d'une catégorie.", - "info" => "Erreur, la catégorie n'a pas été supprimée.", + "title" => "Suppression d'une catégorie", + "info" => "La catégorie n'a pas été supprimée.", "timer" => true, "toSrc" => true ] @@ -211,15 +211,15 @@ $messageText = [ "adminDelMission" => [ "success" => [ "success" => true, - "title" => "Suppression d'une mission.", + "title" => "Suppression d'une mission", "info" => "Mission supprimée!", "timer" => true, "toSrc" => true ], "delete" => [ "success" => false, - "title" => "Suppression d'une mission.", - "info" => "Erreur, la mission n'a pas été supprimée.", + "title" => "Suppression d'une mission", + "info" => "La mission n'a pas été supprimée.", "timer" => true, "toSrc" => true ] diff --git a/Template/Include/fr/table.php b/Template/Include/fr/table.php index 342b5e5..619bb32 100644 --- a/Template/Include/fr/table.php +++ b/Template/Include/fr/table.php @@ -12,9 +12,9 @@ $header = [ "ID utilisateur", "Email", "Mot de passe chiffré", - "Jeton d'auto-connection", + "Jeton d'auto-connexion", "Date d'inscription", - "Status de l'utilisateur" + "Statut de l'utilisateur" ], // En-tête des colonnes du tableau des missions de l'admin. "adminMissions" => [ diff --git a/Template/Include/fr/text.php b/Template/Include/fr/text.php index bff6489..3622669 100644 --- a/Template/Include/fr/text.php +++ b/Template/Include/fr/text.php @@ -7,6 +7,10 @@ // ############################################################################ $text = [ + "incl_global_notification" => [ + "header" => "Notification!", + "info" => "Vous avez une nouvelle mission!", + ], "incl_form_admin" => [ "btManageJob" => "Gestion des emplois", "btManageUser" => "Gestion des utilisateurs", @@ -30,28 +34,27 @@ $text = [ "adress" => "Adresse", "zipCode" => "Code postal", "city" => "Ville", - "myJobs" => "Mes emplois:", "jobsSel" => "Emplois", "jobsAdd" => "Ajouter", + "myJobs" => "Mes emplois:", "degree" => "Diplômes", "capability" => "Capacités", "description" => "Description", "submit" => "Modifier" ], "incl_form_login" => [ - "h2" => "Identification", - "email" => "Email", - "password" => "Mot de passe", + "h2" => "Connexion", + "email" => "Votre email", + "password" => "Votre mot de passe", "rememberMe" => "Se souvenir de moi", - "submit" => "Connection" + "submit" => "Connexion" ], "incl_form_mission" => [ - "h2" => "Formulaire pour enregistrer une mission", - "subject" => "Sujet", + "h2" => "Votre mission", + "subject" => "Sujet de la mission", + "jobsSel" => "Emploi", "review" => "Commentaire", - "proId" => "ID du pro", - "submit" => "Enregistrer", - "jobsSel" => "Emplois" + "submit" => "Enregistrer" ], "incl_table_myMission" => [ "pendingMission" => "Missions en attente", @@ -66,20 +69,20 @@ $text = [ "incl_global_navbar" => [ "h2" => "AlphaJob", "btnSearch" => "Rechercher", - "btnInfos" => "Modif. infos", - "btnMission" => "Enreg. mission", + "btnInfos" => "Mes infos", "btnMyMission" => "Mes missions", "btnAdmin" => "Administration", - "btnLogin" => "Connection", - "btnLogout" => "Déconnection", + "btnLogin" => "Connexion", + "btnLogout" => "Déconnexion", "btnRegister" => "Inscription", "lang" => "Langue", - "btnLang" => "Sélectionner" + "btnLang" => "Choisir" ], "incl_form_register" => [ - "h2" => "Formulaire d'inscription", - "email" => "Email", - "password" => "Mot de passe", + "h2" => "Vous inscrire", + "email" => "Votre email", + "mailNotice" => "L'email est valide.", + "password" => "Votre mot de passe", "passNotice" => "Le mot de passe doit au moins avoir:", "passLength" => "8 caractères,", "passUpper" => "une majuscule,", @@ -102,9 +105,9 @@ $text = [ "mandate" => "Mandater" ], "incl_index_slideshow" => [ - "slide1" => "Trouvez le proffessionel idéal proche de chez vous.<br><br>Pour tous vos besoins.<br><br><span>AlphaJob</span>", - "slide2" => "Seuls les meilleurs professionnels sont acceptés.<br><br>Qualité guarantie.<br><br><span>AlphaJob</span>", - "slide3" => "Les meilleurs offres pour créer votre site Web.<br><br>Découvrez nos solutions clefs en main.<br><br><span>AlphaJob</span>" + "slide1" => "Trouvez le professionel idéal proche de chez vous.<br><br>Pour tous vos besoins.<br><br><span>AlphaJob</span>", + "slide2" => "Seul les meilleurs professionnels sont acceptés.<br><br>Qualité guarantie.<br><br><span>AlphaJob</span>", + "slide3" => "Les meilleures offres pour créer votre site Web.<br><br>Découvrez nos solutions clefs en main.<br><br><span>AlphaJob</span>" ] ]; diff --git a/Template/Include/fr/title.php b/Template/Include/fr/title.php index 49285a2..c2681d2 100644 --- a/Template/Include/fr/title.php +++ b/Template/Include/fr/title.php @@ -8,7 +8,7 @@ $title = [ "index" => "AlphaJob - Index", - "login" => "AlphaJob - Connection", + "login" => "AlphaJob - Connexion", "message" => "AlphaJob - Message", "mission" => "AlphaJob - Gestion d'une mission", "myMission" => "AlphaJob - Mes missions", diff --git a/Template/Include/incl_form_mission.php b/Template/Include/incl_form_mission.php index b95c396..03d4254 100644 --- a/Template/Include/incl_form_mission.php +++ b/Template/Include/incl_form_mission.php @@ -27,15 +27,18 @@ if (isset($_SESSION["missionInitiate"]) <i class="fas fa-edit"></i> <input type="text" name="missionSubject" placeholder="'.$text[basename(__FILE__, ".php")]["subject"].'" maxlength="128" required> </label> - <select name="missionJob" required> - <option value="" selected>'.$text[basename(__FILE__, ".php")]["jobsSel"].'</option>'.PHP_EOL); + <label> + <i class="fas fa-wrench"></i> + <select id="missionJob" name="missionJob" required> + <option value="" selected>'.$text[basename(__FILE__, ".php")]["jobsSel"].'</option>'.PHP_EOL); // On loop à traves les emplois du pro et on récupère l'id et le nom pour peupler le select for ($i = 0; $i < count($_SESSION["missionInitiate"]["proJobs"]); $i++) { $categoryName = $_SESSION["missionInitiate"]["proJobs"][$i]["jobCategoryName".ucwords($_SESSION["lang"])]; $value = $_SESSION["missionInitiate"]["proJobs"][$i]["jobCategoryId"]; echo(' <option value="'.$value.'">'.$categoryName.'</option>'.PHP_EOL); } - echo(' </select> + echo(' </select> + </label> <input type="hidden" name="missionProId" value="'.$_SESSION["missionInitiate"]["proId"].'"> <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> </form> @@ -59,9 +62,9 @@ if (isset($_SESSION["missionInitiate"]) <main id="mainMission"> <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> <form id="missionForm" action="/../Core/wrapper.php" method="post"> - <label class="flex-start"> + <label> <i class="far fa-star"></i> - <select name="note" required> + <select id="missionNote" name="note" required> <option value="" selected disabled hidden>Note</option> <option value="5">5</option> <option value="4">4</option> diff --git a/Template/Include/incl_form_register.php b/Template/Include/incl_form_register.php index 849d129..402e2cc 100644 --- a/Template/Include/incl_form_register.php +++ b/Template/Include/incl_form_register.php @@ -20,8 +20,11 @@ echo('<!-- Division principale --> <div> <label> <i class="fas fa-envelope-square"></i> - <input type="email" name="email" id="email" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["email"].'" maxlength="128" required> + <input type="email" name="email" id="email" maxlength="128" onkeyup="check_email()" 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> diff --git a/Template/Include/incl_global_message.php b/Template/Include/incl_global_message.php index a0a9e5f..5e920e2 100644 --- a/Template/Include/incl_global_message.php +++ b/Template/Include/incl_global_message.php @@ -36,7 +36,8 @@ 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/message.js"></script> +<script src="/Static/Js/main.js"></script>'); // **************************************************************************** // RECUPERATION DE LA PAGE VERS LAQUELLE REDIRIGER SI CE N'EST PAS L'INDEX diff --git a/Template/Include/incl_global_notification.php b/Template/Include/incl_global_notification.php new file mode 100644 index 0000000..2c0f25b --- /dev/null +++ b/Template/Include/incl_global_notification.php @@ -0,0 +1,23 @@ +<?php + +// ############################################################################ +// # # +// # Description: Système de notification # +// # # +// ############################################################################ + +// Import du texte en fonction de la langue sélecitonnée +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\')"> + <span>🔔</span> + <h3>'.$text[basename(__FILE__, ".php")]["header"].'</h3> + <p>'.$text[basename(__FILE__, ".php")]["info"].'</p> + </a> +</aside>'); + +?>
\ No newline at end of file diff --git a/Template/Include/incl_table_myMission.php b/Template/Include/incl_table_myMission.php index d97e32d..e55346d 100644 --- a/Template/Include/incl_table_myMission.php +++ b/Template/Include/incl_table_myMission.php @@ -74,7 +74,7 @@ echo('<div id="myMissionButtons"> // **************************************************************************** // TABLEAU DES MISSIONS EN ATTENTE // **************************************************************************** -echo('<section id="secCompleted">'); +echo('<section id="secPending">'); if ($missionStatus["pending"]) { echo(' <table> <!-- En-tête --> @@ -109,7 +109,7 @@ echo('</section>'); // **************************************************************************** // TABLEAU DES MISSIONS EN COURS // **************************************************************************** -echo('<section id="secCompleted">'); +echo('<section id="secOngoing">'); if ($missionStatus["ongoing"]) { echo(' <table> <!-- En-tête --> diff --git a/Template/message.php b/Template/message.php index b28e067..b6336cf 100644 --- a/Template/message.php +++ b/Template/message.php @@ -36,7 +36,6 @@ 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"); ?> - <script src="/Static/Js/main.js"></script> </body> </html> <?php unset($_SESSION["messageNumber"]); ?> @@ -44,6 +44,9 @@ if (isset($_COOKIE["autoLogin"]) && $_SESSION["loggedIn"] == false) { <!-- Balise contenant les metadata --> <head> <?php require_once(dirname( __FILE__ )."./Template/Include/incl_global_header.php"); ?> +<?php if (isset($_SESSION["notification"]) && $_SESSION["notification"]) { + echo(' <link href="/Static/Css/notification.css" rel="stylesheet">'.PHP_EOL); +} ?> <?php echo(' <link href="/Static/Css/slideshow.css" rel="stylesheet">'.PHP_EOL); ?> <?php echo(' <link href="/Static/Css/search.css" rel="stylesheet">'.PHP_EOL); ?> <?php require_once(dirname( __FILE__ )."./Template/Include/".$_SESSION["lang"]."/title.php"); ?> @@ -51,12 +54,18 @@ if (isset($_COOKIE["autoLogin"]) && $_SESSION["loggedIn"] == false) { </head> <!-- Balise principale contenant le corps du document HTML --> <body> +<?php if (isset($_SESSION["notification"]) && $_SESSION["notification"]) { + require_once("./Template/Include/incl_global_notification.php"); +} ?> <?php require_once("./Template/Include/incl_global_navbar.php"); ?> <?php require_once("./Template/Include/incl_index_slideshow.php"); ?> <?php require_once("./Template/Include/incl_index_search.php");?> <?php require_once("./Template/Include/incl_global_footer.php"); ?> <script src="/Static/Js/main.js"></script> <script src="/Static/Js/index.js"></script> +<?php if (isset($_SESSION["notification"]) && $_SESSION["notification"]) { + echo(' <script src="/Static/Js/notification.js"></script>'); +} ?> <!-- Activation du slider --> <script>slideshow_start();</script> </body> |
