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
295 lines
17 KiB
HTML
295 lines
17 KiB
HTML
{% extends "layout.html" %}
|
|
{% block body %}
|
|
<div class="discover">
|
|
<h2>{{title}}</h2>
|
|
<form role="form" method="POST" autocomplete="off">
|
|
<div class="panel-group">
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h4 class="panel-title">
|
|
<a class="accordion-toggle" data-toggle="collapse" href="#collapseOne">
|
|
<span class="glyphicon glyphicon-minus"></span>
|
|
{{_('Library Configuration')}}
|
|
</a>
|
|
</h4>
|
|
</div>
|
|
<div id="collapseOne" class="panel-collapse collapse in">
|
|
<div class="panel-body">
|
|
<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>
|
|
<div class="form-group required">
|
|
<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 %} >
|
|
<label for="config_use_google_drive">{{_('Use Google Drive?')}}</label>
|
|
</div>
|
|
<div data-related="gdrive_settings">
|
|
{% if gdriveError %}
|
|
<div class="form-group">
|
|
<label>
|
|
{{_('Google Drive config problem')}}: {{ gdriveError }}
|
|
</label>
|
|
</div>
|
|
{% else %}
|
|
{% if show_authenticate_google_drive and g.user.is_authenticated and content.config_use_google_drive %}
|
|
<div class="form-group required">
|
|
<a href="{{ url_for('gdrive.authenticate_google_drive') }}" class="btn btn-primary">{{_('Authenticate Google Drive')}}</a>
|
|
</div>
|
|
{% else %}
|
|
{% if show_authenticate_google_drive and g.user.is_authenticated and not content.config_use_google_drive %}
|
|
<div >{{_('Please hit submit to continue with setup')}}</div>
|
|
{% endif %}
|
|
{% if not g.user.is_authenticated %}
|
|
<div >{{_('Please finish Google Drive setup after login')}}</div>
|
|
{% endif %}
|
|
{% if g.user.is_authenticated %}
|
|
{% if not show_authenticate_google_drive %}
|
|
<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('gdrive.revoke_watch_gdrive') }}" class="btn btn-primary">{{_('Revoke')}}</a></span>
|
|
</div>
|
|
{% else %}
|
|
<a href="{{ url_for('gdrive.watch_gdrive') }}" class="btn btn-primary">Enable watch of metadata.db</a>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h4 class="panel-title">
|
|
<a class="accordion-toggle" data-toggle="collapse" href="#collapsetwo">
|
|
<span class="glyphicon glyphicon-plus"></span>
|
|
{{_('Server Configuration')}}
|
|
</a>
|
|
</h4>
|
|
</div>
|
|
<div id="collapsetwo" class="panel-collapse collapse">
|
|
<div class="panel-body">
|
|
<div class="form-group">
|
|
<label for="config_port">{{_('Server Port')}}</label>
|
|
<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>
|
|
</div>
|
|
<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>
|
|
<div class="form-group">
|
|
<label for="config_updater">{{_('Update channel')}}</label>
|
|
<select name="config_updater" id="config_updater" class="form-control">
|
|
<option value="0" {% if content.config_updatechannel == 0 %}selected{% endif %}>{{_('Stable')}}</option>
|
|
<!--option value="1" {% if content.config_updatechannel == 1 %}selected{% endif %}>{{_('Stable (Automatic)')}}</option-->
|
|
<option value="2" {% if content.config_updatechannel == 2 %}selected{% endif %}>{{_('Nightly')}}</option>
|
|
<!--option-- value="3" {% if content.config_updatechannel == 3 %}selected{% endif %}>{{_('Nightly (Automatic)')}}</option-->
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h4 class="panel-title">
|
|
<a class="accordion-toggle" data-toggle="collapse" href="#collapsethree">
|
|
<span class="glyphicon glyphicon-plus"></span>
|
|
{{_('Logfile Configuration')}}
|
|
</a>
|
|
</h4>
|
|
</div>
|
|
<div id="collapsethree" class="panel-collapse collapse">
|
|
<div class="panel-body">
|
|
<div class="form-group">
|
|
<label for="config_log_level">{{_('Log Level')}}</label>
|
|
<select name="config_log_level" id="config_log_level" class="form-control">
|
|
<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>
|
|
</select>
|
|
</div>
|
|
<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>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h4 class="panel-title">
|
|
<a class="accordion-toggle" data-toggle="collapse" href="#collapsefive">
|
|
<span class="glyphicon glyphicon-plus"></span>
|
|
{{_('Feature Configuration')}}
|
|
</a>
|
|
</h4>
|
|
</div>
|
|
<div id="collapsefive" class="panel-collapse collapse">
|
|
<div class="panel-body">
|
|
<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>
|
|
</div>
|
|
<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>
|
|
{% 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>
|
|
<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 %}
|
|
{% 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>
|
|
</div>
|
|
<div data-related="ldap-settings">
|
|
<div class="form-group">
|
|
<label for="config_ldap_provider_url">{{_('LDAP Provider URL')}}</label>
|
|
<input type="text" class="form-control" id="config_ldap_provider_url" name="config_ldap_provider_url" value="{% if content.config_use_ldap != None %}{{ content.config_ldap_provider_url }}{% endif %}" autocomplete="off">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="config_ldap_dn">{{_('LDAP Distinguished Name (DN)')}}</label>
|
|
<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>
|
|
<a href="https://github.com/settings/developers" target="_blank" style="margin-left: 5px">{{_('Obtain GitHub OAuth Credentail')}}</a>
|
|
</div>
|
|
<div data-related="github-oauth-settings">
|
|
<div class="form-group">
|
|
<label for="config_github_oauth_client_id">{{_('GitHub OAuth Client Id')}}</label>
|
|
<input type="text" class="form-control" id="config_github_oauth_client_id" name="config_github_oauth_client_id" value="{% if content.config_github_oauth_client_id != None %}{{ content.config_github_oauth_client_id }}{% endif %}" autocomplete="off">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="config_github_oauth_client_secret">{{_('GitHub OAuth Client Secret')}}</label>
|
|
<input type="text" class="form-control" id="config_github_oauth_client_secret" name="config_github_oauth_client_secret" value="{% if content.config_github_oauth_client_secret != None %}{{ content.config_github_oauth_client_secret }}{% endif %}" autocomplete="off">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<input type="checkbox" id="config_use_google_oauth" name="config_use_google_oauth" data-control="google-oauth-settings" {% if content.config_use_google_oauth %}checked{% endif %}>
|
|
<label for="config_use_google_oauth">{{_('Use')}} Google OAuth</label>
|
|
<a href="https://console.developers.google.com/apis/credentials" target="_blank" style="margin-left: 5px">{{_('Obtain Google OAuth Credentail')}}</a>
|
|
</div>
|
|
<div data-related="google-oauth-settings">
|
|
<div class="form-group">
|
|
<label for="config_google_oauth_client_id">{{_('Google OAuth Client Id')}}</label>
|
|
<input type="text" class="form-control" id="config_google_oauth_client_id" name="config_google_oauth_client_id" value="{% if content.config_google_oauth_client_id != None %}{{ content.config_google_oauth_client_id }}{% endif %}" autocomplete="off">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="config_google_oauth_client_secret">{{_('Google OAuth Client Secret')}}</label>
|
|
<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>
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h4 class="panel-title">
|
|
<a class="accordion-toggle" data-toggle="collapse" href="#collapseeight">
|
|
<span class="glyphicon glyphicon-plus"></span>
|
|
{{_('External binaries')}}
|
|
</a>
|
|
</h4>
|
|
</div>
|
|
<div id="collapseeight" class="panel-collapse collapse">
|
|
<div class="panel-body">
|
|
<div class="form-group">
|
|
<div><input type="radio" name="config_ebookconverter" id="converter0" value="0" {% if content.config_ebookconverter == 0 %}checked{% endif %}>
|
|
<label for="converter0">{{_('No converter')}}</label></div>
|
|
<div><input type="radio" name="config_ebookconverter" id="converter1" value="1" {% if content.config_ebookconverter == 1 %}checked{% endif %}>
|
|
<label for="converter1">{{_('Use Kindlegen')}}</label></div>
|
|
<div><input type="radio" name="config_ebookconverter" id="converter2" value="2" {% if content.config_ebookconverter == 2 %}checked{% endif %}>
|
|
<label for="converter2">{{_('Use calibre\'s ebook converter')}}</label></div>
|
|
</div>
|
|
<div data-related="calibre">
|
|
<div class="form-group">
|
|
<label for="config_calibre">{{_('E-Book converter settings')}}</label>
|
|
<input type="text" class="form-control" id="config_calibre" name="config_calibre" value="{% if content.config_calibre != None %}{{ content.config_calibre }}{% endif %}" autocomplete="off">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="config_calibre">{{_('Path to convertertool')}}</label>
|
|
<input type="text" class="form-control" id="config_converterpath" name="config_converterpath" value="{% if content.config_converterpath != None %}{{ content.config_converterpath }}{% endif %}" autocomplete="off">
|
|
</div>
|
|
</div>
|
|
{% if rarfile_support %}
|
|
<div class="form-group">
|
|
<label for="config_rarfile_location">{{_('Location of Unrar binary')}}</label>
|
|
<input type="text" class="form-control" name="config_rarfile_location" id="config_rarfile_location" value="{% if content.config_rarfile_location != None %}{{ content.config_rarfile_location }}{% endif %}" autocomplete="off">
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="col-sm-12">
|
|
<button type="submit" name="submit" class="btn btn-default">{{_('Submit')}}</button>
|
|
{% if not origin %}
|
|
<a href="{{ url_for('admin.admin') }}" class="btn btn-default">{{_('Back')}}</a>
|
|
{% endif %}
|
|
{% if success %}
|
|
<a href="{{ url_for('web.login') }}" name="login" class="btn btn-default">{{_('Login')}}</a>
|
|
{% endif %}
|
|
</div>
|
|
</form>
|
|
</div>
|
|
{% endblock %}
|
|
{% block js %}
|
|
<script type="text/javascript">
|
|
$(document).on('change', '#config_use_google_drive', function() {
|
|
$('#config_google_drive_folder').prop('required', $(this).prop('checked'));
|
|
});
|
|
$('.collapse').on('shown.bs.collapse', function(){
|
|
$(this).parent().find(".glyphicon-plus").removeClass("glyphicon-plus").addClass("glyphicon-minus");
|
|
}).on('hidden.bs.collapse', function(){
|
|
$(this).parent().find(".glyphicon-minus").removeClass("glyphicon-minus").addClass("glyphicon-plus");
|
|
});
|
|
</script>
|
|
{% endblock %}
|