summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDebulois <quentin@debulois.fr>2022-04-10 21:25:00 +0200
committerDebulois <quentin@debulois.fr>2022-04-10 21:25:00 +0200
commit2923e6fca634231533cca11e43a9091344ff4ba5 (patch)
tree7181e1b0e26ddb072530adec7d55f77e9e389783
parent9939f74c0b274ee916f742a45a32d3c843e0960b (diff)
Ajout d'un système de notification pour alerter les pro et finition
-rw-r--r--Core/Functions/func_login.php21
-rw-r--r--Core/Functions/func_myMission.php5
-rw-r--r--Core/Functions/func_register.php14
-rw-r--r--Database/dbmain.php34
-rw-r--r--Database/meth_dbmission.php2
-rw-r--r--Database/meth_dbuser.php8
-rw-r--r--Documents_et_infos/Zooning_maquette_graphique/zooning_avance.epgzbin60712 -> 64354 bytes
-rw-r--r--Documents_et_infos/todo.txt16
-rw-r--r--Static/Css/admin.css5
-rw-r--r--Static/Css/footer.css1
-rw-r--r--Static/Css/login.css1
-rw-r--r--Static/Css/main.css85
-rw-r--r--Static/Css/message.css3
-rw-r--r--Static/Css/mission.css7
-rw-r--r--Static/Css/myMission.css1
-rw-r--r--Static/Css/navbar.css3
-rw-r--r--Static/Css/notification.css123
-rw-r--r--Static/Css/register.css4
-rw-r--r--Static/Css/search.css5
-rw-r--r--Static/Css/slideshow.css3
-rw-r--r--Static/Css/userInfo.css5
-rw-r--r--Static/Js/index.js6
-rw-r--r--Static/Js/main.js12
-rw-r--r--Static/Js/message.js11
-rw-r--r--Static/Js/notification.js18
-rw-r--r--Static/Js/register.js64
-rw-r--r--Static/Js/userinfo.js2
-rw-r--r--Template/Include/en/message.php94
-rw-r--r--Template/Include/en/table.php2
-rw-r--r--Template/Include/en/text.php31
-rw-r--r--Template/Include/en/title.php4
-rw-r--r--Template/Include/fr/message.php88
-rw-r--r--Template/Include/fr/table.php4
-rw-r--r--Template/Include/fr/text.php45
-rw-r--r--Template/Include/fr/title.php2
-rw-r--r--Template/Include/incl_form_mission.php13
-rw-r--r--Template/Include/incl_form_register.php5
-rw-r--r--Template/Include/incl_global_message.php3
-rw-r--r--Template/Include/incl_global_notification.php23
-rw-r--r--Template/Include/incl_table_myMission.php4
-rw-r--r--Template/message.php1
-rw-r--r--index.php9
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
index db034cb..723e951 100644
--- a/Documents_et_infos/Zooning_maquette_graphique/zooning_avance.epgz
+++ b/Documents_et_infos/Zooning_maquette_graphique/zooning_avance.epgz
Binary files differ
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()">&#10006;</button>
+ <a onclick="redirect(\'Template/myMission\')">
+ <span>&#128276;</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"]); ?>
diff --git a/index.php b/index.php
index 0a34e50..a6f9fdb 100644
--- a/index.php
+++ b/index.php
@@ -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>