mirror of
https://github.com/janeczku/calibre-web
synced 2024-11-28 12:30:00 +00:00
c0239a659c
Archived books will no longer appear in any book lists or searches, and may only be restored from the Archive view.
320 lines
14 KiB
HTML
320 lines
14 KiB
HTML
{% extends is_xhr|yesno("fragment.html", "layout.html") %}
|
||
{% block body %}
|
||
<div class="single">
|
||
<div class="row">
|
||
<div class="col-sm-3 col-lg-3 col-xs-5">
|
||
<div class="cover">
|
||
<img src="{{ url_for('web.get_cover', book_id=entry.id) }}" alt="{{ entry.title }}" />
|
||
</div>
|
||
</div>
|
||
<div class="col-sm-9 col-lg-9 book-meta">
|
||
<div class="btn-toolbar" role="toolbar">
|
||
<div class="btn-group" role="group" aria-label="Download, send to Kindle, reading">
|
||
{% if g.user.role_download() %}
|
||
{% if entry.data|length %}
|
||
<div class="btn-group" role="group">
|
||
{% if entry.data|length < 2 %}
|
||
<button id="Download" type="button" class="btn btn-primary">
|
||
{{_('Download')}} :
|
||
</button>
|
||
{% for format in entry.data %}
|
||
<a href="{{ url_for('web.download_link', book_id=entry.id, book_format=format.format|lower, anyname=entry.id|string+'.'+format.format|lower) }}" id="btnGroupDrop1{{format.format|lower}}" class="btn btn-primary" role="button">
|
||
<span class="glyphicon glyphicon-download"></span>{{format.format}} ({{ format.uncompressed_size|filesizeformat }})
|
||
</a>
|
||
{% endfor %}
|
||
{% else %}
|
||
<button id="btnGroupDrop1" type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||
<span class="glyphicon glyphicon-download"></span> {{_('Download')}}
|
||
<span class="caret"></span>
|
||
</button>
|
||
<ul class="dropdown-menu" aria-labelledby="btnGroupDrop1">
|
||
{% for format in entry.data %}
|
||
<li><a href="{{ url_for('web.download_link', book_id=entry.id, book_format=format.format|lower, anyname=entry.id|string+'.'+format.format|lower) }}">{{format.format}} ({{ format.uncompressed_size|filesizeformat }})</a></li>
|
||
{% endfor %}
|
||
</ul>
|
||
{% endif %}
|
||
</div>
|
||
{% endif %}
|
||
{% endif %}
|
||
{% if g.user.kindle_mail and kindle_list %}
|
||
{% if kindle_list.__len__() == 1 %}
|
||
<a href="{{url_for('web.send_to_kindle', book_id=entry.id, book_format=kindle_list[0]['format'], convert=kindle_list[0]['convert'])}}" id="sendbtn" data-text="{{_('Send to Kindle')}}" class="btn btn-primary" role="button"><span class="glyphicon glyphicon-send"></span> {{kindle_list[0]['text']}}</a>
|
||
{% else %}
|
||
<div class="btn-group" role="group">
|
||
<button id="sendbtn2" type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||
<span class="glyphicon glyphicon-send"></span>{{_('Send to Kindle')}}
|
||
<span class="caret"></span>
|
||
</button>
|
||
<ul class="dropdown-menu" aria-labelledby="send-to-kindle">
|
||
{% for format in kindle_list %}
|
||
<li><a href="{{url_for('web.send_to_kindle', book_id=entry.id, book_format=format['format'], convert=format['convert'])}}">{{format['text']}}</a></li>
|
||
{%endfor%}
|
||
</ul>
|
||
</div>
|
||
{% endif %}
|
||
{% endif %}
|
||
{% if reader_list and g.user.role_viewer() %}
|
||
<div class="btn-group" role="group">
|
||
<button id="read-in-browser" type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||
<span class="glyphicon glyphicon-eye-open"></span> {{_('Read in browser')}}
|
||
<span class="caret"></span>
|
||
</button>
|
||
<ul class="dropdown-menu" aria-labelledby="read-in-browser">
|
||
{% for format in reader_list %}
|
||
<li><a target="_blank" href="{{ url_for('web.read_book', book_id=entry.id, book_format=format) }}">{{format}}</a></li>
|
||
{%endfor%}
|
||
</ul>
|
||
</div>
|
||
{% endif %}
|
||
{% if audioentries|length > 0 %}
|
||
<div class="btn-group" role="group">
|
||
<button id="listen-in-browser" type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||
<span class="glyphicon glyphicon-music"></span> {{_('Listen in browser')}}
|
||
<span class="caret"></span>
|
||
</button>
|
||
<ul class="dropdown-menu" aria-labelledby="read-in-browser">
|
||
{% for format in reader_list %}
|
||
<li><a target="_blank" href="{{ url_for('web.read_book', book_id=entry.id, book_format=format) }}">{{format}}</a></li>
|
||
{%endfor%}
|
||
</ul>
|
||
<ul class="dropdown-menu" aria-labelledby="listen-in-browser">
|
||
|
||
{% for format in entry.data %}
|
||
{% if format.format|lower in audioentries %}
|
||
<li><a target="_blank" href="{{ url_for('web.read_book', book_id=entry.id, book_format=format.format|lower) }}">{{format.format}}</a></li>
|
||
{% endif %}
|
||
{% endfor %}
|
||
</ul>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
<h2 id="title">{{entry.title|shortentitle(40)}}</h2>
|
||
<p class="author">
|
||
{% for author in entry.authors %}
|
||
<a href="{{url_for('web.books_list', data='author', sort='new', book_id=author.id ) }}">{{author.name.replace('|',',')}}</a>
|
||
{% if not loop.last %}
|
||
&
|
||
{% endif %}
|
||
{% endfor %}
|
||
</p>
|
||
{% if entry.ratings.__len__() > 0 %}
|
||
<div class="rating">
|
||
<p>
|
||
{% for number in range((entry.ratings[0].rating/2)|int(2)) %}
|
||
<span class="glyphicon glyphicon-star good"></span>
|
||
{% if loop.last and loop.index < 5 %}
|
||
{% for numer in range(5 - loop.index) %}
|
||
<span class="glyphicon glyphicon-star"></span>
|
||
{% endfor %}
|
||
{% endif %}
|
||
{% endfor %}
|
||
</p>
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if entry.series|length > 0 %}
|
||
<p>{{_('Book')}} {{entry.series_index}} {{_('of')}} <a href="{{url_for('web.books_list', data='series',sort='abc', book_id=entry.series[0].id)}}">{{entry.series[0].name}}</a></p>
|
||
{% endif %}
|
||
|
||
{% if entry.languages.__len__() > 0 %}
|
||
<div class="languages">
|
||
<p>
|
||
<span class="label label-default">{{_('language')}}: {% for language in entry.languages %}{{language.language_name}}{% if not loop.last %}, {% endif %}{% endfor %}</span>
|
||
</p>
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if entry.identifiers|length > 0 %}
|
||
<div class="identifiers">
|
||
<p>
|
||
<span class="glyphicon glyphicon-link"></span>
|
||
{% for identifier in entry.identifiers %}
|
||
<a href="{{identifier}}" target="_blank" class="btn btn-xs btn-success" role="button">{{identifier.formatType()}}</a>
|
||
{%endfor%}
|
||
</p>
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if entry.tags|length > 0 %}
|
||
|
||
<div class="tags">
|
||
<p>
|
||
<span class="glyphicon glyphicon-tags"></span>
|
||
|
||
{% for tag in entry.tags %}
|
||
<a href="{{ url_for('web.books_list', data='category', sort='new', book_id=tag.id) }}" class="btn btn-xs btn-info" role="button">{{tag.name}}</a>
|
||
{%endfor%}
|
||
</p>
|
||
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if entry.publishers|length > 0 %}
|
||
<div class="publishers">
|
||
<p>
|
||
<span>{{_('Publisher')}}:
|
||
<a href="{{url_for('web.books_list', data='publisher', sort='new', book_id=entry.publishers[0].id ) }}">{{entry.publishers[0].name}}</a>
|
||
</span>
|
||
</p>
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if entry.pubdate[:10] != '0101-01-01' %}
|
||
<div class="publishing-date">
|
||
<p>{{_('Publishing date')}}: {{entry.pubdate|formatdate}} </p>
|
||
</div>
|
||
{% endif %}
|
||
{% if cc|length > 0 %}
|
||
|
||
|
||
{% for c in cc %}
|
||
<div class="real_custom_columns">
|
||
{% if entry['custom_column_' ~ c.id]|length > 0 %}
|
||
{{ c.name }}:
|
||
{% for column in entry['custom_column_' ~ c.id] %}
|
||
{% if c.datatype == 'rating' %}
|
||
{{ '%d' % (column.value / 2) }}
|
||
{% else %}
|
||
{% if c.datatype == 'bool' %}
|
||
{% if column.value == true %}
|
||
<span class="glyphicon glyphicon-ok"></span>
|
||
{% else %}
|
||
<span class="glyphicon glyphicon-remove"></span>
|
||
{% endif %}
|
||
{% else %}
|
||
{{ column.value }}
|
||
{% endif %}
|
||
{% endif %}
|
||
{% endfor %}
|
||
{% endif %}
|
||
</div>
|
||
{% endfor %}
|
||
{% endif %}
|
||
{% if not g.user.is_anonymous %}
|
||
|
||
<div class="custom_columns">
|
||
<p>
|
||
<form id="have_read_form" action="{{ url_for('web.toggle_read', book_id=entry.id)}}" method="POST">
|
||
<label class="block-label">
|
||
<input id="have_read_cb" data-checked="{{_('Mark As Unread')}}" data-unchecked="{{_('Mark As Read')}}" type="checkbox" {% if have_read %}checked{% endif %} >
|
||
<span>{{_('Read')}}</span>
|
||
</label>
|
||
</form>
|
||
</p>
|
||
<p>
|
||
<form id="archived_form" action="{{ url_for('web.toggle_archived', book_id=entry.id)}}" method="POST">
|
||
<label class="block-label">
|
||
<input id="archived_cb" data-checked="{{_('Restore from archive')}}" data-unchecked="{{_('Add to archive')}}" type="checkbox" {% if is_archived %}checked{% endif %} >
|
||
<span>{{_('Archived')}}</span>
|
||
</label>
|
||
</form>
|
||
</p>
|
||
</div>
|
||
{% endif %}
|
||
|
||
|
||
{% if entry.comments|length > 0 and entry.comments[0].text|length > 0%}
|
||
<div class="comments">
|
||
<h3 id="decription">{{_('Description:')}}</h3>
|
||
{{entry.comments[0].text|safe}}
|
||
</div>
|
||
{% endif %}
|
||
|
||
|
||
<div class="more-stuff">
|
||
|
||
{% if g.user.is_authenticated %}
|
||
{% if g.user.shelf.all() or g.public_shelfes %}
|
||
<div id="shelf-actions" class="btn-toolbar" role="toolbar">
|
||
<div class="btn-group" role="group" aria-label="Add to shelves">
|
||
<button id="add-to-shelf" type="button" class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||
<span class="glyphicon glyphicon-list"></span> {{_('Add to shelf')}}
|
||
<span class="caret"></span>
|
||
</button>
|
||
<ul id="add-to-shelves" class="dropdown-menu" aria-labelledby="add-to-shelf">
|
||
{% for shelf in g.user.shelf %}
|
||
{% if not shelf.id in books_shelfs and shelf.is_public != 1 %}
|
||
<li>
|
||
<a href="{{ url_for('shelf.add_to_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||
data-remove-href="{{ url_for('shelf.remove_from_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||
data-shelf-action="add"
|
||
>
|
||
{{shelf.name}}
|
||
</a>
|
||
</li>
|
||
{% endif %}
|
||
{%endfor%}
|
||
{% for shelf in g.public_shelfes %}
|
||
{% if not shelf.id in books_shelfs %}
|
||
<li>
|
||
<a href="{{ url_for('shelf.add_to_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||
data-remove-href="{{ url_for('shelf.remove_from_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||
data-shelf-action="add"
|
||
>
|
||
{{shelf.name}}
|
||
</a>
|
||
</li>
|
||
{% endif %}
|
||
{%endfor%}
|
||
</ul>
|
||
</div>
|
||
<div id="remove-from-shelves" class="btn-group" role="group" aria-label="Remove from shelves">
|
||
{% if books_shelfs %}
|
||
{% for shelf in g.user.shelf %}
|
||
{% if shelf.id in books_shelfs and shelf.is_public != 1 %}
|
||
<a href="{{ url_for('shelf.remove_from_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||
data-add-href="{{ url_for('shelf.add_to_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||
class="btn btn-sm btn-default" role="button" data-shelf-action="remove"
|
||
>
|
||
<span class="glyphicon glyphicon-remove"></span> {{shelf.name}}
|
||
</a>
|
||
{% endif %}
|
||
{%endfor%}
|
||
{% for shelf in g.public_shelfes %}
|
||
{% if shelf.id in books_shelfs %}
|
||
<a href="{{ url_for('shelf.remove_from_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||
data-add-href="{{ url_for('shelf.add_to_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||
class="btn btn-sm btn-default" role="button" data-shelf-action="remove"
|
||
>
|
||
<span class="glyphicon glyphicon-remove"></span> {{shelf.name}}
|
||
</a>
|
||
{% endif %}
|
||
{%endfor%}
|
||
{% endif %}
|
||
</div>
|
||
<div id="shelf-action-errors" class="pull-left" role="alert"></div>
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% endif %}
|
||
{% if g.user.role_edit() %}
|
||
<div class="btn-toolbar" role="toolbar">
|
||
<div class="btn-group" role="group" aria-label="Edit/Delete book">
|
||
<a href="{{ url_for('editbook.edit_book', book_id=entry.id) }}" class="btn btn-sm btn-warning" id="edit_book" role="button"><span class="glyphicon glyphicon-edit"></span> {{_('Edit metadata')}}</a>
|
||
</div>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{% endblock %}
|
||
|
||
{% block js %}
|
||
<script type="text/template" id="template-shelf-add">
|
||
<li>
|
||
<a href="<%= add %>" data-remove-href="<%= remove %>" data-shelf-action="add">
|
||
<%= content %>
|
||
</a>
|
||
</li>
|
||
</script>
|
||
<script type="text/template" id="template-shelf-remove">
|
||
<a href="<%= remove %>" data-add-href="<%= add %>" class="btn btn-sm btn-default" data-shelf-action="remove">
|
||
<span class="glyphicon glyphicon-remove"></span> <%= content %>
|
||
</a>
|
||
</script>
|
||
<script src="{{ url_for('static', filename='js/details.js') }}"></script>
|
||
{% endblock %}
|