set front
This commit is contained in:
4
.env
4
.env
@@ -25,8 +25,8 @@ APP_SECRET=ba1ab1eaa1c6662c10564a7a82901198
|
||||
#
|
||||
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
|
||||
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4"
|
||||
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4"
|
||||
DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8"
|
||||
DATABASE_URL="mysql://root@10.4.200.16:3306/sortir?serverVersion=10.11.2-MariaDB&charset=utf8mb4"
|
||||
# DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8"
|
||||
###< doctrine/doctrine-bundle ###
|
||||
|
||||
###> symfony/messenger ###
|
||||
|
||||
101
templates/admin/dashboard.html.twig
Normal file
101
templates/admin/dashboard.html.twig
Normal file
@@ -0,0 +1,101 @@
|
||||
{% extends '@EasyAdmin/page/content.html.twig' %}
|
||||
|
||||
{% block page_title %}Administration | Sortir{% endblock %}
|
||||
|
||||
{% block content_title %}Administration{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
|
||||
<style>
|
||||
.order-card {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.bg-c-blue {
|
||||
background: linear-gradient(45deg,#4099ff,#73b4ff);
|
||||
}
|
||||
|
||||
.bg-c-green {
|
||||
background: linear-gradient(45deg,#2ed8b6,#59e0c5);
|
||||
}
|
||||
|
||||
.bg-c-yellow {
|
||||
background: linear-gradient(45deg,#FFB64D,#ffcb80);
|
||||
}
|
||||
|
||||
.bg-c-pink {
|
||||
background: linear-gradient(45deg,#FF5370,#ff869a);
|
||||
}
|
||||
|
||||
|
||||
.card {
|
||||
border-radius: 5px;
|
||||
-webkit-box-shadow: 0 1px 2.94px 0.06px rgba(4,26,55,0.16);
|
||||
box-shadow: 0 1px 2.94px 0.06px rgba(4,26,55,0.16);
|
||||
border: none;
|
||||
margin-bottom: 30px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.card .card-block {
|
||||
padding: 25px;
|
||||
}
|
||||
|
||||
.order-card i {
|
||||
font-size: 26px;
|
||||
}
|
||||
|
||||
.f-left {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.f-right {
|
||||
float: right;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4 col-xl-3">
|
||||
<div class="card bg-c-blue order-card">
|
||||
<div class="card-block">
|
||||
<h6 class="m-b-20">Utilisateurs actifs</h6>
|
||||
<h2 class="text-right"><i class="fas fa-user f-left"></i><span>{{ numberUserActive }}</span></h2>
|
||||
<p class="m-b-0">Comptes désactivés<span class="f-right">{{ numberUserDisable }}</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 col-xl-3">
|
||||
<div class="card bg-c-pink order-card">
|
||||
<div class="card-block">
|
||||
<h6 class="m-b-20">Nombre de groupes</h6>
|
||||
<h2 class="text-right"><i class="fa fa-group f-left"></i><span>{{ numberGroup }}</span></h2>
|
||||
<p class="m-b-0">Incroyable<span class="f-right"></span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 col-xl-3">
|
||||
<div class="card bg-c-green order-card">
|
||||
<div class="card-block">
|
||||
<h6 class="m-b-20">Prochaine sorties</h6>
|
||||
<h2 class="text-right"><i class="fa fa-person-hiking f-left"></i><span>{{ numberOutingNotStarted }}</span></h2>
|
||||
<p class="m-b-0">Sorties terminées<span class="f-right">{{ numberOutingFinished }}</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 col-xl-3">
|
||||
<div class="card bg-c-yellow order-card">
|
||||
<div class="card-block">
|
||||
<h6 class="m-b-20">Total participations</h6>
|
||||
<h2 class="text-right"><i class="fa fa-champagne-glasses f-left"></i><span>{{ numberRegistered }}</span></h2>
|
||||
<p class="m-b-0">Sur l'ensemble des sorties<span class="f-right"></span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
16
templates/admin/importUser.html.twig
Normal file
16
templates/admin/importUser.html.twig
Normal file
@@ -0,0 +1,16 @@
|
||||
{% extends '@EasyAdmin/page/content.html.twig' %}
|
||||
|
||||
{% block page_title %}Importation des utilisateurs | {{ parent() }}{% endblock %}
|
||||
|
||||
{% block content_title %}Importation des utilisateurs{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
{{ form_start(requestForm) }}
|
||||
<div class="my-3">
|
||||
{{ form_row(requestForm.csvFile) }}
|
||||
</div>
|
||||
<div class="my-3">
|
||||
{{ form_row(requestForm.submit) }}
|
||||
</div>
|
||||
{{ form_end(requestForm) }}
|
||||
{% endblock %}
|
||||
@@ -1,19 +1,91 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>{% block title %}Welcome!{% endblock %}</title>
|
||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text><text y=%221.3em%22 x=%220.2em%22 font-size=%2276%22 fill=%22%23fff%22>sf</text></svg>">
|
||||
{% block stylesheets %}
|
||||
{{ encore_entry_link_tags('app') }}
|
||||
{% endblock %}
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>{% block title %}Sortir{% endblock %}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="icon" href="{{ asset('icon.svg') }}">
|
||||
<script>
|
||||
// On page load or when changing themes, best to add inline in `head` to avoid FOUC
|
||||
if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
|
||||
document.documentElement.classList.add('dark');
|
||||
} else {
|
||||
document.documentElement.classList.remove('dark')
|
||||
}
|
||||
</script>
|
||||
{% block stylesheets %}
|
||||
{{ encore_entry_link_tags('app') }}
|
||||
{% endblock %}
|
||||
|
||||
{% block javascripts %}
|
||||
{{ encore_entry_script_tags('app') }}
|
||||
{% block importmap %}{{ importmap('app') }}{% endblock %}
|
||||
{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
{% block body %}{% endblock %}
|
||||
</body>
|
||||
{% block javascripts %}
|
||||
{{ encore_entry_script_tags('app') }}
|
||||
{% endblock %}
|
||||
</head>
|
||||
<body class="bg-light-font dark:bg-dark-font transition-all duration-300">
|
||||
{% if app.flashes is defined %}
|
||||
<div class="fixed bottom-16 right-8 z-50">
|
||||
{% for type, flash in app.flashes %}
|
||||
{% for message in flash %}
|
||||
<div id="alert-{{ loop.index }}" role="alert"
|
||||
class="max-w-md bg-light-font dark:bg-dark-card rounded-lg border-gray-400 dark:border-dark-primary border p-3 shadow-xl my-3 flash-message transition duration-300 ease-linear">
|
||||
<div class="flex flex-row">
|
||||
<div class="px-2">
|
||||
{% if type == 'success' %}
|
||||
{% set typeMessage = 'Succès' %}
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"
|
||||
viewBox="0 0 24 24" stroke-width="2.5" stroke="#44C997">
|
||||
<path stroke-linecap="round" stroke-linejoin="round"
|
||||
d="M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"></path>
|
||||
</svg>
|
||||
|
||||
{% elseif type == 'danger' or type == 'error' %}
|
||||
{% set typeMessage = 'Erreur' %}
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"
|
||||
viewBox="0 0 24 24" stroke-width="2.5" stroke="#FF0E0E">
|
||||
<path stroke-linecap="round" stroke-linejoin="round"
|
||||
d="m9.75 9.75 4.5 4.5m0-4.5-4.5 4.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"></path>
|
||||
</svg>
|
||||
{% elseif type == 'warning' %}
|
||||
{% set typeMessage = 'Attention' %}
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"
|
||||
viewBox="0 0 24 24" stroke-width="2.5" stroke="#FFCC00">
|
||||
<path stroke-linecap="round" stroke-linejoin="round"
|
||||
d="M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z"></path>
|
||||
</svg>
|
||||
{% else %}
|
||||
{% set typeMessage = 'Information' %}
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"
|
||||
viewBox="0 0 24 24" stroke-width="2.5" stroke="#076ECA">
|
||||
<path stroke-linecap="round" stroke-linejoin="round"
|
||||
d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z"></path>
|
||||
</svg>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="ml-2 mr-3 w-full">
|
||||
<div class="flex">
|
||||
<span class="grow font-semibold text-dark dark:text-white">{{ typeMessage }}</span>
|
||||
<button data-dismiss-target="#alert-{{ loop.index }}" aria-label="Close">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M6 18L18 6M6 6l12 12"></path>
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
<span class="block text-gray-600 dark:text-gray-400">{{ message }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% include "base/navbar.html.twig" %}
|
||||
|
||||
{% block body %}{% endblock %}
|
||||
|
||||
{% include "base/footer.html.twig" %}
|
||||
<script src="{{ asset('js/script.js') }}" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
440
templates/base/banner-svg.html.twig
Normal file
440
templates/base/banner-svg.html.twig
Normal file
@@ -0,0 +1,440 @@
|
||||
<svg class="{{ classes }}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8000.000000 2942.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
|
||||
<g transform="translate(0.000000,2942.000000) scale(0.100000,-0.100000)" stroke="none">
|
||||
<path d="M19560 29049 c-52 -10 -196 -38 -320 -60 -124 -23 -288 -59 -365 -80
|
||||
-142 -40 -371 -97 -660 -164 -245 -57 -380 -96 -760 -222 -364 -121 -632 -216
|
||||
-845 -301 -69 -27 -143 -53 -165 -57 -87 -15 -397 -125 -591 -208 -45 -19
|
||||
-139 -68 -210 -108 -212 -119 -320 -174 -494 -249 -377 -163 -553 -261 -840
|
||||
-469 -63 -46 -162 -106 -219 -134 -65 -31 -152 -87 -233 -147 -78 -59 -182
|
||||
-125 -261 -166 -156 -82 -206 -117 -363 -259 -134 -121 -203 -175 -384 -294
|
||||
-84 -56 -161 -118 -235 -191 -60 -59 -216 -191 -345 -293 -227 -180 -255 -206
|
||||
-832 -784 -524 -526 -614 -621 -748 -788 -146 -184 -216 -282 -331 -468 -30
|
||||
-48 -101 -143 -158 -210 -136 -159 -180 -219 -235 -322 -26 -46 -117 -180
|
||||
-203 -297 -266 -361 -343 -481 -394 -610 -11 -29 -88 -183 -171 -341 -97 -186
|
||||
-165 -331 -193 -410 -24 -67 -78 -209 -120 -316 -159 -403 -228 -640 -290
|
||||
-1001 -19 -113 -45 -252 -56 -310 -20 -100 -21 -126 -16 -585 5 -472 14 -612
|
||||
46 -732 6 -21 17 -102 25 -181 17 -159 123 -600 202 -840 90 -273 226 -542
|
||||
474 -942 70 -113 158 -259 195 -325 156 -275 236 -360 555 -582 232 -161 1061
|
||||
-656 1242 -741 57 -27 162 -85 233 -129 206 -126 498 -297 1095 -638 996 -569
|
||||
1219 -704 1387 -842 137 -111 191 -148 448 -308 231 -144 282 -181 326 -236
|
||||
18 -23 76 -70 128 -104 53 -35 116 -84 141 -110 25 -25 101 -90 170 -143 146
|
||||
-114 289 -248 372 -350 33 -40 110 -114 171 -166 128 -107 311 -289 393 -391
|
||||
36 -46 86 -133 144 -250 48 -99 120 -228 159 -287 139 -212 134 -195 217 -713
|
||||
l28 -170 -17 -120 c-9 -66 -20 -176 -23 -245 -8 -146 -26 -214 -154 -576 -99
|
||||
-277 -149 -384 -230 -492 -38 -49 -79 -121 -106 -182 -24 -56 -70 -138 -103
|
||||
-184 -33 -45 -78 -121 -101 -168 -43 -90 -74 -127 -249 -293 -52 -49 -105
|
||||
-113 -138 -165 -39 -60 -96 -126 -197 -225 -78 -77 -179 -187 -223 -245 -179
|
||||
-231 -454 -506 -707 -708 -67 -52 -166 -139 -221 -192 -57 -54 -129 -113 -169
|
||||
-135 -50 -29 -97 -71 -177 -157 -121 -129 -189 -178 -434 -313 -77 -43 -219
|
||||
-124 -315 -180 -96 -56 -263 -153 -370 -215 -107 -62 -239 -144 -293 -183
|
||||
-117 -83 -226 -131 -500 -217 -276 -87 -314 -101 -597 -212 -266 -105 -715
|
||||
-258 -810 -277 -30 -6 -118 -17 -195 -25 -77 -8 -187 -26 -245 -40 -348 -81
|
||||
-678 -106 -1425 -106 -435 0 -490 2 -585 20 -58 11 -197 33 -310 50 -113 17
|
||||
-257 42 -320 56 -63 13 -173 31 -245 39 -103 12 -191 33 -426 100 -561 161
|
||||
-813 253 -1179 434 -119 58 -283 138 -365 176 -83 39 -181 91 -220 117 -44 29
|
||||
-172 146 -342 315 l-271 268 -21 69 c-45 146 -24 273 83 511 35 77 80 191 100
|
||||
252 30 91 53 136 118 235 44 68 104 173 134 235 65 137 97 188 205 323 46 58
|
||||
129 177 184 264 89 140 112 169 206 257 83 78 125 127 192 227 105 156 199
|
||||
250 389 386 76 53 156 119 178 146 23 27 62 64 88 83 365 264 411 300 477 373
|
||||
75 83 129 122 330 234 72 40 222 130 335 200 553 344 703 410 1460 645 681
|
||||
212 958 323 1195 483 306 206 442 413 491 744 22 153 15 460 -15 638 -68 399
|
||||
-187 727 -457 1260 -79 157 -177 356 -219 443 -60 126 -87 170 -132 220 -32
|
||||
34 -110 139 -173 232 -73 108 -141 195 -186 240 -48 46 -107 124 -177 230
|
||||
-116 177 -183 249 -312 335 -44 29 -134 94 -200 143 -140 105 -223 148 -356
|
||||
181 -144 37 -282 50 -449 42 -168 -7 -295 -30 -446 -81 -139 -46 -237 -99
|
||||
-372 -199 -59 -45 -186 -130 -282 -190 -326 -204 -402 -259 -497 -363 -61 -67
|
||||
-114 -113 -173 -151 -53 -33 -133 -101 -210 -176 -77 -76 -231 -206 -400 -338
|
||||
-359 -280 -392 -305 -675 -502 -171 -120 -269 -196 -340 -266 -55 -53 -143
|
||||
-125 -195 -159 -118 -78 -135 -94 -227 -208 -40 -51 -105 -118 -144 -149 -38
|
||||
-31 -185 -178 -325 -325 -140 -148 -267 -277 -282 -286 -15 -10 -49 -42 -77
|
||||
-72 -78 -85 -126 -131 -197 -193 -46 -40 -130 -142 -272 -330 -393 -521 -549
|
||||
-723 -616 -798 -81 -90 -266 -349 -475 -665 -229 -346 -279 -431 -341 -571
|
||||
-32 -73 -98 -194 -152 -279 -122 -192 -152 -257 -201 -435 -22 -80 -70 -230
|
||||
-106 -335 -200 -571 -208 -601 -225 -850 -11 -181 5 -2035 19 -2090 5 -22 31
|
||||
-161 56 -310 25 -148 61 -335 80 -415 19 -80 39 -183 45 -230 14 -113 34 -178
|
||||
80 -270 21 -43 51 -120 66 -171 44 -153 69 -194 247 -393 58 -65 163 -199 233
|
||||
-299 176 -251 182 -258 292 -331 61 -40 134 -101 197 -166 56 -57 135 -125
|
||||
180 -155 44 -29 105 -78 135 -110 39 -40 81 -70 145 -102 135 -68 584 -340
|
||||
715 -433 136 -97 134 -96 219 -125 36 -13 188 -76 336 -140 494 -215 882 -358
|
||||
1481 -549 258 -82 299 -92 885 -210 511 -103 639 -126 764 -135 83 -6 206 -20
|
||||
275 -31 348 -55 521 -74 740 -81 124 -4 245 -12 270 -17 117 -27 366 -34 1090
|
||||
-29 639 4 748 7 835 22 77 14 188 19 485 24 365 7 391 8 505 33 168 37 386 69
|
||||
855 128 524 66 702 92 940 142 107 22 198 42 201 44 3 2 181 48 395 103 214
|
||||
55 425 111 469 125 44 14 141 39 215 55 197 44 633 196 1116 389 111 45 239
|
||||
91 285 102 152 39 263 90 707 327 140 75 356 184 480 243 275 130 356 170 447
|
||||
223 38 22 108 57 155 77 47 20 229 126 405 235 599 371 700 432 860 517 154
|
||||
82 376 216 535 321 42 27 144 117 230 202 85 83 196 183 245 220 50 38 189
|
||||
166 310 285 161 159 245 233 311 277 50 33 129 91 175 127 46 37 117 83 158
|
||||
104 65 32 84 37 166 40 125 6 220 -26 304 -102 55 -50 155 -215 341 -566 121
|
||||
-229 154 -279 294 -446 64 -76 170 -218 236 -314 116 -171 125 -182 397 -451
|
||||
265 -265 286 -282 448 -393 94 -63 226 -163 295 -222 179 -153 276 -216 610
|
||||
-394 74 -40 234 -132 355 -205 275 -166 427 -243 583 -294 121 -41 184 -70
|
||||
377 -176 87 -48 224 -96 1079 -381 l979 -326 286 7 c264 6 295 5 406 -14 181
|
||||
-31 361 -41 785 -41 397 0 607 10 767 35 70 11 188 15 477 15 370 0 387 1 507
|
||||
25 68 14 278 48 467 75 189 28 396 61 460 74 64 13 167 27 227 31 131 9 207
|
||||
29 625 165 168 54 384 117 480 140 243 56 313 81 486 171 83 43 285 133 448
|
||||
199 393 159 472 195 593 267 64 38 188 94 335 153 271 108 287 115 558 268
|
||||
265 149 307 177 416 283 101 98 147 124 248 138 125 18 229 -16 296 -96 85
|
||||
-103 161 -351 185 -608 9 -99 29 -217 59 -348 80 -346 123 -446 250 -572 156
|
||||
-155 350 -231 913 -355 235 -52 287 -60 375 -60 67 0 140 -8 208 -22 93 -19
|
||||
151 -22 510 -29 307 -5 426 -11 490 -23 59 -12 171 -18 366 -23 288 -6 469 4
|
||||
624 33 61 11 248 14 1025 14 787 0 964 3 1033 15 178 31 355 36 1002 29 655
|
||||
-7 833 -1 1031 32 53 9 195 19 324 23 225 7 232 8 350 43 248 74 426 161 557
|
||||
270 142 118 297 474 415 948 l45 184 -5 381 c-6 482 -11 515 -130 842 -30 84
|
||||
-65 165 -76 182 -12 16 -68 66 -124 110 -56 44 -138 110 -182 146 -56 46 -126
|
||||
89 -235 144 -539 269 -593 317 -613 550 -12 141 -9 3147 4 3361 5 91 17 210
|
||||
26 265 11 68 18 209 23 435 4 184 13 360 19 390 5 30 20 145 31 255 11 110 27
|
||||
238 35 285 7 47 17 150 20 230 4 80 18 206 31 280 13 74 37 239 54 367 42 321
|
||||
59 405 156 743 201 701 386 1177 589 1520 18 30 63 121 99 202 72 160 101 211
|
||||
242 423 274 413 562 677 898 824 210 92 433 78 810 -50 261 -89 285 -103 609
|
||||
-346 228 -171 352 -253 474 -310 120 -56 395 -148 483 -162 36 -6 180 -11 320
|
||||
-11 277 0 392 -10 475 -41 111 -42 159 -96 190 -217 28 -110 58 -367 65 -567
|
||||
6 -159 12 -225 33 -324 22 -102 27 -150 27 -270 0 -112 6 -179 25 -285 19
|
||||
-108 25 -174 25 -287 0 -130 5 -176 41 -376 23 -125 47 -277 54 -338 8 -60 21
|
||||
-146 30 -190 8 -44 31 -181 50 -305 19 -124 43 -272 54 -330 11 -58 23 -170
|
||||
26 -250 4 -80 13 -181 20 -225 8 -44 25 -180 40 -302 14 -123 32 -260 40 -305
|
||||
8 -46 15 -129 15 -184 0 -69 8 -141 25 -225 39 -192 61 -339 120 -804 55 -427
|
||||
99 -722 135 -885 13 -60 20 -150 25 -305 5 -181 13 -258 41 -435 43 -265 62
|
||||
-344 130 -532 193 -537 458 -1022 884 -1623 118 -166 145 -197 348 -395 159
|
||||
-157 227 -230 245 -267 32 -62 73 -99 268 -238 107 -75 188 -143 264 -220 105
|
||||
-106 117 -115 260 -191 82 -43 203 -117 270 -163 193 -136 243 -166 370 -220
|
||||
66 -29 199 -95 296 -147 227 -121 326 -167 424 -194 44 -12 127 -47 185 -77
|
||||
326 -173 322 -171 475 -212 83 -22 227 -69 320 -104 317 -120 868 -297 1000
|
||||
-322 69 -13 183 -40 253 -59 121 -33 218 -55 646 -146 175 -37 201 -40 350
|
||||
-40 99 0 196 -6 251 -16 120 -20 408 -29 510 -15 44 6 130 16 190 21 61 6 146
|
||||
15 190 19 131 13 221 57 421 203 60 44 132 91 159 105 112 57 152 92 236 206
|
||||
45 62 128 157 183 213 130 129 199 166 326 172 165 8 239 -43 383 -264 120
|
||||
-184 203 -256 401 -350 139 -65 281 -111 433 -138 76 -13 217 -43 313 -65
|
||||
l175 -41 6176 0 6175 0 110 45 109 45 968 0 967 0 116 -25 c64 -14 128 -25
|
||||
143 -25 35 0 276 60 416 103 465 145 726 330 833 590 17 40 42 126 57 192 14
|
||||
66 45 194 68 285 51 203 54 280 15 415 -20 68 -30 132 -38 260 l-12 170 -63
|
||||
140 c-37 81 -74 182 -88 241 -31 127 -66 196 -181 359 -50 71 -111 170 -136
|
||||
218 -44 87 -47 91 -123 137 -49 29 -101 72 -139 114 -73 81 -124 108 -265 142
|
||||
-187 44 -550 143 -640 175 -222 78 -351 181 -416 330 -25 55 -44 130 -73 279
|
||||
-9 47 -26 130 -39 185 -13 55 -44 214 -69 353 -91 499 -86 483 -463 1342 -72
|
||||
162 -152 358 -178 435 -61 181 -94 261 -200 480 -133 275 -163 349 -201 490
|
||||
-19 72 -53 180 -75 240 -95 258 -317 984 -334 1086 -8 57 -31 169 -50 249 -81
|
||||
346 -144 683 -150 815 -5 82 -16 168 -32 235 -25 102 -25 111 -18 355 6 240 6
|
||||
255 -18 385 -59 313 -61 670 -7 1005 12 76 21 200 25 340 7 213 8 225 46 377
|
||||
51 200 98 341 164 496 94 216 181 331 295 388 106 53 279 42 544 -36 310 -91
|
||||
554 -206 975 -460 108 -65 243 -140 301 -167 58 -27 152 -80 209 -117 176
|
||||
-114 215 -130 526 -211 134 -36 145 -37 260 -32 187 8 351 62 640 212 460 237
|
||||
672 424 787 694 29 69 33 89 39 221 4 80 8 255 8 389 1 259 -11 388 -51 531
|
||||
-50 182 -224 647 -466 1240 -44 107 -98 259 -121 337 -51 172 -71 224 -199
|
||||
518 -55 127 -125 305 -155 397 -66 197 -94 255 -199 410 -47 69 -104 172 -142
|
||||
255 -133 292 -140 300 -331 394 -138 67 -271 113 -470 163 -115 28 -167 36
|
||||
-290 41 -82 4 -200 15 -261 26 -294 49 -736 47 -1029 -6 -44 -8 -152 -19 -239
|
||||
-26 -147 -10 -179 -16 -395 -75 -129 -36 -277 -71 -329 -80 -106 -17 -162 -36
|
||||
-347 -121 -71 -33 -200 -86 -285 -117 -203 -76 -251 -104 -410 -237 -148 -123
|
||||
-213 -169 -292 -200 -106 -42 -246 -19 -366 61 -51 35 -429 408 -592 586 -69
|
||||
76 -147 131 -230 164 -51 20 -64 20 -5903 20 l-5852 1 -110 26 -110 27 -2205
|
||||
6 c-2037 5 -2209 7 -2260 22 -142 44 -214 107 -247 216 -27 86 -22 270 10 452
|
||||
23 126 27 181 31 425 4 225 8 302 25 390 17 92 20 152 21 365 0 190 4 277 16
|
||||
340 25 135 30 430 9 575 -10 66 -21 221 -25 345 -5 149 -13 244 -23 280 -9 30
|
||||
-18 107 -22 170 -6 101 -13 132 -56 259 -27 79 -58 189 -70 245 -25 118 -35
|
||||
145 -94 247 -25 41 -65 124 -90 184 -97 230 -129 269 -299 349 -50 24 -144 69
|
||||
-210 100 -65 31 -149 79 -186 106 -37 28 -89 60 -116 72 l-49 22 -1969 -3
|
||||
-1969 -3 -86 -30 c-190 -66 -351 -171 -533 -347 -227 -219 -391 -471 -499
|
||||
-766 -29 -80 -33 -102 -34 -205 -1 -63 -7 -152 -14 -197 -8 -50 -11 -114 -7
|
||||
-165 4 -46 10 -211 15 -368 5 -201 13 -308 24 -364 10 -43 35 -214 57 -380 22
|
||||
-166 48 -350 59 -411 11 -60 23 -146 26 -190 4 -44 20 -145 35 -225 16 -80 45
|
||||
-282 65 -450 20 -168 50 -372 66 -455 20 -95 31 -180 31 -230 -1 -147 -60
|
||||
-274 -155 -329 -61 -36 -137 -44 -352 -39 -186 4 -194 4 -340 -28 -139 -30
|
||||
-169 -33 -400 -39 -224 -6 -274 -10 -480 -44 -126 -21 -279 -44 -340 -51 -121
|
||||
-14 -462 -104 -710 -186 -192 -64 -613 -265 -722 -344 -127 -91 -192 -118
|
||||
-298 -123 -107 -5 -157 7 -222 52 -47 34 -171 117 -328 222 -52 34 -151 123
|
||||
-280 250 -109 108 -214 203 -232 210 -27 12 -294 14 -1570 14 -1560 0 -1761 4
|
||||
-1953 38 -85 15 -246 17 -1588 19 l-1493 3 -76 -25 c-42 -15 -156 -67 -252
|
||||
-116 -97 -49 -214 -101 -261 -115 -167 -51 -185 -71 -240 -273 -17 -62 -69
|
||||
-207 -115 -322 -97 -238 -106 -269 -135 -469 -50 -342 -104 -467 -229 -523
|
||||
-87 -39 -244 -17 -358 49 -23 14 -88 66 -145 115 -57 50 -240 190 -407 312
|
||||
-199 145 -345 259 -420 330 -121 114 -199 167 -389 261 -250 125 -655 293
|
||||
-811 336 -62 17 -192 60 -289 96 -97 35 -224 74 -282 85 -58 12 -184 50 -281
|
||||
85 -219 78 -280 94 -549 138 l-215 35 -785 2 c-798 2 -888 -1 -1084 -37 -178
|
||||
-33 -205 -34 -471 -28 -263 6 -273 6 -405 -20 -74 -14 -160 -26 -190 -26 -48
|
||||
0 -547 -100 -719 -145 -31 -8 -128 -26 -216 -40 -131 -22 -204 -41 -400 -107
|
||||
-522 -175 -831 -297 -1097 -436 -212 -111 -316 -163 -438 -221 -70 -34 -169
|
||||
-96 -300 -190 -107 -77 -267 -184 -355 -238 -260 -159 -386 -247 -450 -313
|
||||
-33 -34 -161 -135 -285 -225 -296 -215 -375 -279 -575 -467 -181 -171 -326
|
||||
-295 -505 -433 -63 -48 -182 -155 -265 -236 -82 -81 -177 -164 -210 -185 -33
|
||||
-20 -105 -80 -160 -132 -173 -165 -264 -209 -406 -199 -175 12 -255 84 -410
|
||||
371 -43 79 -86 143 -129 190 -36 39 -108 134 -159 211 -69 103 -126 173 -216
|
||||
265 -73 75 -145 159 -178 210 -86 134 -340 376 -627 600 -131 102 -288 235
|
||||
-355 300 -122 119 -194 175 -825 633 -151 110 -326 243 -390 297 -134 113
|
||||
-206 161 -500 330 -247 141 -443 265 -1195 755 -732 477 -919 596 -1059 672
|
||||
-168 92 -204 115 -605 382 -196 131 -401 264 -456 296 -220 128 -266 158 -333
|
||||
210 -168 131 -213 299 -162 599 32 189 74 324 204 656 164 417 186 459 312
|
||||
597 44 48 116 135 159 193 226 301 456 553 585 641 51 34 136 109 215 189 100
|
||||
101 168 159 295 250 743 530 1534 942 2325 1210 166 56 324 91 555 122 98 13
|
||||
267 5 410 -21 63 -11 228 -32 365 -45 270 -27 377 -45 476 -77 138 -45 221
|
||||
-105 267 -193 25 -47 27 -60 26 -166 0 -83 -6 -140 -22 -203 -12 -49 -29 -145
|
||||
-37 -215 -21 -174 -43 -242 -115 -351 -33 -51 -87 -145 -119 -209 -108 -215
|
||||
-232 -365 -564 -679 -210 -199 -265 -261 -371 -409 -72 -102 -113 -142 -203
|
||||
-196 -54 -33 -146 -117 -388 -356 -310 -307 -318 -315 -355 -395 -21 -45 -70
|
||||
-131 -109 -192 -101 -155 -140 -269 -162 -472 -19 -182 8 -393 80 -612 49
|
||||
-150 252 -647 298 -731 78 -143 130 -181 313 -226 147 -35 188 -49 328 -111
|
||||
82 -35 172 -66 265 -88 78 -19 264 -73 412 -120 149 -47 484 -151 745 -231
|
||||
261 -80 615 -192 785 -249 180 -61 362 -116 434 -131 82 -17 165 -43 244 -76
|
||||
156 -65 210 -80 282 -80 64 1 310 63 670 170 110 33 243 70 295 82 146 35 167
|
||||
48 293 184 221 238 342 427 506 789 244 538 436 1089 800 2298 143 474 171
|
||||
581 181 669 6 58 22 146 35 195 15 58 26 135 30 215 4 69 13 156 21 195 47
|
||||
226 65 496 44 650 -6 50 -16 149 -20 220 -9 136 -27 259 -54 360 -26 102 -143
|
||||
431 -255 717 -33 84 -83 230 -111 323 -66 219 -122 335 -269 559 -65 99 -158
|
||||
251 -207 336 -235 416 -220 396 -430 610 -122 124 -205 217 -227 255 -24 40
|
||||
-97 121 -219 241 -194 193 -217 210 -605 467 -104 68 -274 189 -380 268 -115
|
||||
87 -232 166 -292 197 -143 75 -327 132 -652 202 -156 33 -300 65 -319 70 -19
|
||||
5 -94 14 -165 20 -72 5 -187 21 -255 35 -322 62 -566 79 -1110 78 -245 -1
|
||||
-490 -3 -545 -5 -55 -2 -147 0 -205 4 -84 5 -124 3 -200 -13z m-3332 -3234
|
||||
c103 -31 156 -122 155 -265 -1 -89 -27 -177 -88 -305 -76 -159 -265 -429 -402
|
||||
-577 -49 -52 -171 -202 -272 -334 -102 -131 -226 -282 -275 -334 -101 -106
|
||||
-154 -198 -261 -450 -73 -172 -103 -231 -210 -415 -48 -82 -180 -330 -293
|
||||
-550 -112 -220 -250 -483 -305 -585 -55 -102 -136 -252 -180 -335 -44 -82 -98
|
||||
-179 -119 -214 -51 -83 -78 -152 -78 -201 0 -69 103 -247 279 -483 185 -248
|
||||
537 -797 625 -976 63 -127 322 -515 415 -620 43 -49 109 -140 147 -203 54 -90
|
||||
93 -139 193 -243 69 -72 161 -179 205 -238 98 -136 193 -230 282 -282 38 -22
|
||||
103 -71 144 -111 41 -39 116 -98 165 -132 50 -33 115 -86 145 -117 44 -46 79
|
||||
-69 175 -116 66 -32 183 -95 260 -140 77 -45 329 -184 560 -309 231 -125 502
|
||||
-275 603 -333 101 -58 227 -124 280 -147 148 -65 178 -85 292 -195 68 -66 190
|
||||
-164 346 -278 261 -190 313 -239 425 -400 49 -70 134 -166 269 -302 108 -110
|
||||
237 -252 286 -315 49 -63 184 -230 299 -370 116 -140 250 -307 299 -370 49
|
||||
-63 155 -183 235 -265 80 -83 177 -185 214 -228 38 -43 119 -119 180 -171 174
|
||||
-145 314 -301 372 -416 12 -25 36 -92 53 -150 17 -58 83 -256 147 -440 64
|
||||
-184 130 -384 146 -445 30 -109 64 -185 85 -192 17 -6 159 93 231 160 35 33
|
||||
91 99 125 146 35 49 146 172 258 286 116 118 213 225 235 260 20 33 70 94 110
|
||||
135 40 41 172 211 295 377 136 186 241 319 271 344 27 22 84 91 126 152 97
|
||||
141 183 229 260 265 56 26 64 27 213 26 143 0 164 -3 275 -33 66 -19 165 -44
|
||||
220 -58 124 -30 168 -54 313 -171 64 -52 161 -123 215 -159 101 -67 123 -90
|
||||
223 -243 27 -41 98 -136 157 -210 60 -74 127 -166 150 -205 23 -38 46 -73 51
|
||||
-77 30 -20 98 40 157 139 28 48 73 112 101 143 66 74 130 189 239 426 147 324
|
||||
204 426 597 1064 281 456 369 591 493 756 182 243 366 418 617 586 203 136
|
||||
337 232 427 307 156 130 239 171 349 171 123 0 217 -50 267 -143 32 -58 34
|
||||
-68 33 -152 -1 -105 -26 -192 -106 -368 -123 -274 -160 -336 -333 -567 -55
|
||||
-74 -134 -191 -175 -260 -61 -103 -93 -143 -176 -225 -71 -70 -151 -166 -264
|
||||
-320 -89 -121 -192 -251 -229 -290 -67 -70 -207 -256 -293 -390 -64 -99 -98
|
||||
-170 -189 -392 -107 -264 -124 -299 -286 -598 -164 -302 -193 -364 -264 -558
|
||||
-69 -190 -109 -274 -283 -591 -164 -299 -218 -414 -265 -561 -19 -58 -73 -178
|
||||
-131 -290 -116 -224 -140 -295 -180 -538 -17 -100 -47 -244 -66 -321 -19 -76
|
||||
-55 -231 -80 -345 -25 -113 -56 -249 -69 -301 -14 -58 -28 -155 -35 -250 -6
|
||||
-85 -20 -206 -32 -270 -16 -91 -22 -185 -29 -450 -5 -225 -13 -366 -24 -430
|
||||
-13 -76 -17 -204 -21 -645 -6 -541 -5 -552 17 -665 18 -95 24 -165 29 -395 4
|
||||
-175 13 -321 23 -390 9 -60 25 -200 36 -310 18 -183 59 -421 136 -781 13 -62
|
||||
111 -379 219 -705 188 -570 199 -602 289 -779 115 -231 204 -374 283 -459 83
|
||||
-90 106 -137 112 -233 3 -43 -1 -98 -7 -125 -31 -121 -117 -229 -202 -254 -69
|
||||
-21 -247 -15 -369 10 -108 23 -421 125 -545 178 -187 80 -368 218 -763 582
|
||||
-118 108 -255 224 -305 259 -51 34 -141 111 -202 171 -65 64 -132 120 -164
|
||||
137 -36 19 -85 63 -150 133 -72 78 -124 123 -211 181 -129 87 -174 131 -279
|
||||
275 -50 68 -175 203 -395 425 -313 316 -325 330 -436 494 -63 92 -166 229
|
||||
-228 304 -164 196 -175 213 -257 415 -15 37 -63 118 -107 180 -137 193 -200
|
||||
347 -313 772 -52 196 -66 264 -75 370 -6 75 -22 170 -36 225 -14 52 -28 128
|
||||
-31 168 -4 46 -11 76 -19 79 -17 6 -61 -18 -114 -64 -25 -22 -92 -71 -150
|
||||
-110 -70 -47 -128 -95 -172 -145 -48 -54 -123 -116 -265 -219 -166 -120 -222
|
||||
-168 -348 -295 -82 -84 -193 -187 -245 -229 -199 -161 -411 -365 -955 -923
|
||||
-114 -117 -183 -171 -257 -199 -53 -20 -263 -23 -324 -5 -125 37 -229 224
|
||||
-259 467 -16 128 -102 557 -147 730 -17 66 -55 188 -85 270 -153 420 -545
|
||||
1588 -603 1795 -30 110 -100 515 -115 670 -8 74 -23 184 -34 244 -17 91 -21
|
||||
149 -21 337 0 124 -5 251 -10 280 -6 30 -24 175 -41 323 -16 148 -32 272 -35
|
||||
277 -2 5 -11 91 -18 191 -13 167 -18 197 -60 342 -55 188 -124 374 -174 470
|
||||
-49 93 -168 217 -316 328 -67 49 -188 156 -271 238 -90 88 -174 162 -211 184
|
||||
-42 24 -102 79 -184 166 -96 102 -140 141 -205 180 -65 39 -109 78 -202 177
|
||||
-87 93 -144 144 -218 194 -67 45 -141 109 -225 194 -80 81 -157 149 -215 187
|
||||
-56 37 -147 117 -240 208 -163 159 -181 172 -555 393 -107 63 -253 158 -323
|
||||
211 -78 59 -169 116 -230 146 -59 29 -173 100 -272 171 -93 66 -215 144 -270
|
||||
171 -106 54 -164 92 -365 237 -69 50 -177 118 -241 151 -64 33 -168 97 -230
|
||||
142 -188 136 -268 187 -374 240 -55 27 -169 99 -253 160 -84 60 -235 161 -335
|
||||
225 -220 138 -306 203 -388 291 -196 209 -313 501 -490 1221 -38 157 -90 356
|
||||
-114 441 -24 85 -62 229 -85 320 -61 245 -82 303 -204 550 -120 241 -150 320
|
||||
-168 436 -14 89 -3 151 71 384 27 85 61 216 75 290 28 143 33 156 189 455 34
|
||||
66 84 181 110 256 26 75 63 165 80 200 18 35 143 240 277 454 134 215 283 465
|
||||
331 556 48 92 106 196 130 230 141 209 294 288 481 248 191 -41 353 -162 536
|
||||
-400 45 -59 119 -140 164 -180 58 -53 125 -132 231 -274 136 -182 310 -433
|
||||
364 -527 12 -21 27 -38 32 -38 14 0 39 89 56 200 8 52 22 241 30 420 14 309
|
||||
21 386 45 509 5 29 10 104 10 166 0 120 13 212 37 260 8 16 180 197 383 400
|
||||
343 346 379 386 553 610 102 132 209 263 237 290 29 28 98 111 153 185 400
|
||||
532 727 886 1077 1163 69 54 166 141 215 192 72 74 100 96 140 110 28 9 64 23
|
||||
80 30 41 19 140 18 203 0z m36902 -3676 c141 -22 251 -99 314 -219 73 -137 94
|
||||
-292 98 -690 2 -233 1 -251 -25 -371 -16 -76 -27 -158 -27 -205 0 -44 -5 -97
|
||||
-10 -119 -5 -22 -23 -130 -41 -240 -22 -143 -62 -323 -141 -635 -213 -844
|
||||
-290 -1083 -478 -1480 -48 -102 -102 -219 -120 -260 -60 -138 -119 -247 -169
|
||||
-314 -61 -80 -52 -83 76 -31 47 20 110 42 141 50 115 30 477 8 544 -33 48 -30
|
||||
74 -60 100 -117 20 -44 23 -65 23 -180 0 -114 -3 -136 -22 -179 -23 -48 -23
|
||||
-49 -5 -90 11 -22 43 -67 72 -99 67 -73 237 -227 250 -227 12 0 12 0 34 82 19
|
||||
69 104 167 164 191 65 26 197 40 316 34 157 -8 204 -25 276 -97 106 -106 111
|
||||
-154 103 -1000 -6 -650 0 -837 32 -1022 12 -65 15 -185 15 -548 0 -436 2 -470
|
||||
21 -540 14 -53 24 -140 33 -295 8 -121 23 -274 34 -340 12 -66 35 -241 52
|
||||
-388 17 -148 40 -317 50 -375 11 -59 20 -149 20 -201 0 -54 10 -150 24 -230
|
||||
14 -75 28 -194 31 -266 4 -71 15 -164 25 -205 10 -41 21 -120 25 -175 3 -55
|
||||
17 -155 31 -223 13 -67 42 -232 64 -365 23 -133 56 -321 75 -417 19 -96 39
|
||||
-218 44 -270 6 -52 26 -178 46 -280 20 -102 42 -237 49 -300 8 -63 30 -182 49
|
||||
-265 43 -183 84 -386 177 -875 88 -457 145 -734 199 -946 28 -112 44 -202 51
|
||||
-295 6 -74 16 -153 21 -176 19 -89 39 -249 64 -513 24 -260 46 -435 65 -525 4
|
||||
-22 11 -110 15 -195 4 -91 16 -210 31 -289 14 -79 24 -172 24 -227 0 -51 7
|
||||
-126 15 -166 9 -40 34 -181 55 -313 22 -132 53 -305 69 -385 16 -80 35 -199
|
||||
41 -265 17 -179 30 -221 145 -496 89 -211 117 -266 172 -343 82 -113 109 -171
|
||||
123 -262 28 -183 -66 -375 -205 -414 -54 -15 -170 -9 -260 15 -115 30 -551
|
||||
178 -705 240 -85 34 -204 77 -265 95 -148 43 -248 91 -414 200 -77 50 -171
|
||||
104 -208 121 -252 113 -434 229 -547 349 -35 38 -108 135 -161 216 -54 82
|
||||
-128 182 -164 224 -36 41 -125 164 -196 273 -72 108 -219 327 -328 485 -334
|
||||
483 -526 790 -647 1033 -80 159 -113 215 -256 430 -57 86 -121 194 -142 241
|
||||
-22 46 -67 121 -100 166 -91 123 -117 216 -158 572 -13 118 -31 256 -39 305
|
||||
-8 50 -17 142 -20 205 -4 63 -17 169 -30 235 -35 179 -61 373 -100 750 -39
|
||||
378 -65 571 -100 750 -13 66 -27 176 -30 245 -4 69 -18 184 -31 255 -13 72
|
||||
-24 164 -24 206 0 42 -11 136 -25 210 -14 74 -25 166 -25 205 0 40 -9 115 -20
|
||||
168 -50 246 -80 466 -135 1006 -54 530 -88 783 -135 1000 -10 47 -21 144 -25
|
||||
215 -3 72 -15 177 -26 234 -11 57 -35 226 -54 375 -19 149 -44 318 -54 376
|
||||
-11 58 -23 161 -26 230 -4 69 -18 184 -31 255 -13 72 -24 162 -24 202 0 39 -7
|
||||
105 -15 145 -9 40 -34 215 -56 388 -21 173 -48 362 -58 420 -11 58 -22 159
|
||||
-26 225 -3 66 -17 181 -30 255 -21 118 -24 170 -26 410 -2 329 5 456 37 655
|
||||
29 178 41 216 150 488 45 114 101 273 124 354 22 81 68 212 102 292 118 282
|
||||
124 315 84 441 -13 41 -36 145 -50 230 -41 243 -56 307 -97 424 -22 60 -60
|
||||
189 -84 285 -56 225 -93 330 -220 626 -56 132 -128 321 -160 420 -31 99 -83
|
||||
245 -116 325 -92 230 -111 302 -116 461 -5 111 -2 156 15 245 12 60 26 138 31
|
||||
173 18 109 79 177 192 212 108 34 342 22 728 -37 202 -30 390 -90 596 -188
|
||||
217 -104 281 -151 498 -365 110 -108 216 -221 237 -251 84 -123 92 -108 101
|
||||
185 6 187 11 241 37 360 44 214 87 292 187 343 45 24 91 27 185 11z m14275
|
||||
-5044 c72 -8 229 -19 350 -24 206 -9 229 -12 355 -46 291 -78 556 -175 736
|
||||
-269 154 -80 240 -142 343 -244 56 -57 97 -90 102 -85 6 6 1 76 -12 179 -23
|
||||
186 -20 259 12 335 24 56 80 112 134 135 60 27 312 32 425 9 47 -9 142 -22
|
||||
212 -29 146 -15 214 -41 283 -111 63 -63 75 -109 75 -292 0 -110 6 -186 20
|
||||
-266 29 -161 40 -352 40 -682 0 -246 3 -306 20 -395 11 -58 31 -184 45 -280
|
||||
36 -247 62 -387 96 -522 84 -336 171 -548 225 -548 8 0 48 22 91 49 86 55 76
|
||||
43 303 361 84 118 176 240 205 270 29 30 83 100 121 155 119 175 211 289 308
|
||||
383 80 78 102 93 151 107 78 23 223 23 300 0 117 -34 164 -76 201 -175 24 -68
|
||||
30 -253 11 -380 -9 -58 -19 -170 -23 -250 -3 -80 -12 -174 -19 -210 -19 -90
|
||||
-40 -261 -69 -555 -14 -137 -35 -303 -46 -368 -12 -74 -20 -164 -20 -239 0
|
||||
-93 -5 -141 -24 -216 -20 -79 -26 -135 -31 -302 -5 -149 -14 -241 -31 -335
|
||||
-17 -94 -24 -166 -24 -260 0 -101 -5 -145 -20 -195 -40 -130 -42 -168 -20
|
||||
-292 11 -62 29 -189 40 -283 11 -93 27 -206 35 -250 8 -44 17 -114 21 -155 3
|
||||
-41 19 -129 35 -195 15 -66 71 -316 124 -555 106 -478 187 -808 246 -1001 21
|
||||
-69 57 -208 79 -310 38 -172 77 -296 335 -1089 40 -124 76 -249 80 -279 7 -53
|
||||
32 -132 139 -434 31 -87 63 -191 72 -230 9 -40 54 -164 99 -277 259 -642 420
|
||||
-1121 499 -1475 30 -137 82 -360 115 -495 32 -135 79 -331 105 -436 25 -104
|
||||
64 -251 86 -325 23 -74 56 -210 75 -302 37 -188 57 -236 174 -435 131 -221
|
||||
157 -299 149 -453 -7 -125 -34 -196 -102 -264 -66 -67 -119 -85 -244 -85 -111
|
||||
0 -256 20 -439 61 -73 16 -159 29 -190 29 -32 0 -150 16 -263 35 -113 19 -230
|
||||
35 -261 35 -127 0 -567 182 -885 366 -165 95 -322 205 -482 337 -192 159 -662
|
||||
486 -1169 815 -253 163 -317 268 -422 691 -22 86 -76 264 -120 395 -97 288
|
||||
-151 465 -271 901 -174 629 -211 752 -370 1240 -123 377 -237 745 -420 1355
|
||||
-93 311 -254 851 -359 1200 -193 647 -312 1031 -426 1380 -35 107 -73 245 -85
|
||||
305 -12 61 -44 180 -71 265 -28 85 -108 355 -180 599 -72 245 -175 585 -229
|
||||
755 -55 171 -151 484 -215 696 -197 654 -321 1055 -400 1300 -41 129 -94 312
|
||||
-116 405 -59 246 -91 352 -170 568 -39 106 -83 239 -96 297 -14 58 -39 155
|
||||
-56 215 -16 61 -39 142 -49 180 -23 83 -27 214 -8 270 38 116 147 194 320 231
|
||||
78 16 254 12 445 -11z m-4260 -108 c28 -9 70 -33 93 -52 90 -78 164 -304 177
|
||||
-540 3 -71 15 -164 25 -205 11 -46 21 -136 25 -230 4 -85 15 -204 26 -265 10
|
||||
-60 30 -218 44 -350 26 -252 53 -454 62 -469 3 -4 11 -101 18 -215 16 -253 37
|
||||
-409 74 -549 16 -59 96 -366 179 -682 83 -316 173 -656 201 -755 27 -99 70
|
||||
-285 96 -413 28 -143 73 -320 115 -460 38 -126 132 -481 209 -790 78 -308 161
|
||||
-630 185 -714 46 -160 62 -229 97 -417 11 -63 36 -166 55 -228 56 -185 88
|
||||
-308 179 -693 48 -200 105 -423 126 -495 22 -71 61 -227 88 -345 27 -118 55
|
||||
-228 61 -245 6 -16 52 -187 102 -380 49 -192 115 -429 145 -525 163 -515 421
|
||||
-1451 479 -1740 26 -124 80 -342 121 -485 41 -143 137 -505 213 -805 76 -300
|
||||
168 -653 205 -785 98 -359 109 -414 109 -590 1 -119 -3 -160 -17 -201 -20 -59
|
||||
-75 -127 -121 -151 -123 -64 -359 -66 -671 -7 -71 14 -188 34 -260 45 -177 26
|
||||
-243 48 -424 139 -86 43 -201 92 -256 108 -118 37 -210 91 -375 222 -226 178
|
||||
-347 266 -455 330 -62 37 -133 89 -165 121 -63 62 -239 182 -552 373 -114 70
|
||||
-251 161 -305 204 -54 42 -145 105 -203 141 -164 100 -211 134 -271 198 -94
|
||||
99 -118 160 -164 427 -14 82 -45 217 -70 300 -56 191 -86 319 -175 740 -39
|
||||
187 -87 401 -106 475 -19 74 -43 193 -55 265 -11 72 -29 161 -39 197 -43 145
|
||||
-196 809 -223 969 -8 47 -42 193 -75 325 -124 497 -166 674 -187 805 -12 74
|
||||
-50 241 -83 370 -80 307 -138 557 -282 1228 -149 686 -192 875 -282 1222 -39
|
||||
151 -79 326 -89 389 -10 63 -32 171 -49 240 -16 69 -51 221 -76 336 -25 116
|
||||
-59 257 -75 315 -72 261 -122 524 -224 1185 -31 198 -77 461 -102 585 -25 124
|
||||
-52 275 -58 335 -13 111 -88 468 -150 715 -33 132 -71 246 -155 464 -75 195
|
||||
-107 365 -97 516 5 82 46 286 68 342 13 32 83 99 127 122 88 46 257 58 417 30
|
||||
50 -8 158 -21 240 -29 177 -16 301 -49 678 -181 472 -165 490 -174 693 -326
|
||||
56 -41 142 -99 190 -128 118 -71 201 -127 244 -163 20 -18 36 -25 38 -18 2 6
|
||||
-25 95 -60 198 l-63 188 1 120 c1 156 10 186 81 263 63 68 90 81 188 82 28 1
|
||||
59 6 70 11 34 15 412 4 470 -14z m-20552 -22 c117 -47 169 -140 169 -300 0
|
||||
-82 -8 -119 -86 -402 -76 -274 -86 -322 -86 -395 0 -55 -9 -118 -26 -188 -25
|
||||
-97 -27 -129 -35 -420 -6 -247 -11 -329 -25 -380 -15 -58 -18 -137 -21 -687
|
||||
-3 -543 -2 -623 11 -623 26 0 111 108 195 248 l83 138 313 307 c366 358 433
|
||||
407 554 407 52 0 174 -40 205 -68 60 -55 75 -87 86 -186 11 -93 10 -100 -20
|
||||
-214 -57 -213 -143 -413 -286 -663 -59 -104 -122 -234 -170 -350 -41 -101
|
||||
-124 -285 -184 -409 -60 -124 -116 -252 -126 -285 -9 -33 -27 -81 -40 -107
|
||||
-13 -26 -24 -51 -24 -57 0 -5 33 -17 73 -26 202 -49 256 -128 244 -355 -4 -63
|
||||
-16 -153 -27 -200 -12 -47 -50 -219 -86 -383 -36 -164 -76 -339 -89 -390 -13
|
||||
-51 -29 -129 -35 -175 -6 -46 -33 -167 -60 -270 -68 -257 -154 -635 -250
|
||||
-1097 -44 -214 -111 -539 -150 -720 l-70 -330 0 -2920 c0 -1937 -4 -2941 -10
|
||||
-2983 -25 -150 -96 -256 -190 -282 -77 -22 -231 -16 -375 13 -71 14 -209 38
|
||||
-305 52 -96 15 -204 33 -240 40 -36 7 -103 16 -150 20 -151 13 -302 76 -555
|
||||
232 -72 44 -189 106 -260 137 -138 62 -220 112 -325 199 -127 107 -958 723
|
||||
-1115 827 -233 155 -312 236 -369 374 -21 51 -21 53 -27 1856 l-5 1805 -24
|
||||
100 c-23 100 -23 103 -27 944 -2 474 -8 840 -13 835 -5 -5 -27 -74 -50 -154
|
||||
-23 -80 -71 -237 -107 -350 -35 -113 -89 -299 -119 -413 -78 -302 -106 -357
|
||||
-320 -623 -76 -96 -162 -216 -208 -295 -100 -169 -169 -269 -360 -522 -232
|
||||
-307 -314 -424 -647 -918 -548 -815 -408 -651 -1424 -1670 -636 -637 -891
|
||||
-887 -920 -900 -70 -31 -166 -41 -333 -36 -180 5 -218 14 -273 65 -98 88 -132
|
||||
256 -94 467 18 98 21 625 4 773 -13 117 -47 284 -99 487 -21 83 -41 184 -45
|
||||
225 -3 41 -28 190 -55 330 -27 140 -52 298 -55 350 -4 52 -17 151 -30 220 -37
|
||||
199 -49 338 -49 595 0 332 27 590 99 950 18 94 37 211 40 260 6 82 65 421 100
|
||||
570 27 118 54 353 60 520 4 94 13 208 22 255 9 51 18 199 23 370 5 157 13 305
|
||||
19 330 19 85 33 366 28 585 -3 176 -9 243 -27 335 -22 110 -23 139 -25 645 -2
|
||||
486 -12 698 -32 745 -4 8 -10 164 -13 347 l-5 332 -82 163 c-45 90 -98 210
|
||||
-118 268 -20 58 -70 169 -111 245 -119 222 -197 386 -277 585 -100 246 -151
|
||||
354 -316 664 -95 177 -153 300 -181 381 -23 66 -64 163 -90 216 -72 142 -93
|
||||
220 -88 327 4 108 22 146 98 212 54 47 62 50 151 66 75 13 104 14 151 4 85
|
||||
-16 221 -63 402 -139 88 -37 198 -80 242 -95 69 -23 96 -39 178 -107 53 -43
|
||||
160 -125 239 -181 187 -135 327 -248 462 -374 61 -56 151 -133 200 -170 50
|
||||
-36 168 -144 264 -238 144 -142 200 -206 331 -381 87 -115 193 -244 235 -285
|
||||
137 -133 340 -416 575 -805 73 -121 205 -330 293 -465 88 -135 219 -337 292
|
||||
-450 72 -113 159 -245 193 -293 33 -49 66 -105 73 -125 6 -21 49 -117 95 -214
|
||||
47 -98 127 -273 179 -390 52 -116 130 -277 174 -357 43 -80 89 -175 102 -211
|
||||
31 -90 35 -93 91 -76 57 17 94 42 178 122 36 34 106 88 155 119 116 74 152
|
||||
108 237 230 52 73 144 174 339 370 186 187 273 282 285 310 15 37 17 113 15
|
||||
885 -2 828 4 1068 31 1179 8 32 13 386 18 1146 5 929 8 1106 20 1140 21 57
|
||||
139 179 188 193 96 29 554 -3 817 -58 50 -10 129 -21 177 -24 68 -5 115 -16
|
||||
215 -52 70 -25 184 -66 253 -91 69 -24 182 -57 252 -73 155 -35 195 -52 301
|
||||
-128 45 -33 165 -101 267 -152 230 -115 336 -183 422 -271 36 -38 71 -69 77
|
||||
-69 10 0 14 18 51 220 46 250 79 311 264 496 128 128 180 165 286 202 80 28
|
||||
147 25 243 -13z m15839 -1478 c139 -68 187 -192 234 -598 14 -126 40 -289 59
|
||||
-374 19 -82 57 -269 85 -415 89 -463 141 -711 181 -866 22 -87 48 -222 59
|
||||
-315 12 -96 37 -226 60 -314 55 -210 96 -396 195 -882 80 -396 111 -527 249
|
||||
-1058 29 -115 97 -386 150 -602 53 -215 118 -466 146 -557 27 -91 61 -229 75
|
||||
-308 15 -81 52 -223 85 -328 89 -282 214 -710 379 -1300 137 -488 151 -546
|
||||
161 -660 6 -69 21 -181 35 -250 13 -69 40 -221 60 -337 19 -117 42 -241 49
|
||||
-275 8 -35 17 -110 21 -168 4 -58 26 -213 50 -345 24 -132 49 -283 55 -335 14
|
||||
-124 78 -326 145 -460 29 -58 60 -130 69 -160 21 -69 20 -181 0 -251 -47 -157
|
||||
-191 -370 -402 -591 -53 -57 -134 -149 -179 -204 -93 -115 -144 -163 -212
|
||||
-196 -39 -19 -62 -23 -151 -23 -91 0 -111 3 -148 23 -63 34 -124 93 -196 192
|
||||
-35 47 -87 106 -115 129 -35 29 -70 74 -106 135 -61 105 -73 117 -175 181 -41
|
||||
26 -100 71 -130 101 -95 92 -210 131 -530 179 -355 53 -466 78 -561 126 -81
|
||||
40 -115 72 -149 142 -43 88 -65 185 -95 418 -14 112 -39 263 -55 334 -40 184
|
||||
-62 312 -120 705 -28 190 -66 422 -85 515 -18 94 -36 213 -40 265 -4 52 -25
|
||||
194 -47 315 -22 121 -46 272 -53 335 -8 63 -30 192 -49 285 -20 94 -63 332
|
||||
-96 530 -77 453 -104 607 -140 770 -15 72 -31 168 -35 215 -4 47 -13 112 -20
|
||||
145 -7 33 -30 155 -50 270 -19 116 -51 289 -70 385 -51 256 -67 405 -75 690
|
||||
l-7 255 -76 295 c-90 350 -139 585 -167 810 -26 205 -43 309 -80 475 -15 72
|
||||
-31 175 -35 230 -3 55 -17 156 -30 225 -13 69 -40 222 -60 340 -20 118 -40
|
||||
232 -46 253 -6 21 -16 91 -24 155 -25 217 -83 586 -119 757 -85 412 -94 641
|
||||
-32 736 50 74 172 123 351 139 55 5 152 16 215 24 63 8 216 22 340 31 124 9
|
||||
276 25 338 36 85 14 164 19 305 19 162 1 200 4 242 20 41 15 75 18 180 17 121
|
||||
-2 134 -4 187 -30z m-28029 -81 c32 -13 83 -43 113 -67 70 -54 300 -299 401
|
||||
-428 42 -53 117 -139 168 -191 50 -52 115 -129 142 -171 28 -41 96 -122 150
|
||||
-180 54 -57 141 -151 193 -209 253 -280 387 -414 500 -498 140 -105 306 -269
|
||||
338 -334 53 -109 52 -63 52 -1714 l0 -1531 -29 -144 c-22 -109 -30 -187 -36
|
||||
-319 -5 -131 -14 -212 -35 -320 -16 -80 -52 -293 -80 -475 -28 -181 -64 -393
|
||||
-80 -470 -16 -77 -34 -167 -40 -200 -7 -33 -16 -184 -20 -335 -9 -311 -36
|
||||
-514 -105 -804 -31 -130 -45 -168 -74 -211 -20 -29 -447 -460 -949 -956 -794
|
||||
-787 -995 -990 -1315 -1329 -110 -117 -210 -143 -383 -100 -300 74 -544 219
|
||||
-958 569 -83 70 -194 161 -246 203 -105 84 -159 138 -279 278 -112 130 -161
|
||||
169 -399 311 -323 193 -422 276 -459 382 -16 48 -18 97 -18 582 0 513 1 534
|
||||
24 670 23 135 24 165 30 790 3 358 9 655 13 660 3 6 18 118 33 250 14 132 32
|
||||
278 40 325 8 47 17 141 20 210 6 108 18 174 92 485 46 198 102 432 125 520 22
|
||||
88 46 210 54 270 7 61 22 171 33 245 11 74 30 248 41 385 44 544 74 678 210
|
||||
945 148 289 295 473 789 991 123 129 270 288 325 354 56 66 180 201 277 300
|
||||
155 159 337 371 482 561 83 111 267 397 306 479 30 63 55 96 113 152 44 42 87
|
||||
74 104 78 16 4 34 8 39 10 6 2 62 4 125 4 99 0 123 -3 173 -23z m36020 -3342
|
||||
c50 -17 108 -72 150 -145 44 -76 143 -341 197 -526 28 -98 166 -522 305 -943
|
||||
140 -421 349 -1060 465 -1420 116 -360 251 -776 300 -925 49 -148 96 -309 105
|
||||
-357 9 -50 86 -297 181 -575 90 -268 182 -559 204 -648 22 -88 65 -230 96
|
||||
-315 111 -305 226 -657 254 -780 36 -156 35 -153 108 -340 109 -284 136 -384
|
||||
151 -556 13 -157 4 -209 -44 -268 -21 -26 -61 -60 -89 -74 -46 -24 -61 -27
|
||||
-151 -26 -231 1 -524 105 -650 231 -75 75 -109 151 -135 296 -12 66 -30 147
|
||||
-40 180 -71 232 -124 432 -146 552 -13 77 -47 212 -74 300 -88 287 -120 408
|
||||
-146 547 -13 75 -54 239 -90 365 -35 125 -144 543 -240 928 -97 385 -205 801
|
||||
-240 925 -36 124 -112 430 -170 680 -58 250 -116 491 -130 534 -14 44 -59 206
|
||||
-100 360 -41 155 -93 344 -114 421 -22 77 -49 196 -60 265 -11 73 -46 215 -84
|
||||
340 -106 357 -136 517 -136 735 l0 121 63 67 62 67 76 0 c42 0 96 -7 122 -16z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 32 KiB |
11
templates/base/footer.html.twig
Normal file
11
templates/base/footer.html.twig
Normal file
@@ -0,0 +1,11 @@
|
||||
<footer class="p-2 px-6">
|
||||
<hr class="border-t-2 border-light-secondary dark:border-dark-secondary-secondary">
|
||||
<div class="flex flex-col items-center mb-8 lg:mb-0 p-3">
|
||||
<a href="{{ path('home_index') }}" class="text-3xl font-bold leading-none">
|
||||
{% include "base/banner-svg.html.twig" with {'classes': 'h-12 fill-gray-700 dark:fill-light-font'} %}
|
||||
</a>
|
||||
<p class="mt-2 text-sm text-center text-gray-700 dark:text-light-font">
|
||||
© {{ 'now'|date('Y') }} ENI Sortir. Tous droits réservés.
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
174
templates/base/icon-svg.html.twig
Normal file
174
templates/base/icon-svg.html.twig
Normal file
@@ -0,0 +1,174 @@
|
||||
<svg class="{{ classes }}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3000.000000 3000.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
|
||||
<g transform="translate(0.000000,3000.000000) scale(0.100000,-0.100000)" stroke="none">
|
||||
<path d="M21465 29200 c-331 -7 -503 -37 -1085 -187 -96 -25 -308 -78 -470
|
||||
-119 -162 -40 -363 -91 -445 -113 -168 -45 -930 -297 -1130 -374 -71 -28 -227
|
||||
-83 -345 -122 -118 -40 -269 -95 -335 -122 -66 -27 -147 -60 -180 -73 -33 -12
|
||||
-148 -68 -255 -123 -107 -56 -238 -121 -290 -146 -280 -135 -635 -314 -710
|
||||
-359 -47 -27 -161 -101 -255 -164 -93 -62 -201 -131 -240 -152 -38 -22 -142
|
||||
-87 -230 -146 -88 -58 -198 -127 -245 -152 -123 -67 -381 -255 -509 -371 -36
|
||||
-33 -93 -78 -126 -100 -33 -22 -82 -59 -110 -82 -27 -23 -79 -61 -115 -85 -36
|
||||
-24 -103 -80 -150 -125 -47 -45 -121 -108 -165 -140 -44 -32 -125 -101 -180
|
||||
-154 -55 -54 -129 -117 -165 -140 -93 -62 -1212 -1179 -1287 -1285 -31 -43
|
||||
-82 -106 -113 -140 -65 -71 -185 -231 -323 -431 -53 -77 -144 -201 -202 -275
|
||||
-57 -74 -148 -200 -202 -280 -53 -80 -121 -175 -151 -212 -29 -37 -128 -179
|
||||
-219 -315 -153 -230 -180 -278 -367 -653 -112 -223 -217 -439 -234 -480 -118
|
||||
-281 -311 -846 -338 -989 -9 -47 -31 -151 -51 -231 -19 -80 -41 -193 -48 -253
|
||||
-8 -59 -23 -135 -32 -170 -16 -56 -18 -116 -18 -617 0 -497 2 -561 17 -616 10
|
||||
-34 23 -97 28 -140 30 -220 95 -517 150 -689 22 -66 46 -151 55 -190 9 -38 31
|
||||
-106 50 -150 18 -44 61 -149 95 -233 83 -211 109 -261 318 -607 64 -104 145
|
||||
-242 182 -305 114 -196 182 -286 328 -428 75 -74 157 -148 182 -165 25 -17 72
|
||||
-52 105 -77 76 -60 328 -212 465 -280 58 -29 148 -80 200 -115 52 -34 136 -83
|
||||
185 -110 50 -26 128 -71 175 -100 47 -28 130 -76 185 -105 55 -29 134 -74 175
|
||||
-100 41 -26 134 -79 205 -117 72 -38 166 -92 210 -120 107 -67 297 -178 420
|
||||
-245 97 -53 373 -218 485 -290 30 -19 89 -52 130 -73 76 -38 257 -142 385
|
||||
-221 39 -24 103 -63 144 -86 40 -24 113 -69 162 -100 48 -31 123 -76 166 -99
|
||||
88 -48 237 -148 333 -225 36 -28 195 -138 353 -244 159 -106 314 -216 345
|
||||
-245 32 -28 100 -83 152 -121 52 -39 102 -79 110 -89 8 -10 65 -55 125 -100
|
||||
82 -61 218 -189 536 -506 256 -254 444 -450 471 -489 25 -36 86 -141 135 -235
|
||||
50 -93 110 -201 135 -240 83 -128 119 -213 159 -374 50 -195 83 -459 76 -591
|
||||
-22 -387 -34 -459 -113 -703 -95 -291 -192 -508 -299 -672 -29 -44 -75 -126
|
||||
-103 -182 -28 -55 -75 -139 -105 -185 -29 -45 -73 -119 -98 -163 -33 -60 -78
|
||||
-114 -185 -225 -77 -80 -167 -181 -199 -225 -32 -44 -115 -138 -183 -210 -69
|
||||
-71 -156 -172 -194 -223 -103 -137 -676 -709 -803 -802 -55 -40 -134 -105
|
||||
-175 -145 -41 -39 -104 -91 -140 -115 -36 -24 -119 -96 -185 -160 -131 -127
|
||||
-225 -194 -505 -359 -96 -57 -221 -132 -276 -167 -56 -34 -144 -84 -195 -109
|
||||
-52 -26 -130 -71 -174 -99 -44 -29 -107 -67 -140 -86 -33 -18 -93 -56 -134
|
||||
-83 -90 -60 -164 -95 -295 -136 -55 -18 -141 -50 -193 -72 -51 -22 -182 -70
|
||||
-290 -108 -109 -37 -254 -91 -323 -118 -69 -28 -179 -67 -245 -88 -66 -20
|
||||
-212 -67 -325 -105 -139 -47 -234 -72 -295 -80 -111 -14 -315 -52 -455 -85
|
||||
-58 -13 -152 -27 -210 -30 -58 -4 -157 -16 -220 -28 -111 -21 -139 -22 -795
|
||||
-22 -658 0 -684 1 -790 22 -60 12 -148 24 -195 28 -47 4 -123 15 -170 26 -142
|
||||
33 -329 69 -440 85 -138 19 -313 66 -655 174 -577 183 -729 239 -910 335 -66
|
||||
35 -179 90 -252 123 -153 70 -312 157 -398 217 -33 24 -173 155 -311 291 -307
|
||||
305 -299 291 -299 489 0 166 9 202 95 385 32 69 73 166 91 215 39 111 50 133
|
||||
159 315 47 80 108 186 134 235 26 50 87 146 136 215 50 69 127 179 171 245
|
||||
112 164 194 267 279 350 39 39 104 115 142 170 84 119 311 346 432 432 45 31
|
||||
109 83 143 115 35 31 90 76 123 98 33 23 88 66 123 97 34 30 100 82 147 115
|
||||
47 33 123 97 170 143 87 84 229 185 380 270 47 26 155 93 240 148 103 68 261
|
||||
155 475 262 273 138 349 171 520 229 110 38 252 89 315 113 63 25 167 60 230
|
||||
78 357 103 728 239 945 348 283 141 506 334 614 530 86 157 102 205 113 342
|
||||
14 160 14 277 1 475 -12 182 -29 263 -102 505 -27 88 -61 205 -75 260 -19 71
|
||||
-61 171 -143 340 -163 337 -430 861 -467 917 -41 62 -150 207 -207 277 -25 31
|
||||
-64 85 -88 119 -24 35 -70 93 -103 130 -33 36 -74 86 -91 111 -71 105 -237
|
||||
319 -278 359 -24 24 -73 64 -109 90 -36 25 -96 72 -135 103 -211 170 -285 201
|
||||
-635 265 l-195 36 -175 -33 c-187 -34 -381 -94 -501 -154 -38 -20 -164 -99
|
||||
-280 -176 -116 -77 -237 -153 -268 -168 -31 -16 -81 -48 -111 -71 -30 -23 -89
|
||||
-67 -130 -98 -41 -30 -121 -100 -177 -153 -56 -54 -140 -124 -185 -156 -46
|
||||
-32 -135 -107 -198 -168 -63 -61 -146 -133 -185 -160 -38 -27 -108 -85 -155
|
||||
-130 -47 -44 -155 -129 -240 -189 -85 -59 -191 -135 -236 -169 -45 -34 -182
|
||||
-136 -305 -227 -123 -91 -265 -204 -317 -252 -51 -48 -130 -113 -175 -145
|
||||
-109 -76 -1312 -1281 -1391 -1393 -29 -41 -77 -102 -107 -134 -30 -32 -81 -96
|
||||
-114 -141 -120 -164 -232 -310 -255 -330 -12 -11 -53 -64 -91 -117 -38 -53
|
||||
-86 -117 -107 -141 -37 -44 -140 -181 -196 -261 -16 -22 -55 -75 -86 -116 -78
|
||||
-102 -280 -401 -321 -475 -18 -33 -77 -126 -130 -206 -53 -81 -131 -216 -174
|
||||
-300 -43 -85 -104 -194 -135 -244 -32 -49 -76 -128 -100 -175 -48 -95 -339
|
||||
-956 -397 -1175 l-38 -140 -3 -965 c-3 -984 3 -1246 34 -1395 8 -38 19 -104
|
||||
25 -145 11 -82 49 -270 109 -540 22 -96 46 -210 55 -253 9 -42 31 -114 50
|
||||
-158 19 -44 45 -113 56 -152 29 -96 79 -194 132 -259 24 -29 75 -96 115 -148
|
||||
40 -52 96 -122 124 -156 29 -33 74 -90 100 -125 210 -282 217 -291 311 -357
|
||||
45 -31 132 -104 192 -163 61 -58 146 -132 190 -164 44 -32 107 -83 141 -114
|
||||
33 -31 100 -78 150 -105 49 -28 118 -69 154 -92 36 -23 151 -92 255 -154 105
|
||||
-62 246 -148 314 -193 74 -48 181 -106 270 -145 276 -122 516 -224 636 -272
|
||||
66 -26 149 -60 185 -75 103 -44 732 -253 875 -290 72 -19 171 -48 220 -65 129
|
||||
-44 215 -63 845 -189 427 -86 562 -109 680 -116 58 -3 155 -17 215 -29 64 -14
|
||||
166 -26 245 -30 74 -3 164 -13 200 -21 41 -10 157 -19 310 -25 176 -6 274 -15
|
||||
348 -29 98 -20 136 -21 907 -21 780 0 807 1 907 21 90 19 154 22 503 29 241 5
|
||||
417 12 443 19 24 6 100 18 170 26 70 8 168 23 217 34 50 11 126 22 170 26 44
|
||||
3 127 15 185 25 58 10 141 22 185 25 44 3 127 15 185 25 58 10 139 21 180 25
|
||||
41 3 125 15 185 25 61 10 151 26 200 34 85 14 483 110 790 190 77 20 230 58
|
||||
340 86 452 111 737 198 933 281 62 27 179 69 260 95 81 25 217 74 302 109 85
|
||||
35 191 74 235 88 44 14 103 34 130 45 85 34 1746 865 1820 912 105 65 371 225
|
||||
540 324 83 49 186 112 230 139 44 28 112 68 150 90 39 22 120 70 180 107 118
|
||||
72 222 134 350 211 229 136 281 174 420 310 77 75 176 162 220 194 44 32 188
|
||||
164 320 295 132 130 272 259 311 286 46 31 157 137 309 294 l237 245 242 360
|
||||
242 360 129 285 c95 211 138 320 166 420 l38 135 26 509 c17 312 23 512 18
|
||||
517 -18 18 -300 -188 -437 -318 -45 -44 -111 -99 -146 -123 -36 -24 -92 -69
|
||||
-126 -100 -34 -31 -99 -83 -145 -115 -48 -33 -147 -122 -229 -205 -86 -87
|
||||
-179 -170 -230 -205 -63 -43 -213 -186 -590 -560 -278 -276 -518 -511 -535
|
||||
-522 -51 -35 -131 -53 -236 -53 -141 0 -189 13 -248 66 -93 83 -138 182 -167
|
||||
362 -8 53 -24 140 -35 192 -10 52 -26 144 -34 205 -28 205 -97 424 -595 1907
|
||||
-152 453 -205 644 -234 843 -9 60 -23 134 -31 165 -8 30 -21 116 -29 190 -9
|
||||
74 -23 167 -31 205 -11 49 -19 160 -25 365 -6 219 -13 310 -25 355 -10 37 -19
|
||||
132 -25 245 -5 103 -17 234 -29 295 -11 61 -23 159 -26 218 -4 60 -15 141 -25
|
||||
180 -37 141 -162 504 -206 596 -40 86 -55 105 -157 206 -61 61 -150 138 -197
|
||||
170 -47 33 -148 120 -225 195 -77 75 -176 163 -220 195 -44 32 -136 113 -205
|
||||
180 -69 67 -161 148 -205 180 -44 32 -136 113 -205 180 -69 67 -161 149 -205
|
||||
181 -44 32 -141 117 -215 189 -74 72 -173 157 -219 189 -46 32 -145 118 -220
|
||||
190 -135 131 -222 197 -356 271 -38 21 -209 132 -380 245 -170 113 -341 224
|
||||
-380 245 -38 21 -171 105 -295 185 -124 81 -252 162 -285 180 -33 19 -159 100
|
||||
-280 181 -121 80 -258 168 -305 194 -47 27 -170 105 -275 175 -104 70 -228
|
||||
149 -275 175 -47 27 -177 110 -290 184 -113 74 -253 163 -313 197 -224 130
|
||||
-381 255 -471 375 -154 205 -300 618 -497 1408 -155 619 -219 820 -351 1096
|
||||
-50 105 -101 216 -114 247 -58 136 -57 286 0 463 19 61 58 202 86 315 49 199
|
||||
53 211 155 420 57 118 122 262 143 320 48 130 115 264 197 395 34 55 77 127
|
||||
96 160 18 33 54 92 79 130 26 39 64 102 85 140 21 39 55 95 75 125 20 30 52
|
||||
82 70 115 227 405 351 579 448 627 42 21 60 23 177 22 155 0 184 -9 325 -104
|
||||
119 -80 223 -179 310 -295 36 -49 114 -140 172 -202 58 -61 121 -133 139 -160
|
||||
18 -26 62 -86 99 -133 37 -47 124 -170 193 -275 151 -227 172 -254 186 -240 6
|
||||
6 15 51 21 100 5 50 17 115 26 145 13 42 18 128 24 370 6 247 12 339 28 425
|
||||
11 61 23 166 26 235 7 140 26 236 58 289 12 20 177 194 368 386 200 201 365
|
||||
377 389 413 23 34 81 104 129 155 48 51 113 130 145 175 31 44 83 109 115 144
|
||||
32 35 80 94 107 131 26 38 69 92 95 120 25 29 78 95 117 147 39 52 92 115 118
|
||||
140 26 25 78 90 117 145 53 76 134 163 337 364 153 152 306 293 361 334 52 39
|
||||
134 108 183 154 146 138 215 173 342 173 89 0 123 -11 170 -52 70 -62 80 -86
|
||||
80 -208 0 -120 -21 -200 -85 -335 -63 -130 -308 -477 -435 -614 -28 -32 -71
|
||||
-86 -95 -121 -24 -35 -78 -100 -120 -145 -42 -44 -103 -115 -135 -159 -32 -43
|
||||
-89 -113 -128 -155 -102 -111 -131 -161 -312 -526 -90 -181 -192 -373 -225
|
||||
-425 -34 -52 -187 -345 -340 -651 -153 -306 -309 -605 -345 -664 -37 -59 -112
|
||||
-199 -167 -309 l-100 -202 31 -79 c58 -149 145 -284 397 -617 72 -95 148 -204
|
||||
170 -243 21 -38 66 -113 99 -167 33 -53 79 -129 103 -170 164 -283 420 -676
|
||||
532 -818 37 -47 104 -141 150 -210 54 -81 121 -164 190 -235 58 -60 126 -139
|
||||
150 -175 60 -90 249 -280 345 -347 43 -31 106 -82 140 -112 33 -31 96 -83 140
|
||||
-115 44 -33 103 -80 131 -107 59 -55 129 -101 231 -153 40 -20 119 -65 177
|
||||
-100 57 -36 218 -122 358 -192 139 -69 285 -147 323 -172 39 -25 171 -98 295
|
||||
-162 124 -64 257 -138 297 -163 40 -26 143 -84 230 -129 196 -101 228 -122
|
||||
328 -218 44 -42 116 -103 160 -135 44 -32 110 -84 147 -116 36 -31 95 -76 130
|
||||
-100 85 -57 201 -176 271 -276 32 -47 143 -170 260 -290 112 -114 230 -244
|
||||
262 -288 32 -44 93 -116 135 -160 42 -44 96 -109 120 -144 23 -35 71 -95 107
|
||||
-133 35 -39 85 -100 110 -137 26 -36 83 -104 128 -151 44 -47 105 -121 136
|
||||
-165 38 -54 179 -203 436 -461 208 -209 400 -410 426 -446 63 -88 82 -133 175
|
||||
-419 86 -264 298 -884 307 -900 8 -12 28 -1 130 72 126 90 223 197 273 302 54
|
||||
114 153 533 222 947 49 291 49 300 65 680 l16 385 -26 274 c-23 250 -29 286
|
||||
-65 410 -62 210 -164 377 -453 745 -34 44 -77 103 -96 130 -19 28 -82 101
|
||||
-141 161 -58 61 -130 146 -160 190 -74 112 -320 359 -445 448 -55 39 -140 110
|
||||
-190 157 -49 47 -126 112 -170 145 -44 32 -125 102 -180 155 -55 53 -128 115
|
||||
-162 138 -34 23 -88 66 -120 95 -32 30 -96 82 -143 115 -90 65 -147 108 -297
|
||||
223 -50 39 -144 106 -207 149 -64 44 -141 99 -173 124 -160 124 -282 211 -342
|
||||
244 -36 19 -106 63 -156 97 -49 34 -160 104 -245 155 -85 52 -240 150 -345
|
||||
220 -104 70 -224 146 -265 170 -41 24 -166 103 -276 175 -111 73 -251 161
|
||||
-310 195 -60 34 -163 99 -229 145 -66 45 -151 99 -190 120 -38 21 -170 105
|
||||
-292 186 -122 82 -257 167 -300 190 -43 24 -163 100 -268 169 -104 70 -235
|
||||
153 -290 185 -55 32 -152 93 -215 135 -64 43 -163 104 -220 137 -237 134 -428
|
||||
299 -465 399 -26 70 -32 304 -11 399 8 39 29 133 45 210 17 77 38 163 47 190
|
||||
54 165 281 675 348 779 19 29 60 82 93 117 33 35 86 100 118 144 32 44 81 105
|
||||
110 135 28 30 71 84 95 120 56 84 316 344 400 400 36 24 130 107 210 185 109
|
||||
106 182 166 295 243 83 57 209 145 280 197 72 52 157 109 190 126 33 18 107
|
||||
62 165 99 58 37 152 91 210 120 57 29 136 74 175 100 91 61 403 217 520 260
|
||||
50 18 133 54 185 80 52 26 127 59 165 73 39 14 117 44 175 67 176 70 387 139
|
||||
478 155 48 9 132 26 187 38 142 30 429 30 595 0 63 -12 171 -24 240 -27 69 -3
|
||||
173 -14 230 -25 58 -11 146 -25 195 -31 171 -22 305 -82 378 -172 80 -99 79
|
||||
-231 -8 -678 -40 -206 -37 -200 -107 -315 -30 -49 -80 -142 -110 -205 -31 -63
|
||||
-76 -144 -99 -180 -27 -41 -169 -192 -389 -415 -203 -205 -365 -376 -390 -414
|
||||
-63 -95 -173 -205 -280 -282 -68 -48 -179 -152 -391 -366 -271 -273 -300 -306
|
||||
-346 -388 -27 -49 -75 -130 -106 -178 -68 -107 -90 -163 -123 -315 -44 -207
|
||||
-46 -224 -42 -377 l4 -150 67 -200 c85 -257 225 -609 281 -706 25 -41 65 -106
|
||||
91 -143 59 -84 105 -109 318 -171 85 -25 187 -58 227 -75 93 -38 344 -121 475
|
||||
-155 55 -15 192 -58 305 -95 113 -38 251 -80 307 -94 56 -14 229 -69 385 -121
|
||||
156 -52 360 -115 454 -139 94 -25 225 -65 290 -89 147 -55 259 -89 397 -122
|
||||
59 -14 171 -48 249 -76 193 -70 294 -99 339 -99 55 0 477 105 744 185 44 13
|
||||
126 35 182 49 157 38 220 75 344 203 58 59 124 135 147 168 22 33 61 85 87
|
||||
115 33 39 98 160 226 418 l181 363 284 857 c157 471 296 902 310 957 14 55 41
|
||||
147 59 205 19 58 41 134 50 170 9 36 41 143 71 239 32 105 59 216 69 282 8 60
|
||||
23 148 34 196 10 48 22 133 25 188 4 55 15 150 25 210 11 61 22 159 26 218 4
|
||||
60 15 151 25 203 17 91 17 97 -1 191 -10 53 -21 144 -25 202 -11 185 -57 391
|
||||
-154 698 -50 155 -112 334 -140 398 -27 63 -62 157 -78 208 -42 131 -129 362
|
||||
-164 431 -17 33 -58 105 -93 160 -34 56 -95 157 -135 226 -137 235 -321 538
|
||||
-373 615 -22 33 -118 139 -212 235 -94 96 -194 209 -222 250 -30 43 -117 140
|
||||
-205 227 -118 117 -183 172 -288 244 -74 50 -155 109 -180 129 -25 20 -144
|
||||
104 -265 185 -121 81 -249 171 -285 200 -160 129 -291 197 -549 281 -223 73
|
||||
-643 163 -880 189 -75 8 -161 22 -191 30 -30 9 -127 20 -215 25 -88 6 -207 19
|
||||
-265 29 -92 17 -163 20 -590 23 -267 2 -597 1 -735 -2z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
130
templates/base/navbar.html.twig
Normal file
130
templates/base/navbar.html.twig
Normal file
@@ -0,0 +1,130 @@
|
||||
<nav class="relative px-4 py-4 flex justify-between items-center border-b-2 border-light-secondary dark:border-dark-secondary-secondary">
|
||||
<a class="text-3xl font-bold leading-none" href="{{path('home_index')}}">
|
||||
{% include "base/banner-svg.html.twig" with {'classes': 'h-12 fill-gray-700 dark:fill-light-font'} %}
|
||||
</a>
|
||||
<div class="lg:hidden">
|
||||
<button class="navbar-burger flex items-center text-light-primary dark:text-dark-primary p-3">
|
||||
<svg class="block h-4 w-4 fill-current" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>Mobile menu</title>
|
||||
<path d="M0 3h20v2H0V3zm0 6h20v2H0V9zm0 6h20v2H0v-2z"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<ul class="hidden absolute top-1/2 left-1/2 transform -translate-y-1/2 -translate-x-1/2 lg:mx-auto lg:flex lg:items-center lg:w-auto lg:space-x-6">
|
||||
<li><a class="text-sm {% if app.request.get('_route') == 'home_index' %} font-bold text-light-primary dark:text-dark-primary {% else %} dark:text-light-font {% endif %}" href="{{path('home_index')}}">Accueil</a></li>
|
||||
<li class="text-light-primary dark:text-dark-primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" class="w-4 h-4 current-fill"
|
||||
viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M12 5v0m0 7v0m0 7v0m0-13a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z"></path>
|
||||
</svg>
|
||||
</li>
|
||||
<li><a class="text-sm text-gray-700 {% if app.request.get('_route') == 'outing_index' %} font-bold text-light-primary dark:text-dark-primary {% else %} dark:text-light-font {% endif %}" href="{{path('outing_index')}}">Sorties</a></li>
|
||||
<li class="text-light-primary dark:text-dark-primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" class="w-4 h-4 current-fill"
|
||||
viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M12 5v0m0 7v0m0 7v0m0-13a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z"></path>
|
||||
</svg>
|
||||
</li>
|
||||
<li><a class="text-sm text-gray-700 {% if app.request.get('_route') == 'outing_create' %} font-bold text-light-primary dark:text-dark-primary {% else %} dark:text-light-font {% endif %}" href="{{ path('outing_create')}}">Nouvelle sortie</a></li>
|
||||
<li class="text-light-primary dark:text-dark-primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" class="w-4 h-4 current-fill"
|
||||
viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M12 5v0m0 7v0m0 7v0m0-13a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z"></path>
|
||||
</svg>
|
||||
</li>
|
||||
<li><a class="text-sm text-gray-700 {% if app.request.get('_route') == 'group_index' %} font-bold text-light-primary dark:text-dark-primary {% else %} dark:text-light-font {% endif %}" href="{{ path('group_index') }}">Mes groupes</a></li>
|
||||
{% if is_granted('ROLE_ADMIN') %}
|
||||
<li class="text-light-primary dark:text-dark-primary">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" class="w-4 h-4 current-fill"
|
||||
viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M12 5v0m0 7v0m0 7v0m0-13a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z"></path>
|
||||
</svg>
|
||||
</li>
|
||||
<li><a class="text-sm text-gray-700 dark:text-light-font" href="{{ path('admin') }}">Administration</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
|
||||
{% if app.user %}
|
||||
|
||||
<div class="hidden lg:inline-block lg:ml-auto lg:mr-3 py-2 transition duration-200">
|
||||
<a href="{{ path('user_index')}}">
|
||||
<img class= "object-cover rounded-full border
|
||||
border-gray-100 shadow-sm
|
||||
h-full cursor-pointer dark:border-dark-primary" src="{{ app.user.getProfilePicture() ? asset('uploads/' ~ app.user.getProfilePicture()) | imagine_filter('profile_navbar') : asset('profilDefault.png') | imagine_filter('profile_navbar') }}" alt=""/>
|
||||
</a>
|
||||
</div>
|
||||
{% else %}
|
||||
<a class="hidden lg:inline-block lg:ml-auto lg:mr-3 py-2 px-6 bg-light-primary dark:bg-dark-primary hover:bg-light-primary/75 dark:hover:bg-dark-primary/75 text-sm text-white rounded-xl transition duration-200"
|
||||
href="{{ path('app_login') }}">Se connecter</a>
|
||||
{% endif %}
|
||||
|
||||
<button id="theme-toggle" type="button"
|
||||
class="hidden lg:inline-block text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5">
|
||||
<svg id="theme-toggle-dark-icon" class="hidden w-5 h-5" fill="currentColor" viewBox="0 0 20 20"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
|
||||
</svg>
|
||||
<svg id="theme-toggle-light-icon" class="hidden w-5 h-5" fill="currentColor" viewBox="0 0 20 20"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
|
||||
fill-rule="evenodd" clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</nav>
|
||||
<div class="navbar-menu relative z-50 hidden">
|
||||
<div class="navbar-backdrop fixed inset-0 bg-gray-800 opacity-25"></div>
|
||||
<nav class="fixed top-0 left-0 bottom-0 flex flex-col w-5/6 max-w-sm py-6 px-6 bg-light-font dark:bg-dark-font border-r overflow-y-auto">
|
||||
<div class="flex items-center mb-8">
|
||||
<a class="mr-auto text-3xl font-bold leading-none" href="{{ path('home_index') }}">
|
||||
{% include "base/banner-svg.html.twig" with {'classes': 'h-12 fill-gray-700 dark:fill-light-font'} %}
|
||||
</a>
|
||||
<button class="navbar-close">
|
||||
<svg class="h-6 w-6 text-gray-400 cursor-pointer hover:text-gray-500" xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M6 18L18 6M6 6l12 12"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<div>
|
||||
<ul>
|
||||
<li class="mb-1">
|
||||
<a class="block p-4 text-sm font-semibold text-gray-700 dark:text-light-font dark:hover:text-gray-700 hover:bg-light-secondary dark:hover:bg-dark-secondary rounded"
|
||||
href="{{ path('home_index') }}">Accueil</a>
|
||||
</li>
|
||||
<li class="mb-1">
|
||||
<a class="block p-4 text-sm font-semibold text-gray-700 dark:text-light-font dark:hover:text-gray-700 hover:bg-light-secondary dark:hover:bg-dark-secondary rounded"
|
||||
href="{{ path('outing_index') }}">Sorties</a>
|
||||
</li>
|
||||
<li class="mb-1">
|
||||
<a class="block p-4 text-sm font-semibold text-gray-700 dark:text-light-font dark:hover:text-gray-700 hover:bg-light-secondary dark:hover:bg-dark-secondary rounded"
|
||||
href="{{ path('outing_create') }}">Nouvelle sortie</a>
|
||||
</li>
|
||||
<li class="mb-1">
|
||||
<a class="block p-4 text-sm font-semibold text-gray-700 dark:text-light-font dark:hover:text-gray-700 hover:bg-light-secondary dark:hover:bg-dark-secondary rounded"
|
||||
href="{{ path('group_index') }}">Mes groupes</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="mt-auto mb-5">
|
||||
<div class="pt-6 mx-auto">
|
||||
{% if app.user %}
|
||||
<a href="{{ path('user_index')}}">
|
||||
<img class= "flex object-cover rounded-full border
|
||||
border-gray-100 shadow-sm
|
||||
h-full cursor-pointer dark:border-dark-primary" src="{{ app.user.getProfilePicture() ? asset('uploads/' ~ app.user.getProfilePicture()) | imagine_filter('profile_navbar') : asset('profilDefault.png') | imagine_filter('profile_navbar') }}" alt=""/>
|
||||
<p class="text-light-primary dark:text-light-font font-bold">{{ app.user.pseudo }}</p>
|
||||
</a>
|
||||
{% else %}
|
||||
<a class="block px-4 py-3 mb-2 leading-loose text-center bg-light-primary dark:bg-dark-primary hover:bg-light-primary/75 dark:hover:bg-dark-primary/75 text-sm text-white rounded-xl"
|
||||
href="{{ path('app_login') }}">Se connecter</a>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
19
templates/bundles/TwigBundle/Exception/error.html.twig
Normal file
19
templates/bundles/TwigBundle/Exception/error.html.twig
Normal file
@@ -0,0 +1,19 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block body %}
|
||||
<section class="flex items-center h-full p-16 dark:bg-gray-900 dark:text-gray-100">
|
||||
<div class="container flex flex-col items-center justify-center px-5 mx-auto my-8">
|
||||
<div class="max-w-md text-center">
|
||||
<h2 class="mb-8 font-extrabold text-9xl dark:text-gray-600">
|
||||
😭
|
||||
</h2>
|
||||
<p class="text-2xl font-semibold md:text-3xl"><span class="font-bold">Oups !</span> Tu sembles perdu 🥲
|
||||
</p>
|
||||
<p class="mt-4 mb-8 dark:text-gray-400">{{ exception.message }}</p>
|
||||
<a rel="noopener noreferrer" href="{{ path('home_index') }}"
|
||||
class="px-8 py-3 font-semibold rounded dark:bg-violet-400 dark:text-gray-900">Retour à la page
|
||||
d'accueil</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
||||
21
templates/bundles/TwigBundle/Exception/error403.html.twig
Normal file
21
templates/bundles/TwigBundle/Exception/error403.html.twig
Normal file
@@ -0,0 +1,21 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block body %}
|
||||
<section class="flex items-center h-full p-16 dark:bg-gray-900 dark:text-gray-100">
|
||||
<div class="container flex flex-col items-center justify-center px-5 mx-auto my-8">
|
||||
<div class="max-w-md text-center">
|
||||
<h2 class="mb-8 font-extrabold text-9xl dark:text-gray-600">
|
||||
403
|
||||
</h2>
|
||||
<p class="text-2xl font-semibold md:text-3xl"><span class="font-bold">Oups !</span> Tu sembles perdu 🥲
|
||||
</p>
|
||||
<p class="mt-4 mb-8 dark:text-gray-400">
|
||||
Vous n'avez pas les droits nécessaires pour accéder à cette page.
|
||||
</p>
|
||||
<a rel="noopener noreferrer" href="{{ path('home_index') }}"
|
||||
class="px-8 py-3 font-semibold rounded dark:bg-violet-400 dark:text-gray-900">Retour à la page
|
||||
d'accueil</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
||||
21
templates/bundles/TwigBundle/Exception/error404.html.twig
Normal file
21
templates/bundles/TwigBundle/Exception/error404.html.twig
Normal file
@@ -0,0 +1,21 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block body %}
|
||||
<section class="flex items-center h-full p-16 dark:bg-gray-900 dark:text-gray-100">
|
||||
<div class="container flex flex-col items-center justify-center px-5 mx-auto my-8">
|
||||
<div class="max-w-md text-center">
|
||||
<h2 class="mb-8 font-extrabold text-9xl dark:text-gray-600">
|
||||
404
|
||||
</h2>
|
||||
<p class="text-2xl font-semibold md:text-3xl"><span class="font-bold">Oups !</span> Tu sembles perdu 🥲
|
||||
</p>
|
||||
<p class="mt-4 mb-8 dark:text-gray-400">
|
||||
Cette page n'existe pas !
|
||||
</p>
|
||||
<a rel="noopener noreferrer" href="{{ path('home_index') }}"
|
||||
class="px-8 py-3 font-semibold rounded dark:bg-violet-400 dark:text-gray-900">Retour à la page
|
||||
d'accueil</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
||||
101
templates/frontend/outings-show.html.twig
Normal file
101
templates/frontend/outings-show.html.twig
Normal file
@@ -0,0 +1,101 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<h2 class="my-5 text-center align-items-center light:text-light-primary dark:text-light-font">
|
||||
{% if consultMode == 'create' %}
|
||||
Créer une sortie
|
||||
{% elseif consultMode == 'modif' %}
|
||||
Modifier la sortie
|
||||
{% else %}
|
||||
Sortie
|
||||
{% endif %}
|
||||
</h2>
|
||||
|
||||
<form class="container row mx-auto">
|
||||
<div class="col-lg-6 col-12">
|
||||
<div class="col-12 mb-3">
|
||||
<label for="name" class="form-label">Nom de la sortie :</label>
|
||||
<input type="text" class="form-control" id="name" placeholder="Sortie au bar...">
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<label for="outingDate" class="form-label">Date et heure de la sortie :</label>
|
||||
<input type="date" class="form-control" id="outingDate" style="width:fit-content">
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<label for="limit-date" class="form-label">Date limite d'inscription :</label>
|
||||
<input type="date" class="form-control" id="limit-date" style="width:fit-content">
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<label for="size" class="form-label">Nombre de places :</label>
|
||||
<input type="number" class="form-control" id="size" min="0" style="width:fit-content">
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<label for="duration" class="form-label">Durée (en minutes) :</label>
|
||||
<input type="number" class="form-control" id="duration" min="0" style="width:fit-content">
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<label for="description" class="form-label">Description et infos :</label>
|
||||
<textarea name="description" id="description" rows="8" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 col-12">
|
||||
<div class="col-12 mb-3">
|
||||
<label for="organizingCity" class="form-label">Ville organisatrice :</label>
|
||||
<p>Nantes</p>
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<label for="city" class="form-label">Ville : </label>
|
||||
<select id="city" class="form-select">
|
||||
<!-- TODO METTRE VILLES EN TWIG -->
|
||||
<option selected=""></option>
|
||||
<option>Nantes</option>
|
||||
<option>Rennes</option>
|
||||
<option>Perpignan</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<label for="place" class="form-label">Lieu : </label>
|
||||
<select id="place" class="form-select">
|
||||
<!-- TODO METTRE LIEUX EN TWIG -->
|
||||
<option selected=""></option>
|
||||
<option>Berlin 1989</option>
|
||||
<option>Le Warehouse</option>
|
||||
<option>Parc de Procé</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-12 mb-3">
|
||||
<label for="name" class="form-label">Rue :</label>
|
||||
<input type="text" class="form-control" id="name" placeholder="Rue">
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<label for="name" class="form-label">Code postal :</label>
|
||||
<input type="text" class="form-control" id="name" placeholder="Code postal">
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<label for="latitude" class="form-label">Latitude :</label>
|
||||
<input type="text" class="form-control" id="latitude" placeholder="Latitude">
|
||||
</div>
|
||||
<div class="col-12 mb-3">
|
||||
<label for="longitude" class="form-label">Longitude :</label>
|
||||
<input type="text" class="form-control" id="longitude" placeholder="Longitude">
|
||||
</div>
|
||||
|
||||
<div class="col-12 mb-3">
|
||||
<label for="maPhoto" class="form-label">Photo pour la sortie</label>
|
||||
<input class="form-control" type="file" id="maPhoto">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="button-container d-flex justify-content-center">
|
||||
<button type="submit" class="btn btn-lg btn-primary m-2">Enregistrer</button>
|
||||
<button type="submit" class="btn btn-lg btn-warning m-2">Publier la sortie</button>
|
||||
<button class="btn btn-lg btn-danger m-2">Annuler</button>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
152
templates/frontend/outings.html.twig
Normal file
152
templates/frontend/outings.html.twig
Normal file
@@ -0,0 +1,152 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}{{ parent() }} | Sorties{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="container mt-5">
|
||||
<div class="row d-flex justify-content-center">
|
||||
|
||||
<!-- Partie formulaire -->
|
||||
<div class="col-md-10">
|
||||
<form class="card p-3 bg-light py-4 shadow-sm">
|
||||
<h5>Filtrez les sorties :</h5>
|
||||
<div class="col-lg-11 col-12 mx-auto">
|
||||
<div class="my-3">
|
||||
<label for="main-search" class="form-label">Le nom de la sortie contient</label>
|
||||
<input type="text" class="form-control" id="main-search" placeholder="Sortie au bar...">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 col-lg-7">
|
||||
<div class="col-12">
|
||||
<label for="site" class="form-label">Site</label>
|
||||
<select id="site" class="form-select">
|
||||
<!-- TODO METTRE SITES EN TWIG -->
|
||||
<option selected=""></option>
|
||||
<option>ENI Nantes</option>
|
||||
<option>ENI Rennes</option>
|
||||
<option>ENI Perpignan</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="row mt-3">
|
||||
<div class="col-6">
|
||||
<label for="begin-date" class="form-label">Entre le</label>
|
||||
<!-- TODO METTRE LE MINIMUM DATE AUJOURD'HUI -->
|
||||
<input type="date" id="begin-date" class="form-control">
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<label for="end-date" class="form-label">Et le</label>
|
||||
<input type="date" id="end-date" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-5 my-lg-auto my-sm-3">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" id="check-1">
|
||||
<label class="form-check-label" for="check-1">Sortie dont je suis l'organisateur/trice</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" id="check-2">
|
||||
<label class="form-check-label" for="check-2">Sorties auxquelles je suis inscrit/e</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" id="check-3">
|
||||
<label class="form-check-label" for="check-3">Sorties auxquelles je ne suis pas inscrit/e</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" id="check-4">
|
||||
<label class="form-check-label" for="check-4">Sorties passées</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 mx-auto mt-4">
|
||||
<button type="submit" class="btn btn-lg btn-primary">Rechercher</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Partie résultat -->
|
||||
<div class="col-12 mt-5 d-flex justify-content-center flex-wrap">
|
||||
<!-- TODO foreach sorties -->
|
||||
<div class="card col-lg-3 col-5 m-1">
|
||||
<!-- TODO FAIRE UN IF SI INSCRIT -->
|
||||
<div class="card-header">
|
||||
<p class="text-success mx-auto my-0">Vous êtes inscrit</p>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">NOM DE LA SORTIE (BLABLABLA JE RAJOUTE DU TEXTE SI CEST LONG)</h5>
|
||||
<h6 class="card-subtitle mb-2 text-muted">Le 30/01/2024 à 18h30</h6>
|
||||
<p class="card-text">Description, s'il y en a une</p>
|
||||
<hr>
|
||||
<h6 class="card-subtitle mb-1 text-muted">Nombre d'inscrits : 7/8</h6>
|
||||
<h6 class="card-subtitle mb-2 text-danger">Clôture le 29/01/2024 à 18h30</h6>
|
||||
<p class="mb-2">Organisateur : <a class="card-link">totodu43</a></p> <!-- TODO REDIRIGER VERS L'UTILISATEUR -->
|
||||
|
||||
<div class="mx-auto">
|
||||
<a href="#" class="btn btn-primary">Plus d'infos</a>
|
||||
<a href="#" class="btn btn-danger">Se désister</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card col-lg-3 col-5 m-1">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">NOM DE LA SORTIE (BLABLABLA JE RAJOUTE DU TEXTE SI CEST LONG)</h5>
|
||||
<h6 class="card-subtitle mb-2 text-muted">Le 30/01/2024 à 18h30</h6>
|
||||
<p class="card-text">Description, s'il y en a une (longue description longue description longue description)</p>
|
||||
<hr>
|
||||
<h6 class="card-subtitle mb-1 text-muted">Nombre d'inscrits : 7/8</h6>
|
||||
<h6 class="card-subtitle mb-2 text-danger">Clôture le 29/01/2024 à 18h30</h6>
|
||||
<p class="mb-2">Organisateur : <a class="card-link">totodu43</a></p> <!-- TODO REDIRIGER VERS L'UTILISATEUR -->
|
||||
|
||||
<div class="mx-auto">
|
||||
<a href="#" class="btn btn-primary">Plus d'infos</a>
|
||||
<a href="#" class="btn btn-success">S'inscrire</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card col-lg-3 col-5 m-1">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">NOM DE LA SORTIE (BLABLABLA JE RAJOUTE DU TEXTE SI CEST LONG)</h5>
|
||||
<h6 class="card-subtitle mb-2 text-muted">Le 30/01/2024 à 18h30</h6>
|
||||
<p class="card-text">Description, s'il y en a une (longue description longue description longue description)</p>
|
||||
<hr>
|
||||
<h6 class="card-subtitle mb-1 text-muted">Nombre d'inscrits : 7/8</h6>
|
||||
<h6 class="card-subtitle mb-2 text-danger">Clôture le 29/01/2024 à 18h30</h6>
|
||||
<p class="mb-2">Organisateur : <a class="card-link">totodu43</a></p> <!-- TODO REDIRIGER VERS L'UTILISATEUR -->
|
||||
|
||||
<div class="mx-auto">
|
||||
<a href="#" class="btn btn-primary">Plus d'infos</a>
|
||||
<a href="#" class="btn btn-success">S'inscrire</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card col-lg-3 col-5 m-1">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">NOM DE LA SORTIE (BLABLABLA JE RAJOUTE DU TEXTE SI CEST LONG)</h5>
|
||||
<h6 class="card-subtitle mb-2 text-muted">Le 30/01/2024 à 18h30</h6>
|
||||
<p class="card-text">Description, s'il y en a une (longue description longue description longue description)</p>
|
||||
<hr>
|
||||
<h6 class="card-subtitle mb-1 text-muted">Nombre d'inscrits : 7/8</h6>
|
||||
<h6 class="card-subtitle mb-2 text-danger">Clôture le 29/01/2024 à 18h30</h6>
|
||||
<p class="mb-2">Organisateur : <a class="card-link">totodu43</a></p> <!-- TODO REDIRIGER VERS L'UTILISATEUR -->
|
||||
|
||||
<div class="mx-auto">
|
||||
<a href="#" class="btn btn-primary">Plus d'infos</a>
|
||||
<a href="#" class="btn btn-success">S'inscrire</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
56
templates/frontend/profile-readonly.html.twig
Normal file
56
templates/frontend/profile-readonly.html.twig
Normal file
@@ -0,0 +1,56 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}
|
||||
Mon Profil
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="container mt-5 d-flex flex-column justify-content-center align-items-center profile-page">
|
||||
<div class="col-12 col-lg-6 mx-auto mb-3 bg-light p-4 card shadow-sm">
|
||||
<div class="d-flex flex-column align-items-center">
|
||||
<h2 class="mb-4 text-center">ShrekDu44</h2>
|
||||
<img src="{{ asset('placeholder.jpg') }}" class="profile-picture rounded-circle mb-5" alt="">
|
||||
</div>
|
||||
<div class="form-group row mb-3">
|
||||
<label for="prenom" class="col-sm-4 col-form-label">Prénom</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" id="prenom">Shrek</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label for="nom" class="col-sm-4 col-form-label">Nom</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" id="nom">Placeholder</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label for="telephone" class="col-sm-4 col-form-label">Téléphone</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" id="telephone">0780078007</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label for="email" class="col-sm-4 col-form-label">Email</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" id="email">shrek@romainpourquoiencorecetteimage.fr</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label for="ville" class="col-sm-4 col-form-label">Ville de rattachement</label>
|
||||
<div class="col-sm-8">
|
||||
<p class="form-control-plaintext" id="ville">ENI Nantes</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<div class="col-sm-10 mx-auto text-center">
|
||||
<a href="#" class="btn btn-lg btn-danger mt-3 mx-2">Retour</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
87
templates/frontend/profile.html.twig
Normal file
87
templates/frontend/profile.html.twig
Normal file
@@ -0,0 +1,87 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}
|
||||
Mon Profil
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="container mt-5 d-flex flex-column justify-content-center align-items-center profile-page">
|
||||
<h2 class="mb-4 text-center align-items-center">Mon profil</h2>
|
||||
<img src="{{ asset('placeholder.jpg') }}" class="rounded-circle mb-5 profile-picture" alt="">
|
||||
<form class="col-12 col-lg-6 mx-auto mb-3 bg-light p-4 card shadow-sm">
|
||||
<div class="form-group row mb-3">
|
||||
<label for="pseudo" class="col-sm-4 col-form-label">Pseudo</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control" id="pseudo" placeholder="Votre pseudo">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label for="prenom" class="col-sm-4 col-form-label">Prénom</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control" id="prenom" placeholder="Votre prénom">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label for="nom" class="col-sm-4 col-form-label">Nom</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control" id="nom" placeholder="Votre nom">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label for="telephone" class="col-sm-4 col-form-label">Téléphone</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="tel" class="form-control" id="telephone" placeholder="Votre numéro de téléphone">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label for="email" class="col-sm-4 col-form-label">Email</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="email" class="form-control" id="email" placeholder="Votre adresse email">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label for="motDePasse" class="col-sm-4 col-form-label">Mot de passe</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="password" class="form-control" id="motDePasse" placeholder="Votre mot de passe">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label for="confirmation" class="col-sm-4 col-form-label">Confirmation</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="password" class="form-control" id="confirmation" placeholder="Confirmez votre mot de passe">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label for="ville" class="col-sm-4 col-form-label">Ville de rattachement</label>
|
||||
<div class="col-sm-8">
|
||||
<select class="form-control" id="ville">
|
||||
<option value="ville1">Ville 1</option>
|
||||
<option value="ville2">Ville 2</option>
|
||||
<option value="ville3">Ville 3</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<label for="maPhoto" class="col-sm-4 col-form-label">Ma photo</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="file" id="maPhoto">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-3">
|
||||
<div class="col-sm-10 mx-auto text-center">
|
||||
<button type="submit" class="btn btn-lg btn-primary mt-3 mx-2">Enregistrer</button>
|
||||
<button type="submit" class="btn btn-lg btn-danger mt-3 mx-2">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
56
templates/group/create.html.twig
Normal file
56
templates/group/create.html.twig
Normal file
@@ -0,0 +1,56 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}Nouveau groupe | {{ parent() }}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<section class="p-5">
|
||||
<h1 class="font-semibold text-center text-3xl"></h1>
|
||||
{{ form_start(form) }}
|
||||
<div class="grid gap-6 mb-6 md:grid-cols-2 py-8">
|
||||
<div class="relative">
|
||||
{{ form_row(form.groupName, {
|
||||
'attr': {
|
||||
'class': 'block rounded-t-lg px-2.5 pb-2.5 pt-5 w-full text-sm text-light-primary dark:text-dark-primary bg-light-secondary/50 dark:bg-dark-secondary border-0 border-b-2 border-light-primary/75 dark:border-dark-primary/75 appearance-none dark:border-dark-primary focus:outline-none focus:ring-0 focus:border-light-primary dark:focus:border-dark-primary peer',
|
||||
'id': 'groupeName',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.groupName, 'Nom du groupe', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-dark-primary duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
<div class="relative">
|
||||
{{ form_widget(form.Guests, {
|
||||
'attr': {
|
||||
'class': 'block rousnded-t-lg px-2.5 pb-2.5 pt-5 w-full text-sm text-light-primary dark:text-dark-primary bg-light-secondary/50 dark:bg-dark-secondary border-0 border-b-2 border-light-primary/75 dark:border-dark-primary/75 appearance-none dark:border-dark-primary focus:outline-none focus:ring-0 focus:border-light-primary dark:focus:border-dark-primary peer',
|
||||
'id': 'guests',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.Guests, 'Participants', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-dark-primary duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-6 grid w-full grid-cols-2 justify-end space-x-4 md:flex">
|
||||
<div class="flex w-full justify-center">
|
||||
<button type="submit"
|
||||
class="px-4 py-2 mx-4 text-white dark:text-light-font dark:hover:text-dark-primary uppercase bg-light-primary dark:bg-dark-primary border-2 border-transparent rounded-lg text-md hover:bg-light-secondary dark:hover:bg-dark-secondary">
|
||||
Valider
|
||||
</button>
|
||||
<button class="px-4 py-2 mx-4 text-light-primary dark:text-dark-primary dark:hover:text-dark-primary hover:text-light-font uppercase bg-transparent rounded-lg hover:bg-light-secondary dark:hover:bg-dark-secondary cursor-pointer"
|
||||
onclick="window.history.back()">
|
||||
Retour
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ form_end(form) }}
|
||||
|
||||
</section>
|
||||
{% endblock %}
|
||||
92
templates/group/index.html.twig
Normal file
92
templates/group/index.html.twig
Normal file
@@ -0,0 +1,92 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}Mes groupes | {{ parent() }}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<section class="p-5">
|
||||
<h1 class="text-3xl font-bold text-light-primary dark:text-light-font text-center p-3 mb-5">Mes groupes</h1>
|
||||
{% if groups %}
|
||||
<div id="accordion-collapse" data-accordion="collapse">
|
||||
{% for group in groups %}
|
||||
<h2 id="accordion-collapse-heading-{{ loop.index }}">
|
||||
<button type="button"
|
||||
class="flex items-center justify-between w-full p-5 font-medium rtl:text-right text-gray-500 border border-b-0 border-gray-200 rounded-t-xl focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-800 dark:border-gray-700 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 bg-light-card dark:bg-dark-card gap-3"
|
||||
data-accordion-target="#accordion-collapse-body-{{ loop.index }}" aria-expanded="false"
|
||||
aria-controls="accordion-collapse-body-{{ loop.index }}">
|
||||
<span>{{ group.groupName }} ({{ group.guests|length + 1 }} membres)</span>
|
||||
<svg data-accordion-icon class="w-3 h-3 rotate-180 shrink-0" aria-hidden="true"
|
||||
xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 6">
|
||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="M9 5 5 1 1 5"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</h2>
|
||||
<div id="accordion-collapse-body-{{ loop.index }}" class="hidden"
|
||||
aria-labelledby="accordion-collapse-heading-{{ loop.index }}">
|
||||
<div class="p-5 border border-b-0 border-gray-200 dark:border-gray-700 bg-light-card dark:bg-dark-card">
|
||||
<p class="font-semibold text-xl text-light-primary dark:text-light-font">Participants :</p>
|
||||
{% if group.guests %}
|
||||
<ul class="divide-y divide-gray-200 dark:divide-gray-700">
|
||||
<li class="py-2 sm:py-4">
|
||||
<div class="flex items-center space-x-4">
|
||||
<div class="flex-shrink-0">
|
||||
<img class="w-8 h-8 rounded-full"
|
||||
src="{{ group.createdBy.getProfilePicture() ? asset('uploads/' ~ group.createdBy.getProfilePicture()) | imagine_filter('profile_navbar') : asset('profilDefault.png') | imagine_filter('profile_navbar') }}"
|
||||
alt="Photo de {{ group.createdBy }}">
|
||||
</div>
|
||||
<div class="flex-1 grow">
|
||||
<p class="text-sm font-medium text-gray-900 truncate dark:text-white">
|
||||
@{{ group.createdBy.pseudo }}
|
||||
</p>
|
||||
<p class="text-sm text-gray-500 truncate dark:text-gray-400">
|
||||
{{ group.createdBy.site.name }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{% for guest in group.guests %}
|
||||
<li class="py-2 sm:py-4">
|
||||
<div class="flex items-center space-x-4">
|
||||
<div class="flex-shrink-0">
|
||||
<img class="w-8 h-8 rounded-full"
|
||||
src="{{ guest.getProfilePicture() ? asset('uploads/' ~ guest.getProfilePicture()) | imagine_filter('profile_navbar') : asset('profilDefault.png') | imagine_filter('profile_navbar') }}"
|
||||
alt="Photo de {{ guest.pseudo }}">
|
||||
</div>
|
||||
<div class="flex-1 grow">
|
||||
<p class="text-sm font-medium text-gray-900 truncate dark:text-white">
|
||||
@{{ guest.pseudo }}
|
||||
</p>
|
||||
<p class="text-sm text-gray-500 truncate dark:text-gray-400">
|
||||
{{ guest.site.name }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<p class="text-center text-light-primary dark:text-dark-primary">Aucun participant pour
|
||||
le
|
||||
moment</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{# <div class="flex justify-center mt-5">#}
|
||||
{# <a href="#"#}
|
||||
{# class="bg-light-secondary dark:bg-dark-secondary hover:bg-gray-200 text-light-primary dark:text-dark-primary font-bold py-2 px-6 rounded-xl transition duration-200">Créer#}
|
||||
{# un groupe</a>#}
|
||||
{# </div>#}
|
||||
{% else %}
|
||||
<p class="text-center text-light-primary dark:text-dark-primary">Vous n'avez pas encore rejoint de
|
||||
groupe</p>
|
||||
{# <a href="{{ path('group_create') }}" class="flex justify-center mt-5">#}
|
||||
{# <button class="bg-light-secondary dark:bg-dark-secondary hover:bg-gray-200 text-light-primary dark:text-dark-primary font-bold py-2 px-6 rounded-xl transition duration-200">#}
|
||||
{# Créer un groupe#}
|
||||
{# </button>#}
|
||||
{# </a>#}
|
||||
{% endif %}
|
||||
</section>
|
||||
{% endblock %}
|
||||
36
templates/home/index.html.twig
Normal file
36
templates/home/index.html.twig
Normal file
@@ -0,0 +1,36 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}{{ parent() }}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="relative z-20 flex items-center overflow-hidden">
|
||||
<div class="container relative flex px-6 py-16 mx-auto">
|
||||
<div class="relative z-20 flex flex-col sm:w-2/3 lg:w-2/5">
|
||||
<span class="w-20 h-2 mb-12 bg-light-primary dark:bg-dark-primary">
|
||||
</span>
|
||||
<h1 class="flex flex-col text-6xl font-black leading-none text-light-primary uppercase font-bebas-neue sm:text-8xl dark:text-dark-primary">
|
||||
Envie
|
||||
<span class="text-5xl sm:text-7xl">
|
||||
d'une sortie ?
|
||||
</span>
|
||||
</h1>
|
||||
<p class="text-sm text-light-primary sm:text-base dark:text-white">
|
||||
Rejoignez des milliers de personnes pour sortir et faire de nouvelles rencontres
|
||||
</p>
|
||||
<div class="flex mt-8">
|
||||
<a href="{{ path('outing_index') }}"
|
||||
class="px-4 py-2 mr-4 text-white dark:text-light-font uppercase bg-light-primary dark:bg-dark-primary border-2 border-transparent rounded-lg text-md hover:bg-light-primary/75 dark:hover:bg-dark-primary/75 transition duration-200">
|
||||
Trouver une sortie
|
||||
</a>
|
||||
<a href="{{ path('outing_create') }}"
|
||||
class="px-4 py-2 text-light-primary dark:text-dark-primary dark:hover:text-dark-primary hover:text-light-font uppercase bg-transparent rounded-lg hover:bg-light-secondary dark:hover:bg-dark-secondary text-md transition duration-200">
|
||||
Créer une sortie
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="relative hidden sm:block sm:w-1/3 lg:w-3/5">
|
||||
{% include "base/icon-svg.html.twig" with {'classes': 'max-w-xs m-auto md:max-w-sm fill-light-primary dark:fill-dark-primary'} %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
90
templates/outing/card.html.twig
Normal file
90
templates/outing/card.html.twig
Normal file
@@ -0,0 +1,90 @@
|
||||
<div class="transition-all duration-150 flex px-4 py-6 w-80 ">
|
||||
<div class="flex flex-col items-stretch min-h-full min-w-full pb-4 mb-6 transition-all duration-150 rounded-lg shadow-xl hover:shadow-2xl overflow-hidden bg-light-card dark:bg-dark-card">
|
||||
<div class="md:flex-shrink-0">
|
||||
<img src="{{ outing.getPoster() ? asset('uploads/' ~ outing.getPoster()) | imagine_filter('outings') : asset('placeholder.png') | imagine_filter('outings') }}" alt="" class="object-cover w-full rounded-lg rounded-b-none md:h-56"/>
|
||||
</div>
|
||||
<div class="flex items-center justify-between px-4 py-2 overflow-hidden">
|
||||
<div>
|
||||
{% if outing.status.label == 'Annulée' %}
|
||||
<span class="text-xs font-medium text-light-danger dark:text-dark-danger uppercase">
|
||||
Sortie annulée
|
||||
</span>
|
||||
{% elseif outing.organizer == app.user %}
|
||||
<span class="text-xs font-medium text-light-success dark:text-dark-success uppercase">
|
||||
Je suis l'organisateur
|
||||
</span>
|
||||
{% elseif outing.isUserRegistered(app.user) %}
|
||||
<span class="text-xs font-medium text-light-success dark:text-dark-success uppercase">
|
||||
Je suis inscrit
|
||||
</span>
|
||||
{% elseif outing.canRegister() %}
|
||||
<span class="text-xs font-medium text-light-info dark:text-dark-success uppercase">
|
||||
Inscriptions ouvertes
|
||||
</span>
|
||||
{% elseif outing.registrations.count == outing.registrationsMax %}
|
||||
<span class="text-xs font-medium text-light-danger dark:text-dark-danger uppercase">
|
||||
Sortie complète
|
||||
</span>
|
||||
{% elseif outing.status.label == 'Activité en cours'%}
|
||||
<span class="text-xs font-medium text-light-warning dark:text-dark-warning uppercase">
|
||||
Activité en cours
|
||||
</span>
|
||||
{% elseif outing.status.label == 'Passée' or outing.startDate|date("Y-m-d H:i:s") > "now"|date("Y-m-d H:i:s") %}
|
||||
<span class="text-xs font-medium text-light-warning dark:text-dark-warning uppercase">
|
||||
Sortie passée
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="text-xs font-medium text-light-danger dark:text-dark-danger uppercase">
|
||||
Inscriptions fermées
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
{% if outing.canRegister() %}
|
||||
<div class="flex flex-row items-center text-light-primary dark:text-dark-primary">
|
||||
<span class="text-xs font-medium uppercase">
|
||||
Inscription : {{ outing.registrations.count }}/{{ outing.registrationsMax }}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<span class="text-xs font-medium text-light-primary dark:text-light-font uppercase">
|
||||
{{ outing.startDate|date("d/m/Y") }} à {{ outing.startDate|date("H:i") }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="border-light-primary dark:border-dark-primary"/>
|
||||
<div class="flex flex-wrap items-center flex-1 px-4 py-1 text-center mx-auto overflow-hidden">
|
||||
<a href="{{ path('outing_preview', {'id': outing.id}) }}" class="hover:underline">
|
||||
<h2 class="text-2xl font-bold tracking-normal text-light-primary dark:text-dark-primary line-clamp-3 truncate">
|
||||
{{ outing.title }}
|
||||
</h2>
|
||||
</a>
|
||||
</div>
|
||||
<hr class="border-light-primary dark:border-dark-primary"/>
|
||||
<p class="line-clamp-3 w-full px-4 my-2 overflow-hidden text-sm text-justify text-light-primary dark:text-light-font">
|
||||
{{ outing.description }}
|
||||
</p>
|
||||
<hr class="border-light-primary dark:border-dark-primary"/>
|
||||
<section class="px-4 py-2 mt-2">
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center flex-1 overflow-hidden">
|
||||
<a href="{{ path('user_show', {'pseudo':outing.organizer.pseudo}) }}" class="w-10 h-10 min-w-fit">
|
||||
<img
|
||||
class="object-cover rounded-full min-w-full min-h-full w-10 h-10"
|
||||
src="{{ outing.organizer.getProfilePicture() ? asset('uploads/' ~ outing.organizer.getProfilePicture()) | imagine_filter('profile_navbar') : asset('profilDefault.png') | imagine_filter('profile_navbar') }}"
|
||||
alt="Avatar"
|
||||
/>
|
||||
</a>
|
||||
<div class="flex flex-col mx-2 overflow-hidden">
|
||||
<a href="{{ path('user_show', {'pseudo':outing.organizer.pseudo}) }}" class="font-semibold text-light-primary dark:text-light-font hover:underline truncate" title="{{ outing.organizer.pseudo }} ({{ outing.organizer.site.name }})">
|
||||
{{ outing.organizer.pseudo }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<a href="{{ path('outing_preview', {'id':outing.id}) }}" class="font-medium text-light-primary dark:text-dark-primary hover:underline">En savoir
|
||||
plus</a>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
273
templates/outing/create.html.twig
Normal file
273
templates/outing/create.html.twig
Normal file
@@ -0,0 +1,273 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% set isModif = outing is defined and outing.id is not null %}
|
||||
|
||||
{% block title %}{% if isModif %}Modifier la sortie "{{ outing.title }}"{% else %}Créer une sortie{% endif %} | {{ parent() }}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<section class="p-5">
|
||||
<h1 class="font-semibold text-3xl my-5 text-center align-items-center light:text-light-primary dark:text-light-font">Créer une sortie</h1>
|
||||
{{ form_start(form) }}
|
||||
<div class="py-8 p-5 dark:bg-dark-card bg-light-card rounded-lg lg:w-2/3 mx-auto shadow-md">
|
||||
<div class="relative mb-5">
|
||||
{{ form_widget(form.title, {
|
||||
'attr': {
|
||||
'class': 'block rounded-lg px-2.5 pb-2.5 pt-5 w-full text-sm dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300 peer',
|
||||
'id': 'title',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.title, 'Nom de la sortie', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-gray-300 duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
<div class="grid gap-6 mb-6 md:grid-cols-2">
|
||||
|
||||
<div class="relative">
|
||||
<input type="text" id="school"
|
||||
class="block rounded-lg px-2.5 pb-2.5 pt-5 w-full text-sm dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300 peer"
|
||||
placeholder="" readonly value="{{ app.user.site.name }}"/>
|
||||
<label for="school"
|
||||
class="absolute text-sm text-light-primary dark:text-gray-300 duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto">Campus d'accueil</label>
|
||||
</div>
|
||||
<div class="relative">
|
||||
{{ form_widget(form.startDate, {
|
||||
'attr': {
|
||||
'class': 'block rounded-lg px-2.5 pb-2.5 pt-5 w-full text-sm dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300 peer',
|
||||
'id': 'startDate',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.startDate, 'Date et heure de la sortie', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-gray-300 duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
{{ form_widget(form.closingDate, {
|
||||
'attr': {
|
||||
'class': 'block rounded-lg px-2.5 pb-2.5 pt-5 w-full text-sm dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300 peer',
|
||||
'id': 'closingDate',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.closingDate, 'Date limite d\'inscription', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-gray-300 duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
{{ form_widget(form.registrationsMax, {
|
||||
'attr': {
|
||||
'class': 'block rounded-lg px-2.5 pb-2.5 pt-5 w-full text-sm dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300 peer',
|
||||
'id': 'registrationsMax',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.registrationsMax, 'Nombre de place', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-gray-300 duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
{{ form_widget(form.duration, {
|
||||
'attr': {
|
||||
'class': 'block rounded-lg px-2.5 pb-2.5 pt-5 w-full text-sm dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300 peer',
|
||||
'id': 'duration',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.duration, 'Durée (en minutes)', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-gray-300 duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
{{ form_widget(form.place.city, {
|
||||
'attr': {
|
||||
'class': 'block rounded-t-lg px-2.5 pb-2.5 pt-5 w-full text-sm dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300 peer',
|
||||
'id': 'city',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.place.city, 'Ville', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-gray-300 duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
{{ form_widget(form.place.name, {
|
||||
'attr': {
|
||||
'class': 'block rounded-lg px-2.5 pb-2.5 pt-5 w-full text-sm dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300 peer',
|
||||
'id': 'placeName',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.place.name, 'Lieu', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-gray-300 duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
}
|
||||
}) }}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
{{ form_widget(form.place.address, {
|
||||
'attr': {
|
||||
'class': 'block rounded-lg px-2.5 pb-2.5 pt-5 w-full text-sm dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300 peer',
|
||||
'id': 'placeAddress',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.place.address, 'Adresse', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-gray-300 duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
{{ form_widget(form.place.latitude, {
|
||||
'attr': {
|
||||
'class': 'block rounded-lg px-2.5 pb-2.5 pt-5 w-full text-sm dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300 peer',
|
||||
'id': 'placeLatitude',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.place.latitude, 'Latitude', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-gray-300 duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
{{ form_widget(form.place.longitude, {
|
||||
'attr': {
|
||||
'class': 'block rounded-lg px-2.5 pb-2.5 pt-5 w-full text-sm dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300 peer',
|
||||
'id': 'placeLongitude',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.place.longitude, 'Longitude', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-gray-300 duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="relative w-full pb-5">
|
||||
{{ form_widget(form.description, {
|
||||
'attr': {
|
||||
'class': 'block rounded-lg px-2.5 pb-2.5 pt-5 w-full text-sm dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300 peer columns-2',
|
||||
'id': 'description',
|
||||
'placeholder': ''
|
||||
}
|
||||
}) }}
|
||||
{{ form_label(form.description, 'Description', {
|
||||
'label_attr': {
|
||||
'class': 'absolute text-sm text-light-primary dark:text-gray-300 duration-300 transform -translate-y-4 scale-75 top-4 z-10 origin-[0] start-2.5 peer-focus:text-light-primary dark:peer-focus:text-dark-primary peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-4 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto'
|
||||
},
|
||||
}) }}
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
<div class="flex items-center justify-center w-full">
|
||||
<label for="create_outing_poster" class="flex flex-col items-center justify-center w-full h-64 border-2 border-gray-300 border-dashed rounded-lg cursor-pointer bg-gray-50 dark:hover:bg-bray-800 dark:bg-dark-font hover:bg-gray-100 dark:border-dark-primary dark:hover:border-dark-primary/75 dark:hover:bg-dark-font/75">
|
||||
<div class="flex flex-col items-center justify-center pt-5 pb-6">
|
||||
<svg class="w-8 h-8 mb-4 text-gray-500 dark:text-gray-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 16">
|
||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 13h3a3 3 0 0 0 0-6h-.025A5.56 5.56 0 0 0 16 6.5 5.5 5.5 0 0 0 5.207 5.021C5.137 5.017 5.071 5 5 5a4 4 0 0 0 0 8h2.167M10 15V6m0 0L8 8m2-2 2 2"></path>
|
||||
</svg>
|
||||
<p class="mb-2 text-sm text-gray-500 dark:text-gray-400"><span class="font-semibold">Cliquez pour insérer</span> une image</p>
|
||||
<p class="text-xs text-gray-500 dark:text-gray-400">SVG, PNG ou JPG</p>
|
||||
</div>
|
||||
{{ form_widget(form.poster, {'attr': {'class': 'hidden', 'enctype': 'multipart/form-data'}}) }}
|
||||
<span id="file-name" class="flex items-center justify-center cursor-pointer text-gray-500 dark:text-gray-400 font-semibold">
|
||||
{% if outing is defined and outing.poster is not null %}
|
||||
{{ outing.poster }}
|
||||
{% endif %}
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const fileInput = document.getElementById('create_outing_poster');
|
||||
const fileNameDisplay = document.getElementById('file-name');
|
||||
|
||||
fileInput.addEventListener('change', function() {
|
||||
if (fileInput.files.length > 0) {
|
||||
fileNameDisplay.textContent = fileInput.files[0].name;
|
||||
} else {
|
||||
fileNameDisplay.textContent = 'Aucun fichier choisi';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="mt-6 grid w-full grid-cols-2 justify-end space-x-4 md:flex">
|
||||
<div class="flex w-full justify-center">
|
||||
<button type="submit"
|
||||
class="px-4 py-2 mx-4 text-white dark:text-light-font uppercase bg-light-primary dark:bg-dark-primary border-2 border-transparent rounded-lg text-md hover:bg-light-secondary dark:hover:bg-dark-primary/75 transition duration-300">
|
||||
{% if isModif %}
|
||||
Modifier
|
||||
{% else %}
|
||||
Publier
|
||||
{% endif %}
|
||||
</button>
|
||||
|
||||
{% if isModif %}
|
||||
|
||||
<button data-modal-target="popup-cancel" data-modal-toggle="popup-cancel" class="px-4 py-2 mx-4 text-white dark:text-light-font uppercase bg-light-danger dark:bg-dark-danger border-2 border-transparent rounded-lg text-md hover:bg-light-danger/75 dark:hover:bg-dark-danger/75 transition duration-300" type="button">
|
||||
Annuler la sortie
|
||||
</button>
|
||||
|
||||
<a href="{{ path('outing_preview', {'id': outing.id}) }}" class="px-4 py-2 mx-4 text-light-primary dark:text-dark-primary dark:hover:text-dark-primary hover:text-light-font uppercase bg-transparent rounded-lg hover:bg-light-secondary dark:hover:bg-dark-secondary cursor-pointer transition duration-300">
|
||||
Retour
|
||||
</a>
|
||||
|
||||
<div id="popup-cancel" tabindex="-1" class="hidden overflow-y-auto overflow-x-hidden fixed top-0 right-0 left-0 z-50 justify-center items-center w-full md:inset-0 h-[calc(100%-1rem)] max-h-full">
|
||||
<div class="relative p-4 w-full max-w-md max-h-full">
|
||||
<div class="relative bg-white rounded-lg shadow dark:bg-gray-700">
|
||||
<button type="button" class="absolute top-3 end-2.5 text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm w-8 h-8 ms-auto inline-flex justify-center items-center dark:hover:bg-gray-600 dark:hover:text-white" data-modal-hide="popup-cancel">
|
||||
<svg class="w-3 h-3" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 14 14">
|
||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6"></path>
|
||||
</svg>
|
||||
<span class="sr-only">Fermer la popup</span>
|
||||
</button>
|
||||
<div class="p-4 md:p-5 text-center">
|
||||
<svg class="mx-auto mb-4 text-gray-400 w-12 h-12 dark:text-gray-200" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
|
||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 11V6m0 8h.01M19 10a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"></path>
|
||||
</svg>
|
||||
<h3 class="mb-5 text-lg font-normal text-gray-500 dark:text-gray-400">Êtes-vous sûr de vouloir annuler la sortie ?</h3>
|
||||
<a href="{{ path('outing_cancel', {'id': outing.id}) }}" data-modal-hide="popup-cancel" type="button" class="text-white bg-red-600 hover:bg-red-800 focus:ring-4 focus:outline-none focus:ring-red-300 dark:focus:ring-red-800 font-medium rounded-lg text-sm inline-flex items-center px-5 py-2.5 text-center me-2">
|
||||
Oui, annuler
|
||||
</a>
|
||||
<button data-modal-hide="popup-cancel" type="button" class="text-gray-500 bg-white hover:bg-gray-100 focus:ring-4 focus:outline-none focus:ring-gray-200 rounded-lg border border-gray-200 text-sm font-medium px-5 py-2.5 hover:text-gray-900 focus:z-10 dark:bg-gray-700 dark:text-gray-300 dark:border-gray-500 dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-gray-600">Non</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<button class="px-4 py-2 mx-4 text-light-primary dark:text-dark-primary dark:hover:text-dark-primary hover:text-light-font uppercase bg-transparent rounded-lg hover:bg-light-secondary dark:hover:bg-dark-secondary cursor-pointer" onclick="window.history.back()">
|
||||
Retour
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ form_end(form) }}
|
||||
</section>
|
||||
{% endblock %}
|
||||
25
templates/outing/index.html.twig
Normal file
25
templates/outing/index.html.twig
Normal file
@@ -0,0 +1,25 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}Liste des sorties | {{ parent() }}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<section class="flex flex-row justify-center flex-wrap mx-auto p-6">
|
||||
<div class="m-2 w-full lg:w-5/6 sm:w-full">
|
||||
{% include 'outing/search.html.twig' with {'formSearch':formSearch} only %}
|
||||
</div>
|
||||
|
||||
{% if outings|length == 0 %}
|
||||
<h2 class="w-full text-3xl mt-5 text-center font-extrabold text-black sm:text-4xl">Aucune sortie ne correspond à
|
||||
votre
|
||||
recherche</h2>
|
||||
{% else %}
|
||||
<section class="flex flex-row justify-center flex-wrap mx-auto p-6 lg:px-32">
|
||||
{% for outing in outings %}
|
||||
{% include 'outing/card.html.twig' with {'outing': outing} %}
|
||||
{% endfor %}
|
||||
</section>
|
||||
{% endif %}
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
||||
176
templates/outing/preview.html.twig
Normal file
176
templates/outing/preview.html.twig
Normal file
@@ -0,0 +1,176 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}{{ outing.title }} | {{ parent() }}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<main class="mt-10 px-8">
|
||||
<div class="flex flex-col-reverse lg:flex-row">
|
||||
<div class="flex flex-col lg:flex-row lg:space-x-12 lg:w-1/3">
|
||||
<div class="w-full mx-3 m-auto">
|
||||
{% if weather is not null %}
|
||||
<div class="p-4 border-t border-b md:border rounded-2xl shadow-xl dark:border-dark-primary bg-light-card dark:bg-dark-card flex flex-col items-center m-auto mb-5">
|
||||
<div class="text-center">
|
||||
<h2 class="text-xl font-semibold p-2 text-gray-700 dark:text-light-card">{{ outing.place.city.name }}</h2>
|
||||
</div>
|
||||
{% if weather.weather == 0 %}
|
||||
<img src="{{ asset('weather/day.svg') }}" alt="Météo"
|
||||
class="w-48 h-48 rounded-full">
|
||||
{% elseif weather.weather > 0 and weather.weather < 10 %}
|
||||
<img src="{{ asset('weather/cloudy-day-2.svg') }}" alt="Météo"
|
||||
class="w-48 h-48 rounded-full">
|
||||
{% elseif weather.weather >= 10 and weather.weather < 60 %}
|
||||
<img src="{{ asset('weather/rainy-2.svg') }}" alt="Météo"
|
||||
class="w-48 h-48 rounded-full">
|
||||
{% elseif weather.weather >= 60 and weather.weather < 79 %}
|
||||
<img src="{{ asset('weather/snowy-4.svg') }}" alt="Météo"
|
||||
class="w-48 h-48 rounded-full">
|
||||
{% elseif weather.weather >= 78 and weather.weather < 138 %}
|
||||
<img src="{{ asset('weather/thunder.svg') }}" alt="Météo"
|
||||
class="w-48 h-48 rounded-full">
|
||||
{% else %}
|
||||
<img src="{{ asset('weather/day.svg') }}" alt="Météo"
|
||||
class="w-48 h-48 rounded-full">
|
||||
{% endif %}
|
||||
|
||||
|
||||
<div class="mb-2 text-3xl font-semibold p-2 text-gray-700 dark:text-light-card">{{ weather.tmin }}°C / {{ weather.tmax }}°C
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="p-4 border-t border-b md:border rounded-2xl shadow-xl dark:border-dark-primary bg-light-card dark:bg-dark-card">
|
||||
<p class="font-semibold text-gray-700 dark:text-light-card text-lg">Publié par :</p>
|
||||
<a href="{{ path('user_show', {'pseudo': outing.organizer.pseudo}) }}" class="flex py-2 w-fit">
|
||||
{% if outing.organizer.profilePicture %}
|
||||
<img src="{{ asset('uploads/' ~ outing.organizer.profilePicture) | imagine_filter('profile') }}"
|
||||
class="h-10 w-10 rounded-full mr-2 object-cover"
|
||||
alt="Photo de profil de {{ outing.organizer.pseudo }}"/>
|
||||
{% else %}
|
||||
<img src="{{ asset('profilDefault.png') }}"
|
||||
class="h-10 w-10 rounded-full mr-2 object-cover"
|
||||
alt="Photo de profil de {{ outing.organizer.pseudo }}"/>
|
||||
{% endif %}
|
||||
<div>
|
||||
<p class="font-semibold text-gray-700 text-sm dark:text-light-card">
|
||||
{% if outing.organizer == app.user %}
|
||||
Vous
|
||||
{% else %}
|
||||
{{ outing.organizer.firstname|capitalize }} {{ outing.organizer.lastname|upper }}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p class="font-semibold text-gray-400 text-xs">@{{ outing.organizer.pseudo }}</p>
|
||||
<p class="font-semibold text-gray-600 text-xs dark:text-dark-primary">{{ outing.organizer.site.name }}</p>
|
||||
</div>
|
||||
</a>
|
||||
<div class="flex flex-col items-center justify-center text-center">
|
||||
|
||||
{% if outing.status.label == "Annulée" %}
|
||||
<button class="px-4 py-2 m-2 mt-4 w-full text-white dark:text-light-font uppercase bg-light-danger/75 dark:bg-dark-danger/75 border-2 border-transparent rounded-lg text-md"
|
||||
disabled>
|
||||
Sortie annulée
|
||||
</button>
|
||||
{% else %}
|
||||
{% if outing.isUserRegistered(app.user) and outing.organizer != app.user %}
|
||||
<a href="{{ path('outing_unregister', {'id':outing.id}) }}"
|
||||
class="px-4 py-2 m-2 mt-4 w-full text-white dark:text-light-font uppercase bg-light-danger dark:bg-dark-danger border-2 border-transparent rounded-lg text-md hover:bg-light-danger/75 dark:hover:bg-dark-danger/75">
|
||||
Se désister
|
||||
</a>
|
||||
{% elseif outing.canUserRegister(app.user) %}
|
||||
<a href="{{ path('outing_register', {'id':outing.id}) }}"
|
||||
class="px-4 py-2 m-2 w-full text-white dark:text-light-font uppercase bg-light-success dark:bg-dark-success border-2 border-transparent rounded-lg text-md hover:bg-light-success/75 dark:hover:bg-dark-success/75">
|
||||
S'inscrire
|
||||
</a>
|
||||
{% elseif outing.organizer != app.user %}
|
||||
<button class="px-4 py-2 m-2 mt-4 w-full text-white dark:text-light-font uppercase bg-light-danger/75 dark:bg-dark-danger/75 border-2 border-transparent rounded-lg text-md"
|
||||
disabled>
|
||||
Inscriptions fermées
|
||||
</button>
|
||||
{% endif %}
|
||||
{% if outing.organizer == app.user %}
|
||||
<a href="{{ path('outing_edit', {'id':outing.id}) }}"
|
||||
class="px-4 py-2 m-2 w-full text-white dark:text-dark-primary uppercase bg-light-secondary dark:bg-dark-secondary hover:bg-light-secondary/75 dark:hover:bg-dark-secondary/75 rounded-lg text-md">
|
||||
Modifier
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-4 md:mb-0 mx-3 w-full mx-auto relative">
|
||||
<div class="px-4 lg:px-0 my-3 text-center text-gray-600">
|
||||
<h2 class="text-4xl font-semibold text-gray-800 dark:text-light-font leading-tight overflow-hidden truncate">
|
||||
{{ outing.title }}
|
||||
</h2>
|
||||
<div class="pt-2 flex-col items-center justify-center">
|
||||
{# On regarde le label du statut de l'outing, si c'est créée ou ouverte on met le texte en success, si c'est activité en cours on met text-warning, sinon on met text-danger #}
|
||||
{% set labelColor = outing.status.label == 'Créée' or outing.status.label == 'Ouverte' ? 'text-dark-success text-light-success' : outing.status.label == 'Activité en cours' ? 'text-dark-warning text-light-warning' : 'text-dark-danger text-light-danger' %}
|
||||
<h2 class="{{ labelColor }}">
|
||||
{{ outing.status.label }}
|
||||
</h2>
|
||||
</div>
|
||||
{% if outing.poster %}
|
||||
<img src="{{ asset('uploads/' ~ outing.poster) | imagine_filter('outings') }}"
|
||||
class="h-auto max-w-full md:max-w-md lg:max-w-lg mx-auto rounded-lg shadow-xl my-3"
|
||||
alt="poster"/>
|
||||
{% endif %}
|
||||
{% if app.user %}
|
||||
<h2 class="dark:text-light-font"><span
|
||||
class="font-bold dark:text-dark-primary">Lieu</span> : {{ outing.place.name }}</h2>
|
||||
<h2 class="dark:text-light-font"><span class="font-bold dark:text-dark-primary">Adresse</span>
|
||||
: {{ outing.place.address }}, {{ outing.place.city.name }} ({{ outing.place.city.postcode }}
|
||||
)</h2>
|
||||
<h2 class="dark:text-light-font"><span class="font-bold dark:text-dark-primary">Date</span>
|
||||
: {{ outing.startDate|format_datetime('long', 'short', locale='fr') }}</h2>
|
||||
{% if outing.closingDate > date('now') %}
|
||||
<h3 class="dark:text-light-font"><span class="font-bold dark:text-dark-primary">Clôture des inscriptions</span>
|
||||
:
|
||||
<span class="text-dark-danger text-light-danger">{{ outing.closingDate|format_datetime('long', 'short', locale='fr') }}</span>
|
||||
</h3>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<h3 class="dark:text-light-font"><span class="font-bold dark:text-dark-primary">Nombre de participants inscrits </span>
|
||||
:
|
||||
<span class="font-bold {% if (outing.registrationsMax - outing.registrations|length) > outing.registrations|length / 2 %}text-dark-success text-light-success{% elseif (outing.registrationsMax - outing.registrations|length) > outing.registrations|length %}text-dark-warning text-light-warning{% else %}text-dark-danger text-light-danger{% endif %}">
|
||||
{{ outing.registrations|length }} / {{ outing.registrationsMax }}
|
||||
</span>
|
||||
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div class="px-4 lg:px-0 mt-12 text-gray-700 text-lg leading-relaxed w-full lg:w-3/4 order-first lg:order-last">
|
||||
<p class="pb-6 dark:text-light-font">{{ outing.description }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% if outing.registrations|length > 0 %}
|
||||
<section class="mt-8 px-8">
|
||||
<h2 class="text-2xl font-semibold text-center mb-4 dark:text-light-font">Liste des participants</h2>
|
||||
<div class="flex flex-wrap justify-center">
|
||||
{% for registration in outing.registrations %}
|
||||
<div class="max-w-xs mx-4 mb-8">
|
||||
<a href="{{ path('user_show', {'pseudo': registration.participant.pseudo}) }}">
|
||||
<div class="bg-light-card dark:bg-dark-card rounded-lg shadow-md hover:shadow-xl transition overflow-hidden cursor-pointer w-44">
|
||||
<img src="{{ registration.participant.profilePicture ? asset('uploads/' ~ registration.participant.profilePicture) | imagine_filter('profile') : asset('profilDefault.png') }}"
|
||||
class="w-full h-40 object-cover"
|
||||
alt="Photo de profil de {{ registration.participant.pseudo }}">
|
||||
<div class="p-4 text-center">
|
||||
<p class="text-lg font-semibold dark:text-light-font">
|
||||
@{{ registration.participant.pseudo }}</p>
|
||||
<p class="text-gray-500 text-sm dark:text-dark-primary">{{ registration.participant.site.name }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
</main>
|
||||
{% endblock %}
|
||||
|
||||
108
templates/outing/search.html.twig
Normal file
108
templates/outing/search.html.twig
Normal file
@@ -0,0 +1,108 @@
|
||||
{% if formSearch %}
|
||||
{{ form_start(formSearch) }}
|
||||
<div class="rounded-xl bg-light-card dark:bg-dark-card p-6 shadow-md">
|
||||
<h2 class="text-light-primary dark:text-light-font text-xl font-bold">Rechercher une sortie</h2>
|
||||
<div class="flex items-center my-5 relative w-full">
|
||||
<div class="flex absolute inset-y-0 left-0 items-center pl-3 pointer-events-none">
|
||||
<svg class="w-5 h-5 text-gray-500 dark:text-gray-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
</div>
|
||||
{{ form_widget(formSearch.name, {
|
||||
'attr': {
|
||||
'class': 'block w-full pl-10 p-2.5 text-sm rounded-lg dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300',
|
||||
'id': 'simple-search',
|
||||
'placeholder': 'Recherche'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
<div class="my-5 grid grid-flow-row-dense grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
|
||||
<div class="flex flex-col col-span-4 md:col-span-2">
|
||||
<label for="campus" class="text-light-primary dark:text-light-font text-sm font-medium">Campus</label>
|
||||
{{ form_widget(formSearch.site, {
|
||||
'attr': {
|
||||
'id': 'campus',
|
||||
'class': 'text-sm rounded-lg my-2 block w-full border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
<div class="flex flex-col col-span-4 md:col-span-1">
|
||||
<label for="startDate" class="text-light-primary dark:text-light-font text-sm font-medium">Date de début</label>
|
||||
{{ form_widget(formSearch.startDate, {
|
||||
'attr': {
|
||||
'id': 'startDate',
|
||||
'class': 'text-sm rounded-lg my-2 block w-full border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
<div class="flex flex-col col-span-4 md:col-span-1">
|
||||
<label for="endDate" class="text-light-primary dark:text-light-font text-sm font-medium">Date de fin</label>
|
||||
{{ form_widget(formSearch.endDate, {
|
||||
'attr': {
|
||||
'id': 'endDate',
|
||||
'class': 'text-sm rounded-lg my-2 block w-full border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300'
|
||||
}
|
||||
}) }}
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col col-span-4">
|
||||
<ul class="items-center w-full text-sm font-medium rounded-lg sm:flex bg-white dark:bg-dark-font border border-gray-300 dark:border-dark-primary text-light-primary dark:text-light-font">
|
||||
<li class="w-full border-b border-gray-200 dark:border-dark-primary sm:border-b-0 sm:border-r">
|
||||
<div class="flex items-center ps-3">
|
||||
{{ form_widget(formSearch.isOrganizer, {
|
||||
'id': 'author',
|
||||
'attr': {
|
||||
'class': 'text-sm rounded-lg cursor-pointer w-4 h-4 bg-white dark:bg-dark-font border border-gray-300 text-light-primary dark:text-dark-primary focus:ring-0 dark:focus:ring-dark-primary'
|
||||
}
|
||||
}) }}
|
||||
<label for="author" class="w-full py-3 ms-2 text-sm font-medium text-light-primary dark:text-light-font">Sorties dont je suis l'organisateur/trice</label>
|
||||
</div>
|
||||
</li>
|
||||
<li class="w-full border-b border-gray-200 dark:border-dark-primary sm:border-b-0 sm:border-r">
|
||||
<div class="flex items-center ps-3">
|
||||
{{ form_widget(formSearch.isRegistered, {
|
||||
'id': 'register',
|
||||
'attr': {
|
||||
'class': 'text-sm rounded-lg cursor-pointer w-4 h-4 bg-white dark:bg-dark-font border border-gray-300 text-light-primary dark:text-dark-primary focus:ring-0 dark:focus:ring-dark-primary'
|
||||
}
|
||||
}) }}
|
||||
<label for="register" class="w-full py-3 ms-2 text-sm font-medium text-light-primary dark:text-light-font">Sorties auxquelles je suis inscrit/e</label>
|
||||
</div>
|
||||
</li>
|
||||
<li class="w-full border-b border-gray-200 dark:border-dark-primary sm:border-b-0 sm:border-r">
|
||||
<div class="flex items-center ps-3">
|
||||
{{ form_widget(formSearch.isNotRegistered, {
|
||||
'id': 'notResgister',
|
||||
'attr': {
|
||||
'class': 'text-sm rounded-lg cursor-pointer w-4 h-4 bg-white dark:bg-dark-font border border-gray-300 text-light-primary dark:text-dark-primary focus:ring-0 dark:focus:ring-dark-primary'
|
||||
}
|
||||
}) }}
|
||||
<label for="notResgister" class="w-full py-3 ms-2 text-sm font-medium text-light-primary dark:text-light-font">Sorties auxquelles je ne suis pas inscrit/e</label>
|
||||
</div>
|
||||
</li>
|
||||
<li class="w-full border-b border-gray-200 dark:border-dark-primary sm:border-b-0 sm:border-r">
|
||||
<div class="flex items-center ps-3">
|
||||
{{ form_widget(formSearch.isFinished, {
|
||||
'id': 'endOuting',
|
||||
'attr': {
|
||||
'class': 'text-sm rounded-lg cursor-pointer w-4 h-4 bg-white dark:bg-dark-font border border-gray-300 text-light-primary dark:text-dark-primary focus:ring-0 dark:focus:ring-dark-primary'
|
||||
}
|
||||
}) }}
|
||||
<label for="endOuting" class="w-full py-3 ms-2 text-sm font-medium text-light-primary dark:text-light-font">Sorties passées</label>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-6 grid w-full grid-cols-2 justify-end space-x-4 md:flex">
|
||||
<button type="reset" class="px-4 py-2 text-light-primary dark:text-dark-primary dark:hover:text-dark-primary hover:text-light-font uppercase bg-transparent rounded-lg hover:bg-light-secondary dark:hover:bg-dark-secondary text-md transition duration-300">
|
||||
Annuler les filtres
|
||||
</button>
|
||||
<button type="submit" class="px-4 py-2 mr-4 text-white dark:text-light-font uppercase bg-light-primary dark:bg-dark-primary border-2 border-transparent rounded-lg text-md hover:bg-light-secondary dark:hover:bg-dark-primary/75 transition duration-300">
|
||||
Rechercher
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
{{ form_end(formSearch) }}
|
||||
{% endif %}
|
||||
9
templates/reset_password/email.html.twig
Normal file
9
templates/reset_password/email.html.twig
Normal file
@@ -0,0 +1,9 @@
|
||||
<h1>Salut l'ami 👋</h1>
|
||||
|
||||
<p>Alors on a oublié son mot de passe, pas de problème tu peux le réinitialiser avec le lien suivant : <a
|
||||
href="{{ url('app_reset_password', {token: resetToken.token}) }}">Réinitialiser mon mot de passe</a>
|
||||
</p>
|
||||
|
||||
<p>Attention ce lien expirera dans {{ resetToken.expirationMessageKey|trans(resetToken.expirationMessageData, 'ResetPasswordBundle') }}</p>
|
||||
|
||||
<p>À tout de suite 😉</p>
|
||||
46
templates/reset_password/request.html.twig
Normal file
46
templates/reset_password/request.html.twig
Normal file
@@ -0,0 +1,46 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}Mot de passe oublié | {{ parent() }}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<div class="mx-auto max-w-screen-xl px-4 py-16 sm:px-6 lg:px-8">
|
||||
<div class="mx-auto max-w-lg">
|
||||
<h1 class="text-center text-2xl font-bold text-light-primary dark:text-light-font sm:text-3xl">Tu as
|
||||
oublié ton mot de passe 😓</h1>
|
||||
|
||||
<p class="mx-auto mt-4 max-w-md text-center dark:text-light-font">
|
||||
Pas de problème, on s'occupe de tout 😉
|
||||
</p>
|
||||
|
||||
{{ form_start(requestForm) }}
|
||||
<div class="mb-0 mt-6 space-y-4 rounded-lg p-4 dark:bg-dark-card bg-light-card shadow-lg sm:p-6 lg:p-8">
|
||||
<p class="text-center text-lg font-medium text-light-primary dark:text-light-font">C'est quoi ton
|
||||
email ?</p>
|
||||
<div>
|
||||
<label for="email" class="sr-only">Email</label>
|
||||
<div class="relative">
|
||||
{{ form_widget(requestForm.email, { id:'email', attr: { class: 'w-full rounded-lg p-4 pe-12 text-sm shadow-sm border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300', placeholder: 'Entrer votre email' } } ) }}
|
||||
<span class="absolute inset-y-0 end-0 grid place-content-center px-4">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-gray-400" fill="none" viewBox="0 0 24 24"
|
||||
stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M16 12a4 4 0 10-8 0 4 4 0 008 0zm0 0v1.5a2.5 2.5 0 005 0V12a9 9 0 10-9 9m4.5-1.206a8.959 8.959 0 01-4.5 1.207"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit"
|
||||
class="block w-full rounded-lg bg-light-primary dark:bg-dark-primary hover:bg-light-secondary dark:hover:bg-dark-primary/75 transition duration-300 px-5 py-3 text-sm font-medium text-white">
|
||||
Se connecter
|
||||
|
||||
</button>
|
||||
<p class="text-center text-sm text-light-primary dark:text-light-font">
|
||||
Tu as retrouvé ton mot de passe ?
|
||||
<a class="underline" href="{{ path('app_login') }}">Se connecter</a>
|
||||
</p>
|
||||
</div>
|
||||
{{ form_end(requestForm) }}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
53
templates/reset_password/reset.html.twig
Normal file
53
templates/reset_password/reset.html.twig
Normal file
@@ -0,0 +1,53 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}Nouveau mot de passe | {{ parent() }}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="mx-auto max-w-screen-xl px-4 py-16 sm:px-6 lg:px-8">
|
||||
<div class="mx-auto max-w-lg">
|
||||
<h1 class="text-center text-2xl font-bold text-light-primary dark:text-light-font sm:text-3xl">Nouveau mot
|
||||
de passe 😊</h1>
|
||||
{{ form_start(resetForm) }}
|
||||
<div class="mb-0 mt-6 space-y-4 rounded-lg p-4 shadow-lg sm:p-6 lg:p-8">
|
||||
<p class="text-center text-lg font-medium text-light-primary dark:text-light-font">Votre nouveau mot
|
||||
de passe</p>
|
||||
<div>
|
||||
<label for="firstPassword" class="sr-only">Nouveau mot de passe</label>
|
||||
<div class="relative">
|
||||
{{ form_widget(resetForm.plainPassword.first, { id:'firstPassword', attr: { class: 'w-full rounded-lg border-gray-200 p-4 pe-12 text-sm shadow-sm focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary', placeholder: 'Entrer votre nouveau mot de passe' } } ) }}
|
||||
<span class="absolute inset-y-0 end-0 grid place-content-center px-4">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-gray-400" fill="none" viewBox="0 0 24 24"
|
||||
stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label for="secondPassword" class="sr-only">Confirmation du mot de passe</label>
|
||||
<div class="relative">
|
||||
{{ form_widget(resetForm.plainPassword.second, { id:'secondPassword', attr: { class: 'w-full rounded-lg border-gray-200 p-4 pe-12 text-sm shadow-sm focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary', placeholder: 'Confirmer votre nouveau mot de passe' } } ) }}
|
||||
<span class="absolute inset-y-0 end-0 grid place-content-center px-4">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-gray-400" fill="none" viewBox="0 0 24 24"
|
||||
stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<button type="submit"
|
||||
class="block w-full rounded-lg bg-light-primary dark:bg-dark-primary px-5 py-3 text-sm font-medium text-white">
|
||||
Valider
|
||||
</button>
|
||||
</div>
|
||||
{{ form_end(resetForm) }}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
71
templates/security/login.html.twig
Normal file
71
templates/security/login.html.twig
Normal file
@@ -0,0 +1,71 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}Connexion | {{ parent() }}{% endblock %}
|
||||
{% block body %}
|
||||
{% if error %}
|
||||
<div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="mx-auto max-w-screen-xl px-4 py-16 sm:px-6 lg:px-8">
|
||||
<div class="mx-auto max-w-lg">
|
||||
<h1 class="text-center text-2xl font-bold text-light-primary dark:text-white sm:text-3xl">Salut à toi
|
||||
👋</h1>
|
||||
<p class="mx-auto mt-4 max-w-md text-center dark:text-white">
|
||||
Connecte-toi pour accéder aux sorties et rencontrer de nouvelles personnes
|
||||
</p>
|
||||
<form method="post" class="mb-0 mt-6 space-y-4 rounded-lg p-4 dark:bg-dark-card bg-light-card shadow-lg sm:p-6 lg:p-8">
|
||||
<p class="text-center text-lg font-medium text-light-primary dark:text-white">Connexion à votre
|
||||
compte</p>
|
||||
<div>
|
||||
<label for="login" class="sr-only">Email ou Pseudo</label>
|
||||
<div class="relative">
|
||||
<input id="login" name="login" value="" type="text"
|
||||
class="w-full rounded-lg p-4 pe-12 text-sm shadow-sm border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300"
|
||||
placeholder="Entrer votre email ou pseudo"/>
|
||||
<span class="absolute inset-y-0 end-0 grid place-content-center px-4">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-gray-400" fill="none" viewBox="0 0 24 24"
|
||||
stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M16 12a4 4 0 10-8 0 4 4 0 008 0zm0 0v1.5a2.5 2.5 0 005 0V12a9 9 0 10-9 9m4.5-1.206a8.959 8.959 0 01-4.5 1.207"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label for="password" class="sr-only">Mot de passe</label>
|
||||
<div class="relative">
|
||||
<input id="password" name="password" type="password"
|
||||
class="w-full rounded-lg p-4 pe-12 text-sm shadow-sm border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300"
|
||||
placeholder="Entrer votre mot de passe"/>
|
||||
<span class="absolute inset-y-0 end-0 grid place-content-center px-4">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-gray-400" fill="none" viewBox="0 0 24 24"
|
||||
stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label for="rememberCheck" class="flex items-center">
|
||||
<input id="rememberCheck" name="rememberCheck" type="checkbox"
|
||||
class="rounded light:border-gray-200 dark:border-dark-primary dark:bg-dark-font shadow-sm"/>
|
||||
<span class="ml-2 text-sm text-light-primary dark:text-white">Se souvenir de moi</span>
|
||||
</label>
|
||||
</div>
|
||||
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
|
||||
<button type="submit"
|
||||
class="block w-full rounded-lg bg-light-primary dark:bg-dark-primary hover:bg-light-primary/75 dark:hover:bg-dark-primary/75 px-5 py-3 text-sm font-medium text-white transition duration-200">
|
||||
Se connecter
|
||||
</button>
|
||||
<p class="text-center text-sm text-light-primary dark:text-white">
|
||||
Tu as oublié ton mot de passe ?
|
||||
<a class="underline" href="{{ path('app_forgot_password_request') }}">Réinitialise ton mot de
|
||||
passe</a>
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
73
templates/user/edit.html.twig
Normal file
73
templates/user/edit.html.twig
Normal file
@@ -0,0 +1,73 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}Modifier son profil | {{ parent() }}{% endblock %}
|
||||
{% block javascripts %}
|
||||
{{ parent() }}
|
||||
<script src="{{ asset('js/dynamicPicture.js') }}" defer></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="max-w-xl mx-auto my-10 rounded-lg shadow-md p-5 text-light-primary dark:text-light-font dynamic-picture-container bg-light-card dark:bg-dark-card">
|
||||
<img src="{{ asset((user.profilePicture) ? 'uploads/' ~ user.profilePicture : 'profilDefault.png') | imagine_filter('profile') }}"
|
||||
class="w-56 h-56 rounded-full mx-auto" id="profilePicture"
|
||||
alt="Photo de profil de {{ user.pseudo }}">
|
||||
<p class="text-center my-2 text-2xl">@{{ user.pseudo }}</p>
|
||||
{{ form_start(form) }}
|
||||
<div class="my-2">
|
||||
<label for="UserSchool"
|
||||
class="block overflow-hidden rounded-md border border-light-secondary/50 px-3 py-2 shadow-sm border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300">
|
||||
<span class="text-xs font-medium">Campus</span>
|
||||
{{ form_widget(form.site, { id:'UserSchool', attr: { class: 'mt-1 w-full border-none p-0 bg-transparent focus:border-transparent focus:outline-none focus:ring-0 sm:text-sm'}}) }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="my-2">
|
||||
<label for="firstname"
|
||||
class="block overflow-hidden rounded-md border border-light-secondary/50 px-3 py-2 shadow-sm border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300">
|
||||
<span class="text-xs font-medium">Prénom</span>
|
||||
{{ form_widget(form.firstname, { id:'firstname', attr: { class: 'mt-1 w-full border-none p-0 bg-transparent focus:border-transparent focus:outline-none focus:ring-0 sm:text-sm'}}) }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="my-2">
|
||||
<label for="lastname"
|
||||
class="block overflow-hidden rounded-md border border-light-secondary/50 px-3 py-2 shadow-sm border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300">
|
||||
<span class="text-xs font-medium">Nom</span>
|
||||
{{ form_widget(form.lastname, { id:'lastname', attr: { class: 'mt-1 w-full border-none p-0 bg-transparent focus:border-transparent focus:outline-none focus:ring-0 sm:text-sm'}}) }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="my-2">
|
||||
<label for="UserEmail"
|
||||
class="block overflow-hidden rounded-md border border-light-secondary/50 px-3 py-2 shadow-sm border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300">
|
||||
<span class="text-xs font-medium">Email</span>
|
||||
{{ form_widget(form.email, { id:'UserEmail', attr: { class: 'mt-1 w-full border-none p-0 bg-transparent focus:border-transparent focus:outline-none focus:ring-0 sm:text-sm'}}) }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="my-2">
|
||||
<label for="UserTel"
|
||||
class="block overflow-hidden rounded-md border border-light-secondary/50 px-3 py-2 shadow-sm border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300">
|
||||
<span class="text-xs font-medium">Téléphone</span>
|
||||
{{ form_widget(form.phone, { id:'UserTel', attr: { class: 'mt-1 w-full border-none p-0 bg-transparent focus:border-transparent focus:outline-none focus:ring-0 sm:text-sm'}}) }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="my-2">
|
||||
<div class="relative h-32 rounded-md border border-light-secondary/50 px-3 py-2 shadow-sm border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300">
|
||||
{{ form_widget(form.profilePicture, { id:'file-upload', attr: { class: 'hidden'}}) }}
|
||||
<label for="file-upload"
|
||||
class="z-20 flex flex-col-reverse items-center justify-center w-full h-full cursor-pointer">
|
||||
<p class="z-10 text-m font-light text-center text-light-primary dark:text-light-font">Glisser
|
||||
déposer votre photo de profil</p>
|
||||
<svg class="z-10 w-8 h-8 text-light-primary dark:text-dark-primary" fill="currentColor"
|
||||
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z"></path>
|
||||
</svg>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="my-5 flex justify-center text-center">
|
||||
<button type="submit"
|
||||
class="px-4 py-2 mx-4 text-white dark:text-light-font dark:hover:text-dark-primary uppercase bg-light-primary dark:bg-dark-primary border-2 border-transparent rounded-lg text-md hover:bg-light-secondary dark:hover:bg-dark-secondary">
|
||||
Valider
|
||||
</button>
|
||||
</div>
|
||||
{{ form_end(form) }}
|
||||
</div>
|
||||
{% endblock %}
|
||||
56
templates/user/index.html.twig
Normal file
56
templates/user/index.html.twig
Normal file
@@ -0,0 +1,56 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}{% if user == app.user %}Mon profil{% else %}Profil de {{ user.pseudo }}{% endif %} | {{ parent() }}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="max-w-xl mx-auto my-10 rounded-lg shadow-md p-5 text-light-primary dark:text-light-font bg-light-card dark:bg-dark-card">
|
||||
<img src="{{ asset((user.profilePicture) ? 'uploads/' ~ user.profilePicture : 'profilDefault.png') | imagine_filter('profile') }}"
|
||||
class="w-56 h-56 rounded-full mx-auto dark:border-4 dark:border-dark-primary shadow-sm"
|
||||
alt="Photo de profil de {{ user.pseudo }}">
|
||||
<h2 class="text-center text-2xl font-semibold mt-3">{{ user.firstname|capitalize }} {{ user.lastname|upper }}</h2>
|
||||
<p class="text-center mt-1">@{{ user.pseudo }}</p>
|
||||
<div class="my-2">
|
||||
<label for="UserSchool"
|
||||
class="block overflow-hidden rounded-md border px-3 py-2 shadow-sm border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300">
|
||||
<span class="text-xs font-medium">Campus</span>
|
||||
<input type="text" id="UserSchool" value="{{ user.site }}"
|
||||
class="mt-1 w-full border-none p-0 bg-transparent focus:border-transparent focus:outline-none focus:ring-0 sm:text-sm"
|
||||
disabled/>
|
||||
</label>
|
||||
</div>
|
||||
{% if user == app.user %}
|
||||
<div class="my-2">
|
||||
<label for="UserTel"
|
||||
class="block overflow-hidden rounded-md border px-3 py-2 shadow-sm border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300">
|
||||
<span class="text-xs font-medium">Téléphone</span>
|
||||
<input type="tel" id="UserTel" value="{{ user.phone }}"
|
||||
class="mt-1 w-full border-none p-0 bg-transparent focus:border-transparent focus:outline-none focus:ring-0 sm:text-sm"
|
||||
disabled/>
|
||||
</label>
|
||||
</div>
|
||||
<div class="my-2">
|
||||
<label for="UserEmail"
|
||||
class="block overflow-hidden rounded-md border px-3 py-2 shadow-sm border-gray-200 dark:bg-dark-font dark:text-white dark:border-dark-primary focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary dark:placeholder-gray-300">
|
||||
<span class="text-xs font-medium">Email</span>
|
||||
<input type="email" id="UserEmail" value="{{ user.email }}"
|
||||
class="mt-1 w-full border-none p-0 bg-transparent focus:border-transparent focus:outline-none focus:ring-0 sm:text-sm"
|
||||
disabled/>
|
||||
</label>
|
||||
</div>
|
||||
<div class="my-5 flex justify-center text-center align-content-center align-middle">
|
||||
<a href="{{ path('app_logout') }}"
|
||||
class="px-4 py-2 mx-4 text-white uppercase rounded-lg hover:bg-light-danger/75 dark:hover:bg-dark-danger/75 bg-light-danger dark:bg-dark-danger text-md flex items-center">
|
||||
Déconnexion
|
||||
</a>
|
||||
<a href="{{ path('user_change_password') }}"
|
||||
class="px-4 py-2 mx-4 text-light-primary dark:text-white hover:text-light-font uppercase rounded-lg hover:bg-light-info/75 dark:hover:bg-dark-info/75 bg-light-info dark:bg-dark-info text-md flex items-center">
|
||||
Modifier mon mot de passe
|
||||
</a>
|
||||
<a href="{{ path('user_edit') }}"
|
||||
class="px-4 py-2 mx-4 text-white dark:text-light-font dark:hover:text-dark-primary uppercase bg-light-primary dark:bg-dark-primary border-2 border-transparent rounded-lg text-md hover:bg-light-secondary dark:hover:bg-dark-secondary flex items-center">
|
||||
Modifier mon profil
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
67
templates/user/reset_password.html.twig
Normal file
67
templates/user/reset_password.html.twig
Normal file
@@ -0,0 +1,67 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}Nouveau mot de passe | {{ parent() }}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="mx-auto max-w-screen-xl px-4 py-16 sm:px-6 lg:px-8">
|
||||
<div class="mx-auto max-w-lg">
|
||||
<h1 class="text-center text-2xl font-bold text-light-primary dark:text-light-font sm:text-3xl">Nouveau mot
|
||||
de passe 😊</h1>
|
||||
{{ form_start(form) }}
|
||||
<div class="mb-0 mt-6 space-y-4 rounded-lg p-4 shadow-lg sm:p-6 lg:p-8 bg-light-card dark:bg-dark-card">
|
||||
<p class="text-center text-lg font-medium text-light-primary dark:text-light-font">Votre nouveau mot
|
||||
de passe</p>
|
||||
<div>
|
||||
<label for="oldPassword" class="sr-only">Mot de passe actuel</label>
|
||||
<div class="relative">
|
||||
{{ form_widget(form.oldPassword, { id:'firstPassword', attr: { class: 'w-full rounded-lg border-gray-200 p-4 pe-12 text-sm shadow-sm focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary', placeholder: 'Mot de passe actuel' } } ) }}
|
||||
<span class="absolute inset-y-0 end-0 grid place-content-center px-4">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-gray-400" fill="none" viewBox="0 0 24 24"
|
||||
stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label for="firstPassword" class="sr-only">Nouveau mot de passe</label>
|
||||
<div class="relative">
|
||||
{{ form_widget(form.plainPassword.first, { id:'firstPassword', attr: { class: 'w-full rounded-lg border-gray-200 p-4 pe-12 text-sm shadow-sm focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary', placeholder: 'Entrer votre nouveau mot de passe' } } ) }}
|
||||
<span class="absolute inset-y-0 end-0 grid place-content-center px-4">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-gray-400" fill="none" viewBox="0 0 24 24"
|
||||
stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label for="secondPassword" class="sr-only">Confirmation du mot de passe</label>
|
||||
<div class="relative">
|
||||
{{ form_widget(form.plainPassword.second, { id:'secondPassword', attr: { class: 'w-full rounded-lg border-gray-200 p-4 pe-12 text-sm shadow-sm focus:ring-light-primary dark:focus:ring-dark-primary focus:border-light-primary dark:focus:border-dark-primary', placeholder: 'Confirmer votre nouveau mot de passe' } } ) }}
|
||||
<span class="absolute inset-y-0 end-0 grid place-content-center px-4">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-gray-400" fill="none" viewBox="0 0 24 24"
|
||||
stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit"
|
||||
class="block w-full rounded-lg bg-light-primary dark:bg-dark-primary px-5 py-3 text-sm font-medium text-white">
|
||||
Valider
|
||||
</button>
|
||||
</div>
|
||||
{{ form_end(form) }}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user