Link fixes
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
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
<div class="text-center more-stuff"><h4>{{_('Delete formats:')}}</h4>
|
||||
{% for file in book.data %}
|
||||
<div class="form-group">
|
||||
<a href="{{ url_for('web.delete_book', book_id=book.id, book_format=file.format) }}" class="btn btn-danger" type="button">{{_('Delete')}} - {{file.format}}</a>
|
||||
<a href="{{ url_for('editbook.delete_book', book_id=book.id, book_format=file.format) }}" class="btn btn-danger" type="button">{{_('Delete')}} - {{file.format}}</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
{% if source_formats|length > 0 and conversion_formats|length > 0 %}
|
||||
<div class="text-center more-stuff"><h4>{{_('Convert book format:')}}</h4>
|
||||
<form class="padded-bottom" action="{{ url_for('web.convert_bookformat', book_id=book.id) }}" method="post" id="book_convert_frm">
|
||||
<form class="padded-bottom" action="{{ url_for('editbook.convert_bookformat', book_id=book.id) }}" method="post" id="book_convert_frm">
|
||||
<div class="form-group">
|
||||
<div class="text-left">
|
||||
<label class="control-label" for="book_format_from">{{_('Convert from:')}}</label>
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
<input type="checkbox" id="config_remote_login" name="config_remote_login" {% if content.config_remote_login %}checked{% endif %}>
|
||||
<label for="config_remote_login">{{_('Enable remote login ("magic link")')}}</label>
|
||||
</div>
|
||||
{% if goodreads %}
|
||||
{% if feature_support['goodreads'] %}
|
||||
<div class="form-group">
|
||||
<input type="checkbox" id="config_use_goodreads" name="config_use_goodreads" data-control="goodreads-settings" {% if content.config_use_goodreads %}checked{% endif %}>
|
||||
<label for="config_use_goodreads">{{_('Use')}} Goodreads</label>
|
||||
@@ -176,6 +176,7 @@
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if feature_support['ldap'] %}
|
||||
<div class="form-group">
|
||||
<input type="checkbox" id="config_use_ldap" name="config_use_ldap" data-control="ldap-settings" {% if content.config_use_ldap %}checked{% endif %}>
|
||||
<label for="config_use_ldap">{{_('Use')}} LDAP Authentication</label>
|
||||
@@ -190,6 +191,8 @@
|
||||
<input type="text" class="form-control" id="config_ldap_dn" name="config_ldap_dn" value="{% if content.config_use_ldap != None %}{{ content.config_ldap_dn }}{% endif %}" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if feature_support['oauth'] %}
|
||||
<div class="form-group">
|
||||
<input type="checkbox" id="config_use_github_oauth" name="config_use_github_oauth" data-control="github-oauth-settings" {% if content.config_use_github_oauth %}checked{% endif %}>
|
||||
<label for="config_use_github_oauth">{{_('Use')}} GitHub OAuth</label>
|
||||
@@ -220,6 +223,7 @@
|
||||
<input type="text" class="form-control" id="config_google_oauth_client_secret" name="config_google_oauth_client_secret" value="{% if content.config_google_oauth_client_secret != None %}{{ content.config_google_oauth_client_secret }}{% endif %}" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -57,9 +57,22 @@
|
||||
</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">
|
||||
<!--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>
|
||||
@@ -77,7 +90,7 @@
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div-->
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
+28
-29
@@ -2,13 +2,12 @@
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<id>urn:uuid:2853dacf-ed79-42f5-8e8a-a7bb3d1ae6a2</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<link rel="self" href="{{url_for('feed_index')}}" type="application/atom+xml;profile=opds-catalog;kind=navigation"/>
|
||||
<link rel="start" title="{{_('Start')}}" href="{{url_for('feed_index')}}"
|
||||
<link rel="self" href="{{url_for('opds.feed_index')}}" type="application/atom+xml;profile=opds-catalog;kind=navigation"/>
|
||||
<link rel="start" title="{{_('Start')}}" href="{{url_for('opds.feed_index')}}"
|
||||
type="application/atom+xml;profile=opds-catalog;kind=navigation"/>
|
||||
<link rel="search"
|
||||
href="{{url_for('feed_osd')}}"
|
||||
href="{{url_for('opds.feed_osd')}}"
|
||||
type="application/opensearchdescription+xml"/>
|
||||
<!--link title="{{_('Search')}}" type="application/atom+xml" href="{{url_for('feed_normal_search')}}?query={searchTerms}" rel="search"/-->
|
||||
<title>{{instance}}</title>
|
||||
<author>
|
||||
<name>{{instance}}</name>
|
||||
@@ -16,88 +15,88 @@
|
||||
</author>
|
||||
<entry>
|
||||
<title>{{_('Hot Books')}}</title>
|
||||
<link rel="http://opds-spec.org/sort/popular" href="{{url_for('feed_hot')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('feed_hot')}}</id>
|
||||
<link rel="http://opds-spec.org/sort/popular" href="{{url_for('opds.feed_hot')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('opds.feed_hot')}}</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<content type="text">{{_('Popular publications from this catalog based on Downloads.')}}</content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>{{_('Best rated Books')}}</title>
|
||||
<link rel="http://opds-spec.org/recommended" href="{{url_for('feed_best_rated')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('feed_best_rated')}}</id>
|
||||
<link rel="http://opds-spec.org/recommended" href="{{url_for('opds.feed_best_rated')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('opds.feed_best_rated')}}</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<content type="text">{{_('Popular publications from this catalog based on Rating.')}}</content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>{{_('New Books')}}</title>
|
||||
<link rel="http://opds-spec.org/sort/new" href="{{url_for('feed_new')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('feed_new')}}</id>
|
||||
<link rel="http://opds-spec.org/sort/new" href="{{url_for('opds.feed_new')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('opds.feed_new')}}</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<content type="text">{{_('The latest Books')}}</content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>{{_('Random Books')}}</title>
|
||||
<link rel="http://opds-spec.org/featured" href="{{url_for('feed_discover')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('feed_discover')}}</id>
|
||||
<link rel="http://opds-spec.org/featured" href="{{url_for('opds.feed_discover')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('opds.feed_discover')}}</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<content type="text">{{_('Show Random Books')}}</content>
|
||||
</entry>
|
||||
{% if not current_user.is_anonymous %}
|
||||
<entry>
|
||||
<title>{{_('Read Books')}}</title>
|
||||
<link rel="subsection" href="{{url_for('feed_read_books')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('feed_read_books')}}</id>
|
||||
<link rel="subsection" href="{{url_for('opds.feed_read_books')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('opds.feed_read_books')}}</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<content type="text">{{_('Read Books')}}</content>
|
||||
</entry>
|
||||
{% endif %}
|
||||
<entry>
|
||||
<title>{{_('Unread Books')}}</title>
|
||||
<link rel="subsection" href="{{url_for('feed_unread_books')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('feed_unread_books')}}</id>
|
||||
<link rel="subsection" href="{{url_for('opds.feed_unread_books')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('opds.feed_unread_books')}}</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<content type="text">{{_('Unread Books')}}</content>
|
||||
</entry>
|
||||
{% endif %}
|
||||
<entry>
|
||||
<title>{{_('Authors')}}</title>
|
||||
<link rel="subsection" href="{{url_for('feed_authorindex')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('feed_authorindex')}}</id>
|
||||
<link rel="subsection" href="{{url_for('opds.feed_authorindex')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('opds.feed_authorindex')}}</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<content type="text">{{_('Books ordered by Author')}}</content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>{{_('Publishers')}}</title>
|
||||
<link rel="subsection" href="{{url_for('feed_publisherindex')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('feed_publisherindex')}}</id>
|
||||
<link rel="subsection" href="{{url_for('opds.feed_publisherindex')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('opds.feed_publisherindex')}}</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<content type="text">{{_('Books ordered by publisher')}}</content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>{{_('Category list')}}</title>
|
||||
<link rel="subsection" href="{{url_for('feed_categoryindex')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('feed_categoryindex')}}</id>
|
||||
<link rel="subsection" href="{{url_for('opds.feed_categoryindex')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('opds.feed_categoryindex')}}</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<content type="text">{{_('Books ordered by category')}}</content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>{{_('Series list')}}</title>
|
||||
<link rel="subsection" href="{{url_for('feed_seriesindex')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('feed_seriesindex')}}</id>
|
||||
<link rel="subsection" href="{{url_for('opds.feed_seriesindex')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('opds.feed_seriesindex')}}</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<content type="text">{{_('Books ordered by series')}}</content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>{{_('Public Shelves')}}</title>
|
||||
<link rel="subsection" href="{{url_for('feed_shelfindex', public="public")}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('feed_shelfindex', public="public")}}</id>
|
||||
<link rel="subsection" href="{{url_for('opds.feed_shelfindex', public="public")}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('opds.feed_shelfindex', public="public")}}</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<content type="text">{{_('Books organized in public shelfs, visible to everyone')}}</content>
|
||||
</entry>
|
||||
{% if not current_user.is_anonymous %}
|
||||
<entry>
|
||||
<title>{{_('Your Shelves')}}</title>
|
||||
<link rel="subsection" href="{{url_for('feed_shelfindex')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('feed_shelfindex')}}</id>
|
||||
<link rel="subsection" href="{{url_for('opds.feed_shelfindex')}}" type="application/atom+xml;profile=opds-catalog"/>
|
||||
<id>{{url_for('opds.feed_shelfindex')}}</id>
|
||||
<updated>{{ current_time }}</updated>
|
||||
<content type="text">{{_("User's own shelfs, only visible to the current user himself")}}</content>
|
||||
</entry>
|
||||
|
||||
+26
-26
@@ -1,53 +1,53 @@
|
||||
{
|
||||
"pubdate": "{{entry.pubdate}}",
|
||||
"title": "{{entry.title}}",
|
||||
"pubdate": "{{entry.pubdate}}",
|
||||
"title": "{{entry.title}}",
|
||||
"format_metadata": {
|
||||
{% for format in entry.data %}
|
||||
{% for format in entry.data %}
|
||||
"{{format.format}}": {
|
||||
"mtime": "{{entry.last_modified}}",
|
||||
"size": {{format.uncompressed_size}},
|
||||
"mtime": "{{entry.last_modified}}",
|
||||
"size": {{format.uncompressed_size}},
|
||||
"path": ""
|
||||
}{% if not loop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
},
|
||||
},
|
||||
"formats": [
|
||||
{% for format in entry.data %}
|
||||
{% for format in entry.data %}
|
||||
"{{format.format}}"{% if not loop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
],
|
||||
"series": null,
|
||||
"cover": "{{url_for('feed_get_cover', book_id=entry.id)}}",
|
||||
{% endfor %}
|
||||
],
|
||||
"series": null,
|
||||
"cover": "{{url_for('opds.feed_get_cover', book_id=entry.id)}}",
|
||||
"languages": [
|
||||
{% for lang in entry.languages %}
|
||||
{% for lang in entry.languages %}
|
||||
"{{lang.lang_code}}"{% if not loop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
],
|
||||
],
|
||||
"comments": "{% if entry.comments|length > 0 %}{{entry.comments[0].text.replace('"', '\\"')|safe}}{% endif %}",
|
||||
"tags": [
|
||||
{% for tag in entry.tags %}
|
||||
"{{tag.name}}"{% if not loop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
],
|
||||
"application_id": {{entry.id}},
|
||||
"series_index": {% if entry.series|length > 0 %}"{{entry.series_index}}"{% else %}null{% endif %},
|
||||
"last_modified": "{{entry.last_modified}}",
|
||||
"author_sort": "{{entry.author_sort}}",
|
||||
"uuid": "{{entry.uuid}}",
|
||||
"timestamp": "{{entry.timestamp}}",
|
||||
"thumbnail": "{{url_for('feed_get_cover', book_id=entry.id)}}",
|
||||
{% endfor %}
|
||||
],
|
||||
"application_id": {{entry.id}},
|
||||
"series_index": {% if entry.series|length > 0 %}"{{entry.series_index}}"{% else %}null{% endif %},
|
||||
"last_modified": "{{entry.last_modified}}",
|
||||
"author_sort": "{{entry.author_sort}}",
|
||||
"uuid": "{{entry.uuid}}",
|
||||
"timestamp": "{{entry.timestamp}}",
|
||||
"thumbnail": "{{url_for('opds.feed_get_cover', book_id=entry.id)}}",
|
||||
"main_format": {
|
||||
"{{entry.data[0].format|lower}}": "{{ url_for('get_opds_download_link', book_id=entry.id, book_format=entry.data[0].format|lower)}}"
|
||||
"{{entry.data[0].format|lower}}": "{{ url_for('opds.get_opds_download_link', book_id=entry.id, book_format=entry.data[0].format|lower)}}"
|
||||
},
|
||||
"rating":{% if entry.ratings.__len__() > 0 %} "{{entry.ratings[0].rating}}.0"{% else %}0.0{% endif %},
|
||||
"authors": [
|
||||
{% for author in entry.authors %}
|
||||
"{{author.name.replace('|',',')}}"{% if not loop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
],
|
||||
{% endfor %}
|
||||
],
|
||||
"other_formats": {
|
||||
{% if entry.data.__len__() > 1 %}
|
||||
{% for format in entry.data[1:] %}
|
||||
"{{format.format|lower}}": "{{ url_for('get_opds_download_link', book_id=entry.id, book_format=format.format|lower)}}"{% if not loop.last %},{% endif %}
|
||||
"{{format.format|lower}}": "{{ url_for('opds.get_opds_download_link', book_id=entry.id, book_format=format.format|lower)}}"{% if not loop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %} },
|
||||
"title_sort": "{{entry.sort}}"
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
{% if g.user.is_authenticated or g.user.is_anonymous %}
|
||||
<li class="nav-head hidden-xs public-shelves">{{_('Public Shelves')}}</li>
|
||||
{% for shelf in g.public_shelfes %}
|
||||
<li><a href="{{url_for('web.show_shelf', shelf_id=shelf.id)}}"><span class="glyphicon glyphicon-list public_shelf"></span>{{shelf.name|shortentitle(40)}}</a></li>
|
||||
<li><a href="{{url_for('shelf.show_shelf', shelf_id=shelf.id)}}"><span class="glyphicon glyphicon-list public_shelf"></span>{{shelf.name|shortentitle(40)}}</a></li>
|
||||
{% endfor %}
|
||||
<li class="nav-head hidden-xs your-shelves">{{_('Your Shelves')}}</li>
|
||||
{% for shelf in g.user.shelf %}
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
<Developer>Janeczku</Developer>
|
||||
<Contact>https://github.com/janeczku/calibre-web</Contact>
|
||||
<Url type="text/html"
|
||||
template="{{url_for('search')}}?query={searchTerms}"/>
|
||||
template="{{url_for('opds.search')}}?query={searchTerms}"/>
|
||||
<Url type="application/atom+xml"
|
||||
template="{{url_for('feed_normal_search')}}?query={searchTerms}"/>
|
||||
template="{{url_for('opds.feed_normal_search')}}?query={searchTerms}"/>
|
||||
<SyndicationRight>open</SyndicationRight>
|
||||
<Language>{{lang}}</Language>
|
||||
<OutputEncoding>UTF-8</OutputEncoding>
|
||||
|
||||
Reference in New Issue
Block a user