<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* base.html.twig */
class __TwigTemplate_a1e20a0471dae62b8df9961ef4ac47f2 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
'title' => [$this, 'block_title'],
'stylesheets' => [$this, 'block_stylesheets'],
'body' => [$this, 'block_body'],
'javascripts' => [$this, 'block_javascripts'],
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "base.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "base.html.twig"));
// line 1
yield "<!DOCTYPE html>
<html>
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<title>";
// line 6
yield from $this->unwrap()->yieldBlock('title', $context, $blocks);
yield "</title>
";
// line 7
yield from $this->unwrap()->yieldBlock('stylesheets', $context, $blocks);
// line 191
yield " </head>
<body>
<nav class=\"navbar navbar-light bg-light\">
<div class=\"d-flex align-items-center\">
<!-- Liste déroulante BDD-Books / BDD-Magazines -->
<div class=\"dropdown mr-3\">
<a class=\"navbar-brand dropdown-toggle\" href=\"#\" id=\"navbarBddDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">
<i class=\"fas fa-database mr-1\"></i>BDD
</a>
<div class=\"dropdown-menu\" aria-labelledby=\"navbarBddDropdown\">
<a class=\"dropdown-item\" href=\"";
// line 201
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("index");
yield "\">
<i class=\"fas fa-book mr-2 text-primary\"></i>BDD-Books
</a>
<a class=\"dropdown-item\" href=\"";
// line 204
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("magazines_search");
yield "\">
<i class=\"fas fa-newspaper mr-2 text-success\"></i>BDD-Magazines
</a>
</div>
</div>
</div>
<div class=\"d-flex align-items-center\">
";
// line 212
if ($this->extensions['Symfony\Bridge\Twig\Extension\SecurityExtension']->isGranted("IS_AUTHENTICATED_REMEMBERED")) {
// line 213
yield " <div class=\"dropdown\">
<a class=\"user-menu-btn\" href=\"#\" id=\"navbarDropdownMenuLink\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">
<div class=\"user-avatar\">
";
// line 216
if (CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 216, $this->source); })()), "user", [], "any", false, false, false, 216), "logo", [], "any", false, false, false, 216)) {
// line 217
yield " <img src=\"";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl(("uploads/avatars/" . CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 217, $this->source); })()), "user", [], "any", false, false, false, 217), "logo", [], "any", false, false, false, 217))), "html", null, true);
yield "\" alt=\"";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 217, $this->source); })()), "user", [], "any", false, false, false, 217), "username", [], "any", false, false, false, 217), "html", null, true);
yield "\" class=\"user-avatar-img\">
";
} else {
// line 219
yield " <span class=\"user-avatar-initials\">";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::upper($this->env->getCharset(), Twig\Extension\CoreExtension::first($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 219, $this->source); })()), "user", [], "any", false, false, false, 219), "name", [], "any", false, false, false, 219))), "html", null, true);
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::upper($this->env->getCharset(), Twig\Extension\CoreExtension::first($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 219, $this->source); })()), "user", [], "any", false, false, false, 219), "lastname", [], "any", false, false, false, 219))), "html", null, true);
yield "</span>
";
}
// line 221
yield " </div>
<span class=\"user-name d-none d-md-inline ml-2\">";
// line 222
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 222, $this->source); })()), "user", [], "any", false, false, false, 222), "username", [], "any", false, false, false, 222), "html", null, true);
yield "</span>
<i class=\"fas fa-chevron-down ml-1 small\"></i>
</a>
<div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"navbarDropdownMenuLink\">
<div class=\"dropdown-header\">
<strong>";
// line 227
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 227, $this->source); })()), "user", [], "any", false, false, false, 227), "name", [], "any", false, false, false, 227), "html", null, true);
yield " ";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 227, $this->source); })()), "user", [], "any", false, false, false, 227), "lastname", [], "any", false, false, false, 227), "html", null, true);
yield "</strong>
<br><small class=\"text-muted\">";
// line 228
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 228, $this->source); })()), "user", [], "any", false, false, false, 228), "email", [], "any", false, false, false, 228), "html", null, true);
yield "</small>
</div>
<div class=\"dropdown-divider\"></div>
<a class=\"dropdown-item\" href=\"";
// line 231
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("user_profile");
yield "\">
<i class=\"fas fa-user-cog mr-2\"></i>Mon profil
</a>
<div class=\"dropdown-divider\"></div>
<a class=\"dropdown-item\" href=\"";
// line 235
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("magazines_list");
yield "\">
<i class=\"fas fa-newspaper mr-2\"></i>Magazines
</a>
<a class=\"dropdown-item\" href=\"";
// line 238
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("listesLivres");
yield "\">
<i class=\"fas fa-book mr-2\"></i>Livres
</a>
<div class=\"dropdown-divider\"></div>
<a class=\"dropdown-item text-danger\" href=\"";
// line 242
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app_logout");
yield "\">
<i class=\"fas fa-sign-out-alt mr-2\"></i>Déconnexion
</a>
</div>
</div>
";
} else {
// line 248
yield " <button class=\"btn btn-outline-primary btn-sm\" data-toggle=\"modal\" data-target=\"#loginModal\">
<i class=\"fas fa-sign-in-alt mr-1\"></i>";
// line 249
yield "Connexion";
yield "
</button>
";
}
// line 252
yield " </div>
</nav>
";
// line 254
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env, $this->source, (isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 254, $this->source); })()), "flashes", ["warning"], "method", false, false, false, 254));
foreach ($context['_seq'] as $context["_key"] => $context["message"]) {
// line 255
yield " <div class=\"alert alert-success\">
";
// line 256
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["message"], "html", null, true);
yield "
</div>
";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['message'], $context['_parent']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 259
yield " <div id=\"bodyContain\">
";
// line 260
yield from $this->unwrap()->yieldBlock('body', $context, $blocks);
// line 263
yield " </div>
";
// line 265
if ( !$this->extensions['Symfony\Bridge\Twig\Extension\SecurityExtension']->isGranted("IS_AUTHENTICATED_REMEMBERED")) {
// line 266
yield " ";
yield from $this->loadTemplate("includes/loginModal.html.twig", "base.html.twig", 266)->unwrap()->yield($context);
// line 267
yield " ";
}
// line 268
yield "
";
// line 269
yield from $this->unwrap()->yieldBlock('javascripts', $context, $blocks);
// line 273
yield " </body>
</html>
";
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
yield from [];
}
// line 6
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_title(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "title"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "title"));
yield "BDD-Books";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
yield from [];
}
// line 7
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_stylesheets(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "stylesheets"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "stylesheets"));
// line 8
yield " <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css\">
<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css\">
<style>
/* Variables et styles globaux */
:root {
--primary-color: #4a90d9;
--secondary-color: #6c757d;
--success-color: #28a745;
--bg-light: #f8f9fa;
--shadow: 0 2px 10px rgba(0,0,0,0.1);
}
body { background-color: #f5f7fa; }
/* _index.scss */
#list_user { padding: 3%; }
#list_user #users { text-align: center; }
#list_user .logo { width: auto; height: 150px; }
#list_user #div-btn-user { width: 100%; margin: auto; padding-top: 2%; padding-bottom: 1%; }
#list_user #btn-user { text-align: center; width: 250px; height: 250px; }
.navbar { width: 100%; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; box-shadow: var(--shadow); }
.navbar .navbar-brand { color: white !important; font-weight: bold; font-size: 1.5rem; }
.navbar .btn-outline-secondary { color: white; border-color: rgba(255,255,255,0.5); }
.navbar .btn-outline-secondary:hover { background-color: rgba(255,255,255,0.2); color: white; }
.navbar .btn-outline-primary { color: white; border-color: white; }
.navbar .btn-outline-primary:hover { background-color: white; color: #667eea; }
#circleUser { width: 30px; height: 30px; color: white; }
#bodyContain { padding-top: 20px; }
#titleListe { margin: 0 20px; }
#acceuilSite { padding-top: 20px; justify-content: center; margin-right: 5%; margin-left: 5%; max-width: 1200px; margin: 20px auto; }
#acceuilSite h2 { font-size: 2rem; text-align: center; padding-bottom: 10px; color: #333; }
#acceuilSite .btn { margin-bottom: 10px; }
#acceuilSite #cameraButton { position: absolute; top: 0; border-radius: 5px; right: 18px; z-index: 2; border: none; height: 38px; cursor: pointer; transform: translateX(2px); }
#acceuilSite #divSearchButton { padding-top: 15px; }
#acceuilSite #selectuser { padding-top: 15px; }
.row { padding-bottom: 15px; }
/* Cards améliorées */
.card { border: none; border-radius: 12px; box-shadow: var(--shadow); transition: transform 0.2s, box-shadow 0.2s; }
.card:hover { transform: translateY(-2px); box-shadow: 0 4px 20px rgba(0,0,0,0.15); }
.card-header { border-radius: 12px 12px 0 0 !important; }
/* _tablivres.scss */
#tableBook { padding: 20px; background: white; border-radius: 12px; box-shadow: var(--shadow); margin: 0 20px; }
#tableBook table { margin-bottom: 0; }
#tableBook thead th { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; padding: 15px 10px; font-weight: 500; }
#tableBook thead th a { color: white; text-decoration: none; }
#tableBook thead th a:hover { color: #ddd; }
#tableBook tbody tr { transition: background-color 0.2s; }
#tableBook tbody tr:hover { background-color: #f8f9fa; }
#tableBook tbody td { vertical-align: middle; padding: 10px; border-color: #eee; }
#tableBook tbody > tr { height: auto; min-height: 120px; }
@media only screen and (max-device-width: 900px) {
#tableBook { padding: 10px; margin: 0 10px; }
#tableBook tr th:nth-child(3), #tableBook tr td:nth-child(3),
#tableBook tr th:nth-child(4), #tableBook tr td:nth-child(4),
#tableBook tr th:nth-child(5), #tableBook tr td:nth-child(5),
#tableBook tr th:nth-child(6), #tableBook tr td:nth-child(6) { display: none; }
}
.pagination { display: flex; flex-wrap: wrap; padding: 20px 0; list-style: none; border-radius: 0.25rem; justify-content: center; }
.pagination .page-link { border-radius: 8px; margin: 0 3px; border: none; color: #667eea; }
.pagination .page-item.active .page-link { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border: none; }
.indexAuteur { flex-wrap: wrap; display: flex; padding-left: 0; list-style: none; border-radius: 0.25rem; justify-content: center; }
#myImg { border-radius: 8px; cursor: pointer; transition: 0.3s; }
#myImg:hover { opacity: 0.7; }
#caption { margin: auto; display: block; width: 80%; max-width: 700px; text-align: center; color: #ccc; padding: 10px 0; height: 150px; }
/* Images de couverture dans le tableau */
.img-cover { border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.15); transition: transform 0.2s, box-shadow 0.2s; }
.img-cover:hover { transform: scale(1.05); box-shadow: 0 4px 15px rgba(0,0,0,0.25); }
/* Fix input-group alignment */
.border-right-0 { border-right: 0 !important; }
.border-left-0 { border-left: 0 !important; }
.input-group-lg > .input-group-prepend > .input-group-text,
.input-group-lg > .input-group-append > .btn {
height: 100%;
display: flex;
align-items: center;
}
/* _livres.scss */
#titleLivre { text-align: center; margin-bottom: 30px; }
.detail-infos th, .detail-infos td { padding: 5px; }
.cover { display: block; margin-left: auto; margin-right: auto; margin-bottom: 30px; }
.details_listuser { border-collapse: collapse; border: 2px solid black; font-family: sans-serif; font-size: 0.8rem; letter-spacing: 1px; }
.details_listuser thead, .details_listuser tfoot { background-color: grey; }
.details_listuser th, .details_listuser td { border: 1px solid black; padding: 8px 10px; }
.details_listuser td:last-of-type { text-align: center; }
/* Image Modal (pour la liste des livres) */
.image-modal {
display: none;
position: fixed;
z-index: 9999;
padding-top: 50px;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0,0,0,0.9);
}
.image-modal-content {
margin: auto;
display: block;
max-width: 80%;
max-height: 80vh;
animation: zoomIn 0.3s;
}
.image-modal-close {
position: absolute;
top: 15px;
right: 35px;
color: #f1f1f1;
font-size: 40px;
font-weight: bold;
cursor: pointer;
z-index: 10000;
}
.image-modal-close:hover { color: #bbb; }
@keyframes zoomIn {
from { transform: scale(0.5); opacity: 0; }
to { transform: scale(1); opacity: 1; }
}
.img-cover { cursor: pointer; transition: opacity 0.3s; }
.img-cover:hover { opacity: 0.7; }
/* User Avatar Styles */
.user-menu-btn {
display: flex;
align-items: center;
text-decoration: none;
color: white;
padding: 5px 10px;
border-radius: 25px;
transition: background-color 0.2s;
}
.user-menu-btn:hover {
background-color: rgba(255,255,255,0.2);
text-decoration: none;
color: white;
}
.user-avatar {
width: 36px;
height: 36px;
border-radius: 50%;
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
display: flex;
align-items: center;
justify-content: center;
border: 2px solid rgba(255,255,255,0.8);
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
}
.user-avatar-img {
width: 100%;
height: 100%;
border-radius: 50%;
object-fit: cover;
}
.user-avatar-initials {
color: white;
font-weight: bold;
font-size: 14px;
text-transform: uppercase;
}
.user-name {
font-weight: 500;
font-size: 14px;
}
.dropdown-header {
padding: 10px 15px;
background-color: #f8f9fa;
}
/* Navbar Brand Dropdown */
.navbar-brand.dropdown-toggle {
cursor: pointer;
}
.navbar-brand.dropdown-toggle::after {
margin-left: 8px;
}
</style>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
yield from [];
}
// line 260
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_body(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "body"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "body"));
// line 261
yield "
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
yield from [];
}
// line 269
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_javascripts(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "javascripts"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "javascripts"));
// line 270
yield " <script src=\"https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js\"></script>
<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js\"></script>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "base.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 501 => 270, 488 => 269, 476 => 261, 463 => 260, 270 => 8, 257 => 7, 234 => 6, 221 => 273, 219 => 269, 216 => 268, 213 => 267, 210 => 266, 208 => 265, 204 => 263, 202 => 260, 199 => 259, 190 => 256, 187 => 255, 183 => 254, 179 => 252, 173 => 249, 170 => 248, 161 => 242, 154 => 238, 148 => 235, 141 => 231, 135 => 228, 129 => 227, 121 => 222, 118 => 221, 111 => 219, 103 => 217, 101 => 216, 96 => 213, 94 => 212, 83 => 204, 77 => 201, 65 => 191, 63 => 7, 59 => 6, 52 => 1,);
}
public function getSourceContext(): Source
{
return new Source("<!DOCTYPE html>
<html>
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<title>{% block title %}BDD-Books{% endblock %}</title>
{% block stylesheets %}
<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css\">
<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css\">
<style>
/* Variables et styles globaux */
:root {
--primary-color: #4a90d9;
--secondary-color: #6c757d;
--success-color: #28a745;
--bg-light: #f8f9fa;
--shadow: 0 2px 10px rgba(0,0,0,0.1);
}
body { background-color: #f5f7fa; }
/* _index.scss */
#list_user { padding: 3%; }
#list_user #users { text-align: center; }
#list_user .logo { width: auto; height: 150px; }
#list_user #div-btn-user { width: 100%; margin: auto; padding-top: 2%; padding-bottom: 1%; }
#list_user #btn-user { text-align: center; width: 250px; height: 250px; }
.navbar { width: 100%; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; box-shadow: var(--shadow); }
.navbar .navbar-brand { color: white !important; font-weight: bold; font-size: 1.5rem; }
.navbar .btn-outline-secondary { color: white; border-color: rgba(255,255,255,0.5); }
.navbar .btn-outline-secondary:hover { background-color: rgba(255,255,255,0.2); color: white; }
.navbar .btn-outline-primary { color: white; border-color: white; }
.navbar .btn-outline-primary:hover { background-color: white; color: #667eea; }
#circleUser { width: 30px; height: 30px; color: white; }
#bodyContain { padding-top: 20px; }
#titleListe { margin: 0 20px; }
#acceuilSite { padding-top: 20px; justify-content: center; margin-right: 5%; margin-left: 5%; max-width: 1200px; margin: 20px auto; }
#acceuilSite h2 { font-size: 2rem; text-align: center; padding-bottom: 10px; color: #333; }
#acceuilSite .btn { margin-bottom: 10px; }
#acceuilSite #cameraButton { position: absolute; top: 0; border-radius: 5px; right: 18px; z-index: 2; border: none; height: 38px; cursor: pointer; transform: translateX(2px); }
#acceuilSite #divSearchButton { padding-top: 15px; }
#acceuilSite #selectuser { padding-top: 15px; }
.row { padding-bottom: 15px; }
/* Cards améliorées */
.card { border: none; border-radius: 12px; box-shadow: var(--shadow); transition: transform 0.2s, box-shadow 0.2s; }
.card:hover { transform: translateY(-2px); box-shadow: 0 4px 20px rgba(0,0,0,0.15); }
.card-header { border-radius: 12px 12px 0 0 !important; }
/* _tablivres.scss */
#tableBook { padding: 20px; background: white; border-radius: 12px; box-shadow: var(--shadow); margin: 0 20px; }
#tableBook table { margin-bottom: 0; }
#tableBook thead th { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; padding: 15px 10px; font-weight: 500; }
#tableBook thead th a { color: white; text-decoration: none; }
#tableBook thead th a:hover { color: #ddd; }
#tableBook tbody tr { transition: background-color 0.2s; }
#tableBook tbody tr:hover { background-color: #f8f9fa; }
#tableBook tbody td { vertical-align: middle; padding: 10px; border-color: #eee; }
#tableBook tbody > tr { height: auto; min-height: 120px; }
@media only screen and (max-device-width: 900px) {
#tableBook { padding: 10px; margin: 0 10px; }
#tableBook tr th:nth-child(3), #tableBook tr td:nth-child(3),
#tableBook tr th:nth-child(4), #tableBook tr td:nth-child(4),
#tableBook tr th:nth-child(5), #tableBook tr td:nth-child(5),
#tableBook tr th:nth-child(6), #tableBook tr td:nth-child(6) { display: none; }
}
.pagination { display: flex; flex-wrap: wrap; padding: 20px 0; list-style: none; border-radius: 0.25rem; justify-content: center; }
.pagination .page-link { border-radius: 8px; margin: 0 3px; border: none; color: #667eea; }
.pagination .page-item.active .page-link { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border: none; }
.indexAuteur { flex-wrap: wrap; display: flex; padding-left: 0; list-style: none; border-radius: 0.25rem; justify-content: center; }
#myImg { border-radius: 8px; cursor: pointer; transition: 0.3s; }
#myImg:hover { opacity: 0.7; }
#caption { margin: auto; display: block; width: 80%; max-width: 700px; text-align: center; color: #ccc; padding: 10px 0; height: 150px; }
/* Images de couverture dans le tableau */
.img-cover { border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.15); transition: transform 0.2s, box-shadow 0.2s; }
.img-cover:hover { transform: scale(1.05); box-shadow: 0 4px 15px rgba(0,0,0,0.25); }
/* Fix input-group alignment */
.border-right-0 { border-right: 0 !important; }
.border-left-0 { border-left: 0 !important; }
.input-group-lg > .input-group-prepend > .input-group-text,
.input-group-lg > .input-group-append > .btn {
height: 100%;
display: flex;
align-items: center;
}
/* _livres.scss */
#titleLivre { text-align: center; margin-bottom: 30px; }
.detail-infos th, .detail-infos td { padding: 5px; }
.cover { display: block; margin-left: auto; margin-right: auto; margin-bottom: 30px; }
.details_listuser { border-collapse: collapse; border: 2px solid black; font-family: sans-serif; font-size: 0.8rem; letter-spacing: 1px; }
.details_listuser thead, .details_listuser tfoot { background-color: grey; }
.details_listuser th, .details_listuser td { border: 1px solid black; padding: 8px 10px; }
.details_listuser td:last-of-type { text-align: center; }
/* Image Modal (pour la liste des livres) */
.image-modal {
display: none;
position: fixed;
z-index: 9999;
padding-top: 50px;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0,0,0,0.9);
}
.image-modal-content {
margin: auto;
display: block;
max-width: 80%;
max-height: 80vh;
animation: zoomIn 0.3s;
}
.image-modal-close {
position: absolute;
top: 15px;
right: 35px;
color: #f1f1f1;
font-size: 40px;
font-weight: bold;
cursor: pointer;
z-index: 10000;
}
.image-modal-close:hover { color: #bbb; }
@keyframes zoomIn {
from { transform: scale(0.5); opacity: 0; }
to { transform: scale(1); opacity: 1; }
}
.img-cover { cursor: pointer; transition: opacity 0.3s; }
.img-cover:hover { opacity: 0.7; }
/* User Avatar Styles */
.user-menu-btn {
display: flex;
align-items: center;
text-decoration: none;
color: white;
padding: 5px 10px;
border-radius: 25px;
transition: background-color 0.2s;
}
.user-menu-btn:hover {
background-color: rgba(255,255,255,0.2);
text-decoration: none;
color: white;
}
.user-avatar {
width: 36px;
height: 36px;
border-radius: 50%;
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
display: flex;
align-items: center;
justify-content: center;
border: 2px solid rgba(255,255,255,0.8);
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
}
.user-avatar-img {
width: 100%;
height: 100%;
border-radius: 50%;
object-fit: cover;
}
.user-avatar-initials {
color: white;
font-weight: bold;
font-size: 14px;
text-transform: uppercase;
}
.user-name {
font-weight: 500;
font-size: 14px;
}
.dropdown-header {
padding: 10px 15px;
background-color: #f8f9fa;
}
/* Navbar Brand Dropdown */
.navbar-brand.dropdown-toggle {
cursor: pointer;
}
.navbar-brand.dropdown-toggle::after {
margin-left: 8px;
}
</style>
{% endblock %}
</head>
<body>
<nav class=\"navbar navbar-light bg-light\">
<div class=\"d-flex align-items-center\">
<!-- Liste déroulante BDD-Books / BDD-Magazines -->
<div class=\"dropdown mr-3\">
<a class=\"navbar-brand dropdown-toggle\" href=\"#\" id=\"navbarBddDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">
<i class=\"fas fa-database mr-1\"></i>BDD
</a>
<div class=\"dropdown-menu\" aria-labelledby=\"navbarBddDropdown\">
<a class=\"dropdown-item\" href=\"{{ path('index') }}\">
<i class=\"fas fa-book mr-2 text-primary\"></i>BDD-Books
</a>
<a class=\"dropdown-item\" href=\"{{ path('magazines_search') }}\">
<i class=\"fas fa-newspaper mr-2 text-success\"></i>BDD-Magazines
</a>
</div>
</div>
</div>
<div class=\"d-flex align-items-center\">
{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
<div class=\"dropdown\">
<a class=\"user-menu-btn\" href=\"#\" id=\"navbarDropdownMenuLink\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">
<div class=\"user-avatar\">
{% if app.user.logo %}
<img src=\"{{ asset('uploads/avatars/' ~ app.user.logo) }}\" alt=\"{{ app.user.username }}\" class=\"user-avatar-img\">
{% else %}
<span class=\"user-avatar-initials\">{{ app.user.name|first|upper }}{{ app.user.lastname|first|upper }}</span>
{% endif %}
</div>
<span class=\"user-name d-none d-md-inline ml-2\">{{ app.user.username }}</span>
<i class=\"fas fa-chevron-down ml-1 small\"></i>
</a>
<div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"navbarDropdownMenuLink\">
<div class=\"dropdown-header\">
<strong>{{ app.user.name }} {{ app.user.lastname }}</strong>
<br><small class=\"text-muted\">{{ app.user.email }}</small>
</div>
<div class=\"dropdown-divider\"></div>
<a class=\"dropdown-item\" href=\"{{ path('user_profile') }}\">
<i class=\"fas fa-user-cog mr-2\"></i>Mon profil
</a>
<div class=\"dropdown-divider\"></div>
<a class=\"dropdown-item\" href=\"{{ path('magazines_list') }}\">
<i class=\"fas fa-newspaper mr-2\"></i>Magazines
</a>
<a class=\"dropdown-item\" href=\"{{ path('listesLivres') }}\">
<i class=\"fas fa-book mr-2\"></i>Livres
</a>
<div class=\"dropdown-divider\"></div>
<a class=\"dropdown-item text-danger\" href=\"{{ path('app_logout') }}\">
<i class=\"fas fa-sign-out-alt mr-2\"></i>Déconnexion
</a>
</div>
</div>
{% else %}
<button class=\"btn btn-outline-primary btn-sm\" data-toggle=\"modal\" data-target=\"#loginModal\">
<i class=\"fas fa-sign-in-alt mr-1\"></i>{{ 'Connexion' }}
</button>
{% endif %}
</div>
</nav>
{% for message in app.flashes('warning') %}
<div class=\"alert alert-success\">
{{ message }}
</div>
{% endfor %}
<div id=\"bodyContain\">
{% block body %}
{% endblock %}
</div>
{% if not is_granted('IS_AUTHENTICATED_REMEMBERED') %}
{% include 'includes/loginModal.html.twig' %}
{% endif %}
{% block javascripts %}
<script src=\"https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js\"></script>
<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js\"></script>
{% endblock %}
</body>
</html>
", "base.html.twig", "/home/jla23/project/DEV/Bdd-Books-DEV/templates/base.html.twig");
}
}