forked from 00dani/lemoncurry
Complete migration to Jinja2 by porting the home page template
This commit is contained in:
parent
b145f4ada9
commit
77816b6c5d
9 changed files with 137 additions and 324 deletions
|
@ -1,17 +0,0 @@
|
|||
{% extends 'lemoncurry/layout.html' %}
|
||||
{% load absolute_url static %}
|
||||
|
||||
{% block head %}
|
||||
<link rel="shortlink" href="{{ entry.short_url }}" />
|
||||
<link rel="alternate" type="application/json+oembed" href="https://wirres.net/oembed/oembed.php?url={{ uri | absolute_url | urlencode }}" />
|
||||
{% endblock %}
|
||||
|
||||
{% block styles %}
|
||||
<link rel="stylesheet" type="text/stylus" href="{% static 'entries/css/h-entry.styl' %}" />
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
<div class="entry">
|
||||
{% include 'entries/h-entry.html' %}
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -1,67 +0,0 @@
|
|||
{% load bleach friendly_url humanize jsonify markdown %}<article class="card h-entry">
|
||||
{% if entry.photo %}<img class="card-img-top u-photo" src="{{ entry.photo.url }}" />{% endif %}
|
||||
|
||||
{% if entry.in_reply_to %}{% with reply=entry.reply_context %}
|
||||
<article class="card-header media u-in-reply-to h-cite">
|
||||
<a class="align-self-center p-author h-card" href="{{ reply.author.url }}">
|
||||
<img class="mr-3 rounded" width="100" src="{{ reply.author.photo }}"
|
||||
alt="{{ reply.author.name }}" title="{{ reply.author.name }}" />
|
||||
</a>
|
||||
<div class="media-body">
|
||||
{% if reply.name %}<h4 class="p-name">{{ reply.name }}</h4>{% endif %}
|
||||
<div class="e-content{% if not reply.name %} p-name{% endif %}">{{ reply.content | bleach }}</div>
|
||||
</div>
|
||||
</article>{% endwith %}{% endif %}
|
||||
|
||||
<div class="card-body">
|
||||
{% if entry.name %}<h4 class="card-title p-name">{{ entry.name }}</h4>{% endif %}
|
||||
<div class="e-content{% if not entry.name %} p-name{% endif %}">{{ entry.content | markdown }}</div>
|
||||
</div>
|
||||
|
||||
<div class="card-footer">
|
||||
<a class="p-author h-card" href="{{ entry.author.url }}">
|
||||
<img class="u-photo" src="{{ entry.author.avatar.url }}" />
|
||||
{{ entry.author.first_name }} {{ entry.author.last_name }}
|
||||
</a>
|
||||
<a class="u-uid u-url" href="{{ entry.url }}">
|
||||
<time class="dt-published" datetime="{{ entry.published.isoformat }}">
|
||||
<i class="fas fa-calendar"></i>
|
||||
{{ entry.published | naturaltime }}
|
||||
</time>
|
||||
</a>
|
||||
{% if entry.updated != entry.published %}
|
||||
<time class="dt-updated" datetime="{{ entry.updated.isoformat }}">
|
||||
<i class="fas fa-pencil-alt"></i>
|
||||
{{ entry.updated | naturaltime }}
|
||||
</time>
|
||||
{% endif %}
|
||||
<a class="u-url" href="{{ entry.short_url }}">
|
||||
<i class="fas fa-link"></i>
|
||||
{{ entry.short_url | friendly_url }}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
{% if entry.cats.exists %}
|
||||
<div class="card-footer">
|
||||
{% for c in entry.cats.all %}
|
||||
<a class="p-category" href="{{ c.url }}">
|
||||
<i class="fas fa-paw"></i>
|
||||
{{ c.name }}
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if entry.syndications.exists %}
|
||||
<div class="card-footer">
|
||||
{% for s in entry.syndications.all %}
|
||||
<a class="u-syndication" href="{{ s.url }}">
|
||||
<i class="{{ s.profile.site.icon }}" aria-hidden="true"></i>
|
||||
{{ s.profile }}
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<script class="p-json-ld" type="application/ld+json">{{ entry.json_ld | jsonify }}</script>
|
||||
</article>
|
|
@ -1,17 +0,0 @@
|
|||
{% extends 'lemoncurry/layout.html' %}
|
||||
{% load static %}
|
||||
{% block html_class %}h-feed{% endblock %}
|
||||
|
||||
{% block styles %}
|
||||
<link rel="stylesheet" type="text/stylus" href="{% static 'entries/css/h-entry.styl' %}" />
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
<ol class="list-unstyled entries">
|
||||
{% for entry in entries %}
|
||||
<li>
|
||||
{% include 'entries/h-entry.html' %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ol>
|
||||
{% endblock %}
|
102
home/jinja2/home/index.html
Normal file
102
home/jinja2/home/index.html
Normal file
|
@ -0,0 +1,102 @@
|
|||
{% extends 'lemoncurry/layout.html' %}
|
||||
|
||||
{% block html_attr %}
|
||||
class="h-feed"{{ super() }}
|
||||
{%- endblock %}
|
||||
|
||||
{% block styles %}
|
||||
<link rel="stylesheet" type="text/stylus" href="{{ static('home/css/index.styl') }}" />
|
||||
<link rel="stylesheet" type="text/stylus" href="{{ static('entries/css/h-entry.styl') }}" />
|
||||
{% endblock %}
|
||||
|
||||
{% block head %}
|
||||
{% for key in user.keys.all() %}
|
||||
<link rel="pgpkey" href="{{ key.file.url }}" />
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
<aside class="author">
|
||||
<article class="h-card p-author card">
|
||||
<a class="u-uid u-url" href="{{ user.full_url }}">
|
||||
{% if user.avatar %}
|
||||
<img class="u-photo card-img-top" src="{{ user.avatar.url }}" alt="{{ user.name }}" />
|
||||
{% endif %}
|
||||
</a>
|
||||
|
||||
<div class="card-body">
|
||||
<h4 class="p-name card-title">
|
||||
<span class="p-given-name">{{ user.first_name }}</span> <span class="p-family-name">{{ user.last_name }}</span>
|
||||
</h4>
|
||||
{% if user.note %}
|
||||
<div class="p-note">
|
||||
{{ user.note | markdown }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="card-footer">
|
||||
<ul class="profiles">
|
||||
<li>
|
||||
<a class="u-email" rel="me" href="mailto:{{ user.email }}">
|
||||
<i class="fas fa-envelope" aria-hidden="true"></i>
|
||||
{{ user.email }}
|
||||
</a>
|
||||
</li>
|
||||
{% if user.xmpp %}
|
||||
|
||||
<li>
|
||||
<a class="u-impp" rel="me" href="xmpp:{{ user.xmpp }}">
|
||||
<i class="openwebicons-xmpp" aria-hidden="true"></i>
|
||||
{{ user.xmpp }}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
{% if user.keys.exists() %}
|
||||
|
||||
<div class="card-footer">
|
||||
<ul class="profiles">
|
||||
{% for key in user.keys.all() %}
|
||||
<a class="u-key" href="{{ key.file.url }}">
|
||||
<i class="fas fa-key" aria-hidden="true"></i>
|
||||
{{ key.pretty_print() }}
|
||||
</a>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if user.profiles.exists() %}
|
||||
|
||||
<div class="card-footer">
|
||||
<ul class="profiles">
|
||||
{% for profile in user.profiles.all() %}
|
||||
<a class="u-url" rel="me" href="{{ profile.url }}" title="{{ profile }}">
|
||||
<i class="{{ profile.site.icon }}" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ profile }}</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<script class="p-json-ld" type="application/ld+json">{{ user.json_ld | tojson }}</script>
|
||||
</article>
|
||||
</aside>
|
||||
|
||||
{% import 'entries/h-entry.html' as h %}
|
||||
<ol class="list-unstyled entries">
|
||||
{% for entry in entries %}
|
||||
<li>
|
||||
{{ h.hEntry(entry, indent_width=10) }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ol>
|
||||
{% endblock %}
|
||||
|
||||
{% block foot %}
|
||||
<script type="text/javascript">
|
||||
tippy('.profiles [title]', {arrow: true});
|
||||
</script>
|
||||
{% endblock %}
|
|
@ -1,70 +0,0 @@
|
|||
{% extends 'lemoncurry/layout.html' %}
|
||||
{% load jsonify markdown static %}
|
||||
{% block html_class %}h-feed{% endblock %}
|
||||
{% block styles %}
|
||||
<link rel="stylesheet" type="text/stylus" href="{% static 'home/css/index.styl' %}" />
|
||||
<link rel="stylesheet" type="text/stylus" href="{% static 'entries/css/h-entry.styl' %}" />
|
||||
{% endblock %}
|
||||
|
||||
{% block head %}{% for key in user.keys.all %}<link rel="pgpkey" href="{{ key.file.url }}" />{% endfor %}{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
<aside class="author">
|
||||
<article class="h-card card p-author">
|
||||
<a class="u-uid u-url" href="{{ uri }}">
|
||||
{% if user.avatar %}<img class="card-img-top u-photo" src="{{ user.avatar.url }}" alt="{{ user.first_name }} {{ user.last_name }}" />{% endif %}
|
||||
</a>
|
||||
|
||||
<div class="card-body">
|
||||
<h4 class="card-title p-name">
|
||||
<span class="p-given-name">{{ user.first_name }}</span> <span class="p-family-name">{{ user.last_name }}</span>
|
||||
</h4>
|
||||
{% if user.note %}<div class="p-note">{{ user.note | markdown }}</div>{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="card-footer">
|
||||
<ul class="profiles">
|
||||
<li><a class="u-email" rel="me" href="mailto:{{ user.email }}">
|
||||
<i class="fas fa-envelope"></i> {{ user.email }}
|
||||
</a></li>
|
||||
{% if user.xmpp %}<li><a class="u-impp" rel="me" href="xmpp:{{ user.xmpp }}">
|
||||
<i class="openwebicons-xmpp" aria-hidden="true"></i> {{ user.xmpp }}
|
||||
</a></li>{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{% if user.keys.exists %}<div class="card-footer">
|
||||
<ul class="profiles">
|
||||
{% for key in user.keys.all %}<li>
|
||||
<a class="u-key" href="{{ key.file.url }}">
|
||||
<i class="fas fa-key"></i> {{ key.pretty_print }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>{% endif %}
|
||||
|
||||
{% if user.profiles.exists %}<div class="card-footer">
|
||||
<ul class="profiles">
|
||||
{% for profile in user.profiles.all %}<li>
|
||||
<a class="u-url" rel="me" href="{{ profile.url }}" title="{{ profile }}"><i class="{{ profile.site.icon }}" aria-hidden="true"></i><span class="sr-only">{{ profile }}</span></a>
|
||||
</li>{% endfor %}
|
||||
</ul>
|
||||
</div>{% endif %}
|
||||
|
||||
<script class="p-json-ld" type="application/ld+json">{{ user.json_ld | jsonify }}</script>
|
||||
</article>
|
||||
</aside>
|
||||
<ol class="list-unstyled entries">
|
||||
{% for entry in entries %}
|
||||
<li>
|
||||
{% include 'entries/h-entry.html' %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ol>
|
||||
{% endblock %}
|
||||
{% block foot %}
|
||||
<script type="text/javascript">
|
||||
tippy('.profiles [title]', {arrow: true});
|
||||
</script>
|
||||
{% endblock %}
|
|
@ -81,6 +81,41 @@
|
|||
|
||||
<footer>
|
||||
<p>all content licensed under <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">cc by-sa 4.0</a></p>
|
||||
{% if entries is defined and entries.has_other_pages() %}
|
||||
|
||||
<nav>
|
||||
<ul class="pagination">
|
||||
{% if entries.prev %}
|
||||
<li class="page-item">
|
||||
<a class="page-link" rel="prev" href="{{ entries.prev.url }}">
|
||||
<i class="fas fa-step-backward" aria-hidden="true"></i> <span class="sr-only">previous page</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
{% endif %}
|
||||
{% for page in entries.pages %}
|
||||
{% if page.current %}
|
||||
<li class="page-item active">
|
||||
<span class="page-link">{{ page.i }} <span class="sr-only">(current page)</span></span>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="page-item">
|
||||
<a class="page-link" href="{{ page.url }}">{{ page.i }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if entries.next %}
|
||||
|
||||
<li class="page-item">
|
||||
<a class="page-link" rel="next" href="{{ entries.next.url }}">
|
||||
<i class="fas fa-step-forward" aria-hidden="true"></i> <span class="sr-only">next page</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
{% endif %}
|
||||
<p>powered by <a rel="code-repository" href="{{ package.repository }}/src/tag/v{{ package.version }}">{{ package.name }} {{ package.version }}</a></p>
|
||||
</footer>
|
||||
|
||||
|
|
|
@ -1,134 +0,0 @@
|
|||
{% load analytical compress favicon lemoncurry_tags meta static theme_colour %}<!doctype html>
|
||||
<html dir="ltr" lang="en" class="{% block html_class %}{% endblock %}">
|
||||
<head{% meta_namespaces %}>{% site_name as site_name %}{% request_uri request as uri %}{% request_origin request as origin %}
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
||||
|
||||
<base href="{{ origin }}" />
|
||||
<link rel="canonical" href="{{ uri }}" />
|
||||
<title class="p-name">{% if title %}{{ title }} ~ {% endif %}{{ site_name }}</title>
|
||||
|
||||
{% analytical_head_top %}
|
||||
{% if atom %}<link rel="alternate" type="application/atom+xml" href="{{ atom }}" />{% endif %}
|
||||
{% if rss %}<link rel="alternate" type="application/rss+xml" href="{{ rss }}" /> {% endif %}
|
||||
{% block head %}{% endblock %}
|
||||
|
||||
<link rel="authorization_endpoint" href="{{ origin }}{% url 'lemonauth:indie' %}" />
|
||||
<link rel="token_endpoint" href="{{ origin }}{% url 'lemonauth:token' %}" />
|
||||
<link rel="micropub" href="{{ origin }}{% url 'micropub:micropub' %}" />
|
||||
<link rel="openid.delegate" href="{{ uri }}" />
|
||||
<link rel="openid.server" href="https://openid.indieauth.com/openid" />
|
||||
|
||||
<link rel="hub" href="{% get_push_hub %}" />
|
||||
<link rel="self" href="{{ uri }}" />
|
||||
|
||||
<link rel="manifest" href="{% url 'wellknowns:manifest' %}" />
|
||||
<meta name="theme-color" content="{% theme_colour 2 %}" />
|
||||
{% get_package_json as package %}
|
||||
<meta name="generator" content="{{ package.name }} {{ package.version }}" />
|
||||
|
||||
<meta property="og:url" content="{{ uri }}" />
|
||||
<meta property="og:title" content="{% firstof title site_name %}" />
|
||||
{% include 'meta/meta.html' %}
|
||||
{% get_favicons 'favicon/' %}
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css"
|
||||
integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/monokai.min.css"
|
||||
integrity="sha384-bHqbpRh/XW+phptvH9nQvMKHwPH1ZbOxpIeAB2D2OIEL4Ni7aZzZgMFpsRra+v1g" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" type="text/css" href="https://unpkg.com/openwebicons@1.4.3/css/openwebicons.min.css"
|
||||
integrity="sha384-Ljk0G9f8GyEhAzrdHNkQc89A/Kpq+sy09gejdAPyMyTDnPe4aDfS/ppZ/rDGM0Y9" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" type="text/css" href="https://unpkg.com/tippy.js@2.5.2/dist/tippy.css"
|
||||
integrity="sha384-JsezPuW/bNd38848K5/8rIEbB+23QGQ8faCF8xEmjFT3i1qujgGiewfYevzMO3J1" crossorigin="anonymous" />
|
||||
{% compress css %}
|
||||
<link rel="stylesheet" type="text/stylus" href="{% static 'lemoncurry/css/layout.styl' %}" />
|
||||
{% block styles %}{% endblock %}
|
||||
{% endcompress %}
|
||||
<script type="text/javascript" defer src="https://use.fontawesome.com/releases/v5.0.13/js/all.js"
|
||||
integrity="sha384-xymdQtn1n3lH2wcu0qhcdaOpQwyoarkgLVxC/wZ5q7h9gHtxICrpcaSUfygqZGOe" crossorigin="anonymous"></script>
|
||||
{% analytical_head_bottom %}
|
||||
</head>
|
||||
<body{% block body_attr %}{% endblock %}>
|
||||
{% analytical_body_top %}
|
||||
<header>
|
||||
<nav class="navbar navbar-expand-md navbar-dark">
|
||||
<a class="navbar-brand" rel="home" href="{% url 'home:index' %}">{% site_name %}</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
|
||||
aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbar">
|
||||
{% block nav_left %}{% nav_left request %}{% endblock %}
|
||||
{% block nav_right %}{% nav_right request %}{% endblock %}
|
||||
</div>
|
||||
</nav>
|
||||
{% if request.resolver_match.view_name %}
|
||||
{% nav_crumbs request.resolver_match %}
|
||||
{% endif %}
|
||||
</header>
|
||||
|
||||
<main>
|
||||
{% block main %}{% endblock %}
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<p>all content licensed under <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">cc by-sa 4.0</a></p>
|
||||
|
||||
{% if entries.has_other_pages %}
|
||||
<nav>
|
||||
<ul class="pagination">
|
||||
{% if entries.prev %}
|
||||
<li class="page-item">
|
||||
<a class="page-link" rel="prev" href="{{ entries.prev.url }}">
|
||||
<i class="fas fa-step-backward"></i><span class="sr-only">previous page</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% for page in entries.pages %}
|
||||
{% if page.current %}
|
||||
<li class="page-item active">
|
||||
<span class="page-link">{{ page.i }} <span class="sr-only">(current page)</span></span>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="page-item">
|
||||
<a class="page-link" href="{{ page.url }}">{{ page.i }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% if entries.next %}
|
||||
<li class="page-item">
|
||||
<a class="page-link" rel="next" href="{{ entries.next.url }}">
|
||||
<i class="fas fa-step-forward"></i><span class="sr-only">next page</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
{% endif %}
|
||||
|
||||
<p>powered by <a rel="code-repository" href="{{ package.repository }}/src/tag/v{{ package.version }}">{{ package.name }} {{ package.version }}</a></p>
|
||||
</footer>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" crossorigin="anonymous"
|
||||
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" crossorigin="anonymous"
|
||||
integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js" crossorigin="anonymous"
|
||||
integrity="sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js" crossorigin="anonymous"
|
||||
integrity="sha384-ZeLYJ2PNSQjvogWP559CDAf02Qb8FE5OyQicqtz/+UhZutbrwyr87Be7NPH/RgyC"></script>
|
||||
<script src="https://unpkg.com/tippy.js@2.5.2/dist/tippy.standalone.min.js" crossorigin="anonymous"
|
||||
integrity="sha384-VEMCz3fC5atUNN+ezSHq2AZIBciT3aWGEZsStnW58gtO9PYb3wenWsYNoxLTbi/M"></script>
|
||||
|
||||
{% compress js %}
|
||||
<script type="text/javascript">
|
||||
hljs.initHighlightingOnLoad();
|
||||
</script>
|
||||
{% block foot %}{% endblock %}
|
||||
{% endcompress %}
|
||||
{% analytical_body_bottom %}
|
||||
</body>
|
||||
</html>
|
|
@ -1,11 +0,0 @@
|
|||
{% load jsonify %}{% if crumbs %}
|
||||
<nav class="breadcrumbs" aria-label="breadcrumb" role="navigation">
|
||||
<ol class="breadcrumb">
|
||||
{% for crumb in crumbs %}
|
||||
<li class="breadcrumb-item"><a href="{{ crumb.url }}">{{ crumb.label }}</a></li>
|
||||
{% endfor %}
|
||||
<li class="breadcrumb-item active" aria-current="page">{% firstof current.label title %}</li>
|
||||
</ol>
|
||||
<script type="application/ld+json">{{ breadcrumb_list | jsonify }}</script>
|
||||
</nav>
|
||||
{% endif %}
|
|
@ -1,8 +0,0 @@
|
|||
{% load activeurl %}{% activeurl %}<ul class="navbar-nav">
|
||||
{% for item in items %}
|
||||
<li class="nav-item"><a class="nav-link" href="{{ item.url }}">
|
||||
<i class="{{ item.icon }} fa-fw"></i>
|
||||
{{ item.label }}
|
||||
</a></li>
|
||||
{% endfor %}
|
||||
</ul>{% endactiveurl %}
|
Loading…
Reference in a new issue