mirror of
https://github.com/lazylibrarian/LazyLibrarian.git
synced 2026-06-12 09:35:37 -04:00
209 lines
10 KiB
HTML
209 lines
10 KiB
HTML
<%
|
|
import lazylibrarian
|
|
%>
|
|
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
|
|
<title>LazyLibrarian - ${title}</title>
|
|
<meta name="description" content="">
|
|
<meta name="author" content="">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
|
|
<link rel="shortcut icon" type="image/png" href="images/ll.ico">
|
|
<link rel="apple-touch-icon" href="images/templogo.png">
|
|
<!--<link rel="stylesheet" href="css/style.css?v=2">-->
|
|
|
|
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/s/bs-3.3.5/jqc-1.11.3,dt-1.10.10,b-1.1.0/datatables.min.css"/>
|
|
<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.6/${lazylibrarian.BOOKSTRAP_THEME}/bootstrap.min.css" rel="stylesheet">
|
|
<!--<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">-->
|
|
|
|
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">
|
|
|
|
<link href="css/bookstrap.css" rel="stylesheet">
|
|
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
|
|
<script src="https://code.jquery.com/jquery-migrate-1.3.0.min.js"></script>
|
|
<!--<script src="js/script.js"></script>-->
|
|
<script src="js/lazylibrarian-bs.js"></script>
|
|
${next.headIncludes()}
|
|
|
|
|
|
<script type="text/javascript">
|
|
// Allow the user to reset the search filter
|
|
$(document).ready(function () {
|
|
$.fn.dataTableExt.oApi.clearSearch = function ( oSettings ) {
|
|
var table = this;
|
|
|
|
//var clearSearch = $('<img title="Delete" alt="" src="data:image/png;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAD2SURBVHjaxFM7DoMwDH2pOESHHgDPcB223gKpAxK34EAMMIe1FCQOgFQxuflARVBSVepQS5Ht2PHn2RHMjF/ohB8p2gSZpprtyxEHX8dGTeMG0A5UlsD5rCSGvF55F4SpqpSm1GmCzPO3LXJy1LXllwvodoMsCpNVy2hbYBjCLRiaZ8u7Dng+QXlu9b4H7ncvBmKbwoYBWR4kaXv3YmAMyoEpjv2PdWUHcP1j1ECqFpyj777YA6Yss9KyuEeDaW0cCsCUJMDjYUE8kr5TNuOzC+JiMI5uz2rmJvNWvidwcJXXx8IAuwb6uMqrY2iVgzbx99/4EmAAarFu0IJle5oAAAAASUVORK5CYII=" style="vertical-align:text-bottom;cursor:pointer;" />');
|
|
|
|
var clearSearch = $('<i class="fa fa-remove" style="cursor:pointer;width:16px;text-align:left;" title="Reset Search"></i>');
|
|
|
|
$(clearSearch).click( function ()
|
|
{
|
|
table.fnFilter('');
|
|
$('input[type=search]').val('');
|
|
});
|
|
$(oSettings.nTableWrapper).find('div.dataTables_filter').append(clearSearch);
|
|
$(oSettings.nTableWrapper).find('div.dataTables_filter label').css('margin-right', '-16px');//16px the image width
|
|
$(oSettings.nTableWrapper).find('div.dataTables_filter input').css('padding-right', '16px');
|
|
}
|
|
|
|
//auto-execute, no code needs to be added
|
|
$.fn.dataTable.models.oSettings['aoInitComplete'].push( {
|
|
"fn": $.fn.dataTableExt.oApi.clearSearch,
|
|
"sName": 'whatever'
|
|
});
|
|
});
|
|
</script>
|
|
|
|
${next.javascriptIncludes()}
|
|
<script type="text/javascript">
|
|
// Check or uncheck all checkboxes in the same table
|
|
function toggleAll(e) {
|
|
var table = $(e).closest('table');
|
|
$('td input:checkbox', table).prop('checked', e.checked);
|
|
}
|
|
</script>
|
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
|
|
<script type="text/javascript" src="https://cdn.datatables.net/s/bs-3.3.5/jqc-1.11.3,dt-1.10.10,b-1.1.0/datatables.min.js"></script>
|
|
<script src="js/bootbox.min.js"></script>
|
|
<script src="js/bootstrap-notify.min.js"></script>
|
|
|
|
</head>
|
|
<body>
|
|
<div id="container">
|
|
|
|
<header>
|
|
<div id="headercontainer" class="navbar navbar-default navbar-fixed-top">
|
|
<div class="container">
|
|
<div class="navbar-header">
|
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#MainNav" aria-expanded="false">
|
|
<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="home"><i class="fa fa-home"></i> LazyLibrarian</a>
|
|
</div>
|
|
|
|
<div class="collapse navbar-collapse" id="MainNav">
|
|
<ul class="nav navbar-nav">
|
|
<li><a href="home" class="navbarele">Authors</a></li>
|
|
<li><a href="books" class="navbarele">Books</a></li>
|
|
<li><a href="magazines" class="navbarele">Magazines</a></li>
|
|
<li><a href="manage" class="navbarele">Manage</a></li>
|
|
<li><a href="history" class="navbarele">History</a></li>
|
|
<li><a href="logs" class="navbarele">Logs</a></li>
|
|
<li><a href="config" class="navbarcfg"><i class="fa fa-cog"></i> Config</a></li>
|
|
</ul>
|
|
|
|
<form class="navbar-form navbar-right" action="search" method="get">
|
|
<div class="form-group">
|
|
<div class="input-group">
|
|
<input type="text" class="form-control deletable input-sm" value="" onfocus="if(this.value==this.defaultValue) this.value='';" name="name" placeholder="Title / Author / ISBN" id="searchbox">
|
|
<span class="input-group-btn">
|
|
<button type="submit" class="btn btn-sm btn-default"><i class="fa fa-search"></i></button>
|
|
</span>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="subnav" class="navbar-inverse">
|
|
<div id="subhead" class="container">
|
|
${next.headerIncludes()}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
|
|
<div id="main" class="main container">
|
|
${next.body()}
|
|
</div>
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
msg = '';
|
|
% if lazylibrarian.INSTALL_TYPE == 'git' or lazylibrarian.INSTALL_TYPE == 'source':
|
|
% if not lazylibrarian.CURRENT_VERSION:
|
|
msg = 'You are running an unknown version of lazylibrarian.<br/><a href="update" class="btn btn-xs btn-primary pull-right">Update</a>'
|
|
% elif (lazylibrarian.INSTALL_TYPE == 'source' and lazylibrarian.CURRENT_VERSION == 'No Version File' ):
|
|
msg = 'Running Unknown version via source install. Update from central area now <a href="update" class="btn btn-xs btn-primary pull-right">Update</a>
|
|
% elif lazylibrarian.CURRENT_VERSION != lazylibrarian.LATEST_VERSION:
|
|
% if lazylibrarian.LATEST_VERSION == 'Not_Available_From_GitHUB':
|
|
msg = 'Unable to get latest version from GITHub'
|
|
% elif lazylibrarian.COMMITS_BEHIND < 0:
|
|
msg = 'Running a local updated version. Push changes to GITHub or rollback to Master release'
|
|
% elif lazylibrarian.COMMITS_BEHIND > 1:
|
|
msg = 'New version available. You are ${lazylibrarian.COMMITS_BEHIND} commits behind.<br/><div class="pull-right"><a href="#" class="btn btn-xs btn-primary" data-toggle="tooltip" title="Ignore the update message for 24 hours" id="ignoreUpdate">Ignore</a> <a href="update" class="btn btn-xs btn-primary" data-toggle="tooltip" title="Update to the latest release">Update</a></div>'
|
|
% elif lazylibrarian.COMMITS_BEHIND == 1:
|
|
msg = 'New version available. You are one commit behind.<br/><div class="pull-right"><a href="#" class="btn btn-xs btn-primary" data-toggle="tooltip" title="Ignore the update message for 24 hours" id="ignoreUpdate">Ignore</a> <a href="update" class="btn btn-xs btn-primary" data-toggle="tooltip" title="Update to the latest release">Update</a></div>'
|
|
|
|
//<a class="btn btn-xs btn-primary pull-right" href="http://github.com/DobyTang/LazyLibrarian/compare/${lazylibrarian.CURRENT_VERSION}...${lazylibrarian.LATEST_VERSION}" target="_blank">Click Here</a>'
|
|
% endif
|
|
% endif
|
|
% endif
|
|
|
|
$(document).ready(function() {
|
|
if (msg != '' && readCookie('ignoreUpdate') === null) {
|
|
$.notify({
|
|
icon: 'fa fa-check-square-o',
|
|
message: msg
|
|
},{
|
|
type: 'warning'
|
|
});
|
|
}
|
|
|
|
$('#ignoreUpdate').click(function() {
|
|
createCookie("ignoreUpdate", true, 1);
|
|
});
|
|
});
|
|
|
|
// Initialise tooltips
|
|
$(function () {
|
|
$('[data-toggle="tooltip"]').tooltip()
|
|
})
|
|
|
|
|
|
function createCookie(name, value, days) {
|
|
var expires;
|
|
|
|
if (days) {
|
|
var date = new Date();
|
|
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
|
|
expires = "; expires=" + date.toGMTString();
|
|
} else {
|
|
expires = "";
|
|
}
|
|
document.cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) + expires + "; path=/";
|
|
}
|
|
|
|
function readCookie(name) {
|
|
var nameEQ = encodeURIComponent(name) + "=";
|
|
var ca = document.cookie.split(';');
|
|
for (var i = 0; i < ca.length; i++) {
|
|
var c = ca[i];
|
|
while (c.charAt(0) === ' ') c = c.substring(1, c.length);
|
|
if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length));
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function eraseCookie(name) {
|
|
createCookie(name, "", -1);
|
|
}
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|
|
|
|
<%def name="javascriptIncludes()"></%def>
|
|
<%def name="headIncludes()"></%def>
|
|
<%def name="headerIncludes()"></%def>
|