refonte arborescence + correction des chemins

This commit is contained in:
ben
2025-12-09 17:14:35 +01:00
parent f0fbae505f
commit f79ee1e7b6
40 changed files with 185 additions and 144 deletions

View 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);
});

View 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
View 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é !");
}
});

View 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");
}
}

View 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);
});

View 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);
});