Merge branch 'master' of https://codefirst.iut.uca.fr/git/jade.van_brabandt/3.01-QCM_MuscuMaths
continuous-integration/drone/push Build is passing Details

pull/37/head
Maxence GUITARD 1 year ago
commit 60ac160cca

@ -6,14 +6,14 @@ class Lobby
private int $id; private int $id;
private string $name; private string $name;
private string $password; private string $password;
private int $nbPlayer; private int $nbPlayers;
public function __construct(int $id, string $name, string $password, int $nbPlayer) public function __construct(int $id, string $name, string $password, int $nbPlayers)
{ {
$this->id = $id; $this->id = $id;
$this->name = $name; $this->name = $name;
$this->password = $password; $this->password = $password;
$this->nbPlayer = $nbPlayer; $this->nbPlayer = $nbPlayers;
} }
public function getId(): int public function getId(): int
@ -26,12 +26,13 @@ class Lobby
return $this->name; return $this->name;
} }
public function getNbPlayer() public function getNbPlayers()
{ {
return $this->nbPlayer; return $this->nbPlayers;
} }
public function setNbplayer(int $nbPlayer)
public function setNbplayers(int $nbPlayers)
{ {
$this->nbPlayer = $nbPlayer; $this->nbPlayer = $nbPlayers;
} }
} }

@ -51,21 +51,24 @@ class ControllerAdminAdministrators
function add($param) function add($param)
{ {
if ($_SERVER['REQUEST_METHOD'] !== 'POST') { if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
$_SESSION["error"]="Méthode non autorisée."; $_SESSION["error"] = "Méthode non autorisée.";
header("Location:/admin/administrators");
} else { } else {
$username = $_POST['username']; $username = $_POST['username'];
$password = $_POST['password']; $password = $_POST['password'];
$username = trim($_POST['username']); $username = trim($_POST['username']);
$password = trim($_POST['password']); $password = trim($_POST['password']);
if (!isset($username) || !isset($password) || empty($username) || empty($password)) { if (!isset($username) || !isset($password) || empty($username) || empty($password)) {
$_SESSION["error"]="Veuillez remplir tous les champs."; $_SESSION["error"] = "Veuillez remplir tous les champs.";
header("Location:/admin/administrators");
} else { } else {
$Admin = [ $Admin = [
'username' => $username, 'username' => $username,
'password' => $password, 'password' => $password,
]; ];
if ($this->mdAdministrator->verifyAdministratorByName($Admin) != null) { if ($this->mdAdministrator->verifyAdministratorByName($Admin) != null) {
$_SESSION["error"]="Cet admin existe déjà."; $_SESSION["error"] = "Cet admin existe déjà.";
header("Location:/admin/administrators");
} else { } else {
$this->mdAdministrator->addAdministrator($Admin); $this->mdAdministrator->addAdministrator($Admin);
header("Location:/admin/administrators"); header("Location:/admin/administrators");
@ -76,28 +79,48 @@ class ControllerAdminAdministrators
function updatemodal($param) function updatemodal($param)
{ {
if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
$administrator = $this->mdAdministrator->getAdministratorByID($param["id"]); $_SESSION["error"] = "Méthode non autorisée.";
header("Location:/admin/administrators");
echo $this->twig->render($this->vues["adminAdministratorsModal"], [ } else {
'administrator' => $administrator, $administrator = $this->mdAdministrator->getAdministratorByID($param["id"]) ?? null;
]); if ($administrator == null) {
$_SESSION["error"] = "Cet admin n'existe pas.";
header("Location:/admin/administrators");
} else {
echo $this->twig->render($this->vues["adminAdministratorsModal"], [
'administrator' => $administrator,
]);
}
}
} }
function update($param) function update($param)
{ {
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
$id = $_POST['id']; $_SESSION["error"] = "Méthode non autorisée.";
$username = $_POST['username']; header("Location:/admin/administrators");
$password = $_POST['password']; } else {
$id = $_POST['id'];
$Admin = [ $username = $_POST['username'];
'username' => $username, $password = $_POST['password'];
'password' => $password, $username = trim($_POST['username']);
]; $password = trim($_POST['password']);
if (!isset($username) || !isset($password) || empty($username) || empty($password)) {
$this->mdAdministrator->updateAdministrator($id, $Admin); $_SESSION["error"] = "Veuillez remplir tous les champs.";
header("Location:/admin/administrators");
header("Location:/admin/administrators"); } else {
$Admin = [
'username' => $username,
'password' => $password,
];
if ($this->mdAdministrator->verifyAdministratorByName($Admin) != null) {
$_SESSION["error"] = "Cet admin existe déjà.";
} else {
$this->mdAdministrator->updateAdministrator($id, $Admin);
header("Location:/admin/administrators");
}
}
}
} }
} }

@ -15,69 +15,100 @@ class ControllerAdminChapters
function __construct() function __construct()
{ {
global $vues, $twig; global $vues, $twig;
session_start(); session_start();
try { try {
if($_SESSION["idAdminConnected"] != null){ if ($_SESSION["idAdminConnected"] != null) {
$this->twig =$twig; $this->twig = $twig;
$this->vues = $vues; $this->vues = $vues;
$this->mdChapter = new ModelChapter(); $this->mdChapter = new ModelChapter();
$chapters = $this->mdChapter->getChapters(); $chapters = $this->mdChapter->getChapters();
echo $twig->render($vues["adminChapters"], [ echo $twig->render($vues["adminChapters"], [
'chapters' => $chapters, 'chapters' => $chapters,
]); 'error' => $_SESSION["error"],
} ]);
else { $_SESSION["error"] = null;
header("Location:/loginAdmin"); } else {
} header("Location:/loginAdmin");
} catch (PDOException $e) {
// Gérez les erreurs PDO ici
} catch (Exception $e2) {
// Gérez d'autres erreurs ici
} }
} catch (PDOException $e) {
// Gérez les erreurs PDO ici
} catch (Exception $e2) {
// Gérez d'autres erreurs ici
}
} }
function delete($param) { function delete($param)
{
$this->mdChapter->deleteChapter($param["id"]); $this->mdChapter->deleteChapter($param["id"]);
header("Location:/admin/chapters"); header("Location:/admin/chapters");
} }
function add($param) { function add($param)
{
$name = $_POST['name']; $trimmedName = trim($_POST['name']);
if (isset($_POST['name']) && !empty($_POST['name']) && !empty($trimmedName)) {
$Chapter = [ $name = $_POST['name'];
'name' => $name, $Chapter = [
]; 'name' => $name,
];
$this->mdChapter->addChapter($Chapter); $this->mdChapter->addChapter($Chapter);
header("Location:/admin/chapters");
header("Location:/admin/chapters"); } else {
$_SESSION["error"] = "Veuillez remplir le champ";
header("Location:/admin/chapters");
return;
}
} }
function updatemodal($param) { function updatemodal($param)
{
$chapter = $this->mdChapter->getChapterByID($param["id"]); if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
$_SESSION["error"] = "Méthode non autorisée.";
echo $this->twig->render($this->vues["adminChaptersModal"], [ header("Location:/admin/chapters");
'chapter' => $chapter, } else {
]); $chapter = $this->mdChapter->getChapterByID($param["id"]) ?? null;
if ($chapter == null) {
$_SESSION["error"] = "Chapitre introuvable.";
header("Location:/admin/chapters");
} else {
echo $this->twig->render($this->vues["adminChaptersModal"], [
'chapter' => $chapter,
]);
}
}
} }
function update($param) { function update($param)
{
$id = $_POST['id']; var_dump($_SESSION["error"]);
$name = $_POST['name']; if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
$_SESSION["error"] = "Méthode non autorisée.";
$Chapter = [ header("Location:/admin/chapters");
'name' => $name, } else {
]; $id = $_POST['id'];
$name = $_POST['name'];
$this->mdChapter->updateChapter($id,$Chapter); $trimmedName = trim($_POST['name']);
if (!isset($name) || empty($name) || empty($trimmedName)) {
header("Location:/admin/chapters"); $_SESSION["error"] = "Veuillez remplir le champ.";
header("Location:/admin/chapters");
} else {
$chapter = $this->mdChapter->verifyChapterByName($name) ?? null;
if ($chapter != null) {
$_SESSION["error"] = "Ce chapitre existe déjà.";
header("Location:/admin/chapters");
} else {
$Chapter = [
'name' => $name,
];
$this->mdChapter->updateChapter($id, $Chapter);
header("Location:/admin/chapters");
}
}
}
} }
} }

@ -36,7 +36,9 @@ class ControllerAdminQuestions
echo $twig->render($vues["adminQuestions"], [ echo $twig->render($vues["adminQuestions"], [
'questions' => $questions, 'questions' => $questions,
'chapters' => $chapters, 'chapters' => $chapters,
'error' => $_SESSION["error"],
]); ]);
$_SESSION["error"] = null;
} else { } else {
header("Location:/loginAdmin"); header("Location:/loginAdmin");
} }
@ -55,106 +57,147 @@ class ControllerAdminQuestions
function add($param) function add($param)
{ {
$content = $_POST['content']; if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
$idChapter = intval($_POST['idChapter']); $_SESSION["error"] = "Méthode non autorisée.";
$AnswersPost = array(); header("Location:/admin/questions");
$AnswersPost[0] = $_POST['answer1']; } else {
$AnswersPost[1] = $_POST['answer2']; $trimmedContent = trim($_POST['content']);
$AnswersPost[2] = $_POST['answer3']; $trimmedAnswer1 = trim($_POST['answer1']);
$AnswersPost[3] = $_POST['answer4']; $trimmedAnswer2 = trim($_POST['answer2']);
$correctAnswer = intval($_POST['correctAnswer']); $trimmedAnswer3 = trim($_POST['answer3']);
$trimmedAnswer4 = trim($_POST['answer4']);
$Question = [ if (
'content' => $content, isset($_POST['content']) && !empty($_POST['content']) && !empty($trimmedContent)
'idchapter' => $idChapter, && isset($_POST['answer1']) && !empty($_POST['answer1']) && !empty($trimmedAnswer1)
'idanswergood' => $correctAnswer, && isset($_POST['answer2']) && !empty($_POST['answer2']) && !empty($trimmedAnswer2)
'difficulty' => 1, && isset($_POST['answer3']) && !empty($_POST['answer3']) && !empty($trimmedAnswer3)
'nbfails' => 0, && isset($_POST['answer4']) && !empty($_POST['answer4']) && !empty($trimmedAnswer4)
]; ) {
$content = $_POST['content'];
$idquestion = intval($this->mdQuestion->addQuestion($Question)); $idChapter = intval($_POST['idChapter']);
$AnswersPost = array();
for ($i = 0; $i <= 3; $i++) { $AnswersPost[0] = $_POST['answer1'];
$Answers[] = [ $AnswersPost[1] = $_POST['answer2'];
'content' => $AnswersPost[$i], $AnswersPost[2] = $_POST['answer3'];
'idquestion' => $idquestion, $AnswersPost[3] = $_POST['answer4'];
]; $correctAnswer = intval($_POST['correctAnswer']);
}
$Question = [
'content' => $content,
$answersId = array(); 'idchapter' => $idChapter,
for ($i = 0; $i <= 3; $i++) { 'idanswergood' => $correctAnswer,
$answersId[$i] = $this->mdAnswer->addAnswer($Answers[$i]); 'difficulty' => 1,
'nbfails' => 0,
];
$idquestion = intval($this->mdQuestion->addQuestion($Question));
for ($i = 0; $i <= 3; $i++) {
$Answers[] = [
'content' => $AnswersPost[$i],
'idquestion' => $idquestion,
];
}
$answersId = array();
for ($i = 0; $i <= 3; $i++) {
$answersId[$i] = $this->mdAnswer->addAnswer($Answers[$i]);
}
$Question = [
'content' => $content,
'idchapter' => $idChapter,
'difficulty' => 1,
'nbfails' => 0,
'idanswergood' => $answersId[$correctAnswer],
];
$this->mdQuestion->updateQuestion($idquestion, $Question);
header("Location:/admin/questions");
} else {
$_SESSION["error"] = "Veuillez remplir tous les champs";
header("Location:/admin/questions");
}
} }
$Question = [
'content' => $content,
'idchapter' => $idChapter,
'difficulty' => 1,
'nbfails' => 0,
'idanswergood' => $answersId[$correctAnswer],
];
$this->mdQuestion->updateQuestion($idquestion, $Question);
header("Location:/admin/questions");
} }
function updatemodal($param) function updatemodal($param)
{ {
$question = $this->mdQuestion->getQuestionByID($param["id"]);
$answers = $this->mdAnswer->getAnswersByIDQuestions($param["id"]); $question = $this->mdQuestion->getQuestionByID($param["id"]) ?? null;
$answers = $this->mdAnswer->getAnswersByIDQuestions($param["id"]) ?? null;
$chapters = $this->mdChapter->getChapters() ?? null;
$chapters = $this->mdChapter->getChapters(); if ($question == null || $answers == null || $chapters == null) {
$_SESSION["error"] = "Erreur lors de la récupération des données";
header("Location:/admin/questions");
} else {
echo $this->twig->render($this->vues["adminQuestionsModal"], [ echo $this->twig->render($this->vues["adminQuestionsModal"], [
'question' => $question, 'question' => $question,
'chapters' => $chapters, 'chapters' => $chapters,
'answers' => $answers, 'answers' => $answers,
]); ]);
}
} }
function update($param) function update($param)
{ {
if (
isset($_POST['content'], $_POST['answer1'], $_POST['answer2'], $_POST['answer3'], $_POST['answer4'], $_POST['idChapter'], $_POST['correctAnswer']) &&
!empty($_POST['content']) && !empty(trim($_POST['content'])) &&
!empty($_POST['answer1']) && !empty(trim($_POST['answer1'])) &&
!empty($_POST['answer2']) && !empty(trim($_POST['answer2'])) &&
!empty($_POST['answer3']) && !empty(trim($_POST['answer3'])) &&
!empty($_POST['answer4']) && !empty(trim($_POST['answer4'])) &&
!empty($_POST['idChapter']) &&
is_numeric($_POST['correctAnswer']) && $_POST['correctAnswer'] >= 0 && $_POST['correctAnswer'] <= 3
) {
$id = intval($_POST['id']);
$content = $_POST['content'];
$idChapter = intval($_POST['idChapter']);
$correctAnswer = intval($_POST['correctAnswer']);
$answersId = array();
$answersId[0] = intval($_POST['IdAnswer1']);
$answersId[1] = intval($_POST['IdAnswer2']);
$answersId[2] = intval($_POST['IdAnswer3']);
$answersId[3] = intval($_POST['IdAnswer4']);
$answers = array();
$answers[0] = $_POST['answer1'];
$answers[1] = $_POST['answer2'];
$answers[2] = $_POST['answer3'];
$answers[3] = $_POST['answer4'];
$questionDataArray = [
'content' => $content,
'idchapter' => $idChapter,
'idanswergood' => $answersId[$correctAnswer],
];
$id = intval($_POST['id']); $this->mdQuestion->updateQuestion($id, $questionDataArray);
$content = $_POST['content'];
$idChapter = intval($_POST['idChapter']);
$correctAnswer = intval($_POST['correctAnswer']);
$answersId = array();
$answersId[0] = intval($_POST['IdAnswer1']);
$answersId[1] = intval($_POST['IdAnswer2']);
$answersId[2] = intval($_POST['IdAnswer3']);
$answersId[3] = intval($_POST['IdAnswer4']);
$answers = array();
$answers[0] = $_POST['answer1'];
$answers[1] = $_POST['answer2'];
$answers[2] = $_POST['answer3'];
$answers[3] = $_POST['answer4'];
$questionDataArray = [ for ($i = 0; $i <= 3; $i++) {
'content' => $content, $answersDataArray[] = [
'idchapter' => $idChapter, 'content' => $answers[$i],
'idanswergood' => $answersId[$correctAnswer], 'id' => $id,
]; ];
}
$this->mdQuestion->updateQuestion($id, $questionDataArray); for ($i = 0; $i <= 3; $i++) {
$this->mdAnswer->updateAnswer($answersId[$i], $answersDataArray[$i]);
}
for ($i = 0; $i <= 3; $i++) { header("Location:/admin/questions");
$answersDataArray[] = [
'content' => $answers[$i],
'id' => $id,
];
}
for ($i = 0; $i <= 3; $i++) { } else {
$this->mdAnswer->updateAnswer($answersId[$i], $answersDataArray[$i]); $_SESSION["error"] = "Veuillez remplir tous les champs";
header("Location:/admin/questions");
} }
header("Location:/admin/questions");
} }
} }

@ -25,7 +25,6 @@ class ControllerUserLobby
$lobbies = $this->mdLobby->getlobbies(); $lobbies = $this->mdLobby->getlobbies();
echo $twig->render($vues["lobby"], [ echo $twig->render($vues["lobby"], [
'lobbies' => $lobbies, 'lobbies' => $lobbies,
]); ]);

@ -33,7 +33,7 @@ class FrontController
$router->map('GET', '/admin/questions', 'ControllerAdminQuestions'); $router->map('GET', '/admin/questions', 'ControllerAdminQuestions');
$router->map('POST', '/admin/questions/[a:action]', 'ControllerAdminQuestions'); $router->map('POST', '/admin/questions/[a:action]', 'ControllerAdminQuestions');
$router->map('GET', '/admin/questions/[a:action]/[i:id]', 'ControllerAdminQuestions'); $router->map('GET', '/admin/questions/[a:action]/[i:id]', 'ControllerAdminQuestions');
$router->map('GET', '/lobby', 'ControllerUserLobby'); $router->map('GET', '/lobby/list', 'ControllerUserLobby');
$router->map('POST', '/user/players/[a:action]', 'ControllerUserPlayers'); $router->map('POST', '/user/players/[a:action]', 'ControllerUserPlayers');
$router->map('GET', '/user/players/[a:action]/[i:id]', 'ControllerUserPlayers'); $router->map('GET', '/user/players/[a:action]/[i:id]', 'ControllerUserPlayers');

@ -62,7 +62,7 @@ class GatewayChapter
$this->con->executeQuery($query, array(':id' => array($id, PDO::PARAM_INT))); $this->con->executeQuery($query, array(':id' => array($id, PDO::PARAM_INT)));
} }
public function verifyChapter($id) public function verifyChapterByID($id)
{ {
$query = "SELECT chapters.id FROM chapters WHERE id = :id;"; $query = "SELECT chapters.id FROM chapters WHERE id = :id;";
$this->con->executeQuery( $this->con->executeQuery(
@ -74,4 +74,17 @@ class GatewayChapter
$results = $this->con->getResults(); $results = $this->con->getResults();
return $results[0]; return $results[0];
} }
public function verifyChapterByName($name)
{
$query = "SELECT * FROM chapters WHERE name = :name;";
$this->con->executeQuery(
$query,
array(
':name' => array($name, PDO::PARAM_STR)
)
);
$results = $this->con->getResults();
return $results[0];
}
} }

@ -31,12 +31,10 @@ class GatewayLobby
public function getLobbies() public function getLobbies()
{ {
$query = "SELECT * FROM Lobbies;"; $query = "SELECT * FROM lobbies;";
$this->con->executeQuery($query); $this->con->executeQuery($query);
$results = $this->con->getResults(); $results = $this->con->getResults();
if ($results == NULL) {
return false;
}
return $results; return $results;
} }

@ -22,8 +22,12 @@ class ModelAdministrator
public function getAdministratorByID($id) public function getAdministratorByID($id)
{ {
$administratorDataArray = $this->gwAdministrator->getAdministratorByID($id); $administratorDataArray = $this->gwAdministrator->getAdministratorByID($id);
$administrator = new Administrator($administratorDataArray["id"],$administratorDataArray["username"], $administratorDataArray["password"]); if ($administratorDataArray == null) {
return $administrator; return null;
} else {
$administrator = new Administrator($administratorDataArray["id"], $administratorDataArray["username"], $administratorDataArray["password"]);
return $administrator;
}
} }
public function getAdministrators() public function getAdministrators()
@ -31,7 +35,7 @@ class ModelAdministrator
$administratorsDataArray = $this->gwAdministrator->getAdministrators(); $administratorsDataArray = $this->gwAdministrator->getAdministrators();
$administrators = array(); $administrators = array();
foreach ($administratorsDataArray as $administratorDataArray) { foreach ($administratorsDataArray as $administratorDataArray) {
$administrator = new Administrator($administratorDataArray["id"],$administratorDataArray["username"], $administratorDataArray["password"]); $administrator = new Administrator($administratorDataArray["id"], $administratorDataArray["username"], $administratorDataArray["password"]);
$administrators[] = $administrator; $administrators[] = $administrator;
} }
return $administrators; return $administrators;

@ -30,12 +30,16 @@ class ModelAnswer
function getAnswersByIDQuestions($idQuestion) function getAnswersByIDQuestions($idQuestion)
{ {
$answersDataArray = $this->gwAnswer->getAnswersByIDQuestions($idQuestion); $answersDataArray = $this->gwAnswer->getAnswersByIDQuestions($idQuestion);
$answers = array(); if ($answersDataArray == null) {
foreach ($answersDataArray as $answerDataArray) { return null;
$answer = new Answer($answerDataArray['id'], $answerDataArray['content'], $idQuestion); } else {
$answers[] = $answer; $answers = array();
foreach ($answersDataArray as $answerDataArray) {
$answer = new Answer($answerDataArray['id'], $answerDataArray['content'], $idQuestion);
$answers[] = $answer;
}
return $answers;
} }
return $answers;
} }
function updateAnswer($answersId, $answer) function updateAnswer($answersId, $answer)

@ -17,12 +17,16 @@ class ModelChapter
function getChapters() function getChapters()
{ {
$chaptersDataArray = $this->gwChapter->getChapters(); $chaptersDataArray = $this->gwChapter->getChapters();
$chapters = array(); if ($chaptersDataArray == null) {
foreach ($chaptersDataArray as $chapterDataArray) { return null;
$chapter = new Chapter($chapterDataArray['id'],$chapterDataArray["name"]); } else {
$chapters[] = $chapter; $chapters = array();
foreach ($chaptersDataArray as $chapterDataArray) {
$chapter = new Chapter($chapterDataArray['id'], $chapterDataArray["name"]);
$chapters[] = $chapter;
}
return $chapters;
} }
return $chapters;
} }
function deleteChapter($id) function deleteChapter($id)
@ -38,8 +42,12 @@ class ModelChapter
function getChapterByID($id) function getChapterByID($id)
{ {
$chapterDataArray = $this->gwChapter->getChapterByID($id); $chapterDataArray = $this->gwChapter->getChapterByID($id);
$chapter = new Chapter($chapterDataArray['id'],$chapterDataArray['name']); if ($chapterDataArray == null) {
return $chapter; return null;
} else {
$chapter = new Chapter($chapterDataArray['id'], $chapterDataArray['name']);
return $chapter;
}
} }
function updateChapter($id, $chapter) function updateChapter($id, $chapter)
@ -48,7 +56,15 @@ class ModelChapter
} }
public function verifyChapter($chapter) public function verifyChapter($chapter)
{ {
$id = $this->gwChapter->verifyChapter($chapter); $id = $this->gwChapter->verifyChapterByID($chapter);
return $id;
}
public function verifyChapterByName($name)
{
$id = $this->gwChapter->verifyChapterByName($name);
if ($id == null) {
return null;
}
return $id; return $id;
} }
} }

@ -23,15 +23,17 @@ class ModelLobby
{ {
$lobbiesDataArray = $this->gwLobby->getLobbies(); $lobbiesDataArray = $this->gwLobby->getLobbies();
$lobbies = array(); $lobbies = array();
foreach ($lobbiesDataArray as $lobbyDataArray) { foreach ($lobbiesDataArray as $lobbyDataArray) {
$lobby = new Lobby( $lobby = new Lobby(
intval($lobbyDataArray['id']), intval($lobbyDataArray['id']),
$lobbyDataArray['name'], $lobbyDataArray['name'],
$lobbyDataArray['password'], $lobbyDataArray['password'],
intval($lobbyDataArray['nbPlayer']) intval($lobbyDataArray['nbplayers'])
); );
$lobbies[] = $lobby; $lobbies[] = $lobby;
return $lobbies;
} }
return $lobbies; // Move the return statement outside the foreach loop
} }
} }

@ -15,7 +15,7 @@ class ModelQuestion
$this->gwQuestion = new GatewayQuestion(); $this->gwQuestion = new GatewayQuestion();
} }
function getQuestions() : array function getQuestions(): array
{ {
$questionsDataArray = $this->gwQuestion->getQuestions(); $questionsDataArray = $this->gwQuestion->getQuestions();
$questions = array(); $questions = array();
@ -50,15 +50,19 @@ class ModelQuestion
function getQuestionByID($id) function getQuestionByID($id)
{ {
$questionDataArray = $this->gwQuestion->getQuestionByID($id); $questionDataArray = $this->gwQuestion->getQuestionByID($id);
$question = new Question( if ($questionDataArray == null) {
intval($questionDataArray['id']), return null;
$questionDataArray['content'], } else {
intval($questionDataArray['idchapter']), $question = new Question(
intval($questionDataArray['idanswergood']), intval($questionDataArray['id']),
intval($questionDataArray['difficulty']), $questionDataArray['content'],
intval($questionDataArray['nbfails']) intval($questionDataArray['idchapter']),
); intval($questionDataArray['idanswergood']),
return $question; intval($questionDataArray['difficulty']),
intval($questionDataArray['nbfails'])
);
return $question;
}
} }
function updateQuestion($id, $questionDataArray) function updateQuestion($id, $questionDataArray)

@ -2,14 +2,14 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset=utf-8> <meta charset="UTF-8">
<title>Math'Educ</title> <title>Math'Educ</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
</head> </head>
<body style="color:white;"> <body id="bodyStyle">
<div class="container-fluid text-center pt-5" style="height:85vh;"> <div class="container-fluid text-center pt-5" style="height:85vh;">
<form class="row g-3 needs-validation w-100" action="traitementAjout.php" method="post" novalidate> <form class="row g-3 needs-validation w-100" action="traitementAjout.php" method="post" novalidate>
<div class="container fs-2"> <div class="container fs-2">

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
@ -16,6 +16,7 @@
</div> </div>
<div class="container mt-5 text-light fs-4"> <div class="container mt-5 text-light fs-4">
<h1>Liste des administrators</h1> <h1>Liste des administrators</h1>
<p class="text-center bg-danger"> {{ error }} </p>
<ul class="list-group"> <ul class="list-group">
{% for admin in administrators %} {% for admin in administrators %}
<li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary"> <li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary">

@ -1,15 +1,14 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</script> <link rel="stylesheet" href="../../../css/global.css">
<link rel="stylesheet" href="css/global.css">
</head> </head>
<body> <body id="bodyStyle">
<div class="modal fade" id="modalUpdateAdministrators"> <div class="modal fade" id="modalUpdateAdministrators">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
@ -17,6 +17,7 @@
</div> </div>
<div class="container mt-5 text-light fs-4"> <div class="container mt-5 text-light fs-4">
<h1>Liste des chapitres</h1> <h1>Liste des chapitres</h1>
<p class="text-center bg-danger"> {{ error }} </p>
<ul class="list-group"> <ul class="list-group">
{% for chapter in chapters %} {% for chapter in chapters %}
<li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary"> <li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary">

@ -1,15 +1,15 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</script> </script>
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../../../css/global.css">
</head> </head>
<body> <body id="bodyStyle">
<div class="modal fade" id="modalUpdateChapters"> <div class="modal fade" id="modalUpdateChapters">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
@ -17,6 +17,7 @@
</div> </div>
<div class="container mt-5 text-light fs-4"> <div class="container mt-5 text-light fs-4">
<h1>Liste des questions</h1> <h1>Liste des questions</h1>
<p class="text-center bg-danger"> {{ error }} </p>
<ul class="list-group"> <ul class="list-group">
{% for question in questions %} {% for question in questions %}
<li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary"> <li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary">
@ -31,7 +32,7 @@
</div> </div>
<div class="container mt-3 d-flex justify-content-between"> <div class="container mt-3 d-flex justify-content-between">
<a type="button" href="/admin/chapters" class="btn btn-secondary fs-5"> ← Chapitres</a> <a type="button" href="/admin/chapters" class="btn btn-secondary fs-5"> ← Chapitres</a>
<button type="button" class="btn btn-primary fs-5" data-bs-toggle="modal" data-bs-target="#modalquestions">Ajouter un chapitre</button> <button type="button" class="btn btn-primary fs-5" data-bs-toggle="modal" data-bs-target="#modalquestions">Ajouter une question</button>
<a type="button" href="/admin/administrators" class="btn btn-secondary fs-5">Administrateurs →</a> <a type="button" href="/admin/administrators" class="btn btn-secondary fs-5">Administrateurs →</a>
</div> </div>

@ -1,15 +1,15 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</script> </script>
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../../../css/global.css">
</head> </head>
<body> <body id="bodyStyle">
<div class="modal fade" id="modalUpdateQuestions"> <div class="modal fade" id="modalUpdateQuestions">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">

@ -2,9 +2,9 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Maths'Educ</title> <title>Math'Educ</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
</head> </head>
<body id="bodyStyle"> <body id="bodyStyle">
<div class="fs-1 text-light text-center mt-5"> <div class="fs-1 text-light text-center mt-5">

@ -3,9 +3,9 @@
<head> <head>
<meta charset=utf-8> <meta charset=utf-8>
<title>Maths'Educ</title> <title>Math'Educ</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
</head> </head>
<body id="bodyStyle"> <body id="bodyStyle">
@ -29,7 +29,7 @@
</h1> </h1>
</div> </div>
</a> </a>
<a href="/lobby" class="text-white m-3 container text-center d-flex align-items-center w-75 rounded border border-white text-center" style="background-color:orange;text-decoration: none;color: black;height:20vh;"> <a href="/lobby/list" class="text-white m-3 container text-center d-flex align-items-center w-75 rounded border border-white text-center" style="background-color:orange;text-decoration: none;color: black;height:20vh;">
<div class="container text-center d-flex align-items-center text-center"> <div class="container text-center d-flex align-items-center text-center">
<h1 class="mx-auto fs-1"> <h1 class="mx-auto fs-1">
MULTIJOUEUR MULTIJOUEUR

@ -2,7 +2,7 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset=utf-8> <meta charset=utf-8>
<title>Maths'Educ</title> <title>Math'Educ</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="/css/global.css"> <link rel="stylesheet" href="/css/global.css">
</head> </head>
@ -26,7 +26,7 @@
{% for lobby in lobbies %} {% for lobby in lobbies %}
<li class="list-group-item d-flex justify-content-between align-items-center"> <li class="list-group-item d-flex justify-content-between align-items-center">
<h6>{{lobby.name}}</h6> <h6>{{lobby.name}}</h6>
<h6>{{lobby.nbPlayer}}/6</h6> <h6>0/{{lobby.nbPlayer}}</h6>
<div class="btn"> <div class="btn">
<a type="button" class="btn btn-primary" href="">Rejoindre</a> <a type="button" class="btn btn-primary" href="">Rejoindre</a>
</div> </div>
@ -37,40 +37,5 @@
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<div class="modal fade" id="modalquestions">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Ajouter une question</h5>
</div>
<form method="POST" action="/admin/questions/add">
<div class="modal-body">
<div class="form-group">
<label for="name">Contenu de la question :</label>
<input type="text" class="form-control" id="content" name="content">
</div>
<div class="form-group">
<label for="name">Chapitre de la question :</label>
<select class="form-control" id="idChapter" name="idChapter">
{% for chapter in chapters %}
<option value="{{chapter.id}}" >{{chapter.name}}</option>
{% endfor %}
</select>
</div>
<div class="form-group">
<label for="name">Réponse 1 de la question :</label>
<input type="text" class="form-control" id="answer1" name="answer1">
<input type="radio" name="correctAnswer" checked="checked" value="0"> Correct
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Fermer</button>
<button type="submit" class="btn btn-primary">Enregistrer</button>
</div>
</form>
</div>
</div>
</div>
</body> </body>
</html> </html>

@ -2,9 +2,9 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Maths'Educ - Connexion</title> <title>Math'Educ - Connexion</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
</head> </head>
<body id="bodyStyle"> <body id="bodyStyle">
<div> <div>

@ -2,9 +2,9 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Maths'Educ - Connexion</title> <title>Math'Educ - Connexion</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
</head> </head>
<body id="bodyStyle"> <body id="bodyStyle">
<div> <div>

@ -3,8 +3,8 @@
<head> <head>
<meta charset=utf-8> <meta charset=utf-8>
<title>Maths'Educ</title> <title>Math'Educ</title>
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
<link rel="stylesheet" href="css/chrono.css"> <link rel="stylesheet" href="css/chrono.css">
<link rel="stylesheet" href="css/progressBar.css"> <link rel="stylesheet" href="css/progressBar.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">

@ -3,8 +3,8 @@
<head> <head>
<meta charset=utf-8> <meta charset=utf-8>
<title>Maths'Educ</title> <title>Math'Educ</title>
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
<link rel="stylesheet" href="css/chrono.css"> <link rel="stylesheet" href="css/chrono.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>

@ -1,9 +1,9 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>

@ -1,14 +1,14 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../../../css/global.css">
</head> </head>
<body> <body id="bodyStyle">
<div class="modal fade" id="modalUpdateAdministrators"> <div class="modal fade" id="modalUpdateAdministrators">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">

@ -1,11 +1,11 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
</head> </head>
<body id="bodyStyle"> <body id="bodyStyle">

@ -2,9 +2,9 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/confetti.css"> <link rel="stylesheet" href="css/confetti.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">

Loading…
Cancel
Save