├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── .stylelintrc.js ├── CHANGELOG.rst ├── LICENSE ├── README.rst ├── books.css ├── comicdetails └── 1 │ └── index.html ├── comics.css ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon-96x96.png ├── gulpfile.js ├── homepage.css ├── package.json ├── page_category.html ├── page_index.html ├── page_list.html ├── page_list2.html ├── page_login.html ├── samples ├── detailview.png ├── landing.png ├── listview.png └── overview.png ├── scripts └── tools.js ├── server.js ├── src ├── js │ ├── .babelrc │ ├── components │ │ ├── navigation.js │ │ └── search.js │ ├── themeScript.js │ └── webpack.config.js ├── sass │ ├── books.scss │ ├── comics.scss │ ├── components │ │ ├── _cellcontainer.scss │ │ ├── _common.scss │ │ ├── _dialog.scss │ │ ├── _group.scss │ │ ├── _login.scss │ │ └── _plex.scss │ └── homepage.scss └── tasks │ ├── lint.js │ ├── sass.js │ └── webpack.js ├── static ├── glyphicons.woff ├── open-sans-bold.woff ├── open-sans-semibold.woff ├── open-sans.woff ├── plexicons.woff └── preset-light.png └── themeScript.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | indent_style = space 7 | indent_size = 4 8 | end_of_line = lf 9 | charset = utf-8 10 | trim_trailing_whitespace = true 11 | insert_final_newline = true 12 | max_line_length = 80 13 | 14 | [*.py] 15 | max_line_length = 120 16 | quote_type = single 17 | 18 | [*.{scss,js,html}] 19 | max_line_length = 120 20 | indent_style = space 21 | quote_type = double 22 | 23 | [*.js] 24 | max_line_length = 120 25 | quote_type = single 26 | 27 | [*.rst] 28 | max_line_length = 80 29 | 30 | [*.yml] 31 | indent_size = 2 32 | 33 | [*plugins/code.html] 34 | insert_final_newline = false 35 | 36 | [*plugins/responsive.html] 37 | insert_final_newline = false 38 | 39 | [*plugins/image.html] 40 | insert_final_newline = false 41 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | // documentation about rules can be found on http://eslint.org/docs/user-guide/configuring 5 | // based on http://eslint.org/docs/user-guide/configuring 6 | 'extends': 'eslint:recommended', 7 | // http://eslint.org/docs/user-guide/configuring.html#specifying-environments 8 | 'env': { 9 | 'browser': true, 10 | 'node': true, 11 | 'es6': true, 12 | }, 13 | 'parser': 'babel-eslint', 14 | 'parserOptions': { 15 | 'sourceType': 'module', 16 | }, 17 | 'rules': { 18 | // 0 = ignore, 1 = warning, 2 = error 19 | 'indent': [2, 4], 20 | 'quotes': [1, 'single'], 21 | 'comma-dangle': [1, 'always-multiline'], 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea/ 3 | /~ 4 | /node_modules 5 | .sass-cache 6 | npm-debug.log 7 | package-lock.json 8 | *.css.map 9 | -------------------------------------------------------------------------------- /.stylelintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | // documentation about rules can be found on https://stylelint.io/user-guide/rules/ 3 | // based on https://github.com/stylelint/stylelint-config-standard/blob/master/index.js 4 | // configurator avaialble https://maximgatilin.github.io/stylelint-config/ 5 | 'rules': { 6 | 'at-rule-empty-line-before': [ 'always', { 7 | except: [ 8 | 'blockless-after-same-name-blockless', 9 | 'first-nested', 10 | ], 11 | ignore: ['after-comment', 'inside-block'], 12 | } ], 13 | 'at-rule-name-case': 'lower', 14 | 'at-rule-name-space-after': 'always-single-line', 15 | 'at-rule-semicolon-newline-after': 'always', 16 | 'block-closing-brace-empty-line-before': 'never', 17 | 'block-closing-brace-newline-after': 'always', 18 | 'block-closing-brace-newline-before': 'always-multi-line', 19 | 'block-closing-brace-space-before': 'always-single-line', 20 | 'block-no-empty': true, 21 | 'block-opening-brace-newline-after': 'always-multi-line', 22 | 'block-opening-brace-space-after': 'always-single-line', 23 | 'block-opening-brace-space-before': 'always', 24 | 'color-hex-case': 'lower', 25 | 'color-hex-length': 'short', 26 | 'color-no-invalid-hex': true, 27 | // 'comment-empty-line-before': ['never'], 28 | 'comment-no-empty': true, 29 | 'comment-whitespace-inside': 'always', 30 | 'custom-property-empty-line-before': [ 'always', { 31 | except: [ 32 | 'after-custom-property', 33 | 'first-nested', 34 | ], 35 | ignore: [ 36 | 'after-comment', 37 | 'inside-single-line-block', 38 | ], 39 | } ], 40 | 'declaration-bang-space-after': 'never', 41 | 'declaration-bang-space-before': 'always', 42 | 'declaration-block-no-duplicate-properties': [ true, { 43 | ignore: ['consecutive-duplicates-with-different-values'], 44 | } ], 45 | 'declaration-block-no-redundant-longhand-properties': true, 46 | 'declaration-block-no-shorthand-property-overrides': true, 47 | 'declaration-block-semicolon-newline-after': 'always-multi-line', 48 | 'declaration-block-semicolon-space-after': 'always-single-line', 49 | 'declaration-block-semicolon-space-before': 'never', 50 | 'declaration-block-single-line-max-declarations': 1, 51 | 'declaration-block-trailing-semicolon': 'always', 52 | 'declaration-colon-newline-after': 'always-multi-line', 53 | 'declaration-colon-space-after': 'always-single-line', 54 | 'declaration-colon-space-before': 'never', 55 | 'declaration-empty-line-before': [ 'always', { 56 | except: [ 57 | 'after-declaration', 58 | 'first-nested', 59 | ], 60 | ignore: [ 61 | 'after-comment', 62 | 'inside-single-line-block', 63 | ], 64 | } ], 65 | 'font-family-no-duplicate-names': true, 66 | 'function-calc-no-unspaced-operator': true, 67 | 'function-comma-newline-after': 'always-multi-line', 68 | 'function-comma-space-after': 'always-single-line', 69 | 'function-comma-space-before': 'never', 70 | 'function-linear-gradient-no-nonstandard-direction': true, 71 | 'function-max-empty-lines': 0, 72 | 'function-name-case': 'lower', 73 | 'function-parentheses-newline-inside': 'always-multi-line', 74 | 'function-parentheses-space-inside': 'never-single-line', 75 | 'function-whitespace-after': 'always', 76 | 'indentation': 4, 77 | 'keyframe-declaration-no-important': true, 78 | 'length-zero-no-unit': true, 79 | 'max-empty-lines': 1, 80 | 'media-feature-colon-space-after': 'always', 81 | 'media-feature-colon-space-before': 'never', 82 | 'media-feature-name-case': 'lower', 83 | 'media-feature-name-no-unknown': true, 84 | 'media-feature-parentheses-space-inside': 'never', 85 | 'media-feature-range-operator-space-after': 'always', 86 | 'media-feature-range-operator-space-before': 'always', 87 | 'media-query-list-comma-newline-after': 'always-multi-line', 88 | 'media-query-list-comma-space-after': 'always-single-line', 89 | 'media-query-list-comma-space-before': 'never', 90 | 'no-empty-source': true, 91 | 'no-eol-whitespace': true, 92 | 'no-extra-semicolons': true, 93 | 'no-invalid-double-slash-comments': true, 94 | 'no-missing-end-of-source-newline': true, 95 | 'number-leading-zero': 'always', 96 | 'number-no-trailing-zeros': true, 97 | 'property-case': 'lower', 98 | 'property-no-unknown': true, 99 | 'rule-empty-line-before': [ 'always-multi-line', { 100 | except: ['first-nested'], 101 | ignore: ['after-comment'], 102 | } ], 103 | 'selector-attribute-brackets-space-inside': 'never', 104 | 'selector-attribute-operator-space-after': 'never', 105 | 'selector-attribute-operator-space-before': 'never', 106 | 'selector-combinator-space-after': 'always', 107 | 'selector-combinator-space-before': 'always', 108 | 'selector-descendant-combinator-no-non-space': true, 109 | 'selector-list-comma-newline-after': 'always', 110 | 'selector-list-comma-space-before': 'never', 111 | 'selector-max-empty-lines': 0, 112 | 'selector-pseudo-class-case': 'lower', 113 | 'selector-pseudo-class-no-unknown': true, 114 | 'selector-pseudo-class-parentheses-space-inside': 'never', 115 | 'selector-pseudo-element-case': 'lower', 116 | 'selector-pseudo-element-colon-notation': 'single', 117 | 'selector-pseudo-element-no-unknown': true, 118 | // 'selector-no-type': true, 119 | 'selector-no-vendor-prefix': true, 120 | // 'selector-no-universal': true, 121 | 'selector-type-case': 'lower', 122 | 'selector-type-no-unknown': true, 123 | 'shorthand-property-no-redundant-values': true, 124 | 'string-no-newline': true, 125 | 'unit-case': 'lower', 126 | 'unit-no-unknown': true, 127 | 'value-list-comma-newline-after': 'always-multi-line', 128 | 'value-list-comma-space-after': 'always-single-line', 129 | 'value-list-comma-space-before': 'never', 130 | 'value-list-max-empty-lines': 0, 131 | }, 132 | }; 133 | -------------------------------------------------------------------------------- /CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ######### 2 | CHANGELOG 3 | ######### 4 | 5 | 6 | CHANGELOG 7 | ######### 8 | 9 | 0.1.1 10 | ##### 11 | 12 | * Fixed an issue where reverse proxy prefix was not honoured 13 | * Added default colour for raw files 14 | * Fixed an issue with search not displaying the correct results 15 | 16 | 0.1.0 17 | ##### 18 | 19 | * Added nice favicon 20 | * Fixed background not covering full height on long list 21 | * Fixed modal displaying on top on long lists 22 | * Fixed covers displaying 1px shite stripes 23 | * Fixed back button by using history.back() 24 | 25 | 0.0.1 26 | ##### 27 | 28 | * Initial announcement on https://ubooquity.userecho.com/communities/1/topics/666-plex-based-theme 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 FinalAngel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | ########################## 2 | Ubooquity Plex Based Theme 3 | ########################## 4 | 5 | Plex based theme for Ubooquity: 6 | https://vaemendis.github.io/ubooquity-doc/pages/themes.html 7 | 8 | .. image:: samples/landing.png#1 9 | .. image:: samples/overview.png#1 10 | .. image:: samples/listview.png#1 11 | .. image:: samples/detailview.png#1 12 | 13 | 14 | Installation 15 | ############ 16 | 17 | For the best result set the thumbnail size to the maximum in the settings. 18 | 19 | Either download or git clone the theme into your Ubooquity themes folder. 20 | 21 | 22 | Development 23 | ########### 24 | 25 | * Install packages via ``npm install`` 26 | * Run server via ``node server.js`` 27 | * Compile assets via ``gulp watch`` 28 | * Open ``http://localhost:8001/page_index.html`` 29 | -------------------------------------------------------------------------------- /books.css: -------------------------------------------------------------------------------- 1 | /* 2 | This file is generated. 3 | Do not edit directly. 4 | Edit original files in 5 | /private/sass instead 6 | */ 7 | 8 | hr,img{border:0}body,figure{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:dotted thin}a:active,a:hover{outline:0}h1{margin:.67em 0}b,strong{font-weight:700}dfn{font-style:italic}address,cite{font-style:normal}hr{box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{blockquote,img,pre,tr{page-break-inside:avoid}*{text-shadow:none!important;color:#000!important;background:0 0!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}@page{margin:2cm .5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.img-thumbnail,body{background-color:transparent}*,:after,:before{box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:transparent}body{font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.71428571;color:#eee}button,input,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#cc7b19;text-decoration:none}a:focus,a:hover{text-decoration:underline}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:3px}.img-thumbnail{padding:4px;line-height:1.71428571;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:24px;margin-bottom:24px;border-top:1px solid #323232}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 12px}.lead{margin-bottom:24px;font-size:16.1px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small{font-size:85%}.text-muted{color:#999}.text-primary{color:#cc7b19}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:#999}h1,h2,h3{margin-top:24px}h1,h2,h3,h4,h5,h6{margin-bottom:12px}h4,h5,h6{margin-top:12px}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.page-header{padding-bottom:11px;margin:48px 0 24px;border-bottom:1px solid #323232}blockquote p:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:24px}ol,ul{margin-top:0;margin-bottom:12px}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dd,dt{line-height:1.71428571}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}.dl-horizontal dd:after{clear:both}}address,blockquote small{display:block;line-height:1.71428571}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:12px 24px;margin:0 0 24px;border-left:5px solid #bbb}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{color:#999}blockquote small:before{content:"\2014 \A0"}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #bbb;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:""}blockquote.pull-right small:after{content:"\A0 \2014"}blockquote:after,blockquote:before,q:after,q:before{content:""}@font-face{font-family:Open Sans Regular;font-weight:400;font-style:normal;src:url(./static/open-sans.woff) format("woff")}@font-face{font-family:Open Sans Bold;font-weight:400;font-style:normal;src:url(./static/open-sans-bold.woff) format("woff")}@font-face{font-family:Open Sans Semibold;font-style:normal;font-weight:400;src:url(./static/open-sans-semibold.woff) format("woff")}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:after,.nav:before{content:" ";display:table}.nav:after{clear:both}.nav>li,.nav>li>a{position:relative;display:block}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:rgba(255,255,255,.05)}.nav-bar-nav{float:left}.nav-bar-nav>li{float:left}.nav-bar-nav>li>a{padding-top:0;padding-bottom:0;line-height:60px;color:#999}.nav-bar-right{float:right!important}.QuickSearch-container-2PWkB{font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:relative;float:left;margin-left:15px;width:360px;height:100%}@media only screen and (max-width:768px){.QuickSearch-container-2PWkB{display:none}}.QuickSearchInput-container-R2-wn{font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-flow:row nowrap;flex-flow:row nowrap;margin:14px 0;padding:4px;height:30px;border-radius:4px;background:rgba(255,255,255,.25);color:#eee;transition:background-color .2s,color .2s}.QuickSearchInput-searchInput-2HU6-{-ms-flex-positive:1;flex-grow:1;height:100%;outline:0;border:none;background:0 0;color:#eee}.QuickSearchInput-searchInput-2HU6-::-ms-clear{display:none}.QuickSearchInput-focused-2kpW8{background:#eee}.QuickSearchInput-focused-2kpW8 .QuickSearchInput-closeIcon-3AV1c,.QuickSearchInput-focused-2kpW8 .QuickSearchInput-searchIcon-1f6m9{color:#555}.QuickSearchInput-focused-2kpW8 .QuickSearchInput-searchInput-2HU6-{color:#555}@font-face{font-family:"Glyphicons Regular";src:url(./static/glyphicons.woff) format("woff");font-weight:400;font-style:normal}.glyphicon{position:relative;top:1px;display:inline-block;font-family:Glyphicons Regular;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon.home:before{content:"\E021"}.glyphicon.chevron-left:before{content:"\E225"}.glyphicon.settings:before{content:"\E281"}.glyphicon.random:before{content:"\E084"}.glyphicon.log-out:before{content:"\E388"}@font-face{font-family:plex-icons;src:url(./static/plexicons.woff) format("woff")}[class*=" plex-icon-"],[class^=plex-icon-]{position:relative;top:-2px;display:inline-block;vertical-align:middle;text-decoration:inherit;text-transform:none;font-weight:400;font-style:normal;font-family:plex-icons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1;text-rendering:optimizeLegibility;speak:none}.plex-icon-search-560:before{content:"\EA51"}body,html{height:100%}body{background:#3f4245 url(./static/preset-light.png);background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed}#banner,.navigation{width:100%;height:60px;padding:0 10px 0 3px;background:rgba(0,0,0,.7)}#banner .glyphicon,.navigation .glyphicon{top:7px;font-size:24px}#banner .back-btn,#banner .home-btn,.navigation .back-btn,.navigation .home-btn{padding:0 15px}#banner .back-btn,.navigation .back-btn{padding-right:8px}#banner a:active,#banner a:focus,#banner a:hover,.navigation a:active,.navigation a:focus,.navigation a:hover{color:#eee;outline:0;background:0 0!important}#banner .QuickSearchInput-searchIcon-1f6m9,.navigation .QuickSearchInput-searchIcon-1f6m9{left:5px;top:0;font-size:12px}#banner .QuickSearchInput-searchInput-2HU6-,.navigation .QuickSearchInput-searchInput-2HU6-{padding-left:16px}#poweredby,#searchbox,#userinfo{display:none}#settingsbox{display:none;position:absolute;top:64px;right:5px;z-index:1090;color:#bbb;padding:10px 15px;border-radius:3px;border:1px solid rgba(0,0,0,.15);box-shadow:0 6px 12px rgba(0,0,0,.175);background-color:#191a1c;background-clip:padding-box}#settingsbox .popuptitle{font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;width:200px;color:#777;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#settingsbox .sectiontitle{color:#fff}#settingsbox label{padding-right:15px}#settingsbox input{margin-right:5px}#pageselector{display:none;padding:10px 30px}#pageselector .popuptitle{color:#ccc}#comicdetails{position:absolute}.pagination{text-align:center;padding-top:25px;margin:25px 0;border-top:1px solid rgba(0,0,0,.1)}.pagination a{margin:0 10px}.pagination a:active,.pagination a:focus,.pagination a:hover{text-decoration:none;outline:0}.actionbutton,.btn-link{font-family:Open Sans Bold;color:#fff;font-size:14px;line-height:1.33;text-transform:uppercase;border-radius:3px;padding:5px 10px;border:0;background-color:#cc7b19}.actionbutton:hover,.btn-link:hover{background-color:#9f6013}.btn-dark{background:rgba(255,255,255,.25)}.btn-dark:hover{background-color:rgba(0,0,0,.25)}#group{clear:both;overflow:hidden;padding:15px}#group>a{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;float:left;width:130px;height:130px;margin:15px;padding:5px;transition:all .2s;color:#000;font-family:"Open Sans Semibold";font-size:18px;text-align:center;text-transform:uppercase;line-height:1.4;box-shadow:0 0 2px rgba(0,0,0,.35);background-color:rgba(0,0,0,.45)}#group>a:active,#group>a:focus,#group>a:hover{color:#fff;text-decoration:none;box-shadow:0 0 0 2px #cc7b19;background-color:rgba(0,0,0,.8)!important}#group #comics{background-color:#cc7b19}#group #books{background-color:#00bfbf}#group #files{background-color:#fcce36}#group #latest-books,#group #latest-comics,#group .rootlink{color:#fff;border-color:#fff}#group br{display:none}.cellcontainer{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;float:left;width:150px;margin:15px;color:#000;font-family:"Open Sans Regular";font-size:18px;line-height:1.4}.cellcontainer *{transition:all .2s;transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.cellcontainer:hover .thumb{color:#fff;text-decoration:none;box-shadow:0 0 0 2px #cc7b19;background-color:rgba(0,0,0,.8)!important}.cellcontainer:hover .thumb img{opacity:.8}.cellcontainer:hover .numberblock{opacity:0}.cellcontainer .thumb{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;width:150px;height:230px;text-align:center;box-shadow:0 0 2px rgba(0,0,0,.35);background-color:rgba(0,0,0,.45)}.cellcontainer .thumb a{height:230px;display:block;background:#000}.cellcontainer .thumb img{top:-1px;position:relative;height:calc(100% + 2px)}.cellcontainer .label{display:block;overflow:hidden;color:#fff;line-height:20px;font-size:13px;text-overflow:ellipsis;white-space:nowrap;max-width:150px;height:30px;padding-top:10px}.cellcontainer .numberblock{position:absolute;right:0;top:0;opacity:1;font-size:13px;color:#eee;line-height:24px;padding:0 8px;background-color:#cc7b19;box-shadow:0 0 4px rgba(0,0,0,.6)}#bookdetails,#comicdetails{display:none;position:absolute;left:0;top:0}#bookdetails #details,#comicdetails #details{position:fixed;clear:both;overflow:hidden;width:750px;margin-left:-375px;margin-top:70px;left:50vw;top:0;padding:0;z-index:1080;box-shadow:0 5px 15px rgba(0,0,0,.5);background-color:#282828;border-radius:3px;background-clip:padding-box;outline:0}#bookdetails #details_cover,#comicdetails #details_cover{float:left;padding-right:25px}#bookdetails #details_cover img,#comicdetails #details_cover img{width:300px}@media only screen and (max-width:768px){#bookdetails #details_cover img,#comicdetails #details_cover img{display:none}}#bookdetails #details_title,#comicdetails #details_title{color:#eee;font-size:20px;line-height:1.4;text-transform:uppercase;padding:19px 20px;margin:0 0 20px;background:#323232}#bookdetails #details_description,#bookdetails #details_language_pubdate,#bookdetails #details_size,#comicdetails #details_description,#comicdetails #details_language_pubdate,#comicdetails #details_size{color:#999;padding:5px 20px}#bookdetails #details_description,#comicdetails #details_description{padding-bottom:15px}#bookdetails #details_download:before,#comicdetails #details_download:before{content:"Download"}#bookdetails #details_read:before,#comicdetails #details_read:before{content:"Read Now"}#bookdetails #details_download,#bookdetails #details_read,#comicdetails #details_download,#comicdetails #details_read{display:inline-block;font-family:Open Sans Bold;color:#fff;font-size:14px;line-height:1.33;text-transform:uppercase;border-radius:3px;padding:8px 14px;margin:10px 0;border:0;background-color:#cc7b19}#bookdetails #details_download:active,#bookdetails #details_download:focus,#bookdetails #details_download:hover,#bookdetails #details_read:active,#bookdetails #details_read:focus,#bookdetails #details_read:hover,#comicdetails #details_download:active,#comicdetails #details_download:focus,#comicdetails #details_download:hover,#comicdetails #details_read:active,#comicdetails #details_read:focus,#comicdetails #details_read:hover{text-decoration:none;background-color:#9f6013}#bookdetails #details_download,#comicdetails #details_download{margin-right:20px;background:rgba(255,255,255,.25)}#bookdetails #details_download:active,#bookdetails #details_download:focus,#bookdetails #details_download:hover,#comicdetails #details_download:active,#comicdetails #details_download:focus,#comicdetails #details_download:hover{background-color:rgba(0,0,0,.25)}#details_close{float:right;color:#eee;font-size:20px;text-decoration:none;text-align:center;width:64px;height:64px;padding-top:14px;opacity:.2}#details_close:hover{opacity:.8}#details_close:before{content:"x"}#dimoverlay{visibility:hidden;opacity:.5;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1070;background-color:#000} -------------------------------------------------------------------------------- /comicdetails/1/index.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 |
6 |
Black Science - #1 (2013)
7 |
32 pages - 101.9 MB
8 |
CBR
9 | 10 | 11 |
Hallo welt lorem ipsum blah
12 |
13 | -------------------------------------------------------------------------------- /comics.css: -------------------------------------------------------------------------------- 1 | /* 2 | This file is generated. 3 | Do not edit directly. 4 | Edit original files in 5 | /private/sass instead 6 | */ 7 | 8 | hr,img{border:0}body,figure{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:dotted thin}a:active,a:hover{outline:0}h1{margin:.67em 0}b,strong{font-weight:700}dfn{font-style:italic}address,cite{font-style:normal}hr{box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{blockquote,img,pre,tr{page-break-inside:avoid}*{text-shadow:none!important;color:#000!important;background:0 0!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}@page{margin:2cm .5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.img-thumbnail,body{background-color:transparent}*,:after,:before{box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:transparent}body{font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.71428571;color:#eee}button,input,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#cc7b19;text-decoration:none}a:focus,a:hover{text-decoration:underline}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:3px}.img-thumbnail{padding:4px;line-height:1.71428571;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:24px;margin-bottom:24px;border-top:1px solid #323232}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 12px}.lead{margin-bottom:24px;font-size:16.1px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small{font-size:85%}.text-muted{color:#999}.text-primary{color:#cc7b19}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:#999}h1,h2,h3{margin-top:24px}h1,h2,h3,h4,h5,h6{margin-bottom:12px}h4,h5,h6{margin-top:12px}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.page-header{padding-bottom:11px;margin:48px 0 24px;border-bottom:1px solid #323232}blockquote p:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:24px}ol,ul{margin-top:0;margin-bottom:12px}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dd,dt{line-height:1.71428571}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}.dl-horizontal dd:after{clear:both}}address,blockquote small{display:block;line-height:1.71428571}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:12px 24px;margin:0 0 24px;border-left:5px solid #bbb}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{color:#999}blockquote small:before{content:"\2014 \A0"}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #bbb;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:""}blockquote.pull-right small:after{content:"\A0 \2014"}blockquote:after,blockquote:before,q:after,q:before{content:""}@font-face{font-family:Open Sans Regular;font-weight:400;font-style:normal;src:url(./static/open-sans.woff) format("woff")}@font-face{font-family:Open Sans Bold;font-weight:400;font-style:normal;src:url(./static/open-sans-bold.woff) format("woff")}@font-face{font-family:Open Sans Semibold;font-style:normal;font-weight:400;src:url(./static/open-sans-semibold.woff) format("woff")}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:after,.nav:before{content:" ";display:table}.nav:after{clear:both}.nav>li,.nav>li>a{position:relative;display:block}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:rgba(255,255,255,.05)}.nav-bar-nav{float:left}.nav-bar-nav>li{float:left}.nav-bar-nav>li>a{padding-top:0;padding-bottom:0;line-height:60px;color:#999}.nav-bar-right{float:right!important}.QuickSearch-container-2PWkB{font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:relative;float:left;margin-left:15px;width:360px;height:100%}@media only screen and (max-width:768px){.QuickSearch-container-2PWkB{display:none}}.QuickSearchInput-container-R2-wn{font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-flow:row nowrap;flex-flow:row nowrap;margin:14px 0;padding:4px;height:30px;border-radius:4px;background:rgba(255,255,255,.25);color:#eee;transition:background-color .2s,color .2s}.QuickSearchInput-searchInput-2HU6-{-ms-flex-positive:1;flex-grow:1;height:100%;outline:0;border:none;background:0 0;color:#eee}.QuickSearchInput-searchInput-2HU6-::-ms-clear{display:none}.QuickSearchInput-focused-2kpW8{background:#eee}.QuickSearchInput-focused-2kpW8 .QuickSearchInput-closeIcon-3AV1c,.QuickSearchInput-focused-2kpW8 .QuickSearchInput-searchIcon-1f6m9{color:#555}.QuickSearchInput-focused-2kpW8 .QuickSearchInput-searchInput-2HU6-{color:#555}@font-face{font-family:"Glyphicons Regular";src:url(./static/glyphicons.woff) format("woff");font-weight:400;font-style:normal}.glyphicon{position:relative;top:1px;display:inline-block;font-family:Glyphicons Regular;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon.home:before{content:"\E021"}.glyphicon.chevron-left:before{content:"\E225"}.glyphicon.settings:before{content:"\E281"}.glyphicon.random:before{content:"\E084"}.glyphicon.log-out:before{content:"\E388"}@font-face{font-family:plex-icons;src:url(./static/plexicons.woff) format("woff")}[class*=" plex-icon-"],[class^=plex-icon-]{position:relative;top:-2px;display:inline-block;vertical-align:middle;text-decoration:inherit;text-transform:none;font-weight:400;font-style:normal;font-family:plex-icons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1;text-rendering:optimizeLegibility;speak:none}.plex-icon-search-560:before{content:"\EA51"}body,html{height:100%}body{background:#3f4245 url(./static/preset-light.png);background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed}#banner,.navigation{width:100%;height:60px;padding:0 10px 0 3px;background:rgba(0,0,0,.7)}#banner .glyphicon,.navigation .glyphicon{top:7px;font-size:24px}#banner .back-btn,#banner .home-btn,.navigation .back-btn,.navigation .home-btn{padding:0 15px}#banner .back-btn,.navigation .back-btn{padding-right:8px}#banner a:active,#banner a:focus,#banner a:hover,.navigation a:active,.navigation a:focus,.navigation a:hover{color:#eee;outline:0;background:0 0!important}#banner .QuickSearchInput-searchIcon-1f6m9,.navigation .QuickSearchInput-searchIcon-1f6m9{left:5px;top:0;font-size:12px}#banner .QuickSearchInput-searchInput-2HU6-,.navigation .QuickSearchInput-searchInput-2HU6-{padding-left:16px}#poweredby,#searchbox,#userinfo{display:none}#settingsbox{display:none;position:absolute;top:64px;right:5px;z-index:1090;color:#bbb;padding:10px 15px;border-radius:3px;border:1px solid rgba(0,0,0,.15);box-shadow:0 6px 12px rgba(0,0,0,.175);background-color:#191a1c;background-clip:padding-box}#settingsbox .popuptitle{font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;width:200px;color:#777;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#settingsbox .sectiontitle{color:#fff}#settingsbox label{padding-right:15px}#settingsbox input{margin-right:5px}#pageselector{display:none;padding:10px 30px}#pageselector .popuptitle{color:#ccc}#comicdetails{position:absolute}.pagination{text-align:center;padding-top:25px;margin:25px 0;border-top:1px solid rgba(0,0,0,.1)}.pagination a{margin:0 10px}.pagination a:active,.pagination a:focus,.pagination a:hover{text-decoration:none;outline:0}.actionbutton,.btn-link{font-family:Open Sans Bold;color:#fff;font-size:14px;line-height:1.33;text-transform:uppercase;border-radius:3px;padding:5px 10px;border:0;background-color:#cc7b19}.actionbutton:hover,.btn-link:hover{background-color:#9f6013}.btn-dark{background:rgba(255,255,255,.25)}.btn-dark:hover{background-color:rgba(0,0,0,.25)}#group{clear:both;overflow:hidden;padding:15px}#group>a{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;float:left;width:130px;height:130px;margin:15px;padding:5px;transition:all .2s;color:#000;font-family:"Open Sans Semibold";font-size:18px;text-align:center;text-transform:uppercase;line-height:1.4;box-shadow:0 0 2px rgba(0,0,0,.35);background-color:rgba(0,0,0,.45)}#group>a:active,#group>a:focus,#group>a:hover{color:#fff;text-decoration:none;box-shadow:0 0 0 2px #cc7b19;background-color:rgba(0,0,0,.8)!important}#group #comics{background-color:#cc7b19}#group #books{background-color:#00bfbf}#group #files{background-color:#fcce36}#group #latest-books,#group #latest-comics,#group .rootlink{color:#fff;border-color:#fff}#group br{display:none}.cellcontainer{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;float:left;width:150px;margin:15px;color:#000;font-family:"Open Sans Regular";font-size:18px;line-height:1.4}.cellcontainer *{transition:all .2s;transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.cellcontainer:hover .thumb{color:#fff;text-decoration:none;box-shadow:0 0 0 2px #cc7b19;background-color:rgba(0,0,0,.8)!important}.cellcontainer:hover .thumb img{opacity:.8}.cellcontainer:hover .numberblock{opacity:0}.cellcontainer .thumb{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;width:150px;height:230px;text-align:center;box-shadow:0 0 2px rgba(0,0,0,.35);background-color:rgba(0,0,0,.45)}.cellcontainer .thumb a{height:230px;display:block;background:#000}.cellcontainer .thumb img{top:-1px;position:relative;height:calc(100% + 2px)}.cellcontainer .label{display:block;overflow:hidden;color:#fff;line-height:20px;font-size:13px;text-overflow:ellipsis;white-space:nowrap;max-width:150px;height:30px;padding-top:10px}.cellcontainer .numberblock{position:absolute;right:0;top:0;opacity:1;font-size:13px;color:#eee;line-height:24px;padding:0 8px;background-color:#cc7b19;box-shadow:0 0 4px rgba(0,0,0,.6)}#bookdetails,#comicdetails{display:none;position:absolute;left:0;top:0}#bookdetails #details,#comicdetails #details{position:fixed;clear:both;overflow:hidden;width:750px;margin-left:-375px;margin-top:70px;left:50vw;top:0;padding:0;z-index:1080;box-shadow:0 5px 15px rgba(0,0,0,.5);background-color:#282828;border-radius:3px;background-clip:padding-box;outline:0}#bookdetails #details_cover,#comicdetails #details_cover{float:left;padding-right:25px}#bookdetails #details_cover img,#comicdetails #details_cover img{width:300px}@media only screen and (max-width:768px){#bookdetails #details_cover img,#comicdetails #details_cover img{display:none}}#bookdetails #details_title,#comicdetails #details_title{color:#eee;font-size:20px;line-height:1.4;text-transform:uppercase;padding:19px 20px;margin:0 0 20px;background:#323232}#bookdetails #details_description,#bookdetails #details_language_pubdate,#bookdetails #details_size,#comicdetails #details_description,#comicdetails #details_language_pubdate,#comicdetails #details_size{color:#999;padding:5px 20px}#bookdetails #details_description,#comicdetails #details_description{padding-bottom:15px}#bookdetails #details_download:before,#comicdetails #details_download:before{content:"Download"}#bookdetails #details_read:before,#comicdetails #details_read:before{content:"Read Now"}#bookdetails #details_download,#bookdetails #details_read,#comicdetails #details_download,#comicdetails #details_read{display:inline-block;font-family:Open Sans Bold;color:#fff;font-size:14px;line-height:1.33;text-transform:uppercase;border-radius:3px;padding:8px 14px;margin:10px 0;border:0;background-color:#cc7b19}#bookdetails #details_download:active,#bookdetails #details_download:focus,#bookdetails #details_download:hover,#bookdetails #details_read:active,#bookdetails #details_read:focus,#bookdetails #details_read:hover,#comicdetails #details_download:active,#comicdetails #details_download:focus,#comicdetails #details_download:hover,#comicdetails #details_read:active,#comicdetails #details_read:focus,#comicdetails #details_read:hover{text-decoration:none;background-color:#9f6013}#bookdetails #details_download,#comicdetails #details_download{margin-right:20px;background:rgba(255,255,255,.25)}#bookdetails #details_download:active,#bookdetails #details_download:focus,#bookdetails #details_download:hover,#comicdetails #details_download:active,#comicdetails #details_download:focus,#comicdetails #details_download:hover{background-color:rgba(0,0,0,.25)}#details_close{float:right;color:#eee;font-size:20px;text-decoration:none;text-align:center;width:64px;height:64px;padding-top:14px;opacity:.2}#details_close:hover{opacity:.8}#details_close:before{content:"x"}#dimoverlay{visibility:hidden;opacity:.5;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1070;background-color:#000} -------------------------------------------------------------------------------- /favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/favicon-16x16.png -------------------------------------------------------------------------------- /favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/favicon-32x32.png -------------------------------------------------------------------------------- /favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/favicon-96x96.png -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | const argv = require('minimist')(process.argv.slice(2)); 2 | const gulp = require('gulp'); 3 | 4 | const PROJECT_ROOT = __dirname; 5 | const PROJECT_PATH = { 6 | css: PROJECT_ROOT + '', 7 | sass: PROJECT_ROOT + '/src/sass', 8 | webpack: PROJECT_ROOT + '/src/js', 9 | }; 10 | const PROJECT_PATTERNS = { 11 | js: [ 12 | '*.js', 13 | './src/tasks/**/*.js', 14 | PROJECT_PATH.webpack + '*.config.js', 15 | PROJECT_PATH.webpack + '/**/*.js', 16 | ], 17 | sass: [ 18 | PROJECT_PATH.sass + '/**/*.{scss,sass}', 19 | ], 20 | }; 21 | 22 | /** 23 | * Generic utility to import gulp tasks and pass options to them 24 | * 25 | * @param {String} id - task name 26 | * @param {Object} [extra] - optional options to pass 27 | * @returns {Function} - task definition 28 | */ 29 | function task(id, extra) { 30 | return require('./src/tasks/' + id)( 31 | gulp, 32 | Object.assign( 33 | { 34 | PROJECT_ROOT: PROJECT_ROOT, 35 | PROJECT_PATH: PROJECT_PATH, 36 | PROJECT_PATTERNS: PROJECT_PATTERNS, 37 | argv: argv, 38 | }, 39 | extra 40 | ) 41 | ); 42 | } 43 | 44 | gulp.task('sass', task('sass')); 45 | gulp.task('webpack', task('webpack')); 46 | gulp.task('webpack:watch', task('webpack', { watch: true })); 47 | gulp.task('lint', task('lint')); 48 | 49 | gulp.task('default', ['sass', 'webpack', 'watch']); 50 | 51 | gulp.task('watch', function () { 52 | gulp.start('webpack:watch'); 53 | gulp.watch(PROJECT_PATTERNS.sass, ['sass']); 54 | gulp.watch(PROJECT_PATTERNS.js, ['lint']); 55 | }); 56 | -------------------------------------------------------------------------------- /homepage.css: -------------------------------------------------------------------------------- 1 | /* 2 | This file is generated. 3 | Do not edit directly. 4 | Edit original files in 5 | /private/sass instead 6 | */ 7 | 8 | hr,img{border:0}body,figure{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:dotted thin}a:active,a:hover{outline:0}h1{margin:.67em 0}b,strong{font-weight:700}dfn{font-style:italic}address,cite{font-style:normal}hr{box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{blockquote,img,pre,tr{page-break-inside:avoid}*{text-shadow:none!important;color:#000!important;background:0 0!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}@page{margin:2cm .5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.img-thumbnail,body{background-color:transparent}*,:after,:before{box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:transparent}body{font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.71428571;color:#eee}button,input,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#cc7b19;text-decoration:none}a:focus,a:hover{text-decoration:underline}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:3px}.img-thumbnail{padding:4px;line-height:1.71428571;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:24px;margin-bottom:24px;border-top:1px solid #323232}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 12px}.lead{margin-bottom:24px;font-size:16.1px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small{font-size:85%}.text-muted{color:#999}.text-primary{color:#cc7b19}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:#999}h1,h2,h3{margin-top:24px}h1,h2,h3,h4,h5,h6{margin-bottom:12px}h4,h5,h6{margin-top:12px}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.page-header{padding-bottom:11px;margin:48px 0 24px;border-bottom:1px solid #323232}blockquote p:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:24px}ol,ul{margin-top:0;margin-bottom:12px}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dd,dt{line-height:1.71428571}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}.dl-horizontal dd:after{clear:both}}address,blockquote small{display:block;line-height:1.71428571}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:12px 24px;margin:0 0 24px;border-left:5px solid #bbb}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{color:#999}blockquote small:before{content:"\2014 \A0"}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #bbb;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:""}blockquote.pull-right small:after{content:"\A0 \2014"}blockquote:after,blockquote:before,q:after,q:before{content:""}@font-face{font-family:Open Sans Regular;font-weight:400;font-style:normal;src:url(./static/open-sans.woff) format("woff")}@font-face{font-family:Open Sans Bold;font-weight:400;font-style:normal;src:url(./static/open-sans-bold.woff) format("woff")}@font-face{font-family:Open Sans Semibold;font-style:normal;font-weight:400;src:url(./static/open-sans-semibold.woff) format("woff")}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:after,.nav:before{content:" ";display:table}.nav:after{clear:both}.nav>li,.nav>li>a{position:relative;display:block}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:rgba(255,255,255,.05)}.nav-bar-nav{float:left}.nav-bar-nav>li{float:left}.nav-bar-nav>li>a{padding-top:0;padding-bottom:0;line-height:60px;color:#999}.nav-bar-right{float:right!important}.QuickSearch-container-2PWkB{font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:relative;float:left;margin-left:15px;width:360px;height:100%}@media only screen and (max-width:768px){.QuickSearch-container-2PWkB{display:none}}.QuickSearchInput-container-R2-wn{font-size:13px;font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-flow:row nowrap;flex-flow:row nowrap;margin:14px 0;padding:4px;height:30px;border-radius:4px;background:rgba(255,255,255,.25);color:#eee;transition:background-color .2s,color .2s}.QuickSearchInput-searchInput-2HU6-{-ms-flex-positive:1;flex-grow:1;height:100%;outline:0;border:none;background:0 0;color:#eee}.QuickSearchInput-searchInput-2HU6-::-ms-clear{display:none}.QuickSearchInput-focused-2kpW8{background:#eee}.QuickSearchInput-focused-2kpW8 .QuickSearchInput-closeIcon-3AV1c,.QuickSearchInput-focused-2kpW8 .QuickSearchInput-searchIcon-1f6m9{color:#555}.QuickSearchInput-focused-2kpW8 .QuickSearchInput-searchInput-2HU6-{color:#555}@font-face{font-family:"Glyphicons Regular";src:url(./static/glyphicons.woff) format("woff");font-weight:400;font-style:normal}.glyphicon{position:relative;top:1px;display:inline-block;font-family:Glyphicons Regular;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon.home:before{content:"\E021"}.glyphicon.chevron-left:before{content:"\E225"}.glyphicon.settings:before{content:"\E281"}.glyphicon.random:before{content:"\E084"}.glyphicon.log-out:before{content:"\E388"}@font-face{font-family:plex-icons;src:url(./static/plexicons.woff) format("woff")}[class*=" plex-icon-"],[class^=plex-icon-]{position:relative;top:-2px;display:inline-block;vertical-align:middle;text-decoration:inherit;text-transform:none;font-weight:400;font-style:normal;font-family:plex-icons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1;text-rendering:optimizeLegibility;speak:none}.plex-icon-search-560:before{content:"\EA51"}body,html{height:100%}body{background:#3f4245 url(./static/preset-light.png);background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed}#banner,.navigation{width:100%;height:60px;padding:0 10px 0 3px;background:rgba(0,0,0,.7)}#banner .glyphicon,.navigation .glyphicon{top:7px;font-size:24px}#banner .back-btn,#banner .home-btn,.navigation .back-btn,.navigation .home-btn{padding:0 15px}#banner .back-btn,.navigation .back-btn{padding-right:8px}#banner a:active,#banner a:focus,#banner a:hover,.navigation a:active,.navigation a:focus,.navigation a:hover{color:#eee;outline:0;background:0 0!important}#banner .QuickSearchInput-searchIcon-1f6m9,.navigation .QuickSearchInput-searchIcon-1f6m9{left:5px;top:0;font-size:12px}#banner .QuickSearchInput-searchInput-2HU6-,.navigation .QuickSearchInput-searchInput-2HU6-{padding-left:16px}#poweredby,#searchbox,#userinfo{display:none}#settingsbox{display:none;position:absolute;top:64px;right:5px;z-index:1090;color:#bbb;padding:10px 15px;border-radius:3px;border:1px solid rgba(0,0,0,.15);box-shadow:0 6px 12px rgba(0,0,0,.175);background-color:#191a1c;background-clip:padding-box}#settingsbox .popuptitle{font-family:Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif;width:200px;color:#777;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#settingsbox .sectiontitle{color:#fff}#settingsbox label{padding-right:15px}#settingsbox input{margin-right:5px}#pageselector{display:none;padding:10px 30px}#pageselector .popuptitle{color:#ccc}#comicdetails{position:absolute}.pagination{text-align:center;padding-top:25px;margin:25px 0;border-top:1px solid rgba(0,0,0,.1)}.pagination a{margin:0 10px}.pagination a:active,.pagination a:focus,.pagination a:hover{text-decoration:none;outline:0}.actionbutton,.btn-link{font-family:Open Sans Bold;color:#fff;font-size:14px;line-height:1.33;text-transform:uppercase;border-radius:3px;padding:5px 10px;border:0;background-color:#cc7b19}.actionbutton:hover,.btn-link:hover{background-color:#9f6013}.btn-dark{background:rgba(255,255,255,.25)}.btn-dark:hover{background-color:rgba(0,0,0,.25)}#loginform{max-width:400px;color:rgba(255,255,255,.45);text-transform:uppercase;font-size:13px;padding:20px 40px;margin:0 auto;margin-top:20%;background:rgba(0,0,0,.3)}#loginform br{display:none}#loginform br:nth-child(1){display:block}#loginform #loginfield,#loginform #passwordfield{display:block;margin:5px 0 15px}#loginform input{font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.71428571;color:#eee;vertical-align:middle;width:100%;height:36px;max-width:360px;padding:5px 10px;margin:0;border:none;border-radius:4px;background-color:rgba(255,255,255,.25);transition:background-color .2s}#loginform input:focus{outline:0;color:#555;background-color:#eee}#loginform #loginbutton{color:#fff;text-transform:uppercase;background-color:#cc7b19}#loginform #loginbutton:hover{background-color:#e3891c}#group{clear:both;overflow:hidden;padding:15px}#group>a{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;float:left;width:130px;height:130px;margin:15px;padding:5px;transition:all .2s;color:#000;font-family:"Open Sans Semibold";font-size:18px;text-align:center;text-transform:uppercase;line-height:1.4;box-shadow:0 0 2px rgba(0,0,0,.35);background-color:rgba(0,0,0,.45)}#group>a:active,#group>a:focus,#group>a:hover{color:#fff;text-decoration:none;box-shadow:0 0 0 2px #cc7b19;background-color:rgba(0,0,0,.8)!important}#group #comics{background-color:#cc7b19}#group #books{background-color:#00bfbf}#group #files{background-color:#fcce36}#group #latest-books,#group #latest-comics,#group .rootlink{color:#fff;border-color:#fff}#group br{display:none} -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "package", 3 | "private": true, 4 | "dependencies": { 5 | "autoprefixer": "^6.7.7", 6 | "babel-core": "^6.24.0", 7 | "babel-eslint": "^7.2.1", 8 | "babel-loader": "^7.1.0", 9 | "babel-plugin-lodash": "^3.2.11", 10 | "babel-plugin-transform-runtime": "^6.23.0", 11 | "babel-preset-env": "^1.3.2", 12 | "babel-runtime": "^6.23.0", 13 | "bootstrap": "^4.0.0-beta", 14 | "connect": "^3.6.6", 15 | "exports-loader": "^0.6.4", 16 | "gulp": "^3.9.1", 17 | "gulp-clean-css": "^3.0.4", 18 | "gulp-concat-util": "^0.5.5", 19 | "gulp-eslint": "^3.0.1", 20 | "gulp-if": "^2.0.2", 21 | "gulp-postcss": "^6.4.0", 22 | "gulp-sass": "^3.1.0", 23 | "gulp-sourcemaps": "^2.4.1", 24 | "gulp-stylelint": "^3.9.0", 25 | "gulp-svg-sprites": "^4.1.1", 26 | "gutil": "^1.6.4", 27 | "imports-loader": "^0.7.1", 28 | "jquery": "^3.2.1", 29 | "lodash": "^4.17.4", 30 | "minimist": "^1.2.0", 31 | "npm-sass": "^2.2.1", 32 | "popper.js": "^1.12.5", 33 | "serve-static": "^1.13.2", 34 | "webpack": "^3.0.0", 35 | "webpack2-polyfill-plugin": "0.0.2" 36 | }, 37 | "devDependencies": {} 38 | } 39 | -------------------------------------------------------------------------------- /page_category.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Ubooquity 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 |
28 |
29 | 30 | 31 | 33 | 34 | 35 |
36 |
37 | 38 | 39 |
40 |
41 |
42 |
43 |
44 |
Comics 45 |
46 |
47 |
48 |
49 |
50 |
Go to page
51 |
52 | 60 |
61 |
62 |
Display settings
63 |
64 |
Grouping
65 | 67 | 69 |
70 |
71 |
Sorting criterion
72 | 74 | 76 |
77 |
78 |
Sorting order
79 | 81 | 83 |
84 |
85 | 86 |
87 |
88 |
89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /page_index.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Ubooquity 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | Comics 32 | Books 33 |
34 |
35 | Latest comics 36 | Latest books 37 |
38 |
39 |
Powered by Ubooquity 40 | 41 | 42 | -------------------------------------------------------------------------------- /page_list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Ubooquity 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 |
28 |
29 | 30 | 31 | 33 | 34 | 35 |
36 |
37 | 38 | 39 |
40 |
41 |
42 |
43 |
44 |
45 | 46 | 47 | 48 |
49 |
Black Science (2013)
50 |
51 |
35
52 |
53 |
54 |
55 |
56 |
57 |
58 | 59 | 60 |
61 |
Dark Reign Fantastic Four (2009)
62 |
63 |
5
64 |
65 |
66 |
67 |
68 |
69 |
70 | 71 | 72 |
73 |
Fantastic Four By Jonathan Hickman (2010)
74 |
75 |
6
76 |
77 |
78 |
79 |
80 |
81 |
82 | 83 | 84 |
85 |
Hellboy (2002)
86 |
87 |
12
88 |
89 |
90 |
91 |
92 |
93 |
94 | 95 | 96 |
97 |
Maus A Survivors Tale (1986)
98 |
99 |
2
100 |
101 |
102 |
103 |
104 |
105 |
106 |
Go to page
107 |
1
2
108 | 116 |
117 |
118 |
Display settings
119 |
120 |
Grouping
121 | 123 | 125 |
126 |
127 |
Sorting criterion
128 | 130 | 132 |
133 |
134 |
Sorting order
135 | 137 | 139 |
140 |
141 | 142 |
143 |
144 |
145 | 146 | 147 | 148 | -------------------------------------------------------------------------------- /page_list2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Ubooquity 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 |
28 |
29 | 30 | 31 | 33 | 34 | 35 |
36 |
37 | 38 | 39 |
40 |
41 |
42 |
43 |
44 |
45 | 46 | 47 |
48 |
Black Science - #1 (2013)
49 |
50 |
51 |
52 |
53 |
54 | 55 | 56 |
57 |
Black Science - #10 (2014)
58 |
59 |
60 |
61 |
62 |
63 | 64 | 65 |
66 |
Black Science - #11 (2014)
67 |
68 |
69 |
70 |
71 |
72 | 73 | 74 |
75 |
Black Science - #12 (2015)
76 |
77 |
78 |
79 |
80 |
81 | 82 | 83 |
84 |
Black Science - #13 (2015)
85 |
86 |
87 |
88 |
89 |
90 | 91 | 92 |
93 |
Black Science - #13 (2015)
94 |
95 |
96 |
97 |
98 |
99 | 100 | 101 |
102 |
Black Science - #13 (2015)
103 |
104 |
105 |
106 |
107 |
108 | 109 | 110 |
111 |
Black Science - #13 (2015)
112 |
113 |
114 |
115 |
116 |
117 | 118 | 119 |
120 |
Black Science - #13 (2015)
121 |
122 |
123 |
124 |
125 |
126 | 127 | 128 |
129 |
Black Science - #13 (2015)
130 |
131 |
132 |
133 |
134 |
135 | 136 | 137 |
138 |
Black Science - #13 (2015)
139 |
140 |
141 |
142 |
143 |
144 | 145 | 146 |
147 |
Black Science - #13 (2015)
148 |
149 |
150 |
151 |
152 |
153 | 154 | 155 |
156 |
Black Science - #13 (2015)
157 |
158 |
159 |
160 |
161 |
162 | 163 | 164 |
165 |
Black Science - #13 (2015)
166 |
167 |
168 |
169 |
170 |
171 | 172 | 173 |
174 |
Black Science - #13 (2015)
175 |
176 |
177 |
178 |
179 |
180 | 181 | 182 |
183 |
Black Science - #13 (2015)
184 |
185 |
186 |
187 |
188 |
189 | 190 | 191 |
192 |
Black Science - #13 (2015)
193 |
194 |
195 |
196 |
197 |
198 | 199 | 200 |
201 |
Black Science - #13 (2015)
202 |
203 |
204 |
205 |
206 |
207 | 208 | 209 |
210 |
Black Science - #13 (2015)
211 |
212 |
213 |
214 |
215 |
216 | 217 | 218 |
219 |
Black Science - #13 (2015)
220 |
221 |
222 |
223 |
224 |
225 | 226 | 227 |
228 |
Black Science - #13 (2015)
229 |
230 |
231 |
232 |
233 |
234 | 235 | 236 |
237 |
Black Science - #13 (2015)
238 |
239 |
240 |
241 |
242 |
243 | 244 | 245 |
246 |
Black Science - #13 (2015)
247 |
248 |
249 |
250 |
251 |
252 | 253 | 254 |
255 |
Black Science - #13 (2015)
256 |
257 |
258 |
259 |
260 |
261 | 262 | 263 |
264 |
Black Science - #13 (2015)
265 |
266 |
267 |
268 |
269 |
270 | 271 | 272 |
273 |
Black Science - #13 (2015)
274 |
275 |
276 |
277 |
278 |
279 | 280 | 281 |
282 |
Black Science - #13 (2015)
283 |
284 |
285 |
286 |
287 |
288 | 289 | 290 |
291 |
Black Science - #13 (2015)
292 |
293 |
294 |
295 |
296 |
297 | 298 | 299 |
300 |
Black Science - #13 (2015)
301 |
302 |
303 |
304 |
305 |
306 | 307 | 308 |
309 |
Black Science - #13 (2015)
310 |
311 |
312 |
313 |
314 |
315 |
Go to page
316 |
1
234567
317 | 325 |
326 |
327 |
Display settings
328 |
329 |
Grouping
330 | 332 | 334 |
335 |
336 |
Sorting criterion
337 | 339 | 341 |
342 |
343 |
Sorting order
344 | 346 | 348 |
349 |
350 | 351 |
352 |
353 |
354 | 355 | 356 | 357 | -------------------------------------------------------------------------------- /page_login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Ubooquity 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 31 | 32 |
Please identify yourself 33 |

34 |

35 | 36 | Username 37 | 38 |

Password 39 | 40 | 41 |

42 |

43 | 44 |
45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /samples/detailview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/samples/detailview.png -------------------------------------------------------------------------------- /samples/landing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/samples/landing.png -------------------------------------------------------------------------------- /samples/listview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/samples/listview.png -------------------------------------------------------------------------------- /samples/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/samples/overview.png -------------------------------------------------------------------------------- /scripts/tools.js: -------------------------------------------------------------------------------- 1 | //////////// 2 | // COMMON // 3 | //////////// 4 | 5 | function showHidePopupMenu() { 6 | var itemId = arguments[0]; 7 | var itemsArray = arguments; 8 | hideOtherItems(arguments); 9 | if (document.getElementById(itemId)) { 10 | if (document.getElementById(itemId).style.display != 'inline') { 11 | // show 12 | document.getElementById('dimoverlay').style.visibility = 'visible'; 13 | document.getElementById(itemId).style.display = 'inline'; 14 | document.getElementById('dimoverlay').onclick = function(){ showHidePopupMenu.apply(this, itemsArray) }; 15 | }else { 16 | // hide 17 | document.getElementById(itemId).style.display = 'none'; 18 | document.getElementById('dimoverlay').style.visibility = 'hidden'; 19 | document.getElementById('dimoverlay').onclick = null; 20 | } 21 | } 22 | } 23 | 24 | // WARNING: hides only items after the first one 25 | function hideOtherItems(itemsArray){ 26 | for (var i = 1; i < itemsArray.length; i++) { 27 | if (document.getElementById(itemsArray[i])) { 28 | document.getElementById(itemsArray[i]).style.display = 'none'; 29 | } 30 | } 31 | } 32 | 33 | function beforeSubmitCheckbox(){ 34 | for (var i = 0; i < arguments.length; i++) { 35 | var hiddenId = arguments[i] + "Hidden"; 36 | if(document.getElementById(arguments[i]).checked){ 37 | document.getElementById(hiddenId).disabled = true; 38 | } 39 | } 40 | } 41 | 42 | function displayBrowserInfo(infoDivId) { 43 | var info = 44 | "" + 45 | "" + 46 | "" + 47 | "" + 48 | "" + 49 | "" + 50 | "" + 51 | "" + 52 | "" + 53 | "" + 54 | "" + 55 | "" + 56 | "" + 57 | "
window.innerWidth: " + window.innerWidth + "
window.innerHeight: " + window.innerHeight + "
window.outerWidth: " + window.outerWidth + "
window.outerHeight: " + window.outerHeight + "
window.devicePixelRatio: " + window.devicePixelRatio + "
navigator.userAgent: " + navigator.userAgent + "
navigator.platform: " + navigator.platform + "
navigator.language: " + navigator.language + "
screen.availWidth: " + screen.availWidth + "
screen.availHeight: " + screen.availHeight + "
screen.width: " + screen.width + "
screen.height: " + screen.height + "
"; 58 | document.getElementById(infoDivId).innerHTML = info; 59 | } 60 | 61 | ////////////////// 62 | // BOOK DETAILS // 63 | ////////////////// 64 | 65 | function loadBookDetails(itemId, rootPath){ 66 | var xmlhttp, originUrl; 67 | // store current url to know where to come back after closing a book 68 | originUrl = window.location.href; 69 | sessionStorage.originUrl = originUrl.replace("?settings=true", ""); // remove param which is useless when closing a book 70 | // tell epub reader to load bookmark 71 | sessionStorage.loadBookmark = true; 72 | document.getElementById('bookdetails').innerHTML="
"; 73 | xmlhttp=new XMLHttpRequest(); 74 | xmlhttp.onreadystatechange=function(){ 75 | if (xmlhttp.readyState==4 && xmlhttp.status==200){ 76 | document.getElementById('bookdetails').innerHTML=xmlhttp.responseText; 77 | } 78 | } 79 | xmlhttp.open("GET", rootPath + "bookdetails/" + itemId ,true); 80 | xmlhttp.send(); 81 | } 82 | 83 | /////////////////// 84 | // COMIC DETAILS // 85 | /////////////////// 86 | 87 | function loadComicDetails(itemId, rootPath){ 88 | var xmlhttp; 89 | 90 | document.getElementById('comicdetails').innerHTML="
"; 91 | xmlhttp=new XMLHttpRequest(); 92 | xmlhttp.onreadystatechange=function(){ 93 | if (xmlhttp.readyState==4 && xmlhttp.status==200){ 94 | document.getElementById('comicdetails').innerHTML=xmlhttp.responseText; 95 | } 96 | } 97 | xmlhttp.open("GET", rootPath + "comicdetails/" + itemId ,true); 98 | xmlhttp.send(); 99 | } 100 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | // starts a server at localhost:8001 2 | 3 | var connect = require('connect'); 4 | var serveStatic = require('serve-static'); 5 | 6 | connect().use(serveStatic(__dirname)).listen(8001, function(){ 7 | console.log('Server running on 8001...'); 8 | }); 9 | -------------------------------------------------------------------------------- /src/js/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false 5 | }] 6 | ], 7 | "plugins": ["transform-runtime"], 8 | "env": { 9 | "production": { 10 | "plugins": [ 11 | "lodash" 12 | ] 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/js/components/navigation.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | 3 | 4 | export default class Navigation { 5 | constructor(options) { 6 | this.header(); 7 | this.pagination(); 8 | this.backBtn(); 9 | } 10 | 11 | header() { 12 | var backBtn = '
  • ' 13 | var randomBtn = '
  • '; 14 | var logoutBtn = '
  • '; 15 | var settingsBtn = `
  • `; 16 | var homeBtn = '
  • '; 17 | var search = ''; 18 | 19 | this.template = (backBtn = '', randomBtn = '', settingsBtn = '', logoutBtn = '', homeBtn = '', search='') => ` 20 | 42 | `; 43 | 44 | let container = ''; 45 | if ($('#banner').length) { 46 | container = $('#banner'); 47 | backBtn = ''; 48 | randomBtn = ''; 49 | settingsBtn = ''; 50 | container.html(this.template()); 51 | } else if($('.cellcontainer').length) { 52 | container = $('#toppagebar'); 53 | } else if($('#toppagebar').length) { 54 | container = $('#toppagebar'); 55 | } 56 | if (!$('#userinfo').length) { 57 | logoutBtn = ''; 58 | } 59 | 60 | // set search value 61 | if ($('#searchform').length) { 62 | search = $('#searchform').attr('action'); 63 | } else { 64 | search = '/?search=true'; 65 | } 66 | console.log(search); 67 | 68 | // set correct home btn 69 | if ($('#arrowup').length) { 70 | var prefix = $('#arrowup').attr('href'); 71 | prefix = prefix.split('/')[1] || ''; 72 | homeBtn = '
  • '; 73 | } 74 | 75 | container.hide().after(this.template(backBtn, randomBtn, settingsBtn, logoutBtn, homeBtn, search)); 76 | } 77 | 78 | pagination() { 79 | // handling of pagination 80 | if ($('#arrowright').length) { 81 | var pagination = (text = '', prev = '', next = '', hidden = '') => ` 82 | 85 | `; 86 | var prev = ''; 87 | var next = ''; 88 | var hidden = ''; 89 | var pagetext = $('#pagelabel').text(); 90 | var page = false; 91 | 92 | // show left arrow 93 | if (!$('#topbarleft #arrowleft').hasClass('hidden')) { 94 | prev = ''; 95 | page = true; 96 | if (!$('#topbarleft #arrowleft10').hasClass('hidden')) { 97 | prev += 'First'; 98 | } 99 | prev += 'Previous'; 100 | } 101 | if (!$('#topbarright #arrowright').hasClass('hidden')) { 102 | next = 'Next'; 103 | page = true; 104 | if (!$('#topbarright #arrowright10').hasClass('hidden')) { 105 | next += 'Last'; 106 | } 107 | } 108 | if (!page) { 109 | hidden = 'hidden' 110 | } 111 | 112 | $('#group').after(pagination(pagetext, prev, next, hidden)); 113 | } 114 | } 115 | 116 | backBtn() { 117 | $('.navigation').on('click', '.js-back', function (e) { 118 | e.preventDefault(); 119 | window.history.back(); 120 | }); 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /src/js/components/search.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | 3 | 4 | export default class Search { 5 | constructor(options) { 6 | let search = $('.QuickSearchInput-searchInput-2HU6-'); 7 | let container = $('.QuickSearchInput-container-R2-wn'); 8 | 9 | search.on('focus', function () { 10 | container.addClass('QuickSearchInput-focused-2kpW8'); 11 | }); 12 | search.on('blur', function () { 13 | container.removeClass('QuickSearchInput-focused-2kpW8'); 14 | }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/js/themeScript.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | 3 | import Navigation from 'components/navigation'; 4 | import Search from 'components/search'; 5 | 6 | 7 | $(() => { 8 | new Navigation(); 9 | new Search(); 10 | 11 | // add title to covers 12 | $('.cellcontainer').each(function (index, item) { 13 | var text = $(item).find('.label').text(); 14 | $(item).prop('title', text) 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /src/js/webpack.config.js: -------------------------------------------------------------------------------- 1 | const argv = require('minimist')(process.argv.slice(2)); 2 | const plugins = []; 3 | const webpack = require('webpack'); 4 | const path = require('path'); 5 | 6 | 7 | process.env.NODE_ENV = (argv.debug) ? 'development' : 'production'; 8 | 9 | plugins.push( 10 | new webpack.optimize.CommonsChunkPlugin({ 11 | name: 'themeScript', 12 | chunks: ['themeScript'], 13 | }) 14 | ); 15 | 16 | // add plugins depending on if we are debugging or not 17 | if (argv.debug) { 18 | plugins.push( 19 | new webpack.LoaderOptionsPlugin({ 20 | minimize: false, 21 | debug: true, 22 | }) 23 | ); 24 | plugins.push( 25 | new webpack.DefinePlugin({ 26 | DEBUG: 'true', 27 | }) 28 | ); 29 | } else { 30 | plugins.push(new webpack.optimize.ModuleConcatenationPlugin()); 31 | plugins.push(new webpack.optimize.OccurrenceOrderPlugin()); 32 | plugins.push( 33 | new webpack.LoaderOptionsPlugin({ 34 | minimize: true, 35 | debug: false, 36 | }) 37 | ); 38 | plugins.push( 39 | new webpack.DefinePlugin({ 40 | DEBUG: 'false', 41 | }) 42 | ); 43 | plugins.push( 44 | new webpack.optimize.UglifyJsPlugin({ 45 | beautify: false, 46 | mangle: { 47 | screw_ie8: true, 48 | keep_fnames: true, 49 | }, 50 | compress: { 51 | screw_ie8: true, 52 | }, 53 | comments: false, 54 | }) 55 | ); 56 | } 57 | 58 | module.exports = { 59 | devtool: argv.debug ? 'cheap-module-eval-source-map' : false, 60 | entry: { 61 | themeScript: path.join(__dirname, 'themeScript.js'), 62 | }, 63 | output: { 64 | path: path.join(__dirname, '..', '..'), 65 | filename: '[name].js', 66 | publicPath: '', 67 | }, 68 | plugins: plugins, 69 | resolve: { 70 | modules: [__dirname, 'node_modules'], 71 | alias: { 72 | // make sure that we always use our jquery when loading 3rd party plugins 73 | jquery: require.resolve('jquery'), 74 | }, 75 | }, 76 | module: { 77 | rules: [ 78 | { 79 | test: /\.js$/, 80 | use: [{ 81 | loader: 'babel-loader', 82 | options: { 83 | retainLines: true, 84 | }, 85 | }], 86 | exclude: /(node_modules|vendor|libs|addons\/jquery.*)/, 87 | include: __dirname, 88 | }, 89 | ], 90 | }, 91 | } 92 | 93 | // disable DeprecationWarning: loaderUtils.parseQuery() DeprecationWarning 94 | process.noDeprecation = true; 95 | -------------------------------------------------------------------------------- /src/sass/books.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | @import "components/plex"; 4 | @import "components/common"; 5 | @import "components/group"; 6 | @import "components/cellcontainer"; 7 | @import "components/dialog"; 8 | -------------------------------------------------------------------------------- /src/sass/comics.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | @import "components/plex"; 4 | @import "components/common"; 5 | @import "components/group"; 6 | @import "components/cellcontainer"; 7 | @import "components/dialog"; 8 | -------------------------------------------------------------------------------- /src/sass/components/_cellcontainer.scss: -------------------------------------------------------------------------------- 1 | .cellcontainer { 2 | position: relative; 3 | display: flex; 4 | align-items: center; 5 | justify-content: center; 6 | float: left; 7 | 8 | width: 150px; 9 | margin: 15px; 10 | 11 | color: #000; 12 | font-family: "Open Sans Regular"; 13 | font-size: 18px; 14 | line-height: 1.4; 15 | 16 | * { 17 | transition: all 200ms; 18 | transform: translate3d(0, 0, 0); 19 | backface-visibility: hidden; 20 | } 21 | 22 | &:hover { 23 | .thumb { 24 | color: #fff; 25 | text-decoration: none; 26 | box-shadow: 0 0 0 2px #cc7b19; 27 | background-color: rgba(0,0,0,.8) !important; 28 | img { 29 | opacity: 0.8; 30 | } 31 | } 32 | .numberblock { 33 | opacity: 0; 34 | } 35 | } 36 | 37 | .thumb { 38 | display: flex; 39 | align-items: center; 40 | justify-content: center; 41 | overflow: hidden; 42 | width: 150px; 43 | height: 230px; 44 | text-align: center; 45 | box-shadow: 0 0 2px rgba(0,0,0,.35); 46 | background-color: rgba(0,0,0,.45); 47 | a { 48 | height: 230px; 49 | display: block; 50 | background: #000; 51 | } 52 | img { 53 | // avoid 1px white strip 54 | top: -1px; 55 | position: relative; 56 | height: calc(100% + 2px); 57 | } 58 | } 59 | 60 | .label { 61 | display: block; 62 | overflow: hidden; 63 | color: #fff; 64 | line-height: 20px; 65 | font-size: 13px; 66 | text-overflow: ellipsis; 67 | white-space: nowrap; 68 | max-width: 150px; 69 | height: 30px; 70 | padding-top: 10px; 71 | } 72 | 73 | .numberblock { 74 | position: absolute; 75 | right: 0; 76 | top: 0; 77 | opacity: 1; 78 | font-size: 13px; 79 | color: rgb(238, 238, 238); 80 | line-height: 24px; 81 | 82 | padding: 0 8px; 83 | background-color: #cc7b19; 84 | box-shadow: 0 0 4px rgba(0,0,0,.6); 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /src/sass/components/_common.scss: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | height: 100%; 4 | } 5 | body { 6 | background: #3f4245 url('./static/preset-light.png'); 7 | background-size: cover; 8 | background-position: center center; 9 | background-repeat: no-repeat; 10 | background-attachment: fixed; 11 | } 12 | 13 | .navigation, 14 | #banner { 15 | width: 100%; 16 | height: 60px; 17 | padding: 0 10px 0 3px; 18 | background: rgba(0, 0, 0, 0.7); 19 | 20 | .glyphicon { 21 | top: 7px; 22 | font-size: 24px; 23 | } 24 | .home-btn, 25 | .back-btn { 26 | padding: 0 15px; 27 | } 28 | .back-btn { 29 | padding-right: 8px; 30 | } 31 | a:hover, 32 | a:active, 33 | a:focus { 34 | color: #eee; 35 | outline: none; 36 | background: none !important; 37 | } 38 | 39 | // plex theme 40 | .QuickSearchInput-searchIcon-1f6m9 { 41 | left: 5px; 42 | top: 0; 43 | font-size: 12px; 44 | } 45 | .QuickSearchInput-searchInput-2HU6- { 46 | padding-left: 16px; 47 | } 48 | } 49 | 50 | #poweredby, 51 | #searchbox, 52 | #userinfo { 53 | display: none; 54 | } 55 | 56 | #settingsbox { 57 | display: none; 58 | 59 | position: absolute; 60 | top: 64px; 61 | right: 5px; 62 | z-index: 1090; 63 | 64 | color: rgb(187, 187, 187); 65 | 66 | padding: 10px 15px; 67 | 68 | border-radius: 3px; 69 | border: 1px solid rgba(0,0,0,.15); 70 | box-shadow: 0 6px 12px rgba(0,0,0,.175); 71 | background-color: #191a1c; 72 | background-clip: padding-box; 73 | 74 | .popuptitle { 75 | font-family: Open Sans Bold,Helvetica Neue,Helvetica,Arial,sans-serif; 76 | width: 200px; 77 | color: #777; 78 | text-transform: uppercase; 79 | overflow: hidden; 80 | text-overflow: ellipsis; 81 | white-space: nowrap; 82 | } 83 | 84 | .sectiontitle { 85 | color: #fff; 86 | } 87 | 88 | label { 89 | padding-right: 15px; 90 | } 91 | input { 92 | margin-right: 5px; 93 | } 94 | } 95 | 96 | #pageselector { 97 | display: none; 98 | padding: 10px 30px; 99 | .popuptitle { 100 | color: #ccc; 101 | } 102 | } 103 | 104 | #comicdetails { 105 | position: absolute; 106 | } 107 | 108 | .pagination { 109 | text-align: center; 110 | padding-top: 25px; 111 | margin: 25px 0; 112 | border-top: 1px solid rgba(0, 0, 0, 0.1); 113 | a { 114 | margin: 0 10px; 115 | } 116 | a:hover, 117 | a:active, 118 | a:focus { 119 | text-decoration: none; 120 | outline: none; 121 | } 122 | } 123 | 124 | .btn-link, 125 | .actionbutton { 126 | font-family: Open Sans Bold; 127 | color: #fff; 128 | font-size: 14px; 129 | line-height: 1.33; 130 | text-transform: uppercase; 131 | border-radius: 3px; 132 | padding: 5px 10px; 133 | border: 0; 134 | background-color: #cc7b19; 135 | &:hover { 136 | background-color: darken(#cc7b19, 10%); 137 | } 138 | } 139 | 140 | .btn-dark { 141 | background: rgba(255, 255, 255, 0.25); 142 | &:hover { 143 | background-color: rgba(0, 0, 0, 0.25); 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /src/sass/components/_dialog.scss: -------------------------------------------------------------------------------- 1 | 2 | #comicdetails, 3 | #bookdetails { 4 | display: none; 5 | position: absolute; 6 | left: 0; 7 | top: 0; 8 | 9 | #details { 10 | position: fixed; 11 | clear: both; 12 | overflow: hidden; 13 | width: 750px; 14 | margin-left: -375px; 15 | margin-top: 70px; 16 | left: 50vw; 17 | top: 0; 18 | padding: 0; 19 | z-index: 1080; 20 | 21 | box-shadow: 0 5px 15px rgba(0,0,0,.5); 22 | background-color: #282828; 23 | border-radius: 3px; 24 | background-clip: padding-box; 25 | outline: none; 26 | } 27 | 28 | #details_cover { 29 | float: left; 30 | padding-right: 25px; 31 | img { 32 | width: 300px; 33 | @media only screen and (max-width:768px){ 34 | display: none; 35 | } 36 | } 37 | } 38 | 39 | #details_title { 40 | color: #eee; 41 | font-size: 20px; 42 | line-height: 1.4; 43 | text-transform: uppercase; 44 | padding: 19px 20px; 45 | margin: 0 0 20px; 46 | background: #323232; 47 | } 48 | #details_description, 49 | #details_size, 50 | #details_language_pubdate { 51 | color: #999; 52 | padding: 5px 20px; 53 | } 54 | #details_description { 55 | padding-bottom: 15px; 56 | } 57 | 58 | #details_download { 59 | &:before { 60 | content: "Download"; 61 | } 62 | } 63 | #details_read { 64 | &:before { 65 | content: "Read Now"; 66 | } 67 | } 68 | #details_download, 69 | #details_read { 70 | display: inline-block; 71 | font-family: Open Sans Bold; 72 | color: #fff; 73 | font-size: 14px; 74 | line-height: 1.33; 75 | text-transform: uppercase; 76 | border-radius: 3px; 77 | padding: 8px 14px; 78 | margin: 10px 0; 79 | border: 0; 80 | background-color: #cc7b19; 81 | &:hover, 82 | &:active, 83 | &:focus { 84 | text-decoration: none; 85 | background-color: darken(#cc7b19, 10%); 86 | } 87 | } 88 | #details_download { 89 | margin-right: 20px; 90 | background: rgba(255, 255, 255, 0.25); 91 | &:hover, 92 | &:active, 93 | &:focus { 94 | background-color: rgba(0, 0, 0, 0.25); 95 | } 96 | } 97 | } 98 | 99 | #details_close { 100 | float: right; 101 | color: #eee; 102 | font-size: 20px; 103 | text-decoration: none; 104 | text-align: center; 105 | width: 64px; 106 | height: 64px; 107 | padding-top: 14px; 108 | opacity: 0.2; 109 | &:hover { 110 | opacity: 0.8; 111 | } 112 | &:before { 113 | content: "x"; 114 | } 115 | } 116 | 117 | #dimoverlay { 118 | visibility: hidden; 119 | opacity: .5; 120 | position: fixed; 121 | top: 0; 122 | right: 0; 123 | bottom: 0; 124 | left: 0; 125 | z-index: 1070; 126 | background-color: #000; 127 | } 128 | -------------------------------------------------------------------------------- /src/sass/components/_group.scss: -------------------------------------------------------------------------------- 1 | // used for the category page or page_category.html example 2 | #group { 3 | clear:both; 4 | overflow: hidden; 5 | padding: 15px; 6 | 7 | > a { 8 | display: flex; 9 | align-items: center; 10 | justify-content: center; 11 | float: left; 12 | 13 | width: 130px; 14 | height: 130px; 15 | margin: 15px; 16 | padding: 5px; 17 | 18 | transition: all 200ms; 19 | 20 | color: #000; 21 | font-family: "Open Sans Semibold"; 22 | font-size: 18px; 23 | text-align: center; 24 | text-transform: uppercase; 25 | line-height: 1.4; 26 | 27 | box-shadow: 0 0 2px rgba(0,0,0,.35); 28 | background-color: rgba(0,0,0,.45); 29 | 30 | &:hover, 31 | &:active, 32 | &:focus { 33 | color: #fff; 34 | text-decoration: none; 35 | box-shadow: 0 0 0 2px #cc7b19; 36 | background-color: rgba(0,0,0,.8) !important; 37 | } 38 | } 39 | // individual colors 40 | #comics { 41 | background-color: #cc7b19; 42 | } 43 | #books { 44 | background-color: #00bfbf; 45 | } 46 | #files { 47 | background-color: #fcce36; 48 | } 49 | #latest-comics, 50 | #latest-books, 51 | .rootlink { 52 | color: #fff; 53 | border-color: #fff; 54 | } 55 | br { 56 | display: none; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/sass/components/_login.scss: -------------------------------------------------------------------------------- 1 | #loginform { 2 | max-width: 400px; 3 | 4 | color: hsla(0,0%,100%,.45); 5 | text-transform: uppercase; 6 | font-size: 13px; 7 | 8 | padding: 20px 40px; 9 | margin: 0 auto; 10 | margin-top: 20%; 11 | 12 | background: rgba(0,0,0,.3); 13 | 14 | br { 15 | display: none; 16 | } 17 | br:nth-child(1) { 18 | display: block; 19 | } 20 | 21 | #loginfield, 22 | #passwordfield { 23 | display: block; 24 | margin: 5px 0 15px; 25 | } 26 | 27 | input { 28 | font-family: Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif; 29 | font-size: 15px; 30 | line-height: 1.71428571; 31 | color: #eee; 32 | vertical-align: middle; 33 | width: 100%; 34 | height: 36px; 35 | max-width: 360px; 36 | padding: 5px 10px; 37 | margin: 0; 38 | border: none; 39 | border-radius: 4px; 40 | background-color: hsla(0,0%,100%,.25); 41 | transition: background-color .2s; 42 | &:focus { 43 | outline: 0; 44 | color: #555; 45 | background-color: #eee; 46 | } 47 | } 48 | 49 | #loginbutton { 50 | color: #fff; 51 | text-transform: uppercase; 52 | background-color: #cc7b19; 53 | &:hover { 54 | background-color: #e3891c; 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/sass/components/_plex.scss: -------------------------------------------------------------------------------- 1 | // PLEX reset 2 | hr,img{border:0}body,figure{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:dotted thin}a:active,a:hover{outline:0}h1{margin:.67em 0}b,strong{font-weight:700}dfn{font-style:italic}address,cite{font-style:normal}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{blockquote,img,pre,tr{page-break-inside:avoid}*{text-shadow:none!important;color:#000!important;background:0 0!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}@page{margin:2cm .5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.img-thumbnail,body{background-color:transparent}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:transparent}body{font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.71428571;color:#eee}button,input,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#cc7b19;text-decoration:none}a:focus,a:hover{text-decoration:underline}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:3px}.img-thumbnail{padding:4px;line-height:1.71428571;border:1px solid #ddd;border-radius:3px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:24px;margin-bottom:24px;border-top:1px solid #323232}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 12px}.lead{margin-bottom:24px;font-size:16.1px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small{font-size:85%}.text-muted{color:#999}.text-primary{color:#cc7b19}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:Open Sans Regular,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:#999}h1,h2,h3{margin-top:24px}h1,h2,h3,h4,h5,h6{margin-bottom:12px}h4,h5,h6{margin-top:12px}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.page-header{padding-bottom:11px;margin:48px 0 24px;border-bottom:1px solid #323232}blockquote p:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:24px}ol,ul{margin-top:0;margin-bottom:12px}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dd,dt{line-height:1.71428571}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}.dl-horizontal dd:after{clear:both}}address,blockquote small{display:block;line-height:1.71428571}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:12px 24px;margin:0 0 24px;border-left:5px solid #bbb}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{color:#999}blockquote small:before{content:"\2014 \A0"}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #bbb;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:""}blockquote.pull-right small:after{content:"\A0 \2014"}blockquote:after,blockquote:before,q:after,q:before{content:""} 3 | 4 | @font-face{ 5 | font-family:Open Sans Regular; 6 | font-weight:400; 7 | font-style:normal; 8 | src:url("./static/open-sans.woff") format("woff") 9 | } 10 | 11 | @font-face{ 12 | font-family:Open Sans Bold; 13 | font-weight:400; 14 | font-style:normal; 15 | src:url("./static/open-sans-bold.woff") format("woff") 16 | } 17 | @font-face{ 18 | font-family:Open Sans Semibold; 19 | font-style:normal; 20 | font-weight:400; 21 | src:url("./static/open-sans-semibold.woff") format("woff") 22 | } 23 | 24 | .nav { 25 | margin-bottom: 0; 26 | padding-left: 0; 27 | list-style: none 28 | } 29 | .nav:after, 30 | .nav:before { 31 | content: " "; 32 | display: table 33 | } 34 | .nav:after { 35 | clear: both 36 | } 37 | .nav > li, 38 | .nav > li > a { 39 | position: relative; 40 | display: block 41 | } 42 | .nav > li > a { 43 | padding: 10px 15px 44 | } 45 | .nav > li > a:focus, 46 | .nav > li > a:hover { 47 | text-decoration: none; 48 | background-color: hsla(0,0%,100%,.05) 49 | } 50 | .nav-bar-nav { 51 | float: left 52 | } 53 | .nav-bar-nav > li { 54 | float: left 55 | } 56 | .nav-bar-nav > li >a { 57 | padding-top: 0; 58 | padding-bottom: 0; 59 | line-height: 60px; 60 | color: #999 61 | } 62 | .nav-bar-right { 63 | float: right !important 64 | } 65 | 66 | // SEARCH 67 | 68 | .QuickSearch-container-2PWkB{ 69 | font-size:13px; 70 | font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif; 71 | -webkit-font-smoothing:antialiased; 72 | -moz-osx-font-smoothing:grayscale; 73 | position:relative; 74 | float:left; 75 | margin-left:15px; 76 | width:360px; 77 | height:100% 78 | } 79 | @media only screen and (max-width:768px){ 80 | .QuickSearch-container-2PWkB{ 81 | display:none 82 | } 83 | } 84 | .QuickSearchInput-container-R2-wn{ 85 | font-size:13px; 86 | font-family:Open Sans Semibold,Helvetica Neue,Helvetica,Arial,sans-serif; 87 | -webkit-font-smoothing:antialiased; 88 | -moz-osx-font-smoothing:grayscale; 89 | display:-webkit-box; 90 | display:-webkit-flex; 91 | display:flex; 92 | -webkit-box-align:center; 93 | -webkit-align-items:center; 94 | align-items:center; 95 | -webkit-box-orient:horizontal; 96 | -webkit-box-direction:normal; 97 | -webkit-flex-flow:row nowrap; 98 | flex-flow:row nowrap; 99 | margin:14px 0; 100 | padding:4px; 101 | height:30px; 102 | border-radius:4px; 103 | background:hsla(0,0%,100%,.25); 104 | color:#eee; 105 | -webkit-transition:background-color .2s,color .2s; 106 | transition:background-color .2s,color .2s 107 | } 108 | .QuickSearchInput-searchInput-2HU6-{ 109 | -webkit-box-flex:1; 110 | -webkit-flex-grow:1; 111 | flex-grow:1; 112 | height:100%; 113 | outline:0; 114 | border:none; 115 | background:transparent; 116 | color:#eee 117 | } 118 | .QuickSearchInput-searchInput-2HU6-::-ms-clear{ 119 | display:none 120 | } 121 | .QuickSearchInput-focused-2kpW8{ 122 | background:#eee 123 | } 124 | .QuickSearchInput-focused-2kpW8 .QuickSearchInput-closeIcon-3AV1c, 125 | .QuickSearchInput-focused-2kpW8 .QuickSearchInput-searchIcon-1f6m9 { 126 | color:#555 127 | } 128 | 129 | .QuickSearchInput-focused-2kpW8 .QuickSearchInput-searchInput-2HU6-{ 130 | color:#555 131 | } 132 | 133 | // ICONS 134 | @font-face{ 135 | font-family: "Glyphicons Regular"; 136 | src: url("./static/glyphicons.woff") format("woff"); 137 | font-weight: 400; 138 | font-style: normal 139 | } 140 | .glyphicon { 141 | position:relative; 142 | top:1px; 143 | display:inline-block; 144 | font-family:Glyphicons Regular; 145 | font-style:normal; 146 | font-weight:400; 147 | line-height:1; 148 | -webkit-font-smoothing:antialiased; 149 | -moz-osx-font-smoothing:grayscale 150 | } 151 | .glyphicon.home:before { 152 | content: "\E021" 153 | } 154 | .glyphicon.chevron-left:before { 155 | content: "\E225" 156 | } 157 | .glyphicon.settings:before{ 158 | content:"\E281" 159 | } 160 | .glyphicon.random:before{ 161 | content:"\E084" 162 | } 163 | .glyphicon.log-out:before{ 164 | content:"\E388" 165 | } 166 | 167 | @font-face{ 168 | font-family:plex-icons; 169 | src:url("./static/plexicons.woff") format("woff") 170 | } 171 | [class*=" plex-icon-"],[class^=plex-icon-]{ 172 | position:relative; 173 | top:-2px; 174 | display:inline-block; 175 | vertical-align:middle; 176 | text-decoration:inherit; 177 | text-transform:none; 178 | font-weight:400; 179 | font-style:normal; 180 | font-family:plex-icons; 181 | -webkit-font-smoothing:antialiased; 182 | -moz-osx-font-smoothing:grayscale; 183 | line-height:1; 184 | text-rendering:optimizeLegibility; 185 | speak:none 186 | } 187 | 188 | .plex-icon-search-560:before{ 189 | content:"\EA51" 190 | } 191 | -------------------------------------------------------------------------------- /src/sass/homepage.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | @import "components/plex"; 4 | @import "components/common"; 5 | @import "components/login"; 6 | @import "components/group"; 7 | -------------------------------------------------------------------------------- /src/tasks/lint.js: -------------------------------------------------------------------------------- 1 | const eslint = require('gulp-eslint'); 2 | 3 | 4 | module.exports = function (gulp, opts) { 5 | return function () { 6 | return gulp.src(opts.PROJECT_PATTERNS.js) 7 | .pipe(eslint()) 8 | .pipe(eslint.format()) 9 | .pipe(eslint.failAfterError()); 10 | }; 11 | }; 12 | -------------------------------------------------------------------------------- /src/tasks/sass.js: -------------------------------------------------------------------------------- 1 | const autoprefixer = require('autoprefixer'); 2 | const cleanCSS = require('gulp-clean-css'); 3 | const concat = require('gulp-concat-util'); 4 | const gulpif = require('gulp-if'); 5 | const gutil = require('gulp-util'); 6 | const postcss = require('gulp-postcss'); 7 | const sass = require('gulp-sass'); 8 | const sourcemaps = require('gulp-sourcemaps'); 9 | // const styleLint = require('gulp-stylelint'); 10 | const { importer } = require('npm-sass'); 11 | 12 | 13 | module.exports = function (gulp, opts) { 14 | return function () { 15 | return gulp.src(opts.PROJECT_PATTERNS.sass) 16 | // .pipe(styleLint({ 17 | // reporters: [{ 18 | // formatter: (opts.argv.debug) ? 'verbose' : 'string', 19 | // console: true, 20 | // }], 21 | // })) 22 | // .on('error', function () { 23 | // this.emit('end'); 24 | // }) 25 | .pipe(gulpif(opts.argv.debug, sourcemaps.init())) 26 | .pipe(sass({ 27 | importer: importer, 28 | precision: 10, 29 | })) 30 | .on('error', function (error) { 31 | gutil.log(gutil.colors.red( 32 | 'Error (' + error.plugin + '): ' + error.messageFormatted) 33 | ); 34 | // in dev mode - just continue 35 | this.emit('end'); 36 | }) 37 | .pipe( 38 | postcss([ 39 | autoprefixer({ 40 | // browsers are coming from browserslist file 41 | cascade: false, 42 | }), 43 | ]) 44 | ) 45 | .pipe(gulpif(!opts.argv.debug, cleanCSS({ 46 | rebase: false, 47 | }))) 48 | // this information is added on top of the generated .css file 49 | .pipe(concat.header( 50 | '/*\n This file is generated.\n' + 51 | ' Do not edit directly.\n' + 52 | ' Edit original files in\n' + 53 | ' /private/sass instead\n */ \n\n' 54 | )) 55 | .pipe(gulpif(opts.argv.debug, sourcemaps.write())) 56 | .pipe(gulp.dest(opts.PROJECT_PATH.css)); 57 | }; 58 | }; 59 | -------------------------------------------------------------------------------- /src/tasks/webpack.js: -------------------------------------------------------------------------------- 1 | const gutil = require('gulp-util'); 2 | const webpack = require('webpack'); 3 | 4 | 5 | module.exports = function(gulp, opts) { 6 | return function(callback) { 7 | var config = require(opts.PROJECT_PATH.webpack + '/webpack.config'); 8 | 9 | config.watch = opts.watch; 10 | 11 | webpack(config, function(err, stats) { 12 | if (err) { 13 | throw new gutil.PluginError('webpack', err); 14 | } 15 | gutil.log( 16 | '[webpack]', 17 | stats.toString({ 18 | colors: true, 19 | maxModules: Infinity, 20 | optimizationBailout: true, 21 | }) 22 | ); 23 | if (!opts.watch) { 24 | callback(); 25 | } 26 | }); 27 | }; 28 | }; 29 | -------------------------------------------------------------------------------- /static/glyphicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/static/glyphicons.woff -------------------------------------------------------------------------------- /static/open-sans-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/static/open-sans-bold.woff -------------------------------------------------------------------------------- /static/open-sans-semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/static/open-sans-semibold.woff -------------------------------------------------------------------------------- /static/open-sans.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/static/open-sans.woff -------------------------------------------------------------------------------- /static/plexicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/static/plexicons.woff -------------------------------------------------------------------------------- /static/preset-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FinalAngel/plextheme/7deb66f7fa602ff6375dbee47d655bad60bbb002/static/preset-light.png --------------------------------------------------------------------------------