mise a jour categorie (liste deroulante et remplissage obligatoire) + mise a jour checkbox + insertion de TinyMCE (pas finis)

This commit is contained in:
ben
2025-12-10 19:24:00 +01:00
parent 7fc3e350d0
commit 50b3904af6
2 changed files with 66 additions and 25 deletions

View File

@@ -100,18 +100,19 @@
<div id="successMsg" class="alert alert-success d-none">Article ajouté avec succès !</div> <div id="successMsg" class="alert alert-success d-none">Article ajouté avec succès !</div>
<!-- Catégorie --> <!-- Catégorie -->
<div class="mb-3"> <div class="mb-3">
<label class="form-label fw-bold">Catégorie de l'article</label> <label class="form-label fw-bold">Catégorie de l'article (obligatoire)</label>
<input list="categories" id="articleCategory" class="form-control" placeholder="Entrez une catégorie"> <select id="articleCategory" class="form-select" required>
<option value="" disabled selected>Choisissez une catégorie</option>
<datalist id="categories"> <option value="actualités">Actualités</option>
<option value="actualités"> <option value="chien">Chien</option>
<option value="chien"> <option value="chat">Chat</option>
<option value="chat"> <option value="boutique">Boutique</option>
<option value="boutique"> </select>
</datalist>
</div> </div>
<!-- Titre --> <!-- Titre -->
<div class="mb-4"> <div class="mb-4">
<label class="form-label fw-bold">Titre de l'article (obligatoire)</label> <label class="form-label fw-bold">Titre de l'article (obligatoire)</label>
@@ -137,7 +138,7 @@
<!--Publié--> <!--Publié-->
<div class="form-check mb-3"> <div class="form-check mb-3">
<input class="form-check-input" type="checkbox" id="articlePublished"> <input class="form-check-input" type="checkbox" id="articlePublished">
<label class="form-check-label" for="articlePublished">Publié (sera publié sur le blog)</label> <label class="form-check-label" for="articlePublished">Publié (sera publié sur le facebook)</label>
</div> </div>
@@ -152,25 +153,40 @@
<script src="../js/ajouter_article.js"></script> <script src="../js/ajouter_article.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script> <script src="https://cdn.tiny.cloud/1/1up68ybfp3crmpssl9o7pu6d0e8v3okcnsinhoujnmak7wft/tinymce/6/tinymce.min.js" referrerpolicy="origin"></script>
ClassicEditor <script>
tinymce.init({
selector: '#articleContent',
height: 400,
language: 'fr',
plugins: 'lists fullscreen',
toolbar: 'undo redo | bold italic underline | bullist numlist | fullscreen'
});
</script>
</body>
</html>
<!--ClassicEditor
.create(document.querySelector('#articleContent'), { .create(document.querySelector('#articleContent'), {
language: 'fr', language: 'fr',
toolbar: [ toolbar: [
'heading', 'heading',
'bold', 'italic', 'underline', 'bold', 'italic',
'bulletedList', 'numberedList', 'bulletedList', 'numberedList',
'undo', 'redo' 'undo', 'redo'
] ]
}) })
.catch(error => { .catch(error => {
console.error(error); console.error(error);
}); });
</script>
</body>
</html>

View File

@@ -1,7 +1,6 @@
const form = document.getElementById('ajouterArticleForm'); const form = document.getElementById('ajouterArticleForm');
const imgField = document.getElementById('articleImage'); const imgField = document.getElementById('articleImage');
const titleField = document.getElementById('articleTitle'); const titleField = document.getElementById('articleTitle');
const contentField = document.getElementById('articleContent');
const categoryField = document.getElementById('articleCategory'); const categoryField = document.getElementById('articleCategory');
const publishedField = document.getElementById('articlePublished'); const publishedField = document.getElementById('articlePublished');
@@ -18,6 +17,8 @@ form.addEventListener('submit', function(e) {
const titre = titleField.value.trim().toLowerCase(); const titre = titleField.value.trim().toLowerCase();
const fichierImage = imgField.files[0]; const fichierImage = imgField.files[0];
const contenu = tinymce.get("articleContent").getContent(); // ← CORRECTION IMPORTANTE
const categorie = categoryField.value;
// Reset messages // Reset messages
errorEmpty.classList.add('d-none'); errorEmpty.classList.add('d-none');
@@ -25,8 +26,16 @@ form.addEventListener('submit', function(e) {
errorExists.classList.add('d-none'); errorExists.classList.add('d-none');
successMsg.classList.add('d-none'); successMsg.classList.add('d-none');
// Catégorie obligatoire
if (categorie === "") {
errorEmpty.textContent = "Veuillez choisir une catégorie.";
errorEmpty.classList.remove('d-none');
return;
}
// Titre obligatoire // Titre obligatoire
if (titre === "") { if (titre === "") {
errorEmpty.textContent = "Le titre de l'article est obligatoire.";
errorEmpty.classList.remove('d-none'); errorEmpty.classList.remove('d-none');
return; return;
} }
@@ -37,6 +46,13 @@ form.addEventListener('submit', function(e) {
return; return;
} }
// Contenu obligatoire
if (contenu.trim() === "") {
errorEmpty.textContent = "Le contenu de l'article ne peut pas être vide.";
errorEmpty.classList.remove('d-none');
return;
}
// Image invalide // Image invalide
if (fichierImage) { if (fichierImage) {
const validFormats = ['image/jpeg', 'image/png']; const validFormats = ['image/jpeg', 'image/png'];
@@ -52,8 +68,17 @@ form.addEventListener('submit', function(e) {
// Succès // Succès
successMsg.classList.remove('d-none'); successMsg.classList.remove('d-none');
// Redirection après 1 seconde // Redirection
setTimeout(() => { setTimeout(() => {
window.location.href = "../html/liste_categorie_article.html"; window.location.href = "../html/liste_categorie_article.html";
}, 1000); }, 1000);
}); });
// TinyMCE
tinymce.init({
selector: '#articleContent',
height: 400,
language: 'fr',
plugins: 'lists fullscreen',
toolbar: 'undo redo | bold italic underline | bullist numlist | fullscreen',
});