mirror of
https://github.com/janeczku/calibre-web
synced 2026-10-21 23:32:27 +00:00
Migration to bootstrap5 of caliblur Theme
This commit is contained in:
+229
-112
@@ -1,4 +1,4 @@
|
||||
.form-control, .home-btn, .home-btn > a, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
|
||||
.form-control, .home-btn, .home-btn > a, body > nav.navbar > div > div.navbar-header > a {
|
||||
font-variant-caps: normal;
|
||||
font-variant-numeric: normal;
|
||||
font-weight: 400;
|
||||
@@ -15,7 +15,7 @@
|
||||
text-overflow: ellipsis
|
||||
}
|
||||
|
||||
.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2:before, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
|
||||
.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2:before, body > nav.navbar > div > div.navbar-header > a {
|
||||
line-height: 60px;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
@@ -160,7 +160,7 @@
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 991px) and (min-width: 768px) {
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a > span:before {
|
||||
body > nav.navbar > div > div.navbar-collapse.collapse > ul > li > a > span:before {
|
||||
font-size: 18px
|
||||
}
|
||||
|
||||
@@ -189,14 +189,14 @@
|
||||
}
|
||||
|
||||
@media only screen and (max-height: 600px) {
|
||||
body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a,
|
||||
body.register > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
|
||||
body.login > nav.navbar > div > div.navbar-header > a,
|
||||
body.register > nav.navbar > div > div.navbar-header > a {
|
||||
padding: 0 !important;
|
||||
height: 60px !important
|
||||
}
|
||||
|
||||
body.login > div.container-fluid > div.row-fluid > div.col-sm-10,
|
||||
body.register > div.container-fluid > div.row-fluid > div.col-sm-10 {
|
||||
body.login > div.container-fluid > div.row > div.col-sm-10,
|
||||
body.register > div.container-fluid > div.row > div.col-sm-10 {
|
||||
top: 60px !important
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a[href*=advanced_search] {
|
||||
body > nav.navbar > div > div.navbar-collapse.collapse > ul > li > a[href*=advanced_search] {
|
||||
display: none
|
||||
}
|
||||
|
||||
@@ -248,7 +248,7 @@ body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.c
|
||||
background-color: transparent
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover {
|
||||
nav.navbar .navbar-nav .open .dropdown-menu > .active > a:hover {
|
||||
color: #fff;
|
||||
background-color: hsla(0, 0%, 100%, .08)
|
||||
}
|
||||
@@ -349,7 +349,7 @@ body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.c
|
||||
text-transform: uppercase
|
||||
}
|
||||
|
||||
.home-btn > a, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
|
||||
.home-btn > a, body > nav.navbar > div > div.navbar-header > a {
|
||||
text-transform: none;
|
||||
-moz-user-select: none;
|
||||
-webkit-font-smoothing: antialiased
|
||||
@@ -651,7 +651,7 @@ a:hover {
|
||||
cursor: pointer
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
|
||||
body > nav.navbar > div > div.navbar-header > a {
|
||||
margin: 60px auto auto !important;
|
||||
width: 240px;
|
||||
height: 60px;
|
||||
@@ -744,7 +744,7 @@ body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a
|
||||
content: "\EA30"
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.home-btn > a:hover:before {
|
||||
body > nav.navbar > div > div.home-btn > a:hover:before {
|
||||
color: #fff
|
||||
}
|
||||
|
||||
@@ -757,13 +757,56 @@ body > div.navbar.navbar-default.navbar-static-top > div > div.home-btn > a:hove
|
||||
content: ''
|
||||
}
|
||||
|
||||
.navbar-default {
|
||||
nav.navbar {
|
||||
background-color: rgba(0, 0, 0, .6) !important;
|
||||
border: none;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
z-index: -9
|
||||
z-index: 10;
|
||||
padding: 0;
|
||||
display: block;
|
||||
min-height: 60px;
|
||||
}
|
||||
|
||||
nav.navbar > .container-fluid {
|
||||
display: block;
|
||||
padding: 0;
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
nav.navbar .navbar-header {
|
||||
float: left;
|
||||
}
|
||||
|
||||
nav.navbar .navbar-brand {
|
||||
line-height: 60px;
|
||||
}
|
||||
|
||||
nav.navbar > .container-fluid > .navbar-form {
|
||||
float: left;
|
||||
}
|
||||
|
||||
nav.navbar .navbar-collapse {
|
||||
flex-grow: 0;
|
||||
}
|
||||
|
||||
nav.navbar .navbar-nav {
|
||||
display: block;
|
||||
margin: 0;
|
||||
float: left;
|
||||
}
|
||||
|
||||
nav.navbar .navbar-nav > li > a {
|
||||
display: block;
|
||||
}
|
||||
|
||||
nav.navbar .navbar-toggler {
|
||||
display: none;
|
||||
}
|
||||
|
||||
body:not(.read-frame):not(.login):not(.register):not(.remotelogin) {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
body:not(.read-frame) {
|
||||
@@ -787,18 +830,18 @@ body:not(.read-frame) {
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > div {
|
||||
body > nav.navbar > div > form > div {
|
||||
position: relative;
|
||||
width: 360px
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > div > span.input-group-btn {
|
||||
body > nav.navbar > div > form > div > span.input-group-btn {
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
z-index: 999999;
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div > span.input-group-btn {
|
||||
body > nav.navbar > div > form.search-focus > div > span.input-group-btn {
|
||||
opacity: 1;
|
||||
pointer-events: auto
|
||||
}
|
||||
@@ -849,7 +892,7 @@ body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > d
|
||||
display: none
|
||||
}
|
||||
|
||||
.profileDropli > li > a > span.hidden-sm {
|
||||
.profileDropli > li > a > span.caliblur-nav-label {
|
||||
display: inline !important
|
||||
}
|
||||
|
||||
@@ -914,8 +957,8 @@ body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > d
|
||||
}
|
||||
|
||||
#form-upload .form-group .btn:before {
|
||||
content: "\e043";
|
||||
font-family: 'Glyphicons Halflings', serif;
|
||||
content: "\f193";
|
||||
font-family: bootstrap-icons;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: 1;
|
||||
@@ -933,7 +976,7 @@ body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > d
|
||||
z-index: -9
|
||||
}
|
||||
|
||||
#top_admin > span.hidden-sm, #top_tasks > span.hidden-sm {
|
||||
#top_admin > span.caliblur-nav-label, #top_tasks > span.caliblur-nav-label {
|
||||
display: none
|
||||
}
|
||||
|
||||
@@ -1021,7 +1064,7 @@ body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > d
|
||||
background: hsla(0, 0%, 100%, .25) !important
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > div > span > button {
|
||||
body > nav.navbar > div > form > div > span > button {
|
||||
background-color: #555;
|
||||
color: #eee;
|
||||
border: none;
|
||||
@@ -1035,7 +1078,7 @@ button[name='search'] {
|
||||
min-height: 40px;
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > div > .query-search-icon {
|
||||
body > nav.navbar > div > form > div > .query-search-icon {
|
||||
position: absolute;
|
||||
left: 16px;
|
||||
top: 50%;
|
||||
@@ -1045,7 +1088,7 @@ body > div.navbar.navbar-default.navbar-static-top > div > form > div > .query-s
|
||||
transform: translateY(-50%)
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div > .query-search-icon {
|
||||
body > nav.navbar > div > form.search-focus > div > .query-search-icon {
|
||||
color: #555;
|
||||
z-index: 999;
|
||||
}
|
||||
@@ -1061,7 +1104,7 @@ body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > d
|
||||
color: #555 !important
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > div > span.input-group-btn {
|
||||
body > nav.navbar > div > form > div > span.input-group-btn {
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
left: auto;
|
||||
@@ -1075,7 +1118,7 @@ body > div.navbar.navbar-default.navbar-static-top > div > form > div > span.inp
|
||||
transform: translateY(-50%)
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > div > span.input-group-btn > button {
|
||||
body > nav.navbar > div > form > div > span.input-group-btn > button {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -1085,37 +1128,37 @@ body > div.navbar.navbar-default.navbar-static-top > div > form > div > span.inp
|
||||
padding: 0
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > div > span.input-group-btn > button > .glyphicon {
|
||||
body > nav.navbar > div > form > div > span.input-group-btn > button > .glyphicon {
|
||||
top: 0
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form {
|
||||
body > nav.navbar > div > form {
|
||||
margin-left: -140px;
|
||||
padding: 0;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input::-webkit-input-placeholder {
|
||||
body > nav.navbar > div > form > .form-group > input::-webkit-input-placeholder {
|
||||
color: hsla(0, 0%, 100%, .65);
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input:-moz-placeholder {
|
||||
body > nav.navbar > div > form > .form-group > input:-moz-placeholder {
|
||||
color: hsla(0, 0%, 100%, .65);
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input::-moz-placeholder {
|
||||
body > nav.navbar > div > form > .form-group > input::-moz-placeholder {
|
||||
color: hsla(0, 0%, 100%, .65);
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input:-ms-input-placeholder {
|
||||
body > nav.navbar > div > form > .form-group > input:-ms-input-placeholder {
|
||||
color: hsla(0, 0%, 100%, .65)
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input {
|
||||
body > nav.navbar > div > form > .form-group > input {
|
||||
border-radius: 4px;
|
||||
height: 40px;
|
||||
width: 360px;
|
||||
@@ -1123,30 +1166,31 @@ body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group >
|
||||
}
|
||||
|
||||
#main-nav {
|
||||
margin-right: 15px
|
||||
margin-right: 15px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#main-nav > li {
|
||||
float: right
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li {
|
||||
body > nav.navbar > div > div.navbar-collapse.collapse > ul, body > nav.navbar > div > div.navbar-collapse.collapse > ul > li {
|
||||
height: 60px
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a {
|
||||
body > nav.navbar > div > div.navbar-collapse.collapse > ul > li > a {
|
||||
height: 60px;
|
||||
padding: 20px 10px;
|
||||
color: hsla(0, 0%, 100%, .7)
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > #top_admin > .glyphicon-dashboard::before {
|
||||
body > nav.navbar > div > div.navbar-collapse.collapse > ul > li > #top_admin > .glyphicon-dashboard::before {
|
||||
content: "\EA31";
|
||||
font-family: plex-icons-new, serif;
|
||||
font-size: 20px
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > #top_admin > span:last-of-type {
|
||||
body > nav.navbar > div > div.navbar-collapse.collapse > ul > li > #top_admin > span:last-of-type {
|
||||
vertical-align: top
|
||||
}
|
||||
|
||||
@@ -1665,7 +1709,7 @@ body > .container-fluid {
|
||||
left: 0
|
||||
}
|
||||
|
||||
body > div.container-fluid > div.row-fluid > div.col-sm-2 {
|
||||
body > div.container-fluid > div.row > div.col-sm-2 {
|
||||
position: absolute;
|
||||
width: 240px;
|
||||
height: calc(100% - 60px);
|
||||
@@ -1676,7 +1720,7 @@ body > div.container-fluid > div.row-fluid > div.col-sm-2 {
|
||||
overflow-y: auto
|
||||
}
|
||||
|
||||
body > div.container-fluid > div.row-fluid > div.col-sm-10 {
|
||||
body > div.container-fluid > div.row > div.col-sm-10 {
|
||||
width: calc(100vw - 237px);
|
||||
height: calc(100% - 60px);
|
||||
padding: 0;
|
||||
@@ -1905,7 +1949,7 @@ body > div.container-fluid > div > div.col-sm-10 > div.pagination .page-previous
|
||||
color: hsla(0, 0%, 100%, .7)
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav > li > a:focus, .navbar-default .navbar-nav > li > a:hover {
|
||||
nav.navbar .navbar-nav > li > a:focus, nav.navbar .navbar-nav > li > a:hover {
|
||||
color: #fff !important
|
||||
}
|
||||
|
||||
@@ -3622,7 +3666,7 @@ body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-b
|
||||
background: rgba(0, 0, 0, .3)
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a:hover {
|
||||
body > nav.navbar > div > div.navbar-header > a:hover {
|
||||
color: #fff !important;
|
||||
-webkit-transition: color .2s;
|
||||
-o-transition: color .2s;
|
||||
@@ -3777,6 +3821,20 @@ body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a
|
||||
background-color: hsla(0, 0%, 100%, .25)
|
||||
}
|
||||
|
||||
.login .toggle-password {
|
||||
background-color: var(--color-secondary);
|
||||
border-color: var(--color-secondary);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.login .toggle-password:hover,
|
||||
.login .toggle-password:focus,
|
||||
.login .toggle-password:active {
|
||||
background-color: var(--color-secondary-hover);
|
||||
border-color: var(--color-secondary-hover);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.login ::-webkit-input-placeholder {
|
||||
color: transparent
|
||||
}
|
||||
@@ -3793,9 +3851,9 @@ body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a
|
||||
color: transparent
|
||||
}
|
||||
|
||||
body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a,
|
||||
body.register > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a,
|
||||
body.remotelogin > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
|
||||
body.login > nav.navbar > div > div.navbar-header > a,
|
||||
body.register > nav.navbar > div > div.navbar-header > a,
|
||||
body.remotelogin > nav.navbar > div > div.navbar-header > a {
|
||||
width: 100vw;
|
||||
height: 120px;
|
||||
margin: 0 !important;
|
||||
@@ -3806,34 +3864,86 @@ body.remotelogin > div.navbar.navbar-default.navbar-static-top > div > div.navba
|
||||
font-size: 20px
|
||||
}
|
||||
|
||||
body.login > .container-fluid,
|
||||
body.register > .container-fluid,
|
||||
body.remotelogin > .container-fluid {
|
||||
width: 100vw;
|
||||
height: 100%;
|
||||
position: relative
|
||||
body.login > nav.navbar,
|
||||
body.register > nav.navbar,
|
||||
body.remotelogin > nav.navbar {
|
||||
min-height: 120px;
|
||||
background: transparent !important;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
body.login > div.container-fluid > div.row-fluid > div.col-sm-10,
|
||||
body.register > div.container-fluid > div.row-fluid > div.col-sm-10,
|
||||
body.remotelogin > div.container-fluid > div.row-fluid > div.col-sm-10 {
|
||||
body.login > nav.navbar > .container-fluid,
|
||||
body.register > nav.navbar > .container-fluid,
|
||||
body.remotelogin > nav.navbar > .container-fluid {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
body.login > nav.navbar > .container-fluid > .navbar-header,
|
||||
body.register > nav.navbar > .container-fluid > .navbar-header,
|
||||
body.remotelogin > nav.navbar > .container-fluid > .navbar-header {
|
||||
width: 100%;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
body.login > nav.navbar .navbar-toggler,
|
||||
body.register > nav.navbar .navbar-toggler,
|
||||
body.remotelogin > nav.navbar .navbar-toggler {
|
||||
display: none;
|
||||
}
|
||||
|
||||
body.login > nav.navbar .home-btn,
|
||||
body.login > nav.navbar .plexBack,
|
||||
body.login > nav.navbar .navbar-form,
|
||||
body.register > nav.navbar .home-btn,
|
||||
body.register > nav.navbar .plexBack,
|
||||
body.register > nav.navbar .navbar-form,
|
||||
body.remotelogin > nav.navbar .home-btn,
|
||||
body.remotelogin > nav.navbar .plexBack,
|
||||
body.remotelogin > nav.navbar .navbar-form {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
body.login > nav.navbar .navbar-brand,
|
||||
body.register > nav.navbar .navbar-brand,
|
||||
body.remotelogin > nav.navbar .navbar-brand {
|
||||
width: 100%;
|
||||
height: 120px;
|
||||
margin: 0 !important;
|
||||
float: none;
|
||||
padding: 60px 0 0;
|
||||
color: #ccc !important;
|
||||
font-family: "Open Sans Bold", "Open Sans", sans-serif;
|
||||
font-size: 20px;
|
||||
line-height: 60px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
body.login > div.container-fluid > div.row > div.col-sm-10,
|
||||
body.register > div.container-fluid > div.row > div.col-sm-10,
|
||||
body.remotelogin > div.container-fluid > div.row > div.col-sm-10 {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow-y: visible !important
|
||||
}
|
||||
|
||||
body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse,
|
||||
body.register > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse,
|
||||
body.remotelogin > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse {
|
||||
body.login > nav.navbar > div > div.navbar-collapse.collapse,
|
||||
body.register > nav.navbar > div > div.navbar-collapse.collapse,
|
||||
body.remotelogin > nav.navbar > div > div.navbar-collapse.collapse {
|
||||
display: none !important
|
||||
}
|
||||
|
||||
.login .navbar-default,
|
||||
.register .navbar-default,
|
||||
.remotelogin .navbar-default {
|
||||
.login nav.navbar,
|
||||
.register nav.navbar,
|
||||
.remotelogin nav.navbar {
|
||||
background: 0 0 !important
|
||||
}
|
||||
|
||||
.login > nav.navbar,
|
||||
.register > nav.navbar,
|
||||
.remotelogin > nav.navbar {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
body.login:not(.read-frame), body.shelfcreate, body.shelfedit {
|
||||
background-image: url(images/caliblur/blur-noise.png), url(images/caliblur/blur-dark.png) !important
|
||||
}
|
||||
@@ -3844,10 +3954,10 @@ body.author .undefined-img, body.shelfcreate, body.shelfedit {
|
||||
background-position: center center, center center !important
|
||||
}
|
||||
|
||||
body.login > div.container-fluid > div.row-fluid > div.col-sm-10::before, body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a::before,
|
||||
body.remotelogin > div.container-fluid > div.row-fluid > div.col-sm-10::before, body.register > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a::before,
|
||||
body.remotelogin > div.container-fluid > div.row-fluid > div.col-sm-2::after,
|
||||
body.register > div.container-fluid > div.row-fluid > div.col-sm-10::before, body.register > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a::before {
|
||||
body.login > div.container-fluid > div.row > div.col-sm-10::before, body.login > nav.navbar > div > div.navbar-header > a::before,
|
||||
body.remotelogin > div.container-fluid > div.row > div.col-sm-10::before, body.register > nav.navbar > div > div.navbar-header > a::before,
|
||||
body.remotelogin > div.container-fluid > div.row > div.col-sm-2::after,
|
||||
body.register > div.container-fluid > div.row > div.col-sm-10::before {
|
||||
display: none
|
||||
}
|
||||
|
||||
@@ -3855,14 +3965,14 @@ body.remotelogin > div.container-fluid > div.row-fluid > div.col-sm-2 {
|
||||
background: none;
|
||||
}
|
||||
|
||||
body.register > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a,
|
||||
body.remotelogin > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
|
||||
body.register > nav.navbar > div > div.navbar-header > a,
|
||||
body.remotelogin > nav.navbar > div > div.navbar-header > a {
|
||||
pointer-events: none;
|
||||
cursor: default
|
||||
}
|
||||
|
||||
body.register > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a:hover,
|
||||
body.remotelogin > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a:hover {
|
||||
body.register > nav.navbar > div > div.navbar-header > a:hover,
|
||||
body.remotelogin > nav.navbar > div > div.navbar-header > a:hover {
|
||||
background: 0 0 !important;
|
||||
color: #ccc !important
|
||||
}
|
||||
@@ -3968,7 +4078,7 @@ body.remotelogin .well > .caliblur-remote-login-form {
|
||||
border-left: 4px solid transparent
|
||||
}
|
||||
|
||||
.navigation > ul > li > a > span.hidden-sm {
|
||||
.navigation > ul > li > a > span.caliblur-nav-label {
|
||||
display: inline-block !important
|
||||
}
|
||||
|
||||
@@ -4394,7 +4504,7 @@ body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div
|
||||
|
||||
}
|
||||
|
||||
.login .home-btn, .login .plexBack, .register .plexBack, body.login > div.container-fluid > div.row-fluid > div.col-sm-2, body.register > div.container-fluid > div.row-fluid > div.col-sm-2, body.login > div.navbar.navbar-default.navbar-static-top > div > form, body.register > div.navbar.navbar-default.navbar-static-top > div > form, body.remotelogin > div.navbar.navbar-default.navbar-static-top > div > form {
|
||||
.login .home-btn, .login .plexBack, .register .plexBack, body.login > div.container-fluid > div.row-fluid > div.col-sm-2, body.register > div.container-fluid > div.row-fluid > div.col-sm-2, body.login > nav.navbar > div > form, body.register > nav.navbar > div > form, body.remotelogin > nav.navbar > div > form {
|
||||
display: none
|
||||
}
|
||||
|
||||
@@ -4408,11 +4518,11 @@ body.remotelogin .plexBack > a {
|
||||
background: rgba(0, 0, 0, .15)
|
||||
}
|
||||
|
||||
body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#logout {
|
||||
body:not(.blur) > nav.navbar > div > div.navbar-collapse.collapse > ul > li > a#logout {
|
||||
display: none
|
||||
}
|
||||
|
||||
body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#top_user {
|
||||
body:not(.blur) > nav.navbar > div > div.navbar-collapse.collapse > ul > li > a#top_user {
|
||||
height: 60px;
|
||||
padding: 0 !important;
|
||||
background: 0 0 !important;
|
||||
@@ -4423,11 +4533,11 @@ body.remotelogin .plexBack > a {
|
||||
right: 15px
|
||||
}
|
||||
|
||||
body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#top_user > span.hidden-sm {
|
||||
body:not(.blur) > nav.navbar > div > div.navbar-collapse.collapse > ul > li > a#top_user > span.caliblur-nav-label {
|
||||
display: none
|
||||
}
|
||||
|
||||
body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#top_user > span.glyphicon-user {
|
||||
body:not(.blur) > nav.navbar > div > div.navbar-collapse.collapse > ul > li > a#top_user > span.glyphicon-user {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
margin: 15px;
|
||||
@@ -4435,7 +4545,7 @@ body.remotelogin .plexBack > a {
|
||||
color: hsla(0, 0%, 100%, .7)
|
||||
}
|
||||
|
||||
body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#top_user > span.glyphicon-user:before {
|
||||
body:not(.blur) > nav.navbar > div > div.navbar-collapse.collapse > ul > li > a#top_user > span.glyphicon-user:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
@@ -4447,7 +4557,7 @@ body.remotelogin .plexBack > a {
|
||||
height: 30px
|
||||
}
|
||||
|
||||
body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#top_user > span.glyphicon-user:after {
|
||||
body:not(.blur) > nav.navbar > div > div.navbar-collapse.collapse > ul > li > a#top_user > span.glyphicon-user:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
@@ -4459,7 +4569,7 @@ body.remotelogin .plexBack > a {
|
||||
border-left: 4px solid transparent
|
||||
}
|
||||
|
||||
body:not(.blur) #nav_createshelf, body:not(.blur) #scnd-nav > #nav_about, body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li:not(.form-upload) > #form-upload, body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li:not(.top_admin) > #top_admin, body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li:not(.top_tasks) > #top_tasks {
|
||||
body:not(.blur) #nav_createshelf, body:not(.blur) #scnd-nav > #nav_about, body:not(.blur) > nav.navbar > div > div.navbar-collapse.collapse > ul > li:not(.form-upload) > #form-upload, body:not(.blur) > nav.navbar > div > div.navbar-collapse.collapse > ul > li:not(.top_admin) > #top_admin, body:not(.blur) > nav.navbar > div > div.navbar-collapse.collapse > ul > li:not(.top_tasks) > #top_tasks {
|
||||
display: none
|
||||
}
|
||||
|
||||
@@ -5236,7 +5346,7 @@ body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.boot
|
||||
margin: 0
|
||||
}
|
||||
|
||||
body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a:hover {
|
||||
body.login > nav.navbar > div > div.navbar-header > a:hover {
|
||||
color: #ccc !important;
|
||||
background-color: transparent !important
|
||||
}
|
||||
@@ -5303,7 +5413,7 @@ body:not(.search) #shelf-actions, body:not(.search) #shelf-actions > .btn-group,
|
||||
margin: 0 0 28px
|
||||
}
|
||||
|
||||
#login, .profileDrop + span.hidden-sm {
|
||||
#login, .profileDrop + span.caliblur-nav-label {
|
||||
display: none
|
||||
}
|
||||
|
||||
@@ -5488,7 +5598,7 @@ body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm
|
||||
display: block
|
||||
}
|
||||
|
||||
#main-nav + #scnd-nav li a[href*=advanced_search] span.hidden-sm {
|
||||
#main-nav + #scnd-nav li a[href*=advanced_search] span.caliblur-nav-label {
|
||||
display: inline-block !important
|
||||
}
|
||||
|
||||
@@ -6004,6 +6114,10 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 767px) {
|
||||
body:not(.read-frame):not(.login):not(.register):not(.remotelogin) {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
#form-upload .form-group .btn:before, #top_admin > .glyphicon, #top_tasks > .glyphicon-tasks {
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
font-weight: 400;
|
||||
@@ -6024,7 +6138,7 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
background-image: none !important
|
||||
}
|
||||
|
||||
.navbar-default {
|
||||
nav.navbar {
|
||||
height: 48px;
|
||||
min-height: 48px
|
||||
}
|
||||
@@ -6037,21 +6151,23 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
margin: 0
|
||||
}
|
||||
|
||||
.navbar > .container-fluid > .navbar-header > button.navbar-toggle {
|
||||
.navbar > .container-fluid > .navbar-header > button.navbar-toggler {
|
||||
border: 0;
|
||||
float: left;
|
||||
padding: 0;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
margin: 0;
|
||||
top: 0
|
||||
top: 0;
|
||||
display: block;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.navbar > .container-fluid > .navbar-header > button.navbar-toggle:active, .navbar > .container-fluid > .navbar-header > button.navbar-toggle:focus, .navbar > .container-fluid > .navbar-header > button.navbar-toggle:hover {
|
||||
.navbar > .container-fluid > .navbar-header > button.navbar-toggler:active, .navbar > .container-fluid > .navbar-header > button.navbar-toggler:focus, .navbar > .container-fluid > .navbar-header > button.navbar-toggler:hover {
|
||||
background: 0 0
|
||||
}
|
||||
|
||||
.navbar > .container-fluid > .navbar-header > button.navbar-toggle:before {
|
||||
.navbar > .container-fluid > .navbar-header > button.navbar-toggler:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
@@ -6065,12 +6181,12 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
left: 9px
|
||||
}
|
||||
|
||||
.navbar > .container-fluid > .navbar-header > button.navbar-toggle > span {
|
||||
.navbar > .container-fluid > .navbar-header > button.navbar-toggler > span {
|
||||
opacity: 0;
|
||||
position: absolute
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a {
|
||||
body > nav.navbar > div > div.navbar-header > a {
|
||||
margin: 0 !important;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
@@ -6078,7 +6194,8 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
background: 0 0 !important;
|
||||
color: hsla(0, 0%, 100%, .7) !important;
|
||||
font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif;
|
||||
pointer-events: none
|
||||
pointer-events: none;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.home-btn {
|
||||
@@ -6105,7 +6222,7 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
line-height: 48px
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form {
|
||||
body > nav.navbar > div > form {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
@@ -6117,7 +6234,7 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
height: 48px
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form > div {
|
||||
body > nav.navbar > div > form > div {
|
||||
width: 40px;
|
||||
height: 48px
|
||||
}
|
||||
@@ -6134,7 +6251,7 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
transition: all 0s
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus {
|
||||
body > nav.navbar > div > form.search-focus {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
@@ -6142,11 +6259,11 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
width: 100vw
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div.form-group {
|
||||
body > nav.navbar > div > form.search-focus > div.form-group {
|
||||
width: 100vw
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div > #query {
|
||||
body > nav.navbar > div > form.search-focus > div > #query {
|
||||
width: calc(100vw - 100px) !important;
|
||||
margin: 0 !important
|
||||
}
|
||||
@@ -6161,7 +6278,7 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
padding-left: 15px
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div > .query-search-icon {
|
||||
body > nav.navbar > div > form.search-focus > div > .query-search-icon {
|
||||
left: 0;
|
||||
width: 50px;
|
||||
height: 48px;
|
||||
@@ -6172,11 +6289,11 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
cursor: pointer
|
||||
}
|
||||
|
||||
.mobile-navbar-brand, .profileDrop > .profileDropIcon:after, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul:first-of-type:not(.navbar-right) {
|
||||
.mobile-navbar-brand, .profileDrop > .profileDropIcon:after, body > nav.navbar > div > div.navbar-collapse.collapse > ul:first-of-type:not(.navbar-right) {
|
||||
display: none
|
||||
}
|
||||
|
||||
#form-upload > .form-group:before, .profileDrop + span.hidden-sm {
|
||||
#form-upload > .form-group:before, .profileDrop + span.caliblur-nav-label {
|
||||
font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif
|
||||
}
|
||||
|
||||
@@ -6213,12 +6330,12 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
z-index: 99
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a.profileDrop {
|
||||
body > nav.navbar > div > div.navbar-collapse.collapse > ul > li > a.profileDrop {
|
||||
height: 120px;
|
||||
width: 100%
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a.profileDrop:before {
|
||||
body > nav.navbar > div > div.navbar-collapse.collapse > ul > li > a.profileDrop:before {
|
||||
right: auto;
|
||||
position: absolute;
|
||||
left: 211px;
|
||||
@@ -6241,7 +6358,7 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
top: 0
|
||||
}
|
||||
|
||||
.profileDrop + span.hidden-sm {
|
||||
.profileDrop + span.caliblur-nav-label {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 70px;
|
||||
@@ -6287,8 +6404,8 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
}
|
||||
|
||||
#form-upload .form-group .btn:before {
|
||||
content: "\e043";
|
||||
font-family: 'Glyphicons Halflings', serif;
|
||||
content: "\f193";
|
||||
font-family: bootstrap-icons;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
color: #fff;
|
||||
@@ -6385,7 +6502,7 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
margin-right: 10px
|
||||
}
|
||||
|
||||
#top_tasks > .glyphicon-tasks::before, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > #top_admin > .glyphicon-dashboard::before {
|
||||
#top_tasks > .glyphicon-tasks::before, body > nav.navbar > div > div.navbar-collapse.collapse > ul > li > #top_admin > .glyphicon-dashboard::before {
|
||||
text-transform: none;
|
||||
font-family: plex-icons-new, serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
@@ -6402,13 +6519,13 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
font-size: 16px
|
||||
}
|
||||
|
||||
body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > #top_admin > .glyphicon-dashboard::before {
|
||||
body > nav.navbar > div > div.navbar-collapse.collapse > ul > li > #top_admin > .glyphicon-dashboard::before {
|
||||
content: "\EA56";
|
||||
line-height: 22px;
|
||||
font-size: 14px
|
||||
}
|
||||
|
||||
#top_admin > span.hidden-sm, #top_tasks > span.hidden-sm {
|
||||
#top_admin > span.caliblur-nav-label, #top_tasks > span.caliblur-nav-label {
|
||||
display: inline-block;
|
||||
line-height: 22px
|
||||
}
|
||||
@@ -6468,11 +6585,11 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
margin-left: 12px
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav .open .dropdown-menu > li > a {
|
||||
nav.navbar .navbar-nav .open .dropdown-menu > li > a {
|
||||
color: hsla(0, 0%, 100%, .7)
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus, .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover {
|
||||
nav.navbar .navbar-nav .open .dropdown-menu > li > a:focus, nav.navbar .navbar-nav .open .dropdown-menu > li > a:hover {
|
||||
color: #fff;
|
||||
background-color: hsla(0, 0%, 100%, .08)
|
||||
}
|
||||
@@ -6500,11 +6617,11 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
display: none !important
|
||||
}
|
||||
|
||||
.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2:before, body.advsearch > div.container-fluid > div > div.col-sm-10:before, body.authorlist > div.container-fluid > div > div.col-sm-10 > div.container1:before, body.catlist > div.container-fluid > div > div.col-sm-10 > div.container1:before, body.langlist > div.container-fluid > div > div.col-sm-10 > div.container1:before, body.downloadlist > div.container-fluid > div > div.col-sm-10 > div.container1:before, body.login .navbar > .container-fluid > .navbar-header > button.navbar-toggle, body.serieslist > div.container-fluid > div > div.col-sm-10 > div.container1:before {
|
||||
.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2:before, body.advsearch > div.container-fluid > div > div.col-sm-10:before, body.authorlist > div.container-fluid > div > div.col-sm-10 > div.container1:before, body.catlist > div.container-fluid > div > div.col-sm-10 > div.container1:before, body.langlist > div.container-fluid > div > div.col-sm-10 > div.container1:before, body.downloadlist > div.container-fluid > div > div.col-sm-10 > div.container1:before, body.login .navbar > .container-fluid > .navbar-header > button.navbar-toggler, body.serieslist > div.container-fluid > div > div.col-sm-10 > div.container1:before {
|
||||
display: none
|
||||
}
|
||||
|
||||
body > div.container-fluid > div.row-fluid > div.col-sm-10 {
|
||||
body > div.container-fluid > div.row > div.col-sm-10 {
|
||||
width: 100%;
|
||||
top: 42px;
|
||||
height: calc(100% - 42px)
|
||||
@@ -6812,7 +6929,7 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
margin: 0 10px 10px 0
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover {
|
||||
nav.navbar .navbar-nav .open .dropdown-menu > .active > a, nav.navbar .navbar-nav .open .dropdown-menu > .active > a:focus, nav.navbar .navbar-nav .open .dropdown-menu > .active > a:hover {
|
||||
color: var(--color-primary);
|
||||
background-color: transparent
|
||||
}
|
||||
@@ -7436,7 +7553,7 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
transition: all 0s
|
||||
}
|
||||
|
||||
.navbar-collapse.collapse.in {
|
||||
.navbar-collapse.collapse.show {
|
||||
visibility: visible;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
@@ -7464,11 +7581,11 @@ body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
.navbar-collapse:not(.in) > * {
|
||||
.navbar-collapse:not(.show) > * {
|
||||
margin: 0 !important
|
||||
}
|
||||
|
||||
.navbar-collapse.collapse.in + .sidebar-backdrop {
|
||||
.navbar-collapse.collapse.show + .sidebar-backdrop {
|
||||
width: calc(100vw);
|
||||
height: 100%;
|
||||
position: fixed;
|
||||
|
||||
@@ -27,9 +27,11 @@ input.datepicker {color: transparent}
|
||||
input.datepicker:focus {color: transparent}
|
||||
input.datepicker:focus + input {color: #555}
|
||||
|
||||
.col-sm-3.col-lg-2.col-xs-6.book.session {
|
||||
.col-sm-3.col-lg-2.col-6.book.session {
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
.caliblur-filterheader {
|
||||
@@ -37,10 +39,63 @@ input.datepicker:focus + input {color: #555}
|
||||
padding: 0 10px 0 40px;
|
||||
}
|
||||
|
||||
.caliblur-filterheader .btn {
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.caliblur-index .cover,
|
||||
.caliblur-index .cover img {
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
nav.navbar .profileDrop.dropdown-toggle::after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
body > .container-fluid > .row {
|
||||
--bs-gutter-x: 30px;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 768px) {
|
||||
nav.navbar #mainNavbar {
|
||||
display: block !important;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
nav.navbar #main-nav {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#top_admin > span.caliblur-nav-label,
|
||||
#top_tasks > span.caliblur-nav-label,
|
||||
.profileDrop + span.caliblur-nav-label {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 767px) {
|
||||
.row-fluid > .col-sm-2 {
|
||||
nav.navbar #main-nav {
|
||||
float: none;
|
||||
}
|
||||
|
||||
#top_admin > .bi,
|
||||
#top_tasks > .bi {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 767px) {
|
||||
.row > .col-sm-2 {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.col-sm-3.col-lg-2.col-6.book.session {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.caliblur-login-panel .btn {
|
||||
@@ -60,24 +115,24 @@ body.blur #deleteModal .modal-footer .btn {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-md-10.col-lg-6 .twitter-typeahead .tt-hint {
|
||||
body.advanced_search > div.container-fluid > div.row > div.col-sm-10 > div.col-md-10.col-lg-6 .twitter-typeahead .tt-hint {
|
||||
background-color: hsla(0, 0%, 100%, .08) !important;
|
||||
}
|
||||
|
||||
body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-md-10.col-lg-6 .form-group > .row {
|
||||
body.advanced_search > div.container-fluid > div.row > div.col-sm-10 > div.col-md-10.col-lg-6 .form-group > .row {
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-md-10.col-lg-6 .form-group > .row > .form-group.col-sm-6:first-child {
|
||||
body.advanced_search > div.container-fluid > div.row > div.col-sm-10 > div.col-md-10.col-lg-6 .form-group > .row > .form-group.col-sm-6:first-child {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-md-10.col-lg-6 .form-group > .row > .form-group.col-sm-6:last-child {
|
||||
body.advanced_search > div.container-fluid > div.row > div.col-sm-10 > div.col-md-10.col-lg-6 .form-group > .row > .form-group.col-sm-6:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
body.blur .input-group-btn > .datepicker_delete.btn.btn-default {
|
||||
body.blur .datepicker_delete.btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
@@ -87,7 +142,7 @@ body.blur .input-group-btn > .datepicker_delete.btn.btn-default {
|
||||
padding: 0 12px;
|
||||
}
|
||||
|
||||
body.blur .rating-clear .glyphicon-remove {
|
||||
body.blur .rating-clear .bi-x {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
@@ -126,15 +181,15 @@ body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .editabl
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .editable-buttons .btn-default {
|
||||
body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .editable-buttons .btn-outline-secondary {
|
||||
background-color: hsla(0, 0%, 100%, .25);
|
||||
border-color: hsla(0, 0%, 100%, .25);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .editable-buttons .btn-default:hover,
|
||||
body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .editable-buttons .btn-default:focus,
|
||||
body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .editable-buttons .btn-default:active {
|
||||
body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .editable-buttons .btn-outline-secondary:hover,
|
||||
body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .editable-buttons .btn-outline-secondary:focus,
|
||||
body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .editable-buttons .btn-outline-secondary:active {
|
||||
background-color: hsla(0, 0%, 100%, .3);
|
||||
border-color: hsla(0, 0%, 100%, .3);
|
||||
color: #fff;
|
||||
@@ -167,7 +222,7 @@ body.dbconfig.admin > div.container-fluid > div > div.col-sm-10 > div.discover {
|
||||
padding: 0 30px !important;
|
||||
}
|
||||
|
||||
body.dbconfig.admin .caliblur-dbconfig-form .input-group-btn > .btn {
|
||||
body.dbconfig.admin .caliblur-dbconfig-form .input-group > .btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
@@ -111,7 +111,7 @@ if ($("body.book").length > 0) {
|
||||
// Hide dropdown and collapse menus on click-off
|
||||
$(document).mouseup(function (e) {
|
||||
var container = new Array();
|
||||
container.push($(".navbar-collapse.collapse.in"));
|
||||
container.push($(".navbar-collapse.collapse.show"));
|
||||
|
||||
$.each(container, function (key, value) {
|
||||
if (!$(value).is(e.target) // if the target of the click isn't the container...
|
||||
@@ -121,7 +121,9 @@ $(document).mouseup(function (e) {
|
||||
$(value).hide();
|
||||
} else {
|
||||
if ($(value).hasClass("collapse")) {
|
||||
$(value).collapse("toggle");
|
||||
$(value).each(function () {
|
||||
bootstrap.Collapse.getOrCreateInstance(this, {toggle: false}).hide();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -135,7 +137,7 @@ modalWanted = ["admin", "editbook", "config", "uiconfig", "me", "edituser"];
|
||||
if ($.inArray(bodyClass[0], modalWanted) != -1) {
|
||||
} else {
|
||||
$(" a:not(.dropdown-toggle) ")
|
||||
.removeAttr("data-toggle", "data-target", "data-remote");
|
||||
.removeAttr("data-toggle data-target data-remote data-bs-toggle data-bs-target");
|
||||
}
|
||||
|
||||
|
||||
@@ -221,17 +223,22 @@ $("#add-to-shelves, #remove-from-shelves").on("click", "[data-shelf-action]", fu
|
||||
// Rest of Tooltips
|
||||
if ($("body.epub").length === 0) {
|
||||
$(document).ready(function () {
|
||||
$("[data-toggle='tooltip']").tooltip({container: "body", trigger: "hover"});
|
||||
$("[data-toggle-two='tooltip']").tooltip({container: "body", trigger: "hover"});
|
||||
document.querySelectorAll("[data-bs-toggle='tooltip'], [data-toggle-two='tooltip']").forEach(function (element) {
|
||||
bootstrap.Tooltip.getOrCreateInstance(element, {container: "body", trigger: "hover"});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
$('[data-toggle-two="tooltip"]').click(function () {
|
||||
$('[data-toggle-two="tooltip"]').tooltip("hide");
|
||||
$('[data-toggle-two="tooltip"]').each(function () {
|
||||
bootstrap.Tooltip.getOrCreateInstance(this).hide();
|
||||
});
|
||||
});
|
||||
|
||||
$('[data-toggle="tooltip"]').click(function () {
|
||||
$('[data-toggle="tooltip"]').tooltip("hide");
|
||||
$('[data-bs-toggle="tooltip"]').click(function () {
|
||||
$('[data-bs-toggle="tooltip"]').each(function () {
|
||||
bootstrap.Tooltip.getOrCreateInstance(this).hide();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -57,14 +57,14 @@ $(".datepicker").datepicker({
|
||||
pubDate = new Date(results[1], parseInt(results[2], 10) - 1, results[3]) || new Date(this.value);
|
||||
$(this).next('input')
|
||||
.val(pubDate.toLocaleDateString(language.replaceAll("_","-")))
|
||||
.removeClass("hidden");
|
||||
.removeClass("d-none");
|
||||
}
|
||||
}).trigger("change");
|
||||
|
||||
$(".datepicker_delete").click(function() {
|
||||
var inputs = $(this).parent().siblings('input');
|
||||
$(inputs[0]).data('datepicker').clearDates();
|
||||
$(inputs[1]).addClass('hidden');
|
||||
$(inputs[1]).addClass('d-none');
|
||||
});
|
||||
|
||||
|
||||
@@ -293,4 +293,3 @@ $("#xchange").click(function () {
|
||||
$("#title").val($("#authors").val());
|
||||
$("#authors").val(title);
|
||||
});
|
||||
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
{% extends theme("layout.html") %}
|
||||
{% block body %}
|
||||
{% if book %}
|
||||
<div class="col-sm-3 col-lg-3 col-xs-12">
|
||||
<div class="col-sm-3 col-lg-3 col-12">
|
||||
<div class="cover">
|
||||
<!-- Always use full-sized image for the book edit page -->
|
||||
<img id="detailcover" title="{{book.title}}" src="{{url_for('web.get_cover', book_id=book.id, resolution='og', c=book|last_modified)}}" />
|
||||
</div>
|
||||
{% if current_user.role_delete_books() %}
|
||||
<div class="text-center">
|
||||
<button type="button" class="btn btn-danger delete-book-btn-tooltip" id="delete" data-toggle="modal" data-delete-id="{{ book.id }}" data-target="#deleteModal" data-toggle-two="tooltip" data-placement="bottom" data-viewport=".btn-toolbar" title="{{_('Delete Book')}}">{{_("Delete Book")}}</button>
|
||||
<button type="button" class="btn btn-danger delete-book-btn-tooltip" id="delete" data-bs-toggle="modal" data-delete-id="{{ book.id }}" data-bs-target="#deleteModal" data-toggle-two="tooltip" data-bs-placement="bottom" data-viewport=".btn-toolbar" title="{{_('Delete Book')}}">{{_("Delete Book")}}</button>
|
||||
</div>
|
||||
{% if book.data|length > 1 %}
|
||||
<div class="text-center more-stuff">
|
||||
<button id="deleteButton" type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="glyphicon glyphicon-remove"></span>{{_('Delete Format')}}<span class="caret"></span></button>
|
||||
<button id="deleteButton" type="button" class="btn btn-danger dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"><i class="bi bi-x"></i>{{_('Delete Format')}}</button>
|
||||
<ul class="dropdown-menu delete-dropdown">
|
||||
{% for file in book.data %}
|
||||
<li><button type="button" class="btn btn-danger" id="delete_format" data-toggle="modal" data-delete-id="{{ book.id }}" data-delete-format="{{ file.format }}" data-target="#deleteModal">{{_('Delete')}} - {{file.format}}</button></li>
|
||||
<li><button type="button" class="btn btn-danger" id="delete_format" data-bs-toggle="modal" data-delete-id="{{ book.id }}" data-delete-format="{{ file.format }}" data-bs-target="#deleteModal">{{_('Delete')}} - {{file.format}}</button></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
@@ -44,7 +44,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary" id="btn-book-convert" name="btn-book-convert"><span class="glyphicon glyphicon-duplicate"></span> {{_('Convert book')}}</button>
|
||||
<button type="submit" class="btn btn-primary" id="btn-book-convert" name="btn-book-convert"><i class="bi bi-copy"></i> {{_('Convert book')}}</button>
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -67,14 +67,14 @@
|
||||
</div>
|
||||
<form role="form" action="{{ url_for('edit-book.edit_book', book_id=book.id) }}" method="post" enctype="multipart/form-data" id="book_edit_frm">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<div class="col-sm-9 col-xs-12">
|
||||
<div class="col-sm-9 col-12">
|
||||
<h2>{{_('Edit Metadata')}}</h2>
|
||||
<div class="form-group">
|
||||
<label for="title">{{_('Book Title')}}</label>
|
||||
<input type="text" class="form-control" name="title" id="title" value="{{book.title}}">
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button type="button" class="btn btn-default" id="xchange" ><span class="glyphicon glyphicon-arrow-up"></span><span class="glyphicon glyphicon-arrow-down"></span></button>
|
||||
<button type="button" class="btn btn-outline-secondary" id="xchange" ><i class="bi bi-arrow-up"></i><i class="bi bi-arrow-down"></i></button>
|
||||
</div>
|
||||
<div id="author_div" class="form-group">
|
||||
<label for="bookAuthor">{{_('Author')}}</label>
|
||||
@@ -95,10 +95,8 @@
|
||||
<label for="pubdate">{{_('Published Date')}}</label>
|
||||
<div class="form-group input-group">
|
||||
<input type="text" class="datepicker form-control" name="pubdate" id="pubdate" value="{% if book.pubdate %}{{book.pubdate|formatdateinput}}{% endif %}">
|
||||
<input type="text" class="form-control fake-input hidden" id="fake_pubdate" value="{% if book.pubdate %}{{book.pubdate|formatdate}}{% endif %}">
|
||||
<span class="input-group-btn">
|
||||
<button type="button" id="pubdate_delete" class="datepicker_delete btn btn-default"><span class="glyphicon glyphicon-remove-circle"></span></button>
|
||||
</span>
|
||||
<input type="text" class="form-control fake-input d-none" id="fake_pubdate" value="{% if book.pubdate %}{{book.pubdate|formatdate}}{% endif %}">
|
||||
<button type="button" id="pubdate_delete" class="datepicker_delete btn btn-outline-secondary"><i class="bi bi-x-circle"></i></button>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="publisher">{{_('Publisher')}}</label>
|
||||
@@ -123,12 +121,12 @@
|
||||
<tr>
|
||||
<td><input type="text" class="form-control" name="identifier-type-{{identifier.type}}" value="{{identifier.type}}" required="required" placeholder="{{_('Identifier Type')}}"></td>
|
||||
<td><input type="text" class="form-control" name="identifier-val-{{identifier.type}}" value="{{identifier.val}}" required="required" placeholder="{{_('Identifier Value')}}"></td>
|
||||
<td><a class="btn btn-default" onclick="removeIdentifierLine(this)">{{_('Remove')}}</a></td>
|
||||
<td><a class="btn btn-outline-secondary" onclick="removeIdentifierLine(this)">{{_('Remove')}}</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<a id="add-identifier-line" class="btn btn-default">{{_('Add Identifier')}}</a>
|
||||
<a id="add-identifier-line" class="btn btn-outline-secondary">{{_('Add Identifier')}}</a>
|
||||
</div>
|
||||
{% if current_user.role_upload() and g.allow_upload %}
|
||||
<div class="form-group">
|
||||
@@ -176,13 +174,11 @@
|
||||
{% if book['custom_column_' ~ c.id]|length > 0 %}
|
||||
value="{% if book['custom_column_' ~ c.id][0].value %}{{ book['custom_column_' ~ c.id][0].value|formatdateinput}}{% endif %}"
|
||||
{% endif %}>
|
||||
<input type="text" class="fake_custom_column_{{ c.id }} form-control fake-input hidden" id="fake_pubdate_{{ c.id }}"
|
||||
<input type="text" class="fake_custom_column_{{ c.id }} form-control fake-input d-none" id="fake_pubdate_{{ c.id }}"
|
||||
{% if book['custom_column_' ~ c.id]|length > 0 %}
|
||||
value="{% if book['custom_column_' ~ c.id][0].value %}{{book['custom_column_' ~ c.id][0].value|formatdate}}{% endif %}"
|
||||
{% endif %}>
|
||||
<span class="input-group-btn">
|
||||
<button type="button" id="{{ 'custom_column_' ~ c.id }}_delete" class="datepicker_delete btn btn-default"><span class="glyphicon glyphicon-remove-circle"></span></button>
|
||||
</span>
|
||||
<button type="button" id="{{ 'custom_column_' ~ c.id }}_delete" class="datepicker_delete btn btn-outline-secondary"><i class="bi bi-x-circle"></i></button>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -217,9 +213,9 @@
|
||||
<input name="detail_view" type="checkbox" checked> {{_('View Book on Save')}}
|
||||
</label>
|
||||
</div>
|
||||
<a href="#" id="get_meta" class="btn btn-default" data-toggle="modal" data-target="#metaModal">{{_('Fetch Metadata')}}</a>
|
||||
<button type="submit" id="submit" class="btn btn-default">{{_('Save')}}</button>
|
||||
<a href="{{ url_for('web.show_book', book_id=book.id) }}" id="edit_cancel" class="btn btn-default">{{_('Cancel')}}</a>
|
||||
<a href="#" id="get_meta" class="btn btn-outline-secondary" data-bs-toggle="modal" data-bs-target="#metaModal">{{_('Fetch Metadata')}}</a>
|
||||
<button type="submit" id="submit" class="btn btn-primary">{{_('Save')}}</button>
|
||||
<a href="{{ url_for('web.show_book', book_id=book.id) }}" id="edit_cancel" class="btn btn-outline-secondary">{{_('Cancel')}}</a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -234,20 +230,18 @@
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title text-center" id="metaModalLabel">{{_('Fetch Metadata')}}</h4>
|
||||
<form class="padded-bottom" id="meta-search">
|
||||
<div class="input-group">
|
||||
<label class="sr-only" for="keyword">{{_('Keyword')}}</label>
|
||||
<input type="text" class="form-control" id="keyword" name="keyword" placeholder="{{_("Search keyword")}}">
|
||||
<span class="input-group-btn">
|
||||
<button type="submit" class="btn btn-primary" id="do-search">{{_("Search")}}</button>
|
||||
</span>
|
||||
</div>
|
||||
</form>
|
||||
<div class="text-center"><strong>{{_('Click the cover to load metadata to the form')}}</strong></div>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{_('Close')}}"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="padded-bottom" id="meta-search">
|
||||
<div class="input-group">
|
||||
<label class="sr-only visually-hidden" for="keyword">{{_('Keyword')}}</label>
|
||||
<input type="text" class="form-control" id="keyword" name="keyword" placeholder="{{_("Search keyword")}}">
|
||||
<button type="submit" class="btn btn-primary" id="do-search">{{_("Search")}}</button>
|
||||
</div>
|
||||
</form>
|
||||
<div class="text-center padded-bottom"><strong>{{_('Click the cover to load metadata to the form')}}</strong></div>
|
||||
<div class="text-center padded-bottom" id="metadata_provider">
|
||||
</div>
|
||||
|
||||
@@ -256,7 +250,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button id="meta_close" type="button" class="btn btn-default" data-dismiss="modal">{{_('Close')}}</button>
|
||||
<button id="meta_close" type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">{{_('Close')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -265,25 +259,25 @@
|
||||
|
||||
{% block js %}
|
||||
<script type="text/template" id="template-book-result">
|
||||
<li class="media" data-related="<%- source.id %>">
|
||||
<img class="pull-left img-responsive"
|
||||
data-toggle="modal"
|
||||
data-target="#metaModal"
|
||||
<li class="media d-flex mb-3" data-related="<%- source.id %>">
|
||||
<img class="pull-left img-responsive img-fluid flex-shrink-0"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#metaModal"
|
||||
src="<%- cover || '{{ url_for('static', filename='img/academicpaper.svg') }}' %>"
|
||||
alt="Cover"
|
||||
>
|
||||
<div class="media-body">
|
||||
<h4 class="media-heading">
|
||||
<div class="media-body flex-grow-1 ms-3">
|
||||
<h4 class="media-heading mb-1">
|
||||
<a class="meta_title" href="<%- url %>" target="_blank" rel="noopener"><%- title %></a>
|
||||
</h4>
|
||||
<p class="meta_author">{{_('Author')}}:<%- authors.join(" & ") %></p>
|
||||
<p class="meta_author mb-1">{{_('Author')}}:<%- authors.join(" & ") %></p>
|
||||
<% if (publisher) { %>
|
||||
<p class="meta_publisher">{{_('Publisher')}}:<%- publisher %></p>
|
||||
<p class="meta_publisher mb-1">{{_('Publisher')}}:<%- publisher %></p>
|
||||
<% } %>
|
||||
<% if (description) { %>
|
||||
<p class="meta_description">{{_('Description')}}: <%- description %></p>
|
||||
<p class="meta_description mb-1">{{_('Description')}}: <%- description %></p>
|
||||
<% } %>
|
||||
<p>{{_('Source')}}:
|
||||
<p class="mb-0">{{_('Source')}}:
|
||||
<a class="meta_source" href="<%- source.link %>" target="_blank" rel="noopener"><%- source.description %></a>
|
||||
</p>
|
||||
</div>
|
||||
@@ -307,7 +301,7 @@
|
||||
var line = '<tr>';
|
||||
line += '<td><input type="text" class="form-control" name="identifier-type-'+ rand_id +'" required="required" placeholder={{_('Identifier Type')|safe|tojson}}></td>';
|
||||
line += '<td><input type="text" class="form-control" name="identifier-val-'+ rand_id +'" required="required" placeholder={{_('Identifier Value')|safe|tojson}}></td>';
|
||||
line += '<td><a class="btn btn-default" onclick="removeIdentifierLine(this)">{{_('Remove')}}</a></td>';
|
||||
line += '<td><a class="btn btn-outline-secondary" onclick="removeIdentifierLine(this)">{{_('Remove')}}</a></td>';
|
||||
line += '</tr>';
|
||||
$("#identifier-table").append(line);
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{% extends theme("layout.html") %}
|
||||
{% block flash %}
|
||||
<div id="spinning_success" class="row-fluid text-center" style="display:none;">
|
||||
<div id="spinning_success" class="row text-center" style="display:none;">
|
||||
<div class="alert alert-info"><img id="img-spinner" src="{{ url_for('static', filename='css/libs/images/loading-icon.gif') }}" alt="" aria-hidden="true"></div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -13,9 +13,7 @@
|
||||
<label for="config_calibre_dir">{{ _('Location of Calibre Database') }}</label>
|
||||
<div class="form-group required input-group">
|
||||
<input type="text" class="form-control" id="config_calibre_dir" name="config_calibre_dir" value="{% if config.config_calibre_dir != None %}{{ config.config_calibre_dir }}{% endif %}" autocomplete="off">
|
||||
<span class="input-group-btn">
|
||||
<button type="button" data-toggle="modal" id="calibre_modal_path" data-link="config_calibre_dir" data-filefilter="metadata.db" data-target="#fileModal" class="btn btn-default"><span class="glyphicon glyphicon-folder-open"></span></button>
|
||||
</span>
|
||||
<button type="button" data-bs-toggle="modal" id="calibre_modal_path" data-link="config_calibre_dir" data-filefilter="metadata.db" data-bs-target="#fileModal" class="btn btn-outline-secondary"><i class="bi bi-folder2-open"></i></button>
|
||||
</div>
|
||||
<div class="form-group required">
|
||||
<input type="checkbox" id="config_calibre_split" name="config_calibre_split" data-control="split_settings" data-t ="{{ config.config_calibre_split_dir }}" {% if config.config_calibre_split %}checked{% endif %}>
|
||||
@@ -24,9 +22,7 @@
|
||||
<div data-related="split_settings">
|
||||
<div class="form-group required input-group">
|
||||
<input type="text" class="form-control" id="config_calibre_split_dir" name="config_calibre_split_dir" value="{% if config.config_calibre_split_dir != None %}{{ config.config_calibre_split_dir }}{% endif %}" autocomplete="off">
|
||||
<span class="input-group-btn">
|
||||
<button type="button" data-toggle="modal" id="calibre_modal_split_path" data-link="config_calibre_split_dir" data-filefilter="" data-target="#fileModal" class="btn btn-default"><span class="glyphicon glyphicon-folder-open"></span></button>
|
||||
</span>
|
||||
<button type="button" data-bs-toggle="modal" id="calibre_modal_split_path" data-link="config_calibre_split_dir" data-filefilter="" data-bs-target="#fileModal" class="btn btn-outline-secondary"><i class="bi bi-folder2-open"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
{% if feature_support['gdrive'] %}
|
||||
@@ -53,7 +49,7 @@
|
||||
<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="{{ config.config_google_drive_watch_changes_response['id'] }} expires on {{ config.config_google_drive_watch_changes_response['expiration'] | strftime }}" autocomplete="off" disabled="">
|
||||
<span class="input-group-btn"><a href="{{ url_for('gdrive.revoke_watch_gdrive') }}" id="watch_revoke" class="btn btn-primary">{{ _('Revoke') }}</a></span>
|
||||
<a href="{{ url_for('gdrive.revoke_watch_gdrive') }}" id="watch_revoke" class="btn btn-primary">{{ _('Revoke') }}</a>
|
||||
</div>
|
||||
{% else %}
|
||||
<a href="{{ url_for('gdrive.watch_gdrive') }}" id="enable_gdrive_watch" class="btn btn-primary">Enable watch of metadata.db</a>
|
||||
@@ -66,7 +62,7 @@
|
||||
<div class="col-sm-12 clearfix caliblur-dbconfig-actions">
|
||||
<div class="pull-right">
|
||||
<a href="{{ url_for('admin.admin') }}" id="config_back" class="btn btn-primary">{{ _('Cancel') }}</a>
|
||||
<button id="db_submit" type="submit" form="db_config_form" class="btn btn-default">{{ _('Save') }}</button>
|
||||
<button id="db_submit" type="submit" form="db_config_form" class="btn btn-outline-secondary">{{ _('Save') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -83,7 +79,7 @@
|
||||
<div class="modal-body text-center">
|
||||
<p>{{ _('New db location is invalid, please enter valid path') }}</p>
|
||||
<p></p>
|
||||
<button type="button" class="btn btn-default" id="invalid_confirm" data-dismiss="modal">{{ _('OK') }}</button>
|
||||
<button type="button" class="btn btn-outline-secondary" id="invalid_confirm" data-bs-dismiss="modal">{{ _('OK') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
{% block body %}
|
||||
<div class="single">
|
||||
<div class="row">
|
||||
<div class="col-sm-3 col-lg-3 col-xs-5">
|
||||
<div class="col-sm-3 col-lg-3 col-5">
|
||||
<div class="cover">
|
||||
<!-- Always use full-sized image for the detail page -->
|
||||
<img id="detailcover" title="{{ entry.title }}"
|
||||
@@ -26,11 +26,10 @@
|
||||
<div class="btn-group" role="group" aria-label="Add to shelves">
|
||||
<button id="add-to-shelf" type="button"
|
||||
class="btn btn-primary btn-sm dropdown-toggle addtoshelf-btn-tooltip"
|
||||
data-toggle-two="tooltip" title="{{ _('Add to shelf') }}" data-placement="bottom" data-viewport=".btn-toolbar"
|
||||
data-toggle="dropdown"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
<span class="glyphicon glyphicon-list"></span> {{ _('Add to shelf') }}
|
||||
<span class="caret"></span>
|
||||
data-toggle-two="tooltip" title="{{ _('Add to shelf') }}" data-bs-placement="bottom" data-viewport=".btn-toolbar"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-expanded="false">
|
||||
<i class="bi bi-list"></i> {{ _('Add to shelf') }}
|
||||
</button>
|
||||
<ul id="add-to-shelves" class="dropdown-menu" aria-labelledby="add-to-shelf">
|
||||
{% for shelf in g.shelves_access %}
|
||||
@@ -55,11 +54,11 @@
|
||||
{% if shelf.id in books_shelfs %}
|
||||
<a data-href="{{ url_for('shelf.remove_from_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||||
data-add-href="{{ url_for('shelf.add_to_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||||
class="btn btn-sm btn-default" role="button"
|
||||
class="btn btn-sm btn-outline-secondary" role="button"
|
||||
data-shelf-action="remove"
|
||||
>
|
||||
<span {% if not shelf.is_public or current_user.role_edit_shelfs() %}
|
||||
class="glyphicon glyphicon-remove"
|
||||
class="bi bi-x"
|
||||
{% endif %}></span> {{ shelf.name }}{% if shelf.is_public == 1 %} {{ _('(Public)') }}{% endif %}
|
||||
</a>
|
||||
{% endif %}
|
||||
@@ -75,11 +74,11 @@
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<label class="block-label">
|
||||
<input id="have_read_cb" class="readunread-btn-tooltip" type="checkbox"
|
||||
data-toggle="tooltip" data-placement="bottom" data-viewport=".btn-toolbar"
|
||||
data-bs-toggle="tooltip" data-bs-placement="bottom" data-viewport=".btn-toolbar"
|
||||
title="{% if entry.read_status %}{{ _('Mark As Unread') }}{% else %}{{ _('Mark As Read') }}{% endif %}"
|
||||
{% if entry.read_status %}checked{% endif %}>
|
||||
<label class="block-label readLbl" for="have_read_cb"></label>
|
||||
<span data-toggle="tooltip" title="{{_('Mark Book as Read or Unread')}}">{{ _('Read') }}</span>
|
||||
<span data-bs-toggle="tooltip" title="{{_('Mark Book as Read or Unread')}}">{{ _('Read') }}</span>
|
||||
</label>
|
||||
</form>
|
||||
</div>
|
||||
@@ -88,9 +87,9 @@
|
||||
<div class="btn-group" role="group" aria-label="Edit book">
|
||||
<a href="{{ url_for('edit-book.show_edit_book', book_id=entry.id) }}"
|
||||
class="btn btn-primary edit-btn-tooltip" id="edit_book" role="button"
|
||||
data-toggle="tooltip" title="{{ _('Edit Metadata') }}" data-placement="bottom" data-viewport=".btn-toolbar">
|
||||
<span class="edit-book-icon" data-toggle="tooltip" title="{{ _('Edit Metadata') }}"
|
||||
data-placement="bottom" data-viewport=".btn-toolbar"></span> {{ _('Edit Metadata') }}
|
||||
data-bs-toggle="tooltip" title="{{ _('Edit Metadata') }}" data-bs-placement="bottom" data-viewport=".btn-toolbar">
|
||||
<span class="edit-book-icon" data-bs-toggle="tooltip" title="{{ _('Edit Metadata') }}"
|
||||
data-bs-placement="bottom" data-viewport=".btn-toolbar"></span> {{ _('Edit Metadata') }}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -100,8 +99,8 @@
|
||||
{% if entry.data|length > 0 %}
|
||||
<button id="btnGroupDrop1" type="button" class="btn btn-primary"
|
||||
aria-haspopup="true" aria-expanded="false"
|
||||
data-toggle-two="tooltip" title="" data-placement="bottom" data-viewport=".btn-toolbar"
|
||||
data-original-title="Download :"><span class="glyphicon glyphicon-download"></span>Download :<span class="caret"></span></button>
|
||||
data-toggle-two="tooltip" title="" data-bs-placement="bottom" data-viewport=".btn-toolbar"
|
||||
data-original-title="Download :"><i class="bi bi-download"></i>Download :</button>
|
||||
<ul class="dropdown-menu" aria-labelledby="btnGroupDrop1">
|
||||
{% for format in entry.data %}
|
||||
<li>
|
||||
@@ -117,16 +116,15 @@
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
{% if entry.email_share_list.__len__() == 1 %}
|
||||
<div class="btn-group sendBtn" role="group">
|
||||
<button id="sendbtn" class="btn btn-primary sendbtn-form send-btn-tooltip" data-href="{{url_for('web.send_to_ereader', book_id=entry.id, book_format=entry.email_share_list[0]['format'], convert=entry.email_share_list[0]['convert'])}}" data-toggle="tooltip" data-placement="bottom" data-viewport=".btn-toolbar" title="{{ entry.email_share_list[0]['text'] }}">
|
||||
<span class="glyphicon glyphicon-send"></span> {{entry.email_share_list[0]['text']}}
|
||||
<button id="sendbtn" class="btn btn-primary sendbtn-form send-btn-tooltip" data-href="{{url_for('web.send_to_ereader', book_id=entry.id, book_format=entry.email_share_list[0]['format'], convert=entry.email_share_list[0]['convert'])}}" data-bs-toggle="tooltip" data-bs-placement="bottom" data-viewport=".btn-toolbar" title="{{ entry.email_share_list[0]['text'] }}">
|
||||
<i class="bi bi-send"></i> {{entry.email_share_list[0]['text']}}
|
||||
</button>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="btn-group sendBtn" role="group">
|
||||
<button id="sendbtn2" type="button" class="btn btn-primary dropdown-toggle send-btn-tooltip"
|
||||
data-toggle="dropdown" data-toggle-two="tooltip" data-placement="bottom" data-viewport=".btn-toolbar" title="{{ _('Send to eReader') }}" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="glyphicon glyphicon-send"></span>{{ _('Send to eReader') }}
|
||||
<span class="caret"></span>
|
||||
data-bs-toggle="dropdown" data-toggle-two="tooltip" data-bs-placement="bottom" data-viewport=".btn-toolbar" title="{{ _('Send to eReader') }}" aria-expanded="false">
|
||||
<i class="bi bi-send"></i>{{ _('Send to eReader') }}
|
||||
</button>
|
||||
<ul class="dropdown-menu" aria-labelledby="send-to-ereader">
|
||||
{% for format in entry.email_share_list %}
|
||||
@@ -143,9 +141,8 @@
|
||||
<div class="btn-group readBtn" role="group">
|
||||
{% if entry.reader_list|length > 1 %}
|
||||
<button id="read-in-browser" type="button" class="btn btn-primary dropdown-toggle send-btn-tooltip"
|
||||
data-toggle="dropdown" data-toggle-two="tooltip" data-placement="bottom" data-viewport=".btn-toolbar" title="{{ _('Read in Browser') }}" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="glyphicon glyphicon-book"></span> {{ _('Read in Browser') }}
|
||||
<span class="caret"></span>
|
||||
data-bs-toggle="dropdown" data-toggle-two="tooltip" data-bs-placement="bottom" data-viewport=".btn-toolbar" title="{{ _('Read in Browser') }}" aria-expanded="false">
|
||||
<i class="bi bi-book"></i> {{ _('Read in Browser') }}
|
||||
</button>
|
||||
<ul class="dropdown-menu" aria-labelledby="read-in-browser">
|
||||
{% for format in entry.reader_list %}
|
||||
@@ -158,9 +155,8 @@
|
||||
<a target="_blank"
|
||||
href="{{ url_for('web.read_book', book_id=entry.id, book_format=entry.reader_list[0]) }}"
|
||||
id="readbtn" class="btn btn-primary" role="button"
|
||||
data-toggle-two="tooltip" data-placement="bottom" data-viewport=".btn-toolbar"
|
||||
title="{{ _('Read in Browser') }}"><span
|
||||
class="glyphicon glyphicon-book"></span> {{ _('Read in Browser') }}
|
||||
data-toggle-two="tooltip" data-bs-placement="bottom" data-viewport=".btn-toolbar"
|
||||
title="{{ _('Read in Browser') }}"><i class="bi bi-book"></i> {{ _('Read in Browser') }}
|
||||
- {{ entry.reader_list[0] }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -168,9 +164,8 @@
|
||||
{% if entry.audio_entries|length > 0 and current_user.role_viewer() %}
|
||||
<div class="btn-group listenBtn" role="group">
|
||||
{% if entry.audio_entries|length > 1 %}
|
||||
<button id="listen-in-browser" type="button" class="btn btn-primary dropdown-toggle send-btn-tooltip" data-toggle="dropdown" data-toggle-two="tooltip" data-placement="bottom" data-viewport=".btn-toolbar" title="{{ _('Listen in Browser') }}" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="glyphicon glyphicon-music"></span> {{ _('Listen in Browser') }}
|
||||
<span class="caret"></span>
|
||||
<button id="listen-in-browser" type="button" class="btn btn-primary dropdown-toggle send-btn-tooltip" data-bs-toggle="dropdown" data-toggle-two="tooltip" data-bs-placement="bottom" data-viewport=".btn-toolbar" title="{{ _('Listen in Browser') }}" aria-expanded="false">
|
||||
<i class="bi bi-music-note"></i> {{ _('Listen in Browser') }}
|
||||
</button>
|
||||
<ul class="dropdown-menu" aria-labelledby="listen-in-browser">
|
||||
{% for format in entry.reader_list %}
|
||||
@@ -179,17 +174,12 @@
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<ul class="dropdown-menu" aria-labelledby="listen-in-browser">
|
||||
|
||||
{% for format in entry.data %}
|
||||
{% if format.format|lower in entry.audio_entries %}
|
||||
<li><a
|
||||
href="{{ url_for('web.read_book', book_id=entry.id, book_format=format.format|lower) }}">{{ format.format|lower }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% for format in entry.audio_entries %}
|
||||
<li><a href="{{ url_for('web.read_book', book_id=entry.id, book_format=format) }}">{{ format }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<a target="_blank" href="{{ url_for('web.read_book', book_id=entry.id, book_format=entry.audio_entries[0]) }}" id="listenbtn" class="btn btn-primary" role="button"><span class="glyphicon glyphicon-music"></span> {{ _('Listen in Browser') }} - {{ entry.audio_entries[0] }}</a>
|
||||
<a target="_blank" href="{{ url_for('web.read_book', book_id=entry.id, book_format=entry.audio_entries[0]) }}" id="listenbtn" class="btn btn-primary" role="button"><i class="bi bi-music-note"></i> {{ _('Listen in Browser') }} - {{ entry.audio_entries[0] }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -209,10 +199,10 @@
|
||||
<div class="rating">
|
||||
<p>
|
||||
{% for number in range((entry.ratings[0].rating/2)|int(2)) %}
|
||||
<span class="glyphicon glyphicon-star good"></span>
|
||||
<i class="bi bi-star-fill good"></i>
|
||||
{% if loop.last and loop.index < 5 %}
|
||||
{% for numer in range(5 - loop.index) %}
|
||||
<span class="glyphicon glyphicon-star-empty"></span>
|
||||
<i class="bi bi-star"></i>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
@@ -227,7 +217,7 @@
|
||||
{% if entry.languages|length > 0 %}
|
||||
<div class="languages">
|
||||
<p>
|
||||
<span class="label label-default">{{_('Language')}}: {% for language in entry.languages %}{{language.language_name}}{% if not loop.last %}, {% endif %}{% endfor %}</span>
|
||||
<span class="badge text-bg-secondary">{{_('Language')}}: {% for language in entry.languages %}{{language.language_name}}{% if not loop.last %}, {% endif %}{% endfor %}</span>
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -235,7 +225,7 @@
|
||||
{% if entry.identifiers|length > 0 %}
|
||||
<div class="identifiers">
|
||||
<p>
|
||||
<span class="glyphicon glyphicon-link"></span>
|
||||
<i class="bi bi-link-45deg"></i>
|
||||
{% for identifier in entry.identifiers %}
|
||||
{% set identifier_link = identifier.__repr__() %}
|
||||
{% if identifier_link != identifier.val %}
|
||||
@@ -253,7 +243,7 @@
|
||||
|
||||
<div class="tags">
|
||||
<p>
|
||||
<span class="glyphicon glyphicon-tags"></span>
|
||||
<i class="bi bi-tags"></i>
|
||||
|
||||
{% for tag in entry.tags %}
|
||||
<a href="{{ url_for('web.books_list', data='category', sort_param='stored', book_id=tag.id) }}"
|
||||
@@ -292,9 +282,9 @@
|
||||
{% else %}
|
||||
{% if c.datatype == 'bool' %}
|
||||
{% if column.value == true %}
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
<i class="bi bi-check"></i>
|
||||
{% else %}
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
<i class="bi bi-x"></i>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if c.datatype == 'float' %}
|
||||
@@ -343,7 +333,7 @@
|
||||
|
||||
{% if current_user.role_edit() %}
|
||||
<div class="col-sm-12">
|
||||
<div class="btn btn-default" data-back="{{ url_for('web.index') }}" id="back">{{_('Cancel')}}</div>
|
||||
<div class="btn btn-outline-secondary" data-back="{{ url_for('web.index') }}" id="back">{{_('Cancel')}}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -361,9 +351,9 @@
|
||||
</li>
|
||||
</script>
|
||||
<script type="text/template" id="template-shelf-remove">
|
||||
<a data-href="<%= remove %>" data-add-href="<%= add %>" class="btn btn-sm btn-default"
|
||||
<a data-href="<%= remove %>" data-add-href="<%= add %>" class="btn btn-sm btn-outline-secondary"
|
||||
data-shelf-action="remove">
|
||||
<span class="glyphicon glyphicon-remove"></span> <%= content %>
|
||||
<i class="bi bi-x"></i> <%= content %>
|
||||
</a>
|
||||
</script>
|
||||
<script src="{{ url_for('static', filename='js/details.js') }}"></script>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<div data-related="email-settings-1">
|
||||
<div class="form-group">
|
||||
{% if content.mail_gmail_token == {} %}
|
||||
<button type="submit" id="gmail_server" name="gmail" value="submit" class="btn btn-default">{{_('Setup Gmail Account')}}</button>
|
||||
<button type="submit" id="gmail_server" name="gmail" value="submit" class="btn btn-outline-secondary">{{_('Setup Gmail Account')}}</button>
|
||||
{% else %}
|
||||
<button type="submit" id="invalidate_server" name="invalidate" value="submit" class="btn btn-danger">{{_('Revoke Gmail Access')}}</button>
|
||||
{% endif %}
|
||||
@@ -60,9 +60,7 @@
|
||||
<label for="mail_size">{{_('Attachment Size Limit')}}</label>
|
||||
<div class="form-group input-group">
|
||||
<input type="number" min="1" max="600" step="1" class="form-control" name="mail_size" id="mail_size" value="{% if content.mail_size != None %}{{ (content.mail_size / 1024 / 1024)|int }}{% endif %}" style="height: 40px;" required>
|
||||
<span class="input-group-btn">
|
||||
<button type="button" id="attachement_size" class="btn btn-default" style="height: 40px; margin-bottom: 0;" disabled>MB</button>
|
||||
</span>
|
||||
<button type="button" id="attachement_size" class="btn btn-outline-secondary" style="height: 40px; margin-bottom: 0;" disabled>MB</button>
|
||||
</div>
|
||||
{% if feature_support['gmail'] %}
|
||||
</div>
|
||||
@@ -70,8 +68,8 @@
|
||||
<div class="clearfix">
|
||||
<div class="pull-right">
|
||||
<a href="{{ url_for('admin.admin') }}" id="config_back" class="btn btn-primary" style="margin-bottom: 10px;">{{_('Cancel')}}</a>
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-default">{{_('Save')}}</button>
|
||||
<button type="submit" name="test" value="test" class="btn btn-default">{{_('Save and Send Test Email')}}</button>
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-outline-secondary">{{_('Save')}}</button>
|
||||
<button type="submit" name="test" value="test" class="btn btn-outline-secondary">{{_('Save and Send Test Email')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -84,7 +82,7 @@
|
||||
<label for="domainname_allow">{{_('Add Domain')}}</label>
|
||||
<input type="text" class="form-control" name="domainname" id="domainname_allow" >
|
||||
</div>
|
||||
<button id="domain_allow_submit" class="btn btn-default">{{_('Add')}}</button>
|
||||
<button id="domain_allow_submit" class="btn btn-outline-secondary">{{_('Add')}}</button>
|
||||
</form>
|
||||
<table class="table table-no-bordered" id="domain-allow-table" data-url="{{url_for('admin.list_domain', allow=1)}}" data-id-field="id" data-show-header="false" data-editable-mode="inline" data-locale="{{ current_user.locale }}">
|
||||
<thead>
|
||||
@@ -111,7 +109,7 @@
|
||||
<label for="domainname_deny">{{_('Add Domain')}}</label>
|
||||
<input type="text" class="form-control" name="domainname" id="domainname_deny" >
|
||||
</div>
|
||||
<button id="domain_deny_submit" class="btn btn-default">{{_('Add')}}</button>
|
||||
<button id="domain_deny_submit" class="btn btn-outline-secondary">{{_('Add')}}</button>
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="{{ url_for('static', filename='favicon-96.png') }}"/>
|
||||
<link rel="icon" type="image/svg+xml" href="{{ url_for('static', filename='favicon.svg') }}"/>
|
||||
<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/libs/bootstrap5.min.css') }}" rel="stylesheet" media="screen">
|
||||
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet" media="screen">
|
||||
<link href="{{ url_for('static', filename='css/caliBlur.css') }}" rel="stylesheet" media="screen">
|
||||
<link href="{{ url_for('static', filename='css/caliBlur_override.css') }}" rel="stylesheet" media="screen">
|
||||
|
||||
@@ -6,17 +6,17 @@
|
||||
<h2 class="random-books">{{_('Discover (Random Books)')}}</h2>
|
||||
<div class="row display-flex">
|
||||
{% for entry in random %}
|
||||
<div class="col-sm-3 col-lg-2 col-xs-6 book session" id="books_rand">
|
||||
<div class="col-sm-3 col-lg-2 col-6 book session" id="books_rand">
|
||||
<div class="cover">
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-toggle="modal" data-target="#bookDetailsModal" data-remote="false"{% endif %}>
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-bs-toggle="modal" data-bs-target="#bookDetailsModal"{% endif %}>
|
||||
<span class="img" title="{{ entry.Books.title }}">
|
||||
{{ image.book_cover(entry.Books) }}
|
||||
{% if entry[2] == True %}<span class="badge read glyphicon glyphicon-ok"></span>{% endif %}
|
||||
{% if entry[2] == True %}<span class="badge read bi bi-check"></span>{% endif %}
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-toggle="modal" data-target="#bookDetailsModal" data-remote="false"{% endif %}>
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-bs-toggle="modal" data-bs-target="#bookDetailsModal"{% endif %}>
|
||||
<p title="{{entry.Books.title}}" class="title">{{entry.Books.title|shortentitle}}</p>
|
||||
</a>
|
||||
<p class="author">
|
||||
@@ -48,10 +48,10 @@
|
||||
{% if entry.Books.ratings.__len__() > 0 %}
|
||||
<div class="rating">
|
||||
{% for number in range((entry.Books.ratings[0].rating/2)|int(2)) %}
|
||||
<span class="glyphicon glyphicon-star good"></span>
|
||||
<i class="bi bi-star-fill good"></i>
|
||||
{% if loop.last and loop.index < 5 %}
|
||||
{% for numer in range(5 - loop.index) %}
|
||||
<span class="glyphicon glyphicon-star-empty"></span>
|
||||
<i class="bi bi-star"></i>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
@@ -66,22 +66,22 @@
|
||||
<div class="discover load-more caliblur-index">
|
||||
<h2 class="{{title}}">{{title}}</h2>
|
||||
{% if page != 'discover' %}
|
||||
<div class="filterheader caliblur-filterheader hidden-xs">
|
||||
<div class="filterheader caliblur-filterheader d-none d-md-block">
|
||||
{% if page == 'hot' %}
|
||||
<a data-toggle="tooltip" title="{{_('Sort ascending according to download count')}}" id="hot_asc" class="btn btn-primary{% if order == "hotasc" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='hotasc')}}"><span class="glyphicon glyphicon-sort-by-order"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort descending according to download count')}}" id="hot_desc" class="btn btn-primary{% if order == "hotdesc" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='hotdesc')}}"><span class="glyphicon glyphicon-sort-by-order-alt"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort ascending according to download count')}}" id="hot_asc" class="btn btn-primary{% if order == "hotasc" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='hotasc')}}"><span class="bi bi-sort-numeric-down"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort descending according to download count')}}" id="hot_desc" class="btn btn-primary{% if order == "hotdesc" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='hotdesc')}}"><span class="bi bi-sort-numeric-down-alt"></span></a>
|
||||
{% else %}
|
||||
<a data-toggle="tooltip" title="{{_('Sort according to book date, newest first')}}" id="new" class="btn btn-primary{% if order == "new" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='new')}}"><span class="glyphicon glyphicon-book"></span> <span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort according to book date, oldest first')}}" id="old" class="btn btn-primary{% if order == "old" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='old')}}"><span class="glyphicon glyphicon-book"></span> <span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order-alt"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort title in alphabetical order')}}" id="asc" class="btn btn-primary{% if order == "abc" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='abc')}}"><span class="glyphicon glyphicon-font"></span><span class="glyphicon glyphicon-sort-by-alphabet"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort title in reverse alphabetical order')}}" id="desc" class="btn btn-primary{% if order == "zyx" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='zyx')}}"><span class="glyphicon glyphicon-font"></span><span class="glyphicon glyphicon-sort-by-alphabet-alt"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort authors in alphabetical order')}}" id="auth_az" class="btn btn-primary{% if order == "authaz" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='authaz')}}"><span class="glyphicon glyphicon-user"></span><span class="glyphicon glyphicon-sort-by-alphabet"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort authors in reverse alphabetical order')}}" id="auth_za" class="btn btn-primary{% if order == "authza" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='authza')}}"><span class="glyphicon glyphicon-user"></span><span class="glyphicon glyphicon-sort-by-alphabet-alt"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort according to publishing date, newest first')}}" id="pub_new" class="btn btn-primary{% if order == "pubnew" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='pubnew')}}"><span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort according to publishing date, oldest first')}}" id="pub_old" class="btn btn-primary{% if order == "pubold" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='pubold')}}"><span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order-alt"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort according to book date, newest first')}}" id="new" class="btn btn-primary{% if order == "new" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='new')}}"><span class="bi bi-book-fill"></span> <span class="bi bi-calendar3"></span><span class="bi bi-sort-numeric-down"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort according to book date, oldest first')}}" id="old" class="btn btn-primary{% if order == "old" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='old')}}"><span class="bi bi-book-fill"></span> <span class="bi bi-calendar3"></span><span class="bi bi-sort-numeric-down-alt"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort title in alphabetical order')}}" id="asc" class="btn btn-primary{% if order == "abc" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='abc')}}"><span class="bi bi-type"></span><span class="bi bi-sort-alpha-down"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort title in reverse alphabetical order')}}" id="desc" class="btn btn-primary{% if order == "zyx" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='zyx')}}"><span class="bi bi-type"></span><span class="bi bi-sort-alpha-down-alt"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort authors in alphabetical order')}}" id="auth_az" class="btn btn-primary{% if order == "authaz" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='authaz')}}"><span class="bi bi-person-fill"></span><span class="bi bi-sort-alpha-down"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort authors in reverse alphabetical order')}}" id="auth_za" class="btn btn-primary{% if order == "authza" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='authza')}}"><span class="bi bi-person-fill"></span><span class="bi bi-sort-alpha-down-alt"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort according to publishing date, newest first')}}" id="pub_new" class="btn btn-primary{% if order == "pubnew" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='pubnew')}}"><span class="bi bi-calendar3"></span><span class="bi bi-sort-numeric-down"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort according to publishing date, oldest first')}}" id="pub_old" class="btn btn-primary{% if order == "pubold" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='pubold')}}"><span class="bi bi-calendar3"></span><span class="bi bi-sort-numeric-down-alt"></span></a>
|
||||
{% if page == 'series' %}
|
||||
<a data-toggle="tooltip" title="{{_('Sort ascending according to series index')}}" id="series_asc" class="btn btn-primary{% if order == "seriesasc" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='seriesasc')}}"><span class="glyphicon glyphicon-sort-by-order"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort descending according to series index')}}" id="series_desc" class="btn btn-primary{% if order == "seriesdesc" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='seriesdesc')}}"><span class="glyphicon glyphicon-sort-by-order-alt"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort ascending according to series index')}}" id="series_asc" class="btn btn-primary{% if order == "seriesasc" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='seriesasc')}}"><span class="bi bi-sort-numeric-down"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort descending according to series index')}}" id="series_desc" class="btn btn-primary{% if order == "seriesdesc" %} active{% endif%}" href="{{url_for('web.books_list', data=page, book_id=id, sort_param='seriesdesc')}}"><span class="bi bi-sort-numeric-down-alt"></span></a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -89,17 +89,17 @@
|
||||
<div class="row display-flex">
|
||||
{% if entries[0] %}
|
||||
{% for entry in entries %}
|
||||
<div class="col-sm-3 col-lg-2 col-xs-6 book session" id="books">
|
||||
<div class="col-sm-3 col-lg-2 col-6 book session" id="books">
|
||||
<div class="cover">
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-toggle="modal" data-target="#bookDetailsModal" data-remote="false"{% endif %}>
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-bs-toggle="modal" data-bs-target="#bookDetailsModal"{% endif %}>
|
||||
<span class="img" title="{{ entry.Books.title }}">
|
||||
{{ image.book_cover(entry.Books) }}
|
||||
{% if entry[2] == True %}<span class="badge read glyphicon glyphicon-ok"></span>{% endif %}
|
||||
{% if entry[2] == True %}<span class="badge read bi bi-check"></span>{% endif %}
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-toggle="modal" data-target="#bookDetailsModal" data-remote="false"{% endif %}>
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-bs-toggle="modal" data-bs-target="#bookDetailsModal"{% endif %}>
|
||||
<p title="{{ entry.Books.title }}" class="title">{{entry.Books.title|shortentitle}}</p>
|
||||
</a>
|
||||
<p class="author">
|
||||
@@ -120,7 +120,7 @@
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if entry.Books.data|music %}
|
||||
<span class="glyphicon glyphicon-music"></span>
|
||||
<i class="bi bi-music-note"></i>
|
||||
{% endif %}
|
||||
</p>
|
||||
{% if entry.Books.series.__len__() > 0 %}
|
||||
@@ -138,10 +138,10 @@
|
||||
{% if entry.Books.ratings.__len__() > 0 %}
|
||||
<div class="rating">
|
||||
{% for number in range((entry.Books.ratings[0].rating/2)|int(2)) %}
|
||||
<span class="glyphicon glyphicon-star good"></span>
|
||||
<i class="bi bi-star-fill good"></i>
|
||||
{% if loop.last and loop.index < 5 %}
|
||||
{% for numer in range(5 - loop.index) %}
|
||||
<span class="glyphicon glyphicon-star-empty"></span>
|
||||
<i class="bi bi-star"></i>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
@@ -19,60 +19,59 @@
|
||||
<link rel="icon" type="image/svg+xml" href="{{ url_for('static', filename='favicon.svg') }}"/>
|
||||
<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/libs/bootstrap5.min.css') }}" rel="stylesheet" media="screen">
|
||||
{% block header %}{% endblock %}
|
||||
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet" media="screen">
|
||||
<link href="{{ url_for('static', filename='css/bootstrap-icons.min.css') }}" rel="stylesheet" media="screen">
|
||||
<link href="{{ url_for('static', filename='css/upload.css') }}" rel="stylesheet" media="screen">
|
||||
<link href="{{ url_for('static', filename='css/caliBlur.css') }}" rel="stylesheet" media="screen">
|
||||
<link href="{{ url_for('static', filename='css/caliBlur_override.css') }}" rel="stylesheet" media="screen">
|
||||
</head>
|
||||
<body class="{{ page }} {{ bodyClass }} blur{% if page == 'stat' %} stats{% endif %}{% if page in ['config', 'uiconfig', 'newuser', 'edituser', 'mailset', 'usertable', 'dbconfig'] %} admin{% endif %}{% if page == 'advsearch' %} advanced_search{% endif %}" data-readmore-more="{{_('Read more')}}" data-readmore-less="{{_('Read less')}}">
|
||||
<!-- Static navbar -->
|
||||
<div class="navbar navbar-default navbar-static-top" role="navigation">
|
||||
<nav class="navbar navbar-expand-md 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>
|
||||
<div class="navbar-header d-flex align-items-center">
|
||||
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="{{_('Toggle Navigation')}}">
|
||||
<span class="visually-hidden">{{_('Toggle Navigation')}}</span>
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="{{url_for('web.index')}}">{{instance}}</a>
|
||||
</div>
|
||||
<div class="home-btn"><a class="home-btn-tooltip" href="{{url_for('web.index', page=1)}}" data-toggle="tooltip" title="{{_('Home')}}" data-placement="bottom"></a></div>
|
||||
<div class="plexBack"><a class="back-btn-tooltip" href="{{url_for('web.index')}}" data-toggle="tooltip" title="{{_('Back')}}" data-placement="bottom"></a></div>
|
||||
<div class="home-btn"><a class="home-btn-tooltip" href="{{url_for('web.index', page=1)}}" data-bs-toggle="tooltip" title="{{_('Home')}}" data-bs-placement="bottom"></a></div>
|
||||
<div class="plexBack"><a class="back-btn-tooltip" href="{{url_for('web.index')}}" data-bs-toggle="tooltip" title="{{_('Back')}}" data-bs-placement="bottom"></a></div>
|
||||
{% if current_user.is_authenticated or g.allow_anonymous %}
|
||||
<form class="navbar-form navbar-left" role="search" action="{{url_for('search.simple_search')}}" method="GET">
|
||||
<div class="form-group input-group input-group-sm">
|
||||
<label for="query" class="sr-only">{{_('Search')}}</label>
|
||||
<span class="query-search-icon glyphicon glyphicon-search" aria-hidden="true"></span>
|
||||
<div class="form-group">
|
||||
<label for="query" class="visually-hidden">{{_('Search')}}</label>
|
||||
<input type="text" class="form-control" id="query" name="query" placeholder="{{_('Search Library')}}" value="{{searchterm}}">
|
||||
<span class="bi bi-search query-search-icon" aria-hidden="true"></span>
|
||||
<span class="input-group-btn">
|
||||
<button type="submit" id="query_submit" class="btn btn-default"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span></button>
|
||||
<button type="submit" id="query_submit" class="btn btn-outline-secondary" aria-label="{{_('Search')}}"><i class="bi bi-arrow-right" aria-hidden="true"></i></button>
|
||||
</span>
|
||||
</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
<div class="navbar-collapse collapse">
|
||||
<div class="navbar-collapse collapse" id="mainNavbar">
|
||||
{% if current_user.is_authenticated or g.allow_anonymous %}
|
||||
<ul class="nav navbar-nav ">
|
||||
{% if simple==true %} <li><a href="{{url_for('basic.index')}}" id="basic"><span class="glyphicon glyphicon-phone"></span><span>{{_('Simple Theme')}}</span></a><li>{% endif %}
|
||||
<ul class="nav navbar-nav">
|
||||
{% if simple==true %} <li><a href="{{url_for('basic.index')}}" id="basic"><i class="bi bi-phone"></i><span>{{_('Simple Theme')}}</span></a><li>{% endif %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
<ul class="nav navbar-nav navbar-right" id="main-nav">
|
||||
<ul class="nav navbar-nav" id="main-nav">
|
||||
{% if current_user.is_authenticated or g.allow_anonymous %}
|
||||
<li class="dropdown"><a href="#" class="dropdown-toggle profileDrop send-btn-tooltip dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" data-toggle-two="tooltip" title="{{_('Account')}}" data-placement="bottom" data-viewport="#main-nav"><span class="profileDropIcon" aria-hidden="true"><img src="{{ url_for('static', filename='css/img/user-icon.svg') }}" alt=""></span></a><span class="hidden-sm">{{current_user.name}}</span>
|
||||
<li class="dropdown"><a href="#" class="dropdown-toggle profileDrop send-btn-tooltip dropdown" data-bs-toggle="dropdown" role="button" aria-expanded="false" data-toggle-two="tooltip" title="{{_('Account')}}" data-bs-placement="bottom" data-viewport="#main-nav"><span class="profileDropIcon" aria-hidden="true"><img src="{{ url_for('static', filename='css/img/user-icon.svg') }}" alt=""></span></a><span class="caliblur-nav-label">{{current_user.name}}</span>
|
||||
<ul class="dropdown-menu profileDropli">
|
||||
<li><a id="top_user" href="{{url_for('web.profile')}}" ><span class="glyphicon glyphicon-user"></span> <span class="hidden-sm">{{current_user.name}}</span></a></li>
|
||||
<li><a id="top_user" href="{{url_for('web.profile')}}" ><i class="bi bi-person"></i> <span class="caliblur-nav-label">{{current_user.name}}</span></a></li>
|
||||
{% if not current_user.is_anonymous %}
|
||||
<li class="dropdown"><a id="nav_about" href="{{url_for('about.stats')}}"><span class="glyphicon glyphicon-info-sign"></span> {{_('About')}}</a></li>
|
||||
<li class="dropdown"><a id="nav_about" href="{{url_for('about.stats')}}"><i class="bi bi-info-circle"></i> {{_('About')}}</a></li>
|
||||
{% endif %}
|
||||
{% if g.allow_registration and not current_user.is_authenticated %}
|
||||
<li><a id="login" href="{{url_for('web.login')}}"><span class="glyphicon glyphicon-log-in"></span> {{_('Login')}}</a></li>
|
||||
<li><a id="register" href="{{url_for('web.register')}}"><span class="glyphicon glyphicon-user"></span> {{_('Register')}}</a></li>
|
||||
<li><a id="login" href="{{url_for('web.login')}}"><i class="bi bi-box-arrow-in-right"></i> {{_('Login')}}</a></li>
|
||||
<li><a id="register" href="{{url_for('web.register')}}"><i class="bi bi-person"></i> {{_('Register')}}</a></li>
|
||||
{% endif %}
|
||||
{% if not current_user.is_anonymous %}
|
||||
<li><a id="logout" href="{{url_for('web.logout', next=(request.path + '?' + request.query_string.decode('utf-8')).rstrip('?'))}}"><span class="glyphicon glyphicon-log-out"></span> <span class="hidden-sm">{{_('Logout')}}</span></a></li>
|
||||
<li><a id="logout" href="{{url_for('web.logout', next=(request.path + '?' + request.query_string.decode('utf-8')).rstrip('?'))}}"><i class="bi bi-box-arrow-right"></i> <span class="caliblur-nav-label">{{_('Logout')}}</span></a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</li>
|
||||
@@ -82,44 +81,44 @@
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<div class="form-group">
|
||||
<span class="form-upload-label">{{_('Upload Book')}}</span>
|
||||
<span class="btn btn-default btn-file">{{_('Upload')}}<input id="btn-upload" class="upload-btn-tooltip" name="btn-upload"
|
||||
data-toggle="tooltip" data-placement="bottom" data-viewport="#main-nav" title="{{_('Upload')}}"
|
||||
<span class="btn btn-outline-secondary btn-file">{{_('Upload')}}<input id="btn-upload" class="upload-btn-tooltip" name="btn-upload"
|
||||
data-bs-toggle="tooltip" data-bs-placement="bottom" data-viewport="#main-nav" title="{{_('Upload')}}"
|
||||
type="file" accept="{% for format in accept %}.{% if format != ''%}{{format}}{% else %}*{% endif %}{{ ',' if not loop.last }}{% endfor %}" multiple></span>
|
||||
<input class="hide" id="btn-upload2" name="btn-upload2" type="file" accept="{% for format in accept %}.{% if format != ''%}{{format}}{% else %}*{% endif %}{{ ',' if not loop.last }}{% endfor %}">
|
||||
<input class="d-none" id="btn-upload2" name="btn-upload2" type="file" accept="{% for format in accept %}.{% if format != ''%}{{format}}{% else %}*{% endif %}{{ ',' if not loop.last }}{% endfor %}">
|
||||
</div>
|
||||
</form>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if not current_user.is_anonymous and not simple%}
|
||||
<li class="top_tasks"><span class="top-tasks-label">{{_('Manage')}}</span><a id="top_tasks" class="tasks-btn-tooltip" href="{{url_for('tasks.get_tasks_status')}}" data-toggle="tooltip" title="{{_('Tasks')}}" data-placement="bottom" data-viewport="#main-nav"><span class="glyphicon glyphicon-tasks"></span> <span class="hidden-sm">{{_('Tasks')}}</span></a></li>
|
||||
<li class="top_tasks"><span class="top-tasks-label">{{_('Manage')}}</span><a id="top_tasks" class="tasks-btn-tooltip" href="{{url_for('tasks.get_tasks_status')}}" data-bs-toggle="tooltip" title="{{_('Tasks')}}" data-bs-placement="bottom" data-viewport="#main-nav"><i class="bi bi-list-task"></i> <span class="caliblur-nav-label">{{_('Tasks')}}</span></a></li>
|
||||
{% endif %}
|
||||
{% if current_user.role_admin() %}
|
||||
<li class="top_admin"><a id="top_admin" class="admin-btn-tooltip" href="{{url_for('admin.admin')}}" data-toggle="tooltip" title="{{_('Settings')}}" data-placement="bottom" data-viewport="#main-nav"><span class="glyphicon glyphicon-dashboard"></span> <span class="hidden-sm">{{_('Admin')}}</span></a></li>
|
||||
<li class="top_admin"><a id="top_admin" class="admin-btn-tooltip" href="{{url_for('admin.admin')}}" data-bs-toggle="tooltip" title="{{_('Settings')}}" data-bs-placement="bottom" data-viewport="#main-nav"><i class="bi bi-speedometer2"></i> <span class="caliblur-nav-label">{{_('Admin')}}</span></a></li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div><!--/.nav-collapse -->
|
||||
<div class="sidebar-backdrop"></div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
{% for message in get_flashed_messages(with_categories=True) %}
|
||||
{%if message[0] == "error" %}
|
||||
<div class="row-fluid text-center" >
|
||||
<div class="row text-center" >
|
||||
<div id="flash_danger" class="alert alert-danger">{{ message[1] }}</div>
|
||||
</div>
|
||||
{%endif%}
|
||||
{%if message[0] == "info" %}
|
||||
<div class="row-fluid text-center">
|
||||
<div class="row text-center">
|
||||
<div id="flash_info" class="alert alert-info">{{ message[1] }}</div>
|
||||
</div>
|
||||
{%endif%}
|
||||
{%if message[0] == "warning" %}
|
||||
<div class="row-fluid text-center">
|
||||
<div class="row text-center">
|
||||
<div id="flash_warning" class="alert alert-warning">{{ message[1] }}</div>
|
||||
</div>
|
||||
{%endif%}
|
||||
{%if message[0] == "success" %}
|
||||
<div class="row-fluid text-center">
|
||||
<div class="row text-center">
|
||||
<div id="flash_success" class="alert alert-success">{{ message[1] }}</div>
|
||||
</div>
|
||||
{%endif%}
|
||||
@@ -130,22 +129,22 @@
|
||||
<span>{{_("Please do not refresh the page")}}</span>.
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
<div class="row-fluid">
|
||||
<div class="row">
|
||||
{% if current_user.is_authenticated or g.allow_anonymous %}
|
||||
<div class="col-sm-2">
|
||||
<nav class="navigation">
|
||||
<ul class="list-unstyled" id="scnd-nav" intent in-standard-append="nav.navigation" in-tablet-after="#main-nav" in-tablet-class="nav navbar-nav" in-mobile-after="#main-nav" in-mobile-class="nav navbar-nav">
|
||||
<li class="nav-head hidden-xs">{{_('Browse')}}</li>
|
||||
<li><a href="{{url_for('search.advanced_search')}}" id="advanced_search"><span class="glyphicon glyphicon-search"></span><span class="hidden-sm"> {{_('Advanced Search')}}</span></a></li>
|
||||
<li class="nav-head d-none d-sm-block">{{_('Browse')}}</li>
|
||||
<li><a href="{{url_for('search.advanced_search')}}" id="advanced_search"><i class="bi bi-search"></i><span class="caliblur-nav-label"> {{_('Advanced Search')}}</span></a></li>
|
||||
{% for element in sidebar %}
|
||||
{% if current_user.check_visibility(element['visibility']) and element['public'] %}
|
||||
<li id="nav_{{element['id']}}" {% if page == element['page'] %}class="active"{% endif %}><a href="{% if element['no_param'] %}{{url_for(element['link'], data=element['page'])}}{%else%}{{url_for(element['link'], data=element['page'], sort_param='stored')}}{% endif %}"><i class="bi {{element['glyph']}}" aria-hidden="true"></i> <span class="nav-text">{{_(element['text'])|trim}}</span></a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if current_user.is_authenticated or g.allow_anonymous %}
|
||||
<li class="nav-head hidden-xs public-shelves">{{_('Shelves')}}</li>
|
||||
<li class="nav-head d-none d-sm-block public-shelves">{{_('Shelves')}}</li>
|
||||
{% for shelf in g.shelves_access %}
|
||||
<li><a href="{{url_for('shelf.show_shelf', shelf_id=shelf.id)}}"><span class="glyphicon glyphicon-list shelf"></span> {{shelf.name|shortentitle(40)}}{% if shelf.is_public == 1 %} {{_('(Public)')}}{% endif %} <span class="badge badge-sm">{{shelf.books.all()|length}}</span></a></li>
|
||||
<li><a href="{{url_for('shelf.show_shelf', shelf_id=shelf.id)}}"><i class="bi bi-list shelf"></i> {{shelf.name|shortentitle(40)}}{% if shelf.is_public == 1 %} {{_('(Public)')}}{% endif %} <span class="badge text-bg-secondary">{{shelf.books.all()|length}}</span></a></li>
|
||||
{% endfor %}
|
||||
{% if not current_user.is_anonymous %}
|
||||
<li id="nav_createshelf" class="create-shelf"><a href="{{url_for('shelf.create_shelf')}}">{{_('Create a Shelf')}}</a></li>
|
||||
@@ -186,12 +185,12 @@
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title" id="bookDetailsModalLabel">{{_('Book Details')}}</h4>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{_('Close')}}"></button>
|
||||
</div>
|
||||
<div class="modal-body">...</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" id="details_close" class="btn btn-default" data-dismiss="modal">{{_('Close')}}</button>
|
||||
<button type="button" id="details_close" class="btn btn-outline-secondary" data-bs-dismiss="modal">{{_('Close')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -200,7 +199,7 @@
|
||||
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
|
||||
<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/bootstrap5.bundle.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/libs/underscore-umd-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>
|
||||
|
||||
@@ -2,42 +2,42 @@
|
||||
{% block body %}
|
||||
<div class="discover">
|
||||
{% if page == 'authorlist' %}
|
||||
<span class="authorlist-icon glyphicon glyphicon-user" aria-hidden="true"></span>
|
||||
<i class="authorlist-icon bi bi-person" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
{% if page == 'catlist' %}
|
||||
<span class="catlist-icon glyphicon glyphicon-tags" aria-hidden="true"></span>
|
||||
<i class="catlist-icon bi bi-tags" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
{% if page == 'downloadlist' %}
|
||||
<span class="downloadlist-icon glyphicon glyphicon-download" aria-hidden="true"></span>
|
||||
<i class="downloadlist-icon bi bi-download" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
{% if page == 'langlist' %}
|
||||
<span class="langlist-icon glyphicon glyphicon-flag" aria-hidden="true"></span>
|
||||
<i class="langlist-icon bi bi-flag" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
{% if page == 'publisherlist' %}
|
||||
<span class="publisherlist-icon glyphicon glyphicon-text-size" aria-hidden="true"></span>
|
||||
<i class="publisherlist-icon bi bi-type" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
{% if page == 'ratingslist' %}
|
||||
<span class="ratingslist-icon glyphicon glyphicon-star-empty" aria-hidden="true"></span>
|
||||
<i class="ratingslist-icon bi bi-star" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
{% if page == 'formatslist' %}
|
||||
<span class="formatslist-icon glyphicon glyphicon-file" aria-hidden="true"></span>
|
||||
<i class="formatslist-icon bi bi-file-earmark" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
{% if page == 'serieslist' %}
|
||||
<span class="serieslist-icon glyphicon glyphicon-bookmark" aria-hidden="true"></span>
|
||||
<i class="serieslist-icon bi bi-bookmark" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
<h2 class="{{ page }}">{{ _(title)|replace(':', ' —')|replace("'", "") }}</h2>
|
||||
|
||||
<div class="filterheader caliblur-filterheader hidden-xs">
|
||||
<div class="filterheader caliblur-filterheader d-none d-sm-block">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
{% if entries.__len__() and data == 'author' %}
|
||||
<div id="sort_name" class="btn btn-primary"><b>B,A <-> A B</b></div>
|
||||
{% endif %}
|
||||
<div id="asc" data-order="{{ order }}" data-id="{{ data }}" class="btn btn-primary{% if order == 1 %} active{% endif %}"><span class="glyphicon glyphicon-sort-by-alphabet"></span></div>
|
||||
<div id="desc" data-id="{{ data }}" class="btn btn-primary{% if order == 0 %} active{% endif %}"><span class="glyphicon glyphicon-sort-by-alphabet-alt"></span></div>
|
||||
<div id="asc" data-order="{{ order }}" data-id="{{ data }}" class="btn btn-primary{% if order == 1 %} active{% endif %}"><i class="bi bi-sort-alpha-down"></i></div>
|
||||
<div id="desc" data-id="{{ data }}" class="btn btn-primary{% if order == 0 %} active{% endif %}"><i class="bi bi-sort-alpha-up"></i></div>
|
||||
{% if charlist|length %}
|
||||
<div id="all" class="active btn btn-primary {% if charlist|length > 9 %}hidden-sm{% endif %}">{{ _('All') }}</div>
|
||||
<div id="all" class="active btn btn-primary {% if charlist|length > 9 %}d-none d-sm-inline-block{% endif %}">{{ _('All') }}</div>
|
||||
{% endif %}
|
||||
<div class="btn-group character {% if charlist|length > 9 %}hidden-sm{% endif %}" role="group">
|
||||
<div class="btn-group character {% if charlist|length > 9 %}d-none d-sm-inline-flex{% endif %}" role="group">
|
||||
{% for char in charlist %}
|
||||
<div class="btn btn-primary char">{{ char[0] }}</div>
|
||||
{% endfor %}
|
||||
@@ -49,22 +49,22 @@
|
||||
</div>
|
||||
|
||||
<div class="container1">
|
||||
<div id="list" class="col-xs-12 col-sm-6">
|
||||
<div id="list" class="col-12 col-sm-6">
|
||||
{% for entry in entries %}
|
||||
{% if loop.index0 == (loop.length / 2 + loop.length % 2)|int and loop.length > 20 %}
|
||||
</div>
|
||||
<div id="second" class="col-xs-12 col-sm-6">
|
||||
<div id="second" class="col-12 col-sm-6">
|
||||
{% endif %}
|
||||
<div class="row" {% if entry[0].sort %}data-name="{{ entry[0].name }}"{% endif %} data-id="{% if entry[0].sort %}{{ entry[0].sort }}{% else %}{% if entry[0].format %}{{ entry[0].format }}{% else %}{% if entry[0].rating %}{{ entry[0].rating }}{% else %}{{ entry[0].name }}{% endif %}{% endif %}{% endif %}">
|
||||
<div class="col-xs-2 col-sm-2 col-md-1" align="left"><span class="badge">{{ entry[1] }}</span></div>
|
||||
<div class="col-xs-10 col-sm-10 col-md-11"><a id="list_{{ loop.index0 }}" href="{% if entry.format %}{{ url_for('web.books_list', data=data, sort_param='stored', book_id=entry.format) }}{% else %}{{ url_for('web.books_list', data=data, sort_param='stored', book_id=entry[0].id) }}{% endif %}">
|
||||
<div class="col-2 col-sm-2 col-md-1 text-start"><span class="badge">{{ entry[1] }}</span></div>
|
||||
<div class="col-10 col-sm-10 col-md-11"><a id="list_{{ loop.index0 }}" href="{% if entry.format %}{{ url_for('web.books_list', data=data, sort_param='stored', book_id=entry.format) }}{% else %}{{ url_for('web.books_list', data=data, sort_param='stored', book_id=entry[0].id) }}{% endif %}">
|
||||
{% if entry.name %}
|
||||
<div class="rating">
|
||||
{% for number in range(entry.name|int) %}
|
||||
<span class="glyphicon glyphicon-star good"></span>
|
||||
<i class="bi bi-star-fill good"></i>
|
||||
{% if loop.last and loop.index < 5 %}
|
||||
{% for numer in range(5 - loop.index) %}
|
||||
<span class="glyphicon glyphicon-star-empty"></span>
|
||||
<i class="bi bi-star"></i>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
@@ -13,12 +13,14 @@
|
||||
{% endif %}
|
||||
|
||||
<script src="{{ url_for('static', filename='js/libs/jquery.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/libs/bootstrap5.bundle.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/libs/soundmanager2.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/libs/bar-ui.js') }}"></script>
|
||||
|
||||
<link rel="apple-touch-icon" href="{{ url_for('static', filename='touch-icon.png') }}">
|
||||
<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/libs/bootstrap5.min.css') }}" rel="stylesheet" media="screen">
|
||||
<link href="{{ url_for('static', filename='css/bootstrap-icons.min.css') }}" rel="stylesheet" media="screen">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/libs/bar-ui.css') }}" />
|
||||
|
||||
<script>
|
||||
@@ -30,7 +32,7 @@
|
||||
<body>
|
||||
|
||||
<div class="row" style="display: inline-block; width: 100%;">
|
||||
<div class="col-sm-3 col-lg-3 col-xs-5">
|
||||
<div class="col-sm-3 col-lg-3 col-5">
|
||||
|
||||
</div>
|
||||
<div class="col-sm-6 col-lg-6 book-meta" style="margin-bottom: 2%;">
|
||||
@@ -48,10 +50,10 @@
|
||||
<div class="rating">
|
||||
<p>
|
||||
{% for number in range((entry.ratings[0].rating/2)|int(2)) %}
|
||||
<span class="glyphicon glyphicon-star good"></span>
|
||||
<i class="bi bi-star-fill good"></i>
|
||||
{% if loop.last and loop.index < 5 %}
|
||||
{% for numer in range(5 - loop.index) %}
|
||||
<span class="glyphicon glyphicon-star-empty"></span>
|
||||
<i class="bi bi-star"></i>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
@@ -66,7 +68,7 @@
|
||||
{% if entry.languages.__len__() > 0 %}
|
||||
<div class="languages">
|
||||
<p>
|
||||
<span class="label label-default">{{_('Language')}}: {% for language in entry.languages %}{{language.language_name}}{% if not loop.last %}, {% endif %}{% endfor %}</span>
|
||||
<span class="badge text-bg-secondary">{{_('Language')}}: {% for language in entry.languages %}{{language.language_name}}{% if not loop.last %}, {% endif %}{% endfor %}</span>
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -74,7 +76,7 @@
|
||||
{% if entry.identifiers|length > 0 %}
|
||||
<div class="identifiers">
|
||||
<p>
|
||||
<span class="glyphicon glyphicon-link"></span>
|
||||
<i class="bi bi-link-45deg"></i>
|
||||
{% for identifier in entry.identifiers %}
|
||||
<a href="{{identifier}}" target="_blank" class="btn btn-xs btn-success" role="button">{{identifier.format_type()}}</a>
|
||||
{%endfor%}
|
||||
@@ -86,7 +88,7 @@
|
||||
|
||||
<div class="tags">
|
||||
<p>
|
||||
<span class="glyphicon glyphicon-tags"></span>
|
||||
<i class="bi bi-tags"></i>
|
||||
|
||||
{% for tag in entry.tags %}
|
||||
<a href="{{ url_for('web.books_list', data='category', sort_param='stored', book_id=tag.id) }}" class="btn btn-xs btn-info" role="button">{{tag.name}}</a>
|
||||
@@ -124,9 +126,9 @@
|
||||
{% else %}
|
||||
{% if c.datatype == 'bool' %}
|
||||
{% if column.value == true %}
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
<i class="bi bi-check"></i>
|
||||
{% else %}
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
<i class="bi bi-x"></i>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if c.datatype == 'float' %}
|
||||
@@ -155,7 +157,7 @@
|
||||
<p>
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<label class="block-label">
|
||||
<input id="have_read_cb" class="readunread-btn-tooltip" type="checkbox" {% if entry.read_status %}checked{% endif %} disabled data-toggle="tooltip" data-placement="bottom" data-viewport=".btn-toolbar" title="{% if entry.read_status %}{{_('Mark As Unread')}}{% else %}{{_('Mark As Read')}}{% endif %}">
|
||||
<input id="have_read_cb" class="readunread-btn-tooltip" type="checkbox" {% if entry.read_status %}checked{% endif %} disabled data-bs-toggle="tooltip" data-bs-placement="bottom" data-viewport=".btn-toolbar" title="{% if entry.read_status %}{{_('Mark As Unread')}}{% else %}{{_('Mark As Read')}}{% endif %}">
|
||||
<span>{{_('Read')}}</span>
|
||||
</label>
|
||||
</p>
|
||||
@@ -163,7 +165,7 @@
|
||||
<p>
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<label class="block-label">
|
||||
<input id="archived_cb" class="readunread-btn-tooltip" type="checkbox" {% if entry.is_archived %}checked{% endif %} disabled data-toggle="tooltip" data-placement="bottom" data-viewport=".btn-toolbar" title="{% if entry.is_archived %}{{_('Restore from archive')}}{% else %}{{_('Add to archive')}}{% endif %}">
|
||||
<input id="archived_cb" class="readunread-btn-tooltip" type="checkbox" {% if entry.is_archived %}checked{% endif %} disabled data-bs-toggle="tooltip" data-bs-placement="bottom" data-viewport=".btn-toolbar" title="{% if entry.is_archived %}{{_('Restore from archive')}}{% else %}{{_('Add to archive')}}{% endif %}">
|
||||
<span>{{_('Archived')}}</span>
|
||||
</label>
|
||||
</p>
|
||||
@@ -186,9 +188,8 @@
|
||||
{% if current_user.shelf.all() or g.shelves_access %}
|
||||
<div id="shelf-actions" class="btn-toolbar" role="toolbar">
|
||||
<div class="btn-group" role="group" aria-label="Add to shelves">
|
||||
<button id="add-to-shelf" type="button" class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="glyphicon glyphicon-list"></span> {{_('Add to shelf')}}
|
||||
<span class="caret"></span>
|
||||
<button id="add-to-shelf" type="button" class="btn btn-primary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<i class="bi bi-list"></i> {{_('Add to shelf')}}
|
||||
</button>
|
||||
<ul id="add-to-shelves" class="dropdown-menu" aria-labelledby="add-to-shelf">
|
||||
{% for shelf in g.shelves_access %}
|
||||
@@ -211,10 +212,10 @@
|
||||
{% if shelf.id in books_shelfs %}
|
||||
<a data-href="{{ url_for('shelf.remove_from_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||||
data-add-href="{{ url_for('shelf.add_to_shelf', book_id=entry.id, shelf_id=shelf.id) }}"
|
||||
class="btn btn-sm btn-default" role="button" data-shelf-action="remove"
|
||||
class="btn btn-sm btn-outline-secondary" role="button" data-shelf-action="remove"
|
||||
>
|
||||
<span {% if not shelf.is_public or current_user.role_edit_shelfs() %}
|
||||
class="glyphicon glyphicon-remove"
|
||||
class="bi bi-x"
|
||||
{% endif %}></span> {{shelf.name}}{% if shelf.is_public == 1 %} {{_('(Public)')}}{% endif %}
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
@@ -13,11 +13,9 @@
|
||||
<label for="password">{{_('Password')}}</label>
|
||||
<div class="input-group">
|
||||
<input type="password" class="form-control" id="password" name="password" placeholder="{{_('Password')}}" value="{{ password }}">
|
||||
<span class="input-group-btn">
|
||||
<button type="button" class="btn btn-default toggle-password" data-target="#password" data-password-show="{{_('Show password')}}" data-password-hide="{{_('Hide password')}}" aria-label="{{_('Show password')}}" title="{{_('Show password')}}">
|
||||
<span class="glyphicon glyphicon-eye-close" aria-hidden="true"></span>
|
||||
</button>
|
||||
</span>
|
||||
<button type="button" class="btn btn-outline-secondary toggle-password" data-target="#password" data-password-show="{{_('Show password')}}" data-password-hide="{{_('Hide password')}}" aria-label="{{_('Show password')}}" title="{{_('Show password')}}">
|
||||
<i class="bi bi-eye-slash" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
@@ -25,18 +23,18 @@
|
||||
<input type="checkbox" name="remember_me" checked> {{_('Remember Me')}}
|
||||
</label>
|
||||
</div>
|
||||
<button type="submit" name="submit" class="btn btn-default">{{_('Login')}}</button>
|
||||
<button type="submit" name="submit" class="btn btn-outline-secondary">{{_('Login')}}</button>
|
||||
{% if config.config_login_type == 0 and mail%}
|
||||
<button type="submit" name="forgot" value="forgot" class="btn btn-default">{{_('Forgot Password?')}}</button>
|
||||
<button type="submit" name="forgot" value="forgot" class="btn btn-outline-secondary">{{_('Forgot Password?')}}</button>
|
||||
{% endif %}
|
||||
{% if g.allow_registration %}
|
||||
<a class="btn btn-default" id="register" href="{{url_for('web.register')}}"><span class="glyphicon glyphicon-user"></span> {{_('Register')}}</a>
|
||||
<a class="btn btn-outline-secondary" id="register" href="{{url_for('web.register')}}"><i class="bi bi-person"></i> {{_('Register')}}</a>
|
||||
{% endif %}
|
||||
{% if config.config_remote_login %}
|
||||
<a class="btn btn-default" id="remote_login" href="{{url_for('remotelogin.remote_login')}}">{{_('Log in with Magic Link')}}</a>
|
||||
<a class="btn btn-outline-secondary" id="remote_login" href="{{url_for('remotelogin.remote_login')}}">{{_('Log in with Magic Link')}}</a>
|
||||
{% endif %}
|
||||
{% if g.allow_anonymous %}
|
||||
<a class="btn btn-default" href="{{url_for('web.index')}}">{{ _('Anonymous Browsing') }}</a>
|
||||
<a class="btn btn-outline-secondary" href="{{url_for('web.index')}}">{{ _('Anonymous Browsing') }}</a>
|
||||
{% endif %}
|
||||
{% if config.config_login_type == 2 %}
|
||||
{% if 1 in oauth_check %}
|
||||
|
||||
@@ -25,13 +25,13 @@
|
||||
<input type="text" class="form-control" name="add_element" id="add_element">
|
||||
</div>
|
||||
<div class="form-group required">
|
||||
<input type="button" class="btn btn-default" value="{{_('Allow')}}" name="submit_allow" id="submit_allow" data-dismiss="static">
|
||||
<input type="button" class="btn btn-default" value="{{_('Deny')}}" name="submit_deny" id="submit_restrict" data-dismiss="static">
|
||||
<input type="button" class="btn btn-outline-secondary" value="{{_('Allow')}}" name="submit_allow" id="submit_allow">
|
||||
<input type="button" class="btn btn-outline-secondary" value="{{_('Deny')}}" name="submit_deny" id="submit_restrict">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" id="restrict_close" class="btn btn-default" data-dismiss="modal">{{_('Close')}}</button>
|
||||
<button type="button" id="restrict_close" class="btn btn-outline-secondary" data-bs-dismiss="modal">{{_('Close')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -47,8 +47,8 @@
|
||||
</div>
|
||||
<div class="modal-body text-center">
|
||||
<p>
|
||||
<span class="hidden" id="book_format">{{_('This book format will be permanently erased from database')}}</span>
|
||||
<span class="hidden" id="book_complete">{{_('This book will be permanently erased from database and hard disk')}}</span>
|
||||
<span class="d-none" id="book_format">{{_('This book format will be permanently erased from database')}}</span>
|
||||
<span class="d-none" id="book_complete">{{_('This book will be permanently erased from database and hard disk')}}</span>
|
||||
</p>
|
||||
{% if config.config_kobo_sync %}
|
||||
<p>
|
||||
@@ -59,8 +59,8 @@
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">{{_('Cancel')}}</button>
|
||||
<input type="button" class="btn btn-danger" value="{{_('Delete')}}" name="delete_confirm" id="delete_confirm" data-dismiss="modal">
|
||||
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">{{_('Cancel')}}</button>
|
||||
<input type="button" class="btn btn-danger" value="{{_('Delete')}}" name="delete_confirm" id="delete_confirm" data-bs-dismiss="modal">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -86,7 +86,7 @@
|
||||
</thead>
|
||||
<tbody id="tbody">
|
||||
<tr class="tr-clickable hidden" id="parent" data-type="dir" data-path="..">
|
||||
<td><span class="glyphicon glyphicon-folder-close"></span></td>
|
||||
<td><i class="bi bi-folder"></i></td>
|
||||
<td title="{{_('Parent Directory')}}"><span class="parentdir">..</span></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
@@ -96,8 +96,8 @@
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="text-left" id="element_selected"></div>
|
||||
<button type="button" id="file_abort" class="btn btn-default" data-dismiss="modal">{{_('Cancel')}}</button>
|
||||
<input type="button" class="btn btn-primary" data-path="" data-link="" data-folderonly="" data-filefilter="" data-newfile="" value="{{_('Select')}}" name="file_confirm" id="file_confirm" data-dismiss="modal">
|
||||
<button type="button" id="file_abort" class="btn btn-outline-secondary" data-bs-dismiss="modal">{{_('Cancel')}}</button>
|
||||
<input type="button" class="btn btn-primary" data-path="" data-link="" data-folderonly="" data-filefilter="" data-newfile="" value="{{_('Select')}}" name="file_confirm" id="file_confirm" data-bs-dismiss="modal">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -133,7 +133,7 @@
|
||||
<span id="text-GeneralChangeModal"></span>
|
||||
<p></p>
|
||||
<button id="btnConfirmNo-GeneralChangeModal" type="button" class="btn btn-primary">{{_('Cancel')}}</button>
|
||||
<button id="btnConfirmYes-GeneralChangeModal" type="button" class="btn btn btn-default">{{_('Ok')}}</button>
|
||||
<button id="btnConfirmYes-GeneralChangeModal" type="button" class="btn btn-outline-secondary">{{_('Ok')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -15,9 +15,8 @@
|
||||
<div id="shelf-actions" class="btn-toolbar" role="toolbar">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<div class="btn-group" role="group" aria-label="Add to shelves">
|
||||
<button id="add-to-shelf" type="button" class="btn btn-primary btn-sm dropdown-toggle addtoshelf-btn-tooltip{% if page == 'advsearch' %} advsearch-addtoshelf{% endif %}" data-toggle-two="tooltip" title="{{_('Add to shelf')}}" data-placement="bottom" data-viewport=".btn-toolbar" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="glyphicon glyphicon-list"></span> {{_('Add to shelf')}}
|
||||
<span class="caret"></span>
|
||||
<button id="add-to-shelf" type="button" class="btn btn-primary btn-sm dropdown-toggle addtoshelf-btn-tooltip{% if page == 'advsearch' %} advsearch-addtoshelf{% endif %}" data-toggle-two="tooltip" title="{{_('Add to shelf')}}" data-bs-placement="bottom" data-viewport=".btn-toolbar" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<i class="bi bi-list"></i> {{_('Add to shelf')}}
|
||||
</button>
|
||||
<ul id="add-to-shelves" class="dropdown-menu" aria-labelledby="add-to-shelf">
|
||||
{% for shelf in g.shelves_access %}
|
||||
@@ -28,9 +27,8 @@
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group" role="group" aria-label="Remove from shelves" style="margin-right: 5px;">
|
||||
<button id="remove-from-shelf" type="button" class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="glyphicon glyphicon-list"></span> {{_('Remove from shelf')}}
|
||||
<span class="caret"></span>
|
||||
<button id="remove-from-shelf" type="button" class="btn btn-primary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<i class="bi bi-list"></i> {{_('Remove from shelf')}}
|
||||
</button>
|
||||
<ul id="remove-from-shelves" class="dropdown-menu" aria-labelledby="add-to-shelf">
|
||||
{% for shelf in g.shelves_access %}
|
||||
@@ -44,33 +42,33 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<div class="filterheader hidden-xs"><!-- ToDo: Implement filter for search results -->
|
||||
<a id="new" data-toggle="tooltip" title="{{_('Sort according to book date, newest first')}}" class="btn btn-primary{% if order == "new" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='new', query=query)}}"><span class="glyphicon glyphicon-sort-by-order"></span></a>
|
||||
<a id="old" data-toggle="tooltip" title="{{_('Sort according to book date, oldest first')}}" class="btn btn-primary{% if order == "old" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='old', query=query)}}"><span class="glyphicon glyphicon-sort-by-order-alt"></span></a>
|
||||
<a id="asc" data-toggle="tooltip" title="{{_('Sort title in alphabetical order')}}" class="btn btn-primary{% if order == "abc" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='abc', query=query)}}"><span class="glyphicon glyphicon-font"></span><span class="glyphicon glyphicon-sort-by-alphabet"></span></a>
|
||||
<a id="desc" data-toggle="tooltip" title="{{_('Sort title in reverse alphabetical order')}}" class="btn btn-primary{% if order == "zyx" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='zyx', query=query)}}"><span class="glyphicon glyphicon-font"></span><span class="glyphicon glyphicon-sort-by-alphabet-alt"></span></a>
|
||||
<a id="auth_az" data-toggle="tooltip" title="{{_('Sort authors in alphabetical order')}}" class="btn btn-primary{% if order == "authaz" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='authaz', query=query)}}"><span class="glyphicon glyphicon-user"></span><span class="glyphicon glyphicon-sort-by-alphabet"></span></a>
|
||||
<a id="auth_za" data-toggle="tooltip" title="{{_('Sort authors in reverse alphabetical order')}}" class="btn btn-primary{% if order == "authza" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='authza', query=query)}}"><span class="glyphicon glyphicon-user"></span><span class="glyphicon glyphicon-sort-by-alphabet-alt"></span></a>
|
||||
<a id="pub_new" data-toggle="tooltip" title="{{_('Sort according to publishing date, newest first')}}" class="btn btn-primary{% if order == "pubnew" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='pubnew', query=query)}}"><span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order"></span></a>
|
||||
<a id="pub_old" data-toggle="tooltip" title="{{_('Sort according to publishing date, oldest first')}}" class="btn btn-primary{% if order == "pubold" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='pubold', query=query)}}"><span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order-alt"></span></a>
|
||||
<div class="filterheader d-none d-sm-block"><!-- ToDo: Implement filter for search results -->
|
||||
<a id="new" data-bs-toggle="tooltip" title="{{_('Sort according to book date, newest first')}}" class="btn btn-primary{% if order == "new" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='new', query=query)}}"><i class="bi bi-sort-down"></i></a>
|
||||
<a id="old" data-bs-toggle="tooltip" title="{{_('Sort according to book date, oldest first')}}" class="btn btn-primary{% if order == "old" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='old', query=query)}}"><i class="bi bi-sort-up"></i></a>
|
||||
<a id="asc" data-bs-toggle="tooltip" title="{{_('Sort title in alphabetical order')}}" class="btn btn-primary{% if order == "abc" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='abc', query=query)}}"><i class="bi bi-sort-alpha-down"></i></a>
|
||||
<a id="desc" data-bs-toggle="tooltip" title="{{_('Sort title in reverse alphabetical order')}}" class="btn btn-primary{% if order == "zyx" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='zyx', query=query)}}"><i class="bi bi-sort-alpha-up"></i></a>
|
||||
<a id="auth_az" data-bs-toggle="tooltip" title="{{_('Sort authors in alphabetical order')}}" class="btn btn-primary{% if order == "authaz" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='authaz', query=query)}}"><i class="bi bi-person"></i><i class="bi bi-sort-alpha-down"></i></a>
|
||||
<a id="auth_za" data-bs-toggle="tooltip" title="{{_('Sort authors in reverse alphabetical order')}}" class="btn btn-primary{% if order == "authza" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='authza', query=query)}}"><i class="bi bi-person"></i><i class="bi bi-sort-alpha-up"></i></a>
|
||||
<a id="pub_new" data-bs-toggle="tooltip" title="{{_('Sort according to publishing date, newest first')}}" class="btn btn-primary{% if order == "pubnew" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='pubnew', query=query)}}"><i class="bi bi-calendar3"></i><i class="bi bi-sort-down"></i></a>
|
||||
<a id="pub_old" data-bs-toggle="tooltip" title="{{_('Sort according to publishing date, oldest first')}}" class="btn btn-primary{% if order == "pubold" %} active{% endif%}" href="{{url_for('web.books_list', data=page, sort_param='pubold', query=query)}}"><i class="bi bi-calendar3"></i><i class="bi bi-sort-up"></i></a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="row display-flex">
|
||||
{% for entry in entries %}
|
||||
<div class="col-sm-3 col-lg-2 col-xs-6 book session">
|
||||
<div class="col-sm-3 col-lg-2 col-6 book session">
|
||||
<div class="cover">
|
||||
{% if entry.Books.has_cover is defined %}
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-toggle="modal" data-target="#bookDetailsModal" data-remote="false"{% endif %}>
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-bs-toggle="modal" data-bs-target="#bookDetailsModal"{% endif %}>
|
||||
<span class="img" title="{{entry.Books.title}}" >
|
||||
{{ image.book_cover(entry.Books) }}
|
||||
{% if entry[2] == True %}<span class="badge read glyphicon glyphicon-ok"></span>{% endif %}
|
||||
{% if entry[2] == True %}<span class="badge read bi bi-check"></span>{% endif %}
|
||||
</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="meta">
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-toggle="modal" data-target="#bookDetailsModal" data-remote="false"{% endif %}>
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-bs-toggle="modal" data-bs-target="#bookDetailsModal"{% endif %}>
|
||||
<p title="{{entry.Books.title}}" class="title">{{entry.Books.title|shortentitle}}</p>
|
||||
</a>
|
||||
<p class="author">
|
||||
@@ -91,7 +89,7 @@
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if entry.Books.data|music %}
|
||||
<span class="glyphicon glyphicon-music"></span>
|
||||
<i class="bi bi-music-note"></i>
|
||||
{% endif %}
|
||||
</p>
|
||||
{% if entry.Books.series.__len__() > 0 %}
|
||||
@@ -106,10 +104,10 @@
|
||||
{% if entry.Books.ratings.__len__() > 0 %}
|
||||
<div class="rating">
|
||||
{% for number in range((entry.Books.ratings[0].rating/2)|int(2)) %}
|
||||
<span class="glyphicon glyphicon-star good"></span>
|
||||
<i class="bi bi-star-fill good"></i>
|
||||
{% if loop.last and loop.index < 5 %}
|
||||
{% for numer in range(5 - loop.index) %}
|
||||
<span class="glyphicon glyphicon-star-empty"></span>
|
||||
<i class="bi bi-star"></i>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
@@ -11,12 +11,12 @@
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<div class="shelf-btn-group">
|
||||
{% if current_user.role_download() %}
|
||||
<a id="shelf_down" href="{{ url_for('shelf.show_simpleshelf', shelf_id=shelf.id) }}" class="btn btn-default">{{ _('Download') }} </a>
|
||||
<a id="shelf_down" href="{{ url_for('shelf.show_simpleshelf', shelf_id=shelf.id) }}" class="btn btn-outline-secondary">{{ _('Download') }} </a>
|
||||
{% endif %}
|
||||
<div class="btn btn-danger delete-shelf-btn delete-btn-tooltip" data-action="{{url_for('shelf.delete_shelf', shelf_id=shelf.id)}}" id="delete_shelf" data-value="{{ shelf.id }}" data-toggle-two="tooltip" title="{{ _('Delete this Shelf') }}" data-placement="bottom">{{ _('Delete this Shelf') }}</div>
|
||||
<a id="edit_shelf" href="{{ url_for('shelf.edit_shelf', shelf_id=shelf.id) }}" class="btn btn-default edit-shelf-btn edit-btn-tooltip" data-toggle-two="tooltip" title="{{ _('Edit Shelf Properties') }}" data-placement="bottom">{{ _('Edit Shelf Properties') }} </a>
|
||||
<a id="edit_shelf" href="{{ url_for('shelf.edit_shelf', shelf_id=shelf.id) }}" class="btn btn-outline-secondary edit-shelf-btn edit-btn-tooltip" data-toggle-two="tooltip" title="{{ _('Edit Shelf Properties') }}" data-bs-placement="bottom">{{ _('Edit Shelf Properties') }} </a>
|
||||
{% if entries.__len__() %}
|
||||
<a id="order_shelf" href="{{ url_for('shelf.order_shelf', shelf_id=shelf.id) }}" class="btn btn-default order-shelf-btn order-btn-tooltip" data-toggle-two="tooltip" title="{{ _('Arrange books manually') }}" data-placement="bottom">{{ _('Arrange books manually') }} </a>
|
||||
<a id="order_shelf" href="{{ url_for('shelf.order_shelf', shelf_id=shelf.id) }}" class="btn btn-outline-secondary order-shelf-btn order-btn-tooltip" data-toggle-two="tooltip" title="{{ _('Arrange books manually') }}" data-bs-placement="bottom">{{ _('Arrange books manually') }} </a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -26,17 +26,17 @@
|
||||
{% if entries.__len__() %}
|
||||
<div class="shelf-toolbar-row">
|
||||
<button id="toggle_order_shelf" data-alt-text="{% if status == "on" %}{{_('Disable Change order')}}{% else %}{{_('Enable Change order')}}{% endif %}" data-view="shelf" class="btn btn-primary{% if status == 'on' %} dummy">{{ _('Enable Change order') }}{% else%}">{{ _('Disable Change order') }}{% endif %}</button>
|
||||
<div class="filterheader hidden-xs">
|
||||
<a data-toggle="tooltip" title="{{_('Sort according to book date, newest first')}}" id="new" class="btn btn-primary {% if order == "new" %} active{% endif %}{% if status == "on" %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='new')}}"><span class="glyphicon glyphicon-book"></span> <span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort according to book date, oldest first')}}" id="old" class="btn btn-primary {% if order == 'old' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='old')}}"><span class="glyphicon glyphicon-book"></span> <span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order-alt"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort title in alphabetical order')}}" id="asc" class="btn btn-primary {% if order == 'abc' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='abc')}}"><span class="glyphicon glyphicon-font"></span><span class="glyphicon glyphicon-sort-by-alphabet"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort title in reverse alphabetical order')}}" id="desc" class="btn btn-primary {% if order == 'zyx' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='zyx')}}"><span class="glyphicon glyphicon-font"></span><span class="glyphicon glyphicon-sort-by-alphabet-alt"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort authors in alphabetical order')}}" id="auth_az" class="btn btn-primary {% if order == 'authaz' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='authaz')}}"><span class="glyphicon glyphicon-user"></span><span class="glyphicon glyphicon-sort-by-alphabet"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort authors in reverse alphabetical order')}}" id="auth_za" class="btn btn-primary {% if order == 'authza' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='authza')}}"><span class="glyphicon glyphicon-user"></span><span class="glyphicon glyphicon-sort-by-alphabet-alt"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort according to publishing date, newest first')}}" id="pub_new" class="btn btn-primary {% if order == 'pubnew' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='pubnew')}}"><span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort according to publishing date, oldest first')}}" id="pub_old" class="btn btn-primary {% if order == 'pubold' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='pubold')}}"><span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order-alt"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort according to book added to shelf, newest first')}}" id="shelf_new" class="btn btn-primary {% if order == 'shelfnew' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='shelfnew')}}"><span class="glyphicon glyphicon-list"></span><span class="glyphicon glyphicon-sort-by-order"></span></a>
|
||||
<a data-toggle="tooltip" title="{{_('Sort according to book added to shelf, oldest first')}}" id="shelf_old" class="btn btn-primary {% if order == 'shelfold' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='shelfold')}}"><span class="glyphicon glyphicon-list"></span><span class="glyphicon glyphicon-sort-by-order-alt"></span></a
|
||||
<div class="filterheader d-none d-sm-block">
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort according to book date, newest first')}}" id="new" class="btn btn-primary {% if order == "new" %} active{% endif %}{% if status == "on" %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='new')}}"><span class="glyphicon glyphicon-book"></span> <span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort according to book date, oldest first')}}" id="old" class="btn btn-primary {% if order == 'old' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='old')}}"><span class="glyphicon glyphicon-book"></span> <span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order-alt"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort title in alphabetical order')}}" id="asc" class="btn btn-primary {% if order == 'abc' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='abc')}}"><span class="glyphicon glyphicon-font"></span><span class="glyphicon glyphicon-sort-by-alphabet"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort title in reverse alphabetical order')}}" id="desc" class="btn btn-primary {% if order == 'zyx' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='zyx')}}"><span class="glyphicon glyphicon-font"></span><span class="glyphicon glyphicon-sort-by-alphabet-alt"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort authors in alphabetical order')}}" id="auth_az" class="btn btn-primary {% if order == 'authaz' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='authaz')}}"><span class="glyphicon glyphicon-user"></span><span class="glyphicon glyphicon-sort-by-alphabet"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort authors in reverse alphabetical order')}}" id="auth_za" class="btn btn-primary {% if order == 'authza' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='authza')}}"><span class="glyphicon glyphicon-user"></span><span class="glyphicon glyphicon-sort-by-alphabet-alt"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort according to publishing date, newest first')}}" id="pub_new" class="btn btn-primary {% if order == 'pubnew' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='pubnew')}}"><span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort according to publishing date, oldest first')}}" id="pub_old" class="btn btn-primary {% if order == 'pubold' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='pubold')}}"><span class="glyphicon glyphicon-calendar"></span><span class="glyphicon glyphicon-sort-by-order-alt"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort according to book added to shelf, newest first')}}" id="shelf_new" class="btn btn-primary {% if order == 'shelfnew' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='shelfnew')}}"><span class="glyphicon glyphicon-list"></span><span class="glyphicon glyphicon-sort-by-order"></span></a>
|
||||
<a data-bs-toggle="tooltip" title="{{_('Sort according to book added to shelf, oldest first')}}" id="shelf_old" class="btn btn-primary {% if order == 'shelfold' %} active{% endif %}{% if status == 'on' %} disabled{% endif %}" href="{{url_for('shelf.show_shelf', shelf_id=shelf.id, sort_param='shelfold')}}"><span class="glyphicon glyphicon-list"></span><span class="glyphicon glyphicon-sort-by-order-alt"></span></a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@@ -45,17 +45,17 @@
|
||||
</div>
|
||||
<div class="row display-flex">
|
||||
{% for entry in entries %}
|
||||
<div class="col-sm-3 col-lg-2 col-xs-6 book session">
|
||||
<div class="col-sm-3 col-lg-2 col-6 book session">
|
||||
<div class="cover">
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-toggle="modal" data-target="#bookDetailsModal" data-remote="false"{% endif %}>
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-bs-toggle="modal" data-bs-target="#bookDetailsModal"{% endif %}>
|
||||
<span class="img" title="{{entry.Books.title}}" >
|
||||
{{ image.book_cover(entry.Books) }}
|
||||
{% if entry[2] == True %}<span class="badge read glyphicon glyphicon-ok"></span>{% endif %}
|
||||
{% if entry[2] == True %}<span class="badge read bi bi-check"></span>{% endif %}
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-toggle="modal" data-target="#bookDetailsModal" data-remote="false"{% endif %}>
|
||||
<a href="{{ url_for('web.show_book', book_id=entry.Books.id) }}" {% if simple==false %}data-bs-toggle="modal" data-bs-target="#bookDetailsModal"{% endif %}>
|
||||
<p title="{{entry.Books.title}}" class="title">{{entry.Books.title|shortentitle}}</p>
|
||||
</a>
|
||||
<p class="author">
|
||||
@@ -87,10 +87,10 @@
|
||||
{% if entry.Books.ratings.__len__() > 0 %}
|
||||
<div class="rating">
|
||||
{% for number in range((entry.Books.ratings[0].rating/2)|int(2)) %}
|
||||
<span class="glyphicon glyphicon-star good"></span>
|
||||
<i class="bi bi-star-fill good"></i>
|
||||
{% if loop.last and loop.index < 5 %}
|
||||
{% for numer in range(5 - loop.index) %}
|
||||
<span class="glyphicon glyphicon-star-empty"></span>
|
||||
<i class="bi bi-star"></i>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{% extends theme("layout.html") %}
|
||||
{% block body %}
|
||||
<div class="discover">
|
||||
<span class="shelforder-icon glyphicon glyphicon-sort-by-attributes" aria-hidden="true"></span>
|
||||
<i class="shelforder-icon bi bi-sort-down" aria-hidden="true"></i>
|
||||
<h2>{{ title|replace(':', ' —')|replace("'", "") }}</h2>
|
||||
<div style="margin-left:20%; width:calc(80% - 30px);">
|
||||
<div>{{_('Drag to Rearrange Order')}}</div>
|
||||
@@ -10,14 +10,14 @@
|
||||
{% for entry in entries %}
|
||||
<div id="{{entry['Books']['id']}}" class="list-group-item">
|
||||
<div class="row">
|
||||
<div class="col-lg-2 col-sm-4 hidden-xs">
|
||||
<div class="col-lg-2 col-sm-4 d-none d-sm-block">
|
||||
{% if entry['visible'] %}
|
||||
<img title="{{entry['Books']['title']}}" class="cover-height" src="{{ url_for('web.get_cover', book_id=entry['Books']['id']) }}">
|
||||
{% else %}
|
||||
<img title="{{entry['Books']['title']}}" class="cover-height" src="{{ url_for('static', filename='generic_cover.jpg') }}">
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col-lg-10 col-sm-8 col-xs-12">
|
||||
<div class="col-lg-10 col-sm-8 col-12">
|
||||
{% if entry['visible'] %}
|
||||
{{entry['Books']['title']}}
|
||||
{% if entry['Books']['series']|length > 0 %}
|
||||
@@ -42,7 +42,7 @@
|
||||
</div>
|
||||
<div class="pull-right" style="display:flex; gap:10px; margin-top:30px; margin-bottom:60px;">
|
||||
<a href="{{ url_for('shelf.show_shelf', shelf_id=shelf.id) }}" id="shelf_back" class="btn btn-primary">{{_('Back')}}</a>
|
||||
<button onclick="sendData('{{ url_for('shelf.order_shelf', shelf_id=shelf.id) }}')" class="btn btn-default" id="ChangeOrder">{{_('Save')}}</button>
|
||||
<button onclick="sendData('{{ url_for('shelf.order_shelf', shelf_id=shelf.id) }}')" class="btn btn-outline-secondary" id="ChangeOrder">{{_('Save')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<link rel="icon" type="image/svg+xml" href="{{ url_for('static', filename='favicon.svg') }}"/>
|
||||
<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/libs/bootstrap5.min.css') }}" rel="stylesheet" media="screen">
|
||||
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet" media="screen">
|
||||
<link href="{{ url_for('static', filename='css/caliBlur.css') }}" rel="stylesheet" media="screen">
|
||||
<link href="{{ url_for('static', filename='css/caliBlur_override.css') }}" rel="stylesheet" media="screen">
|
||||
@@ -71,7 +71,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script src="{{ url_for('static', filename='js/libs/jquery.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/libs/bootstrap.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/libs/bootstrap5.bundle.min.js') }}"></script>
|
||||
{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</div>
|
||||
{% if ( current_user and current_user.role_passwd() or current_user.role_admin() ) and not content.role_anonymous() %}
|
||||
{% if current_user and current_user.role_admin() and not new_user and not profile and ( mail_configured and content.email if content.email != None ) %}
|
||||
<a class="btn btn-default postAction" id="resend_password" role="button" data-action="{{url_for('admin.reset_user_password', user_id = content.id) }}">{{_('Reset user Password')}}</a>
|
||||
<a class="btn btn-outline-secondary postAction" id="resend_password" role="button" data-action="{{url_for('admin.reset_user_password', user_id = content.id) }}">{{_('Reset user Password')}}</a>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
<label for="password">{{_('Password')}}</label>
|
||||
@@ -64,11 +64,11 @@
|
||||
{% if kobo_support and not new_user %}
|
||||
<label>{{ _('Kobo Sync Token')}}</label>
|
||||
<div class="form-group col">
|
||||
<a class="btn btn-default" id="config_create_kobo_token" style="margin-bottom: 10px;" data-toggle="modal" data-target="#modal_kobo_token" data-remote="false" href="{{ url_for('kobo_auth.generate_auth_token', user_id=content.id) }}">{{_('Create/View')}}</a>
|
||||
<a class="btn btn-outline-secondary" id="config_create_kobo_token" style="margin-bottom: 10px;" data-bs-toggle="modal" data-bs-target="#modal_kobo_token" href="{{ url_for('kobo_auth.generate_auth_token', user_id=content.id) }}">{{_('Create/View')}}</a>
|
||||
<div class="btn btn-danger" id="config_delete_kobo_token" style="margin-bottom: 10px;{% if not content.remote_auth_token.first() %} display: none;{% endif %}" data-value="{{ content.id }}" data-remote="false">{{_('Delete')}}</div>
|
||||
</div>
|
||||
<div class="form-group col">
|
||||
<div class="btn btn-default" id="kobo_full_sync" data-value="{% if current_user.role_admin() %}{{ content.id }}{% else %}0{% endif %}" {% if not content.remote_auth_token.first() %} style="display: none;" {% endif %}>{{_('Force full kobo sync')}}</div>
|
||||
<div class="btn btn-outline-secondary" id="kobo_full_sync" data-value="{% if current_user.role_admin() %}{{ content.id }}{% else %}0{% endif %}" {% if not content.remote_auth_token.first() %} style="display: none;" {% endif %}>{{_('Force full kobo sync')}}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="col-sm-6">
|
||||
@@ -139,8 +139,8 @@
|
||||
{% if ( current_user and current_user.role_admin() and not new_user ) and not simple %}
|
||||
<div class="col-sm-12">
|
||||
<div class="form-group clearfix">
|
||||
<a href="#" id="get_user_tags" class="btn btn-default" data-id="{{content.id}}" data-toggle="modal" data-target="#restrictModal">{{_('Add Allowed/Denied Tags')}}</a>
|
||||
<a href="#" id="get_user_column_values" data-id="{{content.id}}" class="btn btn-default" data-toggle="modal" data-target="#restrictModal">{{_('Add allowed/Denied Custom Column Values')}}</a>
|
||||
<a href="#" id="get_user_tags" class="btn btn-outline-secondary" data-id="{{content.id}}" data-bs-toggle="modal" data-bs-target="#restrictModal">{{_('Add Allowed/Denied Tags')}}</a>
|
||||
<a href="#" id="get_user_column_values" data-id="{{content.id}}" class="btn btn-outline-secondary" data-bs-toggle="modal" data-bs-target="#restrictModal">{{_('Add allowed/Denied Custom Column Values')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -151,9 +151,9 @@
|
||||
{% endif %}
|
||||
<div class="pull-right">
|
||||
{% if not profile %}
|
||||
<div class="btn btn-default" data-back="{{ url_for('admin.admin') }}" id="back">{{_('Cancel')}}</div>
|
||||
<div class="btn btn-outline-secondary" data-back="{{ url_for('admin.admin') }}" id="back">{{_('Cancel')}}</div>
|
||||
{% endif %}
|
||||
<div id="user_submit" class="btn btn-default">{{_('Save')}}</div>
|
||||
<div id="user_submit" class="btn btn-outline-secondary">{{_('Save')}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -163,12 +163,12 @@
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title" id="kobo_tokenModalLabel">{{_('Generate Kobo Auth URL')}}</h4>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{_('Close')}}"></button>
|
||||
</div>
|
||||
<div class="modal-body">...</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" id="kobo_close" class="btn btn-primary" data-dismiss="modal">{{_('Close')}}</button>
|
||||
<button type="button" id="kobo_close" class="btn btn-primary" data-bs-dismiss="modal">{{_('Close')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -232,20 +232,18 @@
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title text-center" id="metaModalLabel">{{_('Fetch Metadata')}}</h4>
|
||||
<form class="padded-bottom" id="meta-search">
|
||||
<div class="input-group">
|
||||
<label class="sr-only" for="keyword">{{_('Keyword')}}</label>
|
||||
<input type="text" class="form-control" id="keyword" name="keyword" placeholder="{{_("Search keyword")}}">
|
||||
<span class="input-group-btn">
|
||||
<button type="submit" class="btn btn-primary" id="do-search">{{_("Search")}}</button>
|
||||
</span>
|
||||
</div>
|
||||
</form>
|
||||
<div class="text-center"><strong>{{_('Click the cover to load metadata to the form')}}</strong></div>
|
||||
<h4 class="modal-title" id="metaModalLabel">{{_('Fetch Metadata')}}</h4>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{_('Close')}}"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="padded-bottom" id="meta-search">
|
||||
<div class="input-group">
|
||||
<label class="visually-hidden" for="keyword">{{_('Keyword')}}</label>
|
||||
<input type="text" class="form-control" id="keyword" name="keyword" placeholder="{{_("Search keyword")}}">
|
||||
<button type="submit" class="btn btn-primary" id="do-search">{{_("Search")}}</button>
|
||||
</div>
|
||||
</form>
|
||||
<div class="text-center padded-bottom"><strong>{{_('Click the cover to load metadata to the form')}}</strong></div>
|
||||
<div class="text-center padded-bottom" id="metadata_provider">
|
||||
</div>
|
||||
|
||||
@@ -263,25 +261,25 @@
|
||||
|
||||
{% block js %}
|
||||
<script type="text/template" id="template-book-result">
|
||||
<li class="media" data-related="<%- source.id %>">
|
||||
<img class="pull-left img-responsive"
|
||||
<li class="d-flex mb-3" data-related="<%- source.id %>">
|
||||
<img class="flex-shrink-0 img-fluid"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#metaModal"
|
||||
src="<%- cover || '{{ url_for('static', filename='img/academicpaper.svg') }}' %>"
|
||||
alt="Cover"
|
||||
>
|
||||
<div class="media-body">
|
||||
<h4 class="media-heading">
|
||||
<div class="flex-grow-1 ms-3">
|
||||
<h4 class="mb-1">
|
||||
<a class="meta_title" href="<%- url %>" target="_blank" rel="noopener"><%- title %></a>
|
||||
</h4>
|
||||
<p class="meta_author">{{_('Author')}}:<%- authors.join(" & ") %></p>
|
||||
<p class="meta_author mb-1">{{_('Author')}}:<%- authors.join(" & ") %></p>
|
||||
<% if (publisher) { %>
|
||||
<p class="meta_publisher">{{_('Publisher')}}:<%- publisher %></p>
|
||||
<p class="meta_publisher mb-1">{{_('Publisher')}}:<%- publisher %></p>
|
||||
<% } %>
|
||||
<% if (description) { %>
|
||||
<p class="meta_description">{{_('Description')}}: <%- description %></p>
|
||||
<p class="meta_description mb-1">{{_('Description')}}: <%- description %></p>
|
||||
<% } %>
|
||||
<p>{{_('Source')}}:
|
||||
<p class="mb-0">{{_('Source')}}:
|
||||
<a class="meta_source" href="<%- source.link %>" target="_blank" rel="noopener"><%- source.description %></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user