mirror of
https://github.com/janeczku/calibre-web
synced 2024-12-26 18:10:30 +00:00
4230226716
Fixes reader button visible in detail view Fix formats to convert (added htmlz) Fix logger in updater Added request "v3" of github api on update Fix quotes parameter on external calls E-Mail logger working more stable (also on python3) Routing fixes Change import in ub
321 lines
14 KiB
HTML
321 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">
|
||
{% if entry.has_cover %}
|
||
<img src="{{ url_for('web.get_cover', book_id=entry.id) }}" alt="{{ entry.title }}" />
|
||
{% else %}
|
||
<img src="{{ url_for('static', filename='generic_cover.jpg') }}" alt="{{ entry.title }}" />
|
||
{% endif %}
|
||
</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 type="button" class="btn btn-primary">
|
||
{{_('Download')}} :
|
||
</button>
|
||
{% for format in entry.data %}
|
||
<a href="{{ url_for('web.get_download_link_ext', 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.get_download_link_ext', 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 g.user.is_authenticated 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" 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 %}
|
||
<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 reader_list %}
|
||
{% if audioentries|length %}
|
||
<!--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 %}
|
||
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
<h2 id="title">{{entry.title|shortentitle(40)}}</h2>
|
||
<p class="author">
|
||
{% for author in entry.authors %}
|
||
<a href="{{url_for('web.author', 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.series', 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.category', 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.publisher', 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 %}
|
||
|
||
<div class="custom_columns">
|
||
<p>
|
||
{% for c in cc %}
|
||
{% 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 %}
|
||
<br />
|
||
{% endif %}
|
||
{% endfor %}
|
||
</p>
|
||
</div>
|
||
{% 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" type="checkbox" {% if have_read %}checked{% endif %} >
|
||
<span>{{_('Read')}}</span>
|
||
</label>
|
||
</form>
|
||
</p>
|
||
</div>
|
||
{% endif %}
|
||
|
||
|
||
{% if entry.comments|length > 0 and entry.comments[0].text|length > 0%}
|
||
<div class="comments">
|
||
<h3>{{_('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 %}
|