templates/instructor/show.html.twig line 1

  1. {% extends 'base.html.twig' %}
  2. {% block title %}Instructeur{% endblock %}
  3. {% block body %}
  4.     <h1>Détails de l'Instructeur</h1>
  5.     <div class="card">
  6.         <div class="card-body">
  7.             <div class="row">
  8.                 <div class="col-md-4 text-center">
  9.                     <div style="position: relative; display: inline-block;">
  10.                         {% if instructor.photo %}
  11.                             <img 
  12.                                 style="width:250px; height:250px; object-fit:cover; border-radius:50%; border:4px solid #3f4a59; box-shadow: 0 4px 12px rgba(0,0,0,0.3); display:block;" 
  13.                                 class="mb-3" 
  14.                                 src="{{asset('image/'~ instructor.photo)}}"
  15.                                 alt="Photo de {{ instructor.prenom }} {{ instructor.nom }}"
  16.                                 onerror="this.style.display='none'; this.nextElementSibling.style.display='flex';">
  17.                         {% endif %}
  18.                         <div style="width:250px; height:250px; border-radius:50%; background:linear-gradient(135deg, #667eea 0%, #764ba2 100%); display:{% if instructor.photo %}none{% else %}flex{% endif %}; align-items:center; justify-content:center; margin:0 auto 1rem; border:4px solid #3f4a59; box-shadow: 0 4px 12px rgba(0,0,0,0.3);">
  19.                             <i class="fa fa-user fa-4x text-white"></i>
  20.                         </div>
  21.                     </div>
  22.                 </div>
  23.                 <div class="col-md-8">
  24.                     <table class="table">
  25.                         <tbody>
  26.                             <tr>
  27.                                 <th>Nom</th>
  28.                                 <td>{{ instructor.nom }}</td>
  29.                             </tr>
  30.                             <tr>
  31.                                 <th>Prénom</th>
  32.                                 <td>{{ instructor.prenom }}</td>
  33.                             </tr>
  34.                             <tr>
  35.                                 <th>Email</th>
  36.                                 <td>{{ instructor.email ?? '-' }}</td>
  37.                             </tr>
  38.                             <tr>
  39.                                 <th>Biographie</th>
  40.                                 <td>{{ instructor.bio ?? '-' }}</td>
  41.                             </tr>
  42.                             <tr>
  43.                                 <th>Date de création</th>
  44.                                 <td>{{ instructor.createdAt ? instructor.createdAt|date('d/m/Y H:i') : '-' }}</td>
  45.                             </tr>
  46.                             <tr>
  47.                                 <th>Playlists</th>
  48.                                 <td>
  49.                                     {% if instructor.playlists|length > 0 %}
  50.                                         <ul>
  51.                                             {% for playlist in instructor.playlists %}
  52.                                                 <li><a href="{{ path('app_playlist_show', {'id': playlist.id}) }}">{{ playlist.titre }}</a></li>
  53.                                             {% endfor %}
  54.                                         </ul>
  55.                                     {% else %}
  56.                                         <span class="text-muted">Aucune playlist assignée</span>
  57.                                     {% endif %}
  58.                                 </td>
  59.                             </tr>
  60.                         </tbody>
  61.                     </table>
  62.                 </div>
  63.             </div>
  64.         </div>
  65.     </div>
  66.     <div class="mt-4">
  67.         <h3 class="mb-3">Playlists de {{ instructor.prenom }} {{ instructor.nom }}</h3>
  68.         {% if instructor.playlists|length > 0 %}
  69.             <div class="row">
  70.                 {% for playlist in instructor.playlists %}
  71.                     <div class="col-md-4 mb-3">
  72.                         <div class="card h-100">
  73.                             {% if playlist.imageDeCouverture %}
  74.                                 <img class="card-img-top" src="{{ asset('image/' ~ playlist.imageDeCouverture) }}" alt="{{ playlist.titre }}" style="height: 180px; object-fit: cover;">
  75.                             {% else %}
  76.                                 <div class="card-img-top d-flex align-items-center justify-content-center bg-light" style="height: 180px;">
  77.                                     <span class="text-muted">Pas d'image</span>
  78.                                 </div>
  79.                             {% endif %}
  80.                             <div class="card-body d-flex flex-column">
  81.                                 <h5 class="card-title">{{ playlist.titre }}</h5>
  82.                                 <p class="card-text text-muted" style="flex:1;">{{ playlist.description|u.truncate(120, '...') }}</p>
  83.                                 <a class="btn btn-primary btn-sm mt-auto" href="{{ path('app_playlist_show', {'id': playlist.id}) }}">Voir la formation</a>
  84.                             </div>
  85.                         </div>
  86.                     </div>
  87.                 {% endfor %}
  88.             </div>
  89.         {% else %}
  90.             <p class="text-muted">Aucune playlist associée pour le moment.</p>
  91.         {% endif %}
  92.     </div>
  93.     <div class="mt-3">
  94.         <a class="btn btn-sm" href="{{ path('app_instructor_index') }}">Retour à la liste</a>
  95.         <a class="btn btn-sm" href="{{ path('app_instructor_edit', {'id': instructor.id}) }}">Modifier</a>
  96.         {{ include('instructor/_delete_form.html.twig') }}
  97.     </div>
  98. {% endblock %}