diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..353145117 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,39 @@ +--- +name: Bug/Problem report +about: Create a report to help us improve Calibre-Web +title: '' +labels: '' +assignees: '' + +--- + + +**Describe the bug/problem** +A clear and concise description of what the bug is. If you are asking for support, please check our [Wiki](https://github.com/janeczku/calibre-web/wiki) if your question is already answered there. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Logfile** +Add content of calibre-web.log file or the relevant error, try to reproduce your problem with "debug" log-level to get more output. + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Environment (please complete the following information):** + - OS: [e.g. Windows 10/Raspberry Pi OS] + - Python version: [e.g. python2.7] + - Calibre-Web version: [e.g. 0.6.8 or 087c4c59 (git rev-parse --short HEAD)]: + - Docker container: [None/Technosoft2000/Linuxuser]: + - Special Hardware: [e.g. Rasperry Pi Zero] + - Browser: [e.g. Chrome 83.0.4103.97, Safari 13.3.7, Firefox 68.0.1 ESR] + +**Additional context** +Add any other context about the problem here. [e.g. access via reverse proxy, database background sync, special database location] diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..6b2b9afcd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,22 @@ +--- +name: Feature request +about: Suggest an idea for Calibre-Web +title: '' +labels: '' +assignees: '' + +--- + + + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.gitignore b/.gitignore index 0ce147573..f06dcd446 100644 --- a/.gitignore +++ b/.gitignore @@ -7,9 +7,11 @@ __pycache__/ # Distribution / packaging .Python env/ +venv/ eggs/ dist/ build/ +vendor/ .eggs/ *.egg-info/ .installed.cfg @@ -19,16 +21,12 @@ build/ # calibre-web *.db *.log -config.ini -cps/static/[0-9]* .idea/ *.bak *.log.* -tags settings.yaml gdrive_credentials - -vendor client_secrets.json + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..ce2bd7803 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,46 @@ +## How to contribute to Calibre-Web + +First of all, we would like to thank you for reading this text. We are happy you are willing to contribute to Calibre-Web. + +### **General** + +**Communication language** is English. Google translated texts are not as bad as you might think, they are usually understandable, so don't worry if you generate your post that way. + +**Calibre-Web** is not **Calibre**. If you are having a question regarding Calibre please post this at their [repository](https://github.com/kovidgoyal/calibre). + +**Docker-Containers** of Calibre-Web are maintained by different persons than the people who drive Calibre-Web. If we come to the conclusion during our analysis that the problem is related to Docker, we might ask you to open a new issue at the repository of the Docker Container. + +If you are having **Basic Installation Problems** with python or its dependencies, please consider using your favorite search engine to find a solution. In case you can't find a solution, we are happy to help you. + +We can offer only very limited support regarding configuration of **Reverse-Proxy Installations**, **OPDS-Reader** or other programs in combination with Calibre-Web. + +### **Translation** + +Some of the user languages in Calibre-Web having missing translations. We are happy to add the missing texts if you translate them. Create a Pull Request, create an issue with the .po file attached, or write an email to "ozzie.fernandez.isaacs@googlemail.com" with attached translation file. To display all book languages in your native language an additional file is used (iso_language_names.py). The content of this file is auto-generated with the corresponding translations of Calibre, please do not edit this file on your own. + +### **Documentation** + +The Calibre-Web documentation is hosted in the Github [Wiki](https://github.com/janeczku/calibre-web/wiki). The Wiki is open to everybody, if you find a problem, feel free to correct it. If information is missing, you are welcome to add it. The content will be reviewed time by time. Please try to be consistent with the form with the other Wiki pages (e.g. the project name is Calibre-Web with 2 capital letters and a dash in between). + +### **Reporting a bug** + +Do not open up a GitHub issue if the bug is a **security vulnerability** in Calibre-Web. Instead, please write an email to "ozzie.fernandez.isaacs@googlemail.com". + +Ensure the ***bug was not already reported** by searching on GitHub under [Issues](https://github.com/janeczku/calibre-web/issues). Please also check if a solution for your problem can be found in the [wiki](https://github.com/janeczku/calibre-web/wiki). + +If you're unable to find an **open issue** addressing the problem, open a [new one](https://github.com/janeczku/calibre-web/issues/new?assignees=&labels=&template=bug_report.md&title=). Be sure to include a **title** and **clear description**, as much relevant information as possible, the **issue form** helps you providing the right information. Deleting the form and just pasting the stack trace doesn't speed up fixing the problem. If your issue could be resolved, consider closing the issue. + +### **Feature Request** + +If there is a feature missing in Calibre-Web and you can't find a feature request in the [Issues](https://github.com/janeczku/calibre-web/issues) section, you could create a [feature request](https://github.com/janeczku/calibre-web/issues/new?assignees=&labels=&template=feature_request.md&title=). +We will not extend Calibre-Web with any more login abilities or add further files storages, or file syncing ability. Furthermore Calibre-Web is made for home usage for company in-house usage, so requests regarding any sorts of social interaction capability, payment routines, search engine or web site analytics integration will not be implemented. + +### **Contributing code to Calibre-Web** + +Open a new GitHub pull request with the patch. Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable. + +In case your code enhances features of Calibre-Web: Create your pull request for the development branch if your enhancement consists of more than some lines of code in a local section of Calibre-Webs code. This makes it easier to test it and check all implication before it's made public. + +Please check if your code runs on Python 2.7 (still necessary in 2020) and mainly on python 3. If possible and the feature is related to operating system functions, try to check it on Windows and Linux. +Calibre-Web is automatically tested on Linux in combination with python 3.7. The code for testing is in a [separate repo](https://github.com/OzzieIsaacs/calibre-web-test) on Github. It uses unit tests and performs real system tests with selenium; it would be great if you could consider also writing some tests. +A static code analysis is done by Codacy, but it's partly broken and doesn't run automatically. You could check your code with ESLint before contributing, a configuration file can be found in the projects root folder. diff --git a/README.md b/README.md index 5f7747093..4ee209f85 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d - full graphical setup - User management with fine-grained per-user permissions - Admin interface -- User Interface in dutch, english, french, german, hungarian, italian, japanese, khmer, polish, russian, simplified chinese, spanish, swedish, ukrainian +- User Interface in czech, dutch, english, finnish, french, german, greek, hungarian, italian, japanese, khmer, polish, russian, simplified chinese, spanish, swedish, turkish, ukrainian - OPDS feed for eBook reader apps - Filter and search by titles, authors, tags, series and language - Create a custom book collection (shelves) @@ -21,16 +21,18 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d - Restrict eBook download to logged-in users - Support for public user registration - Send eBooks to Kindle devices with the click of a button +- Sync your Kobo devices through Calibre-Web with your Calibre library - Support for reading eBooks directly in the browser (.txt, .epub, .pdf, .cbr, .cbt, .cbz) -- Upload new books in many formats -- Support for Calibre custom columns -- Ability to hide content based on categories for certain users +- Upload new books in many formats, including audio formats (.mp3, .m4a, .m4b) +- Support for Calibre Custom Columns +- Ability to hide content based on categories and Custom Column content per user - Self-update capability - "Magic Link" login to make it easy to log on eReaders +- Login via LDAP, google/github oauth and via proxy authentication ## Quick start -1. Install dependencies by running `pip install --target vendor -r requirements.txt`. +1. Install dependencies by running `pip3 install --target vendor -r requirements.txt` (python3.x) or `pip install --target vendor -r requirements.txt` (python2.7). 2. Execute the command: `python cps.py` (or `nohup python cps.py` - recommended if you want to exit the terminal window) 3. Point your browser to `http://localhost:8083` or `http://localhost:8083/opds` for the OPDS catalog 4. Set `Location of Calibre database` to the path of the folder where your Calibre library (metadata.db) lives, push "submit" button\ @@ -46,29 +48,27 @@ Please note that running the above install command can fail on some versions of ## Requirements -Python 2.7+, python 3.x+ +python 3.x+, (Python 2.7+) Optionally, to enable on-the-fly conversion from one ebook format to another when using the send-to-kindle feature, or during editing of ebooks metadata: [Download and install](https://calibre-ebook.com/download) the Calibre desktop program for your platform and enter the folder including program name (normally /opt/calibre/ebook-convert, or C:\Program Files\calibre\ebook-convert.exe) in the field "calibre's converter tool" on the setup page. -\*** DEPRECATED \*** Support will be removed in future releases - -[Download](http://www.amazon.com/gp/feature.html?docId=1000765211) Amazon's KindleGen tool for your platform and place the binary named `kindlegen` in the `vendor` folder. +[Download](https://github.com/pgaskin/kepubify/releases/latest) Kepubify tool for your platform and place the binary starting with `kepubify` in Linux: `\opt\kepubify` Windows: `C:\Program Files\kepubify`. ## Docker Images Pre-built Docker images are available in these Docker Hub repositories: #### **Technosoft2000 - x64** -+ Docker Hub - [https://hub.docker.com/r/technosoft2000/calibre-web/](https://hub.docker.com/r/technosoft2000/calibre-web/) ++ Docker Hub - [https://hub.docker.com/r/technosoft2000/calibre-web](https://hub.docker.com/r/technosoft2000/calibre-web) + Github - [https://github.com/Technosoft2000/docker-calibre-web](https://github.com/Technosoft2000/docker-calibre-web) Includes the Calibre `ebook-convert` binary. + The "path to convertertool" should be set to `/opt/calibre/ebook-convert` #### **LinuxServer - x64, armhf, aarch64** -+ Docker Hub - [https://hub.docker.com/r/linuxserver/calibre-web/](https://hub.docker.com/r/linuxserver/calibre-web/) ++ Docker Hub - [https://hub.docker.com/r/linuxserver/calibre-web](https://hub.docker.com/r/linuxserver/calibre-web) + Github - [https://github.com/linuxserver/docker-calibre-web](https://github.com/linuxserver/docker-calibre-web) + Github - (Optional Calibre layer) - [https://github.com/linuxserver/docker-calibre-web/tree/calibre](https://github.com/linuxserver/docker-calibre-web/tree/calibre) @@ -83,3 +83,7 @@ Pre-built Docker images are available in these Docker Hub repositories: # Wiki For further information, How To's and FAQ please check the [Wiki](https://github.com/janeczku/calibre-web/wiki) + +# Contributing to Calibre-Web + +Please have a look at our [Contributing Guidelines](https://github.com/janeczku/calibre-web/blob/master/CONTRIBUTING.md) diff --git a/cps.py b/cps.py index ca7d7230b..20aa9cac8 100755 --- a/cps.py +++ b/cps.py @@ -31,7 +31,7 @@ else: sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'vendor')) -from cps import create_app +from cps import create_app, config from cps import web_server from cps.opds import opds from cps.web import web @@ -41,6 +41,14 @@ from cps.shelf import shelf from cps.admin import admi from cps.gdrive import gdrive from cps.editbooks import editbook + +try: + from cps.kobo import kobo, get_kobo_activated + from cps.kobo_auth import kobo_auth + kobo_available = get_kobo_activated() +except ImportError: + kobo_available = False + try: from cps.oauth_bb import oauth oauth_available = True @@ -56,8 +64,12 @@ def main(): app.register_blueprint(about) app.register_blueprint(shelf) app.register_blueprint(admi) - app.register_blueprint(gdrive) + if config.config_use_google_drive: + app.register_blueprint(gdrive) app.register_blueprint(editbook) + if kobo_available: + app.register_blueprint(kobo) + app.register_blueprint(kobo_auth) if oauth_available: app.register_blueprint(oauth) success = web_server.start() diff --git a/cps/__init__.py b/cps/__init__.py old mode 100755 new mode 100644 index abcc4cbb4..03945b576 --- a/cps/__init__.py +++ b/cps/__init__.py @@ -33,7 +33,7 @@ from flask_login import LoginManager from flask_babel import Babel from flask_principal import Principal -from . import logger, cache_buster, cli, config_sql, ub, db, services +from . import config_sql, logger, cache_buster, cli, ub, db from .reverseproxy import ReverseProxied from .server import WebServer @@ -57,17 +57,22 @@ mimetypes.add_type('application/ogg', '.ogg') mimetypes.add_type('application/ogg', '.oga') app = Flask(__name__) +app.config.update( + SESSION_COOKIE_HTTPONLY=True, + SESSION_COOKIE_SAMESITE='Lax', + REMEMBER_COOKIE_SAMESITE='Lax', # will be available in flask-login 0.5.1 earliest +) + lm = LoginManager() lm.login_view = 'web.login' lm.anonymous_user = ub.Anonymous - +lm.session_protection = 'strong' ub.init_db(cli.settingspath) # pylint: disable=no-member config = config_sql.load_configuration(ub.session) -searched_ids = {} web_server = WebServer() babel = Babel() @@ -75,6 +80,11 @@ _BABEL_TRANSLATIONS = set() log = logger.create() +from . import services + +db.CalibreDB.setup_db(config, cli.settingspath) + +calibre_db = db.CalibreDB() def create_app(): app.wsgi_app = ReverseProxied(app.wsgi_app) @@ -82,17 +92,16 @@ def create_app(): if sys.version_info < (3, 0): app.static_folder = app.static_folder.decode('utf-8') app.root_path = app.root_path.decode('utf-8') - app.instance_path = app.instance_path .decode('utf-8') + app.instance_path = app.instance_path.decode('utf-8') cache_buster.init_cache_busting(app) log.info('Starting Calibre Web...') Principal(app) lm.init_app(app) - app.secret_key = os.getenv('SECRET_KEY', 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT') + app.secret_key = os.getenv('SECRET_KEY', config_sql.get_flask_session_key(ub.session)) web_server.init_app(app, config) - db.setup_db(config) babel.init_app(app) _BABEL_TRANSLATIONS.update(str(item) for item in babel.list_translations()) @@ -116,14 +125,13 @@ def get_locale(): if user.nickname != 'Guest': # if the account is the guest account bypass the config lang settings return user.locale - preferred = set() + preferred = list() if request.accept_languages: for x in request.accept_languages.values(): try: - preferred.add(str(LC.parse(x.replace('-', '_')))) + preferred.append(str(LC.parse(x.replace('-', '_')))) except (UnknownLocaleError, ValueError) as e: - log.warning('Could not parse locale "%s": %s', x, e) - # preferred.append('en') + log.debug('Could not parse locale "%s": %s', x, e) return negotiate_locale(preferred or ['en'], _BABEL_TRANSLATIONS) @@ -135,6 +143,4 @@ def get_timezone(): from .updater import Updater updater_thread = Updater() - - -__all__ = ['app'] +updater_thread.start() diff --git a/cps/about.py b/cps/about.py index 630243f4e..f9c58738c 100644 --- a/cps/about.py +++ b/cps/about.py @@ -22,6 +22,7 @@ from __future__ import division, print_function, unicode_literals import sys +import platform import sqlite3 from collections import OrderedDict @@ -29,7 +30,7 @@ import babel, pytz, requests, sqlalchemy import werkzeug, flask, flask_login, flask_principal, jinja2 from flask_babel import gettext as _ -from . import db, converter, uploader, server, isoLanguages +from . import db, calibre_db, converter, uploader, server, isoLanguages, constants from .web import render_title_template try: from flask_login import __version__ as flask_loginVersion @@ -42,13 +43,22 @@ try: except ImportError: unidecode_version = _(u'not installed') +try: + from flask_dance import __version__ as flask_danceVersion +except ImportError: + flask_danceVersion = None + from . import services about = flask.Blueprint('about', __name__) _VERSIONS = OrderedDict( + Platform = '{0[0]} {0[2]} {0[3]} {0[4]} {0[5]}'.format(platform.uname()), Python=sys.version, + Calibre_Web=constants.STABLE_VERSION['version'] + ' - ' + + constants.NIGHTLY_VERSION[0].replace('%','%%') + ' - ' + + constants.NIGHTLY_VERSION[1].replace('%','%%'), WebServer=server.VERSION, Flask=flask.__version__, Flask_Login=flask_loginVersion, @@ -63,19 +73,29 @@ _VERSIONS = OrderedDict( iso639=isoLanguages.__version__, pytz=pytz.__version__, Unidecode = unidecode_version, - Flask_SimpleLDAP = u'installed' if bool(services.ldap) else u'not installed', - Goodreads = u'installed' if bool(services.goodreads_support) else u'not installed', + Flask_SimpleLDAP = u'installed' if bool(services.ldap) else None, + python_LDAP = services.ldapVersion if bool(services.ldapVersion) else None, + Goodreads = u'installed' if bool(services.goodreads_support) else None, + jsonschema = services.SyncToken.__version__ if bool(services.SyncToken) else None, + flask_dance = flask_danceVersion ) _VERSIONS.update(uploader.get_versions()) +def collect_stats(): + _VERSIONS['ebook converter'] = _(converter.get_calibre_version()) + _VERSIONS['unrar'] = _(converter.get_unrar_version()) + _VERSIONS['kepubify'] = _(converter.get_kepubify_version()) + return _VERSIONS + @about.route("/stats") @flask_login.login_required def stats(): - counter = db.session.query(db.Books).count() - authors = db.session.query(db.Authors).count() - categorys = db.session.query(db.Tags).count() - series = db.session.query(db.Series).count() - _VERSIONS['ebook converter'] = _(converter.get_version()) - return render_title_template('stats.html', bookcounter=counter, authorcounter=authors, versions=_VERSIONS, + counter = calibre_db.session.query(db.Books).count() + authors = calibre_db.session.query(db.Authors).count() + categorys = calibre_db.session.query(db.Tags).count() + series = calibre_db.session.query(db.Series).count() + return render_title_template('stats.html', bookcounter=counter, authorcounter=authors, versions=collect_stats(), categorycounter=categorys, seriecounter=series, title=_(u"Statistics"), page="stat") + + diff --git a/cps/admin.py b/cps/admin.py index 1862dda8c..531d855d3 100644 --- a/cps/admin.py +++ b/cps/admin.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) @@ -23,6 +22,7 @@ from __future__ import division, print_function, unicode_literals import os +import re import base64 import json import time @@ -34,31 +34,35 @@ from flask import Blueprint, flash, redirect, url_for, abort, request, make_resp from flask_login import login_required, current_user, logout_user from flask_babel import gettext as _ from sqlalchemy import and_ -from sqlalchemy.exc import IntegrityError +from sqlalchemy.exc import IntegrityError, OperationalError, InvalidRequestError from sqlalchemy.sql.expression import func -from werkzeug.security import generate_password_hash from . import constants, logger, helper, services -from . import db, ub, web_server, get_locale, config, updater_thread, babel, gdriveutils -from .helper import speaking_language, check_valid_domain, send_test_mail, generate_random_password, send_registration_mail +from . import db, calibre_db, ub, web_server, get_locale, config, updater_thread, babel, gdriveutils +from .helper import check_valid_domain, send_test_mail, reset_password, generate_password_hash from .gdriveutils import is_gdrive_ready, gdrive_support -from .web import admin_required, render_title_template, before_request, unconfigured, login_required_if_no_ano +from .web import admin_required, render_title_template, before_request, unconfigured +from . import debug_info + +log = logger.create() feature_support = { - 'ldap': False, # bool(services.ldap), - 'goodreads': bool(services.goodreads_support) + 'ldap': bool(services.ldap), + 'goodreads': bool(services.goodreads_support), + 'kobo': bool(services.kobo) } -# try: -# import rarfile -# feature_support['rar'] = True -# except ImportError: -# feature_support['rar'] = False +try: + import rarfile + feature_support['rar'] = True +except (ImportError, SyntaxError): + feature_support['rar'] = False try: from .oauth_bb import oauth_check, oauthblueprints feature_support['oauth'] = True -except ImportError: +except ImportError as err: + log.debug('Cannot import Flask-Dance, login with Oauth will not work: %s', err) feature_support['oauth'] = False oauthblueprints = [] oauth_check = {} @@ -66,7 +70,7 @@ except ImportError: feature_support['gdrive'] = gdrive_support admi = Blueprint('admin', __name__) -log = logger.create() + @admi.route("/admin") @@ -80,12 +84,12 @@ def admin_forbidden(): @admin_required def shutdown(): task = int(request.args.get("parameter").strip()) + showtext = {} if task in (0, 1): # valid commandos received # close all database connections - db.dispose() + calibre_db.dispose() ub.dispose() - showtext = {} if task == 0: showtext['text'] = _(u'Server restarted, please reload page') else: @@ -96,10 +100,12 @@ def shutdown(): if task == 2: log.warning("reconnecting to calibre database") - db.setup_db(config) - return '{}' + calibre_db.reconnect_db(config, ub.app_DB_path) + showtext['text'] = _(u'Reconnect successful') + return json.dumps(showtext) - abort(404) + showtext['text'] = _(u'Unknown command') + return json.dumps(showtext), 400 @admi.route("/admin/view") @@ -126,7 +132,9 @@ def admin(): allUser = ub.session.query(ub.User).all() email_settings = config.get_mail_settings() + kobo_support = feature_support['kobo'] and config.config_kobo_sync return render_title_template("admin.html", allUser=allUser, email=email_settings, config=config, commit=commit, + feature_support=feature_support, kobo_support=kobo_support, title=_(u"Admin page"), page="admin") @@ -143,9 +151,12 @@ def configuration(): @login_required @admin_required def view_configuration(): - readColumn = db.session.query(db.Custom_Columns)\ - .filter(and_(db.Custom_Columns.datatype == 'bool',db.Custom_Columns.mark_for_delete == 0)).all() + readColumn = calibre_db.session.query(db.Custom_Columns)\ + .filter(and_(db.Custom_Columns.datatype == 'bool', db.Custom_Columns.mark_for_delete == 0)).all() + restrictColumns= calibre_db.session.query(db.Custom_Columns)\ + .filter(and_(db.Custom_Columns.datatype == 'text', db.Custom_Columns.mark_for_delete == 0)).all() return render_title_template("config_view_edit.html", conf=config, readColumns=readColumn, + restrictColumns=restrictColumns, title=_(u"UI Configuration"), page="uiconfig") @@ -153,7 +164,6 @@ def view_configuration(): @login_required @admin_required def update_view_configuration(): - reboot_required = False to_save = request.form.to_dict() _config_string = lambda x: config.set_from_dictionary(to_save, x, lambda y: y.strip() if y else y) @@ -161,57 +171,54 @@ def update_view_configuration(): _config_string("config_calibre_web_title") _config_string("config_columns_to_ignore") - _config_string("config_mature_content_tags") - reboot_required |= _config_string("config_title_regex") + if _config_string("config_title_regex"): + calibre_db.update_title_sort(config) _config_int("config_read_column") _config_int("config_theme") _config_int("config_random_books") _config_int("config_books_per_page") _config_int("config_authors_max") + _config_int("config_restricted_column") config.config_default_role = constants.selected_roles(to_save) config.config_default_role &= ~constants.ROLE_ANONYMOUS config.config_default_show = sum(int(k[5:]) for k in to_save if k.startswith('show_')) - if "Show_mature_content" in to_save: - config.config_default_show |= constants.MATURE_CONTENT + if "Show_detail_random" in to_save: + config.config_default_show |= constants.DETAIL_RANDOM config.save() flash(_(u"Calibre-Web configuration updated"), category="success") before_request() - if reboot_required: - db.dispose() - ub.dispose() - web_server.stop(True) return view_configuration() -@admi.route("/ajax/editdomain", methods=['POST']) +@admi.route("/ajax/editdomain/", methods=['POST']) @login_required @admin_required -def edit_domain(): +def edit_domain(allow): # POST /post # name: 'username', //name of field (column in db) # pk: 1 //primary key (record id) # value: 'superuser!' //new value vals = request.form.to_dict() answer = ub.session.query(ub.Registration).filter(ub.Registration.id == vals['pk']).first() - # domain_name = request.args.get('domain') answer.domain = vals['value'].replace('*', '%').replace('?', '_').lower() ub.session.commit() return "" -@admi.route("/ajax/adddomain", methods=['POST']) +@admi.route("/ajax/adddomain/", methods=['POST']) @login_required @admin_required -def add_domain(): +def add_domain(allow): domain_name = request.form.to_dict()['domainname'].replace('*', '%').replace('?', '_').lower() - check = ub.session.query(ub.Registration).filter(ub.Registration.domain == domain_name).first() + check = ub.session.query(ub.Registration).filter(ub.Registration.domain == domain_name)\ + .filter(ub.Registration.allow == allow).first() if not check: - new_domain = ub.Registration(domain=domain_name) + new_domain = ub.Registration(domain=domain_name, allow=allow) ub.session.add(new_domain) ub.session.commit() return "" @@ -225,24 +232,245 @@ def delete_domain(): ub.session.query(ub.Registration).filter(ub.Registration.id == domain_id).delete() ub.session.commit() # If last domain was deleted, add all domains by default - if not ub.session.query(ub.Registration).count(): - new_domain = ub.Registration(domain="%.%") + if not ub.session.query(ub.Registration).filter(ub.Registration.allow==1).count(): + new_domain = ub.Registration(domain="%.%",allow=1) ub.session.add(new_domain) ub.session.commit() return "" -@admi.route("/ajax/domainlist") +@admi.route("/ajax/domainlist/") @login_required @admin_required -def list_domain(): - answer = ub.session.query(ub.Registration).all() +def list_domain(allow): + answer = ub.session.query(ub.Registration).filter(ub.Registration.allow == allow).all() json_dumps = json.dumps([{"domain": r.domain.replace('%', '*').replace('_', '?'), "id": r.id} for r in answer]) js = json.dumps(json_dumps.replace('"', "'")).lstrip('"').strip('"') response = make_response(js.replace("'", '"')) response.headers["Content-Type"] = "application/json; charset=utf-8" return response +@admi.route("/ajax/editrestriction/", methods=['POST']) +@login_required +@admin_required +def edit_restriction(res_type): + element = request.form.to_dict() + if element['id'].startswith('a'): + 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 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 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() + else: + usr = current_user + elementlist = usr.list_allowed_tags() + elementlist[int(element['id'][1:])]=element['Element'] + usr.allowed_tags = ','.join(elementlist) + ub.session.commit() + 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() + else: + usr = current_user + elementlist = usr.list_allowed_column_values() + elementlist[int(element['id'][1:])]=element['Element'] + usr.allowed_column_value = ','.join(elementlist) + ub.session.commit() + if element['id'].startswith('d'): + 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 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() + 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() + else: + usr = current_user + elementlist = usr.list_denied_tags() + elementlist[int(element['id'][1:])]=element['Element'] + usr.denied_tags = ','.join(elementlist) + ub.session.commit() + 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() + else: + usr = current_user + elementlist = usr.list_denied_column_values() + elementlist[int(element['id'][1:])]=element['Element'] + usr.denied_column_value = ','.join(elementlist) + ub.session.commit() + return "" + +def restriction_addition(element, list_func): + elementlist = list_func() + if elementlist == ['']: + elementlist = [] + if not element['add_element'] in elementlist: + elementlist += [element['add_element']] + return ','.join(elementlist) + + +def restriction_deletion(element, list_func): + elementlist = list_func() + if element['Element'] in elementlist: + elementlist.remove(element['Element']) + return ','.join(elementlist) + + +@admi.route("/ajax/addrestriction/", methods=['POST']) +@login_required +@admin_required +def add_restriction(res_type): + element = request.form.to_dict() + 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 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 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() + else: + usr = current_user + if 'submit_allow' in element: + usr.allowed_tags = restriction_addition(element, usr.list_allowed_tags) + ub.session.commit() + elif 'submit_deny' in element: + usr.denied_tags = restriction_addition(element, usr.list_denied_tags) + ub.session.commit() + 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() + else: + usr = current_user + if 'submit_allow' in element: + usr.allowed_column_value = restriction_addition(element, usr.list_allowed_column_values) + ub.session.commit() + elif 'submit_deny' in element: + usr.denied_column_value = restriction_addition(element, usr.list_denied_column_values) + ub.session.commit() + return "" + +@admi.route("/ajax/deleterestriction/", methods=['POST']) +@login_required +@admin_required +def delete_restriction(res_type): + element = request.form.to_dict() + 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 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 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() + else: + usr = current_user + if element['id'].startswith('a'): + usr.allowed_tags = restriction_deletion(element, usr.list_allowed_tags) + ub.session.commit() + elif element['id'].startswith('d'): + usr.denied_tags = restriction_deletion(element, usr.list_denied_tags) + ub.session.commit() + 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() + else: + usr = current_user + if element['id'].startswith('a'): + usr.allowed_column_value = restriction_deletion(element, usr.list_allowed_column_values) + ub.session.commit() + elif element['id'].startswith('d'): + usr.denied_column_value = restriction_deletion(element, usr.list_denied_column_values) + ub.session.commit() + return "" + + +@admi.route("/ajax/listrestriction/") +@login_required +@admin_required +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 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 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() + else: + usr = current_user + restrict = [{'Element': x, 'type':_('Deny'), 'id': 'd'+str(i) } + for i,x in enumerate(usr.list_denied_tags()) if x != '' ] + 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 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() + else: + usr = current_user + restrict = [{'Element': x, 'type':_('Deny'), 'id': 'd'+str(i) } + for i,x in enumerate(usr.list_denied_column_values()) if x != '' ] + allow = [{'Element': x, 'type':_('Allow'), 'id': 'a'+str(i) } + for i,x in enumerate(usr.list_allowed_column_values()) if x != ''] + json_dumps = restrict + allow + else: + json_dumps="" + js = json.dumps(json_dumps) + response = make_response(js.replace("'", '"')) + response.headers["Content-Type"] = "application/json; charset=utf-8" + return response + @admi.route("/config", methods=["GET", "POST"]) @unconfigured @@ -253,19 +481,23 @@ def basic_configuration(): return _configuration_result() -def _configuration_update_helper(): - reboot_required = False - db_change = False - to_save = request.form.to_dict() +def _config_int(to_save, x, func=int): + return config.set_from_dictionary(to_save, x, func) - _config_string = lambda x: config.set_from_dictionary(to_save, x, lambda y: y.strip() if y else y) - _config_int = lambda x: config.set_from_dictionary(to_save, x, int) - _config_checkbox = lambda x: config.set_from_dictionary(to_save, x, lambda y: y == "on", False) - _config_checkbox_int = lambda x: config.set_from_dictionary(to_save, x, lambda y: 1 if (y == "on") else 0, 0) - db_change |= _config_string("config_calibre_dir") +def _config_checkbox(to_save, x): + return config.set_from_dictionary(to_save, x, lambda y: y == "on", False) - # Google drive setup + +def _config_checkbox_int(to_save, x): + return config.set_from_dictionary(to_save, x, lambda y: 1 if (y == "on") else 0, 0) + + +def _config_string(to_save, x): + return config.set_from_dictionary(to_save, x, lambda y: y.strip() if y else y) + + +def _configuration_gdrive_helper(to_save): if not os.path.isfile(gdriveutils.SETTINGS_YAML): config.config_use_google_drive = False @@ -275,7 +507,7 @@ def _configuration_update_helper(): with open(gdriveutils.CLIENT_SECRETS, 'r') as settings: gdrive_secrets = json.load(settings)['web'] if not gdrive_secrets: - return _configuration_result('client_secrets.json is not configured for web application') + return _configuration_result(_('client_secrets.json Is Not Configured For Web Application')) gdriveutils.update_settings( gdrive_secrets['client_id'], gdrive_secrets['client_secret'], @@ -284,107 +516,216 @@ def _configuration_update_helper(): # always show google drive settings, but in case of error deny support config.config_use_google_drive = (not gdriveError) and ("config_use_google_drive" in to_save) - if _config_string("config_google_drive_folder"): + if _config_string(to_save, "config_google_drive_folder"): gdriveutils.deleteDatabaseOnChange() + return gdriveError - reboot_required |= _config_int("config_port") +def _configuration_oauth_helper(to_save): + active_oauths = 0 + reboot_required = False + for element in oauthblueprints: + if to_save["config_" + str(element['id']) + "_oauth_client_id"] != element['oauth_client_id'] \ + or to_save["config_" + str(element['id']) + "_oauth_client_secret"] != element['oauth_client_secret']: + reboot_required = True + element['oauth_client_id'] = to_save["config_" + str(element['id']) + "_oauth_client_id"] + element['oauth_client_secret'] = to_save["config_" + str(element['id']) + "_oauth_client_secret"] + if to_save["config_" + str(element['id']) + "_oauth_client_id"] \ + and to_save["config_" + str(element['id']) + "_oauth_client_secret"]: + active_oauths += 1 + element["active"] = 1 + else: + element["active"] = 0 + ub.session.query(ub.OAuthProvider).filter(ub.OAuthProvider.id == element['id']).update( + {"oauth_client_id": to_save["config_" + str(element['id']) + "_oauth_client_id"], + "oauth_client_secret": to_save["config_" + str(element['id']) + "_oauth_client_secret"], + "active": element["active"]}) + return reboot_required - reboot_required |= _config_string("config_keyfile") - if config.config_keyfile and not os.path.isfile(config.config_keyfile): - return _configuration_result('Keyfile location is not valid, please enter correct path', gdriveError) - - reboot_required |= _config_string("config_certfile") - if config.config_certfile and not os.path.isfile(config.config_certfile): - return _configuration_result('Certfile location is not valid, please enter correct path', gdriveError) - - _config_checkbox_int("config_uploading") - _config_checkbox_int("config_anonbrowse") - _config_checkbox_int("config_public_reg") - - _config_int("config_ebookconverter") - _config_string("config_calibre") - _config_string("config_converterpath") - - if _config_int("config_login_type"): - reboot_required |= config.config_login_type != constants.LOGIN_STANDARD - - #LDAP configurator, - if config.config_login_type == constants.LOGIN_LDAP: - _config_string("config_ldap_provider_url") - _config_int("config_ldap_port") - _config_string("config_ldap_schema") - _config_string("config_ldap_dn") - _config_string("config_ldap_user_object") - if not config.config_ldap_provider_url or not config.config_ldap_port or not config.config_ldap_dn or not config.config_ldap_user_object: - return _configuration_result('Please enter a LDAP provider, port, DN and user object identifier', gdriveError) - - _config_string("config_ldap_serv_username") - if not config.config_ldap_serv_username or "config_ldap_serv_password" not in to_save: - return _configuration_result('Please enter a LDAP service account and password', gdriveError) - config.set_from_dictionary(to_save, "config_ldap_serv_password", base64.b64encode) - - _config_checkbox("config_ldap_use_ssl") - _config_checkbox("config_ldap_use_tls") - _config_checkbox("config_ldap_openldap") - _config_checkbox("config_ldap_require_cert") - _config_string("config_ldap_cert_path") - if config.config_ldap_cert_path and not os.path.isfile(config.config_ldap_cert_path): - return _configuration_result('LDAP Certfile location is not valid, please enter correct path', gdriveError) - - # Remote login configuration - _config_checkbox("config_remote_login") - if not config.config_remote_login: - ub.session.query(ub.RemoteAuthToken).delete() - - # Goodreads configuration - _config_checkbox("config_use_goodreads") - _config_string("config_goodreads_api_key") - _config_string("config_goodreads_api_secret") - if services.goodreads_support: - services.goodreads_support.connect(config.config_goodreads_api_key, - config.config_goodreads_api_secret, - config.config_use_goodreads) - - _config_int("config_updatechannel") - - # GitHub OAuth configuration - if config.config_login_type == constants.LOGIN_OAUTH: - active_oauths = 0 - - for element in oauthblueprints: - if to_save["config_"+str(element['id'])+"_oauth_client_id"] \ - and to_save["config_"+str(element['id'])+"_oauth_client_secret"]: - active_oauths += 1 - element["active"] = 1 - ub.session.query(ub.OAuthProvider).filter(ub.OAuthProvider.id == element['id']).update( - {"oauth_client_id":to_save["config_"+str(element['id'])+"_oauth_client_id"], - "oauth_client_secret":to_save["config_"+str(element['id'])+"_oauth_client_secret"], - "active":1}) - if to_save["config_" + str(element['id']) + "_oauth_client_id"] != element['oauth_client_id'] \ - or to_save["config_" + str(element['id']) + "_oauth_client_secret"] != element['oauth_client_secret']: - reboot_required = True - element['oauth_client_id'] = to_save["config_"+str(element['id'])+"_oauth_client_id"] - element['oauth_client_secret'] = to_save["config_"+str(element['id'])+"_oauth_client_secret"] - else: - ub.session.query(ub.OAuthProvider).filter(ub.OAuthProvider.id == element['id']).update( - {"active":0}) - element["active"] = 0 - - _config_int("config_log_level") - _config_string("config_logfile") +def _configuration_logfile_helper(to_save, gdriveError): + reboot_required = False + reboot_required |= _config_int(to_save, "config_log_level") + reboot_required |= _config_string(to_save, "config_logfile") if not logger.is_valid_logfile(config.config_logfile): - return _configuration_result('Logfile location is not valid, please enter correct path', gdriveError) + return reboot_required, \ + _configuration_result(_('Logfile Location is not Valid, Please Enter Correct Path'), gdriveError) - reboot_required |= _config_checkbox_int("config_access_log") - reboot_required |= _config_string("config_access_logfile") + reboot_required |= _config_checkbox_int(to_save, "config_access_log") + reboot_required |= _config_string(to_save, "config_access_logfile") if not logger.is_valid_logfile(config.config_access_logfile): - return _configuration_result('Access Logfile location is not valid, please enter correct path', gdriveError) + return reboot_required, \ + _configuration_result(_('Access Logfile Location is not Valid, Please Enter Correct Path'), gdriveError) + return reboot_required, None - # Rarfile Content configuration - _config_string("config_rarfile_location") - unrar_status = helper.check_unrar(config.config_rarfile_location) - if unrar_status: - return _configuration_result(unrar_status, gdriveError) +def _configuration_ldap_helper(to_save, gdriveError): + reboot_required = False + reboot_required |= _config_string(to_save, "config_ldap_provider_url") + reboot_required |= _config_int(to_save, "config_ldap_port") + reboot_required |= _config_int(to_save, "config_ldap_authentication") + reboot_required |= _config_string(to_save, "config_ldap_dn") + reboot_required |= _config_string(to_save, "config_ldap_serv_username") + reboot_required |= _config_string(to_save, "config_ldap_user_object") + reboot_required |= _config_string(to_save, "config_ldap_group_object_filter") + reboot_required |= _config_string(to_save, "config_ldap_group_members_field") + reboot_required |= _config_string(to_save, "config_ldap_member_user_object") + reboot_required |= _config_checkbox(to_save, "config_ldap_openldap") + reboot_required |= _config_int(to_save, "config_ldap_encryption") + reboot_required |= _config_string(to_save, "config_ldap_cacert_path") + reboot_required |= _config_string(to_save, "config_ldap_cert_path") + reboot_required |= _config_string(to_save, "config_ldap_key_path") + _config_string(to_save, "config_ldap_group_name") + if "config_ldap_serv_password" in to_save and to_save["config_ldap_serv_password"] != "": + reboot_required |= 1 + config.set_from_dictionary(to_save, "config_ldap_serv_password", base64.b64encode, encode='UTF-8') + config.save() + + if not config.config_ldap_provider_url \ + or not config.config_ldap_port \ + or not config.config_ldap_dn \ + or not config.config_ldap_user_object: + return reboot_required, _configuration_result(_('Please Enter a LDAP Provider, ' + 'Port, DN and User Object Identifier'), gdriveError) + + if config.config_ldap_authentication > constants.LDAP_AUTH_ANONYMOUS: + if config.config_ldap_authentication > constants.LDAP_AUTH_UNAUTHENTICATE: + if not config.config_ldap_serv_username or not bool(config.config_ldap_serv_password): + return reboot_required, _configuration_result('Please Enter a LDAP Service Account and Password', + gdriveError) + else: + if not config.config_ldap_serv_username: + return reboot_required, _configuration_result('Please Enter a LDAP Service Account', gdriveError) + + if config.config_ldap_group_object_filter: + if config.config_ldap_group_object_filter.count("%s") != 1: + return reboot_required, \ + _configuration_result(_('LDAP Group Object Filter Needs to Have One "%s" Format Identifier'), + gdriveError) + if config.config_ldap_group_object_filter.count("(") != config.config_ldap_group_object_filter.count(")"): + return reboot_required, _configuration_result(_('LDAP Group Object Filter Has Unmatched Parenthesis'), + gdriveError) + + if config.config_ldap_user_object.count("%s") != 1: + return reboot_required, \ + _configuration_result(_('LDAP User Object Filter needs to Have One "%s" Format Identifier'), + gdriveError) + if config.config_ldap_user_object.count("(") != config.config_ldap_user_object.count(")"): + return reboot_required, _configuration_result(_('LDAP User Object Filter Has Unmatched Parenthesis'), + gdriveError) + + if to_save["ldap_import_user_filter"] == '0': + config.config_ldap_member_user_object = "" + else: + if config.config_ldap_member_user_object.count("%s") != 1: + return reboot_required, \ + _configuration_result(_('LDAP Member User Filter needs to Have One "%s" Format Identifier'), + gdriveError) + if config.config_ldap_member_user_object.count("(") != config.config_ldap_member_user_object.count(")"): + return reboot_required, _configuration_result(_('LDAP Member User Filter Has Unmatched Parenthesis'), + gdriveError) + + if config.config_ldap_cacert_path or config.config_ldap_cert_path or config.config_ldap_key_path: + if not (os.path.isfile(config.config_ldap_cacert_path) and + os.path.isfile(config.config_ldap_cert_path) and + os.path.isfile(config.config_ldap_key_path)): + return reboot_required, \ + _configuration_result(_('LDAP CACertificate, Certificate or Key Location is not Valid, ' + 'Please Enter Correct Path'), + gdriveError) + return reboot_required, None + + +def _configuration_update_helper(): + reboot_required = False + db_change = False + to_save = request.form.to_dict() + gdriveError = None + + to_save['config_calibre_dir'] = re.sub('[\\/]metadata\.db$', + '', + to_save['config_calibre_dir'], + flags=re.IGNORECASE) + try: + db_change |= _config_string(to_save, "config_calibre_dir") + + # Google drive setup + gdriveError = _configuration_gdrive_helper(to_save) + + reboot_required |= _config_int(to_save, "config_port") + + reboot_required |= _config_string(to_save, "config_keyfile") + if config.config_keyfile and not os.path.isfile(config.config_keyfile): + return _configuration_result(_('Keyfile Location is not Valid, Please Enter Correct Path'), gdriveError) + + reboot_required |= _config_string(to_save, "config_certfile") + if config.config_certfile and not os.path.isfile(config.config_certfile): + return _configuration_result(_('Certfile Location is not Valid, Please Enter Correct Path'), gdriveError) + + _config_checkbox_int(to_save, "config_uploading") + # Reboot on config_anonbrowse with enabled ldap, as decoraters are changed in this case + reboot_required |= (_config_checkbox_int(to_save, "config_anonbrowse") + and config.config_login_type == constants.LOGIN_LDAP) + _config_checkbox_int(to_save, "config_public_reg") + _config_checkbox_int(to_save, "config_register_email") + reboot_required |= _config_checkbox_int(to_save, "config_kobo_sync") + _config_int(to_save, "config_external_port") + _config_checkbox_int(to_save, "config_kobo_proxy") + + if "config_upload_formats" in to_save: + to_save["config_upload_formats"] = ','.join( + helper.uniq([x.lstrip().rstrip().lower() for x in to_save["config_upload_formats"].split(',')])) + _config_string(to_save, "config_upload_formats") + constants.EXTENSIONS_UPLOAD = config.config_upload_formats.split(',') + + _config_string(to_save, "config_calibre") + _config_string(to_save, "config_converterpath") + _config_string(to_save, "config_kepubifypath") + + reboot_required |= _config_int(to_save, "config_login_type") + + #LDAP configurator, + if config.config_login_type == constants.LOGIN_LDAP: + reboot, message = _configuration_ldap_helper(to_save, gdriveError) + if message: + return message + reboot_required |= reboot + + # Remote login configuration + + _config_checkbox(to_save, "config_remote_login") + if not config.config_remote_login: + ub.session.query(ub.RemoteAuthToken).filter(ub.RemoteAuthToken.token_type==0).delete() + + # Goodreads configuration + _config_checkbox(to_save, "config_use_goodreads") + _config_string(to_save, "config_goodreads_api_key") + _config_string(to_save, "config_goodreads_api_secret") + if services.goodreads_support: + services.goodreads_support.connect(config.config_goodreads_api_key, + config.config_goodreads_api_secret, + config.config_use_goodreads) + + _config_int(to_save, "config_updatechannel") + + # Reverse proxy login configuration + _config_checkbox(to_save, "config_allow_reverse_proxy_header_login") + _config_string(to_save, "config_reverse_proxy_login_header_name") + + # OAuth configuration + if config.config_login_type == constants.LOGIN_OAUTH: + reboot_required |= _configuration_oauth_helper(to_save) + + reboot, message = _configuration_logfile_helper(to_save, gdriveError) + if message: + return message + reboot_required |= reboot + # Rarfile Content configuration + _config_string(to_save, "config_rarfile_location") + if "config_rarfile_location" in to_save: + unrar_status = helper.check_unrar(config.config_rarfile_location) + if unrar_status: + return _configuration_result(unrar_status, gdriveError) + except (OperationalError, InvalidRequestError): + ub.session.rollback() + _configuration_result(_(u"Settings DB is not Writeable"), gdriveError) try: metadata_db = os.path.join(config.config_calibre_dir, "metadata.db") @@ -395,9 +736,10 @@ def _configuration_update_helper(): return _configuration_result('%s' % e, gdriveError) if db_change: - # reload(db) - if not db.setup_db(config): - return _configuration_result('DB location is not valid, please enter correct path', gdriveError) + if not calibre_db.setup_db(config, ub.app_DB_path): + return _configuration_result(_('DB Location is not Valid, Please Enter Correct Path'), gdriveError) + if not os.access(os.path.join(config.config_calibre_dir, "metadata.db"), os.W_OK): + flash(_(u"DB is not Writeable"), category="warning") config.save() flash(_(u"Calibre-Web configuration updated"), category="success") @@ -415,14 +757,15 @@ def _configuration_result(error_flash=None, gdriveError=None): if gdriveError: gdriveError = _(gdriveError) else: - if config.config_use_google_drive and not gdrive_authenticate: + # if config.config_use_google_drive and\ + if not gdrive_authenticate and gdrive_support: gdrivefolders = gdriveutils.listRootFolders() show_back_button = current_user.is_authenticated show_login_button = config.db_configured and not current_user.is_authenticated if error_flash: config.load() - flash(_(error_flash), category="error") + flash(error_flash, category="error") show_login_button = False return render_title_template("config_edit.html", config=config, provider=oauthblueprints, @@ -432,62 +775,165 @@ def _configuration_result(error_flash=None, gdriveError=None): title=_(u"Basic Configuration"), page="config") +def _handle_new_user(to_save, content,languages, translations, kobo_support): + content.default_language = to_save["default_language"] + # content.mature_content = "Show_mature_content" in to_save + content.locale = to_save.get("locale", content.locale) + + content.sidebar_view = sum(int(key[5:]) for key in to_save if key.startswith('show_')) + if "show_detail_random" in to_save: + content.sidebar_view |= constants.DETAIL_RANDOM + + content.role = constants.selected_roles(to_save) + + if not to_save["nickname"] or not to_save["email"] or not to_save["password"]: + flash(_(u"Please fill out all fields!"), category="error") + return render_title_template("user_edit.html", new_user=1, content=content, translations=translations, + registered_oauth=oauth_check, kobo_support=kobo_support, + title=_(u"Add new user")) + content.password = generate_password_hash(to_save["password"]) + existing_user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) == to_save["nickname"].lower()) \ + .first() + existing_email = ub.session.query(ub.User).filter(ub.User.email == to_save["email"].lower()) \ + .first() + if not existing_user and not existing_email: + content.nickname = to_save["nickname"] + if config.config_public_reg and not check_valid_domain(to_save["email"]): + flash(_(u"E-mail is not from valid domain"), category="error") + return render_title_template("user_edit.html", new_user=1, content=content, translations=translations, + registered_oauth=oauth_check, kobo_support=kobo_support, + title=_(u"Add new user")) + else: + content.email = to_save["email"] + else: + flash(_(u"Found an existing account for this e-mail address or nickname."), category="error") + return render_title_template("user_edit.html", new_user=1, content=content, translations=translations, + languages=languages, title=_(u"Add new user"), page="newuser", + kobo_support=kobo_support, registered_oauth=oauth_check) + try: + content.allowed_tags = config.config_allowed_tags + content.denied_tags = config.config_denied_tags + content.allowed_column_value = config.config_allowed_column_value + content.denied_column_value = config.config_denied_column_value + ub.session.add(content) + ub.session.commit() + flash(_(u"User '%(user)s' created", user=content.nickname), category="success") + return redirect(url_for('admin.admin')) + except IntegrityError: + ub.session.rollback() + flash(_(u"Found an existing account for this e-mail address or nickname."), category="error") + except OperationalError: + ub.session.rollback() + flash(_(u"Settings DB is not Writeable"), category="error") + + +def _handle_edit_user(to_save, content,languages, translations, kobo_support): + if "delete" in to_save: + if ub.session.query(ub.User).filter(ub.User.role.op('&')(constants.ROLE_ADMIN) == constants.ROLE_ADMIN, + ub.User.id != content.id).count(): + ub.session.query(ub.User).filter(ub.User.id == content.id).delete() + ub.session.commit() + flash(_(u"User '%(nick)s' deleted", nick=content.nickname), category="success") + return redirect(url_for('admin.admin')) + else: + flash(_(u"No admin user remaining, can't delete user", nick=content.nickname), category="error") + return redirect(url_for('admin.admin')) + else: + if not ub.session.query(ub.User).filter(ub.User.role.op('&')(constants.ROLE_ADMIN) == constants.ROLE_ADMIN, + ub.User.id != content.id).count() and \ + not 'admin_role' in to_save: + flash(_(u"No admin user remaining, can't remove admin role", nick=content.nickname), category="error") + return redirect(url_for('admin.admin')) + + if "password" in to_save and to_save["password"]: + content.password = generate_password_hash(to_save["password"]) + anonymous = content.is_anonymous + content.role = constants.selected_roles(to_save) + if anonymous: + content.role |= constants.ROLE_ANONYMOUS + else: + content.role &= ~constants.ROLE_ANONYMOUS + + val = [int(k[5:]) for k in to_save if k.startswith('show_')] + sidebar = ub.get_sidebar_config() + for element in sidebar: + value = element['visibility'] + if value in val and not content.check_visibility(value): + content.sidebar_view |= value + elif not value in val and content.check_visibility(value): + content.sidebar_view &= ~value + + if "Show_detail_random" in to_save: + content.sidebar_view |= constants.DETAIL_RANDOM + else: + content.sidebar_view &= ~constants.DETAIL_RANDOM + + if "default_language" in to_save: + content.default_language = to_save["default_language"] + if "locale" in to_save and to_save["locale"]: + content.locale = to_save["locale"] + if to_save["email"] and to_save["email"] != content.email: + existing_email = ub.session.query(ub.User).filter(ub.User.email == to_save["email"].lower()) \ + .first() + if not existing_email: + content.email = to_save["email"] + else: + flash(_(u"Found an existing account for this e-mail address."), category="error") + return render_title_template("user_edit.html", + translations=translations, + languages=languages, + mail_configured=config.get_mail_server_configured(), + kobo_support=kobo_support, + new_user=0, + content=content, + registered_oauth=oauth_check, + title=_(u"Edit User %(nick)s", nick=content.nickname), page="edituser") + if "nickname" in to_save and to_save["nickname"] != content.nickname: + # Query User nickname, if not existing, change + if not ub.session.query(ub.User).filter(ub.User.nickname == to_save["nickname"]).scalar(): + content.nickname = to_save["nickname"] + else: + flash(_(u"This username is already taken"), category="error") + return render_title_template("user_edit.html", + translations=translations, + languages=languages, + mail_configured=config.get_mail_server_configured(), + new_user=0, content=content, + registered_oauth=oauth_check, + kobo_support=kobo_support, + title=_(u"Edit User %(nick)s", nick=content.nickname), + page="edituser") + + if "kindle_mail" in to_save and to_save["kindle_mail"] != content.kindle_mail: + content.kindle_mail = to_save["kindle_mail"] + try: + ub.session.commit() + flash(_(u"User '%(nick)s' updated", nick=content.nickname), category="success") + except IntegrityError: + ub.session.rollback() + flash(_(u"An unknown error occured."), category="error") + except OperationalError: + ub.session.rollback() + flash(_(u"Settings DB is not Writeable"), category="error") + + @admi.route("/admin/user/new", methods=["GET", "POST"]) @login_required @admin_required def new_user(): content = ub.User() - languages = speaking_language() + languages = calibre_db.speaking_language() translations = [LC('en')] + babel.list_translations() + kobo_support = feature_support['kobo'] and config.config_kobo_sync if request.method == "POST": to_save = request.form.to_dict() - content.default_language = to_save["default_language"] - content.mature_content = "Show_mature_content" in to_save - content.locale = to_save.get("locale", content.locale) - - content.sidebar_view = sum(int(key[5:]) for key in to_save if key.startswith('show_')) - if "show_detail_random" in to_save: - content.sidebar_view |= constants.DETAIL_RANDOM - - content.role = constants.selected_roles(to_save) - - if not to_save["nickname"] or not to_save["email"] or not to_save["password"]: - flash(_(u"Please fill out all fields!"), category="error") - return render_title_template("user_edit.html", new_user=1, content=content, translations=translations, - registered_oauth=oauth_check, title=_(u"Add new user")) - content.password = generate_password_hash(to_save["password"]) - existing_user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) == to_save["nickname"].lower())\ - .first() - existing_email = ub.session.query(ub.User).filter(ub.User.email == to_save["email"].lower())\ - .first() - if not existing_user and not existing_email: - content.nickname = to_save["nickname"] - if config.config_public_reg and not check_valid_domain(to_save["email"]): - flash(_(u"E-mail is not from valid domain"), category="error") - return render_title_template("user_edit.html", new_user=1, content=content, translations=translations, - registered_oauth=oauth_check, title=_(u"Add new user")) - else: - content.email = to_save["email"] - else: - flash(_(u"Found an existing account for this e-mail address or nickname."), category="error") - return render_title_template("user_edit.html", new_user=1, content=content, translations=translations, - languages=languages, title=_(u"Add new user"), page="newuser", - registered_oauth=oauth_check) - try: - ub.session.add(content) - ub.session.commit() - flash(_(u"User '%(user)s' created", user=content.nickname), category="success") - return redirect(url_for('admin.admin')) - except IntegrityError: - ub.session.rollback() - flash(_(u"Found an existing account for this e-mail address or nickname."), category="error") + _handle_new_user(to_save, content, languages, translations, kobo_support) else: content.role = config.config_default_role content.sidebar_view = config.config_default_show - content.mature_content = bool(config.config_default_show & constants.MATURE_CONTENT) return render_title_template("user_edit.html", new_user=1, content=content, translations=translations, languages=languages, title=_(u"Add new user"), page="newuser", - registered_oauth=oauth_check) + kobo_support=kobo_support, registered_oauth=oauth_check) @admi.route("/admin/mailsettings") @@ -495,8 +941,7 @@ def new_user(): @admin_required def edit_mailsettings(): content = config.get_mail_settings() - # log.debug("edit_mailsettings %r", content) - return render_title_template("email_edit.html", content=content, title=_(u"Edit e-mail server settings"), + return render_title_template("email_edit.html", content=content, title=_(u"Edit E-mail Server Settings"), page="mailset") @@ -505,29 +950,32 @@ def edit_mailsettings(): @admin_required def update_mailsettings(): to_save = request.form.to_dict() - log.debug("update_mailsettings %r", to_save) + # log.debug("update_mailsettings %r", to_save) - _config_string = lambda x: config.set_from_dictionary(to_save, x, lambda y: y.strip() if y else y) - _config_int = lambda x: config.set_from_dictionary(to_save, x, int) - - _config_string("mail_server") - _config_int("mail_port") - _config_int("mail_use_ssl") - _config_string("mail_login") - _config_string("mail_password") - _config_string("mail_from") - config.save() + _config_string(to_save, "mail_server") + _config_int(to_save, "mail_port") + _config_int(to_save, "mail_use_ssl") + _config_string(to_save, "mail_login") + _config_string(to_save, "mail_password") + _config_string(to_save, "mail_from") + _config_int(to_save, "mail_size", lambda y: int(y)*1024*1024) + try: + config.save() + except (OperationalError, InvalidRequestError): + ub.session.rollback() + flash(_(u"Settings DB is not Writeable"), category="error") + return edit_mailsettings() if to_save.get("test"): - if current_user.kindle_mail: - result = send_test_mail(current_user.kindle_mail, current_user.nickname) + if current_user.email: + result = send_test_mail(current_user.email, current_user.nickname) if result is None: - flash(_(u"Test e-mail successfully send to %(kindlemail)s", kindlemail=current_user.kindle_mail), + flash(_(u"Test e-mail successfully send to %(kindlemail)s", kindlemail=current_user.email), category="success") else: flash(_(u"There was an error sending the Test e-mail: %(res)s", res=result), category="error") else: - flash(_(u"Please configure your kindle e-mail address first..."), category="error") + flash(_(u"Please configure your e-mail address first..."), category="error") else: flash(_(u"E-mail server settings updated"), category="success") @@ -539,116 +987,41 @@ def update_mailsettings(): @admin_required def edit_user(user_id): content = ub.session.query(ub.User).filter(ub.User.id == int(user_id)).first() # type: ub.User - downloads = list() - languages = speaking_language() + if not content or (not config.config_anonbrowse and content.nickname == "Guest"): + flash(_(u"User not found"), category="error") + return redirect(url_for('admin.admin')) + languages = calibre_db.speaking_language() translations = babel.list_translations() + [LC('en')] - for book in content.downloads: - downloadbook = db.session.query(db.Books).filter(db.Books.id == book.book_id).first() - if downloadbook: - downloads.append(downloadbook) - else: - ub.delete_download(book.book_id) - # ub.session.query(ub.Downloads).filter(book.book_id == ub.Downloads.book_id).delete() - # ub.session.commit() + kobo_support = feature_support['kobo'] and config.config_kobo_sync if request.method == "POST": to_save = request.form.to_dict() - if "delete" in to_save: - if ub.session.query(ub.User).filter(and_(ub.User.role.op('&') - (constants.ROLE_ADMIN)== constants.ROLE_ADMIN, - ub.User.id != content.id)).count(): - ub.session.query(ub.User).filter(ub.User.id == content.id).delete() - ub.session.commit() - flash(_(u"User '%(nick)s' deleted", nick=content.nickname), category="success") - return redirect(url_for('admin.admin')) - else: - flash(_(u"No admin user remaining, can't delete user", nick=content.nickname), category="error") - return redirect(url_for('admin.admin')) - else: - if "password" in to_save and to_save["password"]: - content.password = generate_password_hash(to_save["password"]) - anonymous = content.is_anonymous - content.role = constants.selected_roles(to_save) - if anonymous: - content.role |= constants.ROLE_ANONYMOUS - else: - content.role &= ~constants.ROLE_ANONYMOUS - - val = [int(k[5:]) for k in to_save if k.startswith('show_')] - sidebar = ub.get_sidebar_config() - for element in sidebar: - value = element['visibility'] - if value in val and not content.check_visibility(value): - content.sidebar_view |= value - elif not value in val and content.check_visibility(value): - content.sidebar_view &= ~value - - if "Show_detail_random" in to_save: - content.sidebar_view |= constants.DETAIL_RANDOM - else: - content.sidebar_view &= ~constants.DETAIL_RANDOM - - content.mature_content = "Show_mature_content" in to_save - - if "default_language" in to_save: - content.default_language = to_save["default_language"] - if "locale" in to_save and to_save["locale"]: - content.locale = to_save["locale"] - if to_save["email"] and to_save["email"] != content.email: - existing_email = ub.session.query(ub.User).filter(ub.User.email == to_save["email"].lower()) \ - .first() - if not existing_email: - content.email = to_save["email"] - else: - flash(_(u"Found an existing account for this e-mail address."), category="error") - return render_title_template("user_edit.html", translations=translations, languages=languages, - new_user=0, content=content, downloads=downloads, registered_oauth=oauth_check, - title=_(u"Edit User %(nick)s", nick=content.nickname), page="edituser") - if "nickname" in to_save and to_save["nickname"] != content.nickname: - # Query User nickname, if not existing, change - if not ub.session.query(ub.User).filter(ub.User.nickname == to_save["nickname"]).scalar(): - content.nickname = to_save["nickname"] - else: - flash(_(u"This username is already taken"), category="error") - return render_title_template("user_edit.html", - translations=translations, - languages=languages, - new_user=0, content=content, - downloads=downloads, - registered_oauth=oauth_check, - title=_(u"Edit User %(nick)s", - nick=content.nickname), - page="edituser") - - if "kindle_mail" in to_save and to_save["kindle_mail"] != content.kindle_mail: - content.kindle_mail = to_save["kindle_mail"] - try: - ub.session.commit() - flash(_(u"User '%(nick)s' updated", nick=content.nickname), category="success") - except IntegrityError: - ub.session.rollback() - flash(_(u"An unknown error occured."), category="error") - return render_title_template("user_edit.html", translations=translations, languages=languages, new_user=0, - content=content, downloads=downloads, registered_oauth=oauth_check, + _handle_edit_user(to_save, content, languages, translations, kobo_support) + return render_title_template("user_edit.html", + translations=translations, + languages=languages, + new_user=0, + content=content, + registered_oauth=oauth_check, + mail_configured=config.get_mail_server_configured(), + kobo_support=kobo_support, title=_(u"Edit User %(nick)s", nick=content.nickname), page="edituser") @admi.route("/admin/resetpassword/") @login_required @admin_required -def reset_password(user_id): - if not config.config_public_reg: - abort(404) +def reset_user_password(user_id): if current_user is not None and current_user.is_authenticated: - existing_user = ub.session.query(ub.User).filter(ub.User.id == user_id).first() - password = generate_random_password() - existing_user.password = generate_password_hash(password) - try: - ub.session.commit() - send_registration_mail(existing_user.email, existing_user.nickname, password, True) - flash(_(u"Password for user %(user)s reset", user=existing_user.nickname), category="success") - except Exception: - ub.session.rollback() + ret, message = reset_password(user_id) + if ret == 1: + log.debug(u"Password for user %s reset", message) + flash(_(u"Password for user %(user)s reset", user=message), category="success") + elif ret == 0: + log.error(u"An unknown error occurred. Please try again later.") flash(_(u"An unknown error occurred. Please try again later."), category="error") + else: + log.error(u"Please configure the SMTP mail settings first...") + flash(_(u"Please configure the SMTP mail settings first..."), category="error") return redirect(url_for('admin.admin')) @@ -659,8 +1032,12 @@ def view_logfile(): logfiles = {} logfiles[0] = logger.get_logfile(config.config_logfile) logfiles[1] = logger.get_accesslogfile(config.config_access_logfile) - return render_title_template("logviewer.html",title=_(u"Logfile viewer"), accesslog_enable=config.config_access_log, - logfiles=logfiles, page="logfile") + return render_title_template("logviewer.html", + title=_(u"Logfile viewer"), + accesslog_enable=config.config_access_log, + log_enable=bool(config.config_logfile != logger.LOG_TO_STDOUT), + logfiles=logfiles, + page="logfile") @admi.route("/ajax/log/") @@ -678,10 +1055,33 @@ def send_logfile(logtype): else: return "" +@admi.route("/admin/logdownload/") +@login_required +@admin_required +def download_log(logtype): + if logtype == 0: + file_name = logger.get_logfile(config.config_logfile) + elif logtype == 1: + file_name = logger.get_accesslogfile(config.config_access_logfile) + else: + abort(404) + if logger.is_valid_logfile(file_name): + return debug_info.assemble_logfiles(file_name) + abort(404) + + +@admi.route("/admin/debug") +@login_required +@admin_required +def download_debug(): + return debug_info.send_debug() + @admi.route("/get_update_status", methods=['GET']) -@login_required_if_no_ano +@login_required +@admin_required def get_update_status(): + log.info(u"Update status requested") return updater_thread.get_available_updates(request.method, locale=get_locale()) @@ -704,11 +1104,12 @@ def get_updater_status(): "8": _(u'Update failed:') + u' ' + _(u'HTTP Error'), "9": _(u'Update failed:') + u' ' + _(u'Connection error'), "10": _(u'Update failed:') + u' ' + _(u'Timeout while establishing connection'), - "11": _(u'Update failed:') + u' ' + _(u'General error') + "11": _(u'Update failed:') + u' ' + _(u'General error'), + "12": _(u'Update failed:') + u' ' + _(u'Update File Could Not be Saved in Temp Dir') } status['text'] = text updater_thread.status = 0 - updater_thread.start() + updater_thread.resume() status['status'] = updater_thread.get_update_status() elif request.method == "GET": try: diff --git a/cps/cache_buster.py b/cps/cache_buster.py index 02aa7187d..99614dfa8 100644 --- a/cps/cache_buster.py +++ b/cps/cache_buster.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) # Copyright (C) 2016-2019 jkrehm andy29485 OzzieIsaacs # diff --git a/cps/cli.py b/cps/cli.py index e76a12cc8..c94cb89d2 100644 --- a/cps/cli.py +++ b/cps/cli.py @@ -34,7 +34,7 @@ def version_info(): parser = argparse.ArgumentParser(description='Calibre Web is a web app' - ' providing a interface for browsing, reading and downloading eBooks\n', prog='cps.py') + ' providing a interface for browsing, reading and downloading eBooks\n', prog='cps.py') parser.add_argument('-p', metavar='path', help='path and name to settings db, e.g. /opt/cw.db') parser.add_argument('-g', metavar='path', help='path and name to gdrive db, e.g. /opt/gd.db') parser.add_argument('-c', metavar='path', @@ -43,7 +43,7 @@ parser.add_argument('-k', metavar='path', help='path and name to SSL keyfile, e.g. /opt/test.key, works only in combination with certfile') parser.add_argument('-v', '--version', action='version', help='Shows version number and exits Calibre-web', version=version_info()) -parser.add_argument('-i', metavar='ip-adress', help='Server IP-Adress to listen') +parser.add_argument('-i', metavar='ip-address', help='Server IP-Address to listen') parser.add_argument('-s', metavar='user:pass', help='Sets specific username to new password') args = parser.parse_args() diff --git a/cps/comic.py b/cps/comic.py old mode 100755 new mode 100644 index c950df67d..7e3c7d475 --- a/cps/comic.py +++ b/cps/comic.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) @@ -19,10 +18,17 @@ from __future__ import division, print_function, unicode_literals import os +import io from . import logger, isoLanguages from .constants import BookMeta +try: + from PIL import Image as PILImage + use_PIL = True +except ImportError as e: + use_PIL = False + log = logger.create() @@ -30,22 +36,51 @@ log = logger.create() try: from comicapi.comicarchive import ComicArchive, MetaDataStyle use_comic_meta = True -except ImportError as e: - log.debug('cannot import comicapi, extracting comic metadata will not work: %s', e) + try: + from comicapi import __version__ as comic_version + except ImportError: + comic_version = '' +except (ImportError, LookupError) as e: + log.debug('Cannot import comicapi, extracting comic metadata will not work: %s', e) import zipfile import tarfile + try: + import rarfile + use_rarfile = True + except (ImportError, SyntaxError) as e: + log.debug('Cannot import rarfile, extracting cover files from rar files will not work: %s', e) + use_rarfile = False use_comic_meta = False +def _cover_processing(tmp_file_name, img, extension): + if use_PIL: + # convert to jpg because calibre only supports jpg + if extension in ('.png', '.webp'): + imgc = PILImage.open(io.BytesIO(img)) + im = imgc.convert('RGB') + tmp_bytesio = io.BytesIO() + im.save(tmp_bytesio, format='JPEG') + img = tmp_bytesio.getvalue() -def extractCover(tmp_file_name, original_file_extension): + if not img: + return None + + tmp_cover_name = os.path.join(os.path.dirname(tmp_file_name), 'cover.jpg') + with open(tmp_cover_name, 'wb') as f: + f.write(img) + return tmp_cover_name + + + +def _extractCover(tmp_file_name, original_file_extension, rarExecutable): + cover_data = extension = None if use_comic_meta: - archive = ComicArchive(tmp_file_name) - cover_data = None + archive = ComicArchive(tmp_file_name, rar_exe_path=rarExecutable) for index, name in enumerate(archive.getPageNameList()): ext = os.path.splitext(name) if len(ext) > 1: extension = ext[1].lower() - if extension == '.jpg' or extension == '.jpeg': + if extension in ('.jpg', '.jpeg', '.png', '.webp'): cover_data = archive.getPage(index) break else: @@ -55,7 +90,7 @@ def extractCover(tmp_file_name, original_file_extension): ext = os.path.splitext(name) if len(ext) > 1: extension = ext[1].lower() - if extension == '.jpg' or extension == '.jpeg': + if extension in ('.jpg', '.jpeg', '.png', '.webp'): cover_data = cf.read(name) break elif original_file_extension.upper() == '.CBT': @@ -64,23 +99,28 @@ def extractCover(tmp_file_name, original_file_extension): ext = os.path.splitext(name) if len(ext) > 1: extension = ext[1].lower() - if extension == '.jpg' or extension == '.jpeg': + if extension in ('.jpg', '.jpeg', '.png', '.webp'): cover_data = cf.extractfile(name).read() break - prefix = os.path.dirname(tmp_file_name) - if cover_data: - tmp_cover_name = prefix + '/cover' + extension - image = open(tmp_cover_name, 'wb') - image.write(cover_data) - image.close() - else: - tmp_cover_name = None - return tmp_cover_name + elif original_file_extension.upper() == '.CBR' and use_rarfile: + try: + rarfile.UNRAR_TOOL = rarExecutable + cf = rarfile.RarFile(tmp_file_name) + for name in cf.getnames(): + ext = os.path.splitext(name) + if len(ext) > 1: + extension = ext[1].lower() + if extension in ('.jpg', '.jpeg', '.png', '.webp'): + cover_data = cf.read(name) + break + except Exception as e: + log.debug('Rarfile failed with error: %s', e) + return _cover_processing(tmp_file_name, cover_data, extension) -def get_comic_info(tmp_file_path, original_file_name, original_file_extension): +def get_comic_info(tmp_file_path, original_file_name, original_file_extension, rarExecutable): if use_comic_meta: - archive = ComicArchive(tmp_file_path) + archive = ComicArchive(tmp_file_path, rar_exe_path=rarExecutable) if archive.seemsToBeAComicArchive(): if archive.hasMetadata(MetaDataStyle.CIX): style = MetaDataStyle.CIX @@ -92,36 +132,29 @@ def get_comic_info(tmp_file_path, original_file_name, original_file_extension): # if style is not None: loadedMetadata = archive.readMetadata(style) - lang = loadedMetadata.language - if lang: - if len(lang) == 2: - loadedMetadata.language = isoLanguages.get(part1=lang).name - elif len(lang) == 3: - loadedMetadata.language = isoLanguages.get(part3=lang).name - else: - loadedMetadata.language = "" + lang = loadedMetadata.language or "" + loadedMetadata.language = isoLanguages.get_lang3(lang) - return BookMeta( + return BookMeta( file_path=tmp_file_path, extension=original_file_extension, title=loadedMetadata.title or original_file_name, - author=" & ".join([credit["person"] for credit in loadedMetadata.credits if credit["role"] == "Writer"]) or u"Unknown", - cover=extractCover(tmp_file_path, original_file_extension), + author=" & ".join([credit["person"] for credit in loadedMetadata.credits if credit["role"] == "Writer"]) or u'Unknown', + cover=_extractCover(tmp_file_path, original_file_extension, rarExecutable), description=loadedMetadata.comments or "", tags="", series=loadedMetadata.series or "", series_id=loadedMetadata.issue or "", languages=loadedMetadata.language) - else: - return BookMeta( - file_path=tmp_file_path, - extension=original_file_extension, - title=original_file_name, - author=u"Unknown", - cover=extractCover(tmp_file_path, original_file_extension), - description="", - tags="", - series="", - series_id="", - languages="") + return BookMeta( + file_path=tmp_file_path, + extension=original_file_extension, + title=original_file_name, + author=u'Unknown', + cover=_extractCover(tmp_file_path, original_file_extension, rarExecutable), + description="", + tags="", + series="", + series_id="", + languages="") diff --git a/cps/config_sql.py b/cps/config_sql.py index 809e97d80..877ad1c20 100644 --- a/cps/config_sql.py +++ b/cps/config_sql.py @@ -19,18 +19,26 @@ from __future__ import division, print_function, unicode_literals import os -import json import sys -from sqlalchemy import exc, Column, String, Integer, SmallInteger, Boolean +from sqlalchemy import exc, Column, String, Integer, SmallInteger, Boolean, BLOB, JSON from sqlalchemy.ext.declarative import declarative_base -from . import constants, cli, logger +from . import constants, cli, logger, ub log = logger.create() _Base = declarative_base() +class _Flask_Settings(_Base): + __tablename__ = 'flask_settings' + + id = Column(Integer, primary_key=True) + flask_session_key = Column(BLOB, default="") + + def __init__(self, key): + self.flask_session_key = key + # Baseclass for representing settings in app.db with email server settings and Calibre database settings # (application settings) @@ -38,15 +46,17 @@ class _Settings(_Base): __tablename__ = 'settings' id = Column(Integer, primary_key=True) - mail_server = Column(String, default='mail.example.org') + mail_server = Column(String, default=constants.DEFAULT_MAIL_SERVER) mail_port = Column(Integer, default=25) mail_use_ssl = Column(SmallInteger, default=0) mail_login = Column(String, default='mail@example.com') mail_password = Column(String, default='mypassword') mail_from = Column(String, default='automailer ') + mail_size = Column(Integer, default=25*1024*1024) config_calibre_dir = Column(String) config_port = Column(Integer, default=constants.DEFAULT_PORT) + config_external_port = Column(Integer, default=constants.DEFAULT_PORT) config_certfile = Column(String) config_keyfile = Column(String) @@ -68,44 +78,58 @@ class _Settings(_Base): config_anonbrowse = Column(SmallInteger, default=0) config_public_reg = Column(SmallInteger, default=0) config_remote_login = Column(Boolean, default=False) - + config_kobo_sync = Column(Boolean, default=False) config_default_role = Column(SmallInteger, default=0) - config_default_show = Column(SmallInteger, default=6143) + config_default_show = Column(SmallInteger, default=constants.ADMIN_USER_SIDEBAR) config_columns_to_ignore = Column(String) + config_denied_tags = Column(String, default="") + config_allowed_tags = Column(String, default="") + config_restricted_column = Column(SmallInteger, default=0) + config_denied_column_value = Column(String, default="") + config_allowed_column_value = Column(String, default="") + config_use_google_drive = Column(Boolean, default=False) config_google_drive_folder = Column(String) - config_google_drive_watch_changes_response = Column(String) + config_google_drive_watch_changes_response = Column(JSON, default={}) config_use_goodreads = Column(Boolean, default=False) config_goodreads_api_key = Column(String) config_goodreads_api_secret = Column(String) - + config_register_email = Column(Boolean, default=False) config_login_type = Column(Integer, default=0) - # config_oauth_provider = Column(Integer) + config_kobo_proxy = Column(Boolean, default=False) - config_ldap_provider_url = Column(String, default='localhost') + config_ldap_provider_url = Column(String, default='example.org') config_ldap_port = Column(SmallInteger, default=389) - config_ldap_schema = Column(String, default='ldap') - config_ldap_serv_username = Column(String) - config_ldap_serv_password = Column(String) - config_ldap_use_ssl = Column(Boolean, default=False) - config_ldap_use_tls = Column(Boolean, default=False) - config_ldap_require_cert = Column(Boolean, default=False) - config_ldap_cert_path = Column(String) - config_ldap_dn = Column(String) - config_ldap_user_object = Column(String) - config_ldap_openldap = Column(Boolean, default=False) + config_ldap_authentication = Column(SmallInteger, default=constants.LDAP_AUTH_SIMPLE) + config_ldap_serv_username = Column(String, default='cn=admin,dc=example,dc=org') + config_ldap_serv_password = Column(String, default="") + config_ldap_encryption = Column(SmallInteger, default=0) + config_ldap_cacert_path = Column(String, default="") + config_ldap_cert_path = Column(String, default="") + config_ldap_key_path = Column(String, default="") + config_ldap_dn = Column(String, default='dc=example,dc=org') + config_ldap_user_object = Column(String, default='uid=%s') + config_ldap_member_user_object = Column(String, default='') # + config_ldap_openldap = Column(Boolean, default=True) + config_ldap_group_object_filter = Column(String, default='(&(objectclass=posixGroup)(cn=%s))') + config_ldap_group_members_field = Column(String, default='memberUid') + config_ldap_group_name = Column(String, default='calibreweb') - config_ebookconverter = Column(Integer, default=0) - config_converterpath = Column(String) + config_kepubifypath = Column(String, default=None) + config_converterpath = Column(String, default=None) config_calibre = Column(String) - config_rarfile_location = Column(String) + config_rarfile_location = Column(String, default=None) + config_upload_formats = Column(String, default=','.join(constants.EXTENSIONS_UPLOAD)) config_updatechannel = Column(Integer, default=constants.UPDATE_STABLE) + config_reverse_proxy_login_header_name = Column(String) + config_allow_reverse_proxy_header_login = Column(Boolean, default=False) + def __repr__(self): return self.__class__.__name__ @@ -120,6 +144,22 @@ class _ConfigSQL(object): self.config_calibre_dir = None self.load() + change = False + if self.config_converterpath == None: + change = True + self.config_converterpath = autodetect_calibre_binary() + + if self.config_kepubifypath == None: + change = True + self.config_kepubifypath = autodetect_kepubify_binary() + + if self.config_rarfile_location == None: + change = True + self.config_rarfile_location = autodetect_unrar_binary() + if change: + self.save() + + def _read_from_storage(self): if self._settings is None: log.debug("_ConfigSQL._read_from_storage") @@ -176,12 +216,21 @@ class _ConfigSQL(object): def show_detail_random(self): return self.show_element_new_user(constants.DETAIL_RANDOM) - def show_mature_content(self): - return self.show_element_new_user(constants.MATURE_CONTENT) + def list_denied_tags(self): + mct = self.config_denied_tags or "" + return [t.strip() for t in mct.split(",")] - def mature_content_tags(self): - mct = self.config_mature_content_tags.split(",") - return [t.strip() for t in mct] + def list_allowed_tags(self): + mct = self.config_allowed_tags or "" + return [t.strip() for t in mct.split(",")] + + def list_denied_column_values(self): + mct = self.config_denied_column_value or "" + return [t.strip() for t in mct.split(",")] + + def list_allowed_column_values(self): + mct = self.config_allowed_column_value or "" + return [t.strip() for t in mct.split(",")] def get_log_level(self): return logger.get_level_name(self.config_log_level) @@ -189,7 +238,11 @@ class _ConfigSQL(object): def get_mail_settings(self): return {k:v for k, v in self.__dict__.items() if k.startswith('mail_')} - def set_from_dictionary(self, dictionary, field, convertor=None, default=None): + def get_mail_server_configured(self): + return not bool(self.mail_server == constants.DEFAULT_MAIL_SERVER) + + + def set_from_dictionary(self, dictionary, field, convertor=None, default=None, encode=None): '''Possibly updates a field of this object. The new value, if present, is grabbed from the given dictionary, and optionally passed through a convertor. @@ -205,7 +258,10 @@ class _ConfigSQL(object): return False if convertor is not None: - new_value = convertor(new_value) + if encode: + new_value = convertor(new_value.encode(encode)) + else: + new_value = convertor(new_value) current_value = self.__dict__.get(field) if current_value == new_value: @@ -227,17 +283,19 @@ class _ConfigSQL(object): v = column.default.arg setattr(self, k, v) - if self.config_google_drive_watch_changes_response: - self.config_google_drive_watch_changes_response = json.loads(self.config_google_drive_watch_changes_response) - have_metadata_db = bool(self.config_calibre_dir) if have_metadata_db: if not self.config_use_google_drive: db_file = os.path.join(self.config_calibre_dir, 'metadata.db') have_metadata_db = os.path.isfile(db_file) self.db_configured = have_metadata_db - - logger.setup(self.config_logfile, self.config_log_level) + constants.EXTENSIONS_UPLOAD = [x.lstrip().rstrip().lower() for x in self.config_upload_formats.split(',')] + logfile = logger.setup(self.config_logfile, self.config_log_level) + if logfile != self.config_logfile: + log.warning("Log path %s not valid, falling back to default", self.config_logfile) + self.config_logfile = logfile + self._session.merge(s) + self._session.commit() def save(self): '''Apply all configuration values to the underlying storage.''' @@ -246,8 +304,7 @@ class _ConfigSQL(object): for k, v in self.__dict__.items(): if k[0] == '_': continue - if hasattr(s, k): # and getattr(s, k, None) != v: - # log.debug("_Settings save '%s' = %r", k, v) + if hasattr(s, k): setattr(s, k, v) log.debug("_ConfigSQL updating storage") @@ -255,7 +312,9 @@ class _ConfigSQL(object): self._session.commit() self.load() - def invalidate(self): + def invalidate(self, error=None): + if error: + log.error(error) log.warning("invalidating configuration") self.db_configured = False self.config_calibre_dir = None @@ -270,12 +329,18 @@ def _migrate_table(session, orm_class): try: session.query(column).first() except exc.OperationalError as err: - log.debug("%s: %s", column_name, err) + log.debug("%s: %s", column_name, err.args[0]) if column.default is not None: if sys.version_info < (3, 0): - if isinstance(column.default.arg,unicode): + if isinstance(column.default.arg, unicode): column.default.arg = column.default.arg.encode('utf-8') - column_default = "" if column.default is None else ("DEFAULT %r" % column.default.arg) + if column.default is None: + column_default = "" + else: + if isinstance(column.default.arg, bool): + column_default = ("DEFAULT %r" % int(column.default.arg)) + else: + column_default = ("DEFAULT %r" % column.default.arg) alter_table = "ALTER TABLE %s ADD COLUMN `%s` %s %s" % (orm_class.__tablename__, column_name, column.type, @@ -287,22 +352,47 @@ def _migrate_table(session, orm_class): if changed: session.commit() + def autodetect_calibre_binary(): if sys.platform == "win32": - calibre_path = ["C:\\program files\calibre\calibre-convert.exe", - "C:\\program files(x86)\calibre\calibre-convert.exe"] + calibre_path = ["C:\\program files\\calibre\\ebook-convert.exe", + "C:\\program files(x86)\\calibre\\ebook-convert.exe", + "C:\\program files(x86)\\calibre2\\ebook-convert.exe", + "C:\\program files\\calibre2\\ebook-convert.exe"] else: calibre_path = ["/opt/calibre/ebook-convert"] for element in calibre_path: if os.path.isfile(element) and os.access(element, os.X_OK): return element - return None + return "" +def autodetect_unrar_binary(): + if sys.platform == "win32": + calibre_path = ["C:\\program files\\WinRar\\unRAR.exe", + "C:\\program files(x86)\\WinRar\\unRAR.exe"] + else: + calibre_path = ["/usr/bin/unrar"] + for element in calibre_path: + if os.path.isfile(element) and os.access(element, os.X_OK): + return element + return "" + +def autodetect_kepubify_binary(): + if sys.platform == "win32": + calibre_path = ["C:\\program files\\kepubify\\kepubify-windows-64Bit.exe", + "C:\\program files(x86)\\kepubify\\kepubify-windows-64Bit.exe"] + else: + calibre_path = ["/opt/kepubify/kepubify-linux-64bit", "/opt/kepubify/kepubify-linux-32bit"] + for element in calibre_path: + if os.path.isfile(element) and os.access(element, os.X_OK): + return element + return "" def _migrate_database(session): # make sure the table is created, if it does not exist _Base.metadata.create_all(session.bind) _migrate_table(session, _Settings) + _migrate_table(session, _Flask_Settings) def load_configuration(session): @@ -311,5 +401,20 @@ def load_configuration(session): if not session.query(_Settings).count(): session.add(_Settings()) session.commit() + conf = _ConfigSQL(session) + # Migrate from global restrictions to user based restrictions + if bool(conf.config_default_show & constants.MATURE_CONTENT) and conf.config_denied_tags == "": + conf.config_denied_tags = conf.config_mature_content_tags + conf.save() + session.query(ub.User).filter(ub.User.mature_content != True). \ + update({"denied_tags": conf.config_mature_content_tags}, synchronize_session=False) + session.commit() + return conf - return _ConfigSQL(session) +def get_flask_session_key(session): + flask_settings = session.query(_Flask_Settings).one_or_none() + if flask_settings == None: + flask_settings = _Flask_Settings(os.urandom(32)) + session.add(flask_settings) + session.commit() + return flask_settings.flask_session_key diff --git a/cps/constants.py b/cps/constants.py index 97b134035..c1bcbe592 100644 --- a/cps/constants.py +++ b/cps/constants.py @@ -80,9 +80,12 @@ MATURE_CONTENT = 1 << 11 SIDEBAR_PUBLISHER = 1 << 12 SIDEBAR_RATING = 1 << 13 SIDEBAR_FORMAT = 1 << 14 +SIDEBAR_ARCHIVED = 1 << 15 +SIDEBAR_DOWNLOAD = 1 << 16 +SIDEBAR_LIST = 1 << 17 -ADMIN_USER_ROLES = sum(r for r in ALL_ROLES.values()) & ~ROLE_EDIT_SHELFS & ~ROLE_ANONYMOUS -ADMIN_USER_SIDEBAR = (SIDEBAR_FORMAT << 1) - 1 +ADMIN_USER_ROLES = sum(r for r in ALL_ROLES.values()) & ~ROLE_ANONYMOUS +ADMIN_USER_SIDEBAR = (SIDEBAR_LIST << 1) - 1 UPDATE_STABLE = 0 << 0 AUTO_UPDATE_STABLE = 1 << 0 @@ -92,25 +95,28 @@ AUTO_UPDATE_NIGHTLY = 1 << 2 LOGIN_STANDARD = 0 LOGIN_LDAP = 1 LOGIN_OAUTH = 2 -# LOGIN_OAUTH_GOOGLE = 3 +LDAP_AUTH_ANONYMOUS = 0 +LDAP_AUTH_UNAUTHENTICATE = 1 +LDAP_AUTH_SIMPLE = 0 + +DEFAULT_MAIL_SERVER = "mail.example.org" DEFAULT_PASSWORD = "admin123" DEFAULT_PORT = 8083 +env_CALIBRE_PORT = os.environ.get("CALIBRE_PORT", DEFAULT_PORT) try: - env_CALIBRE_PORT = os.environ.get("CALIBRE_PORT", DEFAULT_PORT) DEFAULT_PORT = int(env_CALIBRE_PORT) except ValueError: print('Environment variable CALIBRE_PORT has invalid value (%s), faling back to default (8083)' % env_CALIBRE_PORT) del env_CALIBRE_PORT -EXTENSIONS_AUDIO = {'mp3', 'm4a', 'm4b'} -EXTENSIONS_CONVERT = {'pdf', 'epub', 'mobi', 'azw3', 'docx', 'rtf', 'fb2', 'lit', 'lrf', 'txt', 'htmlz', 'rtf', 'odt'} -EXTENSIONS_UPLOAD = {'txt', 'pdf', 'epub', 'mobi', 'azw', 'azw3', 'cbr', 'cbz', 'cbt', 'djvu', 'prc', 'doc', 'docx', - 'fb2', 'html', 'rtf', 'odt', 'mp3', 'm4a', 'm4b'} -# EXTENSIONS_READER = set(['txt', 'pdf', 'epub', 'zip', 'cbz', 'tar', 'cbt'] + -# (['rar','cbr'] if feature_support['rar'] else [])) +EXTENSIONS_AUDIO = {'mp3', 'mp4', 'ogg', 'opus', 'wav', 'flac', 'm4a', 'm4b'} +EXTENSIONS_CONVERT_FROM = ['pdf', 'epub', 'mobi', 'azw3', 'docx', 'rtf', 'fb2', 'lit', 'lrf', 'txt', 'htmlz', 'rtf', 'odt','cbz','cbr'] +EXTENSIONS_CONVERT_TO = ['pdf', 'epub', 'mobi', 'azw3', 'docx', 'rtf', 'fb2', 'lit', 'lrf', 'txt', 'htmlz', 'rtf', 'odt'] +EXTENSIONS_UPLOAD = {'txt', 'pdf', 'epub', 'kepub', 'mobi', 'azw', 'azw3', 'cbr', 'cbz', 'cbt', 'djvu', 'prc', 'doc', 'docx', + 'fb2', 'html', 'rtf', 'lit', 'odt', 'mp3', 'mp4', 'ogg', 'opus', 'wav', 'flac', 'm4a', 'm4b'} def has_flag(value, bit_flag): @@ -124,7 +130,7 @@ def selected_roles(dictionary): BookMeta = namedtuple('BookMeta', 'file_path, extension, title, author, cover, description, tags, series, ' 'series_id, languages') -STABLE_VERSION = {'version': '0.6.5 Beta'} +STABLE_VERSION = {'version': '0.6.10 Beta'} NIGHTLY_VERSION = {} NIGHTLY_VERSION[0] = '$Format:%H$' diff --git a/cps/converter.py b/cps/converter.py index d3482e5f9..2ff736662 100644 --- a/cps/converter.py +++ b/cps/converter.py @@ -29,8 +29,8 @@ log = logger.create() # _() necessary to make babel aware of string for translation _NOT_CONFIGURED = _('not configured') -_NOT_INSTALLED = 'not installed' -_EXECUTION_ERROR = 'Execution permissions missing' +_NOT_INSTALLED = _('not installed') +_EXECUTION_ERROR = _('Execution permissions missing') def _get_command_version(path, pattern, argument=None): @@ -48,10 +48,15 @@ def _get_command_version(path, pattern, argument=None): return _NOT_INSTALLED -def get_version(): - version = None - if config.config_ebookconverter == 1: - version = _get_command_version(config.config_converterpath, r'Amazon kindlegen\(') - elif config.config_ebookconverter == 2: - version = _get_command_version(config.config_converterpath, r'ebook-convert.*\(calibre', '--version') - return version or _NOT_CONFIGURED +def get_calibre_version(): + return _get_command_version(config.config_converterpath, r'ebook-convert.*\(calibre', '--version') \ + or _NOT_CONFIGURED + + +def get_unrar_version(): + return _get_command_version(config.config_rarfile_location, r'UNRAR.*\d') or _NOT_CONFIGURED + +def get_kepubify_version(): + return _get_command_version(config.config_kepubifypath, r'kepubify\s','--version') or _NOT_CONFIGURED + + diff --git a/cps/db.py b/cps/db.py old mode 100755 new mode 100644 index b9853896a..f648a7947 --- a/cps/db.py +++ b/cps/db.py @@ -22,59 +22,77 @@ import sys import os import re import ast +import json +from datetime import datetime from sqlalchemy import create_engine -from sqlalchemy import Table, Column, ForeignKey -from sqlalchemy import String, Integer, Boolean +from sqlalchemy import Table, Column, ForeignKey, CheckConstraint +from sqlalchemy import String, Integer, Boolean, TIMESTAMP, Float from sqlalchemy.orm import relationship, sessionmaker, scoped_session -from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm.collections import InstrumentedList +from sqlalchemy.ext.declarative import declarative_base, DeclarativeMeta +from sqlalchemy.pool import StaticPool +from flask_login import current_user +from sqlalchemy.sql.expression import and_, true, false, text, func, or_ +from sqlalchemy.ext.associationproxy import association_proxy +from babel import Locale as LC +from babel.core import UnknownLocaleError +from flask_babel import gettext as _ +from . import logger, ub, isoLanguages +from .pagination import Pagination -session = None -cc_exceptions = ['datetime', 'comments', 'float', 'composite', 'series'] +from weakref import WeakSet + +try: + import unidecode + use_unidecode = True +except ImportError: + use_unidecode = False + +cc_exceptions = ['datetime', 'comments', 'composite', 'series'] cc_classes = {} - Base = declarative_base() books_authors_link = Table('books_authors_link', Base.metadata, - Column('book', Integer, ForeignKey('books.id'), primary_key=True), - Column('author', Integer, ForeignKey('authors.id'), primary_key=True) - ) + Column('book', Integer, ForeignKey('books.id'), primary_key=True), + Column('author', Integer, ForeignKey('authors.id'), primary_key=True) + ) books_tags_link = Table('books_tags_link', Base.metadata, - Column('book', Integer, ForeignKey('books.id'), primary_key=True), - Column('tag', Integer, ForeignKey('tags.id'), primary_key=True) - ) + Column('book', Integer, ForeignKey('books.id'), primary_key=True), + Column('tag', Integer, ForeignKey('tags.id'), primary_key=True) + ) books_series_link = Table('books_series_link', Base.metadata, - Column('book', Integer, ForeignKey('books.id'), primary_key=True), - Column('series', Integer, ForeignKey('series.id'), primary_key=True) - ) + Column('book', Integer, ForeignKey('books.id'), primary_key=True), + Column('series', Integer, ForeignKey('series.id'), primary_key=True) + ) books_ratings_link = Table('books_ratings_link', Base.metadata, - Column('book', Integer, ForeignKey('books.id'), primary_key=True), - Column('rating', Integer, ForeignKey('ratings.id'), primary_key=True) - ) + Column('book', Integer, ForeignKey('books.id'), primary_key=True), + Column('rating', Integer, ForeignKey('ratings.id'), primary_key=True) + ) books_languages_link = Table('books_languages_link', Base.metadata, - Column('book', Integer, ForeignKey('books.id'), primary_key=True), - Column('lang_code', Integer, ForeignKey('languages.id'), primary_key=True) - ) + Column('book', Integer, ForeignKey('books.id'), primary_key=True), + Column('lang_code', Integer, ForeignKey('languages.id'), primary_key=True) + ) books_publishers_link = Table('books_publishers_link', Base.metadata, - Column('book', Integer, ForeignKey('books.id'), primary_key=True), - Column('publisher', Integer, ForeignKey('publishers.id'), primary_key=True) - ) + Column('book', Integer, ForeignKey('books.id'), primary_key=True), + Column('publisher', Integer, ForeignKey('publishers.id'), primary_key=True) + ) class Identifiers(Base): __tablename__ = 'identifiers' id = Column(Integer, primary_key=True) - type = Column(String) - val = Column(String) - book = Column(Integer, ForeignKey('books.id')) + type = Column(String(collation='NOCASE'), nullable=False, default="isbn") + val = Column(String(collation='NOCASE'), nullable=False) + book = Column(Integer, ForeignKey('books.id'), nullable=False) def __init__(self, val, id_type, book): self.val = val @@ -82,41 +100,61 @@ class Identifiers(Base): self.book = book def formatType(self): - if self.type == "amazon": + format_type = self.type.lower() + if format_type == 'amazon': return u"Amazon" - elif self.type == "isbn": + elif format_type.startswith("amazon_"): + return u"Amazon.{0}".format(format_type[7:]) + elif format_type == "isbn": return u"ISBN" - elif self.type == "doi": + elif format_type == "doi": return u"DOI" - elif self.type == "goodreads": + elif format_type == "douban": + return u"Douban" + elif format_type == "goodreads": return u"Goodreads" - elif self.type == "google": + elif format_type == "google": return u"Google Books" - elif self.type == "kobo": + elif format_type == "kobo": return u"Kobo" - if self.type == "lubimyczytac": + elif format_type == "litres": + return u"ЛитРес" + elif format_type == "issn": + return u"ISSN" + elif format_type == "isfdb": + return u"ISFDB" + if format_type == "lubimyczytac": return u"Lubimyczytac" else: return self.type def __repr__(self): - if self.type == "amazon": - return u"https://amzn.com/{0}".format(self.val) - elif self.type == "isbn": - return u"http://www.worldcat.org/isbn/{0}".format(self.val) - elif self.type == "doi": - return u"http://dx.doi.org/{0}".format(self.val) - elif self.type == "goodreads": - return u"http://www.goodreads.com/book/show/{0}".format(self.val) - elif self.type == "douban": + format_type = self.type.lower() + if format_type == "amazon" or format_type == "asin": + return u"https://amazon.com/dp/{0}".format(self.val) + elif format_type.startswith('amazon_'): + return u"https://amazon.{0}/dp/{1}".format(format_type[7:], self.val) + elif format_type == "isbn": + return u"https://www.worldcat.org/isbn/{0}".format(self.val) + elif format_type == "doi": + return u"https://dx.doi.org/{0}".format(self.val) + elif format_type == "goodreads": + return u"https://www.goodreads.com/book/show/{0}".format(self.val) + elif format_type == "douban": return u"https://book.douban.com/subject/{0}".format(self.val) - elif self.type == "google": + elif format_type == "google": return u"https://books.google.com/books?id={0}".format(self.val) - elif self.type == "kobo": + elif format_type == "kobo": return u"https://www.kobo.com/ebook/{0}".format(self.val) - elif self.type == "lubimyczytac": - return u" http://lubimyczytac.pl/ksiazka/{0}".format(self.val) - elif self.type == "url": + elif format_type == "lubimyczytac": + return u"https://lubimyczytac.pl/ksiazka/{0}/ksiazka".format(self.val) + elif format_type == "litres": + return u"https://www.litres.ru/{0}".format(self.val) + elif format_type == "issn": + return u"https://portal.issn.org/resource/ISSN/{0}".format(self.val) + elif format_type == "isfdb": + return u"http://www.isfdb.org/cgi-bin/pl.cgi?{0}".format(self.val) + elif format_type == "url": return u"{0}".format(self.val) else: return u"" @@ -126,13 +164,16 @@ class Comments(Base): __tablename__ = 'comments' id = Column(Integer, primary_key=True) - text = Column(String) - book = Column(Integer, ForeignKey('books.id')) + text = Column(String(collation='NOCASE'), nullable=False) + book = Column(Integer, ForeignKey('books.id'), nullable=False) def __init__(self, text, book): self.text = text self.book = book + def get(self): + return self.text + def __repr__(self): return u"".format(self.text) @@ -141,11 +182,14 @@ class Tags(Base): __tablename__ = 'tags' id = Column(Integer, primary_key=True, autoincrement=True) - name = Column(String) + name = Column(String(collation='NOCASE'), unique=True, nullable=False) def __init__(self, name): self.name = name + def get(self): + return self.name + def __repr__(self): return u"".format(self.name) @@ -154,15 +198,18 @@ class Authors(Base): __tablename__ = 'authors' id = Column(Integer, primary_key=True) - name = Column(String) - sort = Column(String) - link = Column(String) + name = Column(String(collation='NOCASE'), unique=True, nullable=False) + sort = Column(String(collation='NOCASE')) + link = Column(String, nullable=False, default="") def __init__(self, name, sort, link): self.name = name self.sort = sort self.link = link + def get(self): + return self.name + def __repr__(self): return u"".format(self.name, self.sort, self.link) @@ -171,13 +218,16 @@ class Series(Base): __tablename__ = 'series' id = Column(Integer, primary_key=True) - name = Column(String) - sort = Column(String) + name = Column(String(collation='NOCASE'), unique=True, nullable=False) + sort = Column(String(collation='NOCASE')) def __init__(self, name, sort): self.name = name self.sort = sort + def get(self): + return self.name + def __repr__(self): return u"".format(self.name, self.sort) @@ -186,11 +236,14 @@ class Ratings(Base): __tablename__ = 'ratings' id = Column(Integer, primary_key=True) - rating = Column(Integer) + rating = Column(Integer, CheckConstraint('rating>-1 AND rating<11'), unique=True) def __init__(self, rating): self.rating = rating + def get(self): + return self.rating + def __repr__(self): return u"".format(self.rating) @@ -199,11 +252,17 @@ class Languages(Base): __tablename__ = 'languages' id = Column(Integer, primary_key=True) - lang_code = Column(String) + lang_code = Column(String(collation='NOCASE'), nullable=False, unique=True) def __init__(self, lang_code): self.lang_code = lang_code + def get(self): + if self.language_name: + return self.language_name + else: + return self.lang_code + def __repr__(self): return u"".format(self.lang_code) @@ -212,25 +271,29 @@ class Publishers(Base): __tablename__ = 'publishers' id = Column(Integer, primary_key=True) - name = Column(String) - sort = Column(String) + name = Column(String(collation='NOCASE'), nullable=False, unique=True) + sort = Column(String(collation='NOCASE')) def __init__(self, name, sort): self.name = name self.sort = sort + def get(self): + return self.name + def __repr__(self): return u"".format(self.name, self.sort) class Data(Base): __tablename__ = 'data' + __table_args__ = {'schema': 'calibre'} id = Column(Integer, primary_key=True) - book = Column(Integer, ForeignKey('books.id')) - format = Column(String) - uncompressed_size = Column(Integer) - name = Column(String) + book = Column(Integer, ForeignKey('books.id'), nullable=False) + format = Column(String(collation='NOCASE'), nullable=False) + uncompressed_size = Column(Integer, nullable=False) + name = Column(String, nullable=False) def __init__(self, book, book_format, uncompressed_size, name): self.book = book @@ -238,6 +301,10 @@ class Data(Base): self.uncompressed_size = uncompressed_size self.name = name + # ToDo: Check + def get(self): + return self.name + def __repr__(self): return u"".format(self.book, self.format, self.uncompressed_size, self.name) @@ -245,22 +312,25 @@ class Data(Base): class Books(Base): __tablename__ = 'books' - DEFAULT_PUBDATE = "0101-01-01 00:00:00+00:00" + DEFAULT_PUBDATE = datetime(101, 1, 1, 0, 0, 0, 0) # ("0101-01-01 00:00:00+00:00") - id = Column(Integer, primary_key=True) - title = Column(String) - sort = Column(String) - author_sort = Column(String) - timestamp = Column(String) - pubdate = Column(String) - series_index = Column(String) - last_modified = Column(String) - path = Column(String) - has_cover = Column(Integer) + id = Column(Integer, primary_key=True, autoincrement=True) + title = Column(String(collation='NOCASE'), nullable=False, default='Unknown') + sort = Column(String(collation='NOCASE')) + author_sort = Column(String(collation='NOCASE')) + timestamp = Column(TIMESTAMP, default=datetime.utcnow) + pubdate = Column(TIMESTAMP, default=DEFAULT_PUBDATE) + series_index = Column(String, nullable=False, default="1.0") + last_modified = Column(TIMESTAMP, default=datetime.utcnow) + path = Column(String, default="", nullable=False) + has_cover = Column(Integer, default=0) uuid = Column(String) + isbn = Column(String(collation='NOCASE'), default="") + # Iccn = Column(String(collation='NOCASE'), default="") + flags = Column(Integer, nullable=False, default=1) authors = relationship('Authors', secondary=books_authors_link, backref='books') - tags = relationship('Tags', secondary=books_tags_link, backref='books',order_by="Tags.name") + tags = relationship('Tags', secondary=books_tags_link, backref='books', order_by="Tags.name") comments = relationship('Comments', backref='books') data = relationship('Data', backref='books') series = relationship('Series', secondary=books_series_link, backref='books') @@ -279,7 +349,8 @@ class Books(Base): self.series_index = series_index self.last_modified = last_modified self.path = path - self.has_cover = has_cover + self.has_cover = (has_cover != None) + def __repr__(self): return u"".format(self.title, self.sort, self.author_sort, @@ -288,7 +359,8 @@ class Books(Base): @property def atom_timestamp(self): - return (self.timestamp or '').replace(' ', 'T') + return (self.timestamp.strftime('%Y-%m-%dT%H:%M:%S+00:00') or '') + class Custom_Columns(Base): __tablename__ = 'custom_columns' @@ -310,121 +382,387 @@ class Custom_Columns(Base): return display_dict -def update_title_sort(config, conn=None): - # user defined sort function for calibre databases (Series, etc.) - def _title_sort(title): - # calibre sort stuff - title_pat = re.compile(config.config_title_regex, re.IGNORECASE) - match = title_pat.search(title) - if match: - prep = match.group(1) - title = title.replace(prep, '') + ', ' + prep - return title.strip() +class AlchemyEncoder(json.JSONEncoder): - conn = conn or session.connection().connection.connection - conn.create_function("title_sort", 1, _title_sort) + def default(self, obj): + if isinstance(obj.__class__, DeclarativeMeta): + # an SQLAlchemy class + fields = {} + for field in [x for x in dir(obj) if not x.startswith('_') and x != 'metadata']: + if field == 'books': + continue + data = obj.__getattribute__(field) + try: + if isinstance(data, str): + data = data.replace("'", "\'") + elif isinstance(data, InstrumentedList): + el = list() + for ele in data: + if ele.get: + el.append(ele.get()) + else: + el.append(json.dumps(ele, cls=AlchemyEncoder)) + data = ",".join(el) + if data == '[]': + data = "" + else: + json.dumps(data) + fields[field] = data + except: + fields[field] = "" + # a json-encodable dict + return fields + + return json.JSONEncoder.default(self, obj) -def setup_db(config): - dispose() +class CalibreDB(): + _init = False + engine = None + config = None + session_factory = None + # This is a WeakSet so that references here don't keep other CalibreDB + # instances alive once they reach the end of their respective scopes + instances = WeakSet() - if not config.config_calibre_dir: - config.invalidate() - return False + def __init__(self): + """ Initialize a new CalibreDB session + """ + self.session = None + if self._init: + self.initSession() - dbpath = os.path.join(config.config_calibre_dir, "metadata.db") - if not os.path.exists(dbpath): - config.invalidate() - return False + self.instances.add(self) - try: - engine = create_engine('sqlite:///{0}'.format(dbpath), - echo=False, - isolation_level="SERIALIZABLE", - connect_args={'check_same_thread': False}) - conn = engine.connect() - except: - config.invalidate() - return False - config.db_configured = True - update_title_sort(config, conn.connection) - # conn.connection.create_function('lower', 1, lcase) - # conn.connection.create_function('upper', 1, ucase) + def initSession(self): + self.session = self.session_factory() + self.update_title_sort(self.config) - if not cc_classes: - cc = conn.execute("SELECT id, datatype FROM custom_columns") + @classmethod + def setup_db(cls, config, app_db_path): + cls.config = config + cls.dispose() + + if not config.config_calibre_dir: + config.invalidate() + return False + + dbpath = os.path.join(config.config_calibre_dir, "metadata.db") + if not os.path.exists(dbpath): + config.invalidate() + return False + + try: + cls.engine = create_engine('sqlite://', + echo=False, + isolation_level="SERIALIZABLE", + connect_args={'check_same_thread': False}, + poolclass=StaticPool) + cls.engine.execute("attach database '{}' as calibre;".format(dbpath)) + cls.engine.execute("attach database '{}' as app_settings;".format(app_db_path)) + + conn = cls.engine.connect() + # conn.text_factory = lambda b: b.decode(errors = 'ignore') possible fix for #1302 + except Exception as e: + config.invalidate(e) + return False + + config.db_configured = True + + if not cc_classes: + cc = conn.execute("SELECT id, datatype FROM custom_columns") + + cc_ids = [] + books_custom_column_links = {} + for row in cc: + if row.datatype not in cc_exceptions: + if row.datatype == 'series': + dicttable = {'__tablename__': 'books_custom_column_' + str(row.id) + '_link', + 'id': Column(Integer, primary_key=True), + 'book': Column(Integer, ForeignKey('books.id'), + primary_key=True), + 'map_value': Column('value', Integer, + ForeignKey('custom_column_' + + str(row.id) + '.id'), + primary_key=True), + 'extra': Column(Float), + 'asoc': relationship('custom_column_' + str(row.id), uselist=False), + 'value': association_proxy('asoc', 'value') + } + books_custom_column_links[row.id] = type(str('books_custom_column_' + str(row.id) + '_link'), + (Base,), dicttable) + else: + books_custom_column_links[row.id] = Table('books_custom_column_' + str(row.id) + '_link', + Base.metadata, + Column('book', Integer, ForeignKey('books.id'), + primary_key=True), + Column('value', Integer, + ForeignKey('custom_column_' + + str(row.id) + '.id'), + primary_key=True) + ) + cc_ids.append([row.id, row.datatype]) - cc_ids = [] - books_custom_column_links = {} - for row in cc: - if row.datatype not in cc_exceptions: - books_custom_column_links[row.id] = Table('books_custom_column_' + str(row.id) + '_link', Base.metadata, - Column('book', Integer, ForeignKey('books.id'), - primary_key=True), - Column('value', Integer, - ForeignKey('custom_column_' + str(row.id) + '.id'), - primary_key=True) - ) - cc_ids.append([row.id, row.datatype]) - if row.datatype == 'bool': ccdict = {'__tablename__': 'custom_column_' + str(row.id), - 'id': Column(Integer, primary_key=True), - 'book': Column(Integer, ForeignKey('books.id')), - 'value': Column(Boolean)} - elif row.datatype == 'int': - ccdict = {'__tablename__': 'custom_column_' + str(row.id), - 'id': Column(Integer, primary_key=True), - 'book': Column(Integer, ForeignKey('books.id')), - 'value': Column(Integer)} + 'id': Column(Integer, primary_key=True)} + if row.datatype == 'float': + ccdict['value'] = Column(Float) + elif row.datatype == 'int': + ccdict['value'] = Column(Integer) + elif row.datatype == 'bool': + ccdict['value'] = Column(Boolean) + else: + ccdict['value'] = Column(String) + if row.datatype in ['float', 'int', 'bool']: + ccdict['book'] = Column(Integer, ForeignKey('books.id')) + cc_classes[row.id] = type(str('custom_column_' + str(row.id)), (Base,), ccdict) + + for cc_id in cc_ids: + if (cc_id[1] == 'bool') or (cc_id[1] == 'int') or (cc_id[1] == 'float'): + setattr(Books, + 'custom_column_' + str(cc_id[0]), + relationship(cc_classes[cc_id[0]], + primaryjoin=( + Books.id == cc_classes[cc_id[0]].book), + backref='books')) + elif (cc_id[1] == 'series'): + setattr(Books, + 'custom_column_' + str(cc_id[0]), + relationship(books_custom_column_links[cc_id[0]], + backref='books')) else: - ccdict = {'__tablename__': 'custom_column_' + str(row.id), - 'id': Column(Integer, primary_key=True), - 'value': Column(String)} - cc_classes[row.id] = type(str('Custom_Column_' + str(row.id)), (Base,), ccdict) + setattr(Books, + 'custom_column_' + str(cc_id[0]), + relationship(cc_classes[cc_id[0]], + secondary=books_custom_column_links[cc_id[0]], + backref='books')) - for cc_id in cc_ids: - if (cc_id[1] == 'bool') or (cc_id[1] == 'int'): - setattr(Books, 'custom_column_' + str(cc_id[0]), relationship(cc_classes[cc_id[0]], - primaryjoin=( - Books.id == cc_classes[cc_id[0]].book), - backref='books')) - else: - setattr(Books, 'custom_column_' + str(cc_id[0]), relationship(cc_classes[cc_id[0]], - secondary=books_custom_column_links[cc_id[0]], - backref='books')) + cls.session_factory = scoped_session(sessionmaker(autocommit=False, + autoflush=True, + bind=cls.engine)) + for inst in cls.instances: + inst.initSession() + + cls._init = True + return True + + def get_book(self, book_id): + return self.session.query(Books).filter(Books.id == book_id).first() + + def get_filtered_book(self, book_id, allow_show_archived=False): + return self.session.query(Books).filter(Books.id == book_id). \ + filter(self.common_filters(allow_show_archived)).first() + + def get_book_by_uuid(self, book_uuid): + return self.session.query(Books).filter(Books.uuid == book_uuid).first() + + def get_book_format(self, book_id, format): + return self.session.query(Data).filter(Data.book == book_id).filter(Data.format == format).first() + + # Language and content filters for displaying in the UI + def common_filters(self, allow_show_archived=False): + if not allow_show_archived: + archived_books = ( + ub.session.query(ub.ArchivedBook) + .filter(ub.ArchivedBook.user_id == int(current_user.id)) + .filter(ub.ArchivedBook.is_archived == True) + .all() + ) + archived_book_ids = [archived_book.book_id for archived_book in archived_books] + archived_filter = Books.id.notin_(archived_book_ids) + else: + archived_filter = true() + + if current_user.filter_language() != "all": + lang_filter = Books.languages.any(Languages.lang_code == current_user.filter_language()) + else: + lang_filter = true() + negtags_list = current_user.list_denied_tags() + postags_list = current_user.list_allowed_tags() + neg_content_tags_filter = false() if negtags_list == [''] else Books.tags.any(Tags.name.in_(negtags_list)) + pos_content_tags_filter = true() if postags_list == [''] else Books.tags.any(Tags.name.in_(postags_list)) + if self.config.config_restricted_column: + pos_cc_list = current_user.allowed_column_value.split(',') + pos_content_cc_filter = true() if pos_cc_list == [''] else \ + getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \ + any(cc_classes[self.config.config_restricted_column].value.in_(pos_cc_list)) + neg_cc_list = current_user.denied_column_value.split(',') + neg_content_cc_filter = false() if neg_cc_list == [''] else \ + getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \ + any(cc_classes[self.config.config_restricted_column].value.in_(neg_cc_list)) + else: + pos_content_cc_filter = true() + neg_content_cc_filter = false() + return and_(lang_filter, pos_content_tags_filter, ~neg_content_tags_filter, + pos_content_cc_filter, ~neg_content_cc_filter, archived_filter) + + # Fill indexpage with all requested data from database + def fill_indexpage(self, page, pagesize, database, db_filter, order, *join): + return self.fill_indexpage_with_archived_books(page, pagesize, database, db_filter, order, False, *join) + + def fill_indexpage_with_archived_books(self, page, pagesize, database, db_filter, order, allow_show_archived, + *join): + pagesize = pagesize or self.config.config_books_per_page + if current_user.show_detail_random(): + randm = self.session.query(Books) \ + .filter(self.common_filters(allow_show_archived)) \ + .order_by(func.random()) \ + .limit(self.config.config_random_books) + else: + randm = false() + off = int(int(pagesize) * (page - 1)) + query = self.session.query(database) \ + .join(*join, isouter=True) \ + .filter(db_filter) \ + .filter(self.common_filters(allow_show_archived)) + pagination = Pagination(page, pagesize, + len(query.all())) + entries = query.order_by(*order).offset(off).limit(pagesize).all() + for book in entries: + book = self.order_authors(book) + return entries, randm, pagination + + # Orders all Authors in the list according to authors sort + def order_authors(self, entry): + sort_authors = entry.author_sort.split('&') + authors_ordered = list() + error = False + ids = [a.id for a in entry.authors] + for auth in sort_authors: + results = self.session.query(Authors).filter(Authors.sort == auth.lstrip().strip()).all() + # ToDo: How to handle not found authorname + if not len(results): + error = True + break + for r in results: + if r.id in ids: + authors_ordered.append(r) + if not error: + entry.authors = authors_ordered + return entry + + def get_typeahead(self, database, query, replace=('', ''), tag_filter=true()): + query = query or '' + self.session.connection().connection.connection.create_function("lower", 1, lcase) + entries = self.session.query(database).filter(tag_filter). \ + filter(func.lower(database.name).ilike("%" + query + "%")).all() + json_dumps = json.dumps([dict(name=r.name.replace(*replace)) for r in entries]) + return json_dumps + + def check_exists_book(self, authr, title): + self.session.connection().connection.connection.create_function("lower", 1, lcase) + q = list() + authorterms = re.split(r'\s*&\s*', authr) + for authorterm in authorterms: + q.append(Books.authors.any(func.lower(Authors.name).ilike("%" + authorterm + "%"))) + + return self.session.query(Books) \ + .filter(and_(Books.authors.any(and_(*q)), func.lower(Books.title).ilike("%" + title + "%"))).first() + + # read search results from calibre-database and return it (function is used for feed and simple search + def get_search_results(self, term, offset=None, order=None, limit=None): + order = order or [Books.sort] + pagination = None + term.strip().lower() + self.session.connection().connection.connection.create_function("lower", 1, lcase) + q = list() + authorterms = re.split("[, ]+", term) + for authorterm in authorterms: + q.append(Books.authors.any(func.lower(Authors.name).ilike("%" + authorterm + "%"))) + result = self.session.query(Books).filter(self.common_filters(True)).filter( + or_(Books.tags.any(func.lower(Tags.name).ilike("%" + term + "%")), + Books.series.any(func.lower(Series.name).ilike("%" + term + "%")), + Books.authors.any(and_(*q)), + Books.publishers.any(func.lower(Publishers.name).ilike("%" + term + "%")), + func.lower(Books.title).ilike("%" + term + "%") + )).order_by(*order).all() + result_count = len(result) + if offset != None and limit != None: + offset = int(offset) + limit_all = offset + int(limit) + pagination = Pagination((offset / (int(limit)) + 1), limit, result_count) + else: + offset = 0 + limit_all = result_count + + ub.store_ids(result) + return result[offset:limit_all], result_count, pagination + + # Creates for all stored languages a translated speaking name in the array for the UI + def speaking_language(self, languages=None): + from . import get_locale + + if not languages: + languages = self.session.query(Languages) \ + .join(books_languages_link) \ + .join(Books) \ + .filter(self.common_filters()) \ + .group_by(text('books_languages_link.lang_code')).all() + for lang in languages: + try: + cur_l = LC.parse(lang.lang_code) + lang.name = cur_l.get_language_name(get_locale()) + except UnknownLocaleError: + lang.name = _(isoLanguages.get(part3=lang.lang_code).name) + return languages + + def update_title_sort(self, config, conn=None): + # user defined sort function for calibre databases (Series, etc.) + def _title_sort(title): + # calibre sort stuff + title_pat = re.compile(config.config_title_regex, re.IGNORECASE) + match = title_pat.search(title) + if match: + prep = match.group(1) + title = title[len(prep):] + ', ' + prep + return title.strip() + + conn = conn or self.session.connection().connection.connection + conn.create_function("title_sort", 1, _title_sort) + + @classmethod + def dispose(cls): + # global session + + for inst in cls.instances: + old_session = inst.session + inst.session = None + if old_session: + try: + old_session.close() + except: + pass + if old_session.bind: + try: + old_session.bind.dispose() + except Exception: + pass + + for attr in list(Books.__dict__.keys()): + if attr.startswith("custom_column_"): + setattr(Books, attr, None) + + for db_class in cc_classes.values(): + Base.metadata.remove(db_class.__table__) + cc_classes.clear() + + for table in reversed(Base.metadata.sorted_tables): + name = table.key + if name.startswith("custom_column_") or name.startswith("books_custom_column_"): + if table is not None: + Base.metadata.remove(table) + + def reconnect_db(self, config, app_db_path): + self.dispose() + self.engine.dispose() + self.setup_db(config, app_db_path) - global session - Session = scoped_session(sessionmaker(autocommit=False, - autoflush=False, - bind=engine)) - session = Session() - return True - - -def dispose(): - global session - - old_session = session - session = None - if old_session: - try: old_session.close() - except: pass - if old_session.bind: - try: old_session.bind.dispose() - except: pass - - for attr in list(Books.__dict__.keys()): - if attr.startswith("custom_column_"): - setattr(Books, attr, None) - - for db_class in cc_classes.values(): - Base.metadata.remove(db_class.__table__) - cc_classes.clear() - - for table in reversed(Base.metadata.sorted_tables): - name = table.key - if name.startswith("custom_column_") or name.startswith("books_custom_column_"): - if table is not None: - Base.metadata.remove(table) +def lcase(s): + try: + return unidecode.unidecode(s.lower()) + except Exception as e: + log = logger.create() + log.exception(e) + return s.lower() diff --git a/cps/debug_info.py b/cps/debug_info.py new file mode 100644 index 000000000..75ef3bb8a --- /dev/null +++ b/cps/debug_info.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- + +# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) +# Copyright (C) 2012-2019 cervinko, idalin, SiphonSquirrel, ouzklcn, akushsky, +# OzzieIsaacs, bodybybuddha, jkrehm, matthazinski, janeczku +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import shutil +import glob +import zipfile +import json +import io +import os + +from flask import send_file + +from . import logger, config +from .about import collect_stats + +log = logger.create() + +def assemble_logfiles(file_name): + log_list = glob.glob(file_name + '*') + wfd = io.StringIO() + for f in log_list: + with open(f, 'r') as fd: + shutil.copyfileobj(fd, wfd) + return send_file(wfd, + as_attachment=True, + attachment_filename=os.path.basename(file_name)) + +def send_debug(): + file_list = glob.glob(logger.get_logfile(config.config_logfile) + '*') + file_list.extend(glob.glob(logger.get_accesslogfile(config.config_access_logfile) + '*')) + memory_zip = io.BytesIO() + with zipfile.ZipFile(memory_zip, 'w', compression=zipfile.ZIP_DEFLATED) as zf: + zf.writestr('libs.txt', json.dumps(collect_stats())) + for fp in file_list: + zf.write(fp, os.path.basename(fp)) + memory_zip.seek(0) + return send_file(memory_zip, + as_attachment=True, + attachment_filename="Calibre-Web-debug-pack.zip") diff --git a/cps/editbooks.py b/cps/editbooks.py index f0156f71c..7d207ed3d 100644 --- a/cps/editbooks.py +++ b/cps/editbooks.py @@ -22,18 +22,21 @@ from __future__ import division, print_function, unicode_literals import os -import datetime +from datetime import datetime import json -from shutil import move, copyfile +from shutil import copyfile from uuid import uuid4 from flask import Blueprint, request, flash, redirect, url_for, abort, Markup, Response from flask_babel import gettext as _ from flask_login import current_user, login_required +from sqlalchemy.exc import OperationalError from . import constants, logger, isoLanguages, gdriveutils, uploader, helper -from . import config, get_locale, db, ub, worker -from .helper import order_authors, common_filters +from . import config, get_locale, ub, db +from . import calibre_db +from .services.worker import WorkerThread +from .tasks.upload import TaskUpload from .web import login_required_if_no_ano, render_title_template, edit_required, upload_required @@ -47,7 +50,7 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session # passing input_elements not as a list may lead to undesired results if not isinstance(input_elements, list): raise TypeError(str(input_elements) + " should be passed as a list") - + changed = False input_elements = [x for x in input_elements if x != ''] # we have all input element (authors, series, tags) names now # 1. search for elements to remove @@ -88,6 +91,7 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session if len(del_elements) > 0: for del_element in del_elements: db_book_object.remove(del_element) + changed = True if len(del_element.books) == 0: db_session.delete(del_element) # if there are elements to add, we add them now! @@ -114,102 +118,176 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session else: # db_type should be tag or language new_element = db_object(add_element) if db_element is None: + changed = True db_session.add(new_element) db_book_object.append(new_element) else: if db_type == 'custom': if db_element.value != add_element: new_element.value = add_element - # new_element = db_element elif db_type == 'languages': if db_element.lang_code != add_element: db_element.lang_code = add_element - # new_element = db_element elif db_type == 'series': if db_element.name != add_element: - db_element.name = add_element # = add_element # new_element = db_object(add_element, add_element) + db_element.name = add_element db_element.sort = add_element - # new_element = db_element elif db_type == 'author': if db_element.name != add_element: db_element.name = add_element db_element.sort = add_element.replace('|', ',') - # new_element = db_element elif db_type == 'publisher': if db_element.name != add_element: db_element.name = add_element db_element.sort = None - # new_element = db_element elif db_element.name != add_element: db_element.name = add_element - # new_element = db_element # add element to book + changed = True db_book_object.append(db_element) + return changed -@editbook.route("/delete//", defaults={'book_format': ""}) -@editbook.route("/delete///") +def modify_identifiers(input_identifiers, db_identifiers, db_session): + """Modify Identifiers to match input information. + input_identifiers is a list of read-to-persist Identifiers objects. + db_identifiers is a list of already persisted list of Identifiers objects.""" + changed = False + error = False + input_dict = dict([(identifier.type.lower(), identifier) for identifier in input_identifiers]) + if len(input_identifiers) != len(input_dict): + error = True + db_dict = dict([(identifier.type.lower(), identifier) for identifier in db_identifiers ]) + # delete db identifiers not present in input or modify them with input val + for identifier_type, identifier in db_dict.items(): + if identifier_type not in input_dict.keys(): + db_session.delete(identifier) + changed = True + else: + input_identifier = input_dict[identifier_type] + identifier.type = input_identifier.type + identifier.val = input_identifier.val + # add input identifiers not present in db + for identifier_type, identifier in input_dict.items(): + if identifier_type not in db_dict.keys(): + db_session.add(identifier) + changed = True + return changed, error + +@editbook.route("/ajax/delete/") @login_required -def delete_book(book_id, book_format): +def delete_book_from_details(book_id): + return Response(delete_book(book_id,"", True), mimetype='application/json') + + +@editbook.route("/delete/", defaults={'book_format': ""}) +@editbook.route("/delete//") +@login_required +def delete_book_ajax(book_id, book_format): + return delete_book(book_id,book_format, False) + +def delete_book(book_id, book_format, jsonResponse): + warning = {} if current_user.role_delete_books(): - book = db.session.query(db.Books).filter(db.Books.id == book_id).first() + book = calibre_db.get_book(book_id) if book: - helper.delete_book(book, config.config_calibre_dir, book_format=book_format.upper()) - if not book_format: - # delete book from Shelfs, Downloads, Read list - ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book_id).delete() - ub.session.query(ub.ReadBook).filter(ub.ReadBook.book_id == book_id).delete() - ub.delete_download(book_id) - ub.session.commit() - - # check if only this book links to: - # author, language, series, tags, custom columns - modify_database_object([u''], book.authors, db.Authors, db.session, 'author') - modify_database_object([u''], book.tags, db.Tags, db.session, 'tags') - modify_database_object([u''], book.series, db.Series, db.session, 'series') - modify_database_object([u''], book.languages, db.Languages, db.session, 'languages') - modify_database_object([u''], book.publishers, db.Publishers, db.session, 'publishers') - - cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all() - for c in cc: - cc_string = "custom_column_" + str(c.id) - if not c.is_multiple: - if len(getattr(book, cc_string)) > 0: - if c.datatype == 'bool' or c.datatype == 'integer': - del_cc = getattr(book, cc_string)[0] - getattr(book, cc_string).remove(del_cc) - db.session.delete(del_cc) - elif c.datatype == 'rating': - del_cc = getattr(book, cc_string)[0] - getattr(book, cc_string).remove(del_cc) - if len(del_cc.books) == 0: - db.session.delete(del_cc) - else: - del_cc = getattr(book, cc_string)[0] - getattr(book, cc_string).remove(del_cc) - db.session.delete(del_cc) + try: + result, error = helper.delete_book(book, config.config_calibre_dir, book_format=book_format.upper()) + if not result: + if jsonResponse: + return json.dumps({"location": url_for("editbook.edit_book"), + "type": "alert", + "format": "", + "error": error}), else: - modify_database_object([u''], getattr(book, cc_string), db.cc_classes[c.id], - db.session, 'custom') - db.session.query(db.Books).filter(db.Books.id == book_id).delete() - else: - db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == book_format).delete() - db.session.commit() + flash(error, category="error") + return redirect(url_for('editbook.edit_book', book_id=book_id)) + if error: + if jsonResponse: + warning = {"location": url_for("editbook.edit_book"), + "type": "warning", + "format": "", + "error": error} + else: + flash(error, category="warning") + if not book_format: + # delete book from Shelfs, Downloads, Read list + ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book_id).delete() + ub.session.query(ub.ReadBook).filter(ub.ReadBook.book_id == book_id).delete() + ub.delete_download(book_id) + ub.session.commit() + + # check if only this book links to: + # author, language, series, tags, custom columns + modify_database_object([u''], book.authors, db.Authors, calibre_db.session, 'author') + modify_database_object([u''], book.tags, db.Tags, calibre_db.session, 'tags') + modify_database_object([u''], book.series, db.Series, calibre_db.session, 'series') + modify_database_object([u''], book.languages, db.Languages, calibre_db.session, 'languages') + modify_database_object([u''], book.publishers, db.Publishers, calibre_db.session, 'publishers') + + cc = calibre_db.session.query(db.Custom_Columns).\ + filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all() + for c in cc: + cc_string = "custom_column_" + str(c.id) + if not c.is_multiple: + if len(getattr(book, cc_string)) > 0: + if c.datatype == 'bool' or c.datatype == 'integer' or c.datatype == 'float': + del_cc = getattr(book, cc_string)[0] + getattr(book, cc_string).remove(del_cc) + log.debug('remove ' + str(c.id)) + calibre_db.session.delete(del_cc) + calibre_db.session.commit() + elif c.datatype == 'rating': + del_cc = getattr(book, cc_string)[0] + getattr(book, cc_string).remove(del_cc) + if len(del_cc.books) == 0: + log.debug('remove ' + str(c.id)) + calibre_db.session.delete(del_cc) + calibre_db.session.commit() + else: + del_cc = getattr(book, cc_string)[0] + getattr(book, cc_string).remove(del_cc) + log.debug('remove ' + str(c.id)) + calibre_db.session.delete(del_cc) + calibre_db.session.commit() + else: + modify_database_object([u''], getattr(book, cc_string), db.cc_classes[c.id], + calibre_db.session, 'custom') + calibre_db.session.query(db.Books).filter(db.Books.id == book_id).delete() + else: + calibre_db.session.query(db.Data).filter(db.Data.book == book.id).\ + filter(db.Data.format == book_format).delete() + calibre_db.session.commit() + except Exception as e: + log.exception(e) + calibre_db.session.rollback() else: # book not found log.error('Book with id "%s" could not be deleted: not found', book_id) if book_format: - return redirect(url_for('editbook.edit_book', book_id=book_id)) + if jsonResponse: + return json.dumps([warning, {"location": url_for("editbook.edit_book", book_id=book_id), + "type": "success", + "format": book_format, + "message": _('Book Format Successfully Deleted')}]) + else: + flash(_('Book Format Successfully Deleted'), category="success") + return redirect(url_for('editbook.edit_book', book_id=book_id)) else: - return redirect(url_for('web.index')) + if jsonResponse: + return json.dumps([warning, {"location": url_for('web.index'), + "type": "success", + "format": book_format, + "message": _('Book Successfully Deleted')}]) + else: + flash(_('Book Successfully Deleted'), category="success") + return redirect(url_for('web.index')) def render_edit_book(book_id): - db.update_title_sort(config) - cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all() - book = db.session.query(db.Books)\ - .filter(db.Books.id == book_id).filter(common_filters()).first() - + calibre_db.update_title_sort(config) + cc = calibre_db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all() + book = calibre_db.get_filtered_book(book_id) if not book: flash(_(u"Error opening eBook. File does not exist or file is not accessible"), category="error") return redirect(url_for("web.index")) @@ -217,7 +295,7 @@ def render_edit_book(book_id): for lang in book.languages: lang.language_name = isoLanguages.get_language_name(get_locale(), lang.lang_code) - book = order_authors(book) + book = calibre_db.order_authors(book) author_names = [] for authr in book.authors: @@ -225,27 +303,129 @@ def render_edit_book(book_id): # Option for showing convertbook button valid_source_formats=list() - if config.config_ebookconverter == 2: + allowed_conversion_formats = list() + kepub_possible=None + if config.config_converterpath: for file in book.data: - if file.format.lower() in constants.EXTENSIONS_CONVERT: + if file.format.lower() in constants.EXTENSIONS_CONVERT_FROM: valid_source_formats.append(file.format.lower()) + if config.config_kepubifypath and 'epub' in [file.format.lower() for file in book.data]: + kepub_possible = True + if not config.config_converterpath: + valid_source_formats.append('epub') # Determine what formats don't already exist - allowed_conversion_formats = constants.EXTENSIONS_CONVERT.copy() - for file in book.data: - try: - allowed_conversion_formats.remove(file.format.lower()) - except Exception: - log.warning('%s already removed from list.', file.format.lower()) - + if config.config_converterpath: + allowed_conversion_formats = constants.EXTENSIONS_CONVERT_TO[:] + for file in book.data: + if file.format.lower() in allowed_conversion_formats: + allowed_conversion_formats.remove(file.format.lower()) + if kepub_possible: + allowed_conversion_formats.append('kepub') return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc, title=_(u"edit metadata"), page="editbook", conversion_formats=allowed_conversion_formats, + config=config, source_formats=valid_source_formats) +def edit_book_ratings(to_save, book): + changed = False + if to_save["rating"].strip(): + old_rating = False + if len(book.ratings) > 0: + old_rating = book.ratings[0].rating + ratingx2 = int(float(to_save["rating"]) * 2) + if ratingx2 != old_rating: + changed = True + is_rating = calibre_db.session.query(db.Ratings).filter(db.Ratings.rating == ratingx2).first() + if is_rating: + book.ratings.append(is_rating) + else: + new_rating = db.Ratings(rating=ratingx2) + book.ratings.append(new_rating) + if old_rating: + book.ratings.remove(book.ratings[0]) + else: + if len(book.ratings) > 0: + book.ratings.remove(book.ratings[0]) + changed = True + return changed + +def edit_book_tags(tags, book): + input_tags = tags.split(',') + input_tags = list(map(lambda it: it.strip(), input_tags)) + # Remove duplicates + input_tags = helper.uniq(input_tags) + return modify_database_object(input_tags, book.tags, db.Tags, calibre_db.session, 'tags') + + +def edit_book_series(series, book): + input_series = [series.strip()] + input_series = [x for x in input_series if x != ''] + return modify_database_object(input_series, book.series, db.Series, calibre_db.session, 'series') + + +def edit_book_series_index(series_index, book): + # Add default series_index to book + modif_date = False + series_index = series_index or '1' + if book.series_index != series_index: + book.series_index = series_index + modif_date = True + return modif_date + +# Handle book comments/description +def edit_book_comments(comments, book): + modif_date = False + if len(book.comments): + if book.comments[0].text != comments: + book.comments[0].text = comments + modif_date = True + else: + if comments: + book.comments.append(db.Comments(text=comments, book=book.id)) + modif_date = True + return modif_date + + +def edit_book_languages(languages, book, upload=False): + input_languages = languages.split(',') + unknown_languages = [] + if not upload: + input_l = isoLanguages.get_language_codes(get_locale(), input_languages, unknown_languages) + else: + input_l = isoLanguages.get_valid_language_codes(get_locale(), input_languages, unknown_languages) + for l in unknown_languages: + log.error('%s is not a valid language', l) + flash(_(u"%(langname)s is not a valid language", langname=l), category="warning") + # ToDo: Not working correct + if upload and len(input_l) == 1: + # If the language of the file is excluded from the users view, it's not imported, to allow the user to view + # the book it's language is set to the filter language + if input_l[0] != current_user.filter_language() and current_user.filter_language() != "all": + input_l[0] = calibre_db.session.query(db.Languages). \ + filter(db.Languages.lang_code == current_user.filter_language()).first().lang_code + # Remove duplicates + input_l = helper.uniq(input_l) + return modify_database_object(input_l, book.languages, db.Languages, calibre_db.session, 'languages') + + +def edit_book_publisher(to_save, book): + changed = False + if to_save["publisher"]: + publisher = to_save["publisher"].rstrip().strip() + if len(book.publishers) == 0 or (len(book.publishers) > 0 and publisher != book.publishers[0].name): + changed |= modify_database_object([publisher], book.publishers, db.Publishers, calibre_db.session, + 'publisher') + elif len(book.publishers): + changed |= modify_database_object([], book.publishers, db.Publishers, calibre_db.session, 'publisher') + return changed + + def edit_cc_data(book_id, book, to_save): - cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all() + changed = False + cc = calibre_db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all() for c in cc: cc_string = "custom_column_" + str(c.id) if not c.is_multiple: @@ -254,7 +434,7 @@ def edit_cc_data(book_id, book, to_save): else: cc_db_value = None if to_save[cc_string].strip(): - if c.datatype == 'int' or c.datatype == 'bool': + if c.datatype == 'int' or c.datatype == 'bool' or c.datatype == 'float': if to_save[cc_string] == 'None': to_save[cc_string] = None elif c.datatype == 'bool': @@ -264,14 +444,17 @@ def edit_cc_data(book_id, book, to_save): if cc_db_value is not None: if to_save[cc_string] is not None: setattr(getattr(book, cc_string)[0], 'value', to_save[cc_string]) + changed = True else: del_cc = getattr(book, cc_string)[0] getattr(book, cc_string).remove(del_cc) - db.session.delete(del_cc) + calibre_db.session.delete(del_cc) + changed = True else: cc_class = db.cc_classes[c.id] new_cc = cc_class(value=to_save[cc_string], book=book_id) - db.session.add(new_cc) + calibre_db.session.add(new_cc) + changed = True else: if c.datatype == 'rating': @@ -282,16 +465,18 @@ def edit_cc_data(book_id, book, to_save): del_cc = getattr(book, cc_string)[0] getattr(book, cc_string).remove(del_cc) if len(del_cc.books) == 0: - db.session.delete(del_cc) + calibre_db.session.delete(del_cc) + changed = True cc_class = db.cc_classes[c.id] - new_cc = db.session.query(cc_class).filter( + new_cc = calibre_db.session.query(cc_class).filter( cc_class.value == to_save[cc_string].strip()).first() # if no cc val is found add it if new_cc is None: new_cc = cc_class(value=to_save[cc_string].strip()) - db.session.add(new_cc) - db.session.flush() - new_cc = db.session.query(cc_class).filter( + calibre_db.session.add(new_cc) + changed = True + calibre_db.session.flush() + new_cc = calibre_db.session.query(cc_class).filter( cc_class.value == to_save[cc_string].strip()).first() # add cc value to book getattr(book, cc_string).append(new_cc) @@ -301,13 +486,17 @@ def edit_cc_data(book_id, book, to_save): del_cc = getattr(book, cc_string)[0] getattr(book, cc_string).remove(del_cc) if not del_cc.books or len(del_cc.books) == 0: - db.session.delete(del_cc) + calibre_db.session.delete(del_cc) + changed = True else: input_tags = to_save[cc_string].split(',') input_tags = list(map(lambda it: it.strip(), input_tags)) - modify_database_object(input_tags, getattr(book, cc_string), db.cc_classes[c.id], db.session, - 'custom') - return cc + changed |= modify_database_object(input_tags, + getattr(book, cc_string), + db.cc_classes[c.id], + calibre_db.session, + 'custom') + return changed def upload_single_file(request, book, book_id): # Check and handle Uploaded file @@ -315,9 +504,11 @@ def upload_single_file(request, book, book_id): requested_file = request.files['btn-upload-format'] # check for empty request if requested_file.filename != '': + if not current_user.role_upload(): + abort(403) if '.' in requested_file.filename: file_ext = requested_file.filename.rsplit('.', 1)[-1].lower() - if file_ext not in constants.EXTENSIONS_UPLOAD: + if file_ext not in constants.EXTENSIONS_UPLOAD and '' not in constants.EXTENSIONS_UPLOAD: flash(_("File extension '%(ext)s' is not allowed to be uploaded to this server", ext=file_ext), category="error") return redirect(url_for('web.show_book', book_id=book.id)) @@ -343,22 +534,31 @@ def upload_single_file(request, book, book_id): return redirect(url_for('web.show_book', book_id=book.id)) file_size = os.path.getsize(saved_filename) - is_format = db.session.query(db.Data).filter(db.Data.book == book_id).\ - filter(db.Data.format == file_ext.upper()).first() + is_format = calibre_db.get_book_format(book_id, file_ext.upper()) # Format entry already exists, no need to update the database if is_format: log.warning('Book format %s already existing', file_ext.upper()) else: - db_format = db.Data(book_id, file_ext.upper(), file_size, file_name) - db.session.add(db_format) - db.session.commit() - db.update_title_sort(config) + try: + db_format = db.Data(book_id, file_ext.upper(), file_size, file_name) + calibre_db.session.add(db_format) + calibre_db.session.commit() + calibre_db.update_title_sort(config) + except OperationalError as e: + calibre_db.session.rollback() + log.error('Database error: %s', e) + flash(_(u"Database error: %(error)s.", error=e), category="error") + return redirect(url_for('web.show_book', book_id=book.id)) # Queue uploader info uploadText=_(u"File format %(ext)s added to %(book)s", ext=file_ext.upper(), book=book.title) - worker.add_upload(current_user.nickname, - "" + uploadText + "") + WorkerThread.add(current_user.nickname, TaskUpload( + "" + uploadText + "")) + + return uploader.process( + saved_filename, *os.path.splitext(requested_file.filename), + rarExecutable=config.config_rarfile_location) def upload_cover(request, book): @@ -366,11 +566,13 @@ def upload_cover(request, book): requested_file = request.files['btn-upload-cover'] # check for empty request if requested_file.filename != '': - if helper.save_cover(requested_file, book.path) is True: + if not current_user.role_upload(): + abort(403) + ret, message = helper.save_cover(requested_file, book.path) + if ret is True: return True else: - # ToDo Message not always coorect - flash(_(u"Cover is not a supported imageformat (jpg/png/webp), can't save"), category="error") + flash(message, category="error") return False return None @@ -379,48 +581,54 @@ def upload_cover(request, book): @login_required_if_no_ano @edit_required def edit_book(book_id): + modif_date = False # Show form if request.method != 'POST': return render_edit_book(book_id) # create the function for sorting... - db.update_title_sort(config) - book = db.session.query(db.Books)\ - .filter(db.Books.id == book_id).filter(common_filters()).first() + calibre_db.update_title_sort(config) + book = calibre_db.get_filtered_book(book_id, allow_show_archived=True) # Book not found if not book: flash(_(u"Error opening eBook. File does not exist or file is not accessible"), category="error") return redirect(url_for("web.index")) - upload_single_file(request, book, book_id) + meta = upload_single_file(request, book, book_id) if upload_cover(request, book) is True: book.has_cover = 1 + modif_date = True try: to_save = request.form.to_dict() + merge_metadata(to_save, meta) # Update book edited_books_id = None + #handle book title if book.title != to_save["book_title"].rstrip().strip(): if to_save["book_title"] == '': - to_save["book_title"] = _(u'unknown') + to_save["book_title"] = _(u'Unknown') book.title = to_save["book_title"].rstrip().strip() edited_books_id = book.id + modif_date = True # handle author(s) input_authors = to_save["author_name"].split('&') input_authors = list(map(lambda it: it.strip().replace(',', '|'), input_authors)) + # Remove duplicates in authors list + input_authors = helper.uniq(input_authors) # we have all author names now if input_authors == ['']: - input_authors = [_(u'unknown')] # prevent empty Author + input_authors = [_(u'Unknown')] # prevent empty Author - modify_database_object(input_authors, book.authors, db.Authors, db.session, 'author') + modif_date |= modify_database_object(input_authors, book.authors, db.Authors, calibre_db.session, 'author') # Search for each author if author is in database, if not, authorname and sorted authorname is generated new # everything then is assembled for sorted author field in database sort_authors_list = list() for inp in input_authors: - stored_author = db.session.query(db.Authors).filter(db.Authors.name == inp).first() + stored_author = calibre_db.session.query(db.Authors).filter(db.Authors.name == inp).first() if not stored_author: stored_author = helper.get_sorted_author(inp) else: @@ -430,7 +638,7 @@ def edit_book(book_id): if book.author_sort != sort_authors: edited_books_id = book.id book.author_sort = sort_authors - + modif_date = True if config.config_use_google_drive: gdriveutils.updateGdriveCalibreFromLocal() @@ -440,79 +648,62 @@ def edit_book(book_id): error = helper.update_dir_stucture(edited_books_id, config.config_calibre_dir, input_authors[0]) if not error: - if to_save["cover_url"]: - if helper.save_cover_from_url(to_save["cover_url"], book.path) is True: - book.has_cover = 1 - else: - flash(_(u"Cover is not a jpg file, can't save"), category="error") + if "cover_url" in to_save: + if to_save["cover_url"]: + if not current_user.role_upload(): + return "", (403) + if to_save["cover_url"].endswith('/static/generic_cover.jpg'): + book.has_cover = 0 + else: + result, error = helper.save_cover_from_url(to_save["cover_url"], book.path) + if result is True: + book.has_cover = 1 + modif_date = True + else: + flash(error, category="error") - if book.series_index != to_save["series_index"]: - book.series_index = to_save["series_index"] + # Add default series_index to book + modif_date |= edit_book_series_index(to_save["series_index"], book) # Handle book comments/description - if len(book.comments): - book.comments[0].text = to_save["description"] - else: - book.comments.append(db.Comments(text=to_save["description"], book=book.id)) + modif_date |= edit_book_comments(to_save["description"], book) + # Handle identifiers + input_identifiers = identifier_list(to_save, book) + modification, warning = modify_identifiers(input_identifiers, book.identifiers, calibre_db.session) + if warning: + flash(_("Identifiers are not Case Sensitive, Overwriting Old Identifier"), category="warning") + modif_date |= modification # Handle book tags - input_tags = to_save["tags"].split(',') - input_tags = list(map(lambda it: it.strip(), input_tags)) - modify_database_object(input_tags, book.tags, db.Tags, db.session, 'tags') + modif_date |= edit_book_tags(to_save['tags'], book) # Handle book series - input_series = [to_save["series"].strip()] - input_series = [x for x in input_series if x != ''] - modify_database_object(input_series, book.series, db.Series, db.session, 'series') + modif_date |= edit_book_series(to_save["series"], book) if to_save["pubdate"]: try: - book.pubdate = datetime.datetime.strptime(to_save["pubdate"], "%Y-%m-%d") + book.pubdate = datetime.strptime(to_save["pubdate"], "%Y-%m-%d") except ValueError: book.pubdate = db.Books.DEFAULT_PUBDATE else: book.pubdate = db.Books.DEFAULT_PUBDATE - if to_save["publisher"]: - publisher = to_save["publisher"].rstrip().strip() - if len(book.publishers) == 0 or (len(book.publishers) > 0 and publisher != book.publishers[0].name): - modify_database_object([publisher], book.publishers, db.Publishers, db.session, 'publisher') - elif len(book.publishers): - modify_database_object([], book.publishers, db.Publishers, db.session, 'publisher') - + # handle book publisher + modif_date |= edit_book_publisher(to_save, book) # handle book languages - input_languages = to_save["languages"].split(',') - unknown_languages = [] - input_l = isoLanguages.get_language_codes(get_locale(), input_languages, unknown_languages) - for l in unknown_languages: - log.error('%s is not a valid language', l) - flash(_(u"%(langname)s is not a valid language", langname=l), category="error") - modify_database_object(list(input_l), book.languages, db.Languages, db.session, 'languages') + modif_date |= edit_book_languages(to_save['languages'], book) # handle book ratings - if to_save["rating"].strip(): - old_rating = False - if len(book.ratings) > 0: - old_rating = book.ratings[0].rating - ratingx2 = int(float(to_save["rating"]) * 2) - if ratingx2 != old_rating: - is_rating = db.session.query(db.Ratings).filter(db.Ratings.rating == ratingx2).first() - if is_rating: - book.ratings.append(is_rating) - else: - new_rating = db.Ratings(rating=ratingx2) - book.ratings.append(new_rating) - if old_rating: - book.ratings.remove(book.ratings[0]) - else: - if len(book.ratings) > 0: - book.ratings.remove(book.ratings[0]) + modif_date |= edit_book_ratings(to_save, book) # handle cc data - edit_cc_data(book_id, book, to_save) + modif_date |= edit_cc_data(book_id, book, to_save) - db.session.commit() + if modif_date: + book.last_modified = datetime.utcnow() + calibre_db.session.merge(book) + calibre_db.session.commit() if config.config_use_google_drive: gdriveutils.updateGdriveCalibreFromLocal() if "detail_view" in to_save: @@ -521,16 +712,43 @@ def edit_book(book_id): flash(_("Metadata successfully updated"), category="success") return render_edit_book(book_id) else: - db.session.rollback() + calibre_db.session.rollback() flash(error, category="error") return render_edit_book(book_id) except Exception as e: log.exception(e) - db.session.rollback() + calibre_db.session.rollback() flash(_("Error editing book, please check logfile for details"), category="error") return redirect(url_for('web.show_book', book_id=book.id)) +def merge_metadata(to_save, meta): + if to_save['author_name'] == _(u'Unknown'): + to_save['author_name'] = '' + if to_save['book_title'] == _(u'Unknown'): + to_save['book_title'] = '' + for s_field, m_field in [ + ('tags', 'tags'), ('author_name', 'author'), ('series', 'series'), + ('series_index', 'series_id'), ('languages', 'languages'), + ('book_title', 'title')]: + to_save[s_field] = to_save[s_field] or getattr(meta, m_field, '') + to_save["description"] = to_save["description"] or Markup( + getattr(meta, 'description', '')).unescape() + +def identifier_list(to_save, book): + """Generate a list of Identifiers from form information""" + id_type_prefix = 'identifier-type-' + id_val_prefix = 'identifier-val-' + result = [] + for type_key, type_value in to_save.items(): + if not type_key.startswith(id_type_prefix): + continue + val_key = id_val_prefix + type_key[len(id_type_prefix):] + if val_key not in to_save.keys(): + continue + result.append(db.Identifiers(to_save[val_key], type_value, book.id)) + return result + @editbook.route("/upload", methods=["GET", "POST"]) @login_required_if_no_ano @upload_required @@ -539,158 +757,155 @@ def upload(): abort(404) if request.method == 'POST' and 'btn-upload' in request.files: for requested_file in request.files.getlist("btn-upload"): - # create the function for sorting... - db.update_title_sort(config) - db.session.connection().connection.connection.create_function('uuid4', 0, lambda: str(uuid4())) + try: + modif_date = False + # create the function for sorting... + calibre_db.update_title_sort(config) + calibre_db.session.connection().connection.connection.create_function('uuid4', 0, lambda: str(uuid4())) - # check if file extension is correct - if '.' in requested_file.filename: - file_ext = requested_file.filename.rsplit('.', 1)[-1].lower() - if file_ext not in constants.EXTENSIONS_UPLOAD: - flash( - _("File extension '%(ext)s' is not allowed to be uploaded to this server", - ext=file_ext), category="error") - return redirect(url_for('web.index')) - else: - flash(_('File to be uploaded must have an extension'), category="error") - return redirect(url_for('web.index')) + # check if file extension is correct + if '.' in requested_file.filename: + file_ext = requested_file.filename.rsplit('.', 1)[-1].lower() + if file_ext not in constants.EXTENSIONS_UPLOAD and '' not in constants.EXTENSIONS_UPLOAD: + flash( + _("File extension '%(ext)s' is not allowed to be uploaded to this server", + ext=file_ext), category="error") + return Response(json.dumps({"location": url_for("web.index")}), mimetype='application/json') + else: + flash(_('File to be uploaded must have an extension'), category="error") + return Response(json.dumps({"location": url_for("web.index")}), mimetype='application/json') - # extract metadata from file - meta = uploader.upload(requested_file) - title = meta.title - authr = meta.author - tags = meta.tags - series = meta.series - series_index = meta.series_id - title_dir = helper.get_valid_filename(title) - author_dir = helper.get_valid_filename(authr) - filepath = os.path.join(config.config_calibre_dir, author_dir, title_dir) - saved_filename = os.path.join(filepath, title_dir + meta.extension.lower()) - - if title != u'Unknown' and authr != u'Unknown': - entry = helper.check_exists_book(authr, title) - if entry: - book_html = flash(_(u"Uploaded book probably exists in the library, consider to change before upload new: ") - + Markup(render_title_template('book_exists_flash.html', entry=entry)), category="warning") - - # check if file path exists, otherwise create it, copy file to calibre path and delete temp file - if not os.path.exists(filepath): + # extract metadata from file try: - os.makedirs(filepath) - except OSError: - flash(_(u"Failed to create path %(path)s (Permission denied).", path=filepath), category="error") - return redirect(url_for('web.index')) - try: - copyfile(meta.file_path, saved_filename) - except OSError: - flash(_(u"Failed to store file %(file)s (Permission denied).", file=saved_filename), category="error") - return redirect(url_for('web.index')) - try: - os.unlink(meta.file_path) - except OSError: - flash(_(u"Failed to delete file %(file)s (Permission denied).", file= meta.file_path), - category="warning") + meta = uploader.upload(requested_file, config.config_rarfile_location) + except (IOError, OSError): + log.error("File %s could not saved to temp dir", requested_file.filename) + flash(_(u"File %(filename)s could not saved to temp dir", + filename= requested_file.filename), category="error") + return Response(json.dumps({"location": url_for("web.index")}), mimetype='application/json') + title = meta.title + authr = meta.author - if meta.cover is None: - has_cover = 0 - copyfile(os.path.join(constants.STATIC_DIR, 'generic_cover.jpg'), - os.path.join(filepath, "cover.jpg")) - else: - has_cover = 1 - move(meta.cover, os.path.join(filepath, "cover.jpg")) + if title != _(u'Unknown') and authr != _(u'Unknown'): + entry = calibre_db.check_exists_book(authr, title) + if entry: + log.info("Uploaded book probably exists in library") + flash(_(u"Uploaded book probably exists in the library, consider to change before upload new: ") + + Markup(render_title_template('book_exists_flash.html', entry=entry)), category="warning") - # handle authors - is_author = db.session.query(db.Authors).filter(db.Authors.name == authr).first() - if is_author: - db_author = is_author - else: - db_author = db.Authors(authr, helper.get_sorted_author(authr), "") - db.session.add(db_author) + # handle authors + input_authors = authr.split('&') + # handle_authors(input_authors) + input_authors = list(map(lambda it: it.strip().replace(',', '|'), input_authors)) + # Remove duplicates in authors list + input_authors = helper.uniq(input_authors) - # handle series - db_series = None - is_series = db.session.query(db.Series).filter(db.Series.name == series).first() - if is_series: - db_series = is_series - elif series != '': - db_series = db.Series(series, "") - db.session.add(db_series) + # we have all author names now + if input_authors == ['']: + input_authors = [_(u'Unknown')] # prevent empty Author - # add language actually one value in list - input_language = meta.languages - db_language = None - if input_language != "": - input_language = isoLanguages.get(name=input_language).part3 - hasLanguage = db.session.query(db.Languages).filter(db.Languages.lang_code == input_language).first() - if hasLanguage: - db_language = hasLanguage + sort_authors_list=list() + db_author = None + for inp in input_authors: + stored_author = calibre_db.session.query(db.Authors).filter(db.Authors.name == inp).first() + if not stored_author: + if not db_author: + db_author = db.Authors(inp, helper.get_sorted_author(inp), "") + calibre_db.session.add(db_author) + calibre_db.session.commit() + sort_author = helper.get_sorted_author(inp) + else: + if not db_author: + db_author = stored_author + sort_author = stored_author.sort + sort_authors_list.append(sort_author) + sort_authors = ' & '.join(sort_authors_list) + + title_dir = helper.get_valid_filename(title) + author_dir = helper.get_valid_filename(db_author.name) + + # combine path and normalize path from windows systems + path = os.path.join(author_dir, title_dir).replace('\\', '/') + # Calibre adds books with utc as timezone + db_book = db.Books(title, "", sort_authors, datetime.utcnow(), datetime(101, 1, 1), + '1', datetime.utcnow(), path, meta.cover, db_author, [], "") + + modif_date |= modify_database_object(input_authors, db_book.authors, db.Authors, calibre_db.session, + 'author') + + # Add series_index to book + modif_date |= edit_book_series_index(meta.series_id, db_book) + + # add languages + modif_date |= edit_book_languages(meta.languages, db_book, upload=True) + + # handle tags + modif_date |= edit_book_tags(meta.tags, db_book) + + # handle series + modif_date |= edit_book_series(meta.series, db_book) + + # Add file to book + file_size = os.path.getsize(meta.file_path) + db_data = db.Data(db_book, meta.extension.upper()[1:], file_size, title_dir) + db_book.data.append(db_data) + calibre_db.session.add(db_book) + + # flush content, get db_book.id available + calibre_db.session.flush() + + # Comments needs book id therfore only possible after flush + modif_date |= edit_book_comments(Markup(meta.description).unescape(), db_book) + + book_id = db_book.id + title = db_book.title + + error = helper.update_dir_structure_file(book_id, + config.config_calibre_dir, + input_authors[0], + meta.file_path, + title_dir + meta.extension) + + # move cover to final directory, including book id + if meta.cover: + coverfile = meta.cover else: - db_language = db.Languages(input_language) - db.session.add(db_language) + coverfile = os.path.join(constants.STATIC_DIR, 'generic_cover.jpg') + new_coverpath = os.path.join(config.config_calibre_dir, db_book.path, "cover.jpg") + try: + copyfile(coverfile, new_coverpath) + if meta.cover: + os.unlink(meta.cover) + except OSError as e: + log.error("Failed to move cover file %s: %s", new_coverpath, e) + flash(_(u"Failed to Move Cover File %(file)s: %(error)s", file=new_coverpath, + error=e), + category="error") - # combine path and normalize path from windows systems - path = os.path.join(author_dir, title_dir).replace('\\', '/') - db_book = db.Books(title, "", db_author.sort, datetime.datetime.now(), datetime.datetime(101, 1, 1), - series_index, datetime.datetime.now(), path, has_cover, db_author, [], db_language) - db_book.authors.append(db_author) - if db_series: - db_book.series.append(db_series) - if db_language is not None: - db_book.languages.append(db_language) - file_size = os.path.getsize(saved_filename) - db_data = db.Data(db_book, meta.extension.upper()[1:], file_size, title_dir) + # save data to database, reread data + calibre_db.session.commit() - # handle tags - input_tags = tags.split(',') - input_tags = list(map(lambda it: it.strip(), input_tags)) - if input_tags[0] !="": - modify_database_object(input_tags, db_book.tags, db.Tags, db.session, 'tags') + if config.config_use_google_drive: + gdriveutils.updateGdriveCalibreFromLocal() + if error: + flash(error, category="error") + uploadText=_(u"File %(file)s uploaded", file=title) + WorkerThread.add(current_user.nickname, TaskUpload( + "" + uploadText + "")) - # flush content, get db_book.id available - db_book.data.append(db_data) - db.session.add(db_book) - db.session.flush() - - # add comment - book_id = db_book.id - upload_comment = Markup(meta.description).unescape() - if upload_comment != "": - db.session.add(db.Comments(upload_comment, book_id)) - - # save data to database, reread data - db.session.commit() - db.update_title_sort(config) - book = db.session.query(db.Books).filter(db.Books.id == book_id).filter(common_filters()).first() - - # upload book to gdrive if nesseccary and add "(bookid)" to folder name - if config.config_use_google_drive: - gdriveutils.updateGdriveCalibreFromLocal() - error = helper.update_dir_stucture(book.id, config.config_calibre_dir) - db.session.commit() - if config.config_use_google_drive: - gdriveutils.updateGdriveCalibreFromLocal() - if error: - flash(error, category="error") - uploadText=_(u"File %(file)s uploaded", file=book.title) - worker.add_upload(current_user.nickname, - "" + uploadText + "") - - # create data for displaying display Full language name instead of iso639.part3language - if db_language is not None: - book.languages[0].language_name = _(meta.languages) - author_names = [] - for author in db_book.authors: - author_names.append(author.name) - if len(request.files.getlist("btn-upload")) < 2: - if current_user.role_edit() or current_user.role_admin(): - resp = {"location": url_for('editbook.edit_book', book_id=db_book.id)} - return Response(json.dumps(resp), mimetype='application/json') - else: - resp = {"location": url_for('web.show_book', book_id=db_book.id)} - return Response(json.dumps(resp), mimetype='application/json') + if len(request.files.getlist("btn-upload")) < 2: + if current_user.role_edit() or current_user.role_admin(): + resp = {"location": url_for('editbook.edit_book', book_id=book_id)} + return Response(json.dumps(resp), mimetype='application/json') + else: + resp = {"location": url_for('web.show_book', book_id=book_id)} + return Response(json.dumps(resp), mimetype='application/json') + except OperationalError as e: + calibre_db.session.rollback() + log.error("Database error: %s", e) + flash(_(u"Database error: %(error)s.", error=e), category="error") return Response(json.dumps({"location": url_for("web.index")}), mimetype='application/json') - @editbook.route("/admin/book/convert/", methods=['POST']) @login_required_if_no_ano @edit_required @@ -701,7 +916,7 @@ def convert_bookformat(book_id): if (book_format_from is None) or (book_format_to is None): flash(_(u"Source or destination format for conversion missing"), category="error") - return redirect(request.environ["HTTP_REFERER"]) + return redirect(url_for('editbook.edit_book', book_id=book_id)) log.info('converting: book id: %s from: %s to: %s', book_id, book_format_from, book_format_to) rtn = helper.convert_book_format(book_id, config.config_calibre_dir, book_format_from.upper(), @@ -713,4 +928,114 @@ def convert_bookformat(book_id): category="success") else: flash(_(u"There was an error converting this book: %(res)s", res=rtn), category="error") - return redirect(request.environ["HTTP_REFERER"]) + return redirect(url_for('editbook.edit_book', book_id=book_id)) + +@editbook.route("/ajax/editbooks/", methods=['POST']) +@login_required_if_no_ano +@edit_required +def edit_list_book(param): + vals = request.form.to_dict() + book = calibre_db.get_book(vals['pk']) + if param =='series_index': + edit_book_series_index(vals['value'], book) + elif param =='tags': + edit_book_tags(vals['value'], book) + elif param =='series': + edit_book_series(vals['value'], book) + elif param =='publishers': + vals['publisher'] = vals['value'] + edit_book_publisher(vals, book) + elif param =='languages': + edit_book_languages(vals['value'], book) + elif param =='author_sort': + book.author_sort = vals['value'] + elif param =='title': + book.title = vals['value'] + helper.update_dir_stucture(book.id, config.config_calibre_dir) + elif param =='sort': + book.sort = vals['value'] + # ToDo: edit books + elif param =='authors': + input_authors = vals['value'].split('&') + input_authors = list(map(lambda it: it.strip().replace(',', '|'), input_authors)) + modify_database_object(input_authors, book.authors, db.Authors, calibre_db.session, 'author') + sort_authors_list = list() + for inp in input_authors: + stored_author = calibre_db.session.query(db.Authors).filter(db.Authors.name == inp).first() + if not stored_author: + stored_author = helper.get_sorted_author(inp) + else: + stored_author = stored_author.sort + sort_authors_list.append(helper.get_sorted_author(stored_author)) + sort_authors = ' & '.join(sort_authors_list) + if book.author_sort != sort_authors: + book.author_sort = sort_authors + helper.update_dir_stucture(book.id, config.config_calibre_dir, input_authors[0]) + book.last_modified = datetime.utcnow() + calibre_db.session.commit() + return "" + +@editbook.route("/ajax/sort_value//") +@login_required +def get_sorted_entry(field, bookid): + if field == 'title' or field == 'authors': + book = calibre_db.get_filtered_book(bookid) + if book: + if field == 'title': + return json.dumps({'sort': book.sort}) + elif field == 'authors': + return json.dumps({'author_sort': book.author_sort}) + return "" + + +@editbook.route("/ajax/simulatemerge", methods=['POST']) +@login_required +@edit_required +def simulate_merge_list_book(): + vals = request.get_json().get('Merge_books') + if vals: + to_book = calibre_db.get_book(vals[0]).title + vals.pop(0) + if to_book: + for book_id in vals: + from_book = [] + from_book.append(calibre_db.get_book(book_id).title) + return json.dumps({'to': to_book, 'from': from_book}) + return "" + + +@editbook.route("/ajax/mergebooks", methods=['POST']) +@login_required +@edit_required +def merge_list_book(): + vals = request.get_json().get('Merge_books') + to_file = list() + if vals: + # load all formats from target book + to_book = calibre_db.get_book(vals[0]) + vals.pop(0) + if to_book: + for file in to_book.data: + to_file.append(file.format) + to_name = helper.get_valid_filename(to_book.title) + ' - ' + \ + helper.get_valid_filename(to_book.authors[0].name) + for book_id in vals: + from_book = calibre_db.get_book(book_id) + if from_book: + for element in from_book.data: + if element.format not in to_file: + # create new data entry with: book_id, book_format, uncompressed_size, name + filepath_new = os.path.normpath(os.path.join(config.config_calibre_dir, + to_book.path, + to_name + "." + element.format.lower())) + filepath_old = os.path.normpath(os.path.join(config.config_calibre_dir, + from_book.path, + element.name + "." + element.format.lower())) + copyfile(filepath_old, filepath_new) + to_book.data.append(db.Data(to_book.id, + element.format, + element.uncompressed_size, + to_name)) + delete_book(from_book.id,"", True) # json_resp = + return json.dumps({'success': True}) + return "" diff --git a/cps/epub.py b/cps/epub.py index d315abf65..583e4eda1 100644 --- a/cps/epub.py +++ b/cps/epub.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) @@ -23,9 +22,11 @@ import zipfile from lxml import etree from . import isoLanguages +from .helper import split_authors from .constants import BookMeta + def extractCover(zipFile, coverFile, coverpath, tmp_file_name): if coverFile is None: return None @@ -65,34 +66,26 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension): tmp = p.xpath('dc:%s/text()' % s, namespaces=ns) if len(tmp) > 0: if s == 'creator': - epub_metadata[s] = ' & '.join(p.xpath('dc:%s/text()' % s, namespaces=ns)) + epub_metadata[s] = ' & '.join(split_authors(tmp)) elif s == 'subject': - epub_metadata[s] = ', '.join(p.xpath('dc:%s/text()' % s, namespaces=ns)) + epub_metadata[s] = ', '.join(tmp) else: - epub_metadata[s] = p.xpath('dc:%s/text()' % s, namespaces=ns)[0] + epub_metadata[s] = tmp[0] else: - epub_metadata[s] = "Unknown" + epub_metadata[s] = u'Unknown' - if epub_metadata['subject'] == "Unknown": + if epub_metadata['subject'] == u'Unknown': epub_metadata['subject'] = '' - if epub_metadata['description'] == "Unknown": + if epub_metadata['description'] == u'Unknown': description = tree.xpath("//*[local-name() = 'description']/text()") if len(description) > 0: epub_metadata['description'] = description else: epub_metadata['description'] = "" - if epub_metadata['language'] == "Unknown": - epub_metadata['language'] = "" - else: - lang = epub_metadata['language'].split('-', 1)[0].lower() - if len(lang) == 2: - epub_metadata['language'] = isoLanguages.get(part1=lang).name - elif len(lang) == 3: - epub_metadata['language'] = isoLanguages.get(part3=lang).name - else: - epub_metadata['language'] = "" + lang = epub_metadata['language'].split('-', 1)[0].lower() + epub_metadata['language'] = isoLanguages.get_lang3(lang) series = tree.xpath("/pkg:package/pkg:metadata/pkg:meta[@name='calibre:series']/@content", namespaces=ns) if len(series) > 0: @@ -123,9 +116,14 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension): markupTree = etree.fromstring(markup) # no matter xhtml or html with no namespace imgsrc = markupTree.xpath("//*[local-name() = 'img']/@src") - # imgsrc maybe startwith "../"" so fullpath join then relpath to cwd - filename = os.path.relpath(os.path.join(os.path.dirname(os.path.join(coverpath, coversection[0])), imgsrc[0])) - coverfile = extractCover(epubZip, filename, "", tmp_file_path) + # Alternative image source + if not len(imgsrc): + imgsrc = markupTree.xpath("//attribute::*[contains(local-name(), 'href')]") + if len(imgsrc): + # imgsrc maybe startwith "../"" so fullpath join then relpath to cwd + filename = os.path.relpath(os.path.join(os.path.dirname(os.path.join(coverpath, coversection[0])), + imgsrc[0])) + coverfile = extractCover(epubZip, filename, "", tmp_file_path) else: coverfile = extractCover(epubZip, coversection[0], coverpath, tmp_file_path) diff --git a/cps/fb2.py b/cps/fb2.py index cd61b5116..bdb3d1d50 100644 --- a/cps/fb2.py +++ b/cps/fb2.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) diff --git a/cps/gdrive.py b/cps/gdrive.py index 263c829ba..90b83e648 100644 --- a/cps/gdrive.py +++ b/cps/gdrive.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) @@ -23,6 +22,7 @@ from __future__ import division, print_function, unicode_literals import os +import sys import hashlib import json import tempfile @@ -34,18 +34,17 @@ from flask import Blueprint, flash, request, redirect, url_for, abort from flask_babel import gettext as _ from flask_login import login_required -try: - from googleapiclient.errors import HttpError -except ImportError: - pass - -from . import logger, gdriveutils, config, db +from . import logger, gdriveutils, config, ub, calibre_db from .web import admin_required - gdrive = Blueprint('gdrive', __name__) log = logger.create() +try: + from googleapiclient.errors import HttpError +except ImportError as err: + log.debug("Cannot import googleapiclient, using GDrive will not work: %s", err) + current_milli_time = lambda: int(round(time() * 1000)) gdrive_watch_callback_token = 'target=calibreweb-watch_files' @@ -73,7 +72,7 @@ def google_drive_callback(): credentials = gdriveutils.Gauth.Instance().auth.flow.step2_exchange(auth_code) with open(gdriveutils.CREDENTIALS, 'w') as f: f.write(credentials.to_json()) - except ValueError as error: + except (ValueError, AttributeError) as error: log.error(error) return redirect(url_for('admin.configuration')) @@ -94,8 +93,7 @@ def watch_gdrive(): try: result = gdriveutils.watchChange(gdriveutils.Gdrive.Instance().drive, notification_id, 'web_hook', address, gdrive_watch_callback_token, current_milli_time() + 604800*1000) - config.config_google_drive_watch_changes_response = json.dumps(result) - # after save(), config_google_drive_watch_changes_response will be a json object, not string + config.config_google_drive_watch_changes_response = result config.save() except HttpError as e: reason=json.loads(e.content)['error']['errors'][0] @@ -118,41 +116,45 @@ def revoke_watch_gdrive(): last_watch_response['resourceId']) except HttpError: pass - config.config_google_drive_watch_changes_response = None + config.config_google_drive_watch_changes_response = {} config.save() return redirect(url_for('admin.configuration')) @gdrive.route("/gdrive/watch/callback", methods=['GET', 'POST']) def on_received_watch_confirmation(): + if not config.config_google_drive_watch_changes_response: + return '' + if request.headers.get('X-Goog-Channel-Token') != gdrive_watch_callback_token \ + or request.headers.get('X-Goog-Resource-State') != 'change' \ + or not request.data: + return '' # redirect(url_for('admin.configuration')) + log.debug('%r', request.headers) - if request.headers.get('X-Goog-Channel-Token') == gdrive_watch_callback_token \ - and request.headers.get('X-Goog-Resource-State') == 'change' \ - and request.data: + log.debug('%r', request.data) + log.info('Change received from gdrive') - data = request.data - - def updateMetaData(): - log.info('Change received from gdrive') - log.debug('%r', data) - try: - j = json.loads(data) - log.info('Getting change details') - response = gdriveutils.getChangeById(gdriveutils.Gdrive.Instance().drive, j['id']) - log.debug('%r', response) - if response: - dbpath = os.path.join(config.config_calibre_dir, "metadata.db") - if not response['deleted'] and response['file']['title'] == 'metadata.db' and response['file']['md5Checksum'] != hashlib.md5(dbpath): - tmpDir = tempfile.gettempdir() - log.info('Database file updated') - copyfile(dbpath, os.path.join(tmpDir, "metadata.db_" + str(current_milli_time()))) - log.info('Backing up existing and downloading updated metadata.db') - gdriveutils.downloadFile(None, "metadata.db", os.path.join(tmpDir, "tmp_metadata.db")) - log.info('Setting up new DB') - # prevent error on windows, as os.rename does on exisiting files - move(os.path.join(tmpDir, "tmp_metadata.db"), dbpath) - db.setup_db(config) - except Exception as e: - log.exception(e) - updateMetaData() + try: + j = json.loads(request.data) + log.info('Getting change details') + response = gdriveutils.getChangeById(gdriveutils.Gdrive.Instance().drive, j['id']) + log.debug('%r', response) + if response: + if sys.version_info < (3, 0): + dbpath = os.path.join(config.config_calibre_dir, "metadata.db") + else: + dbpath = os.path.join(config.config_calibre_dir, "metadata.db").encode() + if not response['deleted'] and response['file']['title'] == 'metadata.db' \ + and response['file']['md5Checksum'] != hashlib.md5(dbpath): + tmpDir = tempfile.gettempdir() + log.info('Database file updated') + copyfile(dbpath, os.path.join(tmpDir, "metadata.db_" + str(current_milli_time()))) + log.info('Backing up existing and downloading updated metadata.db') + gdriveutils.downloadFile(None, "metadata.db", os.path.join(tmpDir, "tmp_metadata.db")) + log.info('Setting up new DB') + # prevent error on windows, as os.rename does on exisiting files + move(os.path.join(tmpDir, "tmp_metadata.db"), dbpath) + calibre_db.reconnect_db(config, ub.app_DB_path) + except Exception as e: + log.exception(e) return '' diff --git a/cps/gdriveutils.py b/cps/gdriveutils.py index d950f7385..3e00c9af3 100644 --- a/cps/gdriveutils.py +++ b/cps/gdriveutils.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) @@ -21,6 +20,8 @@ from __future__ import division, print_function, unicode_literals import os import json import shutil +import chardet +import ssl from flask import Response, stream_with_context from sqlalchemy import create_engine @@ -28,14 +29,18 @@ from sqlalchemy import Column, UniqueConstraint from sqlalchemy import String, Integer from sqlalchemy.orm import sessionmaker, scoped_session from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.exc import OperationalError, InvalidRequestError try: from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive from pydrive.auth import RefreshError from apiclient import errors + from httplib2 import ServerNotFoundError gdrive_support = True -except ImportError: + importError = None +except ImportError as err: + importError = err gdrive_support = False from . import logger, cli, config @@ -47,6 +52,12 @@ CREDENTIALS = os.path.join(_CONFIG_DIR, 'gdrive_credentials') CLIENT_SECRETS = os.path.join(_CONFIG_DIR, 'client_secrets.json') log = logger.create() +if gdrive_support: + logger.get('googleapiclient.discovery_cache').setLevel(logger.logging.ERROR) + if not logger.is_debug_enabled(): + logger.get('googleapiclient.discovery').setLevel(logger.logging.ERROR) +else: + log.debug("Cannot import pydrive,httplib2, using gdrive will not work: %s", importError) class Singleton: @@ -94,7 +105,11 @@ class Singleton: @Singleton class Gauth: def __init__(self): - self.auth = GoogleAuth(settings_file=SETTINGS_YAML) + try: + self.auth = GoogleAuth(settings_file=SETTINGS_YAML) + except NameError as error: + log.error(error) + self.auth = None @Singleton @@ -189,14 +204,18 @@ def getDrive(drive=None, gauth=None): return drive def listRootFolders(): - drive = getDrive(Gdrive.Instance().drive) - folder = "'root' in parents and mimeType = 'application/vnd.google-apps.folder' and trashed = false" - fileList = drive.ListFile({'q': folder}).GetList() + try: + drive = getDrive(Gdrive.Instance().drive) + folder = "'root' in parents and mimeType = 'application/vnd.google-apps.folder' and trashed = false" + fileList = drive.ListFile({'q': folder}).GetList() + except ServerNotFoundError as e: + log.info("GDrive Error %s" % e) + fileList = [] return fileList def getEbooksFolder(drive): - return getFolderInFolder('root',config.config_google_drive_folder,drive) + return getFolderInFolder('root', config.config_google_drive_folder, drive) def getFolderInFolder(parentId, folderName, drive): @@ -226,7 +245,7 @@ def getEbooksFolderId(drive=None): gDriveId.path = '/' session.merge(gDriveId) session.commit() - return + return gDriveId.gdrive_id def getFile(pathId, fileName, drive): @@ -471,8 +490,13 @@ def getChangeById (drive, change_id): # Deletes the local hashes database to force search for new folder names def deleteDatabaseOnChange(): - session.query(GdriveId).delete() - session.commit() + try: + session.query(GdriveId).delete() + session.commit() + except (OperationalError, InvalidRequestError): + session.rollback() + log.info(u"GDrive DB is not Writeable") + def updateGdriveCalibreFromLocal(): copyToDrive(Gdrive.Instance().drive, config.config_calibre_dir, False, True) @@ -580,8 +604,12 @@ def get_error_text(client_secrets=None): if not os.path.isfile(CLIENT_SECRETS): return 'client_secrets.json is missing or not readable' - with open(CLIENT_SECRETS, 'r') as settings: - filedata = json.load(settings) + try: + with open(CLIENT_SECRETS, 'r') as settings: + filedata = json.load(settings) + except PermissionError: + return 'client_secrets.json is missing or not readable' + if 'web' not in filedata: return 'client_secrets.json is not configured for web application' if 'redirect_uris' not in filedata['web']: diff --git a/cps/helper.py b/cps/helper.py index 9771d57a9..9845df97b 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -21,26 +21,26 @@ from __future__ import division, print_function, unicode_literals import sys import os import io -import json import mimetypes -import random import re import shutil +import glob import time +import zipfile +import json import unicodedata from datetime import datetime, timedelta from tempfile import gettempdir import requests -from babel import Locale as LC -from babel.core import UnknownLocaleError from babel.dates import format_datetime from babel.units import format_unit -from flask import send_from_directory, make_response, redirect, abort +from flask import send_from_directory, make_response, redirect, abort, url_for, send_file from flask_babel import gettext as _ from flask_login import current_user -from sqlalchemy.sql.expression import true, false, and_, or_, text, func +from sqlalchemy.sql.expression import true, false, and_, text from werkzeug.datastructures import Headers +from werkzeug.security import generate_password_hash try: from urllib.parse import quote @@ -55,17 +55,19 @@ except ImportError: try: from PIL import Image as PILImage + from PIL import UnidentifiedImageError use_PIL = True except ImportError: use_PIL = False -from . import logger, config, get_locale, db, ub, isoLanguages, worker +from . import calibre_db +from .tasks.convert import TaskConvert +from . import logger, config, get_locale, db, ub from . import gdriveutils as gd from .constants import STATIC_DIR as _STATIC_DIR -from .pagination import Pagination from .subproc_wrapper import process_wait -from .worker import STAT_WAITING, STAT_FAIL, STAT_STARTED, STAT_FINISH_SUCCESS -from .worker import TASK_EMAIL, TASK_CONVERT, TASK_UPLOAD, TASK_CONVERT_ANY +from .services.worker import WorkerThread, STAT_WAITING, STAT_FAIL, STAT_STARTED, STAT_FINISH_SUCCESS +from .tasks.mail import TaskEmail log = logger.create() @@ -73,48 +75,44 @@ log = logger.create() # Convert existing book entry to new format def convert_book_format(book_id, calibrepath, old_book_format, new_book_format, user_id, kindle_mail=None): - book = db.session.query(db.Books).filter(db.Books.id == book_id).first() - data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == old_book_format).first() + book = calibre_db.get_book(book_id) + data = calibre_db.get_book_format(book.id, old_book_format) + file_path = os.path.join(calibrepath, book.path, data.name) if not data: error_message = _(u"%(format)s format not found for book id: %(book)d", format=old_book_format, book=book_id) log.error("convert_book_format: %s", error_message) return error_message if config.config_use_google_drive: - df = gd.getFileFromEbooksFolder(book.path, data.name + "." + old_book_format.lower()) - if df: - datafile = os.path.join(calibrepath, book.path, data.name + u"." + old_book_format.lower()) - if not os.path.exists(os.path.join(calibrepath, book.path)): - os.makedirs(os.path.join(calibrepath, book.path)) - df.GetContentFile(datafile) - else: + if not gd.getFileFromEbooksFolder(book.path, data.name + "." + old_book_format.lower()): error_message = _(u"%(format)s not found on Google Drive: %(fn)s", format=old_book_format, fn=data.name + "." + old_book_format.lower()) return error_message - file_path = os.path.join(calibrepath, book.path, data.name) - if os.path.exists(file_path + "." + old_book_format.lower()): - # read settings and append converter task to queue - if kindle_mail: - settings = config.get_mail_settings() - settings['subject'] = _('Send to Kindle') # pretranslate Subject for e-mail - settings['body'] = _(u'This e-mail has been sent via Calibre-Web.') - # text = _(u"%(format)s: %(book)s", format=new_book_format, book=book.title) - else: - settings = dict() - text = (u"%s -> %s: %s" % (old_book_format, new_book_format, book.title)) - settings['old_book_format'] = old_book_format - settings['new_book_format'] = new_book_format - worker.add_convert(file_path, book.id, user_id, text, settings, kindle_mail) - return None else: - error_message = _(u"%(format)s not found: %(fn)s", - format=old_book_format, fn=data.name + "." + old_book_format.lower()) - return error_message + if not os.path.exists(file_path + "." + old_book_format.lower()): + error_message = _(u"%(format)s not found: %(fn)s", + format=old_book_format, fn=data.name + "." + old_book_format.lower()) + return error_message + # read settings and append converter task to queue + if kindle_mail: + settings = config.get_mail_settings() + settings['subject'] = _('Send to Kindle') # pretranslate Subject for e-mail + settings['body'] = _(u'This e-mail has been sent via Calibre-Web.') + else: + settings = dict() + txt = (u"%s -> %s: %s" % ( + old_book_format, + new_book_format, + "" + book.title + "")) + settings['old_book_format'] = old_book_format + settings['new_book_format'] = new_book_format + WorkerThread.add(user_id, TaskConvert(file_path, book.id, txt, settings, kindle_mail, user_id)) + return None def send_test_mail(kindle_mail, user_name): - worker.add_email(_(u'Calibre-Web test e-mail'), None, None, - config.get_mail_settings(), kindle_mail, user_name, - _(u"Test e-mail"), _(u'This e-mail has been sent via Calibre-Web.')) + WorkerThread.add(user_name, TaskEmail(_(u'Calibre-Web test e-mail'), None, None, + config.get_mail_settings(), kindle_mail, _(u"Test e-mail"), + _(u'This e-mail has been sent via Calibre-Web.'))) return @@ -124,14 +122,21 @@ def send_registration_mail(e_mail, user_name, default_password, resend=False): if not resend: text += "Your new account at Calibre-Web has been created. Thanks for joining us!\r\n" text += "Please log in to your account using the following informations:\r\n" - text += "User name: %s\n" % user_name + text += "User name: %s\r\n" % user_name text += "Password: %s\r\n" % default_password text += "Don't forget to change your password after first login.\r\n" text += "Sincerely\r\n\r\n" text += "Your Calibre-Web team" - worker.add_email(_(u'Get Started with Calibre-Web'), None, None, - config.get_mail_settings(), e_mail, None, - _(u"Registration e-mail for user: %(name)s", name=user_name), text) + WorkerThread.add(None, TaskEmail( + subject=_(u'Get Started with Calibre-Web'), + filepath=None, + attachment=None, + settings=config.get_mail_settings(), + recipient=e_mail, + taskMessage=_(u"Registration e-mail for user: %(name)s", name=user_name), + text=text + )) + return @@ -140,36 +145,53 @@ def check_send_to_kindle(entry): returns all available book formats for sending to Kindle """ if len(entry.data): - bookformats=list() - if config.config_ebookconverter == 0: + bookformats = list() + if not config.config_converterpath: # no converter - only for mobi and pdf formats for ele in iter(entry.data): - if 'MOBI' in ele.format: - bookformats.append({'format':'Mobi','convert':0,'text':_('Send %(format)s to Kindle',format='Mobi')}) - if 'PDF' in ele.format: - 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')})''' + if ele.uncompressed_size < config.mail_size: + if 'MOBI' in ele.format: + bookformats.append({'format': 'Mobi', + 'convert': 0, + 'text': _('Send %(format)s to Kindle', format='Mobi')}) + if 'PDF' in ele.format: + 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')}) else: formats = list() for ele in iter(entry.data): - formats.append(ele.format) + if ele.uncompressed_size < config.mail_size: + formats.append(ele.format) if 'MOBI' in formats: - bookformats.append({'format': 'Mobi','convert':0,'text':_('Send %(format)s to Kindle',format='Mobi')}) + bookformats.append({'format': 'Mobi', + 'convert': 0, + 'text': _('Send %(format)s to Kindle', format='Mobi')}) if 'AZW' in formats: - bookformats.append({'format': 'Azw','convert':0,'text':_('Send %(format)s to Kindle',format='Azw')}) + bookformats.append({'format': 'Azw', + 'convert': 0, + 'text': _('Send %(format)s to Kindle', format='Azw')}) if 'PDF' in formats: - bookformats.append({'format': 'Pdf','convert':0,'text':_('Send %(format)s to Kindle',format='Pdf')}) - if config.config_ebookconverter >= 1: + bookformats.append({'format': 'Pdf', + 'convert': 0, + 'text': _('Send %(format)s to Kindle', format='Pdf')}) + if config.config_converterpath: if 'EPUB' in formats and not 'MOBI' in formats: - bookformats.append({'format': 'Mobi','convert':1, - 'text':_('Convert %(orig)s to %(format)s and send to Kindle',orig='Epub',format='Mobi')}) - '''if config.config_ebookconverter == 2: - if 'EPUB' in formats and not 'AZW3' in formats: - bookformats.append({'format': 'Azw3','convert':1, - 'text':_('Convert %(orig)s to %(format)s and send to Kindle',orig='Epub',format='Azw3')})''' + bookformats.append({'format': 'Mobi', + 'convert':1, + 'text': _('Convert %(orig)s to %(format)s and send to Kindle', + orig='Epub', + format='Mobi')}) + if 'AZW3' in formats and not 'MOBI' in formats: + bookformats.append({'format': 'Mobi', + 'convert': 2, + 'text': _('Convert %(orig)s to %(format)s and send to Kindle', + orig='Azw3', + format='Mobi')}) return bookformats else: log.error(u'Cannot find book entry %d', entry.id) @@ -194,18 +216,21 @@ def check_read_formats(entry): # 3: If Pdf file is existing, it's directly send to kindle email def send_mail(book_id, book_format, convert, kindle_mail, calibrepath, user_id): """Send email with attachments""" - book = db.session.query(db.Books).filter(db.Books.id == book_id).first() + book = calibre_db.get_book(book_id) - if convert: + if convert == 1: # returns None if success, otherwise errormessage return convert_book_format(book_id, calibrepath, u'epub', book_format.lower(), user_id, kindle_mail) + if convert == 2: + # returns None if success, otherwise errormessage + return convert_book_format(book_id, calibrepath, u'azw3', book_format.lower(), user_id, kindle_mail) for entry in iter(book.data): if entry.format.upper() == book_format.upper(): converted_file_name = entry.name + '.' + book_format.lower() - worker.add_email(_(u"Send to Kindle"), book.path, converted_file_name, - config.get_mail_settings(), kindle_mail, user_id, - _(u"E-mail: %(book)s", book=book.title), _(u'This e-mail has been sent via Calibre-Web.')) + WorkerThread.add(user_id, TaskEmail(_(u"Send to Kindle"), book.path, converted_file_name, + config.get_mail_settings(), kindle_mail, + _(u"E-mail: %(book)s", book=book.title), _(u'This e-mail has been sent via Calibre-Web.'))) return return _(u"The requested file could not be read. Maybe wrong permissions?") @@ -219,22 +244,22 @@ def get_valid_filename(value, replace_whitespace=True): value = value[:-1]+u'_' value = value.replace("/", "_").replace(":", "_").strip('\0') if use_unidecode: - value = (unidecode.unidecode(value)).strip() + value = (unidecode.unidecode(value)) else: value = value.replace(u'§', u'SS') value = value.replace(u'ß', u'ss') value = unicodedata.normalize('NFKD', value) re_slugify = re.compile(r'[\W\s-]', re.UNICODE) if isinstance(value, str): # Python3 str, Python2 unicode - value = re_slugify.sub('', value).strip() + value = re_slugify.sub('', value) else: - value = unicode(re_slugify.sub('', value).strip()) + value = unicode(re_slugify.sub('', value)) if replace_whitespace: # *+:\"/<>? are replaced by _ - value = re.sub(r'[\*\+:\\\"/<>\?]+', u'_', value, flags=re.U) + value = re.sub(r'[*+:\\\"/<>?]+', u'_', value, flags=re.U) # pipe has to be replaced with comma - value = re.sub(r'[\|]+', u',', value, flags=re.U) - value = value[:128] + value = re.sub(r'[|]+', u',', value, flags=re.U) + value = value[:128].strip() if not value: raise ValueError("Filename cannot be empty") if sys.version_info.major == 3: @@ -243,6 +268,22 @@ def get_valid_filename(value, replace_whitespace=True): return value.decode('utf-8') +def split_authors(values): + authors_list = [] + for value in values: + authors = re.split('[&;]', value) + for author in authors: + commas = author.count(',') + if commas == 1: + author_split = author.split(',') + authors_list.append(author_split[1].strip() + ' ' + author_split[0].strip()) + elif commas > 1: + authors_list.extend([x.strip() for x in author.split(',')]) + else: + authors_list.append(author.strip()) + return authors_list + + def get_sorted_author(value): try: if ',' not in value: @@ -250,7 +291,10 @@ def get_sorted_author(value): combined = "(" + ")|(".join(regexes) + ")" value = value.split(" ") if re.match(combined, value[-1].upper()): - value2 = value[-2] + ", " + " ".join(value[:-2]) + " " + value[-1] + if len(value) > 1: + value2 = value[-2] + ", " + " ".join(value[:-2]) + " " + value[-1] + else: + value2 = value[0] elif len(value) == 1: value2 = value[0] else: @@ -259,7 +303,10 @@ def get_sorted_author(value): value2 = value except Exception as ex: log.error("Sorting author %s failed: %s", value, ex) - value2 = value + if isinstance(list, value2): + value2 = value[0] + else: + value2 = value return value2 @@ -272,79 +319,108 @@ def delete_book_file(book, calibrepath, book_format=None): for file in os.listdir(path): if file.upper().endswith("."+book_format): os.remove(os.path.join(path, file)) + return True, None else: if os.path.isdir(path): - if len(next(os.walk(path))[1]): - log.error("Deleting book %s failed, path has subfolders: %s", book.id, book.path) - return False - shutil.rmtree(path, ignore_errors=True) - return True + try: + for root, folders, files in os.walk(path): + for f in files: + os.unlink(os.path.join(root, f)) + if len(folders): + log.warning("Deleting book {} failed, path {} has subfolders: {}".format(book.id, + book.path, folders)) + return True, _("Deleting bookfolder for book %(id)s failed, path has subfolders: %(path)s", + id=book.id, + path=book.path) + shutil.rmtree(path) + except (IOError, OSError) as e: + log.error("Deleting book %s failed: %s", book.id, e) + return False, _("Deleting book %(id)s failed: %(message)s", id=book.id, message=e) + authorpath = os.path.join(calibrepath, os.path.split(book.path)[0]) + if not os.listdir(authorpath): + try: + shutil.rmtree(authorpath) + except (IOError, OSError) as e: + log.error("Deleting authorpath for book %s failed: %s", book.id, e) + return True, None else: log.error("Deleting book %s failed, book path not valid: %s", book.id, book.path) - return False + return True, _("Deleting book %(id)s, book path not valid: %(path)s", + id=book.id, + path=book.path) -def update_dir_structure_file(book_id, calibrepath, first_author): - localbook = db.session.query(db.Books).filter(db.Books.id == book_id).first() - path = os.path.join(calibrepath, localbook.path) +# Moves files in file storage during author/title rename, or from temp dir to file storage +def update_dir_structure_file(book_id, calibrepath, first_author, orignal_filepath, db_filename): + # get book database entry from id, if original path overwrite source with original_filepath + localbook = calibre_db.get_book(book_id) + if orignal_filepath: + path = orignal_filepath + else: + path = os.path.join(calibrepath, localbook.path) + # Create (current) authordir and titledir from database authordir = localbook.path.split('/')[0] + titledir = localbook.path.split('/')[1] + + # Create new_authordir from parameter or from database + # Create new titledir from database and add id if first_author: new_authordir = get_valid_filename(first_author) else: new_authordir = get_valid_filename(localbook.authors[0].name) - - titledir = localbook.path.split('/')[1] new_titledir = get_valid_filename(localbook.title) + " (" + str(book_id) + ")" - if titledir != new_titledir: + if titledir != new_titledir or authordir != new_authordir or orignal_filepath: + new_path = os.path.join(calibrepath, new_authordir, new_titledir) + new_name = get_valid_filename(localbook.title) + ' - ' + get_valid_filename(new_authordir) try: - new_title_path = os.path.join(os.path.dirname(path), new_titledir) - if not os.path.exists(new_title_path): - os.renames(path, new_title_path) + if orignal_filepath: + if not os.path.isdir(new_path): + os.makedirs(new_path) + shutil.move(os.path.normcase(path), os.path.normcase(os.path.join(new_path, db_filename))) + log.debug("Moving title: %s to %s/%s", path, new_path, new_name) + # Check new path is not valid path else: - log.info("Copying title: %s into existing: %s", path, new_title_path) - for dir_name, __, file_list in os.walk(path): - for file in file_list: - os.renames(os.path.join(dir_name, file), - os.path.join(new_title_path + dir_name[len(path):], file)) - path = new_title_path - localbook.path = localbook.path.split('/')[0] + '/' + new_titledir + if not os.path.exists(new_path): + # move original path to new path + log.debug("Moving title: %s to %s", path, new_path) + shutil.move(os.path.normcase(path), os.path.normcase(new_path)) + else: # path is valid copy only files to new location (merge) + log.info("Moving title: %s into existing: %s", path, new_path) + # Take all files and subfolder from old path (strange command) + for dir_name, __, file_list in os.walk(path): + for file in file_list: + shutil.move(os.path.normcase(os.path.join(dir_name, file)), + os.path.normcase(os.path.join(new_path + dir_name[len(path):], file))) + # os.unlink(os.path.normcase(os.path.join(dir_name, file))) + # change location in database to new author/title path + localbook.path = os.path.join(new_authordir, new_titledir).replace('\\','/') except OSError as ex: - log.error("Rename title from: %s to %s: %s", path, new_title_path, ex) + log.error("Rename title from: %s to %s: %s", path, new_path, ex) log.debug(ex, exc_info=True) return _("Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s", - src=path, dest=new_title_path, error=str(ex)) - if authordir != new_authordir: + src=path, dest=new_path, error=str(ex)) + + # Rename all files from old names to new names try: - new_author_path = os.path.join(calibrepath, new_authordir, os.path.basename(path)) - os.renames(path, new_author_path) - localbook.path = new_authordir + '/' + localbook.path.split('/')[1] - except OSError as ex: - log.error("Rename author from: %s to %s: %s", path, new_author_path, ex) - log.debug(ex, exc_info=True) - return _("Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s", - src=path, dest=new_author_path, error=str(ex)) - # Rename all files from old names to new names - if authordir != new_authordir or titledir != new_titledir: - try: - new_name = get_valid_filename(localbook.title) + ' - ' + get_valid_filename(new_authordir) - path_name = os.path.join(calibrepath, new_authordir, os.path.basename(path)) for file_format in localbook.data: - os.renames(os.path.join(path_name, file_format.name + '.' + file_format.format.lower()), - os.path.join(path_name, new_name + '.' + file_format.format.lower())) + shutil.move(os.path.normcase( + os.path.join(new_path, file_format.name + '.' + file_format.format.lower())), + os.path.normcase(os.path.join(new_path, new_name + '.' + file_format.format.lower()))) file_format.name = new_name + if not orignal_filepath and len(os.listdir(os.path.dirname(path))) == 0: + shutil.rmtree(os.path.dirname(path)) except OSError as ex: - log.error("Rename file in path %s to %s: %s", path, new_name, ex) + log.error("Rename file in path %s to %s: %s", new_path, new_name, ex) log.debug(ex, exc_info=True) return _("Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s", - src=path, dest=new_name, error=str(ex)) + src=new_path, dest=new_name, error=str(ex)) return False - def update_dir_structure_gdrive(book_id, first_author): error = False - book = db.session.query(db.Books).filter(db.Books.id == book_id).first() + book = calibre_db.get_book(book_id) path = book.path authordir = book.path.split('/')[0] @@ -364,7 +440,7 @@ def update_dir_structure_gdrive(book_id, first_author): path = book.path gd.updateDatabaseOnEdit(gFile['id'], book.path) # only child folder affected else: - error = _(u'File %(file)s not found on Google Drive', file=book.path) # file not found + error = _(u'File %(file)s not found on Google Drive', file=book.path) # file not found if authordir != new_authordir: gFile = gd.getFileFromEbooksFolder(os.path.dirname(book.path), new_titledir) @@ -374,7 +450,7 @@ def update_dir_structure_gdrive(book_id, first_author): path = book.path gd.updateDatabaseOnEdit(gFile['id'], book.path) else: - error = _(u'File %(file)s not found on Google Drive', file=authordir) # file not found + error = _(u'File %(file)s not found on Google Drive', file=authordir) # file not found # Rename all files from old names to new names if authordir != new_authordir or titledir != new_titledir: @@ -390,7 +466,7 @@ def update_dir_structure_gdrive(book_id, first_author): def delete_book_gdrive(book, book_format): - error= False + error = None if book_format: name = '' for entry in book.data: @@ -398,27 +474,57 @@ def delete_book_gdrive(book, book_format): name = entry.name + '.' + book_format gFile = gd.getFileFromEbooksFolder(book.path, name) else: - gFile = gd.getFileFromEbooksFolder(os.path.dirname(book.path),book.path.split('/')[1]) + gFile = gd.getFileFromEbooksFolder(os.path.dirname(book.path), book.path.split('/')[1]) if gFile: gd.deleteDatabaseEntry(gFile['id']) gFile.Trash() else: - error =_(u'Book path %(path)s not found on Google Drive', path=book.path) # file not found - return error + error = _(u'Book path %(path)s not found on Google Drive', path=book.path) # file not found + + return error is None, error + + +def reset_password(user_id): + existing_user = ub.session.query(ub.User).filter(ub.User.id == user_id).first() + if not existing_user: + return 0, None + if not config.get_mail_server_configured(): + return 2, None + try: + password = generate_random_password() + existing_user.password = generate_password_hash(password) + ub.session.commit() + send_registration_mail(existing_user.email, existing_user.nickname, password, True) + return 1, existing_user.nickname + except Exception: + ub.session.rollback() + return 0, None def generate_random_password(): s = "abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%&*()?" passlen = 8 - return "".join(random.sample(s,passlen )) + if sys.version_info < (3, 0): + return "".join(s[ord(c) % len(s)] for c in os.urandom(passlen)) + else: + return "".join(s[c % len(s)] for c in os.urandom(passlen)) -################################## External interface -def update_dir_stucture(book_id, calibrepath, first_author = None): +def uniq(inpt): + output = [] + for x in inpt: + if x not in output: + output.append(x) + return output + +# ################################# External interface ################################# + + +def update_dir_stucture(book_id, calibrepath, first_author=None, orignal_filepath=None, db_filename=None): if config.config_use_google_drive: return update_dir_structure_gdrive(book_id, first_author) else: - return update_dir_structure_file(book_id, calibrepath, first_author) + return update_dir_structure_file(book_id, calibrepath, first_author, orignal_filepath, db_filename) def delete_book(book, calibrepath, book_format): @@ -428,38 +534,64 @@ def delete_book(book, calibrepath, book_format): return delete_book_file(book, calibrepath, book_format) -def get_book_cover(book_id): - book = db.session.query(db.Books).filter(db.Books.id == book_id).first() - if book.has_cover: +def get_cover_on_failure(use_generic_cover): + if use_generic_cover: + return send_from_directory(_STATIC_DIR, "generic_cover.jpg") + else: + return None + +def get_book_cover(book_id): + book = calibre_db.get_filtered_book(book_id, allow_show_archived=True) + return get_book_cover_internal(book, use_generic_cover_on_failure=True) + + +def get_book_cover_with_uuid(book_uuid, + use_generic_cover_on_failure=True): + book = calibre_db.get_book_by_uuid(book_uuid) + return get_book_cover_internal(book, use_generic_cover_on_failure) + + +def get_book_cover_internal(book, use_generic_cover_on_failure): + if book and book.has_cover: if config.config_use_google_drive: try: if not gd.is_gdrive_ready(): - return send_from_directory(_STATIC_DIR, "generic_cover.jpg") - path=gd.get_cover_via_gdrive(book.path) + return get_cover_on_failure(use_generic_cover_on_failure) + path = gd.get_cover_via_gdrive(book.path) if path: return redirect(path) else: log.error('%s/cover.jpg not found on Google Drive', book.path) - return send_from_directory(_STATIC_DIR, "generic_cover.jpg") + return get_cover_on_failure(use_generic_cover_on_failure) except Exception as e: log.exception(e) # traceback.print_exc() - return send_from_directory(_STATIC_DIR,"generic_cover.jpg") + return get_cover_on_failure(use_generic_cover_on_failure) else: cover_file_path = os.path.join(config.config_calibre_dir, book.path) if os.path.isfile(os.path.join(cover_file_path, "cover.jpg")): return send_from_directory(cover_file_path, "cover.jpg") else: - return send_from_directory(_STATIC_DIR,"generic_cover.jpg") + return get_cover_on_failure(use_generic_cover_on_failure) else: - return send_from_directory(_STATIC_DIR,"generic_cover.jpg") + return get_cover_on_failure(use_generic_cover_on_failure) # saves book cover from url def save_cover_from_url(url, book_path): - img = requests.get(url) - return save_cover(img, book_path) + try: + img = requests.get(url, timeout=(10, 200)) # ToDo: Error Handling + img.raise_for_status() + return save_cover(img, book_path) + except (requests.exceptions.HTTPError, + requests.exceptions.ConnectionError, + requests.exceptions.Timeout) as ex: + log.info(u'Cover Download Error %s', ex) + return False, _("Error Downloading Cover") + except UnidentifiedImageError as ex: + log.info(u'File Format Error %s', ex) + return False, _("Cover Format Error") def save_cover_from_filestorage(filepath, saved_filename, img): @@ -474,16 +606,13 @@ def save_cover_from_filestorage(filepath, saved_filename, img): os.makedirs(filepath) except OSError: log.error(u"Failed to create path for cover") - return False + 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 - except OSError: - log.error(u"Failed to store cover-file") - return False - return True + 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 # saves book cover to gdrive or locally @@ -493,10 +622,10 @@ def save_cover(img, book_path): if use_PIL: if content_type not in ('image/jpeg', 'image/png', 'image/webp'): log.error("Only jpg/jpeg/png/webp files are supported as coverfile") - return False + return False, _("Only jpg/jpeg/png/webp files are supported as coverfile") # convert to jpg because calibre only supports jpg if content_type in ('image/png', 'image/webp'): - if hasattr(img,'stream'): + if hasattr(img, 'stream'): imgc = PILImage.open(img.stream) else: imgc = PILImage.open(io.BytesIO(img.content)) @@ -505,25 +634,25 @@ def save_cover(img, book_path): im.save(tmp_bytesio, format='JPEG') img._content = tmp_bytesio.getvalue() else: - if content_type not in ('image/jpeg'): + if content_type not in 'image/jpeg': log.error("Only jpg/jpeg files are supported as coverfile") - return False + return False, _("Only jpg/jpeg files are supported as coverfile") if config.config_use_google_drive: tmpDir = gettempdir() - if save_cover_from_filestorage(tmpDir, "uploaded_cover.jpg", img) is True: + ret, message = save_cover_from_filestorage(tmpDir, "uploaded_cover.jpg", img) + if ret is True: gd.uploadFileToEbooksFolder(os.path.join(book_path, 'cover.jpg'), os.path.join(tmpDir, "uploaded_cover.jpg")) log.info("Cover is saved on Google Drive") - return True + return True, None else: - return False + return False, message else: return save_cover_from_filestorage(os.path.join(config.config_calibre_dir, book_path), "cover.jpg", img) - -def do_download_file(book, book_format, data, headers): +def do_download_file(book, book_format, client, data, headers): if config.config_use_google_drive: startTime = time.time() df = gd.getFileFromEbooksFolder(book.path, data.name + "." + book_format) @@ -537,42 +666,47 @@ def do_download_file(book, book_format, data, headers): if not os.path.isfile(os.path.join(filename, data.name + "." + book_format)): # ToDo: improve error handling log.error('File not found: %s', os.path.join(filename, data.name + "." + book_format)) + + if client == "kobo" and book_format == "kepub": + headers["Content-Disposition"] = headers["Content-Disposition"].replace(".kepub", ".kepub.epub") + response = make_response(send_from_directory(filename, data.name + "." + book_format)) - response.headers = headers + # ToDo Check headers parameter + for element in headers: + response.headers[element[0]] = element[1] return response ################################## - def check_unrar(unrarLocation): if not unrarLocation: return if not os.path.exists(unrarLocation): - return 'Unrar binary file not found' + return _('Unrar binary file not found') try: if sys.version_info < (3, 0): unrarLocation = unrarLocation.encode(sys.getfilesystemencoding()) unrarLocation = [unrarLocation] for lines in process_wait(unrarLocation): - value = re.search('UNRAR (.*) freeware', lines) + value = re.search('UNRAR (.*) freeware', lines, re.IGNORECASE) if value: version = value.group(1) log.debug("unrar version %s", version) - except OSError as err: + break + except (OSError, UnicodeDecodeError) as err: log.exception(err) - return 'Error excecuting UnRar' - + return _('Error excecuting UnRar') def json_serial(obj): """JSON serializer for objects not serializable by default json code""" - if isinstance(obj, (datetime)): + if isinstance(obj, datetime): return obj.isoformat() - if isinstance(obj, (timedelta)): + if isinstance(obj, timedelta): return { '__type__': 'timedelta', 'days': obj.days, @@ -580,7 +714,7 @@ def json_serial(obj): 'microseconds': obj.microseconds, } # return obj.isoformat() - raise TypeError ("Type %s not serializable" % type(obj)) + raise TypeError("Type %s not serializable" % type(obj)) # helper function for displaying the runtime of tasks @@ -602,169 +736,83 @@ def format_runtime(runtime): # helper function to apply localize status information in tasklist entries def render_task_status(tasklist): - renderedtasklist=list() - for task in tasklist: - if task['user'] == current_user.nickname or current_user.role_admin(): - if task['formStarttime']: - task['starttime'] = format_datetime(task['formStarttime'], format='short', locale=get_locale()) - # task2['formStarttime'] = "" - else: - if 'starttime' not in task: - task['starttime'] = "" - - if 'formRuntime' not in task: - task['runtime'] = "" - else: - task['runtime'] = format_runtime(task['formRuntime']) + renderedtasklist = list() + for num, user, added, task in tasklist: + if user == current_user.nickname or current_user.role_admin(): + ret = {} + if task.start_time: + ret['starttime'] = format_datetime(task.start_time, format='short', locale=get_locale()) + ret['runtime'] = format_runtime(task.runtime) # localize the task status - if isinstance( task['stat'], int ): - if task['stat'] == STAT_WAITING: - task['status'] = _(u'Waiting') - elif task['stat'] == STAT_FAIL: - task['status'] = _(u'Failed') - elif task['stat'] == STAT_STARTED: - task['status'] = _(u'Started') - elif task['stat'] == STAT_FINISH_SUCCESS: - task['status'] = _(u'Finished') + if isinstance(task.stat, int): + if task.stat == STAT_WAITING: + ret['status'] = _(u'Waiting') + elif task.stat == STAT_FAIL: + ret['status'] = _(u'Failed') + elif task.stat == STAT_STARTED: + ret['status'] = _(u'Started') + elif task.stat == STAT_FINISH_SUCCESS: + ret['status'] = _(u'Finished') else: - task['status'] = _(u'Unknown Status') + ret['status'] = _(u'Unknown Status') - # localize the task type - if isinstance( task['taskType'], int ): - if task['taskType'] == TASK_EMAIL: - task['taskMessage'] = _(u'E-mail: ') + task['taskMess'] - elif task['taskType'] == TASK_CONVERT: - task['taskMessage'] = _(u'Convert: ') + task['taskMess'] - elif task['taskType'] == TASK_UPLOAD: - task['taskMessage'] = _(u'Upload: ') + task['taskMess'] - elif task['taskType'] == TASK_CONVERT_ANY: - task['taskMessage'] = _(u'Convert: ') + task['taskMess'] - else: - task['taskMessage'] = _(u'Unknown Task: ') + task['taskMess'] - - renderedtasklist.append(task) + ret['taskMessage'] = "{}: {}".format(_(task.name), task.message) + ret['progress'] = "{} %".format(int(task.progress * 100)) + ret['user'] = user + renderedtasklist.append(ret) return renderedtasklist -# Language and content filters for displaying in the UI -def common_filters(): - if current_user.filter_language() != "all": - lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language()) - else: - lang_filter = true() - content_rating_filter = false() if current_user.mature_content else \ - db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags())) - return and_(lang_filter, ~content_rating_filter) - def tags_filters(): - return ~(false() if current_user.mature_content else \ - db.Tags.name.in_(config.mature_content_tags())) - # return db.session.query(db.Tags).filter(~content_rating_filter).order_by(db.Tags.name).all() + negtags_list = current_user.list_denied_tags() + postags_list = current_user.list_allowed_tags() + neg_content_tags_filter = false() if negtags_list == [''] else db.Tags.name.in_(negtags_list) + pos_content_tags_filter = true() if postags_list == [''] else db.Tags.name.in_(postags_list) + return and_(pos_content_tags_filter, ~neg_content_tags_filter) -# Creates for all stored languages a translated speaking name in the array for the UI -def speaking_language(languages=None): - if not languages: - languages = db.session.query(db.Languages).all() - for lang in languages: - try: - cur_l = LC.parse(lang.lang_code) - lang.name = cur_l.get_language_name(get_locale()) - except UnknownLocaleError: - lang.name = _(isoLanguages.get(part3=lang.lang_code).name) - return languages - # checks if domain is in database (including wildcards) # example SELECT * FROM @TABLE WHERE 'abcdefg' LIKE Name; # from https://code.luasoftware.com/tutorials/flask/execute-raw-sql-in-flask-sqlalchemy/ def check_valid_domain(domain_text): - domain_text = domain_text.split('@', 1)[-1].lower() - sql = "SELECT * FROM registration WHERE :domain LIKE domain;" + # domain_text = domain_text.split('@', 1)[-1].lower() + sql = "SELECT * FROM registration WHERE (:domain LIKE domain and allow = 1);" result = ub.session.query(ub.Registration).from_statement(text(sql)).params(domain=domain_text).all() - return len(result) + if not len(result): + return False + sql = "SELECT * FROM registration WHERE (:domain LIKE domain and allow = 0);" + result = ub.session.query(ub.Registration).from_statement(text(sql)).params(domain=domain_text).all() + return not len(result) -# Orders all Authors in the list according to authors sort -def order_authors(entry): - sort_authors = entry.author_sort.split('&') - authors_ordered = list() - error = False - for auth in sort_authors: - # ToDo: How to handle not found authorname - result = db.session.query(db.Authors).filter(db.Authors.sort == auth.lstrip().strip()).first() - if not result: - error = True - break - authors_ordered.append(result) - if not error: - entry.authors = authors_ordered - return entry - - -# Fill indexpage with all requested data from database -def fill_indexpage(page, database, db_filter, order, *join): - if current_user.show_detail_random(): - randm = db.session.query(db.Books).filter(common_filters())\ - .order_by(func.random()).limit(config.config_random_books) - else: - randm = false() - off = int(int(config.config_books_per_page) * (page - 1)) - pagination = Pagination(page, config.config_books_per_page, - len(db.session.query(database).filter(db_filter).filter(common_filters()).all())) - entries = db.session.query(database).join(*join, isouter=True).filter(db_filter).filter(common_filters()).\ - order_by(*order).offset(off).limit(config.config_books_per_page).all() - for book in entries: - book = order_authors(book) - return entries, randm, pagination - - -def get_typeahead(database, query, replace=('',''), tag_filter=true()): - db.session.connection().connection.connection.create_function("lower", 1, lcase) - entries = db.session.query(database).filter(tag_filter).filter(func.lower(database.name).ilike("%" + query + "%")).all() - json_dumps = json.dumps([dict(name=r.name.replace(*replace)) for r in entries]) - return json_dumps - -# read search results from calibre-database and return it (function is used for feed and simple search -def get_search_results(term): - db.session.connection().connection.connection.create_function("lower", 1, lcase) - q = list() - authorterms = re.split("[, ]+", term) - for authorterm in authorterms: - q.append(db.Books.authors.any(func.lower(db.Authors.name).ilike("%" + authorterm + "%"))) - - db.Books.authors.any(func.lower(db.Authors.name).ilike("%" + term + "%")) - - return db.session.query(db.Books).filter(common_filters()).filter( - or_(db.Books.tags.any(func.lower(db.Tags.name).ilike("%" + term + "%")), - db.Books.series.any(func.lower(db.Series.name).ilike("%" + term + "%")), - db.Books.authors.any(and_(*q)), - db.Books.publishers.any(func.lower(db.Publishers.name).ilike("%" + term + "%")), - func.lower(db.Books.title).ilike("%" + term + "%") - )).all() - -def get_cc_columns(): - tmpcc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all() +def get_cc_columns(filter_config_custom_read=False): + tmpcc = calibre_db.session.query(db.Custom_Columns)\ + .filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all() + cc = [] + r = None if config.config_columns_to_ignore: - cc = [] - for col in tmpcc: - r = re.compile(config.config_columns_to_ignore) - if r.match(col.label): - cc.append(col) - else: - cc = tmpcc + r = re.compile(config.config_columns_to_ignore) + + for col in tmpcc: + if filter_config_custom_read and config.config_read_column and config.config_read_column == col.id: + continue + if r and r.match(col.name): + continue + cc.append(col) + return cc -def get_download_link(book_id, book_format): + +def get_download_link(book_id, book_format, client): book_format = book_format.split(".")[0] - book = db.session.query(db.Books).filter(db.Books.id == book_id).filter(common_filters()).first() + book = calibre_db.get_filtered_book(book_id) if book: - data = db.session.query(db.Data).filter(db.Data.book == book.id)\ - .filter(db.Data.format == book_format.upper()).first() + data1 = calibre_db.get_book_format(book.id, book_format.upper()) else: abort(404) - if data: + if data1: # collect downloaded books only for registered user and not for anonymous user if current_user.is_authenticated: ub.update_download(book_id, int(current_user.id)) @@ -774,28 +822,9 @@ def get_download_link(book_id, book_format): file_name = get_valid_filename(file_name) headers = Headers() headers["Content-Type"] = mimetypes.types_map.get('.' + book_format, "application/octet-stream") - headers["Content-Disposition"] = "attachment; filename*=UTF-8''%s.%s" % (quote(file_name.encode('utf-8')), - book_format) - return do_download_file(book, book_format, data, headers) + headers["Content-Disposition"] = "attachment; filename=%s.%s; filename*=UTF-8''%s.%s" % ( + quote(file_name.encode('utf-8')), book_format, quote(file_name.encode('utf-8')), book_format) + return do_download_file(book, book_format, client, data1, headers) else: abort(404) -def check_exists_book(authr,title): - db.session.connection().connection.connection.create_function("lower", 1, lcase) - q = list() - authorterms = re.split(r'\s*&\s*', authr) - for authorterm in authorterms: - q.append(db.Books.authors.any(func.lower(db.Authors.name).ilike("%" + authorterm + "%"))) - - return db.session.query(db.Books).filter( - and_(db.Books.authors.any(and_(*q)), - func.lower(db.Books.title).ilike("%" + title + "%") - )).first() - -############### Database Helper functions - -def lcase(s): - try: - return unidecode.unidecode(s.lower()) - except Exception as e: - log.exception(e) diff --git a/cps/isoLanguages.py b/cps/isoLanguages.py index 3281f98dc..4c0aefc3c 100644 --- a/cps/isoLanguages.py +++ b/cps/isoLanguages.py @@ -57,12 +57,36 @@ def get_language_name(locale, lang_code): def get_language_codes(locale, language_names, remainder=None): language_names = set(x.strip().lower() for x in language_names if x) - + languages = list() for k, v in get_language_names(locale).items(): v = v.lower() if v in language_names: + languages.append(k) language_names.remove(v) - yield k - if remainder is not None: remainder.extend(language_names) + return languages + +def get_valid_language_codes(locale, language_names, remainder=None): + languages = list() + if "" in language_names: + language_names.remove("") + for k, v in get_language_names(locale).items(): + if k in language_names: + languages.append(k) + language_names.remove(k) + if remainder is not None and len(language_names): + remainder.extend(language_names) + return languages + +def get_lang3(lang): + try: + if len(lang) == 2: + ret_value = get(part1=lang).part3 + elif len(lang) == 3: + ret_value = lang + else: + ret_value = "" + except KeyError: + ret_value = lang + return ret_value diff --git a/cps/iso_language_names.py b/cps/iso_language_names.py index c8690d377..52e50667e 100644 --- a/cps/iso_language_names.py +++ b/cps/iso_language_names.py @@ -8,6 +8,8 @@ from __future__ import unicode_literals +# This file is autogenerated, do NOT add, change, or delete ANY string +# If you need help or assistance for adding a new language, please contact the project team # map iso639 language codes to language names, translated @@ -432,6 +434,379 @@ LANGUAGE_NAMES = { "zxx": "brak kontekstu językowego", "zza": "zazaki" }, + "el": { + "abk": "Αμπχαζιανά", + "ace": "Ατσενέζικα", + "ach": "Ακόλο", + "ada": "Αντάνγκμε", + "ady": "Αντύγκε", + "aar": "Αφάρ", + "afh": "Αφριχίλι", + "afr": "Αφρικάανς", + "ain": "Αϊνού (Ιαπωνία)", + "aka": "Ακάν", + "akk": "Akkadian", + "sqi": "Αλβανικά", + "ale": "Aleut", + "amh": "Amharic", + "anp": "Angika", + "ara": "Αραβικά", + "arg": "Αραγωνικά ", + "arp": "Αραπάχο", + "arw": "Arawak", + "hye": "Αρμένικα", + "asm": "Assamese", + "ast": "Asturian", + "ava": "Αβαρικά", + "ave": "Avestan", + "awa": "Awadhi", + "aym": "Aymara", + "aze": "Αζερμπαϊτζιανά", + "ban": "Balinese", + "bal": "Baluchi", + "bam": "Bambara", + "bas": "Basa (Cameroon)", + "bak": "Bashkir", + "eus": "Βασκικά", + "bej": "Beja", + "bel": "Λευκωρωσικά", + "bem": "Bemba (Zambia)", + "ben": "Μπενγκάλι", + "bho": "Bhojpuri", + "bik": "Bikol", + "byn": "Bilin", + "bin": "Bini", + "bis": "Bislama", + "zbl": "Blissymbols", + "bos": "Βοσνιακά", + "bra": "Braj", + "bre": "Βρετονικά", + "bug": "Buginese", + "bul": "Βουλγάρικα", + "bua": "Buriat", + "mya": "Burmese", + "cad": "Caddo", + "cat": "Καταλανικά", + "ceb": "Cebuano", + "chg": "Chagatai", + "cha": "Chamorro", + "che": "Τσετσενικά", + "chr": "Cherokee", + "chy": "Cheyenne", + "chb": "Chibcha", + "zho": "Κινέζικα", + "chn": "Chinook jargon", + "chp": "Chipewyan", + "cho": "Choctaw", + "chk": "Chuukese", + "chv": "Chuvash", + "cop": "Κοπτικά", + "cor": "Cornish", + "cos": "Κορσικανικά", + "cre": "Cree", + "mus": "Creek", + "hrv": "Κροατικά", + "ces": "Τσέχικα", + "dak": "Dakota", + "dan": "Δανέζικα", + "dar": "Dargwa", + "del": "Delaware", + "div": "Dhivehi", + "din": "Dinka", + "doi": "Dogri (macrolanguage)", + "dgr": "Dogrib", + "dua": "Duala", + "nld": "Ολλανδικά", + "dyu": "Dyula", + "dzo": "Dzongkha", + "efi": "Efik", + "egy": "Αρχαία Αιγυπτιακά", + "eka": "Ekajuk", + "elx": "Elamite", + "eng": "Αγγλικά", + "myv": "Erzya", + "epo": "Εσπεράντο", + "est": "Εσθονικά", + "ewe": "Ewe", + "ewo": "Ewondo", + "fan": "Fang (Equatorial Guinea)", + "fat": "Fanti", + "fao": "Faroese", + "fij": "Fijian", + "fil": "Filipino", + "fin": "Φινλανδικά", + "fon": "Fon", + "fra": "Γαλλικά", + "fur": "Friulian", + "ful": "Fulah", + "gaa": "Ga", + "glg": "Galician", + "lug": "Ganda", + "gay": "Gayo", + "gba": "Gbaya (Central African Republic)", + "gez": "Geez", + "kat": "Γεωργιανά", + "deu": "Γερμανικά", + "gil": "Gilbertese", + "gon": "Gondi", + "gor": "Gorontalo", + "got": "Γοτθικά", + "grb": "Grebo", + "grn": "Guarani", + "guj": "Gujarati", + "gwi": "Gwichʼin", + "hai": "Haida", + "hau": "Hausa", + "haw": "Hawaiian", + "heb": "Εβραϊκά", + "her": "Herero", + "hil": "Hiligaynon", + "hin": "Ινδικά", + "hmo": "Hiri Motu", + "hit": "Hittite", + "hmn": "Hmong", + "hun": "Ουγγρικά", + "hup": "Hupa", + "iba": "Iban", + "isl": "Ισλανδικά", + "ido": "Ido", + "ibo": "Igbo", + "ilo": "Iloko", + "ind": "Ινδονησιακά", + "inh": "Ingush", + "ina": "Interlingua (International Auxiliary Language Association)", + "ile": "Interlingue", + "iku": "Inuktitut", + "ipk": "Inupiaq", + "gle": "Ιρλανδέζικα", + "ita": "Ιταλικά", + "jpn": "Γιαπωνέζικα", + "jav": "Javanese", + "jrb": "Judeo-Arabic", + "jpr": "Judeo-Persian", + "kbd": "Kabardian", + "kab": "Kabyle", + "kac": "Kachin", + "kal": "Kalaallisut", + "xal": "Kalmyk", + "kam": "Kamba (Kenya)", + "kan": "Kannada", + "kau": "Kanuri", + "kaa": "Kara-Kalpak", + "krc": "Karachay-Balkar", + "krl": "Karelian", + "kas": "Kashmiri", + "csb": "Kashubian", + "kaw": "Kawi", + "kaz": "Kazakh", + "kha": "Khasi", + "kho": "Khotanese", + "kik": "Kikuyu", + "kmb": "Kimbundu", + "kin": "Kinyarwanda", + "kir": "Kirghiz", + "tlh": "Κλίγκον", + "kom": "Komi", + "kon": "Kongo", + "kok": "Konkani (macrolanguage)", + "kor": "Κορεάτικα", + "kos": "Kosraean", + "kpe": "Kpelle", + "kua": "Kuanyama", + "kum": "Kumyk", + "kur": "Κουρδικά", + "kru": "Kurukh", + "kut": "Kutenai", + "lad": "Ladino", + "lah": "Lahnda", + "lam": "Lamba", + "lao": "Lao", + "lat": "Λατινικά", + "lav": "Λετονέζικα", + "lez": "Lezghian", + "lim": "Limburgan", + "lin": "Lingala", + "lit": "Λιθουανικά", + "jbo": "Lojban", + "loz": "Lozi", + "lub": "Luba-Katanga", + "lua": "Luba-Lulua", + "lui": "Luiseno", + "smj": "Lule Sami", + "lun": "Lunda", + "luo": "Luo (Kenya and Tanzania)", + "lus": "Lushai", + "ltz": "Luxembourgish", + "mkd": "Σλαβομακεδονικά", + "mad": "Madurese", + "mag": "Magahi", + "mai": "Maithili", + "mak": "Makasar", + "mlg": "Malagasy", + "msa": "Malay (macrolanguage)", + "mal": "Malayalam", + "mlt": "Maltese", + "mnc": "Manchu", + "mdr": "Mandar", + "man": "Mandingo", + "mni": "Manipuri", + "glv": "Manx", + "mri": "Maori", + "arn": "Mapudungun", + "mar": "Marathi", + "chm": "Mari (Russia)", + "mah": "Marshallese", + "mwr": "Marwari", + "mas": "Masai", + "men": "Mende (Sierra Leone)", + "mic": "Mi'kmaq", + "min": "Minangkabau", + "mwl": "Mirandese", + "moh": "Mohawk", + "mdf": "Moksha", + "lol": "Mongo", + "mon": "Μογγολικά", + "mos": "Mossi", + "mul": "Πολλαπλές γλώσσες", + "nqo": "N'Ko", + "nau": "Nauru", + "nav": "Navajo", + "ndo": "Ndonga", + "nap": "Neapolitan", + "nia": "Nias", + "niu": "Niuean", + "zxx": "Χωρίς γλωσσολογικό περιεχόμενο", + "nog": "Nogai", + "nor": "Νορβηγικά", + "nob": "Norwegian Bokmål", + "nno": "Νορβηγικά Nynorsk", + "nym": "Nyamwezi", + "nya": "Nyanja", + "nyn": "Nyankole", + "nyo": "Nyoro", + "nzi": "Nzima", + "oci": "Occitan (post 1500)", + "oji": "Ojibwa", + "orm": "Oromo", + "osa": "Osage", + "oss": "Ossetian", + "pal": "Pahlavi", + "pau": "Palauan", + "pli": "Pali", + "pam": "Pampanga", + "pag": "Pangasinan", + "pan": "Panjabi", + "pap": "Papiamento", + "fas": "Περσικά", + "phn": "Φοινικικά", + "pon": "Pohnpeian", + "pol": "Πολωνέζικα", + "por": "Πορτογαλικά", + "pus": "Pashto", + "que": "Quechua", + "raj": "Rajasthani", + "rap": "Rapanui", + "ron": "Ρουμάνικα", + "roh": "Romansh", + "rom": "Romany", + "run": "Rundi", + "rus": "Ρώσικα", + "smo": "Samoan", + "sad": "Sandawe", + "sag": "Sango", + "san": "Σανσκριτικά", + "sat": "Santali", + "srd": "Sardinian", + "sas": "Sasak", + "sco": "Σκωτσέζικα", + "sel": "Selkup", + "srp": "Σερβικά", + "srr": "Serer", + "shn": "Shan", + "sna": "Shona", + "scn": "Sicilian", + "sid": "Sidamo", + "bla": "Siksika", + "snd": "Sindhi", + "sin": "Sinhala", + "den": "Slave (Athapascan)", + "slk": "Σλοβακικά", + "slv": "Σλοβενικά", + "sog": "Σογδιανά", + "som": "Σομαλικά", + "snk": "Soninke", + "spa": "Ισπανικά", + "srn": "Sranan Tongo", + "suk": "Sukuma", + "sux": "Sumerian", + "sun": "Sundanese", + "sus": "Susu", + "swa": "Swahili (macrolanguage)", + "ssw": "Swati", + "swe": "Σουηδικά", + "syr": "Συριακά", + "tgl": "Tagalog", + "tah": "Tahitian", + "tgk": "Tajik", + "tmh": "Tamashek", + "tam": "Ταμίλ", + "tat": "Tatar", + "tel": "Telugu", + "ter": "Tereno", + "tet": "Tetum", + "tha": "Ταϊλανδέζικη", + "bod": "Θιβετιανά", + "tig": "Tigre", + "tir": "Tigrinya", + "tem": "Timne", + "tiv": "Tiv", + "tli": "Tlingit", + "tpi": "Tok Pisin", + "tkl": "Τοκελάου", + "tog": "Tonga (Nyasa)", + "ton": "Tonga (Tonga Islands)", + "tsi": "Tsimshian", + "tso": "Tsonga", + "tsn": "Tswana", + "tum": "Tumbuka", + "tur": "Τουρκικά", + "tuk": "Τουρκμένικα", + "tvl": "Tuvalu", + "tyv": "Tuvinian", + "twi": "Twi", + "udm": "Udmurt", + "uga": "Ugaritic", + "uig": "Uighur", + "ukr": "Ουκρανικά", + "umb": "Umbundu", + "mis": "Uncoded languages", + "und": "Απροσδιόριστη", + "urd": "Urdu", + "uzb": "Uzbek", + "vai": "Vai", + "ven": "Venda", + "vie": "Βιετναμέζικα", + "vol": "Volapük", + "vot": "Votic", + "wln": "Walloon", + "war": "Waray (Philippines)", + "was": "Washo", + "cym": "Ουαλικά", + "wal": "Wolaytta", + "wol": "Wolof", + "xho": "Xhosa", + "sah": "Yakut", + "yao": "Yao", + "yap": "Yapese", + "yid": "Yiddish", + "yor": "Yoruba", + "zap": "Zapotec", + "zza": "Zaza", + "zen": "Zenaga", + "zha": "Zhuang", + "zul": "Zulu", + "zun": "Zuni" + }, "nl": { "aar": "Afar; Hamitisch", "abk": "Abchazisch", @@ -852,6 +1227,379 @@ LANGUAGE_NAMES = { "zxx": "Geen linguïstische inhoud", "zza": "Zaza" }, + "tr": { + "abk": "Abhazca", + "ace": "Achinese", + "ach": "Acoli", + "ada": "Adangme", + "ady": "Adyghe", + "aar": "Afar", + "afh": "Afrihili", + "afr": "Afrikanca", + "ain": "Ainu (Japonca)", + "aka": "Akanca (Afrika dili)", + "akk": "Akatça", + "sqi": "Albanian", + "ale": "Alaskaca", + "amh": "Etiyopyaca", + "anp": "Angika", + "ara": "Arapça", + "arg": "Aragonca (İspanya)", + "arp": "Arapaho (Kuzey Amerika yerlileri)", + "arw": "Arawak (Surinam)", + "hye": "Ermenice", + "asm": "Assamese (Hindistan)", + "ast": "Asturyasca", + "ava": "Avarca", + "ave": "Avestan (Eski İran)", + "awa": "Awadhi (Hindistan)", + "aym": "Aymara (Güney Amerika)", + "aze": "Azerice", + "ban": "Balice (Bali adaları)", + "bal": "Belucice (İran)", + "bam": "Bambara (Mali)", + "bas": "Basa (Kamerun)", + "bak": "Başkırca", + "eus": "Baskça", + "bej": "Beja (Eritre; Sudan)", + "bel": "Beyaz Rusça", + "bem": "Bemba (Zambia)", + "ben": "Bengalce", + "bho": "Bhojpuri (Hindistan)", + "bik": "Bikol (Filipinler)", + "byn": "Bilin", + "bin": "Bini (Afrika)", + "bis": "Bislama (Vanuatu; Kuzey Pasifik)", + "zbl": "Blis Sembolleri", + "bos": "Boşnakça", + "bra": "Braj (Hindistan)", + "bre": "Bretonca", + "bug": "Buginese (Endonezya)", + "bul": "Bulgarca", + "bua": "Buriat (Moğolistan)", + "mya": "Burmaca", + "cad": "Caddo (Kuzey Amerika yerlileri)", + "cat": "Katalanca", + "ceb": "Cebuano (Filipinler)", + "chg": "Çağatayca", + "cha": "Chamorro (Guam adaları)", + "che": "Çeçence", + "chr": "Cherokee (Kuzey Amerika yerlileri)", + "chy": "Cheyenne (kuzey Amerika yerlileri)", + "chb": "Chibcha (Kolombiya)", + "zho": "Çince", + "chn": "Chinook lehçesi (Kuzey Batı Amerika kıyıları)", + "chp": "Chipewyan (Kuzey Amerika yerlileri)", + "cho": "Choctaw (Kuzey Amerika yerlileri)", + "chk": "Chuukese", + "chv": "Çuvaş (Türkçe)", + "cop": "Kıptice (Eski Mısır)", + "cor": "Cornish (Kelt)", + "cos": "Korsikaca", + "cre": "Cree (Kuzey Amerika yerlileri)", + "mus": "Creek", + "hrv": "Hırvatça", + "ces": "Çekçe", + "dak": "Dakota (Kuzey Amerika yerlileri)", + "dan": "Danimarkaca; Danca", + "dar": "Dargwa (Dağıstan)", + "del": "Delaware (Kuzey Amerika yerlileri)", + "div": "Dhivehi", + "din": "Dinka (Sudan)", + "doi": "Dogri (makro dili)", + "dgr": "Dogrib (Kanada)", + "dua": "Duala (Afrika)", + "nld": "Flâmanca (Hollanda dili)", + "dyu": "Dyula (Burkina Faso; Mali)", + "dzo": "Dzongkha (Butan)", + "efi": "Efik (Afrika)", + "egy": "Mısırca (Eski)", + "eka": "Ekajuk (Afrika)", + "elx": "Elamca", + "eng": "İngilizce", + "myv": "Erzya dili", + "epo": "Esperanto", + "est": "Estonca", + "ewe": "Ewe (Afrika)", + "ewo": "Ewondo (Afrika)", + "fan": "Fang (Ekvatoryal Guinea)", + "fat": "Fanti (Afrika)", + "fao": "Faroece", + "fij": "Fiji dili", + "fil": "Filipince", + "fin": "Fince", + "fon": "Fon (Benin)", + "fra": "Fransızca", + "fur": "Friulian (İtalya)", + "ful": "Fulah (Afrika)", + "gaa": "Ganaca", + "glg": "Galce", + "lug": "Ganda Dili", + "gay": "Gayo (Sumatra)", + "gba": "Gbaya (Orta Afrika Cumhuriyeti)", + "gez": "Geez (Etiyopya)", + "kat": "Gürcüce", + "deu": "Almanca", + "gil": "Kiribati dili", + "gon": "Gondi (Hindistan)", + "gor": "Gorontalo (Endonezya)", + "got": "Gotik", + "grb": "Grebo (Liberya)", + "grn": "Guarani (Paraguay)", + "guj": "Gucaratça", + "gwi": "Gwichʼin", + "hai": "Haida (Kuzey Amerika yerlileri)", + "hau": "Hausa Dili", + "haw": "Havai Dili", + "heb": "İbranice", + "her": "Herero Dili", + "hil": "Hiligaynon", + "hin": "Hintçe", + "hmo": "Hiri Motu", + "hit": "Hititçe", + "hmn": "Hmong", + "hun": "Macarca", + "hup": "Hupa", + "iba": "Iban", + "isl": "İzlandaca", + "ido": "Ido Dili", + "ibo": "Igbo Dili", + "ilo": "Iloko", + "ind": "Endonezyaca", + "inh": "İnguşca", + "ina": "Interlingua (Uluslararası Yardımcı Dil Kurumu)", + "ile": "Interlingue", + "iku": "Inuktitut", + "ipk": "Inupiak Dili", + "gle": "İrlandaca", + "ita": "İtalyanca", + "jpn": "Japonca", + "jav": "Cava Dili", + "jrb": "Yahudi-Arapçası", + "jpr": "Yahudi-Farsça", + "kbd": "Kabardian", + "kab": "Kabyle", + "kac": "Kachin", + "kal": "Kalaallisut", + "xal": "Kalmyk", + "kam": "Kamba (Kenya)", + "kan": "Kannada", + "kau": "Kanuri Dili", + "kaa": "Kara-Kalpak", + "krc": "Karachay-Balkar", + "krl": "Karelian", + "kas": "Keşmirce", + "csb": "Kashubian (Lehçe diyalekti)", + "kaw": "Kawi", + "kaz": "Kazakça", + "kha": "Khasi", + "kho": "Khotanese", + "kik": "Kikuyu Dili", + "kmb": "Kimbundu", + "kin": "Kinyarwanda", + "kir": "Kırgızca", + "tlh": "Klingon", + "kom": "Komi Dili", + "kon": "Kongo Dili", + "kok": "Konkani (makro dil)", + "kor": "Korece", + "kos": "Kosraean", + "kpe": "Kpelle", + "kua": "Kuanyama Dili", + "kum": "Kumyk", + "kur": "Kürtçe", + "kru": "Kurukh", + "kut": "Kutenai", + "lad": "Ladino", + "lah": "Lahnda", + "lam": "Lamba", + "lao": "Laos Dili", + "lat": "Latince", + "lav": "Letonca", + "lez": "Lezghian", + "lim": "Liburg Dili", + "lin": "Lingala Dili", + "lit": "Litvanyaca", + "jbo": "Lojban dili", + "loz": "Lozi", + "lub": "Luba Katanga Dili", + "lua": "Luba-Lulua", + "lui": "Luiseno", + "smj": "Lule Sami", + "lun": "Lunda", + "luo": "Luo (Kenya ve Tanzanya)", + "lus": "Lushai", + "ltz": "Lüksemburg Dili", + "mkd": "Makedonca", + "mad": "Madurese", + "mag": "Magahi", + "mai": "Maithili dili", + "mak": "Makasar", + "mlg": "Madagaskar Dili", + "msa": "Malay (makro dili)", + "mal": "Malayalam", + "mlt": "Maltaca", + "mnc": "Manchu", + "mdr": "Mandar", + "man": "Mandingo", + "mni": "Manipuri dili", + "glv": "Manx (Galler)", + "mri": "Maori Dili", + "arn": "Mapudungun", + "mar": "Marathi", + "chm": "Mari (Rusya)", + "mah": "Marshall Dili", + "mwr": "Marwari", + "mas": "Masai", + "men": "Mende (Sierra Leone)", + "mic": "Mi'kmak", + "min": "Minangkabau", + "mwl": "Mirandese", + "moh": "Mohawk", + "mdf": "Moşka", + "lol": "Mongo", + "mon": "Moğol Dili", + "mos": "Mossi", + "mul": "Çoklu diller", + "nqo": "N'Ko", + "nau": "Nauru", + "nav": "Navajo Dili", + "ndo": "Ndonga Dili", + "nap": "Neapolitan", + "nia": "Nias", + "niu": "Niuean", + "zxx": "Hiçbir dil içeriği yok", + "nog": "Nogai", + "nor": "Norveçce", + "nob": "Norveççe Bokmal", + "nno": "Norveççe Nynorsk", + "nym": "Nyamwezi", + "nya": "Nyanja", + "nyn": "Nyankole", + "nyo": "Nyoro", + "nzi": "Nzima", + "oci": "Oksitanca (1500 sonrası)", + "oji": "Ojibwa Dili", + "orm": "Oromo Dili", + "osa": "Osage", + "oss": "Osetya Dili", + "pal": "Pehlevi", + "pau": "Palauan", + "pli": "Pali Dili", + "pam": "Pampanga", + "pag": "Pangasinan", + "pan": "Pencabi Dili", + "pap": "Papiamento", + "fas": "Farsça", + "phn": "Fenikçe", + "pon": "Pohnpeian", + "pol": "Polonyaca", + "por": "Portekizce", + "pus": "Pushto", + "que": "Quechua", + "raj": "Rajasthani", + "rap": "Rapanui", + "ron": "Rumence", + "roh": "Romanca", + "rom": "Çingene Dili", + "run": "Kirundi", + "rus": "Rusça", + "smo": "Samoa Dili", + "sad": "Sandawe", + "sag": "Sangho", + "san": "Sanskritçe", + "sat": "Santali dili", + "srd": "Sardinya", + "sas": "Sasak", + "sco": "İskoç lehçesi", + "sel": "Selkup", + "srp": "Sırpça", + "srr": "Serer", + "shn": "Shan", + "sna": "Shona", + "scn": "Sicilyalı", + "sid": "Sidamo", + "bla": "Siksika (Kuzey Amerika yerlileri)", + "snd": "Sindhi", + "sin": "Sinhala Dili", + "den": "Slave (Athapascan; Kuzey Amerika yerlileri)", + "slk": "Slovakça", + "slv": "Slovence", + "sog": "Sogdian", + "som": "Somali Dili", + "snk": "Soninke", + "spa": "İspanyolca", + "srn": "Sranan Tongo", + "suk": "Sukuma", + "sux": "Sümerce", + "sun": "Sudan Dili", + "sus": "Susu", + "swa": "Swahili (makro dil)", + "ssw": "Siswati", + "swe": "İsveçce", + "syr": "Süryanice", + "tgl": "Tagalog", + "tah": "Tahitice", + "tgk": "Tacikçe", + "tmh": "Tamashek", + "tam": "Tamilce", + "tat": "Tatarca", + "tel": "Telugu", + "ter": "Tereno", + "tet": "Tetum", + "tha": "Taylandça", + "bod": "Tibetçe", + "tig": "Tigre", + "tir": "Tigrinya Dili", + "tem": "Timne", + "tiv": "Tiv", + "tli": "Tlingit", + "tpi": "Tok Pisin", + "tkl": "Tokelau", + "tog": "Tonga (Nyasa)", + "ton": "Tonga", + "tsi": "Tsimshian", + "tso": "Tsonga", + "tsn": "Setswana", + "tum": "Tumbuka", + "tur": "Türkçe", + "tuk": "Türkmence", + "tvl": "Tuvalu", + "tyv": "Tuvinian", + "twi": "Twi", + "udm": "Udmurt", + "uga": "Ugarit Çivi Yazısı", + "uig": "Uygurca", + "ukr": "Ukraynaca", + "umb": "Umbundu", + "mis": "Şifresiz diller", + "und": "Belirlenemeyen", + "urd": "Urduca", + "uzb": "Özbekçe", + "vai": "Vai", + "ven": "Venda Dili", + "vie": "Vietnamca", + "vol": "Volapük", + "vot": "Votic", + "wln": "Valonca", + "war": "Waray (Filipinler)", + "was": "Vasho", + "cym": "Gal Dili", + "wal": "Wolaytta", + "wol": "Wolof", + "xho": "Xhosa", + "sah": "Yakut", + "yao": "Yao", + "yap": "Yapese", + "yid": "Yidiş", + "yor": "Yoruba", + "zap": "Zapotec", + "zza": "Zaza", + "zen": "Zenaga", + "zha": "Zuang Dili", + "zul": "Zulu", + "zun": "Zuni" + }, "fr": { "aar": "afar", "abk": "abkhaze", @@ -2532,6 +3280,426 @@ LANGUAGE_NAMES = { "zxx": "No linguistic content", "zza": "扎扎其语" }, + "fi": { + "aar": "afar", + "abk": "abhaasi", + "ace": "aceh", + "ach": "atšoli", + "ada": "adangme", + "ady": "adyge", + "afh": "afrihili", + "afr": "afrikaans", + "ain": "Ainu (Japan)", + "aka": "Akan", + "akk": "akkadi", + "ale": "aleutti", + "alt": "Altai; Southern", + "amh": "amhara", + "ang": "English; Old (ca. 450-1100)", + "anp": "angika", + "ara": "arabia", + "arc": "Aramaic; Official (700-300 BCE)", + "arg": "aragonia", + "arn": "Mapudungun", + "arp": "arapaho", + "arw": "arawak", + "asm": "asami", + "ast": "asturia", + "ava": "avaari", + "ave": "avestan", + "awa": "awadhi", + "aym": "Aymara", + "aze": "azeri", + "bak": "baškiiri", + "bal": "belutši", + "bam": "Bambara", + "ban": "bali", + "bas": "Basa (Cameroon)", + "bej": "beja", + "bel": "valkovenäjä", + "bem": "Bemba (Zambia)", + "ben": "bengali", + "bho": "bhojpuri", + "bik": "bikol", + "bin": "bini", + "bis": "bislama", + "bla": "mustajalka (siksika)", + "bod": "tiibetti", + "bos": "bosnia", + "bra": "bradž", + "bre": "bretoni", + "bua": "burjaatti", + "bug": "bugi", + "bul": "bulgaria", + "byn": "Bilin", + "cad": "caddo", + "car": "Carib; Galibi", + "cat": "katalaani", + "ceb": "cebuano", + "ces": "tšekki", + "cha": "chamorro", + "chb": "chibcha", + "che": "tšetšeeni", + "chg": "Chagatai", + "chk": "chuuk", + "chm": "mari (Venäjä)", + "chn": "chinook-jargon", + "cho": "choctaw", + "chp": "chipewyan", + "chr": "cherokee", + "chu": "Slavonic; Old", + "chv": "tšuvassi", + "chy": "cheyenne", + "cop": "kopti", + "cor": "korni", + "cos": "korsika", + "cre": "cree", + "crh": "krimintataari", + "csb": "kašubi", + "cym": "kymri", + "dak": "dakota", + "dan": "tanska", + "dar": "dargva", + "del": "delaware", + "den": "athapaski-slavi", + "deu": "saksa", + "dgr": "dogrib", + "din": "Dinka", + "div": "Dhivehi", + "doi": "Dogri (macrolanguage)", + "dsb": "alasorbi", + "dua": "duala", + "dum": "Dutch; Middle (ca. 1050-1350)", + "dyu": "dyula", + "dzo": "dzongkha", + "efi": "efik", + "egy": "muinaisegypti", + "eka": "ekajuk", + "ell": "nykykreikka", + "elx": "elami", + "eng": "englanti", + "enm": "keskienglanti", + "epo": "esperanto", + "est": "viro", + "eus": "baski", + "ewe": "ewe", + "ewo": "ewondo", + "fan": "Fang (Equatorial Guinea)", + "fao": "fääri", + "fas": "persia", + "fat": "fanti", + "fij": "fidži", + "fil": "filipino", + "fin": "suomi", + "fon": "fon", + "fra": "ranska", + "frm": "French; Middle (ca. 1400-1600)", + "fro": "French; Old (842-ca. 1400)", + "frr": "Frisian; Northern", + "frs": "Frisian; Eastern", + "fry": "Frisian; Western", + "ful": "fulani", + "fur": "friuli", + "gaa": "gã", + "gay": "gayo", + "gba": "Gbaya (Central African Republic)", + "gez": "ge'ez", + "gil": "kiribati", + "gla": "Gaelic; Scottish", + "gle": "iiri", + "glg": "galicia", + "glv": "manksi", + "gmh": "German; Middle High (ca. 1050-1500)", + "goh": "German; Old High (ca. 750-1050)", + "gon": "gondi", + "gor": "gorontalo", + "got": "gootti", + "grb": "grebo", + "grc": "muinaiskreikka", + "grn": "guarani", + "gsw": "German; Swiss", + "guj": "gujarati", + "gwi": "Gwichʼin", + "hai": "haida", + "hat": "Creole; Haitian", + "hau": "hausa", + "haw": "havaiji", + "heb": "heprea", + "her": "herero", + "hil": "hiligaynon", + "hin": "hindi", + "hit": "heetti", + "hmn": "hmong", + "hmo": "hiri-motu", + "hrv": "kroatia", + "hsb": "Sorbian; Upper", + "hun": "unkari", + "hup": "hupa", + "hye": "armenia", + "iba": "Iban", + "ibo": "igbo", + "ido": "ido", + "iii": "Yi; Sichuan", + "iku": "inuktitut", + "ile": "interlingue", + "ilo": "iloko", + "ina": "interlingua", + "ind": "indonesia", + "inh": "inguuši", + "ipk": "iñupiaq", + "isl": "islanti", + "ita": "italia", + "jav": "jaava", + "jbo": "lojban", + "jpn": "japani", + "jpr": "juutalaispersia", + "jrb": "juutalaisarabia", + "kaa": "karakalpakki", + "kab": "kabyyli", + "kac": "kachin", + "kal": "grönlanti", + "kam": "Kamba (Kenya)", + "kan": "kannada", + "kas": "kashmiri", + "kat": "georgia", + "kau": "kanuri", + "kaw": "kavi", + "kaz": "kazakki", + "kbd": "kabardi", + "kha": "Khasi", + "khm": "Khmer; Central", + "kho": "khotani", + "kik": "kikuyu", + "kin": "ruanda", + "kir": "kirgiisi", + "kmb": "kimbundu", + "kok": "Konkani (macrolanguage)", + "kom": "komi", + "kon": "Kongo", + "kor": "korea", + "kos": "kosrae", + "kpe": "kpelle", + "krc": "karatšai-balkaari", + "krl": "karjala", + "kru": "kurukh", + "kua": "kuanjama", + "kum": "kumykki", + "kur": "kurdi", + "kut": "kutenai", + "lad": "ladino", + "lah": "lahnda", + "lam": "lamba", + "lao": "lao", + "lat": "latina", + "lav": "latvia", + "lez": "lezgi", + "lim": "Limburgan", + "lin": "lingala", + "lit": "liettua", + "lol": "mongo", + "loz": "lozi", + "ltz": "Luxemburg", + "lua": "luba (Lulua)", + "lub": "luba (Katanga)", + "lug": "Ganda", + "lui": "luiseño", + "lun": "lunda", + "luo": "luo", + "lus": "lushai", + "mad": "madura", + "mag": "magahi", + "mah": "Marshallese", + "mai": "maithili", + "mak": "Makasar", + "mal": "malayalam", + "man": "mandingo", + "mar": "marathi", + "mas": "masai", + "mdf": "mokša", + "mdr": "mandar", + "men": "Mende (Sierra Leone)", + "mga": "keski-iiri", + "mic": "Mi'kmaq", + "min": "minangkabau", + "mis": "Uncoded languages", + "mkd": "makedonia", + "mlg": "malagassi", + "mlt": "malta", + "mnc": "mantšu", + "mni": "manipuri", + "moh": "mohawk", + "mon": "Mongolian", + "mos": "mossi", + "mri": "maori", + "msa": "Malay (macrolanguage)", + "mul": "monia kieliä", + "mus": "muskogi", + "mwl": "mirandês", + "mwr": "marwari", + "mya": "burma", + "myv": "ersä", + "nap": "napoli", + "nau": "nauru", + "nav": "Navajo", + "nbl": "ndebele; eteländebele", + "nde": "ndebele; pohjoisndebele", + "ndo": "ndonga", + "nds": "German; Low", + "nep": "nepali", + "new": "Bhasa; Nepal", + "nia": "nias", + "niu": "niue", + "nld": "hollanti", + "nno": "norja (uusnorja)", + "nob": "Norwegian Bokmål", + "nog": "nogai", + "non": "muinaisnorja", + "nor": "norja", + "nqo": "N'Ko", + "nso": "Sotho; Northern", + "nwc": "Newari; Old", + "nya": "Nyanja", + "nym": "nyamwezi", + "nyn": "nyankole", + "nyo": "Nyoro", + "nzi": "nzima", + "oci": "Occitan (post 1500)", + "oji": "Ojibwa", + "ori": "oriya", + "orm": "oromo", + "osa": "osage", + "oss": "Ossetian", + "ota": "osmaninturkki", + "pag": "pangasinan", + "pal": "pahlavi", + "pam": "pampanga", + "pan": "Panjabi", + "pap": "papiamentu", + "pau": "palau", + "peo": "Persian; Old (ca. 600-400 B.C.)", + "phn": "foinikia", + "pli": "Pali", + "pol": "puola", + "pon": "pohnpei", + "por": "portugali", + "pro": "muinaisprovensaali", + "pus": "pašto", + "que": "Quechua", + "raj": "rajasthani", + "rap": "rapanui", + "rar": "Maori; Cook Islands", + "roh": "Romansh", + "rom": "romani", + "ron": "romania", + "run": "rundi", + "rup": "Romanian; Macedo-", + "rus": "venäjä", + "sad": "sandawe", + "sag": "Sango", + "sah": "jakuutti", + "sam": "Aramaic; Samaritan", + "san": "sanskrit", + "sas": "Sasak", + "sat": "santali", + "scn": "sisilia", + "sco": "skotti", + "sel": "selkuppi", + "sga": "muinaisiiri", + "shn": "shan", + "sid": "sidamo", + "sin": "Sinhala", + "slk": "slovakki", + "slv": "sloveeni", + "sma": "eteläsaame", + "sme": "pohjoissaame", + "smj": "luulajansaame", + "smn": "inarinsaame", + "smo": "samoa", + "sms": "koltansaami", + "sna": "shona", + "snd": "sindhi", + "snk": "soninke", + "sog": "sogdi", + "som": "somali", + "sot": "eteläsotho", + "spa": "espanja", + "sqi": "albania", + "srd": "sardi", + "srn": "Sranan Tongo", + "srp": "serbia", + "srr": "Serer", + "ssw": "swazi", + "suk": "sukuma", + "sun": "sunda", + "sus": "susu", + "sux": "sumeri", + "swa": "Swahili (macrolanguage)", + "swe": "ruotsi", + "syc": "Syriac; Classical", + "syr": "syyria", + "tah": "tahiti", + "tam": "tamili", + "tat": "tataari", + "tel": "Telugu", + "tem": "temne", + "ter": "tereno", + "tet": "tetum", + "tgk": "tadžikki", + "tgl": "tagalog", + "tha": "thai", + "tig": "tigre", + "tir": "tigrinya", + "tiv": "tiv", + "tkl": "tokelau", + "tlh": "Klingon", + "tli": "tlinglit", + "tmh": "Tamashek", + "tog": "Malawin tonga", + "ton": "Tongan tonga", + "tpi": "tok-pisin", + "tsi": "tsimshian", + "tsn": "tswana", + "tso": "tsonga", + "tuk": "turkmeeni", + "tum": "tumbuka", + "tur": "turkki", + "tvl": "tuvalu", + "twi": "twi", + "tyv": "tuva", + "udm": "udmurtti", + "uga": "ugarit", + "uig": "uiguuri", + "ukr": "ukraina", + "umb": "umbundu", + "und": "määrittämätön", + "urd": "urdu", + "uzb": "uzbekki", + "vai": "vai", + "ven": "venda", + "vie": "vietnam", + "vol": "volapük", + "vot": "vatja", + "wal": "Wolaytta", + "war": "Waray (Philippines)", + "was": "washo", + "wln": "valloni", + "wol": "wolof", + "xal": "Kalmyk", + "xho": "xhosa", + "yao": "mien", + "yap": "yap", + "yid": "jiddiš", + "yor": "yoruba", + "zap": "Zapotec", + "zbl": "Blissymbols", + "zen": "zenaga", + "zha": "Zhuang", + "zho": "kiina", + "zul": "zulu", + "zun": "zuni", + "zxx": "No linguistic content", + "zza": "Zaza" + }, "it": { "aar": "Afar", "abk": "Abkhazian", @@ -4515,7 +5683,7 @@ LANGUAGE_NAMES = { "pon": "Pohnpeian", "por": "Portuguese", "pro": "Provençal; Old (to 1500)", - "pus": "Pushto", + "pus": "Pashto", "que": "Quechua", "raj": "Rajasthani", "rap": "Rapanui", @@ -5052,6 +6220,426 @@ LANGUAGE_NAMES = { "zxx": "No linguistic content", "zza": "Zaza" }, + "cs": { + "aar": "afarština", + "abk": "abchazajština", + "ace": "atěžština", + "ach": "ačoli (luoština)", + "ada": "adangmeština", + "ady": "adyghe", + "afh": "afrihilijština", + "afr": "afrikánština", + "ain": "ainu (Japonsko)", + "aka": "akanština", + "akk": "akkadština", + "ale": "aleutština", + "alt": "altajština; jižní", + "amh": "Amharština", + "ang": "Angličtina; stará (asi 450-1100)", + "anp": "angika", + "ara": "arabština", + "arc": "aramejština; oficiální (700-300 př. n. l.)", + "arg": "aragonská španělština", + "arn": "mapudungun", + "arp": "arapaho", + "arw": "arawacké jazyky", + "asm": "ásámština", + "ast": "asturština", + "ava": "avarština", + "ave": "avestština", + "awa": "avadhština (avadhí)", + "aym": "aymarština", + "aze": "azerbajdžánština", + "bak": "Baskirština", + "bal": "balúčština", + "bam": "bambarština", + "ban": "balijština", + "bas": "basa (Kamerun)", + "bej": "bedža", + "bel": "běloruština", + "bem": "bemba (Zambie)", + "ben": "bengálština", + "bho": "bhódžpurština", + "bik": "bikolština", + "bin": "bini", + "bis": "bislamština", + "bla": "siksika", + "bod": "tibetština", + "bos": "bosenština", + "bra": "bradžština", + "bre": "bretonština", + "bua": "burjatština", + "bug": "bugiština", + "bul": "bulharština", + "byn": "bilin", + "cad": "caddo", + "car": "carib; Galibi", + "cat": "katalánština", + "ceb": "cebuánština", + "ces": "Čeština", + "cha": "čamoro", + "chb": "čibča", + "che": "čečenština", + "chg": "Chagatai", + "chk": "čukčtina", + "chm": "Mari (Russia)", + "chn": "činuk pidžin", + "cho": "choctawština", + "chp": "čipeva", + "chr": "čerokézština", + "chu": "Slavonic; Old", + "chv": "čuvaština", + "chy": "čejenština", + "cop": "koptština", + "cor": "kornština", + "cos": "korsičtina", + "cre": "krí", + "crh": "Turkish; Crimean", + "csb": "kašubština", + "cym": "velština", + "dak": "dakotština", + "dan": "dánština", + "dar": "dargwa", + "del": "delawarština", + "den": "atabaské jazyky", + "deu": "Němčina", + "dgr": "dogrib", + "din": "dinkština", + "div": "Dhivehi", + "doi": "Dogri (macrolanguage)", + "dsb": "Sorbian; Lower", + "dua": "dualština", + "dum": "Dutch; Middle (ca. 1050-1350)", + "dyu": "djula", + "dzo": "Bhútánština", + "efi": "efik", + "egy": "egyptština (starověká)", + "eka": "ekajuk", + "ell": "řečtina; moderní (1453-)", + "elx": "elamština", + "eng": "Angličtina", + "enm": "Angličtina; středověká (1100-1500)", + "epo": "esperanto", + "est": "estonština", + "eus": "baskičtina", + "ewe": "eweština", + "ewo": "ewondo", + "fan": "Fang (Equatorial Guinea)", + "fao": "faerština", + "fas": "perština", + "fat": "fantiština", + "fij": "Fidži", + "fil": "Filipino", + "fin": "finština", + "fon": "fonština", + "fra": "francouzština", + "frm": "French; Middle (ca. 1400-1600)", + "fro": "French; Old (842-ca. 1400)", + "frr": "Frisian; Northern", + "frs": "Frisian; Eastern", + "fry": "Frisian; Western", + "ful": "fulahština", + "fur": "furlanština", + "gaa": "ga", + "gay": "gayo", + "gba": "Gbaya (Central African Republic)", + "gez": "etiopština", + "gil": "kiribatština", + "gla": "Gaelic; Scottish", + "gle": "irština", + "glg": "Galician", + "glv": "manština", + "gmh": "German; Middle High (ca. 1050-1500)", + "goh": "German; Old High (ca. 750-1050)", + "gon": "góndština", + "gor": "gorontalo", + "got": "gótština", + "grb": "grebo", + "grc": "řečtina; starověká (do 1453)", + "grn": "Guaranština", + "gsw": "German; Swiss", + "guj": "Gudžarátština", + "gwi": "Gwichʼin", + "hai": "haida", + "hat": "Creole; Haitian", + "hau": "Hausa", + "haw": "havajština", + "heb": "hebrejština", + "her": "herero", + "hil": "hiligayonština", + "hin": "hindština", + "hit": "chetitština", + "hmn": "hmongština", + "hmo": "hiri motu", + "hrv": "chorvatština", + "hsb": "Sorbian; Upper", + "hun": "maďarština", + "hup": "hupa", + "hye": "arménština", + "iba": "iban", + "ibo": "igbo", + "ido": "ido", + "iii": "Yi; Sichuan", + "iku": "Inuktitutština", + "ile": "Interlingue", + "ilo": "ilokánština", + "ina": "Interlingua (Mezinárodní pomocná jazyková asociace)", + "ind": "indonézština", + "inh": "inguština", + "ipk": "Inupiakština", + "isl": "islandština", + "ita": "italština", + "jav": "jávština", + "jbo": "lojban", + "jpn": "japonština", + "jpr": "judeo-perština", + "jrb": "judeo-arabština", + "kaa": "karakalpačtina", + "kab": "kabulí", + "kac": "kačjinština", + "kal": "Kalaallisut", + "kam": "Kamba (Kenya)", + "kan": "Kannadština", + "kas": "kašmírština", + "kat": "Gruzínština", + "kau": "kanuri", + "kaw": "kawi", + "kaz": "Kazachština", + "kbd": "kabardština", + "kha": "Khasi", + "khm": "Khmer; Central", + "kho": "chotánština", + "kik": "Kikuyu", + "kin": "Kinyarwandština", + "kir": "Kirgizština", + "kmb": "kimbundština", + "kok": "Konkani (macrolanguage)", + "kom": "komijština", + "kon": "Kongo", + "kor": "korejština", + "kos": "kosrajština", + "kpe": "kpelle", + "krc": "karachay-balkarština", + "krl": "karelština", + "kru": "kurukh", + "kua": "Kuanyama", + "kum": "kumyčtina", + "kur": "kurdština", + "kut": "kutenai", + "lad": "ladino", + "lah": "lahnda", + "lam": "lambština", + "lao": "Laoština", + "lat": "latina", + "lav": "Latvian", + "lez": "lezgiština", + "lim": "Limburgan", + "lin": "Ngalština", + "lit": "litevština", + "lol": "mongština", + "loz": "lozština", + "ltz": "Luxembourgish", + "lua": "luba-luluaština", + "lub": "lubu-katanžština", + "lug": "Ganda", + "lui": "luiseňo", + "lun": "lundština", + "luo": "luoština (Keňa a Tanzanie)", + "lus": "lušáí", + "mad": "madurština", + "mag": "magahština", + "mah": "Marshallese", + "mai": "maithilština", + "mak": "makasarština", + "mal": "Malabarština", + "man": "mandingština", + "mar": "maráthština", + "mas": "masajština", + "mdf": "moksha", + "mdr": "mandarínština", + "men": "Mende (Sierra Leone)", + "mga": "irština; středověká (900-1200)", + "mic": "Mi'kmaq", + "min": "minangkabau", + "mis": "Uncoded languages", + "mkd": "makedonština", + "mlg": "Malgaština", + "mlt": "maltézština", + "mnc": "manchu", + "mni": "manipurština", + "moh": "mohawk", + "mon": "mongolština", + "mos": "mosi", + "mri": "maorština", + "msa": "Malay (macrolanguage)", + "mul": "násobné jazyky", + "mus": "krík", + "mwl": "mirandština", + "mwr": "márvárština", + "mya": "Barmština", + "myv": "erzya", + "nap": "neapolština", + "nau": "naurština", + "nav": "navažština", + "nbl": "Ndebele; South", + "nde": "Ndebele; North", + "ndo": "ndondština", + "nds": "German; Low", + "nep": "nepálština", + "new": "Bhasa; Nepal", + "nia": "nias", + "niu": "niue", + "nld": "holandština", + "nno": "Norwegian Nynorsk", + "nob": "Norwegian Bokmål", + "nog": "nogai", + "non": "norština; stará", + "nor": "norština", + "nqo": "N'Ko", + "nso": "Sotho; Northern", + "nwc": "Newari; Old", + "nya": "Nyanja", + "nym": "ňamwežština", + "nyn": "nyankolština", + "nyo": "Nyoro", + "nzi": "nzima", + "oci": "Occitan (post 1500)", + "oji": "Ojibwa", + "ori": "orija", + "orm": "Oromo (Afan)", + "osa": "osagština", + "oss": "Ossetian", + "ota": "turečtina; osmanská (1500-1928)", + "pag": "pangsinan", + "pal": "pahlaví", + "pam": "pampangau", + "pan": "Panjabi", + "pap": "papiamento", + "pau": "palauština", + "peo": "Persian; Old (ca. 600-400 B.C.)", + "phn": "Slovinština", + "pli": "páli", + "pol": "Polština", + "pon": "pohnpeiština", + "por": "portugalština", + "pro": "provensálština; stará (do 1500)", + "pus": "pašto", + "que": "kečuánština", + "raj": "rádžasthánština", + "rap": "rapanuiština", + "rar": "Maori; Cook Islands", + "roh": "Romansh", + "rom": "římština", + "ron": "rumunština", + "run": "Kirundi", + "rup": "Romanian; Macedo-", + "rus": "Ruština", + "sad": "sandawština", + "sag": "sangoština", + "sah": "jakutština", + "sam": "Aramaic; Samaritan", + "san": "sanskrt", + "sas": "sačtina", + "sat": "santálí", + "scn": "sicilština", + "sco": "skotština", + "sel": "selkupština", + "sga": "irština; stará (do 900)", + "shn": "šanština", + "sid": "sidamo", + "sin": "Sinhálština", + "slk": "Slovenština", + "slv": "slovinština", + "sma": "Sami; Southern", + "sme": "Sami; Northern", + "smj": "lule sami", + "smn": "Sami; Inari", + "smo": "Samoyština", + "sms": "Sami; Skolt", + "sna": "šonština", + "snd": "sindhština", + "snk": "sonikština", + "sog": "sogdijština", + "som": "somálština", + "sot": "sotština; jižní", + "spa": "španělština", + "sqi": "albánština", + "srd": "sardinština", + "srn": "Sranan Tongo", + "srp": "srbština", + "srr": "Serer", + "ssw": "Siswatština", + "suk": "sukuma", + "sun": "Sundanština", + "sus": "susu", + "sux": "sumerština", + "swa": "svahilština (makrojazyk)", + "swe": "švédština", + "syc": "Syriac; Classical", + "syr": "syrština", + "tah": "tahitština", + "tam": "Tamilština", + "tat": "tatarština", + "tel": "Telugu", + "tem": "temne", + "ter": "tereno", + "tet": "tetumština", + "tgk": "Tádžičtina", + "tgl": "Tagalog", + "tha": "thajština", + "tig": "tigrejština", + "tir": "Tigrinijština", + "tiv": "tivština", + "tkl": "tokelauština", + "tlh": "Klingon", + "tli": "tlingit", + "tmh": "Tamashek", + "tog": "tongština (nyasa)", + "ton": "Tonga", + "tpi": "tok pisin", + "tsi": "tsimshijské jazyky", + "tsn": "Setswanština", + "tso": "Tsonga", + "tuk": "turkmenistánština", + "tum": "tumbukština", + "tur": "turečtina", + "tvl": "tuvalština", + "twi": "ťwiština", + "tyv": "tuvština", + "udm": "udmurtština", + "uga": "ugaritština", + "uig": "Uighurština", + "ukr": "ukrajinština", + "umb": "umbundu", + "und": "neurčitý", + "urd": "urdština", + "uzb": "uzbekistánština", + "vai": "vai", + "ven": "vendština", + "vie": "vietnamština", + "vol": "volapük", + "vot": "votiatština", + "wal": "Wolaytta", + "war": "Waray (Philippines)", + "was": "washo", + "wln": "valonština", + "wol": "volofština", + "xal": "Kalmyk", + "xho": "xhoština", + "yao": "jaoština", + "yap": "japština", + "yid": "Jidiš", + "yor": "jorubština", + "zap": "Zapotec", + "zbl": "Blissymbols", + "zen": "zenaga", + "zha": "Zhuang", + "zho": "čínština", + "zul": "Zulu", + "zun": "zunijština", + "zxx": "bez lingvistického obsahu", + "zza": "zaza" + }, "es": { "aar": "Afar", "abk": "Abkhazian", @@ -5355,7 +6943,7 @@ LANGUAGE_NAMES = { "pon": "Pohnpeian", "por": "Portuguese", "pro": "Provençal; Old (to 1500)", - "pus": "Pushto", + "pus": "Pashto", "que": "Quechua", "raj": "Rajasthani", "rap": "Rapanui", @@ -5775,7 +7363,7 @@ LANGUAGE_NAMES = { "pon": "Pohnpeian", "por": "Portuguese", "pro": "Provençal; Old (to 1500)", - "pus": "Pushto", + "pus": "Pashto", "que": "Quechua", "raj": "Rajasthani", "rap": "Rapanui", diff --git a/cps/jinjia.py b/cps/jinjia.py index ffd6832c9..688d1fbad 100644 --- a/cps/jinjia.py +++ b/cps/jinjia.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) @@ -26,7 +25,7 @@ from __future__ import division, print_function, unicode_literals import datetime import mimetypes -import re +from uuid import uuid4 from babel.dates import format_date from flask import Blueprint, request, url_for @@ -45,6 +44,8 @@ log = logger.create() def url_for_other_page(page): args = request.view_args.copy() args['page'] = page + for get, val in request.args.items(): + args[get] = val return url_for(request.endpoint, **args) @@ -77,18 +78,18 @@ def mimetype_filter(val): @jinjia.app_template_filter('formatdate') def formatdate_filter(val): try: - conformed_timestamp = re.sub(r"[:]|([-](?!((\d{2}[:]\d{2})|(\d{4}))$))", '', val) - formatdate = datetime.datetime.strptime(conformed_timestamp[:15], "%Y%m%d %H%M%S") - return format_date(formatdate, format='medium', locale=get_locale()) + return format_date(val, format='medium', locale=get_locale()) except AttributeError as e: - log.error('Babel error: %s, Current user locale: %s, Current User: %s', e, current_user.locale, current_user.nickname) - return formatdate + log.error('Babel error: %s, Current user locale: %s, Current User: %s', e, + current_user.locale, + current_user.nickname + ) + return val + @jinjia.app_template_filter('formatdateinput') def format_date_input(val): - conformed_timestamp = re.sub(r"[:]|([-](?!((\d{2}[:]\d{2})|(\d{4}))$))", '', val) - date_obj = datetime.datetime.strptime(conformed_timestamp[:15], "%Y%m%d %H%M%S") - input_date = date_obj.isoformat().split('T', 1)[0] # Hack to support dates <1900 + input_date = val.isoformat().split('T', 1)[0] # Hack to support dates <1900 return '' if input_date == "0101-01-01" else input_date @@ -110,8 +111,25 @@ def yesno(value, yes, no): return yes if value else no -'''@jinjia.app_template_filter('canread') -def canread(ext): - if isinstance(ext, db.Data): - ext = ext.format - return ext.lower() in EXTENSIONS_READER''' +@jinjia.app_template_filter('formatfloat') +def formatfloat(value, decimals=1): + formatedstring = '%d' % value + if (value % 1) != 0: + formatedstring = ('%s.%d' % (formatedstring, (value % 1) * 10**decimals)).rstrip('0') + return formatedstring + + +@jinjia.app_template_filter('formatseriesindex') +def formatseriesindex_filter(series_index): + if series_index: + if int(series_index) - series_index == 0: + return int(series_index) + else: + return series_index + return 0 + +@jinjia.app_template_filter('uuidfilter') +def uuidfilter(var): + return uuid4() + + diff --git a/cps/kobo.py b/cps/kobo.py new file mode 100644 index 000000000..a9c0f936b --- /dev/null +++ b/cps/kobo.py @@ -0,0 +1,1118 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) +# Copyright (C) 2018-2019 shavitmichael, OzzieIsaacs +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import base64 +import datetime +import sys +import os +import uuid +from time import gmtime, strftime + +try: + from urllib import unquote +except ImportError: + from urllib.parse import unquote + +from flask import ( + Blueprint, + request, + make_response, + jsonify, + current_app, + url_for, + redirect, + abort +) +from flask_login import current_user +from werkzeug.datastructures import Headers +from sqlalchemy import func +from sqlalchemy.sql.expression import and_, or_ +from sqlalchemy.exc import StatementError +import requests + +from . import config, logger, kobo_auth, db, calibre_db, helper, shelf as shelf_lib, ub +from .helper import get_download_link +from .services import SyncToken as SyncToken +from .web import download_required +from .kobo_auth import requires_kobo_auth, get_auth_token + +KOBO_FORMATS = {"KEPUB": ["KEPUB"], "EPUB": ["EPUB3", "EPUB"]} +KOBO_STOREAPI_URL = "https://storeapi.kobo.com" +KOBO_IMAGEHOST_URL = "https://kbimages1-a.akamaihd.net" + +kobo = Blueprint("kobo", __name__, url_prefix="/kobo/") +kobo_auth.disable_failed_auth_redirect_for_blueprint(kobo) +kobo_auth.register_url_value_preprocessor(kobo) + +log = logger.create() + + +def get_store_url_for_current_request(): + # Programmatically modify the current url to point to the official Kobo store + __, __, 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 + + +CONNECTION_SPECIFIC_HEADERS = [ + "connection", + "content-encoding", + "content-length", + "transfer-encoding", +] + +def get_kobo_activated(): + return config.config_kobo_sync + + +def make_request_to_kobo_store(sync_token=None): + outgoing_headers = Headers(request.headers) + outgoing_headers.remove("Host") + if sync_token: + sync_token.set_kobo_store_header(outgoing_headers) + + store_response = requests.request( + method=request.method, + url=get_store_url_for_current_request(), + headers=outgoing_headers, + data=request.get_data(), + allow_redirects=False, + timeout=(2, 10) + ) + return store_response + + +def redirect_or_proxy_request(): + if config.config_kobo_proxy: + if request.method == "GET": + return redirect(get_store_url_for_current_request(), 307) + else: + # The Kobo device turns other request types into GET requests on redirects, so we instead proxy to the Kobo store ourselves. + store_response = make_request_to_kobo_store() + + response_headers = store_response.headers + for header_key in CONNECTION_SPECIFIC_HEADERS: + response_headers.pop(header_key, default=None) + + return make_response( + store_response.content, store_response.status_code, response_headers.items() + ) + else: + return make_response(jsonify({})) + + +def convert_to_kobo_timestamp_string(timestamp): + try: + return timestamp.strftime("%Y-%m-%dT%H:%M:%SZ") + except AttributeError as exc: + log.debug("Timestamp not valid: {}".format(exc)) + return datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ") + + +@kobo.route("/v1/library/sync") +@requires_kobo_auth +@download_required +def HandleSyncRequest(): + sync_token = SyncToken.SyncToken.from_headers(request.headers) + log.info("Kobo library sync request received.") + if not current_app.wsgi_app.is_proxied: + log.debug('Kobo: Received unproxied request, changed request port to external server port') + + # TODO: Limit the number of books return per sync call, and rely on the sync-continuatation header + # instead so that the device triggers another sync. + + new_books_last_modified = sync_token.books_last_modified + new_books_last_created = sync_token.books_last_created + new_reading_state_last_modified = sync_token.reading_state_last_modified + sync_results = [] + + # We reload the book database so that the user get's a fresh view of the library + # in case of external changes (e.g: adding a book through Calibre). + calibre_db.reconnect_db(config, ub.app_DB_path) + + archived_books = ( + ub.session.query(ub.ArchivedBook) + .filter(ub.ArchivedBook.user_id == int(current_user.id)) + .all() + ) + + # We join-in books that have had their Archived bit recently modified in order to either: + # * Restore them to the user's device. + # * Delete them from the user's device. + # (Ideally we would use a join for this logic, however cross-database joins don't look trivial in SqlAlchemy.) + recently_restored_or_archived_books = [] + archived_book_ids = {} + new_archived_last_modified = datetime.datetime.min + for archived_book in archived_books: + if archived_book.last_modified > sync_token.archive_last_modified: + recently_restored_or_archived_books.append(archived_book.book_id) + if archived_book.is_archived: + archived_book_ids[archived_book.book_id] = True + new_archived_last_modified = max( + new_archived_last_modified, archived_book.last_modified) + + # sqlite gives unexpected results when performing the last_modified comparison without the datetime cast. + # It looks like it's treating the db.Books.last_modified field as a string and may fail + # the comparison because of the +00:00 suffix. + changed_entries = ( + calibre_db.session.query(db.Books) + .join(db.Data) + .filter(or_(func.datetime(db.Books.last_modified) > sync_token.books_last_modified, + db.Books.id.in_(recently_restored_or_archived_books))) + .filter(db.Data.format.in_(KOBO_FORMATS)) + .all() + ) + + reading_states_in_new_entitlements = [] + for book in changed_entries: + kobo_reading_state = get_or_create_reading_state(book.id) + entitlement = { + "BookEntitlement": create_book_entitlement(book, archived=(book.id in archived_book_ids)), + "BookMetadata": get_metadata(book), + } + + if kobo_reading_state.last_modified > sync_token.reading_state_last_modified: + entitlement["ReadingState"] = get_kobo_reading_state_response(book, kobo_reading_state) + new_reading_state_last_modified = max(new_reading_state_last_modified, kobo_reading_state.last_modified) + reading_states_in_new_entitlements.append(book.id) + + if book.timestamp > sync_token.books_last_created: + sync_results.append({"NewEntitlement": entitlement}) + else: + sync_results.append({"ChangedEntitlement": entitlement}) + + new_books_last_modified = max( + book.last_modified, new_books_last_modified + ) + new_books_last_created = max(book.timestamp, new_books_last_created) + + changed_reading_states = ( + ub.session.query(ub.KoboReadingState) + .filter(and_(func.datetime(ub.KoboReadingState.last_modified) > sync_token.reading_state_last_modified, + ub.KoboReadingState.user_id == current_user.id, + ub.KoboReadingState.book_id.notin_(reading_states_in_new_entitlements)))) + for kobo_reading_state in changed_reading_states.all(): + book = calibre_db.session.query(db.Books).filter(db.Books.id == kobo_reading_state.book_id).one_or_none() + if book: + sync_results.append({ + "ChangedReadingState": { + "ReadingState": get_kobo_reading_state_response(book, kobo_reading_state) + } + }) + new_reading_state_last_modified = max(new_reading_state_last_modified, kobo_reading_state.last_modified) + + sync_shelves(sync_token, sync_results) + + sync_token.books_last_created = new_books_last_created + sync_token.books_last_modified = new_books_last_modified + sync_token.archive_last_modified = new_archived_last_modified + sync_token.reading_state_last_modified = new_reading_state_last_modified + + return generate_sync_response(sync_token, sync_results) + + +def generate_sync_response(sync_token, sync_results): + extra_headers = {} + if config.config_kobo_proxy: + # Merge in sync results from the official Kobo store. + try: + store_response = make_request_to_kobo_store(sync_token) + + store_sync_results = store_response.json() + sync_results += store_sync_results + sync_token.merge_from_store_response(store_response) + extra_headers["x-kobo-sync"] = store_response.headers.get("x-kobo-sync") + extra_headers["x-kobo-sync-mode"] = store_response.headers.get("x-kobo-sync-mode") + extra_headers["x-kobo-recent-reads"] = store_response.headers.get("x-kobo-recent-reads") + + except Exception as e: + log.error("Failed to receive or parse response from Kobo's sync endpoint: " + str(e)) + sync_token.to_headers(extra_headers) + + response = make_response(jsonify(sync_results), extra_headers) + + return response + + +@kobo.route("/v1/library//metadata") +@requires_kobo_auth +@download_required +def HandleMetadataRequest(book_uuid): + if not current_app.wsgi_app.is_proxied: + log.debug('Kobo: Received unproxied request, changed request port to external server port') + log.info("Kobo library metadata request received for book %s" % book_uuid) + book = calibre_db.get_book_by_uuid(book_uuid) + if not book or not book.data: + log.info(u"Book %s not found in database", book_uuid) + return redirect_or_proxy_request() + + metadata = get_metadata(book) + return jsonify([metadata]) + + +def get_download_url_for_book(book, book_format): + if not current_app.wsgi_app.is_proxied: + if ':' in request.host and not request.host.endswith(']'): + host = "".join(request.host.split(':')[:-1]) + else: + host = request.host + + return "{url_scheme}://{url_base}:{url_port}/kobo/{auth_token}/download/{book_id}/{book_format}".format( + url_scheme=request.scheme, + url_base=host, + url_port=config.config_external_port, + auth_token=get_auth_token(), + book_id=book.id, + book_format=book_format.lower() + ) + return url_for( + "web.download_link", + book_id=book.id, + book_format=book_format.lower(), + _external=True, + ) + + +def create_book_entitlement(book, archived): + book_uuid = book.uuid + return { + "Accessibility": "Full", + "ActivePeriod": {"From": convert_to_kobo_timestamp_string(datetime.datetime.now())}, + "Created": convert_to_kobo_timestamp_string(book.timestamp), + "CrossRevisionId": book_uuid, + "Id": book_uuid, + "IsRemoved": archived, + "IsHiddenFromArchive": False, + "IsLocked": False, + "LastModified": convert_to_kobo_timestamp_string(book.last_modified), + "OriginCategory": "Imported", + "RevisionId": book_uuid, + "Status": "Active", + } + + +def current_time(): + return strftime("%Y-%m-%dT%H:%M:%SZ", gmtime()) + + +def get_description(book): + if not book.comments: + return None + return book.comments[0].text + + +# TODO handle multiple authors +def get_author(book): + if not book.authors: + return {"Contributors": None} + if len(book.authors) > 1: + author_list = [] + autor_roles = [] + for author in book.authors: + autor_roles.append({"Name":author.name, "Role":"Author"}) + author_list.append(author.name) + return {"ContributorRoles": autor_roles, "Contributors":author_list} + return {"ContributorRoles": [{"Name":book.authors[0].name, "Role":"Author"}], "Contributors": book.authors[0].name} + + +def get_publisher(book): + if not book.publishers: + return None + return book.publishers[0].name + + +def get_series(book): + if not book.series: + return None + return book.series[0].name + +def get_seriesindex(book): + return book.series_index or 1 + + +def get_metadata(book): + download_urls = [] + kepub = [data for data in book.data if data.format == 'KEPUB'] + + for book_data in kepub if len(kepub) > 0 else book.data: + if book_data.format not in KOBO_FORMATS: + continue + for kobo_format in KOBO_FORMATS[book_data.format]: + # log.debug('Id: %s, Format: %s' % (book.id, kobo_format)) + download_urls.append( + { + "Format": kobo_format, + "Size": book_data.uncompressed_size, + "Url": get_download_url_for_book(book, book_data.format), + # The Kobo forma accepts platforms: (Generic, Android) + "Platform": "Generic", + # "DrmType": "None", # Not required + } + ) + + book_uuid = book.uuid + metadata = { + "Categories": ["00000000-0000-0000-0000-000000000001",], + # "Contributors": get_author(book), + "CoverImageId": book_uuid, + "CrossRevisionId": book_uuid, + "CurrentDisplayPrice": {"CurrencyCode": "USD", "TotalAmount": 0}, + "CurrentLoveDisplayPrice": {"TotalAmount": 0}, + "Description": get_description(book), + "DownloadUrls": download_urls, + "EntitlementId": book_uuid, + "ExternalIds": [], + "Genre": "00000000-0000-0000-0000-000000000001", + "IsEligibleForKoboLove": False, + "IsInternetArchive": False, + "IsPreOrder": False, + "IsSocialEnabled": True, + "Language": "en", + "PhoneticPronunciations": {}, + # TODO: Fix book.pubdate to return a datetime object so that we can easily + # convert it to the format Kobo devices expect. + "PublicationDate": book.pubdate, + "Publisher": {"Imprint": "", "Name": get_publisher(book),}, + "RevisionId": book_uuid, + "Title": book.title, + "WorkId": book_uuid, + } + metadata.update(get_author(book)) + + if get_series(book): + if sys.version_info < (3, 0): + name = get_series(book).encode("utf-8") + else: + name = get_series(book) + metadata["Series"] = { + "Name": get_series(book), + "Number": get_seriesindex(book), # ToDo Check int() ? + "NumberFloat": float(get_seriesindex(book)), + # Get a deterministic id based on the series name. + "Id": uuid.uuid3(uuid.NAMESPACE_DNS, name), + } + + return metadata + + +@kobo.route("/v1/library/tags", methods=["POST", "DELETE"]) +@requires_kobo_auth +# Creates a Shelf with the given items, and returns the shelf's uuid. +def HandleTagCreate(): + # catch delete requests, otherwise the are handeld in the book delete handler + if request.method == "DELETE": + abort(405) + name, items = None, None + try: + shelf_request = request.json + name = shelf_request["Name"] + items = shelf_request["Items"] + if not name: + raise TypeError + except (KeyError, TypeError): + log.debug("Received malformed v1/library/tags request.") + abort(400, description="Malformed tags POST request. Data has empty 'Name', missing 'Name' or 'Items' field") + + shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.name == name, ub.Shelf.user_id == + current_user.id).one_or_none() + if shelf and not shelf_lib.check_shelf_edit_permissions(shelf): + abort(401, description="User is unauthaurized to create shelf.") + + if not shelf: + shelf = ub.Shelf(user_id=current_user.id, name=name, uuid=str(uuid.uuid4())) + ub.session.add(shelf) + + items_unknown_to_calibre = add_items_to_shelf(items, shelf) + if items_unknown_to_calibre: + log.debug("Received request to add unknown books to a collection. Silently ignoring items.") + ub.session.commit() + + return make_response(jsonify(str(shelf.uuid)), 201) + + +@kobo.route("/v1/library/tags/", methods=["DELETE", "PUT"]) +@requires_kobo_auth +def HandleTagUpdate(tag_id): + shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.uuid == tag_id, + ub.Shelf.user_id == current_user.id).one_or_none() + if not shelf: + log.debug("Received Kobo tag update request on a collection unknown to CalibreWeb") + if config.config_kobo_proxy: + return redirect_or_proxy_request() + else: + abort(404, description="Collection isn't known to CalibreWeb") + + if not shelf_lib.check_shelf_edit_permissions(shelf): + abort(401, description="User is unauthaurized to edit shelf.") + + if request.method == "DELETE": + shelf_lib.delete_shelf_helper(shelf) + else: + name = None + try: + shelf_request = request.json + name = shelf_request["Name"] + except (KeyError, TypeError): + log.debug("Received malformed v1/library/tags rename request.") + abort(400, description="Malformed tags POST request. Data is missing 'Name' field") + + shelf.name = name + ub.session.merge(shelf) + ub.session.commit() + return make_response(' ', 200) + + +# Adds items to the given shelf. +def add_items_to_shelf(items, shelf): + book_ids_already_in_shelf = set([book_shelf.book_id for book_shelf in shelf.books]) + items_unknown_to_calibre = [] + for item in items: + try: + if item["Type"] != "ProductRevisionTagItem": + items_unknown_to_calibre.append(item) + continue + + book = calibre_db.get_book_by_uuid(item["RevisionId"]) + if not book: + items_unknown_to_calibre.append(item) + continue + + book_id = book.id + if book_id not in book_ids_already_in_shelf: + shelf.books.append(ub.BookShelf(book_id=book_id)) + except KeyError: + items_unknown_to_calibre.append(item) + return items_unknown_to_calibre + + +@kobo.route("/v1/library/tags//items", methods=["POST"]) +@requires_kobo_auth +def HandleTagAddItem(tag_id): + items = None + try: + tag_request = request.json + items = tag_request["Items"] + except (KeyError, TypeError): + log.debug("Received malformed v1/library/tags//items/delete request.") + abort(400, description="Malformed tags POST request. Data is missing 'Items' field") + + shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.uuid == tag_id, + ub.Shelf.user_id == current_user.id).one_or_none() + if not shelf: + log.debug("Received Kobo request on a collection unknown to CalibreWeb") + abort(404, description="Collection isn't known to CalibreWeb") + + if not shelf_lib.check_shelf_edit_permissions(shelf): + abort(401, description="User is unauthaurized to edit shelf.") + + items_unknown_to_calibre = add_items_to_shelf(items, shelf) + if items_unknown_to_calibre: + log.debug("Received request to add an unknown book to a collection. Silently ignoring item.") + + ub.session.merge(shelf) + ub.session.commit() + + return make_response('', 201) + + +@kobo.route("/v1/library/tags//items/delete", methods=["POST"]) +@requires_kobo_auth +def HandleTagRemoveItem(tag_id): + items = None + try: + tag_request = request.json + items = tag_request["Items"] + except (KeyError, TypeError): + log.debug("Received malformed v1/library/tags//items/delete request.") + abort(400, description="Malformed tags POST request. Data is missing 'Items' field") + + shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.uuid == tag_id, + ub.Shelf.user_id == current_user.id).one_or_none() + if not shelf: + log.debug( + "Received a request to remove an item from a Collection unknown to CalibreWeb.") + abort(404, description="Collection isn't known to CalibreWeb") + + if not shelf_lib.check_shelf_edit_permissions(shelf): + abort(401, description="User is unauthaurized to edit shelf.") + + items_unknown_to_calibre = [] + for item in items: + try: + if item["Type"] != "ProductRevisionTagItem": + items_unknown_to_calibre.append(item) + continue + + book = calibre_db.get_book_by_uuid(item["RevisionId"]) + if not book: + items_unknown_to_calibre.append(item) + continue + + shelf.books.filter(ub.BookShelf.book_id == book.id).delete() + except KeyError: + items_unknown_to_calibre.append(item) + ub.session.commit() + + if items_unknown_to_calibre: + log.debug("Received request to remove an unknown book to a collecition. Silently ignoring item.") + + return make_response('', 200) + + +# Add new, changed, or deleted shelves to the sync_results. +# Note: Public shelves that aren't owned by the user aren't supported. +def sync_shelves(sync_token, sync_results): + new_tags_last_modified = sync_token.tags_last_modified + + for shelf in ub.session.query(ub.ShelfArchive).filter(func.datetime(ub.ShelfArchive.last_modified) > sync_token.tags_last_modified, + ub.ShelfArchive.user_id == current_user.id): + new_tags_last_modified = max(shelf.last_modified, new_tags_last_modified) + + sync_results.append({ + "DeletedTag": { + "Tag": { + "Id": shelf.uuid, + "LastModified": convert_to_kobo_timestamp_string(shelf.last_modified) + } + } + }) + + for shelf in ub.session.query(ub.Shelf).filter(func.datetime(ub.Shelf.last_modified) > sync_token.tags_last_modified, + ub.Shelf.user_id == current_user.id): + if not shelf_lib.check_shelf_view_permissions(shelf): + continue + + new_tags_last_modified = max(shelf.last_modified, new_tags_last_modified) + + tag = create_kobo_tag(shelf) + if not tag: + continue + + if shelf.created > sync_token.tags_last_modified: + sync_results.append({ + "NewTag": tag + }) + else: + sync_results.append({ + "ChangedTag": tag + }) + sync_token.tags_last_modified = new_tags_last_modified + ub.session.commit() + + +# Creates a Kobo "Tag" object from a ub.Shelf object +def create_kobo_tag(shelf): + tag = { + "Created": convert_to_kobo_timestamp_string(shelf.created), + "Id": shelf.uuid, + "Items": [], + "LastModified": convert_to_kobo_timestamp_string(shelf.last_modified), + "Name": shelf.name, + "Type": "UserTag" + } + for book_shelf in shelf.books: + book = calibre_db.get_book(book_shelf.book_id) + if not book: + log.info(u"Book (id: %s) in BookShelf (id: %s) not found in book database", book_shelf.book_id, shelf.id) + continue + tag["Items"].append( + { + "RevisionId": book.uuid, + "Type": "ProductRevisionTagItem" + } + ) + return {"Tag": tag} + + +@kobo.route("/v1/library//state", methods=["GET", "PUT"]) +@requires_kobo_auth +def HandleStateRequest(book_uuid): + book = calibre_db.get_book_by_uuid(book_uuid) + if not book or not book.data: + log.info(u"Book %s not found in database", book_uuid) + return redirect_or_proxy_request() + + kobo_reading_state = get_or_create_reading_state(book.id) + + if request.method == "GET": + return jsonify([get_kobo_reading_state_response(book, kobo_reading_state)]) + else: + update_results_response = {"EntitlementId": book_uuid} + + try: + request_data = request.json + request_reading_state = request_data["ReadingStates"][0] + + request_bookmark = request_reading_state["CurrentBookmark"] + if request_bookmark: + current_bookmark = kobo_reading_state.current_bookmark + current_bookmark.progress_percent = request_bookmark["ProgressPercent"] + current_bookmark.content_source_progress_percent = request_bookmark["ContentSourceProgressPercent"] + location = request_bookmark["Location"] + if location: + current_bookmark.location_value = location["Value"] + current_bookmark.location_type = location["Type"] + current_bookmark.location_source = location["Source"] + update_results_response["CurrentBookmarkResult"] = {"Result": "Success"} + + request_statistics = request_reading_state["Statistics"] + if request_statistics: + statistics = kobo_reading_state.statistics + statistics.spent_reading_minutes = int(request_statistics["SpentReadingMinutes"]) + statistics.remaining_time_minutes = int(request_statistics["RemainingTimeMinutes"]) + update_results_response["StatisticsResult"] = {"Result": "Success"} + + request_status_info = request_reading_state["StatusInfo"] + if request_status_info: + book_read = kobo_reading_state.book_read_link + new_book_read_status = get_ub_read_status(request_status_info["Status"]) + if new_book_read_status == ub.ReadBook.STATUS_IN_PROGRESS \ + and new_book_read_status != book_read.read_status: + book_read.times_started_reading += 1 + book_read.last_time_started_reading = datetime.datetime.utcnow() + book_read.read_status = new_book_read_status + update_results_response["StatusInfoResult"] = {"Result": "Success"} + except (KeyError, TypeError, ValueError, StatementError): + log.debug("Received malformed v1/library//state request.") + ub.session.rollback() + abort(400, description="Malformed request data is missing 'ReadingStates' key") + + ub.session.merge(kobo_reading_state) + ub.session.commit() + return jsonify({ + "RequestResult": "Success", + "UpdateResults": [update_results_response], + }) + + +def get_read_status_for_kobo(ub_book_read): + enum_to_string_map = { + None: "ReadyToRead", + ub.ReadBook.STATUS_UNREAD: "ReadyToRead", + ub.ReadBook.STATUS_FINISHED: "Finished", + ub.ReadBook.STATUS_IN_PROGRESS: "Reading", + } + return enum_to_string_map[ub_book_read.read_status] + + +def get_ub_read_status(kobo_read_status): + string_to_enum_map = { + None: None, + "ReadyToRead": ub.ReadBook.STATUS_UNREAD, + "Finished": ub.ReadBook.STATUS_FINISHED, + "Reading": ub.ReadBook.STATUS_IN_PROGRESS, + } + return string_to_enum_map[kobo_read_status] + + +def get_or_create_reading_state(book_id): + book_read = ub.session.query(ub.ReadBook).filter(ub.ReadBook.book_id == book_id, + ub.ReadBook.user_id == current_user.id).one_or_none() + if not book_read: + book_read = ub.ReadBook(user_id=current_user.id, book_id=book_id) + if not book_read.kobo_reading_state: + kobo_reading_state = ub.KoboReadingState(user_id=book_read.user_id, book_id=book_id) + kobo_reading_state.current_bookmark = ub.KoboBookmark() + kobo_reading_state.statistics = ub.KoboStatistics() + book_read.kobo_reading_state = kobo_reading_state + ub.session.add(book_read) + ub.session.commit() + return book_read.kobo_reading_state + + +def get_kobo_reading_state_response(book, kobo_reading_state): + return { + "EntitlementId": book.uuid, + "Created": convert_to_kobo_timestamp_string(book.timestamp), + "LastModified": convert_to_kobo_timestamp_string(kobo_reading_state.last_modified), + # AFAICT PriorityTimestamp is always equal to LastModified. + "PriorityTimestamp": convert_to_kobo_timestamp_string(kobo_reading_state.priority_timestamp), + "StatusInfo": get_status_info_response(kobo_reading_state.book_read_link), + "Statistics": get_statistics_response(kobo_reading_state.statistics), + "CurrentBookmark": get_current_bookmark_response(kobo_reading_state.current_bookmark), + } + + +def get_status_info_response(book_read): + resp = { + "LastModified": convert_to_kobo_timestamp_string(book_read.last_modified), + "Status": get_read_status_for_kobo(book_read), + "TimesStartedReading": book_read.times_started_reading, + } + if book_read.last_time_started_reading: + resp["LastTimeStartedReading"] = convert_to_kobo_timestamp_string(book_read.last_time_started_reading) + return resp + + +def get_statistics_response(statistics): + resp = { + "LastModified": convert_to_kobo_timestamp_string(statistics.last_modified), + } + if statistics.spent_reading_minutes: + resp["SpentReadingMinutes"] = statistics.spent_reading_minutes + if statistics.remaining_time_minutes: + resp["RemainingTimeMinutes"] = statistics.remaining_time_minutes + return resp + + +def get_current_bookmark_response(current_bookmark): + resp = { + "LastModified": convert_to_kobo_timestamp_string(current_bookmark.last_modified), + } + if current_bookmark.progress_percent: + resp["ProgressPercent"] = current_bookmark.progress_percent + if current_bookmark.content_source_progress_percent: + resp["ContentSourceProgressPercent"] = current_bookmark.content_source_progress_percent + if current_bookmark.location_value: + resp["Location"] = { + "Value": current_bookmark.location_value, + "Type": current_bookmark.location_type, + "Source": current_bookmark.location_source, + } + return resp + +@kobo.route("/////image.jpg", defaults={'Quality': ""}) +@kobo.route("//////image.jpg") +@requires_kobo_auth +def HandleCoverImageRequest(book_uuid, width, height,Quality, isGreyscale): + book_cover = helper.get_book_cover_with_uuid( + book_uuid, use_generic_cover_on_failure=False + ) + if not book_cover: + if config.config_kobo_proxy: + log.debug("Cover for unknown book: %s proxied to kobo" % book_uuid) + return redirect(KOBO_IMAGEHOST_URL + + "/{book_uuid}/{width}/{height}/false/image.jpg".format(book_uuid=book_uuid, + width=width, + height=height), 307) + else: + log.debug("Cover for unknown book: %s requested" % book_uuid) + # additional proxy request make no sense, -> direct return + return make_response(jsonify({})) + log.debug("Cover request received for book %s" % book_uuid) + return book_cover + + +@kobo.route("") +def TopLevelEndpoint(): + return make_response(jsonify({})) + + +@kobo.route("/v1/library/", methods=["DELETE"]) +@requires_kobo_auth +def HandleBookDeletionRequest(book_uuid): + log.info("Kobo book deletion request received for book %s" % book_uuid) + book = calibre_db.get_book_by_uuid(book_uuid) + if not book: + log.info(u"Book %s not found in database", book_uuid) + return redirect_or_proxy_request() + + book_id = book.id + archived_book = ( + ub.session.query(ub.ArchivedBook) + .filter(ub.ArchivedBook.book_id == book_id) + .first() + ) + if not archived_book: + archived_book = ub.ArchivedBook(user_id=current_user.id, book_id=book_id) + archived_book.is_archived = True + archived_book.last_modified = datetime.datetime.utcnow() + + ub.session.merge(archived_book) + ub.session.commit() + + return ("", 204) + + +# TODO: Implement the following routes +@kobo.route("/v1/library/", methods=["DELETE", "GET"]) +def HandleUnimplementedRequest(dummy=None): + log.debug("Unimplemented Library Request received: %s", request.base_url) + return redirect_or_proxy_request() + + +# TODO: Implement the following routes +@kobo.route("/v1/user/loyalty/", methods=["GET", "POST"]) +@kobo.route("/v1/user/profile", methods=["GET", "POST"]) +@kobo.route("/v1/user/wishlist", methods=["GET", "POST"]) +@kobo.route("/v1/user/recommendations", methods=["GET", "POST"]) +@kobo.route("/v1/analytics/", methods=["GET", "POST"]) +def HandleUserRequest(dummy=None): + log.debug("Unimplemented User Request received: %s", request.base_url) + return redirect_or_proxy_request() + + +@kobo.route("/v1/products//prices", methods=["GET", "POST"]) +@kobo.route("/v1/products//recommendations", methods=["GET", "POST"]) +@kobo.route("/v1/products//nextread", methods=["GET", "POST"]) +@kobo.route("/v1/products//reviews", methods=["GET", "POST"]) +@kobo.route("/v1/products/books/external/", methods=["GET", "POST"]) +@kobo.route("/v1/products/books/series/", methods=["GET", "POST"]) +@kobo.route("/v1/products/books/", methods=["GET", "POST"]) +@kobo.route("/v1/products/dailydeal", methods=["GET", "POST"]) +@kobo.route("/v1/products", methods=["GET", "POST"]) +def HandleProductsRequest(dummy=None): + log.debug("Unimplemented Products Request received: %s", request.base_url) + return redirect_or_proxy_request() + + +'''@kobo.errorhandler(404) +def handle_404(err): + # This handler acts as a catch-all for endpoints that we don't have an interest in + # implementing (e.g: v1/analytics/gettests, v1/user/recommendations, etc) + if err: + print('404') + return jsonify(error=str(err)), 404 + log.debug("Unknown Request received: %s, method: %s, data: %s", request.base_url, request.method, request.data) + return redirect_or_proxy_request()''' + + +def make_calibre_web_auth_response(): + # As described in kobo_auth.py, CalibreWeb doesn't make use practical use of this auth/device API call for + # authentation (nor for authorization). We return a dummy response just to keep the device happy. + content = request.get_json() + AccessToken = base64.b64encode(os.urandom(24)).decode('utf-8') + RefreshToken = base64.b64encode(os.urandom(24)).decode('utf-8') + return make_response( + jsonify( + { + "AccessToken": AccessToken, + "RefreshToken": RefreshToken, + "TokenType": "Bearer", + "TrackingId": str(uuid.uuid4()), + "UserKey": content['UserKey'], + } + ) + ) + + +@kobo.route("/v1/auth/device", methods=["POST"]) +@requires_kobo_auth +def HandleAuthRequest(): + log.debug('Kobo Auth request') + if config.config_kobo_proxy: + try: + return redirect_or_proxy_request() + except: + log.error("Failed to receive or parse response from Kobo's auth endpoint. Falling back to un-proxied mode.") + return make_calibre_web_auth_response() + + +@kobo.route("/v1/initialization") +@requires_kobo_auth +def HandleInitRequest(): + log.info('Init') + + kobo_resources = None + if config.config_kobo_proxy: + try: + store_response = make_request_to_kobo_store() + store_response_json = store_response.json() + if "Resources" in store_response_json: + kobo_resources = store_response_json["Resources"] + except: + log.error("Failed to receive or parse response from Kobo's init endpoint. Falling back to un-proxied mode.") + if not kobo_resources: + kobo_resources = NATIVE_KOBO_RESOURCES() + + if not current_app.wsgi_app.is_proxied: + log.debug('Kobo: Received unproxied request, changed request port to external server port') + if ':' in request.host and not request.host.endswith(']'): + host = "".join(request.host.split(':')[:-1]) + else: + host = request.host + calibre_web_url = "{url_scheme}://{url_base}:{url_port}".format( + url_scheme=request.scheme, + url_base=host, + url_port=config.config_external_port + ) + log.debug('Kobo: Received unproxied request, changed request url to %s', calibre_web_url) + kobo_resources["image_host"] = calibre_web_url + kobo_resources["image_url_quality_template"] = unquote(calibre_web_url + + url_for("kobo.HandleCoverImageRequest", + auth_token=kobo_auth.get_auth_token(), + book_uuid="{ImageId}", + width="{width}", + height="{height}", + Quality='{Quality}', + isGreyscale='isGreyscale')) + kobo_resources["image_url_template"] = unquote(calibre_web_url + + url_for("kobo.HandleCoverImageRequest", + auth_token=kobo_auth.get_auth_token(), + book_uuid="{ImageId}", + width="{width}", + height="{height}", + isGreyscale='false')) + else: + kobo_resources["image_host"] = url_for("web.index", _external=True).strip("/") + kobo_resources["image_url_quality_template"] = unquote(url_for("kobo.HandleCoverImageRequest", + auth_token=kobo_auth.get_auth_token(), + book_uuid="{ImageId}", + width="{width}", + height="{height}", + Quality='{Quality}', + isGreyscale='isGreyscale', + _external=True)) + kobo_resources["image_url_template"] = unquote(url_for("kobo.HandleCoverImageRequest", + auth_token=kobo_auth.get_auth_token(), + book_uuid="{ImageId}", + width="{width}", + height="{height}", + isGreyscale='false', + _external=True)) + + response = make_response(jsonify({"Resources": kobo_resources})) + response.headers["x-kobo-apitoken"] = "e30=" + + return response + + +@kobo.route("/download//") +@requires_kobo_auth +@download_required +def download_book(book_id, book_format): + + return get_download_link(book_id, book_format, "kobo") + + +def NATIVE_KOBO_RESOURCES(): + return { + "account_page": "https://secure.kobobooks.com/profile", + "account_page_rakuten": "https://my.rakuten.co.jp/", + "add_entitlement": "https://storeapi.kobo.com/v1/library/{RevisionIds}", + "affiliaterequest": "https://storeapi.kobo.com/v1/affiliate", + "audiobook_subscription_orange_deal_inclusion_url": "https://authorize.kobo.com/inclusion", + "authorproduct_recommendations": "https://storeapi.kobo.com/v1/products/books/authors/recommendations", + "autocomplete": "https://storeapi.kobo.com/v1/products/autocomplete", + "blackstone_header": {"key": "x-amz-request-payer", "value": "requester"}, + "book": "https://storeapi.kobo.com/v1/products/books/{ProductId}", + "book_detail_page": "https://store.kobobooks.com/{culture}/ebook/{slug}", + "book_detail_page_rakuten": "https://books.rakuten.co.jp/rk/{crossrevisionid}", + "book_landing_page": "https://store.kobobooks.com/ebooks", + "book_subscription": "https://storeapi.kobo.com/v1/products/books/subscriptions", + "categories": "https://storeapi.kobo.com/v1/categories", + "categories_page": "https://store.kobobooks.com/ebooks/categories", + "category": "https://storeapi.kobo.com/v1/categories/{CategoryId}", + "category_featured_lists": "https://storeapi.kobo.com/v1/categories/{CategoryId}/featured", + "category_products": "https://storeapi.kobo.com/v1/categories/{CategoryId}/products", + "checkout_borrowed_book": "https://storeapi.kobo.com/v1/library/borrow", + "configuration_data": "https://storeapi.kobo.com/v1/configuration", + "content_access_book": "https://storeapi.kobo.com/v1/products/books/{ProductId}/access", + "customer_care_live_chat": "https://v2.zopim.com/widget/livechat.html?key=Y6gwUmnu4OATxN3Tli4Av9bYN319BTdO", + "daily_deal": "https://storeapi.kobo.com/v1/products/dailydeal", + "deals": "https://storeapi.kobo.com/v1/deals", + "delete_entitlement": "https://storeapi.kobo.com/v1/library/{Ids}", + "delete_tag": "https://storeapi.kobo.com/v1/library/tags/{TagId}", + "delete_tag_items": "https://storeapi.kobo.com/v1/library/tags/{TagId}/items/delete", + "device_auth": "https://storeapi.kobo.com/v1/auth/device", + "device_refresh": "https://storeapi.kobo.com/v1/auth/refresh", + "dictionary_host": "https://kbdownload1-a.akamaihd.net", + "discovery_host": "https://discovery.kobobooks.com", + "eula_page": "https://www.kobo.com/termsofuse?style=onestore", + "exchange_auth": "https://storeapi.kobo.com/v1/auth/exchange", + "external_book": "https://storeapi.kobo.com/v1/products/books/external/{Ids}", + "facebook_sso_page": "https://authorize.kobo.com/signin/provider/Facebook/login?returnUrl=http://store.kobobooks.com/", + "featured_list": "https://storeapi.kobo.com/v1/products/featured/{FeaturedListId}", + "featured_lists": "https://storeapi.kobo.com/v1/products/featured", + "free_books_page": { + "EN": "https://www.kobo.com/{region}/{language}/p/free-ebooks", + "FR": "https://www.kobo.com/{region}/{language}/p/livres-gratuits", + "IT": "https://www.kobo.com/{region}/{language}/p/libri-gratuiti", + "NL": "https://www.kobo.com/{region}/{language}/List/bekijk-het-overzicht-van-gratis-ebooks/QpkkVWnUw8sxmgjSlCbJRg", + "PT": "https://www.kobo.com/{region}/{language}/p/livros-gratis", + }, + "fte_feedback": "https://storeapi.kobo.com/v1/products/ftefeedback", + "get_tests_request": "https://storeapi.kobo.com/v1/analytics/gettests", + "giftcard_epd_redeem_url": "https://www.kobo.com/{storefront}/{language}/redeem-ereader", + "giftcard_redeem_url": "https://www.kobo.com/{storefront}/{language}/redeem", + "help_page": "https://www.kobo.com/help", + "kobo_audiobooks_enabled": "False", + "kobo_audiobooks_orange_deal_enabled": "False", + "kobo_audiobooks_subscriptions_enabled": "False", + "kobo_nativeborrow_enabled": "True", + "kobo_onestorelibrary_enabled": "False", + "kobo_redeem_enabled": "True", + "kobo_shelfie_enabled": "False", + "kobo_subscriptions_enabled": "False", + "kobo_superpoints_enabled": "False", + "kobo_wishlist_enabled": "True", + "library_book": "https://storeapi.kobo.com/v1/user/library/books/{LibraryItemId}", + "library_items": "https://storeapi.kobo.com/v1/user/library", + "library_metadata": "https://storeapi.kobo.com/v1/library/{Ids}/metadata", + "library_prices": "https://storeapi.kobo.com/v1/user/library/previews/prices", + "library_stack": "https://storeapi.kobo.com/v1/user/library/stacks/{LibraryItemId}", + "library_sync": "https://storeapi.kobo.com/v1/library/sync", + "love_dashboard_page": "https://store.kobobooks.com/{culture}/kobosuperpoints", + "love_points_redemption_page": "https://store.kobobooks.com/{culture}/KoboSuperPointsRedemption?productId={ProductId}", + "magazine_landing_page": "https://store.kobobooks.com/emagazines", + "notifications_registration_issue": "https://storeapi.kobo.com/v1/notifications/registration", + "oauth_host": "https://oauth.kobo.com", + "overdrive_account": "https://auth.overdrive.com/account", + "overdrive_library": "https://{libraryKey}.auth.overdrive.com/library", + "overdrive_library_finder_host": "https://libraryfinder.api.overdrive.com", + "overdrive_thunder_host": "https://thunder.api.overdrive.com", + "password_retrieval_page": "https://www.kobobooks.com/passwordretrieval.html", + "post_analytics_event": "https://storeapi.kobo.com/v1/analytics/event", + "privacy_page": "https://www.kobo.com/privacypolicy?style=onestore", + "product_nextread": "https://storeapi.kobo.com/v1/products/{ProductIds}/nextread", + "product_prices": "https://storeapi.kobo.com/v1/products/{ProductIds}/prices", + "product_recommendations": "https://storeapi.kobo.com/v1/products/{ProductId}/recommendations", + "product_reviews": "https://storeapi.kobo.com/v1/products/{ProductIds}/reviews", + "products": "https://storeapi.kobo.com/v1/products", + "provider_external_sign_in_page": "https://authorize.kobo.com/ExternalSignIn/{providerName}?returnUrl=http://store.kobobooks.com/", + "purchase_buy": "https://www.kobo.com/checkout/createpurchase/", + "purchase_buy_templated": "https://www.kobo.com/{culture}/checkout/createpurchase/{ProductId}", + "quickbuy_checkout": "https://storeapi.kobo.com/v1/store/quickbuy/{PurchaseId}/checkout", + "quickbuy_create": "https://storeapi.kobo.com/v1/store/quickbuy/purchase", + "rating": "https://storeapi.kobo.com/v1/products/{ProductId}/rating/{Rating}", + "reading_state": "https://storeapi.kobo.com/v1/library/{Ids}/state", + "redeem_interstitial_page": "https://store.kobobooks.com", + "registration_page": "https://authorize.kobo.com/signup?returnUrl=http://store.kobobooks.com/", + "related_items": "https://storeapi.kobo.com/v1/products/{Id}/related", + "remaining_book_series": "https://storeapi.kobo.com/v1/products/books/series/{SeriesId}", + "rename_tag": "https://storeapi.kobo.com/v1/library/tags/{TagId}", + "review": "https://storeapi.kobo.com/v1/products/reviews/{ReviewId}", + "review_sentiment": "https://storeapi.kobo.com/v1/products/reviews/{ReviewId}/sentiment/{Sentiment}", + "shelfie_recommendations": "https://storeapi.kobo.com/v1/user/recommendations/shelfie", + "sign_in_page": "https://authorize.kobo.com/signin?returnUrl=http://store.kobobooks.com/", + "social_authorization_host": "https://social.kobobooks.com:8443", + "social_host": "https://social.kobobooks.com", + "stacks_host_productId": "https://store.kobobooks.com/collections/byproductid/", + "store_home": "www.kobo.com/{region}/{language}", + "store_host": "store.kobobooks.com", + "store_newreleases": "https://store.kobobooks.com/{culture}/List/new-releases/961XUjtsU0qxkFItWOutGA", + "store_search": "https://store.kobobooks.com/{culture}/Search?Query={query}", + "store_top50": "https://store.kobobooks.com/{culture}/ebooks/Top", + "tag_items": "https://storeapi.kobo.com/v1/library/tags/{TagId}/Items", + "tags": "https://storeapi.kobo.com/v1/library/tags", + "taste_profile": "https://storeapi.kobo.com/v1/products/tasteprofile", + "update_accessibility_to_preview": "https://storeapi.kobo.com/v1/library/{EntitlementIds}/preview", + "use_one_store": "False", + "user_loyalty_benefits": "https://storeapi.kobo.com/v1/user/loyalty/benefits", + "user_platform": "https://storeapi.kobo.com/v1/user/platform", + "user_profile": "https://storeapi.kobo.com/v1/user/profile", + "user_ratings": "https://storeapi.kobo.com/v1/user/ratings", + "user_recommendations": "https://storeapi.kobo.com/v1/user/recommendations", + "user_reviews": "https://storeapi.kobo.com/v1/user/reviews", + "user_wishlist": "https://storeapi.kobo.com/v1/user/wishlist", + "userguide_host": "https://kbdownload1-a.akamaihd.net", + "wishlist_page": "https://store.kobobooks.com/{region}/{language}/account/wishlist", + } diff --git a/cps/kobo_auth.py b/cps/kobo_auth.py new file mode 100644 index 000000000..0f6cd174b --- /dev/null +++ b/cps/kobo_auth.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) +# Copyright (C) 2018-2019 shavitmichael, OzzieIsaacs +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +"""This module is used to control authentication/authorization of Kobo sync requests. +This module also includes research notes into the auth protocol used by Kobo devices. + +Log-in: +When first booting a Kobo device the user must sign into a Kobo (or affiliate) account. +Upon successful sign-in, the user is redirected to + https://auth.kobobooks.com/CrossDomainSignIn?id= +which serves the following response: + +And triggers the insertion of a userKey into the device's User table. + +Together, the device's DeviceId and UserKey act as an *irrevocable* authentication +token to most (if not all) Kobo APIs. In fact, in most cases only the UserKey is +required to authorize the API call. + +Changing Kobo password *does not* invalidate user keys! This is apparently a known +issue for a few years now https://www.mobileread.com/forums/showpost.php?p=3476851&postcount=13 +(although this poster hypothesised that Kobo could blacklist a DeviceId, many endpoints +will still grant access given the userkey.) + +Official Kobo Store Api authorization: +* For most of the endpoints we care about (sync, metadata, tags, etc), the userKey is +passed in the x-kobo-userkey header, and is sufficient to authorize the API call. +* Some endpoints (e.g: AnnotationService) instead make use of Bearer tokens pass through +an authorization header. To get a BearerToken, the device makes a POST request to the +v1/auth/device endpoint with the secret UserKey and the device's DeviceId. +* The book download endpoint passes an auth token as a URL param instead of a header. + +Our implementation: +We pretty much ignore all of the above. To authenticate the user, we generate a random +and unique token that they append to the CalibreWeb Url when setting up the api_store +setting on the device. +Thus, every request from the device to the api_store will hit CalibreWeb with the +auth_token in the url (e.g: https://mylibrary.com//v1/library/sync). +In addition, once authenticated we also set the login cookie on the response that will +be sent back for the duration of the session to authorize subsequent API calls (in +particular calls to non-Kobo specific endpoints such as the CalibreWeb book download). +""" + +from binascii import hexlify +from datetime import datetime +from os import urandom + +from flask import g, Blueprint, url_for, abort, request +from flask_login import login_user, login_required +from flask_babel import gettext as _ + +from . import logger, ub, lm +from .web import render_title_template + +try: + from functools import wraps +except ImportError: + pass # We're not using Python 3 + + +log = logger.create() + + +def register_url_value_preprocessor(kobo): + @kobo.url_value_preprocessor + def pop_auth_token(__, values): + g.auth_token = values.pop("auth_token") + + +def disable_failed_auth_redirect_for_blueprint(bp): + lm.blueprint_login_views[bp.name] = None + + +def get_auth_token(): + if "auth_token" in g: + return g.get("auth_token") + else: + return None + + +def requires_kobo_auth(f): + @wraps(f) + def inner(*args, **kwargs): + auth_token = get_auth_token() + if auth_token is not None: + user = ( + ub.session.query(ub.User) + .join(ub.RemoteAuthToken) + .filter(ub.RemoteAuthToken.auth_token == auth_token).filter(ub.RemoteAuthToken.token_type==1) + .first() + ) + if user is not None: + login_user(user) + return f(*args, **kwargs) + log.debug("Received Kobo request without a recognizable auth token.") + return abort(401) + return inner + + +kobo_auth = Blueprint("kobo_auth", __name__, url_prefix="/kobo_auth") + + +@kobo_auth.route("/generate_auth_token/") +@login_required +def generate_auth_token(user_id): + host_list = request.host.rsplit(':') + if len(host_list) == 1: + host = ':'.join(host_list) + else: + host = ':'.join(host_list[0:-1]) + if host.startswith('127.') or host.lower() == 'localhost' or host.startswith('[::ffff:7f'): + warning = _('PLease access calibre-web from non localhost to get valid api_endpoint for kobo device') + return render_title_template( + "generate_kobo_auth_url.html", + title=_(u"Kobo Setup"), + warning = warning + ) + else: + # Invalidate any prevously generated Kobo Auth token for this user. + auth_token = ub.session.query(ub.RemoteAuthToken).filter( + ub.RemoteAuthToken.user_id == user_id + ).filter(ub.RemoteAuthToken.token_type==1).first() + + if not auth_token: + auth_token = ub.RemoteAuthToken() + auth_token.user_id = user_id + auth_token.expiration = datetime.max + auth_token.auth_token = (hexlify(urandom(16))).decode("utf-8") + auth_token.token_type = 1 + + ub.session.add(auth_token) + ub.session.commit() + return render_title_template( + "generate_kobo_auth_url.html", + title=_(u"Kobo Setup"), + kobo_auth_url=url_for( + "kobo.TopLevelEndpoint", auth_token=auth_token.auth_token, _external=True + ), + warning = False + ) + + +@kobo_auth.route("/deleteauthtoken/") +@login_required +def delete_auth_token(user_id): + # Invalidate any prevously generated Kobo Auth token for this user. + ub.session.query(ub.RemoteAuthToken).filter(ub.RemoteAuthToken.user_id == user_id)\ + .filter(ub.RemoteAuthToken.token_type==1).delete() + ub.session.commit() + return "" diff --git a/cps/logger.py b/cps/logger.py index 77a721d35..7cc0f4d97 100644 --- a/cps/logger.py +++ b/cps/logger.py @@ -67,6 +67,8 @@ def get_level_name(level): def is_valid_logfile(file_path): + if file_path == LOG_TO_STDERR or file_path == LOG_TO_STDOUT: + return True if not file_path: return True if os.path.isdir(file_path): @@ -80,7 +82,6 @@ def _absolute_log_file(log_file, default_log_file): if not os.path.dirname(log_file): log_file = os.path.join(_CONFIG_DIR, log_file) return os.path.abspath(log_file) - return default_log_file @@ -105,13 +106,15 @@ def setup(log_file, log_level=None): # avoid spamming the log with debug messages from libraries r.setLevel(log_level) - log_file = _absolute_log_file(log_file, DEFAULT_LOG_FILE) + # Otherwise name get's destroyed on windows + if log_file != LOG_TO_STDERR and log_file != LOG_TO_STDOUT: + log_file = _absolute_log_file(log_file, DEFAULT_LOG_FILE) previous_handler = r.handlers[0] if r.handlers else None if previous_handler: # if the log_file has not changed, don't create a new handler if getattr(previous_handler, 'baseFilename', None) == log_file: - return + return "" if log_file == DEFAULT_LOG_FILE else log_file logging.debug("logging to %s level %s", log_file, r.level) if log_file == LOG_TO_STDERR or log_file == LOG_TO_STDOUT: @@ -119,21 +122,23 @@ def setup(log_file, log_level=None): file_handler = StreamHandler(sys.stdout) file_handler.baseFilename = log_file else: - file_handler = StreamHandler() + file_handler = StreamHandler(sys.stderr) file_handler.baseFilename = log_file else: try: - file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2) + file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2, encoding='utf-8') except IOError: if log_file == DEFAULT_LOG_FILE: raise - file_handler = RotatingFileHandler(DEFAULT_LOG_FILE, maxBytes=50000, backupCount=2) + file_handler = RotatingFileHandler(DEFAULT_LOG_FILE, maxBytes=50000, backupCount=2, encoding='utf-8') + log_file = "" file_handler.setFormatter(FORMATTER) for h in r.handlers: r.removeHandler(h) h.close() r.addHandler(file_handler) + return "" if log_file == DEFAULT_LOG_FILE else log_file def create_access_log(log_file, log_name, formatter): @@ -146,11 +151,18 @@ def create_access_log(log_file, log_name, formatter): access_log = logging.getLogger(log_name) access_log.propagate = False access_log.setLevel(logging.INFO) + try: + file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2, encoding='utf-8') + except IOError: + if log_file == DEFAULT_ACCESS_LOG: + raise + file_handler = RotatingFileHandler(DEFAULT_ACCESS_LOG, maxBytes=50000, backupCount=2, encoding='utf-8') + log_file = "" - file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2) file_handler.setFormatter(formatter) access_log.addHandler(file_handler) - return access_log + return access_log, \ + "" if _absolute_log_file(log_file, DEFAULT_ACCESS_LOG) == DEFAULT_ACCESS_LOG else log_file # Enable logging of smtp lib debug output diff --git a/cps/oauth.py b/cps/oauth.py index f08c66df7..67ef27034 100644 --- a/cps/oauth.py +++ b/cps/oauth.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) @@ -24,13 +23,24 @@ from flask import session try: from flask_dance.consumer.backend.sqla import SQLAlchemyBackend, first, _get_real_user from sqlalchemy.orm.exc import NoResultFound + backend_resultcode = False # prevent storing values with this resultcode +except ImportError: + # fails on flask-dance >1.3, due to renaming + try: + from flask_dance.consumer.storage.sqla import SQLAlchemyStorage as SQLAlchemyBackend + from flask_dance.consumer.storage.sqla import first, _get_real_user + from sqlalchemy.orm.exc import NoResultFound + backend_resultcode = True # prevent storing values with this resultcode + except ImportError: + pass +try: class OAuthBackend(SQLAlchemyBackend): """ Stores and retrieves OAuth tokens using a relational database through the `SQLAlchemy`_ ORM. - .. _SQLAlchemy: http://www.sqlalchemy.org/ + .. _SQLAlchemy: https://www.sqlalchemy.org/ """ def __init__(self, model, session, provider_id, user=None, user_id=None, user_required=None, anon_user=None, @@ -40,7 +50,7 @@ try: def get(self, blueprint, user=None, user_id=None): if self.provider_id + '_oauth_token' in session and session[self.provider_id + '_oauth_token'] != '': - return session[blueprint.name + '_oauth_token'] + return session[self.provider_id + '_oauth_token'] # check cache cache_key = self.make_cache_key(blueprint=blueprint, user=user, user_id=user_id) token = self.cache.get(cache_key) @@ -62,7 +72,7 @@ try: use_provider_user_id = True if self.user_required and not u and not uid and not use_provider_user_id: - #raise ValueError("Cannot get OAuth token without an associated user") + # raise ValueError("Cannot get OAuth token without an associated user") return None # check for user ID if hasattr(self.model, "user_id") and uid: @@ -87,7 +97,7 @@ try: def set(self, blueprint, token, user=None, user_id=None): uid = first([user_id, self.user_id, blueprint.config.get("user_id")]) u = first(_get_real_user(ref, self.anon_user) - for ref in (user, self.user, blueprint.config.get("user"))) + for ref in (user, self.user, blueprint.config.get("user"))) if self.user_required and not u and not uid: raise ValueError("Cannot set OAuth token without an associated user") @@ -153,5 +163,5 @@ try: blueprint=blueprint, user=user, user_id=user_id, )) -except ImportError: +except Exception: pass diff --git a/cps/oauth_bb.py b/cps/oauth_bb.py index 092473da6..4d489cdd1 100644 --- a/cps/oauth_bb.py +++ b/cps/oauth_bb.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) @@ -36,8 +35,7 @@ from sqlalchemy.orm.exc import NoResultFound from . import constants, logger, config, app, ub from .web import login_required -from .oauth import OAuthBackend -# from .web import github_oauth_required +from .oauth import OAuthBackend, backend_resultcode oauth_check = {} @@ -50,7 +48,7 @@ def oauth_required(f): def inner(*args, **kwargs): if config.config_login_type == constants.LOGIN_OAUTH: return f(*args, **kwargs) - if request.is_xhr: + if request.headers.get('X-Requested-With') == 'XMLHttpRequest': data = {'status': 'error', 'message': 'Not Found'} response = make_response(json.dumps(data, ensure_ascii=False)) response.headers["Content-Type"] = "application/json; charset=utf-8" @@ -60,29 +58,29 @@ def oauth_required(f): return inner -def register_oauth_blueprint(id, show_name): - oauth_check[id] = show_name +def register_oauth_blueprint(cid, show_name): + oauth_check[cid] = show_name def register_user_with_oauth(user=None): all_oauth = {} - for oauth in oauth_check.keys(): - if str(oauth) + '_oauth_user_id' in session and session[str(oauth) + '_oauth_user_id'] != '': - all_oauth[oauth] = oauth_check[oauth] + for oauth_key in oauth_check.keys(): + if str(oauth_key) + '_oauth_user_id' in session and session[str(oauth_key) + '_oauth_user_id'] != '': + all_oauth[oauth_key] = oauth_check[oauth_key] if len(all_oauth.keys()) == 0: return if user is None: flash(_(u"Register with %(provider)s", provider=", ".join(list(all_oauth.values()))), category="success") else: - for oauth in all_oauth.keys(): + for oauth_key in all_oauth.keys(): # Find this OAuth token in the database, or create it query = ub.session.query(ub.OAuth).filter_by( - provider=oauth, - provider_user_id=session[str(oauth) + "_oauth_user_id"], + provider=oauth_key, + provider_user_id=session[str(oauth_key) + "_oauth_user_id"], ) try: - oauth = query.one() - oauth.user_id = user.id + oauth_key = query.one() + oauth_key.user_id = user.id except NoResultFound: # no found, return error return @@ -94,39 +92,40 @@ def register_user_with_oauth(user=None): def logout_oauth_user(): - for oauth in oauth_check.keys(): - if str(oauth) + '_oauth_user_id' in session: - session.pop(str(oauth) + '_oauth_user_id') + for oauth_key in oauth_check.keys(): + if str(oauth_key) + '_oauth_user_id' in session: + session.pop(str(oauth_key) + '_oauth_user_id') + if ub.oauth_support: - oauthblueprints =[] + oauthblueprints = [] if not ub.session.query(ub.OAuthProvider).count(): - oauth = ub.OAuthProvider() - oauth.provider_name = "github" - oauth.active = False - ub.session.add(oauth) + oauthProvider = ub.OAuthProvider() + oauthProvider.provider_name = "github" + oauthProvider.active = False + ub.session.add(oauthProvider) ub.session.commit() - oauth = ub.OAuthProvider() - oauth.provider_name = "google" - oauth.active = False - ub.session.add(oauth) + oauthProvider = ub.OAuthProvider() + oauthProvider.provider_name = "google" + oauthProvider.active = False + ub.session.add(oauthProvider) ub.session.commit() oauth_ids = ub.session.query(ub.OAuthProvider).all() - ele1=dict(provider_name='github', - id=oauth_ids[0].id, - active=oauth_ids[0].active, - oauth_client_id=oauth_ids[0].oauth_client_id, - scope=None, - oauth_client_secret=oauth_ids[0].oauth_client_secret, - obtain_link='https://github.com/settings/developers') - ele2=dict(provider_name='google', - id=oauth_ids[1].id, - active=oauth_ids[1].active, - scope=["https://www.googleapis.com/auth/plus.me", "https://www.googleapis.com/auth/userinfo.email"], - oauth_client_id=oauth_ids[1].oauth_client_id, - oauth_client_secret=oauth_ids[1].oauth_client_secret, - obtain_link='https://github.com/settings/developers') + ele1 = dict(provider_name='github', + id=oauth_ids[0].id, + active=oauth_ids[0].active, + oauth_client_id=oauth_ids[0].oauth_client_id, + scope=None, + oauth_client_secret=oauth_ids[0].oauth_client_secret, + obtain_link='https://github.com/settings/developers') + ele2 = dict(provider_name='google', + id=oauth_ids[1].id, + active=oauth_ids[1].active, + scope=["https://www.googleapis.com/auth/userinfo.email"], + oauth_client_id=oauth_ids[1].oauth_client_id, + oauth_client_secret=oauth_ids[1].oauth_client_secret, + obtain_link='https://console.developers.google.com/apis/credentials') oauthblueprints.append(ele1) oauthblueprints.append(ele2) @@ -139,12 +138,12 @@ if ub.oauth_support: client_id=element['oauth_client_id'], client_secret=element['oauth_client_secret'], redirect_to="oauth."+element['provider_name']+"_login", - scope = element['scope'] + scope=element['scope'] ) - element['blueprint']=blueprint - app.register_blueprint(blueprint, url_prefix="/login") + element['blueprint'] = blueprint element['blueprint'].backend = OAuthBackend(ub.OAuth, ub.session, str(element['id']), user=current_user, user_required=True) + app.register_blueprint(blueprint, url_prefix="/login") if element['active']: register_oauth_blueprint(element['id'], element['provider_name']) @@ -191,54 +190,64 @@ if ub.oauth_support: provider_user_id=provider_user_id, ) try: - oauth = query.one() + oauth_entry = query.one() # update token - oauth.token = token + oauth_entry.token = token except NoResultFound: - oauth = ub.OAuth( + oauth_entry = ub.OAuth( provider=provider_id, provider_user_id=provider_user_id, token=token, ) try: - ub.session.add(oauth) + ub.session.add(oauth_entry) ub.session.commit() except Exception as e: log.exception(e) ub.session.rollback() # Disable Flask-Dance's default behavior for saving the OAuth token - return False + # Value differrs depending on flask-dance version + return backend_resultcode - def bind_oauth_or_register(provider_id, provider_user_id, redirect_url): + def bind_oauth_or_register(provider_id, provider_user_id, redirect_url, provider_name): query = ub.session.query(ub.OAuth).filter_by( provider=provider_id, provider_user_id=provider_user_id, ) try: - oauth = query.one() + oauth_entry = query.first() # already bind with user, just login - if oauth.user: - login_user(oauth.user) + if oauth_entry.user: + login_user(oauth_entry.user) + log.debug(u"You are now logged in as: '%s'", oauth_entry.user.nickname) + flash(_(u"you are now logged in as: '%(nickname)s'", nickname= oauth_entry.user.nickname), + category="success") return redirect(url_for('web.index')) else: # bind to current user if current_user and current_user.is_authenticated: - oauth.user = current_user + oauth_entry.user = current_user try: - ub.session.add(oauth) + ub.session.add(oauth_entry) ub.session.commit() + flash(_(u"Link to %(oauth)s Succeeded", oauth=provider_name), category="success") + return redirect(url_for('web.profile')) except Exception as e: log.exception(e) ub.session.rollback() - return redirect(url_for('web.login')) - #if config.config_public_reg: + else: + flash(_(u"Login failed, No User Linked With OAuth Account"), category="error") + log.info('Login failed, No User Linked With OAuth Account') + return redirect(url_for('web.login')) + # return redirect(url_for('web.login')) + # if config.config_public_reg: # return redirect(url_for('web.register')) - #else: + # else: # flash(_(u"Public registration is not enabled"), category="error") # return redirect(url_for(redirect_url)) - except NoResultFound: + except (NoResultFound, AttributeError): return redirect(url_for(redirect_url)) @@ -249,8 +258,8 @@ if ub.oauth_support: ) try: oauths = query.all() - for oauth in oauths: - status.append(int(oauth.provider)) + for oauth_entry in oauths: + status.append(int(oauth_entry.provider)) return status except NoResultFound: return None @@ -264,21 +273,21 @@ if ub.oauth_support: user_id=current_user.id, ) try: - oauth = query.one() + oauth_entry = query.one() if current_user and current_user.is_authenticated: - oauth.user = current_user + oauth_entry.user = current_user try: - ub.session.delete(oauth) + ub.session.delete(oauth_entry) ub.session.commit() logout_oauth_user() - flash(_(u"Unlink to %(oauth)s success.", oauth=oauth_check[provider]), category="success") + flash(_(u"Unlink to %(oauth)s Succeeded", oauth=oauth_check[provider]), category="success") except Exception as e: log.exception(e) ub.session.rollback() - flash(_(u"Unlink to %(oauth)s failed.", oauth=oauth_check[provider]), category="error") + flash(_(u"Unlink to %(oauth)s Failed", oauth=oauth_check[provider]), category="error") except NoResultFound: - log.warning("oauth %s for user %d not fount", provider, current_user.id) - flash(_(u"Not linked to %(oauth)s.", oauth=oauth_check[provider]), category="error") + log.warning("oauth %s for user %d not found", provider, current_user.id) + flash(_(u"Not Linked to %(oauth)s", oauth=provider), category="error") return redirect(url_for('web.profile')) @@ -293,11 +302,11 @@ if ub.oauth_support: error=error, description=error_description, uri=error_uri, - ) # ToDo: Translate + ) # ToDo: Translate flash(msg, category="error") - @oauth.route('/github') + @oauth.route('/link/github') @oauth_required def github_login(): if not github.authorized: @@ -305,7 +314,7 @@ if ub.oauth_support: account_info = github.get('/user') if account_info.ok: account_info_json = account_info.json() - return bind_oauth_or_register(oauthblueprints[0]['id'], account_info_json['id'], 'github.login') + return bind_oauth_or_register(oauthblueprints[0]['id'], account_info_json['id'], 'github.login', 'github') flash(_(u"GitHub Oauth error, please retry later."), category="error") return redirect(url_for('web.login')) @@ -316,7 +325,7 @@ if ub.oauth_support: return unlink_oauth(oauthblueprints[0]['id']) - @oauth.route('/login/google') + @oauth.route('/link/google') @oauth_required def google_login(): if not google.authorized: @@ -324,7 +333,7 @@ if ub.oauth_support: resp = google.get("/oauth2/v2/userinfo") if resp.ok: account_info_json = resp.json() - return bind_oauth_or_register(oauthblueprints[1]['id'], account_info_json['id'], 'google.login') + return bind_oauth_or_register(oauthblueprints[1]['id'], account_info_json['id'], 'google.login', 'google') flash(_(u"Google Oauth error, please retry later."), category="error") return redirect(url_for('web.login')) @@ -339,11 +348,11 @@ if ub.oauth_support: error=error, description=error_description, uri=error_uri, - ) # ToDo: Translate + ) # ToDo: Translate flash(msg, category="error") @oauth.route('/unlink/google', methods=["GET"]) @login_required def google_login_unlink(): - return unlink_oauth(oauthblueprints[1]['blueprint'].name) + return unlink_oauth(oauthblueprints[1]['id']) diff --git a/cps/opds.py b/cps/opds.py index 9198554b1..05e9c68c8 100644 --- a/cps/opds.py +++ b/cps/opds.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) @@ -26,16 +25,18 @@ import sys import datetime from functools import wraps -from flask import Blueprint, request, render_template, Response, g, make_response +from flask import Blueprint, request, render_template, Response, g, make_response, abort from flask_login import current_user from sqlalchemy.sql.expression import func, text, or_, and_ from werkzeug.security import check_password_hash -from . import constants, logger, config, db, ub, services -from .helper import fill_indexpage, get_download_link, get_book_cover +from . import constants, logger, config, db, calibre_db, ub, services, get_locale, isoLanguages +from .helper import get_download_link, get_book_cover from .pagination import Pagination -from .web import common_filters, get_search_results, render_read_books, download_required - +from .web import render_read_books, download_required, load_user_from_request +from flask_babel import gettext as _ +from babel import Locale as LC +from babel.core import UnknownLocaleError opds = Blueprint('opds', __name__) @@ -50,11 +51,25 @@ def requires_basic_auth_if_no_ano(f): if not auth or auth.type != 'basic' or not check_auth(auth.username, auth.password): return authenticate() return f(*args, **kwargs) - if config.config_login_type == constants.LOGIN_LDAP and services.ldap: + if config.config_login_type == constants.LOGIN_LDAP and services.ldap and config.config_anonbrowse != 1: return services.ldap.basic_auth_required(f) return decorated +class FeedObject: + def __init__(self, rating_id, rating_name): + self.rating_id = rating_id + self.rating_name = rating_name + + @property + def id(self): + return self.rating_id + + @property + def name(self): + return self.rating_name + + @opds.route("/opds/") @opds.route("/opds") @requires_basic_auth_if_no_ano @@ -85,15 +100,15 @@ def feed_normal_search(): @requires_basic_auth_if_no_ano def feed_new(): off = request.args.get("offset") or 0 - entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), - db.Books, True, [db.Books.timestamp.desc()]) + entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0, + db.Books, True, [db.Books.timestamp.desc()]) return render_xml_template('feed.xml', entries=entries, pagination=pagination) @opds.route("/opds/discover") @requires_basic_auth_if_no_ano def feed_discover(): - entries = db.session.query(db.Books).filter(common_filters()).order_by(func.random())\ + entries = calibre_db.session.query(db.Books).filter(calibre_db.common_filters()).order_by(func.random())\ .limit(config.config_books_per_page) pagination = Pagination(1, config.config_books_per_page, int(config.config_books_per_page)) return render_xml_template('feed.xml', entries=entries, pagination=pagination) @@ -103,8 +118,9 @@ def feed_discover(): @requires_basic_auth_if_no_ano def feed_best_rated(): off = request.args.get("offset") or 0 - entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), - db.Books, db.Books.ratings.any(db.Ratings.rating > 9), [db.Books.timestamp.desc()]) + entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0, + db.Books, db.Books.ratings.any(db.Ratings.rating > 9), + [db.Books.timestamp.desc()]) return render_xml_template('feed.xml', entries=entries, pagination=pagination) @@ -117,16 +133,13 @@ def feed_hot(): hot_books = all_books.offset(off).limit(config.config_books_per_page) entries = list() for book in hot_books: - downloadBook = db.session.query(db.Books).filter(db.Books.id == book.Downloads.book_id).first() + downloadBook = calibre_db.get_book(book.Downloads.book_id) if downloadBook: entries.append( - db.session.query(db.Books).filter(common_filters()) - .filter(db.Books.id == book.Downloads.book_id).first() + calibre_db.get_filtered_book(book.Downloads.book_id) ) else: ub.delete_download(book.Downloads.book_id) - # ub.session.query(ub.Downloads).filter(book.Downloads.book_id == ub.Downloads.book_id).delete() - # ub.session.commit() numBooks = entries.__len__() pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, numBooks) @@ -137,10 +150,13 @@ def feed_hot(): @requires_basic_auth_if_no_ano def feed_authorindex(): off = request.args.get("offset") or 0 - entries = db.session.query(db.Authors).join(db.books_authors_link).join(db.Books).filter(common_filters())\ - .group_by(text('books_authors_link.author')).order_by(db.Authors.sort).limit(config.config_books_per_page).offset(off) + entries = calibre_db.session.query(db.Authors).join(db.books_authors_link).join(db.Books)\ + .filter(calibre_db.common_filters())\ + .group_by(text('books_authors_link.author'))\ + .order_by(db.Authors.sort).limit(config.config_books_per_page)\ + .offset(off) pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, - len(db.session.query(db.Authors).all())) + len(calibre_db.session.query(db.Authors).all())) return render_xml_template('feed.xml', listelements=entries, folder='opds.feed_author', pagination=pagination) @@ -148,8 +164,10 @@ def feed_authorindex(): @requires_basic_auth_if_no_ano def feed_author(book_id): off = request.args.get("offset") or 0 - entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), - db.Books, db.Books.authors.any(db.Authors.id == book_id), [db.Books.timestamp.desc()]) + entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0, + db.Books, + db.Books.authors.any(db.Authors.id == book_id), + [db.Books.timestamp.desc()]) return render_xml_template('feed.xml', entries=entries, pagination=pagination) @@ -157,10 +175,14 @@ def feed_author(book_id): @requires_basic_auth_if_no_ano def feed_publisherindex(): off = request.args.get("offset") or 0 - entries = db.session.query(db.Publishers).join(db.books_publishers_link).join(db.Books).filter(common_filters())\ - .group_by(text('books_publishers_link.publisher')).order_by(db.Publishers.sort).limit(config.config_books_per_page).offset(off) + entries = calibre_db.session.query(db.Publishers)\ + .join(db.books_publishers_link)\ + .join(db.Books).filter(calibre_db.common_filters())\ + .group_by(text('books_publishers_link.publisher'))\ + .order_by(db.Publishers.sort)\ + .limit(config.config_books_per_page).offset(off) pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, - len(db.session.query(db.Publishers).all())) + len(calibre_db.session.query(db.Publishers).all())) return render_xml_template('feed.xml', listelements=entries, folder='opds.feed_publisher', pagination=pagination) @@ -168,9 +190,10 @@ def feed_publisherindex(): @requires_basic_auth_if_no_ano def feed_publisher(book_id): off = request.args.get("offset") or 0 - entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), - db.Books, db.Books.publishers.any(db.Publishers.id == book_id), - [db.Books.timestamp.desc()]) + entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0, + db.Books, + db.Books.publishers.any(db.Publishers.id == book_id), + [db.Books.timestamp.desc()]) return render_xml_template('feed.xml', entries=entries, pagination=pagination) @@ -178,10 +201,16 @@ def feed_publisher(book_id): @requires_basic_auth_if_no_ano def feed_categoryindex(): off = request.args.get("offset") or 0 - entries = db.session.query(db.Tags).join(db.books_tags_link).join(db.Books).filter(common_filters())\ - .group_by(text('books_tags_link.tag')).order_by(db.Tags.name).offset(off).limit(config.config_books_per_page) + entries = calibre_db.session.query(db.Tags)\ + .join(db.books_tags_link)\ + .join(db.Books)\ + .filter(calibre_db.common_filters())\ + .group_by(text('books_tags_link.tag'))\ + .order_by(db.Tags.name)\ + .offset(off)\ + .limit(config.config_books_per_page) pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, - len(db.session.query(db.Tags).all())) + len(calibre_db.session.query(db.Tags).all())) return render_xml_template('feed.xml', listelements=entries, folder='opds.feed_category', pagination=pagination) @@ -189,8 +218,10 @@ def feed_categoryindex(): @requires_basic_auth_if_no_ano def feed_category(book_id): off = request.args.get("offset") or 0 - entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), - db.Books, db.Books.tags.any(db.Tags.id == book_id), [db.Books.timestamp.desc()]) + entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0, + db.Books, + db.Books.tags.any(db.Tags.id == book_id), + [db.Books.timestamp.desc()]) return render_xml_template('feed.xml', entries=entries, pagination=pagination) @@ -198,10 +229,15 @@ def feed_category(book_id): @requires_basic_auth_if_no_ano def feed_seriesindex(): off = request.args.get("offset") or 0 - entries = db.session.query(db.Series).join(db.books_series_link).join(db.Books).filter(common_filters())\ - .group_by(text('books_series_link.series')).order_by(db.Series.sort).offset(off).all() + entries = calibre_db.session.query(db.Series)\ + .join(db.books_series_link)\ + .join(db.Books)\ + .filter(calibre_db.common_filters())\ + .group_by(text('books_series_link.series'))\ + .order_by(db.Series.sort)\ + .offset(off).all() pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, - len(db.session.query(db.Series).all())) + len(calibre_db.session.query(db.Series).all())) return render_xml_template('feed.xml', listelements=entries, folder='opds.feed_series', pagination=pagination) @@ -209,22 +245,112 @@ def feed_seriesindex(): @requires_basic_auth_if_no_ano def feed_series(book_id): off = request.args.get("offset") or 0 - entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), - db.Books, db.Books.series.any(db.Series.id == book_id), [db.Books.series_index]) + entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0, + db.Books, + db.Books.series.any(db.Series.id == book_id), + [db.Books.series_index]) return render_xml_template('feed.xml', entries=entries, pagination=pagination) -@opds.route("/opds/shelfindex/", defaults={'public': 0}) -@opds.route("/opds/shelfindex/") +@opds.route("/opds/ratings") @requires_basic_auth_if_no_ano -def feed_shelfindex(public): +def feed_ratingindex(): off = request.args.get("offset") or 0 - if public != 0: - shelf = g.public_shelfes - number = len(shelf) + entries = calibre_db.session.query(db.Ratings, func.count('books_ratings_link.book').label('count'), + (db.Ratings.rating / 2).label('name')) \ + .join(db.books_ratings_link)\ + .join(db.Books)\ + .filter(calibre_db.common_filters()) \ + .group_by(text('books_ratings_link.rating'))\ + .order_by(db.Ratings.rating).all() + + pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, + len(entries)) + element = list() + for entry in entries: + element.append(FeedObject(entry[0].id, "{} Stars".format(entry.name))) + return render_xml_template('feed.xml', listelements=element, folder='opds.feed_ratings', pagination=pagination) + + +@opds.route("/opds/ratings/") +@requires_basic_auth_if_no_ano +def feed_ratings(book_id): + off = request.args.get("offset") or 0 + entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0, + db.Books, + db.Books.ratings.any(db.Ratings.id == book_id), + [db.Books.timestamp.desc()]) + return render_xml_template('feed.xml', entries=entries, pagination=pagination) + + +@opds.route("/opds/formats") +@requires_basic_auth_if_no_ano +def feed_formatindex(): + off = request.args.get("offset") or 0 + entries = calibre_db.session.query(db.Data).join(db.Books)\ + .filter(calibre_db.common_filters()) \ + .group_by(db.Data.format)\ + .order_by(db.Data.format).all() + pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, + len(entries)) + + element = list() + for entry in entries: + element.append(FeedObject(entry.format, entry.format)) + return render_xml_template('feed.xml', listelements=element, folder='opds.feed_format', pagination=pagination) + + +@opds.route("/opds/formats/") +@requires_basic_auth_if_no_ano +def feed_format(book_id): + off = request.args.get("offset") or 0 + entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0, + db.Books, + db.Books.data.any(db.Data.format == book_id.upper()), + [db.Books.timestamp.desc()]) + return render_xml_template('feed.xml', entries=entries, pagination=pagination) + + +@opds.route("/opds/language") +@opds.route("/opds/language/") +@requires_basic_auth_if_no_ano +def feed_languagesindex(): + off = request.args.get("offset") or 0 + if current_user.filter_language() == u"all": + languages = calibre_db.speaking_language() else: - shelf = g.user.shelf - number = shelf.count() + try: + cur_l = LC.parse(current_user.filter_language()) + except UnknownLocaleError: + cur_l = None + languages = calibre_db.session.query(db.Languages).filter( + db.Languages.lang_code == current_user.filter_language()).all() + if cur_l: + languages[0].name = cur_l.get_language_name(get_locale()) + else: + languages[0].name = _(isoLanguages.get(part3=languages[0].lang_code).name) + pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, + len(languages)) + return render_xml_template('feed.xml', listelements=languages, folder='opds.feed_languages', pagination=pagination) + + +@opds.route("/opds/language/") +@requires_basic_auth_if_no_ano +def feed_languages(book_id): + off = request.args.get("offset") or 0 + entries, __, pagination = calibre_db.fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), 0, + db.Books, + db.Books.languages.any(db.Languages.id == book_id), + [db.Books.timestamp.desc()]) + return render_xml_template('feed.xml', entries=entries, pagination=pagination) + + +@opds.route("/opds/shelfindex") +@requires_basic_auth_if_no_ano +def feed_shelfindex(): + off = request.args.get("offset") or 0 + shelf = g.shelves_access + number = len(shelf) pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, number) return render_xml_template('feed.xml', listelements=shelf, folder='opds.feed_shelf', pagination=pagination) @@ -235,7 +361,8 @@ def feed_shelfindex(public): def feed_shelf(book_id): off = request.args.get("offset") or 0 if current_user.is_anonymous: - shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, ub.Shelf.id == book_id).first() + shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, + ub.Shelf.id == book_id).first() else: shelf = ub.session.query(ub.Shelf).filter(or_(and_(ub.Shelf.user_id == int(current_user.id), ub.Shelf.id == book_id), @@ -247,25 +374,34 @@ def feed_shelf(book_id): books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == book_id).order_by( ub.BookShelf.order.asc()).all() for book in books_in_shelf: - cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first() + cur_book = calibre_db.get_book(book.book_id) result.append(cur_book) - pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, - len(result)) - return render_xml_template('feed.xml', entries=result, pagination=pagination) + pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, + len(result)) + return render_xml_template('feed.xml', entries=result, pagination=pagination) @opds.route("/opds/download///") @requires_basic_auth_if_no_ano -@download_required def opds_download_link(book_id, book_format): - return get_download_link(book_id,book_format) + # I gave up with this: With enabled ldap login, the user doesn't get logged in, therefore it's always guest + # workaround, loading the user from the request and checking it's download rights here + # in case of anonymous browsing user is None + user = load_user_from_request(request) or current_user + if not user.role_download(): + return abort(403) + if "Kobo" in request.headers.get('User-Agent'): + client = "kobo" + else: + client = "" + return get_download_link(book_id, book_format.lower(), client) @opds.route("/ajax/book//") -@opds.route("/ajax/book/") +@opds.route("/ajax/book/", defaults={'library': ""}) @requires_basic_auth_if_no_ano def get_metadata_calibre_companion(uuid, library): - entry = db.session.query(db.Books).filter(db.Books.uuid.like("%" + uuid + "%")).first() + entry = calibre_db.session.query(db.Books).filter(db.Books.uuid.like("%" + uuid + "%")).first() if entry is not None: js = render_template('json.txt', entry=entry) response = make_response(js) @@ -277,17 +413,20 @@ def get_metadata_calibre_companion(uuid, library): def feed_search(term): if term: - term = term.strip().lower() - entries = get_search_results( term) + entries, __, ___ = calibre_db.get_search_results(term) entriescount = len(entries) if len(entries) > 0 else 1 pagination = Pagination(1, entriescount, entriescount) return render_xml_template('feed.xml', searchterm=term, entries=entries, pagination=pagination) else: return render_xml_template('feed.xml', searchterm="") + def check_auth(username, password): if sys.version_info.major == 3: - username=username.encode('windows-1252') + try: + username = username.encode('windows-1252') + except UnicodeEncodeError: + username = username.encode('utf-8') user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) == username.decode('utf-8').lower()).first() return bool(user and check_password_hash(str(user.password), password)) @@ -301,13 +440,14 @@ def authenticate(): def render_xml_template(*args, **kwargs): - #ToDo: return time in current timezone similar to %z + # ToDo: return time in current timezone similar to %z currtime = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S+00:00") xml = render_template(current_time=currtime, instance=config.config_calibre_web_title, *args, **kwargs) response = make_response(xml) response.headers["Content-Type"] = "application/atom+xml; charset=utf-8" return response + @opds.route("/opds/thumb_240_240/") @opds.route("/opds/cover_240_240/") @opds.route("/opds/cover_90_90/") @@ -316,15 +456,18 @@ def render_xml_template(*args, **kwargs): def feed_get_cover(book_id): return get_book_cover(book_id) -@opds.route("/opds/readbooks/") + +@opds.route("/opds/readbooks") @requires_basic_auth_if_no_ano def feed_read_books(): off = request.args.get("offset") or 0 - return render_read_books(int(off) / (int(config.config_books_per_page)) + 1, True, True) + result, pagination = render_read_books(int(off) / (int(config.config_books_per_page)) + 1, True, True) + return render_xml_template('feed.xml', entries=result, pagination=pagination) -@opds.route("/opds/unreadbooks/") +@opds.route("/opds/unreadbooks") @requires_basic_auth_if_no_ano def feed_unread_books(): off = request.args.get("offset") or 0 - return render_read_books(int(off) / (int(config.config_books_per_page)) + 1, False, True) + result, pagination = render_read_books(int(off) / (int(config.config_books_per_page)) + 1, False, True) + return render_xml_template('feed.xml', entries=result, pagination=pagination) diff --git a/cps/pagination.py b/cps/pagination.py index 0a138a647..c29717c29 100644 --- a/cps/pagination.py +++ b/cps/pagination.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) diff --git a/cps/redirect.py b/cps/redirect.py index 324c4b203..593afd0c8 100644 --- a/cps/redirect.py +++ b/cps/redirect.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # Flask License diff --git a/cps/reverseproxy.py b/cps/reverseproxy.py index 25bbe77bb..3bcbd3b74 100644 --- a/cps/reverseproxy.py +++ b/cps/reverseproxy.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # Flask License @@ -60,10 +59,13 @@ class ReverseProxied(object): def __init__(self, application): self.app = application + self.proxied = False def __call__(self, environ, start_response): + self.proxied = False script_name = environ.get('HTTP_X_SCRIPT_NAME', '') if script_name: + self.proxied = True environ['SCRIPT_NAME'] = script_name path_info = environ.get('PATH_INFO', '') if path_info and path_info.startswith(script_name): @@ -75,4 +77,9 @@ class ReverseProxied(object): servr = environ.get('HTTP_X_FORWARDED_HOST', '') if servr: environ['HTTP_HOST'] = servr + self.proxied = True return self.app(environ, start_response) + + @property + def is_proxied(self): + return self.proxied diff --git a/cps/server.py b/cps/server.py index 43792ecdc..b2d9c1b00 100644 --- a/cps/server.py +++ b/cps/server.py @@ -27,6 +27,8 @@ try: from gevent.pywsgi import WSGIServer from gevent.pool import Pool from gevent import __version__ as _version + from greenlet import GreenletExit + import ssl VERSION = 'Gevent ' + _version _GEVENT = True except ImportError: @@ -43,7 +45,6 @@ from . import logger log = logger.create() - def _readable_listen_address(address, port): if ':' in address: address = "[" + address + "]" @@ -73,7 +74,11 @@ class WebServer(object): if config.config_access_log: log_name = "gevent.access" if _GEVENT else "tornado.access" formatter = logger.ACCESS_FORMATTER_GEVENT if _GEVENT else logger.ACCESS_FORMATTER_TORNADO - self.access_logger = logger.create_access_log(config.config_access_logfile, log_name, formatter) + self.access_logger, logfile = logger.create_access_log(config.config_access_logfile, log_name, formatter) + if logfile != config.config_access_logfile: + log.warning("Accesslog path %s not valid, falling back to default", config.config_access_logfile) + config.config_access_logfile = logfile + config.save() else: if not _GEVENT: logger.get('tornado.access').disabled = True @@ -84,7 +89,8 @@ class WebServer(object): if os.path.isfile(certfile_path) and os.path.isfile(keyfile_path): self.ssl_args = dict(certfile=certfile_path, keyfile=keyfile_path) else: - log.warning('The specified paths for the ssl certificate file and/or key file seem to be broken. Ignoring ssl.') + log.warning('The specified paths for the ssl certificate file and/or key file seem to be broken. ' + 'Ignoring ssl.') log.warning('Cert path: %s', certfile_path) log.warning('Key path: %s', keyfile_path) @@ -139,6 +145,16 @@ class WebServer(object): output = _readable_listen_address(self.listen_address, self.listen_port) log.info('Starting Gevent server on %s', output) self.wsgiserver = WSGIServer(sock, self.app, log=self.access_logger, spawn=Pool(), **ssl_args) + if ssl_args: + wrap_socket = self.wsgiserver.wrap_socket + def my_wrap_socket(*args, **kwargs): + try: + return wrap_socket(*args, **kwargs) + except (ssl.SSLError, OSError) as ex: + log.warning('Gevent SSL Error: %s', ex) + raise GreenletExit + + self.wsgiserver.wrap_socket = my_wrap_socket self.wsgiserver.serve_forever() finally: if self.unix_socket_file: @@ -146,7 +162,7 @@ class WebServer(object): self.unix_socket_file = None def _start_tornado(self): - if os.name == 'nt': + if os.name == 'nt' and sys.version_info > (3, 7): import asyncio asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) log.info('Starting Tornado server on %s', _readable_listen_address(self.listen_address, self.listen_port)) @@ -156,7 +172,7 @@ class WebServer(object): max_buffer_size=209700000, ssl_options=self.ssl_args) http_server.listen(self.listen_port, self.listen_address) - self.wsgiserver = IOLoop.instance() + self.wsgiserver = IOLoop.current() self.wsgiserver.start() # wait for stop signal self.wsgiserver.close(True) @@ -171,12 +187,15 @@ class WebServer(object): except Exception as ex: log.error("Error starting server: %s", ex) print("Error starting server: %s" % ex) + self.stop() return False finally: self.wsgiserver = None if not self.restart: log.info("Performing shutdown of Calibre-Web") + # prevent irritiating log of pending tasks message from asyncio + logger.get('asyncio').setLevel(logger.logging.CRITICAL) return True log.info("Performing restart of Calibre-Web") @@ -187,14 +206,17 @@ class WebServer(object): os.execv(sys.executable, arguments) return True - def _killServer(self, ignored_signum, ignored_frame): + def _killServer(self, __, ___): self.stop() def stop(self, restart=False): + from . import updater_thread + updater_thread.stop() + log.info("webserver stop (restart=%s)", restart) self.restart = restart if self.wsgiserver: if _GEVENT: self.wsgiserver.close() else: - self.wsgiserver.add_callback(self.wsgiserver.stop) + self.wsgiserver.add_callback_from_signal(self.wsgiserver.stop) diff --git a/cps/services/SyncToken.py b/cps/services/SyncToken.py new file mode 100644 index 000000000..f6db960b7 --- /dev/null +++ b/cps/services/SyncToken.py @@ -0,0 +1,176 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) +# Copyright (C) 2018-2019 shavitmichael, OzzieIsaacs +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +from base64 import b64decode, b64encode +from jsonschema import validate, exceptions, __version__ +from datetime import datetime +try: + from urllib import unquote +except ImportError: + from urllib.parse import unquote + +from flask import json +from .. import logger + + +log = logger.create() + + +def b64encode_json(json_data): + if sys.version_info < (3, 0): + return b64encode(json.dumps(json_data)) + else: + return b64encode(json.dumps(json_data).encode()) + + +# Python3 has a timestamp() method we could be calling, however it's not avaiable in python2. +def to_epoch_timestamp(datetime_object): + return (datetime_object - datetime(1970, 1, 1)).total_seconds() + + +def get_datetime_from_json(json_object, field_name): + try: + return datetime.utcfromtimestamp(json_object[field_name]) + except (KeyError, OSError, OverflowError): + # OSError is thrown on Windows if timestamp is <1970 or >2038 + return datetime.min + + +class SyncToken: + """ The SyncToken is used to persist state accross requests. + When serialized over the response headers, the Kobo device will propagate the token onto following + requests to the service. As an example use-case, the SyncToken is used to detect books that have been added + to the library since the last time the device synced to the server. + + Attributes: + books_last_created: Datetime representing the newest book that the device knows about. + books_last_modified: Datetime representing the last modified book that the device knows about. + """ + + SYNC_TOKEN_HEADER = "x-kobo-synctoken" + VERSION = "1-1-0" + LAST_MODIFIED_ADDED_VERSION = "1-1-0" + MIN_VERSION = "1-0-0" + + token_schema = { + "type": "object", + "properties": {"version": {"type": "string"}, "data": {"type": "object"}, }, + } + # This Schema doesn't contain enough information to detect and propagate book deletions from Calibre to the device. + # A potential solution might be to keep a list of all known book uuids in the token, and look for any missing + # from the db. + data_schema_v1 = { + "type": "object", + "properties": { + "raw_kobo_store_token": {"type": "string"}, + "books_last_modified": {"type": "string"}, + "books_last_created": {"type": "string"}, + "archive_last_modified": {"type": "string"}, + "reading_state_last_modified": {"type": "string"}, + "tags_last_modified": {"type": "string"}, + }, + } + + def __init__( + self, + raw_kobo_store_token="", + books_last_created=datetime.min, + books_last_modified=datetime.min, + archive_last_modified=datetime.min, + reading_state_last_modified=datetime.min, + tags_last_modified=datetime.min, + ): + self.raw_kobo_store_token = raw_kobo_store_token + self.books_last_created = books_last_created + self.books_last_modified = books_last_modified + self.archive_last_modified = archive_last_modified + self.reading_state_last_modified = reading_state_last_modified + self.tags_last_modified = tags_last_modified + + @staticmethod + def from_headers(headers): + sync_token_header = headers.get(SyncToken.SYNC_TOKEN_HEADER, "") + if sync_token_header == "": + return SyncToken() + + # On the first sync from a Kobo device, we may receive the SyncToken + # from the official Kobo store. Without digging too deep into it, that + # token is of the form [b64encoded blob].[b64encoded blob 2] + if "." in sync_token_header: + return SyncToken(raw_kobo_store_token=sync_token_header) + + try: + sync_token_json = json.loads( + b64decode(sync_token_header + "=" * (-len(sync_token_header) % 4)) + ) + validate(sync_token_json, SyncToken.token_schema) + if sync_token_json["version"] < SyncToken.MIN_VERSION: + raise ValueError + + data_json = sync_token_json["data"] + validate(sync_token_json, SyncToken.data_schema_v1) + except (exceptions.ValidationError, ValueError): + log.error("Sync token contents do not follow the expected json schema.") + return SyncToken() + + raw_kobo_store_token = data_json["raw_kobo_store_token"] + try: + books_last_modified = get_datetime_from_json(data_json, "books_last_modified") + books_last_created = get_datetime_from_json(data_json, "books_last_created") + archive_last_modified = get_datetime_from_json(data_json, "archive_last_modified") + reading_state_last_modified = get_datetime_from_json(data_json, "reading_state_last_modified") + tags_last_modified = get_datetime_from_json(data_json, "tags_last_modified") + except TypeError: + log.error("SyncToken timestamps don't parse to a datetime.") + return SyncToken(raw_kobo_store_token=raw_kobo_store_token) + + return SyncToken( + raw_kobo_store_token=raw_kobo_store_token, + books_last_created=books_last_created, + books_last_modified=books_last_modified, + archive_last_modified=archive_last_modified, + reading_state_last_modified=reading_state_last_modified, + tags_last_modified=tags_last_modified + ) + + def set_kobo_store_header(self, store_headers): + store_headers.set(SyncToken.SYNC_TOKEN_HEADER, self.raw_kobo_store_token) + + def merge_from_store_response(self, store_response): + self.raw_kobo_store_token = store_response.headers.get( + SyncToken.SYNC_TOKEN_HEADER, "" + ) + + def to_headers(self, headers): + headers[SyncToken.SYNC_TOKEN_HEADER] = self.build_sync_token() + + def build_sync_token(self): + token = { + "version": SyncToken.VERSION, + "data": { + "raw_kobo_store_token": self.raw_kobo_store_token, + "books_last_modified": to_epoch_timestamp(self.books_last_modified), + "books_last_created": to_epoch_timestamp(self.books_last_created), + "archive_last_modified": to_epoch_timestamp(self.archive_last_modified), + "reading_state_last_modified": to_epoch_timestamp(self.reading_state_last_modified), + "tags_last_modified": to_epoch_timestamp(self.tags_last_modified) + }, + } + return b64encode_json(token) diff --git a/cps/services/__init__.py b/cps/services/__init__.py index d468d0b76..17f1f5297 100644 --- a/cps/services/__init__.py +++ b/cps/services/__init__.py @@ -26,13 +26,22 @@ log = logger.create() try: from . import goodreads_support except ImportError as err: - log.debug("cannot import goodreads, showing authors-metadata will not work: %s", err) + log.debug("Cannot import goodreads, showing authors-metadata will not work: %s", err) goodreads_support = None -try: from . import simpleldap as ldap +try: + from . import simpleldap as ldap + from .simpleldap import ldapVersion except ImportError as err: - log.debug("cannot import simpleldap, logging in with ldap will not work: %s", err) + log.debug("Cannot import simpleldap, logging in with ldap will not work: %s", err) ldap = None + ldapVersion = None - +try: + from . import SyncToken as SyncToken + kobo = True +except ImportError as err: + log.debug("Cannot import SyncToken, syncing books with Kobo Devices will not work: %s", err) + kobo = None + SyncToken = None diff --git a/cps/services/goodreads_support.py b/cps/services/goodreads_support.py index 55161c7a4..9312bc0fe 100644 --- a/cps/services/goodreads_support.py +++ b/cps/services/goodreads_support.py @@ -20,7 +20,10 @@ from __future__ import division, print_function, unicode_literals import time from functools import reduce -from goodreads.client import GoodreadsClient +try: + from goodreads.client import GoodreadsClient +except ImportError: + from betterreads.client import GoodreadsClient try: import Levenshtein except ImportError: Levenshtein = False @@ -69,7 +72,7 @@ def get_author_info(author_name): author_info = _client.find_author(author_name=author_name) except Exception as ex: # Skip goodreads, if site is down/inaccessible - log.warning('Goodreads website is down/inaccessible? %s', ex) + log.warning('Goodreads website is down/inaccessible? %s', ex.__str__()) return if author_info: @@ -95,8 +98,12 @@ def get_other_books(author_info, library_books=None): for book in author_info.books: if book.isbn in identifiers: continue - if book.gid["#text"] in identifiers: - continue + if isinstance(book.gid, int): + if book.gid in identifiers: + continue + else: + if book.gid["#text"] in identifiers: + continue if Levenshtein and library_titles: goodreads_title = book._book_dict['title_without_series'] diff --git a/cps/services/simpleldap.py b/cps/services/simpleldap.py index 42a9aacd8..4125bdabf 100644 --- a/cps/services/simpleldap.py +++ b/cps/services/simpleldap.py @@ -20,9 +20,13 @@ from __future__ import division, print_function, unicode_literals import base64 from flask_simpleldap import LDAP, LDAPException - +from flask_simpleldap import ldap as pyLDAP from .. import constants, logger +try: + from ldap.pkginfo import __version__ as ldapVersion +except ImportError: + pass log = logger.create() _ldap = LDAP() @@ -34,44 +38,91 @@ def init_app(app, config): app.config['LDAP_HOST'] = config.config_ldap_provider_url app.config['LDAP_PORT'] = config.config_ldap_port - app.config['LDAP_SCHEMA'] = config.config_ldap_schema - app.config['LDAP_USERNAME'] = config.config_ldap_user_object.replace('%s', config.config_ldap_serv_username)\ - + ',' + config.config_ldap_dn - app.config['LDAP_PASSWORD'] = base64.b64decode(config.config_ldap_serv_password) - app.config['LDAP_REQUIRE_CERT'] = bool(config.config_ldap_require_cert) - if config.config_ldap_require_cert: - app.config['LDAP_CERT_PATH'] = config.config_ldap_cert_path + app.config['LDAP_CUSTOM_OPTIONS'] = {pyLDAP.OPT_REFERRALS: 0} + if config.config_ldap_encryption == 2: + app.config['LDAP_SCHEMA'] = 'ldaps' + else: + app.config['LDAP_SCHEMA'] = 'ldap' + if config.config_ldap_authentication > constants.LDAP_AUTH_ANONYMOUS: + if config.config_ldap_authentication > constants.LDAP_AUTH_UNAUTHENTICATE: + if config.config_ldap_serv_password is None: + config.config_ldap_serv_password = '' + app.config['LDAP_PASSWORD'] = base64.b64decode(config.config_ldap_serv_password) + else: + app.config['LDAP_PASSWORD'] = base64.b64decode("") + app.config['LDAP_USERNAME'] = config.config_ldap_serv_username + else: + app.config['LDAP_USERNAME'] = "" + app.config['LDAP_PASSWORD'] = base64.b64decode("") + if bool(config.config_ldap_cert_path): + app.config['LDAP_CUSTOM_OPTIONS'].update({ + pyLDAP.OPT_X_TLS_REQUIRE_CERT: pyLDAP.OPT_X_TLS_DEMAND, + pyLDAP.OPT_X_TLS_CACERTFILE: config.config_ldap_cacert_path, + pyLDAP.OPT_X_TLS_CERTFILE: config.config_ldap_cert_path, + pyLDAP.OPT_X_TLS_KEYFILE: config.config_ldap_key_path, + pyLDAP.OPT_X_TLS_NEWCTX: 0 + }) + app.config['LDAP_BASE_DN'] = config.config_ldap_dn app.config['LDAP_USER_OBJECT_FILTER'] = config.config_ldap_user_object - app.config['LDAP_USE_SSL'] = bool(config.config_ldap_use_ssl) - app.config['LDAP_USE_TLS'] = bool(config.config_ldap_use_tls) + + app.config['LDAP_USE_TLS'] = bool(config.config_ldap_encryption == 1) + app.config['LDAP_USE_SSL'] = bool(config.config_ldap_encryption == 2) app.config['LDAP_OPENLDAP'] = bool(config.config_ldap_openldap) + app.config['LDAP_GROUP_OBJECT_FILTER'] = config.config_ldap_group_object_filter + app.config['LDAP_GROUP_MEMBERS_FIELD'] = config.config_ldap_group_members_field - _ldap.init_app(app) + try: + _ldap.init_app(app) + except ValueError: + if bool(config.config_ldap_cert_path): + app.config['LDAP_CUSTOM_OPTIONS'].pop(pyLDAP.OPT_X_TLS_NEWCTX) + try: + _ldap.init_app(app) + except RuntimeError as e: + log.error(e) + except RuntimeError as e: + log.error(e) +def get_object_details(user=None,query_filter=None): + return _ldap.get_object_details(user, query_filter=query_filter) + + +def bind(): + return _ldap.bind() + + +def get_group_members(group): + return _ldap.get_group_members(group) + def basic_auth_required(func): return _ldap.basic_auth_required(func) def bind_user(username, password): - # ulf= _ldap.get_object_details('admin') '''Attempts a LDAP login. :returns: True if login succeeded, False if login failed, None if server unavailable. ''' try: - result = _ldap.bind_user(username, password) - log.debug("LDAP login '%s': %r", username, result) - return result is not None + if _ldap.get_object_details(username): + result = _ldap.bind_user(username, password) + log.debug("LDAP login '%s': %r", username, result) + return result is not None, None + return None, None # User not found + except (TypeError, AttributeError, KeyError) as ex: + error = ("LDAP bind_user: %s" % ex) + return None, error except LDAPException as ex: if ex.message == 'Invalid credentials': - log.info("LDAP login '%s' failed: %s", username, ex) - return False + error = "LDAP admin login failed" + return None, error if ex.message == "Can't contact LDAP server": - log.warning('LDAP Server down: %s', ex) - return None + # log.warning('LDAP Server down: %s', ex) + error = ('LDAP Server down: %s' % ex) + return None, error else: - log.warning('LDAP Server error: %s', ex.message) - return None + error = ('LDAP Server error: %s' % ex.message) + return None, error diff --git a/cps/services/worker.py b/cps/services/worker.py new file mode 100644 index 000000000..c2ea594cb --- /dev/null +++ b/cps/services/worker.py @@ -0,0 +1,220 @@ + +from __future__ import division, print_function, unicode_literals +import threading +import abc +import uuid +import time + +try: + import queue +except ImportError: + import Queue as queue +from datetime import datetime +from collections import namedtuple + +from cps import logger + +log = logger.create() + +# task 'status' consts +STAT_WAITING = 0 +STAT_FAIL = 1 +STAT_STARTED = 2 +STAT_FINISH_SUCCESS = 3 + +# Only retain this many tasks in dequeued list +TASK_CLEANUP_TRIGGER = 20 + +QueuedTask = namedtuple('QueuedTask', 'num, user, added, task') + + +def _get_main_thread(): + for t in threading.enumerate(): + if t.__class__.__name__ == '_MainThread': + return t + raise Exception("main thread not found?!") + + + +class ImprovedQueue(queue.Queue): + def to_list(self): + """ + Returns a copy of all items in the queue without removing them. + """ + + with self.mutex: + return list(self.queue) + +#Class for all worker tasks in the background +class WorkerThread(threading.Thread): + _instance = None + + @classmethod + def getInstance(cls): + if cls._instance is None: + cls._instance = WorkerThread() + return cls._instance + + def __init__(self): + threading.Thread.__init__(self) + + self.dequeued = list() + + self.doLock = threading.Lock() + self.queue = ImprovedQueue() + self.num = 0 + self.start() + + @classmethod + def add(cls, user, task): + ins = cls.getInstance() + ins.num += 1 + ins.queue.put(QueuedTask( + num=ins.num, + user=user, + added=datetime.now(), + task=task, + )) + + @property + def tasks(self): + with self.doLock: + tasks = self.queue.to_list() + self.dequeued + return sorted(tasks, key=lambda x: x.num) + + def cleanup_tasks(self): + with self.doLock: + dead = [] + alive = [] + for x in self.dequeued: + (dead if x.task.dead else alive).append(x) + + # if the ones that we need to keep are within the trigger, do nothing else + delta = len(self.dequeued) - len(dead) + if delta > TASK_CLEANUP_TRIGGER: + ret = alive + else: + # otherwise, lop off the oldest dead tasks until we hit the target trigger + ret = sorted(dead, key=lambda x: x.task.end_time)[-TASK_CLEANUP_TRIGGER:] + alive + + self.dequeued = sorted(ret, key=lambda x: x.num) + + # Main thread loop starting the different tasks + def run(self): + main_thread = _get_main_thread() + while main_thread.is_alive(): + try: + # this blocks until something is available. This can cause issues when the main thread dies - this + # thread will remain alive. We implement a timeout to unblock every second which allows us to check if + # the main thread is still alive. + # We don't use a daemon here because we don't want the tasks to just be abruptly halted, leading to + # possible file / database corruption + item = self.queue.get(timeout=1) + except queue.Empty as ex: + time.sleep(1) + continue + + with self.doLock: + # add to list so that in-progress tasks show up + self.dequeued.append(item) + + # once we hit our trigger, start cleaning up dead tasks + if len(self.dequeued) > TASK_CLEANUP_TRIGGER: + self.cleanup_tasks() + + # sometimes tasks (like Upload) don't actually have work to do and are created as already finished + if item.task.stat is STAT_WAITING: + # CalibreTask.start() should wrap all exceptions in it's own error handling + item.task.start(self) + + self.queue.task_done() + + +class CalibreTask: + __metaclass__ = abc.ABCMeta + + def __init__(self, message): + self._progress = 0 + self.stat = STAT_WAITING + self.error = None + self.start_time = None + self.end_time = None + self.message = message + self.id = uuid.uuid4() + + @abc.abstractmethod + def run(self, worker_thread): + """Provides the caller some human-readable name for this class""" + raise NotImplementedError + + @abc.abstractmethod + def name(self): + """Provides the caller some human-readable name for this class""" + raise NotImplementedError + + def start(self, *args): + self.start_time = datetime.now() + self.stat = STAT_STARTED + + # catch any unhandled exceptions in a task and automatically fail it + try: + self.run(*args) + except Exception as e: + self._handleError(str(e)) + log.exception(e) + + self.end_time = datetime.now() + + @property + def stat(self): + return self._stat + + @stat.setter + def stat(self, x): + self._stat = x + + @property + def progress(self): + return self._progress + + @progress.setter + def progress(self, x): + if not 0 <= x <= 1: + raise ValueError("Task progress should within [0, 1] range") + self._progress = x + + @property + def error(self): + return self._error + + @error.setter + def error(self, x): + self._error = x + + @property + def runtime(self): + return (self.end_time or datetime.now()) - self.start_time + + @property + def dead(self): + """Determines whether or not this task can be garbage collected + + We have a separate dictating this because there may be certain tasks that want to override this + """ + # By default, we're good to clean a task if it's "Done" + return self.stat in (STAT_FINISH_SUCCESS, STAT_FAIL) + + @progress.setter + def progress(self, x): + # todo: throw error if outside of [0,1] + self._progress = x + + def _handleError(self, error_message): + log.exception(error_message) + self.stat = STAT_FAIL + self.progress = 1 + self.error = error_message + + def _handleSuccess(self): + self.stat = STAT_FINISH_SUCCESS + self.progress = 1 diff --git a/cps/shelf.py b/cps/shelf.py index 0440a87b9..ea7f1eeb5 100644 --- a/cps/shelf.py +++ b/cps/shelf.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) @@ -22,51 +21,65 @@ # along with this program. If not, see . from __future__ import division, print_function, unicode_literals +from datetime import datetime from flask import Blueprint, request, flash, redirect, url_for from flask_babel import gettext as _ from flask_login import login_required, current_user -from sqlalchemy.sql.expression import func, or_, and_ +from sqlalchemy.sql.expression import func +from sqlalchemy.exc import OperationalError, InvalidRequestError -from . import logger, ub, searched_ids, db -from .web import render_title_template +from . import logger, ub, calibre_db +from .web import login_required_if_no_ano, render_title_template shelf = Blueprint('shelf', __name__) log = logger.create() +def check_shelf_edit_permissions(cur_shelf): + if not cur_shelf.is_public and not cur_shelf.user_id == int(current_user.id): + log.error("User %s not allowed to edit shelf %s", current_user, cur_shelf) + return False + if cur_shelf.is_public and not current_user.role_edit_shelfs(): + log.info("User %s not allowed to edit public shelves", current_user) + return False + return True + + +def check_shelf_view_permissions(cur_shelf): + if cur_shelf.is_public: + return True + if current_user.is_anonymous or cur_shelf.user_id != current_user.id: + log.error("User is unauthorized to view non-public shelf: %s", cur_shelf) + return False + return True + + @shelf.route("/shelf/add//") @login_required def add_to_shelf(shelf_id, book_id): + xhr = request.headers.get('X-Requested-With') == 'XMLHttpRequest' shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first() if shelf is None: log.error("Invalid shelf specified: %s", shelf_id) - if not request.is_xhr: + if not xhr: flash(_(u"Invalid shelf specified"), category="error") return redirect(url_for('web.index')) return "Invalid shelf specified", 400 - if not shelf.is_public and not shelf.user_id == int(current_user.id): - log.error("User %s not allowed to add a book to %s", current_user, shelf) - if not request.is_xhr: + if not check_shelf_edit_permissions(shelf): + if not xhr: flash(_(u"Sorry you are not allowed to add a book to the the shelf: %(shelfname)s", shelfname=shelf.name), category="error") return redirect(url_for('web.index')) return "Sorry you are not allowed to add a book to the the shelf: %s" % shelf.name, 403 - if shelf.is_public and not current_user.role_edit_shelfs(): - log.info("User %s not allowed to edit public shelves", current_user) - if not request.is_xhr: - flash(_(u"You are not allowed to edit public shelves"), category="error") - return redirect(url_for('web.index')) - return "User is not allowed to edit public shelves", 403 - book_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id, - ub.BookShelf.book_id == book_id).first() + ub.BookShelf.book_id == book_id).first() if book_in_shelf: log.error("Book %s is already part of %s", book_id, shelf) - if not request.is_xhr: + if not xhr: flash(_(u"Book is already part of the shelf: %(shelfname)s", shelfname=shelf.name), category="error") return redirect(url_for('web.index')) return "Book is already part of the shelf: %s" % shelf.name, 400 @@ -77,10 +90,19 @@ def add_to_shelf(shelf_id, book_id): else: maxOrder = maxOrder[0] - ins = ub.BookShelf(shelf=shelf.id, book_id=book_id, order=maxOrder + 1) - ub.session.add(ins) - ub.session.commit() - if not request.is_xhr: + shelf.books.append(ub.BookShelf(shelf=shelf.id, book_id=book_id, order=maxOrder + 1)) + shelf.last_modified = datetime.utcnow() + try: + ub.session.merge(shelf) + ub.session.commit() + except (OperationalError, InvalidRequestError): + ub.session.rollback() + flash(_(u"Settings DB is not Writeable"), category="error") + if "HTTP_REFERER" in request.environ: + return redirect(request.environ["HTTP_REFERER"]) + else: + return redirect(url_for('web.index')) + if not xhr: flash(_(u"Book has been added to shelf: %(sname)s", sname=shelf.name), category="success") if "HTTP_REFERER" in request.environ: return redirect(request.environ["HTTP_REFERER"]) @@ -98,28 +120,22 @@ def search_to_shelf(shelf_id): flash(_(u"Invalid shelf specified"), category="error") return redirect(url_for('web.index')) - if not shelf.is_public and not shelf.user_id == int(current_user.id): - log.error("User %s not allowed to add a book to %s", current_user, shelf) + if not check_shelf_edit_permissions(shelf): flash(_(u"You are not allowed to add a book to the the shelf: %(name)s", name=shelf.name), category="error") return redirect(url_for('web.index')) - if shelf.is_public and not current_user.role_edit_shelfs(): - log.error("User %s not allowed to edit public shelves", current_user) - flash(_(u"User is not allowed to edit public shelves"), category="error") - return redirect(url_for('web.index')) - - if current_user.id in searched_ids and searched_ids[current_user.id]: + if current_user.id in ub.searched_ids and ub.searched_ids[current_user.id]: books_for_shelf = list() books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id).all() if books_in_shelf: book_ids = list() for book_id in books_in_shelf: book_ids.append(book_id.book_id) - for searchid in searched_ids[current_user.id]: + for searchid in ub.searched_ids[current_user.id]: if searchid not in book_ids: books_for_shelf.append(searchid) else: - books_for_shelf = searched_ids[current_user.id] + books_for_shelf = ub.searched_ids[current_user.id] if not books_for_shelf: log.error("Books are already part of %s", shelf) @@ -134,10 +150,15 @@ def search_to_shelf(shelf_id): for book in books_for_shelf: maxOrder = maxOrder + 1 - ins = ub.BookShelf(shelf=shelf.id, book_id=book, order=maxOrder) - ub.session.add(ins) - ub.session.commit() - flash(_(u"Books have been added to shelf: %(sname)s", sname=shelf.name), category="success") + shelf.books.append(ub.BookShelf(shelf=shelf.id, book_id=book, order=maxOrder)) + shelf.last_modified = datetime.utcnow() + try: + ub.session.merge(shelf) + ub.session.commit() + flash(_(u"Books have been added to shelf: %(sname)s", sname=shelf.name), category="success") + except (OperationalError, InvalidRequestError): + ub.session.rollback() + flash(_(u"Settings DB is not Writeable"), category="error") else: flash(_(u"Could not add books to shelf: %(sname)s", sname=shelf.name), category="error") return redirect(url_for('web.index')) @@ -146,10 +167,11 @@ def search_to_shelf(shelf_id): @shelf.route("/shelf/remove//") @login_required def remove_from_shelf(shelf_id, book_id): + xhr = request.headers.get('X-Requested-With') == 'XMLHttpRequest' shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first() if shelf is None: log.error("Invalid shelf specified: %s", shelf_id) - if not request.is_xhr: + if not xhr: return redirect(url_for('web.index')) return "Invalid shelf specified", 400 @@ -161,34 +183,42 @@ def remove_from_shelf(shelf_id, book_id): # true 0 x 1 # false 0 x 0 - if (not shelf.is_public and shelf.user_id == int(current_user.id)) \ - or (shelf.is_public and current_user.role_edit_shelfs()): + if check_shelf_edit_permissions(shelf): book_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id, ub.BookShelf.book_id == book_id).first() if book_shelf is None: log.error("Book %s already removed from %s", book_id, shelf) - if not request.is_xhr: + if not xhr: return redirect(url_for('web.index')) return "Book already removed from shelf", 410 - ub.session.delete(book_shelf) - ub.session.commit() - - if not request.is_xhr: + try: + ub.session.delete(book_shelf) + shelf.last_modified = datetime.utcnow() + ub.session.commit() + except (OperationalError, InvalidRequestError): + ub.session.rollback() + flash(_(u"Settings DB is not Writeable"), category="error") + if "HTTP_REFERER" in request.environ: + return redirect(request.environ["HTTP_REFERER"]) + else: + return redirect(url_for('web.index')) + if not xhr: flash(_(u"Book has been removed from shelf: %(sname)s", sname=shelf.name), category="success") - return redirect(request.environ["HTTP_REFERER"]) + if "HTTP_REFERER" in request.environ: + return redirect(request.environ["HTTP_REFERER"]) + else: + return redirect(url_for('web.index')) return "", 204 else: - log.error("User %s not allowed to remove a book from %s", current_user, shelf) - if not request.is_xhr: + if not xhr: flash(_(u"Sorry you are not allowed to remove a book from this shelf: %(sname)s", sname=shelf.name), category="error") return redirect(url_for('web.index')) return "Sorry you are not allowed to remove a book from this shelf: %s" % shelf.name, 403 - @shelf.route("/shelf/create", methods=["GET", "POST"]) @login_required def create_shelf(): @@ -199,21 +229,41 @@ def create_shelf(): shelf.is_public = 1 shelf.name = to_save["title"] shelf.user_id = int(current_user.id) - existing_shelf = ub.session.query(ub.Shelf).filter( - or_((ub.Shelf.name == to_save["title"]) & (ub.Shelf.is_public == 1), - (ub.Shelf.name == to_save["title"]) & (ub.Shelf.user_id == int(current_user.id)))).first() - if existing_shelf: - flash(_(u"A shelf with the name '%(title)s' already exists.", title=to_save["title"]), category="error") + + is_shelf_name_unique = False + if shelf.is_public == 1: + is_shelf_name_unique = ub.session.query(ub.Shelf) \ + .filter((ub.Shelf.name == to_save["title"]) & (ub.Shelf.is_public == 1)) \ + .first() is None + + if not is_shelf_name_unique: + flash(_(u"A public shelf with the name '%(title)s' already exists.", title=to_save["title"]), + category="error") else: + is_shelf_name_unique = ub.session.query(ub.Shelf) \ + .filter((ub.Shelf.name == to_save["title"]) & (ub.Shelf.is_public == 0) & + (ub.Shelf.user_id == int(current_user.id)))\ + .first() is None + + if not is_shelf_name_unique: + flash(_(u"A private shelf with the name '%(title)s' already exists.", title=to_save["title"]), + category="error") + + if is_shelf_name_unique: try: ub.session.add(shelf) ub.session.commit() flash(_(u"Shelf %(title)s created", title=to_save["title"]), category="success") + return redirect(url_for('shelf.show_shelf', shelf_id=shelf.id)) + except (OperationalError, InvalidRequestError): + ub.session.rollback() + flash(_(u"Settings DB is not Writeable"), category="error") except Exception: + ub.session.rollback() flash(_(u"There was an error"), category="error") - return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"create a shelf"), page="shelfcreate") + return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Create a Shelf"), page="shelfcreate") else: - return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"create a shelf"), page="shelfcreate") + return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Create a Shelf"), page="shelfcreate") @shelf.route("/shelf/edit/", methods=["GET", "POST"]) @@ -222,14 +272,31 @@ def edit_shelf(shelf_id): shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first() if request.method == "POST": to_save = request.form.to_dict() - existing_shelf = ub.session.query(ub.Shelf).filter( - or_((ub.Shelf.name == to_save["title"]) & (ub.Shelf.is_public == 1), - (ub.Shelf.name == to_save["title"]) & (ub.Shelf.user_id == int(current_user.id)))).filter( - ub.Shelf.id != shelf_id).first() - if existing_shelf: - flash(_(u"A shelf with the name '%(title)s' already exists.", title=to_save["title"]), category="error") + + is_shelf_name_unique = False + if shelf.is_public == 1: + is_shelf_name_unique = ub.session.query(ub.Shelf) \ + .filter((ub.Shelf.name == to_save["title"]) & (ub.Shelf.is_public == 1)) \ + .filter(ub.Shelf.id != shelf_id) \ + .first() is None + + if not is_shelf_name_unique: + flash(_(u"A public shelf with the name '%(title)s' already exists.", title=to_save["title"]), + category="error") else: + is_shelf_name_unique = ub.session.query(ub.Shelf) \ + .filter((ub.Shelf.name == to_save["title"]) & (ub.Shelf.is_public == 0) & + (ub.Shelf.user_id == int(current_user.id)))\ + .filter(ub.Shelf.id != shelf_id)\ + .first() is None + + if not is_shelf_name_unique: + flash(_(u"A private shelf with the name '%(title)s' already exists.", title=to_save["title"]), + category="error") + + if is_shelf_name_unique: shelf.name = to_save["title"] + shelf.last_modified = datetime.utcnow() if "is_public" in to_save: shelf.is_public = 1 else: @@ -237,68 +304,75 @@ def edit_shelf(shelf_id): try: ub.session.commit() flash(_(u"Shelf %(title)s changed", title=to_save["title"]), category="success") + except (OperationalError, InvalidRequestError): + ub.session.rollback() + flash(_(u"Settings DB is not Writeable"), category="error") except Exception: + ub.session.rollback() flash(_(u"There was an error"), category="error") return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Edit a shelf"), page="shelfedit") else: return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Edit a shelf"), page="shelfedit") +def delete_shelf_helper(cur_shelf): + if not cur_shelf or not check_shelf_edit_permissions(cur_shelf): + return + shelf_id = cur_shelf.id + ub.session.delete(cur_shelf) + ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id).delete() + ub.session.add(ub.ShelfArchive(uuid=cur_shelf.uuid, user_id=cur_shelf.user_id)) + ub.session.commit() + log.info("successfully deleted %s", cur_shelf) + + + @shelf.route("/shelf/delete/") @login_required def delete_shelf(shelf_id): cur_shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first() - deleted = None - if current_user.role_admin(): - deleted = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).delete() - else: - if (not cur_shelf.is_public and cur_shelf.user_id == int(current_user.id)) \ - or (cur_shelf.is_public and current_user.role_edit_shelfs()): - deleted = ub.session.query(ub.Shelf).filter(or_(and_(ub.Shelf.user_id == int(current_user.id), - ub.Shelf.id == shelf_id), - and_(ub.Shelf.is_public == 1, - ub.Shelf.id == shelf_id))).delete() - - if deleted: - ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id).delete() - ub.session.commit() - log.info("successfully deleted %s", cur_shelf) + try: + delete_shelf_helper(cur_shelf) + except (OperationalError, InvalidRequestError): + ub.session.rollback() + flash(_(u"Settings DB is not Writeable"), category="error") return redirect(url_for('web.index')) -# @shelf.route("/shelfdown/") + @shelf.route("/shelf/", defaults={'shelf_type': 1}) @shelf.route("/shelf//") +@login_required_if_no_ano def show_shelf(shelf_type, shelf_id): - if current_user.is_anonymous: - shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, ub.Shelf.id == shelf_id).first() - else: - shelf = ub.session.query(ub.Shelf).filter(or_(and_(ub.Shelf.user_id == int(current_user.id), - ub.Shelf.id == shelf_id), - and_(ub.Shelf.is_public == 1, - ub.Shelf.id == shelf_id))).first() + shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first() + result = list() # user is allowed to access shelf - if shelf: + if shelf and check_shelf_view_permissions(shelf): page = "shelf.html" if shelf_type == 1 else 'shelfdown.html' - books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id).order_by( - ub.BookShelf.order.asc()).all() + books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id)\ + .order_by(ub.BookShelf.order.asc()).all() for book in books_in_shelf: - cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first() + cur_book = calibre_db.get_filtered_book(book.book_id) if cur_book: result.append(cur_book) else: - log.info('Not existing book %s in %s deleted', book.book_id, shelf) - ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book.book_id).delete() - ub.session.commit() + cur_book = calibre_db.get_book(book.book_id) + if not cur_book: + log.info('Not existing book %s in %s deleted', book.book_id, shelf) + try: + ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book.book_id).delete() + ub.session.commit() + except (OperationalError, InvalidRequestError): + ub.session.rollback() + flash(_(u"Settings DB is not Writeable"), category="error") return render_title_template(page, entries=result, title=_(u"Shelf: '%(name)s'", name=shelf.name), - shelf=shelf, page="shelf") + shelf=shelf, page="shelf") else: flash(_(u"Error opening shelf. Shelf does not exist or is not accessible"), category="error") return redirect(url_for("web.index")) - @shelf.route("/shelf/order/", methods=["GET", "POST"]) @login_required def order_shelf(shelf_id): @@ -310,21 +384,32 @@ def order_shelf(shelf_id): for book in books_in_shelf: setattr(book, 'order', to_save[str(book.book_id)]) counter += 1 - ub.session.commit() - if current_user.is_anonymous: - shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, ub.Shelf.id == shelf_id).first() - else: - shelf = ub.session.query(ub.Shelf).filter(or_(and_(ub.Shelf.user_id == int(current_user.id), - ub.Shelf.id == shelf_id), - and_(ub.Shelf.is_public == 1, - ub.Shelf.id == shelf_id))).first() + # if order diffrent from before -> shelf.last_modified = datetime.utcnow() + try: + ub.session.commit() + except (OperationalError, InvalidRequestError): + ub.session.rollback() + flash(_(u"Settings DB is not Writeable"), category="error") + + shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first() result = list() - if shelf: + if shelf and check_shelf_view_permissions(shelf): books_in_shelf2 = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id) \ .order_by(ub.BookShelf.order.asc()).all() for book in books_in_shelf2: - cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first() - result.append(cur_book) + cur_book = calibre_db.get_filtered_book(book.book_id) + if cur_book: + result.append({'title': cur_book.title, + 'id': cur_book.id, + 'author': cur_book.authors, + 'series': cur_book.series, + 'series_index': cur_book.series_index}) + else: + cur_book = calibre_db.get_book(book.book_id) + result.append({'title': _('Hidden Book'), + 'id': cur_book.id, + 'author': [], + 'series': []}) return render_title_template('shelf_order.html', entries=result, title=_(u"Change order of Shelf: '%(name)s'", name=shelf.name), shelf=shelf, page="shelforder") diff --git a/cps/static/css/caliBlur.css b/cps/static/css/caliBlur.css new file mode 100644 index 000000000..383f7e37e --- /dev/null +++ b/cps/static/css/caliBlur.css @@ -0,0 +1,7979 @@ +.form-control, .home-btn, .home-btn > a, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a { + font-variant-caps: normal; + font-variant-numeric: normal; + font-weight: 400; + font-style: normal; + letter-spacing: normal +} + +.pagination, .plexBack.noBack, .root .plexBack, .root .plexBack > a { + cursor: default +} + +.navigation li a, .shelforder #sortTrue > div { + -o-text-overflow: ellipsis; + 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 { + line-height: 60px; + -webkit-tap-highlight-color: transparent; + -webkit-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + text-size-adjust: 100%; + -webkit-box-direction: normal; + white-space: nowrap +} + +@font-face { + font-family: Open Sans Regular; + font-weight: 400; + font-style: normal; + src: url(data:application/font-woff;base64,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) format("woff") +} + +@font-face { + font-family: Open Sans Semibold; + font-style: normal; + font-weight: 400; + src: url(data:application/font-woff;base64,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) format("woff") +} + +@font-face { + font-family: Open Sans Bold; + font-weight: 400; + font-style: normal; + src: url(data:application/font-woff;base64,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) format("woff") +} + +@font-face { + font-family: plex-icons-new; + src: url(data:application/font-woff;base64,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) format("woff") +} + +@font-face { + font-family: plex-icons; + src: url(data:application/font-woff;base64,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) format("woff") +} + +@font-face { + font-family: Glyphicons Regular; + src: url(data:application/font-woff;base64,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) format("woff"); + font-weight: 400; + font-style: normal +} + +@font-face { + font-family: Glyphicons Social Regular; + src: url(data:application/font-woff;base64,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) format("woff"); + font-weight: 400; + font-style: normal +} + +:root { + --color-background: #474747; + --color-primary: #F9BE03; + --color-secondary: #CC7B19; + --color-secondary-hover: #E59029; + --color-background-mobile: #1f1f1f +} + +@-webkit-keyframes fade { + 0% { + opacity: .1 + } + 50% { + opacity: .2 + } + 75% { + opacity: .3 + } + 100% { + opacity: .4 + } +} + +@keyframes fade { + 0% { + opacity: .1 + } + 50% { + opacity: .2 + } + 75% { + opacity: .3 + } + 100% { + opacity: .4 + } +} + +@-webkit-keyframes fadeIn { + 0% { + opacity: 0 + } + 100% { + opacity: 1 + } +} + +@keyframes fadeIn { + 0% { + opacity: 0 + } + 100% { + opacity: 1 + } +} + +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0) + } + 100% { + -webkit-transform: rotate(360deg) + } +} + +@keyframes spin { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0) + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@keyframes cssAnimation { + to { + width: 0; + height: 0; + overflow: hidden + } +} + +@-webkit-keyframes cssAnimation { + to { + width: 0; + height: 0; + visibility: hidden + } +} + +@-webkit-keyframes loading { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0) + } + to { + -webkit-transform: rotate(1turn); + transform: rotate(1turn) + } +} + +@keyframes loading { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0) + } + to { + -webkit-transform: rotate(1turn); + transform: rotate(1turn) + } +} + +@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 { + font-size: 18px + } + + #main-nav + .col-sm-2 { + position: fixed; + width: 240px; + height: calc(100% - 120px); + left: 0; + top: 120px; + background: rgba(0, 0, 0, .15); + padding: 0 5px 20px 0; + overflow-y: auto + } + + #main-nav + .col-sm-2:after { + width: 100%; + height: 60px; + background: rgba(0, 0, 0, .15); + display: block; + content: ''; + position: fixed; + top: 60px; + left: 240px; + pointer-events: none + } +} + +@media only screen and (max-height: 600px) { + body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a { + padding: 0 !important; + height: 60px !important + } + + body.login > div.container-fluid > div.row-fluid > div.col-sm-10 { + top: 60px !important + } + + body.login .well { + padding: 0 60px !important + } +} + +body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a[href*=advanced_search] { + display: none +} + +body.blur .row-fluid .col-sm-10 { + -webkit-animation: fadeIn 1s linear 1; + animation: fadeIn 1s linear 1 +} + +.col-sm-10 .book-meta > div.btn-toolbar:after { + content: ''; + direction: block; + position: fixed; + top: 120px; + right: 0; + width: 300px; + height: 7px; + z-index: 999999999999999999999999999999999999999999999999999999 +} + +.plexBack.noBack > a { + color: hsla(0, 0%, 100%, .45); + pointer-events: none; + cursor: default +} + +.root .plexBack > a { + color: hsla(0, 0%, 100%, .45) !important; + pointer-events: none +} + +#scnd-nav > li.active a, .authorlist #nav_author a, .catlist #nav_cat a, .langlist #nav_lang a, .serieslist #nav_serie a { + color: var(--color-primary) +} + +#scnd-nav > li.active:hover a, .authorlist #nav_author:hover a, .catlist #nav_cat:hover a, .langlist #nav_lang:hover a, .serieslist #nav_serie:hover a { + color: #fff; + -webkit-transition: all 0s; + -o-transition: all 0s; + transition: all 0s +} + +.dropdown-menu > .active > a, .dropdown-menu > .active > a:focus { + color: var(--color-primary); + background-color: transparent +} + +.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover { + color: #fff; + background-color: hsla(0, 0%, 100%, .08) +} + +.a-z #scnd-nav > li.dropdown > a, .newest #scnd-nav > li.dropdown > a, .oldest #scnd-nav > li.dropdown > a, .z-a #scnd-nav > li.dropdown > a { + color: var(--color-primary) +} + +.a-z #scnd-nav > li.dropdown:hover > a, .newest #scnd-nav > li.dropdown:hover > a, .oldest #scnd-nav > li.dropdown:hover > a, .z-a #scnd-nav > li.dropdown:hover > a { + color: #fff !important; + -webkit-transition: all 0s; + -o-transition: all 0s; + transition: all 0s +} + +.readbooks #scnd-nav > li.active a[href*=unreadbooks] { + color: hsla(0, 0%, 100%, .7) +} + +.readbooks #scnd-nav > li.active a[href*=unreadbooks]:hover { + color: #fff +} + +.unreadbooks #scnd-nav > li.active a[href*=readbooks] { + color: hsla(0, 0%, 100%, .7) +} + +.unreadbooks #scnd-nav > li.active a[href*=readbooks]:hover { + color: #fff +} + +.unreadbooks #scnd-nav > li.active a[href*=unreadbooks] { + color: var(--color-primary) +} + +.shelforder #sortTrue > .list-group-item { + background: 0 0; + border-radius: 0; + border: none +} + +.shelforder #sortTrue { + border-top: 2px solid rgba(0, 0, 0, .3); + border-bottom: 2px solid rgba(0, 0, 0, .3); + padding: 0 +} + +.shelforder #sortTrue > .list-group-item:nth-of-type(even) { + background: hsla(0, 0%, 100%, .02) +} + +.shelforder > .container-fluid > .row-fluid > .col-sm-10 > .col-sm-6 { + margin-left: calc(20%); + width: calc(80% - 30px) +} + +.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2:before { + content: "Reorder Shelf"; + width: calc(100vw - 240px); + height: 60px; + margin: 0; + padding-left: 25px; + color: hsla(0, 0%, 100%, .7); + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 15px; + -webkit-font-smoothing: antialiased; + font-weight: 400; + -webkit-margin-before: 0; + -webkit-margin-after: 0; + position: fixed; + top: 60px; + left: 240px; + text-align: left +} + +.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2 { + font-size: 24px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #eee; + font-weight: 400; + line-height: 1; + margin: 0; + padding: 60px 15px 40px; + width: 100%; + height: auto; + top: auto; + left: auto; + position: relative; + border-bottom: 2px solid rgba(0, 0, 0, .3) +} + +.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2 + div { + margin-top: 90px; + font-size: 15px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + line-height: 24px; + padding: 15px; + color: #eee; + text-transform: uppercase +} + +.home-btn > a, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a { + text-transform: none; + -moz-user-select: none; + -ms-user-select: none; + -webkit-font-smoothing: antialiased +} + +.shelforder #sortTrue > div { + padding: 0 15px; + margin: 0; + vertical-align: bottom; + overflow: hidden; + white-space: nowrap; + min-height: 50px; + line-height: 50px; + color: hsla(0, 0%, 100%, .6) +} + +.shelforder #sortTrue > div:hover { + background-color: hsla(0, 0%, 100%, .06) !important; + cursor: move; + cursor: grab; + cursor: -webkit-grab; + color: #eee +} + +.shelforder #sortTrue > div:active { + cursor: grabbing; + cursor: -webkit-grabbing +} + +.shelforder #sortTrue > div:before { + content: "\EA53"; + font-family: plex-icons-new; + margin-right: 30px; + margin-left: 15px; + vertical-align: bottom; + display: inline-block; + font-weight: 400; + font-size: 18px; + opacity: 0 +} + +.shelforder #sortTrue > div:hover:before { + opacity: 1; + -webkit-transition: all .2s; + -o-transition: all .2s; + transition: all .2s +} + +.shelforder #ChangeOrder { + float: right; + margin: 30px 0 60px +} + +.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > a { + float: right; + background-color: hsla(0, 0%, 100%, .25); + color: #fff; + margin: 30px 10px 60px 0 +} + +.shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > a:hover { + background-color: hsla(0, 0%, 100%, .3) +} + +body.shelforder > div.container-fluid > div.row-fluid > div.col-sm-10:before { + content: "\e155"; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + font-size: 6vw; + position: fixed; + left: 240px; + top: 180px; + width: calc(20% - 55px); + text-align: center +} + +#have_read_form { + display: inline-block; + float: left +} + +#have_read_form > label { + margin: 0; + top: 0; + height: 60px +} + +#have_read_form > label > label { + position: relative; + width: 1px; + height: 1px; + top: 0 +} + +#have_read_form:hover label:before { + color: #fff !important +} + +#have_read_form span, div[aria-label="Download, send to Kindle, reading"] > .btn-group:first-child > p:first-child, div[aria-label="Download, send to Kindle, reading"] > .btn-group:first-child > p:last-child { + display: none +} + +#have_read_cb { + opacity: 0; + height: 60px; + width: 50px; + cursor: pointer; + margin: 0; + display: inline-block +} + +#have_read_cb + label:before, #have_read_cb:checked + label:before { + font-family: 'Glyphicons Halflings'; + font-size: 16px; + height: 40px; + width: 60px; + top: -48px; + left: 16px; + z-index: -999999999999999999999999999999999999999999999999999999; + font-style: normal; + font-weight: 400; + display: inline-block; + position: absolute; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +#have_read_cb:checked + label:before { + content: "\e105"; + color: var(--color-primary) +} + +#have_read_cb + label:before { + content: "\e106"; + color: hsla(0, 0%, 100%, .7) +} + +#archived_form { + display: inline-block; + float: left +} + +#archived_form > label { + margin: 0; + top: 0; + height: 60px +} + +#archived_form > label > label { + position: relative; + width: 1px; + height: 1px; + top: 0 +} + +#archived_form:hover label:before { + color: #fff !important +} + +#archived_form span, div[aria-label="Download, send to Kindle, reading"] > .btn-group:first-child > p:first-child, div[aria-label="Download, send to Kindle, reading"] > .btn-group:first-child > p:last-child { + display: none +} + +#archived_cb { + opacity: 0; + height: 60px; + width: 50px; + cursor: pointer; + margin: 0; + display: inline-block; + margin-top: -4px; +} + +#archived_cb + label:before, #archived_cb:checked + label:before { + font-family: 'Glyphicons Halflings'; + font-size: 16px; + height: 40px; + width: 60px; + top: -48px; + left: 16px; + z-index: -999999999999999999999999999999999999999999999999999999; + font-style: normal; + font-weight: 400; + display: inline-block; + position: absolute; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +#archived_cb:checked + label:before { + content: "\e020"; + color: var(--color-primary) +} + +#archived_cb + label:before { + content: "\e020"; + color: hsla(0, 0%, 100%, .7) +} + +div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] > .downloadBtn { + border-left: 2px solid rgba(0, 0, 0, .15) +} + +div[aria-label="Edit/Delete book"] > .btn { + width: 50px; + height: 60px; + margin: 0; + overflow: hidden; + display: inline-block; + padding: 0; + line-height: 1.71428571; + text-align: center; + vertical-align: middle; + cursor: pointer; + background: 0 0; + color: transparent +} + +div[aria-label="Edit/Delete book"] > .btn > span { + visibility: visible; + position: relative; + display: inline-block; + font-style: normal; + font-weight: 400; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: hsla(0, 0%, 100%, .7); + text-align: center; + white-space: nowrap; + cursor: pointer; + margin: auto +} + +div[aria-label="Edit/Delete book"] > .btn > span:before { + content: "\EA5d"; + font-family: plex-icons; + font-size: 20px; + padding: 16px 15px; + display: inline-block; + height: 60px +} + +div[aria-label="Edit/Delete book"] > .btn > span:hover { + color: #fff +} + +.download-text:not(#btnGroupDrop1) { + display: none !important +} + +.advanced_search #scnd-nav > li > a[href*=advanced_search] { + color: var(--color-primary) +} + +/* .book { + width: 225px; + max-width: 225px; + position: relative !important; + left: auto !important; + top: auto !important; + -webkit-transform: none !important; + -ms-transform: none !important; + transform: none !important; + min-width: 225px; + display: block +} */ + +#infscr-loading img, body > div.container-fluid > div > div.col-sm-10 > div.discover > div.isotope:after, body > div.container-fluid > div > div.col-sm-10 > div.discover > div.isotope:before { + display: none +} + +#infscr-loading:before { + content: ''; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 2px solid transparent; + border-radius: 50%; + border-top: 2px solid var(--color-secondary); + width: 24px; + height: 24px; + -webkit-animation: spin .5s linear infinite; + animation: spin .5s linear infinite; + display: block; + margin: 20px auto; + position: fixed; + top: calc(50% - 12px); + left: calc(50% - 12px); + z-index: 999999 +} + +#loader > center:after, .app-loading:before { + -webkit-animation: spin .5s linear infinite +} + +a { + color: hsla(0, 0%, 100%, .45) +} + +a:hover { + -webkit-transition: color .2s; + -o-transition: color .2s; + transition: color .2s; + color: #fff +} + +#titlebar a { + color: #4f4f4f +} + +#titlebar a:hover { + cursor: pointer +} + +body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a { + margin: 60px auto auto !important; + width: 240px; + height: 60px; + text-align: left; + color: var(--color-primary) !important; + font-size: 15px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + font-stretch: normal; + -webkit-font-variant-ligatures: normal; + font-variant-ligatures: normal; + text-shadow: none; + -webkit-user-select: none; + user-select: none; + word-spacing: 0; + -webkit-writing-mode: horizontal-tb; + -ms-writing-mode: lr-tb; + writing-mode: horizontal-tb; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden; + background: rgba(0, 0, 0, .45); + padding: 0 20px +} + +.home-btn, .home-btn > a { + -webkit-font-variant-ligatures: normal; + top: 0; + cursor: pointer; + display: block; + font-size: 20px; + height: 60px; + font-variant-ligatures: normal +} + +.btn, .home-btn > a, .plexBack > a, input.pill + label { + -webkit-user-select: none +} + +.form-control, .home-btn, .home-btn > a { + font-variant-east-asian: normal; + font-stretch: 100% +} + +.home-btn > a, .plexBack > a { + -webkit-text-decoration-color: hsla(0, 0%, 100%, .7); + text-decoration-color: hsla(0, 0%, 100%, .7); + -webkit-text-decoration-line: none; + text-decoration-line: none; + -webkit-text-decoration-style: solid; + text-decoration-style: solid; + text-rendering: optimizeLegibility; + -webkit-writing-mode: horizontal-tb; + -webkit-box-sizing: border-box; + box-sizing: border-box; + speak: none; + text-shadow: none; + word-spacing: 0; + -ms-writing-mode: lr-tb; + writing-mode: horizontal-tb +} + +.home-btn { + color: hsla(0, 0%, 100%, .7); + line-height: 34.29px; + margin: 0; + padding: 0; + position: absolute; + width: 40px; + left: 10px +} + +.home-btn > a { + color: rgba(255, 255, 255, .7); + font-family: plex-icons-new; + line-height: 60px; + position: relative; + text-align: center; + -webkit-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + text-size-adjust: 100%; + user-select: none; + vertical-align: middle; + width: 100%; + -webkit-box-direction: normal; + padding: 0 10px +} + +.btn, input.pill + label { + -moz-user-select: none; + -ms-user-select: none +} + +.home-btn > a:before { + content: "\EA30" +} + +body > div.navbar.navbar-default.navbar-static-top > div > div.home-btn > a:hover:before { + color: #fff +} + +.glyphicon-search:before { + content: "\EA4F"; + font-family: plex-icons +} + +#nav_about:after, .profileDrop > span:after, .profileDrop > span:before { + content: '' +} + +.navbar-default { + background-color: rgba(0, 0, 0, .6) !important; + border: none; + position: fixed; + width: 100%; + height: 60px; + z-index: -9 +} + +body:not(.read-frame) { + background-image: url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png) !important; + background-repeat: repeat, no-repeat !important; + background-attachment: fixed, fixed !important; + background-position: center center, center center !important; + background-size: auto, cover !important; + -webkit-background-size: auto, cover !important; + -moz-background-size: auto, cover !important; + -o-background-size: auto, cover !important; + line-height: 1.71428571; + background: url(images/caliblur/blur-noise.png), var(--color-background); + color: hsla(0, 0%, 100%, .45); + font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif; + font-weight: 400; + overflow: hidden; + margin: 0; + /* scroll bar fix for firefox */ + scrollbar-color: hsla(0, 0%, 100%, .2) transparent; + scrollbar-width: thin; +} + +body > div.navbar.navbar-default.navbar-static-top > div > form > div { + width: 360px +} + +body > div.navbar.navbar-default.navbar-static-top > div > form > div > span.input-group-btn { + opacity: 0; + pointer-events: none; + z-index: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999 +} + +body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div > span.input-group-btn { + opacity: 1; + pointer-events: auto +} + +.profileDrop { + width: 60px; + height: 60px; + padding: 0 !important; + background: 0 0 !important +} + +.profileDrop > span { + width: 30px; + height: 30px; + margin: 15px; + top: 0 +} + +.profileDrop > span:before { + display: inline-block; + overflow: hidden; + border-radius: 50%; + background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K); + background-size: contain; + position: absolute; + width: 30px; + height: 30px +} + +.profileDrop > span:after { + display: inline-block; + width: 0; + height: 0; + margin: 15px 0 0 35px; + vertical-align: middle; + border-top: 5px dashed; + border-right: 4px solid transparent; + border-left: 4px solid transparent +} + +.top_tasks { + float: left !important +} + +.navbar { + z-index: 9 !important +} + +.profileDropli > li > a > span.glyphicon { + display: none +} + +.profileDropli > li > a > span.hidden-sm { + display: inline !important +} + +#nav_about:after { + width: 100%; + height: 1px; + background-color: hsla(0, 0%, 78%, .15); + display: block; + margin: 5px 0 +} + +#btn-upload { + min-width: 1px; + min-height: 1px; + width: 50px; + height: 60px; + left: 0; + line-height: 1; + font-size: 1px +} + +#btn-upload:hover { + cursor: pointer !important +} + +.btn, .rating-input .glyphicon:hover { + cursor: pointer +} + +#main-nav > li:nth-child(1) { + float: right; + margin-left: 10px +} + +.glyphicon { + top: 0 +} + +#form-upload { + position: relative; + float: right; + width: 50px; + margin: 0; + padding: 0; + height: 60px +} + +#form-upload .form-group .btn { + color: transparent; + background: 0 0; + border: 0; + text-transform: uppercase; + font-weight: 400; + margin: 0; + padding: 0; + height: 60px; + width: 50px +} + +#form-upload:hover .form-group .btn:after, #form-upload:hover .form-group .btn:before { + color: #fff +} + +#form-upload .form-group .btn:before { + content: "\e043"; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: hsla(0, 0%, 100%, .7); + font-size: 16px; + background: 0 0; + border-radius: 50%; + width: 20px; + height: 20px; + display: inline-block; + margin: 0; + padding: 23px 19px; + z-index: -9 +} + +#top_admin > span.hidden-sm, #top_tasks > span.hidden-sm { + display: none +} + +#form-upload .form-group .btn:after { + content: "\EA13"; + position: absolute; + font-family: plex-icons-new; + font-size: 8px; + background: #3c444a; + color: hsla(0, 0%, 100%, .7); + border-radius: 50%; + padding: .25px .25px 0 0; + z-index: 9; + left: 15px; + top: 32px; + width: 10px; + height: 10px; + line-height: 10px; + font-weight: 400; + text-align: center; + pointer-events: none +} + +#top_admin, #top_tasks { + height: 60px; + width: 50px; + padding: 20px 15px +} + +#top_tasks > .glyphicon-tasks::before { + content: "\EA2E"; + text-transform: none; + font-weight: 400; + font-style: normal; + font-family: plex-icons-new; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + line-height: 1; + text-rendering: optimizeLegibility; + speak: none; + font-size: 20px +} + +.btn, .navigation .create-shelf a, .navigation .nav-head, .well > form, body > div.container-fluid > div > div.col-sm-10 > div.discover > h1:first-letter { + text-transform: uppercase +} + +#top_tasks > .glyphicon-tasks { + background-color: hsla(0, 0%, 100%, .15); + border-radius: 50% +} + +.form-control { + background-image: none; + display: block; + width: 100%; + height: 40px; + padding: 6px 12px; + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px !important; + -webkit-font-variant-ligatures: normal; + font-variant-ligatures: normal; + line-height: 22.29px !important; + color: #eee; + vertical-align: middle; + background-color: hsla(0, 0%, 100%, .08); + border-radius: 4px; + border: 0 !important; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: background-color .2s; + -o-transition: background-color .2s; + transition: background-color .2s +} + +.form-control:focus { + border-color: transparent; + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; + background: #eee !important; + color: #555 +} + +.form-control.tt-hint { + background: hsla(0, 0%, 100%, .25) !important +} + +body > div.navbar.navbar-default.navbar-static-top > div > form > div > span > button:before { + content: "\EA32"; + font-family: plex-icons-new; + color: #eee; + background: #555; + font-size: 10px; + width: 25px; + height: 19px; + border-radius: 4px; + padding: 2px 5px; + position: absolute +} + +body > div.navbar.navbar-default.navbar-static-top > div > form > div > span > button { + background-color: transparent; + color: transparent; + border: none; + height: 40px; + border-radius: 0 4px 4px 0 +} + +body > div.navbar.navbar-default.navbar-static-top > div > form:before { + content: "\EA4F"; + display: block; + font-family: plex-icons; + position: absolute; + color: #eee; + font-weight: 400; + font-size: 14px; + top: 18px; + left: 122px +} + +#query { + width: 360px !important; + padding-right: 50px; + padding-left: 46px +} + +#query:focus { + background: #eee !important; + color: #555 !important +} + +body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div > span.input-group-btn:before { + content: "\EA4F"; + display: block; + font-family: plex-icons; + position: absolute; + left: -298px; + top: 8px; + width: 40px; + height: 40px; + color: #555; + font-weight: 400; + font-size: 14px +} + +body > div.navbar.navbar-default.navbar-static-top > div > form > div > span.input-group-btn { + position: absolute; + left: 320px; + height: 40px; + width: 40px; + border-radius: 4px +} + +body > div.navbar.navbar-default.navbar-static-top > div > form > div > span > button:hover { + color: #fff +} + +body > div.navbar.navbar-default.navbar-static-top > 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 { + color: transparent +} + +body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input:-moz-placeholder { + color: transparent +} + +body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input::-moz-placeholder { + color: transparent +} + +body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input:-ms-input-placeholder { + color: transparent +} + +body > div.navbar.navbar-default.navbar-static-top > div > form > .form-group > input { + border-radius: 4px; + height: 40px; + width: 360px; + padding: 4px +} + +#main-nav { + margin-right: 15px +} + +#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 { + height: 60px +} + +body > div.navbar.navbar-default.navbar-static-top > 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 { + content: "\EA31"; + font-family: plex-icons-new; + font-size: 20px +} + +body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > #top_admin > span:last-of-type { + vertical-align: top +} + +.badge, .btn { + vertical-align: middle +} + +.author > a:hover { + color: #fff !important +} + +.row { + margin: 0 +} + +body > div.container-fluid > div > div.col-sm-10 > div > form > h2 { + font-size: 15px; + color: var(--color-primary); + border-top: 1px solid rgba(0, 0, 0, .3); + padding-top: 60px; + margin-top: 50px; + margin-bottom: 30px +} + +.btn, .form-group > label { + font-size: 14px; + font-weight: 400 +} + +.navigation .nav-head:nth-child(1n+2) { + border-top: none; + padding-top: 0; + width: 200px +} + +.btn-default { + border-color: var(--color-secondary); + color: #fff; + background-color: var(--color-secondary); + -webkit-transition: background-color .1s; + -o-transition: background-color .1s; + transition: background-color .1s +} + +.btn-default:hover { + border-color: var(--color-secondary-hover); + color: #fff; + background-color: var(--color-secondary-hover) +} + +body > div.container-fluid > div > div.col-sm-10 > div > form > a { + background-color: hsla(0, 0%, 100%, .25); + color: #fff +} + +body > div.container-fluid > div > div.col-sm-10 > div > form > a:hover { + background-color: hsla(0, 0%, 100%, .3); + color: #fff +} + +.btn { + display: inline-block; + padding: 6px 16px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + border: 0; + margin-bottom: 0; + line-height: 1.71428571; + text-align: center; + border-radius: 3px; + white-space: nowrap; + -o-user-select: none; + user-select: none +} + +.navigation li, .navigation li:not(ul>li) { + border-radius: 0 4px 4px 0 +} + +.btn-primary { + color: #fff; + background-color: hsla(0, 0%, 100%, .25); + border-color: hsla(0, 0%, 100%, .25) +} + +.btn-primary:hover { + border-color: hsla(0, 0%, 100%, .3) +} + +.btn-default.active, .btn-default.focus, .btn-default:active, .btn-default:focus, .open > .dropdown-toggle.btn-default { + border-color: var(--color-secondary-hover); + color: #fff; + background-color: var(--color-secondary-hover) +} + +.form-group > label { + color: #eee; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif +} + +.login .form-group > label { + font-weight: 400; + color: hsla(0, 0%, 100%, .45); + font-family: Open Sans bold, Helvetica Neue, Helvetica, Arial, sans-serif; + font-size: 13px +} + +.navbar > .container-fluid { + margin: 0; + padding: 0; + height: 60px +} + +.navigation .nav-head { + margin: 0; + color: hsla(0, 0%, 100%, .3); + font-size: 12px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + line-height: 45px; + padding-left: 25px +} + +.navigation li a { + color: hsla(0, 0%, 100%, .7); + text-decoration: none; + padding: 4px 25px; + font-size: 13px; + height: 30px; + line-height: 1.71428571; + width: 100%; + white-space: nowrap; + overflow: hidden +} + +.navigation li { + min-height: 30px; + max-width: 265px; + overflow: visible +} + +.navigation li:hover { + background-color: hsla(0, 0%, 100%, .08) +} + +.navigation .create-shelf a, .navigation li.nav-head:hover { + background-color: transparent +} + +.navigation li a:hover { + background: 0 0; + color: #fff +} + +#nav_hot .glyphicon-fire::before { + content: "\1F525"; + font-family: glyphicons regular +} + +.glyphicon-star:before { + content: "\EA10"; + font-family: plex-icons-new +} + +#nav_rand .glyphicon-random::before { + content: "\EA44"; + font-family: plex-icons-new +} + +.glyphicon-list::before { + content: "\EA4D"; + font-family: plex-icons-new +} + +#nav_about .glyphicon-info-sign::before { + content: "\EA26"; + font-family: plex-icons-new +} + +#nav_cat .glyphicon-inbox::before, .glyphicon-tags::before { + content: "\E067"; + font-family: Glyphicons Regular; + margin-left: 2px +} + +.navigation #nav_cat a span { + margin-right: 8px +} + +.navigation .create-shelf a { + width: 165px; + color: hsla(0, 0%, 100%, .7) !important; + padding: 5px 7px 2px; + font-size: 12px; + line-height: 1; + border-radius: 3px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + border: 0; + -webkit-transition: background-color .1s; + -o-transition: background-color .1s; + transition: background-color .1s; + font-weight: 400; + white-space: nowrap; + margin: auto; + max-height: 22px; + -o-text-overflow: initial; + text-overflow: initial +} + +.navigation .create-shelf a:hover { + color: #fff !important; + background: 0 0 !important; + border-radius: 0 +} + +#scnd-nav .dropdown-menu > li > a:hover { + color: #fff; + background: 0 0 +} + +#scnd-nav .dropdown-menu { + left: 12px !important; + margin: 0 +} + +.navigation .create-shelf a:before { + content: "\EA13"; + font-family: plex-icons-new; + font-size: 100%; + padding-right: 10px; + vertical-align: middle +} + +.container-fluid .book .meta .author, .container-fluid .book .meta .author > a, .container-fluid .book .meta .title { + font-weight: 400; + font-size: 13px; + -webkit-font-smoothing: antialiased; + line-height: 20px; + font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif +} + +.navigation .create-shelf { + width: 25px; + margin: 10px -15px 0 0; + min-height: auto; + /*float: right*/ +} + +.navigation .create-shelf:hover { + background: 0 0 +} + +.container-fluid .book .meta .title { + color: #fff +} + +.container-fluid .book .meta .author, .container-fluid .book .meta .author > a { + color: hsla(0, 0%, 100%, .45) +} + +.container-fluid .book .cover img { + border: none; + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, .35); + box-shadow: 0 0 2px rgba(0, 0, 0, .35); + position: relative; + z-index: -9; + width: 150px !important; +} + +#books > .cover > a, #books_rand > .cover > a, .book.isotope-item > .cover > a, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a { + display: inline-block; + width: auto; + height: 100% +} + +#books > .cover > a:before, #books_rand > .cover > a:before, .book.isotope-item > .cover > a:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:before { + content: "\e352"; + font-family: Glyphicons Regular; + background: var(--color-secondary); + border-radius: 50%; + font-weight: 400; + font-size: 18px; + line-height: 50px; + width: 50px; + height: 50px; + padding-left: 16px; + right: 0; + margin: auto; + opacity: 0; + left: 0; + position: absolute; + top: 0; + display: inline-block; + color: #fff; + bottom: 0 +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:before { + z-index: 9; + zoom: .8 +} + +#books > .cover > a:hover:before, #books_rand > .cover > a:hover:before, .book.isotope-item > .cover > a:hover:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:hover:before { + -o-transition: opacity .2s; + transition: opacity .2s; + -webkit-transition: opacity .2s; + opacity: 1 +} + +#books > .cover > a:hover, #books_rand > .cover > a:hover, .book.isotope-item > .cover > a:hover, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:hover { + outline: solid var(--color-secondary); + font-size: 50px; + -o-transition: outline 0s; + transition: outline 0s; + -webkit-transition: outline 0s +} + +#books > .cover > a:after, #books_rand > .cover > a:after, .book.isotope-item > .cover > a:after { + position: absolute; + content: ''; + width: 100%; + height: 100%; + top: 0; + left: 0; + opacity: 0; + background: -webkit-radial-gradient(50% 50%, farthest-corner, rgba(50, 50, 50, .5) 50%, #323232 100%); + background: -o-radial-gradient(50% 50%, farthest-corner, rgba(50, 50, 50, .5) 50%, #323232 100%); + background: radial-gradient(farthest-corner at 50% 50%, rgba(50, 50, 50, .5) 50%, #323232 100%); + z-index: -9 +} + +body.me > div.container-fluid > div > div.col-sm-10 > div.discover { + left: 240px; + margin: 120px 0 0 20% !important; + padding: 30px 15px 15px !important; + width: calc(80% - 30px); + border-top: 2px solid rgba(0, 0, 0, .3) +} + +body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #submit { + float: right; + margin-left: 0 +} + +body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 { + height: 200px; + padding: 0; + margin: 15px +} + +.container-fluid .discover, .navbar { + margin-bottom: 0 +} + +body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a { + width: 100% +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:after { + position: absolute; + content: ''; + width: 100%; + height: 100%; + top: 0; + left: 0; + opacity: 0; + background: -webkit-radial-gradient(50% 50%, farthest-corner, rgba(50, 50, 50, .5) 50%, #323232 100%); + background: -o-radial-gradient(50% 50%, farthest-corner, rgba(50, 50, 50, .5) 50%, #323232 100%); + background: radial-gradient(farthest-corner at 50% 50%, rgba(50, 50, 50, .5) 50%, #323232 100%) +} + +#books > .cover > a:hover:after, #books_rand > .cover > a:hover:after, .book.isotope-item > .cover > a:hover:after, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:hover:after { + opacity: 1; + -o-transition: opacity .2s; + transition: opacity .2s; + -webkit-transition: opacity .2s +} + +.container-fluid .book .cover { + width: auto; + display: inline-block +} + +.navbar { + border: none +} + +.navbar-collapse.collapse { + height: 60px !important; + padding-bottom: 0; + overflow: visible !important +} + +.btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus { + outline: 0; + outline-offset: 0 +} + +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: rgba(0, 0, 0, .15); + border-radius: 3px +} + +#bookDetailsModal, .pagination, body > .container-fluid { + min-width: 1px; + min-height: 1px +} + +app-loading-container { + background: #3f4245 +} + +.app-loading > span { + display: none +} + +.app-loading { + margin: auto; + color: #fff !important; + text-align: center; + font-size: 20px +} + +.app-loading:before { + content: ''; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 2px solid transparent; + border-radius: 50%; + border-top: 2px solid var(--color-secondary); + width: 24px; + height: 24px; + animation: spin .5s linear infinite; + display: block; + margin: 20px auto +} + +.pace-progress, .random-books { + display: none +} + +#main-nav + #scnd-nav::-webkit-scrollbar, #main-nav + .col-sm-2::-webkit-scrollbar, .navbar-collapse.collapse::-webkit-scrollbar, body > div.container-fluid > div.row-fluid > div.col-sm-2::-webkit-scrollbar, body > div.container-fluid > div > div.col-sm-10::-webkit-scrollbar { + width: 14px; + max-height: calc(100% - 60px) +} + +#description::-webkit-scrollbar, #meta-info::-webkit-scrollbar, .book-meta::-webkit-scrollbar { + width: 14px +} + +#main-nav + #scnd-nav::-webkit-scrollbar-track, #main-nav + .col-sm-2::-webkit-scrollbar-track, .navbar-collapse.collapse::-webkit-scrollbar-track, body > div.container-fluid > div.row-fluid > div.col-sm-2::-webkit-scrollbar-track, body > div.container-fluid > div > div.col-sm-10::-webkit-scrollbar-track { + background-color: transparent; + max-height: calc(100% - 60px) +} + +#meta-info::-webkit-scrollbar-track { + background-color: #202020 +} + +#description::-webkit-scrollbar-track, .book-meta::-webkit-scrollbar-track { + background-color: transparent +} + +#main-nav + #scnd-nav::-webkit-scrollbar-thumb, #main-nav + .col-sm-2::-webkit-scrollbar-thumb, .navbar-collapse.collapse::-webkit-scrollbar-thumb, body > div.container-fluid > div.row-fluid > div.col-sm-2::-webkit-scrollbar-thumb, body > div.container-fluid > div > div.col-sm-10::-webkit-scrollbar-thumb { + min-height: 110px; + border: 3px solid transparent; + border-radius: 8px; + background-color: hsla(0, 0%, 100%, .2); + background-clip: padding-box; + max-height: calc(100% - 60px) +} + +#description::-webkit-scrollbar-thumb, #meta-info::-webkit-scrollbar-thumb, .book-meta::-webkit-scrollbar-thumb { + min-height: 50px; + border: 3px solid transparent; + border-radius: 8px; + background-color: hsla(0, 0%, 100%, .2); + background-clip: padding-box +} + +#description::-webkit-scrollbar-thumb:hover, #main-nav + #scnd-nav::-webkit-scrollbar-thumb:hover, #main-nav + .col-sm-2::-webkit-scrollbar-thumb:hover, #meta-info::-webkit-scrollbar-thumb:hover, .book-meta::-webkit-scrollbar-thumb:hover, .navbar-collapse.collapse::-webkit-scrollbar-thumb:hover, body > div.container-fluid > div.row-fluid > div.col-sm-2::-webkit-scrollbar-thumb:hover, body > div.container-fluid > div > div.col-sm-10::-webkit-scrollbar-thumb:hover { + background-color: hsla(0, 0%, 100%, .3) +} + +::-webkit-scrollbar-corner { + background: 0 0 +} + +.pace .pace-activity { + border: 2px solid transparent; + border-radius: 50%; + border-top: 2px solid var(--color-secondary); + width: 24px; + height: 24px; + right: auto; + left: 8px; + top: 17px +} + +body > .container-fluid { + margin: 0; + padding: 0; + width: calc(100%); + height: calc(100% - 60px); + position: fixed; + top: 60px; + left: 0 +} + +body > div.container-fluid > div.row-fluid > div.col-sm-2 { + position: absolute; + width: 240px; + height: calc(100% - 60px); + left: 0; + top: 60px; + background: rgba(0, 0, 0, .15); + /*padding: 0 5px 20px 0;*/ + overflow-y: auto +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 { + width: calc(100vw - 237px); + height: calc(100% - 60px); + padding: 0; + position: absolute; + min-height: 1px; + min-width: 1px; + top: 60px; + right: 0; + overflow-y: auto !important +} + +body.me > div.container-fluid > div.row-fluid > div.col-sm-10:before { + content: ''; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + font-size: 6vw; + position: fixed; + left: 240px; + top: 180px; + width: calc(20% - 55px); + text-align: center; + background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K); + background-size: 6vw; + background-position-x: center; + height: 100%; + background-repeat: no-repeat +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > div.isotope { + display: -ms-grid !important; + display: grid !important; + overflow: hidden !important; + height: auto !important; + width: 100%; + margin: 0; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: start; + grid-gap: 10px 0; + grid-template-columns: repeat(auto-fit, minmax(175px, 1fr)) !important +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover { + height: auto; + width: calc(100vw - 257px); + margin: 40px 0 !important; + padding: 0 10px 0 40px !important +} + +body > div.container-fluid > div > div.col-sm-10 > div.single { + height: auto; + width: calc(100vw - 254px); + margin: 0 !important; + padding: 60px 15px !important +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover { + margin-top: 0 +} + +.container-fluid .book .meta > p { + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > h2 { + color: #eee; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + line-height: 24px; + overflow: hidden; + min-width: 0; + width: 100%; + max-width: 100%; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + text-transform: uppercase; + font-weight: 400; + padding-left: 15px; + margin-bottom: 20px; + top: 0; + left: 0; + height: auto +} + +body > div.container-fluid > div > div.col-sm-10 > h3:not(:first-of-type) { + color: #eee; + width: calc(100% - 30px); + max-width: 800px; + margin: 60px auto 10px; + text-align: left +} + +body > div.container-fluid > div > div.col-sm-10 > p { + margin: auto auto 60px; + width: calc(100% - 30px); + max-width: 800px; + text-align: right +} + +.book .book-meta > h2 > h2, .well > h2, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover:only-of-type > h2, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover > h1, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover > h2, body > div.container-fluid > div > div.col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2, body > div.container-fluid > div > div.col-sm-10 > div:nth-of-type(2) > h2, body > div.container-fluid > div > div.col-sm-10 > h1, body > div.container-fluid > div > div.col-sm-10 > h3:first-of-type { + margin: 0; + -webkit-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + text-size-adjust: 100%; + -webkit-box-direction: normal; + -webkit-font-smoothing: antialiased; + -webkit-tap-highlight-color: transparent; + -webkit-margin-before: 0; + -webkit-margin-after: 0 +} + +body > div.container-fluid > div > div.col-sm-10 > p > a { + color: var(--color-secondary) +} + +body > div.container-fluid > div > div.col-sm-10 > p > a:hover { + color: #fff +} + +.book .book-meta > h2 > h2, body > div.container-fluid > div > div.col-sm-10 > div:nth-of-type(2) > h2, body > div.container-fluid > div > div.col-sm-10 > h3:first-of-type { + height: 60px; + padding-left: 25px; + color: hsla(0, 0%, 100%, .7); + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 60px; + white-space: nowrap; + font-weight: 400; + position: fixed; + top: 60px; + left: 240px +} + +body > div.container-fluid > div > div.col-sm-10 > h3:first-of-type { + content: "About"; + width: calc(100vw - 240px); + text-align: left +} + +.book .book-meta > h2 > h2 { + width: calc(100vw - 540px) +} + +body > div.container-fluid > div > div.col-sm-10 > div:nth-of-type(2) > h2 { + content: "Books"; + width: calc(100vw - 240px) +} + +.well > h2, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover:only-of-type > h2 { + width: calc(100vw - 240px) !important; + height: 60px !important; + padding-left: 25px !important; + color: hsla(0, 0%, 100%, .7) !important; + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif !important; + font-size: 15px !important; + line-height: 60px !important; + white-space: nowrap !important; + font-weight: 400 !important; + position: fixed !important; + top: 60px !important; + left: 240px !important; + -o-text-overflow: ellipsis !important; + text-overflow: ellipsis !important; + max-width: calc(100vw - 550px) !important; + overflow: hidden !important +} + +@media only screen and (min-width: 768px) { + body > div.container-fluid > div.row-fluid > div.col-sm-2:after { + width: 100%; + height: 60px; + background: rgba(0, 0, 0, .15); + display: block; + content: ''; + position: fixed; + top: 60px; + left: 240px + } +} + +body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover > h1, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover > h2, body > div.container-fluid > div > div.col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2, body > div.container-fluid > div > div.col-sm-10 > h1 { + width: calc(100vw - 240px); + height: 60px; + padding-left: 25px; + color: hsla(0, 0%, 100%, .7); + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 60px; + white-space: nowrap; + font-weight: 400; + position: fixed; + top: 60px; + left: 240px +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > form > .btn.btn-default { + float: right; + margin: 0 0 0 10px +} + +.pagination { + display: block !important; + position: fixed; + top: 60px; + right: 0; + overflow: visible; + height: 60px; + margin: 0; + line-height: 60px; + font-size: 15px; + z-index: 99999 +} + +body > div.container-fluid > div > div.col-sm-10 > div.pagination .page-next > a, +body > div.container-fluid > div > div.col-sm-10 > div.pagination .page-previous > a +{ + top: 0; + font-family: plex-icons-new; + font-weight: 100; + -webkit-font-smoothing: antialiased; + line-height: 60px; + height: 60px; + font-style: normal; + -moz-osx-font-smoothing: grayscale; + overflow: hidden; +} + +.pagination > a { + color: hsla(0, 0%, 100%, .7) +} + +.pagination > a:hover { + color: #fff; + text-decoration: none +} + +.pagination > .ellipsis { + color: hsla(0, 0%, 100%, .7) +} + +.navbar-default .navbar-nav > li > a:focus, .navbar-default .navbar-nav > li > a:hover { + color: #fff !important +} + +body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-item:not(.page-next):not(.page-previous) +{ + display: none +} + +body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-next > a, +body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-previous > a { + color: transparent; + background-color:transparent; + margin-left: 0; + width: 65px; + padding: 0; + font-size: 15px; + display: block !important; + border: none; +} + +body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-next > a:before, +body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-previous > a:before { + visibility: visible; + color: hsla(0, 0%, 100%, .35); + height: 60px; + line-height: 60px; + border-left: 2px solid transparent; + font-size: 20px; + padding: 20px 25px; + margin-right: -27px; +} + +body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-next > a:before { + content: "\EA32"; +} + +body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-previous > a:before { + content: "\EA33"; +} + +body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-next > a:hover:before, +body > div.container-fluid > div > div.col-sm-10 > div.pagination > .page-previous > a:hover:before { + color: #fff +} + +.pagination > .ellipsis, .pagination > a:nth-last-of-type(2) { + display: none +} + +body.authorlist > div.container-fluid > div > div.col-sm-10 > div.container > div.col-xs-12, body.catlist > div.container-fluid > div > div.col-sm-10 > div.container > div.col-xs-12, body.langlist > div.container-fluid > div > div.col-sm-10 > div.container > div.col-sm-6, body.serieslist > div.container-fluid > div > div.col-sm-10 > div.container > div.col-sm-6 { + width: 100% +} + +body.serieslist > div.container-fluid > div > div.col-sm-10:before { + content: "\e044"; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + font-size: 6vw; + position: fixed; + left: 240px; + top: 240px; + width: calc(20% - 55px); + text-align: center +} + +@media screen and (max-width: 992px) { + body.serieslist > div.container-fluid > div.row-fluid > div.col-sm-10:before { + top: 180px; + } +} + +body > div.container-fluid > div > div.col-sm-10 > div.container { + width: calc(80% - 30px); + margin: 120px 0 30px 20%; + border-top: 2px solid rgba(0, 0, 0, .3); + border-bottom: 2px solid rgba(0, 0, 0, .3); + padding: 0; + max-width: calc(80% - 30px) +} + +body > div.container-fluid > div > div.col-sm-10 > div.container > div { + padding: 0 +} + +body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row { + padding: 4px 0 +} + +body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row:nth-of-type(even) { + background: hsla(0, 0%, 100%, .02) +} + +body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row > .col-xs-6 { + width: calc(91.666% - 30px); + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + color: hsla(0, 0%, 100%, .45); + padding-left: 60px +} + +body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row > .col-xs-6 > a { + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + -webkit-transition: all 0s; + -o-transition: all 0s; + transition: all 0s +} + + +body > div.container-fluid > div > div.col-sm-10 > div.discover > div.container { + width: calc(80% - 30px); + margin: 120px 0 30px 20%; + border-top: 2px solid rgba(0, 0, 0, .3); + border-bottom: 2px solid rgba(0, 0, 0, .3); + padding: 0; + max-width: calc(80% - 30px) +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > div.container > div { + padding: 0 +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > div.container > div > .row { + padding: 4px 0 +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > div.container > div > .row:nth-of-type(even) { + background: hsla(0, 0%, 100%, .02) +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > div.container > div > .row > .col-xs-6 { + width: calc(91.666% - 30px); + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + color: hsla(0, 0%, 100%, .45); + padding-left: 60px +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > div.container > div > .row > .col-xs-6 > a { + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + -webkit-transition: all 0s; + -o-transition: all 0s; + transition: all 0s +} + + +.book-meta > .bookinfo > .tags .btn-info, .well > form > .btn { + vertical-align: middle; + -o-transition: background-color .2s, color .2s +} + +body.catlist > div.container-fluid > div.row-fluid > div.col-sm-10:before { + content: "\E067"; + font-family: Glyphicons Regular; + font-style: normal; + font-weight: 400; + line-height: 1; + font-size: 6vw; + position: fixed; + left: 240px; + top: 240px; + width: calc(20% - 55px); + text-align: center +} + +@media screen and (max-width: 992px) { + body.catlist > div.container-fluid > div.row-fluid > div.col-sm-10:before { + top: 180px; + } +} + + +body.authorlist > div.container-fluid > div.row-fluid > div.col-sm-10:before, body.langlist > div.container-fluid > div > div.col-sm-10:before { + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + font-size: 6vw; + left: 240px; + top: 180px; + width: calc(20% - 55px); + text-align: center; + position: fixed +} + +body.authorlist > div.container-fluid > div.row-fluid > div.col-sm-10:before { + content: "\e008"; + top: 240px; +} + +@media screen and (max-width: 992px) { + body.authorlist > div.container-fluid > div.row-fluid > div.col-sm-10:before { + top: 180px; + } +} + +body.langlist > div.container-fluid > div > div.col-sm-10:before { + content: "\e034" +} + +body.authorlist > div.container-fluid > div > div.col-sm-10 > div.container:before, body.catlist > div.container-fluid > div > div.col-sm-10 > div.container:before, body.langlist > div.container-fluid > div > div.col-sm-10 > div.container:before, body.me > div.container-fluid > div > div.col-sm-10 > div.discover:before, body.serieslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + top: 60px; + font-size: 24px; + color: #eee; + line-height: 1; + padding-left: 15px; + position: absolute; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + font-weight: 400 +} + +body.authorlist > div.container-fluid > div > div.col-sm-10 > div.container:before { + content: "Authors"; + top: 115px; +} + +@media screen and (max-width: 992px) { + body.authorlist > div.container-fluid > div > div.col-sm-10 > div.container:before { + top: 60px; + } +} + +body.catlist > div.container-fluid > div > div.col-sm-10 > div.container:before { + content: "Categories"; + top: 115px; +} + +@media screen and (max-width: 992px) { + body.catlist > div.container-fluid > div > div.col-sm-10 > div.container:before { + top: 60px; + } +} + +body.serieslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + content: "Series"; + top: 115px; +} + +@media screen and (max-width: 992px) { + body.serieslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + top: 60px; + } +} + +body.ratingslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + content: "File formats"; + top: 115px; +} + +@media screen and (max-width: 992px) { + body.ratingslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + top: 60px; + } +} + +body.formatslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + content: "File formats"; + top: 115px; +} + +@media screen and (max-width: 992px) { + body.formatslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + top: 60px; + } +} + +body.langlist > div.container-fluid > div > div.col-sm-10 > div.container:before { + content: "Languages" +} + +body.advsearch > div.container-fluid > div > div.col-sm-10 > div.col-md-10.col-lg-6 { + padding: 15px 10px 15px 40px; +} + +@media screen and (max-width: 992px) { + body.advsearch > div.container-fluid > div > div.col-sm-10 > div.col-md-10.col-lg-6 { + padding-left: 20px; + } +} + +body.me > div.container-fluid > div > div.col-sm-10 > div.discover:before { + content: "My Profile" +} + +.well { + max-height: 520px; + height: auto; + background-color: transparent; + border: none; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + min-width: 600px; + max-width: 700px; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: 0 auto; + padding: 60px +} + +.well > form { + background: rgba(0, 0, 0, .4); + color: hsla(0, 0%, 100%, .45); + padding: 60px; + margin-top: 60px +} + +.checkbox { + text-transform: none +} + +.well > form > .btn { + display: inline-block; + overflow: hidden; + border-radius: 4px; + color: #fff; + text-align: center; + text-transform: uppercase; + white-space: nowrap; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + -webkit-transition: background-color .2s, color .2s; + transition: background-color .2s, color .2s; + padding: 6px 30px 5px; + font-size: 15px; + font-weight: 400; + background-color: var(--color-secondary); + border: none; + width: 100%; + text-rendering: auto; + letter-spacing: normal; + word-spacing: normal; + text-indent: 0; + text-shadow: none; + margin-top: 20px +} + +.well > form > .btn:hover { + background-color: var(--color-secondary-hover) +} + +body > div.row-fluid { + margin-top: 0 !important +} + +.alert { + position: fixed; + top: auto; + bottom: 20px; + left: 50%; + width: 50%; + margin: 0; + -webkit-transform: translate(-50%); + -ms-transform: translate(-50%); + transform: translate(-50%); + opacity: 1 !important; + right: 0; + border-radius: 10px; + background-color: #000; + color: #eee; + border: 0; + -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, .5); + box-shadow: 0 4px 12px rgba(0, 0, 0, .5); + -webkit-transition: all .5s; + -o-transition: all .5s; + transition: all .5s; + height: 34px; + line-height: 1.71428571 !important; + overflow: hidden; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + font-size: 14px; + padding: 5px 0; + z-index: 99999; + -webkit-animation: cssAnimation 0s ease-in 10s forwards; + animation: cssAnimation 0s ease-in 10s forwards; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards +} + +.alert-danger { + background-color: rgba(255, 85, 51, .3); + color: #fff +} + +.table > thead > tr > th { + border-bottom: 0 +} + +.table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, .table > thead > tr > th { + border-top: 1px solid rgba(0, 0, 0, .3); + background: rgba(0, 0, 0, .15) +} + +#libs, #stats { + margin: auto; + width: calc(100% - 30px); + max-width: 800px; + color: hsla(0, 0%, 100%, .75); + border-bottom: 2px solid rgba(0, 0, 0, .3); + border-top: 2px solid rgba(0, 0, 0, .2) +} + +#libs { + margin-bottom: 15px +} + +#libs > tbody > tr > th, #libs > thead > tr > th:first-child, #stats > tbody > tr > th { + color: hsla(0, 0%, 100%, .45) +} + +#books .cover img, #books_rand .cover img, .book .cover img { + width: auto +} + +.container-fluid img { + display: block; + width: 100%; + height: auto; + max-width: 195px; + margin: auto +} + +#bookDetailsModal .modal-footer, #bookDetailsModal .modal-header > .close, .modal-backdrop.in { + display: none +} + +.container-fluid .single .cover img { + border: 0; + border-radius: 0; + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, .35); + box-shadow: 0 0 2px rgba(0, 0, 0, .35); + background-color: rgba(0, 0, 0, .45) +} + +body > div.container-fluid > div > div.col-sm-10 > div.col-sm-3.col-lg-3.col-xs-12, body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-3.col-lg-3 { + max-width: calc(25% - 75px); + position: fixed +} + +body > div.container-fluid > div > div.col-sm-10 > div.col-sm-3.col-lg-3.col-xs-12 { + padding-top: 40px; + padding-bottom: 40px +} + +body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-9.col-lg-9.book-meta { + margin-left: calc(25%); + width: calc(75%) +} + +.advanced_search #search > .row > .form-group.col-sm-6:first-of-type { + padding-left: 0 +} + +.advanced_search #search > .row > .form-group.col-sm-6:last-of-type { + padding-right: 0 +} + +.advanced_search .btn { + text-transform: none; + font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif; + font-weight: 400 +} + +label { + font-weight: 400 +} + +body > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 { + margin-left: calc(20%); + width: calc(80% - 30px); + padding: 60px 0 +} + +body > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 > form > div > span > input.form-control.typeahead.tt-hint { + background: hsla(0, 0%, 100%, .08) !important +} + +body > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 > form > div > span > input.form-control:focus { + background: #fff !important +} + +.navigation li a .glyphicon-star { + color: hsla(0, 0%, 100%, .7) +} + +.glyphicon-star, .navigation li a:hover .glyphicon-star { + color: #fff +} + +.rating-input:hover { + cursor: default +} + +.rating-input { + padding-left: 0 +} + +body > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 > form > .btn.btn-default { + float: right; + margin: 0 0 0 10px; + text-transform: uppercase; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif +} + +#get_meta { + float: left; + margin: 0 +} + +textarea { + resize: none; + resize: vertical +} + +#metaModal { + top: 0; + overflow: hidden; + padding-top: 60px; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, .5) +} + +#metaModal > .modal-dialog > .modal-content { + z-index: 9999999999999999999999; + max-height: calc(100% - 90px); + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + border-radius: 3px +} + +#metaModal > .modal-dialog > .modal-content > .modal-header { + padding: 0; + background: #282828; + border-radius: 3px 3px 0 0 +} + +#metaModal > .modal-dialog > .modal-content > .modal-header > h4 { + border-bottom: 0; + background: #323232; + height: 65px; + padding: 15px 0 0 15px; + font-size: 20px; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + line-height: 1.71428571; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + font-weight: 400; + color: #eee; + border-radius: 3px 3px 0 0; + margin-bottom: 0 +} + +#metaModal > .modal-dialog > .modal-content > .modal-header > h4:before { + content: "\E025"; + font: normal normal normal 16px/1 Glyphicons Halflings; + color: #999; + padding-right: 10px +} + +#metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search > .input-group > span > button, .dropdown-menu > li > a, .plexBack, .plexBack > a { + font-stretch: 100%; + font-variant-caps: normal; + font-variant-east-asian: normal; + font-variant-numeric: normal; + font-style: normal +} + +#metaModal > .modal-dialog > .modal-content > .modal-header > .close { + color: #eee; + opacity: .2; + font-size: 20px; + text-shadow: none; + margin: 20px +} + +#metaModal > .modal-dialog > .modal-content > .modal-header > .close:hover { + opacity: .5 +} + +#metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search { + margin: 25px 0 0 +} + +#metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search > .input-group > input { + width: calc(100% - 51px); + border-radius: 0; + background-color: hsla(0, 0%, 100%, .15) +} + +#metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search > .input-group { + max-width: 100%; + width: 100% +} + +#metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search > .input-group > span > button { + height: 40px; + width: 50px; + padding: 0; + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px !important; + -webkit-font-variant-ligatures: normal; + font-variant-ligatures: normal; + font-weight: 400; + letter-spacing: normal; + line-height: 22.29px !important; + color: #eee; + vertical-align: middle; + background-color: hsla(0, 0%, 100%, .15); + border-radius: 0; + margin: 0 0 0 -1px +} + +.dropdown-menu > li > a, .plexBack { + -webkit-font-variant-ligatures: normal; + font-variant-ligatures: normal +} + +#metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search > .input-group > span { + float: right; + text-align: right; + width: 50px; + margin: 0 +} + +#metaModal > .modal-dialog > .modal-content > .modal-header > div { + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + font-size: 12px; + line-height: 1.71428571; + color: var(--color-primary); + font-weight: 100; + text-align: right; + position: absolute; + right: 0; + padding: 12.5px +} + +#metaModal > .modal-dialog > .modal-content > .modal-body { + padding: 0 +} + +#metaModal > .modal-dialog > .modal-content > .modal-body > .text-center { + text-align: left; + margin-bottom: 0; + padding-top: 10px +} + +#metaModal > .modal-dialog > .modal-content > .modal-body > #book-list { + margin-bottom: 0 +} + +input.pill:checked + label { + background-color: transparent; + border-color: transparent; + color: var(--color-secondary) +} + +input.pill + label { + border: 0; + border-radius: 0; + color: hsla(0, 0%, 100%, .25); + cursor: pointer; + display: inline-block; + padding: 3px 15px; + user-select: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +input.pill + label:hover { + color: var(--color-secondary-hover) +} + +#meta-info { + max-height: calc(100vh - 357px); + overflow-y: scroll; + background: #282828 !important; + padding: 0; + margin: 0 +} + +#meta-info #book-list .media > .media-body { + font-family: "Open Sans Regular", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 24px; + color: #999; + font-weight: 100; + padding-left: 15px +} + +#meta-info #book-list .media > img { + padding: 0 +} + +#meta-info #book-list .media > .media-body > h4 > a { + color: #eee +} + +#meta-info #book-list .media > .media-body > h4 > a:hover { + color: #fff +} + +#meta-info #book-list { + width: 100%; + margin: 0 +} + +#meta-info #book-list .media:nth-of-type(odd) { + background: hsla(0, 0%, 100%, .02) +} + +#meta-info #book-list .media { + margin-top: 0; + padding: 20px 15px 5px +} + +#meta-info #book-list .media > .media-body > p > a { + color: var(--color-secondary); + padding-left: 10px +} + +#meta-info #book-list .media > .media-body > p > a:hover { + color: #fff +} + +#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-header, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > #test:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > div:nth-child(10) > label:before { + color: hsla(0, 0%, 100%, .7); + -webkit-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + text-size-adjust: 100%; + white-space: nowrap; + -webkit-box-direction: normal; + -webkit-tap-highlight-color: transparent; + -webkit-font-smoothing: antialiased; + font-weight: 400 +} + +.modal-content { + position: relative; + background-color: #323232; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 0; + border-radius: 0 0 3px 3px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5) +} + +.modal-footer { + padding: 15px; + text-align: right; + border-top: 0 +} + +.modal-header { + padding: 15px; + border-bottom: 0 +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > #test:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > div:nth-child(10) > label:before { + height: 60px; + padding-left: 25px; + background: 0 0; + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 60px; + top: 60px; + left: 240px; + position: fixed +} + +#meta-info #book-list .media > img:hover { + cursor: pointer; + outline: solid var(--color-secondary); + -webkit-filter: brightness(90%); + filter: brightness(90%) +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > div:nth-child(10) > label:before { + content: "Edit Metadata"; + width: calc(100vw - 350px); + margin: 0; + -webkit-margin-before: 0; + -webkit-margin-after: 0; + pointer-events: none +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-xs-12 { + margin: 50px 0 +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > #test:before { + content: "Advanced Search"; + width: calc(100vw - 240px); + margin: 0; + -webkit-margin-before: 0; + -webkit-margin-after: 0 +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > #test { + border-top: 2px solid rgba(0, 0, 0, .3); + margin-top: -50px; + padding-top: 50px +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn { + margin: 2px 3px 0 0; + padding: 0 10px; + background: hsla(0, 0%, 100%, .25); + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn:hover { + background: hsla(0, 0%, 100%, .3) +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn-danger:hover { + background: #ce3d2a +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn-danger.active { + background: #ac3323 +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn-danger.active:hover { + background: #ce3d2a +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn-primary:hover { + background: var(--color-secondary-hover) +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn-primary.active { + background: var(--color-secondary) +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg > label.btn-primary.active:hover { + background: var(--color-secondary-hover) +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > .form-group > .btn-toolbar-lg, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > label { + margin-left: 0 +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > label:first-of-type { + padding-top: 40px +} + +body.advanced_search > div.container-fluid > div > div.col-sm-10 > div.col-sm-8:before { + content: "\EA4F"; + font-family: plex-icons; + font-style: normal; + font-weight: 400; + line-height: 1; + font-size: 6vw; + position: fixed; + left: 240px; + top: 180px; + width: calc(20% - 55px); + text-align: center +} + +a:focus { + outline: 0; + outline-offset: 0 +} + +#bookDetailsModal { + width: calc(100vw - 240px); + height: calc(100% - 60px); + padding: 0; + position: fixed; + top: 60px; + left: 240px; + background-image: url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png); + background-repeat: repeat, no-repeat; + background-attachment: fixed, fixed; + background-position: center center, center center; + background-size: auto, cover !important; + -webkit-background-size: auto, cover; + -moz-background-size: auto, cover; + -o-background-size: auto, cover +} + +#bookDetailsModal > .modal-dialog.modal-lg { + padding: 0; + margin: 0; + width: 100%; + height: 100% +} + +#bookDetailsModal > .modal-dialog.modal-lg > .modal-content { + background-color: transparent; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none +} + +#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-header { + width: 100%; + height: 60px; + margin: 0; + padding: 0 0 0 25px; + background: rgba(0, 0, 0, .15); + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 60px; + -webkit-margin-before: 0; + -webkit-margin-after: 0; + position: fixed; + top: 0; + left: 0 +} + +#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-header > h4 { + width: 100%; + max-width: calc(100% - 340px); + height: 60px; + line-height: 60px +} + +#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-body { + width: calc(100vw - 240px); + height: calc(100% - 120px); + position: fixed; + min-height: 1px; + min-width: 1px; + top: 60px; + left: 0; + padding: 0 +} + +#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-body > .container-fluid { + padding: 0 +} + +#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-body > div > div > div > div.col-sm-3.col-lg-3.col-xs-5 { + padding: 30px 15px 15px 30px; + height: 300px +} + +body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-3.col-lg-3.col-xs-5 { + padding: 15px; + height: 300px; + pointer-events: none +} + +#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-body > div > div > div > div.col-sm-3.col-lg-3.col-xs-5 > div.cover, body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-3.col-lg-3.col-xs-5 > div.cover { + margin: 0; + width: 100%; +} + +#bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-body > div > div > div > div.col-sm-3.col-lg-3.col-xs-5 > div.cover > img, body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-3.col-lg-3.col-xs-5 > div.cover > img { + margin: 0 auto; + max-height: 300px; + max-width: 200px; + height: auto; + width: 100% +} + +.book-meta > .bookinfo > .comments, .book-meta > .description { + margin-top: 60px; + font-size: 15px; + color: #eee +} + +.book-meta .bookinfo p { + margin: 0 +} + +.book-meta > .bookinfo > .publishers { + margin-top: 24px +} + +.book-meta > .bookinfo > .publishers > span:first-of-type, .book-meta > .bookinfo > .publishing-date > span:first-of-type { + color: hsla(0, 0%, 100%, .45); + text-transform: uppercase; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif +} + +.book-meta > .bookinfo > .publishers > span:last-of-type, .book-meta > .bookinfo > .publishing-date > span:last-of-type { + font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #fff; + font-size: 15px; + -webkit-font-smoothing: antialiased +} + +.book-meta > .bookinfo > .publishers > span:last-of-type { + padding-left: 90px +} + +.real_custom_columns > span:last-of-type { + padding-left: 90px +} + +.book-meta > .bookinfo > .publishing-date > span:last-of-type { + padding-left: 90px +} + +.book-meta > .bookinfo > .languages > span:first-of-type { + color: hsla(0, 0%, 100%, .45); + text-transform: uppercase; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif +} + +.book-meta > .bookinfo > .languages > span:last-of-type { + font-size: 15px; + font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif; + -webkit-font-smoothing: antialiased; + color: #fff; + padding-left: 85px +} + +.book-meta > .bookinfo > .tags .btn-info, .book-meta > h2, body.book .author { + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif +} + +#bookDetailsModal .book-meta > h2 { + margin-top: 15px +} + +.book-meta > h2 { + font-size: 24px; + color: #eee; + font-weight: 400; + line-height: 1; + margin: 0; + max-width: calc(100% - 100px); + padding: 15px 0 +} + +.book-meta > .author > a:first-of-type:before { + content: "Author — "; + color: hsla(0, 0%, 100%, .45); + position: absolute; + left: 15px; + pointer-events: none +} + +.book-meta > .bookinfo > .rating { + float: right; + position: relative; + z-index: -1; + margin-top: -50px +} + +.book-meta > .bookinfo > p + .rating { + margin-top: -25px +} + +.book-meta > .bookinfo > .rating .glyphicon-star { + color: hsla(0, 0%, 100%, .25) +} + +body.book .author { + font-size: 15px; + line-height: 30px; + margin-top: -5px; + max-width: calc(100% - 176px); + margin-left: 76px +} + +.book-meta > p { + color: hsla(0, 0%, 100%, .45) +} + +.book-meta > .bookinfo > p:first-of-type { + color: hsla(0, 0%, 100%, .45); + font-size: 15px; + margin-top: -10px; + max-width: calc(100% - 100px) +} + +.bookinfo .rating .glyphicon-star.good { + color: hsla(0, 0%, 100%, .7) +} + +.book-meta > .languages > p > .label-default { + background: 0 0; + color: hsla(0, 0%, 100%, .45); + padding: 0; + font-size: 14px +} + +.book-meta > .bookinfo > .languages > span:first-letter { + text-transform: uppercase +} + +.book-meta > .bookinfo > .hr { + margin: 24px -15px; + height: 2px; + background-color: rgba(0, 0, 0, .3) +} + +.book-meta > .bookinfo > .identifiers > p > .btn-success, .book-meta > .bookinfo > .tags .btn-info { + overflow: hidden; + text-align: center; + white-space: nowrap; + margin: 2px 3px 0 0; + padding: 0 10px +} + +.book-meta > .bookinfo > .tags .btn-info { + background-color: rgba(0, 0, 0, .15); + color: hsla(0, 0%, 100%, .7); + font-size: 13px; + display: inline-block; + border-radius: 4px; + -webkit-transition: background-color .2s, color .2s; + transition: background-color .2s, color .2s; + text-transform: none +} + +.dropdown-menu, .tooltip.in { + -webkit-transition: opacity .15s ease-out, -webkit-transform .15s cubic-bezier(.6, .4, .2, 1.4) +} + +.book-meta > .bookinfo > .tags .btn-info:hover { + color: #fff; + text-decoration: underline +} + +.book-meta > .bookinfo > .identifiers, .book-meta > .bookinfo > .tags { + padding-left: 40px; + margin: 10px 0 +} + +.book-meta > .bookinfo > .tags a { + max-width: 100%; + -o-text-overflow: ellipsis; + text-overflow: ellipsis +} + +.book-meta > .bookinfo > .identifiers .glyphicon-link, .book-meta > .bookinfo > .tags .glyphicon-tags { + margin-left: -40px; + margin-right: 17px; + color: hsla(0, 0%, 100%, .45); + width: 20px; + vertical-align: text-bottom +} + +.book-meta > h3:first-of-type { + font-size: 14px; + font-weight: 400; + text-transform: uppercase; + border-top: 2px solid rgba(0, 0, 0, .3); + padding-top: 20px; + margin-top: 20px +} + +.book-meta > div { + color: hsla(0, 0%, 100%, .65) +} + +.more-stuff { + margin-top: 0; + padding-top: 0; + border-top: 0 +} + +.book-meta > .more-stuff > br { + display: none +} + +.btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group { + margin-left: 0 +} + +div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] { + white-space: nowrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex +} + +div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] > div.btn-group[role=group] > p { + display: none +} + +#shelf-actions { + float: left +} + +#add-to-shelf, #btnGroupDrop1, #read-in-browser, #sendbtn, .book-meta .btn-toolbar > .btn-group > .btn-group:nth-child(1) > a:first-of-type, .book-meta .btn-toolbar > .btn-group > .btn-warning, .btn-toolbar > .btn-group > #btnGroupDrop2, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2 { + background: 0 0; + color: transparent; + width: 50px; + height: 60px; + margin: 0; + overflow: hidden; + padding: 0 +} + +#add-to-shelf > span.caret, #btnGroupDrop1 > span.caret, #read-in-browser > span.caret, .btn-toolbar > .btn-group > #btnGroupDrop2 > span.caret, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2 > span.caret { + padding-bottom: 5px +} + +#add-to-shelf > span, #btnGroupDrop1 > span, #read-in-browser > span, #sendbtn > span, .book-meta .btn-toolbar > .btn-group > .btn-group:nth-child(1) > a:first-of-type > span, .book-meta .btn-toolbar > .btn-group > .btn-warning > span, .btn-toolbar > .btn-group > #btnGroupDrop2 > span, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2 > span { + color: hsla(0, 0%, 100%, .7) +} + +#add-to-shelf:hover span, #btnGroupDrop1:hover > span, #read-in-browser:hover > span, #sendbtn:hover > span, .book-meta .btn-toolbar > .btn-group > .btn-group:nth-child(1) > a:first-of-type:hover > span, .book-meta .btn-toolbar > .btn-group > .btn-warning:hover > span, .btn-toolbar > .btn-group > #btnGroupDrop2:hover > span, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2:hover > span { + color: #fff +} + +#add-to-shelf > span.glyphicon.glyphicon-list:before { + content: "\EA59"; + font-family: plex-icons; + font-size: 18px +} + +#sendbtn > span, .book-meta .btn-toolbar > .btn-group > .btn-group:nth-child(1) > a:first-of-type > span, .book-meta .btn-toolbar > .btn-group > .btn-warning > span.glyphicon-edit { + font-size: 16px; + line-height: 54px; + width: 100% +} + +#read-in-browser > span.glyphicon-eye-open:before, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2 > span.glyphicon-eye-open:before { + content: "\e352"; + font-family: Glyphicons Regular; + font-size: 18px; + padding-right: 5px +} + +#read-in-browser > span.glyphicon-list:before, .btn-toolbar > .btn-group > #btnGroupDrop2 > span.glyphicon-list:before { + font-size: 18px +} + +#btnGroupDrop1 > span.glyphicon-download:before { + font-size: 20px; + content: "\ea66"; + font-family: plex-icons +} + +.col-sm-10 .book-meta > div.btn-toolbar { + position: fixed; + top: 60px; + right: 0; + margin: 0; + width: calc(100vw - 240px); + height: 60px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between +} + +#bookDetailsModal > div > div > div.modal-body > div > div > div > div.col-sm-9.col-lg-9.book-meta > div.btn-toolbar > div > div.btn-group.open > div.dropdown-backdrop, .dropdown-backdrop { + display: none +} + +.book-meta .btn-toolbar > h2 { + height: 60px; + margin: 0; + padding-left: 25px; + color: hsla(0, 0%, 100%, .7); + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 60px; + white-space: nowrap; + font-weight: 400; + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + padding-right: 25px +} + +.book-meta .btn-toolbar > .btn-group { + margin: 0; + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1 +} + +.book-meta > div.btn-toolbar ul.dropdown-menu.offscreen { + position: fixed; + top: 120px; + right: 14px; + left: auto !important +} + +.btn-primary.active, .btn-primary:active, .btn-primary:focus, .btn-primary:hover, .open .dropdown-toggle.btn-primary { + background-color: hsla(0, 0%, 100%, .3) +} + +.btn-primary.active.focus, .btn-primary.active:focus, .btn-primary.active:hover, .btn-primary:active.focus, .btn-primary:active:focus, .btn-primary:active:hover, .open > .dropdown-toggle.btn-primary.focus, .open > .dropdown-toggle.btn-primary:focus, .open > .dropdown-toggle.btn-primary:hover { + color: #fff; + background-color: hsla(0, 0%, 100%, .3); + border-color: transparent +} + +.book-meta > div.more-stuff > .btn-toolbar > .btn-group > .btn-group > .dropdown-menu { + margin-left: -100px +} + +.book-meta .btn-toolbar > .btn-group > ul.dropdown-menu { + margin-left: 0; + max-width: 200px; + overflow: hidden +} + +.book-meta .btn-toolbar > .btn-group > ul.dropdown-menu > li > a { + max-width: 200px; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden +} + +.dropdown-menu.offscreen { + right: 0; + left: auto !important +} + +div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] .dropdown-menu.offscreen { + position: fixed; + top: 120px; + right: 5px +} + +.dropdown-menu { + border-radius: 4px !important; + font-size: 13px; + font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + padding: 8px 0; + background-color: #191a1c !important; + -webkit-box-shadow: 0 4px 10px rgba(0, 0, 0, .35); + box-shadow: 0 4px 10px rgba(0, 0, 0, .35); + -o-transition: opacity .15s ease-out, transform .15s cubic-bezier(.6, .4, .2, 1.4); + transition: opacity .15s ease-out, transform .15s cubic-bezier(.6, .4, .2, 1.4); + transition: opacity .15s ease-out, transform .15s cubic-bezier(.6, .4, .2, 1.4), -webkit-transform .15s cubic-bezier(.6, .4, .2, 1.4); + -webkit-transform-origin: center top; + -ms-transform-origin: center top; + transform-origin: center top; + border: 0; + left: 0 !important +} + +.dropdown-menu > li > a { + color: hsla(0, 0%, 100%, .7); + font-size: 13px; + font-weight: 400; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1.71428571 +} + +.dropdown-menu > li > a:focus, .dropdown-menu > li > a:hover { + color: #fff; + background: hsla(0, 0%, 100%, .08) +} + +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: none; + box-shadow: none +} + +.book-meta > .bookinfo > .identifiers > p > .btn-success { + background-color: rgba(0, 0, 0, .15); + color: hsla(0, 0%, 100%, .7); + font-size: 13px; + display: inline-block; + border-radius: 4px; + vertical-align: middle; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + -webkit-transition: background-color .2s, color .2s; + -o-transition: background-color .2s, color .2s; + transition: background-color .2s, color .2s; + text-transform: none +} + +.book-meta > .bookinfo > .identifiers > p > .btn-success:hover { + color: #fff; + text-decoration: underline +} + +#bookDetailsModal .book-meta { + color: hsla(0, 0%, 100%, .7); + height: calc(100% - 120px); + overflow-x: hidden; + overflow-y: scroll +} + +.book-meta > .bookinfo .publishers, .book-meta > .bookinfo > .identifiers > p > .glyphicon-link { + color: hsla(0, 0%, 100%, .45) +} + +.rating .glyphicon-star.good { + color: var(--color-primary) +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > .btn-danger { + background: #ac3323; + width: auto +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > .btn-danger:hover { + background: #ce3d2a +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > .btn-primary:first-of-type { + background: hsla(0, 0%, 100%, .25) +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > .btn-primary:first-of-type:hover { + background: hsla(0, 0%, 100%, .3) +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > .btn-primary:last-of-type { + background: var(--color-secondary) +} + +body > div.container-fluid > div > div.col-sm-10 > div.discover > .btn-primary:last-of-type:hover { + background: var(--color-secondary-hover) +} + +.book-meta > div.more-stuff > .btn-toolbar > .btn-group[aria-label="Remove from shelves"] { + max-width: 100% +} + +.book-meta > .bookinfo > div.more-stuff > .btn-toolbar > .btn-group[aria-label="Remove from shelves"] > a { + max-width: 100%; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + margin: 20px 0 0 !important; + border-radius: 3px; + background: hsla(0, 0%, 100%, .25); + text-transform: none; + padding: 0 10px; + text-align: left; + line-height: 1.5; + font-family: Open Sans semibold, Helvetica Neue, Helvetica, Arial, sans-serif +} + +.book-meta > div.more-stuff > .btn-toolbar > .btn-group[aria-label="Remove from shelves"] > a:hover { + background: #ce3d2a; + color: #fff +} + +.book-meta > div.more-stuff > .btn-toolbar > .btn-group[aria-label="Remove from shelves"] > a > .glyphicon-remove { + font-size: 12px; + padding-right: 3px +} + +.book-meta > div.more-stuff > .btn-toolbar > .btn-group[aria-label="Remove from shelves"] > a > .glyphicon-remove:before { + content: "\ea64"; + font-family: plex-icons +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > .col-sm-6 { + width: 100% +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.form-group { + padding-left: 15px +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 { + padding: 0 +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 { + padding: 0; + margin-bottom: 60px +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #submit { + float: left; + margin-left: calc(100vw - 400px) +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9.col-xs-12 > button.btn.btn-default { + float: right +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9.col-xs-12 > a:last-of-type { + float: right; + background: hsla(0, 0%, 100%, .25); + margin-right: 10px +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9.col-xs-12 > a:last-of-type:hover { + background: hsla(0, 0%, 100%, .3) +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > h2 { + width: calc(100vw - 390px) !important; + height: 60px !important; + margin: 0 !important; + padding-left: 25px !important; + color: hsla(0, 0%, 100%, .7) !important; + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif !important; + font-size: 15px !important; + line-height: 60px !important; + -webkit-text-size-adjust: 100% !important; + -moz-text-size-adjust: 100% !important; + -ms-text-size-adjust: 100% !important; + text-size-adjust: 100% !important; + white-space: nowrap !important; + -webkit-box-direction: normal !important; + -webkit-font-smoothing: antialiased !important; + -webkit-tap-highlight-color: transparent !important; + font-weight: 400 !important; + -webkit-margin-before: 0 !important; + -webkit-margin-after: 0 !important; + position: fixed !important; + top: 60px !important; + left: 240px !important; + text-align: left !important; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + padding-right: 25px !important +} + +body.shelf-down > .discover > h2 { + color: inherit; + margin-bottom: 20px; +} + +body.shelf-down > .discover > .row > .book.col-sm-3.col-lg-2.col-xs-6 { + max-width: 225px !important; + width: 225px !important; +} + +body.shelf-down .btn-group button#btnGroupDrop1 { + height: 50px; +} + +.author > .container-fluid > .row-fluid > .col-sm-10 > h2:before, .plexBack > a { + -moz-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + text-size-adjust: 100% +} + +.author > .container-fluid > .row-fluid > .col-sm-10 > h2:before, .blur-wrapper > div, .plexBack > a { + -webkit-box-direction: normal; + -webkit-font-smoothing: antialiased +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group { + position: fixed; + top: 60px; + right: 0 +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [data-target="#DeleteShelfDialog"] { + position: relative; + float: right; + width: 50px; + height: 60px; + border-radius: 0; + background: 0 0; + color: transparent; + overflow: hidden; + padding: 6px 11px +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [data-target="#DeleteShelfDialog"]:before { + content: "\EA6D"; + font-family: plex-icons-new; + position: absolute; + color: hsla(0, 0%, 100%, .7); + font-size: 20px; + padding: 6px 0 0 2px +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [data-target="#DeleteShelfDialog"]:hover { + background: #ce3d2a +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [data-target="#DeleteShelfDialog"]:hover:before { + color: #fff +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=edit] { + position: relative; + float: right; + width: 50px; + height: 60px; + border-radius: 0; + background: 0 0; + color: transparent; + overflow: hidden; + margin: 0; + padding: 6px 13px +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=edit]:before { + content: "\EA5d"; + font-family: plex-icons; + position: absolute; + color: hsla(0, 0%, 100%, .7); + font-size: 20px; + padding: 6px 0 0 2px +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=edit]:hover:before { + color: #fff +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=edit]:hover { + background: 0 0 +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=order] { + position: relative; + float: right; + width: 50px; + height: 60px; + border-radius: 0; + background: 0 0; + color: transparent; + overflow: hidden; + margin: 0; + padding: 6px 11px +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=order]:before { + content: "\E409"; + font-family: Glyphicons Regular; + position: absolute; + color: hsla(0, 0%, 100%, .7); + font-size: 20px; + padding: 6px 0 0 2px +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=order]:hover:before { + color: #fff +} + +body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=order]:hover { + background: 0 0 +} + +body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a:hover { + color: #fff !important; + -webkit-transition: color .2s; + -o-transition: color .2s; + transition: color .2s; + background-color: rgba(0, 0, 0, .55) !important +} + +.blur-wrapper:after { + content: ''; + display: block; + width: 100vw; + height: 100%; + position: fixed; + top: 0; + left: 0; + background-image: url(images/caliblur/blur-noise.png) !important; + background-repeat: repeat !important; + background-attachment: fixed !important; + background-position: center center !important; + background-size: auto !important; + -webkit-background-size: auto !important +} + +.blur-wrapper { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: #3f4245; + -o-transition: background-color 1s ease-in; + transition: background-color 1s ease-in; + -webkit-transition: background-color 1s ease-in; + z-index: -9 +} + +.blur-wrapper > div { + -moz-osx-font-smoothing: grayscale; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -ms-flex-direction: row; + flex-direction: row; + overflow: hidden +} + +.bg-blur { + background-size: cover; + background-position: center center; + background-repeat: no-repeat; + width: 100% !important; + height: 100% !important; + position: absolute; + max-width: 100% !important; + -webkit-filter: blur(125px) brightness(85%); + filter: blur(125px) brightness(85%); + -moz-filter: blur(125px); + -o-filter: blur(125px); + -ms-filter: blur(125px); + opacity: .4; + -webkit-animation: fade 1s; + animation: fade 1s; + -moz-animation: fade 1s; + -o-animation: fade 1s; + -o-object-fit: cover; + object-fit: cover +} + +.plexBack, .plexBack > a { + display: block; + height: 60px; + letter-spacing: normal; + font-size: 20px; + top: 0; + font-weight: 400; + cursor: pointer +} + +.authorlist .blur-wrapper { + background: 0 0 +} + +#scnd-nav > li.nav-head:first-child { + margin-top: 10px +} + +.btn-danger { + color: #fff; + background-color: #ac3323; + border-color: #ac3323 +} + +.btn-danger:hover { + background-color: #ce3d2a; + border-color: #641e14 +} + +.caret { + border-top: 5px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent +} + +.plexBack { + color: hsla(0, 0%, 100%, .7); + line-height: 34.29px; + margin: 0; + padding: 0; + position: absolute; + width: 40px; + left: 50px +} + +.plexBack > a { + color: rgba(255, 255, 255, .7); + font-family: plex-icons-new; + -webkit-font-variant-ligatures: normal; + font-variant-ligatures: normal; + line-height: 60px; + position: relative; + text-align: center; + -webkit-text-size-adjust: 100%; + text-transform: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + width: 100%; + padding: 0 10px +} + +.plexBack > a:before { + content: "\EA2F" +} + +.plexBack:not(.noBack):hover > a { + color: #fff +} + +.login .well > h2 { + display: none +} + +.login .well > form { + max-width: 480px; + margin: auto +} + +.login .well > form input { + background-color: hsla(0, 0%, 100%, .25) +} + +.login ::-webkit-input-placeholder { + color: transparent +} + +.login :-moz-placeholder { + color: transparent +} + +.login ::-moz-placeholder { + color: transparent +} + +.login :-ms-input-placeholder { + color: transparent +} + +body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a { + width: 100vw; + height: 120px; + margin: 0 !important; + text-align: center; + padding: 60px 0 0; + background: 0 0; + color: #ccc !important; + font-size: 20px +} + +body.login > .container-fluid { + width: 100vw; + height: 100%; + position: relative +} + +body.login > div.container-fluid > div.row-fluid > 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 { + display: none !important +} + +.login .navbar-default { + background: 0 0 !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 +} + +body.author .undefined-img, body.shelfcreate, body.shelfedit { + background-repeat: repeat, no-repeat !important; + background-attachment: fixed, fixed !important; + 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 { + display: none +} + +.book-meta > .bookinfo > .comments[aria-expanded=true] + a:after, .book-meta > .description[aria-expanded=true] + a:after { + content: ''; + display: inline-block; + border-color: hsla(0, 0%, 100%, .45); + width: 10px; + height: 10px; + border-top-width: 0; + border-right: 4px solid transparent; + border-bottom-width: 5px; + border-left: 4px solid transparent; + position: absolute; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + border-style: solid; + vertical-align: middle; + -webkit-transition: border .2s, -webkit-transform .4s; + -o-transition: border .2s, transform .4s; + transition: border .2s, transform .4s; + transition: border .2s, transform .4s, -webkit-transform .4s; + margin: 9px 6px +} + +.book-meta > .bookinfo > .comments[aria-expanded=false] + a:after, .book-meta > .description[aria-expanded=false] + a:after { + content: ''; + display: inline-block; + border-color: hsla(0, 0%, 100%, .45); + width: 0; + height: 0; + border-bottom-width: 0; + border-right: 4px solid transparent; + border-top-width: 5px; + border-left: 4px solid transparent; + position: absolute; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + border-style: solid; + vertical-align: middle; + -webkit-transition: border .2s, -webkit-transform .4s; + -o-transition: border .2s, transform .4s; + transition: border .2s, transform .4s; + transition: border .2s, transform .4s, -webkit-transform .4s; + margin: 12px 6px +} + +.book-meta > .bookinfo > .comments + a, .book-meta > .description + a { + width: 100px; + margin-top: 10px; + -webkit-transition: all .2s; + -o-transition: all .2s; + transition: all .2s +} + +.book-meta > .bookinfo > .comments + a:hover, .book-meta > .description + a:hover { + text-decoration: none +} + +.book-meta > .bookinfo > .comments[aria-expanded=false] + a:hover:after, .book-meta > .description[aria-expanded=false] + a:hover:after { + border-color: #fff; + border-right: 4px solid transparent; + border-top-width: 5px; + border-left: 4px solid transparent +} + +.book-meta > .bookinfo > .comments[aria-expanded=true] + a:hover:after, .book-meta > .description[aria-expanded=true] + a:hover:after { + border-color: #fff; + border-right: 4px solid transparent; + border-bottom-width: 5px; + border-left: 4px solid transparent +} + +.navigation > ul > li > a > span.hidden-sm { + display: inline-block !important +} + +.shelfcreate .col-sm-10 > .discover > form, .shelfedit .col-sm-10 > .discover > form { + width: 500px; + height: 500px; + margin: auto; + max-width: calc(100vw - 300px); + max-height: calc(100% - 200px) +} + +body.shelfcreate > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.form-group, body.shelfedit > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.form-group { + padding-left: 0 +} + +body.shelfcreate, body.shelfedit { + background-size: auto, cover !important; + -webkit-background-size: auto, cover !important; + -moz-background-size: auto, cover !important; + -o-background-size: auto, cover !important; + -webkit-transition: background-image 2s ease-in; + -o-transition: background-image 2s ease-in; + transition: background-image 2s ease-in +} + +body.author .undefined-img { + background-image: url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png) !important; + background-size: auto, cover !important; + -webkit-background-size: auto, cover !important; + -moz-background-size: auto, cover !important; + -o-background-size: auto, cover !important; + opacity: 1; + -webkit-filter: none; + filter: none; + width: 100vw; + height: 100%; + position: fixed; + top: 0; + left: 0; + content: '' +} + +body.author img.bg-blur[src=undefined] { + display: none +} + +body.author:not(.authorlist) .undefined-img:before { + content: "\e008"; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + font-size: 6vw; + position: fixed; + left: 240px; + top: 200px; + width: 20%; + text-align: center; + z-index: 9 +} + +.author > .container-fluid > .row-fluid > .col-sm-10 > h2:before { + content: "About Author"; + width: calc(100vw - 240px); + height: 60px; + margin: 0; + padding-left: 25px; + color: hsla(0, 0%, 100%, .7); + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 60px; + -webkit-text-size-adjust: 100%; + white-space: nowrap; + -webkit-tap-highlight-color: transparent; + font-weight: 400; + -webkit-margin-before: 0; + -webkit-margin-after: 0; + position: fixed; + top: 60px; + left: 240px; + text-align: left +} + +.author > .container-fluid > .row-fluid > .col-sm-10 > h2 { + font-size: 24px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #eee; + font-weight: 400; + line-height: 1; + margin: 60px 0 0; + padding: 15px 15px 35px; + border-bottom: 2px solid rgba(0, 0, 0, .3) +} + +.author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio { + padding: 35px 15px 15px; + font-size: 15px; + color: hsla(0, 0%, 100%, .65) +} + +.author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio > img { + position: fixed; + left: 270px; + top: 200px; + width: calc(20% - 60px); + max-width: 250px +} + +.author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio > .author-link { + color: var(--color-secondary) +} + +.author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio > .author-link:hover { + color: var(--color-secondary-hover) +} + +body.author:not(.authorlist) > div.container-fluid > div > div.col-sm-10 { + width: calc(100% - 240px); + left: 240px; + padding-left: 20%; + padding-right: 30px; + padding-bottom: 20px +} + +body.author > div.container-fluid > div > div.col-sm-10 > div.discover { + width: 100%; + padding: 0 0 0 15px !important +} + +body.author > div.container-fluid > div > div.col-sm-10 > div.discover > h3 { + font-size: 15px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + line-height: 24px; + text-transform: uppercase; + color: #eee +} + +.author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio a { + color: var(--color-secondary) +} + +.author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio a:hover { + color: var(--color-secondary-hover) +} + +body.shelf.modal-open > .container-fluid { + z-index: 9 +} + +#DeleteShelfDialog .text-center { + text-align: left +} + +#DeleteShelfDialog { + top: 0; + overflow: hidden; + padding-top: 70px; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, .5) +} + +#DeleteShelfDialog > .modal-dialog { + width: 450px; + margin: auto +} + +#DeleteShelfDialog > .modal-dialog > .modal-content { + max-height: calc(100% - 90px); + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + border-radius: 3px; + z-index: 9999999999999999999999; + left: calc(50% - 225px); + right: auto; + width: 450px +} + +#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-header { + padding: 15px 20px; + border-radius: 3px 3px 0 0; + line-height: 1.71428571; + vertical-align: bottom; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + font-weight: 400; + color: #eee; + border-bottom: 1px solid #222; + background-color: #323232 +} + +#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-header:before { + content: "\E197"; + padding-right: 10px; + font-size: 18px; + color: #999; + display: inline-block; + font-family: Glyphicons Regular; + font-style: normal; + font-weight: 400 +} + +#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-header:after { + content: "Delete Shelf"; + display: inline-block; + font-size: 20px +} + +#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-header > span { + display: none +} + +#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-body { + padding: 20px 20px 30px; + font-size: 16px; + line-height: 1.6em; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #eee; + background: #282828 +} + +#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-body > span:before { + content: "Are you sure you want to delete this shelf?"; + display: inline-block; + padding-right: 5px +} + +#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-body:after { + content: ''; + position: absolute; + width: 100%; + height: 72px; + background-color: #323232; + border-radius: 0 0 3px 3px; + left: 0; + margin-top: 30px; + z-index: 0; + border-top: 1px solid #222; + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5) +} + +#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-body > .btn { + float: right; + z-index: 9; + position: relative; + margin: 45px 0 0 10px; + min-width: 80px; + padding: 10px 18px; + font-size: 16px; + line-height: 1.33; + border-radius: 3px +} + +#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-body > .btn-default { + background-color: hsla(0, 0%, 100%, .25) +} + +#DeleteShelfDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:hover { + background-color: hsla(0, 0%, 100%, .3) +} + +.btn-warning.active.focus, .btn-warning.active:focus, .btn-warning.active:hover, .btn-warning:active.focus, .btn-warning:active:focus, .btn-warning:active:hover, .open > .dropdown-toggle.btn-warning.focus, .open > .dropdown-toggle.btn-warning:focus, .open > .dropdown-toggle.btn-warning:hover { + color: initial; + background-color: initial; + border-color: initial +} + +#remove-from-shelves > .btn { + background-color: rgba(0, 0, 0, .15); + color: hsla(0, 0%, 100%, .7); + padding: 0 10px; + font-size: 13px; + display: inline-block; + overflow: hidden; + border-radius: 4px; + vertical-align: middle; + text-align: center; + white-space: nowrap; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + -webkit-transition: background-color .2s, color .2s; + -o-transition: background-color .2s, color .2s; + transition: background-color .2s, color .2s; + margin: 2px 6px 0 0; + text-transform: none +} + +#remove-from-shelves > .btn > span { + font-size: 10px; + display: inline-block; + top: 3px; + line-height: inherit; + position: absolute; + right: 5px +} + +#remove-from-shelves > .btn > span:before { + content: "\EA52"; + font-family: plex-icons-new; + color: transparent; + padding-left: 5px +} + +#remove-from-shelves > a:first-of-type { + margin-left: 40px; + overflow: visible +} + +#remove-from-shelves > a:first-of-type:before { + content: "\EA4D"; + font-family: plex-icons-new; + position: absolute; + color: hsla(0, 0%, 100%, .45); + font-style: normal; + font-weight: 400; + font-size: 14px; + left: -40px; + pointer-events: none +} + +#remove-from-shelves > .btn:hover { + padding-right: 20px; + background: #ce3d2a; + color: #fff; + -webkit-transition: all .2s; + -o-transition: all .2s; + transition: all .2s +} + +#remove-from-shelves > .btn:hover span:before { + color: #fff; + -webkit-transition: all .2s ease-out; + -o-transition: all .2s ease-out; + transition: all .2s ease-out +} + +#remove-from-shelves + .identifiers, #remove-from-shelves + .languages, #remove-from-shelves + .publishers, #remove-from-shelves + .publishing-date, #remove-from-shelves + .tags { + margin-top: -25px; + z-index: 9; + position: relative +} + +#remove-from-shelves > a.btn:last-of-type { + margin-bottom: 35px +} + +#DeleteShelfDialog:before { + content: "\E208"; + padding-right: 10px; + display: block; + font-family: Glyphicons Regular; + font-style: normal; + font-weight: 400; + position: absolute; + left: calc(50% + 185px); + top: 88px; + font-size: 16px; + color: #eee; + opacity: .5; + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: transform .3s ease-out; + transition: transform .3s ease-out; + transition: transform .3s ease-out, -webkit-transform .3s ease-out; + -webkit-transform: translate(0, -60px); + -ms-transform: translate(0, -60px); + transform: translate(0, -60px); + z-index: 99 +} + +#DeleteShelfDialog.modal.in:before { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0) +} + +#DeleteShelfDialog:hover:before { + cursor: pointer +} + +.btn-default.active:hover, .btn-default:active:hover { + border-color: var(--color-secondary-hover); + color: #fff; + background-color: var(--color-secondary-hover) +} + +body.advanced_search > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 { + padding: 20px 0 60px; + margin-top: 120px; + border-top: 2px solid rgba(0, 0, 0, .3); + width: calc(80% - 30px) +} + +body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > div, body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > label { + padding-left: 15px; + padding-right: 15px +} + +body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > div .rating-input { + padding-top: 0; + padding-bottom: 0 +} + +body.advanced_search > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 > form > .btn.btn-default { + margin-right: 15px; + margin-top: 20px +} + +.advanced_search #search > .row > .form-group.col-sm-6 { + padding-left: 0; + margin-bottom: 0 +} + +.advanced_search #search > .row > .form-group.col-sm-6 > label[for=ratinghigh], .advanced_search #search > .row > .form-group.col-sm-6 > label[for=ratinglow] { + color: hsla(0, 0%, 100%, .45); + font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif; + font-weight: 400; + margin-top: 10px +} + +.glyphicon-remove:before { + content: "\EA52"; + font-family: plex-icons-new; + font-weight: 400 +} + +body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > div.row:nth-child(4) { + margin-bottom: 30px +} + +.me .dropdown-menu > li > #top_user { + color: var(--color-primary) +} + +.navbar-right > li > ul.dropdown-menu.offscreen { + right: -10px +} + +.login .plexBack, body.login > div.container-fluid > div.row-fluid > div.col-sm-2, body.login > div.navbar.navbar-default.navbar-static-top > div > form { + display: none +} + +@media only screen and (min-width: 768px) { + #main-nav + #scnd-nav { + 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 { + display: none + } + + body:not(.blur) > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul > li > a#top_user { + height: 60px; + padding: 0 !important; + background: 0 0 !important; + color: hsla(0, 0%, 100%, .7); + line-height: 20px; + position: fixed; + display: block; + 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 { + 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 { + width: 30px; + height: 30px; + margin: 15px; + top: 0; + 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 { + content: ''; + display: inline-block; + overflow: hidden; + border-radius: 50%; + background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K); + background-size: contain; + position: absolute; + width: 30px; + 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 { + content: ''; + display: inline-block; + width: 0; + height: 0; + margin: 15px 0 0 35px; + vertical-align: middle; + border-top: 5px dashed; + border-right: 4px solid transparent; + 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 { + display: none + } + + body:not(.blur) #nav_new { + margin-bottom: 30px + } + + body:not(.blur) #nav_new:before { + content: "\EA4F"; + font-family: plex-icons; + font-style: normal; + font-weight: 400; + line-height: 1; + color: hsla(0, 0%, 100%, .7); + font-size: 13px; + position: absolute; + left: 25px; + margin-top: 9px + } + + body:not(.blur) #nav_new:after { + content: "Advanced Search"; + color: hsla(0, 0%, 100%, .7); + font-size: 13px; + line-height: 1.71428571; + white-space: nowrap; + position: absolute; + left: 49px; + margin-top: 5px + } + + body:not(.blur) > .navbar > .container-fluid > .navbar-header:after, body:not(.blur) > .navbar > .container-fluid > .navbar-header:before { + color: hsla(0, 0%, 100%, .7); + cursor: pointer; + display: block; + font-family: plex-icons-new; + font-size: 20px; + font-stretch: 100%; + font-style: normal; + font-variant-caps: normal; + font-variant-east-asian: normal; + font-variant-numeric: normal; + font-weight: 400; + height: 60px; + letter-spacing: normal; + line-height: 60px; + position: absolute + } + + body:not(.blur) > .navbar > .container-fluid > .navbar-header:before { + content: "\EA30"; + -webkit-font-variant-ligatures: normal; + font-variant-ligatures: normal; + left: 20px + } + + body:not(.blur) > .navbar > .container-fluid > .navbar-header:after { + content: "\EA2F"; + -webkit-font-variant-ligatures: normal; + font-variant-ligatures: normal; + left: 60px + } +} + +body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row:first-of-type > div.col > h2:before, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type:before, body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1:before, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1:before { + width: calc(100vw - 240px); + height: 60px; + margin: 0; + padding-left: 25px; + background: 0 0; + color: hsla(0, 0%, 100%, .7); + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 60px; + -webkit-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + text-size-adjust: 100%; + -webkit-box-direction: normal; + -webkit-font-smoothing: antialiased; + -webkit-tap-highlight-color: transparent; + -webkit-margin-before: 0; + -webkit-margin-after: 0; + top: 60px; + white-space: nowrap; + font-weight: 400 +} + +body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row:first-of-type > div.col > h2:before, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type:before { + content: "Admin Settings"; + position: fixed; + left: 240px +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1:before { + content: "User Settings"; + position: fixed; + left: 240px +} + +body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1:before { + content: "New User"; + position: fixed; + left: 240px +} + +body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid { + height: auto; + width: calc(100vw - 257px); + margin: 20px 0 30px !important; + padding: 0 10px 0 40px !important +} + +body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > h2, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2 { + font-size: 24px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #eee; + font-weight: 400; + line-height: 1 +} + +.table-striped > tbody > tr:nth-of-type(2n+1) { + background-color: transparent +} + +body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > .btn > a, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > .btn > a { + text-decoration: none; + color: #fff +} + +body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col .table > tbody > tr > td, body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col .table > tbody > tr > th, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > .table > tbody > tr > td, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > .table > tbody > tr > th { + border: collapse +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10::before, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10::before { + content: ''; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + font-size: 6vw; + position: fixed; + left: 240px; + top: 180px; + width: calc(20% - 55px); + text-align: center; + background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K); + background-size: 6vw; + background-position-x: center; + height: 100%; + background-repeat: no-repeat +} + +body.edituser.admin > div.container-fluid > div > div.col-sm-10 > div.discover, body.newuser.admin > div.container-fluid > div > div.col-sm-10 > div.discover { + left: 240px; + margin: 120px 0 0 20% !important; + padding: 30px 15px 15px !important; + width: calc(80% - 30px); + border-top: 2px solid rgba(0, 0, 0, .3) +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1 { + width: auto; + position: absolute; + top: 60px; + left: 20%; + font-size: 24px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #eee; + font-weight: 400; + line-height: 1; + padding-left: 30px +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #submit, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #submit { + float: right; + margin-left: 10px +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #back, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #back { + float: right; + margin-left: 0; + background-color: hsla(0, 0%, 100%, .25) +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #back:hover, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #back:hover { + background-color: hsla(0, 0%, 100%, .3) +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 { + margin-bottom: 60px +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 { + padding: 0 +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > h2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > h2 { + color: #eee; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + line-height: 24px; + overflow: hidden; + min-width: 0; + width: 100%; + max-width: 100%; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + text-transform: uppercase; + font-weight: 400; + padding-left: 15px; + margin-bottom: 20px; + top: 0; + left: 0; + height: auto +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 { + height: 200px; + padding: 0; + margin: 15px +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a { + width: 100%; + display: inline-block; + height: 100% +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:hover, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:hover { + outline: solid var(--color-secondary); + font-size: 50px; + -o-transition: outline 0s; + transition: outline 0s; + -webkit-transition: outline 0s +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:before { + content: "\e352"; + display: inline-block; + position: absolute; + font-family: Glyphicons Regular; + background: var(--color-secondary); + color: #fff; + border-radius: 50%; + font-weight: 400; + font-size: 18px; + line-height: 50px; + width: 50px; + height: 50px; + padding-left: 16px; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; + opacity: 0; + z-index: 9 +} + +body.admin, body.admin td > a { + color: hsla(0, 0%, 100%, .65) +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:hover:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:hover:before { + -o-transition: opacity .2s; + transition: opacity .2s; + -webkit-transition: opacity .2s; + opacity: 1 +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:after, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:after { + position: absolute; + content: ''; + width: 100%; + height: 100%; + top: 0; + left: 0; + opacity: 0; + background: -webkit-radial-gradient(50% 50%, farthest-corner, rgba(50, 50, 50, .5) 50%, #323232 100%); + background: -o-radial-gradient(50% 50%, farthest-corner, rgba(50, 50, 50, .5) 50%, #323232 100%); + background: radial-gradient(farthest-corner at 50% 50%, rgba(50, 50, 50, .5) 50%, #323232 100%) +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:hover:after, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a:hover:after { + opacity: 1; + -o-transition: opacity .2s; + transition: opacity .2s; + -webkit-transition: opacity .2s +} + +body.admin .panel { + background: rgba(0, 0, 0, .15); + border: none; + box-shadow: none; + -webkit-box-shadow: none; + border-radius: 0 +} + +body.admin .panel-default > .panel-collapse > .panel-body, body.admin .panel-default > .panel-heading { + color: hsla(0, 0%, 100%, .65); + background-color: transparent; + border: none +} + +body.config.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > *, body.uiconfig.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > * { + float: right +} + +body.config.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > a, body.uiconfig.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > a { + background-color: hsla(0, 0%, 100%, .25); + margin-right: 10px +} + +body.config.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > a:hover, body.uiconfig.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > a:hover { + background-color: hsla(0, 0%, 100%, .3) +} + +body.admin { + background-image: url(images/caliblur/blur-noise.png), url(images/caliblur/blur-dark.png) !important +} + +body.admin td { + font-family: Open Sans regular, Helvetica Neue, Helvetica, Arial, sans-serif +} + +body.admin td > a:hover { + color: #fff +} + +.glyphicon-ok::before { + content: "\EA55"; + font-family: plex-icons-new; + font-weight: 400 +} + +body.admin.config > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type, body.admin.uiconfig > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type, body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover > h1 { + width: calc(100vw - 240px); + background: rgba(0, 0, 0, .15); + color: hsla(0, 0%, 100%, .7); + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 60px; + -webkit-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + text-size-adjust: 100%; + -webkit-box-direction: normal; + -webkit-margin-before: 0; + -webkit-margin-after: 0; + height: 60px; + top: 60px; + left: 240px; + position: fixed; + -webkit-tap-highlight-color: transparent; + -webkit-font-smoothing: antialiased; + white-space: nowrap; + font-weight: 400 +} + +body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover > h1 { + margin: 0; + padding-left: 25px +} + +body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover { + padding: 0 30px !important; + margin-bottom: 120px !important +} + +body.admin.config > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type::before, body.admin.uiconfig > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type::before { + content: none +} + +body.admin.config > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type, body.admin.uiconfig > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type { + margin: 0; + padding-left: 25px +} + +body:not(.blur) #scnd-nav > li > a > .glyphicon-book, body:not(.blur) #scnd-nav > li > a > .glyphicon-search { + margin-right: 7px +} + +#scnd-nav > li > a > .glyphicon-search { + margin-right: 11px +} + +#remove-from-shelves + .more-stuff + .languages, .identifiers + .more-stuff + .languages, .tags + .more-stuff + .languages { + margin-top: 20px +} + +body:not(.blur):not(.login):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.langlist):not(.authorlist):not(.serieslist):not(.catlist):not(.shelforder):not(.admin):not(.modal-open) > div.container-fluid > div.row-fluid > div.col-sm-10:after { + background: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, .15)), to(rgba(0, 0, 0, .15))), url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png) !important; + background: -webkit-linear-gradient(bottom, rgba(0, 0, 0, .15), rgba(0, 0, 0, .15)), url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png) !important; + background: -o-linear-gradient(bottom, rgba(0, 0, 0, .15), rgba(0, 0, 0, .15)), url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png) !important; + background: linear-gradient(0deg, rgba(0, 0, 0, .15), rgba(0, 0, 0, .15)), url(images/caliblur/blur-noise.png), url(images/caliblur/blur-light.png) !important; + background-repeat: no-reapeat, repeat, no-repeat !important; + background-attachment: fixed, fixed, fixed !important; + background-position: center center, center center, center center !important; + background-size: auto, auto, cover !important; + -webkit-background-size: auto, auto, cover !important; + -moz-background-size: autom, auto, cover !important; + -o-background-size: auto, auto, cover !important; + width: 100%; + height: 60px; + display: block; + content: ''; + position: fixed; + top: 60px; + left: 240px; + z-index: 99999999999999999999999999999999999 +} + +body.advsearch:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8:before, body.book:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.single:before, body.stat:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10:before, body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover:first-of-type:before { + background: url(images/caliblur/blur-noise.png) center center fixed, url(images/caliblur/blur-light.png) center center no-repeat fixed !important; + background-size: auto, cover !important; + -webkit-background-size: auto, cover !important; + -moz-background-size: auto, cover !important; + -o-background-size: auto, cover !important; + width: calc(100vw - 240px); + height: calc(100% - 120px); + display: block; + content: ''; + position: fixed; + top: 120px; + left: 240px; + right: 0; + bottom: 0; + z-index: 99999999999999999999999999999999999 +} + +body.advsearch:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8:after, body.book:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.single:after, body.stat:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > p:first-of-type:after, body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover:first-of-type:after { + content: ''; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 2px solid transparent; + border-radius: 50%; + border-top: 2px solid var(--color-secondary); + border-right: 2px solid var(--color-secondary); + width: 24px; + height: 24px; + -webkit-animation: loading .5s linear infinite; + animation: loading .5s linear infinite; + display: block; + top: 240px; + left: calc(50% + 120px); + position: fixed; + z-index: 999999999999999999999999999999999999 +} + +.search #shelf-actions, body.login .home-btn { + display: none +} + +body.read:not(.blur) a[href*=readbooks] { + color: hsla(0, 0%, 100%, .7) !important +} + +.tooltip { + -webkit-transform: translate(0) scale(1); + -ms-transform: translate(0) scale(1); + transform: translate(0) scale(1) +} + +.tooltip.in { + opacity: 1; + -o-transition: opacity .15s ease-out, transform .15s cubic-bezier(.6, .4, .2, 1.4); + transition: opacity .15s ease-out, transform .15s cubic-bezier(.6, .4, .2, 1.4); + transition: opacity .15s ease-out, transform .15s cubic-bezier(.6, .4, .2, 1.4), -webkit-transform .15s cubic-bezier(.6, .4, .2, 1.4); + -webkit-transform: translate(0) scale(1); + -ms-transform: translate(0) scale(1); + transform: translate(0) scale(1); + pointer-events: none +} + +.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: #191a1c; + -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: #eee +} + +.tooltip.bottom .tooltip-arrow { + width: 0; + margin-left: auto; + height: 0; + border: 6px solid transparent; + top: -6px; + border-bottom-color: #191a1c; + left: 50%; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); + position: absolute; + margin-top: -16px !important +} + +#sendbtn > span { + height: 60px +} + +body.search > div.container-fluid > div > div.col-sm-10 > div.discover > h2 + p { + border-top: 2px solid rgba(0, 0, 0, .3); + margin: 90px 27px 0 20px; + text-align: center; + padding-top: 100px; + color: hsla(0, 0%, 100%, .45); + font-size: 18px; + line-height: 1.5 +} + +body.search > div.container-fluid > div > div.col-sm-10 > div.discover > h2 + p:before { + content: "Library"; + position: absolute; + top: 25px; + left: 60px; + color: #fff; + font-size: 24px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + line-height: 1.71428571 +} + +body.search > div.container-fluid > div > div.col-sm-10 > div.discover > h2 + p:after { + content: "No Results"; + position: absolute; + margin-left: -170px; + margin-top: -40px; + font-size: 20px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #eee +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 { + max-width: calc(25% - 75px); + position: fixed +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 { + margin-left: 25% !important; + width: 75% +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete { + position: fixed; + top: 60px; + right: 0; + width: 50px; + height: 60px; + color: transparent; + background: 0 0; + overflow: hidden; + cursor: pointer; + border-radius: 0 +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete:before, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete:before { + content: "\EA6D"; + font-family: plex-icons-new; + font-size: 18px; + color: hsla(0, 0%, 100%, .7) +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete:hover, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete:hover { + background: #ce3d2a +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete:hover:before, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center > #delete:hover:before { + color: #fff +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center.more-stuff > h4, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-3 > div.text-center.more-stuff > h4 { + color: #eee; + margin: 20px; + text-transform: uppercase; + font-size: 16px +} + +.editbook .form-control.tt-hint, .upload .form-control.tt-hint { + background: hsla(0, 0%, 100%, .08) !important +} + +.checkbox input[type=checkbox] { + margin-left: -19px; + margin-top: 5px +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover { + width: calc(100% - 3px); + margin: 0 0 0 3px !important; + padding: 0 !important; + border-collapse: collapse +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container, body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table { + border: none; + border-radius: 0 +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th { + border-bottom: none; + border-radius: 0; + background-color: hsla(0, 0%, 100%, .1); + border-right: 2px solid transparent; + text-align: left !important; + position: relative +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th:last-of-type { + border-right: none +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th:hover { + background-color: hsla(0, 0%, 100%, .15); + color: #fff +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th:hover .th-inner { + color: #fff +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th > .th-inner { + font-size: 13px; + color: hsla(0, 0%, 100%, .7); + -webkit-tap-highlight-color: transparent; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + -webkit-font-smoothing: antialiased; + background-image: none; + text-align: left; + padding: 8px 20px; + white-space: nowrap; + width: 100%; + -webkit-transition: color .2s; + -o-transition: color .2s; + transition: color .2s +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th > .th-inner.asc, body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th > .th-inner.desc { + color: #fff +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th > .th-inner.asc:after { + content: "\EA58"; + font-family: plex-icons-new; + font-weight: 400; + right: 20px; + position: absolute +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th > .th-inner.desc:after { + content: "\EA57"; + font-family: plex-icons-new; + font-weight: 400; + right: 20px; + position: absolute +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > tbody > tr:hover { + background: 0 0 !important +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > tbody > tr > td { + background: 0 0; + border: none; + text-align: left !important; + padding: 8px 20px; + color: hsla(0, 0%, 100%, .65); + -webkit-tap-highlight-color: transparent; + font-size: 13px; + font-family: Open Sans Semibold, Helvetica Neue, Helvetica, Arial, sans-serif; + -webkit-font-smoothing: antialiased +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > tbody > tr:nth-of-type(even) { + background-color: hsla(0, 0%, 100%, .02) !important +} + +body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > tbody > tr.no-records-found > td:before { + content: "No Records Found"; + position: absolute; + top: 120px; + left: calc(50% - 66px); + font-size: 14px; + color: hsla(0, 0%, 100%, .65) +} + +.epub-back, .epub-back:before { + display: inline-block; + overflow: hidden +} + +.epub-back { + width: 18px; + height: 19px; + line-height: 20px; + opacity: .5; + padding: 4px; + border-radius: 4px; + position: relative +} + +.epub-back > input { + opacity: 0; + width: 26px; + height: 27px; + position: absolute; + overflow: hidden; + padding: 0; + left: 0; + top: 0 +} + +.epub-back:before { + content: "\EA1C"; + font-family: plex-icons-new; + font-weight: 400; + color: #4f4f4f; + position: absolute; + opacity: .5; + font-size: 16px; + left: 5px; + top: 4px +} + +.epub-back:hover:before { + top: 3px; + left: 4px; + opacity: 1 +} + +.epub-back:hover { + border: 1px solid rgba(0, 0, 0, .2); + padding: 3px +} + +.col-sm-10 .book-meta > div.btn-toolbar > div.btn-group > div.btn-group > p:first-child { + margin: 0 +} + +body.login > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a:hover { + color: #ccc !important; + background-color: transparent !important +} + +.empty-ul { + opacity: .6; + cursor: default; + pointer-events: none +} + +#DeleteDomain:hover:before, #RestartDialog:hover:before, #ShutdownDialog:hover:before, #StatusDialog:hover:before, #deleteButton, #deleteModal:hover:before, body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover td > a:hover { + cursor: pointer +} + +.lDutch { + padding-left: 90px !important +} + +.blur-wrapper + .dropdown-menu { + position: fixed; + top: 118px; + right: 5px +} + +#read-in-browser[aria-expanded=true], #shelf-actions > .btn-group.open, .downloadBtn.open, .profileDrop[aria-expanded=true] { + pointer-events: none +} + +#btnGroupDrop1[aria-expanded=true] > span, #read-in-browser[aria-expanded=true] > span, #shelf-actions > .btn-group.open > #add-to-shelf > span { + color: #fff +} + +.navigation li a span { + vertical-align: middle; + margin-bottom: 1px +} + +.navigation li.active a .glyphicon-star { + color: var(--color-primary) +} + +#shelf-actions, #shelf-actions > .btn-group, #shelf-actions > .btn-group > .empty-ul { + pointer-events: none +} + +#shelf-actions > .btn-group > #add-to-shelf[aria-expanded=false]:not(.empty-ul) { + pointer-events: auto +} + +.book-meta > .bookinfo > .comments p, .description p { + margin: 0 0 28px +} + +#login, .profileDrop + span.hidden-sm { + display: none +} + +.admin #container > h2, body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > h2 { + font-size: 24px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #eee; + font-weight: 400; + line-height: 1 +} + +.admin #container > .col-xs-12, body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > .col-xs-12 { + width: 100%; + background: rgba(0, 0, 0, .15); + padding: 0; + border-collapse: collapse +} + +.admin #container > .col-xs-12:last-of-type, body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > .col-xs-12:last-of-type { + border-bottom: 2px solid rgba(0, 0, 0, .3) +} + +.admin #container > .col-xs-12 > .Row > .col-xs-6, body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > .col-xs-12 > .row > .col-xs-6 { + width: 50%; + padding-top: 8px; + padding-bottom: 8px; + border-top: 2px solid rgba(0, 0, 0, .3) +} + +body.admin > div.container-fluid > div > div.col-sm-10 > div.discover .btn > a { + text-decoration: none; + color: #fff +} + +.admin #container + .col-xs-12 { + padding: 0; + margin: 10px 0 30px +} + +body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > .col-xs-12:nth-child(3) { + margin-bottom: 20px +} + +body.admin:not(.modal-open) .btn-default { + margin-bottom: 10px +} + +.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { + background-color: hsla(0, 0%, 100%, .02) +} + +.form-group[aria-label="Upload cover from local drive"] > .btn-primary { + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 { + max-width: calc(25% - 75px); + position: fixed; + padding-left: 30px; + padding-right: 0; + z-index: 9 +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-9, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-9 { + margin-left: 25% !important; + width: 75% +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete { + position: fixed; + top: 60px; + right: 0; + width: 50px; + height: 60px; + color: transparent; + background: 0 0; + overflow: hidden; + cursor: pointer; + border-radius: 0 +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete:before, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete:before { + content: "\EA6D"; + font-family: plex-icons-new; + font-size: 18px; + color: hsla(0, 0%, 100%, .7); + vertical-align: super +} + +#main-nav + #scnd-nav .create-shelf a, #main-nav + #scnd-nav li.nav-head { + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + text-transform: uppercase +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete:hover, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete:hover { + background: #ce3d2a +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete:hover:before, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete:hover:before { + color: #fff +} + +body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center.more-stuff > h4, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center.more-stuff > h4 { + color: #eee; + margin: 20px; + text-transform: uppercase; + font-size: 16px +} + +#main-nav + #scnd-nav { + width: 240px; + height: calc(100% - 120px); + left: 0; + top: 120px; + background: 0 0; + padding: 0 5px 20px 0; + overflow-y: auto; + position: fixed +} + +#main-nav + #scnd-nav li.nav-head { + margin: 0; + color: hsla(0, 0%, 100%, .3); + font-size: 12px; + line-height: 45px; + padding-left: 25px +} + +#main-nav + #scnd-nav > li.nav-head:first-child { + margin-top: 10px +} + +#main-nav + #scnd-nav li { + min-height: 30px; + max-width: 265px; + overflow: visible; + border-radius: 0 4px 4px 0; + display: list-item; + height: auto; + float: none +} + +#main-nav + #scnd-nav li a { + color: hsla(0, 0%, 100%, .7); + text-decoration: none; + padding: 4px 25px; + font-size: 13px; + height: 30px; + line-height: 1.71428571; + width: 100%; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden; + border-radius: 0 4px 4px 0 +} + +#main-nav + #scnd-nav li a span { + vertical-align: middle; + margin-bottom: 1px; + margin-right: 10px +} + +#main-nav + #scnd-nav li a span:before { + font-size: 13px +} + +#main-nav + #scnd-nav li.active a { + color: var(--color-primary); + background: 0 0 +} + +#main-nav + #scnd-nav li a:hover { + background: hsla(0, 0%, 100%, .08) +} + +#main-nav + #scnd-nav li a[href*=advanced_search] { + display: block +} + +#main-nav + #scnd-nav li a[href*=advanced_search] span.hidden-sm { + display: inline-block !important +} + +#main-nav + #scnd-nav li.open a { + background: 0 0 +} + +#main-nav + #scnd-nav li.open a:hover { + background: hsla(0, 0%, 100%, .08); + color: #fff +} + +#main-nav + #scnd-nav li a .glyphicon-star { + color: hsla(0, 0%, 100%, .7) +} + +#main-nav + #scnd-nav li a:hover .glyphicon-star { + color: #fff +} + +#main-nav + #scnd-nav #nav_cat a span { + margin-right: 8px +} + +#main-nav + #scnd-nav .nav-head:nth-child(1n+2) { + border-top: none; + padding-top: 0; + width: 200px +} + +#main-nav + #scnd-nav .create-shelf { + width: 25px; + margin: 10px -15px 0 0; + min-height: auto; + /* float: right; */ + font-size: 12px; + text-align: center +} + +#main-nav + #scnd-nav .create-shelf a { + width: 165px; + color: hsla(0, 0%, 100%, .7) !important; + background-color: transparent; + padding: 5px 7px 2px; + font-size: 12px; + line-height: 1; + border-radius: 3px; + border: 0; + -webkit-transition: background-color .1s; + -o-transition: background-color .1s; + transition: background-color .1s; + font-weight: 400; + white-space: nowrap; + margin: auto; + max-height: 22px; + -o-text-overflow: initial; + text-overflow: initial; + display: block +} + +#main-nav + #scnd-nav .create-shelf a:before { + content: "\EA13"; + font-family: plex-icons-new; + font-size: 100%; + padding-right: 10px; + vertical-align: middle +} + +#main-nav + #scnd-nav .create-shelf a:hover { + background: 0 0; + color: #fff !important +} + +#main-nav + #scnd-nav:after { + width: 100%; + height: 60px; + background: rgba(0, 0, 0, .15); + display: block; + content: ''; + position: fixed; + top: 60px; + left: 240px; + pointer-events: none +} + +.modal-dialog { + margin: 0 auto 60px +} + +body.admin.modal-open .navbar { + z-index: 0 !important +} + +#RestartDialog, #ShutdownDialog, #StatusDialog, #deleteModal { + top: 0; + overflow: hidden; + padding-top: 70px; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, .5) +} + +#RestartDialog:before, #ShutdownDialog:before, #StatusDialog:before, #deleteModal:before { + content: "\E208"; + padding-right: 10px; + display: block; + font-family: Glyphicons Regular; + font-style: normal; + font-weight: 400; + position: absolute; + left: calc(50% + 185px); + top: 88px; + font-size: 16px; + color: #eee; + opacity: .5; + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: transform .3s ease-out; + transition: transform .3s ease-out; + transition: transform .3s ease-out, -webkit-transform .3s ease-out; + -webkit-transform: translate(0, -60px); + -ms-transform: translate(0, -60px); + transform: translate(0, -60px); + z-index: 99 +} + +#RestartDialog.in:before, #ShutdownDialog.in:before, #StatusDialog.in:before, #deleteModal.in:before { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0) +} + +#RestartDialog > .modal-dialog, #ShutdownDialog > .modal-dialog, #StatusDialog > .modal-dialog, #deleteModal > .modal-dialog { + width: 450px; + margin: auto +} + +#RestartDialog > .modal-dialog > .modal-content, #ShutdownDialog > .modal-dialog > .modal-content, #StatusDialog > .modal-dialog > .modal-content, #deleteModal > .modal-dialog > .modal-content { + max-height: calc(100% - 90px); + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + border-radius: 3px; + z-index: 9999999999999999999999; + left: calc(50% - 225px); + right: auto; + width: 450px +} + +#RestartDialog > .modal-dialog > .modal-content > .modal-header, #ShutdownDialog > .modal-dialog > .modal-content > .modal-header, #StatusDialog > .modal-dialog > .modal-content > .modal-header, #deleteModal > .modal-dialog > .modal-content > .modal-header { + padding: 15px 20px; + border-radius: 3px 3px 0 0; + line-height: 1.71428571; + vertical-align: bottom; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + font-weight: 400; + color: #eee; + border-bottom: 1px solid #222; + background-color: #323232; + text-align: left +} + +#RestartDialog > .modal-dialog > .modal-content > .modal-header:before, #ShutdownDialog > .modal-dialog > .modal-content > .modal-header:before, #StatusDialog > .modal-dialog > .modal-content > .modal-header:before, #deleteModal > .modal-dialog > .modal-content > .modal-header:before { + padding-right: 10px; + font-size: 18px; + color: #999; + font-style: normal; + font-weight: 400; + display: inline-block +} + +#RestartDialog > .modal-dialog > .modal-content > .modal-header:before { + content: "\EA4F"; + font-family: plex-icons-new +} + +#ShutdownDialog > .modal-dialog > .modal-content > .modal-header:before { + content: "\E064"; + font-family: glyphicons regular +} + +#StatusDialog > .modal-dialog > .modal-content > .modal-header:before { + content: "\EA15"; + font-family: plex-icons-new +} + +#deleteModal > .modal-dialog > .modal-content > .modal-header:before { + content: "\EA6D"; + font-family: plex-icons-new +} + +#RestartDialog > .modal-dialog > .modal-content > .modal-header:after { + content: "Restart Calibre-Web"; + display: inline-block; + font-size: 20px +} + +#ShutdownDialog > .modal-dialog > .modal-content > .modal-header:after { + content: "Stop Calibre-Web"; + display: inline-block; + font-size: 20px +} + +#StatusDialog > .modal-dialog > .modal-content > .modal-header:after { + content: "Update Calibre-Web"; + display: inline-block; + font-size: 20px +} + +#deleteModal > .modal-dialog > .modal-content > .modal-header:after { + content: "Delete Book"; + display: inline-block; + font-size: 20px +} + +#StatusDialog > .modal-dialog > .modal-content > .modal-header > span, #deleteModal > .modal-dialog > .modal-content > .modal-header > span, #loader > center > img, .rating-mobile { + display: none +} + +#RestartDialog > .modal-dialog > .modal-content > .modal-body { + padding: 20px 20px 10px; + font-size: 16px; + line-height: 1.6em; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #eee; + background: #282828; + text-align: left +} + +#ShutdownDialog > .modal-dialog > .modal-content > .modal-body, #StatusDialog > .modal-dialog > .modal-content > .modal-body, #deleteModal > .modal-dialog > .modal-content > .modal-body { + padding: 20px 20px 40px; + font-size: 16px; + line-height: 1.6em; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #eee; + background: #282828; + text-align: left +} + +#RestartDialog > .modal-dialog > .modal-content > .modal-body > p, #ShutdownDialog > .modal-dialog > .modal-content > .modal-body > p, #StatusDialog > .modal-dialog > .modal-content > .modal-body > p, #deleteModal > .modal-dialog > .modal-content > .modal-body > p { + padding: 20px 20px 0 0; + font-size: 16px; + line-height: 1.6em; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #eee; + background: #282828 +} + +#RestartDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#restart), #ShutdownDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#shutdown), #deleteModal > .modal-dialog > .modal-content > .modal-footer > .btn-default { + float: right; + z-index: 9; + position: relative; + min-width: 80px; + padding: 10px 18px; + font-size: 16px; + line-height: 1.33; + border-radius: 3px; + background-color: hsla(0, 0%, 100%, .25) +} + +#RestartDialog > .modal-dialog > .modal-content > .modal-body > #restart { + float: right; + z-index: 9; + position: relative; + margin: 25px 0 0 10px; + min-width: 80px; + padding: 10px 18px; + font-size: 16px; + line-height: 1.33; + border-radius: 3px +} + +#ShutdownDialog > .modal-dialog > .modal-content > .modal-body > #shutdown, #StatusDialog > .modal-dialog > .modal-content > .modal-body > #updateFinished { + float: right; + z-index: 9; + position: relative; + margin: 55px 0 0 10px; + min-width: 80px; + padding: 10px 18px; + font-size: 16px; + line-height: 1.33; + border-radius: 3px +} + +#deleteModal > .modal-dialog > .modal-content > .modal-footer > .btn-danger { + float: right; + z-index: 9; + position: relative; + margin: 0 0 0 10px; + min-width: 80px; + padding: 10px 18px; + font-size: 16px; + line-height: 1.33; + border-radius: 3px +} + +#RestartDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#restart) { + margin: 25px 0 0 10px +} + +#ShutdownDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#shutdown) { + margin: 55px 0 0 10px +} + +#deleteModal > .modal-dialog > .modal-content > .modal-footer > .btn-default { + margin: 0 0 0 10px +} + +#RestartDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#restart):hover, #ShutdownDialog > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#shutdown):hover, #deleteModal > .modal-dialog > .modal-content > .modal-footer > .btn-default:hover { + background-color: hsla(0, 0%, 100%, .3) +} + +#RestartDialog > .modal-dialog > .modal-content > .modal-body:after { + content: ''; + position: absolute; + width: 100%; + height: 72px; + background-color: #323232; + border-radius: 0 0 3px 3px; + left: 0; + margin-top: 10px; + z-index: 0; + border-top: 1px solid #222; + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5) +} + +#ShutdownDialog > .modal-dialog > .modal-content > .modal-body:after, #StatusDialog > .modal-dialog > .modal-content > .modal-body:after { + content: ''; + position: absolute; + width: 100%; + height: 72px; + background-color: #323232; + border-radius: 0 0 3px 3px; + left: 0; + margin-top: 40px; + z-index: 0; + border-top: 1px solid #222; + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5) +} + +#deleteButton { + position: fixed; + top: 60px; + right: 50px; + width: 50px; + height: 60px; + color: transparent; + background: 0 0; + overflow: hidden; + border-radius: 0; + border-right: 2px solid rgba(0, 0, 0, .3) +} + +#deleteButton > span.glyphicon-remove { + font-size: 18px; + color: hsla(0, 0%, 100%, .7) +} + +#deleteButton:hover span.glyphicon-remove { + color: #fff +} + +#deleteButton > span.glyphicon-remove:before { + content: "\EA66" +} + +.editbook .more-stuff > .dropdown-menu { + position: fixed; + top: 90px; + right: 17px; + left: auto !important +} + +body.authorlist .blur-wrapper:after { + content: none +} + +#loader { + background-image: url(images/caliblur/blur-noise.png), url(images/caliblur/blur-dark.png) !important; + background-repeat: repeat, no-repeat !important; + background-attachment: fixed, fixed !important; + background-position: center center, center center !important; + background-size: auto, cover !important; + -webkit-background-size: auto, cover !important; + -moz-background-size: auto, cover !important; + -o-background-size: auto, cover !important; + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100%; + z-index: 9 +} + +#loader > center { + display: block; + width: 100%; + height: 100%; + top: calc(50% - 120px); + position: absolute +} + +#loader > center > h3 { + font-size: 20px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #eee; + text-transform: uppercase +} + +#loader > center:after { + content: ''; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 2px solid transparent; + border-radius: 50%; + border-top: 2px solid var(--color-secondary); + width: 24px; + height: 24px; + animation: spin .5s linear infinite; + display: block; + margin: 20px auto; + position: fixed; + top: calc(50% - 24px); + left: calc(50% - 12px); + z-index: 999999 +} + +.book:not(body) { + width: 180px !important; + max-width: 180px !important; + min-width: 180px !important +} + +#books .cover img, #books_rand .cover img, .book.isotope-item .cover img { + width: 150px !important +} + +.container-fluid .book .meta .author, .container-fluid .book .meta .title { + white-space: nowrap !important +} + +.container-fluid .book .meta .rating { + display: none !important +} + +.container-fluid .book .meta { + margin-top: 0 !important +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > h2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > h2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > h2 { + position: absolute; + margin-top: -30px; + font-size: 14px +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 { + grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important; + display: -ms-grid; + display: grid; + margin-top: 40px; + margin-bottom: 60px +} + +body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 { + grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important; + display: -ms-grid; + display: grid; + margin-top: 90px; + margin-bottom: 0 +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12:before { + content: ''; + display: block; + position: absolute; + width: calc(100% + 30px); + height: 2px; + background: rgba(0, 0, 0, .3); + margin-left: -15px; + margin-top: -65px +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2, body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 { + width: 135px !important; + max-width: 135px !important; + min-width: 135px !important +} + +body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a > img, body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a > img, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a > img { + width: 135px !important; + height: 200px !important +} + +#theme, label[for=theme] { + display: inline +} + +@media only screen and (max-width: 767px) { + #form-upload .form-group .btn:before, #top_admin > .glyphicon, #top_tasks > .glyphicon-tasks { + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + font-style: normal + } + + #query, .navbar-collapse.collapse > .col-sm-2 { + padding-left: 0; + padding-right: 0 + } + + #query, .collapsing { + -o-transition: all 0s + } + + body.login:not(.read-frame), body:not(.read-frame) { + background-color: var(--color-background-mobile) !important; + background-image: none !important + } + + .navbar-default { + height: 48px; + min-height: 48px + } + + .navbar > .container-fluid { + height: 48px + } + + .navbar > .container-fluid > .navbar-header { + margin: 0 + } + + .navbar > .container-fluid > .navbar-header > button.navbar-toggle { + border: 0; + float: left; + padding: 0; + width: 48px; + height: 48px; + margin: 0; + top: 0 + } + + .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 { + background: 0 0 + } + + .navbar > .container-fluid > .navbar-header > button.navbar-toggle:before { + content: ''; + display: inline-block; + overflow: hidden; + border-radius: 50%; + background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K); + background-size: contain; + position: absolute; + width: 30px; + height: 30px; + top: 9px; + left: 9px + } + + .navbar > .container-fluid > .navbar-header > button.navbar-toggle > span { + opacity: 0; + position: absolute + } + + body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-header > a { + margin: 0 !important; + height: 48px; + line-height: 48px; + width: calc(100vw - 138px); + 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 + } + + .home-btn { + height: 48px; + line-height: 28.29px; + right: 10px; + left: auto + } + + .home-btn > a { + height: 48px; + line-height: 48px + } + + .plexBack { + height: 48px; + line-height: 28.29px; + left: 48px; + display: none + } + + .plexBack > a { + height: 48px; + line-height: 48px + } + + body > div.navbar.navbar-default.navbar-static-top > div > form { + margin: 0; + padding: 0; + border: 0; + box-shadow: none; + -webkit-box-shadow: none; + position: absolute; + right: 50px; + top: 0; + height: 48px + } + + body > div.navbar.navbar-default.navbar-static-top > div > form:before { + top: 12px; + left: auto; + right: 15px; + color: hsla(0, 0%, 100%, .7) + } + + body > div.navbar.navbar-default.navbar-static-top > div > form:hover:before { + color: #fff + } + + body > div.navbar.navbar-default.navbar-static-top > div > form > div { + width: 40px; + height: 48px + } + + #query { + width: 40px !important; + height: 48px; + border-radius: 0; + background: 0 0; + cursor: pointer; + color: transparent; + opacity: 0; + -webkit-transition: all 0s; + transition: all 0s + } + + body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus { + position: absolute; + top: 0; + left: 0; + width: 100vw + } + + body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div.form-group { + width: 100vw + } + + body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div > #query { + width: calc(100vw - 100px) !important; + margin: 0 !important + } + + #query:focus { + background: #555 !important; + color: #eee !important; + cursor: text; + left: 50px; + width: calc(100px) !important; + opacity: 1; + padding-left: 15px + } + + body > div.navbar.navbar-default.navbar-static-top > div > form.search-focus > div > span.input-group-btn:before { + content: "\EA33"; + display: block; + font-family: plex-icons-new; + position: fixed; + left: 0; + top: 0; + width: 50px; + height: 48px; + color: #eee; + font-weight: 400; + font-size: 14px; + background: #555; + line-height: 48px; + text-align: center; + cursor: pointer + } + + .mobile-navbar-brand, .profileDrop > span:after, body > div.navbar.navbar-default.navbar-static-top > div > div.navbar-collapse.collapse > ul:first-of-type:not(.navbar-right) { + display: none + } + + #form-upload > .form-group:before, .profileDrop + span.hidden-sm { + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif + } + + body > div.navbar.navbar-default.navbar-static-top > div > form > div > span.input-group-btn { + background: #555; + position: absolute; + left: auto; + right: 0; + height: 48px; + width: 50px; + border-radius: 0 + } + + body > div.navbar.navbar-default.navbar-static-top > div > form > div > span > button { + height: 48px; + width: 50px; + border-radius: 0 + } + + body > div.navbar.navbar-default.navbar-static-top > div > form > div > span > button::before { + color: #555; + background: #eee + } + + .navbar-collapse.collapse { + height: calc(100%) !important; + width: 240px; + background: #3f4245; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + margin: 0; + padding: 0; + position: fixed; + top: 0; + left: 0; + overflow-y: auto !important; + overflow-x: hidden !important + } + + #form-upload, #main-nav > li:nth-child(1) { + border-bottom: 1px solid hsla(0, 0%, 78%, .15); + float: left + } + + #main-nav { + margin-right: 0; + height: auto + } + + #main-nav > li:nth-child(1) { + margin-left: 0; + width: 100%; + height: 120px; + z-index: 99 + } + + body > div.navbar.navbar-default.navbar-static-top > 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 { + right: auto; + position: absolute; + left: 211px; + top: 80px; + color: #fff; + content: ''; + display: inline-block; + width: 0; + height: 0; + vertical-align: middle; + border-top: 5px dashed; + border-right: 4px solid transparent; + border-left: 4px solid transparent + } + + .profileDrop > span { + width: 30px; + height: 30px; + margin: 30px 15px; + top: 0 + } + + .profileDrop + span.hidden-sm { + display: block; + position: absolute; + top: 70px; + left: 15px; + color: #fff; + pointer-events: none + } + + #main-nav > li { + float: left + } + + #main-nav > li.form-upload { + width: 100% + } + + #form-upload { + position: relative; + width: 100%; + margin: 0; + padding: 0; + height: 60px; + border-top: none + } + + #form-upload > .form-group:before { + content: "Upload Book"; + color: #fff; + font-size: 13px !important; + padding-left: 15px; + height: 60px; + line-height: 60px; + position: absolute + } + + #form-upload .form-group .btn { + float: left; + width: 240px + } + + #btn-upload { + width: 100% + } + + #form-upload .form-group .btn:before { + content: "\e043"; + font-family: 'Glyphicons Halflings'; + line-height: 1; + -webkit-font-smoothing: antialiased; + color: #fff; + font-size: 16px; + background: 0 0; + border-radius: 50%; + width: 20px; + height: 20px; + display: inline-block; + margin: 0; + padding: 23px 0 23px 202px; + z-index: -9 + } + + #form-upload .form-group .btn:after { + content: "\EA13"; + position: absolute; + font-family: plex-icons-new; + font-size: 8px; + background: #3c444a; + color: #fff; + border-radius: 50%; + padding: .25px .25px 0 0; + z-index: 9; + left: 198px; + top: 32px; + width: 10px; + height: 10px; + line-height: 10px; + font-weight: 400; + text-align: center; + pointer-events: none + } + + #main-nav > li.top_admin, #main-nav > li.top_tasks { + height: 45px; + width: 100%; + min-height: 30px; + overflow: visible; + border-radius: 0 4px 4px 0; + max-width: 265px + } + + #main-nav > li.top_tasks:before { + content: "MANAGE"; + color: hsla(0, 0%, 100%, .45); + text-transform: uppercase; + font-size: 12px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + line-height: 60px; + padding-left: 15px; + position: absolute; + top: -60px + } + + #top_admin, #top_tasks, .navigation > ul > li > a { + color: #fff; + height: 45px; + width: 100%; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + text-decoration: none + } + + #main-nav > li.top_tasks { + margin-top: 72px + } + + #top_admin, #top_tasks { + padding: 11.5px 15px; + font-size: 13px; + line-height: 1.71428571; + overflow: hidden + } + + #top_admin > .glyphicon, #top_tasks > .glyphicon-tasks { + position: relative; + top: 0; + font-family: 'Glyphicons Halflings'; + line-height: 1; + border-radius: 0; + background: 0 0; + display: inline-block + } + + #top_tasks > .glyphicon-tasks { + -webkit-font-smoothing: antialiased; + margin-right: 7px + } + + #top_admin > .glyphicon { + -webkit-font-smoothing: antialiased; + 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 { + text-transform: none; + font-family: plex-icons-new; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; + speak: none; + vertical-align: sub; + font-weight: 400; + font-style: normal + } + + #top_tasks > .glyphicon-tasks::before { + content: "\EA2E"; + line-height: 22px; + font-size: 16px + } + + body > div.navbar.navbar-default.navbar-static-top > 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 { + display: inline-block; + line-height: 22px + } + + .navigation > ul > li:hover { + background-color: transparent + } + + .navigation > ul > li { + min-height: 45px; + max-width: 265px; + overflow: visible; + border-radius: 0 4px 4px 0 + } + + .navigation > ul > li > a { + padding: 11.5px 15px; + font-size: 13px; + line-height: 1.71428571; + overflow: hidden + } + + .navigation .nav-head { + margin: 0; + color: hsla(0, 0%, 100%, .45); + text-transform: uppercase; + font-size: 12px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + line-height: 60px; + padding-left: 15px; + height: 60px; + min-height: 60px + } + + .pagination, .pagination:after, body > div.container-fluid > div > div.col-sm-10 > div.pagination > a.next, body > div.container-fluid > div > div.col-sm-10 > div.pagination > a.previous, body > div.container-fluid > div > div.col-sm-10 > div.pagination > a.previous:before { + line-height: 42px; + height: 42px + } + + .navigation .create-shelf { + width: 25px; + margin: 17.5px 0 0; + min-height: auto; + float: right + } + + .navigation .create-shelf a { + color: #fff !important + } + + .navigation li a .glyphicon-star { + color: #fff + } + + .navbar-nav .open .dropdown-menu.profileDropli { + width: 210px; + margin-left: 12px + } + + .navbar-default .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 { + color: #fff; + background-color: hsla(0, 0%, 100%, .08) + } + + .navbar-collapse.collapse .navigation li a span { + vertical-align: middle + } + + .navbar-collapse.collapse .navigation li a span.caret { + position: absolute; + left: 210px; + top: 20px + } + + .navbar-collapse.collapse .hidden-xs { + display: list-item !important; + width: 225px + } + + .navbar-collapse.collapse:after { + display: none + } + + .tooltip { + 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.container:before, body.catlist > div.container-fluid > div > div.col-sm-10 > div.container:before, body.langlist > div.container-fluid > div > div.col-sm-10 > div.container:before, body.login .navbar > .container-fluid > .navbar-header > button.navbar-toggle, body.serieslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + display: none + } + + body > div.container-fluid > div.row-fluid > div.col-sm-10 { + width: 100%; + top: 42px; + height: calc(100% - 42px) + } + + body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid, body > div.container-fluid > div > div.col-sm-10 > div.discover { + width: 100%; + margin: 0 !important; + padding: 10px !important + } + + .author > .container-fluid > .row-fluid > .col-sm-10 > h2:before, body.admin.config > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type, body.admin.uiconfig > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type, body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row:first-of-type > div.col > h2:before, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type:before, body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1:before, body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover > h1, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1:before, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover > h1, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover > h2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > #test:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > div:nth-child(10) > label:before, body > div.container-fluid > div > div.col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2, body > div.container-fluid > div > div.col-sm-10 > h1, body > div.container-fluid > div > div.col-sm-10 > h3:first-of-type { + top: 48px; + left: 0; + padding-left: 10px; + height: 42px; + width: calc(100%); + line-height: 42px; + padding-right: 130px; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + background: rgba(0, 0, 0, .15); + font-size: 13px + } + + body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > h1 { + top: 10px; + left: 55px; + font-size: 16px + } + + body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type:before { + text-transform: none + } + + .pagination { + top: 48px + } + + body > div.container-fluid > div > div.col-sm-10 > div.pagination > a.next:before { + height: 42px; + line-height: 42px; + padding: 11px 0 11px 20px + } + + body > div.container-fluid > div > div.col-sm-10 > div.pagination > a.previous:before { + padding: 11px 25px + } + + body > .container-fluid { + height: calc(100% - 48px); + top: 48px + } + + body > div.container-fluid > div > div.col-sm-10 > div.discover > div.isotope { + grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)) !important + } + + .book:not(body) { + width: 110px !important; + max-width: 110px !important; + min-width: 110px !important; + padding: 0 5px; + margin-left: auto; + margin-right: auto + } + + .container-fluid .book { + margin-top: 10px + } + + .container-fluid .book .cover { + height: 150px; + margin-bottom: 0 + } + + #books .cover img, #books_rand .cover img, .book.isotope-item .cover img { + width: 100px !important + } + + #books > .cover > a:before, #books_rand > .cover > a:before, .book.isotope-item > .cover > a:before { + line-height: 40px; + width: 40px; + height: 40px; + font-size: 16px; + padding-left: 12px + } + + body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10::before, body.me > div.container-fluid > div.row-fluid > div.col-sm-10:before, body.newuser.admin > div.container-fluid > div.row-fluid > div.col-sm-10::before { + position: absolute; + top: 20px; + left: 30px; + width: 30px; + height: 30px; + background-size: 30px + } + + body.advanced_search > div.container-fluid > div > div.col-sm-10 > div.col-sm-8:before, body.author:not(.authorlist) .undefined-img:before, body.authorlist > div.container-fluid > div.row-fluid > div.col-sm-10:before, body.catlist > div.container-fluid > div.row-fluid > div.col-sm-10:before, body.langlist > div.container-fluid > div > div.col-sm-10:before, body.ratingslist > div.container-fluid > div > div.col-sm-10:before, body.serieslist > div.container-fluid > div > div.col-sm-10:before, body.shelforder > div.container-fluid > div.row-fluid > div.col-sm-10:before { + position: fixed; + top: 62px; + right: 23px; + left: auto; + width: auto; + height: auto; + font-size: 14px; + color: hsla(0, 0%, 100%, .7) + } + + body.edituser.admin > div.container-fluid > div > div.col-sm-10 > div.discover, body.me > div.container-fluid > div > div.col-sm-10 > div.discover, body.newuser.admin > div.container-fluid > div > div.col-sm-10 > div.discover { + left: 0; + width: auto; + margin: 75px 15px 0 !important; + padding: 20px 0 !important; + max-width: 100% !important; + border-top: 1px solid hsla(0, 0%, 78%, .15) + } + + body > div.container-fluid > div > div.col-sm-10 > div.container { + left: 0; + width: auto; + margin: 0 !important; + padding: 0 !important; + max-width: 100% !important; + border: 0 + } + + body.me > div.container-fluid > div > div.col-sm-10 > div.discover:before { + top: 30px; + left: 70px; + font-size: 16px + } + + body:not(.shelfcreate):not(.shelfedit) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.form-group { + padding-right: 15px + } + + .form-group > label { + font-size: 12px + } + + body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 { + margin: 100px 0 0; + grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)) !important + } + + body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 { + float: left; + width: 100%; + margin-bottom: 10px + } + + body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12:before { + width: 100%; + margin-left: 0; + margin-top: -45px + } + + body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2, body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 { + width: 100px !important; + max-width: 100px !important; + min-width: 100px !important + } + + body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a > img, body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a > img, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 > a > img { + width: 100px !important; + height: 150px !important + } + + body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > #submit { + margin-right: 15px + } + + body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2 > a:after { + width: calc(100%) + } + + body > div.container-fluid > div > div.col-sm-10 > h3:not(:first-of-type) { + margin: 15px auto 10px; + font-size: 14px + } + + body > div.container-fluid > div > div.col-sm-10 > p { + margin: auto auto 15px + } + + .well > h2, body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > h2, body:not(.admin) > div.container-fluid > div > div.col-sm-10 > div.discover:only-of-type > h2 { + top: 48px !important; + left: 0 !important; + padding-left: 10px !important; + height: 42px !important; + width: calc(100%) !important; + line-height: 42px !important; + padding-right: 130px !important; + overflow: hidden !important; + -o-text-overflow: ellipsis !important; + text-overflow: ellipsis !important; + white-space: nowrap !important; + background: rgba(0, 0, 0, .15) !important; + font-size: 13px !important; + max-width: 100% !important + } + + .author > .container-fluid > .row-fluid > .col-sm-10 > h2:after { + content: "\e008"; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + font-size: 6vw; + position: fixed; + left: 240px; + top: 180px; + width: calc(20% - 55px); + text-align: center + } + + .shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2 { + height: 42px; + width: calc(100%); + line-height: 42px; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + background: rgba(0, 0, 0, .15); + font-size: 13px; + max-width: 100%; + color: hsla(0, 0%, 100%, .7); + font-family: "Open Sans Semibold", "Helvetica Neue", Helvetica, Arial, sans-serif; + position: fixed; + top: 48px; + left: 0; + border: 0; + padding: 0 50px 0 10px + } + + body.tasks > div.container-fluid > div > div.col-sm-10 > div.discover > div.bootstrap-table > div.fixed-table-container > div.fixed-table-body > #table > thead > tr > th > .th-inner.asc:after { + right: 2px + } + + #libs { + margin-bottom: 5px + } + + body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row { + padding: 0 + } + + .well { + padding: 60px 0; + max-width: calc(100% - 30px); + min-width: auto + } + + body.author .undefined-img { + background: var(--color-background-mobile) !important + } + + body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group { + position: relative; + top: 0; + right: auto; + left: auto; + width: 210px; + margin: auto + } + + #DeleteShelfDialog > .modal-dialog { + max-width: calc(100vw - 40px) + } + + #DeleteShelfDialog > .modal-dialog > .modal-content { + max-width: calc(100vw - 40px); + left: 0 + } + + .shelfcreate .col-sm-10 > .discover > form, .shelfedit .col-sm-10 > .discover > form { + max-width: calc(100vw - 30px); + max-height: calc(100% - 200px) + } + + .shelforder > .container-fluid > .row-fluid > .col-sm-10 > .col-sm-6 { + margin: 0; + width: 100%; + padding: 10px + } + + .shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > h2 + div { + margin-top: 0; + font-size: 13px; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + color: var(--color-primary); + text-align: right; + text-transform: none + } + + .shelforder #ChangeOrder { + margin: 0 0 10px + } + + .shelforder > .container-fluid > .row-fluid > .col-sm-10 > div.col-sm-6.col-lg-6.col-xs-6 > a { + 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 { + color: var(--color-primary); + background-color: transparent + } + + body.advanced_search > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 { + border: 0; + width: 100%; + margin: 0; + padding: 10px + } + + .advanced_search #search > .row > .form-group.col-sm-6:first-of-type { + padding-right: 0; + margin-bottom: 15px + } + + body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > div.row:nth-child(4) { + margin-bottom: 15px + } + + body.advanced_search > div.container-fluid > div > div.col-sm-10 > div.col-sm-8 > form > .btn.btn-default { + margin-bottom: 20px; + margin-top: 10px + } + + body.me > div.container-fluid > div > div.col-sm-10 > div.discover { + border-top: 1px solid hsla(0, 0%, 78%, .15) + } + + body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12:before, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12:before { + height: 1px; + background: hsla(0, 0%, 78%, .15) + } + + body { + font-size: 13px + } + + body.admin > div.container-fluid > div > div.col-sm-10 > div.container-fluid > div.row > div.col > h2, body.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2 { + font-size: 14px; + text-transform: uppercase + } + + .me .dropdown-menu > li > #top_user:hover { + color: #fff + } + + body:not(.blur):not(.login):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.langlist):not(.authorlist):not(.serieslist):not(.catlist):not(.shelforder):not(.admin):not(.modal-open) > div.container-fluid > div.row-fluid > div.col-sm-10:after { + background: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, .15)), to(rgba(0, 0, 0, .15))), url(images/caliblur/blur-noise.png), var(--color-background-mobile) !important; + background: -webkit-linear-gradient(bottom, rgba(0, 0, 0, .15), rgba(0, 0, 0, .15)), url(images/caliblur/blur-noise.png), var(--color-background-mobile) !important; + background: -o-linear-gradient(bottom, rgba(0, 0, 0, .15), rgba(0, 0, 0, .15)), url(images/caliblur/blur-noise.png), var(--color-background-mobile) !important; + background: linear-gradient(0deg, rgba(0, 0, 0, .15), rgba(0, 0, 0, .15)), url(images/caliblur/blur-noise.png), var(--color-background-mobile) !important; + width: 100%; + height: 42px; + display: block; + content: ''; + position: fixed; + top: 48px; + left: 0; + z-index: 99999999999999999999999999999999999; + border: 0; + animation: none; + -webkit-animation: none; + border-radius: 0 + } + + body.advsearch:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8:before, body.book:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.single:before, body.stat:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10:before, body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover:first-of-type:before, body:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10:before { + background: var(--color-background-mobile) !important; + width: 100%; + height: calc(100% - 90px); + display: block; + content: ''; + position: fixed; + top: 90px; + left: 0; + right: 0; + bottom: 0; + z-index: 99999999999999999999999999999999999 + } + + body.advsearch:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8:after, body.book:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.single:after, body.stat:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10 > p:first-of-type:after, body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open) > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover:first-of-type:after, body:not(.blur) > div.container-fluid > div.row-fluid > div.col-sm-10:after { + content: ''; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 2px solid transparent; + border-radius: 50%; + border-top: 2px solid var(--color-secondary); + border-right: 2px solid var(--color-secondary); + width: 24px; + height: 24px; + -webkit-animation: loading .5s linear infinite; + animation: loading .5s linear infinite; + display: block; + top: 50%; + left: calc(50% - 12px); + position: fixed; + z-index: 999999999999999999999999999999999999 + } + + body:not(.blur) > .navbar > .container-fluid > .navbar-header:before { + content: "\EA30"; + color: hsla(0, 0%, 100%, .7); + cursor: pointer; + display: block; + font-family: plex-icons-new; + font-size: 20px; + font-stretch: 100%; + font-style: normal; + font-variant-caps: normal; + font-variant-east-asian: normal; + -webkit-font-variant-ligatures: normal; + font-variant-ligatures: normal; + font-variant-numeric: normal; + font-weight: 400; + height: 48px; + letter-spacing: normal; + line-height: 48px; + position: absolute; + left: auto; + right: 20px + } + + body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > #test { + border-top: 1px solid hsla(0, 0%, 78%, .15) + } + + .col-sm-10 .book-meta > div.btn-toolbar { + position: relative; + top: 0; + width: calc(100% + 30px); + margin-left: -15px + } + + .book-meta .btn-toolbar > h2 { + display: none + } + + .book-meta .btn-toolbar > .btn-group { + float: none; + margin: auto + } + + .btn-toolbar { + margin-left: 0 + } + + #shelf-actions { + width: 50px + } + + div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] { + display: block + } + + .book-meta > .author > a:first-of-type::before, .book-meta > .bookinfo > .rating, .col-sm-10 .book-meta > div.btn-toolbar:after { + display: none + } + + div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] > .downloadBtn { + border-left: 0 + } + + .blur-wrapper { + display: none; + -o-transition: none; + transition: none; + -webkit-transition: none + } + + body.book > div.container-fluid > div.row-fluid > div.col-sm-10 { + width: 100%; + top: 0; + height: calc(100% - 0px) + } + + body > div.container-fluid > div > div.col-sm-10 > div.single { + width: 100%; + padding: 15px !important + } + + body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-3.col-lg-3.col-xs-5 { + position: absolute; + height: 150px; + width: 100px; + padding: 0; + max-width: 100px; + margin-top: 75px + } + + #bookDetailsModal > .modal-dialog.modal-lg > .modal-content > .modal-body > div > div > div > div.col-sm-3.col-lg-3.col-xs-5 > div.cover > img, body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-3.col-lg-3.col-xs-5 > div.cover > img { + width: 100px; + height: 150px + } + + body > div.container-fluid > div > div.col-sm-10 > div > div > div.col-sm-9.col-lg-9.book-meta { + margin: 0; + width: 100%; + padding: 0 + } + + .book-meta > h2 { + max-width: 100%; + margin-left: 120px; + font-size: 16px; + padding: 15px 0 10px; + min-height: 60px; + line-height: 20px; + margin-top: 10px + } + + .book-meta > .bookinfo > p:first-of-type, body.book .author { + margin-left: 120px; + line-height: 1 + } + + body.book .author { + font-size: 14px; + padding-bottom: 10px + } + + .book-meta > .author:before { + content: "Author — "; + color: hsla(0, 0%, 100%, .45); + position: relative; + left: 0; + pointer-events: none + } + + .book-meta > .bookinfo > .hr { + background: 0 0; + margin: 45px + } + + .book-meta > .bookinfo > .publishing-date > span:last-of-type { + padding-left: 25px + } + + .book-meta > .bookinfo > .publishers > span:last-of-type { + padding-left: 70px + } + + .book-meta > .bookinfo > .languages > span:last-of-type { + padding-left: 65px + } + + .book-meta > .bookinfo .publishers { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis + } + + div.comments + [data-readmore-toggle], div.description + [data-readmore-toggle] { + text-align: center; + color: var(--color-secondary); + margin: 10px auto + } + + div.comments + [data-readmore-toggle]:hover, div.description + [data-readmore-toggle]:hover { + color: #fff + } + + .book-meta > .bookinfo > .comments[aria-expanded=false] + a:after, .book-meta > .description[aria-expanded=false] + a:after { + content: ''; + display: inline-block; + border-color: var(--color-secondary); + width: 0; + height: 0; + border-bottom-width: 0; + border-right: 4px solid transparent; + border-top-width: 5px; + border-left: 4px solid transparent; + position: absolute; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + border-style: solid; + vertical-align: middle; + -webkit-transition: border .2s, -webkit-transform .4s; + -o-transition: border .2s, transform .4s; + transition: border .2s, transform .4s; + transition: border .2s, transform .4s, -webkit-transform .4s; + margin: 12px 6px + } + + .book-meta > .bookinfo > .comments[aria-expanded=true] + a:after, .book-meta > .description[aria-expanded=true] + a:after { + content: ''; + display: inline-block; + border-color: var(--color-secondary); + width: 10px; + height: 10px; + border-top-width: 0; + border-right: 4px solid transparent; + border-bottom-width: 5px; + border-left: 4px solid transparent; + position: absolute; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + border-style: solid; + vertical-align: middle; + -webkit-transition: border .2s, -webkit-transform .4s; + -o-transition: border .2s, transform .4s; + transition: border .2s, transform .4s; + transition: border .2s, transform .4s, -webkit-transform .4s; + margin: 9px 6px + } + + body.author:not(.authorlist) .blur-wrapper:before, body.author > .container-fluid > .row-fluid > .col-sm-10 > h2:after { + content: "\e008"; + font-family: 'Glyphicons Halflings'; + font-weight: 400; + z-index: 9; + line-height: 1; + text-align: center + } + + body.author:not(.authorlist) > div.container-fluid > div > div.col-sm-10 { + width: 100%; + left: 0; + padding: 10px + } + + .author > .container-fluid > .row-fluid > .col-sm-10 > h2 { + float: right; + width: 100%; + margin: 0; + border-bottom: 1px solid hsla(0, 0%, 78%, .15); + padding: 20px 0 0 135px; + min-height: 140px; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis + } + + .author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio > img { + position: absolute; + left: 25px; + top: 25px; + width: 100px; + height: 100px; + z-index: 9; + border-radius: 50% + } + + body.author > .container-fluid > .row-fluid > .col-sm-10 > h2:after { + font-style: normal; + font-size: 8vw; + position: absolute; + left: 25px; + top: 26px; + width: 100px; + height: 100px + } + + body.author:not(.authorlist) .blur-wrapper { + display: block; + background: var(--color-background-mobile) + } + + body.author:not(.authorlist) .blur-wrapper > img { + opacity: 0; + -webkit-animation: none; + animation: none; + -moz-animation: none; + -o-animation: none + } + + body.author:not(.authorlist) .blur-wrapper:before { + position: fixed; + top: 62px; + right: 23px; + left: auto; + width: auto; + height: auto; + font-size: 14px; + color: hsla(0, 0%, 100%, .7) + } + + .author > .container-fluid > .row-fluid > .col-sm-10 > h2 + .discover > .row { + padding-top: 30px + } + + body.author > div.container-fluid > div > div.col-sm-10 > div.discover { + padding: 0 !important + } + + .author > .container-fluid > .row-fluid > .col-sm-10 > .author-bio { + margin-top: 125px + } + + body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 { + float: left; + width: 100%; + margin-bottom: 10px; + grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)) !important + } + + body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 { + margin-bottom: 20px; + padding-right: 15px + } + + body.edituser.admin > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2, body.me > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > form > div.col-sm-12 > div.col-sm-12 > div.col-sm-2, body > div.container-fluid > div.row-fluid > div.col-sm-10 > div.discover > div.col-sm-12 > div.col-sm-2 { + height: 150px; + padding: 0; + margin: 7.5px auto + } + + body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover { + padding: 15px 0 !important + } + + body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover > form > .btn.btn-default { + display: block; + margin: 10px 15px 0 100% + } + + body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover > form > a.btn.btn-default { + margin-bottom: 15px + } + + .shelforder #sortTrue > .list-group-item:nth-of-type(even) { + background: 0 0 + } + + body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 { + max-width: 130px; + width: 130px; + height: 180px; + margin: 0; + padding: 15px; + position: absolute + } + + body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 { + padding: 15px; + margin: 0 !important; + width: 100% + } + + body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > .form-group:nth-child(1), body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > .form-group:nth-child(2), body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > .form-group:nth-child(1), body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > form > div.col-sm-9 > .form-group:nth-child(2) { + padding-left: 120px + } + + #deleteButton, body.editbook > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete, body.upload > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-3 > div.text-center > #delete { + top: 48px; + height: 42px + } + + #metaModal { + padding: 0; + background: var(--color-background-mobile) + } + + #main-nav + #scnd-nav li.open a:hover, #main-nav + #scnd-nav > li > a:hover { + background: 0 0 + } + + #metaModal > .modal-dialog { + margin: 5px + } + + #metaModal > .modal-dialog > .modal-content { + max-height: 100% + } + + #meta-info { + max-height: calc(100vh - 224px) + } + + #metaModal > .modal-dialog > .modal-content > .modal-header > div { + display: none + } + + #meta-info #book-list .media > .media-body { + font-size: 12px; + line-height: 16px + } + + #metaModal > .modal-dialog > .modal-content > .modal-header > #meta-search { + margin: 0 + } + + #metaModal > .modal-dialog > .modal-content > .modal-header, #metaModal > .modal-dialog > .modal-content > .modal-header > h4 { + border-radius: 8px 8px 0 0 + } + + #metaModal > .modal-dialog > .modal-content { + border-radius: 8px + } + + .blur-wrapper:after { + content: none + } + + #main-nav + #scnd-nav { + position: relative; + top: 0; + padding: 0; + overflow: hidden; + height: auto; + width: auto; + margin-bottom: 10px + } + + #main-nav + #scnd-nav li.nav-head { + margin: 0; + color: hsla(0, 0%, 100%, .45); + text-transform: uppercase; + font-size: 12px; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + line-height: 60px; + padding-left: 15px; + height: 60px; + min-height: 60px + } + + #main-nav + #scnd-nav > li { + min-height: 45px; + max-width: 265px; + overflow: visible; + border-radius: 0 4px 4px 0 + } + + #main-nav + #scnd-nav > li > a { + color: #fff; + text-decoration: none; + padding: 11.5px 15px; + font-size: 13px; + height: 45px; + line-height: 1.71428571; + width: 100%; + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden + } + + #main-nav + #scnd-nav li a span.caret { + position: absolute; + left: 210px; + top: 20px + } + + #main-nav + #scnd-nav .open .dropdown-menu { + position: absolute + } + + #main-nav + #scnd-nav li.open ul.dropdown-menu a:hover { + background: hsla(0, 0%, 100%, .08); + color: #fff + } + + #main-nav + #scnd-nav li a .glyphicon-star { + color: #fff + } + + #main-nav + #scnd-nav .create-shelf { + width: 25px; + margin: 17.5px 0 0; + min-height: auto; + float: right + } + + #main-nav + #scnd-nav .nav-head.hidden-xs { + display: list-item !important; + width: 225px + } + + .shelforder #sortTrue > div:before { + opacity: 1; + pointer-events: auto; + margin-left: 0; + margin-right: 0; + padding-left: 15px; + padding-right: 30px + } + + .shelforder #sortTrue > .list-group-item { + width: 78px; + overflow: visible; + color: #eee; + pointer-events: none + } + + .shelforder #sortTrue > div:hover { + background-color: transparent !important + } + + #RestartDialog > .modal-dialog, #ShutdownDialog > .modal-dialog, #StatusDialog > .modal-dialog, #deleteModal > .modal-dialog { + max-width: calc(100vw - 40px) + } + + #RestartDialog > .modal-dialog > .modal-content, #ShutdownDialog > .modal-dialog > .modal-content, #StatusDialog > .modal-dialog > .modal-content, #deleteModal > .modal-dialog > .modal-content { + max-width: calc(100vw - 40px); + left: 0 + } + + .rating-mobile { + display: block; + text-align: center; + margin: 30px 0 20px + } + + .rating-mobile .glyphicon-star.good { + color: hsla(0, 0%, 100%, .7) + } + + .rating-mobile .glyphicon-star { + color: hsla(0, 0%, 100%, .25) + } + + body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group { + height: 60px + } + + body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [data-target="#DeleteShelfDialog"], body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=edit], body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=order] { + height: 40px; + width: 40px; + padding: 0; + margin: 10px 15px; + border-radius: 50% + } + + body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [data-target="#DeleteShelfDialog"]:before, body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=edit]:before, body.shelf > div.container-fluid > div > div.col-sm-10 > div.discover > .shelf-btn-group > [href*=order]:before { + padding: 0 0 0 10px; + line-height: 40px + } + + .collapsing { + -webkit-transition: all 0s; + transition: all 0s + } + + .navbar-collapse.collapse.in { + visibility: visible; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transition: -webkit-transform .5s; + -o-transition: transform .5s; + transition: transform .5s; + transition: transform .5s, -webkit-transform .5s; + z-index: 99 + } + + .navbar-collapse { + border: 0; + width: 240px; + height: 100% !important; + overflow: hidden; + visibility: visible; + -webkit-transform: translate3d(-240px, 0, 0); + transform: translate3d(-240px, 0, 0); + -webkit-transition: -webkit-transform .5s; + -o-transition: transform .5s; + transition: transform .5s; + transition: transform .5s, -webkit-transform .5s; + top: 0; + margin: 0; + position: fixed; + display: block; + opacity: 1 + } + + .navbar-collapse:not(.in) > * { + margin: 0 !important + } + + .navbar-collapse.collapse.in + .sidebar-backdrop { + width: calc(100vw); + height: 100%; + position: fixed; + top: 0; + left: 0; + background: rgba(0, 0, 0, .75); + -webkit-transition: all .5s; + -o-transition: all .5s; + transition: all .5s; + z-index: 9; + visibility: visible; + opacity: 1 + } + + .alert { + width: 90%; + max-width: 500px + } + + .col-xs-12 > .row > .col-xs-2 { + position: absolute; + padding: 15px 0 0; + text-align: center; + min-width: 40px; + pointer-events: none; + color: # + } + + .col-xs-12 > .row > .col-xs-10 { + padding: 0; + width: 100%; + height: 100%; + float: right; + max-width: calc(100vw - 40px) + } + + .col-xs-12 > .row > .col-xs-10 > a { + padding: 15px 15px 15px 16.66666667%; + display: block; + color: #eee + } + + .col-xs-12 > .row > .col-xs-10 > a:hover { + color: #eee; + text-decoration: none + } + + body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row:nth-of-type(even) { + background: 0 0 + } + + body > div.container-fluid > div > div.col-sm-10 > div.container > div > .row { + border-bottom: 1px solid hsla(0, 0%, 78%, .15) + } + + .col-xs-12 > .row > .col-xs-10:after { + content: ''; + position: absolute; + width: 0; + height: 0; + right: 13px; + top: 50%; + vertical-align: middle; + border-left: 5px dashed; + border-top: 4px solid transparent; + border-bottom: 4px solid transparent; + pointer-events: none; + color: #eee + } +} + +@media only screen and (max-width: 500px) { + .login .well > form { + padding: 30px 15px + } + + #RestartDialog.in:before, #ShutdownDialog.in:before, #StatusDialog.in:before, #deleteModal.in:before { + left: auto; + right: 34px + } +} + +@media only screen and (max-width: 490px) { + #DeleteShelfDialog:before { + left: auto; + right: 34px + } +} + +@media only screen and (max-width: 500px) and (max-height: 600px) { + body.login .well { + padding: 0 !important + } +} + +#btnGroupDrop1 > span.caret { + position: absolute; + margin-left: 0; + left: 33px; + top: 28px +} + +#btnGroupDrop1 > span.glyphicon-download:before { + margin-left: 8px +} + +#read-in-browser > span.caret, .btn-toolbar > .btn-group > #btnGroupDrop2 > span.caret, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2 > span.caret { + position: absolute; + margin-left: 0; + left: 33px; + top: 28px +} + +#read-in-browser > span.glyphicon-eye-open:before, .btn-toolbar > .btn-group > .btn-group > #btnGroupDrop2 > span.glyphicon-eye-open:before { + margin-left: 8px +} + +#add-to-shelf > span.caret { + position: absolute; + margin-left: 0; + left: 33px; + top: 28px +} + +#add-to-shelf > span.glyphicon.glyphicon-list:before { + margin-left: 8px +} + +.container-fluid .book .meta .author, .container-fluid .book .meta .title { + max-width: 150px; + overflow: hidden; + text-overflow: ellipsis +} + +body.publisherlist > div.container-fluid > div > div.col-sm-10:before { + content: "\e241"; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + font-size: 6vw; + position: fixed; + left: 240px; + top: 240px; + width: calc(20% - 55px); + text-align: center +} + +@media screen and (max-width: 992px) { + body.publisherlist > div.container-fluid > div > div.col-sm-10:before { + top: 180px; + } +} + +body.ratingslist > div.container-fluid > div > div.col-sm-10:before { + content: "\e007"; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + font-size: 6vw; + position: fixed; + left: 240px; + top: 240px; + width: calc(20% - 55px); + text-align: center +} + +@media screen and (max-width: 992px) { + body.ratingslist > div.container-fluid > div > div.col-sm-10:before { + top: 180px; + } +} + +@media screen and (max-width: 768px) { + body.ratingslist > div.container-fluid > div > div.col-sm-10:before { + display: none; + } +} + +body.formatslist > div.container-fluid > div > div.col-sm-10:before { + content: "\e022"; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + font-size: 6vw; + position: fixed; + left: 240px; + top: 240px; + width: calc(20% - 55px); + text-align: center +} + +@media screen and (max-width: 992px) { + body.formatslist > div.container-fluid > div > div.col-sm-10:before { + top: 180px; + } +} + +@media screen and (max-width: 768px) { + body.formatslist > div.container-fluid > div > div.col-sm-10:before { + display: none; + } +} + +body.publisherlist > div.container-fluid > div > div.col-sm-10 > div.container:before { + content: "Publishers"; + top: 115px; + font-size: 24px; + color: #eee; + line-height: 1; + padding-left: 15px; + position: absolute; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + font-weight: 400 +} + +@media screen and (max-width: 992px) { + body.publisherlist > div.container-fluid > div > div.col-sm-10 > div.container:before { + top: 60px; + } +} + +body.ratingslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + content: "Ratings"; + top: 115px; + font-size: 24px; + color: #eee; + line-height: 1; + padding-left: 15px; + position: absolute; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + font-weight: 400 +} + +@media screen and (max-width: 992px) { + body.ratingslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + top: 60px; + } +} + +@media screen and (max-width: 768px) { + body.ratingslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + display: none; + } +} + +body.formatslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + content: "File formats"; + top: 115px; + font-size: 24px; + color: #eee; + line-height: 1; + padding-left: 15px; + position: absolute; + font-family: Open Sans Bold, Helvetica Neue, Helvetica, Arial, sans-serif; + font-weight: 400 +} + +@media screen and (max-width: 992px) { + body.formatslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + top: 60px; + } +} + +@media screen and (max-width: 768px) { + body.formatslist > div.container-fluid > div > div.col-sm-10 > div.container:before { + display: none; + } +} + +body.publisherlist > div.container-fluid > div > div.col-sm-10 > div.container > div.col-sm-6 { + width: 100% +} + +#have_read_cb + label:before, #have_read_cb:checked + label:before, div[aria-label="Edit/Delete book"] > .btn-warning > span:before { + line-height: 1.1 +} + +@media only screen and (min-width: 768px) { + body.author:not(.authorlist) .undefined-img { + background-image: url(images/caliblur/blur-light.png) !important; + background-size: cover !important; + -webkit-background-size: cover !important; + -moz-background-size: cover !important; + -o-background-size: cover !important; + opacity: 1; + -webkit-filter: none; + filter: none; + width: 100vw; + height: 100%; + position: fixed; + top: 0; + left: 0; + content: '' + } +} + +@media only screen and (max-width: 767px) { + body.publisherlist > div.container-fluid > div.row-fluid > div.col-sm-10:before { + position: fixed; + top: 62px; + right: 23px; + left: auto; + width: auto; + height: auto; + font-size: 14px; + color: hsla(0, 0%, 100%, .7) + } + + body.publisherlist > div.container-fluid > div > div.col-sm-10 > div.container:before { + display: none !important + } +} + +body.advanced_search > div.container-fluid > div.row-fluid > div.col-sm-10 > div.col-sm-8 > form > div .twitter-typeahead .tt-hint { + background-color: hsla(0, 0%, 100%, .08) !important +} + +@media only screen and (min-width: 767px) and (max-width: 811px) { + body.author > div.container-fluid > div > div.col-sm-10 > div.discover { + width: calc(100% + 20px); + padding: 0 !important + } +} + +body.mailset.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type:before { + display: none +} + +body.mailset.admin > div.container-fluid > div > div.col-sm-10 > div.discover > h2:first-of-type { + margin-top: 90px; + padding-left: 15px +} + +body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .fixed-table-container { + border: none; + padding-left: 15px; + margin-bottom: 30px +} + +body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .fixed-table-container .table-hover > tbody > tr:hover { + background-color: transparent +} + +body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .bootstrap-table .table { + border-radius: 0; + border-bottom: 0 +} + +body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .editable-buttons > button { + height: 40px +} + +body.mailset > div.container-fluid > div > div.col-sm-10 > div.discover .glyphicon-trash:before { + content: "\EA6D"; + font-family: plex-icons-new +} + +#DeleteDomain { + top: 0; + overflow: hidden; + padding-top: 70px; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, .5) +} + +#DeleteDomain.in:before { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0) +} + +#DeleteDomain:before { + content: "\E208"; + padding-right: 10px; + display: block; + font-family: Glyphicons Regular; + font-style: normal; + font-weight: 400; + position: absolute; + left: calc(50% + 185px); + top: 88px; + font-size: 16px; + color: #eee; + opacity: .5; + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: transform .3s ease-out; + transition: transform .3s ease-out; + transition: transform .3s ease-out, -webkit-transform .3s ease-out; + -webkit-transform: translate(0, -60px); + -ms-transform: translate(0, -60px); + transform: translate(0, -60px); + z-index: 99 +} + +#DeleteDomain > .modal-dialog { + width: 450px; + margin: auto +} + +#DeleteDomain > .modal-dialog > .modal-content { + max-height: calc(100% - 90px); + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + border-radius: 3px; + z-index: 9999999999999999999999; + left: calc(50% - 225px); + right: auto; + width: 450px +} + +#DeleteDomain > .modal-dialog > .modal-content > .modal-header { + padding: 15px 20px; + border-radius: 3px 3px 0 0; + line-height: 1.71428571; + vertical-align: bottom; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + font-weight: 400; + color: #eee; + border-bottom: 1px solid #222; + background-color: #323232; + text-align: left +} + +#DeleteDomain > .modal-dialog > .modal-content > .modal-header:before { + content: "\EA6D"; + font-family: plex-icons-new; + padding-right: 10px; + font-size: 18px; + color: #999; + font-style: normal; + font-weight: 400; + display: inline-block +} + +#DeleteDomain > .modal-dialog > .modal-content > .modal-header:after { + content: "Remove Domain"; + display: inline-block; + font-size: 20px +} + +#DeleteDomain > .modal-dialog > .modal-content > .modal-body, #DeleteDomain > .modal-dialog > .modal-content > .modal-body > p { + font-size: 16px; + line-height: 1.6em; + font-family: Open Sans Regular, Helvetica Neue, Helvetica, Arial, sans-serif; + color: #eee; + background: #282828 +} + +#DeleteDomain > .modal-dialog > .modal-content > .modal-body { + padding: 20px 20px 40px; + text-align: left +} + +#DeleteDomain > .modal-dialog > .modal-content > .modal-body > p { + padding: 20px 20px 0 0 +} + +#DeleteDomain > .modal-dialog > .modal-content > .modal-body > #btndeletedomain, #DeleteDomain > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#btndeletedomain) { + margin: 55px 0 0 10px; + float: right; + z-index: 9; + position: relative; + min-width: 80px; + padding: 10px 18px; + font-size: 16px; + line-height: 1.33; + border-radius: 3px +} + +#DeleteDomain > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#btndeletedomain) { + background-color: hsla(0, 0%, 100%, .25) +} + +#DeleteDomain > .modal-dialog > .modal-content > .modal-body > .btn-default:not(#btndeletedomain):hover { + background-color: hsla(0, 0%, 100%, .3) +} + +#DeleteDomain > .modal-dialog > .modal-content > .modal-body:after { + content: ''; + position: absolute; + width: 100%; + height: 72px; + background-color: #323232; + border-radius: 0 0 3px 3px; + left: 0; + margin-top: 40px; + z-index: 0; + border-top: 1px solid #222; + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5) +} + +@media only screen and (max-width: 500px) { + #DeleteDomain.in:before { + left: auto; + right: 34px + } +} + +@media only screen and (max-width: 767px) { + #DeleteDomain > .modal-dialog { + max-width: calc(100vw - 40px) + } + + #DeleteDomain > .modal-dialog > .modal-content { + max-width: calc(100vw - 40px); + left: 0 + } +} + +#sendbtn2 { + background: 0 0; + color: transparent; + width: 50px; + height: 60px; + margin: 0; + overflow: hidden; + padding: 0 +} + +#sendbtn2 > span { + color: hsla(0, 0%, 100%, .7) +} + +#sendbtn2 > span.glyphicon-send:before { + margin-left: 8px +} + +#sendbtn2 > span.caret { + position: absolute; + margin-left: 0; + left: 33px; + top: 28px; + padding-bottom: 5px +} + +#sendbtn2:focus span, #sendbtn2:hover span { + color: #fff +} + +#sendbtn2[aria-expanded=true] { + pointer-events: none +} + +div.comments + [data-readmore-toggle], div.comments[data-readmore] { + display: block; + width: 100% +} + +div.comments[data-readmore] { + transition: height 300ms; + overflow: hidden +} diff --git a/cps/static/css/caliBlur.min.css b/cps/static/css/caliBlur.min.css deleted file mode 100644 index 839e84fab..000000000 --- a/cps/static/css/caliBlur.min.css +++ /dev/null @@ -1 +0,0 @@ -.form-control,.home-btn,.home-btn>a,body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{font-variant-caps:normal;font-variant-numeric:normal;font-weight:400;font-style:normal;letter-spacing:normal}.pagination,.plexBack.noBack,.root .plexBack,.root .plexBack>a{cursor:default}.navigation li a,.shelforder #sortTrue>div{-o-text-overflow:ellipsis;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{line-height:60px;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-box-direction:normal;white-space:nowrap}@font-face{font-family:Open Sans Regular;font-weight:400;font-style:normal;src:url(data:application/font-woff;base64,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) format("woff")}@font-face{font-family:Open Sans Semibold;font-style:normal;font-weight:400;src:url(data:application/font-woff;base64,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) format("woff")}@font-face{font-family:Open Sans Bold;font-weight:400;font-style:normal;src:url(data:application/font-woff;base64,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) format("woff")}@font-face{font-family:plex-icons-new;src:url(data:application/font-woff;base64,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) format("woff")}@font-face{font-family:plex-icons;src:url(data:application/font-woff;base64,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) format("woff")}@font-face{font-family:Glyphicons Regular;src:url(data:application/font-woff;base64,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) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Glyphicons Social Regular;src:url(data:application/font-woff;base64,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) format("woff");font-weight:400;font-style:normal}:root{--color-background:#474747;--color-primary:#F9BE03;--color-secondary:#CC7B19;--color-secondary-hover:#E59029;--color-background-mobile:#1f1f1f}@-webkit-keyframes fade{0%{opacity:.1}50%{opacity:.2}75%{opacity:.3}100%{opacity:.4}}@keyframes fade{0%{opacity:.1}50%{opacity:.2}75%{opacity:.3}100%{opacity:.4}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes cssAnimation{to{width:0;height:0;overflow:hidden}}@-webkit-keyframes cssAnimation{to{width:0;height:0;visibility:hidden}}@-webkit-keyframes loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@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{font-size:18px}#main-nav+.col-sm-2{position:fixed;width:240px;height:calc(100% - 120px);left:0;top:120px;background:rgba(0,0,0,.15);padding:0 5px 20px 0;overflow-y:auto}#main-nav+.col-sm-2:after{width:100%;height:60px;background:rgba(0,0,0,.15);display:block;content:'';position:fixed;top:60px;left:240px;pointer-events:none}}@media only screen and (max-height:600px){body.login>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{padding:0!important;height:60px!important}body.login>div.container-fluid>div.row-fluid>div.col-sm-10{top:60px!important}body.login .well{padding:0 60px!important}}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a[href*=advanced_search]{display:none}body.blur .row-fluid .col-sm-10{-webkit-animation:fadeIn 1s linear 1;animation:fadeIn 1s linear 1}.col-sm-10 .book-meta>div.btn-toolbar:after{content:'';direction:block;position:fixed;top:120px;right:0;width:300px;height:7px;z-index:999999999999999999999999999999999999999999999999999999}.plexBack.noBack>a{color:hsla(0,0%,100%,.45);pointer-events:none;cursor:default}.root .plexBack>a{color:hsla(0,0%,100%,.45)!important;pointer-events:none}#scnd-nav>li.active a,.authorlist #nav_author a,.catlist #nav_cat a,.langlist #nav_lang a,.serieslist #nav_serie a{color:var(--color-primary)}#scnd-nav>li.active:hover a,.authorlist #nav_author:hover a,.catlist #nav_cat:hover a,.langlist #nav_lang:hover a,.serieslist #nav_serie:hover a{color:#fff;-webkit-transition:all 0s;-o-transition:all 0s;transition:all 0s}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus{color:var(--color-primary);background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:hsla(0,0%,100%,.08)}.a-z #scnd-nav>li.dropdown>a,.newest #scnd-nav>li.dropdown>a,.oldest #scnd-nav>li.dropdown>a,.z-a #scnd-nav>li.dropdown>a{color:var(--color-primary)}.a-z #scnd-nav>li.dropdown:hover>a,.newest #scnd-nav>li.dropdown:hover>a,.oldest #scnd-nav>li.dropdown:hover>a,.z-a #scnd-nav>li.dropdown:hover>a{color:#fff!important;-webkit-transition:all 0s;-o-transition:all 0s;transition:all 0s}.readbooks #scnd-nav>li.active a[href*=unreadbooks]{color:hsla(0,0%,100%,.7)}.readbooks #scnd-nav>li.active a[href*=unreadbooks]:hover{color:#fff}.unreadbooks #scnd-nav>li.active a[href*=readbooks]{color:hsla(0,0%,100%,.7)}.unreadbooks #scnd-nav>li.active a[href*=readbooks]:hover{color:#fff}.unreadbooks #scnd-nav>li.active a[href*=unreadbooks]{color:var(--color-primary)}.shelforder #sortTrue>.list-group-item{background:0 0;border-radius:0;border:none}.shelforder #sortTrue{border-top:2px solid rgba(0,0,0,.3);border-bottom:2px solid rgba(0,0,0,.3);padding:0}.shelforder #sortTrue>.list-group-item:nth-of-type(even){background:hsla(0,0%,100%,.02)}.shelforder>.container-fluid>.row-fluid>.col-sm-10>.col-sm-6{margin-left:calc(20%);width:calc(80% - 30px)}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2:before{content:"Reorder Shelf";width:calc(100vw - 240px);height:60px;margin:0;padding-left:25px;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;-webkit-font-smoothing:antialiased;font-weight:400;-webkit-margin-before:0;-webkit-margin-after:0;position:fixed;top:60px;left:240px;text-align:left}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2{font-size:24px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;font-weight:400;line-height:1;margin:0;padding:60px 15px 40px;width:100%;height:auto;top:auto;left:auto;position:relative;border-bottom:2px solid rgba(0,0,0,.3)}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2+div{margin-top:90px;font-size:15px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:24px;padding:15px;color:#eee;text-transform:uppercase}.home-btn>a,body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{text-transform:none;-moz-user-select:none;-ms-user-select:none;-webkit-font-smoothing:antialiased}.shelforder #sortTrue>div{padding:0 15px;margin:0;vertical-align:bottom;overflow:hidden;white-space:nowrap;min-height:50px;line-height:50px;color:hsla(0,0%,100%,.6)}.shelforder #sortTrue>div:hover{background-color:hsla(0,0%,100%,.06)!important;cursor:move;cursor:grab;cursor:-webkit-grab;color:#eee}.shelforder #sortTrue>div:active{cursor:grabbing;cursor:-webkit-grabbing}.shelforder #sortTrue>div:before{content:"\EA53";font-family:plex-icons-new;margin-right:30px;margin-left:15px;vertical-align:bottom;display:inline-block;font-weight:400;font-size:18px;opacity:0}.shelforder #sortTrue>div:hover:before{opacity:1;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.shelforder #ChangeOrder{float:right;margin:30px 0 60px}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>a{float:right;background-color:hsla(0,0%,100%,.25);color:#fff;margin:30px 10px 60px 0}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>a:hover{background-color:hsla(0,0%,100%,.3)}body.shelforder>div.container-fluid>div.row-fluid>div.col-sm-10:before{content:"\e155";font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center}#have_read_form{display:inline-block;float:left}#have_read_form>label{margin:0;top:0;height:60px}#have_read_form>label>label{position:relative;width:1px;height:1px;top:0}#have_read_form:hover label:before{color:#fff!important}#have_read_form span,div[aria-label="Download, send to Kindle, reading"]>.btn-group:first-child>p:first-child,div[aria-label="Download, send to Kindle, reading"]>.btn-group:first-child>p:last-child{display:none}#have_read_cb{opacity:0;height:60px;width:50px;cursor:pointer;margin:0;display:inline-block}#have_read_cb+label:before,#have_read_cb:checked+label:before{font-family:'Glyphicons Halflings';font-size:16px;height:40px;width:60px;top:-48px;left:16px;z-index:-999999999999999999999999999999999999999999999999999999;font-style:normal;font-weight:400;display:inline-block;position:absolute;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#have_read_cb:checked+label:before{content:"\e105";color:var(--color-primary)}#have_read_cb+label:before{content:"\e106";color:hsla(0,0%,100%,.7)}div.btn-group[role=group][aria-label="Download, send to Kindle, reading"]>.downloadBtn{border-left:2px solid rgba(0,0,0,.15)}div[aria-label="Edit/Delete book"]>.btn-warning{width:50px;height:60px;margin:0;overflow:hidden;display:inline-block;padding:0;line-height:1.71428571;text-align:center;vertical-align:middle;cursor:pointer;background:0 0;color:transparent}div[aria-label="Edit/Delete book"]>.btn-warning>span{visibility:visible;position:relative;display:inline-block;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:hsla(0,0%,100%,.7);text-align:center;white-space:nowrap;cursor:pointer;margin:auto}div[aria-label="Edit/Delete book"]>.btn-warning>span:before{content:"\EA5d";font-family:plex-icons;font-size:20px;padding:16px 15px;display:inline-block;height:60px}div[aria-label="Edit/Delete book"]>.btn-warning>span:hover{color:#fff}.download-text:not(#btnGroupDrop1){display:none!important}.advanced_search #scnd-nav>li>a[href*=advanced_search]{color:var(--color-primary)}.book{width:225px;max-width:225px;position:relative!important;left:auto!important;top:auto!important;-webkit-transform:none!important;-ms-transform:none!important;transform:none!important;min-width:225px;display:block}#infscr-loading img,body>div.container-fluid>div>div.col-sm-10>div.discover>div.isotope:after,body>div.container-fluid>div>div.col-sm-10>div.discover>div.isotope:before{display:none}#infscr-loading:before{content:'';-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-radius:50%;border-top:2px solid var(--color-secondary);width:24px;height:24px;-webkit-animation:spin .5s linear infinite;animation:spin .5s linear infinite;display:block;margin:20px auto;position:fixed;top:calc(50% - 12px);left:calc(50% - 12px);z-index:999999}#loader>center:after,.app-loading:before{-webkit-animation:spin .5s linear infinite}a{color:hsla(0,0%,100%,.45)}a:hover{-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s;color:#fff}#titlebar a{color:#4f4f4f}#titlebar a:hover{cursor:pointer}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{margin:60px auto auto!important;width:240px;height:60px;text-align:left;color:var(--color-primary)!important;font-size:15px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;font-stretch:normal;-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;text-shadow:none;-webkit-user-select:none;user-select:none;word-spacing:0;-webkit-writing-mode:horizontal-tb;-ms-writing-mode:lr-tb;writing-mode:horizontal-tb;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;background:rgba(0,0,0,.45);padding:0 20px}.home-btn,.home-btn>a{-webkit-font-variant-ligatures:normal;top:0;cursor:pointer;display:block;font-size:20px;height:60px;font-variant-ligatures:normal}.btn,.home-btn>a,.plexBack>a,input.pill+label{-webkit-user-select:none}.form-control,.home-btn,.home-btn>a{font-variant-east-asian:normal;font-stretch:100%}.home-btn>a,.plexBack>a{-webkit-text-decoration-color:hsla(0,0%,100%,.7);text-decoration-color:hsla(0,0%,100%,.7);-webkit-text-decoration-line:none;text-decoration-line:none;-webkit-text-decoration-style:solid;text-decoration-style:solid;text-rendering:optimizeLegibility;-webkit-writing-mode:horizontal-tb;-webkit-box-sizing:border-box;box-sizing:border-box;speak:none;text-shadow:none;word-spacing:0;-ms-writing-mode:lr-tb;writing-mode:horizontal-tb}.home-btn{color:hsla(0,0%,100%,.7);line-height:34.29px;margin:0;padding:0;position:absolute;width:40px;left:10px}.home-btn>a{color:rgba(255,255,255,.7);font-family:plex-icons-new;line-height:60px;position:relative;text-align:center;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;user-select:none;vertical-align:middle;width:100%;-webkit-box-direction:normal;padding:0 10px}.btn,input.pill+label{-moz-user-select:none;-ms-user-select:none}.home-btn>a:before{content:"\EA30"}body>div.navbar.navbar-default.navbar-static-top>div>div.home-btn>a:hover:before{color:#fff}.glyphicon-search:before{content:"\EA4F";font-family:plex-icons}#nav_about:after,.profileDrop>span:after,.profileDrop>span:before{content:''}.navbar-default{background-color:rgba(0,0,0,.6)!important;border:none;position:fixed;width:100%;height:60px;z-index:-9}body:not(.read-frame){background-image:url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png)!important;background-repeat:repeat,no-repeat!important;background-attachment:fixed,fixed!important;background-position:center center,center center!important;background-size:auto,cover!important;-webkit-background-size:auto,cover!important;-moz-background-size:auto,cover!important;-o-background-size:auto,cover!important;line-height:1.71428571;background:url(images/caliblur/blur-noise.png),var(--color-background);color:hsla(0,0%,100%,.45);font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;overflow:hidden;margin:0}body>div.navbar.navbar-default.navbar-static-top>div>form>div{width:360px}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span.input-group-btn{opacity:0;pointer-events:none;z-index:9999999999999999999999999999999999999999999999999999999999999999999999999999999999}body>div.navbar.navbar-default.navbar-static-top>div>form.search-focus>div>span.input-group-btn{opacity:1;pointer-events:auto}.profileDrop{width:60px;height:60px;padding:0!important;background:0 0!important}.profileDrop>span{width:30px;height:30px;margin:15px;top:0}.profileDrop>span:before{display:inline-block;overflow:hidden;border-radius:50%;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);background-size:contain;position:absolute;width:30px;height:30px}.profileDrop>span:after{display:inline-block;width:0;height:0;margin:15px 0 0 35px;vertical-align:middle;border-top:5px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.top_tasks{float:left!important}.navbar{z-index:9!important}.profileDropli>li>a>span.glyphicon{display:none}.profileDropli>li>a>span.hidden-sm{display:inline!important}#nav_about:after{width:100%;height:1px;background-color:hsla(0,0%,78%,.15);display:block;margin:5px 0}#btn-upload{min-width:1px;min-height:1px;width:50px;height:60px;left:0;line-height:1;font-size:1px}#btn-upload:hover{cursor:pointer!important}.btn,.rating-input .glyphicon:hover{cursor:pointer}#main-nav>li:nth-child(1){float:right;margin-left:10px}.glyphicon{top:0}#form-upload{position:relative;float:right;width:50px;margin:0;padding:0;height:60px}#form-upload .form-group .btn{color:transparent;background:0 0;border:0;text-transform:uppercase;font-weight:400;margin:0;padding:0;height:60px;width:50px}#form-upload:hover .form-group .btn:after,#form-upload:hover .form-group .btn:before{color:#fff}#form-upload .form-group .btn:before{content:"\e043";font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:hsla(0,0%,100%,.7);font-size:16px;background:0 0;border-radius:50%;width:20px;height:20px;display:inline-block;margin:0;padding:23px 19px;z-index:-9}#top_admin>span.hidden-sm,#top_tasks>span.hidden-sm{display:none}#form-upload .form-group .btn:after{content:"\EA13";position:absolute;font-family:plex-icons-new;font-size:8px;background:#3c444a;color:hsla(0,0%,100%,.7);border-radius:50%;padding:.25px .25px 0 0;z-index:9;left:15px;top:32px;width:10px;height:10px;line-height:10px;font-weight:400;text-align:center;pointer-events:none}#top_admin,#top_tasks{height:60px;width:50px;padding:20px 15px}#top_tasks>.glyphicon-tasks::before{content:"\EA2E";text-transform:none;font-weight:400;font-style:normal;font-family:plex-icons-new;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1;text-rendering:optimizeLegibility;speak:none;font-size:20px}.btn,.navigation .create-shelf a,.navigation .nav-head,.well>form,body>div.container-fluid>div>div.col-sm-10>div.discover>h1:first-letter{text-transform:uppercase}#top_tasks>.glyphicon-tasks{background-color:hsla(0,0%,100%,.15);border-radius:50%}.form-control{background-image:none;display:block;width:100%;height:40px;padding:6px 12px;font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px!important;-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;line-height:22.29px!important;color:#eee;vertical-align:middle;background-color:hsla(0,0%,100%,.08);border-radius:4px;border:0!important;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background-color .2s;-o-transition:background-color .2s;transition:background-color .2s}.form-control:focus{border-color:transparent;outline:0;-webkit-box-shadow:none;box-shadow:none;background:#eee!important;color:#555}.form-control.tt-hint{background:hsla(0,0%,100%,.25)!important}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span>button:before{content:"\EA32";font-family:plex-icons-new;color:#eee;background:#555;font-size:10px;width:25px;height:19px;border-radius:4px;padding:2px 5px;position:absolute}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span>button{background-color:transparent;color:transparent;border:none;height:40px;border-radius:0 4px 4px 0}body>div.navbar.navbar-default.navbar-static-top>div>form:before{content:"\EA4F";display:block;font-family:plex-icons;position:absolute;color:#eee;font-weight:400;font-size:14px;top:18px;left:122px}#query{width:360px!important;padding-right:50px;padding-left:46px}#query:focus{background:#eee!important;color:#555!important}body>div.navbar.navbar-default.navbar-static-top>div>form.search-focus>div>span.input-group-btn:before{content:"\EA4F";display:block;font-family:plex-icons;position:absolute;left:-298px;top:8px;width:40px;height:40px;color:#555;font-weight:400;font-size:14px}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span.input-group-btn{position:absolute;left:320px;height:40px;width:40px;border-radius:4px}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span>button:hover{color:#fff}body>div.navbar.navbar-default.navbar-static-top>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{color:transparent}body>div.navbar.navbar-default.navbar-static-top>div>form>.form-group>input:-moz-placeholder{color:transparent}body>div.navbar.navbar-default.navbar-static-top>div>form>.form-group>input::-moz-placeholder{color:transparent}body>div.navbar.navbar-default.navbar-static-top>div>form>.form-group>input:-ms-input-placeholder{color:transparent}body>div.navbar.navbar-default.navbar-static-top>div>form>.form-group>input{border-radius:4px;height:40px;width:360px;padding:4px}#main-nav{margin-right:15px}#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{height:60px}body>div.navbar.navbar-default.navbar-static-top>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{content:"\EA31";font-family:plex-icons-new;font-size:20px}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>#top_admin>span:last-of-type{vertical-align:top}.badge,.btn{vertical-align:middle}.author>a:hover{color:#fff!important}.row{margin:0}body>div.container-fluid>div>div.col-sm-10>div>form>h2{font-size:15px;color:var(--color-primary);border-top:1px solid rgba(0,0,0,.3);padding-top:60px;margin-top:50px;margin-bottom:30px}.btn,.form-group>label{font-size:14px;font-weight:400}.navigation .nav-head:nth-child(1n+2){border-top:none;padding-top:0;width:200px}.btn-default{border-color:var(--color-secondary);color:#fff;background-color:var(--color-secondary);-webkit-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s}.btn-default:hover{border-color:var(--color-secondary-hover);color:#fff;background-color:var(--color-secondary-hover)}body>div.container-fluid>div>div.col-sm-10>div>form>a{background-color:hsla(0,0%,100%,.25);color:#fff}body>div.container-fluid>div>div.col-sm-10>div>form>a:hover{background-color:hsla(0,0%,100%,.3);color:#fff}.btn{display:inline-block;padding:6px 16px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;border:0;margin-bottom:0;line-height:1.71428571;text-align:center;border-radius:3px;white-space:nowrap;-o-user-select:none;user-select:none}.navigation li,.navigation li:not(ul>li){border-radius:0 4px 4px 0}.btn-primary{color:#fff;background-color:hsla(0,0%,100%,.25);border-color:hsla(0,0%,100%,.25)}.btn-primary:hover{border-color:hsla(0,0%,100%,.3)}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.open>.dropdown-toggle.btn-default{border-color:var(--color-secondary-hover);color:#fff;background-color:var(--color-secondary-hover)}.form-group>label{color:#eee;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif}.login .form-group>label{font-weight:400;color:hsla(0,0%,100%,.45);font-family:Open Sans bold,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:13px}.navbar>.container-fluid{margin:0;padding:0;height:60px}.navigation .nav-head{margin:0;color:hsla(0,0%,100%,.3);font-size:12px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:45px;padding-left:25px}.navigation li a{color:hsla(0,0%,100%,.7);text-decoration:none;padding:4px 25px;font-size:13px;height:30px;line-height:1.71428571;width:100%;white-space:nowrap;overflow:hidden}.navigation li{min-height:30px;max-width:265px;overflow:visible}.navigation li:hover{background-color:hsla(0,0%,100%,.08)}.navigation .create-shelf a,.navigation li.nav-head:hover{background-color:transparent}.navigation li a:hover{background:0 0;color:#fff}#nav_hot .glyphicon-fire::before{content:"\1F525";font-family:glyphicons regular}.glyphicon-star:before{content:"\EA10";font-family:plex-icons-new}#nav_rand .glyphicon-random::before{content:"\EA44";font-family:plex-icons-new}.glyphicon-list::before{content:"\EA4D";font-family:plex-icons-new}#nav_about .glyphicon-info-sign::before{content:"\EA26";font-family:plex-icons-new}#nav_cat .glyphicon-inbox::before,.glyphicon-tags::before{content:"\E067";font-family:Glyphicons Regular;margin-left:2px}.navigation #nav_cat a span{margin-right:8px}.navigation .create-shelf a{width:25px;color:hsla(0,0%,100%,.7)!important;padding:5px 7px 2px;font-size:12px;line-height:1;border-radius:3px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;border:0;-webkit-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s;font-weight:400;white-space:nowrap;margin:auto;max-height:22px;-o-text-overflow:initial;text-overflow:initial}.navigation .create-shelf a:hover{color:#fff!important;background:0 0!important;border-radius:0}#scnd-nav .dropdown-menu>li>a:hover{color:#fff;background:0 0}#scnd-nav .dropdown-menu{left:12px!important;margin:0}.navigation .create-shelf a:before{content:"\EA13";font-family:plex-icons-new;font-size:100%;padding-right:10px;vertical-align:middle}.container-fluid .book .meta .author,.container-fluid .book .meta .author>a,.container-fluid .book .meta .title{font-weight:400;font-size:13px;-webkit-font-smoothing:antialiased;line-height:20px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif}.navigation .create-shelf{width:25px;margin:10px -15px 0 0;min-height:auto;float:right}.navigation .create-shelf:hover{background:0 0}.container-fluid .book .meta .title{color:#fff}.container-fluid .book .meta .author,.container-fluid .book .meta .author>a{color:hsla(0,0%,100%,.45)}.container-fluid .book .cover img{border:none;-webkit-box-shadow:0 0 2px rgba(0,0,0,.35);box-shadow:0 0 2px rgba(0,0,0,.35);position:relative;z-index:-9}#books>.cover>a,#books_rand>.cover>a,.book.isotope-item>.cover>a,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a{display:inline-block;width:auto;height:100%}#books>.cover>a:before,#books_rand>.cover>a:before,.book.isotope-item>.cover>a:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:before{content:"\e352";font-family:Glyphicons Regular;background:var(--color-secondary);border-radius:50%;font-weight:400;font-size:18px;line-height:50px;width:50px;height:50px;padding-left:16px;right:0;margin:auto;opacity:0;left:0;position:absolute;top:0;display:inline-block;color:#fff;bottom:0}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:before{z-index:9;zoom:.8}#books>.cover>a:hover:before,#books_rand>.cover>a:hover:before,.book.isotope-item>.cover>a:hover:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:hover:before{-o-transition:opacity .2s;transition:opacity .2s;-webkit-transition:opacity .2s;opacity:1}#books>.cover>a:hover,#books_rand>.cover>a:hover,.book.isotope-item>.cover>a:hover,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:hover{outline:solid var(--color-secondary);font-size:50px;-o-transition:outline 0s;transition:outline 0s;-webkit-transition:outline 0s}#books>.cover>a:after,#books_rand>.cover>a:after,.book.isotope-item>.cover>a:after{position:absolute;content:'';width:100%;height:100%;top:0;left:0;opacity:0;background:-webkit-radial-gradient(50% 50%,farthest-corner,rgba(50,50,50,.5) 50%,#323232 100%);background:-o-radial-gradient(50% 50%,farthest-corner,rgba(50,50,50,.5) 50%,#323232 100%);background:radial-gradient(farthest-corner at 50% 50%,rgba(50,50,50,.5) 50%,#323232 100%);z-index:-9}body.me>div.container-fluid>div>div.col-sm-10>div.discover{left:240px;margin:120px 0 0 20%!important;padding:30px 15px 15px!important;width:calc(80% - 30px);border-top:2px solid rgba(0,0,0,.3)}body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#submit{float:right;margin-left:0}body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2{height:200px;padding:0;margin:15px}.container-fluid .discover,.navbar{margin-bottom:0}body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a{width:100%}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:after{position:absolute;content:'';width:100%;height:100%;top:0;left:0;opacity:0;background:-webkit-radial-gradient(50% 50%,farthest-corner,rgba(50,50,50,.5) 50%,#323232 100%);background:-o-radial-gradient(50% 50%,farthest-corner,rgba(50,50,50,.5) 50%,#323232 100%);background:radial-gradient(farthest-corner at 50% 50%,rgba(50,50,50,.5) 50%,#323232 100%)}#books>.cover>a:hover:after,#books_rand>.cover>a:hover:after,.book.isotope-item>.cover>a:hover:after,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:hover:after{opacity:1;-o-transition:opacity .2s;transition:opacity .2s;-webkit-transition:opacity .2s}.container-fluid .book .cover{width:auto;display:inline-block}.navbar{border:none}.navbar-collapse.collapse{height:60px!important;padding-bottom:0;overflow:visible!important}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:0;outline-offset:0}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;background-color:rgba(0,0,0,.15);border-radius:3px}#bookDetailsModal,.pagination,body>.container-fluid{min-width:1px;min-height:1px}app-loading-container{background:#3f4245}.app-loading>span{display:none}.app-loading{margin:auto;color:#fff!important;text-align:center;font-size:20px}.app-loading:before{content:'';-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-radius:50%;border-top:2px solid var(--color-secondary);width:24px;height:24px;animation:spin .5s linear infinite;display:block;margin:20px auto}.pace-progress,.random-books{display:none}#main-nav+#scnd-nav::-webkit-scrollbar,#main-nav+.col-sm-2::-webkit-scrollbar,.navbar-collapse.collapse::-webkit-scrollbar,body>div.container-fluid>div.row-fluid>div.col-sm-2::-webkit-scrollbar,body>div.container-fluid>div>div.col-sm-10::-webkit-scrollbar{width:14px;max-height:calc(100% - 60px)}#description::-webkit-scrollbar,#meta-info::-webkit-scrollbar,.book-meta::-webkit-scrollbar{width:14px}#main-nav+#scnd-nav::-webkit-scrollbar-track,#main-nav+.col-sm-2::-webkit-scrollbar-track,.navbar-collapse.collapse::-webkit-scrollbar-track,body>div.container-fluid>div.row-fluid>div.col-sm-2::-webkit-scrollbar-track,body>div.container-fluid>div>div.col-sm-10::-webkit-scrollbar-track{background-color:transparent;max-height:calc(100% - 60px)}#meta-info::-webkit-scrollbar-track{background-color:#202020}#description::-webkit-scrollbar-track,.book-meta::-webkit-scrollbar-track{background-color:transparent}#main-nav+#scnd-nav::-webkit-scrollbar-thumb,#main-nav+.col-sm-2::-webkit-scrollbar-thumb,.navbar-collapse.collapse::-webkit-scrollbar-thumb,body>div.container-fluid>div.row-fluid>div.col-sm-2::-webkit-scrollbar-thumb,body>div.container-fluid>div>div.col-sm-10::-webkit-scrollbar-thumb{min-height:110px;border:3px solid transparent;border-radius:8px;background-color:hsla(0,0%,100%,.2);background-clip:padding-box;max-height:calc(100% - 60px)}#description::-webkit-scrollbar-thumb,#meta-info::-webkit-scrollbar-thumb,.book-meta::-webkit-scrollbar-thumb{min-height:50px;border:3px solid transparent;border-radius:8px;background-color:hsla(0,0%,100%,.2);background-clip:padding-box}#description::-webkit-scrollbar-thumb:hover,#main-nav+#scnd-nav::-webkit-scrollbar-thumb:hover,#main-nav+.col-sm-2::-webkit-scrollbar-thumb:hover,#meta-info::-webkit-scrollbar-thumb:hover,.book-meta::-webkit-scrollbar-thumb:hover,.navbar-collapse.collapse::-webkit-scrollbar-thumb:hover,body>div.container-fluid>div.row-fluid>div.col-sm-2::-webkit-scrollbar-thumb:hover,body>div.container-fluid>div>div.col-sm-10::-webkit-scrollbar-thumb:hover{background-color:hsla(0,0%,100%,.3)}::-webkit-scrollbar-corner{background:0 0}.pace .pace-activity{border:2px solid transparent;border-radius:50%;border-top:2px solid var(--color-secondary);width:24px;height:24px;right:auto;left:8px;top:17px}body>.container-fluid{margin:0;padding:0;width:calc(100%);height:calc(100% - 60px);position:fixed;top:60px;left:0}body>div.container-fluid>div.row-fluid>div.col-sm-2{position:absolute;width:240px;height:calc(100% - 60px);left:0;top:60px;background:rgba(0,0,0,.15);padding:0 5px 20px 0;overflow-y:auto}body>div.container-fluid>div.row-fluid>div.col-sm-10{width:calc(100vw - 237px);height:calc(100% - 60px);padding:0;position:absolute;min-height:1px;min-width:1px;top:60px;right:0;overflow-y:auto!important}body.me>div.container-fluid>div.row-fluid>div.col-sm-10:before{content:'';font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);background-size:6vw;background-position-x:center;height:100%;background-repeat:no-repeat}body>div.container-fluid>div>div.col-sm-10>div.discover>div.isotope{display:-ms-grid!important;display:grid!important;overflow:hidden!important;height:auto!important;width:100%;margin:0;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start;grid-gap:10px 0;grid-template-columns:repeat(auto-fit,minmax(175px,1fr))!important}body>div.container-fluid>div>div.col-sm-10>div.discover{height:auto;width:calc(100vw - 257px);margin:40px 0!important;padding:0 10px 0 40px!important}body>div.container-fluid>div>div.col-sm-10>div.single{height:auto;width:calc(100vw - 254px);margin:0!important;padding:60px 15px!important}body>div.container-fluid>div>div.col-sm-10>div.discover{margin-top:0}.container-fluid .book .meta>p{-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>h2{color:#eee;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:24px;overflow:hidden;min-width:0;width:100%;max-width:100%;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;font-weight:400;padding-left:15px;margin-bottom:20px;top:0;left:0;height:auto}body>div.container-fluid>div>div.col-sm-10>h3:not(:first-of-type){color:#eee;width:calc(100% - 30px);max-width:800px;margin:60px auto 10px;text-align:left}body>div.container-fluid>div>div.col-sm-10>p{margin:auto auto 60px;width:calc(100% - 30px);max-width:800px;text-align:right}.book .book-meta>h2>h2,.well>h2,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover:only-of-type>h2,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover>h1,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover>h2,body>div.container-fluid>div>div.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2,body>div.container-fluid>div>div.col-sm-10>div:nth-of-type(2)>h2,body>div.container-fluid>div>div.col-sm-10>h1,body>div.container-fluid>div>div.col-sm-10>h3:first-of-type{margin:0;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-box-direction:normal;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-margin-before:0;-webkit-margin-after:0}body>div.container-fluid>div>div.col-sm-10>p>a{color:var(--color-secondary)}body>div.container-fluid>div>div.col-sm-10>p>a:hover{color:#fff}.book .book-meta>h2>h2,body>div.container-fluid>div>div.col-sm-10>div:nth-of-type(2)>h2,body>div.container-fluid>div>div.col-sm-10>h3:first-of-type{height:60px;padding-left:25px;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;white-space:nowrap;font-weight:400;position:fixed;top:60px;left:240px}body>div.container-fluid>div>div.col-sm-10>h3:first-of-type{content:"About";width:calc(100vw - 240px);text-align:left}.book .book-meta>h2>h2{width:calc(100vw - 540px)}body>div.container-fluid>div>div.col-sm-10>div:nth-of-type(2)>h2{content:"Books";width:calc(100vw - 240px)}.well>h2,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover:only-of-type>h2{width:calc(100vw - 240px)!important;height:60px!important;padding-left:25px!important;color:hsla(0,0%,100%,.7)!important;font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif!important;font-size:15px!important;line-height:60px!important;white-space:nowrap!important;font-weight:400!important;position:fixed!important;top:60px!important;left:240px!important;-o-text-overflow:ellipsis!important;text-overflow:ellipsis!important;max-width:calc(100vw - 550px)!important;overflow:hidden!important}@media only screen and (min-width:768px){body>div.container-fluid>div.row-fluid>div.col-sm-2:after{width:100%;height:60px;background:rgba(0,0,0,.15);display:block;content:'';position:fixed;top:60px;left:240px}}body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover>h1,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover>h2,body>div.container-fluid>div>div.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2,body>div.container-fluid>div>div.col-sm-10>h1{width:calc(100vw - 240px);height:60px;padding-left:25px;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;white-space:nowrap;font-weight:400;position:fixed;top:60px;left:240px}body>div.container-fluid>div>div.col-sm-10>div.discover>form>.btn.btn-default{float:right;margin:0 0 0 10px}.pagination{display:block!important;position:fixed;top:60px;right:0;overflow:visible;height:60px;margin:0;line-height:60px;font-size:15px;z-index:99999}.pagination:after,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous{top:0;font-family:plex-icons-new;font-weight:100;-webkit-font-smoothing:antialiased;line-height:60px;height:60px;font-style:normal;-moz-osx-font-smoothing:grayscale}.pagination>a{color:hsla(0,0%,100%,.7)}.pagination>a:hover{color:#fff;text-decoration:none}.pagination>.ellipsis{color:hsla(0,0%,100%,.7)}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#fff!important}body>div.container-fluid>div>div.col-sm-10>div.pagination>a,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous+a,body>div.container-fluid>div>div.col-sm-10>div.pagination>a[href*=page]{display:none}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous{color:transparent;margin-left:0;width:65px;padding:0;font-size:15px;position:absolute;display:block!important}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next{right:0}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous{right:65px}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next:before{content:"\EA32";visibility:visible;color:hsla(0,0%,100%,.35);height:60px;line-height:60px;border-left:2px solid transparent;font-size:20px;padding:20px 0 20px 20px;margin-right:-27px}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous:before{content:"\EA33";visibility:visible;color:hsla(0,0%,100%,.65);height:60px;line-height:60px;font-size:20px;padding:20px 25px}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next:hover:before,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous:hover:before{color:#fff}.pagination>strong{display:none}.pagination:after{content:"\EA32";position:relative;right:0;display:inline-block;color:hsla(0,0%,100%,.55);font-size:20px;padding:0 23px;margin-left:20px;z-index:-1}.pagination>.ellipsis,.pagination>a:nth-last-of-type(2){display:none}body.authorlist>div.container-fluid>div>div.col-sm-10>div.container>div.col-xs-12,body.catlist>div.container-fluid>div>div.col-sm-10>div.container>div.col-xs-12,body.langlist>div.container-fluid>div>div.col-sm-10>div.container>div.col-sm-6,body.serieslist>div.container-fluid>div>div.col-sm-10>div.container>div.col-sm-6{width:100%}body.serieslist>div.container-fluid>div>div.col-sm-10:before{content:"\e044";font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center}body>div.container-fluid>div>div.col-sm-10>div.container{width:calc(80% - 30px);margin:120px 0 30px 20%;border-top:2px solid rgba(0,0,0,.3);border-bottom:2px solid rgba(0,0,0,.3);padding:0;max-width:calc(80% - 30px)}body>div.container-fluid>div>div.col-sm-10>div.container>div{padding:0}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row{padding:4px 0}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row:nth-of-type(even){background:hsla(0,0%,100%,.02)}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row>.col-xs-6{width:calc(91.666% - 30px);overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;color:hsla(0,0%,100%,.45);padding-left:60px}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row>.col-xs-6>a{-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;-webkit-transition:all 0s;-o-transition:all 0s;transition:all 0s}.book-meta>.bookinfo>.tags .btn-info,.well>form>.btn{vertical-align:middle;-o-transition:background-color .2s,color .2s}body.catlist>div.container-fluid>div.row-fluid>div.col-sm-10:before{content:"\E067";font-family:Glyphicons Regular;font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center}body.authorlist>div.container-fluid>div.row-fluid>div.col-sm-10:before,body.langlist>div.container-fluid>div>div.col-sm-10:before{font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;font-size:6vw;left:240px;top:180px;width:calc(20% - 55px);text-align:center;position:fixed}body.authorlist>div.container-fluid>div.row-fluid>div.col-sm-10:before{content:"\e008"}body.langlist>div.container-fluid>div>div.col-sm-10:before{content:"\e034"}body.advsearch>div.container-fluid>div>div.col-sm-10:before,body.authorlist>div.container-fluid>div>div.col-sm-10>div.container:before,body.catlist>div.container-fluid>div>div.col-sm-10>div.container:before,body.langlist>div.container-fluid>div>div.col-sm-10>div.container:before,body.me>div.container-fluid>div>div.col-sm-10>div.discover:before,body.serieslist>div.container-fluid>div>div.col-sm-10>div.container:before{top:60px;font-size:24px;color:#eee;line-height:1;padding-left:15px;position:absolute;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400}body.authorlist>div.container-fluid>div>div.col-sm-10>div.container:before{content:"Authors"}body.catlist>div.container-fluid>div>div.col-sm-10>div.container:before{content:"Categories"}body.serieslist>div.container-fluid>div>div.col-sm-10>div.container:before{content:"Series"}body.langlist>div.container-fluid>div>div.col-sm-10>div.container:before{content:"Languages"}body.advsearch>div.container-fluid>div>div.col-sm-10:before{content:"Advanced Search";margin-left:20%;left:0}body.me>div.container-fluid>div>div.col-sm-10>div.discover:before{content:"My Profile"}.well{max-height:520px;height:auto;background-color:transparent;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none;min-width:600px;max-width:700px;position:absolute;top:0;left:0;right:0;bottom:0;margin:0 auto;padding:60px}.well>form{background:rgba(0,0,0,.4);color:hsla(0,0%,100%,.45);padding:60px;margin-top:60px}.checkbox{text-transform:none}.well>form>.btn{display:inline-block;overflow:hidden;border-radius:4px;color:#fff;text-align:center;text-transform:uppercase;white-space:nowrap;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-transition:background-color .2s,color .2s;transition:background-color .2s,color .2s;padding:6px 30px 5px;font-size:15px;font-weight:400;background-color:var(--color-secondary);border:none;width:100%;text-rendering:auto;letter-spacing:normal;word-spacing:normal;text-indent:0;text-shadow:none;margin-top:20px}.well>form>.btn:hover{background-color:var(--color-secondary-hover)}body>div.row-fluid{margin-top:0!important}.alert{position:fixed;top:auto;bottom:20px;left:50%;width:50%;margin:0;-webkit-transform:translate(-50%);-ms-transform:translate(-50%);transform:translate(-50%);opacity:1!important;right:0;border-radius:10px;background-color:#000;color:#eee;border:0;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.5);box-shadow:0 4px 12px rgba(0,0,0,.5);-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;height:34px;line-height:1.71428571!important;overflow:hidden;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;font-size:14px;padding:5px 0;z-index:99999;-webkit-animation:cssAnimation 0s ease-in 10s forwards;animation:cssAnimation 0s ease-in 10s forwards;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.alert-danger{background-color:rgba(255,85,51,.3);color:#fff}.table>thead>tr>th{border-bottom:0}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{border-top:1px solid rgba(0,0,0,.3);background:rgba(0,0,0,.15)}#libs,#stats{margin:auto;width:calc(100% - 30px);max-width:800px;color:hsla(0,0%,100%,.75);border-bottom:2px solid rgba(0,0,0,.3);border-top:2px solid rgba(0,0,0,.2)}#libs{margin-bottom:15px}#libs>tbody>tr>th,#libs>thead>tr>th:first-child,#stats>tbody>tr>th{color:hsla(0,0%,100%,.45)}#books .cover img,#books_rand .cover img,.book .cover img{width:auto}.container-fluid img{display:block;width:100%;height:auto;max-width:195px;margin:auto}#bookDetailsModal .modal-footer,#bookDetailsModal .modal-header>.close,.modal-backdrop.in{display:none}.container-fluid .single .cover img{border:0;border-radius:0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.35);box-shadow:0 0 2px rgba(0,0,0,.35);background-color:rgba(0,0,0,.45)}body>div.container-fluid>div>div.col-sm-10>div.col-sm-3.col-lg-3.col-xs-12,body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-3.col-lg-3{max-width:calc(25% - 75px);position:fixed}body>div.container-fluid>div>div.col-sm-10>div.col-sm-3.col-lg-3.col-xs-12{padding-top:40px;padding-bottom:40px}body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-9.col-lg-9.book-meta{margin-left:calc(25%);width:calc(75%)}.advanced_search #search>.row>.form-group.col-sm-6:first-of-type{padding-left:0}.advanced_search #search>.row>.form-group.col-sm-6:last-of-type{padding-right:0}.advanced_search .btn{text-transform:none;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400}label{font-weight:400}body>div.container-fluid>div>div.col-sm-10>div.col-sm-8{margin-left:calc(20%);width:calc(80% - 30px);padding:60px 0}body>div.container-fluid>div>div.col-sm-10>div.col-sm-8>form>div>span>input.form-control.typeahead.tt-hint{background:hsla(0,0%,100%,.08)!important}body>div.container-fluid>div>div.col-sm-10>div.col-sm-8>form>div>span>input.form-control:focus{background:#fff!important}.navigation li a .glyphicon-star{color:hsla(0,0%,100%,.7)}.glyphicon-star,.navigation li a:hover .glyphicon-star{color:#fff}.rating-input:hover{cursor:default}.rating-input{padding-left:0}body>div.container-fluid>div>div.col-sm-10>div.col-sm-8>form>.btn.btn-default{float:right;margin:0 0 0 10px;text-transform:uppercase;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif}#get_meta{float:left;margin:0}textarea{resize:none;resize:vertical}#metaModal{top:0;overflow:hidden;padding-top:60px;left:0;right:0;bottom:0;background:rgba(0,0,0,.5)}#metaModal>.modal-dialog>.modal-content{z-index:9999999999999999999999;max-height:calc(100% - 90px);-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:3px}#metaModal>.modal-dialog>.modal-content>.modal-header{padding:0;background:#282828;border-radius:3px 3px 0 0}#metaModal>.modal-dialog>.modal-content>.modal-header>h4{border-bottom:0;background:#323232;height:65px;padding:15px 0 0 15px;font-size:20px;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;line-height:1.71428571;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#eee;border-radius:3px 3px 0 0;margin-bottom:0}#metaModal>.modal-dialog>.modal-content>.modal-header>h4:before{content:"\E025";font:normal normal normal 16px/1 Glyphicons Halflings;color:#999;padding-right:10px}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search>.input-group>span>button,.dropdown-menu>li>a,.plexBack,.plexBack>a{font-stretch:100%;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-numeric:normal;font-style:normal}#metaModal>.modal-dialog>.modal-content>.modal-header>.close{color:#eee;opacity:.2;font-size:20px;text-shadow:none;margin:20px}#metaModal>.modal-dialog>.modal-content>.modal-header>.close:hover{opacity:.5}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search{margin:25px 0 0}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search>.input-group>input{width:calc(100% - 51px);border-radius:0;background-color:hsla(0,0%,100%,.15)}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search>.input-group{max-width:100%;width:100%}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search>.input-group>span>button{height:40px;width:50px;padding:0;font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px!important;-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;line-height:22.29px!important;color:#eee;vertical-align:middle;background-color:hsla(0,0%,100%,.15);border-radius:0;margin:0 0 0 -1px}.dropdown-menu>li>a,.plexBack{-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search>.input-group>span{float:right;text-align:right;width:50px;margin:0}#metaModal>.modal-dialog>.modal-content>.modal-header>div{font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;line-height:1.71428571;color:var(--color-primary);font-weight:100;text-align:right;position:absolute;right:0;padding:12.5px}#metaModal>.modal-dialog>.modal-content>.modal-body{padding:0}#metaModal>.modal-dialog>.modal-content>.modal-body>.text-center{text-align:left;margin-bottom:0;padding-top:10px}#metaModal>.modal-dialog>.modal-content>.modal-body>#book-list{margin-bottom:0}input.pill:checked+label{background-color:transparent;border-color:transparent;color:var(--color-secondary)}input.pill+label{border:0;border-radius:0;color:hsla(0,0%,100%,.25);cursor:pointer;display:inline-block;padding:3px 15px;user-select:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input.pill+label:hover{color:var(--color-secondary-hover)}#meta-info{max-height:calc(100vh - 357px);overflow-y:scroll;background:#282828!important;padding:0;margin:0}#meta-info #book-list .media>.media-body{font-family:"Open Sans Regular","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:24px;color:#999;font-weight:100;padding-left:15px}#meta-info #book-list .media>img{padding:0}#meta-info #book-list .media>.media-body>h4>a{color:#eee}#meta-info #book-list .media>.media-body>h4>a:hover{color:#fff}#meta-info #book-list{width:100%;margin:0}#meta-info #book-list .media:nth-of-type(odd){background:hsla(0,0%,100%,.02)}#meta-info #book-list .media{margin-top:0;padding:20px 15px 5px}#meta-info #book-list .media>.media-body>p>a{color:var(--color-secondary);padding-left:10px}#meta-info #book-list .media>.media-body>p>a:hover{color:#fff}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-header,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>#test:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>div:nth-child(10)>label:before{color:hsla(0,0%,100%,.7);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;white-space:nowrap;-webkit-box-direction:normal;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;font-weight:400}.modal-content{position:relative;background-color:#323232;-webkit-background-clip:padding-box;background-clip:padding-box;border:0;border-radius:0 0 3px 3px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-footer{padding:15px;text-align:right;border-top:0}.modal-header{padding:15px;border-bottom:0}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>#test:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>div:nth-child(10)>label:before{height:60px;padding-left:25px;background:0 0;font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;top:60px;left:240px;position:fixed}#meta-info #book-list .media>img:hover{cursor:pointer;outline:solid var(--color-secondary);-webkit-filter:brightness(90%);filter:brightness(90%)}body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>div:nth-child(10)>label:before{content:"Edit Metadata";width:calc(100vw - 350px);margin:0;-webkit-margin-before:0;-webkit-margin-after:0;pointer-events:none}body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-xs-12{margin:50px 0}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>#test:before{content:"Advanced Search";width:calc(100vw - 240px);margin:0;-webkit-margin-before:0;-webkit-margin-after:0}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>#test{border-top:2px solid rgba(0,0,0,.3);margin-top:-50px;padding-top:50px}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn{margin:2px 3px 0 0;padding:0 10px;background:hsla(0,0%,100%,.25);overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn:hover{background:hsla(0,0%,100%,.3)}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn-danger:hover{background:#ce3d2a}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn-danger.active{background:#ac3323}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn-danger.active:hover{background:#ce3d2a}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn-primary:hover{background:var(--color-secondary-hover)}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn-primary.active{background:var(--color-secondary)}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg>label.btn-primary.active:hover{background:var(--color-secondary-hover)}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>.form-group>.btn-toolbar-lg,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>label{margin-left:0}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>label:first-of-type{padding-top:40px}body.advanced_search>div.container-fluid>div>div.col-sm-10>div.col-sm-8:before{content:"\EA4F";font-family:plex-icons;font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center}a:focus{outline:0;outline-offset:0}#bookDetailsModal{width:calc(100vw - 240px);height:calc(100% - 60px);padding:0;position:fixed;top:60px;left:240px;background-image:url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png);background-repeat:repeat,no-repeat;background-attachment:fixed,fixed;background-position:center center,center center;background-size:auto,cover!important;-webkit-background-size:auto,cover;-moz-background-size:auto,cover;-o-background-size:auto,cover}#bookDetailsModal>.modal-dialog.modal-lg{padding:0;margin:0;width:100%;height:100%}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content{background-color:transparent;border-radius:0;-webkit-box-shadow:none;box-shadow:none}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-header{width:100%;height:60px;margin:0;padding:0 0 0 25px;background:rgba(0,0,0,.15);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;-webkit-margin-before:0;-webkit-margin-after:0;position:fixed;top:0;left:0}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-header>h4{width:100%;max-width:calc(100% - 340px);height:60px;line-height:60px}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-body{width:calc(100vw - 240px);height:calc(100% - 120px);position:fixed;min-height:1px;min-width:1px;top:60px;left:0;padding:0}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-body>.container-fluid{padding:0}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-body>div>div>div>div.col-sm-3.col-lg-3.col-xs-5{padding:30px 15px 15px 30px;height:300px}body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-3.col-lg-3.col-xs-5{padding:15px;height:300px;pointer-events:none}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-body>div>div>div>div.col-sm-3.col-lg-3.col-xs-5>div.cover,body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-3.col-lg-3.col-xs-5>div.cover{margin:0;width:100%;height:100%}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-body>div>div>div>div.col-sm-3.col-lg-3.col-xs-5>div.cover>img,body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-3.col-lg-3.col-xs-5>div.cover>img{margin:0 auto;max-height:300px;max-width:200px;height:auto;width:100%}.book-meta>.bookinfo>.comments,.book-meta>.description{margin-top:60px;font-size:15px;color:#eee}.book-meta .bookinfo p{margin:0}.book-meta>.bookinfo>.publishers{margin-top:24px}.book-meta>.bookinfo>.publishers>span:first-of-type,.book-meta>.bookinfo>.publishing-date>span:first-of-type{color:hsla(0,0%,100%,.45);text-transform:uppercase;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif}.book-meta>.bookinfo>.publishers>span:last-of-type,.book-meta>.bookinfo>.publishing-date>span:last-of-type{font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#fff;font-size:15px;-webkit-font-smoothing:antialiased}.book-meta>.bookinfo>.publishers>span:last-of-type{padding-left:90px}.real_custom_columns>span:last-of-type{padding-left:90px}.book-meta>.bookinfo>.publishing-date>span:last-of-type{padding-left:41px}.book-meta>.bookinfo>.languages>span:first-of-type{color:hsla(0,0%,100%,.45);text-transform:uppercase;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif}.book-meta>.bookinfo>.languages>span:last-of-type{font-size:15px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;color:#fff;padding-left:85px}.book-meta>.bookinfo>.tags .btn-info,.book-meta>h2,body.book .author{font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif}#bookDetailsModal .book-meta>h2{margin-top:15px}.book-meta>h2{font-size:24px;color:#eee;font-weight:400;line-height:1;margin:0;max-width:calc(100% - 100px);padding:15px 0}.book-meta>.author>a:first-of-type:before{content:"Author — ";color:hsla(0,0%,100%,.45);position:absolute;left:15px;pointer-events:none}.book-meta>.bookinfo>.rating{float:right;position:relative;z-index:-1;margin-top:-50px}.book-meta>.bookinfo>p+.rating{margin-top:-25px}.book-meta>.bookinfo>.rating .glyphicon-star{color:hsla(0,0%,100%,.25)}body.book .author{font-size:15px;line-height:30px;margin-top:-5px;max-width:calc(100% - 176px);margin-left:76px}.book-meta>p{color:hsla(0,0%,100%,.45)}.book-meta>.bookinfo>p:first-of-type{color:hsla(0,0%,100%,.45);font-size:15px;margin-top:-10px;max-width:calc(100% - 100px)}.bookinfo .rating .glyphicon-star.good{color:hsla(0,0%,100%,.7)}.book-meta>.languages>p>.label-default{background:0 0;color:hsla(0,0%,100%,.45);padding:0;font-size:14px}.book-meta>.bookinfo>.languages>span:first-letter{text-transform:uppercase}.book-meta>.bookinfo>.hr{margin:24px -15px;height:2px;background-color:rgba(0,0,0,.3)}.book-meta>.bookinfo>.identifiers>p>.btn-success,.book-meta>.bookinfo>.tags .btn-info{overflow:hidden;text-align:center;white-space:nowrap;margin:2px 3px 0 0;padding:0 10px}.book-meta>.bookinfo>.tags .btn-info{background-color:rgba(0,0,0,.15);color:hsla(0,0%,100%,.7);font-size:13px;display:inline-block;border-radius:4px;-webkit-transition:background-color .2s,color .2s;transition:background-color .2s,color .2s;text-transform:none}.dropdown-menu,.tooltip.in{-webkit-transition:opacity .15s ease-out,-webkit-transform .15s cubic-bezier(.6,.4,.2,1.4)}.book-meta>.bookinfo>.tags .btn-info:hover{color:#fff;text-decoration:underline}.book-meta>.bookinfo>.identifiers,.book-meta>.bookinfo>.tags{padding-left:40px;margin:10px 0}.book-meta>.bookinfo>.tags a{max-width:100%;-o-text-overflow:ellipsis;text-overflow:ellipsis}.book-meta>.bookinfo>.identifiers .glyphicon-link,.book-meta>.bookinfo>.tags .glyphicon-tags{margin-left:-40px;margin-right:17px;color:hsla(0,0%,100%,.45);width:20px;vertical-align:text-bottom}.book-meta>h3:first-of-type{font-size:14px;font-weight:400;text-transform:uppercase;border-top:2px solid rgba(0,0,0,.3);padding-top:20px;margin-top:20px}.book-meta>div{color:hsla(0,0%,100%,.65)}.more-stuff{margin-top:0;padding-top:0;border-top:0}.book-meta>.more-stuff>br{display:none}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:0}div.btn-group[role=group][aria-label="Download, send to Kindle, reading"]{white-space:nowrap;display:-webkit-box;display:-ms-flexbox;display:flex}div.btn-group[role=group][aria-label="Download, send to Kindle, reading"]>div.btn-group[role=group]>p{display:none}#shelf-actions{float:left}#add-to-shelf,#btnGroupDrop1,#read-in-browser,#sendbtn,.book-meta .btn-toolbar>.btn-group>.btn-group:nth-child(1)>a:first-of-type,.book-meta .btn-toolbar>.btn-group>.btn-warning,.btn-toolbar>.btn-group>#btnGroupDrop2,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2{background:0 0;color:transparent;width:50px;height:60px;margin:0;overflow:hidden;padding:0}#add-to-shelf>span.caret,#btnGroupDrop1>span.caret,#read-in-browser>span.caret,.btn-toolbar>.btn-group>#btnGroupDrop2>span.caret,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2>span.caret{padding-bottom:5px}#add-to-shelf>span,#btnGroupDrop1>span,#read-in-browser>span,#sendbtn>span,.book-meta .btn-toolbar>.btn-group>.btn-group:nth-child(1)>a:first-of-type>span,.book-meta .btn-toolbar>.btn-group>.btn-warning>span,.btn-toolbar>.btn-group>#btnGroupDrop2>span,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2>span{color:hsla(0,0%,100%,.7)}#add-to-shelf:hover span,#btnGroupDrop1:hover>span,#read-in-browser:hover>span,#sendbtn:hover>span,.book-meta .btn-toolbar>.btn-group>.btn-group:nth-child(1)>a:first-of-type:hover>span,.book-meta .btn-toolbar>.btn-group>.btn-warning:hover>span,.btn-toolbar>.btn-group>#btnGroupDrop2:hover>span,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2:hover>span{color:#fff}#add-to-shelf>span.glyphicon.glyphicon-list:before{content:"\EA59";font-family:plex-icons;font-size:18px}#sendbtn>span,.book-meta .btn-toolbar>.btn-group>.btn-group:nth-child(1)>a:first-of-type>span,.book-meta .btn-toolbar>.btn-group>.btn-warning>span.glyphicon-edit{font-size:16px;line-height:54px;width:100%}#read-in-browser>span.glyphicon-eye-open:before,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2>span.glyphicon-eye-open:before{content:"\e352";font-family:Glyphicons Regular;font-size:18px;padding-right:5px}#read-in-browser>span.glyphicon-list:before,.btn-toolbar>.btn-group>#btnGroupDrop2>span.glyphicon-list:before{font-size:18px}#btnGroupDrop1>span.glyphicon-download:before{font-size:20px;content:"\ea66";font-family:plex-icons}.col-sm-10 .book-meta>div.btn-toolbar{position:fixed;top:60px;right:0;margin:0;width:calc(100vw - 240px);height:60px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#bookDetailsModal>div>div>div.modal-body>div>div>div>div.col-sm-9.col-lg-9.book-meta>div.btn-toolbar>div>div.btn-group.open>div.dropdown-backdrop,.dropdown-backdrop{display:none}.book-meta .btn-toolbar>h2{height:60px;margin:0;padding-left:25px;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;white-space:nowrap;font-weight:400;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding-right:25px}.book-meta .btn-toolbar>.btn-group{margin:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.book-meta>div.btn-toolbar ul.dropdown-menu.offscreen{position:fixed;top:120px;right:14px;left:auto!important}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{background-color:hsla(0,0%,100%,.3)}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:hsla(0,0%,100%,.3);border-color:transparent}.book-meta>div.more-stuff>.btn-toolbar>.btn-group>.btn-group>.dropdown-menu{margin-left:-100px}.book-meta .btn-toolbar>.btn-group>ul.dropdown-menu{margin-left:0;max-width:200px;overflow:hidden}.book-meta .btn-toolbar>.btn-group>ul.dropdown-menu>li>a{max-width:200px;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.dropdown-menu.offscreen{right:0;left:auto!important}div.btn-group[role=group][aria-label="Download, send to Kindle, reading"] .dropdown-menu.offscreen{position:fixed;top:120px;right:5px}.dropdown-menu{border-radius:4px!important;font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding:8px 0;background-color:#191a1c!important;-webkit-box-shadow:0 4px 10px rgba(0,0,0,.35);box-shadow:0 4px 10px rgba(0,0,0,.35);-o-transition:opacity .15s ease-out,transform .15s cubic-bezier(.6,.4,.2,1.4);transition:opacity .15s ease-out,transform .15s cubic-bezier(.6,.4,.2,1.4);transition:opacity .15s ease-out,transform .15s cubic-bezier(.6,.4,.2,1.4),-webkit-transform .15s cubic-bezier(.6,.4,.2,1.4);-webkit-transform-origin:center top;-ms-transform-origin:center top;transform-origin:center top;border:0;left:0!important}.dropdown-menu>li>a{color:hsla(0,0%,100%,.7);font-size:13px;font-weight:400;padding-top:4px;padding-bottom:4px;line-height:1.71428571}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#fff;background:hsla(0,0%,100%,.08)}.btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.book-meta>.bookinfo>.identifiers>p>.btn-success{background-color:rgba(0,0,0,.15);color:hsla(0,0%,100%,.7);font-size:13px;display:inline-block;border-radius:4px;vertical-align:middle;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-transition:background-color .2s,color .2s;-o-transition:background-color .2s,color .2s;transition:background-color .2s,color .2s;text-transform:none}.book-meta>.bookinfo>.identifiers>p>.btn-success:hover{color:#fff;text-decoration:underline}#bookDetailsModal .book-meta{color:hsla(0,0%,100%,.7);height:calc(100% - 120px);overflow-x:hidden;overflow-y:scroll}.book-meta>.bookinfo .publishers,.book-meta>.bookinfo>.identifiers>p>.glyphicon-link{color:hsla(0,0%,100%,.45)}.rating .glyphicon-star.good{color:var(--color-primary)}body>div.container-fluid>div>div.col-sm-10>div.discover>.btn-danger{background:#ac3323;width:auto}body>div.container-fluid>div>div.col-sm-10>div.discover>.btn-danger:hover{background:#ce3d2a}body>div.container-fluid>div>div.col-sm-10>div.discover>.btn-primary:first-of-type{background:hsla(0,0%,100%,.25)}body>div.container-fluid>div>div.col-sm-10>div.discover>.btn-primary:first-of-type:hover{background:hsla(0,0%,100%,.3)}body>div.container-fluid>div>div.col-sm-10>div.discover>.btn-primary:last-of-type{background:var(--color-secondary)}body>div.container-fluid>div>div.col-sm-10>div.discover>.btn-primary:last-of-type:hover{background:var(--color-secondary-hover)}.book-meta>div.more-stuff>.btn-toolbar>.btn-group[aria-label="Remove from shelves"]{max-width:100%}.book-meta>.bookinfo>div.more-stuff>.btn-toolbar>.btn-group[aria-label="Remove from shelves"]>a{max-width:100%;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;margin:20px 0 0!important;border-radius:3px;background:hsla(0,0%,100%,.25);text-transform:none;padding:0 10px;text-align:left;line-height:1.5;font-family:Open Sans semibold,Helvetica Neue,Helvetica,Arial,sans-serif}.book-meta>div.more-stuff>.btn-toolbar>.btn-group[aria-label="Remove from shelves"]>a:hover{background:#ce3d2a;color:#fff}.book-meta>div.more-stuff>.btn-toolbar>.btn-group[aria-label="Remove from shelves"]>a>.glyphicon-remove{font-size:12px;padding-right:3px}.book-meta>div.more-stuff>.btn-toolbar>.btn-group[aria-label="Remove from shelves"]>a>.glyphicon-remove:before{content:"\ea64";font-family:plex-icons}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>.col-sm-6{width:100%}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.form-group{padding-left:15px}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12{padding:0}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12{padding:0;margin-bottom:60px}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#submit{float:left;margin-left:calc(100vw - 400px)}body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9.col-xs-12>button.btn.btn-default{float:right}body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9.col-xs-12>a:last-of-type{float:right;background:hsla(0,0%,100%,.25);margin-right:10px}body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9.col-xs-12>a:last-of-type:hover{background:hsla(0,0%,100%,.3)}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>h2{width:calc(100vw - 390px)!important;height:60px!important;margin:0!important;padding-left:25px!important;color:hsla(0,0%,100%,.7)!important;font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif!important;font-size:15px!important;line-height:60px!important;-webkit-text-size-adjust:100%!important;-moz-text-size-adjust:100%!important;-ms-text-size-adjust:100%!important;text-size-adjust:100%!important;white-space:nowrap!important;-webkit-box-direction:normal!important;-webkit-font-smoothing:antialiased!important;-webkit-tap-highlight-color:transparent!important;font-weight:400!important;-webkit-margin-before:0!important;-webkit-margin-after:0!important;position:fixed!important;top:60px!important;left:240px!important;text-align:left!important;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding-right:25px!important}.author>.container-fluid>.row-fluid>.col-sm-10>h2:before,.plexBack>a{-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}.author>.container-fluid>.row-fluid>.col-sm-10>h2:before,.blur-wrapper>div,.plexBack>a{-webkit-box-direction:normal;-webkit-font-smoothing:antialiased}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group{position:fixed;top:60px;right:0}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[data-target="#DeleteShelfDialog"]{position:relative;float:right;width:50px;height:60px;border-radius:0;background:0 0;color:transparent;overflow:hidden;padding:6px 11px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[data-target="#DeleteShelfDialog"]:before{content:"\EA6D";font-family:plex-icons-new;position:absolute;color:hsla(0,0%,100%,.7);font-size:20px;padding:6px 0 0 2px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[data-target="#DeleteShelfDialog"]:hover{background:#ce3d2a}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[data-target="#DeleteShelfDialog"]:hover:before{color:#fff}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=edit]{position:relative;float:right;width:50px;height:60px;border-radius:0;background:0 0;color:transparent;overflow:hidden;margin:0;padding:6px 13px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=edit]:before{content:"\EA5d";font-family:plex-icons;position:absolute;color:hsla(0,0%,100%,.7);font-size:20px;padding:6px 0 0 2px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=edit]:hover:before{color:#fff}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=edit]:hover{background:0 0}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=order]{position:relative;float:right;width:50px;height:60px;border-radius:0;background:0 0;color:transparent;overflow:hidden;margin:0;padding:6px 11px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=order]:before{content:"\E409";font-family:Glyphicons Regular;position:absolute;color:hsla(0,0%,100%,.7);font-size:20px;padding:6px 0 0 2px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=order]:hover:before{color:#fff}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=order]:hover{background:0 0}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a:hover{color:#fff!important;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s;background-color:rgba(0,0,0,.55)!important}.blur-wrapper:after{content:'';display:block;width:100vw;height:100%;position:fixed;top:0;left:0;background-image:url(images/caliblur/blur-noise.png)!important;background-repeat:repeat!important;background-attachment:fixed!important;background-position:center center!important;background-size:auto!important;-webkit-background-size:auto!important}.blur-wrapper{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#3f4245;-o-transition:background-color 1s ease-in;transition:background-color 1s ease-in;-webkit-transition:background-color 1s ease-in;z-index:-9}.blur-wrapper>div{-moz-osx-font-smoothing:grayscale;position:absolute;top:0;right:0;bottom:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row;overflow:hidden}.bg-blur{background-size:cover;background-position:center center;background-repeat:no-repeat;width:100%!important;height:100%!important;position:absolute;max-width:100%!important;-webkit-filter:blur(125px) brightness(85%);filter:blur(125px) brightness(85%);-moz-filter:blur(125px);-o-filter:blur(125px);-ms-filter:blur(125px);opacity:.4;-webkit-animation:fade 1s;animation:fade 1s;-moz-animation:fade 1s;-o-animation:fade 1s;-o-object-fit:cover;object-fit:cover}.plexBack,.plexBack>a{display:block;height:60px;letter-spacing:normal;font-size:20px;top:0;font-weight:400;cursor:pointer}.authorlist .blur-wrapper{background:0 0}#scnd-nav>li.nav-head:first-child{margin-top:10px}.btn-danger{color:#fff;background-color:#ac3323;border-color:#ac3323}.btn-danger:hover{background-color:#ce3d2a;border-color:#641e14}.caret{border-top:5px solid;border-right:4px solid transparent;border-left:4px solid transparent}.plexBack{color:hsla(0,0%,100%,.7);line-height:34.29px;margin:0;padding:0;position:absolute;width:40px;left:50px}.plexBack>a{color:rgba(255,255,255,.7);font-family:plex-icons-new;-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;line-height:60px;position:relative;text-align:center;-webkit-text-size-adjust:100%;text-transform:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;width:100%;padding:0 10px}.plexBack>a:before{content:"\EA2F"}.plexBack:not(.noBack):hover>a{color:#fff}.login .well>h2{display:none}.login .well>form{max-width:480px;margin:auto}.login .well>form input{background-color:hsla(0,0%,100%,.25)}.login ::-webkit-input-placeholder{color:transparent}.login :-moz-placeholder{color:transparent}.login ::-moz-placeholder{color:transparent}.login :-ms-input-placeholder{color:transparent}body.login>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{width:100vw;height:120px;margin:0!important;text-align:center;padding:60px 0 0;background:0 0;color:#ccc!important;font-size:20px}body.login>.container-fluid{width:100vw;height:100%;position:relative}body.login>div.container-fluid>div.row-fluid>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{display:none!important}.login .navbar-default{background:0 0!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}body.author .undefined-img,body.shelfcreate,body.shelfedit{background-repeat:repeat,no-repeat!important;background-attachment:fixed,fixed!important;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{display:none}.book-meta>.bookinfo>.comments[aria-expanded=true]+a:after,.book-meta>.description[aria-expanded=true]+a:after{content:'';display:inline-block;border-color:hsla(0,0%,100%,.45);width:10px;height:10px;border-top-width:0;border-right:4px solid transparent;border-bottom-width:5px;border-left:4px solid transparent;position:absolute;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-style:solid;vertical-align:middle;-webkit-transition:border .2s,-webkit-transform .4s;-o-transition:border .2s,transform .4s;transition:border .2s,transform .4s;transition:border .2s,transform .4s,-webkit-transform .4s;margin:9px 6px}.book-meta>.bookinfo>.comments[aria-expanded=false]+a:after,.book-meta>.description[aria-expanded=false]+a:after{content:'';display:inline-block;border-color:hsla(0,0%,100%,.45);width:0;height:0;border-bottom-width:0;border-right:4px solid transparent;border-top-width:5px;border-left:4px solid transparent;position:absolute;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-style:solid;vertical-align:middle;-webkit-transition:border .2s,-webkit-transform .4s;-o-transition:border .2s,transform .4s;transition:border .2s,transform .4s;transition:border .2s,transform .4s,-webkit-transform .4s;margin:12px 6px}.book-meta>.bookinfo>.comments+a,.book-meta>.description+a{width:100px;margin-top:10px;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.book-meta>.bookinfo>.comments+a:hover,.book-meta>.description+a:hover{text-decoration:none}.book-meta>.bookinfo>.comments[aria-expanded=false]+a:hover:after,.book-meta>.description[aria-expanded=false]+a:hover:after{border-color:#fff;border-right:4px solid transparent;border-top-width:5px;border-left:4px solid transparent}.book-meta>.bookinfo>.comments[aria-expanded=true]+a:hover:after,.book-meta>.description[aria-expanded=true]+a:hover:after{border-color:#fff;border-right:4px solid transparent;border-bottom-width:5px;border-left:4px solid transparent}.navigation>ul>li>a>span.hidden-sm{display:inline-block!important}.shelfcreate .col-sm-10>.discover>form,.shelfedit .col-sm-10>.discover>form{width:500px;height:500px;margin:auto;max-width:calc(100vw - 300px);max-height:calc(100% - 200px)}body.shelfcreate>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.form-group,body.shelfedit>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.form-group{padding-left:0}body.shelfcreate,body.shelfedit{background-size:auto,cover!important;-webkit-background-size:auto,cover!important;-moz-background-size:auto,cover!important;-o-background-size:auto,cover!important;-webkit-transition:background-image 2s ease-in;-o-transition:background-image 2s ease-in;transition:background-image 2s ease-in}body.author .undefined-img{background-image:url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png)!important;background-size:auto,cover!important;-webkit-background-size:auto,cover!important;-moz-background-size:auto,cover!important;-o-background-size:auto,cover!important;opacity:1;-webkit-filter:none;filter:none;width:100vw;height:100%;position:fixed;top:0;left:0;content:''}body.author img.bg-blur[src=undefined]{display:none}body.author:not(.authorlist) .undefined-img:before{content:"\e008";font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:200px;width:20%;text-align:center;z-index:9}.author>.container-fluid>.row-fluid>.col-sm-10>h2:before{content:"About Author";width:calc(100vw - 240px);height:60px;margin:0;padding-left:25px;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;-webkit-text-size-adjust:100%;white-space:nowrap;-webkit-tap-highlight-color:transparent;font-weight:400;-webkit-margin-before:0;-webkit-margin-after:0;position:fixed;top:60px;left:240px;text-align:left}.author>.container-fluid>.row-fluid>.col-sm-10>h2{font-size:24px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;font-weight:400;line-height:1;margin:60px 0 0;padding:15px 15px 35px;border-bottom:2px solid rgba(0,0,0,.3)}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio{padding:35px 15px 15px;font-size:15px;color:hsla(0,0%,100%,.65)}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio>img{position:fixed;left:270px;top:200px;width:calc(20% - 60px);max-width:250px}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio>.author-link{color:var(--color-secondary)}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio>.author-link:hover{color:var(--color-secondary-hover)}body.author:not(.authorlist)>div.container-fluid>div>div.col-sm-10{width:calc(100% - 240px);left:240px;padding-left:20%;padding-right:30px;padding-bottom:20px}body.author>div.container-fluid>div>div.col-sm-10>div.discover{width:100%;padding:0 0 0 15px!important}body.author>div.container-fluid>div>div.col-sm-10>div.discover>h3{font-size:15px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:24px;text-transform:uppercase;color:#eee}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio a{color:var(--color-secondary)}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio a:hover{color:var(--color-secondary-hover)}body.shelf.modal-open>.container-fluid{z-index:9}#DeleteShelfDialog .text-center{text-align:left}#DeleteShelfDialog{top:0;overflow:hidden;padding-top:70px;left:0;right:0;bottom:0;background:rgba(0,0,0,.5)}#DeleteShelfDialog>.modal-dialog{width:450px;margin:auto}#DeleteShelfDialog>.modal-dialog>.modal-content{max-height:calc(100% - 90px);-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:3px;z-index:9999999999999999999999;left:calc(50% - 225px);right:auto;width:450px}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-header{padding:15px 20px;border-radius:3px 3px 0 0;line-height:1.71428571;vertical-align:bottom;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#eee;border-bottom:1px solid #222;background-color:#323232}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-header:before{content:"\E197";padding-right:10px;font-size:18px;color:#999;display:inline-block;font-family:Glyphicons Regular;font-style:normal;font-weight:400}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-header:after{content:"Delete Shelf";display:inline-block;font-size:20px}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-header>span{display:none}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-body{padding:20px 20px 30px;font-size:16px;line-height:1.6em;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;background:#282828}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-body>span:before{content:"Are you sure you want to delete this shelf?";display:inline-block;padding-right:5px}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-body:after{content:'';position:absolute;width:100%;height:72px;background-color:#323232;border-radius:0 0 3px 3px;left:0;margin-top:30px;z-index:0;border-top:1px solid #222;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-body>.btn{float:right;z-index:9;position:relative;margin:45px 0 0 10px;min-width:80px;padding:10px 18px;font-size:16px;line-height:1.33;border-radius:3px}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-body>.btn-default{background-color:hsla(0,0%,100%,.25)}#DeleteShelfDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:hover{background-color:hsla(0,0%,100%,.3)}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:initial;background-color:initial;border-color:initial}#remove-from-shelves>.btn{background-color:rgba(0,0,0,.15);color:hsla(0,0%,100%,.7);padding:0 10px;font-size:13px;display:inline-block;overflow:hidden;border-radius:4px;vertical-align:middle;text-align:center;white-space:nowrap;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-transition:background-color .2s,color .2s;-o-transition:background-color .2s,color .2s;transition:background-color .2s,color .2s;margin:2px 6px 0 0;text-transform:none}#remove-from-shelves>.btn>span{font-size:10px;display:inline-block;top:3px;line-height:inherit;position:absolute;right:5px}#remove-from-shelves>.btn>span:before{content:"\EA52";font-family:plex-icons-new;color:transparent;padding-left:5px}#remove-from-shelves>a:first-of-type{margin-left:40px;overflow:visible}#remove-from-shelves>a:first-of-type:before{content:"\EA4D";font-family:plex-icons-new;position:absolute;color:hsla(0,0%,100%,.45);font-style:normal;font-weight:400;font-size:14px;left:-40px;pointer-events:none}#remove-from-shelves>.btn:hover{padding-right:20px;background:#ce3d2a;color:#fff;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}#remove-from-shelves>.btn:hover span:before{color:#fff;-webkit-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}#remove-from-shelves+.identifiers,#remove-from-shelves+.languages,#remove-from-shelves+.publishers,#remove-from-shelves+.publishing-date,#remove-from-shelves+.tags{margin-top:-25px;z-index:9;position:relative}#remove-from-shelves>a.btn:last-of-type{margin-bottom:35px}#DeleteShelfDialog:before{content:"\E208";padding-right:10px;display:block;font-family:Glyphicons Regular;font-style:normal;font-weight:400;position:absolute;left:calc(50% + 185px);top:88px;font-size:16px;color:#eee;opacity:.5;-webkit-transition:-webkit-transform .3s ease-out;-o-transition:transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-60px);-ms-transform:translate(0,-60px);transform:translate(0,-60px);z-index:99}#DeleteShelfDialog.modal.in:before{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}#DeleteShelfDialog:hover:before{cursor:pointer}.btn-default.active:hover,.btn-default:active:hover{border-color:var(--color-secondary-hover);color:#fff;background-color:var(--color-secondary-hover)}body.advanced_search>div.container-fluid>div>div.col-sm-10>div.col-sm-8{padding:20px 0 60px;margin-top:120px;border-top:2px solid rgba(0,0,0,.3);width:calc(80% - 30px)}body.advanced_search>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>div,body.advanced_search>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>label{padding-left:15px;padding-right:15px}body.advanced_search>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>div .rating-input{padding-top:0;padding-bottom:0}body.advanced_search>div.container-fluid>div>div.col-sm-10>div.col-sm-8>form>.btn.btn-default{margin-right:15px;margin-top:20px}.advanced_search #search>.row>.form-group.col-sm-6{padding-left:0;margin-bottom:0}.advanced_search #search>.row>.form-group.col-sm-6>label[for=ratinghigh],.advanced_search #search>.row>.form-group.col-sm-6>label[for=ratinglow]{color:hsla(0,0%,100%,.45);font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;margin-top:10px}.glyphicon-remove:before{content:"\EA52";font-family:plex-icons-new;font-weight:400}body.advanced_search>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>div.row:nth-child(4){margin-bottom:30px}.me .dropdown-menu>li>#top_user{color:var(--color-primary)}.navbar-right>li>ul.dropdown-menu.offscreen{right:-10px}.login .plexBack,body.login>div.container-fluid>div.row-fluid>div.col-sm-2,body.login>div.navbar.navbar-default.navbar-static-top>div>form{display:none}@media only screen and (min-width:768px){#main-nav+#scnd-nav{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{display:none}body:not(.blur)>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul>li>a#top_user{height:60px;padding:0!important;background:0 0!important;color:hsla(0,0%,100%,.7);line-height:20px;position:fixed;display:block;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{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{width:30px;height:30px;margin:15px;top:0;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{content:'';display:inline-block;overflow:hidden;border-radius:50%;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);background-size:contain;position:absolute;width:30px;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{content:'';display:inline-block;width:0;height:0;margin:15px 0 0 35px;vertical-align:middle;border-top:5px dashed;border-right:4px solid transparent;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{display:none}body:not(.blur) #nav_new{margin-bottom:30px}body:not(.blur) #nav_new:before{content:"\EA4F";font-family:plex-icons;font-style:normal;font-weight:400;line-height:1;color:hsla(0,0%,100%,.7);font-size:13px;position:absolute;left:25px;margin-top:9px}body:not(.blur) #nav_new:after{content:"Advanced Search";color:hsla(0,0%,100%,.7);font-size:13px;line-height:1.71428571;white-space:nowrap;position:absolute;left:49px;margin-top:5px}body:not(.blur)>.navbar>.container-fluid>.navbar-header:after,body:not(.blur)>.navbar>.container-fluid>.navbar-header:before{color:hsla(0,0%,100%,.7);cursor:pointer;display:block;font-family:plex-icons-new;font-size:20px;font-stretch:100%;font-style:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-numeric:normal;font-weight:400;height:60px;letter-spacing:normal;line-height:60px;position:absolute}body:not(.blur)>.navbar>.container-fluid>.navbar-header:before{content:"\EA30";-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;left:20px}body:not(.blur)>.navbar>.container-fluid>.navbar-header:after{content:"\EA2F";-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;left:60px}}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row:first-of-type>div.col>h2:before,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type:before,body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1:before,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1:before{width:calc(100vw - 240px);height:60px;margin:0;padding-left:25px;background:0 0;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-box-direction:normal;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-margin-before:0;-webkit-margin-after:0;top:60px;white-space:nowrap;font-weight:400}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row:first-of-type>div.col>h2:before,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type:before{content:"Admin Settings";position:fixed;left:240px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1:before{content:"User Settings";position:fixed;left:240px}body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1:before{content:"New User";position:fixed;left:240px}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid{height:auto;width:calc(100vw - 257px);margin:20px 0 30px!important;padding:0 10px 0 40px!important}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>h2,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2{font-size:24px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;font-weight:400;line-height:1}.table-striped>tbody>tr:nth-of-type(2n+1){background-color:transparent}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>.btn>a,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>.btn>a{text-decoration:none;color:#fff}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col .table>tbody>tr>td,body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col .table>tbody>tr>th,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>.table>tbody>tr>td,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>.table>tbody>tr>th{border:collapse}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10::before,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10::before{content:'';font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);background-size:6vw;background-position-x:center;height:100%;background-repeat:no-repeat}body.edituser.admin>div.container-fluid>div>div.col-sm-10>div.discover,body.newuser.admin>div.container-fluid>div>div.col-sm-10>div.discover{left:240px;margin:120px 0 0 20%!important;padding:30px 15px 15px!important;width:calc(80% - 30px);border-top:2px solid rgba(0,0,0,.3)}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1{width:auto;position:absolute;top:60px;left:20%;font-size:24px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;font-weight:400;line-height:1;padding-left:30px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#submit,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#submit{float:right;margin-left:10px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#back,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#back{float:right;margin-left:0;background-color:hsla(0,0%,100%,.25)}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#back:hover,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#back:hover{background-color:hsla(0,0%,100%,.3)}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12{margin-bottom:60px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12{padding:0}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>h2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>h2{color:#eee;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:24px;overflow:hidden;min-width:0;width:100%;max-width:100%;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;font-weight:400;padding-left:15px;margin-bottom:20px;top:0;left:0;height:auto}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2{height:200px;padding:0;margin:15px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a{width:100%;display:inline-block;height:100%}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:hover,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:hover{outline:solid var(--color-secondary);font-size:50px;-o-transition:outline 0s;transition:outline 0s;-webkit-transition:outline 0s}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:before{content:"\e352";display:inline-block;position:absolute;font-family:Glyphicons Regular;background:var(--color-secondary);color:#fff;border-radius:50%;font-weight:400;font-size:18px;line-height:50px;width:50px;height:50px;padding-left:16px;left:0;right:0;top:0;bottom:0;margin:auto;opacity:0;z-index:9}body.admin,body.admin td>a{color:hsla(0,0%,100%,.65)}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:hover:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:hover:before{-o-transition:opacity .2s;transition:opacity .2s;-webkit-transition:opacity .2s;opacity:1}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:after,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:after{position:absolute;content:'';width:100%;height:100%;top:0;left:0;opacity:0;background:-webkit-radial-gradient(50% 50%,farthest-corner,rgba(50,50,50,.5) 50%,#323232 100%);background:-o-radial-gradient(50% 50%,farthest-corner,rgba(50,50,50,.5) 50%,#323232 100%);background:radial-gradient(farthest-corner at 50% 50%,rgba(50,50,50,.5) 50%,#323232 100%)}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:hover:after,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a:hover:after{opacity:1;-o-transition:opacity .2s;transition:opacity .2s;-webkit-transition:opacity .2s}body.admin .panel{background:rgba(0,0,0,.15);border:none;box-shadow:none;-webkit-box-shadow:none;border-radius:0}body.admin .panel-default>.panel-collapse>.panel-body,body.admin .panel-default>.panel-heading{color:hsla(0,0%,100%,.65);background-color:transparent;border:none}body.config.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>*,body.uiconfig.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>*{float:right}body.config.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>a,body.uiconfig.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>a{background-color:hsla(0,0%,100%,.25);margin-right:10px}body.config.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>a:hover,body.uiconfig.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>a:hover{background-color:hsla(0,0%,100%,.3)}body.admin{background-image:url(images/caliblur/blur-noise.png),url(images/caliblur/blur-dark.png)!important}body.admin td{font-family:Open Sans regular,Helvetica Neue,Helvetica,Arial,sans-serif}body.admin td>a:hover{color:#fff}.glyphicon-ok::before{content:"\EA55";font-family:plex-icons-new;font-weight:400}body.admin.config>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type,body.admin.uiconfig>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type,body.mailset>div.container-fluid>div>div.col-sm-10>div.discover>h1{width:calc(100vw - 240px);background:rgba(0,0,0,.15);color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:60px;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-box-direction:normal;-webkit-margin-before:0;-webkit-margin-after:0;height:60px;top:60px;left:240px;position:fixed;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;white-space:nowrap;font-weight:400}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover>h1{margin:0;padding-left:25px}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover{padding:0 30px!important;margin-bottom:120px!important}body.admin.config>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type::before,body.admin.uiconfig>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type::before{content:none}body.admin.config>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type,body.admin.uiconfig>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type{margin:0;padding-left:25px}body:not(.blur) #scnd-nav>li>a>.glyphicon-book,body:not(.blur) #scnd-nav>li>a>.glyphicon-search{margin-right:7px}#scnd-nav>li>a>.glyphicon-search{margin-right:11px}#remove-from-shelves+.more-stuff+.languages,.identifiers+.more-stuff+.languages,.tags+.more-stuff+.languages{margin-top:20px}body:not(.blur):not(.login):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.langlist):not(.authorlist):not(.serieslist):not(.catlist):not(.shelforder):not(.admin):not(.modal-open)>div.container-fluid>div.row-fluid>div.col-sm-10:after{background:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.15)),to(rgba(0,0,0,.15))),url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png)!important;background:-webkit-linear-gradient(bottom,rgba(0,0,0,.15),rgba(0,0,0,.15)),url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png)!important;background:-o-linear-gradient(bottom,rgba(0,0,0,.15),rgba(0,0,0,.15)),url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png)!important;background:linear-gradient(0deg,rgba(0,0,0,.15),rgba(0,0,0,.15)),url(images/caliblur/blur-noise.png),url(images/caliblur/blur-light.png)!important;background-repeat:no-reapeat,repeat,no-repeat!important;background-attachment:fixed,fixed,fixed!important;background-position:center center,center center,center center!important;background-size:auto,auto,cover!important;-webkit-background-size:auto,auto,cover!important;-moz-background-size:autom,auto,cover!important;-o-background-size:auto,auto,cover!important;width:100%;height:60px;display:block;content:'';position:fixed;top:60px;left:240px;z-index:99999999999999999999999999999999999}body.advsearch:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8:before,body.book:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.single:before,body.stat:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10:before,body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open)>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover:first-of-type:before{background:url(images/caliblur/blur-noise.png) center center fixed,url(images/caliblur/blur-light.png) center center no-repeat fixed!important;background-size:auto,cover!important;-webkit-background-size:auto,cover!important;-moz-background-size:auto,cover!important;-o-background-size:auto,cover!important;width:calc(100vw - 240px);height:calc(100% - 120px);display:block;content:'';position:fixed;top:120px;left:240px;right:0;bottom:0;z-index:99999999999999999999999999999999999}body.advsearch:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8:after,body.book:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.single:after,body.stat:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>p:first-of-type:after,body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open)>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover:first-of-type:after{content:'';-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-radius:50%;border-top:2px solid var(--color-secondary);border-right:2px solid var(--color-secondary);width:24px;height:24px;-webkit-animation:loading .5s linear infinite;animation:loading .5s linear infinite;display:block;top:240px;left:calc(50% + 120px);position:fixed;z-index:999999999999999999999999999999999999}.search #shelf-actions,body.login .home-btn{display:none}body.read:not(.blur) a[href*=readbooks]{color:hsla(0,0%,100%,.7)!important}.tooltip{-webkit-transform:translate(0) scale(1);-ms-transform:translate(0) scale(1);transform:translate(0) scale(1)}.tooltip.in{opacity:1;-o-transition:opacity .15s ease-out,transform .15s cubic-bezier(.6,.4,.2,1.4);transition:opacity .15s ease-out,transform .15s cubic-bezier(.6,.4,.2,1.4);transition:opacity .15s ease-out,transform .15s cubic-bezier(.6,.4,.2,1.4),-webkit-transform .15s cubic-bezier(.6,.4,.2,1.4);-webkit-transform:translate(0) scale(1);-ms-transform:translate(0) scale(1);transform:translate(0) scale(1);pointer-events:none}.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:#191a1c;-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:#eee}.tooltip.bottom .tooltip-arrow{width:0;margin-left:auto;height:0;border:6px solid transparent;top:-6px;border-bottom-color:#191a1c;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);position:absolute;margin-top:-16px!important}#sendbtn>span{height:60px}body.search>div.container-fluid>div>div.col-sm-10>div.discover>h2+p{border-top:2px solid rgba(0,0,0,.3);margin:90px 27px 0 20px;text-align:center;padding-top:100px;color:hsla(0,0%,100%,.45);font-size:18px;line-height:1.5}body.search>div.container-fluid>div>div.col-sm-10>div.discover>h2+p:before{content:"Library";position:absolute;top:25px;left:60px;color:#fff;font-size:24px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.71428571}body.search>div.container-fluid>div>div.col-sm-10>div.discover>h2+p:after{content:"No Results";position:absolute;margin-left:-170px;margin-top:-40px;font-size:20px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3{max-width:calc(25% - 75px);position:fixed}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9{margin-left:25%!important;width:75%}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete{position:fixed;top:60px;right:0;width:50px;height:60px;color:transparent;background:0 0;overflow:hidden;cursor:pointer;border-radius:0}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete:before,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete:before{content:"\EA6D";font-family:plex-icons-new;font-size:18px;color:hsla(0,0%,100%,.7)}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete:hover,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete:hover{background:#ce3d2a}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete:hover:before,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center>#delete:hover:before{color:#fff}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center.more-stuff>h4,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-3>div.text-center.more-stuff>h4{color:#eee;margin:20px;text-transform:uppercase;font-size:16px}.editbook .form-control.tt-hint,.upload .form-control.tt-hint{background:hsla(0,0%,100%,.08)!important}.checkbox input[type=checkbox]{margin-left:-19px;margin-top:5px}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover{width:calc(100% - 3px);margin:0 0 0 3px!important;padding:0!important;border-collapse:collapse}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container,body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table{border:none;border-radius:0}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th{border-bottom:none;border-radius:0;background-color:hsla(0,0%,100%,.1);border-right:2px solid transparent;text-align:left!important;position:relative}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th:last-of-type{border-right:none}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th:hover{background-color:hsla(0,0%,100%,.15);color:#fff}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th:hover .th-inner{color:#fff}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th>.th-inner{font-size:13px;color:hsla(0,0%,100%,.7);-webkit-tap-highlight-color:transparent;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;background-image:none;text-align:left;padding:8px 20px;white-space:nowrap;width:100%;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th>.th-inner.asc,body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th>.th-inner.desc{color:#fff}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th>.th-inner.asc:after{content:"\EA58";font-family:plex-icons-new;font-weight:400;right:20px;position:absolute}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th>.th-inner.desc:after{content:"\EA57";font-family:plex-icons-new;font-weight:400;right:20px;position:absolute}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>tbody>tr:hover{background:0 0!important}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>tbody>tr>td{background:0 0;border:none;text-align:left!important;padding:8px 20px;color:hsla(0,0%,100%,.65);-webkit-tap-highlight-color:transparent;font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>tbody>tr:nth-of-type(even){background-color:hsla(0,0%,100%,.02)!important}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>tbody>tr.no-records-found>td:before{content:"No Records Found";position:absolute;top:120px;left:calc(50% - 66px);font-size:14px;color:hsla(0,0%,100%,.65)}.epub-back,.epub-back:before{display:inline-block;overflow:hidden}.epub-back{width:18px;height:19px;line-height:20px;opacity:.5;padding:4px;border-radius:4px;position:relative}.epub-back>input{opacity:0;width:26px;height:27px;position:absolute;overflow:hidden;padding:0;left:0;top:0}.epub-back:before{content:"\EA1C";font-family:plex-icons-new;font-weight:400;color:#4f4f4f;position:absolute;opacity:.5;font-size:16px;left:5px;top:4px}.epub-back:hover:before{top:3px;left:4px;opacity:1}.epub-back:hover{border:1px solid rgba(0,0,0,.2);padding:3px}.col-sm-10 .book-meta>div.btn-toolbar>div.btn-group>div.btn-group>p:first-child{margin:0}body.login>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a:hover{color:#ccc!important;background-color:transparent!important}.empty-ul{opacity:.6;cursor:default;pointer-events:none}#DeleteDomain:hover:before,#RestartDialog:hover:before,#ShutdownDialog:hover:before,#UpdateprogressDialog:hover:before,#deleteButton,#deleteModal:hover:before,body.mailset>div.container-fluid>div>div.col-sm-10>div.discover td>a:hover{cursor:pointer}.lDutch{padding-left:90px!important}.blur-wrapper+.dropdown-menu{position:fixed;top:118px;right:5px}#read-in-browser[aria-expanded=true],#shelf-actions>.btn-group.open,.downloadBtn.open,.profileDrop[aria-expanded=true]{pointer-events:none}#btnGroupDrop1[aria-expanded=true]>span,#read-in-browser[aria-expanded=true]>span,#shelf-actions>.btn-group.open>#add-to-shelf>span{color:#fff}.navigation li a span{vertical-align:middle;margin-bottom:1px}.navigation li.active a .glyphicon-star{color:var(--color-primary)}#shelf-actions,#shelf-actions>.btn-group,#shelf-actions>.btn-group>.empty-ul{pointer-events:none}#shelf-actions>.btn-group>#add-to-shelf[aria-expanded=false]:not(.empty-ul){pointer-events:auto}.book-meta>.bookinfo>.comments p,.description p{margin:0 0 28px}#login,.profileDrop+span.hidden-sm{display:none}.admin #container>h2,body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>h2{font-size:24px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;font-weight:400;line-height:1}.admin #container>.col-xs-12,body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>.col-xs-12{width:100%;background:rgba(0,0,0,.15);padding:0;border-collapse:collapse}.admin #container>.col-xs-12:last-of-type,body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>.col-xs-12:last-of-type{border-bottom:2px solid rgba(0,0,0,.3)}.admin #container>.col-xs-12>.Row>.col-xs-6,body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>.col-xs-12>.row>.col-xs-6{width:50%;padding-top:8px;padding-bottom:8px;border-top:2px solid rgba(0,0,0,.3)}body.admin>div.container-fluid>div>div.col-sm-10>div.discover .btn>a{text-decoration:none;color:#fff}.admin #container+.col-xs-12{padding:0;margin:10px 0 30px}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>.col-xs-12:nth-child(3){margin-bottom:20px}body.admin:not(.modal-open) .btn-default{margin-bottom:10px}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:hsla(0,0%,100%,.02)}.form-group[aria-label="Upload cover from local drive"]>.btn-primary{font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3{max-width:calc(25% - 75px);position:fixed;padding-left:30px;padding-right:0;z-index:9}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-9,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-9{margin-left:25%!important;width:75%}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete{position:fixed;top:60px;right:0;width:50px;height:60px;color:transparent;background:0 0;overflow:hidden;cursor:pointer;border-radius:0}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete:before,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete:before{content:"\EA6D";font-family:plex-icons-new;font-size:18px;color:hsla(0,0%,100%,.7);vertical-align:super}#main-nav+#scnd-nav .create-shelf a,#main-nav+#scnd-nav li.nav-head{font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;text-transform:uppercase}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete:hover,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete:hover{background:#ce3d2a}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete:hover:before,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete:hover:before{color:#fff}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center.more-stuff>h4,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center.more-stuff>h4{color:#eee;margin:20px;text-transform:uppercase;font-size:16px}#main-nav+#scnd-nav{width:240px;height:calc(100% - 120px);left:0;top:120px;background:0 0;padding:0 5px 20px 0;overflow-y:auto;position:fixed}#main-nav+#scnd-nav li.nav-head{margin:0;color:hsla(0,0%,100%,.3);font-size:12px;line-height:45px;padding-left:25px}#main-nav+#scnd-nav>li.nav-head:first-child{margin-top:10px}#main-nav+#scnd-nav li{min-height:30px;max-width:265px;overflow:visible;border-radius:0 4px 4px 0;display:list-item;height:auto;float:none}#main-nav+#scnd-nav li a{color:hsla(0,0%,100%,.7);text-decoration:none;padding:4px 25px;font-size:13px;height:30px;line-height:1.71428571;width:100%;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;border-radius:0 4px 4px 0}#main-nav+#scnd-nav li a span{vertical-align:middle;margin-bottom:1px;margin-right:10px}#main-nav+#scnd-nav li a span:before{font-size:13px}#main-nav+#scnd-nav li.active a{color:var(--color-primary);background:0 0}#main-nav+#scnd-nav li a:hover{background:hsla(0,0%,100%,.08)}#main-nav+#scnd-nav li a[href*=advanced_search]{display:block}#main-nav+#scnd-nav li a[href*=advanced_search] span.hidden-sm{display:inline-block!important}#main-nav+#scnd-nav li.open a{background:0 0}#main-nav+#scnd-nav li.open a:hover{background:hsla(0,0%,100%,.08);color:#fff}#main-nav+#scnd-nav li a .glyphicon-star{color:hsla(0,0%,100%,.7)}#main-nav+#scnd-nav li a:hover .glyphicon-star{color:#fff}#main-nav+#scnd-nav #nav_cat a span{margin-right:8px}#main-nav+#scnd-nav .nav-head:nth-child(1n+2){border-top:none;padding-top:0;width:200px}#main-nav+#scnd-nav .create-shelf{width:25px;margin:10px -15px 0 0;min-height:auto;float:right;font-size:12px;text-align:center}#main-nav+#scnd-nav .create-shelf a{width:25px;color:hsla(0,0%,100%,.7)!important;background-color:transparent;padding:5px 7px 2px;font-size:12px;line-height:1;border-radius:3px;border:0;-webkit-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s;font-weight:400;white-space:nowrap;margin:auto;max-height:22px;-o-text-overflow:initial;text-overflow:initial;display:block}#main-nav+#scnd-nav .create-shelf a:before{content:"\EA13";font-family:plex-icons-new;font-size:100%;padding-right:10px;vertical-align:middle}#main-nav+#scnd-nav .create-shelf a:hover{background:0 0;color:#fff!important}#main-nav+#scnd-nav:after{width:100%;height:60px;background:rgba(0,0,0,.15);display:block;content:'';position:fixed;top:60px;left:240px;pointer-events:none}.modal-dialog{margin:0 auto 60px}body.admin.modal-open .navbar{z-index:0!important}#RestartDialog,#ShutdownDialog,#UpdateprogressDialog,#deleteModal{top:0;overflow:hidden;padding-top:70px;left:0;right:0;bottom:0;background:rgba(0,0,0,.5)}#RestartDialog:before,#ShutdownDialog:before,#UpdateprogressDialog:before,#deleteModal:before{content:"\E208";padding-right:10px;display:block;font-family:Glyphicons Regular;font-style:normal;font-weight:400;position:absolute;left:calc(50% + 185px);top:88px;font-size:16px;color:#eee;opacity:.5;-webkit-transition:-webkit-transform .3s ease-out;-o-transition:transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-60px);-ms-transform:translate(0,-60px);transform:translate(0,-60px);z-index:99}#RestartDialog.in:before,#ShutdownDialog.in:before,#UpdateprogressDialog.in:before,#deleteModal.in:before{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}#RestartDialog>.modal-dialog,#ShutdownDialog>.modal-dialog,#UpdateprogressDialog>.modal-dialog,#deleteModal>.modal-dialog{width:450px;margin:auto}#RestartDialog>.modal-dialog>.modal-content,#ShutdownDialog>.modal-dialog>.modal-content,#UpdateprogressDialog>.modal-dialog>.modal-content,#deleteModal>.modal-dialog>.modal-content{max-height:calc(100% - 90px);-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:3px;z-index:9999999999999999999999;left:calc(50% - 225px);right:auto;width:450px}#RestartDialog>.modal-dialog>.modal-content>.modal-header,#ShutdownDialog>.modal-dialog>.modal-content>.modal-header,#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-header,#deleteModal>.modal-dialog>.modal-content>.modal-header{padding:15px 20px;border-radius:3px 3px 0 0;line-height:1.71428571;vertical-align:bottom;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#eee;border-bottom:1px solid #222;background-color:#323232;text-align:left}#RestartDialog>.modal-dialog>.modal-content>.modal-header:before,#ShutdownDialog>.modal-dialog>.modal-content>.modal-header:before,#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-header:before,#deleteModal>.modal-dialog>.modal-content>.modal-header:before{padding-right:10px;font-size:18px;color:#999;font-style:normal;font-weight:400;display:inline-block}#RestartDialog>.modal-dialog>.modal-content>.modal-header:before{content:"\EA4F";font-family:plex-icons-new}#ShutdownDialog>.modal-dialog>.modal-content>.modal-header:before{content:"\E064";font-family:glyphicons regular}#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-header:before{content:"\EA15";font-family:plex-icons-new}#deleteModal>.modal-dialog>.modal-content>.modal-header:before{content:"\EA6D";font-family:plex-icons-new}#RestartDialog>.modal-dialog>.modal-content>.modal-header:after{content:"Restart Calibre-Web";display:inline-block;font-size:20px}#ShutdownDialog>.modal-dialog>.modal-content>.modal-header:after{content:"Stop Calibre-Web";display:inline-block;font-size:20px}#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-header:after{content:"Update Calibre-Web";display:inline-block;font-size:20px}#deleteModal>.modal-dialog>.modal-content>.modal-header:after{content:"Delete Book";display:inline-block;font-size:20px}#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-header>span,#deleteModal>.modal-dialog>.modal-content>.modal-header>span,#loader>center>img,.rating-mobile{display:none}#RestartDialog>.modal-dialog>.modal-content>.modal-body{padding:20px 20px 10px;font-size:16px;line-height:1.6em;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;background:#282828;text-align:left}#ShutdownDialog>.modal-dialog>.modal-content>.modal-body,#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-body,#deleteModal>.modal-dialog>.modal-content>.modal-body{padding:20px 20px 40px;font-size:16px;line-height:1.6em;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;background:#282828;text-align:left}#RestartDialog>.modal-dialog>.modal-content>.modal-body>p,#ShutdownDialog>.modal-dialog>.modal-content>.modal-body>p,#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-body>p,#deleteModal>.modal-dialog>.modal-content>.modal-body>p{padding:20px 20px 0 0;font-size:16px;line-height:1.6em;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;background:#282828}#RestartDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#restart),#ShutdownDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#shutdown),#deleteModal>.modal-dialog>.modal-content>.modal-footer>.btn-default{float:right;z-index:9;position:relative;min-width:80px;padding:10px 18px;font-size:16px;line-height:1.33;border-radius:3px;background-color:hsla(0,0%,100%,.25)}#RestartDialog>.modal-dialog>.modal-content>.modal-body>#restart{float:right;z-index:9;position:relative;margin:25px 0 0 10px;min-width:80px;padding:10px 18px;font-size:16px;line-height:1.33;border-radius:3px}#ShutdownDialog>.modal-dialog>.modal-content>.modal-body>#shutdown,#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-body>#updateFinished{float:right;z-index:9;position:relative;margin:55px 0 0 10px;min-width:80px;padding:10px 18px;font-size:16px;line-height:1.33;border-radius:3px}#deleteModal>.modal-dialog>.modal-content>.modal-footer>.btn-danger{float:right;z-index:9;position:relative;margin:0 0 0 10px;min-width:80px;padding:10px 18px;font-size:16px;line-height:1.33;border-radius:3px}#RestartDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#restart){margin:25px 0 0 10px}#ShutdownDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#shutdown){margin:55px 0 0 10px}#deleteModal>.modal-dialog>.modal-content>.modal-footer>.btn-default{margin:0 0 0 10px}#RestartDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#restart):hover,#ShutdownDialog>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#shutdown):hover,#deleteModal>.modal-dialog>.modal-content>.modal-footer>.btn-default:hover{background-color:hsla(0,0%,100%,.3)}#RestartDialog>.modal-dialog>.modal-content>.modal-body:after{content:'';position:absolute;width:100%;height:72px;background-color:#323232;border-radius:0 0 3px 3px;left:0;margin-top:10px;z-index:0;border-top:1px solid #222;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#ShutdownDialog>.modal-dialog>.modal-content>.modal-body:after,#UpdateprogressDialog>.modal-dialog>.modal-content>.modal-body:after{content:'';position:absolute;width:100%;height:72px;background-color:#323232;border-radius:0 0 3px 3px;left:0;margin-top:40px;z-index:0;border-top:1px solid #222;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#deleteButton{position:fixed;top:60px;right:50px;width:50px;height:60px;color:transparent;background:0 0;overflow:hidden;border-radius:0;border-right:2px solid rgba(0,0,0,.3)}#deleteButton>span.glyphicon-remove{font-size:18px;color:hsla(0,0%,100%,.7)}#deleteButton:hover span.glyphicon-remove{color:#fff}#deleteButton>span.glyphicon-remove:before{content:"\EA66"}.editbook .more-stuff>.dropdown-menu{position:fixed;top:90px;right:17px;left:auto!important}body.authorlist .blur-wrapper:after{content:none}#loader{background-image:url(images/caliblur/blur-noise.png),url(images/caliblur/blur-dark.png)!important;background-repeat:repeat,no-repeat!important;background-attachment:fixed,fixed!important;background-position:center center,center center!important;background-size:auto,cover!important;-webkit-background-size:auto,cover!important;-moz-background-size:auto,cover!important;-o-background-size:auto,cover!important;position:fixed;top:0;left:0;width:100vw;height:100%;z-index:9}#loader>center{display:block;width:100%;height:100%;top:calc(50% - 120px);position:absolute}#loader>center>h3{font-size:20px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;text-transform:uppercase}#loader>center:after{content:'';-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-radius:50%;border-top:2px solid var(--color-secondary);width:24px;height:24px;animation:spin .5s linear infinite;display:block;margin:20px auto;position:fixed;top:calc(50% - 24px);left:calc(50% - 12px);z-index:999999}.book:not(body){width:180px!important;max-width:180px!important;min-width:180px!important}#books .cover img,#books_rand .cover img,.book.isotope-item .cover img{width:150px!important}.container-fluid .book .meta .author,.container-fluid .book .meta .title{white-space:nowrap!important}.container-fluid .book .meta .rating{display:none!important}.container-fluid .book .meta{margin-top:0!important}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>h2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>h2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>h2{position:absolute;margin-top:-30px;font-size:14px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important;display:-ms-grid;display:grid;margin-top:40px;margin-bottom:60px}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important;display:-ms-grid;display:grid;margin-top:90px;margin-bottom:0}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12:before{content:'';display:block;position:absolute;width:calc(100% + 30px);height:2px;background:rgba(0,0,0,.3);margin-left:-15px;margin-top:-65px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2,body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2{width:135px!important;max-width:135px!important;min-width:135px!important}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a>img,body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a>img,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a>img{width:135px!important;height:200px!important}#theme,label[for=theme]{display:inline}@media only screen and (max-width:767px){#form-upload .form-group .btn:before,#top_admin>.glyphicon,#top_tasks>.glyphicon-tasks{-moz-osx-font-smoothing:grayscale;font-weight:400;font-style:normal}#query,.navbar-collapse.collapse>.col-sm-2{padding-left:0;padding-right:0}#query,.collapsing{-o-transition:all 0s}body.login:not(.read-frame),body:not(.read-frame){background-color:var(--color-background-mobile)!important;background-image:none!important}.navbar-default{height:48px;min-height:48px}.navbar>.container-fluid{height:48px}.navbar>.container-fluid>.navbar-header{margin:0}.navbar>.container-fluid>.navbar-header>button.navbar-toggle{border:0;float:left;padding:0;width:48px;height:48px;margin:0;top:0}.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{background:0 0}.navbar>.container-fluid>.navbar-header>button.navbar-toggle:before{content:'';display:inline-block;overflow:hidden;border-radius:50%;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYwIiBoZWlnaHQ9IjU2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTE0NC4yOTEgNDkyLjMyNUMxNjYuNjI0IDQ3Ni4yNjUgMTkzLjE5NCA0NjYuMTU2IDIyNCA0NjJjMTIuNDQ0IDkuMzMzIDMxLjExMSAxNCA1NiAxNHM0My41NTYtNC42NjcgNTYtMTRjMzAuODA2IDQuMTU2IDU3LjM3NiAxNC4yNjQgNzkuNzA5IDMwLjMyNUMzNzYuNTI3IDUxNy40MzUgMzI5Ljk1MSA1MzIgMjgwIDUzMmMtNDkuOTUxIDAtOTYuNTI3LTE0LjU2NS0xMzUuNzA5LTM5LjY3NXoiIGZpbGwtb3BhY2l0eT0iLjYiLz4KICAgICAgICA8cGF0aCBkPSJNMjI0IDQ2MmwxMi44OC00MC4yNTFDMTk2LjQyOSAzOTcuNDYyIDE2OCAzNDAuMDM1IDE2OCAyNzMuMDU5YzAtMzUuMTkzIDcuODQ5LTY3Ljc1IDIxLjE2OC05NC4yNDggMTYuMTczIDQuOTc3IDM1LjMxNSA3Ljg1NiA1NS44MzIgNy44NTYgNTEuMTA0IDAgOTMuNjgtMTcuODYgMTAzLjA3Mi00MS41MTZDMzc0Ljc3OSAxNzQuNTg4IDM5MiAyMjAuOTMxIDM5MiAyNzMuMDU5YzAgNjYuOTc2LTI4LjQyOSAxMjQuNDAzLTY4Ljg4IDE0OC42OUwzMzYgNDYyYy0xMi40NDQgOS4zMzMtMzEuMTExIDE0LTU2IDE0LTI0LjY5NCAwLTQzLjI2My00LjU5NC01NS43MDctMTMuNzgyTDIyNCA0NjJ6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xODAuMDY0IDM0NS44NDlDMTU1LjI4MiAzMTguMDY3IDE0MCAyNzkuOTk3IDE0MCAyMzhjMC04NS4wNTIgNjIuNjgtMTU0IDE0MC0xNTRzMTQwIDY4Ljk0OCAxNDAgMTU0YzAgNDEuOTk3LTE1LjI4MiA4MC4wNjctNDAuMDY0IDEwNy44NDkgNy43MTYtMjEuODYyIDEyLjA2NC00Ni41OTYgMTIuMDY0LTcyLjc5IDAtNTIuMTI4LTE3LjIyMS05OC40NzEtNDMuOTI4LTEyNy45MDgtOS4zOTIgMjMuNjU2LTUxLjk2OCA0MS41MTYtMTAzLjA3MiA0MS41MTYtMjAuNTE3IDAtMzkuNjU5LTIuODc5LTU1LjgzMi03Ljg1NkMxNzUuODQ5IDIwNS4zMDkgMTY4IDIzNy44NjYgMTY4IDI3My4wNTljMCAyNi4xOTQgNC4zNDggNTAuOTI4IDEyLjA2NCA3Mi43OXoiIGZpbGwtb3BhY2l0eT0iLjQ1Ii8+CiAgICAgICAgPHBhdGggZD0iTTI4MCA1MzJjMTM5LjE3NiAwIDI1Mi0xMTIuODI0IDI1Mi0yNTJTNDE5LjE3NiAyOCAyODAgMjggMjggMTQwLjgyNCAyOCAyODBzMTEyLjgyNCAyNTIgMjUyIDI1MnptMCAyOEMxMjUuMzYgNTYwIDAgNDM0LjY0IDAgMjgwUzEyNS4zNiAwIDI4MCAwczI4MCAxMjUuMzYgMjgwIDI4MC0xMjUuMzYgMjgwLTI4MCAyODB6IiBmaWxsLW9wYWNpdHk9Ii43NSIvPgogICAgPC9nPgo8L3N2Zz4K);background-size:contain;position:absolute;width:30px;height:30px;top:9px;left:9px}.navbar>.container-fluid>.navbar-header>button.navbar-toggle>span{opacity:0;position:absolute}body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-header>a{margin:0!important;height:48px;line-height:48px;width:calc(100vw - 138px);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}.home-btn{height:48px;line-height:28.29px;right:10px;left:auto}.home-btn>a{height:48px;line-height:48px}.plexBack{height:48px;line-height:28.29px;left:48px;display:none}.plexBack>a{height:48px;line-height:48px}body>div.navbar.navbar-default.navbar-static-top>div>form{margin:0;padding:0;border:0;box-shadow:none;-webkit-box-shadow:none;position:absolute;right:50px;top:0;height:48px}body>div.navbar.navbar-default.navbar-static-top>div>form:before{top:12px;left:auto;right:15px;color:hsla(0,0%,100%,.7)}body>div.navbar.navbar-default.navbar-static-top>div>form:hover:before{color:#fff}body>div.navbar.navbar-default.navbar-static-top>div>form>div{width:40px;height:48px}#query{width:40px!important;height:48px;border-radius:0;background:0 0;cursor:pointer;color:transparent;opacity:0;-webkit-transition:all 0s;transition:all 0s}body>div.navbar.navbar-default.navbar-static-top>div>form.search-focus{position:absolute;top:0;left:0;width:100vw}body>div.navbar.navbar-default.navbar-static-top>div>form.search-focus>div.form-group{width:100vw}body>div.navbar.navbar-default.navbar-static-top>div>form.search-focus>div>#query{width:calc(100vw - 100px)!important;margin:0!important}#query:focus{background:#555!important;color:#eee!important;cursor:text;left:50px;width:calc(100px)!important;opacity:1;padding-left:15px}body>div.navbar.navbar-default.navbar-static-top>div>form.search-focus>div>span.input-group-btn:before{content:"\EA33";display:block;font-family:plex-icons-new;position:fixed;left:0;top:0;width:50px;height:48px;color:#eee;font-weight:400;font-size:14px;background:#555;line-height:48px;text-align:center;cursor:pointer}.mobile-navbar-brand,.profileDrop>span:after,body>div.navbar.navbar-default.navbar-static-top>div>div.navbar-collapse.collapse>ul:first-of-type:not(.navbar-right){display:none}#form-upload>.form-group:before,.profileDrop+span.hidden-sm{font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span.input-group-btn{background:#555;position:absolute;left:auto;right:0;height:48px;width:50px;border-radius:0}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span>button{height:48px;width:50px;border-radius:0}body>div.navbar.navbar-default.navbar-static-top>div>form>div>span>button::before{color:#555;background:#eee}.navbar-collapse.collapse{height:calc(100%)!important;width:240px;background:#3f4245;border:0;-webkit-box-shadow:none;box-shadow:none;margin:0;padding:0;position:fixed;top:0;left:0;overflow-y:auto!important;overflow-x:hidden!important}#form-upload,#main-nav>li:nth-child(1){border-bottom:1px solid hsla(0,0%,78%,.15);float:left}#main-nav{margin-right:0;height:auto}#main-nav>li:nth-child(1){margin-left:0;width:100%;height:120px;z-index:99}body>div.navbar.navbar-default.navbar-static-top>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{right:auto;position:absolute;left:211px;top:80px;color:#fff;content:'';display:inline-block;width:0;height:0;vertical-align:middle;border-top:5px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.profileDrop>span{width:30px;height:30px;margin:30px 15px;top:0}.profileDrop+span.hidden-sm{display:block;position:absolute;top:70px;left:15px;color:#fff;pointer-events:none}#main-nav>li{float:left}#main-nav>li.form-upload{width:100%}#form-upload{position:relative;width:100%;margin:0;padding:0;height:60px;border-top:none}#form-upload>.form-group:before{content:"Upload Book";color:#fff;font-size:13px!important;padding-left:15px;height:60px;line-height:60px;position:absolute}#form-upload .form-group .btn{float:left;width:240px}#btn-upload{width:100%}#form-upload .form-group .btn:before{content:"\e043";font-family:'Glyphicons Halflings';line-height:1;-webkit-font-smoothing:antialiased;color:#fff;font-size:16px;background:0 0;border-radius:50%;width:20px;height:20px;display:inline-block;margin:0;padding:23px 0 23px 202px;z-index:-9}#form-upload .form-group .btn:after{content:"\EA13";position:absolute;font-family:plex-icons-new;font-size:8px;background:#3c444a;color:#fff;border-radius:50%;padding:.25px .25px 0 0;z-index:9;left:198px;top:32px;width:10px;height:10px;line-height:10px;font-weight:400;text-align:center;pointer-events:none}#main-nav>li.top_admin,#main-nav>li.top_tasks{height:45px;width:100%;min-height:30px;overflow:visible;border-radius:0 4px 4px 0;max-width:265px}#main-nav>li.top_tasks:before{content:"MANAGE";color:hsla(0,0%,100%,.45);text-transform:uppercase;font-size:12px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:60px;padding-left:15px;position:absolute;top:-60px}#top_admin,#top_tasks,.navigation>ul>li>a{color:#fff;height:45px;width:100%;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;text-decoration:none}#main-nav>li.top_tasks{margin-top:72px}#top_admin,#top_tasks{padding:11.5px 15px;font-size:13px;line-height:1.71428571;overflow:hidden}#top_admin>.glyphicon,#top_tasks>.glyphicon-tasks{position:relative;top:0;font-family:'Glyphicons Halflings';line-height:1;border-radius:0;background:0 0;display:inline-block}#top_tasks>.glyphicon-tasks{-webkit-font-smoothing:antialiased;margin-right:7px}#top_admin>.glyphicon{-webkit-font-smoothing:antialiased;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{text-transform:none;font-family:plex-icons-new;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;speak:none;vertical-align:sub;font-weight:400;font-style:normal}#top_tasks>.glyphicon-tasks::before{content:"\EA2E";line-height:22px;font-size:16px}body>div.navbar.navbar-default.navbar-static-top>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{display:inline-block;line-height:22px}.navigation>ul>li:hover{background-color:transparent}.navigation>ul>li{min-height:45px;max-width:265px;overflow:visible;border-radius:0 4px 4px 0}.navigation>ul>li>a{padding:11.5px 15px;font-size:13px;line-height:1.71428571;overflow:hidden}.navigation .nav-head{margin:0;color:hsla(0,0%,100%,.45);text-transform:uppercase;font-size:12px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:60px;padding-left:15px;height:60px;min-height:60px}.pagination,.pagination:after,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous,body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous:before{line-height:42px;height:42px}.navigation .create-shelf{width:25px;margin:17.5px 0 0;min-height:auto;float:right}.navigation .create-shelf a{color:#fff!important}.navigation li a .glyphicon-star{color:#fff}.navbar-nav .open .dropdown-menu.profileDropli{width:210px;margin-left:12px}.navbar-default .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{color:#fff;background-color:hsla(0,0%,100%,.08)}.navbar-collapse.collapse .navigation li a span{vertical-align:middle}.navbar-collapse.collapse .navigation li a span.caret{position:absolute;left:210px;top:20px}.navbar-collapse.collapse .hidden-xs{display:list-item!important;width:225px}.navbar-collapse.collapse:after{display:none}.tooltip{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.container:before,body.catlist>div.container-fluid>div>div.col-sm-10>div.container:before,body.langlist>div.container-fluid>div>div.col-sm-10>div.container:before,body.login .navbar>.container-fluid>.navbar-header>button.navbar-toggle,body.serieslist>div.container-fluid>div>div.col-sm-10>div.container:before{display:none}body>div.container-fluid>div.row-fluid>div.col-sm-10{width:100%;top:42px;height:calc(100% - 42px)}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid,body>div.container-fluid>div>div.col-sm-10>div.discover{width:100%;margin:0!important;padding:10px!important}.author>.container-fluid>.row-fluid>.col-sm-10>h2:before,body.admin.config>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type,body.admin.uiconfig>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type,body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row:first-of-type>div.col>h2:before,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type:before,body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1:before,body.mailset>div.container-fluid>div>div.col-sm-10>div.discover>h1,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1:before,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover>h1,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover>h2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>#test:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>div:nth-child(10)>label:before,body>div.container-fluid>div>div.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2,body>div.container-fluid>div>div.col-sm-10>h1,body>div.container-fluid>div>div.col-sm-10>h3:first-of-type{top:48px;left:0;padding-left:10px;height:42px;width:calc(100%);line-height:42px;padding-right:130px;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;background:rgba(0,0,0,.15);font-size:13px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>h1{top:10px;left:55px;font-size:16px}body.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type:before{text-transform:none}.pagination{top:48px}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.next:before{height:42px;line-height:42px;padding:11px 0 11px 20px}body>div.container-fluid>div>div.col-sm-10>div.pagination>a.previous:before{padding:11px 25px}body>.container-fluid{height:calc(100% - 48px);top:48px}body>div.container-fluid>div>div.col-sm-10>div.discover>div.isotope{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))!important}.book:not(body){width:110px!important;max-width:110px!important;min-width:110px!important;padding:0 5px;margin-left:auto;margin-right:auto}.container-fluid .book{margin-top:10px}.container-fluid .book .cover{height:150px;margin-bottom:0}#books .cover img,#books_rand .cover img,.book.isotope-item .cover img{width:100px!important}#books>.cover>a:before,#books_rand>.cover>a:before,.book.isotope-item>.cover>a:before{line-height:40px;width:40px;height:40px;font-size:16px;padding-left:12px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10::before,body.me>div.container-fluid>div.row-fluid>div.col-sm-10:before,body.newuser.admin>div.container-fluid>div.row-fluid>div.col-sm-10::before{position:absolute;top:20px;left:30px;width:30px;height:30px;background-size:30px}body.advanced_search>div.container-fluid>div>div.col-sm-10>div.col-sm-8:before,body.author:not(.authorlist) .undefined-img:before,body.authorlist>div.container-fluid>div.row-fluid>div.col-sm-10:before,body.catlist>div.container-fluid>div.row-fluid>div.col-sm-10:before,body.langlist>div.container-fluid>div>div.col-sm-10:before,body.serieslist>div.container-fluid>div>div.col-sm-10:before,body.shelforder>div.container-fluid>div.row-fluid>div.col-sm-10:before{position:fixed;top:62px;right:23px;left:auto;width:auto;height:auto;font-size:14px;color:hsla(0,0%,100%,.7)}body.edituser.admin>div.container-fluid>div>div.col-sm-10>div.discover,body.me>div.container-fluid>div>div.col-sm-10>div.discover,body.newuser.admin>div.container-fluid>div>div.col-sm-10>div.discover{left:0;width:auto;margin:75px 15px 0!important;padding:20px 0!important;max-width:100%!important;border-top:1px solid hsla(0,0%,78%,.15)}body>div.container-fluid>div>div.col-sm-10>div.container{left:0;width:auto;margin:0!important;padding:0!important;max-width:100%!important;border:0}body.me>div.container-fluid>div>div.col-sm-10>div.discover:before{top:30px;left:70px;font-size:16px}body:not(.shelfcreate):not(.shelfedit)>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.form-group{padding-right:15px}.form-group>label{font-size:12px}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12{margin:100px 0 0;grid-template-columns:repeat(auto-fit,minmax(110px,1fr))!important}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12{float:left;width:100%;margin-bottom:10px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12:before{width:100%;margin-left:0;margin-top:-45px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2,body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2{width:100px!important;max-width:100px!important;min-width:100px!important}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a>img,body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a>img,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2>a>img{width:100px!important;height:150px!important}body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>#submit{margin-right:15px}body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2>a:after{width:calc(100%)}body>div.container-fluid>div>div.col-sm-10>h3:not(:first-of-type){margin:15px auto 10px;font-size:14px}body>div.container-fluid>div>div.col-sm-10>p{margin:auto auto 15px}.well>h2,body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>h2,body:not(.admin)>div.container-fluid>div>div.col-sm-10>div.discover:only-of-type>h2{top:48px!important;left:0!important;padding-left:10px!important;height:42px!important;width:calc(100%)!important;line-height:42px!important;padding-right:130px!important;overflow:hidden!important;-o-text-overflow:ellipsis!important;text-overflow:ellipsis!important;white-space:nowrap!important;background:rgba(0,0,0,.15)!important;font-size:13px!important;max-width:100%!important}.author>.container-fluid>.row-fluid>.col-sm-10>h2:after{content:"\e008";font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2{height:42px;width:calc(100%);line-height:42px;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;background:rgba(0,0,0,.15);font-size:13px;max-width:100%;color:hsla(0,0%,100%,.7);font-family:"Open Sans Semibold","Helvetica Neue",Helvetica,Arial,sans-serif;position:fixed;top:48px;left:0;border:0;padding:0 50px 0 10px}body.tasks>div.container-fluid>div>div.col-sm-10>div.discover>div.bootstrap-table>div.fixed-table-container>div.fixed-table-body>#table>thead>tr>th>.th-inner.asc:after{right:2px}#libs{margin-bottom:5px}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row{padding:0}.well{padding:60px 0;max-width:calc(100% - 30px);min-width:auto}body.author .undefined-img{background:var(--color-background-mobile)!important}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group{position:relative;top:0;right:auto;left:auto;width:210px;margin:auto}#DeleteShelfDialog>.modal-dialog{max-width:calc(100vw - 40px)}#DeleteShelfDialog>.modal-dialog>.modal-content{max-width:calc(100vw - 40px);left:0}.shelfcreate .col-sm-10>.discover>form,.shelfedit .col-sm-10>.discover>form{max-width:calc(100vw - 30px);max-height:calc(100% - 200px)}.shelforder>.container-fluid>.row-fluid>.col-sm-10>.col-sm-6{margin:0;width:100%;padding:10px}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>h2+div{margin-top:0;font-size:13px;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-primary);text-align:right;text-transform:none}.shelforder #ChangeOrder{margin:0 0 10px}.shelforder>.container-fluid>.row-fluid>.col-sm-10>div.col-sm-6.col-lg-6.col-xs-6>a{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{color:var(--color-primary);background-color:transparent}body.advanced_search>div.container-fluid>div>div.col-sm-10>div.col-sm-8{border:0;width:100%;margin:0;padding:10px}.advanced_search #search>.row>.form-group.col-sm-6:first-of-type{padding-right:0;margin-bottom:15px}body.advanced_search>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>div.row:nth-child(4){margin-bottom:15px}body.advanced_search>div.container-fluid>div>div.col-sm-10>div.col-sm-8>form>.btn.btn-default{margin-bottom:20px;margin-top:10px}body.me>div.container-fluid>div>div.col-sm-10>div.discover{border-top:1px solid hsla(0,0%,78%,.15)}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12:before,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12:before{height:1px;background:hsla(0,0%,78%,.15)}body{font-size:13px}body.admin>div.container-fluid>div>div.col-sm-10>div.container-fluid>div.row>div.col>h2,body.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2{font-size:14px;text-transform:uppercase}.me .dropdown-menu>li>#top_user:hover{color:#fff}body:not(.blur):not(.login):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.langlist):not(.authorlist):not(.serieslist):not(.catlist):not(.shelforder):not(.admin):not(.modal-open)>div.container-fluid>div.row-fluid>div.col-sm-10:after{background:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.15)),to(rgba(0,0,0,.15))),url(images/caliblur/blur-noise.png),var(--color-background-mobile)!important;background:-webkit-linear-gradient(bottom,rgba(0,0,0,.15),rgba(0,0,0,.15)),url(images/caliblur/blur-noise.png),var(--color-background-mobile)!important;background:-o-linear-gradient(bottom,rgba(0,0,0,.15),rgba(0,0,0,.15)),url(images/caliblur/blur-noise.png),var(--color-background-mobile)!important;background:linear-gradient(0deg,rgba(0,0,0,.15),rgba(0,0,0,.15)),url(images/caliblur/blur-noise.png),var(--color-background-mobile)!important;width:100%;height:42px;display:block;content:'';position:fixed;top:48px;left:0;z-index:99999999999999999999999999999999999;border:0;animation:none;-webkit-animation:none;border-radius:0}body.advsearch:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8:before,body.book:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.single:before,body.stat:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10:before,body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open)>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover:first-of-type:before,body:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10:before{background:var(--color-background-mobile)!important;width:100%;height:calc(100% - 90px);display:block;content:'';position:fixed;top:90px;left:0;right:0;bottom:0;z-index:99999999999999999999999999999999999}body.advsearch:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8:after,body.book:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>div.single:after,body.stat:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10>p:first-of-type:after,body:not(.blur):not(.me):not(.author):not(.editbook):not(.upload):not(.shelfedit):not(.admin):not(.modal-open)>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover:first-of-type:after,body:not(.blur)>div.container-fluid>div.row-fluid>div.col-sm-10:after{content:'';-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-radius:50%;border-top:2px solid var(--color-secondary);border-right:2px solid var(--color-secondary);width:24px;height:24px;-webkit-animation:loading .5s linear infinite;animation:loading .5s linear infinite;display:block;top:50%;left:calc(50% - 12px);position:fixed;z-index:999999999999999999999999999999999999}body:not(.blur)>.navbar>.container-fluid>.navbar-header:before{content:"\EA30";color:hsla(0,0%,100%,.7);cursor:pointer;display:block;font-family:plex-icons-new;font-size:20px;font-stretch:100%;font-style:normal;font-variant-caps:normal;font-variant-east-asian:normal;-webkit-font-variant-ligatures:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-weight:400;height:48px;letter-spacing:normal;line-height:48px;position:absolute;left:auto;right:20px}body>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>#test{border-top:1px solid hsla(0,0%,78%,.15)}.col-sm-10 .book-meta>div.btn-toolbar{position:relative;top:0;width:calc(100% + 30px);margin-left:-15px}.book-meta .btn-toolbar>h2{display:none}.book-meta .btn-toolbar>.btn-group{float:none;margin:auto}.btn-toolbar{margin-left:0}#shelf-actions{width:50px}div.btn-group[role=group][aria-label="Download, send to Kindle, reading"]{display:block}.book-meta>.author>a:first-of-type::before,.book-meta>.bookinfo>.rating,.col-sm-10 .book-meta>div.btn-toolbar:after{display:none}div.btn-group[role=group][aria-label="Download, send to Kindle, reading"]>.downloadBtn{border-left:0}.blur-wrapper{display:none;-o-transition:none;transition:none;-webkit-transition:none}body.book>div.container-fluid>div.row-fluid>div.col-sm-10{width:100%;top:0;height:calc(100% - 0px)}body>div.container-fluid>div>div.col-sm-10>div.single{width:100%;padding:15px!important}body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-3.col-lg-3.col-xs-5{position:absolute;height:150px;width:100px;padding:0;max-width:100px;margin-top:75px}#bookDetailsModal>.modal-dialog.modal-lg>.modal-content>.modal-body>div>div>div>div.col-sm-3.col-lg-3.col-xs-5>div.cover>img,body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-3.col-lg-3.col-xs-5>div.cover>img{width:100px;height:150px}body>div.container-fluid>div>div.col-sm-10>div>div>div.col-sm-9.col-lg-9.book-meta{margin:0;width:100%;padding:0}.book-meta>h2{max-width:100%;margin-left:120px;font-size:16px;padding:15px 0 10px;min-height:60px;line-height:20px;margin-top:10px}.book-meta>.bookinfo>p:first-of-type,body.book .author{margin-left:120px;line-height:1}body.book .author{font-size:14px;padding-bottom:10px}.book-meta>.author:before{content:"Author — ";color:hsla(0,0%,100%,.45);position:relative;left:0;pointer-events:none}.book-meta>.bookinfo>.hr{background:0 0;margin:45px}.book-meta>.bookinfo>.publishing-date>span:last-of-type{padding-left:25px}.book-meta>.bookinfo>.publishers>span:last-of-type{padding-left:70px}.book-meta>.bookinfo>.languages>span:last-of-type{padding-left:65px}.book-meta>.bookinfo .publishers{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.comments+[data-readmore-toggle],div.description+[data-readmore-toggle]{text-align:center;color:var(--color-secondary);margin:10px auto}div.comments+[data-readmore-toggle]:hover,div.description+[data-readmore-toggle]:hover{color:#fff}.book-meta>.bookinfo>.comments[aria-expanded=false]+a:after,.book-meta>.description[aria-expanded=false]+a:after{content:'';display:inline-block;border-color:var(--color-secondary);width:0;height:0;border-bottom-width:0;border-right:4px solid transparent;border-top-width:5px;border-left:4px solid transparent;position:absolute;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-style:solid;vertical-align:middle;-webkit-transition:border .2s,-webkit-transform .4s;-o-transition:border .2s,transform .4s;transition:border .2s,transform .4s;transition:border .2s,transform .4s,-webkit-transform .4s;margin:12px 6px}.book-meta>.bookinfo>.comments[aria-expanded=true]+a:after,.book-meta>.description[aria-expanded=true]+a:after{content:'';display:inline-block;border-color:var(--color-secondary);width:10px;height:10px;border-top-width:0;border-right:4px solid transparent;border-bottom-width:5px;border-left:4px solid transparent;position:absolute;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-style:solid;vertical-align:middle;-webkit-transition:border .2s,-webkit-transform .4s;-o-transition:border .2s,transform .4s;transition:border .2s,transform .4s;transition:border .2s,transform .4s,-webkit-transform .4s;margin:9px 6px}body.author:not(.authorlist) .blur-wrapper:before,body.author>.container-fluid>.row-fluid>.col-sm-10>h2:after{content:"\e008";font-family:'Glyphicons Halflings';font-weight:400;z-index:9;line-height:1;text-align:center}body.author:not(.authorlist)>div.container-fluid>div>div.col-sm-10{width:100%;left:0;padding:10px}.author>.container-fluid>.row-fluid>.col-sm-10>h2{float:right;width:100%;margin:0;border-bottom:1px solid hsla(0,0%,78%,.15);padding:20px 0 0 135px;min-height:140px;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio>img{position:absolute;left:25px;top:25px;width:100px;height:100px;z-index:9;border-radius:50%}body.author>.container-fluid>.row-fluid>.col-sm-10>h2:after{font-style:normal;font-size:8vw;position:absolute;left:25px;top:26px;width:100px;height:100px}body.author:not(.authorlist) .blur-wrapper{display:block;background:var(--color-background-mobile)}body.author:not(.authorlist) .blur-wrapper>img{opacity:0;-webkit-animation:none;animation:none;-moz-animation:none;-o-animation:none}body.author:not(.authorlist) .blur-wrapper:before{position:fixed;top:62px;right:23px;left:auto;width:auto;height:auto;font-size:14px;color:hsla(0,0%,100%,.7)}.author>.container-fluid>.row-fluid>.col-sm-10>h2+.discover>.row{padding-top:30px}body.author>div.container-fluid>div>div.col-sm-10>div.discover{padding:0!important}.author>.container-fluid>.row-fluid>.col-sm-10>.author-bio{margin-top:125px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12{float:left;width:100%;margin-bottom:10px;grid-template-columns:repeat(auto-fit,minmax(110px,1fr))!important}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12{margin-bottom:20px;padding-right:15px}body.edituser.admin>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2,body.me>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>form>div.col-sm-12>div.col-sm-12>div.col-sm-2,body>div.container-fluid>div.row-fluid>div.col-sm-10>div.discover>div.col-sm-12>div.col-sm-2{height:150px;padding:0;margin:7.5px auto}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover{padding:15px 0!important}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover>form>.btn.btn-default{display:block;margin:10px 15px 0 100%}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover>form>a.btn.btn-default{margin-bottom:15px}.shelforder #sortTrue>.list-group-item:nth-of-type(even){background:0 0}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3{max-width:130px;width:130px;height:180px;margin:0;padding:15px;position:absolute}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9{padding:15px;margin:0!important;width:100%}body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>.form-group:nth-child(1),body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>.form-group:nth-child(2),body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>.form-group:nth-child(1),body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>form>div.col-sm-9>.form-group:nth-child(2){padding-left:120px}#deleteButton,body.editbook>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete,body.upload>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-3>div.text-center>#delete{top:48px;height:42px}#metaModal{padding:0;background:var(--color-background-mobile)}#main-nav+#scnd-nav li.open a:hover,#main-nav+#scnd-nav>li>a:hover{background:0 0}#metaModal>.modal-dialog{margin:5px}#metaModal>.modal-dialog>.modal-content{max-height:100%}#meta-info{max-height:calc(100vh - 224px)}#metaModal>.modal-dialog>.modal-content>.modal-header>div{display:none}#meta-info #book-list .media>.media-body{font-size:12px;line-height:16px}#metaModal>.modal-dialog>.modal-content>.modal-header>#meta-search{margin:0}#metaModal>.modal-dialog>.modal-content>.modal-header,#metaModal>.modal-dialog>.modal-content>.modal-header>h4{border-radius:8px 8px 0 0}#metaModal>.modal-dialog>.modal-content{border-radius:8px}.blur-wrapper:after{content:none}#main-nav+#scnd-nav{position:relative;top:0;padding:0;overflow:hidden;height:auto;width:auto;margin-bottom:10px}#main-nav+#scnd-nav li.nav-head{margin:0;color:hsla(0,0%,100%,.45);text-transform:uppercase;font-size:12px;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:60px;padding-left:15px;height:60px;min-height:60px}#main-nav+#scnd-nav>li{min-height:45px;max-width:265px;overflow:visible;border-radius:0 4px 4px 0}#main-nav+#scnd-nav>li>a{color:#fff;text-decoration:none;padding:11.5px 15px;font-size:13px;height:45px;line-height:1.71428571;width:100%;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}#main-nav+#scnd-nav li a span.caret{position:absolute;left:210px;top:20px}#main-nav+#scnd-nav .open .dropdown-menu{position:absolute}#main-nav+#scnd-nav li.open ul.dropdown-menu a:hover{background:hsla(0,0%,100%,.08);color:#fff}#main-nav+#scnd-nav li a .glyphicon-star{color:#fff}#main-nav+#scnd-nav .create-shelf{width:25px;margin:17.5px 0 0;min-height:auto;float:right}#main-nav+#scnd-nav .nav-head.hidden-xs{display:list-item!important;width:225px}.shelforder #sortTrue>div:before{opacity:1;pointer-events:auto;margin-left:0;margin-right:0;padding-left:15px;padding-right:30px}.shelforder #sortTrue>.list-group-item{width:78px;overflow:visible;color:#eee;pointer-events:none}.shelforder #sortTrue>div:hover{background-color:transparent!important}#RestartDialog>.modal-dialog,#ShutdownDialog>.modal-dialog,#UpdateprogressDialog>.modal-dialog,#deleteModal>.modal-dialog{max-width:calc(100vw - 40px)}#RestartDialog>.modal-dialog>.modal-content,#ShutdownDialog>.modal-dialog>.modal-content,#UpdateprogressDialog>.modal-dialog>.modal-content,#deleteModal>.modal-dialog>.modal-content{max-width:calc(100vw - 40px);left:0}.rating-mobile{display:block;text-align:center;margin:30px 0 20px}.rating-mobile .glyphicon-star.good{color:hsla(0,0%,100%,.7)}.rating-mobile .glyphicon-star{color:hsla(0,0%,100%,.25)}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group{height:60px}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[data-target="#DeleteShelfDialog"],body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=edit],body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=order]{height:40px;width:40px;padding:0;margin:10px 15px;border-radius:50%}body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[data-target="#DeleteShelfDialog"]:before,body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=edit]:before,body.shelf>div.container-fluid>div>div.col-sm-10>div.discover>.shelf-btn-group>[href*=order]:before{padding:0 0 0 10px;line-height:40px}.collapsing{-webkit-transition:all 0s;transition:all 0s}.navbar-collapse.collapse.in{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:-webkit-transform .5s;-o-transition:transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s;z-index:99}.navbar-collapse{border:0;width:240px;height:100%!important;overflow:hidden;visibility:visible;-webkit-transform:translate3d(-240px,0,0);transform:translate3d(-240px,0,0);-webkit-transition:-webkit-transform .5s;-o-transition:transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s;top:0;margin:0;position:fixed;display:block;opacity:1}.navbar-collapse:not(.in)>*{margin:0!important}.navbar-collapse.collapse.in+.sidebar-backdrop{width:calc(100vw);height:100%;position:fixed;top:0;left:0;background:rgba(0,0,0,.75);-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;z-index:9;visibility:visible;opacity:1}.alert{width:90%;max-width:500px}.col-xs-12>.row>.col-xs-2{position:absolute;padding:15px 0 0;text-align:center;min-width:40px;pointer-events:none;color:#}.col-xs-12>.row>.col-xs-10{padding:0;width:100%;height:100%;float:right;max-width:calc(100vw - 40px)}.col-xs-12>.row>.col-xs-10>a{padding:15px 15px 15px 16.66666667%;display:block;color:#eee}.col-xs-12>.row>.col-xs-10>a:hover{color:#eee;text-decoration:none}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row:nth-of-type(even){background:0 0}body>div.container-fluid>div>div.col-sm-10>div.container>div>.row{border-bottom:1px solid hsla(0,0%,78%,.15)}.col-xs-12>.row>.col-xs-10:after{content:'';position:absolute;width:0;height:0;right:13px;top:50%;vertical-align:middle;border-left:5px dashed;border-top:4px solid transparent;border-bottom:4px solid transparent;pointer-events:none;color:#eee}}@media only screen and (max-width:500px){.login .well>form{padding:30px 15px}#RestartDialog.in:before,#ShutdownDialog.in:before,#UpdateprogressDialog.in:before,#deleteModal.in:before{left:auto;right:34px}}@media only screen and (max-width:490px){#DeleteShelfDialog:before{left:auto;right:34px}}@media only screen and (max-width:500px) and (max-height:600px){body.login .well{padding:0!important}}#btnGroupDrop1>span.caret{position:absolute;margin-left:0;left:33px;top:28px}#btnGroupDrop1>span.glyphicon-download:before{margin-left:8px}#read-in-browser>span.caret,.btn-toolbar>.btn-group>#btnGroupDrop2>span.caret,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2>span.caret{position:absolute;margin-left:0;left:33px;top:28px}#read-in-browser>span.glyphicon-eye-open:before,.btn-toolbar>.btn-group>.btn-group>#btnGroupDrop2>span.glyphicon-eye-open:before{margin-left:8px}#add-to-shelf>span.caret{position:absolute;margin-left:0;left:33px;top:28px}#add-to-shelf>span.glyphicon.glyphicon-list:before{margin-left:8px}.container-fluid .book .meta .author,.container-fluid .book .meta .title{max-width:150px;overflow:hidden;text-overflow:ellipsis}body.publisherlist>div.container-fluid>div>div.col-sm-10:before{content:"\e241";font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;font-size:6vw;position:fixed;left:240px;top:180px;width:calc(20% - 55px);text-align:center}body.publisherlist>div.container-fluid>div>div.col-sm-10>div.container:before{content:"Series";top:60px;font-size:24px;color:#eee;line-height:1;padding-left:15px;position:absolute;font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400}body.publisherlist>div.container-fluid>div>div.col-sm-10>div.container>div.col-sm-6{width:100%}#have_read_cb+label:before,#have_read_cb:checked+label:before,div[aria-label="Edit/Delete book"]>.btn-warning>span:before{line-height:1.1}@media only screen and (min-width:768px){body.author:not(.authorlist) .undefined-img{background-image:url(images/caliblur/blur-light.png)!important;background-size:cover!important;-webkit-background-size:cover!important;-moz-background-size:cover!important;-o-background-size:cover!important;opacity:1;-webkit-filter:none;filter:none;width:100vw;height:100%;position:fixed;top:0;left:0;content:''}}@media only screen and (max-width:767px){body.publisherlist>div.container-fluid>div.row-fluid>div.col-sm-10:before{position:fixed;top:62px;right:23px;left:auto;width:auto;height:auto;font-size:14px;color:hsla(0,0%,100%,.7)}body.publisherlist>div.container-fluid>div>div.col-sm-10>div.container:before{display:none!important}}body.advanced_search>div.container-fluid>div.row-fluid>div.col-sm-10>div.col-sm-8>form>div .twitter-typeahead .tt-hint{background-color:hsla(0,0%,100%,.08)!important}@media only screen and (min-width:767px) and (max-width:811px){body.author>div.container-fluid>div>div.col-sm-10>div.discover{width:calc(100% + 20px);padding:0!important}}body.mailset.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type:before{display:none}body.mailset.admin>div.container-fluid>div>div.col-sm-10>div.discover>h2:first-of-type{margin-top:90px;padding-left:15px}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover .fixed-table-container{border:none;padding-left:15px;margin-bottom:30px}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover .fixed-table-container .table-hover>tbody>tr:hover{background-color:transparent}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover .bootstrap-table .table{border-radius:0;border-bottom:0}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover .editable-buttons>button{height:40px}body.mailset>div.container-fluid>div>div.col-sm-10>div.discover .glyphicon-trash:before{content:"\EA6D";font-family:plex-icons-new}#DeleteDomain{top:0;overflow:hidden;padding-top:70px;left:0;right:0;bottom:0;background:rgba(0,0,0,.5)}#DeleteDomain.in:before{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}#DeleteDomain:before{content:"\E208";padding-right:10px;display:block;font-family:Glyphicons Regular;font-style:normal;font-weight:400;position:absolute;left:calc(50% + 185px);top:88px;font-size:16px;color:#eee;opacity:.5;-webkit-transition:-webkit-transform .3s ease-out;-o-transition:transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-60px);-ms-transform:translate(0,-60px);transform:translate(0,-60px);z-index:99}#DeleteDomain>.modal-dialog{width:450px;margin:auto}#DeleteDomain>.modal-dialog>.modal-content{max-height:calc(100% - 90px);-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:3px;z-index:9999999999999999999999;left:calc(50% - 225px);right:auto;width:450px}#DeleteDomain>.modal-dialog>.modal-content>.modal-header{padding:15px 20px;border-radius:3px 3px 0 0;line-height:1.71428571;vertical-align:bottom;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#eee;border-bottom:1px solid #222;background-color:#323232;text-align:left}#DeleteDomain>.modal-dialog>.modal-content>.modal-header:before{content:"\EA6D";font-family:plex-icons-new;padding-right:10px;font-size:18px;color:#999;font-style:normal;font-weight:400;display:inline-block}#DeleteDomain>.modal-dialog>.modal-content>.modal-header:after{content:"Remove Domain";display:inline-block;font-size:20px}#DeleteDomain>.modal-dialog>.modal-content>.modal-body,#DeleteDomain>.modal-dialog>.modal-content>.modal-body>p{font-size:16px;line-height:1.6em;font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;color:#eee;background:#282828}#DeleteDomain>.modal-dialog>.modal-content>.modal-body{padding:20px 20px 40px;text-align:left}#DeleteDomain>.modal-dialog>.modal-content>.modal-body>p{padding:20px 20px 0 0}#DeleteDomain>.modal-dialog>.modal-content>.modal-body>#btndeletedomain,#DeleteDomain>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#btndeletedomain){margin:55px 0 0 10px;float:right;z-index:9;position:relative;min-width:80px;padding:10px 18px;font-size:16px;line-height:1.33;border-radius:3px}#DeleteDomain>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#btndeletedomain){background-color:hsla(0,0%,100%,.25)}#DeleteDomain>.modal-dialog>.modal-content>.modal-body>.btn-default:not(#btndeletedomain):hover{background-color:hsla(0,0%,100%,.3)}#DeleteDomain>.modal-dialog>.modal-content>.modal-body:after{content:'';position:absolute;width:100%;height:72px;background-color:#323232;border-radius:0 0 3px 3px;left:0;margin-top:40px;z-index:0;border-top:1px solid #222;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}@media only screen and (max-width:500px){#DeleteDomain.in:before{left:auto;right:34px}}@media only screen and (max-width:767px){#DeleteDomain>.modal-dialog{max-width:calc(100vw - 40px)}#DeleteDomain>.modal-dialog>.modal-content{max-width:calc(100vw - 40px);left:0}}#sendbtn2{background:0 0;color:transparent;width:50px;height:60px;margin:0;overflow:hidden;padding:0}#sendbtn2>span{color:hsla(0,0%,100%,.7)}#sendbtn2>span.glyphicon-send:before{margin-left:8px}#sendbtn2>span.caret{position:absolute;margin-left:0;left:33px;top:28px;padding-bottom:5px}#sendbtn2:focus span,#sendbtn2:hover span{color:#fff}#sendbtn2[aria-expanded=true]{pointer-events:none}div.comments + [data-readmore-toggle],div.comments[data-readmore]{display:block;width:100%}div.comments[data-readmore]{transition:height 300ms;overflow:hidden} diff --git a/cps/static/css/caliBlur_override.css b/cps/static/css/caliBlur_override.css new file mode 100644 index 000000000..7f9402122 --- /dev/null +++ b/cps/static/css/caliBlur_override.css @@ -0,0 +1,17 @@ +body.serieslist.grid-view div.container-fluid>div>div.col-sm-10:before{ + display: none; +} + +.cover .badge{ + position: absolute; + top: 0; + left: 0; + background-color: #cc7b19; + border-radius: 0; + padding: 0 8px; + box-shadow: 0 0 4px rgba(0,0,0,.6); + line-height: 24px; +} +.cover{ + box-shadow: 0 0 4px rgba(0,0,0,.6); +} diff --git a/cps/static/css/kthoom.css b/cps/static/css/kthoom.css index 6dfb99671..cc38740b7 100644 --- a/cps/static/css/kthoom.css +++ b/cps/static/css/kthoom.css @@ -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,40 +150,8 @@ body { max-width: 70%; } -#left { - left: 40px; -} - -#right { - right: 40px; -} - -.arrow { - position: absolute; - top: 50%; - margin-top: -32px; - font-size: 64px; - color: #E2E2E2; - font-family: arial, sans-serif; - font-weight: bold; - cursor: pointer; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.arrow:hover { - color: #777; -} - -.arrow:active, -.arrow.active { - color: #000; -} - -th, td { +th, +td { padding: 5px; } @@ -239,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); } diff --git a/cps/static/css/libs/bootstrap-table.min.css b/cps/static/css/libs/bootstrap-table.min.css index 770b6728c..72a8f74f2 100644 --- a/cps/static/css/libs/bootstrap-table.min.css +++ b/cps/static/css/libs/bootstrap-table.min.css @@ -1 +1,10 @@ -.fixed-table-container .bs-checkbox,.fixed-table-container .no-records-found{text-align:center}.fixed-table-body thead th .th-inner,.table td,.table th{box-sizing:border-box}.bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #ddd;border-collapse:collapse!important;border-radius:1px}.bootstrap-table .table:not(.table-condensed),.bootstrap-table .table:not(.table-condensed)>tbody>tr>td,.bootstrap-table .table:not(.table-condensed)>tbody>tr>th,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>td,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>th,.bootstrap-table .table:not(.table-condensed)>thead>tr>td{padding:8px}.bootstrap-table .table.table-no-bordered>tbody>tr>td,.bootstrap-table .table.table-no-bordered>thead>tr>th{border-right:2px solid transparent}.bootstrap-table .table.table-no-bordered>tbody>tr>td:last-child{border-right:none}.fixed-table-container{position:relative;clear:both;border:1px solid #ddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{overflow:hidden}.fixed-table-footer{border-top:1px solid #ddd}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #ddd}.fixed-table-container thead th:focus{outline:transparent solid 0}.fixed-table-container thead th:first-child:not([data-not-first-th]){border-left:none;border-top-left-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px}.fixed-table-container tbody td .th-inner,.fixed-table-container thead th .th-inner{padding:8px;line-height:24px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container thead th .both{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC')}.fixed-table-container thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.fixed-table-container thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #ddd}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container tbody .selected td{background-color:#f5f5f5}.fixed-table-container input[type=radio],.fixed-table-container input[type=checkbox]{margin:0 auto!important}.fixed-table-pagination .pagination-detail,.fixed-table-pagination div.pagination{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{display:none;position:absolute;top:42px;right:0;bottom:0;left:0;z-index:99;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:700;display:inline-block;min-width:30%;text-align:left!important}.table td,.table th{vertical-align:middle}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #ddd}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0;padding:0!important}.bootstrap-table .pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}.fixed-table-pagination:after,.fixed-table-toolbar:after{content:"";display:block;clear:both}.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#FFF} \ No newline at end of file +/** + * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) + * + * @version v1.16.0 + * @homepage https://bootstrap-table.com + * @author wenzhixin (http://wenzhixin.net.cn/) + * @license MIT + */ + +.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .columns,.bootstrap-table .fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0!important}.bootstrap-table .fixed-table-container .table td,.bootstrap-table .fixed-table-container .table th{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table thead th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table thead th:focus{outline:0 solid transparent}.bootstrap-table .fixed-table-container .table thead th.detail{width:30px}.bootstrap-table .fixed-table-container .table thead th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.bootstrap-table .fixed-table-container .table thead th .both{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC")}.bootstrap-table .fixed-table-container .table thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.bootstrap-table .fixed-table-container .table thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:700;display:inline-block;min-width:30%;text-align:left!important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio]{margin:0 auto!important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.3rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:none;justify-content:center;position:absolute;bottom:0;width:100%;z-index:1000}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{font-size:2rem;margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:LOADING;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination,.bootstrap-table .fixed-table-pagination>.pagination-detail{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination a{padding:6px 12px;line-height:1.428571429}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:'\2B05'}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:'\27A1'}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#fff;height:calc(100vh);overflow-y:scroll}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes LOADING{0%{opacity:0}50%{opacity:1}to{opacity:0}} \ No newline at end of file diff --git a/cps/static/css/libs/viewer.css b/cps/static/css/libs/viewer.css index 82766d66e..5835b3092 100644 --- a/cps/static/css/libs/viewer.css +++ b/cps/static/css/libs/viewer.css @@ -230,36 +230,46 @@ z-index: 200; max-width: 20em; background-color: #FFFF99; - box-shadow: 0px 2px 5px #333; + box-shadow: 0px 2px 5px #888; border-radius: 2px; - padding: 0.6em; + padding: 6px; margin-left: 5px; cursor: pointer; font: message-box; + font-size: 9px; word-wrap: break-word; } +.annotationLayer .popup > * { + font-size: 9px; +} + .annotationLayer .popup h1 { - font-size: 1em; - border-bottom: 1px solid #000000; - margin: 0; - padding-bottom: 0.2em; + display: inline-block; +} + +.annotationLayer .popup span { + display: inline-block; + margin-left: 5px; } .annotationLayer .popup p { - margin: 0; - padding-top: 0.2em; + border-top: 1px solid #333; + margin-top: 2px; + padding-top: 2px; } .annotationLayer .highlightAnnotation, .annotationLayer .underlineAnnotation, .annotationLayer .squigglyAnnotation, .annotationLayer .strikeoutAnnotation, +.annotationLayer .freeTextAnnotation, .annotationLayer .lineAnnotation svg line, .annotationLayer .squareAnnotation svg rect, .annotationLayer .circleAnnotation svg ellipse, .annotationLayer .polylineAnnotation svg polyline, .annotationLayer .polygonAnnotation svg polygon, +.annotationLayer .caretAnnotation, .annotationLayer .inkAnnotation svg polyline, .annotationLayer .stampAnnotation, .annotationLayer .fileAttachmentAnnotation { @@ -279,8 +289,9 @@ overflow: visible; border: 9px solid transparent; background-clip: content-box; - -o-border-image: url(images/shadow.png) 9 9 repeat; - border-image: url(images/shadow.png) 9 9 repeat; + -webkit-border-image: url(images/shadow.png) 9 9 repeat; + -o-border-image: url(images/shadow.png) 9 9 repeat; + border-image: url(images/shadow.png) 9 9 repeat; background-color: white; } @@ -543,15 +554,20 @@ select { z-index: 100; border-top: 1px solid #333; - transition-duration: 200ms; - transition-timing-function: ease; + -webkit-transition-duration: 200ms; + + transition-duration: 200ms; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; } html[dir='ltr'] #sidebarContainer { + -webkit-transition-property: left; transition-property: left; left: -200px; left: calc(-1 * var(--sidebar-width)); } html[dir='rtl'] #sidebarContainer { + -webkit-transition-property: right; transition-property: right; right: -200px; right: calc(-1 * var(--sidebar-width)); @@ -563,7 +579,8 @@ html[dir='rtl'] #sidebarContainer { #outerContainer.sidebarResizing #sidebarContainer { /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */ - transition-duration: 0s; + -webkit-transition-duration: 0s; + transition-duration: 0s; /* Prevent e.g. the thumbnails being selected when the sidebar is resized. */ -webkit-user-select: none; -moz-user-select: none; @@ -620,8 +637,10 @@ html[dir='rtl'] #sidebarContent { outline: none; } #viewerContainer:not(.pdfPresentationMode) { - transition-duration: 200ms; - transition-timing-function: ease; + -webkit-transition-duration: 200ms; + transition-duration: 200ms; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; } html[dir='ltr'] #viewerContainer { box-shadow: inset 1px 0 0 hsla(0,0%,100%,.05); @@ -632,15 +651,18 @@ html[dir='rtl'] #viewerContainer { #outerContainer.sidebarResizing #viewerContainer { /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */ - transition-duration: 0s; + -webkit-transition-duration: 0s; + transition-duration: 0s; } html[dir='ltr'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { + -webkit-transition-property: left; transition-property: left; left: 200px; left: var(--sidebar-width); } html[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { + -webkit-transition-property: right; transition-property: right; right: 200px; right: var(--sidebar-width); @@ -662,6 +684,8 @@ html[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentatio width: 100%; height: 32px; background-color: #424242; /* fallback */ + background-image: url(images/texture.png), + -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,30%,.99)), to(hsla(0,0%,25%,.95))); background-image: url(images/texture.png), linear-gradient(hsla(0,0%,30%,.99), hsla(0,0%,25%,.95)); } @@ -697,6 +721,8 @@ html[dir='rtl'] #sidebarResizer { position: relative; height: 32px; background-color: #474747; /* fallback */ + background-image: url(images/texture.png), + -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,32%,.99)), to(hsla(0,0%,27%,.95))); background-image: url(images/texture.png), linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95)); } @@ -733,6 +759,7 @@ html[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar { height: 100%; background-color: #ddd; overflow: hidden; + -webkit-transition: width 200ms; transition: width 200ms; } @@ -748,6 +775,7 @@ html[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar { #loadingBar .progress.indeterminate { background-color: #999; + -webkit-transition: none; transition: none; } @@ -815,6 +843,9 @@ html[dir='rtl'] .findbar { #findInput::-webkit-input-placeholder { color: hsl(0, 0%, 75%); } +#findInput::-moz-placeholder { + font-style: italic; +} #findInput:-ms-input-placeholder { font-style: italic; } @@ -1006,6 +1037,7 @@ html[dir='rtl'] .splitToolbarButton > .toolbarButton { .splitToolbarButton.toggled > .toolbarButton, .toolbarButton.textButton { background-color: hsla(0,0%,0%,.12); + background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-clip: padding-box; border: 1px solid hsla(0,0%,0%,.35); @@ -1013,9 +1045,12 @@ html[dir='rtl'] .splitToolbarButton > .toolbarButton { box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, 0 0 1px hsla(0,0%,100%,.15) inset, 0 1px 0 hsla(0,0%,100%,.05); + -webkit-transition-property: background-color, border-color, box-shadow; transition-property: background-color, border-color, box-shadow; - transition-duration: 150ms; - transition-timing-function: ease; + -webkit-transition-duration: 150ms; + transition-duration: 150ms; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; } .splitToolbarButton > .toolbarButton:hover, @@ -1072,9 +1107,12 @@ html[dir='rtl'] .splitToolbarButtonSeparator { padding: 12px 0; margin: 1px 0; box-shadow: 0 0 0 1px hsla(0,0%,100%,.03); + -webkit-transition-property: padding; transition-property: padding; - transition-duration: 10ms; - transition-timing-function: ease; + -webkit-transition-duration: 10ms; + transition-duration: 10ms; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; } .toolbarButton, @@ -1094,9 +1132,12 @@ html[dir='rtl'] .splitToolbarButtonSeparator { user-select: none; /* Opera does not support user-select, use <... unselectable="on"> instead */ cursor: default; + -webkit-transition-property: background-color, border-color, box-shadow; transition-property: background-color, border-color, box-shadow; - transition-duration: 150ms; - transition-timing-function: ease; + -webkit-transition-duration: 150ms; + transition-duration: 150ms; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; } html[dir='ltr'] .toolbarButton, @@ -1117,6 +1158,7 @@ html[dir='rtl'] .dropdownToolbarButton { .secondaryToolbarButton:hover, .secondaryToolbarButton:focus { background-color: hsla(0,0%,0%,.12); + background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-clip: padding-box; border: 1px solid hsla(0,0%,0%,.35); @@ -1131,28 +1173,36 @@ html[dir='rtl'] .dropdownToolbarButton { .dropdownToolbarButton:hover:active, .secondaryToolbarButton:hover:active { background-color: hsla(0,0%,0%,.2); + background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); border-color: hsla(0,0%,0%,.35) hsla(0,0%,0%,.4) hsla(0,0%,0%,.45); box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, 0 0 1px hsla(0,0%,0%,.2) inset, 0 1px 0 hsla(0,0%,100%,.05); + -webkit-transition-property: background-color, border-color, box-shadow; transition-property: background-color, border-color, box-shadow; - transition-duration: 10ms; - transition-timing-function: linear; + -webkit-transition-duration: 10ms; + transition-duration: 10ms; + -webkit-transition-timing-function: linear; + transition-timing-function: linear; } .toolbarButton.toggled, .splitToolbarButton.toggled > .toolbarButton.toggled, .secondaryToolbarButton.toggled { background-color: hsla(0,0%,0%,.3); + background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.45) hsla(0,0%,0%,.5); box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, 0 0 1px hsla(0,0%,0%,.2) inset, 0 1px 0 hsla(0,0%,100%,.05); + -webkit-transition-property: background-color, border-color, box-shadow; transition-property: background-color, border-color, box-shadow; - transition-duration: 10ms; - transition-timing-function: linear; + -webkit-transition-duration: 10ms; + transition-duration: 10ms; + -webkit-transition-timing-function: linear; + transition-timing-function: linear; } .toolbarButton.toggled:hover:active, @@ -1493,6 +1543,7 @@ html[dir='rtl'] .verticalToolbarSeparator { border: 1px solid transparent; border-radius: 2px; background-color: hsla(0,0%,100%,.09); + background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-clip: padding-box; border: 1px solid hsla(0,0%,0%,.35); @@ -1503,9 +1554,12 @@ html[dir='rtl'] .verticalToolbarSeparator { font-size: 12px; line-height: 14px; outline-style: none; + -webkit-transition-property: background-color, border-color, box-shadow; transition-property: background-color, border-color, box-shadow; - transition-duration: 150ms; - transition-timing-function: ease; + -webkit-transition-duration: 150ms; + transition-duration: 150ms; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; } .toolbarField[type=checkbox] { @@ -1619,6 +1673,7 @@ a:focus > .thumbnail > .thumbnailSelectionRing > .thumbnailImage, a:focus > .thumbnail > .thumbnailSelectionRing, .thumbnail:hover > .thumbnailSelectionRing { background-color: hsla(0,0%,100%,.15); + background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-clip: padding-box; box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, @@ -1634,6 +1689,7 @@ a:focus > .thumbnail > .thumbnailSelectionRing, .thumbnail.selected > .thumbnailSelectionRing { background-color: hsla(0,0%,100%,.3); + background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-clip: padding-box; box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, @@ -1755,6 +1811,7 @@ html[dir='rtl'] .outlineItemToggler::before { .outlineItem > a:hover, .attachmentsItem > button:hover { background-color: hsla(0,0%,100%,.02); + background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-clip: padding-box; box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, @@ -1766,6 +1823,7 @@ html[dir='rtl'] .outlineItemToggler::before { .outlineItem.selected { background-color: hsla(0,0%,100%,.08); + background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0))); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-clip: padding-box; box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, @@ -1850,6 +1908,8 @@ html[dir='rtl'] .outlineItemToggler::before { font-size: 12px; line-height: 14px; background-color: #474747; /* fallback */ + background-image: url(images/texture.png), + -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,32%,.99)), to(hsla(0,0%,27%,.95))); background-image: url(images/texture.png), linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95)); box-shadow: inset 1px 0 0 hsla(0,0%,100%,.08), diff --git a/cps/static/css/listen.css b/cps/static/css/listen.css index b08cc33ce..a69af72ed 100644 --- a/cps/static/css/listen.css +++ b/cps/static/css/listen.css @@ -1,114 +1,89 @@ .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: 0; +} - .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; + overflow: hidden; +} - #area iframe { - border: none; - } +#area iframe { + border: none; +} - #prev { - left: 40px; - } +#prev { + left: 40px; +} - #next { - right: 40px; - } +#next { + right: 40px; +} - .arrow { - position: absolute; - top: 50%; - margin-top: -32px; - font-size: 64px; - color: #E2E2E2; - font-family: arial, sans-serif; - font-weight: bold; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - } +xmp, +pre, +plaintext { + display: block; + font-family: -moz-fixed; + white-space: pre; + margin: 1em 0; +} - .arrow:hover { - color: #777; - } - - .arrow:active { - color: #000; - } - - xmp, - pre, - plaintext { - display: block; - font-family: -moz-fixed; - white-space: pre; - margin: 1em 0; - } - - #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; - } \ No newline at end of file +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; +} diff --git a/cps/static/css/main.css b/cps/static/css/main.css index 4afb28f70..08506bc22 100644 --- a/cps/static/css/main.css +++ b/cps/static/css/main.css @@ -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; } @@ -15,30 +16,22 @@ body { } #main { - /* height: 500px; */ position: absolute; width: 100%; height: 100%; right: 0; - /* left: 40px; */ -/* -webkit-transform: translate(40px, 0); - -moz-transform: translate(40px, 0); */ - - /* border-radius: 5px 0px 0px 5px; */ 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; @@ -48,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; } @@ -66,7 +59,7 @@ body { line-height: 20px; overflow: hidden; display: inline-block; - opacity: .5; + opacity: 0.5; padding: 4px; border-radius: 4px; } @@ -76,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; @@ -114,18 +99,22 @@ body { border: none; } +#left, #prev { left: 40px; + padding-right: 80px; } +#right, #next { right: 40px; + padding-left: 80px; } .arrow { position: absolute; top: 50%; - margin-top: -32px; + margin-top: -192px; font-size: 64px; color: #E2E2E2; font-family: arial, sans-serif; @@ -136,6 +125,8 @@ body { -moz-user-select: none; -ms-user-select: none; user-select: none; + padding-top: 160px; + padding-bottom: 160px; } .arrow:hover { @@ -150,24 +141,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 { @@ -194,10 +181,10 @@ body { width: 100%; padding: 13px 0; height: 14px; - -moz-box-shadow: 0px 1px 3px rgba(0,0,0,.6); - -webkit-box-shadow: 0px 1px 3px rgba(0,0,0,.6); - -ms-box-shadow: 0px 1px 3px rgba(0,0,0,.6); - box-shadow: 0px 1px 3px rgba(0,0,0,.6); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6); + -ms-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6); } #opener { @@ -205,19 +192,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; @@ -229,22 +210,17 @@ 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; + color: #aaa; margin: 1px 0 -1px 6px; } #panels a.active, #panels a.active:hover { - color: #AAA; + color: #aaa; } #searchBox { @@ -252,28 +228,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; @@ -309,13 +268,11 @@ input:-ms-placeholder { width: 25%; height: 100%; visibility: hidden; - -webkit-transition: visibility 0 ease .5s; - -moz-transition: visibility 0 ease .5s; - -ms-transition: visibility 0 ease .5s; + -webkit-transition: visibility 0 ease 0.5s; + -moz-transition: visibility 0 ease 0.5s; + -ms-transition: visibility 0 ease 0.5s; } - - #sidebar.open #tocView, #sidebar.open #bookmarksView { overflow-y: auto; @@ -353,7 +310,7 @@ input:-ms-placeholder { } .list_item a { - color: #AAA; + color: #aaa; text-decoration: none; } @@ -362,7 +319,7 @@ input:-ms-placeholder { } .list_item a.section { - font-size: .8em; + font-size: 0.8em; } .list_item.currentChapter > a, @@ -372,7 +329,7 @@ input:-ms-placeholder { /* #tocView li.openChapter > a, */ .list_item a:hover { - color: #E2E2E2; + color: #e2e2e2; } .list_item ul { @@ -433,7 +390,7 @@ input:-ms-placeholder { } #searchResults a { - color: #AAA; + color: #aaa; text-decoration: none; } @@ -449,11 +406,11 @@ input:-ms-placeholder { } #searchResults li > p { - color: #AAA; + color: #aaa; } #searchResults li a:hover { - color: #E2E2E2; + color: #e2e2e2; } #searchView.shown { @@ -498,7 +455,7 @@ input:-ms-placeholder { } #note-text[disabled], #note-text[disabled="disabled"]{ - opacity: .5; + opacity: 0.5; } #note-anchor { @@ -507,30 +464,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 } @@ -558,7 +515,7 @@ input:-ms-placeholder { left: 0; z-index: 1000; opacity: 0; - background: rgba(255,255,255,0.8); + background: rgba(255, 255, 255, 0.8); -webkit-transition: all 0.3s; -moz-transition: all 0.3s; -ms-transition: all 0.3s; @@ -591,7 +548,7 @@ input:-ms-placeholder { font-size: 22px; font-weight: 300; opacity: 0.8; - background: rgba(0,0,0,0.1); + background: rgba(0, 0, 0, 0.1); border-radius: 3px 3px 0 0; } @@ -753,9 +710,9 @@ input:-ms-placeholder { } }*/ -@media only screen -and (min-device-width : 768px) -and (max-device-width : 1024px) +@media only screen +and (min-device-width : 768px) +and (max-device-width : 1024px) and (orientation : landscape) /*and (-webkit-min-device-pixel-ratio: 2)*/ { #viewer{ @@ -825,23 +782,18 @@ and (orientation : landscape) font-style: normal; font-weight: normal; speak: none; - display: inline-block; text-decoration: inherit; width: 1em; - margin-right: .2em; + margin-right: 0.2em; text-align: center; - /* opacity: .8; */ - /* For safety - reset parent styles, that can break glyph codes*/ font-variant: normal; text-transform: none; - /* you can be more comfortable with increased icons size */ font-size: 112%; } - .icon-search:before { content: '\e807'; } /* '' */ .icon-resize-full-1:before { content: '\e804'; } /* '' */ .icon-cancel-circled2:before { content: '\e80f'; } /* '' */ diff --git a/cps/static/css/popup.css b/cps/static/css/popup.css index c41aac716..b655ab48d 100644 --- a/cps/static/css/popup.css +++ b/cps/static/css/popup.css @@ -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; -} \ No newline at end of file +} diff --git a/cps/static/css/style.css b/cps/static/css/style.css index da0880216..47b0c4cba 100644 --- a/cps/static/css/style.css +++ b/cps/static/css/style.css @@ -1,5 +1,20 @@ -.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, 0.35); + box-shadow: 0 4px 10px 0 rgba(0, 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'; @@ -12,140 +27,302 @@ html.http-error { margin: 0; height: 100%; } + .http-error body { margin: 0; height: 100%; display: table; width: 100%; } + .http-error body > div { 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} - -.container-fluid .author .author-hidden, .container-fluid .author .author-hidden-divider { - display: none; +body { + background: #f2f2f2; + margin-bottom: 40px; } -.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 h2 { + font-weight: normal; + color:#444; +} + +a, .danger,.book-remove, .editable-empty, .editable-empty:hover { color: #45b29d; } + +.book-remove:hover { color: #23527c; } + +.btn-default a { color: #444; } + +.btn-default a:hover { + color: #45b29d; + text-decoration: None; +} + +.btn-default:hover { + color: #45b29d; +} + +.editable-click, a.editable-click, a.editable-click:hover { border-bottom: None; } + +.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; +} + +.row.display-flex { + display: flex; + flex-wrap: wrap; +} + +.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; + display: flex; + flex-direction: column; +} + +.container-fluid .book .cover { + height: 225px; + position: relative; +} + +.container-fluid .book .cover img { + border: 1px solid #fff; + box-sizing: 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 .series { + font-weight: 400; + font-size: 12px; + color: #444; +} + +.container-fluid .book .meta .author { + font-size: 12px; + color: #999; +} + +.container-fluid .book .meta .rating { margin-top: 5px; } +.rating .glyphicon-star-empty { color: #444; } +.rating .glyphicon-star.good { color: #444; } +.rating-clear .glyphicon-remove { color: #333 } + +.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; + border: 1px solid #fff; + box-sizing: 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 .badge{ + position: absolute; + top: 2px; + left: 2px; + background-color: #777; +} .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%;} - +.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%; } +.intend-form { margin-left:20px; } +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; - color: #45b29d; - cursor: pointer; - display: inline-block; - padding: 3px 15px; - user-select: none; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + border: 2px solid #45b29d; + border-radius: 15px; + color: #45b29d; + cursor: pointer; + display: inline-block; + padding: 3px 15px; + user-select: none; + -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; + background-color: #45b29d; + border-color: #fff; + color: #fff; } -.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%;} +input.pill:not(:checked) + label .glyphicon { display: none; } -#remove-from-shelves .btn, -#shelf-action-errors { - margin-left: 5px; -} +.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%; } +#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; + height: 600px; + overflow-y: scroll; } -.media-list { - padding-right:15px; + +.media-list { padding-right: 15px; } +.media-body p { text-align: justify; } + +#meta-info img { + max-height: 150px; + max-width: 100px; + cursor: pointer; } -.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; } +.editable-buttons { + display:inline-block; + margin-left: 7px; +} -.upload-format-input-text {display: initial;} -#btn-upload-format {display: none;} +.editable-input { display:inline-block; } -.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-cancel { + margin-bottom: 0px !important; + margin-left: 7px !important; +} +.editable-submit { margin-bottom: 0px !important; } .filterheader { margin-bottom: 20px; } +.errorlink { margin-top: 20px; } +.emailconfig { margin-top: 10px; } -.errorlink {margin-top: 20px;} .modal-body .comments { - max-height:300px; - overflow-y: auto; + max-height: 300px; + overflow-y: auto; } div.log { @@ -158,3 +335,4 @@ div.log { white-space: nowrap; padding: 0.5em; } + diff --git a/cps/static/css/upload.css b/cps/static/css/upload.css index a56dde2c0..7739e8514 100644 --- a/cps/static/css/upload.css +++ b/cps/static/css/upload.css @@ -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; + } } diff --git a/cps/static/generic_cover.jpg b/cps/static/generic_cover.jpg index f5c090c1c..67f98248a 100644 Binary files a/cps/static/generic_cover.jpg and b/cps/static/generic_cover.jpg differ diff --git a/cps/static/js/archive/archive.js b/cps/static/js/archive/archive.js index 13e1d183c..06c056246 100644 --- a/cps/static/js/archive/archive.js +++ b/cps/static/js/archive/archive.js @@ -40,7 +40,8 @@ function alphanumCase(a, b) { while (i = (j = t.charAt(x++)).charCodeAt(0)) { var m = (i === 46 || (i >= 48 && i <= 57)); - if (m !== n) { + // Compare has to be with != otherwise fails + if (m != n) { tz[++y] = ""; n = m; } @@ -55,7 +56,8 @@ function alphanumCase(a, b) { for (var x = 0; aa[x] && bb[x]; x++) { if (aa[x] !== bb[x]) { var c = Number(aa[x]), d = Number(bb[x]); - if (c === aa[x] && d === bb[x]) { + // Compare has to be with == otherwise fails + if (c == aa[x] && d == bb[x]) { return c - d; } else { return (aa[x] > bb[x]) ? 1 : -1; @@ -409,6 +411,19 @@ bitjs.archive = bitjs.archive || {}; return "unrar.js"; }; + /** + * Unrarrer5 + * @extends {bitjs.archive.Unarchiver} + * @constructor + */ + bitjs.archive.Unrarrer5 = function(arrayBuffer, optPathToBitJS) { + bitjs.base(this, arrayBuffer, optPathToBitJS); + }; + bitjs.inherits(bitjs.archive.Unrarrer5, bitjs.archive.Unarchiver); + bitjs.archive.Unrarrer5.prototype.getScriptFileName = function() { + return "unrar5.js"; + }; + /** * Untarrer * @extends {bitjs.archive.Unarchiver} diff --git a/cps/static/js/archive/rarvm.js b/cps/static/js/archive/rarvm.js index 44e093308..8858fa05f 100644 --- a/cps/static/js/archive/rarvm.js +++ b/cps/static/js/archive/rarvm.js @@ -9,10 +9,18 @@ /** * CRC Implementation. */ -/* global Uint8Array, Uint32Array, bitjs, DataView */ +/* global Uint8Array, Uint32Array, bitjs, DataView, mem */ /* exported MAXWINMASK, UnpackFilter */ -var CRCTab = new Array(256).fill(0); +function emptyArr(n, v) { + var arr = []; + for (var i = 0; i < n; i += 1) { + arr[i] = v; + } + return arr; +} + +var CRCTab = emptyArr(256, 0); function initCRC() { for (var i = 0; i < 256; ++i) { diff --git a/cps/static/js/archive/unrar.js b/cps/static/js/archive/unrar.js index fadb791e1..3e2a45af8 100644 --- a/cps/static/js/archive/unrar.js +++ b/cps/static/js/archive/unrar.js @@ -14,10 +14,10 @@ /* global VM_FIXEDGLOBALSIZE, VM_GLOBALMEMSIZE, MAXWINMASK, VM_GLOBALMEMADDR, MAXWINSIZE */ // This file expects to be invoked as a Worker (see onmessage below). -importScripts("../io/bitstream.js"); +/*importScripts("../io/bitstream.js"); importScripts("../io/bytebuffer.js"); importScripts("archive.js"); -importScripts("rarvm.js"); +importScripts("rarvm.js");*/ // Progress variables. var currentFilename = ""; @@ -29,19 +29,21 @@ var totalFilesInArchive = 0; // Helper functions. var info = function(str) { - postMessage(new bitjs.archive.UnarchiveInfoEvent(str)); + console.log(str); + // postMessage(new bitjs.archive.UnarchiveInfoEvent(str)); }; var err = function(str) { - postMessage(new bitjs.archive.UnarchiveErrorEvent(str)); + console.log(str); + // postMessage(new bitjs.archive.UnarchiveErrorEvent(str)); }; var postProgress = function() { - postMessage(new bitjs.archive.UnarchiveProgressEvent( + /*postMessage(new bitjs.archive.UnarchiveProgressEvent( currentFilename, currentFileNumber, currentBytesUnarchivedInFile, currentBytesUnarchived, totalUncompressedBytesInArchive, - totalFilesInArchive)); + totalFilesInArchive));*/ }; // shows a byte value as its hex representation @@ -1298,7 +1300,7 @@ var unrar = function(arrayBuffer) { totalUncompressedBytesInArchive = 0; totalFilesInArchive = 0; - postMessage(new bitjs.archive.UnarchiveStartEvent()); + //postMessage(new bitjs.archive.UnarchiveStartEvent()); var bstream = new bitjs.io.BitStream(arrayBuffer, false /* rtl */); var header = new RarVolumeHeader(bstream); @@ -1348,7 +1350,7 @@ var unrar = function(arrayBuffer) { localfile.unrar(); if (localfile.isValid) { - postMessage(new bitjs.archive.UnarchiveExtractEvent(localfile)); + // postMessage(new bitjs.archive.UnarchiveExtractEvent(localfile)); postProgress(); } } @@ -1358,7 +1360,7 @@ var unrar = function(arrayBuffer) { } else { err("Invalid RAR file"); } - postMessage(new bitjs.archive.UnarchiveFinishEvent()); + // postMessage(new bitjs.archive.UnarchiveFinishEvent()); }; // event.data.file has the ArrayBuffer. diff --git a/cps/static/js/archive/unrar5.js b/cps/static/js/archive/unrar5.js new file mode 100644 index 000000000..452989c09 --- /dev/null +++ b/cps/static/js/archive/unrar5.js @@ -0,0 +1,1371 @@ +/** + * unrar.js + * + * Licensed under the MIT License + * + * Copyright(c) 2011 Google Inc. + * Copyright(c) 2011 antimatter15 + * + * Reference Documentation: + * + * http://kthoom.googlecode.com/hg/docs/unrar.html + */ +/* global bitjs, importScripts, RarVM, Uint8Array, UnpackFilter */ +/* global VM_FIXEDGLOBALSIZE, VM_GLOBALMEMSIZE, MAXWINMASK, VM_GLOBALMEMADDR, MAXWINSIZE */ + +// This file expects to be invoked as a Worker (see onmessage below). +/*importScripts("../io/bitstream.js"); +importScripts("../io/bytebuffer.js"); +importScripts("archive.js"); +importScripts("rarvm.js");*/ + +// Progress variables. +var currentFilename = ""; +var currentFileNumber = 0; +var currentBytesUnarchivedInFile = 0; +var currentBytesUnarchived = 0; +var totalUncompressedBytesInArchive = 0; +var totalFilesInArchive = 0; + +// Helper functions. +var info = function(str) { + console.log(str) + //postMessage(new bitjs.archive.UnarchiveInfoEvent(str)); +}; +var err = function(str) { + console.log(str) + //postMessage(new bitjs.archive.UnarchiveErrorEvent(str)); +}; +var postProgress = function() { + /*postMessage(new bitjs.archive.UnarchiveProgressEvent( + currentFilename, + currentFileNumber, + currentBytesUnarchivedInFile, + currentBytesUnarchived, + totalUncompressedBytesInArchive, + totalFilesInArchive));*/ +}; + +// shows a byte value as its hex representation +var nibble = "0123456789ABCDEF"; +var byteValueToHexString = function(num) { + return nibble[num >> 4] + nibble[num & 0xF]; +}; +var twoByteValueToHexString = function(num) { + return nibble[(num >> 12) & 0xF] + nibble[(num >> 8) & 0xF] + nibble[(num >> 4) & 0xF] + nibble[num & 0xF]; +}; + + +// Volume Types +var MAIN_HEAD = 0x01, + ENCRYPT_HEAD = 0x04, + FILE_HEAD = 0x02, + SERVICE_HEAD = 0x03, + // COMM_HEAD = 0x75, + // AV_HEAD = 0x76, + // SUB_HEAD = 0x77, + // PROTECT_HEAD = 0x78, + // SIGN_HEAD = 0x79, + // NEWSUB_HEAD = 0x7a, + ENDARC_HEAD = 0x05; + +// ============================================================================================== // + +var RarMainVolumeHeader = function(bstream) { + var headPos = bstream.bytePtr; + // byte 1,2 + info("Rar Volume Header @" + bstream.bytePtr); + + this.crc = bstream.readBits(16); + info(" crc=" + this.crc); + + // byte 3 + this.headType = bstream.readBits(8); + info(" headType=" + this.headType); + + // Get flags + // bytes 4,5 + this.flags = {}; + this.flags.value = bstream.readBits(16); + + // byte 6 + this.headSize = bstream.readBits(8); + // byte 7 + if (bstream.readBits(8) === 1) { + info(" RarVersion=5"); + } + // byte 8 + bstream.readBits(8); +} + +var vint = function(bstream) { + var size = 0; + var result = 0; + var loop = 0 ; + do { + size = bstream.readBits(8); + result |= (size & 0x7F) << (loop * 7); + loop++; + } while (size & 0x80 ) + return result; +} + +/** + * @param {bitjs.io.BitStream} bstream + * @constructor + */ +var RarVolumeHeader = function(bstream) { + var headPos = bstream.bytePtr; + // byte 1,2 + info("Rar Volume Header @" + bstream.bytePtr); + + this.crc = bstream.readBits(32); + info(" crc=" + this.crc); + + // byte 3 + x Header size + this.headSize = vint(bstream); + info(" Header Size=" + this.headSize); + + // byte 4 + this.headType = bstream.readBits(8); + info(" headType=" + this.headType); + + // Get Header flags + this.headFlags = {}; + this.headFlags.value = bstream.peekBits(8); + + info(" Header flags=" + byteValueToHexString(this.headFlags.value)); + this.headFlags.EXTRA_AREA = !!bstream.readBits(1); + this.headFlags.DATA_AREA = !!bstream.readBits(1); + this.headFlags.UNKNOWN = !!bstream.readBits(1); + this.headFlags.CONTINUE_FROM = !!bstream.readBits(1); + this.headFlags.CONTNUE_TO = !!bstream.readBits(1); + this.headFlags.DEPENDS = !!bstream.readBits(1); + this.headFlags.CHILDBLOCK = !!bstream.readBits(1); + bstream.readBits(1); // unused*/ + + // Get extra AreaSize + if (this.headFlags.EXTRA_AREA) { + this.extraSize = vint(bstream); + } else { + this.extraSize = 0; + } + if (this.headFlags.DATA_AREA && (this.headType == FILE_HEAD || this.headType == SERVICE_HEAD)) { + this.packSize = vint(bstream); + // this.packSize = bstream.readBits(32); + } + this.flags = {}; + this.flags.value = bstream.peekBits(8); + + switch (this.headType) { + case MAIN_HEAD: + // this.flags = {}; + // this.flags.value = bstream.peekBits(16); + this.flags.MHD_VOLUME = !!bstream.readBits(1); + this.flags.MHD_VOLUMNE_NO = !!bstream.readBits(1); + this.flags.MHD_SOLID = !!bstream.readBits(1); + this.flags.MHD_RECOVERY = !!bstream.readBits(1); + this.flags.MHD_LOCKED = !!bstream.readBits(1); + bstream.readBits(3); // unused*/ + if (this.flags.MHD_VOLUMNE_NO) { + this.volumeNumber = vint(bstream); + } + bstream.readBytes(this.extraSize); + // break; + return; // Main Header finally parsed + // ------------ + case FILE_HEAD: + case SERVICE_HEAD: + this.flags.DIRECTORY = !!bstream.readBits(1); + this.flags.TIME = !!bstream.readBits(1); + this.flags.CRC = !!bstream.readBits(1); + this.flags.UNPACK_UNKNOWN = !!bstream.readBits(1); + bstream.readBits(4); + + if (this.flags.UNPACK_UNKNOWN) { + vint(bstream); + } else { + this.unpackedSize = vint(bstream); + } + this.fileAttr = vint(bstream); + if (this.flags.TIME) { + this.fileTime = bstream.readBits(32); + } + if (this.flags.CRC) { + this.fileCRC = bstream.readBits(32); + } + // var compInfo = vint(bstream); + this.unpVer = bstream.readBits(6); + this.solid = bstream.readBits(1); + bstream.readBits(1); + this.method = bstream.readBits(3); + this.dictSize = bstream.readBits(4); + bstream.readBits(1); + this.hostOS = vint(bstream); + this.nameSize = vint(bstream); + + this.filename = bstream.readBytes(this.nameSize); + var _s = ""; + for (var _i = 0; _i < this.filename.length ; _i++) { + _s += String.fromCharCode(this.filename[_i]); + } + + this.filename = _s; + bstream.readBytes(this.extraSize); + break; + + default: + info("Found a header of type 0x" + byteValueToHexString(this.headType)); + // skip the rest of the header bytes (for now) + bstream.readBytes(this.headSize - 7); + break; + } +}; + +//var BLOCK_LZ = 0; + +var rLDecode = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224], + rLBits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5], + rDBitLengthCounts = [4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 14, 0, 12], + rSDDecode = [0, 4, 8, 16, 32, 64, 128, 192], + rSDBits = [2, 2, 3, 4, 5, 6, 6, 6]; + +var rDDecode = [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, + 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, + 4096, 6144, 8192, 12288, 16384, 24576, 32768, 49152, 65536, 98304, + 131072, 196608, 262144, 327680, 393216, 458752, 524288, 589824, + 655360, 720896, 786432, 851968, 917504, 983040 +]; + +var rDBits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, + 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, + 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 +]; + +var rLowDistRepCount = 16; + +var rNC = 299, + rDC = 60, + rLDC = 17, + rRC = 28, + rBC = 20, + rHuffTableSize = (rNC + rDC + rRC + rLDC); + +//var UnpBlockType = BLOCK_LZ; +var UnpOldTable = new Array(rHuffTableSize); + +var BD = { //bitdecode + DecodeLen: new Array(16), + DecodePos: new Array(16), + DecodeNum: new Array(rBC) +}; +var LD = { //litdecode + DecodeLen: new Array(16), + DecodePos: new Array(16), + DecodeNum: new Array(rNC) +}; +var DD = { //distdecode + DecodeLen: new Array(16), + DecodePos: new Array(16), + DecodeNum: new Array(rDC) +}; +var LDD = { //low dist decode + DecodeLen: new Array(16), + DecodePos: new Array(16), + DecodeNum: new Array(rLDC) +}; +var RD = { //rep decode + DecodeLen: new Array(16), + DecodePos: new Array(16), + DecodeNum: new Array(rRC) +}; + +/** + * @type {Array} + */ +var rOldBuffers = []; + +/** + * The current buffer we are unpacking to. + * @type {bitjs.io.ByteBuffer} + */ +var rBuffer; + +/** + * The buffer of the final bytes after filtering (only used in Unpack29). + * @type {bitjs.io.ByteBuffer} + */ +var wBuffer; + +var lowDistRepCount = 0; +var prevLowDist = 0; + +var rOldDist = [0, 0, 0, 0]; +var lastDist; +var lastLength; + +/** + * In unpack.cpp, UnpPtr keeps track of what bytes have been unpacked + * into the Window buffer and WrPtr keeps track of what bytes have been + * actually written to disk after the unpacking and optional filtering + * has been done. + * + * In our case, rBuffer is the buffer for the unpacked bytes and wBuffer is + * the final output bytes. + */ + + +/** + * Read in Huffman tables for RAR + * @param {bitjs.io.BitStream} bstream + */ +function rarReadTables(bstream) { + var BitLength = new Array(rBC); + var Table = new Array(rHuffTableSize); + var i; + // before we start anything we need to get byte-aligned + bstream.readBits((8 - bstream.bitPtr) & 0x7); + + if (bstream.readBits(1)) { + info("Error! PPM not implemented yet"); + return; + } + + if (!bstream.readBits(1)) { //discard old table + for (i = UnpOldTable.length; i--;) { + UnpOldTable[i] = 0; + } + } + + // read in bit lengths + for (var I = 0; I < rBC; ++I) { + var Length = bstream.readBits(4); + if (Length === 15) { + var ZeroCount = bstream.readBits(4); + if (ZeroCount === 0) { + BitLength[I] = 15; + } else { + ZeroCount += 2; + while (ZeroCount-- > 0 && I < rBC) { + BitLength[I++] = 0; + } + --I; + } + } else { + BitLength[I] = Length; + } + } + + // now all 20 bit lengths are obtained, we construct the Huffman Table: + + rarMakeDecodeTables(BitLength, 0, BD, rBC); + + var TableSize = rHuffTableSize; + //console.log(DecodeLen, DecodePos, DecodeNum); + for (i = 0; i < TableSize;) { + var N; + var num = rarDecodeNumber(bstream, BD); + if (num < 16) { + Table[i] = (num + UnpOldTable[i]) & 0xf; + i++; + } else if (num < 18) { + N = (num === 16) ? (bstream.readBits(3) + 3) : (bstream.readBits(7) + 11); + + while (N-- > 0 && i < TableSize) { + Table[i] = Table[i - 1]; + i++; + } + } else { + N = (num === 18) ? (bstream.readBits(3) + 3) : (bstream.readBits(7) + 11); + + while (N-- > 0 && i < TableSize) { + Table[i++] = 0; + } + } + } + + rarMakeDecodeTables(Table, 0, LD, rNC); + rarMakeDecodeTables(Table, rNC, DD, rDC); + rarMakeDecodeTables(Table, rNC + rDC, LDD, rLDC); + rarMakeDecodeTables(Table, rNC + rDC + rLDC, RD, rRC); + + for (i = UnpOldTable.length; i--;) { + UnpOldTable[i] = Table[i]; + } + return true; +} + + +function rarDecodeNumber(bstream, dec) { + var DecodeLen = dec.DecodeLen, + DecodePos = dec.DecodePos, + DecodeNum = dec.DecodeNum; + var bitField = bstream.getBits() & 0xfffe; + //some sort of rolled out binary search + var bits = ((bitField < DecodeLen[8]) ? + ((bitField < DecodeLen[4]) ? + ((bitField < DecodeLen[2]) ? + ((bitField < DecodeLen[1]) ? 1 : 2) : + ((bitField < DecodeLen[3]) ? 3 : 4)) : + (bitField < DecodeLen[6]) ? + ((bitField < DecodeLen[5]) ? 5 : 6) : + ((bitField < DecodeLen[7]) ? 7 : 8)) : + ((bitField < DecodeLen[12]) ? + ((bitField < DecodeLen[10]) ? + ((bitField < DecodeLen[9]) ? 9 : 10) : + ((bitField < DecodeLen[11]) ? 11 : 12)) : + (bitField < DecodeLen[14]) ? + ((bitField < DecodeLen[13]) ? 13 : 14) : + 15)); + bstream.readBits(bits); + var N = DecodePos[bits] + ((bitField - DecodeLen[bits - 1]) >>> (16 - bits)); + + return DecodeNum[N]; +} + + +function rarMakeDecodeTables(BitLength, offset, dec, size) { + var DecodeLen = dec.DecodeLen; + var DecodePos = dec.DecodePos; + var DecodeNum = dec.DecodeNum; + var LenCount = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + var TmpPos = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + var N = 0; + var M = 0; + var i; + for (i = DecodeNum.length; i--;) { + DecodeNum[i] = 0; + } + for (i = 0; i < size; i++) { + LenCount[BitLength[i + offset] & 0xF]++; + } + LenCount[0] = 0; + TmpPos[0] = 0; + DecodePos[0] = 0; + DecodeLen[0] = 0; + + var I; + for (I = 1; I < 16; ++I) { + N = 2 * (N + LenCount[I]); + M = (N << (15 - I)); + if (M > 0xFFFF) { + M = 0xFFFF; + } + DecodeLen[I] = M; + DecodePos[I] = DecodePos[I - 1] + LenCount[I - 1]; + TmpPos[I] = DecodePos[I]; + } + for (I = 0; I < size; ++I) { + if (BitLength[I + offset] !== 0) { + DecodeNum[TmpPos[BitLength[offset + I] & 0xF]++] = I; + } + } + +} + +// TODO: implement +/** + * @param {bitjs.io.BitStream} bstream + * @param {boolean} Solid + */ +function unpack15() { //bstream, Solid) { + info("ERROR! RAR 1.5 compression not supported"); +} + +/** + * Unpacks the bit stream into rBuffer using the Unpack20 algorithm. + * @param {bitjs.io.BitStream} bstream + * @param {boolean} Solid + */ +function unpack20(bstream) { //, Solid) { + var destUnpSize = rBuffer.data.length; + var oldDistPtr = 0; + var Length; + var Distance; + rarReadTables20(bstream); + while (destUnpSize > rBuffer.ptr) { + var num = rarDecodeNumber(bstream, LD); + var Bits; + if (num < 256) { + rBuffer.insertByte(num); + continue; + } + if (num > 269) { + Length = rLDecode[num -= 270] + 3; + if ((Bits = rLBits[num]) > 0) { + Length += bstream.readBits(Bits); + } + var DistNumber = rarDecodeNumber(bstream, DD); + Distance = rDDecode[DistNumber] + 1; + if ((Bits = rDBits[DistNumber]) > 0) { + Distance += bstream.readBits(Bits); + } + if (Distance >= 0x2000) { + Length++; + if (Distance >= 0x40000) { + Length++; + } + } + lastLength = Length; + lastDist = rOldDist[oldDistPtr++ & 3] = Distance; + rarCopyString(Length, Distance); + continue; + } + if (num === 269) { + rarReadTables20(bstream); + rarUpdateProgress(); + continue; + } + if (num === 256) { + lastDist = rOldDist[oldDistPtr++ & 3] = lastDist; + rarCopyString(lastLength, lastDist); + continue; + } + if (num < 261) { + Distance = rOldDist[(oldDistPtr - (num - 256)) & 3]; + var LengthNumber = rarDecodeNumber(bstream, RD); + Length = rLDecode[LengthNumber] + 2; + if ((Bits = rLBits[LengthNumber]) > 0) { + Length += bstream.readBits(Bits); + } + if (Distance >= 0x101) { + Length++; + if (Distance >= 0x2000) { + Length++; + if (Distance >= 0x40000) { + Length++; + } + } + } + lastLength = Length; + lastDist = rOldDist[oldDistPtr++ & 3] = Distance; + rarCopyString(Length, Distance); + continue; + } + if (num < 270) { + Distance = rSDDecode[num -= 261] + 1; + if ((Bits = rSDBits[num]) > 0) { + Distance += bstream.readBits(Bits); + } + lastLength = 2; + lastDist = rOldDist[oldDistPtr++ & 3] = Distance; + rarCopyString(2, Distance); + continue; + } + } + rarUpdateProgress(); +} + +function rarUpdateProgress() { + var change = rBuffer.ptr - currentBytesUnarchivedInFile; + currentBytesUnarchivedInFile = rBuffer.ptr; + currentBytesUnarchived += change; + postProgress(); +} + +var rNC20 = 298, + rDC20 = 48, + rRC20 = 28, + rBC20 = 19, + rMC20 = 257; + +var UnpOldTable20 = new Array(rMC20 * 4); + +function rarReadTables20(bstream) { + var BitLength = new Array(rBC20); + var Table = new Array(rMC20 * 4); + var TableSize, N, I; + var i; + bstream.readBits(1); + if (!bstream.readBits(1)) { + for (i = UnpOldTable20.length; i--;) { + UnpOldTable20[i] = 0; + } + } + TableSize = rNC20 + rDC20 + rRC20; + for (I = 0; I < rBC20; I++) { + BitLength[I] = bstream.readBits(4); + } + rarMakeDecodeTables(BitLength, 0, BD, rBC20); + I = 0; + while (I < TableSize) { + var num = rarDecodeNumber(bstream, BD); + if (num < 16) { + Table[I] = num + UnpOldTable20[I] & 0xf; + I++; + } else if (num === 16) { + N = bstream.readBits(2) + 3; + while (N-- > 0 && I < TableSize) { + Table[I] = Table[I - 1]; + I++; + } + } else { + if (num === 17) { + N = bstream.readBits(3) + 3; + } else { + N = bstream.readBits(7) + 11; + } + while (N-- > 0 && I < TableSize) { + Table[I++] = 0; + } + } + } + rarMakeDecodeTables(Table, 0, LD, rNC20); + rarMakeDecodeTables(Table, rNC20, DD, rDC20); + rarMakeDecodeTables(Table, rNC20 + rDC20, RD, rRC20); + for (i = UnpOldTable20.length; i--;) { + UnpOldTable20[i] = Table[i]; + } +} + +// ============================================================================================== // + +// Unpack code specific to RarVM +var VM = new RarVM(); + +/** + * Filters code, one entry per filter. + * @type {Array} + */ +var Filters = []; + +/** + * Filters stack, several entrances of same filter are possible. + * @type {Array} + */ +var PrgStack = []; + +/** + * Lengths of preceding blocks, one length per filter. Used to reduce + * size required to write block length if lengths are repeating. + * @type {Array} + */ +var OldFilterLengths = []; + +var LastFilter = 0; + +function initFilters() { + OldFilterLengths = []; + LastFilter = 0; + Filters = []; + PrgStack = []; +} + + +/** + * @param {number} firstByte The first byte (flags). + * @param {Uint8Array} vmCode An array of bytes. + */ +function rarAddVMCode(firstByte, vmCode) { + VM.init(); + var i; + var bstream = new bitjs.io.BitStream(vmCode.buffer, true /* rtl */ ); + + var filtPos; + if (firstByte & 0x80) { + filtPos = RarVM.readData(bstream); + if (filtPos === 0) { + initFilters(); + } else { + filtPos--; + } + } else { + filtPos = LastFilter; + } + + if (filtPos > Filters.length || filtPos > OldFilterLengths.length) { + return false; + } + + LastFilter = filtPos; + var newFilter = (filtPos === Filters.length); + + // new filter for PrgStack + var stackFilter = new UnpackFilter(); + var filter = null; + // new filter code, never used before since VM reset + if (newFilter) { + // too many different filters, corrupt archive + if (filtPos > 1024) { + return false; + } + + filter = new UnpackFilter(); + Filters.push(filter); + stackFilter.ParentFilter = (Filters.length - 1); + OldFilterLengths.push(0); // OldFilterLengths.Add(1) + filter.ExecCount = 0; + } else { // filter was used in the past + filter = Filters[filtPos]; + stackFilter.ParentFilter = filtPos; + filter.ExecCount++; + } + + var emptyCount = 0; + for (i = 0; i < PrgStack.length; ++i) { + PrgStack[i - emptyCount] = PrgStack[i]; + + if (PrgStack[i] === null) { + emptyCount++; + } + if (emptyCount > 0) { + PrgStack[i] = null; + } + } + + if (emptyCount === 0) { + PrgStack.push(null); //PrgStack.Add(1); + emptyCount = 1; + } + + var stackPos = PrgStack.length - emptyCount; + PrgStack[stackPos] = stackFilter; + stackFilter.ExecCount = filter.ExecCount; + + var blockStart = RarVM.readData(bstream); + if (firstByte & 0x40) { + blockStart += 258; + } + stackFilter.BlockStart = (blockStart + rBuffer.ptr) & MAXWINMASK; + + if (firstByte & 0x20) { + stackFilter.BlockLength = RarVM.readData(bstream); + } else { + stackFilter.BlockLength = filtPos < OldFilterLengths.length ? + OldFilterLengths[filtPos] : + 0; + } + stackFilter.NextWindow = (wBuffer.ptr !== rBuffer.ptr) && + (((wBuffer.ptr - rBuffer.ptr) & MAXWINMASK) <= blockStart); + + OldFilterLengths[filtPos] = stackFilter.BlockLength; + + for (i = 0; i < 7; ++i) { + stackFilter.Prg.InitR[i] = 0; + } + stackFilter.Prg.InitR[3] = VM_GLOBALMEMADDR; + stackFilter.Prg.InitR[4] = stackFilter.BlockLength; + stackFilter.Prg.InitR[5] = stackFilter.ExecCount; + + // set registers to optional parameters if any + if (firstByte & 0x10) { + var initMask = bstream.readBits(7); + for (i = 0; i < 7; ++i) { + if (initMask & (1 << i)) { + stackFilter.Prg.InitR[i] = RarVM.readData(bstream); + } + } + } + + if (newFilter) { + var vmCodeSize = RarVM.readData(bstream); + if (vmCodeSize >= 0x10000 || vmCodeSize === 0) { + return false; + } + vmCode = new Uint8Array(vmCodeSize); + for (i = 0; i < vmCodeSize; ++i) { + //if (Inp.Overflow(3)) + // return(false); + vmCode[i] = bstream.readBits(8); + } + VM.prepare(vmCode, filter.Prg); + } + stackFilter.Prg.Cmd = filter.Prg.Cmd; + stackFilter.Prg.AltCmd = filter.Prg.Cmd; + + var staticDataSize = filter.Prg.StaticData.length; + if (staticDataSize > 0 && staticDataSize < VM_GLOBALMEMSIZE) { + // read statically defined data contained in DB commands + for (i = 0; i < staticDataSize; ++i) { + stackFilter.Prg.StaticData[i] = filter.Prg.StaticData[i]; + } + } + + if (stackFilter.Prg.GlobalData.length < VM_FIXEDGLOBALSIZE) { + stackFilter.Prg.GlobalData = new Uint8Array(VM_FIXEDGLOBALSIZE); + } + + var globalData = stackFilter.Prg.GlobalData; + for (i = 0; i < 7; ++i) { + VM.setLowEndianValue(globalData, stackFilter.Prg.InitR[i], i * 4); + } + + VM.setLowEndianValue(globalData, stackFilter.BlockLength, 0x1c); + VM.setLowEndianValue(globalData, 0, 0x20); + VM.setLowEndianValue(globalData, stackFilter.ExecCount, 0x2c); + for (i = 0; i < 16; ++i) { + globalData[0x30 + i] = 0; + } + + // put data block passed as parameter if any + if (firstByte & 8) { + //if (Inp.Overflow(3)) + // return(false); + var dataSize = RarVM.readData(bstream); + if (dataSize > (VM_GLOBALMEMSIZE - VM_FIXEDGLOBALSIZE)) { + return (false); + } + + var curSize = stackFilter.Prg.GlobalData.length; + if (curSize < dataSize + VM_FIXEDGLOBALSIZE) { + // Resize global data and update the stackFilter and local variable. + var numBytesToAdd = dataSize + VM_FIXEDGLOBALSIZE - curSize; + var newGlobalData = new Uint8Array(globalData.length + numBytesToAdd); + newGlobalData.set(globalData); + + stackFilter.Prg.GlobalData = newGlobalData; + globalData = newGlobalData; + } + //byte *GlobalData=&StackFilter->Prg.GlobalData[VM_FIXEDGLOBALSIZE]; + for (i = 0; i < dataSize; ++i) { + //if (Inp.Overflow(3)) + // return(false); + globalData[VM_FIXEDGLOBALSIZE + i] = bstream.readBits(8); + } + } + + return true; +} + + +/** + * @param {!bitjs.io.BitStream} bstream + */ +function rarReadVMCode(bstream) { + var firstByte = bstream.readBits(8); + var length = (firstByte & 7) + 1; + if (length === 7) { + length = bstream.readBits(8) + 7; + } else if (length === 8) { + length = bstream.readBits(16); + } + + // Read all bytes of VM code into an array. + var vmCode = new Uint8Array(length); + for (var i = 0; i < length; i++) { + // Do something here with checking readbuf. + vmCode[i] = bstream.readBits(8); + } + return rarAddVMCode(firstByte, vmCode); +} + +/** + * Unpacks the bit stream into rBuffer using the Unpack29 algorithm. + * @param {bitjs.io.BitStream} bstream + * @param {boolean} Solid + */ +function unpack29(bstream) { + // lazy initialize rDDecode and rDBits + + var DDecode = new Array(rDC); + var DBits = new Array(rDC); + var Distance = 0; + var Length = 0; + var Dist = 0, BitLength = 0, Slot = 0; + var I; + for (I = 0; I < rDBitLengthCounts.length; I++, BitLength++) { + for (var J = 0; J < rDBitLengthCounts[I]; J++, Slot++, Dist += (1 << BitLength)) { + DDecode[Slot] = Dist; + DBits[Slot] = BitLength; + } + } + + var Bits; + //tablesRead = false; + + rOldDist = [0, 0, 0, 0]; + + lastDist = 0; + lastLength = 0; + var i; + for (i = UnpOldTable.length; i--;) { + UnpOldTable[i] = 0; + } + + // read in Huffman tables + rarReadTables(bstream); + + while (true) { + var num = rarDecodeNumber(bstream, LD); + + if (num < 256) { + rBuffer.insertByte(num); + continue; + } + if (num >= 271) { + Length = rLDecode[num -= 271] + 3; + if ((Bits = rLBits[num]) > 0) { + Length += bstream.readBits(Bits); + } + var DistNumber = rarDecodeNumber(bstream, DD); + Distance = DDecode[DistNumber] + 1; + if ((Bits = DBits[DistNumber]) > 0) { + if (DistNumber > 9) { + if (Bits > 4) { + Distance += ((bstream.getBits() >>> (20 - Bits)) << 4); + bstream.readBits(Bits - 4); + //todo: check this + } + if (lowDistRepCount > 0) { + lowDistRepCount--; + Distance += prevLowDist; + } else { + var LowDist = rarDecodeNumber(bstream, LDD); + if (LowDist === 16) { + lowDistRepCount = rLowDistRepCount - 1; + Distance += prevLowDist; + } else { + Distance += LowDist; + prevLowDist = LowDist; + } + } + } else { + Distance += bstream.readBits(Bits); + } + } + if (Distance >= 0x2000) { + Length++; + if (Distance >= 0x40000) { + Length++; + } + } + rarInsertOldDist(Distance); + rarInsertLastMatch(Length, Distance); + rarCopyString(Length, Distance); + continue; + } + if (num === 256) { + if (!rarReadEndOfBlock(bstream)) { + break; + } + continue; + } + if (num === 257) { + if (!rarReadVMCode(bstream)) { + break; + } + continue; + } + if (num === 258) { + if (lastLength !== 0) { + rarCopyString(lastLength, lastDist); + } + continue; + } + if (num < 263) { + var DistNum = num - 259; + Distance = rOldDist[DistNum]; + + for (var I2 = DistNum; I2 > 0; I2--) { + rOldDist[I2] = rOldDist[I2 - 1]; + } + rOldDist[0] = Distance; + + var LengthNumber = rarDecodeNumber(bstream, RD); + Length = rLDecode[LengthNumber] + 2; + if ((Bits = rLBits[LengthNumber]) > 0) { + Length += bstream.readBits(Bits); + } + rarInsertLastMatch(Length, Distance); + rarCopyString(Length, Distance); + continue; + } + if (num < 272) { + Distance = rSDDecode[num -= 263] + 1; + if ((Bits = rSDBits[num]) > 0) { + Distance += bstream.readBits(Bits); + } + rarInsertOldDist(Distance); + rarInsertLastMatch(2, Distance); + rarCopyString(2, Distance); + continue; + } + } // while (true) + rarUpdateProgress(); + rarWriteBuf(); +} + +/** + * Does stuff to the current byte buffer (rBuffer) based on + * the filters loaded into the RarVM and writes out to wBuffer. + */ +function rarWriteBuf() { + var writeSize = (rBuffer.ptr & MAXWINMASK); + var j; + var flt; + for (var i = 0; i < PrgStack.length; ++i) { + flt = PrgStack[i]; + if (flt === null) { + continue; + } + + if (flt.NextWindow) { + flt.NextWindow = false; + continue; + } + + var blockStart = flt.BlockStart; + var blockLength = flt.BlockLength; + var parentPrg; + + // WrittenBorder = wBuffer.ptr + if (((blockStart - wBuffer.ptr) & MAXWINMASK) < writeSize) { + if (wBuffer.ptr !== blockStart) { + // Copy blockStart bytes from rBuffer into wBuffer. + rarWriteArea(wBuffer.ptr, blockStart); + writeSize = (rBuffer.ptr - wBuffer.ptr) & MAXWINMASK; + } + if (blockLength <= writeSize) { + var blockEnd = (blockStart + blockLength) & MAXWINMASK; + if (blockStart < blockEnd || blockEnd === 0) { + VM.setMemory(0, rBuffer.data.subarray(blockStart, blockStart + blockLength), blockLength); + } else { + var firstPartLength = MAXWINSIZE - blockStart; + VM.setMemory(0, rBuffer.data.subarray(blockStart, blockStart + firstPartLength), firstPartLength); + VM.setMemory(firstPartLength, rBuffer.data, blockEnd); + } + + parentPrg = Filters[flt.ParentFilter].Prg; + var prg = flt.Prg; + + if (parentPrg.GlobalData.length > VM_FIXEDGLOBALSIZE) { + // Copy global data from previous script execution if any. + prg.GlobalData = new Uint8Array(parentPrg.GlobalData); + } + + rarExecuteCode(prg); + var globalDataLen; + + if (prg.GlobalData.length > VM_FIXEDGLOBALSIZE) { + // Save global data for next script execution. + globalDataLen = prg.GlobalData.length; + if (parentPrg.GlobalData.length < globalDataLen) { + parentPrg.GlobalData = new Uint8Array(globalDataLen); + } + parentPrg.GlobalData.set( + this.mem_.subarray(VM_FIXEDGLOBALSIZE, VM_FIXEDGLOBALSIZE + globalDataLen), + VM_FIXEDGLOBALSIZE); + } else { + parentPrg.GlobalData = new Uint8Array(0); + } + + var filteredData = prg.FilteredData; + + PrgStack[i] = null; + while (i + 1 < PrgStack.length) { + var nextFilter = PrgStack[i + 1]; + if (nextFilter === null || nextFilter.BlockStart !== blockStart || + nextFilter.BlockLength !== filteredData.length || nextFilter.NextWindow) { + break; + } + + // Apply several filters to same data block. + + VM.setMemory(0, filteredData, filteredData.length); + + parentPrg = Filters[nextFilter.ParentFilter].Prg; + var nextPrg = nextFilter.Prg; + + globalDataLen = parentPrg.GlobalData.length; + if (globalDataLen > VM_FIXEDGLOBALSIZE) { + // Copy global data from previous script execution if any. + nextPrg.GlobalData = new Uint8Array(globalDataLen); + nextPrg.GlobalData.set(parentPrg.GlobalData.subarray(VM_FIXEDGLOBALSIZE, VM_FIXEDGLOBALSIZE + globalDataLen), VM_FIXEDGLOBALSIZE); + } + + rarExecuteCode(nextPrg); + + if (nextPrg.GlobalData.length > VM_GLOBALMEMSIZE) { + // Save global data for next script execution. + globalDataLen = nextPrg.GlobalData.length; + if (parentPrg.GlobalData.length < globalDataLen) { + parentPrg.GlobalData = new Uint8Array(globalDataLen); + } + parentPrg.GlobalData.set( + this.mem_.subarray(VM_FIXEDGLOBALSIZE, VM_FIXEDGLOBALSIZE + globalDataLen), + VM_FIXEDGLOBALSIZE); + } else { + parentPrg.GlobalData = new Uint8Array(0); + } + + filteredData = nextPrg.FilteredData; + i++; + PrgStack[i] = null; + } // while (i + 1 < PrgStack.length) + + for (j = 0; j < filteredData.length; ++j) { + wBuffer.insertByte(filteredData[j]); + } + writeSize = (rBuffer.ptr - wBuffer.ptr) & MAXWINMASK; + } else { // if (blockLength <= writeSize) + for (j = i; j < PrgStack.length; ++j) { + flt = PrgStack[j]; + if (flt !== null && flt.NextWindow) { + flt.NextWindow = false; + } + } + //WrPtr=WrittenBorder; + return; + } + } // if (((blockStart - wBuffer.ptr) & MAXWINMASK) < writeSize) + } // for (var i = 0; i < PrgStack.length; ++i) + + // Write any remaining bytes from rBuffer to wBuffer; + rarWriteArea(wBuffer.ptr, rBuffer.ptr); + + // Now that the filtered buffer has been written, swap it back to rBuffer. + rBuffer = wBuffer; +} + +/** + * Copy bytes from rBuffer to wBuffer. + * @param {number} startPtr The starting point to copy from rBuffer. + * @param {number} endPtr The ending point to copy from rBuffer. + */ +function rarWriteArea(startPtr, endPtr) { + if (endPtr < startPtr) { + console.error("endPtr < startPtr, endPtr=" + endPtr + ", startPtr=" + startPtr); + // rarWriteData(startPtr, -(int)StartPtr & MAXWINMASK); + // RarWriteData(0, endPtr); + return; + } else if (startPtr < endPtr) { + rarWriteData(startPtr, endPtr - startPtr); + } +} + +/** + * Writes bytes into wBuffer from rBuffer. + * @param {number} offset The starting point to copy bytes from rBuffer. + * @param {number} numBytes The number of bytes to copy. + */ +function rarWriteData(offset, numBytes) { + if (wBuffer.ptr >= rBuffer.data.length) { + return; + } + var leftToWrite = rBuffer.data.length - wBuffer.ptr; + if (numBytes > leftToWrite) { + numBytes = leftToWrite; + } + for (var i = 0; i < numBytes; ++i) { + wBuffer.insertByte(rBuffer.data[offset + i]); + } +} + +/** + * @param {VM_PreparedProgram} prg + */ +function rarExecuteCode(prg) { + if (prg.GlobalData.length > 0) { + var writtenFileSize = wBuffer.ptr; + prg.InitR[6] = writtenFileSize; + VM.setLowEndianValue(prg.GlobalData, writtenFileSize, 0x24); + VM.setLowEndianValue(prg.GlobalData, (writtenFileSize >>> 32) >> 0, 0x28); + VM.execute(prg); + } +} + +function rarReadEndOfBlock(bstream) { + rarUpdateProgress(); + + var NewTable = false, + NewFile = false; + if (bstream.readBits(1)) { + NewTable = true; + } else { + NewFile = true; + NewTable = !!bstream.readBits(1); + } + //tablesRead = !NewTable; + return !(NewFile || (NewTable && !rarReadTables(bstream))); +} + +function rarInsertLastMatch(length, distance) { + lastDist = distance; + lastLength = length; +} + +function rarInsertOldDist(distance) { + rOldDist.splice(3, 1); + rOldDist.splice(0, 0, distance); +} + +/** + * Copies len bytes from distance bytes ago in the buffer to the end of the + * current byte buffer. + * @param {number} length How many bytes to copy. + * @param {number} distance How far back in the buffer from the current write + * pointer to start copying from. + */ +function rarCopyString(length, distance) { + var srcPtr = rBuffer.ptr - distance; + if (srcPtr < 0) { + var l = rOldBuffers.length; + while (srcPtr < 0) { + srcPtr = rOldBuffers[--l].data.length + srcPtr; + } + // TODO: lets hope that it never needs to read beyond file boundaries + while (length--) { + rBuffer.insertByte(rOldBuffers[l].data[srcPtr++]); + } + } + if (length > distance) { + while (length--) { + rBuffer.insertByte(rBuffer.data[srcPtr++]); + } + } else { + rBuffer.insertBytes(rBuffer.data.subarray(srcPtr, srcPtr + length)); + } +} + +/** + * @param {RarLocalFile} v + */ +function unpack(v) { + // TODO: implement what happens when unpVer is < 15 + var Ver = v.header.unpVer <= 15 ? 15 : v.header.unpVer; + // var Solid = v.header.LHD_SOLID; + var bstream = new bitjs.io.BitStream(v.fileData.buffer, true /* rtl */, v.fileData.byteOffset, v.fileData.byteLength); + + rBuffer = new bitjs.io.ByteBuffer(v.header.unpackedSize); + + info("Unpacking " + v.filename + " RAR v" + Ver); + + switch (Ver) { + case 15: // rar 1.5 compression + unpack15(); //(bstream, Solid); + break; + case 20: // rar 2.x compression + case 26: // files larger than 2GB + unpack20(bstream); //, Solid); + break; + case 29: // rar 3.x compression + case 36: // alternative hash + wBuffer = new bitjs.io.ByteBuffer(rBuffer.data.length); + unpack29(bstream); + break; + } // switch(method) + + rOldBuffers.push(rBuffer); + // TODO: clear these old buffers when there's over 4MB of history + return rBuffer.data; +} + +// bstream is a bit stream +var RarLocalFile = function(bstream) { + this.header = new RarVolumeHeader(bstream); + this.filename = this.header.filename; + + if (this.header.headType !== FILE_HEAD && this.header.headType !== ENDARC_HEAD && this.header.headType !== SERVICE_HEAD) { + this.isValid = false; + info("Error! RAR Volume did not include a FILE_HEAD header "); + } else { + // read in the compressed data + this.fileData = null; + if (this.header.packSize > 0) { + this.fileData = bstream.readBytes(this.header.packSize); + if (this.header.headType === FILE_HEAD) { + this.isValid = true; + } + } + } +}; + +RarLocalFile.prototype.unrar5 = function() { + //if (!this.header.flags.LHD_SPLIT_BEFORE) { + // unstore file + // No compression + if (this.header.method === 0x00) { + info("Unstore " + this.filename); + this.isValid = true; + + currentBytesUnarchivedInFile += this.fileData.length; + currentBytesUnarchived += this.fileData.length; + + // Create a new buffer and copy it over. + var len = this.header.packSize; + var newBuffer = new bitjs.io.ByteBuffer(len); + newBuffer.insertBytes(this.fileData); + this.fileData = newBuffer.data; + } else { + this.isValid = true; + this.fileData = unpack(this); + } + //} +}; + +var unrar5 = function(arrayBuffer) { + currentFilename = ""; + currentFileNumber = 0; + currentBytesUnarchivedInFile = 0; + currentBytesUnarchived = 0; + totalUncompressedBytesInArchive = 0; + totalFilesInArchive = 0; + + // postMessage(new bitjs.archive.UnarchiveStartEvent()); + var bstream = new bitjs.io.BitStream(arrayBuffer, false /* rtl */); + + var header = new RarMainVolumeHeader(bstream); + if (header.crc === 0x6152 && + header.headType === 0x72 && + header.flags.value === 0x1A21 && + header.headSize === 7) { + info("Found RAR signature"); + + var mhead = new RarVolumeHeader(bstream); + if (mhead.headType !== MAIN_HEAD) { + info("Error! RAR did not include a MAIN_HEAD header"); + } else { + var localFiles = []; + var localFile = null; + do { + try { + localFile = new RarLocalFile(bstream); + info("RAR localFile isValid=" + localFile.isValid + ", volume packSize=" + localFile.header.packSize); + if (localFile && localFile.isValid && localFile.header.packSize > 0) { + totalUncompressedBytesInArchive += localFile.header.unpackedSize; + localFiles.push(localFile); + } else if (localFile.header.packSize === 0 && localFile.header.unpackedSize === 0) { + localFile.isValid = true; + } + } catch (err) { + break; + } + //info("bstream" + bstream.bytePtr+"/"+bstream.bytes.length); + } while (localFile.isValid); + totalFilesInArchive = localFiles.length; + + // now we have all information but things are unpacked + localFiles.sort(alphanumCase); + + info(localFiles.map(function(a) { + return a.filename; + }).join(", ")); + for (var i = 0; i < localFiles.length; ++i) { + var localfile = localFiles[i]; + + // update progress + currentFilename = localfile.header.filename; + currentBytesUnarchivedInFile = 0; + + // actually do the unzipping + localfile.unrar5(); + + if (localfile.isValid) { + postMessage(new bitjs.archive.UnarchiveExtractEvent(localfile)); + postProgress(); + } + } + + postProgress(); + } + } else { + err("Invalid RAR file"); + } + // postMessage(new bitjs.archive.UnarchiveFinishEvent()); +}; + +// event.data.file has the ArrayBuffer. +onmessage = function(event) { + var ab = event.data.file; + unrar5(ab, true); +}; diff --git a/cps/static/js/caliBlur.js b/cps/static/js/caliBlur.js index 53f033ba2..73e1c320d 100644 --- a/cps/static/js/caliBlur.js +++ b/cps/static/js/caliBlur.js @@ -15,299 +15,305 @@ * along with this program. If not, see . */ // Move advanced search to side-menu -$( 'a[href*="advanced"]' ).parent().insertAfter( '#nav_new' ); -$( 'body' ).addClass('blur'); -$( 'body.stat' ).addClass( 'stats' ); -$( 'body.config' ).addClass( 'admin'); -$( 'body.uiconfig' ).addClass( 'admin'); -$( 'body.advsearch' ).addClass( 'advanced_search' ); -$( 'body.newuser' ).addClass( 'admin' ); -$( 'body.mailset' ).addClass( 'admin' ); +$("a[href*='advanced']").parent().insertAfter("#nav_new"); +$("body").addClass("blur"); +$("body.stat").addClass("stats"); +$("body.config").addClass("admin"); +$("body.uiconfig").addClass("admin"); +$("body.advsearch").addClass("advanced_search"); +$("body.newuser").addClass("admin"); +$("body.mailset").addClass("admin"); +$("body > div.container-fluid > div > div.col-sm-10 > div.filterheader").attr("style","margin: 40px 0 !important; padding: 0 10px 0 40px !important;"); + // Back button -curHref = window.location.href.split('/'); -prevHref = document.referrer.split('/'); -$( '.navbar-form.navbar-left' ) - .before( '
' ); -if ( history.length === 1 || +curHref = window.location.href.split("/"); +prevHref = document.referrer.split("/"); +$(".navbar-form.navbar-left") + .before('
'); +if (history.length === 1 || curHref[0] + curHref[1] + curHref[2] != prevHref[0] + prevHref[1] + prevHref[2] || - $( 'body.root' )>length > 0 ) { - $( '.plexBack' ).addClass( 'noBack' ); + $("body.root") > length > 0) { + $(".plexBack").addClass("noBack"); } //Weird missing a after pressing back from edit. -setTimeout(function() { - if ( $( '.plexBack a').length < 1 ) { - $( '.plexBack' ).append(''); - } -},10); +setTimeout(function () { + if ($(".plexBack a").length < 1) { + $(".plexBack").append(''); + } +}, 10); // Home button -$( '.plexBack' ).before( '
' ); -$( 'a.navbar-brand' ).clone().appendTo( '.home-btn' ).empty().removeClass('navbar-brand'); +$(".plexBack").before('
'); +$("a.navbar-brand").clone().appendTo(".home-btn").empty().removeClass("navbar-brand"); ///////////////////////////////// // Start of Book Details Work // /////////////////////////////// // Wrap book description in div container -if ( $( 'body.book' ).length > 0 ) { +if ($("body.book").length > 0) { - description = $( '.comments' ); - bookInfo = $( ".author" ).nextUntil("#decription"); - $("#decription").detach(); - $( '.comments' ).detach(); - $( bookInfo ).wrapAll( '
' ); + description = $(".comments"); + bookInfo = $(".author").nextUntil("#decription"); + $("#decription").detach(); + $(".comments").detach(); + $(bookInfo).wrapAll('
'); // $( 'h3:contains("Description:")' ).after( '
' ); - $( '.languages' ).appendTo( '.bookinfo' ); - $('.hr').detach(); - if ( $( '.identifiers ').length > 0 ) { - console.log(".identifiers length " + $( '.identifiers ').length ); - $( '.identifiers' ).before( '
' ); + $(".languages").appendTo(".bookinfo"); + $(".hr").detach(); + if ($(".identifiers ").length > 0) { + console.log(".identifiers length " + $(".identifiers").length); + $('.identifiers').before('
'); } else { - if ( $( '.bookinfo > p:first-child' ).length > 0 ) { - console.log(".bookinfo > p:first-child length " + $( '.bookinfo > p' ).length ); - $( '.bookinfo > p:first-child' ).first().after( '
' ); - } else{ - if ( $( '.bookinfo a[href*="/series/"]' ).length > 0 ) { - console.log( 'series text found; placing hr below series' ); - $( '.bookinfo a[href*="/series/"]' ).parent().after( '
' ); + if ($(".bookinfo > p:first-child").length > 0) { + console.log(".bookinfo > p:first-child length " + $(".bookinfo > p").length); + $(".bookinfo > p:first-child").first().after('
'); } else { - console.log("prepending hr div to top of .bookinfo"); - $( '.bookinfo' ).prepend( '
' ); - } + if ($('.bookinfo a[href*="/series/"]').length > 0) { + console.log("series text found; placing hr below series"); + $('.bookinfo a[href*="/series/"]').parent().after('
'); + } else { + console.log("prepending hr div to top of .bookinfo"); + $(".bookinfo").prepend('
'); + } + } } - } - $( '.rating' ).insertBefore( '.hr' ); - $( '#remove-from-shelves' ).insertAfter( '.hr' ); - $( description ).appendTo('.bookinfo') - /* if book description is not in html format, Remove extra line breaks - Remove blank lines/unnecessary spaces, split by line break to array - Push array into .description div. If there is still a wall of text, - find sentences and split wall into groups of three sentence paragraphs. - If the book format is in html format, Keep html, but strip away inline - styles and empty elements */ + $(".rating").insertBefore(".hr"); + $("#remove-from-shelves").insertAfter(".hr"); + $(description).appendTo(".bookinfo") + /* if book description is not in html format, Remove extra line breaks + Remove blank lines/unnecessary spaces, split by line break to array + Push array into .description div. If there is still a wall of text, + find sentences and split wall into groups of three sentence paragraphs. + If the book format is in html format, Keep html, but strip away inline + styles and empty elements */ - // If text is sitting in div as text node - if ( $('.comments:has(p)' ).length === 0 ) { - newdesc = description.text() - .replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm,"").split(/\n/); - $('.comments' ).empty(); - $.each(newdesc, function(i, val) { - $( 'div.comments' ).append( '

' + newdesc[i] + '

' ); + // If text is sitting in div as text node + if ($(".comments:has(p)").length === 0) { + newdesc = description.text() + .replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm, "").split(/\n/); + $(".comments").empty(); + $.each(newdesc, function (i, val) { + $("div.comments").append("

" + newdesc[i] + "

"); + }); + $(".comments").fadeIn(100); + } //If still a wall of text create 3 sentence paragraphs. + if ($(".comments p").length === 1) { + if (description.context != undefined) { + newdesc = description.text() + .replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm, "").split(/\n/); + } else { + newdesc = description.text(); + } + doc = nlp(newdesc.toString()); + sentences = doc.map((m) => m.out("text")); + sentences[0] = sentences[0].replace(",", ""); + $(".comments p").remove(); + let size = 3; + let sentenceChunks = []; + for (var i = 0; i < sentences.length; i += size) { + sentenceChunks.push(sentences.slice(i, i + size)); + } + let output = ''; + $.each(sentenceChunks, function (i, val) { + let preOutput = ''; + $.each(val, function (i, val) { + preOutput += val; + }); + output += "

" + preOutput + "

"; + }); + $("div.comments").append(output); + } else { + $.each(description, function (i, val) { +// $( description[i].outerHTML ).appendTo( ".comments" ); + $("div.comments :empty").remove(); + $("div.comments ").attr("style", ""); + }); + $("div.comments").fadeIn(100); + } + + // Sexy blurred backgrounds + cover = $(".cover img").attr("src"); + $("#loader + .container-fluid") + .prepend("
"); + $(".blur-wrapper") + .prepend('
Blurred cover
'); + + // Fix-up book detail headings + publisher = $(".publishers p span").text().split(":"); + $(".publishers p span").remove(); + $.each(publisher, function (i, val) { + $(".publishers").append("" + publisher[i] + ""); }); - $( '.comments' ).fadeIn(100); - } //If still a wall of text create 3 sentence paragraphs. - if( $( '.comments p' ).length === 1 ) { - if ( description.context != undefined ) { - newdesc = description.text() - .replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm,"").split(/\n/); - } - else { - newdesc = description.text(); - } - doc = nlp ( newdesc.toString() ); - sentences = doc.map((m)=> m.out( 'text' )); - sentences[0] = sentences[0].replace(",",""); - $( '.comments p' ).remove(); - let size = 3; let sentenceChunks = []; - for (var i=0; i'; - }); - $( 'div.comments' ).append( output ); - } - else { - $.each(description, function(i, val) { -// $( description[i].outerHTML ).appendTo( '.comments' ); - $( 'div.comments :empty' ).remove(); - $( 'div.comments ').attr( 'style', '' ); - }); - $( 'div.comments' ).fadeIn( 100 ); - } - - // Sexy blurred backgrounds - cover = $( '.cover img' ).attr( 'src' ); - $( '#loader + .container-fluid' ) - .prepend( '
' ); - - // Fix-up book detail headings - publisher = $( '.publishers p span' ).text().split( ':' ); - $( '.publishers p span' ).remove(); - $.each(publisher, function(i, val) { - $( '.publishers' ).append( '' + publisher[i] + '' ); + $(".publishers span:nth-child(3)").text(function () { + return $(this).text().replace(/^\s+|^\t+|\t+|\s+$/g, ""); }); - $( '.publishers span:nth-child(3)' ).text(function() { - return $(this).text().replace(/^\s+|^\t+|\t+|\s+$/g, ""); - }); - // Fix-up book custom colums headings - // real_custom_column = $( '.real_custom_columns' ).text().split( ':' ); - real_custom_column = $( '.real_custom_columns' ); - // $( '.real_custom_columns' ).remove(); - $.each(real_custom_column, function(i, val) { - real_cc = $(this).text().split( ':' ); - $( this ).text(""); - if (real_cc.length > 1) { - $( this ).append( '' + real_cc[0] + '' + real_cc[1] + '' ); + // Fix-up book custom colums headings + // real_custom_column = $( '.real_custom_columns' ).text().split( ':' ); + real_custom_column = $(".real_custom_columns"); + // $( ".real_custom_columns" ).remove(); + $.each(real_custom_column, function (i, val) { + var split = $(this).text().split(":"); + real_cc_key = split.shift(); + real_cc_value = split.join(":"); + $(this).text(""); + if (real_cc_value != "") { + $(this).append("" + real_cc_key + "" + real_cc_value + ""); } }); - //$( '.real_custom_columns:nth-child(3)' ).text(function() { - //return $(this).text().replace(/^\s+|^\t+|\t+|\s+$/g, ""); - //}); + //$( '.real_custom_columns:nth-child(3)' ).text(function() { + //return $(this).text().replace(/^\s+|^\t+|\t+|\s+$/g, ""); + //}); - published = $( '.publishing-date p' ) - .text().split(': '); - $( '.publishing-date p' ).remove(); - $.each(published, function(i, val) { - $( '.publishing-date' ).append( '' + published[i] + '' ); - }); - - languages = $( '.languages p span' ).text().split( ': ' ); - $( '.languages p span' ).remove(); - $.each(languages, function(i, val) { - $( '.languages' ).append( '' + languages[i] + '' ); - }); - - $( '.book-meta h2:first' ).clone() - .prependTo( '.book-meta > .btn-toolbar:first' ); - - // If only one download type exists still put the items into a drop-drown list. - downloads = $( 'a[id^=btnGroupDrop]' ).get(); - if ( $( downloads ).length === 1 ) { - $( '' ).insertBefore( downloads[downloads.length-1] ); - $( downloads ).detach(); - $.each(downloads, function(i, val) { - $( '
  • ' + downloads[i].outerHTML + '
  • ' ).appendTo( '.leramslist' ); + published = $(".publishing-date p") + .text().split(": "); + $(".publishing-date p").remove(); + $.each(published, function (i, val) { + $(".publishing-date").append("" + published[i] + ""); }); - $( '.leramslist' ).find( 'span' ).remove(); - $( '.leramslist a' ).removeClass( 'btn btn-primary' ).removeAttr( 'role' ); - } - // Add classes to buttons - $( '#sendbtn' ).parent().addClass( 'sendBtn' ); - $( '[id*=btnGroupDrop]' ).parent().addClass( 'downloadBtn' ); - $( 'read-in-browser' ).parent().addClass( 'readBtn' ); - $( '.downloadBtn button:first' ).addClass( 'download-text' ); + languages = $(".languages p span").text().split(": "); + $(".languages p span").remove(); + $.each(languages, function (i, val) { + $(".languages").append("" + languages[i] + ""); + }); - // Move all options in book details page to the same group - $( '[aria-label*="Delete book"]' ) - .prependTo( '[aria-label^="Download, send"]' ) - .children().removeClass( 'btn-sm' ); - $( '.custom_columns' ) - .addClass(' btn-group' ) - .attr('role', 'group' ) - .removeClass( 'custom_columns' ) - .prependTo( '[aria-label^="Download, send"]' ); - $( '#have_read_cb' ) - .after( '' ); - $( '#shelf-actions' ).prependTo( '[aria-label^="Download, send"]' ); + $(".book-meta h2:first").clone() + .prependTo(".book-meta > .btn-toolbar:first"); - - // Move dropdown lists higher in dom, replace bootstrap toggle with own toggle. - $( 'ul[aria-labelledby="read-in-browser"]' ).insertBefore( '.blur-wrapper' ).addClass('readinbrowser-drop'); - $( 'ul[aria-labelledby="send-to-kindle"]' ).insertBefore( '.blur-wrapper' ).addClass('sendtokindle-drop'); - $( '.leramslist' ).insertBefore( '.blur-wrapper' ); - $( 'ul[aria-labelledby="btnGroupDrop1"]' ).insertBefore( '.blur-wrapper' ).addClass('leramslist'); - $( '#add-to-shelves' ).insertBefore( '.blur-wrapper' ); - - $( '#read-in-browser' ).click( function() { - $( '.readinbrowser-drop' ).toggle(); - }); - - $('.downloadBtn' ).click( function() { - $( '.leramslist' ).toggle(); - }); - - $('#sendbtn2' ).click( function() { - $( '.sendtokindle-drop' ).toggle(); - }); - - - $('div[aria-label="Add to shelves"]' ).click( function() { - $( '#add-to-shelves' ).toggle(); - }); - - // Fix formatting error on book detail languages - if ( !$( '.book-meta > .bookinfo > .languages > span:last-of-type' ).text().startsWith(" ") ) { - $( '.book-meta > .bookinfo > .languages > span:last-of-type' ).prepend(" "); - } - - //Work to reposition dropdowns. Does not currently solve for - //screen resizing - function dropdownToggle() { - - topPos = $( '.book-meta > .btn-toolbar:first' ).offset().top - - if ( $( '#read-in-browser' ).length > 0 ) { - position = $( '#read-in-browser' ).offset().left - if ( position + $( '.readinbrowser-drop' ).width() > $( window ).width() ) { - positionOff = position + $( '.readinbrowser-drop' ).width() - $( window ).width(); - ribPosition = position - positionOff - 5 - $( '.readinbrowser-drop' ).attr("style", "left: " + ribPosition + "px !important; right: auto; top: " + topPos + "px"); - } else { - $( '.readinbrowser-drop' ).attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px"); - } + // If only one download type exists still put the items into a drop-drown list. + downloads = $("a[id^=btnGroupDrop]").get(); + if ($(downloads).length === 1) { + $('').insertBefore(downloads[downloads.length - 1]); + $(downloads).detach(); + $.each(downloads, function (i, val) { + $("
  • " + downloads[i].outerHTML + "
  • ").appendTo(".leramslist"); + }); + $(".leramslist").find("span").remove(); + $(".leramslist a").removeClass("btn btn-primary").removeAttr("role"); } - if ( $( '#sendbtn2' ).length > 0 ) { - position = $( '#sendbtn2' ).offset().left - if ( position + $( '.sendtokindle-drop' ).width() > $( window ).width() ) { - positionOff = position + $( '.sendtokindle-drop' ).width() - $( window ).width(); - ribPosition = position - positionOff - 5 - $( '.sendtokindle-drop' ).attr("style", "left: " + ribPosition + "px !important; right: auto; top: " + topPos + "px"); - } else { - $( '.sendtokindle-drop' ).attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px"); - } + // Add classes to buttons + $("#sendbtn").parent().addClass("sendBtn"); + $("[id*=btnGroupDrop]").parent().addClass("downloadBtn"); + $("read-in-browser").parent().addClass("readBtn"); + $(".downloadBtn button:first").addClass("download-text"); + + // Move all options in book details page to the same group + $("[aria-label*='Delete book']") + .prependTo('[aria-label^="Download, send"]') + .children().removeClass("btn-sm"); + $(".custom_columns") + .addClass(" btn-group") + .attr("role", "group") + .removeClass("custom_columns") + .prependTo('[aria-label^="Download, send"]'); + $("#have_read_cb") + .after(''); + $("#archived_cb") + .after(''); + $("#shelf-actions").prependTo('[aria-label^="Download, send"]'); + + + // Move dropdown lists higher in dom, replace bootstrap toggle with own toggle. + $('ul[aria-labelledby="read-in-browser"]').insertBefore(".blur-wrapper").addClass("readinbrowser-drop"); + $('ul[aria-labelledby="send-to-kindle"]').insertBefore(".blur-wrapper").addClass("sendtokindle-drop"); + $(".leramslist").insertBefore(".blur-wrapper"); + $('ul[aria-labelledby="btnGroupDrop1"]').insertBefore(".blur-wrapper").addClass("leramslist"); + $("#add-to-shelves").insertBefore(".blur-wrapper"); + + $("#read-in-browser").click(function () { + $(".readinbrowser-drop").toggle(); + }); + + $(".downloadBtn").click(function () { + $(".leramslist").toggle(); + }); + + $("#sendbtn2").click(function () { + $(".sendtokindle-drop").toggle(); + }); + + + $('div[aria-label="Add to shelves"]').click(function () { + $("#add-to-shelves").toggle(); + }); + + // Fix formatting error on book detail languages + if (!$(".book-meta > .bookinfo > .languages > span:last-of-type").text().startsWith(" ")) { + $(".book-meta > .bookinfo > .languages > span:last-of-type").prepend(" "); } - if ( $( '.downloadBtn' ).length > 0 ) { + //Work to reposition dropdowns. Does not currently solve for + //screen resizing + function dropdownToggle() { - position = $( '#btnGroupDrop1' ).offset().left + topPos = $(".book-meta > .btn-toolbar:first").offset().top - if ( position + $( '.leramslist' ).width() > $( window ).width() ) { - positionOff = position + $( '.leramslist' ).width() - $( window ).width(); - dlPosition = position - positionOff - 5 - $( '.leramslist' ).attr("style", "left: " + dlPosition + "px !important; right: auto; top: " + topPos + "px"); - } else { - $( '.leramslist' ).attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px"); - } + if ($("#read-in-browser").length > 0) { + position = $("#read-in-browser").offset().left + if (position + $(".readinbrowser-drop").width() > $(window).width()) { + positionOff = position + $(".readinbrowser-drop").width() - $(window).width(); + ribPosition = position - positionOff - 5 + $(".readinbrowser-drop").attr("style", "left: " + ribPosition + "px !important; right: auto; top: " + topPos + "px"); + } else { + $(".readinbrowser-drop").attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px"); + } + } + + if ($("#sendbtn2").length > 0) { + position = $("#sendbtn2").offset().left + if (position + $(".sendtokindle-drop").width() > $(window).width()) { + positionOff = position + $(".sendtokindle-drop").width() - $(window).width(); + ribPosition = position - positionOff - 5 + $(".sendtokindle-drop").attr("style", "left: " + ribPosition + "px !important; right: auto; top: " + topPos + "px"); + } else { + $(".sendtokindle-drop").attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px"); + } + } + + if ($(".downloadBtn").length > 0) { + + position = $("#btnGroupDrop1").offset().left + + if (position + $(".leramslist").width() > $(window).width()) { + positionOff = position + $(".leramslist").width() - $(window).width(); + dlPosition = position - positionOff - 5 + $(".leramslist").attr("style", "left: " + dlPosition + "px !important; right: auto; top: " + topPos + "px"); + } else { + $(".leramslist").attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px"); + } + } + + if ($('div[aria-label="Add to shelves"]').length > 0) { + + position = $('div[aria-label="Add to shelves"]').offset().left + + if (position + $("#add-to-shelves").width() > $(window).width()) { + positionOff = position + $("#add-to-shelves").width() - $(window).width(); + adsPosition = position - positionOff - 5 + $("#add-to-shelves").attr("style", "left: " + adsPosition + "px !important; right: auto; top: " + topPos + "px"); + } else { + $("#add-to-shelves").attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px"); + } + } } - if ( $( 'div[aria-label="Add to shelves"]' ).length > 0 ) { - - position = $( 'div[aria-label="Add to shelves"]' ).offset().left - - if ( position + $( '#add-to-shelves' ).width() > $( window ).width() ) { - positionOff = position + $( '#add-to-shelves' ).width() - $( window ).width(); - adsPosition = position - positionOff - 5 - $( '#add-to-shelves' ).attr("style", "left: " + adsPosition + "px !important; right: auto; top: " + topPos + "px"); - } else { - $( '#add-to-shelves' ).attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px"); - } - } - } - dropdownToggle(); - - $( window ).on( 'resize', function() { dropdownToggle(); - }); + + $(window).on("resize", function () { + dropdownToggle(); + }); // Clone book rating for mobile view. -$( '.book-meta > .bookinfo > .rating' ).clone().insertBefore( '.book-meta > .description' ).addClass('rating-mobile'); + $(".book-meta > .bookinfo > .rating").clone().insertBefore(".book-meta > .description").addClass("rating-mobile"); } /////////////////////////////// @@ -320,80 +326,77 @@ $( '.book-meta > .bookinfo > .rating' ).clone().insertBefore( '.book-meta > .des // Hide dropdown and collapse menus on click-off $(document).mouseup(function (e) { - var container = new Array(); - container.push($('ul[aria-labelledby="read-in-browser"]')); - container.push($('.sendtokindle-drop')); - container.push($('.leramslist')); - container.push($('#add-to-shelves')); - container.push($('.navbar-collapse.collapse.in')); + var container = new Array(); + container.push($('ul[aria-labelledby="read-in-browser"]')); + container.push($(".sendtokindle-drop")); + container.push($(".leramslist")); + container.push($("#add-to-shelves")); + container.push($(".navbar-collapse.collapse.in")); - $.each(container, function(key, value) { - if (!$(value).is(e.target) // if the target of the click isn't the container... - && $(value).has(e.target).length === 0) // ... nor a descendant of the container - { - if ( $(value).hasClass('dropdown-menu') ) - { - $(value).hide(); - } else - { - if ( $(value).hasClass('collapse') ) + $.each(container, function (key, value) { + if (!$(value).is(e.target) // if the target of the click isn't the container... + && $(value).has(e.target).length === 0) // ... nor a descendant of the container { - $(value).collapse('toggle'); + if ($(value).hasClass("dropdown-menu")) { + $(value).hide(); + } else { + if ($(value).hasClass("collapse")) { + $(value).collapse("toggle"); + } + } } - } - } - }); + }); }); // Split path name to array and remove blanks url = window.location.pathname // Move create shelf -$( '#nav_createshelf' ).prependTo( '.your-shelves' ); +$("#nav_createshelf").prependTo(".your-shelves"); // Create drop-down for profile and move elements to it -$( '#main-nav' ) - .prepend( '' ); -$( '#top_user' ).parent().addClass( 'dropdown' ).appendTo( '.profileDropli' ); -$( '#nav_about' ).addClass( 'dropdown' ).appendTo( '.profileDropli' ); -$( '#register' ).parent().addClass( 'dropdown' ).appendTo( '.profileDropli' ); -$( '#logout' ).parent().addClass( 'dropdown' ).appendTo( '.profileDropli' ); +$("#main-nav") + .prepend(''); +$("#top_user").parent().addClass("dropdown").appendTo(".profileDropli"); +$("#nav_about").addClass("dropdown").appendTo(".profileDropli"); +$("#register").parent().addClass("dropdown").appendTo(".profileDropli"); +$("#logout").parent().addClass("dropdown").appendTo(".profileDropli"); // Remove the modals except from some areas where they are needed -bodyClass = $( 'body' ).attr( 'class' ).split(' '); -modalWanted = ['admin', 'editbook', 'config', 'uiconfig']; +bodyClass = $("body").attr("class").split(" "); +modalWanted = ["admin", "editbook", "config", "uiconfig", "me", "edituser"]; -if ( $.inArray( bodyClass[0], modalWanted) != -1 ) { +if ($.inArray(bodyClass[0], modalWanted) != -1) { } else { - $(' a:not(.dropdown-toggle) ') - .removeAttr( 'data-toggle', 'data-target', 'data-remote' ); + $(" a:not(.dropdown-toggle) ") + .removeAttr("data-toggle", "data-target", "data-remote"); } // Add classes to global buttons -$( '#top_tasks' ).parent().addClass( 'top_tasks' ); -$( '#top_admin' ).parent().addClass( 'top_admin' ); -$( '#form-upload' ).parent().addClass( 'form-upload' ); +$("#top_tasks").parent().addClass("top_tasks"); +$("#top_admin").parent().addClass("top_admin"); +$("#form-upload").parent().addClass("form-upload"); // Search button work -$( 'input#query' ).focus(function() { - $( 'form[role="search"]' ).addClass( 'search-focus' ); +$("input#query").focus(function () { + $('form[role="search"]').addClass("search-focus"); }); -$( 'input#query' ).focusout(function() { - setTimeout(function() { - $( 'form[role="search"]' ).removeClass( 'search-focus' ); - }, 100); +$("input#query").focusout(function () { + setTimeout(function () { + $('form[role="search"]').removeClass("search-focus"); + }, 100); }); // Check if dropdown goes out of viewport and add class -$(document).on('click','.dropdown-toggle',function() { - // Add .offscreen if part of container not visible - $('.dropdown-menu:visible').filter(function(){ - return $(this).visible() === false; - }).each(function(){ - $(this).addClass('offscreen'); - }); +$(document).on("click", ".dropdown-toggle", function () { + // Add .offscreen if part of container not visible + $(".dropdown-menu:visible").filter(function () { + return $(this).visible() === false; + }).each(function () { + $(this).addClass("offscreen"); + }); }); // Fade out content on page unload @@ -422,302 +425,347 @@ $(document).on('click','.dropdown-toggle',function() { });*/ // Collapse long text into read-more -$( 'div.comments' ).readmore( { - collapsedHeight: 134, - heightMargin: 45, - speed: 300, - moreLink: 'READ MORE', // ToDo: make translateable - lessLink: 'READ LESS', // ToDo: make translateable +$("div.comments").readmore({ + collapsedHeight: 134, + heightMargin: 45, + speed: 300, + moreLink: 'READ MORE', // ToDo: make translateable + lessLink: 'READ LESS', // ToDo: make translateable }); ///////////////////////////////// // End of Global Work // /////////////////////////////// // Author Page Background Blur -if ( $( 'body.author' ).length >0 ) { - cover = $( '.author-bio img' ).attr( 'src' ); - $( '#loader + .container-fluid' ) - .prepend( '
    ' ); - $( '.blur-wrapper' ).prepend( '' ); - // Place undefined cover images inside container - if ( $( '.bg-blur[src="undefined"]' ).length > 0 ) { - $( '.bg-blur' ).before( '
    ' ); - $( 'img.bg-blur' ).appendTo( '.undefined-img' ); - } +if ($("body.author").length > 0) { + cover = $(".author-bio img").attr("src"); + $("#loader + .container-fluid") + .prepend('
    '); + $(".blur-wrapper").prepend('Blurred author bio'); + // Place undefined cover images inside container + if ($('.bg-blur[src="undefined"]').length > 0) { + $(".bg-blur").before('
    '); + $("img.bg-blur").appendTo('.undefined-img'); + } } // Ereader Page - add class to iframe body on ereader page after it loads. -backurl = '../../book/' + url[2] -$( 'body.epub #title-controls' ) - .append('
    ') +backurl = "../../book/" + url[2] +$("body.epub #title-controls") + .append('
    ') -$( 'body.stat .col-sm-10 p:first' ).insertAfter( '#libs' ); +$("body.stat .col-sm-10 p:first").insertAfter("#libs"); // Check if link is external and force _blank attribute -$(function(){ // document ready - $( 'a' ).filter(function () { - return this.hostname && this.hostname !== location.hostname; - }).each(function () { - $(this).addClass("external").attr( 'target', '_blank' ); - }); +$(function () { // document ready + $("a").filter(function () { + return this.hostname && this.hostname !== location.hostname; + }).each(function () { + $(this).addClass("external").attr("target", "_blank"); + }); }); // Check if lists are empty and add class to buttons -if ( $.trim( $('#add-to-shelves').html() ).length === 0 ) { - $( '#add-to-shelf' ).addClass( 'empty-ul' ); +if ($.trim($("#add-to-shelves").html()).length === 0) { + $("#add-to-shelf").addClass("empty-ul"); } -shelfLength = $('#add-to-shelves li').length +shelfLength = $("#add-to-shelves li").length emptyLength = 0 -$('#add-to-shelves').on('click','li a',function(){ - console.log('#remove-from-shelves change registered' ); - emptyLength++ +$("#add-to-shelves").on("click", "li a", function () { + console.log("#remove-from-shelves change registered"); + emptyLength++ - setTimeout(function() { - if ( emptyLength >= shelfLength ) { - console.log('list is empty; adding empty-ul class' ); - $( '#add-to-shelf' ).addClass( 'empty-ul' ); - } else { - console.log('list is not empty; removing empty-ul class' ); - $( '#add-to-shelf' ).removeClass( 'empty-ul' ); - } - },100); + setTimeout(function () { + if (emptyLength >= shelfLength) { + console.log("list is empty; adding empty-ul class"); + $("#add-to-shelf").addClass("empty-ul"); + } else { + console.log("list is not empty; removing empty-ul class"); + $("#add-to-shelf").removeClass("empty-ul"); + } + }, 100); }); -if ( $.trim( $( 'ul[aria-labelledby="read-in-browser"] li' ).html() ).length === 0 ) { - $('#read-in-browser').addClass('empty-ul'); +if ($.trim($('ul[aria-labelledby="read-in-browser"] li').html()).length === 0) { + $("#read-in-browser").addClass("empty-ul"); } // Shelf Buttons and Tooltips -if ( $( 'body.shelf' ).length > 0 ) { - $( 'div[data-target="#DeleteShelfDialog"]' ) - .before( '
    ' ) - .appendTo( '.shelf-btn-group' ) - .addClass( 'delete-shelf-btn' ); +if ($("body.shelf").length > 0) { + $('div[data-target="#DeleteShelfDialog"]') + .before('
    ') + .appendTo(".shelf-btn-group") + .addClass("delete-shelf-btn"); - $( 'a[href*="edit"]' ) - .appendTo( '.shelf-btn-group' ) - .addClass( 'edit-shelf-btn' ); + $('a[href*="edit"]') + .appendTo(".shelf-btn-group") + .addClass("edit-shelf-btn"); - $( 'a[href*="order"]' ) - .appendTo( '.shelf-btn-group' ) - .addClass( 'order-shelf-btn' ); - $( '.delete-shelf-btn' ).attr({ - 'data-toggle-two': 'tooltip', - 'title': $( '.delete-shelf-btn' ).text(), // 'Delete Shelf' - 'data-placement': 'bottom' }) - .addClass('delete-btn-tooltip'); + $('a[href*="order"]') + .appendTo(".shelf-btn-group") + .addClass("order-shelf-btn"); + $(".delete-shelf-btn").attr({ + "data-toggle-two": "tooltip", + "title": $(".delete-shelf-btn").text(), // "Delete Shelf" + "data-placement": "bottom" + }) + .addClass("delete-btn-tooltip"); - $( '.edit-shelf-btn' ).attr({ - 'data-toggle-two': 'tooltip', - 'title': $( '.edit-shelf-btn' ).text(), // 'Edit Shelf' - 'data-placement': 'bottom' }) - .addClass('edit-btn-tooltip'); + $(".edit-shelf-btn").attr({ + "data-toggle-two": "tooltip", + "title": $(".edit-shelf-btn").text(), // "Edit Shelf" + "data-placement": "bottom" + }) + .addClass("edit-btn-tooltip"); - $( '.order-shelf-btn' ).attr({ - 'data-toggle-two': 'tooltip', - 'title': $( '.order-shelf-btn' ).text(), //'Reorder Shelf' - 'data-placement': 'bottom' }) - .addClass('order-btn-tooltip'); + $(".order-shelf-btn").attr({ + "data-toggle-two": "tooltip", + "title": $(".order-shelf-btn").text(), //"Reorder Shelf" + "data-placement": "bottom" + }) + .addClass("order-btn-tooltip"); } // Rest of Tooltips -$( '.home-btn > a' ).attr({ - 'data-toggle': 'tooltip', - 'title': $(document.body).attr('data-text'), // Home - 'data-placement': 'bottom' }) - .addClass('home-btn-tooltip'); +$(".home-btn > a").attr({ + "data-toggle": "tooltip", + "title": $(document.body).attr("data-text"), // Home + "data-placement": "bottom" +}) + .addClass("home-btn-tooltip"); -$( '.plexBack > a' ).attr({ - 'data-toggle': 'tooltip', - 'title': $(document.body).attr('data-textback'), // Back - 'data-placement': 'bottom' }) - .addClass('back-btn-tooltip'); +$(".plexBack > a").attr({ + "data-toggle": "tooltip", + "title": $(document.body).attr("data-textback"), // Back + "data-placement": "bottom" +}) + .addClass("back-btn-tooltip"); -$( '#top_tasks' ).attr({ - 'data-toggle': 'tooltip', - 'title': $( '#top_tasks' ).text(), // 'Tasks' - 'data-placement': 'bottom', - 'data-viewport': '#main-nav' }) - .addClass('tasks-btn-tooltip'); +$("#top_tasks").attr({ + "data-toggle": "tooltip", + "title": $("#top_tasks").text(), // "Tasks" + "data-placement": "bottom", + "data-viewport": "#main-nav" +}) + .addClass("tasks-btn-tooltip"); -$( '#top_admin' ).attr({ - 'data-toggle': 'tooltip', - 'title': $( '#top_admin' ).attr('data-text'), // Settings - 'data-placement': 'bottom', - 'data-viewport': '#main-nav' }) - .addClass('admin-btn-tooltip'); +$("#top_admin").attr({ + "data-toggle": "tooltip", + "title": $("#top_admin").attr("data-text"), // Settings + "data-placement": "bottom", + "data-viewport": "#main-nav" +}) + .addClass("admin-btn-tooltip"); -$( '.profileDrop' ).attr({ - 'title': $( '#top_user' ).attr('data-text'), //Account - 'data-placement': 'bottom', - 'data-toggle-two': 'tooltip', - 'data-viewport': '#main-nav' }) - .addClass('send-btn-tooltip dropdown'); +$(".profileDrop").attr({ + "title": $("#top_user").attr("data-text"), //Account + "data-placement": "bottom", + "data-toggle-two": "tooltip", + "data-viewport": "#main-nav" +}) + .addClass("send-btn-tooltip dropdown"); -$( '#btn-upload' ).attr({ - 'data-toggle': 'tooltip', - 'title': $( '#btn-upload' ).parent().text() , // 'Upload' - 'data-placement': 'bottom', - 'data-viewport': '#main-nav' }) - .addClass('upload-btn-tooltip'); +$("#btn-upload").attr({ + "data-toggle": "tooltip", + "title": $("#btn-upload").parent().text(), // "Upload" + "data-placement": "bottom", + "data-viewport": "#main-nav" +}) + .addClass("upload-btn-tooltip"); -$( '#add-to-shelf' ).attr({ - 'data-toggle-two': 'tooltip', - 'title': $( '#add-to-shelf' ).text() , // 'Add to Shelf' - 'data-placement': 'bottom', - 'data-viewport': '.btn-toolbar' }) - .addClass('addtoshelf-btn-tooltip'); +$("#add-to-shelf").attr({ + "data-toggle-two": "tooltip", + "title": $("#add-to-shelf").text(), // "Add to Shelf" + "data-placement": "bottom", + "data-viewport": ".btn-toolbar" +}) + .addClass("addtoshelf-btn-tooltip"); -$( '#have_read_cb' ).attr({ - 'data-toggle': 'tooltip', - 'title': $( '#have_read_cb').attr('data-unchecked'), - 'data-placement': 'bottom', - 'data-viewport': '.btn-toolbar' }) - .addClass('readunread-btn-tooltip'); +$("#have_read_cb").attr({ + "data-toggle": "tooltip", + "title": $("#have_read_cb").attr("data-unchecked"), + "data-placement": "bottom", + "data-viewport": ".btn-toolbar" +}) + .addClass("readunread-btn-tooltip"); -$( '#have_read_cb:checked' ).attr({ - 'data-toggle': 'tooltip', - 'title': $( '#have_read_cb').attr('data-checked'), - 'data-placement': 'bottom', - 'data-viewport': '.btn-toolbar' }) - .addClass('readunread-btn-tooltip'); +$("#have_read_cb:checked").attr({ + "data-toggle": "tooltip", + "title": $("#have_read_cb").attr("data-checked"), + "data-placement": "bottom", + "data-viewport": ".btn-toolbar" +}) + .addClass("readunread-btn-tooltip"); - $( 'button#delete' ).attr({ - 'data-toggle-two': 'tooltip', - 'title': $( 'button#delete' ).text(), //'Delete' - 'data-placement': 'bottom', - 'data-viewport': '.btn-toolbar' }) - .addClass('delete-book-btn-tooltip'); +$("#archived_cb").attr({ + "data-toggle": "tooltip", + "title": $("#archived_cb").attr("data-unchecked"), + "data-placement": "bottom", + "data-viewport": ".btn-toolbar" +}) + .addClass("readunread-btn-tooltip"); -$( '#have_read_cb' ).click(function() { - if ( $( '#have_read_cb:checked' ).length > 0 ) { - $( this ).attr('data-original-title', $('#have_read_cb').attr('data-checked')); - } else { - $( this).attr('data-original-title', $('#have_read_cb').attr('data-unchecked')); - } +$("#archived_cb:checked").attr({ + "data-toggle": "tooltip", + "title": $("#archived_cb").attr("data-checked"), + "data-placement": "bottom", + "data-viewport": ".btn-toolbar" +}) + .addClass("readunread-btn-tooltip"); + +$("button#delete").attr({ + "data-toggle-two": "tooltip", + "title": $("button#delete").text(), //"Delete" + "data-placement": "bottom", + "data-viewport": ".btn-toolbar" +}) + .addClass("delete-book-btn-tooltip"); + +$("#have_read_cb").click(function () { + if ($("#have_read_cb:checked").length > 0) { + $(this).attr("data-original-title", $("#have_read_cb").attr("data-checked")); + } else { + $(this).attr("data-original-title", $("#have_read_cb").attr("data-unchecked")); + } }); -$( '.btn-group[aria-label="Edit/Delete book"] a' ).attr({ - 'data-toggle': 'tooltip', - 'title': $( '#edit_book' ).text(), // 'Edit' - 'data-placement': 'bottom', - 'data-viewport': '.btn-toolbar' }) - .addClass('edit-btn-tooltip'); +$("#archived_cb").click(function () { + if ($("#archived_cb:checked").length > 0) { + $(this).attr("data-original-title", $("#archived_cb").attr("data-checked")); + } else { + $(this).attr("data-original-title", $("#archived_cb").attr("data-unchecked")); + } +}); -$( '#sendbtn' ).attr({ - 'data-toggle': 'tooltip', - 'title': $( '#sendbtn' ).attr('data-text'), - 'data-placement': 'bottom', - 'data-viewport': '.btn-toolbar' }) - .addClass('send-btn-tooltip'); +$('.btn-group[aria-label="Edit/Delete book"] a').attr({ + "data-toggle": "tooltip", + "title": $("#edit_book").text(), // "Edit" + "data-placement": "bottom", + "data-viewport": ".btn-toolbar" +}) + .addClass("edit-btn-tooltip"); -$( '#sendbtn2' ).attr({ - 'data-toggle-two': 'tooltip', - 'title': $( '#sendbtn2' ).text(), // 'Send to Kindle', - 'data-placement': 'bottom', - 'data-viewport': '.btn-toolbar' }) - .addClass('send-btn-tooltip'); +$("#sendbtn").attr({ + "data-toggle": "tooltip", + "title": $("#sendbtn").attr("data-text"), + "data-placement": "bottom", + "data-viewport": ".btn-toolbar" +}) + .addClass("send-btn-tooltip"); -$( '#read-in-browser' ).attr({ - 'data-toggle-two': 'tooltip', - 'title': $( '#read-in-browser' ).text(), - 'data-placement': 'bottom', - 'data-viewport': '.btn-toolbar'}) - .addClass('send-btn-tooltip'); +$("#sendbtn2").attr({ + "data-toggle-two": "tooltip", + "title": $("#sendbtn2").text(), // "Send to Kindle", + "data-placement": "bottom", + "data-viewport": ".btn-toolbar" +}) + .addClass("send-btn-tooltip"); -$( '#btnGroupDrop1' ).attr({ - 'data-toggle-two': 'tooltip', - 'title': $( '#btnGroupDrop1' ).text(), - 'data-placement': 'bottom', - 'data-viewport': '.btn-toolbar' }); +$("#read-in-browser").attr({ + "data-toggle-two": "tooltip", + "title": $("#read-in-browser").text(), + "data-placement": "bottom", + "data-viewport": ".btn-toolbar" +}) + .addClass("send-btn-tooltip"); -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'}); - $( '#btn-upload' ).attr('title', " "); - }); +$("#btnGroupDrop1").attr({ + "data-toggle-two": "tooltip", + "title": $("#btnGroupDrop1").text(), + "data-placement": "bottom", + "data-viewport": ".btn-toolbar" +}); + +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"}); + $("#btn-upload").attr("title", " "); + }); - $( '[data-toggle-two="tooltip"]' ).click(function(){ - $('[data-toggle-two="tooltip"]').tooltip('hide'); - }); + $('[data-toggle-two="tooltip"]').click(function () { + $('[data-toggle-two="tooltip"]').tooltip("hide"); + }); - $( '[data-toggle="tooltip"]' ).click(function(){ - $('[data-toggle="tooltip"]').tooltip('hide'); - }); + $('[data-toggle="tooltip"]').click(function () { + $('[data-toggle="tooltip"]').tooltip("hide"); + }); } -$( '#read-in-browser a' ).attr('target',""); +$("#read-in-browser a").attr("target", ""); -if ( $( '.edit-shelf-btn').length > 1 ) { - $( '.edit-shelf-btn:first').remove(); +if ($(".edit-shelf-btn").length > 1) { + $(".edit-shelf-btn:first").remove(); } -if ( $( '.order-shelf-btn').length > 1 ) { - $( '.order-shelf-btn:first').remove(); +if ($(".order-shelf-btn").length > 1) { + $(".order-shelf-btn:first").remove(); } -$( '#top_user > span.hidden-sm' ).clone().insertBefore( '.profileDropli' ); -$( '.navbar-collapse.collapse.in').before(''); +$("#top_user > span.hidden-sm").clone().insertBefore(".profileDropli"); +$(".navbar-collapse.collapse.in").before(''); // Get rid of leading white space -recentlyAdded = $( '#nav_new a:contains("Recently")' ).text().trim(); -$('#nav_new a:contains("Recently")').contents().filter(function() { +recentlyAdded = $("#nav_new a:contains('Recently')").text().trim(); +$("#nav_new a:contains('Recently')").contents().filter(function () { return this.nodeType == 3 -}).each(function(){ - this.textContent = this.textContent.replace(' Recently Added',recentlyAdded); +}).each(function () { + this.textContent = this.textContent.replace(" Recently Added", recentlyAdded); }); // Change shelf textValue -shelfText = $( '.shelf .discover h2:first' ).text().replace(':',' —').replace(/\'/g,''); -$( '.shelf .discover h2:first' ).text(shelfText); +shelfText = $(".shelf .discover h2:first").text().replace(":", " —").replace(/\'/g, ""); +$(".shelf .discover h2:first").text(shelfText); -shelfText = $( '.shelforder .col-sm-10 .col-sm-6.col-lg-6.col-xs-6 h2:first' ).text().replace(':',' —').replace(/\'/g,''); -$( '.shelforder .col-sm-10 .col-sm-6.col-lg-6.col-xs-6 h2:first' ).text(shelfText); +shelfText = $(".shelforder .col-sm-10 .col-sm-6.col-lg-6.col-xs-6 h2:first").text().replace(':', ' —').replace(/\'/g, ""); +$(".shelforder .col-sm-10 .col-sm-6.col-lg-6.col-xs-6 h2:first").text(shelfText); function mobileSupport() { -if ( $( window ).width() <= 768 ) { - //Move menu to collapse - $( '.row-fluid > .col-sm-2:first' ).appendTo( '.navbar-collapse.collapse:first'); - if ( $( '.sidebar-backdrop' ).length < 1 ) { - $( '.navbar-collapse.collapse:first' ).after( '' ); - } - } else { - //Move menu out of collapse - $( '.col-sm-2:first' ).insertBefore( '.col-sm-10:first'); - $( '.sidebar-backdrop' ).remove(); - } + if ($(window).width() <= 768) { + //Move menu to collapse + $(".row-fluid > .col-sm-2:first").appendTo(".navbar-collapse.collapse:first"); + if ($(".sidebar-backdrop").length < 1) { + $(".navbar-collapse.collapse:first").after(""); + } + } else { + //Move menu out of collapse + $(".col-sm-2:first").insertBefore(".col-sm-10:first"); + $(".sidebar-backdrop").remove(); + } } // LayerCake plug -if ( $(' body.stat p').length > 0 ) { - $(' body.stat p').append(" and layer.Cake"); - str = $(' body.stat p').html().replace(".",""); - $(' body.stat p').html(str); +if ($(" body.stat p").length > 0) { + $(" body.stat p").append(" and layer.Cake"); + str = $(" body.stat p").html().replace(".", ""); + $(" body.stat p").html(str); } // Collect delete buttons in editbook to single dropdown -$( '.editbook .text-center.more-stuff' ).prepend( '' ); +$(".editbook .text-center.more-stuff").prepend(''); -deleteButtons = $( '.editbook .text-center.more-stuff a' ).removeClass('btn btn-danger' ).attr( 'type', '').get(); +deleteButtons = $(".editbook .text-center.more-stuff a").removeClass("btn btn-danger").attr("type", "").get(); -$( deleteButtons ).detach(); -$( '.editbook .text-center.more-stuff h4' ).remove(); -$.each(deleteButtons, function(i, val) { - $( '
  • ' + deleteButtons[i].outerHTML + '
  • ' ).appendTo( '.delete-dropdown' ); +$(deleteButtons).detach(); +$(".editbook .text-center.more-stuff h4").remove(); +$.each(deleteButtons, function (i, val) { + $("
  • " + deleteButtons[i].outerHTML + "
  • ").appendTo(".delete-dropdown"); }); // Turn off bootstrap animations -$(function() { $.support.transition = false; }) +$(function () { + $.support.transition = false; +}) mobileSupport(); // Only call function once resize is complete //var id; -$( window ).on('resize',function() { +$(window).on("resize", function () { // clearTimeout(id); // id = setTimeout(mobileSupport, 500); -mobileSupport(); + mobileSupport(); }); + diff --git a/cps/static/js/details.js b/cps/static/js/details.js index 491d23bbe..395518cb2 100644 --- a/cps/static/js/details.js +++ b/cps/static/js/details.js @@ -25,6 +25,14 @@ $("#have_read_cb").on("change", function() { $(this).closest("form").submit(); }); +$(function() { + $("#archived_form").ajaxForm(); +}); + +$("#archived_cb").on("change", function() { + $(this).closest("form").submit(); +}); + (function() { var templates = { add: _.template( diff --git a/cps/static/js/filter_grid.js b/cps/static/js/filter_grid.js new file mode 100644 index 000000000..362c6bfa6 --- /dev/null +++ b/cps/static/js/filter_grid.js @@ -0,0 +1,70 @@ +/* This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) + * Copyright (C) 2018 OzzieIsaacs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +var $list = $("#list").isotope({ + itemSelector: ".book", + layoutMode: "fitRows", + getSortData: { + title: ".title", + } +}); + +$("#desc").click(function() { + var page = $(this).data("id"); + $.ajax({ + method:"post", + contentType: "application/json; charset=utf-8", + dataType: "json", + url: window.location.pathname + "/../../ajax/view", + data: "{\"" + page + "\": {\"dir\": \"desc\"}}", + }); + $list.isotope({ + sortBy: "name", + sortAscending: true + }); + return; +}); + +$("#asc").click(function() { + var page = $(this).data("id"); + $.ajax({ + method:"post", + contentType: "application/json; charset=utf-8", + dataType: "json", + url: window.location.pathname + "/../../ajax/view", + data: "{\"" + page + "\": {\"dir\": \"asc\"}}", + }); + $list.isotope({ + sortBy: "name", + sortAscending: false + }); + return; +}); + +$("#all").click(function() { + // go through all elements and make them visible + $list.isotope({ filter: function() { + return true; + } }) +}); + +$(".char").click(function() { + var character = this.innerText; + $list.isotope({ filter: function() { + return this.attributes["data-id"].value.charAt(0).toUpperCase() == character; + } }) +}); diff --git a/cps/static/js/filter_list.js b/cps/static/js/filter_list.js index 0610bb862..676ff47bb 100644 --- a/cps/static/js/filter_list.js +++ b/cps/static/js/filter_list.js @@ -19,6 +19,17 @@ var direction = 0; // Descending order var sort = 0; // Show sorted entries $("#sort_name").click(function() { + var class_name = $("h1").attr('Class') + "_sort_name"; + var obj = {}; + obj[class_name] = sort; + /*$.ajax({ + method:"post", + contentType: "application/json; charset=utf-8", + dataType: "json", + url: window.location.pathname + "/../../ajax/view", + data: JSON.stringify({obj}), + });*/ + var count = 0; var index = 0; var store; @@ -40,12 +51,10 @@ $("#sort_name").click(function() { count++; } }); - /*listItems.sort(function(a,b){ - return $(a).children()[1].innerText.localeCompare($(b).children()[1].innerText) - });*/ + // 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++; @@ -66,6 +75,14 @@ $("#desc").click(function() { if (direction === 0) { return; } + var page = $(this).data("id"); + $.ajax({ + method:"post", + contentType: "application/json; charset=utf-8", + dataType: "json", + url: window.location.pathname + "/../../ajax/view", + data: "{\"" + page + "\": {\"dir\": \"desc\"}}", + }); var index = 0; var list = $("#list"); var second = $("#second"); @@ -102,9 +119,18 @@ $("#desc").click(function() { $("#asc").click(function() { + if (direction === 1) { return; } + var page = $(this).data("id"); + $.ajax({ + method:"post", + contentType: "application/json; charset=utf-8", + dataType: "json", + url: window.location.pathname + "/../../ajax/view", + data: "{\"" + page + "\": {\"dir\": \"asc\"}}", + }); var index = 0; var list = $("#list"); var second = $("#second"); @@ -131,7 +157,6 @@ $("#asc").click(function() { }); // middle = parseInt(elementLength / 2) + (elementLength % 2); - list.append(reversed.slice(0, index)); second.append(reversed.slice(index, elementLength)); } else { @@ -146,7 +171,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 +203,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++; diff --git a/cps/static/js/get_meta.js b/cps/static/js/get_meta.js index cf079ba75..d3e0eb46f 100644 --- a/cps/static/js/get_meta.js +++ b/cps/static/js/get_meta.js @@ -15,23 +15,29 @@ * along with this program. If not, see . */ /* - * Get Metadata from Douban Books api and Google Books api + * Get Metadata from Douban Books api and Google Books api and ComicVine * Google Books api document: https://developers.google.com/books/docs/v1/using * Douban Books api document: https://developers.douban.com/wiki/?title=book_v2 (Chinese Only) + * ComicVine api document: https://comicvine.gamespot.com/api/documentation */ /* global _, i18nMsg, tinymce */ -// var dbResults = []; +var dbResults = []; var ggResults = []; +var cvResults = []; $(function () { var msg = i18nMsg; - /*var douban = "https://api.douban.com"; - var dbSearch = "/v2/book/search";*/ - // var dbDone = true; + var douban = "https://api.douban.com"; + var dbSearch = "/v2/book/search"; + var dbDone = 0; var google = "https://www.googleapis.com"; var ggSearch = "/books/v1/volumes"; - var ggDone = false; + var ggDone = 0; + + var comicvine = "https://comicvine.gamespot.com"; + var cvSearch = "/api/search/"; + var cvDone = 0; var showFlag = 0; @@ -43,12 +49,23 @@ $(function () { function populateForm (book) { tinymce.get("description").setContent(book.description); - $("#bookAuthor").val(book.authors); + var uniqueTags = []; + $.each(book.tags, function(i, el) { + if ($.inArray(el, uniqueTags) === -1) uniqueTags.push(el); + }); + + var ampSeparatedAuthors = (book.authors || []).join(" & "); + $("#bookAuthor").val(ampSeparatedAuthors); $("#book_title").val(book.title); - $("#tags").val(book.tags.join(",")); + $("#tags").val(uniqueTags.join(",")); $("#rating").data("rating").setValue(Math.round(book.rating)); $(".cover img").attr("src", book.cover); $("#cover_url").val(book.cover); + $("#pubdate").val(book.publishedDate); + $("#publisher").val(book.publisher); + if (typeof book.series !== "undefined") { + $("#series").val(book.series); + } } function showResult () { @@ -56,76 +73,164 @@ $(function () { if (showFlag === 1) { $("#meta-info").html("
      "); } - if (!ggDone) { + if ((ggDone === 3 || (ggDone === 1 && ggResults.length === 0)) && + (dbDone === 3 || (dbDone === 1 && dbResults.length === 0)) && + (cvDone === 3 || (cvDone === 1 && cvResults.length === 0))) { $("#meta-info").html("

      " + msg.no_result + "

      "); return; } - if (ggDone && ggResults.length > 0) { - ggResults.forEach(function(result) { - var book = { - id: result.id, - title: result.volumeInfo.title, - authors: result.volumeInfo.authors || [], - description: result.volumeInfo.description || "", - publisher: result.volumeInfo.publisher || "", - publishedDate: result.volumeInfo.publishedDate || "", - tags: result.volumeInfo.categories || [], - rating: result.volumeInfo.averageRating || 0, - cover: result.volumeInfo.imageLinks ? - result.volumeInfo.imageLinks.thumbnail : - "/static/generic_cover.jpg", - url: "https://books.google.com/books?id=" + result.id, - source: { - id: "google", - description: "Google Books", - url: "https://books.google.com/" - } - }; + function formatDate (date) { + var d = new Date(date), + month = "" + (d.getMonth() + 1), + day = "" + d.getDate(), + year = d.getFullYear(); - var $book = $(templates.bookResult(book)); - $book.find("img").on("click", function () { - populateForm(book); - }); + if (month.length < 2) { + month = "0" + month; + } + if (day.length < 2) { + day = "0" + day; + } - $("#book-list").append($book); - }); - ggDone = false; + return [year, month, day].join("-"); } - /*if (dbDone && dbResults.length > 0) { - dbResults.forEach(function(result) { - var book = { - id: result.id, - title: result.title, - authors: result.author || [], - description: result.summary, - publisher: result.publisher || "", - publishedDate: result.pubdate || "", - tags: result.tags.map(function(tag) { - return tag.title; - }), - rating: result.rating.average || 0, - cover: result.image, - url: "https://book.douban.com/subject/" + result.id, - source: { - id: "douban", - description: "Douban Books", - url: "https://book.douban.com/" - } - }; - if (book.rating > 0) { - book.rating /= 2; - } + if (ggResults.length > 0) { + if (ggDone < 2) { + ggResults.forEach(function(result) { + var book = { + id: result.id, + title: result.volumeInfo.title, + authors: result.volumeInfo.authors || [], + description: result.volumeInfo.description || "", + publisher: result.volumeInfo.publisher || "", + publishedDate: result.volumeInfo.publishedDate || "", + tags: result.volumeInfo.categories || [], + rating: result.volumeInfo.averageRating || 0, + cover: result.volumeInfo.imageLinks ? + result.volumeInfo.imageLinks.thumbnail : location + "/../../../static/generic_cover.jpg", + url: "https://books.google.com/books?id=" + result.id, + source: { + id: "google", + description: "Google Books", + url: "https://books.google.com/" + } + }; - var $book = $(templates.bookResult(book)); - $book.find("img").on("click", function () { - populateForm(book); + var $book = $(templates.bookResult(book)); + $book.find("img").on("click", function () { + populateForm(book); + }); + + $("#book-list").append($book); }); + ggDone = 2; + } else { + ggDone = 3; + } + } - $("#book-list").append($book); - }); - dbDone = false; - }*/ + if (dbResults.length > 0) { + if (dbDone < 2) { + dbResults.forEach(function(result) { + var seriesTitle = ""; + if (result.series) { + seriesTitle = result.series.title; + } + var dateFomers = result.pubdate.split("-"); + var publishedYear = parseInt(dateFomers[0]); + var publishedMonth = parseInt(dateFomers[1]); + var publishedDate = new Date(publishedYear, publishedMonth - 1, 1); + + publishedDate = formatDate(publishedDate); + + var book = { + id: result.id, + title: result.title, + authors: result.author || [], + description: result.summary, + publisher: result.publisher || "", + publishedDate: publishedDate || "", + tags: result.tags.map(function(tag) { + return tag.title.toLowerCase().replace(/,/g, "_"); + }), + rating: result.rating.average || 0, + series: seriesTitle || "", + cover: result.image, + url: "https://book.douban.com/subject/" + result.id, + source: { + id: "douban", + description: "Douban Books", + url: "https://book.douban.com/" + } + }; + + if (book.rating > 0) { + book.rating /= 2; + } + + var $book = $(templates.bookResult(book)); + $book.find("img").on("click", function () { + populateForm(book); + }); + + $("#book-list").append($book); + }); + dbDone = 2; + } else { + dbDone = 3; + } + } + if (cvResults.length > 0) { + if (cvDone < 2) { + cvResults.forEach(function(result) { + var seriesTitle = ""; + if (result.volume.name) { + seriesTitle = result.volume.name; + } + var dateFomers = ""; + if (result.store_date) { + dateFomers = result.store_date.split("-"); + } else { + dateFomers = result.date_added.split("-"); + } + var publishedYear = parseInt(dateFomers[0]); + var publishedMonth = parseInt(dateFomers[1]); + var publishedDate = new Date(publishedYear, publishedMonth - 1, 1); + + publishedDate = formatDate(publishedDate); + + var book = { + id: result.id, + title: seriesTitle + " #" + ("00" + result.issue_number).slice(-3) + " - " + result.name, + authors: result.author || [], + description: result.description, + publisher: "", + publishedDate: publishedDate || "", + tags: ["Comics", seriesTitle], + rating: 0, + series: seriesTitle || "", + cover: result.image.original_url, + url: result.site_detail_url, + source: { + id: "comicvine", + description: "ComicVine Books", + url: "https://comicvine.gamespot.com/" + } + }; + + var $book = $(templates.bookResult(book)); + $book.find("img").on("click", function () { + populateForm(book); + }); + + $("#book-list").append($book); + }); + cvDone = 2; + } else { + cvDone = 3; + } + } } function ggSearchBook (title) { @@ -137,20 +242,20 @@ $(function () { success: function success(data) { if ("items" in data) { ggResults = data.items; - ggDone = true; } }, complete: function complete() { - ggDone = true; + ggDone = 1; showResult(); $("#show-google").trigger("change"); } }); } - /*function dbSearchBook (title) { + function dbSearchBook (title) { + var apikey = "054022eaeae0b00e0fc068c0c0a2102a"; $.ajax({ - url: douban + dbSearch + "?q=" + title + "&fields=all&count=10", + url: douban + dbSearch + "?apikey=" + apikey + "&q=" + title + "&fields=all&count=10", type: "GET", dataType: "jsonp", jsonp: "callback", @@ -158,22 +263,49 @@ $(function () { dbResults = data.books; }, error: function error() { - $("#meta-info").html("

      " + msg.search_error + "!

      "+ $("#meta-info")[0].innerHTML) + $("#meta-info").html("

      " + msg.search_error + "!

      " + $("#meta-info")[0].innerHTML); }, complete: function complete() { - dbDone = true; + dbDone = 1; showResult(); $("#show-douban").trigger("change"); } }); - }*/ + } + + function cvSearchBook (title) { + var apikey = "57558043c53943d5d1e96a9ad425b0eb85532ee6"; + title = encodeURIComponent(title); + $.ajax({ + url: comicvine + cvSearch + "?api_key=" + apikey + "&resources=issue&query=" + title + "&sort=name:desc&format=jsonp", + type: "GET", + dataType: "jsonp", + jsonp: "json_callback", + success: function success(data) { + cvResults = data.results; + }, + error: function error() { + $("#meta-info").html("

      " + msg.search_error + "!

      " + $("#meta-info")[0].innerHTML); + }, + complete: function complete() { + cvDone = 1; + showResult(); + $("#show-comics").trigger("change"); + } + }); + } function doSearch (keyword) { showFlag = 0; + dbDone = ggDone = cvDone = 0; + dbResults = []; + ggResults = []; + cvResults = []; $("#meta-info").text(msg.loading); if (keyword) { - // dbSearchBook(keyword); + dbSearchBook(keyword); ggSearchBook(keyword); + cvSearchBook(keyword); } } diff --git a/cps/static/js/kthoom.js b/cps/static/js/kthoom.js index 33a2ac0ed..bbb3fead7 100644 --- a/cps/static/js/kthoom.js +++ b/cps/static/js/kthoom.js @@ -162,10 +162,15 @@ function initProgressClick() { function loadFromArrayBuffer(ab) { var start = (new Date).getTime(); var h = new Uint8Array(ab, 0, 10); + unrar5(ab); var pathToBitJS = "../../static/js/archive/"; var lastCompletion = 0; - if (h[0] === 0x52 && h[1] === 0x61 && h[2] === 0x72 && h[3] === 0x21) { //Rar! - unarchiver = new bitjs.archive.Unrarrer(ab, pathToBitJS); + /*if (h[0] === 0x52 && h[1] === 0x61 && h[2] === 0x72 && h[3] === 0x21) { //Rar! + if (h[7] === 0x01) { + unarchiver = new bitjs.archive.Unrarrer(ab, pathToBitJS); + } else { + unarchiver = new bitjs.archive.Unrarrer5(ab, pathToBitJS); + } } else if (h[0] === 80 && h[1] === 75) { //PK (Zip) unarchiver = new bitjs.archive.Unzipper(ab, pathToBitJS); } else if (h[0] === 255 && h[1] === 216) { // JPEG @@ -229,7 +234,7 @@ function loadFromArrayBuffer(ab) { unarchiver.start(); } else { alert("Some error"); - } + }*/ } function scrollTocToActive() { diff --git a/cps/static/js/libs/Sortable.min.js b/cps/static/js/libs/Sortable.min.js index e95d2a301..eba061497 100644 --- a/cps/static/js/libs/Sortable.min.js +++ b/cps/static/js/libs/Sortable.min.js @@ -1,2 +1,2 @@ -/*! Sortable 1.4.2 - MIT | git://github.com/rubaxa/Sortable.git */ -!function(a){"use strict";"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a():"undefined"!=typeof Package?Sortable=a():window.Sortable=a()}(function(){"use strict";function a(a,b){if(!a||!a.nodeType||1!==a.nodeType)throw"Sortable: `el` must be HTMLElement, and not "+{}.toString.call(a);this.el=a,this.options=b=r({},b),a[L]=this;var c={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(a.nodeName)?"li":">*",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",ignore:"a, img",filter:null,animation:0,setData:function(a,b){a.setData("Text",b.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1};for(var d in c)!(d in b)&&(b[d]=c[d]);V(b);for(var f in this)"_"===f.charAt(0)&&(this[f]=this[f].bind(this));this.nativeDraggable=b.forceFallback?!1:P,e(a,"mousedown",this._onTapStart),e(a,"touchstart",this._onTapStart),this.nativeDraggable&&(e(a,"dragover",this),e(a,"dragenter",this)),T.push(this._onDragOver),b.store&&this.sort(b.store.get(this))}function b(a){v&&v.state!==a&&(h(v,"display",a?"none":""),!a&&v.state&&w.insertBefore(v,s),v.state=a)}function c(a,b,c){if(a){c=c||N,b=b.split(".");var d=b.shift().toUpperCase(),e=new RegExp("\\s("+b.join("|")+")(?=\\s)","g");do if(">*"===d&&a.parentNode===c||(""===d||a.nodeName.toUpperCase()==d)&&(!b.length||((" "+a.className+" ").match(e)||[]).length==b.length))return a;while(a!==c&&(a=a.parentNode))}return null}function d(a){a.dataTransfer&&(a.dataTransfer.dropEffect="move"),a.preventDefault()}function e(a,b,c){a.addEventListener(b,c,!1)}function f(a,b,c){a.removeEventListener(b,c,!1)}function g(a,b,c){if(a)if(a.classList)a.classList[c?"add":"remove"](b);else{var d=(" "+a.className+" ").replace(K," ").replace(" "+b+" "," ");a.className=(d+(c?" "+b:"")).replace(K," ")}}function h(a,b,c){var d=a&&a.style;if(d){if(void 0===c)return N.defaultView&&N.defaultView.getComputedStyle?c=N.defaultView.getComputedStyle(a,""):a.currentStyle&&(c=a.currentStyle),void 0===b?c:c[b];b in d||(b="-webkit-"+b),d[b]=c+("string"==typeof c?"":"px")}}function i(a,b,c){if(a){var d=a.getElementsByTagName(b),e=0,f=d.length;if(c)for(;f>e;e++)c(d[e],e);return d}return[]}function j(a,b,c,d,e,f,g){var h=N.createEvent("Event"),i=(a||b[L]).options,j="on"+c.charAt(0).toUpperCase()+c.substr(1);h.initEvent(c,!0,!0),h.to=b,h.from=e||b,h.item=d||b,h.clone=v,h.oldIndex=f,h.newIndex=g,b.dispatchEvent(h),i[j]&&i[j].call(a,h)}function k(a,b,c,d,e,f){var g,h,i=a[L],j=i.options.onMove;return g=N.createEvent("Event"),g.initEvent("move",!0,!0),g.to=b,g.from=a,g.dragged=c,g.draggedRect=d,g.related=e||b,g.relatedRect=f||b.getBoundingClientRect(),a.dispatchEvent(g),j&&(h=j.call(i,g)),h}function l(a){a.draggable=!1}function m(){R=!1}function n(a,b){var c=a.lastElementChild,d=c.getBoundingClientRect();return(b.clientY-(d.top+d.height)>5||b.clientX-(d.right+d.width)>5)&&c}function o(a){for(var b=a.tagName+a.className+a.src+a.href+a.textContent,c=b.length,d=0;c--;)d+=b.charCodeAt(c);return d.toString(36)}function p(a){var b=0;if(!a||!a.parentNode)return-1;for(;a&&(a=a.previousElementSibling);)"TEMPLATE"!==a.nodeName.toUpperCase()&&b++;return b}function q(a,b){var c,d;return function(){void 0===c&&(c=arguments,d=this,setTimeout(function(){1===c.length?a.call(d,c[0]):a.apply(d,c),c=void 0},b))}}function r(a,b){if(a&&b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}var s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J={},K=/\s+/g,L="Sortable"+(new Date).getTime(),M=window,N=M.document,O=M.parseInt,P=!!("draggable"in N.createElement("div")),Q=function(a){return a=N.createElement("x"),a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}(),R=!1,S=Math.abs,T=([].slice,[]),U=q(function(a,b,c){if(c&&b.scroll){var d,e,f,g,h=b.scrollSensitivity,i=b.scrollSpeed,j=a.clientX,k=a.clientY,l=window.innerWidth,m=window.innerHeight;if(z!==c&&(y=b.scroll,z=c,y===!0)){y=c;do if(y.offsetWidth=l-j)-(h>=j),g=(h>=m-k)-(h>=k),(f||g)&&(d=M)),(J.vx!==f||J.vy!==g||J.el!==d)&&(J.el=d,J.vx=f,J.vy=g,clearInterval(J.pid),d&&(J.pid=setInterval(function(){d===M?M.scrollTo(M.pageXOffset+f*i,M.pageYOffset+g*i):(g&&(d.scrollTop+=g*i),f&&(d.scrollLeft+=f*i))},24)))}},30),V=function(a){var b=a.group;b&&"object"==typeof b||(b=a.group={name:b}),["pull","put"].forEach(function(a){a in b||(b[a]=!0)}),a.groups=" "+b.name+(b.put.join?" "+b.put.join(" "):"")+" "};return a.prototype={constructor:a,_onTapStart:function(a){var b=this,d=this.el,e=this.options,f=a.type,g=a.touches&&a.touches[0],h=(g||a).target,i=h,k=e.filter;if(!("mousedown"===f&&0!==a.button||e.disabled)&&(h=c(h,e.draggable,d))){if(D=p(h),"function"==typeof k){if(k.call(this,a,h,this))return j(b,i,"filter",h,d,D),void a.preventDefault()}else if(k&&(k=k.split(",").some(function(a){return a=c(i,a.trim(),d),a?(j(b,a,"filter",h,d,D),!0):void 0})))return void a.preventDefault();(!e.handle||c(i,e.handle,d))&&this._prepareDragStart(a,g,h)}},_prepareDragStart:function(a,b,c){var d,f=this,h=f.el,j=f.options,k=h.ownerDocument;c&&!s&&c.parentNode===h&&(G=a,w=h,s=c,t=s.parentNode,x=s.nextSibling,F=j.group,d=function(){f._disableDelayedDrag(),s.draggable=!0,g(s,f.options.chosenClass,!0),f._triggerDragStart(b)},j.ignore.split(",").forEach(function(a){i(s,a.trim(),l)}),e(k,"mouseup",f._onDrop),e(k,"touchend",f._onDrop),e(k,"touchcancel",f._onDrop),j.delay?(e(k,"mouseup",f._disableDelayedDrag),e(k,"touchend",f._disableDelayedDrag),e(k,"touchcancel",f._disableDelayedDrag),e(k,"mousemove",f._disableDelayedDrag),e(k,"touchmove",f._disableDelayedDrag),f._dragStartTimer=setTimeout(d,j.delay)):d())},_disableDelayedDrag:function(){var a=this.el.ownerDocument;clearTimeout(this._dragStartTimer),f(a,"mouseup",this._disableDelayedDrag),f(a,"touchend",this._disableDelayedDrag),f(a,"touchcancel",this._disableDelayedDrag),f(a,"mousemove",this._disableDelayedDrag),f(a,"touchmove",this._disableDelayedDrag)},_triggerDragStart:function(a){a?(G={target:s,clientX:a.clientX,clientY:a.clientY},this._onDragStart(G,"touch")):this.nativeDraggable?(e(s,"dragend",this),e(w,"dragstart",this._onDragStart)):this._onDragStart(G,!0);try{N.selection?N.selection.empty():window.getSelection().removeAllRanges()}catch(b){}},_dragStarted:function(){w&&s&&(g(s,this.options.ghostClass,!0),a.active=this,j(this,w,"start",s,w,D))},_emulateDragOver:function(){if(H){if(this._lastX===H.clientX&&this._lastY===H.clientY)return;this._lastX=H.clientX,this._lastY=H.clientY,Q||h(u,"display","none");var a=N.elementFromPoint(H.clientX,H.clientY),b=a,c=" "+this.options.group.name,d=T.length;if(b)do{if(b[L]&&b[L].options.groups.indexOf(c)>-1){for(;d--;)T[d]({clientX:H.clientX,clientY:H.clientY,target:a,rootEl:b});break}a=b}while(b=b.parentNode);Q||h(u,"display","")}},_onTouchMove:function(b){if(G){a.active||this._dragStarted(),this._appendGhost();var c=b.touches?b.touches[0]:b,d=c.clientX-G.clientX,e=c.clientY-G.clientY,f=b.touches?"translate3d("+d+"px,"+e+"px,0)":"translate("+d+"px,"+e+"px)";I=!0,H=c,h(u,"webkitTransform",f),h(u,"mozTransform",f),h(u,"msTransform",f),h(u,"transform",f),b.preventDefault()}},_appendGhost:function(){if(!u){var a,b=s.getBoundingClientRect(),c=h(s),d=this.options;u=s.cloneNode(!0),g(u,d.ghostClass,!1),g(u,d.fallbackClass,!0),h(u,"top",b.top-O(c.marginTop,10)),h(u,"left",b.left-O(c.marginLeft,10)),h(u,"width",b.width),h(u,"height",b.height),h(u,"opacity","0.8"),h(u,"position","fixed"),h(u,"zIndex","100000"),h(u,"pointerEvents","none"),d.fallbackOnBody&&N.body.appendChild(u)||w.appendChild(u),a=u.getBoundingClientRect(),h(u,"width",2*b.width-a.width),h(u,"height",2*b.height-a.height)}},_onDragStart:function(a,b){var c=a.dataTransfer,d=this.options;this._offUpEvents(),"clone"==F.pull&&(v=s.cloneNode(!0),h(v,"display","none"),w.insertBefore(v,s)),b?("touch"===b?(e(N,"touchmove",this._onTouchMove),e(N,"touchend",this._onDrop),e(N,"touchcancel",this._onDrop)):(e(N,"mousemove",this._onTouchMove),e(N,"mouseup",this._onDrop)),this._loopId=setInterval(this._emulateDragOver,50)):(c&&(c.effectAllowed="move",d.setData&&d.setData.call(this,c,s)),e(N,"drop",this),setTimeout(this._dragStarted,0))},_onDragOver:function(a){var d,e,f,g=this.el,i=this.options,j=i.group,l=j.put,o=F===j,p=i.sort;if(void 0!==a.preventDefault&&(a.preventDefault(),!i.dragoverBubble&&a.stopPropagation()),I=!0,F&&!i.disabled&&(o?p||(f=!w.contains(s)):F.pull&&l&&(F.name===j.name||l.indexOf&&~l.indexOf(F.name)))&&(void 0===a.rootEl||a.rootEl===this.el)){if(U(a,i,this.el),R)return;if(d=c(a.target,i.draggable,g),e=s.getBoundingClientRect(),f)return b(!0),void(v||x?w.insertBefore(s,v||x):p||w.appendChild(s));if(0===g.children.length||g.children[0]===u||g===a.target&&(d=n(g,a))){if(d){if(d.animated)return;r=d.getBoundingClientRect()}b(o),k(w,g,s,e,d,r)!==!1&&(s.contains(g)||(g.appendChild(s),t=g),this._animate(e,s),d&&this._animate(r,d))}else if(d&&!d.animated&&d!==s&&void 0!==d.parentNode[L]){A!==d&&(A=d,B=h(d),C=h(d.parentNode));var q,r=d.getBoundingClientRect(),y=r.right-r.left,z=r.bottom-r.top,D=/left|right|inline/.test(B.cssFloat+B.display)||"flex"==C.display&&0===C["flex-direction"].indexOf("row"),E=d.offsetWidth>s.offsetWidth,G=d.offsetHeight>s.offsetHeight,H=(D?(a.clientX-r.left)/y:(a.clientY-r.top)/z)>.5,J=d.nextElementSibling,K=k(w,g,s,e,d,r);if(K!==!1){if(R=!0,setTimeout(m,30),b(o),1===K||-1===K)q=1===K;else if(D){var M=s.offsetTop,N=d.offsetTop;q=M===N?d.previousElementSibling===s&&!E||H&&E:N>M}else q=J!==s&&!G||H&&G;s.contains(g)||(q&&!J?g.appendChild(s):d.parentNode.insertBefore(s,q?J:d)),t=s.parentNode,this._animate(e,s),this._animate(r,d)}}}},_animate:function(a,b){var c=this.options.animation;if(c){var d=b.getBoundingClientRect();h(b,"transition","none"),h(b,"transform","translate3d("+(a.left-d.left)+"px,"+(a.top-d.top)+"px,0)"),b.offsetWidth,h(b,"transition","all "+c+"ms"),h(b,"transform","translate3d(0,0,0)"),clearTimeout(b.animated),b.animated=setTimeout(function(){h(b,"transition",""),h(b,"transform",""),b.animated=!1},c)}},_offUpEvents:function(){var a=this.el.ownerDocument;f(N,"touchmove",this._onTouchMove),f(a,"mouseup",this._onDrop),f(a,"touchend",this._onDrop),f(a,"touchcancel",this._onDrop)},_onDrop:function(b){var c=this.el,d=this.options;clearInterval(this._loopId),clearInterval(J.pid),clearTimeout(this._dragStartTimer),f(N,"mousemove",this._onTouchMove),this.nativeDraggable&&(f(N,"drop",this),f(c,"dragstart",this._onDragStart)),this._offUpEvents(),b&&(I&&(b.preventDefault(),!d.dropBubble&&b.stopPropagation()),u&&u.parentNode.removeChild(u),s&&(this.nativeDraggable&&f(s,"dragend",this),l(s),g(s,this.options.ghostClass,!1),g(s,this.options.chosenClass,!1),w!==t?(E=p(s),E>=0&&(j(null,t,"sort",s,w,D,E),j(this,w,"sort",s,w,D,E),j(null,t,"add",s,w,D,E),j(this,w,"remove",s,w,D,E))):(v&&v.parentNode.removeChild(v),s.nextSibling!==x&&(E=p(s),E>=0&&(j(this,w,"update",s,w,D,E),j(this,w,"sort",s,w,D,E)))),a.active&&((null===E||-1===E)&&(E=D),j(this,w,"end",s,w,D,E),this.save())),w=s=t=u=x=v=y=z=G=H=I=E=A=B=F=a.active=null)},handleEvent:function(a){var b=a.type;"dragover"===b||"dragenter"===b?s&&(this._onDragOver(a),d(a)):("drop"===b||"dragend"===b)&&this._onDrop(a)},toArray:function(){for(var a,b=[],d=this.el.children,e=0,f=d.length,g=this.options;f>e;e++)a=d[e],c(a,g.draggable,this.el)&&b.push(a.getAttribute(g.dataIdAttr)||o(a));return b},sort:function(a){var b={},d=this.el;this.toArray().forEach(function(a,e){var f=d.children[e];c(f,this.options.draggable,d)&&(b[a]=f)},this),a.forEach(function(a){b[a]&&(d.removeChild(b[a]),d.appendChild(b[a]))})},save:function(){var a=this.options.store;a&&a.set(this)},closest:function(a,b){return c(a,b||this.options.draggable,this.el)},option:function(a,b){var c=this.options;return void 0===b?c[a]:(c[a]=b,void("group"===a&&V(c)))},destroy:function(){var a=this.el;a[L]=null,f(a,"mousedown",this._onTapStart),f(a,"touchstart",this._onTapStart),this.nativeDraggable&&(f(a,"dragover",this),f(a,"dragenter",this)),Array.prototype.forEach.call(a.querySelectorAll("[draggable]"),function(a){a.removeAttribute("draggable")}),T.splice(T.indexOf(this._onDragOver),1),this._onDrop(),this.el=a=null}},a.utils={on:e,off:f,css:h,find:i,is:function(a,b){return!!c(a,b,a)},extend:r,throttle:q,closest:c,toggleClass:g,index:p},a.create=function(b,c){return new a(b,c)},a.version="1.4.2",a}); \ No newline at end of file +/*! Sortable 1.10.2 - MIT | git://github.com/SortableJS/Sortable.git */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sortable=e()}(this,function(){"use strict";function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(){return(a=Object.assign||function(t){for(var e=1;e"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return!1}return!1}}function P(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&h(t,e):h(t,e))||o&&t===n)return t;if(t===n)break}while(t=(i=t).host&&i!==document&&i.host.nodeType?i.host:i.parentNode)}var i;return null}var f,p=/\s+/g;function k(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var o=(" "+t.className+" ").replace(p," ").replace(" "+e+" "," ");t.className=(o+(n?" "+e:"")).replace(p," ")}}function R(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in o||-1!==e.indexOf("webkit")||(e="-webkit-"+e),o[e]=n+("string"==typeof n?"":"px")}}function v(t,e){var n="";if("string"==typeof t)n=t;else do{var o=R(t,"transform");o&&"none"!==o&&(n=o+" "+n)}while(!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function g(t,e,n){if(t){var o=t.getElementsByTagName(e),i=0,r=o.length;if(n)for(;i=e.left-n&&r<=e.right+n,i=a>=e.top-n&&a<=e.bottom+n;return n&&o&&i?l=t:void 0}}),l}((t=t.touches?t.touches[0]:t).clientX,t.clientY);if(e){var n={};for(var o in t)t.hasOwnProperty(o)&&(n[o]=t[o]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[j]._onDragOver(n)}}}function kt(t){z&&z.parentNode[j]._isOutsideThisEl(t.target)}function Rt(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=a({},e),t[j]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Ot(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Rt.supportPointer&&"PointerEvent"in window,emptyInsertThreshold:5};for(var o in O.initializePlugins(this,t,n),n)o in e||(e[o]=n[o]);for(var i in At(e),this)"_"===i.charAt(0)&&"function"==typeof this[i]&&(this[i]=this[i].bind(this));this.nativeDraggable=!e.forceFallback&&xt,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?u(t,"pointerdown",this._onTapStart):(u(t,"mousedown",this._onTapStart),u(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(u(t,"dragover",this),u(t,"dragenter",this)),bt.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),a(this,T())}function Xt(t,e,n,o,i,r,a,l){var s,c,u=t[j],d=u.options.onMove;return!window.CustomEvent||w||E?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=o,s.related=i||e,s.relatedRect=r||X(e),s.willInsertAfter=l,s.originalEvent=a,t.dispatchEvent(s),d&&(c=d.call(u,s,a)),c}function Yt(t){t.draggable=!1}function Bt(){Dt=!1}function Ft(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,o=0;n--;)o+=e.charCodeAt(n);return o.toString(36)}function Ht(t){return setTimeout(t,0)}function Lt(t){return clearTimeout(t)}Rt.prototype={constructor:Rt,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(ht=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,z):this.options.direction},_onTapStart:function(e){if(e.cancelable){var n=this,o=this.el,t=this.options,i=t.preventOnFilter,r=e.type,a=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(a||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,c=t.filter;if(function(t){St.length=0;var e=t.getElementsByTagName("input"),n=e.length;for(;n--;){var o=e[n];o.checked&&St.push(o)}}(o),!z&&!(/mousedown|pointerdown/.test(r)&&0!==e.button||t.disabled||s.isContentEditable||(l=P(l,t.draggable,o,!1))&&l.animated||Z===l)){if(J=F(l),et=F(l,t.draggable),"function"==typeof c){if(c.call(this,e,l,this))return W({sortable:n,rootEl:s,name:"filter",targetEl:l,toEl:o,fromEl:o}),K("filter",n,{evt:e}),void(i&&e.cancelable&&e.preventDefault())}else if(c&&(c=c.split(",").some(function(t){if(t=P(s,t.trim(),o,!1))return W({sortable:n,rootEl:t,name:"filter",targetEl:l,fromEl:o,toEl:o}),K("filter",n,{evt:e}),!0})))return void(i&&e.cancelable&&e.preventDefault());t.handle&&!P(s,t.handle,o,!1)||this._prepareDragStart(e,a,l)}}},_prepareDragStart:function(t,e,n){var o,i=this,r=i.el,a=i.options,l=r.ownerDocument;if(n&&!z&&n.parentNode===r){var s=X(n);if(q=r,G=(z=n).parentNode,V=z.nextSibling,Z=n,ot=a.group,rt={target:Rt.dragged=z,clientX:(e||t).clientX,clientY:(e||t).clientY},ct=rt.clientX-s.left,ut=rt.clientY-s.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,z.style["will-change"]="all",o=function(){K("delayEnded",i,{evt:t}),Rt.eventCanceled?i._onDrop():(i._disableDelayedDragEvents(),!c&&i.nativeDraggable&&(z.draggable=!0),i._triggerDragStart(t,e),W({sortable:i,name:"choose",originalEvent:t}),k(z,a.chosenClass,!0))},a.ignore.split(",").forEach(function(t){g(z,t.trim(),Yt)}),u(l,"dragover",Pt),u(l,"mousemove",Pt),u(l,"touchmove",Pt),u(l,"mouseup",i._onDrop),u(l,"touchend",i._onDrop),u(l,"touchcancel",i._onDrop),c&&this.nativeDraggable&&(this.options.touchStartThreshold=4,z.draggable=!0),K("delayStart",this,{evt:t}),!a.delay||a.delayOnTouchOnly&&!e||this.nativeDraggable&&(E||w))o();else{if(Rt.eventCanceled)return void this._onDrop();u(l,"mouseup",i._disableDelayedDrag),u(l,"touchend",i._disableDelayedDrag),u(l,"touchcancel",i._disableDelayedDrag),u(l,"mousemove",i._delayedDragTouchMoveHandler),u(l,"touchmove",i._delayedDragTouchMoveHandler),a.supportPointer&&u(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(o,a.delay)}}},_delayedDragTouchMoveHandler:function(t){var e=t.touches?t.touches[0]:t;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){z&&Yt(z),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;d(t,"mouseup",this._disableDelayedDrag),d(t,"touchend",this._disableDelayedDrag),d(t,"touchcancel",this._disableDelayedDrag),d(t,"mousemove",this._delayedDragTouchMoveHandler),d(t,"touchmove",this._delayedDragTouchMoveHandler),d(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?u(document,"pointermove",this._onTouchMove):u(document,e?"touchmove":"mousemove",this._onTouchMove):(u(z,"dragend",this),u(q,"dragstart",this._onDragStart));try{document.selection?Ht(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){if(vt=!1,q&&z){K("dragStarted",this,{evt:e}),this.nativeDraggable&&u(document,"dragover",kt);var n=this.options;t||k(z,n.dragClass,!1),k(z,n.ghostClass,!0),Rt.active=this,t&&this._appendGhost(),W({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(at){this._lastX=at.clientX,this._lastY=at.clientY,Nt();for(var t=document.elementFromPoint(at.clientX,at.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(at.clientX,at.clientY))!==e;)e=t;if(z.parentNode[j]._isOutsideThisEl(t),e)do{if(e[j]){if(e[j]._onDragOver({clientX:at.clientX,clientY:at.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break}t=e}while(e=e.parentNode);It()}},_onTouchMove:function(t){if(rt){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,i=t.touches?t.touches[0]:t,r=U&&v(U,!0),a=U&&r&&r.a,l=U&&r&&r.d,s=Ct&>&&b(gt),c=(i.clientX-rt.clientX+o.x)/(a||1)+(s?s[0]-Et[0]:0)/(a||1),u=(i.clientY-rt.clientY+o.y)/(l||1)+(s?s[1]-Et[1]:0)/(l||1);if(!Rt.active&&!vt){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))o.right+10||t.clientX<=o.right&&t.clientY>o.bottom&&t.clientX>=o.left:t.clientX>o.right&&t.clientY>o.top||t.clientX<=o.right&&t.clientY>o.bottom+10}(n,a,this)&&!g.animated){if(g===z)return A(!1);if(g&&l===n.target&&(s=g),s&&(i=X(s)),!1!==Xt(q,l,z,o,s,i,n,!!s))return O(),l.appendChild(z),G=l,N(),A(!0)}else if(s.parentNode===l){i=X(s);var v,m,b,y=z.parentNode!==l,w=!function(t,e,n){var o=n?t.left:t.top,i=n?t.right:t.bottom,r=n?t.width:t.height,a=n?e.left:e.top,l=n?e.right:e.bottom,s=n?e.width:e.height;return o===a||i===l||o+r/2===a+s/2}(z.animated&&z.toRect||o,s.animated&&s.toRect||i,a),E=a?"top":"left",D=Y(s,"top","top")||Y(z,"top","top"),S=D?D.scrollTop:void 0;if(ht!==s&&(m=i[E],yt=!1,wt=!w&&e.invertSwap||y),0!==(v=function(t,e,n,o,i,r,a,l){var s=o?t.clientY:t.clientX,c=o?n.height:n.width,u=o?n.top:n.left,d=o?n.bottom:n.right,h=!1;if(!a)if(l&&pt]/g)||[]).length<=0)return!0;var d=a(c);return d.length>0}catch(a){return!1}},_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView=this._resolveViewName(e.startView),e.minViewMode=this._resolveViewName(e.minViewMode),e.maxViewMode=this._resolveViewName(e.maxViewMode),e.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,e.startView)),e.multidate!==!0&&(e.multidate=Number(e.multidate)||!1,e.multidate!==!1&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);e.startDate!==-(1/0)&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language,e.assumeNearbyYear):e.startDate=-(1/0)),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language,e.assumeNearbyYear):e.endDate=1/0),e.daysOfWeekDisabled=this._resolveDaysOfWeek(e.daysOfWeekDisabled||[]),e.daysOfWeekHighlighted=this._resolveDaysOfWeek(e.daysOfWeekHighlighted||[]),e.datesDisabled=e.datesDisabled||[],a.isArray(e.datesDisabled)||(e.datesDisabled=e.datesDisabled.split(",")),e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language,e.assumeNearbyYear)});var h=String(e.orientation).toLowerCase().split(/\s+/g),i=e.orientation.toLowerCase();if(h=a.grep(h,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},i&&"auto"!==i)if(1===h.length)switch(h[0]){case"top":case"bottom":e.orientation.y=h[0];break;case"left":case"right":e.orientation.x=h[0]}else i=a.grep(h,function(a){return/^left|right$/.test(a)}),e.orientation.x=i[0]||"auto",i=a.grep(h,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=i[0]||"auto";else;if(e.defaultViewDate instanceof Date||"string"==typeof e.defaultViewDate)e.defaultViewDate=r.parseDate(e.defaultViewDate,g,e.language,e.assumeNearbyYear);else if(e.defaultViewDate){var j=e.defaultViewDate.year||(new Date).getFullYear(),k=e.defaultViewDate.month||0,l=e.defaultViewDate.day||1;e.defaultViewDate=c(j,k,l)}else e.defaultViewDate=d()},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var c,d,e,f=0;ff?(this.picker.addClass("datepicker-orient-right"),n+=m-b):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var p,q=this.o.orientation.y;if("auto"===q&&(p=-g+o-c,q=p<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+q),"top"===q?o-=c+parseInt(this.picker.css("padding-top")):o+=l,this.o.rtl){var r=f-(n+m);this.picker.css({top:o,right:r,zIndex:j})}else this.picker.css({top:o,left:n,zIndex:j});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),d?(this.setValue(),this.element.change()):this.dates.length&&String(b)!==String(this.dates)&&d&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&b.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var b=this.o.weekStart,c="";for(this.o.calendarWeeks&&(c+=' ');b";c+="",this.picker.find(".datepicker-days thead").append(c)}},fillMonths:function(){for(var a,b=this._utc_to_local(this.viewDate),c="",d=0;d<12;d++)a=b&&b.getMonth()===d?" focused":"",c+=''+q[this.o.language].monthsShort[d]+"";this.picker.find(".datepicker-months td").html(c)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],f=this.viewDate.getUTCFullYear(),g=this.viewDate.getUTCMonth(),h=d();return b.getUTCFullYear()f||b.getUTCFullYear()===f&&b.getUTCMonth()>g)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&e(b,h)&&c.push("today"),this.dates.contains(b)!==-1&&c.push("active"),this.dateWithinRange(b)||c.push("disabled"),this.dateIsDisabled(b)&&c.push("disabled","disabled-date"),a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)!==-1&&c.push("highlighted"),this.range&&(b>this.range[0]&&bh)&&j.push("disabled"),t===r&&j.push("focused"),i!==a.noop&&(l=i(new Date(t,0,1)),l===b?l={}:"boolean"==typeof l?l={enabled:l}:"string"==typeof l&&(l={classes:l}),l.enabled===!1&&j.push("disabled"),l.classes&&(j=j.concat(l.classes.split(/\s+/))),l.tooltip&&(k=l.tooltip)),m+='"+t+"";o.find(".datepicker-switch").text(p+"-"+q),o.find("td").html(m)},fill:function(){var d,e,f=new Date(this.viewDate),g=f.getUTCFullYear(),h=f.getUTCMonth(),i=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),j=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),k=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,m=q[this.o.language].today||q.en.today||"",n=q[this.o.language].clear||q.en.clear||"",o=q[this.o.language].titleFormat||q.en.titleFormat;if(!isNaN(g)&&!isNaN(h)){this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(f,o,this.o.language)),this.picker.find("tfoot .today").text(m).css("display",this.o.todayBtn===!0||"linked"===this.o.todayBtn?"table-cell":"none"),this.picker.find("tfoot .clear").text(n).css("display",this.o.clearBtn===!0?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display","string"==typeof this.o.title&&""!==this.o.title?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var p=c(g,h,0),s=p.getUTCDate();p.setUTCDate(s-(p.getUTCDay()-this.o.weekStart+7)%7);var t=new Date(p);p.getUTCFullYear()<100&&t.setUTCFullYear(p.getUTCFullYear()),t.setUTCDate(t.getUTCDate()+42),t=t.valueOf();for(var u,v,w=[];p.valueOf()"),this.o.calendarWeeks)){var x=new Date(+p+(this.o.weekStart-u-7)%7*864e5),y=new Date(Number(x)+(11-x.getUTCDay())%7*864e5),z=new Date(Number(z=c(y.getUTCFullYear(),0,1))+(11-z.getUTCDay())%7*864e5),A=(y-z)/864e5/7+1;w.push(''+A+"")}v=this.getClassNames(p),v.push("day");var B=p.getUTCDate();this.o.beforeShowDay!==a.noop&&(e=this.o.beforeShowDay(this._utc_to_local(p)),e===b?e={}:"boolean"==typeof e?e={enabled:e}:"string"==typeof e&&(e={classes:e}),e.enabled===!1&&v.push("disabled"),e.classes&&(v=v.concat(e.classes.split(/\s+/))),e.tooltip&&(d=e.tooltip),e.content&&(B=e.content)),v=a.isFunction(a.uniqueSort)?a.uniqueSort(v):a.unique(v),w.push(''+B+""),d=null,u===this.o.weekEnd&&w.push(""),p.setUTCDate(p.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(w.join(""));var C=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",D=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?C:g).end().find("tbody span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===g&&D.eq(b.getUTCMonth()).addClass("active")}),(gk)&&D.addClass("disabled"),g===i&&D.slice(0,j).addClass("disabled"),g===k&&D.slice(l+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var E=this;a.each(D,function(c,d){var e=new Date(g,c,1),f=E.o.beforeShowMonth(e);f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),f.enabled!==!1||a(d).hasClass("disabled")||a(d).addClass("disabled"),f.classes&&a(d).addClass(f.classes),f.tooltip&&a(d).prop("title",f.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,g,i,k,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,g,i,k,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,g,i,k,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var a,b,c=new Date(this.viewDate),d=c.getUTCFullYear(),e=c.getUTCMonth(),f=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),g=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),h=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,i=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,j=1;switch(this.viewMode){case 4:j*=10;case 3:j*=10;case 2:j*=10;case 1:a=Math.floor(d/j)*jh;break;case 0:a=d<=f&&e=h&&e>i}this.picker.find(".prev").toggleClass("disabled",a),this.picker.find(".next").toggleClass("disabled",b)}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h;e=a(b.target),e.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),e.hasClass("today")&&!e.hasClass("day")&&(this.setViewMode(0),this._setDate(d(),"linked"===this.o.todayBtn?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("month")||e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),f=1,1===this.viewMode?(h=e.parent().find("span").index(e),g=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(h)):(h=0,g=Number(e.text()),this.viewDate.setUTCFullYear(g)),this._trigger(r.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(c(g,h,f)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(b){var c=a(b.currentTarget),d=c.data("date"),e=new Date(d);this.o.updateViewDate&&(e.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),e.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(e)},navArrowsClick:function(b){var c=a(b.currentTarget),d=c.hasClass("prev")?-1:1;0!==this.viewMode&&(d*=12*r.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,d),this._trigger(r.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),b!==-1?(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):this.o.multidate===!1?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),(!b&&this.o.updateViewDate||"view"===b)&&(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=b===-1?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),c=(c+12)%12;else{for(var j=0;j0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void(40!==a.keyCode&&27!==a.keyCode||(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"),c&&this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"),c&&this._trigger("changeMonth",this.viewDate)):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")):1===this.viewMode?(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveMonth")):2===this.viewMode&&(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveYear")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}d&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(a){this.viewMode=a,this.picker.children("div").hide().filter(".datepicker-"+r.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var l=function(b,c){a.data(b,"datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,this.keepEmptyValues=c.keepEmptyValues,delete c.keepEmptyValues,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a.data(b,"datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},clearDates:function(){a.each(this.pickers,function(a,b){b.clearDates()})},dateUpdated:function(c){if(!this.updating){this.updating=!0;var d=a.data(c.target,"datepicker");if(d!==b){var e=d.getUTCDate(),f=this.keepEmptyValues,g=a.inArray(c.target,this.inputs),h=g-1,i=g+1,j=this.inputs.length;if(g!==-1){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b!==d&&f||b.setUTCDate(e)}),e=0&&ethis.dates[i])for(;ithis.dates[i];)this.pickers[i++].setUTCDate(e);this.updateDates(),delete this.updating}}}},destroy:function(){a.map(this.pickers,function(a){a.destroy()}),a(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:f("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,beforeShowDecade:a.noop,beforeShowCentury:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-(1/0),startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"«",rightArrow:"»"},showWeekDays:!0},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\0").split("\0"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(c,e,f,g){function h(a,b){return b===!0&&(b=10),a<100&&(a+=2e3,a>(new Date).getFullYear()+b&&(a-=100)),a}function i(){var a=this.slice(0,j[n].length),b=j[n].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!c)return b;if(c instanceof Date)return c;if("string"==typeof e&&(e=r.parseFormat(e)),e.toValue)return e.toValue(c,e,f);var j,l,m,n,o,p={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},s={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(c in s&&(c=s[c]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(c)){for(j=c.match(/([\-+]\d+)([dmwy])/gi),c=new Date,n=0;n'+o.templates.leftArrow+''+o.templates.rightArrow+"", -contTemplate:'',footTemplate:''};r.template='
      '+r.headTemplate+""+r.footTemplate+'
      '+r.headTemplate+r.contTemplate+r.footTemplate+'
      '+r.headTemplate+r.contTemplate+r.footTemplate+'
      '+r.headTemplate+r.contTemplate+r.footTemplate+'
      '+r.headTemplate+r.contTemplate+r.footTemplate+"
      ",a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.8.0",a.fn.datepicker.deprecated=function(a){var b=window.console;b&&b.warn&&b.warn("DEPRECATED: "+a)},a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})}); \ No newline at end of file +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a,b){function c(){return new Date(Date.UTC.apply(Date,arguments))}function d(){var a=new Date;return c(a.getFullYear(),a.getMonth(),a.getDate())}function e(a,b){return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate()}function f(c,d){return function(){return d!==b&&a.fn.datepicker.deprecated(d),this[c].apply(this,arguments)}}function g(a){return a&&!isNaN(a.getTime())}function h(b,c){function d(a,b){return b.toLowerCase()}var e,f=a(b).data(),g={},h=new RegExp("^"+c.toLowerCase()+"([A-Z])");c=new RegExp("^"+c.toLowerCase());for(var i in f)c.test(i)&&(e=i.replace(h,d),g[e]=f[i]);return g}function i(b){var c={};if(q[b]||(b=b.split("-")[0],q[b])){var d=q[b];return a.each(p,function(a,b){b in d&&(c[b]=d[b])}),c}}var j=function(){var b={get:function(a){return this.slice(a)[0]},contains:function(a){for(var b=a&&a.valueOf(),c=0,d=this.length;c]/g)||[]).length<=0)return!0;return a(c).length>0}catch(a){return!1}},_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView=this._resolveViewName(e.startView),e.minViewMode=this._resolveViewName(e.minViewMode),e.maxViewMode=this._resolveViewName(e.maxViewMode),e.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,e.startView)),!0!==e.multidate&&(e.multidate=Number(e.multidate)||!1,!1!==e.multidate&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);e.startDate!==-1/0&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language,e.assumeNearbyYear):e.startDate=-1/0),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language,e.assumeNearbyYear):e.endDate=1/0),e.daysOfWeekDisabled=this._resolveDaysOfWeek(e.daysOfWeekDisabled||[]),e.daysOfWeekHighlighted=this._resolveDaysOfWeek(e.daysOfWeekHighlighted||[]),e.datesDisabled=e.datesDisabled||[],a.isArray(e.datesDisabled)||(e.datesDisabled=e.datesDisabled.split(",")),e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language,e.assumeNearbyYear)});var h=String(e.orientation).toLowerCase().split(/\s+/g),i=e.orientation.toLowerCase();if(h=a.grep(h,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},i&&"auto"!==i)if(1===h.length)switch(h[0]){case"top":case"bottom":e.orientation.y=h[0];break;case"left":case"right":e.orientation.x=h[0]}else i=a.grep(h,function(a){return/^left|right$/.test(a)}),e.orientation.x=i[0]||"auto",i=a.grep(h,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=i[0]||"auto";else;if(e.defaultViewDate instanceof Date||"string"==typeof e.defaultViewDate)e.defaultViewDate=r.parseDate(e.defaultViewDate,g,e.language,e.assumeNearbyYear);else if(e.defaultViewDate){var j=e.defaultViewDate.year||(new Date).getFullYear(),k=e.defaultViewDate.month||0,l=e.defaultViewDate.day||1;e.defaultViewDate=c(j,k,l)}else e.defaultViewDate=d()},_applyEvents:function(a){for(var c,d,e,f=0;fe?(this.picker.addClass("datepicker-orient-right"),m+=l-b):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var o,p=this.o.orientation.y;if("auto"===p&&(o=-f+n-c,p=o<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+p),"top"===p?n-=c+parseInt(this.picker.css("padding-top")):n+=k,this.o.rtl){var q=e-(m+l);this.picker.css({top:n,right:q,zIndex:i})}else this.picker.css({top:n,left:m,zIndex:i});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),d?(this.setValue(),this.element.change()):this.dates.length&&String(b)!==String(this.dates)&&d&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&b.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var b=this.o.weekStart,c="";for(this.o.calendarWeeks&&(c+=' ');b";c+="",this.picker.find(".datepicker-days thead").append(c)}},fillMonths:function(){for(var a,b=this._utc_to_local(this.viewDate),c="",d=0;d<12;d++)a=b&&b.getMonth()===d?" focused":"",c+=''+q[this.o.language].monthsShort[d]+"";this.picker.find(".datepicker-months td").html(c)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],f=this.viewDate.getUTCFullYear(),g=this.viewDate.getUTCMonth(),h=d();return b.getUTCFullYear()f||b.getUTCFullYear()===f&&b.getUTCMonth()>g)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&e(b,h)&&c.push("today"),-1!==this.dates.contains(b)&&c.push("active"),this.dateWithinRange(b)||c.push("disabled"),this.dateIsDisabled(b)&&c.push("disabled","disabled-date"),-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)&&c.push("highlighted"),this.range&&(b>this.range[0]&&bh)&&j.push("disabled"),t===r&&j.push("focused"),i!==a.noop&&(l=i(new Date(t,0,1)),l===b?l={}:"boolean"==typeof l?l={enabled:l}:"string"==typeof l&&(l={classes:l}),!1===l.enabled&&j.push("disabled"),l.classes&&(j=j.concat(l.classes.split(/\s+/))),l.tooltip&&(k=l.tooltip)),m+='"+t+"";o.find(".datepicker-switch").text(p+"-"+q),o.find("td").html(m)},fill:function(){var e,f,g=new Date(this.viewDate),h=g.getUTCFullYear(),i=g.getUTCMonth(),j=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,k=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,m=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,n=q[this.o.language].today||q.en.today||"",o=q[this.o.language].clear||q.en.clear||"",p=q[this.o.language].titleFormat||q.en.titleFormat,s=d(),t=(!0===this.o.todayBtn||"linked"===this.o.todayBtn)&&s>=this.o.startDate&&s<=this.o.endDate&&!this.weekOfDateIsDisabled(s);if(!isNaN(h)&&!isNaN(i)){this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(g,p,this.o.language)),this.picker.find("tfoot .today").text(n).css("display",t?"table-cell":"none"),this.picker.find("tfoot .clear").text(o).css("display",!0===this.o.clearBtn?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display","string"==typeof this.o.title&&""!==this.o.title?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var u=c(h,i,0),v=u.getUTCDate();u.setUTCDate(v-(u.getUTCDay()-this.o.weekStart+7)%7);var w=new Date(u);u.getUTCFullYear()<100&&w.setUTCFullYear(u.getUTCFullYear()),w.setUTCDate(w.getUTCDate()+42),w=w.valueOf();for(var x,y,z=[];u.valueOf()"),this.o.calendarWeeks)){var A=new Date(+u+(this.o.weekStart-x-7)%7*864e5),B=new Date(Number(A)+(11-A.getUTCDay())%7*864e5),C=new Date(Number(C=c(B.getUTCFullYear(),0,1))+(11-C.getUTCDay())%7*864e5),D=(B-C)/864e5/7+1;z.push(''+D+"")}y=this.getClassNames(u),y.push("day");var E=u.getUTCDate();this.o.beforeShowDay!==a.noop&&(f=this.o.beforeShowDay(this._utc_to_local(u)),f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),!1===f.enabled&&y.push("disabled"),f.classes&&(y=y.concat(f.classes.split(/\s+/))),f.tooltip&&(e=f.tooltip),f.content&&(E=f.content)),y=a.isFunction(a.uniqueSort)?a.uniqueSort(y):a.unique(y),z.push(''+E+""),e=null,x===this.o.weekEnd&&z.push(""),u.setUTCDate(u.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(z.join(""));var F=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",G=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?F:h).end().find("tbody span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===h&&G.eq(b.getUTCMonth()).addClass("active")}),(hl)&&G.addClass("disabled"),h===j&&G.slice(0,k).addClass("disabled"),h===l&&G.slice(m+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var H=this;a.each(G,function(c,d){var e=new Date(h,c,1),f=H.o.beforeShowMonth(e);f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),!1!==f.enabled||a(d).hasClass("disabled")||a(d).addClass("disabled"),f.classes&&a(d).addClass(f.classes),f.tooltip&&a(d).prop("title",f.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,h,j,l,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,h,j,l,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,h,j,l,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var a,b,c=new Date(this.viewDate),d=c.getUTCFullYear(),e=c.getUTCMonth(),f=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,g=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,h=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,i=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,j=1;switch(this.viewMode){case 4:j*=10;case 3:j*=10;case 2:j*=10;case 1:a=Math.floor(d/j)*j<=f,b=Math.floor(d/j)*j+j>h;break;case 0:a=d<=f&&e<=g,b=d>=h&&e>=i}this.picker.find(".prev").toggleClass("disabled",a),this.picker.find(".next").toggleClass("disabled",b)}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h;e=a(b.target),e.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),e.hasClass("today")&&!e.hasClass("day")&&(this.setViewMode(0),this._setDate(d(),"linked"===this.o.todayBtn?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("month")||e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),f=1,1===this.viewMode?(h=e.parent().find("span").index(e),g=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(h)):(h=0,g=Number(e.text()),this.viewDate.setUTCFullYear(g)),this._trigger(r.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(c(g,h,f)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(b){var c=a(b.currentTarget),d=c.data("date"),e=new Date(d);this.o.updateViewDate&&(e.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),e.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(e)},navArrowsClick:function(b){var c=a(b.currentTarget),d=c.hasClass("prev")?-1:1;0!==this.viewMode&&(d*=12*r.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,d),this._trigger(r.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),-1!==b?(!0===this.o.multidate||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):!1===this.o.multidate?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),(!b&&this.o.updateViewDate||"view"===b)&&(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=-1===b?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),c=(c+12)%12;else{for(var j=0;j0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void(40!==a.keyCode&&27!==a.keyCode||(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"))&&this._trigger("changeYear",this.viewDate):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"))&&this._trigger("changeMonth",this.viewDate):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")):1===this.viewMode?(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveMonth")):2===this.viewMode&&(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveYear")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}d&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(a){this.viewMode=a,this.picker.children("div").hide().filter(".datepicker-"+r.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var l=function(b,c){a.data(b,"datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,this.keepEmptyValues=c.keepEmptyValues,delete c.keepEmptyValues,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a.data(b,"datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},clearDates:function(){a.each(this.pickers,function(a,b){b.clearDates()})},dateUpdated:function(c){if(!this.updating){this.updating=!0;var d=a.data(c.target,"datepicker");if(d!==b){var e=d.getUTCDate(),f=this.keepEmptyValues,g=a.inArray(c.target,this.inputs),h=g-1,i=g+1,j=this.inputs.length;if(-1!==g){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b!==d&&f||b.setUTCDate(e)}),e=0&&ethis.dates[i])for(;ithis.dates[i];)this.pickers[i++].setUTCDate(e);this.updateDates(),delete this.updating}}}},destroy:function(){a.map(this.pickers,function(a){a.destroy()}),a(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:f("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,beforeShowDecade:a.noop,beforeShowCentury:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-1/0,startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"«",rightArrow:"»"},showWeekDays:!0},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\0").split("\0"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(c,e,f,g){function h(a,b){return!0===b&&(b=10),a<100&&(a+=2e3)>(new Date).getFullYear()+b&&(a-=100),a}function i(){var a=this.slice(0,j[n].length),b=j[n].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!c)return b;if(c instanceof Date)return c;if("string"==typeof e&&(e=r.parseFormat(e)),e.toValue)return e.toValue(c,e,f);var j,l,m,n,o,p={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},s={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(c in s&&(c=s[c]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(c)){for(j=c.match(/([\-+]\d+)([dmwy])/gi),c=new Date,n=0;n'+o.templates.leftArrow+''+o.templates.rightArrow+"",contTemplate:'',footTemplate:''};r.template='
      '+r.headTemplate+""+r.footTemplate+'
      '+r.headTemplate+r.contTemplate+r.footTemplate+'
      '+r.headTemplate+r.contTemplate+r.footTemplate+'
      '+r.headTemplate+r.contTemplate+r.footTemplate+'
      '+r.headTemplate+r.contTemplate+r.footTemplate+"
      ",a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.9.0",a.fn.datepicker.deprecated=function(a){var b=window.console;b&&b.warn&&b.warn("DEPRECATED: "+a)},a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})}); \ No newline at end of file diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js new file mode 100644 index 000000000..42dfd1a29 --- /dev/null +++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],daysMin:["Ne","Po","Út","St","Čt","Pá","So"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",monthsTitle:"Měsíc",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js new file mode 100644 index 000000000..046e9eb5e --- /dev/null +++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.el={days:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],daysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],daysMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μάι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],today:"Σήμερα",clear:"Καθαρισμός",weekStart:1,format:"d/m/yyyy"}}(jQuery); \ No newline at end of file diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js new file mode 100644 index 000000000..239dfb796 --- /dev/null +++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],daysShort:["sun","maa","tii","kes","tor","per","lau"],daysMin:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mar","jou"],today:"tänään",clear:"Tyhjennä",weekStart:1,format:"d.m.yyyy"}}(jQuery); \ No newline at end of file diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js new file mode 100644 index 000000000..f9decf9a2 --- /dev/null +++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery); \ No newline at end of file diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js new file mode 100644 index 000000000..648d83f84 --- /dev/null +++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.km={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery); \ No newline at end of file diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js new file mode 100644 index 000000000..7ab6becb9 --- /dev/null +++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sv={days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],daysShort:["sön","mån","tis","ons","tor","fre","lör"],daysMin:["sö","må","ti","on","to","fr","lö"],months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery); \ No newline at end of file diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js new file mode 100644 index 000000000..7889b1135 --- /dev/null +++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js new file mode 100644 index 000000000..41b02e6b2 --- /dev/null +++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Cічень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh_Hans_CN.min.js similarity index 73% rename from cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js rename to cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh_Hans_CN.min.js index 127917640..8e6920b0c 100644 --- a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js +++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh_Hans_CN.min.js @@ -1 +1 @@ -!function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",clear:"清除",format:"yyyy年mm月dd日",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery); \ No newline at end of file +!function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"选择月份",clear:"清除",format:"yyyy-mm-dd",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/cps/static/js/libs/bootstrap-table/bootstrap-table-editable.min.js b/cps/static/js/libs/bootstrap-table/bootstrap-table-editable.min.js index e93e82465..cd4110370 100644 --- a/cps/static/js/libs/bootstrap-table/bootstrap-table-editable.min.js +++ b/cps/static/js/libs/bootstrap-table/bootstrap-table-editable.min.js @@ -1,7 +1,10 @@ -/* -* bootstrap-table - v1.12.1 - 2018-03-12 -* https://github.com/wenzhixin/bootstrap-table -* Copyright (c) 2018 zhixin wen -* Licensed MIT License -*/ -!function(a){"use strict";a.extend(a.fn.bootstrapTable.defaults,{editable:!0,onEditableInit:function(){return!1},onEditableSave:function(){return!1},onEditableShown:function(){return!1},onEditableHidden:function(){return!1}}),a.extend(a.fn.bootstrapTable.Constructor.EVENTS,{"editable-init.bs.table":"onEditableInit","editable-save.bs.table":"onEditableSave","editable-shown.bs.table":"onEditableShown","editable-hidden.bs.table":"onEditableHidden"});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.initTable,d=b.prototype.initBody;b.prototype.initTable=function(){var b=this;c.apply(this,Array.prototype.slice.apply(arguments)),this.options.editable&&a.each(this.columns,function(c,d){if(d.editable){var e={},f=[],g="editable-",h=function(a,b){var c=a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()});if(c.slice(0,g.length)==g){var d=c.replace(g,"data-");e[d]=b}};a.each(b.options,h),d.formatter=d.formatter||function(a){return a},d._formatter=d._formatter?d._formatter:d.formatter,d.formatter=function(c,g,i){var j=d._formatter?d._formatter(c,g,i):c;a.each(d,h),a.each(e,function(a,b){f.push(" "+a+'="'+b+'"')});var k=!1;return d.editable.hasOwnProperty("noeditFormatter")&&(k=d.editable.noeditFormatter(c,g,i)),k===!1?['"].join(""):k}}})},b.prototype.initBody=function(){var b=this;d.apply(this,Array.prototype.slice.apply(arguments)),this.options.editable&&(a.each(this.columns,function(c,d){d.editable&&(b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("save").on("save",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g],i=h[d.field];a(this).data("value",e.submitValue),h[d.field]=e.submitValue,b.trigger("editable-save",d.field,h,i,a(this)),b.resetFooter()}),b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("shown").on("shown",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g];b.trigger("editable-shown",d.field,h,a(this),e)}),b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("hidden").on("hidden",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g];b.trigger("editable-hidden",d.field,h,a(this),e)}))}),this.trigger("editable-init"))}}(jQuery); \ No newline at end of file +/** + * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) + * + * @version v1.16.0 + * @homepage https://bootstrap-table.com + * @author wenzhixin (http://wenzhixin.net.cn/) + * @license MIT + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):e((t=t||self).jQuery)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(t,e){return t(e={exports:{}},e.exports),e.exports}var r=function(t){return t&&t.Math==Math&&t},o=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof e&&e)||Function("return this")(),i=function(t){try{return!!t()}catch(t){return!0}},a=!i((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),c={}.propertyIsEnumerable,u=Object.getOwnPropertyDescriptor,f={f:u&&!c.call({1:2},1)?function(t){var e=u(this,t);return!!e&&e.enumerable}:c},l=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},s={}.toString,d=function(t){return s.call(t).slice(8,-1)},p="".split,h=i((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==d(t)?p.call(t,""):Object(t)}:Object,v=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},y=function(t){return h(v(t))},g=function(t){return"object"==typeof t?null!==t:"function"==typeof t},b=function(t,e){if(!g(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!g(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!g(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!g(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")},m={}.hasOwnProperty,x=function(t,e){return m.call(t,e)},O=o.document,w=g(O)&&g(O.createElement),E=function(t){return w?O.createElement(t):{}},j=!a&&!i((function(){return 7!=Object.defineProperty(E("div"),"a",{get:function(){return 7}}).a})),S=Object.getOwnPropertyDescriptor,T={f:a?S:function(t,e){if(t=y(t),e=b(e,!0),j)try{return S(t,e)}catch(t){}if(x(t,e))return l(!f.f.call(t,e),t[e])}},P=function(t){if(!g(t))throw TypeError(String(t)+" is not an object");return t},A=Object.defineProperty,_={f:a?A:function(t,e,n){if(P(t),e=b(e,!0),P(n),j)try{return A(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},I=a?function(t,e,n){return _.f(t,e,l(1,n))}:function(t,e,n){return t[e]=n,t},R=function(t,e){try{I(o,t,e)}catch(n){o[t]=e}return e},C=o["__core-js_shared__"]||R("__core-js_shared__",{}),k=Function.toString;"function"!=typeof C.inspectSource&&(C.inspectSource=function(t){return k.call(t)});var M,$,F,D=C.inspectSource,N=o.WeakMap,q="function"==typeof N&&/native code/.test(D(N)),B=n((function(t){(t.exports=function(t,e){return C[t]||(C[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.6.0",mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})),L=0,K=Math.random(),V=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++L+K).toString(36)},U=B("keys"),W=function(t){return U[t]||(U[t]=V(t))},z={},Y=o.WeakMap;if(q){var G=new Y,H=G.get,Q=G.has,X=G.set;M=function(t,e){return X.call(G,t,e),e},$=function(t){return H.call(G,t)||{}},F=function(t){return Q.call(G,t)}}else{var Z=W("state");z[Z]=!0,M=function(t,e){return I(t,Z,e),e},$=function(t){return x(t,Z)?t[Z]:{}},F=function(t){return x(t,Z)}}var J,tt,et={set:M,get:$,has:F,enforce:function(t){return F(t)?$(t):M(t,{})},getterFor:function(t){return function(e){var n;if(!g(e)||(n=$(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}},nt=n((function(t){var e=et.get,n=et.enforce,r=String(String).split("String");(t.exports=function(t,e,i,a){var c=!!a&&!!a.unsafe,u=!!a&&!!a.enumerable,f=!!a&&!!a.noTargetGet;"function"==typeof i&&("string"!=typeof e||x(i,"name")||I(i,"name",e),n(i).source=r.join("string"==typeof e?e:"")),t!==o?(c?!f&&t[e]&&(u=!0):delete t[e],u?t[e]=i:I(t,e,i)):u?t[e]=i:R(e,i)})(Function.prototype,"toString",(function(){return"function"==typeof this&&e(this).source||D(this)}))})),rt=o,ot=function(t){return"function"==typeof t?t:void 0},it=function(t,e){return arguments.length<2?ot(rt[t])||ot(o[t]):rt[t]&&rt[t][e]||o[t]&&o[t][e]},at=Math.ceil,ct=Math.floor,ut=function(t){return isNaN(t=+t)?0:(t>0?ct:at)(t)},ft=Math.min,lt=function(t){return t>0?ft(ut(t),9007199254740991):0},st=Math.max,dt=Math.min,pt=function(t){return function(e,n,r){var o,i=y(e),a=lt(i.length),c=function(t,e){var n=ut(t);return n<0?st(n+e,0):dt(n,e)}(r,a);if(t&&n!=n){for(;a>c;)if((o=i[c++])!=o)return!0}else for(;a>c;c++)if((t||c in i)&&i[c]===n)return t||c||0;return!t&&-1}},ht={includes:pt(!0),indexOf:pt(!1)},vt=ht.indexOf,yt=function(t,e){var n,r=y(t),o=0,i=[];for(n in r)!x(z,n)&&x(r,n)&&i.push(n);for(;e.length>o;)x(r,n=e[o++])&&(~vt(i,n)||i.push(n));return i},gt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],bt=gt.concat("length","prototype"),mt={f:Object.getOwnPropertyNames||function(t){return yt(t,bt)}},xt={f:Object.getOwnPropertySymbols},Ot=it("Reflect","ownKeys")||function(t){var e=mt.f(P(t)),n=xt.f;return n?e.concat(n(t)):e},wt=function(t,e){for(var n=Ot(e),r=_.f,o=T.f,i=0;i=74)&&(J=Vt.match(/Chrome\/(\d+)/))&&(tt=J[1]);var Yt,Gt=tt&&+tt,Ht=Bt("species"),Qt=Bt("isConcatSpreadable"),Xt=Gt>=51||!i((function(){var t=[];return t[Qt]=!1,t.concat()[0]!==t})),Zt=(Yt="concat",Gt>=51||!i((function(){var t=[];return(t.constructor={})[Ht]=function(){return{foo:1}},1!==t[Yt](Boolean).foo}))),Jt=function(t){if(!g(t))return!1;var e=t[Qt];return void 0!==e?!!e:Ct(t)};Rt({target:"Array",proto:!0,forced:!Xt||!Zt},{concat:function(t){var e,n,r,o,i,a=kt(this),c=Kt(a,0),u=0;for(e=-1,r=arguments.length;e9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n=9007199254740991)throw TypeError("Maximum allowed index exceeded");Mt(c,u++,i)}return c.length=u,c}});var te,ee=function(t,e,n){if(function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function")}(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}},ne=[].push,re=function(t){var e=1==t,n=2==t,r=3==t,o=4==t,i=6==t,a=5==t||i;return function(c,u,f,l){for(var s,d,p=kt(c),v=h(p),y=ee(u,f,3),g=lt(v.length),b=0,m=l||Kt,x=e?m(c,g):n?m(c,0):void 0;g>b;b++)if((a||b in v)&&(d=y(s=v[b],b,p),t))if(e)x[b]=d;else if(d)switch(t){case 3:return!0;case 5:return s;case 6:return b;case 2:ne.call(x,s)}else if(o)return!1;return i?-1:r||o?o:x}},oe={forEach:re(0),map:re(1),filter:re(2),some:re(3),every:re(4),find:re(5),findIndex:re(6)},ie=Object.keys||function(t){return yt(t,gt)},ae=a?Object.defineProperties:function(t,e){P(t);for(var n,r=ie(e),o=r.length,i=0;o>i;)_.f(t,n=r[i++],e[n]);return t},ce=it("document","documentElement"),ue=W("IE_PROTO"),fe=function(){},le=function(t){return" @@ -288,6 +305,7 @@ {% endblock %} {% block header %} + {% endblock %} diff --git a/cps/templates/book_table.html b/cps/templates/book_table.html new file mode 100644 index 000000000..067ff5e06 --- /dev/null +++ b/cps/templates/book_table.html @@ -0,0 +1,99 @@ +{% extends "layout.html" %} +{% macro text_table_row(parameter, edit_text, show_text, validate) -%} +{{ show_text }} +{%- endmacro %} + +{% block header %} + + +{% endblock %} +{% block body %} +

      {{_(title)}}

      +
      +
      +
      {{_('Merge selected books')}}
      +
      {{_('Remove Selections')}}
      +
      +
      +
      +
      + + +
      +
      + + +
      +
      + + + + + {% if g.user.role_edit() %} + + {% endif %} + + {{ text_table_row('title', _('Enter Title'),_('Title'), true) }} + {{ text_table_row('sort', _('Enter Title Sort'),_('Title Sort'), false) }} + {{ text_table_row('author_sort', _('Enter Author Sort'),_('Author Sort'), false) }} + {{ text_table_row('authors', _('Enter Authors'),_('Authors'), true) }} + {{ text_table_row('tags', _('Enter Categories'),_('Categories'), false) }} + {{ text_table_row('series', _('Enter Series'),_('Series'), false) }} + + {{ text_table_row('languages', _('Enter Languages'),_('Languages'), false) }} + + {{ text_table_row('publishers', _('Enter Publishers'),_('Publishers'), false) }} + {% if g.user.role_edit() %} + + {% endif %} + + +
      {{_('Series Index')}}{{_('Delete')}}
      +{% endblock %} +{% block modal %} +{{ delete_book(0) }} +{% if g.user.role_edit() %} + +{% endif %} + +{% endblock %} +{% block js %} + + + + + +{% endblock %} diff --git a/cps/templates/config_edit.html b/cps/templates/config_edit.html index 85b9598e6..4c522132b 100644 --- a/cps/templates/config_edit.html +++ b/cps/templates/config_edit.html @@ -3,7 +3,7 @@

      {{title}}

      -
      +

      @@ -15,10 +15,13 @@

      -
      - - -
      + +
      + + + + +
      {% if feature_support['gdrive'] %}
      @@ -27,20 +30,20 @@
      {% if gdriveError %}
      -
      {% else %} {% if show_authenticate_google_drive and g.user.is_authenticated and config.config_use_google_drive %} {% else %} {% if show_authenticate_google_drive and g.user.is_authenticated and not config.config_use_google_drive %} -
      {{_('Please hit submit to continue with setup')}}
      +
      {{_('Please hit save to continue with setup')}}
      {% endif %} - {% if not g.user.is_authenticated %} + {% if not g.user.is_authenticated and show_login_button %}
      {{_('Please finish Google Drive setup after login')}}
      {% endif %} {% if g.user.is_authenticated %} @@ -57,10 +60,10 @@ {% else %} - Enable watch of metadata.db + Enable watch of metadata.db {% endif %} {% endif %} {% endif %} @@ -71,7 +74,7 @@
      - + {% if show_back_button %}

      @@ -87,21 +90,25 @@

      -
      - - + +
      + + + + +
      + +
      + + + +
      - - -
      -
      - +
      @@ -154,26 +161,54 @@
      - - + + +
      +
      +
      + + +
      - +
      - - + + +
      +
      +
      + + +
      - +
      + {% if feature_support['kobo'] %} +
      + + +
      +
      +
      + + +
      +
      + + +
      +
      + {% endif %} {% if feature_support['goodreads'] %}
      @@ -186,11 +221,22 @@
      {% endif %} +
      + + +
      +
      +
      + + +
      +
      + {% if not config.config_is_initial %} {% if feature_support['ldap'] or feature_support['oauth'] %}
      - {% if feature_support['ldap'] %} -
      + {% if feature_support['ldap'] %} +
      - +
      - - -
      -
      - - -
      -
      - - -
      -
      - - -
      -
      - - -
      -
      - - + +
      + +
      + + + + +
      + +
      + + + + +
      + +
      + + + + +
      +
      +
      + + +
      +
      - - + + +
      +
      +
      +
      + +
      @@ -244,13 +311,40 @@
      - +
      +

      {{_('Following Settings are Needed For User Import')}}

      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      +
      + + +
      +
      +
      {% endif %} {% if feature_support['oauth'] %} @@ -270,6 +364,7 @@ {% endfor %}
      {% endif %} + {% endif %} {% endif %}
      @@ -285,40 +380,46 @@
      -
      -
      -
      -
      -
      -
      -
      + +
      + + + + +
      +
      + + +
      + +
      + + + +
      -
      -
      - - -
      -
      - - -
      + {% if feature_support['rar'] %} + +
      + + + +
      - {% if rarfile_support %} -
      - - -
      - {% endif %} + {% endif %}
      + {% endif %}
      - + {% if not show_login_button %} + + {% endif %} {% if show_back_button %} - {{_('Back')}} + {{_('Cancel')}} {% endif %} {% if show_login_button %} {{_('Login')}} diff --git a/cps/templates/config_view_edit.html b/cps/templates/config_view_edit.html index bc6defa40..d87e9f81f 100644 --- a/cps/templates/config_view_edit.html +++ b/cps/templates/config_view_edit.html @@ -1,8 +1,12 @@ {% extends "layout.html" %} +{% block header %} + + +{% endblock %} {% block body %}

      {{title}}

      - +
      @@ -20,15 +24,15 @@
      - +
      - +
      - +
      @@ -39,11 +43,11 @@
      - +
      - +
      - - + +
      - - + + +
      @@ -70,7 +77,7 @@

      - {{_('Default settings for new users')}} + {{_('Default Settings for New Users')}}

      @@ -78,7 +85,7 @@
      - +
      @@ -86,7 +93,7 @@
      - +
      @@ -98,7 +105,7 @@
      - +
      @@ -106,7 +113,7 @@
      - +
      @@ -116,7 +123,7 @@

      - {{_('Default visibilities for new users')}} + {{_('Default Visibilities for New Users')}}

      @@ -132,23 +139,23 @@ {% endfor %}
      - -
      -
      - - +
      + {{_('Add Allowed/Denied Tags')}} + {{_('Add Allowed/Denied custom column values')}}
      -
      - - {{_('Back')}} + + {{_('Cancel')}}
      {% endblock %} +{% block modal %} +{{ restrict_modal() }} +{% endblock %} {% block js %} + + + + {% endblock %} diff --git a/cps/templates/detail.html b/cps/templates/detail.html index b76a8afac..503d1dbd4 100644 --- a/cps/templates/detail.html +++ b/cps/templates/detail.html @@ -4,13 +4,13 @@
      - {{ entry.title }} + {{ entry.title }}