2017-01-22 17:44:37 +02:00
|
|
|
{% extends "layout.html" %}
|
|
|
|
{% block body %}
|
|
|
|
<div class="discover">
|
2017-02-10 21:18:37 +02:00
|
|
|
<h2>{{title}}</h2>
|
2017-01-22 17:44:37 +02:00
|
|
|
<form role="form" method="POST" autocomplete="off">
|
|
|
|
<div class="form-group required">
|
|
|
|
<label for="config_calibre_dir">{{_('Location of Calibre database')}}</label>
|
|
|
|
<input type="text" class="form-control" name="config_calibre_dir" id="config_calibre_dir" value="{% if content.config_calibre_dir != None %}{{ content.config_calibre_dir }}{% endif %}" autocomplete="off">
|
|
|
|
</div>
|
2017-02-20 20:34:37 +02:00
|
|
|
<div class="form-group required">
|
2017-07-23 14:03:02 +02:00
|
|
|
<input type="checkbox" id="config_use_google_drive" name="config_use_google_drive" data-control="gdrive_settings" {% if content.config_use_google_drive %}checked{% endif %} >
|
2017-02-20 20:34:37 +02:00
|
|
|
<label for="config_use_google_drive">{{_('Use google drive?')}}</label>
|
|
|
|
</div>
|
2017-07-23 14:03:02 +02:00
|
|
|
<div data-related="gdrive_settings">
|
2018-06-02 10:59:34 +02:00
|
|
|
{% if gdriveError %}
|
|
|
|
<div class="form-group">
|
|
|
|
<label>
|
|
|
|
{{_('Google drive config problem')}}: {{ gdriveError }}
|
|
|
|
</label>
|
2017-02-20 20:34:37 +02:00
|
|
|
</div>
|
|
|
|
{% else %}
|
2018-06-02 10:59:34 +02:00
|
|
|
{% if show_authenticate_google_drive %}
|
|
|
|
<div class="form-group required">
|
|
|
|
<a href="{{ url_for('authenticate_google_drive') }}" class="btn btn-primary">{{_('Authenticate Google Drive')}}</a>
|
|
|
|
</div>
|
|
|
|
{% else %}
|
|
|
|
<div class="form-group required">
|
|
|
|
<label for="config_google_drive_folder">{{_('Google drive Calibre folder')}}</label>
|
|
|
|
<select name="config_google_drive_folder" id="config_google_drive_folder" class="form-control">
|
|
|
|
{% for gdrivefolder in gdrivefolders %}
|
|
|
|
<option value="{{ gdrivefolder.title }}" {% if gdrivefolder.title == content.config_google_drive_folder %}selected{% endif %}>{{ gdrivefolder.title }}</option>
|
|
|
|
{% endfor %}
|
|
|
|
</select>
|
|
|
|
</div>
|
|
|
|
{% if content.config_google_drive_watch_changes_response %}
|
|
|
|
<label for="config_google_drive_watch_changes_response">{{_('Metadata Watch Channel ID')}}</label>
|
|
|
|
<div class="form-group input-group required">
|
|
|
|
<input type="text" class="form-control" name="config_google_drive_watch_changes_response" id="config_google_drive_watch_changes_response" value="{{ content.config_google_drive_watch_changes_response['id'] }} expires on {{ content.config_google_drive_watch_changes_response['expiration'] | strftime }}" autocomplete="off" disabled="">
|
|
|
|
<span class="input-group-btn"><a href="{{ url_for('revoke_watch_gdrive') }}" class="btn btn-primary">{{_('Revoke')}}</a></span>
|
|
|
|
</div>
|
2017-02-20 20:34:37 +02:00
|
|
|
{% else %}
|
2018-06-02 10:59:34 +02:00
|
|
|
<a href="{{ url_for('watch_gdrive') }}" class="btn btn-primary">Enable watch of metadata.db</a>
|
2017-02-20 20:34:37 +02:00
|
|
|
{% endif %}
|
|
|
|
{% endif %}
|
2018-06-02 10:59:34 +02:00
|
|
|
{% endif %}
|
2017-02-20 20:34:37 +02:00
|
|
|
</div>
|
2017-01-22 17:44:37 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<label for="config_port">{{_('Server Port')}}</label>
|
2017-01-28 21:16:40 +02:00
|
|
|
<input type="number" min="1" max="65535" class="form-control" name="config_port" id="config_port" value="{% if content.config_port != None %}{{ content.config_port }}{% endif %}" autocomplete="off" required>
|
2017-01-22 17:44:37 +02:00
|
|
|
</div>
|
2018-03-30 21:20:47 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<label for="config_certfile">{{_('SSL certfile location (leave it empty for non-SSL Servers)')}}</label>
|
|
|
|
<input type="text" class="form-control" name="config_certfile" id="config_certfile" value="{% if content.config_certfile != None %}{{ content.config_certfile }}{% endif %}" autocomplete="off">
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label for="config_keyfile">{{_('SSL Keyfile location (leave it empty for non-SSL Servers)')}}</label>
|
|
|
|
<input type="text" class="form-control" name="config_keyfile" id="config_keyfile" value="{% if content.config_keyfile != None %}{{ content.config_keyfile }}{% endif %}" autocomplete="off">
|
|
|
|
</div>
|
2017-01-22 17:44:37 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<label for="config_calibre_web_title">{{_('Title')}}</label>
|
|
|
|
<input type="text" class="form-control" name="config_calibre_web_title" id="config_calibre_web_title" value="{% if content.config_calibre_web_title != None %}{{ content.config_calibre_web_title }}{% endif %}" autocomplete="off" required>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label for="config_books_per_page">{{_('Books per page')}}</label>
|
2017-01-28 21:16:40 +02:00
|
|
|
<input type="number" min="1" max="200" class="form-control" name="config_books_per_page" id="config_books_per_page" value="{% if content.config_books_per_page != None %}{{ content.config_books_per_page }}{% endif %}" autocomplete="off">
|
2017-01-22 17:44:37 +02:00
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label for="config_random_books">{{_('No. of random books to show')}}</label>
|
2017-01-28 21:16:40 +02:00
|
|
|
<input type="number" min="1" max="30" class="form-control" name="config_random_books" id="config_random_books" value="{% if content.config_random_books != None %}{{ content.config_random_books }}{% endif %}" autocomplete="off">
|
2017-01-22 17:44:37 +02:00
|
|
|
</div>
|
2017-03-01 01:53:32 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<label for="config_columns_to_ignore">{{_('Regular expression for ignoring columns')}}</label>
|
|
|
|
<input type="text" class="form-control" name="config_columns_to_ignore" id="config_columns_to_ignore" value="{% if content.config_columns_to_ignore != None %}{{ content.config_columns_to_ignore }}{% endif %}" autocomplete="off">
|
|
|
|
</div>
|
2017-01-22 17:44:37 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<label for="config_title_regex">{{_('Regular expression for title sorting')}}</label>
|
|
|
|
<input type="text" class="form-control" name="config_title_regex" id="config_title_regex" value="{% if content.config_title_regex != None %}{{ content.config_title_regex }}{% endif %}" autocomplete="off">
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
2017-08-08 18:52:00 +02:00
|
|
|
<label for="config_mature_content_tags">{{_('Tags for Mature Content')}}</label>
|
|
|
|
<input type="text" class="form-control" name="config_mature_content_tags" id="config_mature_content_tags"
|
|
|
|
value="{% if content.config_mature_content_tags != None%}{{ content.config_mature_content_tags }}{% endif %}"
|
|
|
|
autocomplete="off"
|
|
|
|
>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
2017-01-22 17:44:37 +02:00
|
|
|
<label for="config_log_level">{{_('Log Level')}}</label>
|
|
|
|
<select name="config_log_level" id="config_log_level" class="form-control">
|
2017-01-28 21:16:40 +02:00
|
|
|
<option value="10" {% if content.config_log_level == 10 %}selected{% endif %}>DEBUG</option>
|
|
|
|
<option value="20" {% if content.config_log_level == 20 or content.config_log_level == None %}selected{% endif %}>INFO</option>
|
|
|
|
<option value="30" {% if content.config_log_level == 30 %}selected{% endif %}>WARNING</option>
|
|
|
|
<option value="40" {% if content.config_log_level == 40 %}selected{% endif %}>ERROR</option>
|
2017-01-22 17:44:37 +02:00
|
|
|
</select>
|
|
|
|
</div>
|
2017-12-02 12:15:51 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<label for="config_logfile">{{_('Location and name of logfile (calibre-web.log for no entry)')}}</label>
|
|
|
|
<input type="text" class="form-control" name="config_logfile" id="config_logfile" value="{% if content.config_logfile != None %}{{ content.config_logfile }}{% endif %}" autocomplete="off">
|
|
|
|
</div>
|
2017-11-30 21:12:13 +02:00
|
|
|
<div class="col-sm-6">
|
2017-01-22 17:44:37 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" id="config_uploading" name="config_uploading" {% if content.config_uploading %}checked{% endif %}>
|
|
|
|
<label for="config_uploading">{{_('Enable uploading')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" id="config_anonbrowse" name="config_anonbrowse" {% if content.config_anonbrowse %}checked{% endif %}>
|
|
|
|
<label for="config_anonbrowse">{{_('Enable anonymous browsing')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" id="config_public_reg" name="config_public_reg" {% if content.config_public_reg %}checked{% endif %}>
|
|
|
|
<label for="config_public_reg">{{_('Enable public registration')}}</label>
|
2017-01-28 21:16:40 +02:00
|
|
|
</div>
|
2017-07-08 03:18:03 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<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>
|
2017-07-09 01:05:20 +02:00
|
|
|
{% if 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>
|
|
|
|
<a href="https://www.goodreads.com/api/keys" target="_blank" style="margin-left: 5px">{{_('Obtain an API Key')}}</a>
|
|
|
|
</div>
|
|
|
|
<div data-related="goodreads-settings">
|
|
|
|
<div class="form-group">
|
|
|
|
<label for="config_goodreads_api_key">{{_('Goodreads API Key')}}</label>
|
|
|
|
<input type="text" class="form-control" id="config_goodreads_api_key" name="config_goodreads_api_key" value="{% if content.config_goodreads_api_key != None %}{{ content.config_goodreads_api_key }}{% endif %}" autocomplete="off">
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<label for="config_goodreads_api_secret">{{_('Goodreads API Secret')}}</label>
|
|
|
|
<input type="text" class="form-control" id="config_goodreads_api_secret" name="config_goodreads_api_secret" value="{% if content.config_goodreads_api_secret != None %}{{ content.config_goodreads_api_secret }}{% endif %}" autocomplete="off">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{% endif %}
|
2017-02-10 21:18:37 +02:00
|
|
|
<h2>{{_('Default Settings for new users')}}</h2>
|
2017-02-09 07:46:07 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="admin_role" id="admin_role" {% if content.role_admin() %}checked{% endif %}>
|
|
|
|
<label for="admin_role">{{_('Admin user')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="download_role" id="download_role" {% if content.role_download() %}checked{% endif %}>
|
|
|
|
<label for="download_role">{{_('Allow Downloads')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="upload_role" id="upload_role" {% if content.role_upload() %}checked{% endif %}>
|
|
|
|
<label for="upload_role">{{_('Allow Uploads')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="edit_role" id="edit_role" {% if content.role_edit() %}checked{% endif %}>
|
|
|
|
<label for="edit_role">{{_('Allow Edit')}}</label>
|
|
|
|
</div>
|
2017-04-14 20:29:11 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="delete_role" id="delete_role" {% if content.role_delete_books() %}checked{% endif %}>
|
|
|
|
<label for="delete_role">{{_('Allow Delete books')}}</label>
|
|
|
|
</div>
|
2017-02-09 07:46:07 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="passwd_role" id="passwd_role" {% if content.role_passwd() %}checked{% endif %}>
|
|
|
|
<label for="passwd_role">{{_('Allow Changing Password')}}</label>
|
|
|
|
</div>
|
2017-03-19 21:29:35 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="edit_shelf_role" id="edit_shelf_role" {% if content.role_edit_shelfs() %}checked{% endif %}>
|
2017-07-10 12:04:15 +02:00
|
|
|
<label for="edit_shelf_role">{{_('Allow Editing Public Shelfs')}}</label>
|
2017-03-19 21:29:35 +02:00
|
|
|
</div>
|
2017-11-30 21:12:13 +02:00
|
|
|
</div>
|
|
|
|
<div class="col-sm-6">
|
|
|
|
<h3>{{_('Default visiblities for new users')}}</h3>
|
|
|
|
<div class="col-sm-6">
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="show_random" id="show_random" {% if content.show_random_books() %}checked{% endif %}>
|
|
|
|
<label for="show_random">{{_('Show random books')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="show_recent" id="show_recent" {% if content.show_recent() %}checked{% endif %}>
|
|
|
|
<label for="show_recent">{{_('Show recent books')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="show_sorted" id="show_sorted" {% if content.show_sorted() %}checked{% endif %}>
|
|
|
|
<label for="show_sorted">{{_('Show sorted books')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="show_hot" id="show_hot" {% if content.show_hot_books() %}checked{% endif %}>
|
|
|
|
<label for="show_hot">{{_('Show hot books')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="show_best_rated" id="show_best_rated" {% if content.show_best_rated_books() %}checked{% endif %}>
|
|
|
|
<label for="show_best_rated">{{_('Show best rated books')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="show_language" id="show_language" {% if content.show_language() %}checked{% endif %}>
|
|
|
|
<label for="show_language">{{_('Show language selection')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="show_series" id="show_series" {% if content.show_series() %}checked{% endif %}>
|
|
|
|
<label for="show_series">{{_('Show series selection')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="show_category" id="show_category" {% if content.show_category() %}checked{% endif %}>
|
|
|
|
<label for="show_category">{{_('Show category selection')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="show_author" id="show_author" {% if content.show_author() %}checked{% endif %}>
|
|
|
|
<label for="show_author">{{_('Show author selection')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="show_read_and_unread" id="show_read_and_unread" {% if content.show_read_and_unread() %}checked{% endif %}>
|
|
|
|
<label for="show_read_and_unread">{{_('Show read and unread')}}</label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="show_detail_random" id="show_detail_random" {% if content.show_detail_random() %}checked{% endif %}>
|
|
|
|
<label for="show_detail_random">{{_('Show random books in detail view')}}</label>
|
|
|
|
</div>
|
2018-03-27 20:18:11 +02:00
|
|
|
<div class="form-group">
|
|
|
|
<input type="checkbox" name="show_mature_content" id="show_mature_content" {% if content.show_mature_content() %}checked{% endif %}>
|
|
|
|
<label for="show_mature_content">{{_('Show mature content')}}</label>
|
|
|
|
</div>
|
2017-11-30 21:12:13 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="col-sm-12">
|
2017-01-22 17:44:37 +02:00
|
|
|
<button type="submit" class="btn btn-default">{{_('Submit')}}</button>
|
2017-01-28 21:16:40 +02:00
|
|
|
{% if not origin %}
|
|
|
|
<a href="{{ url_for('admin') }}" class="btn btn-default">{{_('Back')}}</a>
|
|
|
|
{% endif %}
|
|
|
|
{% if success %}
|
|
|
|
<a href="{{ url_for('login') }}" class="btn btn-default">{{_('Login')}}</a>
|
|
|
|
{% endif %}
|
2017-11-30 21:12:13 +02:00
|
|
|
</div>
|
2017-01-22 17:44:37 +02:00
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
{% endblock %}
|
2017-02-20 20:34:37 +02:00
|
|
|
{% block js %}
|
2017-07-23 14:03:02 +02:00
|
|
|
<script type="text/javascript">
|
|
|
|
$(document).on('change', '#config_use_google_drive', function() {
|
|
|
|
$('#config_google_drive_folder').prop('required', $(this).prop('checked'));
|
2017-02-20 20:34:37 +02:00
|
|
|
});
|
|
|
|
</script>
|
|
|
|
{% endblock %}
|