Spaces:
Sleeping
Sleeping
| {% extends 'base.html' %} | |
| {% block title %}Gestion des Sous-catégories - Administration{% endblock %} | |
| {% block styles %} | |
| <style> | |
| .sous-categorie-row { | |
| transition: background-color 0.3s ease; | |
| } | |
| .sous-categorie-row:hover { | |
| background-color: rgba(52, 152, 219, 0.1); | |
| } | |
| .color-badge { | |
| display: inline-block; | |
| width: 16px; | |
| height: 16px; | |
| border-radius: 50%; | |
| margin-right: 8px; | |
| } | |
| .filter-container { | |
| background-color: var(--block-bg); | |
| padding: 15px; | |
| border-radius: 8px; | |
| margin-bottom: 20px; | |
| } | |
| .matiere-container { | |
| margin-top: 30px; | |
| border-left: 3px solid var(--primary-color); | |
| padding-left: 15px; | |
| } | |
| </style> | |
| {% endblock %} | |
| {% block content %} | |
| <div class="row"> | |
| <div class="col-md-3"> | |
| <div class="admin-sidebar"> | |
| <h3 class="mb-3">Administration</h3> | |
| <ul class="admin-nav"> | |
| <li class="admin-nav-item"> | |
| <a href="{{ url_for('admin_bp.dashboard') }}" class="admin-nav-link"> | |
| <i class="fas fa-tachometer-alt"></i> Tableau de bord | |
| </a> | |
| </li> | |
| <li class="admin-nav-item"> | |
| <a href="{{ url_for('admin_bp.matieres') }}" class="admin-nav-link"> | |
| <i class="fas fa-book"></i> Matières | |
| </a> | |
| </li> | |
| <li class="admin-nav-item"> | |
| <a href="{{ url_for('admin_bp.sous_categories') }}" class="admin-nav-link active"> | |
| <i class="fas fa-list"></i> Sous-catégories | |
| </a> | |
| </li> | |
| <li class="admin-nav-item"> | |
| <a href="{{ url_for('admin_bp.textes') }}" class="admin-nav-link"> | |
| <i class="fas fa-file-alt"></i> Textes | |
| </a> | |
| </li> | |
| <li class="admin-nav-item"> | |
| <a href="{{ url_for('admin_bp.images') }}" class="admin-nav-link"> | |
| <i class="fas fa-images"></i> Images | |
| </a> | |
| </li> | |
| <li class="admin-nav-item"> | |
| <a href="{{ url_for('admin_bp.logout') }}" class="admin-nav-link"> | |
| <i class="fas fa-sign-out-alt"></i> Déconnexion | |
| </a> | |
| </li> | |
| </ul> | |
| </div> | |
| </div> | |
| <div class="col-md-9"> | |
| <div class="admin-container"> | |
| <h2 class="admin-title">Gestion des Sous-catégories</h2> | |
| <div class="row mb-4"> | |
| <!-- Add Sous-Categorie Section --> | |
| <div id="add-sous-categorie-section" class="col-md-6"> | |
| <div class="card"> | |
| <div class="card-header"> | |
| <h4><i class="fas fa-plus-circle"></i> Ajouter une sous-catégorie</h4> | |
| </div> | |
| <div class="card-body"> | |
| <form method="POST" action="{{ url_for('admin_bp.sous_categories') }}"> | |
| <input type="hidden" name="action" value="add"> | |
| <div class="form-group mb-3"> | |
| <label for="matiere_id">Matière</label> | |
| <select class="form-control" id="matiere_id" name="matiere_id" required> | |
| <option value="">Sélectionnez une matière</option> | |
| {% for matiere in matieres %} | |
| <option value="{{ matiere.id }}">{{ matiere.nom }}</option> | |
| {% endfor %} | |
| </select> | |
| </div> | |
| <div class="form-group mb-3"> | |
| <label for="nom">Nom de la sous-catégorie</label> | |
| <input type="text" class="form-control" id="nom" name="nom" required> | |
| </div> | |
| <button type="submit" class="btn btn-primary"> | |
| <i class="fas fa-save"></i> Ajouter | |
| </button> | |
| </form> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Edit Sous-Categorie Section (initially hidden) --> | |
| <div id="edit-sous-categorie-section" class="col-md-6 d-none"> | |
| <div class="card"> | |
| <div class="card-header"> | |
| <h4><i class="fas fa-edit"></i> Modifier une sous-catégorie</h4> | |
| </div> | |
| <div class="card-body"> | |
| <form id="edit-sous-categorie-form" method="POST" action="{{ url_for('admin_bp.sous_categories') }}"> | |
| <input type="hidden" name="action" value="edit"> | |
| <input type="hidden" name="sous_categorie_id" value=""> | |
| <div class="form-group mb-3"> | |
| <label for="edit-matiere_id">Matière</label> | |
| <select class="form-control" id="edit-matiere_id" name="matiere_id" required> | |
| {% for matiere in matieres %} | |
| <option value="{{ matiere.id }}">{{ matiere.nom }}</option> | |
| {% endfor %} | |
| </select> | |
| </div> | |
| <div class="form-group mb-3"> | |
| <label for="edit-nom">Nom de la sous-catégorie</label> | |
| <input type="text" class="form-control" id="edit-nom" name="nom" required> | |
| </div> | |
| <div class="btn-group"> | |
| <button type="submit" class="btn btn-primary"> | |
| <i class="fas fa-save"></i> Mettre à jour | |
| </button> | |
| <button type="button" id="cancel-edit-sous-categorie" class="btn btn-secondary"> | |
| <i class="fas fa-times"></i> Annuler | |
| </button> | |
| </div> | |
| </form> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Filter by Matiere --> | |
| <div class="filter-container mb-4"> | |
| <div class="row align-items-center"> | |
| <div class="col-md-3"> | |
| <label for="matiere-filter" class="form-label mb-0"><strong>Filtrer par matière :</strong></label> | |
| </div> | |
| <div class="col-md-9"> | |
| <select id="matiere-filter" class="form-select"> | |
| <option value="">Toutes les matières</option> | |
| {% for matiere in matieres %} | |
| <option value="{{ matiere.id }}">{{ matiere.nom }}</option> | |
| {% endfor %} | |
| </select> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- List of Sous-Categories --> | |
| <div class="card"> | |
| <div class="card-header"> | |
| <h4><i class="fas fa-list"></i> Liste des sous-catégories</h4> | |
| </div> | |
| <div class="card-body"> | |
| {% if sous_categories %} | |
| <div class="table-responsive"> | |
| <table class="table table-hover"> | |
| <thead> | |
| <tr> | |
| <th>Matière</th> | |
| <th>Sous-catégorie</th> | |
| <th>Actions</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| {% for sous_categorie in sous_categories %} | |
| <tr class="sous-categorie-row" data-matiere-id="{{ sous_categorie.matiere.id }}"> | |
| <td> | |
| <span class="color-badge" style="background-color: {{ sous_categorie.matiere.color_code }};"></span> | |
| {{ sous_categorie.matiere.nom }} | |
| </td> | |
| <td>{{ sous_categorie.nom }}</td> | |
| <td> | |
| <button class="btn btn-sm btn-primary edit-sous-categorie-btn" | |
| data-id="{{ sous_categorie.id }}" | |
| data-name="{{ sous_categorie.nom }}" | |
| data-matiere-id="{{ sous_categorie.matiere.id }}"> | |
| <i class="fas fa-edit"></i> Modifier | |
| </button> | |
| <form method="POST" action="{{ url_for('admin_bp.sous_categories') }}" style="display: inline-block" onsubmit="return confirm('Êtes-vous sûr de vouloir supprimer cette sous-catégorie ? Tous les textes associés seront également supprimés.')"> | |
| <input type="hidden" name="action" value="delete"> | |
| <input type="hidden" name="sous_categorie_id" value="{{ sous_categorie.id }}"> | |
| <button type="submit" class="btn btn-sm btn-danger"> | |
| <i class="fas fa-trash"></i> Supprimer | |
| </button> | |
| </form> | |
| </td> | |
| </tr> | |
| {% endfor %} | |
| </tbody> | |
| </table> | |
| </div> | |
| {% else %} | |
| <div class="alert alert-info"> | |
| Aucune sous-catégorie n'a été ajoutée. Utilisez le formulaire ci-dessus pour créer votre première sous-catégorie. | |
| </div> | |
| {% endif %} | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| {% endblock %} | |
| {% block scripts %} | |
| <script src="{{ url_for('static', filename='js/admin.js') }}"></script> | |
| {% endblock %} | |