diff --git a/Source/API/script/APIController.php b/Source/API/script/APIController.php index 19e2190..5119b57 100644 --- a/Source/API/script/APIController.php +++ b/Source/API/script/APIController.php @@ -1,5 +1,9 @@ stmt->execute(); } + + /** + * Permet de récupère le résultat de la dernière réquête éxecuté avec + * la fonction executeQuery(). + * + * @return array + */ public function getResults(): array { return $this->stmt->fetchAll(); diff --git a/Source/API/script/Gateway/GatewayQuestion.php b/Source/API/script/Gateway/GatewayQuestion.php index d110df0..643c7b8 100644 --- a/Source/API/script/Gateway/GatewayQuestion.php +++ b/Source/API/script/Gateway/GatewayQuestion.php @@ -17,10 +17,8 @@ class GatewayQuestion $this->connection = connect(); } - public function insertQuestion(Question $question, int $idForm): void + public function addQuestion(Question $question, int $idForm): int { - $gatewayPossibleResponse = new GatewayPossibleResponse(); - $query = "INSERT INTO Question(content, type, form) VALUES(:content, :type, :form)"; $this->connection->executeQuery($query, array( ':content' => array($question->getContent(), PDO::PARAM_STR), @@ -28,29 +26,27 @@ class GatewayQuestion ':form' => array($idForm, PDO::PARAM_INT) )); - $idQuestion = $this->connection->lastInsertId(); - - if (get_class($question) != TextQuestion::class) { - $listPossibleResponse = $question->getPossibleResponses(); - - for ($i = 0; $i < count($listPossibleResponse); $i++) { + return $this->connection->lastInsertId(); + } - $idPossibleResponse = $gatewayPossibleResponse->insertPossibleResponse($listPossibleResponse[$i]); + public function insertResponseInQuestion(string $response, array $categories, int $idQuestion): int + { + $gatewayPossibleResponse = new GatewayPossibleResponse(); + $idPossibleResponse = $gatewayPossibleResponse->insertPossibleResponse($response); - $query = "INSERT INTO Propose(question, possibleResponse) VALUES(:question, :possibleResponse)"; - $this->connection->executeQuery($query, array( - ':question' => array($idQuestion, PDO::PARAM_INT), - ':possibleResponse' => array($idPossibleResponse, PDO::PARAM_INT) - )); + $query = "INSERT INTO Propose(question, possibleResponse) VALUES(:question, :possibleResponse)"; + $this->connection->executeQuery($query, array( + ':question' => array($idQuestion, PDO::PARAM_INT), + ':possibleResponse' => array($idPossibleResponse, PDO::PARAM_INT) + )); - foreach ($question->getCategories()[$i] as $keyword) { - $gatewayForm = new GatewayForm(); - $gatewayForm->assignKeywordToQuestion($keyword, $listPossibleResponse[$i], $idQuestion); - } - } + foreach ($categories as $keyword) { + $gatewayForm = new GatewayForm(); + $gatewayForm->assignKeywordToQuestion($keyword, $response, $idQuestion); } + return $idQuestion; } public function deleteQuestion(Question $question): void diff --git a/Source/BusinessClass/BoxQuestion.php b/Source/BusinessClass/BoxQuestion.php index cc82dfe..bbf49d4 100644 --- a/Source/BusinessClass/BoxQuestion.php +++ b/Source/BusinessClass/BoxQuestion.php @@ -2,26 +2,54 @@ namespace BusinessClass; +/** + * Définit une question avec plusieurs réponses. + */ abstract class BoxQuestion extends Question { + /** + * @var array|mixed + */ private array $possibleResponses; - private array $categories; - /** - * @param array $possibleResponses - * @param string $content - * @param array $categories - * @param int $id + * @var array|mixed */ - public function __construct(array $possibleResponses, string $content, array $categories, int $id) + private array $categories; + + + public function __construct() { - parent::__construct($id, $content); - $this->categories = $categories; - $this->possibleResponses = $possibleResponses; + $ctp = func_num_args(); + $args = func_get_args(); + switch($ctp) + { + case 4: + parent::__construct($args[3], $args[1]); + $this->categories = $args[2]; + $this->possibleResponses = $args[0]; + break; + case 2: + parent::__construct($args[0], $args[1]); + break; + default: + break; + } } + + /** + * Permet de définir la manière donc la réponse doit être traitée + * + * @return void + */ abstract public function responseStrategy(); + + /** + * Permet de définir la manière dont la question doit s'afficher en HTML. + * + * @return string + */ abstract public function printStrategy(): string; /** diff --git a/Source/BusinessClass/CheckBoxQuestion.php b/Source/BusinessClass/CheckBoxQuestion.php index 42a8251..9f76d76 100644 --- a/Source/BusinessClass/CheckBoxQuestion.php +++ b/Source/BusinessClass/CheckBoxQuestion.php @@ -2,13 +2,45 @@ namespace BusinessClass; +/** + * Définit une question à choix multiples. + */ class CheckBoxQuestion extends BoxQuestion { + public function __construct() + { + $ctp = func_num_args(); + $args = func_get_args(); + switch($ctp) + { + case 4: + parent::__construct($args[0], $args[1], $args[2], $args[3]); + break; + case 2: + parent::__construct($args[0], $args[1]); + break; + default: + break; + } + } + + + /** + * Permet de définir la manière donc la réponse doit être traitée + * + * @return void + */ public function responseStrategy(): void { echo "Implement responseStrategy() method."; } + + /** + * Permet de définir la manière dont la question doit s'afficher en HTML. + * + * @return string + */ public function printStrategy(): string { $id = $this->getId(); diff --git a/Source/BusinessClass/Form.php b/Source/BusinessClass/Form.php index 6254c22..d3c5cd0 100644 --- a/Source/BusinessClass/Form.php +++ b/Source/BusinessClass/Form.php @@ -2,11 +2,29 @@ namespace BusinessClass; +/** + * Définit un formulaire. + */ class Form { + /** + * @var int + */ private int $id; + + /** + * @var string + */ private string $title; + + /** + * @var string + */ private string $description; + + /** + * @var array + */ private array $questions; // La liste des questions dans un formulaire /** diff --git a/Source/BusinessClass/IPrintQuestionStrategy.php b/Source/BusinessClass/IPrintQuestionStrategy.php index 06b2d5c..bbfc35a 100644 --- a/Source/BusinessClass/IPrintQuestionStrategy.php +++ b/Source/BusinessClass/IPrintQuestionStrategy.php @@ -2,7 +2,15 @@ namespace BusinessClass; +/** + * Définit l'affiche d'une question. + */ interface IPrintQuestionStrategy { + /** + * Permet de définir la manière dont la question doit s'afficher en HTML. + * + * @return string + */ public function printStrategy(): string; } diff --git a/Source/BusinessClass/IResponseProcessingStrategy.php b/Source/BusinessClass/IResponseProcessingStrategy.php index c6bf1d2..51b60a9 100644 --- a/Source/BusinessClass/IResponseProcessingStrategy.php +++ b/Source/BusinessClass/IResponseProcessingStrategy.php @@ -2,7 +2,15 @@ namespace BusinessClass; +/** + * Définit la gestion des réponses à une question. + */ interface IResponseProcessingStrategy { + /** + * Permet de définir la manière donc la réponse doit être traitée + * + * @return void + */ public function responseStrategy(); } diff --git a/Source/BusinessClass/Keyword.php b/Source/BusinessClass/Keyword.php index 5b6e572..cc4db26 100644 --- a/Source/BusinessClass/Keyword.php +++ b/Source/BusinessClass/Keyword.php @@ -2,9 +2,19 @@ namespace BusinessClass; +/** + * Définit une catégorie associable à une réponse. + */ class Keyword { + /** + * @var int + */ private int $id; + + /** + * @var string + */ private string $word; /** diff --git a/Source/BusinessClass/ListBoxQuestion.php b/Source/BusinessClass/ListBoxQuestion.php index 186b179..31a4809 100644 --- a/Source/BusinessClass/ListBoxQuestion.php +++ b/Source/BusinessClass/ListBoxQuestion.php @@ -2,13 +2,45 @@ namespace BusinessClass; +/** + * Définit une question avec plusieurs réponse mais une seule possible. + */ class ListBoxQuestion extends BoxQuestion { + public function __construct() + { + $ctp = func_num_args(); + $args = func_get_args(); + switch($ctp) + { + case 4: + parent::__construct($args[0], $args[1], $args[2], $args[3]); + break; + case 2: + parent::__construct($args[0], $args[1]); + break; + default: + break; + } + } + + + /** + * Permet de définir la manière donc la réponse doit être traitée + * + * @return void + */ public function responseStrategy(): void { echo "Implement responseStrategy() method."; } + + /** + * Permet de définir la manière dont la question doit s'afficher en HTML. + * + * @return string + */ public function printStrategy(): string { $id = $this->getId(); diff --git a/Source/BusinessClass/Question.php b/Source/BusinessClass/Question.php index 67dd266..ae9044c 100644 --- a/Source/BusinessClass/Question.php +++ b/Source/BusinessClass/Question.php @@ -2,11 +2,22 @@ namespace BusinessClass; +/** + * Définit une question. + */ abstract class Question implements IResponseProcessingStrategy, IPrintQuestionStrategy { + /** + * @var int + */ private int $id; + + /** + * @var string + */ private string $content; + /** * @param int $id * @param string $content @@ -17,8 +28,20 @@ abstract class Question implements IResponseProcessingStrategy, IPrintQuestionSt $this->content = $content; } + + /** + * Permet de définir la manière donc la réponse doit être traitée + * + * @return void + */ abstract public function responseStrategy(); + + /** + * Permet de définir la manière dont la question doit s'afficher en HTML. + * + * @return string + */ abstract public function printStrategy(): string; /** diff --git a/Source/BusinessClass/Response.php b/Source/BusinessClass/Response.php index 74b05ee..27de529 100644 --- a/Source/BusinessClass/Response.php +++ b/Source/BusinessClass/Response.php @@ -2,11 +2,29 @@ namespace BusinessClass; +/** + * Définit une possibilité de réponse à une question. + */ class Response { + /** + * @var int + */ private int $id; + + /** + * @var string + */ private string $date; + + /** + * @var string + */ private string $titleForm; + + /** + * @var array + */ private array $questionsResponses; /** diff --git a/Source/BusinessClass/TextQuestion.php b/Source/BusinessClass/TextQuestion.php index 8dab852..039024e 100644 --- a/Source/BusinessClass/TextQuestion.php +++ b/Source/BusinessClass/TextQuestion.php @@ -2,23 +2,33 @@ namespace BusinessClass; +/** + * Définit une question qui propose d'écrire du texte en guise de réponse + */ class TextQuestion extends Question { /** * @param string $content * @param int $id */ - public function __construct(string $content, int $id) + public function __construct(int $id, string $content) { parent::__construct($id, $content); } + /** + * Permet de définir la manière donc la réponse doit être traitée + * + * @return void + */ public function responseStrategy(): void { echo "Implement responseStrategy() method."; } /** + * Permet de définir la manière dont la question doit s'afficher en HTML. + * * @return string */ public function printStrategy(): string diff --git a/Source/Config/Autoload.php b/Source/Config/Autoload.php index 4fdb894..72c9ecb 100644 --- a/Source/Config/Autoload.php +++ b/Source/Config/Autoload.php @@ -4,33 +4,33 @@ class Autoload { private static $instance = null; - public static function charger(): void + public static function charger() { if (null !== self::$instance) { - throw new RuntimeException(sprintf('%s is already started', __CLASS__)); + throw RuntimeException(sprintf('%s is already started', __CLASS__)); } self::$instance = new self(); if (!spl_autoload_register(array(self::$instance, 'autoloader'), false)) { - throw new RuntimeException(sprintf('%s : Could not start the autoload', __CLASS__)); + throw RuntimeException(sprintf('%s : Could not start the autoload', __CLASS__)); } } - public static function shutDown(): void + public static function shutDown() { if (null !== self::$instance) { if (!spl_autoload_unregister(array(self::$instance, 'autoloader'))) { - throw new RuntimeException('Could not stop the autoload'); + throw RuntimeException('Could not stop the autoload'); } self::$instance = null; } } - private static function autoloader($className): void + private static function autoloader($className) { $folder = "./"; $className = ltrim($className, '\\'); diff --git a/Source/Config/config.php b/Source/Config/config.php index 6ac43ef..e7d33c3 100644 --- a/Source/Config/config.php +++ b/Source/Config/config.php @@ -3,9 +3,10 @@ $rep = __DIR__ . '/../'; -// Vues $views['form'] = 'Views/HTML/form.php'; $views['admin'] = 'Views/HTML/admin.php'; +$views['possibleResponsesForm'] = 'Views/HTML/possibleResponsesForm.php'; +$views['continue'] = 'Views/HTML/continue.php'; $emailMaxLength=150; $pseudoMaxLength=50; diff --git a/Source/Controller/ControllerAdmin.php b/Source/Controller/ControllerAdmin.php index 7836d09..0811b1e 100644 --- a/Source/Controller/ControllerAdmin.php +++ b/Source/Controller/ControllerAdmin.php @@ -4,24 +4,105 @@ namespace Controller; use Model\ModelAdmin; +/** + * Permet de controller les réponses à fournir en fonction des actions passer dans l'URL + * par l'administrateur + */ class ControllerAdmin { + /** + * Ajoute une question grâce à son contenu et son type récupéré dans le tableau $_POST + * Si la question n'est pas une question texte, on appelle un nouveau formulaire permettant + * d'ajouter des réponses prédéfinies à la question. + * + * @return void + */ public function addQuestion(): void { - (new ModelAdmin())->addQuestion(); + $type = $_POST['type']; + if(strcmp($type, "BusinessClass\TextQuestion") == 0) { + $this->goToAdminPage(); + } else { + $idQuestion = (new ModelAdmin())->addQuestion(); + $categories = (new ModelAdmin())->getCategories(); + $questionContent = $_POST['question']; + global $rep, $views; + require_once($rep.$views['possibleResponsesForm']); + } } + + /** + * Ajoute une possibilité de réponse à une question, on assige également cette réponse + * à des catégories. On propose ensuite à l'utilisateur de continuer l'ajout d'autre réponses. + * + * @return void + */ + public function addResponse(): void + { + (new ModelAdmin())->addResponse(); + $categories = (new ModelAdmin())->getCategories(); + $idQuestion = $_POST['idQuestion']; + $questionContent = $_POST['question']; + $type = $_POST['type']; + global $rep, $views; + require_once($rep.$views['continue']); + } + + + /** + * Permet de proposer à l'utiliser de continuer ou non à ajouter des possibilités de réponses à l'aide + * de la fonction addResponse(). Si non, il retourne à la page d'admnistration. + * + * @return void + */ + public function continueResponse(): void + { + $choose = $_POST['choose']; + if($choose == "Oui") { + $idQuestion = $_POST['idQuestion']; + $categories = (new ModelAdmin())->getCategories(); + $questionContent = $_POST['question']; + $type = $_POST['type']; + global $rep, $views; + require_once($rep.$views['possibleResponsesForm']); + } else { + $this->goToAdminPage(); + } + } + + + /** + * Permet de créer un nouveau formulaire avec un titre et une description. + * + * @return void + */ public function createForm(): void { (new ModelAdmin())->createForm(); } + + /** + * Permet de naviguer jusqu'à la page d'admninistration principale. On retrouve la gestion + * des données de notre application + * + * @return void + */ public function goToAdminPage(): void { + $categories = (new ModelAdmin())->getCategories(); + $questions = (new ModelAdmin())->getQuestions(); global $rep, $views; require_once($rep.$views['admin']); } + + /** + * Permet d'ajouter une catégories (mot-clef) à notre application + * + * @return void + */ public function addKeyword(): void { (new ModelAdmin())->addKeyword(); diff --git a/Source/Controller/ControllerCandidate.php b/Source/Controller/ControllerCandidate.php index 016a017..1398c21 100644 --- a/Source/Controller/ControllerCandidate.php +++ b/Source/Controller/ControllerCandidate.php @@ -4,8 +4,17 @@ namespace Controller; use Model\ModelCandidate; +/** + * Permet de controller les réponses à fournir en fonction des actions passer dans l'URL + * par l'utilisateur + */ class ControllerCandidate { + /** + * Permet de naviguer jusqu'au formulaire. + * + * @return void + */ public function goToForm(): void { global $rep, $views; @@ -14,6 +23,11 @@ class ControllerCandidate require_once($rep.$views['form']); } + /** + * Permet de finaliser la saisie du formulaire et de le soumettre. + * + * @return void + */ public function submitForm(): void { (new ModelCandidate())->submitForm(); diff --git a/Source/Controller/FrontController.php b/Source/Controller/FrontController.php index b85279c..dec9e49 100644 --- a/Source/Controller/FrontController.php +++ b/Source/Controller/FrontController.php @@ -5,8 +5,15 @@ namespace Controller; use Exception; use PDOException; +/** + * Permet de gérer l'appel des controllers en fonction de l'action et du rôle de l'utilisateur + */ class FrontController { + /** + * Définit le comportement de la classe à sa création, on appelle le bon controller en fonction de l'action + * et du rôle de la personne qui souhaite réaliser cette action (utilisateur, administrateur...). + */ public function __construct() { $listControllers = array("\\Controller\\ControllerCandidate", "\\Controller\\ControllerAdmin"); diff --git a/Source/Model/Factory.php b/Source/Model/Factory.php index 1952aba..60093bf 100644 --- a/Source/Model/Factory.php +++ b/Source/Model/Factory.php @@ -4,10 +4,29 @@ namespace Model; use BusinessClass\Question; +/** + * Décrit les fonctionnalités principale d'une frabique + */ abstract class Factory { + /** + * Permet de créer un objet grâce au retour d'une Gateway. + * + * @param array $results + * + * @return array + */ abstract public function create(array $results): array; + + /** + * Permet de récupérer les objets créer par la fonction create(). + * + * @param array $results + * @param string $type + * + * @return array + */ public static function getBuiltObjects(array $results, string $type): array { $type = "\\Model\\Factory" . $type; diff --git a/Source/Model/FactoryQuestion.php b/Source/Model/FactoryQuestion.php index 9723d60..cc82f63 100644 --- a/Source/Model/FactoryQuestion.php +++ b/Source/Model/FactoryQuestion.php @@ -5,15 +5,26 @@ namespace Model; use BusinessClass\Question; use BusinessClass\TextQuestion; +/** + * Décrit une fabrique de questions + */ class FactoryQuestion extends Factory { + /** + * Permet de créer une liste de question en fonction du retour d'une gateway + * passer en paramètre. On prend en compte les différents type de question. + * + * @param array $results + * + * @return array + */ public function create(array $results): array { $questions = []; if ($results[0] != null) { for ($i = 0; $i < count($results[0]); $i++) { if (strcmp($results[0][$i]['type'], "BusinessClass\TextQuestion") == 0) { - $questions[] = new TextQuestion($results[0][$i]['content'], $results[0][$i]['id']); + $questions[] = new TextQuestion($results[0][$i]['id'], $results[0][$i]['content']); } else { $possiblesResponses = $results[1][$i]; $content = $results[0][$i]['content']; diff --git a/Source/Model/ModelAdmin.php b/Source/Model/ModelAdmin.php index aa0921b..44b6ec2 100644 --- a/Source/Model/ModelAdmin.php +++ b/Source/Model/ModelAdmin.php @@ -7,39 +7,53 @@ use API\script\Gateway\GatewayKeyword; use API\script\Gateway\GatewayQuestion; use BusinessClass\Form; +/** + * Permet de développer les fonctions appelées par le controllerAdmin pour gérer + * les actions de l'administrateur + */ class ModelAdmin { - public function addQuestion(): void + /** + * Permet de créer et d'ajouter une question et de retourner son ID afin de la reconnaitre facilement dans + * la suite du code. + * + * @return int + */ + public function addQuestion(): int { $questionContent = $_POST['question']; $type = $_POST['type']; - $responses = $_POST['responses']; - $categories = $_POST['categories']; - $responses = explode(";", $responses); - array_pop($responses); - $categories = explode(";", $categories); + $question = new $type(0, $questionContent); - $tmp = []; - foreach ($categories as $category) { - $tmp[] = explode(",", $category); + $form = (new GatewayForm())->getForm(); + if (!empty($form)) { + return (new GatewayQuestion())->addQuestion($question, $form[0]['id']); } - $categories = $tmp; - array_pop($categories); - if (strcmp($type, "BusinessClass\TextQuestion") == 0) { - $question = new $type($questionContent, 0); - } else { - $question = new $type($responses, $questionContent, $categories, 0); - } + return -1; + } - $form = (new GatewayForm())->getForm(); - if (!empty($form)) { - (new GatewayQuestion())->insertQuestion($question, $form[0]['id']); - } + /** + * Permet d'ajouter une possibilité de réponse à une question en l'assignant à des catégories. + * + * @return void + */ + public function addResponse(): void + { + $idQuestion = $_POST['idQuestion']; + $response = $_POST['response']; + $categories = $_POST['categories']; + (new GatewayQuestion())->insertResponseInQuestion($response, $categories, $idQuestion); } + + /** + * Permet de créer un nouveau formulaire en précisant son titre et sa description. + * + * @return void + */ public function createForm(): void { if (empty((new GatewayForm())->getForm())) { @@ -48,9 +62,43 @@ class ModelAdmin } } + + /** + * Permet d'ajouter une nouvelle catégorie (mot-clef) + * + * @return void + */ public function addKeyword(): void { $keyword = $_POST['keyword']; (new GatewayKeyword())->insertKeyword($keyword); } + + + /** + * Permet de récupérer toutes les catégories existantes. + * + * @return array + */ + public function getCategories(): array + { + $categories = []; + foreach ((new GatewayKeyword())->getAllKeyword() as $category) + $categories[] = $category["word"]; + + return $categories; + } + + + /** + * Permet de récupérer toutes les questions existantes. + * + * @return array + */ + public function getQuestions(): array + { + $idForm = (new GatewayForm())->getForm()[0]["id"]; + $questionsArray = (new GatewayQuestion())->getAllQuestions($idForm); + return Factory::getBuiltObjects($questionsArray, "Question"); + } } diff --git a/Source/Model/ModelCandidate.php b/Source/Model/ModelCandidate.php index 1f8ab2c..962e17b 100644 --- a/Source/Model/ModelCandidate.php +++ b/Source/Model/ModelCandidate.php @@ -6,8 +6,17 @@ use API\script\Gateway\GatewayForm; use API\script\Gateway\GatewayListResponseOfCandidate; use API\script\Gateway\GatewayQuestion; +/** + * Permet de développer les fonctions appelées par le controllerCandidate pour gérer + * les actions de l'utilisateur + */ class ModelCandidate { + /** + * Permet de soumettre et d'envoyer la réponse à un formulaire. + * + * @return void + */ public function submitForm(): void { $answersAndCategories = $_POST['answers']; @@ -29,6 +38,15 @@ class ModelCandidate (new GatewayListResponseOfCandidate())->insertListResponsesOfCandidate($id, $answer, $category, $titleForm); } + + /** + * Permet de récupérer le code html à afficher dans la page du formulaire, + * on récupère donc le formulaire et toutes les questions qu'il contient. + * On les traduits en code HTML puis on le retourne. On utilise une Factory + * pour récupèrer les questions. + * + * @return string + */ public function getForm(): string { $form = (new GatewayForm())->getForm(); diff --git a/Source/Views/CSS/base.css b/Source/Views/CSS/base.css index ea82ad1..7172367 100644 --- a/Source/Views/CSS/base.css +++ b/Source/Views/CSS/base.css @@ -29,3 +29,9 @@ h1 { padding-left: 3%; padding-top: 2%; } + +#container { + display: flex; + flex-direction: row; + justify-content: space-around; +} diff --git a/Source/Views/HTML/admin.php b/Source/Views/HTML/admin.php index ea3aae9..0a5fee2 100644 --- a/Source/Views/HTML/admin.php +++ b/Source/Views/HTML/admin.php @@ -19,7 +19,7 @@ logo UCA

Administration

-

Ajouter une catégories :

+ + +
+
+
+ + + +
+ + +
+ +
+ + +
+
+ + +
+ + +
+ + + + + diff --git a/Source/Views/HTML/continue.php b/Source/Views/HTML/continue.php new file mode 100644 index 0000000..9ac75e0 --- /dev/null +++ b/Source/Views/HTML/continue.php @@ -0,0 +1,87 @@ + + + + + + + + + + Formulaire de témoignage + + + + + + +logo UCA +

Administration

+ + + +
+

Continuer d'ajouter des possibilités de réponses ?

+
+ + + + + + + +
+
+ + + + diff --git a/Source/Views/HTML/possibleResponsesForm.php b/Source/Views/HTML/possibleResponsesForm.php new file mode 100644 index 0000000..4c39346 --- /dev/null +++ b/Source/Views/HTML/possibleResponsesForm.php @@ -0,0 +1,119 @@ + + + + + + + + + + Formulaire de témoignage + + + + + + +logo UCA +

Administration

+ + + +
+
+ + + + +

Votre question :

+

+ + + +


+ +

+ + + + + +

+ + +
+
+ + + + + + + diff --git a/Source/Views/JS/form_category.js b/Source/Views/JS/form_category.js new file mode 100644 index 0000000..7d9679f --- /dev/null +++ b/Source/Views/JS/form_category.js @@ -0,0 +1,16 @@ +/** + * Permet d'afficher la liste des catégories en fonction + * du choix de l'utilisateur (lorsqu'il clique sur le bouton) + */ +function printCategories() { + const printCategoryButton = document.querySelector('#printCategory'); + const ul = document.querySelector("#listCategories"); + + if(printCategoryButton.innerText === "Les catégories ▲") { + printCategoryButton.innerText = "Les catégories ▼"; + ul.style.visibility = "hidden"; + } else { + printCategoryButton.innerText = "Les catégories ▲"; + ul.style.visibility = "visible"; + } +} diff --git a/Source/Views/JS/form_question.js b/Source/Views/JS/form_question.js new file mode 100644 index 0000000..dac4e7a --- /dev/null +++ b/Source/Views/JS/form_question.js @@ -0,0 +1,34 @@ +/** + * Permet d'afficher ou non la liste des questions en fonction + * du choix de l'utilisateur. (lorsqu'il clique sur le bouton) + */ +function printQuestion() { + const printQuestionButton = document.querySelector('#printQuestion'); + const ul = document.querySelector("#listQuestions"); + + if(printQuestionButton.innerText === "Les questions ▲") { + printQuestionButton.innerText = "Les questions ▼"; + ul.style.visibility = "hidden"; + } else { + printQuestionButton.innerText = "Les questions ▲"; + ul.style.visibility = "visible"; + } +} + + +/** + * Permet d'afficher le formulaire permettant d'ajouter une question + * si l'utilisateur clique sur le bouton. + */ +function addQuestion() { + const printAddQuestionFormButton = document.querySelector('#addNewQuestion'); + const form = document.querySelector('#addQuestionForm'); + + if(printAddQuestionFormButton.innerText === "Ajouter une question ▲") { + printAddQuestionFormButton.innerText = "Ajouter une question ▼"; + form.style.visibility = "hidden"; + } else { + printAddQuestionFormButton.innerText = "Ajouter une question ▲"; + form.style.visibility = "visible"; + } +} \ No newline at end of file