Docfile commited on
Commit
70b0ea6
·
verified ·
1 Parent(s): c5ca48a

Create templates/gere.html

Browse files
Files changed (1) hide show
  1. templates/gere.html +295 -0
templates/gere.html ADDED
@@ -0,0 +1,295 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="fr">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Gestion des Données</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <!-- Bootstrap CSS -->
8
+ <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
9
+ <style>
10
+ body {
11
+ background-color: #f8f9fa;
12
+ }
13
+ .card {
14
+ margin-bottom: 20px;
15
+ }
16
+ .nav-tabs .nav-link.active {
17
+ background-color: #ffffff;
18
+ border-color: #dee2e6 #dee2e6 #ffffff;
19
+ }
20
+ .editable {
21
+ display: none;
22
+ }
23
+ .list-group-item {
24
+ position: relative;
25
+ }
26
+ </style>
27
+ </head>
28
+ <body>
29
+ <div class="container mt-4">
30
+ <h1 class="mb-4">Gestion des Données</h1>
31
+
32
+ {% with messages = get_flashed_messages(with_categories=true) %}
33
+ {% if messages %}
34
+ {% for category, message in messages %}
35
+ <div class="alert alert-{{ category }} alert-dismissible fade show" role="alert">
36
+ {{ message }}
37
+ <button type="button" class="close" data-dismiss="alert" aria-label="Fermer">
38
+ <span aria-hidden="true">&times;</span>
39
+ </button>
40
+ </div>
41
+ {% endfor %}
42
+ {% endif %}
43
+ {% endwith %}
44
+
45
+ <!-- Onglets de navigation -->
46
+ <ul class="nav nav-tabs" id="gestionTab" role="tablist">
47
+ <li class="nav-item">
48
+ <a class="nav-link active" id="matieres-tab" data-toggle="tab" href="#matieres" role="tab" aria-controls="matieres" aria-selected="true">Matières</a>
49
+ </li>
50
+ <li class="nav-item">
51
+ <a class="nav-link" id="sous-categories-tab" data-toggle="tab" href="#sous-categories" role="tab" aria-controls="sous-categories" aria-selected="false">Sous-Catégories</a>
52
+ </li>
53
+ <li class="nav-item">
54
+ <a class="nav-link" id="textes-tab" data-toggle="tab" href="#textes" role="tab" aria-controls="textes" aria-selected="false">Textes</a>
55
+ </li>
56
+ <li class="nav-item">
57
+ <a class="nav-link" id="ajouter-tab" data-toggle="tab" href="#ajouter" role="tab" aria-controls="ajouter" aria-selected="false">Ajouter</a>
58
+ </li>
59
+ </ul>
60
+
61
+ <div class="tab-content" id="gestionTabContent">
62
+ <!-- Onglet Matières -->
63
+ <div class="tab-pane fade show active" id="matieres" role="tabpanel" aria-labelledby="matieres-tab">
64
+ <div class="card mt-3">
65
+ <div class="card-header">
66
+ Liste des Matières
67
+ </div>
68
+ <ul class="list-group list-group-flush">
69
+ {% for matiere in matieres %}
70
+ <li class="list-group-item">
71
+ <div class="d-flex justify-content-between align-items-center">
72
+ <span class="display-mode">{{ matiere.nom }}</span>
73
+ <div>
74
+ <button class="btn btn-warning btn-sm edit-button">Modifier</button>
75
+ <form method="post" class="d-inline">
76
+ <input type="hidden" name="action" value="delete_matiere_{{ matiere.id }}">
77
+ <button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Êtes-vous sûr de vouloir supprimer cette matière ?');">Supprimer</button>
78
+ </form>
79
+ </div>
80
+ </div>
81
+ <!-- Formulaire d'édition caché -->
82
+ <form method="post" class="editable mt-2">
83
+ <input type="hidden" name="action" value="edit_matiere_{{ matiere.id }}">
84
+ <div class="input-group">
85
+ <input type="text" name="edit_nom_matiere_{{ matiere.id }}" value="{{ matiere.nom }}" class="form-control">
86
+ <div class="input-group-append">
87
+ <button type="submit" class="btn btn-success">Enregistrer</button>
88
+ <button type="button" class="btn btn-secondary cancel-edit">Annuler</button>
89
+ </div>
90
+ </div>
91
+ </form>
92
+ </li>
93
+ {% else %}
94
+ <li class="list-group-item">Aucune matière trouvée.</li>
95
+ {% endfor %}
96
+ </ul>
97
+ </div>
98
+ </div>
99
+
100
+ <!-- Onglet Sous-Catégories -->
101
+ <div class="tab-pane fade" id="sous-categories" role="tabpanel" aria-labelledby="sous-categories-tab">
102
+ <div class="card mt-3">
103
+ <div class="card-header">
104
+ Liste des Sous-Catégories
105
+ </div>
106
+ <ul class="list-group list-group-flush">
107
+ {% for sous_categorie in sous_categories %}
108
+ <li class="list-group-item">
109
+ <div class="d-flex justify-content-between align-items-center">
110
+ <span class="display-mode">
111
+ {{ sous_categorie.nom }} <small class="text-muted">({{ sous_categorie.matiere.nom }})</small>
112
+ </span>
113
+ <div>
114
+ <button class="btn btn-warning btn-sm edit-button">Modifier</button>
115
+ <form method="post" class="d-inline">
116
+ <input type="hidden" name="action" value="delete_sous_categorie_{{ sous_categorie.id }}">
117
+ <button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Êtes-vous sûr de vouloir supprimer cette sous-catégorie ?');">Supprimer</button>
118
+ </form>
119
+ </div>
120
+ </div>
121
+ <!-- Formulaire d'édition caché -->
122
+ <form method="post" class="editable mt-2">
123
+ <input type="hidden" name="action" value="edit_sous_categorie_{{ sous_categorie.id }}">
124
+ <div class="form-row">
125
+ <div class="col-md-6 mb-2">
126
+ <input type="text" name="edit_nom_sous_categorie_{{ sous_categorie.id }}" value="{{ sous_categorie.nom }}" class="form-control">
127
+ </div>
128
+ <div class="col-md-4 mb-2">
129
+ <select name="edit_matiere_id_{{ sous_categorie.id }}" class="form-control">
130
+ {% for matiere in matieres %}
131
+ <option value="{{ matiere.id }}" {% if matiere.id == sous_categorie.matiere_id %}selected{% endif %}>
132
+ {{ matiere.nom }}
133
+ </option>
134
+ {% endfor %}
135
+ </select>
136
+ </div>
137
+ <div class="col-md-2">
138
+ <button type="submit" class="btn btn-success btn-block">Enregistrer</button>
139
+ </div>
140
+ </div>
141
+ <button type="button" class="btn btn-secondary btn-sm cancel-edit">Annuler</button>
142
+ </form>
143
+ </li>
144
+ {% else %}
145
+ <li class="list-group-item">Aucune sous-catégorie trouvée.</li>
146
+ {% endfor %}
147
+ </ul>
148
+ </div>
149
+ </div>
150
+
151
+ <!-- Onglet Textes -->
152
+ <div class="tab-pane fade" id="textes" role="tabpanel" aria-labelledby="textes-tab">
153
+ <div class="card mt-3">
154
+ <div class="card-header">
155
+ Liste des Textes
156
+ </div>
157
+ <ul class="list-group list-group-flush">
158
+ {% for texte in textes %}
159
+ <li class="list-group-item">
160
+ <div class="d-flex justify-content-between align-items-center">
161
+ <span class="display-mode">
162
+ <strong>{{ texte.titre }}</strong> <br>
163
+ <small class="text-muted">{{ texte.sous_categorie.nom }} ({{ texte.sous_categorie.matiere.nom }})</small>
164
+ </span>
165
+ <div>
166
+ <button class="btn btn-warning btn-sm edit-button">Modifier</button>
167
+ <form method="post" class="d-inline">
168
+ <input type="hidden" name="action" value="delete_texte_{{ texte.id }}">
169
+ <button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Êtes-vous sûr de vouloir supprimer ce texte ?');">Supprimer</button>
170
+ </form>
171
+ </div>
172
+ </div>
173
+ <!-- Formulaire d'édition caché -->
174
+ <form method="post" class="editable mt-2">
175
+ <input type="hidden" name="action" value="edit_texte_{{ texte.id }}">
176
+ <div class="form-group">
177
+ <input type="text" name="edit_titre_texte_{{ texte.id }}" value="{{ texte.titre }}" class="form-control mb-2">
178
+ </div>
179
+ <div class="form-group">
180
+ <textarea name="edit_contenu_texte_{{ texte.id }}" class="form-control mb-2" rows="3">{{ texte.contenu }}</textarea>
181
+ </div>
182
+ <div class="form-row">
183
+ <div class="col-md-8 mb-2">
184
+ <select name="edit_sous_categorie_id_{{ texte.id }}" class="form-control">
185
+ {% for sous_categorie in sous_categories %}
186
+ <option value="{{ sous_categorie.id }}" {% if sous_categorie.id == texte.sous_categorie_id %}selected{% endif %}>
187
+ {{ sous_categorie.nom }} ({{ sous_categorie.matiere.nom }})
188
+ </option>
189
+ {% endfor %}
190
+ </select>
191
+ </div>
192
+ <div class="col-md-4">
193
+ <button type="submit" class="btn btn-success btn-block">Enregistrer</button>
194
+ </div>
195
+ </div>
196
+ <button type="button" class="btn btn-secondary btn-sm cancel-edit">Annuler</button>
197
+ </form>
198
+ </li>
199
+ {% else %}
200
+ <li class="list-group-item">Aucun texte trouvé.</li>
201
+ {% endfor %}
202
+ </ul>
203
+ </div>
204
+ </div>
205
+
206
+ <!-- Onglet Ajouter -->
207
+ <div class="tab-pane fade" id="ajouter" role="tabpanel" aria-labelledby="ajouter-tab">
208
+ <!-- Formulaire d'ajout d'une matière -->
209
+ <div class="card mt-3">
210
+ <div class="card-header">Ajouter une Matière</div>
211
+ <div class="card-body">
212
+ <form method="post">
213
+ <input type="hidden" name="action" value="add_matiere">
214
+ <div class="form-group">
215
+ <label for="nom_matiere">Nom de la Matière</label>
216
+ <input type="text" id="nom_matiere" name="nom_matiere" class="form-control" required>
217
+ </div>
218
+ <button type="submit" class="btn btn-primary">Ajouter</button>
219
+ </form>
220
+ </div>
221
+ </div>
222
+ <!-- Formulaire d'ajout d'une sous-catégorie -->
223
+ <div class="card mt-3">
224
+ <div class="card-header">Ajouter une Sous-Catégorie</div>
225
+ <div class="card-body">
226
+ <form method="post">
227
+ <input type="hidden" name="action" value="add_sous_categorie">
228
+ <div class="form-group">
229
+ <label for="nom_sous_categorie">Nom de la Sous-Catégorie</label>
230
+ <input type="text" id="nom_sous_categorie" name="nom_sous_categorie" class="form-control" required>
231
+ </div>
232
+ <div class="form-group">
233
+ <label for="matiere_id">Matière associée</label>
234
+ <select id="matiere_id" name="matiere_id" class="form-control" required>
235
+ {% for matiere in matieres %}
236
+ <option value="{{ matiere.id }}">{{ matiere.nom }}</option>
237
+ {% endfor %}
238
+ </select>
239
+ </div>
240
+ <button type="submit" class="btn btn-primary">Ajouter</button>
241
+ </form>
242
+ </div>
243
+ </div>
244
+ <!-- Formulaire d'ajout d'un texte -->
245
+ <div class="card mt-3">
246
+ <div class="card-header">Ajouter un Texte</div>
247
+ <div class="card-body">
248
+ <form method="post">
249
+ <input type="hidden" name="action" value="add_texte">
250
+ <div class="form-group">
251
+ <label for="titre_texte">Titre du Texte</label>
252
+ <input type="text" id="titre_texte" name="titre_texte" class="form-control" required>
253
+ </div>
254
+ <div class="form-group">
255
+ <label for="contenu_texte">Contenu du Texte</label>
256
+ <textarea id="contenu_texte" name="contenu_texte" class="form-control" rows="5" required></textarea>
257
+ </div>
258
+ <div class="form-group">
259
+ <label for="sous_categorie_id">Sous-Catégorie</label>
260
+ <select id="sous_categorie_id" name="sous_categorie_id" class="form-control" required>
261
+ {% for sous_categorie in sous_categories %}
262
+ <option value="{{ sous_categorie.id }}">{{ sous_categorie.nom }} ({{ sous_categorie.matiere.nom }})</option>
263
+ {% endfor %}
264
+ </select>
265
+ </div>
266
+ <button type="submit" class="btn btn-primary">Ajouter</button>
267
+ </form>
268
+ </div>
269
+ </div>
270
+ </div>
271
+ </div><!-- Fin du tab-content -->
272
+ </div><!-- Fin du container -->
273
+
274
+ <!-- jQuery, Popper et Bootstrap JS -->
275
+ <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
276
+ <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"></script>
277
+ <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
278
+ <script>
279
+ $(document).ready(function() {
280
+ // Afficher le formulaire d'édition au clic sur "Modifier"
281
+ $('.edit-button').click(function() {
282
+ $(this).closest('li').find('.editable').slideDown();
283
+ $(this).closest('li').find('.display-mode').hide();
284
+ $(this).hide();
285
+ });
286
+ // Annuler l'édition
287
+ $('.cancel-edit').click(function() {
288
+ $(this).closest('form').slideUp();
289
+ $(this).closest('li').find('.display-mode').show();
290
+ $(this).closest('li').find('.edit-button').show();
291
+ });
292
+ });
293
+ </script>
294
+ </body>
295
+ </html>