├── .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 |
28 |
29 |
30 |
31 |
33 |
34 |
35 |
36 |
40 |
41 |
42 |
43 |
44 |
Comics
45 |
46 |
47 |
48 |
49 |
52 |
60 |
61 |
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 |
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 |
28 |
29 |
30 |
31 |
33 |
34 |
35 |
36 |
40 |
41 |
42 |
43 |
44 |
49 |
Black Science (2013)
50 |
53 |
54 |
55 |
56 |
57 |
61 |
Dark Reign Fantastic Four (2009)
62 |
65 |
66 |
67 |
68 |
69 |
73 |
Fantastic Four By Jonathan Hickman (2010)
74 |
77 |
78 |
79 |
80 |
81 |
85 |
Hellboy (2002)
86 |
89 |
90 |
91 |
92 |
93 |
97 |
Maus A Survivors Tale (1986)
98 |
101 |
102 |
103 |
104 |
105 |
108 |
116 |
117 |
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 |
28 |
29 |
30 |
31 |
33 |
34 |
35 |
36 |
40 |
41 |
42 |
43 |
44 |
48 |
Black Science - #1 (2013)
49 |
50 |
51 |
52 |
53 |
57 |
Black Science - #10 (2014)
58 |
59 |
60 |
61 |
62 |
66 |
Black Science - #11 (2014)
67 |
68 |
69 |
70 |
71 |
75 |
Black Science - #12 (2015)
76 |
77 |
78 |
79 |
80 |
84 |
Black Science - #13 (2015)
85 |
86 |
87 |
88 |
89 |
93 |
Black Science - #13 (2015)
94 |
95 |
96 |
97 |
98 |
102 |
Black Science - #13 (2015)
103 |
104 |
105 |
106 |
107 |
111 |
Black Science - #13 (2015)
112 |
113 |
114 |
115 |
116 |
120 |
Black Science - #13 (2015)
121 |
122 |
123 |
124 |
125 |
129 |
Black Science - #13 (2015)
130 |
131 |
132 |
133 |
134 |
138 |
Black Science - #13 (2015)
139 |
140 |
141 |
142 |
143 |
147 |
Black Science - #13 (2015)
148 |
149 |
150 |
151 |
152 |
156 |
Black Science - #13 (2015)
157 |
158 |
159 |
160 |
161 |
165 |
Black Science - #13 (2015)
166 |
167 |
168 |
169 |
170 |
174 |
Black Science - #13 (2015)
175 |
176 |
177 |
178 |
179 |
183 |
Black Science - #13 (2015)
184 |
185 |
186 |
187 |
188 |
192 |
Black Science - #13 (2015)
193 |
194 |
195 |
196 |
197 |
201 |
Black Science - #13 (2015)
202 |
203 |
204 |
205 |
206 |
210 |
Black Science - #13 (2015)
211 |
212 |
213 |
214 |
215 |
219 |
Black Science - #13 (2015)
220 |
221 |
222 |
223 |
224 |
228 |
Black Science - #13 (2015)
229 |
230 |
231 |
232 |
233 |
237 |
Black Science - #13 (2015)
238 |
239 |
240 |
241 |
242 |
246 |
Black Science - #13 (2015)
247 |
248 |
249 |
250 |
251 |
255 |
Black Science - #13 (2015)
256 |
257 |
258 |
259 |
260 |
264 |
Black Science - #13 (2015)
265 |
266 |
267 |
268 |
269 |
273 |
Black Science - #13 (2015)
274 |
275 |
276 |
277 |
278 |
282 |
Black Science - #13 (2015)
283 |
284 |
285 |
286 |
287 |
291 |
Black Science - #13 (2015)
292 |
293 |
294 |
295 |
296 |
300 |
Black Science - #13 (2015)
301 |
302 |
303 |
304 |
305 |
309 |
Black Science - #13 (2015)
310 |
311 |
312 |
313 |
314 |
317 |
325 |
326 |
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 |
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 | "window.innerWidth: | " + window.innerWidth + " |
" +
46 | "window.innerHeight: | " + window.innerHeight + " |
" +
47 | "window.outerWidth: | " + window.outerWidth + " |
" +
48 | "window.outerHeight: | " + window.outerHeight + " |
" +
49 | "window.devicePixelRatio: | " + window.devicePixelRatio + " |
" +
50 | "navigator.userAgent: | " + navigator.userAgent + " |
" +
51 | "navigator.platform: | " + navigator.platform + " |
" +
52 | "navigator.language: | " + navigator.language + " |
" +
53 | "screen.availWidth: | " + screen.availWidth + " |
" +
54 | "screen.availHeight: | " + screen.availHeight + " |
" +
55 | "screen.width: | " + screen.width + " |
" +
56 | "screen.height: | " + screen.height + " |
" +
57 | "
";
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 |
21 |
22 | ${backBtn}
23 | ${homeBtn}
24 |
25 |
26 |
35 |
36 |
37 | ${settingsBtn}
38 | ${randomBtn}
39 | ${logoutBtn}
40 |
41 |
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
--------------------------------------------------------------------------------