refonte arborescence + correction des chemins
This commit is contained in:
59
blog/js/ajouter_article.js
Normal file
59
blog/js/ajouter_article.js
Normal file
@@ -0,0 +1,59 @@
|
||||
const form = document.getElementById('ajouterArticleForm');
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
// Simuler enregistrement
|
||||
titreExistants.push(titre);
|
||||
|
||||
// Succès
|
||||
successMsg.classList.remove('d-none');
|
||||
|
||||
// Redirection après 1 seconde
|
||||
setTimeout(() => {
|
||||
window.location.href = "../html/liste_article.html";
|
||||
}, 1000);
|
||||
});
|
||||
47
blog/js/ajouter_categorie.js
Normal file
47
blog/js/ajouter_categorie.js
Normal file
@@ -0,0 +1,47 @@
|
||||
|
||||
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
|
||||
existingCategories.push(nom);
|
||||
|
||||
// Redirection après 1 seconde
|
||||
setTimeout(() => {
|
||||
window.location.href = "../html/liste_categorie.html";
|
||||
}, 1000);
|
||||
|
||||
|
||||
});
|
||||
14
blog/js/liste_articles.js
Normal file
14
blog/js/liste_articles.js
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
document.addEventListener("click", function (e) {
|
||||
const btn = e.target.closest(".delete-btn");
|
||||
if (!btn) return; // on a cliqué ailleurs
|
||||
|
||||
// On récupère la ligne de l'article
|
||||
const row = btn.closest("tr");
|
||||
const titre = row.querySelector("td").textContent.trim();
|
||||
|
||||
if (confirm(`Voulez-vous vraiment supprimer l'article : "${titre}" ?`)) {
|
||||
row.remove(); // supprime la ligne
|
||||
alert("Article supprimé !");
|
||||
}
|
||||
});
|
||||
52
blog/js/liste_categorie.js
Normal file
52
blog/js/liste_categorie.js
Normal file
@@ -0,0 +1,52 @@
|
||||
// Simulation BDD
|
||||
let categories = [
|
||||
{ id: 1, nom: "Actualités", description: "Infos et nouveautés" },
|
||||
{ id: 2, nom: "Chien", description: "Articles liés aux chiens" },
|
||||
{ id: 3, nom: "Chat", description: "Conseils pour chats" },
|
||||
{ id: 4, nom: "Boutique", description: "Produits et accessoires" }
|
||||
];
|
||||
|
||||
const tableBody = document.getElementById("categoriesTableBody");
|
||||
const successMsg = document.getElementById("successMsg");
|
||||
|
||||
// Fonction d'affichage
|
||||
function afficherCategories() {
|
||||
tableBody.innerHTML = "";
|
||||
|
||||
categories.forEach((cat, index) => {
|
||||
const row = `
|
||||
<tr>
|
||||
<td>${cat.nom}</td>
|
||||
<td>${cat.description || "-"}</td>
|
||||
|
||||
<td class="text-center">
|
||||
<a href="../html/modifier_categorie.html?id=${cat.id}" class="btn btn-warning btn-sm">
|
||||
Modifier
|
||||
</a>
|
||||
|
||||
<button class="btn btn-danger btn-sm" onclick="supprimerCategorie(${index})">
|
||||
Supprimer
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
`;
|
||||
tableBody.innerHTML += row;
|
||||
});
|
||||
}
|
||||
|
||||
afficherCategories();
|
||||
|
||||
// Suppression
|
||||
function supprimerCategorie(index) {
|
||||
if (confirm("Voulez-vous vraiment supprimer cette catégorie ?")) {
|
||||
|
||||
const nomCat = categories[index].nom;
|
||||
|
||||
categories.splice(index, 1);
|
||||
|
||||
afficherCategories();
|
||||
|
||||
successMsg.textContent = `La catégorie "${nomCat}" a été supprimée avec succès.`;
|
||||
successMsg.classList.remove("d-none");
|
||||
}
|
||||
}
|
||||
60
blog/js/modifier_article.js
Normal file
60
blog/js/modifier_article.js
Normal file
@@ -0,0 +1,60 @@
|
||||
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");
|
||||
|
||||
// Redirection après succès
|
||||
setTimeout(() => {
|
||||
window.location.href = "../html/liste_article.html";
|
||||
}, 1500);
|
||||
});
|
||||
26
blog/js/modifier_categorie.js
Normal file
26
blog/js/modifier_categorie.js
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
const form = document.getElementById("modifierCategorie");
|
||||
const nameField = document.getElementById("categoryName");
|
||||
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");
|
||||
|
||||
// Redirection après succès
|
||||
setTimeout(() => {
|
||||
window.location.href = "../html/liste_categorie.html";
|
||||
}, 1500);
|
||||
});
|
||||
Reference in New Issue
Block a user