111 lines
2.9 KiB
JavaScript
111 lines
2.9 KiB
JavaScript
const form = document.getElementById("ajouterArticleForm");
|
|
const messages = document.getElementById("messages");
|
|
|
|
const imgField = document.getElementById("articleImage");
|
|
const titleField = document.getElementById("articleTitle");
|
|
const categoryField = document.getElementById("articleCategory");
|
|
const publishedField = document.getElementById("articlePublished");
|
|
|
|
// Simulation BDD
|
|
const titresExistants = ["décoration noel", "coupe de chien"];
|
|
|
|
|
|
function showMessage(type, text) {
|
|
messages.innerHTML = "";
|
|
|
|
const div = document.createElement("div");
|
|
div.className = `alert alert-${type}`;
|
|
div.textContent = text;
|
|
|
|
messages.appendChild(div);
|
|
}
|
|
|
|
|
|
function imageValide(file) {
|
|
if (!file) return true;
|
|
return ["image/jpeg", "image/png"].includes(file.type);
|
|
}
|
|
|
|
|
|
form.addEventListener("submit", function (e) {
|
|
e.preventDefault();
|
|
messages.innerHTML = "";
|
|
|
|
const titre = titleField.value.trim();
|
|
const titreLower = titre.toLowerCase();
|
|
const contenu = tinymce.get("articleContent").getContent().trim();
|
|
const categorie = categoryField.value;
|
|
const image = imgField.files[0];
|
|
const published = publishedField.checked;
|
|
|
|
// Catégorie obligatoire
|
|
if (!categorie) {
|
|
showMessage("danger", "Veuillez choisir une catégorie.");
|
|
return;
|
|
}
|
|
|
|
// Titre obligatoire
|
|
if (!titre) {
|
|
showMessage("danger", "Le titre de l'article est obligatoire.");
|
|
return;
|
|
}
|
|
|
|
// Titre existant
|
|
if (titresExistants.includes(titreLower)) {
|
|
showMessage("danger", "Ce titre existe déjà. Choisissez-en un autre.");
|
|
return;
|
|
}
|
|
|
|
// Contenu obligatoire
|
|
if (!contenu) {
|
|
showMessage("danger", "Le contenu de l'article ne peut pas être vide.");
|
|
return;
|
|
}
|
|
|
|
// Image valide
|
|
if (!imageValide(image)) {
|
|
showMessage("danger", "Format d'image invalide. JPG ou PNG uniquement.");
|
|
return;
|
|
}
|
|
|
|
// Enregistrement titre simulé
|
|
titresExistants.push(titreLower);
|
|
|
|
// Création article
|
|
const nouvelArticle = {
|
|
id: Date.now(),
|
|
titre,
|
|
contenu,
|
|
categorie,
|
|
published,
|
|
date: new Date().toISOString()
|
|
};
|
|
|
|
// LocalStorage
|
|
const articles = JSON.parse(localStorage.getItem("articles")) || [];
|
|
articles.push(nouvelArticle);
|
|
localStorage.setItem("articles", JSON.stringify(articles));
|
|
|
|
showMessage("success", "Article ajouté avec succès !");
|
|
|
|
// Reset
|
|
form.reset();
|
|
tinymce.get("articleContent").setContent("");
|
|
|
|
// Redirection
|
|
setTimeout(() => {
|
|
window.location.href = "../html/accueil_blog.html";
|
|
}, 1500);
|
|
});
|
|
|
|
/* =========================
|
|
TinyMCE
|
|
========================= */
|
|
tinymce.init({
|
|
selector: "#articleContent",
|
|
height: 400,
|
|
language: "fr",
|
|
plugins: "lists fullscreen",
|
|
toolbar: "undo redo | bold italic underline | bullist numlist | fullscreen"
|
|
});
|