mirror of
https://github.com/janeczku/calibre-web
synced 2024-12-29 03:20:30 +00:00
Code cosmetics
This commit is contained in:
parent
6682b1ced1
commit
2d92818613
57
cps/admin.py
57
cps/admin.py
@ -253,23 +253,23 @@ def list_domain(allow):
|
||||
response.headers["Content-Type"] = "application/json; charset=utf-8"
|
||||
return response
|
||||
|
||||
@admi.route("/ajax/editrestriction/<int:type>", methods=['POST'])
|
||||
@admi.route("/ajax/editrestriction/<int:res_type>", methods=['POST'])
|
||||
@login_required
|
||||
@admin_required
|
||||
def edit_restriction(type):
|
||||
def edit_restriction(res_type):
|
||||
element = request.form.to_dict()
|
||||
if element['id'].startswith('a'):
|
||||
if type == 0: # Tags as template
|
||||
if res_type == 0: # Tags as template
|
||||
elementlist = config.list_allowed_tags()
|
||||
elementlist[int(element['id'][1:])]=element['Element']
|
||||
config.config_allowed_tags = ','.join(elementlist)
|
||||
config.save()
|
||||
if type == 1: # CustomC
|
||||
if res_type == 1: # CustomC
|
||||
elementlist = config.list_allowed_column_values()
|
||||
elementlist[int(element['id'][1:])]=element['Element']
|
||||
config.config_allowed_column_value = ','.join(elementlist)
|
||||
config.save()
|
||||
if type == 2: # Tags per user
|
||||
if res_type == 2: # Tags per user
|
||||
usr_id = os.path.split(request.referrer)[-1]
|
||||
if usr_id.isdigit() == True:
|
||||
usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
|
||||
@ -279,7 +279,7 @@ def edit_restriction(type):
|
||||
elementlist[int(element['id'][1:])]=element['Element']
|
||||
usr.allowed_tags = ','.join(elementlist)
|
||||
ub.session.commit()
|
||||
if type == 3: # CColumn per user
|
||||
if res_type == 3: # CColumn per user
|
||||
usr_id = os.path.split(request.referrer)[-1]
|
||||
if usr_id.isdigit() == True:
|
||||
usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
|
||||
@ -290,18 +290,17 @@ def edit_restriction(type):
|
||||
usr.allowed_column_value = ','.join(elementlist)
|
||||
ub.session.commit()
|
||||
if element['id'].startswith('d'):
|
||||
if type == 0: # Tags as template
|
||||
if res_type == 0: # Tags as template
|
||||
elementlist = config.list_denied_tags()
|
||||
elementlist[int(element['id'][1:])]=element['Element']
|
||||
config.config_denied_tags = ','.join(elementlist)
|
||||
config.save()
|
||||
if type == 1: # CustomC
|
||||
if res_type == 1: # CustomC
|
||||
elementlist = config.list_denied_column_values()
|
||||
elementlist[int(element['id'][1:])]=element['Element']
|
||||
config.config_denied_column_value = ','.join(elementlist)
|
||||
config.save()
|
||||
pass
|
||||
if type == 2: # Tags per user
|
||||
if res_type == 2: # Tags per user
|
||||
usr_id = os.path.split(request.referrer)[-1]
|
||||
if usr_id.isdigit() == True:
|
||||
usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
|
||||
@ -311,7 +310,7 @@ def edit_restriction(type):
|
||||
elementlist[int(element['id'][1:])]=element['Element']
|
||||
usr.denied_tags = ','.join(elementlist)
|
||||
ub.session.commit()
|
||||
if type == 3: # CColumn per user
|
||||
if res_type == 3: # CColumn per user
|
||||
usr_id = os.path.split(request.referrer)[-1]
|
||||
if usr_id.isdigit() == True:
|
||||
usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
|
||||
@ -339,26 +338,26 @@ def restriction_deletion(element, list_func):
|
||||
return ','.join(elementlist)
|
||||
|
||||
|
||||
@admi.route("/ajax/addrestriction/<int:type>", methods=['POST'])
|
||||
@admi.route("/ajax/addrestriction/<int:res_type>", methods=['POST'])
|
||||
@login_required
|
||||
@admin_required
|
||||
def add_restriction(type):
|
||||
def add_restriction(res_type):
|
||||
element = request.form.to_dict()
|
||||
if type == 0: # Tags as template
|
||||
if res_type == 0: # Tags as template
|
||||
if 'submit_allow' in element:
|
||||
config.config_allowed_tags = restriction_addition(element, config.list_allowed_tags)
|
||||
config.save()
|
||||
elif 'submit_deny' in element:
|
||||
config.config_denied_tags = restriction_addition(element, config.list_denied_tags)
|
||||
config.save()
|
||||
if type == 1: # CCustom as template
|
||||
if res_type == 1: # CCustom as template
|
||||
if 'submit_allow' in element:
|
||||
config.config_allowed_column_value = restriction_addition(element, config.list_denied_column_values)
|
||||
config.save()
|
||||
elif 'submit_deny' in element:
|
||||
config.config_denied_column_value = restriction_addition(element, config.list_allowed_column_values)
|
||||
config.save()
|
||||
if type == 2: # Tags per user
|
||||
if res_type == 2: # Tags per user
|
||||
usr_id = os.path.split(request.referrer)[-1]
|
||||
if usr_id.isdigit() == True:
|
||||
usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
|
||||
@ -370,7 +369,7 @@ def add_restriction(type):
|
||||
elif 'submit_deny' in element:
|
||||
usr.denied_tags = restriction_addition(element, usr.list_denied_tags)
|
||||
ub.session.commit()
|
||||
if type == 3: # CustomC per user
|
||||
if res_type == 3: # CustomC per user
|
||||
usr_id = os.path.split(request.referrer)[-1]
|
||||
if usr_id.isdigit() == True:
|
||||
usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
|
||||
@ -384,26 +383,26 @@ def add_restriction(type):
|
||||
ub.session.commit()
|
||||
return ""
|
||||
|
||||
@admi.route("/ajax/deleterestriction/<int:type>", methods=['POST'])
|
||||
@admi.route("/ajax/deleterestriction/<int:res_type>", methods=['POST'])
|
||||
@login_required
|
||||
@admin_required
|
||||
def delete_restriction(type):
|
||||
def delete_restriction(res_type):
|
||||
element = request.form.to_dict()
|
||||
if type == 0: # Tags as template
|
||||
if res_type == 0: # Tags as template
|
||||
if element['id'].startswith('a'):
|
||||
config.config_allowed_tags = restriction_deletion(element, config.list_allowed_tags)
|
||||
config.save()
|
||||
elif element['id'].startswith('d'):
|
||||
config.config_denied_tags = restriction_deletion(element, config.list_denied_tags)
|
||||
config.save()
|
||||
elif type == 1: # CustomC as template
|
||||
elif res_type == 1: # CustomC as template
|
||||
if element['id'].startswith('a'):
|
||||
config.config_allowed_column_value = restriction_deletion(element, config.list_allowed_column_values)
|
||||
config.save()
|
||||
elif element['id'].startswith('d'):
|
||||
config.config_denied_column_value = restriction_deletion(element, config.list_denied_column_values)
|
||||
config.save()
|
||||
elif type == 2: # Tags per user
|
||||
elif res_type == 2: # Tags per user
|
||||
usr_id = os.path.split(request.referrer)[-1]
|
||||
if usr_id.isdigit() == True:
|
||||
usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
|
||||
@ -415,7 +414,7 @@ def delete_restriction(type):
|
||||
elif element['id'].startswith('d'):
|
||||
usr.denied_tags = restriction_deletion(element, usr.list_denied_tags)
|
||||
ub.session.commit()
|
||||
elif type == 3: # Columns per user
|
||||
elif res_type == 3: # Columns per user
|
||||
usr_id = os.path.split(request.referrer)[-1]
|
||||
if usr_id.isdigit() == True: # select current user if admins are editing their own rights
|
||||
usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
|
||||
@ -431,23 +430,23 @@ def delete_restriction(type):
|
||||
|
||||
|
||||
#@admi.route("/ajax/listrestriction/<int:type>/<int:user_id>", defaults={'user_id': '0'})
|
||||
@admi.route("/ajax/listrestriction/<int:type>")
|
||||
@admi.route("/ajax/listrestriction/<int:res_type>")
|
||||
@login_required
|
||||
@admin_required
|
||||
def list_restriction(type):
|
||||
if type == 0: # Tags as template
|
||||
def list_restriction(res_type):
|
||||
if res_type == 0: # Tags as template
|
||||
restrict = [{'Element': x, 'type':_('Deny'), 'id': 'd'+str(i) }
|
||||
for i,x in enumerate(config.list_denied_tags()) if x != '' ]
|
||||
allow = [{'Element': x, 'type':_('Allow'), 'id': 'a'+str(i) }
|
||||
for i,x in enumerate(config.list_allowed_tags()) if x != '']
|
||||
json_dumps = restrict + allow
|
||||
elif type == 1: # CustomC as template
|
||||
elif res_type == 1: # CustomC as template
|
||||
restrict = [{'Element': x, 'type':_('Deny'), 'id': 'd'+str(i) }
|
||||
for i,x in enumerate(config.list_denied_column_values()) if x != '' ]
|
||||
allow = [{'Element': x, 'type':_('Allow'), 'id': 'a'+str(i) }
|
||||
for i,x in enumerate(config.list_allowed_column_values()) if x != '']
|
||||
json_dumps = restrict + allow
|
||||
elif type == 2: # Tags per user
|
||||
elif res_type == 2: # Tags per user
|
||||
usr_id = os.path.split(request.referrer)[-1]
|
||||
if usr_id.isdigit() == True:
|
||||
usr = ub.session.query(ub.User).filter(ub.User.id == usr_id).first()
|
||||
@ -458,7 +457,7 @@ def list_restriction(type):
|
||||
allow = [{'Element': x, 'type':_('Allow'), 'id': 'a'+str(i) }
|
||||
for i,x in enumerate(usr.list_allowed_tags()) if x != '']
|
||||
json_dumps = restrict + allow
|
||||
elif type == 3: # CustomC per user
|
||||
elif res_type == 3: # CustomC per user
|
||||
usr_id = os.path.split(request.referrer)[-1]
|
||||
if usr_id.isdigit() == True:
|
||||
usr = ub.session.query(ub.User).filter(ub.User.id==usr_id).first()
|
||||
|
@ -418,7 +418,7 @@ def dispose():
|
||||
except: pass
|
||||
if old_session.bind:
|
||||
try: old_session.bind.dispose()
|
||||
except: pass
|
||||
except Exception: pass
|
||||
|
||||
for attr in list(Books.__dict__.keys()):
|
||||
if attr.startswith("custom_column_"):
|
||||
|
@ -151,8 +151,6 @@ def check_send_to_kindle(entry):
|
||||
bookformats.append({'format':'Pdf','convert':0,'text':_('Send %(format)s to Kindle',format='Pdf')})
|
||||
if 'AZW' in ele.format:
|
||||
bookformats.append({'format':'Azw','convert':0,'text':_('Send %(format)s to Kindle',format='Azw')})
|
||||
'''if 'AZW3' in ele.format:
|
||||
bookformats.append({'format':'Azw3','convert':0,'text':_('Send %(format)s to Kindle',format='Azw3')})'''
|
||||
else:
|
||||
formats = list()
|
||||
for ele in iter(entry.data):
|
||||
@ -514,12 +512,9 @@ def save_cover_from_filestorage(filepath, saved_filename, img):
|
||||
return False, _(u"Failed to create path for cover")
|
||||
try:
|
||||
img.save(os.path.join(filepath, saved_filename))
|
||||
except IOError:
|
||||
log.error(u"Cover-file is not a valid image file")
|
||||
return False, _(u"Cover-file is not a valid image file")
|
||||
except OSError:
|
||||
log.error(u"Failed to store cover-file")
|
||||
return False, _(u"Failed to store cover-file")
|
||||
except (IOError, OSError):
|
||||
log.error(u"Cover-file is not a valid image file, or could not be stored")
|
||||
return False, _(u"Cover-file is not a valid image file, or could not be stored")
|
||||
return True, None
|
||||
|
||||
|
||||
|
10
cps/kobo.py
10
cps/kobo.py
@ -21,7 +21,6 @@ import sys
|
||||
import base64
|
||||
import os
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from time import gmtime, strftime
|
||||
try:
|
||||
from urllib import unquote
|
||||
@ -35,10 +34,9 @@ from flask import (
|
||||
jsonify,
|
||||
current_app,
|
||||
url_for,
|
||||
redirect,
|
||||
abort
|
||||
redirect
|
||||
)
|
||||
from flask_login import login_required
|
||||
|
||||
from werkzeug.datastructures import Headers
|
||||
from sqlalchemy import func
|
||||
import requests
|
||||
@ -59,8 +57,8 @@ log = logger.create()
|
||||
|
||||
def get_store_url_for_current_request():
|
||||
# Programmatically modify the current url to point to the official Kobo store
|
||||
base, sep, request_path_with_auth_token = request.full_path.rpartition("/kobo/")
|
||||
auth_token, sep, request_path = request_path_with_auth_token.rstrip("?").partition(
|
||||
__, __, request_path_with_auth_token = request.full_path.rpartition("/kobo/")
|
||||
__, __, request_path = request_path_with_auth_token.rstrip("?").partition(
|
||||
"/"
|
||||
)
|
||||
return KOBO_STOREAPI_URL + "/" + request_path
|
||||
|
@ -62,7 +62,6 @@ particular calls to non-Kobo specific endpoints such as the CalibreWeb book down
|
||||
from binascii import hexlify
|
||||
from datetime import datetime
|
||||
from os import urandom
|
||||
import os
|
||||
|
||||
from flask import g, Blueprint, url_for, abort, request
|
||||
from flask_login import login_user, login_required
|
||||
@ -82,7 +81,7 @@ log = logger.create()
|
||||
|
||||
def register_url_value_preprocessor(kobo):
|
||||
@kobo.url_value_preprocessor
|
||||
def pop_auth_token(endpoint, values):
|
||||
def pop_auth_token(__, values):
|
||||
g.auth_token = values.pop("auth_token")
|
||||
|
||||
|
||||
|
@ -4,7 +4,7 @@ body {
|
||||
overflow-y: auto;
|
||||
color: white;
|
||||
font-family: sans-serif;
|
||||
margin: 0px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#main {
|
||||
@ -13,7 +13,7 @@ body {
|
||||
}
|
||||
|
||||
.view {
|
||||
padding-top:0px;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
#sidebar a,
|
||||
@ -34,18 +34,18 @@ body {
|
||||
cursor: pointer;
|
||||
padding: 4px;
|
||||
|
||||
transition: all .2s ease;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
#sidebar a:hover,
|
||||
#sidebar a:focus {
|
||||
outline: none;
|
||||
box-shadow: 0px 2px 8px 1px black;
|
||||
box-shadow: 0 2px 8px 1px black;
|
||||
}
|
||||
|
||||
#sidebar a.active,
|
||||
#sidebar a.active img + span {
|
||||
background-color: #45B29D;
|
||||
background-color: #45B29D;
|
||||
}
|
||||
|
||||
#sidebar li img {
|
||||
@ -79,7 +79,6 @@ body {
|
||||
font-size: 10px;
|
||||
line-height: 10px;
|
||||
text-align: right;
|
||||
|
||||
transition: min-height 150ms ease-in-out;
|
||||
}
|
||||
|
||||
@ -92,18 +91,17 @@ body {
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
|
||||
transition: width 150ms ease-in-out;
|
||||
}
|
||||
|
||||
#progress .bar-load {
|
||||
color: #000;
|
||||
background-color: #CCC;
|
||||
background-color: #ccc;
|
||||
}
|
||||
|
||||
#progress .bar-read {
|
||||
color: #FFF;
|
||||
background-color: #45B29D;
|
||||
color: #fff;
|
||||
background-color: #45b29d;
|
||||
}
|
||||
|
||||
#progress .text {
|
||||
@ -152,7 +150,8 @@ body {
|
||||
max-width: 70%;
|
||||
}
|
||||
|
||||
th, td {
|
||||
th,
|
||||
td {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
@ -206,18 +205,17 @@ th {
|
||||
}
|
||||
|
||||
.dark-theme #titlebar {
|
||||
color: #DDD;
|
||||
color: #ddd;
|
||||
}
|
||||
|
||||
.dark-theme #titlebar a:active {
|
||||
color: #FFF;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.dark-theme #progress .bar-read {
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
|
||||
.dark-theme .overlay {
|
||||
background-color: rgba(0,0,0,0.8);
|
||||
background-color: rgba(0, 0, 0, 0.8);
|
||||
}
|
||||
|
@ -1,92 +1,92 @@
|
||||
.sm2-bar-ui {
|
||||
font-size: 20px;
|
||||
}
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.sm2-bar-ui.compact {
|
||||
max-width: 90%;
|
||||
}
|
||||
.sm2-bar-ui.compact {
|
||||
max-width: 90%;
|
||||
}
|
||||
|
||||
.sm2-progress .sm2-progress-ball {
|
||||
width: .5333em;
|
||||
height: 1.9333em;
|
||||
border-radius: 0em;
|
||||
}
|
||||
.sm2-progress .sm2-progress-ball {
|
||||
width: 0.5333em;
|
||||
height: 1.9333em;
|
||||
border-radius: 0em;
|
||||
}
|
||||
|
||||
.sm2-progress .sm2-progress-track {
|
||||
height: 0.15em;
|
||||
background: white;
|
||||
}
|
||||
.sm2-progress .sm2-progress-track {
|
||||
height: 0.15em;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.sm2-bar-ui .sm2-main-controls,
|
||||
.sm2-bar-ui .sm2-playlist-drawer {
|
||||
background-color: transparent;
|
||||
}
|
||||
.sm2-bar-ui .sm2-main-controls,
|
||||
.sm2-bar-ui .sm2-playlist-drawer {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.sm2-bar-ui .sm2-inline-texture {
|
||||
background: transparent;
|
||||
}
|
||||
.sm2-bar-ui .sm2-inline-texture {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.rating .glyphicon-star {
|
||||
color: gray;
|
||||
}
|
||||
.rating .glyphicon-star {
|
||||
color: gray;
|
||||
}
|
||||
|
||||
.rating .glyphicon-star.good {
|
||||
color: white;
|
||||
}
|
||||
.rating .glyphicon-star.good {
|
||||
color: white;
|
||||
}
|
||||
|
||||
body {
|
||||
overflow: hidden;
|
||||
background: #272B30;
|
||||
color: #aaa;
|
||||
}
|
||||
body {
|
||||
overflow: hidden;
|
||||
background: #272B30;
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
#main {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
#main {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#area {
|
||||
width: 80%;
|
||||
height: 80%;
|
||||
margin: 5% auto;
|
||||
max-width: 1250px;
|
||||
}
|
||||
#area {
|
||||
width: 80%;
|
||||
height: 80%;
|
||||
margin: 5% auto;
|
||||
max-width: 1250px;
|
||||
}
|
||||
|
||||
#area iframe {
|
||||
border: none;
|
||||
}
|
||||
#area iframe {
|
||||
border: none;
|
||||
}
|
||||
|
||||
#prev {
|
||||
left: 40px;
|
||||
}
|
||||
#prev {
|
||||
left: 40px;
|
||||
}
|
||||
|
||||
#next {
|
||||
right: 40px;
|
||||
}
|
||||
#next {
|
||||
right: 40px;
|
||||
}
|
||||
|
||||
xmp,
|
||||
pre,
|
||||
plaintext {
|
||||
display: block;
|
||||
font-family: -moz-fixed;
|
||||
white-space: pre;
|
||||
margin: 1em 0;
|
||||
}
|
||||
xmp,
|
||||
pre,
|
||||
plaintext {
|
||||
display: block;
|
||||
font-family: -moz-fixed;
|
||||
white-space: pre;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
#area {
|
||||
overflow: hidden;
|
||||
}
|
||||
#area {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
font-family: -moz-fixed;
|
||||
column-count: 2;
|
||||
-webkit-columns: 2;
|
||||
-moz-columns: 2;
|
||||
column-gap: 20px;
|
||||
-moz-column-gap: 20px;
|
||||
-webkit-column-gap: 20px;
|
||||
position: relative;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
font-family: -moz-fixed;
|
||||
column-count: 2;
|
||||
-webkit-columns: 2;
|
||||
-moz-columns: 2;
|
||||
column-gap: 20px;
|
||||
-moz-column-gap: 20px;
|
||||
-webkit-column-gap: 20px;
|
||||
position: relative;
|
||||
}
|
||||
|
@ -1,10 +1,11 @@
|
||||
@font-face {
|
||||
font-family: 'fontello';
|
||||
src: url('fonts/fontello.eot?60518104');
|
||||
src: url('fonts/fontello.eot?60518104#iefix') format('embedded-opentype'),
|
||||
url('fonts/fontello.woff?60518104') format('woff'),
|
||||
url('fonts/fontello.ttf?60518104') format('truetype'),
|
||||
url('fonts/fontello.svg?60518104#fontello') format('svg');
|
||||
src:
|
||||
url('fonts/fontello.eot?60518104#iefix') format('embedded-opentype'),
|
||||
url('fonts/fontello.woff?60518104') format('woff'),
|
||||
url('fonts/fontello.ttf?60518104') format('truetype'),
|
||||
url('fonts/fontello.svg?60518104#fontello') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@ -22,17 +23,15 @@ body {
|
||||
border-radius: 5px;
|
||||
background: #fff;
|
||||
overflow: hidden;
|
||||
-webkit-transition: -webkit-transform .4s, width .2s;
|
||||
-moz-transition: -webkit-transform .4s, width .2s;
|
||||
-ms-transition: -webkit-transform .4s, width .2s;
|
||||
|
||||
-moz-box-shadow: inset 0 0 50px rgba(0,0,0,.1);
|
||||
-webkit-box-shadow: inset 0 0 50px rgba(0,0,0,.1);
|
||||
-ms-box-shadow: inset 0 0 50px rgba(0,0,0,.1);
|
||||
box-shadow: inset 0 0 50px rgba(0,0,0,.1);
|
||||
-webkit-transition: -webkit-transform 0.4s, width 0.2s;
|
||||
-moz-transition: -webkit-transform 0.4s, width 0.2s;
|
||||
-ms-transition: -webkit-transform 0.4s, width 0.2s;
|
||||
-moz-box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.1);
|
||||
-webkit-box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.1);
|
||||
-ms-box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.1);
|
||||
box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
|
||||
#titlebar {
|
||||
height: 8%;
|
||||
min-height: 20px;
|
||||
@ -42,11 +41,11 @@ body {
|
||||
color: #4f4f4f;
|
||||
font-weight: 100;
|
||||
font-family: Georgia, "Times New Roman", Times, serif;
|
||||
opacity: .5;
|
||||
opacity: 0.5;
|
||||
text-align: center;
|
||||
-webkit-transition: opacity .5s;
|
||||
-moz-transition: opacity .5s;
|
||||
-ms-transition: opacity .5s;
|
||||
-webkit-transition: opacity 0.5s;
|
||||
-moz-transition: opacity 0.5s;
|
||||
-ms-transition: opacity 0.5s;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
@ -60,7 +59,7 @@ body {
|
||||
line-height: 20px;
|
||||
overflow: hidden;
|
||||
display: inline-block;
|
||||
opacity: .5;
|
||||
opacity: 0.5;
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
@ -70,35 +69,27 @@ body {
|
||||
}
|
||||
|
||||
#titlebar a:hover {
|
||||
opacity: .8;
|
||||
border: 1px rgba(0,0,0,.2) solid;
|
||||
opacity: 0.8;
|
||||
border: 1px rgba(0, 0, 0, 0.2) solid;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
#titlebar a:active {
|
||||
opacity: 1;
|
||||
color: rgba(0,0,0,.6);
|
||||
/* margin: 1px -1px -1px 1px; */
|
||||
-moz-box-shadow: inset 0 0 6px rgba(155,155,155,.8);
|
||||
-webkit-box-shadow: inset 0 0 6px rgba(155,155,155,.8);
|
||||
-ms-box-shadow: inset 0 0 6px rgba(155,155,155,.8);
|
||||
box-shadow: inset 0 0 6px rgba(155,155,155,.8);
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
-moz-box-shadow: inset 0 0 6px rgba(155, 155, 155, 0.8);
|
||||
-webkit-box-shadow: inset 0 0 6px rgba(155, 155, 155, 0.8);
|
||||
-ms-box-shadow: inset 0 0 6px rgba(155, 155, 155, 0.8);
|
||||
box-shadow: inset 0 0 6px rgba(155, 155, 155, 0.8);
|
||||
}
|
||||
|
||||
#book-title {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#title-seperator {
|
||||
display: none;
|
||||
}
|
||||
#book-title { font-weight: 600; }
|
||||
#title-seperator { display: none; }
|
||||
|
||||
#viewer {
|
||||
width: 80%;
|
||||
height: 80%;
|
||||
/* margin-left: 10%; */
|
||||
margin: 0 auto;
|
||||
/* max-width: 1250px; */
|
||||
z-index: 2;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
@ -108,14 +99,14 @@ body {
|
||||
border: none;
|
||||
}
|
||||
|
||||
#left,#prev {
|
||||
#left, #prev {
|
||||
left: 40px;
|
||||
padding-right:80px;
|
||||
padding-right: 80px;
|
||||
}
|
||||
|
||||
#right,#next {
|
||||
right: 40px;
|
||||
padding-left:80px;
|
||||
padding-left: 80px;
|
||||
}
|
||||
|
||||
.arrow {
|
||||
@ -148,24 +139,20 @@ body {
|
||||
#sidebar {
|
||||
background: #6b6b6b;
|
||||
position: absolute;
|
||||
/* left: -260px; */
|
||||
/* -webkit-transform: translate(-260px, 0);
|
||||
-moz-transform: translate(-260px, 0); */
|
||||
top: 0;
|
||||
min-width: 300px;
|
||||
width: 25%;
|
||||
height: 100%;
|
||||
-webkit-transition: -webkit-transform .5s;
|
||||
-moz-transition: -moz-transform .5s;
|
||||
-ms-transition: -moz-transform .5s;
|
||||
|
||||
-webkit-transition: -webkit-transform 0.5s;
|
||||
-moz-transition: -moz-transform 0.5s;
|
||||
-ms-transition: -moz-transform 0.5s;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#sidebar.open {
|
||||
/* left: 0; */
|
||||
/* -webkit-transform: translate(0, 0);
|
||||
-moz-transform: translate(0, 0); */
|
||||
/* left: 0; */
|
||||
/* -webkit-transform: translate(0, 0);
|
||||
-moz-transform: translate(0, 0); */
|
||||
}
|
||||
|
||||
#main.closed {
|
||||
@ -203,19 +190,13 @@ body {
|
||||
float: left;
|
||||
}
|
||||
|
||||
/* #opener #slider {
|
||||
width: 25px;
|
||||
} */
|
||||
|
||||
#metainfo {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
max-width: 80%;
|
||||
}
|
||||
|
||||
#title-controls {
|
||||
float: right;
|
||||
}
|
||||
#title-controls { float: right; }
|
||||
|
||||
#panels a {
|
||||
visibility: hidden;
|
||||
@ -227,13 +208,8 @@ body {
|
||||
margin-left: 6px;
|
||||
}
|
||||
|
||||
#panels a::before {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
#panels a:hover {
|
||||
color: #AAA;
|
||||
}
|
||||
#panels a::before { visibility: visible; }
|
||||
#panels a:hover { color: #AAA; }
|
||||
|
||||
#panels a:active {
|
||||
color: #AAA;
|
||||
@ -250,28 +226,11 @@ body {
|
||||
float: left;
|
||||
margin-left: 10px;
|
||||
margin-top: -1px;
|
||||
/*
|
||||
border-radius: 5px;
|
||||
background: #9b9b9b;
|
||||
float: left;
|
||||
margin-left: 5px;
|
||||
margin-top: -5px;
|
||||
padding: 3px 10px;
|
||||
color: #000;
|
||||
border: none;
|
||||
outline: none; */
|
||||
|
||||
}
|
||||
|
||||
input::-webkit-input-placeholder {
|
||||
color: #454545;
|
||||
}
|
||||
input:-moz-placeholder {
|
||||
color: #454545;
|
||||
}
|
||||
input:-ms-placeholder {
|
||||
color: #454545;
|
||||
}
|
||||
input::-webkit-input-placeholder { color: #454545; }
|
||||
input:-moz-placeholder { color: #454545; }
|
||||
input:-ms-placeholder { color: #454545; }
|
||||
|
||||
#divider {
|
||||
position: absolute;
|
||||
@ -312,8 +271,6 @@ input:-ms-placeholder {
|
||||
-ms-transition: visibility 0 ease .5s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#sidebar.open #tocView,
|
||||
#sidebar.open #bookmarksView {
|
||||
overflow-y: auto;
|
||||
@ -505,30 +462,30 @@ input:-ms-placeholder {
|
||||
}
|
||||
|
||||
#settingsPanel {
|
||||
display:none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#settingsPanel h3 {
|
||||
color:#f1f1f1;
|
||||
font-family:Georgia, "Times New Roman", Times, serif;
|
||||
margin-bottom:10px;
|
||||
color: #f1f1f1;
|
||||
font-family: Georgia, "Times New Roman", Times, serif;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#settingsPanel ul {
|
||||
margin-top:60px;
|
||||
list-style-type:none;
|
||||
margin-top: 60px;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
#settingsPanel li {
|
||||
font-size:1em;
|
||||
color:#f1f1f1;
|
||||
font-size: 1em;
|
||||
color: #f1f1f1;
|
||||
}
|
||||
|
||||
#settingsPanel .xsmall { font-size:x-small; }
|
||||
#settingsPanel .small { font-size:small; }
|
||||
#settingsPanel .medium { font-size:medium; }
|
||||
#settingsPanel .large { font-size:large; }
|
||||
#settingsPanel .xlarge { font-size:x-large; }
|
||||
#settingsPanel .xsmall { font-size: x-small; }
|
||||
#settingsPanel .small { font-size: small; }
|
||||
#settingsPanel .medium { font-size: medium; }
|
||||
#settingsPanel .large { font-size: large; }
|
||||
#settingsPanel .xlarge { font-size: x-large; }
|
||||
|
||||
.highlight { background-color: yellow }
|
||||
|
||||
@ -827,7 +784,7 @@ and (orientation : landscape)
|
||||
display: inline-block;
|
||||
text-decoration: inherit;
|
||||
width: 1em;
|
||||
margin-right: .2em;
|
||||
margin-right: 0.2em;
|
||||
text-align: center;
|
||||
/* opacity: .8; */
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* http://davidwalsh.name/css-tooltips */
|
||||
|
||||
/* base CSS element */
|
||||
.popup {
|
||||
background: #eee;
|
||||
@ -9,10 +10,8 @@
|
||||
position: fixed;
|
||||
max-width: 300px;
|
||||
font-size: 12px;
|
||||
|
||||
display: none;
|
||||
margin-left: 2px;
|
||||
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
@ -38,7 +37,7 @@
|
||||
}
|
||||
|
||||
/* below */
|
||||
.popup:before {
|
||||
.popup::before {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
border-bottom: 10px solid #eee;
|
||||
@ -51,7 +50,7 @@
|
||||
content: '';
|
||||
}
|
||||
|
||||
.popup:after {
|
||||
.popup::after {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
border-bottom: 9px solid #eee;
|
||||
@ -64,33 +63,31 @@
|
||||
}
|
||||
|
||||
/* above */
|
||||
.popup.above:before {
|
||||
.popup.above::before {
|
||||
border-bottom: none;
|
||||
border-top: 10px solid #eee;
|
||||
border-top-color: rgba(0, 0, 0, 0.2);
|
||||
top: 100%;
|
||||
}
|
||||
|
||||
.popup.above:after {
|
||||
.popup.above::after {
|
||||
border-bottom: none;
|
||||
border-top: 9px solid #eee;
|
||||
top: 100%;
|
||||
}
|
||||
|
||||
.popup.left:before,
|
||||
.popup.left:after
|
||||
{
|
||||
.popup.left::before,
|
||||
.popup.left::after {
|
||||
left: 20px;
|
||||
}
|
||||
|
||||
.popup.right:before,
|
||||
.popup.right:after
|
||||
{
|
||||
.popup.right::before,
|
||||
.popup.right::after {
|
||||
left: auto;
|
||||
right: 20px;
|
||||
}
|
||||
|
||||
|
||||
.popup.show, .popup.on {
|
||||
.popup.show,
|
||||
.popup.on {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
@ -1,97 +1,210 @@
|
||||
|
||||
.tooltip.bottom .tooltip-inner{font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding:3px 10px;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 4px 10px 0 rgba(0,0,0,.35);box-shadow:0 4px 10px 0 rgba(0,0,0,.35);opacity:1;white-space:nowrap;margin-top:-16px!important;line-height:1.71428571;color:#ddd}
|
||||
.tooltip.bottom .tooltip-inner {
|
||||
font-size: 13px;
|
||||
font-family: Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
padding: 3px 10px;border-radius: 4px;
|
||||
background-color: #fff;
|
||||
-webkit-box-shadow: 0 4px 10px 0 rgba(0,0,0,.35);
|
||||
box-shadow: 0 4px 10px 0 rgba(0,0,0,.35);
|
||||
opacity: 1;
|
||||
white-space: nowrap;
|
||||
margin-top: -16px!important;
|
||||
line-height: 1.71428571;
|
||||
color: #ddd;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Grand Hotel';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Grand Hotel'), local('GrandHotel-Regular'), url("fonts/GrandHotel-Regular.ttf") format('truetype');
|
||||
font-family: 'Grand Hotel';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Grand Hotel'), local('GrandHotel-Regular'), url("fonts/GrandHotel-Regular.ttf") format('truetype');
|
||||
}
|
||||
|
||||
html.http-error {
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.http-error body {
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
display: table;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
display: table;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.http-error body > div {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
body{background:#f2f2f2}body h2{font-weight:normal;color:#444}
|
||||
body { margin-bottom: 40px;}
|
||||
a{color: #45b29d} /*a:hover{color: #444;}*/
|
||||
.navigation .nav-head{text-transform:uppercase;color:#999;margin:20px 0}.navigation .nav-head:nth-child(1n+2){border-top:1px solid #ccc;padding-top:20px}
|
||||
.navigation li a{color:#444;text-decoration:none;display:block;padding:10px}.navigation li a:hover{background:rgba(153,153,153,0.4);border-radius:5px}
|
||||
.navigation li a span{margin-right:10px}
|
||||
.navigation .create-shelf{margin:30px 0;font-size:12px;text-align:center}.navigation .create-shelf a{color:#fff;background:#45b29d;padding:10px 20px;border-radius:5px;text-decoration:none}
|
||||
.container-fluid img{display:block;max-width:100%;height:auto}
|
||||
.container-fluid .discover{margin-bottom:50px}
|
||||
.container-fluid .new-books{border-top:1px solid #ccc}.container-fluid .new-books h2{margin:50px 0 0 0}
|
||||
.container-fluid .book{margin-top:20px}.container-fluid .book .cover{height:225px;position:relative}.container-fluid .book .cover img{border:1px solid #fff;/*border-radius:7px;*/box-sizeing:border-box;height:100%;bottom:0;position:absolute;-webkit-box-shadow: 0 5px 8px -6px #777;-moz-box-shadow: 0 5px 8px -6px #777;box-shadow: 0 5px 8px -6px #777;}
|
||||
.container-fluid .book .meta{margin-top:10px}.container-fluid .book .meta p{margin:0}
|
||||
.container-fluid .book .meta .title{font-weight:bold;font-size:15px;color:#444}
|
||||
.container-fluid .book .meta .author{font-size:12px;color:#999}
|
||||
.container-fluid .book .meta .rating{margin-top:5px}.rating .glyphicon-star{color:#999}.rating .glyphicon-star.good{color:#45b29d}
|
||||
body { background: #f2f2f2; }
|
||||
|
||||
.container-fluid .author .author-hidden, .container-fluid .author .author-hidden-divider {
|
||||
display: none;
|
||||
body h2 {
|
||||
font-weight: normal;
|
||||
color:#444;
|
||||
}
|
||||
|
||||
.navbar-brand{font-family: 'Grand Hotel', cursive; font-size: 35px; color: #45b29d !important;}
|
||||
.more-stuff{margin-top: 20px; padding-top: 20px; border-top: 1px solid #ccc}
|
||||
.more-stuff>li{margin-bottom: 10px;}
|
||||
.navbar-collapse.in .navbar-nav{margin: 0;}
|
||||
span.glyphicon.glyphicon-tags {padding-right: 5px;color: #999;vertical-align: text-top;}
|
||||
.book-meta {padding-bottom: 20px;}
|
||||
.book-meta .tags a {display: inline;}
|
||||
.book-meta .identifiers a {display: inline;}
|
||||
body { margin-bottom: 40px; }
|
||||
a { color: #45b29d; }
|
||||
|
||||
.navigation .nav-head {
|
||||
text-transform: uppercase;
|
||||
color: #999;
|
||||
margin: 20px 0
|
||||
}
|
||||
|
||||
.navigation .nav-head:nth-child(1n+2) {
|
||||
border-top: 1px solid #ccc;
|
||||
padding-top: 20px;
|
||||
}
|
||||
.navigation li a {
|
||||
color: #444;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.navigation li a:hover {
|
||||
background: rgba(153,153,153,0.4);
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.navigation li a span { margin-right: 10px; }
|
||||
|
||||
.navigation .create-shelf {
|
||||
margin: 30px 0;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.navigation .create-shelf a {
|
||||
color: #fff;
|
||||
background: #45b29d;
|
||||
padding: 10px 20px;
|
||||
border-radius: 5px;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.container-fluid img {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
height:auto;
|
||||
}
|
||||
|
||||
.container-fluid .discover{ margin-bottom: 50px; }
|
||||
.container-fluid .new-books { border-top: 1px solid #ccc; }
|
||||
.container-fluid .new-books h2 { margin: 50px 0 0 0; }
|
||||
.container-fluid .book { margin-top: 20px; }
|
||||
|
||||
.container-fluid .book .cover {
|
||||
height: 225px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.container-fluid .book .cover img {
|
||||
border: 1px solid #fff;
|
||||
box-sizeing: border-box;
|
||||
height:100%;
|
||||
bottom:0;
|
||||
position:absolute;
|
||||
-webkit-box-shadow: 0 5px 8px -6px #777;
|
||||
-moz-box-shadow: 0 5px 8px -6px #777;
|
||||
box-shadow: 0 5px 8px -6px #777;
|
||||
}
|
||||
|
||||
.container-fluid .book .meta { margin-top: 10px; }
|
||||
.container-fluid .book .meta p { margin: 0; }
|
||||
.container-fluid .book .meta .title { font-weight:bold; font-size: 15px;color: #444; }
|
||||
.container-fluid .book .meta .author { font-size: 12px;color:#999; }
|
||||
.container-fluid .book .meta .rating { margin-top: 5px; }
|
||||
.rating .glyphicon-star { color: #999; }
|
||||
.rating .glyphicon-star.good { color: #45b29d; }
|
||||
|
||||
.container-fluid .author .author-hidden, .container-fluid .author .author-hidden-divider { display: none; }
|
||||
|
||||
.navbar-brand {
|
||||
font-family: 'Grand Hotel', cursive;
|
||||
font-size: 35px;
|
||||
color: #45b29d !important;
|
||||
}
|
||||
|
||||
.more-stuff {
|
||||
margin-top: 20px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.more-stuff>li { margin-bottom: 10px; }
|
||||
.navbar-collapse.in .navbar-nav { margin: 0; }
|
||||
|
||||
span.glyphicon.glyphicon-tags {
|
||||
padding-right: 5px;
|
||||
color: #999;
|
||||
vertical-align: text-top;
|
||||
}
|
||||
|
||||
.book-meta { padding-bottom: 20px; }
|
||||
.book-meta .tags a { display: inline; }
|
||||
.book-meta .identifiers a { display: inline; }
|
||||
|
||||
.container-fluid .single .cover img {
|
||||
border: 1px solid #fff;
|
||||
/*border-radius: 7px;*/
|
||||
box-sizeing: border-box;
|
||||
-webkit-box-shadow: 0 5px 8px -6px #777;
|
||||
-moz-box-shadow: 0 5px 8px -6px #777;
|
||||
box-shadow: 0 5px 8px -6px #777;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-toggle .icon-bar {background-color: #000;}
|
||||
.navbar-default .navbar-toggle {border-color: #000;}
|
||||
.cover { margin-bottom: 10px;}
|
||||
.navbar-default .navbar-toggle .icon-bar {background-color: #000; }
|
||||
.navbar-default .navbar-toggle {border-color: #000; }
|
||||
.cover { margin-bottom: 10px; }
|
||||
.cover-height { max-height: 100px;}
|
||||
|
||||
.col-sm-2 a .cover-small {
|
||||
margin:5px;
|
||||
max-height: 200px;
|
||||
}
|
||||
|
||||
.btn-file {position: relative; overflow: hidden;}
|
||||
.btn-file input[type=file] {position: absolute; top: 0; right: 0; min-width: 100%; min-height: 100%; font-size: 100px; text-align: right; filter: alpha(opacity=0); opacity: 0; outline: none; background: white; cursor: inherit; display: block;}
|
||||
|
||||
.btn-file input[type=file] {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
min-width: 100%;
|
||||
min-height: 100%;
|
||||
font-size: 100px;
|
||||
text-align: right;
|
||||
filter: alpha(opacity=0);
|
||||
opacity: 0;
|
||||
outline: none;
|
||||
background: white;
|
||||
cursor: inherit;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.btn-toolbar .btn,.discover .btn { margin-bottom: 5px; }
|
||||
.button-link {color:#fff;}
|
||||
.button-link {color: #fff; }
|
||||
.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary{ background-color: #1C5484; }
|
||||
.btn-primary.disabled, .btn-primary[disabled], fieldset[disabled] .btn-primary, .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active { background-color: #89B9E2; }
|
||||
.btn-toolbar>.btn+.btn, .btn-toolbar>.btn-group+.btn, .btn-toolbar>.btn+.btn-group, .btn-toolbar>.btn-group+.btn-group { margin-left:0px; }
|
||||
.panel-body {background-color: #f5f5f5;}
|
||||
.spinner {margin:0 41%;}
|
||||
.spinner2 {margin:0 41%;}
|
||||
|
||||
table .bg-dark-danger {background-color: #d9534f; color: #fff;}
|
||||
table .bg-dark-danger a {color: #fff;}
|
||||
table .bg-dark-danger:hover {background-color: #c9302c;}
|
||||
table .bg-primary:hover {background-color: #1C5484;}
|
||||
table .bg-primary a {color: #fff;}
|
||||
.panel-body {background-color: #f5f5f5; }
|
||||
.spinner {margin:0 41%; }
|
||||
.spinner2 {margin:0 41%; }
|
||||
|
||||
table .bg-dark-danger {background-color: #d9534f; color: #fff; }
|
||||
table .bg-dark-danger a {color: #fff; }
|
||||
table .bg-dark-danger:hover {background-color: #c9302c; }
|
||||
table .bg-primary:hover {background-color: #1C5484; }
|
||||
table .bg-primary a {color: #fff; }
|
||||
.block-label {display: block;}
|
||||
.fake-input {position: absolute; pointer-events: none; top: 0;}
|
||||
.fake-input {position: absolute; pointer-events: none; top: 0; }
|
||||
|
||||
input.pill { position: absolute; opacity: 0; }
|
||||
|
||||
input.pill + label {
|
||||
border: 2px solid #45b29d;
|
||||
border-radius: 15px;
|
||||
@ -103,52 +216,41 @@ input.pill + label {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
input.pill:checked + label {
|
||||
background-color: #45b29d;
|
||||
border-color: #fff;
|
||||
color: #fff;
|
||||
}
|
||||
input.pill:not(:checked) + label .glyphicon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
input.pill:not(:checked) + label .glyphicon { display: none; }
|
||||
|
||||
.author-bio img {margin: 0 1em 1em 0;}
|
||||
.author-link {display: inline-block; margin-top: 10px; width: 100px;}
|
||||
.author-link img {display: block; height: 100%;}
|
||||
.author-link {display: inline-block; margin-top: 10px; width: 100px; }
|
||||
.author-link img {display: block; height: 100%; }
|
||||
#remove-from-shelves .btn, #shelf-action-errors { margin-left: 5px; }
|
||||
|
||||
#remove-from-shelves .btn,
|
||||
#shelf-action-errors {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.tags_click, .serie_click, .language_click {margin-right: 5px;}
|
||||
.tags_click, .serie_click, .language_click {margin-right: 5px; }
|
||||
|
||||
#meta-info {
|
||||
height:600px;
|
||||
overflow-y:scroll;
|
||||
}
|
||||
.media-list {
|
||||
padding-right:15px;
|
||||
}
|
||||
.media-body p {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.media-list { padding-right:15px; }
|
||||
.media-body p { text-align: justify; }
|
||||
#meta-info img { max-height: 150px; max-width: 100px; cursor: pointer; }
|
||||
|
||||
.padded-bottom { margin-bottom: 15px; }
|
||||
|
||||
.upload-format-input-text {display: initial;}
|
||||
#btn-upload-format {display: none;}
|
||||
|
||||
.upload-cover-input-text {display: initial;}
|
||||
#btn-upload-cover {display: none;}
|
||||
|
||||
.panel-title > a { text-decoration: none;}
|
||||
.upload-cover-input-text {display: initial; }
|
||||
#btn-upload-cover {display: none; }
|
||||
.panel-title > a { text-decoration: none; }
|
||||
|
||||
.editable-buttons { display:inline-block; margin-left: 7px ;}
|
||||
.editable-input { display:inline-block;}
|
||||
.editable-cancel { margin-bottom: 0px !important; margin-left: 7px !important;}
|
||||
.editable-submit { margin-bottom: 0px !important;}
|
||||
.editable-input { display:inline-block; }
|
||||
.editable-cancel { margin-bottom: 0px !important; margin-left: 7px !important; }
|
||||
.editable-submit { margin-bottom: 0px !important; }
|
||||
|
||||
.filterheader { margin-bottom: 20px; }
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
@media (min-device-width: 768px) {
|
||||
.upload-modal-dialog {
|
||||
position: absolute;
|
||||
top: 45%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%) !important;
|
||||
}
|
||||
.upload-modal-dialog {
|
||||
position: absolute;
|
||||
top: 45%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%) !important;
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ $("#sort_name").click(function() {
|
||||
});*/
|
||||
// Find count of middle element
|
||||
if (count > 20) {
|
||||
var middle = parseInt(count / 2) + (count % 2);
|
||||
var middle = parseInt(count / 2, 10) + (count % 2);
|
||||
// search for the middle of all visibe elements
|
||||
$(".row").each(function() {
|
||||
index++;
|
||||
@ -146,7 +146,7 @@ $("#all").click(function() {
|
||||
// Find count of middle element
|
||||
var listItems = $("#list").children(".row");
|
||||
var listlength = listItems.length;
|
||||
var middle = parseInt(listlength / 2) + (listlength % 2);
|
||||
var middle = parseInt(listlength / 2, 10) + (listlength % 2);
|
||||
// go through all elements and make them visible
|
||||
listItems.each(function() {
|
||||
$(this).show();
|
||||
@ -178,7 +178,7 @@ $(".char").click(function() {
|
||||
});
|
||||
if (count > 20) {
|
||||
// Find count of middle element
|
||||
var middle = parseInt(count / 2) + (count % 2);
|
||||
var middle = parseInt(count / 2, 10) + (count % 2);
|
||||
// search for the middle of all visibe elements
|
||||
$(".row").each(function() {
|
||||
index++;
|
||||
|
@ -112,7 +112,7 @@ $(function() {
|
||||
return "";
|
||||
},
|
||||
url: path + "/../../ajax/listrestriction/" + type,
|
||||
rowStyle: function(row, index) {
|
||||
rowStyle: function(row) {
|
||||
// console.log('Reihe :' + row + " Index :" + index);
|
||||
if (row.id.charAt(0) === "a") {
|
||||
return {classes: "bg-primary"};
|
||||
@ -120,15 +120,15 @@ $(function() {
|
||||
return {classes: "bg-dark-danger"};
|
||||
}
|
||||
},
|
||||
onClickCell: function (field, value, row, $element) {
|
||||
if (field == 3) {
|
||||
onClickCell: function (field, value, row) {
|
||||
if (field === 3) {
|
||||
$.ajax ({
|
||||
type: "Post",
|
||||
data: "id=" + row.id + "&type=" + row.type + "&Element=" + row.Element,
|
||||
url: path + "/../../ajax/deleterestriction/" + type,
|
||||
async: true,
|
||||
timeout: 900,
|
||||
success:function(data) {
|
||||
success:function() {
|
||||
$.ajax({
|
||||
method:"get",
|
||||
url: path + "/../../ajax/listrestriction/" + type,
|
||||
@ -145,14 +145,14 @@ $(function() {
|
||||
striped: false
|
||||
});
|
||||
$("#restrict-elements-table").removeClass("table-hover");
|
||||
$("#restrict-elements-table").on("editable-save.bs.table", function (e, field, row, old, $el) {
|
||||
$("#restrict-elements-table").on("editable-save.bs.table", function (e, field, row) {
|
||||
$.ajax({
|
||||
url: path + "/../../ajax/editrestriction/" + type,
|
||||
type: "Post",
|
||||
data: row
|
||||
});
|
||||
});
|
||||
$("[id^=submit_]").click(function(event) {
|
||||
$("[id^=submit_]").click(function() {
|
||||
$(this)[0].blur();
|
||||
$.ajax({
|
||||
url: path + "/../../ajax/addrestriction/" + type,
|
||||
@ -196,7 +196,7 @@ $(function() {
|
||||
});
|
||||
|
||||
/* Function for deleting domain restrictions */
|
||||
function TableActions (value, row, index) {
|
||||
function TableActions (value, row) {
|
||||
return [
|
||||
"<a class=\"danger remove\" data-toggle=\"modal\" data-target=\"#DeleteDomain\" data-domain-id=\"" + row.id
|
||||
+ "\" title=\"Remove\">",
|
||||
@ -206,7 +206,7 @@ function TableActions (value, row, index) {
|
||||
}
|
||||
|
||||
/* Function for deleting domain restrictions */
|
||||
function RestrictionActions (value, row, index) {
|
||||
function RestrictionActions (value, row) {
|
||||
return [
|
||||
"<div class=\"danger remove\" data-restriction-id=\"" + row.id + "\" title=\"Remove\">",
|
||||
"<i class=\"glyphicon glyphicon-trash\"></i>",
|
||||
|
11
cps/ub.py
11
cps/ub.py
@ -415,11 +415,6 @@ def migrate_Database(session):
|
||||
'side_autor': constants.SIDEBAR_AUTHOR,
|
||||
'detail_random': constants.DETAIL_RANDOM})
|
||||
session.commit()
|
||||
'''try:
|
||||
session.query(exists().where(User.mature_content)).scalar()
|
||||
except exc.OperationalError:
|
||||
conn = engine.connect()
|
||||
conn.execute("ALTER TABLE user ADD column `mature_content` INTEGER DEFAULT 1")'''
|
||||
try:
|
||||
session.query(exists().where(User.denied_tags)).scalar()
|
||||
except exc.OperationalError: # Database is not compatible, some columns are missing
|
||||
@ -497,7 +492,7 @@ def create_anonymous_user(session):
|
||||
session.add(user)
|
||||
try:
|
||||
session.commit()
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
session.rollback()
|
||||
|
||||
|
||||
@ -544,7 +539,7 @@ def dispose():
|
||||
session = None
|
||||
if old_session:
|
||||
try: old_session.close()
|
||||
except: pass
|
||||
except Exception: pass
|
||||
if old_session.bind:
|
||||
try: old_session.bind.dispose()
|
||||
except: pass
|
||||
except Exception: pass
|
||||
|
@ -38,7 +38,7 @@ from flask import render_template, request, redirect, send_from_directory, make_
|
||||
from flask_babel import gettext as _
|
||||
from flask_login import login_user, logout_user, login_required, current_user
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.sql.expression import text, func, true, false, not_, and_, exists, or_
|
||||
from sqlalchemy.sql.expression import text, func, true, false, not_, and_, or_
|
||||
from werkzeug.exceptions import default_exceptions
|
||||
from werkzeug.datastructures import Headers
|
||||
from werkzeug.security import generate_password_hash, check_password_hash
|
||||
@ -1274,16 +1274,11 @@ def login():
|
||||
log.info('Login failed for user "%s" IP-adress: %s', form['username'], ipAdress)
|
||||
flash(_(u"Wrong Username or Password"), category="error")
|
||||
|
||||
if feature_support['oauth']:
|
||||
oauth_status = get_oauth_status()
|
||||
else:
|
||||
oauth_status = None
|
||||
next_url = url_for('web.index')
|
||||
return render_title_template('login.html',
|
||||
title=_(u"login"),
|
||||
next_url=next_url,
|
||||
config=config,
|
||||
# oauth_status=oauth_status,
|
||||
oauth_check=oauth_check,
|
||||
mail=config.get_mail_server_configured(), page="login")
|
||||
|
||||
|
@ -300,11 +300,6 @@ class WorkerThread(threading.Thread):
|
||||
# check which converter to use kindlegen is "1"
|
||||
if format_old_ext == '.epub' and format_new_ext == '.mobi':
|
||||
if config.config_ebookconverter == 1:
|
||||
'''if os.name == 'nt':
|
||||
command = config.config_converterpath + u' "' + file_path + u'.epub"'
|
||||
if sys.version_info < (3, 0):
|
||||
command = command.encode(sys.getfilesystemencoding())
|
||||
else:'''
|
||||
command = [config.config_converterpath, file_path + u'.epub']
|
||||
quotes = [1]
|
||||
if config.config_ebookconverter == 2:
|
||||
@ -314,12 +309,6 @@ class WorkerThread(threading.Thread):
|
||||
# windows py 3.x no encode and as string with quotes empty element for parameters is okay
|
||||
# separate handling for windows and linux
|
||||
quotes = [1,2]
|
||||
'''if os.name == 'nt':
|
||||
command = config.config_converterpath + u' "' + file_path + format_old_ext + u'" "' + \
|
||||
file_path + format_new_ext + u'" ' + config.config_calibre
|
||||
if sys.version_info < (3, 0):
|
||||
command = command.encode(sys.getfilesystemencoding())
|
||||
else:'''
|
||||
command = [config.config_converterpath, (file_path + format_old_ext),
|
||||
(file_path + format_new_ext)]
|
||||
quotes_index = 3
|
||||
|
Loading…
Reference in New Issue
Block a user