Merge branch 'main' into david

This commit is contained in:
2025-12-12 07:40:34 +01:00
27 changed files with 1530 additions and 636 deletions

163
blog/html/accueil_blog.html Normal file
View File

@@ -0,0 +1,163 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin |Modifier le blog</title>
<link href="../../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="../../node_modules/bs-icon/icons.css">
<link rel="stylesheet" href="../../css/style.css">
</head>
<body>
<header>
<nav class="navbar navbar-expand-xxl bg-body-tertiary">
<div class="container-fluid align-items-center">
<a class="navbar-brand" href="#">L'Il'eau chiens - Admin</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active left-label" aria-current="page" href="#">Blog</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Boutique</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Prestations</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">FAQ</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Fiche de renseignements</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Partenaires</a>
</li>
</ul>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-megaphone me-1"></i> Message d'actu</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-box-arrow-up-right me-1"></i> Voir le site</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-gear me-1"></i> Configuration</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="userMenu" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-person-circle me-1"></i> <span id="userFirstName">Prénom</span>
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userMenu">
<li><a class="dropdown-item" href="#">Profil</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="#">Sortir</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
</header>
<main class="my-5 fs-6">
<div class="container">
<header>
<h1 class="title fs-2">Modifier la page blog</h1>
</header>
<main>
<section class="mb-5 section-categories">
<h2 class="my-4 fs-3">Liste des catégories</h2>
<!-- Message succès catégories -->
<div id="successCategoriesMsg" class="alert alert-success d-none"></div>
<!-- Bouton ajouter catégorie -->
<div class="d-flex justify-content-start mb-4">
<a href="ajouter_categorie.html" class="btn btn-primary">Ajouter une catégorie</a>
</div>
<!-- Tableau catégories -->
<table class="table table-striped table-hover">
<thead class="table-dark">
<tr>
<th>Nom</th>
<th class="text-end">Actions</th>
</tr>
</thead>
<tbody id="categoriesTableBody">
<!-- rempli en JS -->
</tbody>
</table>
</section>
<section class="section-articles">
<h2 class="my-4 fs-3">Liste des articles</h2>
<!-- Message succès articles -->
<div id="successArticlesMsg" class="alert alert-success d-none"></div>
<!-- Bouton ajouter article -->
<div class="d-flex justify-content-start mb-4">
<a href="ajouter_article.html" class="btn btn-primary">Ajouter un article</a>
</div>
<!-- Tableau articles -->
<table class="table table-striped table-hover">
<thead class="table-dark">
<tr>
<th>Titre</th>
<th class="text-end">Actions</th>
</tr>
</thead>
<tbody id="articlesTableBody">
<tr>
<td>Mon premier article</td>
<td class="text-end">
<a href="modifier_article.html"
class="btn btn-sm btn-outline-primary me-1">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn">Supprimer</button>
</td>
</tr>
<tr>
<td>Mon deuxième article</td>
<td class="text-end">
<a href="modifier_article.html"
class="btn btn-sm btn-outline-primary me-1">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn">Supprimer</button>
</td>
</tr>
</tbody>
</table>
</section>
</main>
</div>
</main>
<script src="../js/liste_categorie.js"></script>
<script src="../js/liste_articles.js"></script>
<script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
</body>

View File

@@ -7,26 +7,71 @@
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
<script src="https://cdn.ckeditor.com/ckeditor5/39.0.1/classic/ckeditor.js"></script> <script src="https://cdn.ckeditor.com/ckeditor5/39.0.1/classic/ckeditor.js"></script>
<script src="https://cdn.ckeditor.com/ckeditor5/39.0.1/classic/translations/fr.js"></script> <script src="https://cdn.ckeditor.com/ckeditor5/39.0.1/classic/translations/fr.js"></script>
<link rel="stylesheet" href="../../css/blog.css">
<style> <style>
body {
background: #f4f6f9;
}
.container {
max-width: 700px;
margin: 40px auto;
}
.ck-editor__editable {
min-height: 350px;
}
</style> </style>
</head> </head>
<body> <body>
<!-- HEADER -->
<header>
<nav class="navbar navbar-expand-xxl bg-body-tertiary shadow-sm">
<div class="container-fluid align-items-center">
<a class="navbar-brand" href="#">L'Il'eau chiens - Admin</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<!-- MENU GAUCHE -->
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item"><a class="nav-link active" href="#">Blog</a></li>
<li class="nav-item"><a class="nav-link" href="#">Boutique</a></li>
<li class="nav-item"><a class="nav-link" href="#">Prestations</a></li>
<li class="nav-item"><a class="nav-link" href="#">FAQ</a></li>
<li class="nav-item"><a class="nav-link" href="#">Fiche de renseignements</a></li>
<li class="nav-item"><a class="nav-link" href="#">Partenaires</a></li>
</ul>
<!-- MENU DROIT -->
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-megaphone me-1"></i> Message d'actu</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-box-arrow-up-right me-1"></i> Voir le site</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-gear me-1"></i> Configuration</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="userMenu" data-bs-toggle="dropdown">
<i class="bi bi-person-circle me-1"></i> <span id="userFirstName">Prénom</span>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="#">Profil</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Sortir</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container"> <div class="container">
<h2 class="mb-5 text-center">Ajouter un article</h2> <h2 class="mb-5 text-center">Ajouter un article</h2>
<form id="ajouterArticleForm"> <form id="ajouterArticleForm">
@@ -47,18 +92,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>
@@ -84,13 +130,13 @@
<!--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>
<!--Boutons--> <!--Boutons-->
<div class="d-flex gap-3 mt-4"> <div class="d-flex gap-3 mt-4">
<a href="../html/liste_article.html" class="btn btn-secondary w-50">Annuler</a> <a href="../html/accueil_blog.html" class="btn btn-secondary w-50">Annuler</a>
<button type="submit" class="btn btn-primary w-50">Ajouter</button> <button type="submit" class="btn btn-primary w-50">Ajouter</button>
</div> </div>
@@ -98,26 +144,23 @@
</div> </div>
<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="../../node_modules/bootstrap/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>
.create(document.querySelector('#articleContent'), { tinymce.init({
selector: '#articleContent',
height: 400,
language: 'fr', language: 'fr',
toolbar: [ plugins: 'lists fullscreen',
'heading', toolbar: 'undo redo | bold italic underline | bullist numlist | fullscreen'
'bold', 'italic', 'underline', });
'bulletedList', 'numberedList',
'undo', 'redo'
]
})
.catch(error => {
console.error(error);
});
</script> </script>
</body> </body>
</html> </html>

View File

@@ -12,13 +12,66 @@
} }
.container{ .container{
max-width: 600px;
margin-top: 50px; margin-top: 50px;
} }
</style> </style>
</head> </head>
<body> <body>
<!-- HEADER -->
<header>
<nav class="navbar navbar-expand-xxl bg-body-tertiary shadow-sm">
<div class="container-fluid align-items-center">
<a class="navbar-brand" href="#">L'Il'eau chiens - Admin</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<!-- MENU GAUCHE -->
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item"><a class="nav-link active" href="#">Blog</a></li>
<li class="nav-item"><a class="nav-link" href="#">Boutique</a></li>
<li class="nav-item"><a class="nav-link" href="#">Prestations</a></li>
<li class="nav-item"><a class="nav-link" href="#">FAQ</a></li>
<li class="nav-item"><a class="nav-link" href="#">Fiche de renseignements</a></li>
<li class="nav-item"><a class="nav-link" href="#">Partenaires</a></li>
</ul>
<!-- MENU DROIT -->
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-megaphone me-1"></i> Message d'actu</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-box-arrow-up-right me-1"></i> Voir le site</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-gear me-1"></i> Configuration</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="userMenu" data-bs-toggle="dropdown">
<i class="bi bi-person-circle me-1"></i> <span id="userFirstName">Prénom</span>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="#">Profil</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Sortir</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container"> <div class="container">
<h2 class="mb-5 text-center">Ajouter une catégorie</h2> <h2 class="mb-5 text-center">Ajouter une catégorie</h2>
@@ -44,14 +97,14 @@
</div> </div>
<div class="d-flex gap-3 mt-4"> <div class="d-flex gap-3 mt-4">
<a href="../../../blog/categories/liste_categorie/liste_categorie.html" class="btn btn-secondary w-50">Annuler</a> <a href="../html/accueil_blog.html" class="btn btn-secondary w-50">Annuler</a>
<button type="submit" class="btn btn-primary w-50">Ajouter</button> <button type="submit" class="btn btn-primary w-50">Ajouter</button>
</div> </div>
</form> </form>
</div> </div>
<script src="../js/ajouter_categorie.js"></script> <script src="../js/ajouter_categorie.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> <script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
</body> </body>
</html> </html>

View File

@@ -1,67 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Liste des article</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
<style>
body {
background: #f4f6f9;
}
.container {
margin-top: 60px;
}
</style>
</head>
<body>
<div class="container">
<div class="d-flex justify-content-between align-items-center mb-4">
<h2 class="mb-0">Listes des articles</h2>
<a href="ajouter_article.html" class="btn btn-primary">Ajouter un article</a>
</div>
<table class="table table-bordered table-hover bg-white">
<thead class="table-light">
<tr>
<th>Titre</th>
<th>Catégorie</th>
<th>Publié</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mon premier article</td>
<td>Chien</td>
<td>Oui</td>
<td>
<a href="voir_article.html" class="btn btn-sm btn-outline-secondary">Voir</a>
<a href="../html/modifier_article.html" class="btn btn-sm btn-outline-primary">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn">Supprimer</button>
</td>
</tr>
<tr>
<td>Mon deuxième article</td>
<td>Chat</td>
<td>Oui</td>
<td>
<a href="voir_article.html" class="btn btn-sm btn-outline-secondary">Voir</a>
<a href="../html/modifier_article.html" class="btn btn-sm btn-outline-primary">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn">Supprimer</button>
</td>
</tr>
</tbody>
</table>
</div>
<script src="../js/liste_articles.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

View File

@@ -1,56 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Liste des catégories</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
<style>
body {
background: #f4f6f9;
padding: 30px;
}
.container {
max-width: 800px;
margin-top: 40px;
}
</style>
</head>
<body>
<div class="container">
<h2 class="text-center mb-4">Liste des catégories</h2>
<!-- Message succès -->
<div id="successMsg" class="alert alert-success d-none"></div>
<!-- Bouton ajouter -->
<div class="d-flex justify-content-end mb-4">
<a href="../html/ajouter_categorie.html" class="btn btn-primary">
Ajouter une catégorie
</a>
</div>
<!-- Tableau -->
<table class="table table-striped table-hover">
<thead class="table-dark">
<tr>
<th>Nom</th>
<th>Description</th>
<th class="text-center">Actions</th>
</tr>
</thead>
<tbody id="categoriesTableBody">
<!-- rempli en JS -->
</tbody>
</table>
</div>
<script src="../js/liste_categorie.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

View File

@@ -14,7 +14,7 @@
background: #f4f6f9; background: #f4f6f9;
} }
.container { .container {
max-width: 700px;
margin-top: 40px; margin-top: 40px;
} }
.preview-img { .preview-img {
@@ -29,6 +29,60 @@
<body> <body>
<!-- HEADER -->
<header>
<nav class="navbar navbar-expand-xxl bg-body-tertiary shadow-sm">
<div class="container-fluid align-items-center">
<a class="navbar-brand" href="#">L'Il'eau chiens - Admin</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<!-- MENU GAUCHE -->
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item"><a class="nav-link active" href="#">Blog</a></li>
<li class="nav-item"><a class="nav-link" href="#">Boutique</a></li>
<li class="nav-item"><a class="nav-link" href="#">Prestations</a></li>
<li class="nav-item"><a class="nav-link" href="#">FAQ</a></li>
<li class="nav-item"><a class="nav-link" href="#">Fiche de renseignements</a></li>
<li class="nav-item"><a class="nav-link" href="#">Partenaires</a></li>
</ul>
<!-- MENU DROIT -->
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-megaphone me-1"></i> Message d'actu</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-box-arrow-up-right me-1"></i> Voir le site</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-gear me-1"></i> Configuration</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="userMenu" data-bs-toggle="dropdown">
<i class="bi bi-person-circle me-1"></i> <span id="userFirstName">Prénom</span>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="#">Profil</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Sortir</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container"> <div class="container">
<h2 class="mb-4 text-center">Modifier un article</h2> <h2 class="mb-4 text-center">Modifier un article</h2>
@@ -98,12 +152,12 @@
<!--Publié--> <!--Publié-->
<div class="form-check mb-3"> <div class="form-check mb-3">
<input class="form-check-input" type="checkbox" id="articlePublished" checked> <input class="form-check-input" type="checkbox" id="articlePublished" checked>
<label class="form-check-label">Publié</label> <label class="form-check-label">Publié (sera publié sur facebook)</label>
</div> </div>
<!--Boutons--> <!--Boutons-->
<div class="d-flex gap-3 mt-4"> <div class="d-flex gap-3 mt-4">
<a href="../html/liste_article.html" class="btn btn-secondary w-50">Annuler</a> <a href="../../blog/html/accueil_blog.html" class="btn btn-secondary w-50">Annuler</a>
<button type="submit" class="btn btn-primary w-50">Enregistrer</button> <button type="submit" class="btn btn-primary w-50">Enregistrer</button>
</div> </div>
@@ -125,7 +179,7 @@
</script> </script>
<script src="../js/modifier_article.js"></script> <script src="../js/modifier_article.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> <script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
</body> </body>
</html> </html>

View File

@@ -5,27 +5,69 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Modifier une catégorie</title> <title>Modifier une catégorie</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="../../css/blog.css">
<style>
body {
background: #f4f6f981;
}
.container {
max-width: 600px;
margin: 50px auto;
}
</style>
</head> </head>
<body> <body>
<!-- HEADER -->
<header>
<nav class="navbar navbar-expand-xxl bg-body-tertiary shadow-sm">
<div class="container-fluid align-items-center">
<a class="navbar-brand" href="#">L'Il'eau chiens - Admin</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<!-- MENU GAUCHE -->
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item"><a class="nav-link active" href="#">Blog</a></li>
<li class="nav-item"><a class="nav-link" href="#">Boutique</a></li>
<li class="nav-item"><a class="nav-link" href="#">Prestations</a></li>
<li class="nav-item"><a class="nav-link" href="#">FAQ</a></li>
<li class="nav-item"><a class="nav-link" href="#">Fiche de renseignements</a></li>
<li class="nav-item"><a class="nav-link" href="#">Partenaires</a></li>
</ul>
<!-- MENU DROIT -->
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-megaphone me-1"></i> Message d'actu</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-box-arrow-up-right me-1"></i> Voir le site</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-gear me-1"></i> Configuration</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="userMenu" data-bs-toggle="dropdown">
<i class="bi bi-person-circle me-1"></i> <span id="userFirstName">Prénom</span>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="#">Profil</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Sortir</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container"> <div class="container">
<h2 class="mb-5 text-center">Modifier une catégorie</h2> <h2 class="mb-5 text-center">Modifier une catégorie</h2>
<div id="errorMsg" class="alert alert-danger d-none">Veuillez ezmplir tous les champs obligatoires</div>
<div id="successMsg" class="alert alert-success d-none">La catégorie a été modifiée avec succès !</div>
<form id="modifierCategorie"> <form id="modifierCategorie">
@@ -42,7 +84,7 @@
</div> </div>
<div class="d-flex gap-3 mt-4"> <div class="d-flex gap-3 mt-4">
<a href="../../categories/liste_categorie/liste_categorie.html" class="btn btn-secondary w-50">Annuler</a> <a href="../html/accueil_blog.html" class="btn btn-secondary w-50">Annuler</a>
<button type="submit" class="btn btn-primary w-50">Enregistrer</button> <button type="submit" class="btn btn-primary w-50">Enregistrer</button>
</div> </div>
@@ -50,7 +92,7 @@
</div> </div>
<script src="../js/modifier_categorie.js"></script> <script src="../js/modifier_categorie.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> <script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>

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,9 @@ 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();
const categorie = categoryField.value;
const published = publishedField.checked; // récupère la case cochée
// Reset messages // Reset messages
errorEmpty.classList.add('d-none'); errorEmpty.classList.add('d-none');
@@ -25,8 +27,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 +47,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'];
@@ -46,14 +63,44 @@ form.addEventListener('submit', function(e) {
} }
} }
// Simuler enregistrement // Simuler enregistrement
titreExistants.push(titre); titreExistants.push(titre);
// CRÉATION DE L'ARTICLE
const nouvelArticle = {
id: Date.now(),
titre: titleField.value.trim(),
contenu: contenu,
categorie: categorie,
published: published, // valeur TRUE/FALSE pour afficher le badge Facebook
date: new Date().toISOString()
};
// SAUVEGARDE DANS LOCALSTORAGE
let articles = JSON.parse(localStorage.getItem("articles")) || [];
articles.push(nouvelArticle);
localStorage.setItem("articles", JSON.stringify(articles));
console.log("Article enregistré :", nouvelArticle);
// 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_article.html"; window.location.href = "../html/accueil_blog.html";
}, 1000); }, 1000);
}); });
// TinyMCE INIT
tinymce.init({
selector: '#articleContent',
height: 400,
language: 'fr',
plugins: 'lists fullscreen',
toolbar: 'undo redo | bold italic underline | bullist numlist | fullscreen'
});

View File

@@ -40,7 +40,7 @@ existingCategories.push(nom);
// Redirection après 1 seconde // Redirection après 1 seconde
setTimeout(() => { setTimeout(() => {
window.location.href = "../html/liste_categorie.html"; window.location.href = "../html/accueil_blog.html";
}, 1000); }, 1000);

View File

@@ -1,14 +1,67 @@
// Sélecteur du tableau
const articlesTableBody = document.getElementById("articlesTableBody");
// Charger les articles depuis le localStorage
let articles = JSON.parse(localStorage.getItem("articles")) || [];
// Fonction d'affichage des articles
function afficherArticles() {
articlesTableBody.innerHTML = ""; // Nettoie le tableau
if (articles.length === 0) {
articlesTableBody.innerHTML = `
<tr>
<td colspan="2" class="text-center text-muted py-3">
Aucun article pour le moment.
</td>
</tr>
`;
return;
}
articles.forEach(article => {
const tr = document.createElement("tr");
tr.innerHTML = `
<td>
${article.titre}
${article.published ? '<span class="badge bg-primary ms-2">Publié Facebook</span>' : ''}
</td>
<td class="text-end">
<a href="modifier_article.html?id=${article.id}"
class="btn btn-sm btn-outline-primary me-1">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn" data-id="${article.id}">
Supprimer
</button>
</td>
`;
articlesTableBody.appendChild(tr);
});
}
// Gestion de suppression
document.addEventListener("click", function (e) { document.addEventListener("click", function (e) {
const btn = e.target.closest(".delete-btn"); const btn = e.target.closest(".delete-btn");
if (!btn) return; // on a cliqué ailleurs if (!btn) return;
// On récupère la ligne de l'article
const row = btn.closest("tr"); const row = btn.closest("tr");
const titre = row.querySelector("td").textContent.trim(); const titre = row.querySelector("td").textContent.trim();
const id = Number(btn.dataset.id);
if (confirm(`Voulez-vous vraiment supprimer l'article : "${titre}" ?`)) { if (confirm(`Voulez-vous vraiment supprimer l'article : "${titre}" ?`)) {
row.remove(); // supprime la ligne
// Supprimer dans le tableau local
articles = articles.filter(article => article.id !== id);
localStorage.setItem("articles", JSON.stringify(articles));
// Supprimer visuel
row.remove();
alert("Article supprimé !"); alert("Article supprimé !");
} }
}); });
// Lancer l'affichage dès que la page charge
afficherArticles();

View File

@@ -17,14 +17,15 @@ function afficherCategories() {
const row = ` const row = `
<tr> <tr>
<td>${cat.nom}</td> <td>${cat.nom}</td>
<td>${cat.description || "-"}</td>
<td class="text-center"> <td class="text-end">
<a href="../html/modifier_categorie.html?id=${cat.id}" class="btn btn-warning btn-sm"> <a href="../html/modifier_categorie.html?id=${cat.id}"
class="btn btn-sm btn-outline-primary me-1">
Modifier Modifier
</a> </a>
<button class="btn btn-danger btn-sm" onclick="supprimerCategorie(${index})"> <button class="btn btn-sm btn-outline-danger"
onclick="supprimerCategorie(${index})">
Supprimer Supprimer
</button> </button>
</td> </td>

View File

@@ -55,6 +55,6 @@ form.addEventListener("submit", function (e) {
// Redirection après succès // Redirection après succès
setTimeout(() => { setTimeout(() => {
window.location.href = "../html/liste_article.html"; window.location.href = "../../blog/html/accueil_blog.html";
}, 1500); }, 1500);
}); });

View File

@@ -1,26 +1,37 @@
const form = document.getElementById("modifierCategorie"); const form = document.getElementById("modifierCategorie");
const nameField = document.getElementById("categoryName"); const nameField = document.getElementById("categoryName");
const descField = document.getElementById("categorieDescription"); const descField = document.getElementById("categorieDescription");
const errorMsg = document.getElementById("errorMsg");
const successMsg = document.getElementById("successMsg"); // Fonction pour afficher un message Bootstrap
function showMessage(type, message) {
// Création de l'alert
const alert = document.createElement("div");
alert.className = `alert alert-${type} mt-3`;
alert.textContent = message;
// Ajout en haut du formulaire
form.prepend(alert);
// Suppression automatique après 2 secondes
setTimeout(() => {
alert.remove();
}, 2000);
}
form.addEventListener("submit", function (e) { form.addEventListener("submit", function (e) {
e.preventDefault(); e.preventDefault();
// Vérification des champs obligatoires // Vérification des champs obligatoires
if (nameField.value.trim() === "" || descField.value.trim() === "") { if (nameField.value.trim() === "" || descField.value.trim() === "") {
errorMsg.classList.remove("d-none"); showMessage("danger", "Veuillez remplir tous les champs obligatoires");
successMsg.classList.add("d-none");
return; return;
} }
// Succès // Message succès
errorMsg.classList.add("d-none"); showMessage("success", "La catégorie a été modifiée avec succès !");
successMsg.classList.remove("d-none");
// Redirection après succès // Redirection après succès
setTimeout(() => { setTimeout(() => {
window.location.href = "../html/liste_categorie.html"; window.location.href = "../html/accueil_blog.html";
}, 1500); }, 1500);
}); });

View File

@@ -1,61 +1,56 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Mot de passe oublié</title>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"
/>
<style> <head>
body { <meta charset="UTF-8" />
background: #f4f6f981; <meta name="viewport" content="width=device-width, initial-scale=1.0" />
height: 100vh; <title>Mot de passe oublié</title>
display: flex; <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" />
justify-content: center;
align-items: center;
}
.forgot-password-card {
width: 100%;
max-width: 380px;
}
</style>
</head>
<body>
<div class="card shadow forgot-password-card">
<div class="card-body p-4">
<h3 class="text-center mb-4">Mot de passe oublié</h3>
<p>
Nous avons besoin de votre adresse mail pour pouvoir réinitialiser
votre mot de passe.
</p>
<form>
<div class="mb-3">
<label class="form-label">Adresse e-mail</label>
<input <style>
type="email" body {
class="form-control" background: #f4f6f981;
placeholder="exemple@mail.com" height: 100vh;
/> display: flex;
</div> justify-content: center;
align-items: center;
}
<button class="btn btn-primary w-100"> .forgot-password-card {
Réinitialiser le mot de passe width: 100%;
</button> max-width: 380px;
}
</style>
</head>
<div class="text-center mt-3"> <body>
<a <div class="card shadow forgot-password-card">
href="../html/page_de_connexion.html" <div class="card-body p-4">
class="text-decoration-none" <h1 class="text-center mb-4 fs-3">Mot de passe oublié</h1>
>Retour à la connexion</a <p class="text text-muted mb-4">
> Nous avons besoin de votre adresse mail pour pouvoir réinitialiser
</div> votre mot de passe.
</form> </p>
</div> <form>
<div class="mb-3">
<label class="form-label" for="email">Adresse e-mail</label>
<input type="email" class="form-control" placeholder="exemple@mail.com" required />
</div>
<button class="btn btn-primary w-100" type="submit">
Réinitialiser le mot de passe
</button>
<div class="text-center mt-3">
<a href="../html/page_de_connexion.html" class="text-decoration-none">Retour à la connexion</a>
</div>
</form>
</div> </div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> </div>
</body> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</html> </body>
</html>

View File

@@ -26,12 +26,23 @@
<body> <body>
<div class="card shadow login-card"> <div class="card shadow login-card">
<div class="card-body p-4"> <div class="card-body p-4">
<h3 class="text-center mb-4">Connexion Admin</h3> <h1 class="text-center mb-4 fs-3">Connexion Admin</h1>
<form> <form>
<div class="mb-3"> <div class="mb-3">
<label class="form-label">Mot de passe</label> <label class="form-label">Adresse e-mail </label>
<input
type="email"
class="form-control"
id="textInput"
/>
</div>
<div class="mb-3">
<label class="form-label" for="password">Mot de passe</label>
<input <input
type="password" type="password"
class="form-control" class="form-control"
@@ -44,7 +55,7 @@
</label> </label>
</div> </div>
<button class="btn btn-primary w-100">Se connecter</button> <button class="btn btn-primary w-100" type="submit">Se connecter</button>
<div class="text-center mt-3"> <div class="text-center mt-3">
<a href="../html/mot_de_passe_oublie.html" class="text-decoration-none">Mot de passe oublié ?</a> <a href="../html/mot_de_passe_oublie.html" class="text-decoration-none">Mot de passe oublié ?</a>
@@ -53,6 +64,7 @@
</div> </div>
</div> </div>
<script src="../js/page_de_connexion.js"></script> <script src="../js/page_de_connexion.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> <script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
</body> </body>
</html> </html>

View File

@@ -26,8 +26,8 @@
<body> <body>
<div class="card shadow reset-password-card"> <div class="card shadow reset-password-card">
<div class="card-body p-4"> <div class="card-body p-4">
<h3 class="text-center mb-4">Nouveau mot de passe</h3> <h1 class="text-center mb-4 fs-3">Nouveau mot de passe</h1>
<p class="text-center text-muted mb-4"> <p class="text text-muted mb-4">
Pour réinitialiser votre mot de passe, veuillez saisir un nouveau mot Pour réinitialiser votre mot de passe, veuillez saisir un nouveau mot
de passe ainsi qu'une confirmation. de passe ainsi qu'une confirmation.
@@ -35,14 +35,14 @@
<div <div
id="errorMsg" id="errorMsg"
class="alert alert-danger text-center" class="alert alert-danger text-center fs-1"
style="display: none" style="display: none"
> >
Les mots de passe ne correspondent pas. Les mots de passe ne correspondent pas.
</div> </div>
<form id="resetForm"> <form id="resetForm">
<div class="mb-3"> <div class="mb-4">
<label class="form-label" <label class="form-label"
>Nouveau mot de passe (minimum 8 caractères)</label >Nouveau mot de passe (minimum 8 caractères)</label
> >
@@ -57,7 +57,7 @@
<div class="mb-3"> <div class="mb-3">
<label class="form-label" <label class="form-label"
>Confirmer le mot de passe (minimum 8 caractères)</label >Confirmer le mot de passe</label
> >
<input <input
type="password" type="password"
@@ -86,6 +86,11 @@
<button class="btn btn-primary w-100" type="submit"> <button class="btn btn-primary w-100" type="submit">
Changer le mot de passe Changer le mot de passe
</button> </button>
<div class="text-center mt-3">
<a
href="../html/page_de_connexion.html"
class="text-decoration-none"
>Retour à la connexion</a
</form> </form>
</div> </div>
</div> </div>

10
css/avant_apres.css Normal file
View File

@@ -0,0 +1,10 @@
/*=============================================================================
Image Preview Styles
=============================================================================*/
.img-preview {
max-width: 150px;
border-radius: 8px;
display: none;
/* cachée tant qu'il n'y a pas d'image */
}

11
css/blog.css Normal file
View File

@@ -0,0 +1,11 @@
body {
background: #f4f6f9;
}
.container {
margin: 40px auto;
}
.ck-editor__editable {
min-height: 350px;
}

41
css/style.css Normal file
View File

@@ -0,0 +1,41 @@
/*=============================================================================
Header Navbar Styles
=============================================================================*/
.navbar-brand {
font-size: 1.2rem;
line-height: 1;
padding-top: 0.25rem;
padding-bottom: 0.25rem;
}
.brand-sep {
height: 1.2rem;
}
@media (max-width: 1399.98px) {
.navbar .nav-item {
background-color: var(--bs-light);
border: 1px solid var(--bs-border-color);
border-radius: .25rem;
margin-bottom: .375rem;
text-align: center;
}
#navbarSupportedContent>ul:first-child {
margin-top: .5rem;
}
#navbarSupportedContent>ul:last-child {
margin-top: 1rem;
}
.bi {
display: none;
}
}

3
package-lock.json generated
View File

@@ -76,8 +76,7 @@
"node_modules/scheduler": { "node_modules/scheduler": {
"version": "0.27.0", "version": "0.27.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
"integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="
"peer": true
}, },
"node_modules/tinymce": { "node_modules/tinymce": {
"version": "8.2.2", "version": "8.2.2",

View File

@@ -4,95 +4,167 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ajouter une paire avant/après</title> <title>Ajouter un résultat avant/après</title>
<link href="../../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="../../node_modules/bs-icon/icons.css">
<link rel="stylesheet" href="../../css/style.css">
<link rel="stylesheet" href="../../css/avant_apres.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
<style>
.img-preview {
max-width: 150px;
border-radius: 8px;
display: none; /* cachée tant qu'il n'y a pas d'image */
}
</style>
</head> </head>
<body class="bg-light py-4 py-md-5">
<div class="container" style="max-width: 800px;"> <body>
<h1 class="mb-4 mb-md-5 text-center">Ajouter une paire avant/après</h1> <header>
<nav class="navbar navbar-expand-xxl bg-body-tertiary">
<div class="container-fluid align-items-center">
<a class="navbar-brand" href="#">L'Il'eau chiens - Admin</a>
<!-- Message succès -->
<div id="successMsg" class="alert alert-success d-none">
Nouvelle paire ajoutée avec succès !
</div>
<!-- Message erreur -->
<div id="errorMsg" class="alert alert-danger d-none">
Merci de remplir tous les champs obligatoires.
</div>
<!-- Erreur : format invalide --> <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
<div id="errorFormat" class="alert alert-danger d-none"> data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
Format d'image invalide. Formats acceptés : JPG, PNG, WEBP. aria-expanded="false" aria-label="Toggle navigation">
</div> <span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active left-label" aria-current="page" href="#">Blog</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Boutique</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Prestations</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">FAQ</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Fiche de renseignements</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Partenaires</a>
</li>
</ul>
<form id="addPairForm" class="mt-3">
<!-- Titre / label --> <ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<div class="mb-3"> <li class="nav-item">
<label class="form-label" for="pairTitle">Titre de la paire (obligatoire)</label> <a class="nav-link" href="#"><i class="bi bi-megaphone me-1"></i> Message d'actu</a>
<input type="text" id="pairTitle" class="form-control" required> </li>
</div> <li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-box-arrow-up-right me-1"></i> Voir le site</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-gear me-1"></i> Configuration</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="userMenu" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-person-circle me-1"></i> <span id="userFirstName">Prénom</span>
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userMenu">
<li><a class="dropdown-item" href="#">Profil</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="#">Sortir</a></li>
</ul>
</li>
</ul>
<!-- Type -->
<div class="mb-3">
<label class="form-label" for="pairType">Type (obligatoire)</label>
<select id="pairType" class="form-select" required>
<option value="">-- Choisir --</option>
<option value="Chien">Chien</option>
<option value="Chat">Chat</option>
</select>
</div>
<!-- Image AVANT -->
<div class="mb-4">
<label class="form-label" for="beforeImage">Image AVANT (obligatoire)</label>
<input type="file" id="beforeImage" class="form-control" accept="image/*" required>
<img id="beforePreview" class="img-preview border mt-2" src="#" alt="image avant">
</div>
<!-- Image APRÈS -->
<div class="mb-4">
<label class="form-label" for="afterImage">Image APRÈS (obligatoire)</label>
<input type="file" id="afterImage" class="form-control" accept="image/*" required>
<img id="afterPreview" class="img-preview border mt-2" src="#" alt="image après">
</div>
<!-- Boutons : empilés en mobile, côte à côte en md+ -->
<div class="row mt-4 g-3">
<div class="col-12 col-md-6">
<a href="../liste_avant_apres/liste_avant_apres.html" class="btn btn-secondary w-100">
Annuler
</a>
</div>
<div class="col-12 col-md-6">
<button type="submit" class="btn btn-primary w-100">
Ajouter
</button>
</div> </div>
</div> </div>
</nav>
</form> </header>
</div>
<script src="ajouter_avant_apres.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> <main class="my-5 fs-6">
<div class="container">
<header>
<h1 class="title fs-2">Ajouter un résultat en images (Avant / Après)</h1>
<!-- Message succès -->
<div id="successMsg" class="alert alert-success d-none">
Nouveau résultat ajouté avec succès !
</div>
<!-- Message erreur -->
<div id="errorMsg" class="alert alert-danger d-none">
Merci de remplir tous les champs obligatoires.
</div>
<!-- Erreur : format invalide -->
<div id="errorFormat" class="alert alert-danger d-none">
Format d'image invalide. Formats acceptés : JPG, PNG, WEBP.
</div>
</header>
<div class="section">
<form id="addPairForm" class="mt-3">
<!-- Titre -->
<div class="mb-3">
<label class="form-label fw-bold" for="pairTitle">Titre du résultat (obligatoire)</label>
<input type="text" id="pairTitle" class="form-control" required>
</div>
<!-- Type -->
<div class="mb-3">
<label class="form-label fw-bold" for="pairType">Type (obligatoire)</label>
<select id="pairType" class="form-select" required>
<option value="">-- Choisir --</option>
<option value="Chien">Chien</option>
<option value="Chat">Chat</option>
</select>
</div>
<!-- Image AVANT -->
<div class="mb-4">
<label class="form-label fw-bold" for="beforeImage">Image AVANT (obligatoire, formats acceptés :
jpg,
png, webp)</label>
<input type="file" id="beforeImage" class="form-control" accept="image/*" required>
<img id="beforePreview" class="img-preview border mt-2" src="#" alt="image avant">
</div>
<!-- Image APRÈS -->
<div class="mb-4">
<label class="form-label fw-bold" for="afterImage">Image APRÈS (obligatoire, formats acceptés :
jpg,
png, webp)</label>
<input type="file" id="afterImage" class="form-control" accept="image/*" required>
<img id="afterPreview" class="img-preview border mt-2" src="#" alt="image après">
</div>
<!-- Boutons : empilés en mobile, côte à côte en md+ -->
<div class="row mt-4 g-3">
<div class="col-12 col-md-6">
<a href="../html/liste_avant_apres.html" class="btn btn-secondary w-100">
Annuler
</a>
</div>
<div class="col-12 col-md-6">
<button type="submit" class="btn btn-primary w-100">
Ajouter
</button>
</div>
</div>
</form>
</div>
</div>
</main>
<script src="../js/ajouter_avant_apres.js"></script>
<script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
</body> </body>
</html> </html>

View File

@@ -4,81 +4,141 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Liste des paires avant/après</title> <title>Liste des résultats avant/après</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"> <link href="../../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="../../node_modules/bs-icon/icons.css">
<link rel="stylesheet" href="../../css/style.css">
<link rel="stylesheet" href="../../css/avant_apres.css">
</head> </head>
<body class="bg-light py-4 py-md-5"> <body>
<div class="container" style="max-width: 1000px;"> <header>
<h1 class="mb-4 mb-md-5 text-center">Liste des paires avant/après</h1> <nav class="navbar navbar-expand-xxl bg-body-tertiary">
<div class="container-fluid align-items-center">
<a class="navbar-brand" href="#">L'Il'eau chiens - Admin</a>
<!-- Message succès --> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent"
<div id="succesDeleteMsg" class="alert alert-success d-none"> aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
Paire supprimée avec succès ! <span class="navbar-toggler-icon"></span>
</div> </button>
<div class="d-flex justify-content-end mb-4"> <div class="collapse navbar-collapse" id="navbarSupportedContent">
<a href="../ajouter_avant_apres/ajouter_avant_apres.html" class="btn btn-primary"> <ul class="navbar-nav me-auto mb-2 mb-lg-0">
Ajouter une paire <li class="nav-item">
</a> <a class="nav-link active left-label" aria-current="page" href="#">Blog</a>
</div> </li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Boutique</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Prestations</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">FAQ</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Fiche de renseignements</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Partenaires</a>
</li>
</ul>
<!-- Table responsive --> <ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<div class="table-responsive"> <li class="nav-item">
<table class="table table-striped table-hover align-middle mb-0"> <a class="nav-link" href="#"><i class="bi bi-megaphone me-1"></i> Message d'actu</a>
<thead class="table-dark"> </li>
<tr> <li class="nav-item">
<th>Titre paire</th> <a class="nav-link" href="#"><i class="bi bi-box-arrow-up-right me-1"></i> Voir le site</a>
<th>Type</th> </li>
<th>Avant</th> <li class="nav-item">
<th>Après</th> <a class="nav-link" href="#"><i class="bi bi-gear me-1"></i> Configuration</a>
<th class="text-center">Actions</th> </li>
</tr> <li class="nav-item dropdown">
</thead> <a class="nav-link dropdown-toggle" href="#" id="userMenu" role="button" data-bs-toggle="dropdown"
<tbody id="prestationTableBody"> aria-expanded="false">
<!-- JS --> <i class="bi bi-person-circle me-1"></i> <span id="userFirstName">Prénom</span>
</tbody> </a>
</table> <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userMenu">
</div> <li><a class="dropdown-item" href="#">Profil</a></li>
</div> <li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="#">Sortir</a></li>
</ul>
</li>
</ul>
</div>
<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title" id="deleteModalLabel">Confirmer la suppression</h2>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fermer"></button>
</div> </div>
</nav>
</header>
<main class="my-5 fs-6">
<div class="container">
<header>
<h1 class="title fs-2 my-4">Liste des résultats avant/après</h1>
<!-- Message succès -->
<div id="succesDeleteMsg" class="alert alert-success d-none">
Résultat supprimé avec succès !
</div>
</header>
<div class="section">
<div class="d-flex justify-content-start mb-4">
<a href="../html/ajouter_avant_apres.html" class="btn btn-primary">
Ajouter un résultat
</a>
</div>
<!-- Table responsive -->
<div class="table-responsive">
<table class="table table-striped table-hover align-middle mb-0">
<thead class="table-dark">
<tr>
<th>Titre du résultat</th>
<th class="text-end">Actions</th>
</tr>
</thead>
<tbody id="prestationTableBody">
<!-- JS -->
</tbody>
</table>
</div>
<div class="modal-body">
Voulez-vous vraiment supprimer cette paire avant/après ?
</div> </div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Annuler</button>
<button type="button" class="btn btn-danger" id="confirmDeleteBtn">Supprimer</button>
</div>
</div> </div>
</div>
</div>
<!--- modale de suppression-->
<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title" id="deleteModalLabel">Confirmer la suppression</h2>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fermer"></button>
</div>
<div class="modal-body">
Voulez-vous vraiment supprimer ce résultat avant/après ?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Annuler</button>
<button type="button" class="btn btn-danger" id="confirmDeleteBtn">Supprimer</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> </div>
<script src="liste_avant_apres.js"></script> </div>
</div>
</main>
<script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="../js/liste_avant_apres.js"></script>
</body> </body>
</html> </html>

View File

@@ -1,25 +1,31 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Liste des slides</title> <title>Liste des slides</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"> <link href="../../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="../../node_modules/bs-icon/icons.css">
<link rel="stylesheet" href="../../css/style.css">
<style> <style>
body { body {
background: #f4f6f9; background: #f4f6f9;
padding: 40px; padding: 40px;
} }
.container { .container {
max-width: 900px; max-width: 900px;
} }
.miniature { .miniature {
width: 90px; width: 90px;
height: 60px; height: 60px;
object-fit: cover; object-fit: cover;
border-radius: 5px; border-radius: 5px;
} }
.action-buttons button, .action-buttons button,
.action-buttons a { .action-buttons a {
margin-right: 8px; margin-right: 8px;
@@ -27,39 +33,103 @@
</style> </style>
</head> </head>
<header>
<nav class="navbar navbar-expand-xxl bg-body-tertiary">
<div class="container-fluid align-items-center">
<a class="navbar-brand" href="#">L'Il'eau chiens - Admin</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active left-label" aria-current="page" href="#">Blog</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Boutique</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Prestations</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">FAQ</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Fiche de renseignements</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Partenaires</a>
</li>
</ul>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-megaphone me-1"></i> Message d'actu</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-box-arrow-up-right me-1"></i> Voir le site</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-gear me-1"></i> Configuration</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="userMenu" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-person-circle me-1"></i> <span id="userFirstName">Prénom</span>
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userMenu">
<li><a class="dropdown-item" href="#">Profil</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Sortir</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
</header>
<body> <body>
<div class="container"> <div class="container">
<h2 class="text-center mb-4">Slider Liste des images</h2> <h2 class="text-center mb-4">Slider Liste des images</h2>
<!-- Message succès (suppression / ordre) --> <!-- Message succès (suppression / ordre) -->
<div id="successMsg" class="alert alert-success d-none"></div> <div id="successMsg" class="alert alert-success d-none"></div>
<!-- Bouton ajouter --> <!-- Bouton ajouter -->
<div class="d-flex justify-content-end mb-4"> <div class="d-flex justify-content-start mb-4">
<a href="../../slider/ajouter_slider/ajouter_slider.html" class="btn btn-primary">Ajouter une image au slider</a> <a href="../html/ajouter_slider.html" class="btn btn-primary">Ajouter une image au slider</a>
</div>
<table class="table table-striped table-hover align-middle">
<thead class="table-dark">
<tr>
<th>Image</th>
<th>Texte ALT</th>
<th>Titre</th>
<th>Ordre</th>
<th class="text-center">Actions</th>
</tr>
</thead>
<tbody id="sliderTableBody">
<!-- rempli en JS -->
</tbody>
</table>
</div> </div>
<table class="table table-striped table-hover align-middle"> <script src="../js/liste_slider.js"></script>
<thead class="table-dark"> <script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<tr>
<th>Image</th>
<th>Texte ALT</th>
<th>Titre</th>
<th>Ordre</th>
<th class="text-center">Actions</th>
</tr>
</thead>
<tbody id="sliderTableBody">
<!-- rempli en JS -->
</tbody>
</table>
</div>
<script src="liste_slider.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body> </body>
</html>
</html>

View File

@@ -4,95 +4,167 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Modifier une paire avant/après</title> <title>Modifier un résultat avant/après</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"> <link href="../../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="../../node_modules/bs-icon/icons.css">
<style> <link rel="stylesheet" href="../../css/style.css">
.img-preview { <link rel="stylesheet" href="../../css/avant_apres.css">
max-width: 150px;
border-radius: 8px;
}
</style>
</head> </head>
<body class="bg-light py-4 py-md-5"> <body>
<div class="container" style="max-width: 800px;"> <header>
<h2 class="mb-4 mb-md-5 text-center">Modifier une paire avant/après</h2> <nav class="navbar navbar-expand-xxl bg-body-tertiary">
<div class="container-fluid align-items-center">
<a class="navbar-brand" href="#">L'Il'eau chiens - Admin</a>
<!-- Messages --> <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
<div id="successMsg" class="alert alert-success d-none"> data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
La paire avant/après a été modifiée avec succès. aria-expanded="false" aria-label="Toggle navigation">
</div> <span class="navbar-toggler-icon"></span>
<div id="errorMsg" class="alert alert-danger d-none"> </button>
Une erreur est survenue. Merci de vérifier le formulaire.
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active left-label" aria-current="page" href="#">Blog</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Boutique</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Prestations</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">FAQ</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Fiche de renseignements</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Partenaires</a>
</li>
</ul>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-megaphone me-1"></i> Message d'actu</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-box-arrow-up-right me-1"></i> Voir le site</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-gear me-1"></i> Configuration</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="userMenu" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-person-circle me-1"></i> <span id="userFirstName">Prénom</span>
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userMenu">
<li><a class="dropdown-item" href="#">Profil</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="#">Sortir</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
</header>
<main class="my-5 fs-6">
<div class="container">
<header>
<h1 class="title fs-2">Modifier un résultat en images (Avant / Après)</h1>
<!-- Messages -->
<div id="successMsg" class="alert alert-success d-none">
Le résultat a été modifié avec succès.
</div>
<div id="errorMsg" class="alert alert-danger d-none">
Une erreur est survenue. Merci de vérifier le formulaire.
</div>
<!-- Erreur : format invalide -->
<div id="errorFormat" class="alert alert-danger d-none">
Format d'image invalide. Formats acceptés : JPG, PNG, WEBP.
</div>
</header>
<div class="section">
<!-- Formulaire de modification -->
<form id="editPairForm" class="mt-3">
<!-- ID caché -->
<input type="hidden" id="pairId">
<!-- Titre-->
<div class="mb-3">
<label for="pairTitle" class="form-label fw-bold">Titre du résultat
(obligatoire)</label>
<input type="text" class="form-control" id="pairTitle" required>
</div>
<!-- Type -->
<div class="mb-3">
<label class="form-label fw-bold" for="pairType">Type (obligatoire)</label>
<select id="pairType" class="form-select" required>
<option value="">-- Choisir --</option>
<option value="Chien">Chien</option>
<option value="Chat">Chat</option>
</select>
</div>
<!-- Images AVANT / APRÈS -->
<div class="row gy-4 mb-4">
<!-- Image AVANT -->
<div class="col-12">
<label class="form-label fw-bold" for="beforeImage">
Image AVANT (obligatoire, formats acceptés : jpg, png, webp)
</label>
<input type="file" class="form-control" id="beforeImage" accept="image/*" required>
<img id="beforePreview" class="img-preview mt-2 d-none" src="#" alt="Aperçu avant">
</div>
<!-- Image APRÈS -->
<div class="col-12">
<label class="form-label fw-bold" for="afterImage">
Image APRÈS (obligatoire, formats acceptés : jpg, png, webp)
</label>
<input type="file" class="form-control" id="afterImage" accept="image/*" required>
<img id="afterPreview" class="img-preview mt-2 d-none" src="#" alt="Aperçu après">
</div>
</div>
<!-- Boutons -->
<div class="row mt-4 g-3">
<div class="col-12 col-md-6">
<a href="../html/liste_avant_apres.html" class="btn btn-secondary w-100">
Annuler
</a>
</div>
<div class="col-12 col-md-6">
<button type="submit" class="btn btn-primary w-100">
Enregistrer les modifications
</button>
</div>
</div>
</form>
</div>
</div> </div>
</main>
<!-- Erreur : format invalide --> <script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<div id="errorFormat" class="alert alert-danger d-none"> <script src="../js/modifier_avant_apres.js"></script>
Format d'image invalide. Formats acceptés : JPG, PNG, WEBP.
</div>
<!-- Formulaire de modification -->
<form id="editPairForm" class="mt-3">
<!-- ID caché -->
<input type="hidden" id="pairId">
<!-- Titre / label -->
<div class="mb-3">
<label for="pairTitle" class="form-label">Titre / label de la paire (obligatoire)</label>
<input type="text" class="form-control" id="pairTitle" required>
</div>
<!-- Type -->
<div class="mb-3">
<label class="form-label" for="pairType">Type (obligatoire)</label>
<select id="pairType" class="form-select" required>
<option value="">-- Choisir --</option>
<option value="Chien">Chien</option>
<option value="Chat">Chat</option>
</select>
</div>
<!-- Images AVANT / APRÈS sur une ligne en md+, empilées en mobile -->
<div class="row gy-4 mb-4">
<!-- Image AVANT -->
<div class="col-12 col-md-6">
<label class="form-label" for="beforeImage">Image AVANT (obligatoire)</label>
<input type="file" class="form-control" id="beforeImage" accept="image/*" required>
<!-- Aperçu éventuel -->
<img id="beforePreview" class="img-preview mt-2 d-none" src="#" alt="Aperçu avant">
</div>
<!-- Image APRÈS -->
<div class="col-12 col-md-6">
<label class="form-label" for="afterImage">Image APRÈS (obligatoire)</label>
<input type="file" class="form-control" id="afterImage" accept="image/*" required>
<!-- Aperçu éventuel -->
<img id="afterPreview" class="img-preview mt-2 d-none" src="#" alt="Aperçu après">
</div>
</div>
<!-- Boutons : empilés en mobile, côte à côte en md+ -->
<div class="row mt-4 g-3">
<div class="col-12 col-md-6">
<a href="../liste_avant_apres/liste_avant_apres.html" class="btn btn-secondary w-100">
Annuler
</a>
</div>
<div class="col-12 col-md-6">
<button type="submit" class="btn btn-primary w-100">
Enregistrer les modifications
</button>
</div>
</div>
</form>
</div>
<script src="modifier_avant_apres.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body> </body>
</html> </html>

View File

@@ -1,74 +1,292 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin - Prestations</title> <title>CE sera le titre de la page</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"> <link href="../../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="../../node_modules/bs-icon/icons.css">
<style> <link rel="stylesheet" href="../../css/style.css">
body {
background: #f4f6f9;
padding: 40px;
}
.menu-card {
transition: 0.2s;
cursor: pointer;
}
.menu-card:hover {
transform: scale(1.03);
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.12);
}
.menu-icon {
font-size: 40px;
}
</style>
</head> </head>
<body> <body>
<header>
<nav class="navbar navbar-expand-xxl bg-body-tertiary">
<div class="container-fluid align-items-center">
<a class="navbar-brand" href="#">L'Il'eau chiens - Admin</a>
<div class="container text-center">
<h2 class="mb-5">Gestion des prestations</h2>
<div class="row g-4">
<!-- Prestations --> <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
<div class="col-md-4"> data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
<a href="../liste_prestation/liste_prestation.html" class="text-decoration-none"> aria-expanded="false" aria-label="Toggle navigation">
<div class="card p-4 menu-card"> <span class="navbar-toggler-icon"></span>
<div class="menu-icon">💼</div> </button>
<h4 class="mt-3 text-dark">Gérer les prestations</h4> <div class="collapse navbar-collapse" id="navbarSupportedContent">
<p class="text-muted">Ajouter, modifier, supprimer les prestations.</p> <ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active left-label" aria-current="page" href="#">Blog</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Boutique</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Prestations</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">FAQ</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Fiche de renseignements</a>
</li>
<li class="nav-item">
<a class="nav-link left-label" href="#">Partenaires</a>
</li>
</ul>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-megaphone me-1"></i> Message d'actu</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-box-arrow-up-right me-1"></i> Voir le site</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"><i class="bi bi-gear me-1"></i> Configuration</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="userMenu" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-person-circle me-1"></i> <span id="userFirstName">Prénom</span>
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userMenu">
<li><a class="dropdown-item" href="#">Profil</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="#">Sortir</a></li>
</ul>
</li>
</ul>
</div> </div>
</a> </div>
</nav>
</header>
<main class="my-5 fs-6">
<div class="container">
<header>
<h1 class="title fs-2">Gérer la page prestations</h1>
</header>
<main>
<section class="prestations">
<h2 class="fs-3">Gérer les prestations</h2>
<div class="accordion" id="accordionExample">
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button" type="button" data-bs-toggle="collapse"
data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
Gèrer les prestations et leur catégorie
</button>
</h2>
<div id="collapseOne" class="accordion-collapse collapse show"
data-bs-parent="#accordionExample">
<div class="accordion-body">
Contenu de l'accordéon 1
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
Gérer le slider
</button>
</h2>
<div id="collapseTwo" class="accordion-collapse collapse"
data-bs-parent="#accordionExample">
<div class="accordion-body">
Contenu de l'accordéon 2
</div>
</div>
</div>
</div>
<!--
<section class="categories-prestations">
<h3 class="fs-4">Titres des cartes</h3>
<div class="mb-3">
<a href="../html/ajouter_avant_apres.html" class="btn btn-primary btn-sm">
Ajouter une catégorie
</a>
</div>
<table class="table table-striped table-hover">
<section class="slider">
<details open>
<summary class="fs-5 fw-semibold">Gérer le slider</summary>
<h2 class="fs-3 mt-2">Gérer le slider</h2>
<div class="mb-3">
<a href="" class="btn btn-primary btn-sm">Ajouter une slide</a>
</div>
<table class="table table-striped table-hover">
<tr>
<td>Toilletage complet</td>
<td class="text-end">À partir de 60€</td>
<td class="text-end">
<a href="" class="btn btn-sm btn-outline-primary me-1">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn">Supprimer</button>
</td>
</tr>
<tr>
<td>Toilletage complet</td>
<td class="text-end">À partir de 60€</td>
<td class="text-end">
<a href="" class="btn btn-sm btn-outline-primary me-1">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn">Supprimer</button>
</td>
</tr>
</tbody>
</table>
</section>
<section class="categories-prestations">
<h3 class="fs-4">Les prestations</h3>
<div class="mb-3">
<a href="../html/ajouter_avant_apres.html" class="btn btn-sm btn-primary">
Ajouter une prestation
</table>
</details>
</div>
<section class="galerie-avant-apres">
<details open>
<summary class="fs-5 fw-semibold">Gérer la galerie avant/après</summary>
<h2 class="fs-3 mt-2">Gérer la galerie avant/après</h2>
<div class="mb-3">
<a href="../html/ajouter_avant_apres.html" class="btn btn-primary">
Ajouter un résultat avant/après
</a>
</div>
<table class="table table-striped table-hover">
<tr>
<td>Un nom de prestation</td>
<td class="text-end">
<a href="" class="btn btn-sm btn-outline-primary me-1">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn">Supprimer</button>
</td>
</tr>
<tr>
<td>prestation spécifique</td>
<td class="text-end">
<a href="" class="btn btn-sm btn-outline-primary me-1">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn">Supprimer</button>
</td>
</tr>
</tbody>
</table>
</section>
</section>
<section class="slider">
</tbody>
</table>
</details>
</section>
</details>
<h2 class="fs-3 mt-2">Gérer le slider</h2>
<div class="mb-3">
<a href="" class="btn btn-primary btn-sm">Ajouter une slide</a>
</div>
<table class="table table-striped table-hover">
<thead class="table-dark">
<tr>
<th>Titre de la slide</th>
<th class="text-end">Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td>Slide 1 : coupe griffe</td>
<td class="text-end">
<a href="" class="btn btn-sm btn-outline-primary me-1">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn">Supprimer</button>
</td>
</tr>
<tr>
<td>Slide 2 : coupe ciseaux</td>
<td class="text-end">
<a href="" class="btn btn-sm btn-outline-primary me-1">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn">Supprimer</button>
</td>
</tr>
</tbody>
</table>
</section>
<section class="galerie-avant-apres">
<details close>
<summary class="fs-5 fw-semibold">
<h2 class="fs-3 mt-2">Gérer la galerie avant/après</h2>
<div class="mb-3">
<a href="../html/ajouter_avant_apres.html" class="btn btn-primary">
Ajouter un résultat avant/après
</a>
</div>
<table class="table table-striped table-hover">
<thead class="table-dark">
<tr>
<th>Titre du résultat</th>
<th class="text-end">Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td>Petit chien poils longs</td>
<td class="text-end">
<a href="../html/modifier_avant_apres.html"
class="btn btn-sm btn-outline-primary me-1">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn">Supprimer</button>
</td>
</tr>
<tr>
<td>Coupe ciseaux</td>
<td class="text-end">
<a href="../html/modifier_avant_apres.html"
class="btn btn-sm btn-outline-primary me-1">Modifier</a>
<button class="btn btn-sm btn-outline-danger delete-btn">Supprimer</button>
</td>
</tr>
</tbody>
</table>
</summary>
</details>
</section>
-->
</main>
</div> </div>
</main>
<!-- Slider -->
<div class="col-md-4">
<a href="../slider/liste_slider/liste_slider.html" class="text-decoration-none">
<div class="card p-4 menu-card">
<div class="menu-icon">🎞️</div>
<h4 class="mt-3 text-dark">Gérer le slider</h4>
<p class="text-muted">Images du slider de la page Prestations chiens.</p>
</div>
</a>
</div>
<!-- Avant / Après -->
<div class="col-md-4">
<a href="../avant_apres/liste_avant_apres/liste_avant_apres.html" class="text-decoration-none">
<div class="card p-4 menu-card">
<div class="menu-icon">🖼️</div>
<h4 class="mt-3 text-dark">Galerie Avant / Après</h4>
<p class="text-muted">Ajouter, modifier ou supprimer les photos.</p>
</div>
</a>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body> </body>
</html>
<script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
</html>

View File

@@ -1,64 +1,63 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Voir la paire avant/après</title> <title>Voir le résultat avant/après</title>
<link href="../../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="../../node_modules/bs-icon/icons.css">
<link rel="stylesheet" href="../../css/style.css">
<link rel="stylesheet" href="../../css/avant_apres.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
<style>
.img-preview {
max-width: 250px;
border-radius: 10px;
}
</style>
</head> </head>
<body class="bg-light py-4 py-md-5">
<div class="container" style="max-width: 800px;"> <body>
<h1 class="mb-4 mb-md-5 text-center">Détails de la paire avant/après</h1> <div class="container">
<!-- Message erreur --> <h1 class="mb-4 text-center">Détails du résultat en images (Avant / Après)</h1>
<div id="errorMsg" class="alert alert-danger d-none">
Impossible d'afficher cette paire.
</div>
<div id="detailsSection" class="mt-3"> <!-- Message erreur -->
<div id="errorMsg" class="alert alert-danger d-none">
Impossible d'afficher ce résultat.
</div>
<h2 id="pairTitle" class="text-center mb-4" aria-live="polite">Chargement...</h2> <div id="detailsSection" class="mt-3">
<h2 id="pairTitle" class="text-center mb-4" aria-live="polite">Chargement...</h2>
<!-- AVANT / APRÈS : empilés en mobile, côte à côte en md+ --> <!-- AVANT / APRÈS : empilés en mobile, côte à côte en md+ -->
<div class="row justify-content-center align-items-start mb-4 g-4"> <div class="row justify-content-center align-items-start mb-4 g-4">
<div class="col-12 col-md-6 text-center">
<p class="fw-bold">AVANT</p>
<img id="beforePreview" class="img-preview border img-fluid" src="#" alt="Photo avant">
</div>
<div class="col-12 col-md-6 text-center">
<p class="fw-bold">APRÈS</p>
<img id="afterPreview" class="img-preview border img-fluid" src="#" alt="Photo après">
</div>
<div class="col-12 col-md-6 text-center">
<p class="fw-bold">AVANT</p>
<img id="beforePreview" class="img-preview border img-fluid" src="#" alt="Photo avant">
</div> </div>
<div class="col-12 col-md-6 text-center"> <!-- Bouton retour -->
<p class="fw-bold">APRÈS</p> <div class="text-center mt-4">
<img id="afterPreview" class="img-preview border img-fluid" src="#" alt="Photo après" > <a href="../html/liste_avant_apres.html" class="btn btn-secondary">
Retour à la liste
</a>
</div> </div>
</div> </div>
<!-- Bouton retour -->
<div class="text-center mt-4">
<a href="../liste_avant_apres/liste_avant_apres.html" class="btn btn-secondary">
Retour à la liste
</a>
</div>
</div> </div>
</div> <script src="../js/voir_avant_apres.js"></script>
<script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="voir_avant_apres.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body> </body>
</html>
</html>

View File

@@ -5,16 +5,14 @@ let galleryPairs = [
{ {
id: 1, id: 1,
titre: "Petit chien poils longs", titre: "Petit chien poils longs",
type: "Chien",
avant: "../../img/avant1.jpg",
apres: "../../img/apres1.jpg"
}, },
{ {
id: 2, id: 2,
titre: "Coupe ciseaux", titre: "Coupe ciseaux",
type: "Chat",
avant: "../../img/avant2.jpg",
apres: "../../img/apres2.jpg"
} }
]; ];
@@ -41,33 +39,21 @@ function displayPairs() {
row.innerHTML = ` row.innerHTML = `
<td>${pair.titre}</td> <td>${pair.titre}</td>
<td>${pair.type}</td>
<td>
<img src="${pair.avant}" class="img-thumbnail" style="max-width: 80px;">
</td>
<td>
<img src="${pair.apres}" class="img-thumbnail" style="max-width: 80px;">
</td>
<td class="text-center text-md-start"> <td class="text-center text-md-start">
<div class="d-flex flex-column flex-md-row justify-content-center justify-content-md-start gap-2"> <div class="d-flex flex-column flex-md-row justify-content-center justify-content-md-end gap-2">
<!-- Bouton Voir -->
<a href="../voir_avant_apres/voir_avant_apres.html?id=${pair.id}"
class="btn btn-info btn-sm">
Voir
</a>
<!-- Bouton Modifier --> <!-- Bouton Modifier -->
<a href="../modifier_avant_apres/modifier_avant_apres.html?id=${pair.id}" <a href="../html/modifier_avant_apres.html?id=${pair.id}"
class="btn btn-warning btn-sm"> class="btn btn-outline-primary btn-sm">
Modifier Modifier
</a> </a>
<!-- Bouton Supprimer --> <!-- Bouton Supprimer -->
<button class="btn btn-danger btn-sm" onclick="openDeleteModal(${pair.id})"> <button class="btn btn-outline-danger btn-sm" onclick="openDeleteModal(${pair.id})">
Supprimer Supprimer
</button> </button>
</div> </div>