7631eea32e
Default view still shows the most recently added books, but adds ability to sort by newest/oldest books and books sorted alphabetically (ascending & descending). I did not include translations for the next text, but they are split up for easy translating and are otherwise ready for translating.
207 lines
11 KiB
HTML
207 lines
11 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>{{instance}} | {{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/libs/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/libs/bootstrap.min.js') }}"></script>
|
|
<script src="{{ url_for('static', filename='js/libs/underscore-min.js') }}"></script>
|
|
<script src="{{ url_for('static', filename='js/libs/intention.min.js') }}"></script>
|
|
<script src="{{ url_for('static', filename='js/libs/context.min.js') }}"></script>
|
|
<script src="{{ url_for('static', filename='js/libs/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>
|
|
{% if g.user.is_authenticated or g.user.is_anonymous() %}
|
|
<form class="navbar-form navbar-left" role="search" action="{{url_for('search')}}" method="GET">
|
|
<div class="form-group input-group input-group-sm">
|
|
<input type="text" class="form-control" name="query" placeholder="{{_('Search')}}">
|
|
<span class="input-group-btn">
|
|
<button type="submit" class="btn btn-default">{{_('Go!')}}</button>
|
|
</span>
|
|
</div>
|
|
</form>
|
|
{% endif %}
|
|
<div class="navbar-collapse collapse">
|
|
{% if g.user.is_authenticated or g.user.is_anonymous() %}
|
|
<ul class="nav navbar-nav ">
|
|
<li><a href="{{url_for('advanced_search')}}"><span class="glyphicon glyphicon-search"></span><span class="hidden-sm"> {{_('Advanced Search')}}</span></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 id="top_admin" href="{{url_for('admin')}}"><span class="glyphicon glyphicon-dashboard"></span><span class="hidden-sm"> {{_('Admin')}}</span></a></li>
|
|
{% endif %}
|
|
<li><a id="top_user" href="{{url_for('profile')}}"><span class="glyphicon glyphicon-user"></span><span class="hidden-sm"> {{g.user.nickname}}</span></a></li>
|
|
{% if not g.user.is_anonymous() %}
|
|
<li><a id="logout" href="{{url_for('logout')}}"><span class="glyphicon glyphicon-log-out"></span><span class="hidden-sm"> {{_('Logout')}}</span></a></li>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if g.allow_registration and not g.user.is_authenticated %}
|
|
<li><a id="login" href="{{url_for('login')}}"><span class="glyphicon glyphicon-log-in"></span> {{_('Login')}}</a></li>
|
|
<li><a id="register" 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 id="flash_alert" 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 id="flash_info" 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 id="flash_success" 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 id="nav_new"><a href="{{url_for('index')}}"><span class="glyphicon glyphicon-book"></span> {{_('Recently Added')}}</a></li>
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
|
|
<span class="glyphicon glyphicon-sort-by-attributes"></span> {{_('Sorted Books')}}
|
|
<span class="caret"></span>
|
|
</a>
|
|
<ul class="dropdown-menu">
|
|
<li><a href="{{url_for('newest_books')}}">{{_('Sort By')}} {{_('Newest')}}</a></li>
|
|
<li><a href="{{url_for('oldest_books')}}">{{_('Sort By')}} {{_('Oldest')}}</a></li>
|
|
<li><a href="{{url_for('titles_ascending')}}">{{_('Sort By')}} {{_('Title')}} ({{_('Ascending')}})</a></li>
|
|
<li><a href="{{url_for('titles_descending')}}">{{_('Sort By')}} {{_('Title')}} ({{_('Descending')}})</a></li>
|
|
</ul>
|
|
</li>
|
|
{% if g.user.show_hot_books() %}
|
|
<li id="nav_hot"><a href="{{url_for('hot_books')}}"><span class="glyphicon glyphicon-fire"></span> {{_('Hot Books')}}</a></li>
|
|
{%endif%}
|
|
{% if g.user.show_best_rated_books() %}
|
|
<li><a href="{{url_for('best_rated_books')}}"><span class="glyphicon glyphicon-star"></span> {{_('Best rated Books')}}</a></li>
|
|
{%endif%}
|
|
{% if g.user.show_read_and_unread() %}
|
|
<li><a href="{{url_for('read_books')}}"><span class="glyphicon glyphicon-eye-open"></span> {{_('Read Books')}}</a></li>
|
|
<li><a href="{{url_for('unread_books')}}"><span class="glyphicon glyphicon-eye-close"></span> {{_('Unread Books')}}</a></li>
|
|
{%endif%}
|
|
{% if g.user.show_random_books() %}
|
|
<li id="nav_rand"><a href="{{url_for('discover')}}"><span class="glyphicon glyphicon-random"></span> {{_('Discover')}}</a></li>
|
|
{%endif%}
|
|
{% if g.user.show_category() %}
|
|
<li id="nav_cat"><a href="{{url_for('category_list')}}"><span class="glyphicon glyphicon-inbox"></span> {{_('Categories')}}</a></li>
|
|
{%endif%}
|
|
{% if g.user.show_series() %}
|
|
<li id="nav_serie"><a href="{{url_for('series_list')}}"><span class="glyphicon glyphicon-bookmark"></span> {{_('Series')}}</a></li>
|
|
{%endif%}
|
|
<li id="nav_author"><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 id="nav_lang"><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 and (pagination.has_next or pagination.has_prev) %}
|
|
<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 modal %}{% endblock %}
|
|
{% block js %}{% endblock %}
|
|
</body>
|
|
</html>
|