mirror of
https://github.com/janeczku/calibre-web
synced 2024-12-25 09:30:31 +00:00
693c26c2b3
Since this is closer to the elements, we can be more sure that we won't have events fire when we don't want them to. For example, if we're viewing the page in a modal, we don't want the event handler living longer than the content itself.
266 lines
11 KiB
HTML
266 lines
11 KiB
HTML
{% extends "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('get_cover', cover_path=entry.path.replace('\\','/')) }}" />
|
||
{% else %}
|
||
<img src="{{ url_for('static', filename='generic_cover.jpg') }}" />
|
||
{% 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() %}
|
||
<div class="btn-group" role="group">
|
||
{% if entry.data|length < 3 %}
|
||
<button id="btnGroupDrop1" type="button" class="btn btn-primary">
|
||
{{_('Download')}} :
|
||
</button>
|
||
{% for format in entry.data %}
|
||
<a href="{{ url_for('get_download_link_ext', book_id=entry.id, book_format=format.format|lower, anyname=entry.id|string+'.'+format.format) }}" id="btnGroupDrop1{{format.format|lower}}" class="btn btn-primary" role="button">
|
||
<span class="glyphicon glyphicon-download"></span>{{format.format}}
|
||
</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('get_download_link_ext', book_id=entry.id, book_format=format.format|lower, anyname=entry.id|string+'.'+format.format) }}">{{format.format}}</a></li>
|
||
{% endfor %}
|
||
</ul>
|
||
{% endif %}
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if g.user.kindle_mail and g.user.is_authenticated %}
|
||
<a href="{{url_for('send_to_kindle', book_id=entry.id)}}" id="sendbtn" class="btn btn-primary" role="button"><span class="glyphicon glyphicon-send"></span> {{_('Send to Kindle')}}</a>
|
||
{% endif %}
|
||
{% if (g.user.role_download() and g.user.is_anonymous()) or g.user.is_authenticated %}
|
||
<div class="btn-group" role="group">
|
||
<button id="btnGroupDrop2" 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="btnGroupDrop2">
|
||
{% for format in entry.data %}
|
||
{%if format.format|lower == 'epub' or format.format|lower == 'txt' or format.format|lower == 'pdf' or format.format|lower == 'cbr' or format.format|lower == 'cbt' or format.format|lower == 'cbz' %}
|
||
<li><a target="_blank" href="{{ url_for('read_book', book_id=entry.id, book_format=format.format|lower) }}">{{format.format}}</a></li>
|
||
{% endif %}
|
||
{%endfor%}
|
||
</ul>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
|
||
<h2>{{entry.title}}</h2>
|
||
<p class="author">
|
||
{% for author in entry.authors %}
|
||
<a href="{{url_for('author', book_id=author.id ) }}">{{author.name}}</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('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('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')}}:{% for publisher in entry.publishers %} {{publisher.name}}{% if not loop.last %},{% endif %}{% endfor %}</span>
|
||
</p>
|
||
</div>
|
||
{% endif %}
|
||
{% if entry.pubdate[:10] != '0101-01-01' %}
|
||
<p>{{_('Publishing date')}}: {{entry.pubdate|formatdate}} </p>
|
||
{% 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('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%}
|
||
<h3>{{_('Description:')}}</h3>
|
||
{{entry.comments[0].text|safe}}
|
||
{% 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="btnGroupDrop2" 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="btnGroupDrop2">
|
||
{% for shelf in g.user.shelf %}
|
||
{% if not shelf.id in books_shelfs and shelf.is_public != 1 %}
|
||
<li>
|
||
<a href="{{ url_for('add_to_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||
data-remove-href="{{ url_for('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('add_to_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||
data-remove-href="{{ url_for('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('remove_from_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||
data-add-href="{{ url_for('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('remove_from_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||
data-add-href="{{ url_for('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('edit_book', book_id=entry.id) }}" class="btn btn-sm btn-warning" role="button"><span class="glyphicon glyphicon-edit"></span> {{_('Edit metadata')}}</a>
|
||
</div>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{% endblock %}
|
||
|
||
{% block js %}
|
||
<script src="{{ url_for('static', filename='js/libs/jquery.form.js') }}"></script>
|
||
<script src="{{ url_for('static', filename='js/details.js') }}"></script>
|
||
{% endblock %}
|