forked from mirrors/bookwyrm
239 lines
11 KiB
HTML
239 lines
11 KiB
HTML
{% extends 'lists/layout.html' %}
|
|
{% load i18n %}
|
|
{% load bookwyrm_tags %}
|
|
{% load bookwyrm_group_tags %}
|
|
{% load markdown %}
|
|
|
|
{% block breadcrumbs %}
|
|
<nav class="breadcrumb subtitle" aria-label="breadcrumbs">
|
|
<ul>
|
|
<li><a href="{% url 'lists' %}">{% trans "Lists" %}</a></li>
|
|
<li class="is-active">
|
|
<a href="#" aria-current="page">
|
|
{{ list.name|truncatechars:30 }}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
{% endblock %}
|
|
|
|
{% block panel %}
|
|
{% if request.user == list.user and pending_count %}
|
|
<div class="block content">
|
|
<p>
|
|
<a href="{% url 'list-curate' list.id %}">{{ pending_count }} book{{ pending_count|pluralize }} awaiting your approval</a>
|
|
</p>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="columns mt-3">
|
|
<section class="column is-three-quarters">
|
|
{% if request.GET.updated %}
|
|
<div class="notification is-primary">
|
|
{% if list.curation != "open" and request.user != list.user and not list.group|is_member:request.user %}
|
|
{% trans "You successfully suggested a book for this list!" %}
|
|
{% else %}
|
|
{% trans "You successfully added a book to this list!" %}
|
|
{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if not items.object_list.exists %}
|
|
<p>{% trans "This list is currently empty" %}</p>
|
|
{% else %}
|
|
<ol start="{{ items.start_index }}" class="ordered-list">
|
|
{% for item in items %}
|
|
<li class="block mb-5">
|
|
<div class="card">
|
|
{% with book=item.book %}
|
|
<div
|
|
class="
|
|
card-content p-0 mb-0
|
|
columns is-gapless
|
|
is-mobile
|
|
"
|
|
>
|
|
<div class="column is-3-mobile is-2-tablet is-cover align to-t">
|
|
<a href="{{ item.book.local_path }}" aria-hidden="true">
|
|
{% include 'snippets/book_cover.html' with cover_class='is-w-auto is-h-m-tablet is-align-items-flex-start' size='medium' %}
|
|
</a>
|
|
</div>
|
|
|
|
<div class="column mx-3 my-2">
|
|
<p>
|
|
{% include 'snippets/book_titleby.html' %}
|
|
</p>
|
|
<p>
|
|
{% include 'snippets/stars.html' with rating=item.book|rating:request.user %}
|
|
</p>
|
|
<div>
|
|
{{ book|book_description|to_markdown|default:""|safe|truncatewords_html:20 }}
|
|
</div>
|
|
{% include 'snippets/shelve_button/shelve_button.html' with book=book %}
|
|
</div>
|
|
</div>
|
|
{% endwith %}
|
|
|
|
<div class="card-footer is-stacked-mobile has-background-white-bis is-align-items-stretch">
|
|
<div class="card-footer-item">
|
|
<p>
|
|
{% blocktrans trimmed with username=item.user.display_name user_path=item.user.local_path %}
|
|
Added by <a href="{{ user_path }}">{{ username }}</a>
|
|
{% endblocktrans %}
|
|
</p>
|
|
</div>
|
|
{% if list.user == request.user or list.group|is_member:request.user %}
|
|
<form
|
|
name="set-position-{{ item.id }}"
|
|
method="post"
|
|
action="{% url 'list-set-book-position' item.id %}"
|
|
class="card-footer-item"
|
|
>
|
|
{% csrf_token %}
|
|
<div class="field has-addons mb-0">
|
|
<div class="control">
|
|
<label for="input-list-position" class="button is-transparent is-small">{% trans "List position" %}</label>
|
|
</div>
|
|
<div class="control">
|
|
<input id="input_list_position_{{ item.id }}" class="input is-small" type="number" min="1" name="position" value="{{ item.order }}">
|
|
</div>
|
|
<div class="control">
|
|
<button type="submit" class="button is-info is-small is-tablet">{% trans "Set" %}</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
{% endif %}
|
|
|
|
{% if list.user == request.user or list.curation == 'open' and item.user == request.user or list.group|is_member:request.user %}
|
|
<form
|
|
name="remove-book-{{ item.id }}"
|
|
method="post"
|
|
action="{% url 'list-remove-book' list.id %}"
|
|
class="card-footer-item"
|
|
>
|
|
{% csrf_token %}
|
|
<input type="hidden" name="item" value="{{ item.id }}">
|
|
<button type="submit" class="button is-small is-danger">{% trans "Remove" %}</button>
|
|
</form>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</li>
|
|
{% endfor %}
|
|
</ol>
|
|
{% endif %}
|
|
{% include "snippets/pagination.html" with page=items %}
|
|
</section>
|
|
|
|
<section class="column is-one-quarter">
|
|
<h2 class="title is-5">
|
|
{% trans "Sort List" %}
|
|
</h2>
|
|
<form name="sort" action="{% url 'list' list.id %}" method="GET" class="block">
|
|
<div class="field">
|
|
<label class="label" for="id_sort_by">{% trans "Sort By" %}</label>
|
|
<div class="select is-fullwidth">
|
|
{{ sort_form.sort_by }}
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<label class="label" for="id_direction">{% trans "Direction" %}</label>
|
|
<div class="select is-fullwidth">
|
|
{{ sort_form.direction }}
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<button class="button is-primary is-fullwidth" type="submit">
|
|
{% trans "Sort List" %}
|
|
</button>
|
|
</div>
|
|
</form>
|
|
{% if request.user.is_authenticated and not list.curation == 'closed' or request.user == list.user %}
|
|
<h2 class="title is-5 mt-6">
|
|
{% if list.curation == 'open' or request.user == list.user or list.group|is_member:request.user %}
|
|
{% trans "Add Books" %}
|
|
{% else %}
|
|
{% trans "Suggest Books" %}
|
|
{% endif %}
|
|
</h2>
|
|
<form name="search" action="{% url 'list' list.id %}" method="GET" class="block">
|
|
<div class="field has-addons">
|
|
<div class="control">
|
|
<input aria-label="{% trans 'Search for a book' %}" class="input" type="text" name="q" placeholder="{% trans 'Search for a book' %}" value="{{ query }}">
|
|
</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>
|
|
</div>
|
|
{% if query %}
|
|
<p class="help"><a href="{% url 'list' list.id %}">{% trans "Clear search" %}</a></p>
|
|
{% endif %}
|
|
</form>
|
|
{% if not suggested_books %}
|
|
{% if query %}
|
|
<p>{% blocktrans %}No books found matching the query "{{ query }}"{% endblocktrans %}</p>{% else %}
|
|
<p>{% trans "No books found" %}</p>
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
{% if suggested_books|length > 0 %}
|
|
{% for book in suggested_books %}
|
|
<div class="columns is-mobile is-gapless">
|
|
<a
|
|
class="column is-2-mobile is-3-tablet is-cover align to-c"
|
|
href="{{ book.local_path }}"
|
|
aria-hidden="true"
|
|
>
|
|
{% include 'snippets/book_cover.html' with book=book cover_class='is-w-auto is-h-s-mobile align to-t' size='small' %}
|
|
</a>
|
|
|
|
<div class="column ml-3">
|
|
<p>{% include 'snippets/book_titleby.html' with book=book %}</p>
|
|
|
|
<form
|
|
class="mt-1"
|
|
name="add-book-{{ book.id }}"
|
|
method="post"
|
|
action="{% url 'list-add-book' %}{% if query %}?q={{ query }}{% endif %}"
|
|
>
|
|
{% csrf_token %}
|
|
<input type="hidden" name="book" value="{{ book.id }}">
|
|
<input type="hidden" name="list" value="{{ list.id }}">
|
|
<button type="submit" class="button is-small is-link">
|
|
{% if list.curation == 'open' or request.user == list.user or list.group|is_member:request.user %}
|
|
{% trans "Add" %}
|
|
{% else %}
|
|
{% trans "Suggest" %}
|
|
{% endif %}
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endif %}
|
|
<div>
|
|
<h2 class="title is-5 mt-6" id="embed-label">
|
|
{% trans "Embed this list on a website" %}
|
|
</h2>
|
|
<div class="vertical-copy">
|
|
<textarea
|
|
readonly
|
|
class="textarea is-small"
|
|
aria-labelledby="embed-label"
|
|
data-copytext
|
|
data-copytext-label="{% trans 'Copy embed code' %}"
|
|
data-copytext-success="{% trans 'Copied!' %}"
|
|
><iframe style="border-width:0;" id="bookwyrm_list_embed" width="400" height="600" title="{% blocktrans trimmed with list_name=list.name site_name=site.name owner=list.user.display_name %}
|
|
{{ list_name }}, a list by {{owner}} on {{ site_name }}
|
|
{% endblocktrans %}" src="{{ embed_url }}"></iframe></textarea>
|
|
</div>
|
|
</div>
|
|
|
|
</section>
|
|
</div>
|
|
{% endblock %}
|