2021-06-07 16:13:24 +00:00
{% load layout %}
{% load i18n %}
{% load static %}
2022-02-19 23:29:47 +00:00
{% load sass_tags %}
2020-01-25 23:25:19 +00:00
<!DOCTYPE html>
2021-04-22 18:41:58 +00:00
< html lang = "{% get_lang %}" >
2020-01-25 23:25:19 +00:00
< head >
2021-09-19 00:09:18 +00:00
< title > {% block title %}BookWyrm{% endblock %} - {{ site.name }}< / title >
2020-01-25 23:25:19 +00:00
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
2022-03-01 22:38:50 +00:00
< link href = "{% sass_src 'css/themes/bookwyrm-light.scss' %}" rel = "stylesheet" type = "text/css" / >
2020-01-25 23:25:19 +00:00
2021-09-10 23:47:59 +00:00
< link rel = "search" type = "application/opensearchdescription+xml" href = "{% url 'opensearch' %}" title = "{% blocktrans with site_name=site.name %}{{ site_name }} search{% endblocktrans %}" / >
2021-06-07 16:13:24 +00:00
< link rel = "shortcut icon" type = "image/x-icon" href = "{% if site.favicon %}{% get_media_prefix %}{{ site.favicon }}{% else %}{% static " images / favicon . ico " % } { % endif % } " >
2020-01-25 23:25:19 +00:00
2021-06-18 17:15:36 +00:00
{% if preview_images_enabled is True %}
< meta name = "twitter:card" content = "summary_large_image" >
{% else %}
2020-01-25 23:25:19 +00:00
< meta name = "twitter:card" content = "summary" >
2021-06-18 17:15:36 +00:00
{% endif %}
2021-09-19 00:09:18 +00:00
< meta name = "twitter:title" content = "{% if title %}{{ title }} - {% endif %}{{ site.name }}" >
< meta name = "og:title" content = "{% if title %}{{ title }} - {% endif %}{{ site.name }}" >
2021-01-04 20:58:31 +00:00
< meta name = "twitter:description" content = "{{ site.instance_tagline }}" >
< meta name = "og:description" content = "{{ site.instance_tagline }}" >
2021-01-04 20:47:10 +00:00
2021-05-26 12:44:15 +00:00
{% block opengraph_images %}
2021-05-28 15:00:07 +00:00
{% include 'snippets/opengraph_images.html' %}
2021-05-26 12:44:15 +00:00
{% endblock %}
2021-01-04 20:47:10 +00:00
< meta name = "twitter:image:alt" content = "BookWyrm Logo" >
2021-12-20 22:38:18 +00:00
{% block head_links %}{% endblock %}
2020-01-25 23:25:19 +00:00
< / head >
< body >
2022-02-17 18:02:27 +00:00
{% block body %}
2021-04-15 19:51:14 +00:00
< nav class = "navbar" aria-label = "main navigation" >
< div class = "container" >
< div class = "navbar-brand" >
< a class = "navbar-item" href = "/" >
2021-12-04 15:17:51 +00:00
< img class = "image logo" src = "{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static " images / logo-small . png " % } { % endif % } " alt = "{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}" >
2021-04-15 19:51:14 +00:00
< / a >
2021-12-17 16:30:14 +00:00
< form class = "navbar-item column is-align-items-start pt-5" action = "{% url 'search' %}" >
2021-04-15 19:51:14 +00:00
< div class = "field has-addons" >
< div class = "control" >
2021-09-20 19:28:08 +00:00
{% if user.is_authenticated %}
{% trans "Search for a book, user, or list" as search_placeholder %}
{% else %}
{% trans "Search for a book" as search_placeholder %}
{% endif %}
< input aria-label = "{{ search_placeholder }}" id = "search_input" class = "input" type = "text" name = "q" placeholder = "{{ search_placeholder }}" value = "{{ query }}" >
2021-04-15 19:51:14 +00:00
< / div >
< div class = "control" >
< button class = "button" type = "submit" >
< span class = "icon icon-search" title = "{% trans 'Search' %}" >
< span class = "is-sr-only" > {% trans "Search" %}< / span >
< / span >
< / button >
< / div >
2020-11-21 05:19:26 +00:00
< / div >
2021-04-15 19:51:14 +00:00
< / form >
2020-09-28 21:47:53 +00:00
2021-12-17 16:30:14 +00:00
< button type = "button" tabindex = "0" class = "navbar-burger pulldown-menu my-4" data-controls = "main_nav" aria-expanded = "false" >
< i class = "icon icon-dots-three-vertical" aria-hidden = "true" > < / i >
< span class = "is-sr-only" > {% trans "Main navigation menu" %}< / span >
< / button >
2021-01-18 04:31:37 +00:00
< / div >
2020-09-28 21:47:53 +00:00
2021-08-09 01:40:47 +00:00
< div class = "navbar-menu" id = "main_nav" >
2021-04-15 19:51:14 +00:00
< div class = "navbar-start" >
{% if request.user.is_authenticated %}
2021-12-17 16:30:14 +00:00
< a href = "/#feed" class = "navbar-item mt-3 py-0" >
2021-04-15 19:51:14 +00:00
{% trans "Feed" %}
< / a >
2021-12-17 16:30:14 +00:00
< a href = "{% url 'lists' %}" class = "navbar-item mt-3 py-0" >
2021-04-15 19:51:14 +00:00
{% trans "Lists" %}
2020-09-30 18:56:02 +00:00
< / a >
2021-12-17 16:30:14 +00:00
< a href = "{% url 'discover' %}" class = "navbar-item mt-3 py-0" >
2021-08-08 15:07:20 +00:00
{% trans "Discover" %}
2021-05-10 22:55:42 +00:00
< / a >
2021-04-15 19:51:14 +00:00
{% endif %}
2020-03-15 21:15:36 +00:00
< / div >
2021-04-15 19:51:14 +00:00
< div class = "navbar-end" >
{% if request.user.is_authenticated %}
2021-12-17 16:30:14 +00:00
< div class = "navbar-item mt-3 py-0 has-dropdown is-hoverable" >
2021-04-15 19:51:14 +00:00
< a
href="{{ request.user.local_path }}"
class="navbar-link pulldown-menu"
role="button"
aria-expanded="false"
tabindex="0"
aria-haspopup="true"
aria-controls="navbar-dropdown"
>
{% include 'snippets/avatar.html' with user=request.user %}
< span class = "ml-2" > {{ request.user.display_name }}< / span >
< / a >
2021-08-09 01:40:47 +00:00
< ul class = "navbar-dropdown" id = "navbar_dropdown" >
2021-08-08 15:07:20 +00:00
< li >
< a href = "{% url 'directory' %}" class = "navbar-item" >
{% trans "Directory" %}
< / a >
< / li >
2021-04-15 19:51:14 +00:00
< li >
2021-05-10 22:55:42 +00:00
< a href = "{% url 'user-shelves' request.user.localname %}" class = "navbar-item" >
{% trans 'Your Books' %}
2021-04-15 19:51:14 +00:00
< / a >
< / li >
< li >
2021-05-10 22:55:42 +00:00
< a href = "{% url 'direct-messages' %}" class = "navbar-item" >
{% trans "Direct Messages" %}
2021-04-15 19:51:14 +00:00
< / a >
< / li >
< li >
2021-05-04 16:34:16 +00:00
< a href = "{% url 'prefs-profile' %}" class = "navbar-item" >
2021-04-15 19:51:14 +00:00
{% trans 'Settings' %}
< / a >
< / li >
2021-08-29 15:14:53 +00:00
{% if perms.bookwyrm.create_invites or perms.moderate_user %}
2021-09-28 17:21:12 +00:00
< li class = "navbar-divider" role = "presentation" > < / li >
2021-04-15 19:51:14 +00:00
{% endif %}
2021-08-29 15:14:53 +00:00
{% if perms.bookwyrm.create_invites and not site.allow_registration %}
2021-04-15 19:51:14 +00:00
< li >
< a href = "{% url 'settings-invite-requests' %}" class = "navbar-item" >
{% trans 'Invites' %}
< / a >
< / li >
{% endif %}
2021-08-29 15:14:53 +00:00
{% if perms.bookwyrm.moderate_user %}
2021-04-15 19:51:14 +00:00
< li >
2021-09-11 14:17:14 +00:00
< a href = "{% url 'settings-dashboard' %}" class = "navbar-item" >
2021-04-15 19:51:14 +00:00
{% trans 'Admin' %}
< / a >
< / li >
{% endif %}
2021-09-28 17:21:12 +00:00
< li class = "navbar-divider" role = "presentation" > < / li >
2021-04-15 19:51:14 +00:00
< li >
2021-05-04 16:34:16 +00:00
< a href = "{% url 'logout' %}" class = "navbar-item" >
2021-04-15 19:51:14 +00:00
{% trans 'Log out' %}
< / a >
< / li >
< / ul >
< / div >
2021-12-17 16:30:14 +00:00
< div class = "navbar-item mt-3 py-0" >
2021-05-04 16:34:16 +00:00
< a href = "{% url 'notifications' %}" class = "tags has-addons" >
2021-04-15 19:51:14 +00:00
< span class = "tag is-medium" >
< span class = "icon icon-bell" title = "{% trans 'Notifications' %}" >
< span class = "is-sr-only" > {% trans "Notifications" %}< / span >
< / span >
< / span >
2021-05-23 01:34:34 +00:00
{% with request.user.unread_notification_count as notification_count %}
2021-04-30 14:49:34 +00:00
< span
2021-05-23 01:34:34 +00:00
class="{% if not notification_count %}is-hidden {% elif request.user.has_unread_mentions %}is-danger {% endif %}tag is-medium transition-x"
2021-04-30 14:49:34 +00:00
data-poll-wrapper
>
2021-05-23 01:34:34 +00:00
< span data-poll = "notifications" > {{ notification_count }}< / span >
2021-04-15 19:51:14 +00:00
< / span >
2021-05-23 01:34:34 +00:00
{% endwith %}
2021-04-15 19:51:14 +00:00
< / a >
< / div >
{% else %}
2021-12-17 16:30:14 +00:00
< div class = "navbar-item pt-5 pb-0" >
2021-04-15 19:51:14 +00:00
{% if request.path != '/login' and request.path != '/login/' %}
< div class = "columns" >
< div class = "column" >
2021-08-02 23:24:36 +00:00
< form name = "login" method = "post" action = "{% url 'login' %}?next={{ request.path }}" >
2021-04-15 19:51:14 +00:00
{% csrf_token %}
< div class = "columns is-variable is-1" >
< div class = "column" >
< label class = "is-sr-only" for = "id_localname" > {% trans "Username:" %}< / label >
< input type = "text" name = "localname" maxlength = "150" class = "input" required = "" id = "id_localname" placeholder = "{% trans 'username' %}" >
< / div >
< div class = "column" >
2021-10-16 17:20:06 +00:00
< label class = "is-sr-only" for = "id_password" > {% trans "Password:" %}< / label >
2021-04-15 19:51:14 +00:00
< input type = "password" name = "password" maxlength = "128" class = "input" required = "" id = "id_password" placeholder = "{% trans 'password' %}" >
2021-05-04 16:34:16 +00:00
< p class = "help" > < a href = "{% url 'password-reset' %}" > {% trans "Forgot your password?" %}< / a > < / p >
2021-04-15 19:51:14 +00:00
< / div >
< div class = "column is-narrow" >
< button class = "button is-primary" type = "submit" > {% trans "Log in" %}< / button >
< / div >
2021-01-14 03:14:01 +00:00
< / div >
2021-04-15 19:51:14 +00:00
< / form >
< / div >
{% if site.allow_registration and request.path != '' and request.path != '/' %}
< div class = "column is-narrow" >
< a href = "/" class = "button is-link" >
{% trans "Join" %}
< / a >
< / div >
{% endif %}
2021-01-03 19:10:04 +00:00
< / div >
2021-01-03 23:41:20 +00:00
{% endif %}
2020-09-28 21:47:53 +00:00
< / div >
2021-01-03 23:41:20 +00:00
{% endif %}
2020-01-25 23:25:19 +00:00
< / div >
< / div >
2020-09-28 21:47:53 +00:00
< / div >
< / nav >
2021-05-20 22:11:47 +00:00
{% if request.user.is_authenticated and active_announcements.exists %}
2021-05-19 22:35:14 +00:00
< div class = "block is-flex-grow-1" >
< div class = "container" >
{% for announcement in active_announcements %}
2021-05-20 15:09:35 +00:00
{% include 'snippets/announcement.html' with announcement=announcement %}
2021-05-19 22:35:14 +00:00
{% endfor %}
< / div >
< / div >
{% endif %}
2020-01-25 23:25:19 +00:00
2022-02-12 15:10:40 +00:00
< main class = "section is-flex-grow-1" >
2021-04-15 19:51:14 +00:00
< div class = "container" >
2022-02-18 01:10:12 +00:00
{# almost every view needs to know the user shelves #}
{% with request.user.shelf_set.all as user_shelves %}
2021-04-15 19:51:14 +00:00
{% block content %}
{% endblock %}
2022-02-18 01:10:12 +00:00
{% endwith %}
2021-04-15 19:51:14 +00:00
< / div >
2022-02-12 15:10:40 +00:00
< / main >
2020-01-25 23:25:19 +00:00
2021-09-10 17:12:37 +00:00
< div role = "region" aria-live = "polite" id = "live-messages" >
< p id = "status-success-message" class = "live-message is-sr-only is-hidden" > {% trans "Successfully posted status" %}< / p >
< p id = "status-error-message" class = "live-message notification is-danger p-3 pr-5 pl-5 is-hidden" > {% trans "Error posting status" %}< / p >
< / div >
2021-01-03 20:53:51 +00:00
< footer class = "footer" >
< div class = "container" >
< div class = "columns" >
2021-04-30 18:03:36 +00:00
< div class = "column is-one-fifth" >
2021-01-03 20:53:51 +00:00
< p >
2021-10-15 20:42:32 +00:00
< a href = "{% url 'about' %}" > {% blocktrans with site_name=site.name %}About {{ site_name }}{% endblocktrans %}< / a >
2021-01-03 20:53:51 +00:00
< / p >
{% if site.admin_email %}
< p >
2021-02-27 22:22:39 +00:00
< a href = "mailto:{{ site.admin_email }}" > {% trans "Contact site admin" %}< / a >
2021-01-03 20:53:51 +00:00
< / p >
{% endif %}
2021-04-30 18:03:36 +00:00
< p >
< a href = "https://docs.joinbookwyrm.com/" > {% trans "Documentation" %}< / a >
< / p >
< / div >
< div class = "column content is-two-fifth" >
{% if site.support_link %}
< p >
< span class = "icon icon-heart" > < / span >
{% blocktrans with site_name=site.name support_link=site.support_link support_title=site.support_title %}Support {{ site_name }} on < a href = "{{ support_link }}" target = "_blank" > {{ support_title }}< / a > {% endblocktrans %}
< / p >
{% endif %}
< p >
2021-05-14 22:21:26 +00:00
{% blocktrans %}BookWyrm's source code is freely available. You can contribute or report issues on < a href = "https://github.com/mouse-reeve/bookwyrm" > GitHub< / a > .{% endblocktrans %}
2021-04-30 18:03:36 +00:00
< / p >
2021-01-03 20:53:51 +00:00
< / div >
2021-04-30 17:42:27 +00:00
{% if site.footer_item %}
< div class = "column" >
< p > {{ site.footer_item|safe }}< / p >
< / div >
{% endif %}
2020-12-11 20:07:37 +00:00
< / div >
< / div >
2021-01-03 20:53:51 +00:00
< / footer >
2022-02-17 21:01:36 +00:00
{% endblock %}
2020-12-11 20:07:37 +00:00
2020-03-15 21:15:36 +00:00
< script >
2020-03-16 01:12:45 +00:00
var csrf_token = '{{ csrf_token }}';
2020-03-15 21:15:36 +00:00
< / script >
2021-09-09 14:39:38 +00:00
2021-09-10 17:57:16 +00:00
< script src = "{% static " js / bookwyrm . js " % } ? v = {{ js_cache } } " > < / script >
< script src = "{% static " js / localstorage . js " % } ? v = {{ js_cache } } " > < / script >
< script src = "{% static " js / status_cache . js " % } ? v = {{ js_cache } } " > < / script >
2021-09-09 14:39:38 +00:00
2021-03-19 17:47:32 +00:00
{% block scripts %}{% endblock %}
2021-09-09 14:39:38 +00:00
2020-01-25 23:25:19 +00:00
< / body >
< / html >