From f5d9eee704297fef966d374393326ea69d3ec8cd Mon Sep 17 00:00:00 2001 From: ben Date: Thu, 4 Dec 2025 16:05:57 +0100 Subject: [PATCH] =?UTF-8?q?modification=20de=20la=20connexion=20et=20ajout?= =?UTF-8?q?=20de=20cat=C3=A9gorie=20et=20articles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/categories/ajouter_categorie.html | 57 ++++++++ blog/categories/ajouter_categorie.js | 42 ++++++ blog/categories/articles/ajouter_article.html | 87 ++++++++++++ blog/categories/articles/ajouter_article.js | 55 ++++++++ .../categories/articles/modifier_article.html | 127 ++++++++++++++++++ blog/categories/articles/modifier_article.js | 66 +++++++++ blog/categories/modifier_categorie.html | 61 +++++++++ blog/categories/modifier_categorie.js | 22 +++ .../mot_de_passe_oublie.html | 55 ++++++++ connexion/page_de_connexion.html | 47 ------- .../page_de_connexion/page_de_connexion.html | 51 +++++++ .../reinitialisation_du_mot_de_passe.js | 37 +++++ .../reinitialisation_mot_de_passe.html | 16 ++- mot_de_passe_oublie/mot_de_passe_oublie.html | 44 ------ .../reinitialisation_du_mot_de_passe.js | 19 --- 15 files changed, 671 insertions(+), 115 deletions(-) create mode 100644 blog/categories/ajouter_categorie.html create mode 100644 blog/categories/ajouter_categorie.js create mode 100644 blog/categories/articles/ajouter_article.html create mode 100644 blog/categories/articles/ajouter_article.js create mode 100644 blog/categories/articles/modifier_article.html create mode 100644 blog/categories/articles/modifier_article.js create mode 100644 blog/categories/modifier_categorie.html create mode 100644 blog/categories/modifier_categorie.js create mode 100644 connexion/mot_de_passe_oublie/mot_de_passe_oublie.html delete mode 100644 connexion/page_de_connexion.html create mode 100644 connexion/page_de_connexion/page_de_connexion.html create mode 100644 connexion/reinitialisation_mot_de_passe/reinitialisation_du_mot_de_passe.js rename {reinitialisation_mot_de_passe => connexion/reinitialisation_mot_de_passe}/reinitialisation_mot_de_passe.html (77%) delete mode 100644 mot_de_passe_oublie/mot_de_passe_oublie.html delete mode 100644 reinitialisation_mot_de_passe/reinitialisation_du_mot_de_passe.js diff --git a/blog/categories/ajouter_categorie.html b/blog/categories/ajouter_categorie.html new file mode 100644 index 0000000..3312c74 --- /dev/null +++ b/blog/categories/ajouter_categorie.html @@ -0,0 +1,57 @@ + + + + + + Ajouter une catégorie + + + + + + +
+

Ajouter une catégorie

+ + +
Le nom de catégorie est obligatoire.
+ + +
Cette catégorie existe déjà. Veuillez en choisir une autre.
+ + +
Catégorie ajoutée avec succès !
+ +
+ + +
+ +
+ +
+ + +
+ +
+ Annuler + +
+
+
+ + + + + + \ No newline at end of file diff --git a/blog/categories/ajouter_categorie.js b/blog/categories/ajouter_categorie.js new file mode 100644 index 0000000..f2045eb --- /dev/null +++ b/blog/categories/ajouter_categorie.js @@ -0,0 +1,42 @@ + +const form = document.getElementById("addCategoryForm"); +const nameField = document.getElementById("categoryName"); +const descField = document.getElementById("categoryDescription"); + +const errorEmpty = document.getElementById("errorEmpty"); +const errorExists = document.getElementById("errorExists"); +const successMessage = document.getElementById("successMessage"); + +// Catégories existantes ( à remplacer en BD si besoin) +const existingCategories = ["Actualités", "Chien", "Chat", "Boutique"]; + +form.addEventListener("submit", function (e) { + e.preventDefault(); + + const nom = nameField.value.trim(); + + //Remettre tout a zero + errorEmpty.classList.add("d-none"); + errorExists.classList.add("d-none"); + successMessage.classList.add("d-none"); + + //Erreur champs vide + if (nom === "") { + errorEmpty.classList.remove("d-none"); + return; + } + + //Erreur catégorie existante + if (existingCategories.includes(nom)) { + errorExists.classList.remove("d-none"); + return; + } + + //Succès + successMessage.classList.remove("d-none"); + + + //Ajout d'une nouvelle catégorie en BDD + categoriesExistantes.push(nom); + +}); \ No newline at end of file diff --git a/blog/categories/articles/ajouter_article.html b/blog/categories/articles/ajouter_article.html new file mode 100644 index 0000000..cce23d3 --- /dev/null +++ b/blog/categories/articles/ajouter_article.html @@ -0,0 +1,87 @@ + + + + + + Ajouter un article + + + + + + +
+

Ajouter un article

+ + +
Le titre de l'article est obligatoire
+ + +
+ Format d'image invalide. Formats acceptés : JPG, PNG +
+ + +
Ce titre existe déjà. Choisissez un autre titre.
+ + +
Article ajouté avec succès !
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ Annuler + +
+ +
+ + + + + + + \ No newline at end of file diff --git a/blog/categories/articles/ajouter_article.js b/blog/categories/articles/ajouter_article.js new file mode 100644 index 0000000..54196ba --- /dev/null +++ b/blog/categories/articles/ajouter_article.js @@ -0,0 +1,55 @@ +const form = document.getElementById('addArticleForm'); +const imgField = document.getElementById('articleImage'); +const titleField = document.getElementById('articleTitle'); +const contentField = document.getElementById('articleContent'); +const categoryField = document.getElementById('articleCategory'); +const publishedField = document.getElementById('articlePublished'); + +const errorEmpty = document.getElementById('errorEmpty'); +const errorImage = document.getElementById('errorImage'); +const errorExists = document.getElementById('errorExists'); +const successMsg = document.getElementById('successMsg'); + +// Simulation BDD +const titreExistants = ['décoration noel', 'coupe de chien']; + +form.addEventListener('submit', function(e) { + e.preventDefault(); + + const titre = titleField.value.trim() .toLowerCase(); + const fichierImage = imgField.files[0]; + + // Reset messages + errorEmpty.classList.add('d-none'); + errorImage.classList.add('d-none'); + errorExists.classList.add('d-none'); + successMsg.classList.add('d-none'); + + // Titre obligatoire + if (titre === "") { + errorEmpty.classList.remove('d-none'); + return; + } + + // Titre déjà existant + if (titreExistants.includes(titre)) { + errorExists.classList.remove('d-none'); + return; + } + + // Image invalide + if (fichierImage) { + const validFormats = ['image/jpeg', 'image/png']; + if (!validFormats.includes(fichierImage.type)) { + errorImage.classList.remove('d-none'); + return; + } + } + + // Succès + successMsg.classList.remove('d-none'); + + // Simuler enregistrement + titreExistants.push(titre); + +}); diff --git a/blog/categories/articles/modifier_article.html b/blog/categories/articles/modifier_article.html new file mode 100644 index 0000000..8808bc7 --- /dev/null +++ b/blog/categories/articles/modifier_article.html @@ -0,0 +1,127 @@ + + + + + + Modifier un article + + + + + + + +
+

Modifier un article

+ + +
+ ❌ Le titre de l'article est obligatoire. +
+ + +
+ Format d'image invalide. Formats acceptés : JPG, PNG, GIF. +
+ + +
+ Ce titre existe déjà. Veuillez en choisir un autre. +
+ + +
+ L'article a été modifié avec succès ! +
+ + +
+ + + +
+ Image actuelle + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ Annuler + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/categories/articles/modifier_article.js b/blog/categories/articles/modifier_article.js new file mode 100644 index 0000000..0d93cf1 --- /dev/null +++ b/blog/categories/articles/modifier_article.js @@ -0,0 +1,66 @@ +const form = document.getElementById('editArticleForm'); +const imgField = document.getElementById('articleImage'); +const titleField = document.getElementById('articleTitle'); +const contentField = document.getElementById('articleContent'); +const categoryField = document.getElementById('articleCategory'); +const publishedField = document.getElementById('articlePublished'); + +const errorEmpty = document.getElementById('errorEmpty'); +const errorImage = document.getElementById('errorImage'); +const errorExists = document.getElementById('errorExists'); +const successMsg = document.getElementById('successMsg'); + +// Simulation BDD pour vérifier doublons +const titresExistants = [ + "article de test", + "nouveautés chiens", + "actualité du mois" +]; + +form.addEventListener('submit', function(e) { + e.preventDefault(); + + const titre = titleField.value.trim().toLowerCase(); + const fichierImage = imgField.files[0]; + + // Reset messages + errorEmpty.classList.add('d-none'); + errorImage.classList.add('d-none'); + errorExists.classList.add('d-none'); + successMsg.classList.add('d-none'); + + //Titre obligatoire + if (titre === "") { + errorEmpty.classList.remove('d-none'); + return; + } + + // Titre déjà existant ? + if (titresExistants.includes(titre)) { + errorExists.classList.remove('d-none'); + return; + } + + //Vérification image + if (fichierImage) { + const validFormats = ['image/jpeg', 'image/png', 'image/gif']; + if (!validFormats.includes(fichierImage.type)) { + errorImage.classList.remove('d-none'); + return; + } + } + + // Succès + successMsg.classList.remove('d-none'); + + console.log("Article modifié :", { + titre, + contenu: contentField.value, + categorie: categoryField.value, + publie: publishedField.checked, + image: fichierImage ? fichierImage.name : "Image inchangée" + }); + + + +}); diff --git a/blog/categories/modifier_categorie.html b/blog/categories/modifier_categorie.html new file mode 100644 index 0000000..41d4f56 --- /dev/null +++ b/blog/categories/modifier_categorie.html @@ -0,0 +1,61 @@ + + + + + + Modifier une catégorie + + + + + + +
+

Modifier une catégorie

+ +
Veuillez ezmplir tous les champs obligatoires
+ +
La catégorie a été modifiée avec succès !
+ +
+ + +
+ + +
+ + +
+ + +
+ +
+ Annuler + +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/blog/categories/modifier_categorie.js b/blog/categories/modifier_categorie.js new file mode 100644 index 0000000..7721530 --- /dev/null +++ b/blog/categories/modifier_categorie.js @@ -0,0 +1,22 @@ + +const form = document.getElementById("modifierCatgorie"); +const nameField = document.getElementById("nomCategorie"); +const descField = document.getElementById("categorieDescription"); +const errorMsg = document.getElementById("errorMsg"); +const successMsg = document.getElementById("successMsg"); + +form.addEventListener("submit", function (e) { + e.preventDefault(); + + //vérification des champs obligatoires + if (nameField.value.trim() === "" || descField.value.trim() === "") { + errorMsg.classList.remove("d-none"); + successMsg.classList.add("d-none"); + return; + } + + //Succès + errorMsg.classList.add("d-none"); + successMsg.classList.remove("d-none"); + +}); \ No newline at end of file diff --git a/connexion/mot_de_passe_oublie/mot_de_passe_oublie.html b/connexion/mot_de_passe_oublie/mot_de_passe_oublie.html new file mode 100644 index 0000000..f32e526 --- /dev/null +++ b/connexion/mot_de_passe_oublie/mot_de_passe_oublie.html @@ -0,0 +1,55 @@ + + + + + + Mot de passe oublié + + + + + +
+
+

Mot de passe oublié

+ +
+
+ + +
+ + + + +
+
+
+ + + diff --git a/connexion/page_de_connexion.html b/connexion/page_de_connexion.html deleted file mode 100644 index be0b9b6..0000000 --- a/connexion/page_de_connexion.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - Connexion Admin - - - - -
-
-

Connexion Admin

- - -
-
- - -
- - - - -
-
-
- - - - \ No newline at end of file diff --git a/connexion/page_de_connexion/page_de_connexion.html b/connexion/page_de_connexion/page_de_connexion.html new file mode 100644 index 0000000..b3240aa --- /dev/null +++ b/connexion/page_de_connexion/page_de_connexion.html @@ -0,0 +1,51 @@ + + + + + + Connexion Admin + + + + +
+
+

Connexion Admin

+ +
+
+ + +
+ + + + +
+
+
+ + + diff --git a/connexion/reinitialisation_mot_de_passe/reinitialisation_du_mot_de_passe.js b/connexion/reinitialisation_mot_de_passe/reinitialisation_du_mot_de_passe.js new file mode 100644 index 0000000..d1e5ada --- /dev/null +++ b/connexion/reinitialisation_mot_de_passe/reinitialisation_du_mot_de_passe.js @@ -0,0 +1,37 @@ +const form = document.getElementById('resetForm'); +const password = document.getElementById('password'); +const confirmPassword = document.getElementById('confirmPassword'); +const errorMsg = document.getElementById('errorMsg'); +const successMsg = document.getElementById('successMsg'); + +const minLength = 8; + +form.addEventListener('submit', function(e) { + e.preventDefault(); + + // Réinitialisation des messages + errorMsg.style.display = 'none'; + successMsg.style.display = 'none'; + + const pass = password.value.trim(); + const confirm = confirmPassword.value.trim(); + + //Longueur minimale + if (pass.length < minLength) { + errorMsg.style.display = 'block'; + errorMsg.textContent = `Le mot de passe doit contenir au moins ${minLength} caractères.`; + return; + } + + //Correspondance + if (pass !== confirm) { + errorMsg.style.display = 'block'; + errorMsg.textContent = 'Les mots de passe ne correspondent pas.'; + return; + } + + //Succès + successMsg.style.display = 'block'; + successMsg.textContent = 'Mot de passe réinitialisé avec succès !'; +}); + diff --git a/reinitialisation_mot_de_passe/reinitialisation_mot_de_passe.html b/connexion/reinitialisation_mot_de_passe/reinitialisation_mot_de_passe.html similarity index 77% rename from reinitialisation_mot_de_passe/reinitialisation_mot_de_passe.html rename to connexion/reinitialisation_mot_de_passe/reinitialisation_mot_de_passe.html index 0ce7f33..b4f296c 100644 --- a/reinitialisation_mot_de_passe/reinitialisation_mot_de_passe.html +++ b/connexion/reinitialisation_mot_de_passe/reinitialisation_mot_de_passe.html @@ -28,12 +28,16 @@

Nouveau mot de passe

- Entrez votre nouveau mot de passe et confirmez-le. + Pour réinitialiser votre mot de passe, veuillez saisir un nouveau mot + de passe ainsi qu'une confirmation. Le mot de passe doit contenir au + minimum 8 caractères.

- +
- + - Les mots de passe ne correspondent pas. + Les mots de passe ne correspondent pas.
- - - -
-
- - - \ No newline at end of file diff --git a/reinitialisation_mot_de_passe/reinitialisation_du_mot_de_passe.js b/reinitialisation_mot_de_passe/reinitialisation_du_mot_de_passe.js deleted file mode 100644 index 07f58ca..0000000 --- a/reinitialisation_mot_de_passe/reinitialisation_du_mot_de_passe.js +++ /dev/null @@ -1,19 +0,0 @@ - -const form= document.getElementById('resetForm'); -const password = document.getElementById('password'); -const confirmPassword = document.getElementById('confirmPassword'); -const errorMsg = document.getElementById('errorMsg'); -const successMsg = document.getElementById('successMsg'); - -form.addEventListener('submit', function(e) { - e.preventDefault(); - - if (password.value !== confirmPassword.value) { - errorMsg.style.display = 'block'; - successMsg.style.display = 'none'; - } else { - errorMsg.style.display = 'none'; - successMsg.style.display = 'block'; - console.log('SUCCES'); - } -}); \ No newline at end of file