mirror of
https://github.com/janeczku/calibre-web
synced 2024-11-24 18:47:23 +00:00
2335252b1f
Thanks @idalin user language should be detected from browser, or otherwise with enabled anonymous browsing it can be selected as admin (configure language for user guest). Annymous browsing can be deactivated afterwards
185 lines
9.3 KiB
HTML
185 lines
9.3 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>calibre web | {{title}}</title>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
|
|
<!-- Bootstrap -->
|
|
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
|
|
<link href="{{ url_for('static', filename='css/bootstrap.min.css') }}" rel="stylesheet" media="screen">
|
|
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet" media="screen">
|
|
|
|
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
|
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
|
<!--[if lt IE 9]>
|
|
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
|
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
|
|
<![endif]-->
|
|
|
|
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
|
|
<!--script src="https://code.jquery.com/jquery.js"></script-->
|
|
<script src="{{ url_for('static', filename='js/libs/jquery.min.js') }}"></script>
|
|
<!-- Include all compiled plugins (below), or include individual files as needed -->
|
|
<script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>
|
|
<script src="{{ url_for('static', filename='js/underscore-min.js') }}"></script>
|
|
<script src="{{ url_for('static', filename='js/intention.js') }}"></script>
|
|
<script src="{{ url_for('static', filename='js/context.js') }}"></script>
|
|
<script src="{{ url_for('static', filename='js/plugins.js') }}"></script>
|
|
<script src="{{ url_for('static', filename='js/main.js') }}"></script>
|
|
|
|
{% block header %}{% endblock %}
|
|
</head>
|
|
<body>
|
|
<script>
|
|
$(document).ready(function(){
|
|
$("#btn-upload").change(function() {
|
|
$("#form-upload").submit();
|
|
});
|
|
});
|
|
</script>
|
|
<!-- Static navbar -->
|
|
<div class="navbar navbar-default navbar-static-top" role="navigation">
|
|
<div class="container-fluid">
|
|
<div class="navbar-header">
|
|
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
|
<span class="sr-only">{{_('Toggle navigation')}}</span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
</button>
|
|
<a class="navbar-brand" href="{{url_for('index')}}">Calibre Web</a>
|
|
</div>
|
|
<div class="navbar-collapse collapse">
|
|
{% if g.user.is_authenticated or g.user.is_anonymous() %}
|
|
<ul class="nav navbar-nav ">
|
|
<li>
|
|
<form class="navbar-form navbar-left" role="search" action="{{url_for('search')}}" method="GET">
|
|
<div class="form-group">
|
|
<input type="text" class="form-control" name="query" placeholder="{{_('Search')}}">
|
|
</div>
|
|
<button type="submit" class="btn btn-default">{{_('Go!')}}</button>
|
|
</form>
|
|
</li>
|
|
<li><a href="{{url_for('advanced_search')}}"><span class="glyphicon glyphicon-search"></span> {{_('Advanced Search')}}</a></li>
|
|
</ul>
|
|
{% endif %}
|
|
<ul class="nav navbar-nav navbar-right" id="main-nav">
|
|
{% if g.user.is_authenticated or g.user.is_anonymous() %}
|
|
{% if g.user.role_upload() or g.user.role_admin()%}
|
|
{% if g.allow_upload %}
|
|
<li>
|
|
<form id="form-upload" class="navbar-form" action="{{ url_for('upload') }}" method="post" enctype="multipart/form-data">
|
|
<div class="form-group">
|
|
<span class="btn btn-default btn-file">{{_('Upload')}} <input id="btn-upload" name="btn-upload" type="file"></span>
|
|
</div>
|
|
</form>
|
|
</li>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if g.user.role_admin() %}
|
|
<li><a href="{{url_for('admin')}}"><span class="glyphicon glyphicon-dashboard"></span> {{_('Admin')}}</a></li>
|
|
{% endif %}
|
|
<li><a href="{{url_for('profile')}}"><span class="glyphicon glyphicon-user"></span> {{g.user.nickname}}</a></li>
|
|
{% if not g.user.is_anonymous() %}
|
|
<li><a href="{{url_for('logout')}}"><span class="glyphicon glyphicon-log-out"></span> {{_('Logout')}}</a></li>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if g.allow_registration and not g.user.is_authenticated %}
|
|
<li><a href="{{url_for('login')}}"><span class="glyphicon glyphicon-log-in"></span> {{_('Login')}}</a></li>
|
|
<li><a href="{{url_for('register')}}"><span class="glyphicon glyphicon-user"></span> {{_('Register')}}</a></li>
|
|
{% endif %}
|
|
</ul>
|
|
</div><!--/.nav-collapse -->
|
|
</div>
|
|
</div>
|
|
{% for message in get_flashed_messages(with_categories=True) %}
|
|
{%if message[0] == "error" %}
|
|
<div class="row-fluid" style="margin-top: -20px; text-align: center;">
|
|
<div class="alert alert-danger">{{ message[1] }}</div>
|
|
</div>
|
|
{%endif%}
|
|
{%if message[0] == "info" %}
|
|
<div class="row-fluid" style="margin-top: -20px; text-align: center;">
|
|
<div class="alert alert-info">{{ message[1] }}</div>
|
|
</div>
|
|
{%endif%}
|
|
{%if message[0] == "success" %}
|
|
<div class="row-fluid" style="margin-top: -20px; text-align: center;">
|
|
<div class="alert alert-success">{{ message[1] }}</div>
|
|
</div>
|
|
{%endif%}
|
|
{% endfor %}
|
|
<div class="container-fluid">
|
|
<div class="row-fluid">
|
|
{% if g.user.is_authenticated or g.user.is_anonymous() %}
|
|
<div class="col-sm-2">
|
|
<nav class="navigation">
|
|
<ul class="list-unstyled" id="scnd-nav" intent in-standard-append="nav.navigation" in-mobile-after="#main-nav" in-mobile-class="nav navbar-nav">
|
|
<li class="nav-head hidden-xs">{{_('Browse')}}</li>
|
|
<li><a href="{{url_for('index')}}"><span class="glyphicon glyphicon-book"></span> {{_('New Books')}}</a></li>
|
|
{% if g.user.show_hot_books() %}
|
|
<li><a href="{{url_for('hot_books')}}"><span class="glyphicon glyphicon-fire"></span> {{_('Hot Books')}}</a></li>
|
|
{%endif%}
|
|
{% if g.user.show_random_books() %}
|
|
<li><a href="{{url_for('discover')}}"><span class="glyphicon glyphicon-random"></span> {{_('Discover')}}</a></li>
|
|
{%endif%}
|
|
{% if g.user.show_category() %}
|
|
<li><a href="{{url_for('category_list')}}"><span class="glyphicon glyphicon-inbox"></span> {{_('Categories')}}</a></li>
|
|
{%endif%}
|
|
{% if g.user.show_series() %}
|
|
<li><a href="{{url_for('series_list')}}"><span class="glyphicon glyphicon-bookmark"></span> {{_('Series')}}</a></li>
|
|
{%endif%}
|
|
<li><a href="{{url_for('author_list')}}"><span class="glyphicon glyphicon-user"></span> {{_('Authors')}}</a></li>
|
|
{% if g.user.filter_language() == 'all' and g.user.show_language() %}
|
|
<li><a href="{{url_for('language_overview')}}"><span class="glyphicon glyphicon-flag"></span> {{_('Languages')}} </a></li>
|
|
{%endif%}
|
|
{% if g.user.is_authenticated or g.user.is_anonymous() %}
|
|
<li class="nav-head hidden-xs">{{_('Public Shelves')}}</li>
|
|
{% for shelf in g.public_shelfes %}
|
|
<li><a href="{{url_for('show_shelf', shelf_id=shelf.id)}}"><span class="glyphicon glyphicon-list"></span> {{shelf.name}}</a></li>
|
|
{% endfor %}
|
|
<li class="nav-head hidden-xs">{{_('Your Shelves')}}</li>
|
|
{% for shelf in g.user.shelf %}
|
|
<li><a href="{{url_for('show_shelf', shelf_id=shelf.id)}}"><span class="glyphicon glyphicon-list"></span> {{shelf.name}}</a></li>
|
|
{% endfor %}
|
|
{% if not g.user.is_anonymous() %}
|
|
<li id="nav_createshelf" class="create-shelf"><a href="{{url_for('create_shelf')}}">{{_('Create a Shelf')}}</a></li>
|
|
<li id="nav_about"><a href="{{url_for('stats')}}"><span class="glyphicon glyphicon-info-sign"></span> {{_('About')}}</a></li>
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
{% endif %}
|
|
<div class="col-sm-10">
|
|
{% block body %}{% endblock %}
|
|
{% if pagination %}
|
|
<div class="pagination">
|
|
{%- for page in pagination.iter_pages() %}
|
|
{% if page %}
|
|
{% if page != pagination.page %}
|
|
<a href="{{ url_for_other_page(page) }}">{{ page }}</a>
|
|
{% else %}
|
|
<strong>{{ page }}</strong>
|
|
{% endif %}
|
|
{% else %}
|
|
<span class="ellipsis">…</span>
|
|
{% endif %}
|
|
{%- endfor %}
|
|
{% if pagination.has_next %}
|
|
<a class="next" href="{{ url_for_other_page(pagination.page + 1)
|
|
}}">Next »</a>
|
|
{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% block js %}{% endblock %}
|
|
</body>
|
|
</html>
|