This commit is contained in:
2019-12-03 19:09:35 +01:00
parent c31a4942c0
commit 7ca69e1549
20 changed files with 472 additions and 141 deletions
+10 -5
View File
@@ -3,12 +3,17 @@ fullname: 'Maud Boyer'
title: admin title: admin
state: enabled state: enabled
access: access:
site:
login: 'true'
admin: admin:
super: 'true' super: 'true'
login: 'true' login: 'true'
site: admin-addon-user-manager: { }
login: 'true' hashed_password: $2y$10$1ol4B2jLfCtepiNBZ4/iveJmFLJn7PSTfEzlHJFSCNP9KymqCdC.C
hashed_password: $2y$10$XYIFrVemvj0aLeoCYJ1TeeYDU7iQYyii4cNEFv0I5sUOtyhjv0YQ. language: fr
language: en
twofa_enabled: false twofa_enabled: false
twofa_secret: JLF5HJJ3IK434NGYAR5TMGBNNH5Y2CBP twofa_secret: WMHLTUSQZKFSK6YN4IUE34USJK2CG727
_json:
avatar: '[]'
state: '"enabled"'
hashed_password: '"$2y$10$1ol4B2jLfCtepiNBZ4\/iveJmFLJn7PSTfEzlHJFSCNP9KymqCdC.C"'
+9 -4
View File
@@ -3,12 +3,17 @@ fullname: 'Sandrine Ripoll'
title: admin title: admin
state: enabled state: enabled
access: access:
site:
login: 'true'
admin: admin:
super: 'true' super: 'true'
login: 'true' login: 'true'
site: admin-addon-user-manager: { }
login: 'true' hashed_password: $2y$10$TfBKArG7nwy2kiDWywLru.JFOL/4luotf9djMRz488FDZVzQzmlf2
hashed_password: $2y$10$D9vJo2awuCuqEFQDHkP7BupvYBTy/SABVQcejFDkwGguhH9TPnZKq
language: en language: en
twofa_enabled: false twofa_enabled: false
twofa_secret: 4UOFFQ7LRK4DVI52655LAEZ3533LGDVW twofa_secret: T6KECXE5A4XT7V6T4VQEEOHQVOXFZPLP
_json:
avatar: '[]'
state: '"enabled"'
hashed_password: '"$2y$10$OCR3MkWPb41krOmdZFrJae0L0.iI4d79Rv5Z.pZ68py4gsz\/RWfK2"'
+15 -5
View File
@@ -1,7 +1,17 @@
title: Grav title: 'Figures Libres'
default_lang: en
author: author:
name: Joe Bloggs name: 'Joe Bloggs'
email: 'joe@example.com' email: joe@example.com
taxonomies:
- category
- tag
metadata: metadata:
description: 'Grav is an easy to use, yet powerful, open source flat-file CMS' description: 'Grav is an easy to use, yet powerful, open source flat-file CMS'
summary:
enabled: true
format: short
size: 300
delimiter: '==='
blog:
route: /blog
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+65 -21
View File
@@ -31,7 +31,7 @@ function click_link() {
lazy(); lazy();
}, },
complete: function(data) { complete: function(data) {
console.log('cat', cat); // console.log('cat', cat);
$loader.hide(); $loader.hide();
click_img(e, $this, $href, url, page, cat, project_name); click_img(e, $this, $href, url, page, cat, project_name);
closeAjax(); closeAjax();
@@ -45,6 +45,7 @@ function click_list() {
var $link = $('.list-projets li > a'); var $link = $('.list-projets li > a');
$link.click(function(e) { $link.click(function(e) {
$('.sidebar-right, .sidebar-right button.hamburger').removeClass('is-active');
e.preventDefault(); e.preventDefault();
var $this = $(this); var $this = $(this);
$href = $this.attr("href"); $href = $this.attr("href");
@@ -58,10 +59,8 @@ function click_list() {
var $link_card = $('.card > #'+project_name + ' a'); var $link_card = $('.card > #'+project_name + ' a');
if ($link_txt.hasClass('open') && $link_card.parent().hasClass('open') ) { if ($link_txt.hasClass('open') && $link_card.parent().hasClass('open') ) {
anchor($href); anchor($href);
} else if ($link_txt.hasClass('open')) {
}else if ($link_txt.hasClass('open')) {
anchor($href); anchor($href);
$.ajax({ $.ajax({
url : '/' + page + '/' + cat + '/' + project_name, // La ressource ciblée url : '/' + page + '/' + cat + '/' + project_name, // La ressource ciblée
@@ -78,10 +77,12 @@ function click_list() {
complete: function(data) { complete: function(data) {
marg_item(project_name); marg_item(project_name);
closeAjax(); closeAjax();
anchor($href);
}, },
}); });
} else { } else {
$('#item_list').remove(); $('#item_list').remove();
$('.open').removeClass('open'); $('.open').removeClass('open');
@@ -100,11 +101,11 @@ function click_list() {
click_img(e, $this, $href, url, page, cat, project_name) click_img(e, $this, $href, url, page, cat, project_name)
}, },
complete: function(data) { complete: function(data) {
console.log('cat', cat); // console.log('cat', cat);
var $link_card = $('.card > #'+project_name + ' a'); var $link_card = $('.card > #'+project_name + ' a');
setTimeout( function(){ setTimeout( function(){
console.log('project_name', project_name); // console.log('project_name', project_name);
console.log('$link_card', $link_card); // console.log('$link_card', $link_card);
if ($link_card.hasClass('open')) { if ($link_card.hasClass('open')) {
}else { }else {
anchor($href); anchor($href);
@@ -121,6 +122,7 @@ function click_list() {
marg_item(project_name); marg_item(project_name);
closeAjax(); closeAjax();
anchor($href); anchor($href);
scrollTop();
}, },
}); });
} }
@@ -132,6 +134,7 @@ function click_list() {
} }
function click_img(e, $this, $href, url, page, cat, project_name) { function click_img(e, $this, $href, url, page, cat, project_name) {
$('section.' + cat +' .card-image > a').click(function(e) { $('section.' + cat +' .card-image > a').click(function(e) {
var $this = $(this); var $this = $(this);
$href = $this.attr("href"); $href = $this.attr("href");
@@ -161,24 +164,30 @@ function click_img(e, $this, $href, url, page, cat, project_name) {
marg_item(project_name); marg_item(project_name);
anchor($href); anchor($href);
lazy(); lazy();
scrollTop();
// ScrollReveal().reveal($('#item_list > .card'), {
// duration: 1000,
// distance: '10px',
// });
}, },
complete:function() { complete:function() {
closeAjax(); closeAjax();
$('.loader').hide(); $('.loader').hide();
scrollTop();
} }
}); });
} }
}); });
} }
function anchor($href) { function anchor($href) {
var aTag = $("a[href='"+ $href +"']"); var aTag = $("#text_figli a[href='"+ $href +"']");
console.log(aTag);
// console.log('aTag.offset()', aTag.offset().top+10); // console.log('aTag.offset()', aTag.offset().top+10);
$('html,body').animate({scrollTop: aTag.offset().top-7},'slow'); $('html,body').animate({scrollTop: aTag.offset().top - 7},'slow');
} }
@@ -209,7 +218,7 @@ function mouseHover() {
link_id = $(this).attr("id"); link_id = $(this).attr("id");
$('html').append("<div class=circle_hover ></div>"); $('html').append("<div class=circle_hover ></div>");
console.log('link_id',link_id); // console.log('link_id',link_id);
setTimeout(function () { setTimeout(function () {
$('.circle_hover').addClass('open '+ link_id); $('.circle_hover').addClass('open '+ link_id);
@@ -245,14 +254,6 @@ function lazy() {
}); });
} }
function redirection() {
var url = document.location.href;
console.log(url);
if (url != 'https://figureslibres.kevintessier.net/') {
document.location.href="https://figureslibres.kevintessier.net/"
}
}
function animate_burger() { function animate_burger() {
var forEach=function(t,o,r){if("[object Object]"===Object.prototype.toString.call(t))for(var c in t)Object.prototype.hasOwnProperty.call(t,c)&&o.call(r,t[c],c,t);else for(var e=0,l=t.length;l>e;e++)o.call(r,t[e],e,t)}; var forEach=function(t,o,r){if("[object Object]"===Object.prototype.toString.call(t))for(var c in t)Object.prototype.hasOwnProperty.call(t,c)&&o.call(r,t[c],c,t);else for(var e=0,l=t.length;l>e;e++)o.call(r,t[e],e,t)};
var hamburgers = document.querySelectorAll(".hamburger"); var hamburgers = document.querySelectorAll(".hamburger");
@@ -297,12 +298,55 @@ function scrollTop() {
}) })
} }
function imgmouse() {
var currentMousePos = { x: 0, y: 0 };
var $img = $('.list-projets .img');
$(document).mousemove(function(event) {
currentMousePos.x = event.pageX;
currentMousePos.y = event.pageY;
$img.css('left', currentMousePos.x );
$img.css('top', currentMousePos.y );
});
}
function scrollreveal() {
var $txt = $('#text_figli p');
ScrollReveal().reveal($txt, {
duration: 1000,
distance: '10px',
});
var $button = $('.sidebar button');
var $title_menu = $('.title-menu h2');
$button.click(function() {
ScrollReveal().destroy($txt, {
duration: 1000,
distance: '10px',
});
});
}
function clickmenu() {
var $menu = $('.sidebar-right button');
$menu.click(function() {
$('#text_figli').toggleClass('hidden');
})
}
$(document).ready(function($){ $(document).ready(function($){
// redirection(); scrollreveal();
click_link(); click_link();
click_list(); click_list();
mouseHover(); mouseHover();
animate_burger(); animate_burger();
croix(); croix();
imgmouse();
clickmenu();
}); });
@@ -24,7 +24,7 @@ $txt-figli-m: 1.5rem;
// line-height // line-height
$Flhome-m: 2rem; $Flhome-m: 2rem;
$Wi-m: calc( 100% - 0.5rem); $Wi-m: calc( 100% - 1rem);
$Wi80-m: 80%; $Wi80-m: 80%;
$Wi33-m: calc(( 100% / 3 ) - 0.5rem); $Wi33-m: calc(( 100% / 3 ) - 0.5rem);
@@ -2,6 +2,7 @@ $animate: all 0.2s ease-in-out;
#text_figli{ #text_figli{
z-index: 999; z-index: 999;
opacity: 1;
p{ p{
& > a{ & > a{
z-index: 999; z-index: 999;
@@ -70,6 +71,10 @@ $animate: all 0.2s ease-in-out;
} }
} }
} }
&.hidden{
opacity: 0;
transition: 0.3s opacity ease;
}
} }
.circle_hover{ .circle_hover{
@@ -87,7 +92,7 @@ $animate: all 0.2s ease-in-out;
&.publique{ &.publique{
background: background:
url("/user/themes/figureslibres/images/forme2.svg") center no-repeat; url("/user/themes/figureslibres/images/forme2.svg") center no-repeat;
background-size: cover; background-size: contain;
} }
&.sociale{ &.sociale{
background: $color_sociale; background: $color_sociale;
@@ -96,11 +101,11 @@ $animate: all 0.2s ease-in-out;
&.culturelle{ &.culturelle{
background: background:
url("/user/themes/figureslibres/images/forme3.svg") center no-repeat; url("/user/themes/figureslibres/images/forme3.svg") center no-repeat;
background-size: cover; background-size: contain;
} }
&.commanditaires{ &.commanditaires{
background: background:
url("/user/themes/figureslibres/images/forme4.svg") center no-repeat; url("/user/themes/figureslibres/images/forme4.svg") center no-repeat;
background-size: cover; background-size: contain;
} }
} }
@@ -4,6 +4,7 @@
width: 100%; width: 100%;
.card{ .card{
width: $Wi50; width: $Wi50;
height: 100%;
&:nth-child(odd){ &:nth-child(odd){
margin-right: $margI; margin-right: $margI;
} }
@@ -11,7 +12,6 @@
z-index: 999; z-index: 999;
display: inline-flex; display: inline-flex;
width: 100%; width: 100%;
// margin-bottom: $marg;
& > * { & > * {
margin-right: $marg; margin-right: $marg;
} }
@@ -13,13 +13,13 @@ body.sticky-footer {
.home{ .home{
footer{ footer{
color: #acb3c2; color: #acb3c2;
display: inline-flex;
position: fixed;
bottom: 20px;
right: 20px;
p{ p{
font-size: 1rem!important; font-size: 1rem!important;
line-height: 1rem!important; line-height: 1rem!important;
display: inline-flex;
position: fixed;
bottom: 20px;
right: 20px;
a{ a{
img{ img{
width: 20px!important; width: 20px!important;
@@ -20,13 +20,23 @@
body{ body{
#start{ #start{
width: $Wi-m; width: $Wi-m;
margin: 0rem auto 2rem auto;
padding-right: 2rem;
#text_figli{ #text_figli{
p{ p{
font-size: 1.7rem; font-size: 1.7rem;
line-height: 2.3rem; line-height: 2.3rem;
a{
&:before,
&:after {
width: 50%;
opacity: 1;
background-color: black;
}
}
} }
#item_list{ #item_list{
width: $Wi-m; width: 100%;
.card{ .card{
width: calc(100%); width: calc(100%);
margin: 0 0 0.5rem 0; margin: 0 0 0.5rem 0;
@@ -49,11 +59,51 @@
} }
} }
.sidebar-right{ .sidebar-right{
display: none; width: 100%;
right: -100%;
#icone_list{
z-index: 0;
width: 100%;
// background-color: #f9f9f9fe;
.hamburger{
float: right;
z-index: 999;
}
}
.list-projets{
z-index: 999;
ul{
text-align: center;
span{
text-align: center;
}
li{
text-align: center;
margin-top: 0!important;
&::before{
width: 100%;
}
a{
padding: 0.5rem;
}
}
}
}
} }
} }
footer{
z-index: 999;
justify-content: center;
width: 100%;
bottom: 0!important;
left: 0!important;
padding: 0.5rem;
background-color: #f9f9f9fe;
}
.circle_hover.open{ .circle_hover.open{
width: 0!important; width: 100px!important;
height: 0!important; height: 100px!important;
} }
} }
@@ -1,82 +1,159 @@
.sidebar-right{ .sidebar-right{
position: fixed; position: fixed;
width: 20%; width: 100%;
height: 100%; height: 100%;
right: calc( -20% + 0.5rem); // right: calc( -20% + 0.5rem);
left: -100vw;
top: 0; top: 0;
transition: 0.3s right ease; transition: 0.3s right ease;
background: #f9f9f9fe; background: white;
z-index: 999; z-index: 1000;
ul{
& > *:not(span) {
// border: 2px solid black;
// border-radius: 50px;
}
}
#icone_list{ #icone_list{
z-index: 999; z-index: 1000;
position: fixed; position: fixed;
top: 0; top: 0;
right: 0; right: 0;
} }
.list-projets{ .list-projets{
height: 100%; height: 100%;
overflow: auto; overflow: hidden;
.title-menu{
padding-left: 0.5rem;
&::after{
content: " ";
width: 0;
height: 1px;
display: block;
margin-top: 0.5rem;
}
}
.container{ .container{
margin: auto; overflow: auto;
padding: 1rem 2rem 2rem 0.5rem;
width: 85%;
float: left;
ul{ ul{
text-align: left; margin-bottom: 20px;
margin: 0;
span.cat{ span.cat{
display: block; display: block;
line-height: 3rem; line-height: 3rem;
font-weight: bold;
padding-left: 23px;
} }
li{ li{
display: inline-flex; display: inline-flex;
width: 100%; align-items: flex-end;
margin-top: -6px; width: auto;
position: relative; position: relative;
&::before{ a{
position: absolute; z-index: 0;
content: " "; display: block;
display: inline-block; background: white;
min-width: 10px; transition: 0.6s background;
height: 100%; .img{
pointer-events: none;
} display: none;
&.culturelle{ position: fixed;
&::before{ width: 300px;
background: $color_culturelle; height: auto;
} z-index: 999;
} transform-origin: center center;
&.sociale{ transform: rotate(0deg);
&::before{ border-radius: 10px;
background: $color_sociale; overflow: hidden;
} }
} &:hover{
&.publique{ z-index: 999;
&::before{ .img{
background: $color_publique; display: block;
transition: all 1s ease;
}
} }
} }
// &::before{
// position: absolute;
// content: " ";
// display: inline-block;
// height: 100%;
// transition: 0.6s background;
// }
&:hover{ &:hover{
&.culturelle{
a{
background: $color_culturelle;
transition: 0.6s background;
}
// &::before{
// }
}
&.sociale{
a{
background: $color_sociale;
transition: 0.6s background;
}
// &::before{}
}
&.publique{
a{
background: $color_publique;
transition: 0.6s background;
}
&::before{}
}
&::before{ &::before{
min-width: 100%; min-width: 100%;
transition: 0.6s min-width; transition: 0.3s background;
} }
} }
} }
a{ a{
color: black; color: black;
display: block;
padding-left: 1rem;
z-index: 999; z-index: 999;
width: 100%;
&.active{ &.active{
color: black; color: black;
} }
} }
} }
} }
.informations{
position: relative;
float: right;
width: 15%;
min-width: 250px;
height: 100%;
&::after{
content: " ";
height: 0;
width: 1px;
display: block;
position: absolute;
top: 0;
margin-right: 1rem;
left:0;
}
}
} }
&.is-active{ &.is-active{
right: 0; left: 0;
transition: 0.3s right ease; transition: 0.5s 0.3s left ease;
.title-menu{
&::after{
width: 100%;
background: black;
transition: 1s 0.9s width ease;
}
}
.informations{
&::after{
background: black;
transition: 1s 0.9s height ease;
height: 100%;
}
}
} }
} }
@@ -10,8 +10,13 @@ header{
} }
} }
a, button{
border: none;
outline: none!important;
}
.home{ .home{
p{ h2, p{
font-size: $txt-figli; font-size: $txt-figli;
line-height: 3rem; line-height: 3rem;
} }
@@ -46,8 +51,8 @@ header{
#item{ #item{
.e-content{ .e-content{
p{ p{
font-size: 1rem; font-size: 1.5rem;
line-height: 1.2rem; line-height: 3rem;
strong{ strong{
font-weight: bold!important; font-weight: bold!important;
} }
@@ -67,7 +72,6 @@ header{
line-height: normal; line-height: normal;
} }
} }
} }
} }
} }
@@ -124,9 +128,38 @@ a.culturelle, span.culturelle{
} }
.sidebar-right{ .sidebar-right{
ul, a{ h2{
font-size: 0.9rem; margin: .5rem 0rem 0rem 0rem;
line-height: 1.2rem; }
ul > span{
font-size: 0.8rem;
line-height: 1rem!important;
text-decoration: underline;
margin-bottom: 0.5rem;
}
ul > li{
font-size: 1.7rem;
line-height: 2rem;
a{
font-size: 1.7rem;
line-height: 2rem;
border-radius: 50px;
}
}
.informations{
padding: 1rem;
&> div{
margin-bottom: 1rem;
}
h3{
font-size: 1.5rem;
line-height: 2rem;
margin: 0;
}
p{
font-size: 1rem;
line-height: 1.5rem;
}
} }
} }
@@ -11,11 +11,23 @@
{% block body %} {% block body %}
<section class="body-wrapper" id="item_list"> <section class="body-wrapper" id="item_list">
<script type="text/javascript">
var $card = $('.card');
ScrollReveal().reveal($card, {
delay: 1000,
distance: '20px',
interval: 100,
});
</script>
{% block item %} {% block item %}
<!-- <div> -->
{% for child in collection %} {% for child in collection %}
{% include 'partials/blog-list-item.html.twig' with {blog: page, page: child} %} {% include 'partials/blog-list-item.html.twig' with {blog: page, page: child} %}
{% endfor %} {% endfor %}
<!-- </div> -->
{% endblock %} {% endblock %}
</section> </section>
{% block aside %} {% block aside %}
@@ -25,6 +25,7 @@
{% block javascripts %} {% block javascripts %}
{% do assets.addJs('theme://js/jquery-3.4.1.min.js', {group:'bottom'}) %} {% do assets.addJs('theme://js/jquery-3.4.1.min.js', {group:'bottom'}) %}
{% do assets.addJs('theme://js/jquery.lazy.min.js', {group:'bottom'}) %} {% do assets.addJs('theme://js/jquery.lazy.min.js', {group:'bottom'}) %}
{% do assets.addJs('theme://js/scrollreveal.min.js', {group:'bottom'}) %}
{% do assets.addJs('theme://js/site.js', {group:'bottom'}) %} {% do assets.addJs('theme://js/site.js', {group:'bottom'}) %}
{% endblock %} {% endblock %}
@@ -38,17 +39,15 @@
<section id="start"> <section id="start">
{% block aside %}
{% include 'partials/sidebar.html.twig' %}
{% endblock %}
{% block body %} {% block body %}
<div class="body-center" id="text_figli"> <div class="body-center" id="text_figli">
{% block content %}{% endblock %} {% block content %}{% endblock %}
</div> </div>
{% endblock %} {% endblock %}
{% block aside %}
{% include 'partials/sidebar.html.twig' %}
{% endblock %}
</section> </section>
{% block footer %} {% block footer %}
@@ -13,9 +13,9 @@
<div class="card-image"> <div class="card-image">
{% for image in page.media.images %} {% for image in page.media.images %}
{% set services_image = image.derivatives(1920).sizes('100vw') %} {% set services_image = image.derivatives(1920).sizes('100vw') %}
<img class="lazy" data-src="{{ services_image.url() }}" data-srcset="{{ services_image.srcset() }}"> <img class="lazy" data-src="{{ services_image.url() }}" data-srcset="{{ services_image.srcset() }}">
{% endfor %} {% endfor %}
</div> </div>
@@ -3,7 +3,9 @@
{% import _self as macro %} {% import _self as macro %}
{% set image = page.media.images|first %} {% set image = page.media.images|first %}
{% set services_image = page.media.images|first.derivatives(100, 200, 300, 400, 600).sizes('50vw, 30vw') %} {# {% set services_image = page.media.images|first.derivatives(320,1600,300).sizes('(max-width:26em) 100vw, 50vw') %} #}
{% set services_image = page.media.images|first%}
{% if image %} {% if image %}
<!-- card projet --> <!-- card projet -->
@@ -25,12 +27,13 @@
{% include 'partials/blog/date.html.twig' %} {% include 'partials/blog/date.html.twig' %}
{% endif %} {% endif %}
</div> </div>
{{ services_image.derivatives(200,600,100).sizes('(max-width:26em) 100vw, 50vw').html(page.header.title, 'images projets', '')}}
<img class="lazy" data-src="{{ services_image.url() }}" data-srcset="{{ services_image.srcset() }}">
</a> </a>
</div> </div>
</div> </div>
{% else %} {% else %}
{% include 'partials/blog/title.html.twig' with {title_level: 'p'} %} {% include 'partials/blog/title.html.twig' with {title_level: 'p'} %}
@@ -8,8 +8,29 @@
</div> </div>
<div class="list-projets close"> <div class="list-projets close">
<div class="title-menu">
<h2>{{site.title}}</h2>
</div>
<div class="container"> <div class="container">
{% include 'partials/taxonomylist.html.twig' with { 'taxonomy':'category'} %} {% include 'partials/taxonomylist.html.twig' with { 'taxonomy':'category'} %}
</div> </div>
<div class="informations">
<div class="equipes">
<h3>L'équipes : </h3>
<p>Bachir Soussi-Chiadmi</p>
<p>Maud Boyer</p>
<p>Sanrine Ripoll</p>
<p>Ouidade Soussi-Chiadmi</p>
<p>Kévin Tessier</p>
</div>
<div class="contact">
<h3>Nous contacter : </h3>
<a href="mailto:bonjour@figureslibres.io">bonjour@figureslibres.io</a>
</div>
<div class="follow">
</div>
</div>
</div> </div>
</div> </div>
@@ -13,13 +13,22 @@
{% set options = { items: {'@taxonomy': {'category': tax} } } %} {% set options = { items: {'@taxonomy': {'category': tax} } } %}
{% set my_collection = page.collection(options) %} {% set my_collection = page.collection(options) %}
{% for i in my_collection %} {% for i in my_collection %}
{% if i.media.images|first %} {% if i.media.images|first %}
<li class="{{i.parent.folder}}"> <li class="{{i.parent.folder}}">
<a id="{{i.parent.folder}}" href="{{i.url}}">{{i.title}}</a> <a id="{{i.parent.folder}}" href="{{i.url}}">{{i.title}}
{% set image = page.media.images|first %} {% set images = i.media.images|slice(0,1) %}
</li>
{% endif %} {% for image in images %}
{% set services_image = image.derivatives(320,1600,300).sizes('(max-width:26em) 100vw, 50vw').html(i.title) %}
<div class="img">
{{services_image}}
</div>
{% endfor %}
</a> /
</li>
{% endif %}
{% endfor %} {% endfor %}
</ul> </ul>
{% endfor %} {% endfor %}