159 changed files with 37872 additions and 19963 deletions
@ -0,0 +1,16 @@ |
|||
# http://editorconfig.org |
|||
root = true |
|||
|
|||
[*] |
|||
indent_style = tab |
|||
indent_size = 4 |
|||
end_of_line = lf |
|||
charset = utf-8 |
|||
trim_trailing_whitespace = true |
|||
insert_final_newline = true |
|||
|
|||
[*.py] |
|||
indent_style = space |
|||
|
|||
[*.md] |
|||
trim_trailing_whitespace = false |
@ -1,5 +1,8 @@ |
|||
*.pyc |
|||
/data/ |
|||
/_env/ |
|||
/_source/ |
|||
.project |
|||
.pydevproject |
|||
node_modules |
|||
.tmp |
|||
|
@ -0,0 +1,198 @@ |
|||
'use strict'; |
|||
|
|||
module.exports = function(grunt){ |
|||
require('jit-grunt')(grunt); |
|||
require('time-grunt')(grunt); |
|||
|
|||
grunt.loadNpmTasks('grunt-shell-spawn'); |
|||
|
|||
// Configurable paths
|
|||
var config = { |
|||
python: grunt.file.exists('./_env/bin/python') ? './_env/bin/python' : 'python', |
|||
tmp: '.tmp', |
|||
base: 'couchpotato', |
|||
css_dest: 'couchpotato/static/style/combined.min.css', |
|||
scripts_vendor_dest: 'couchpotato/static/scripts/combined.vendor.min.js', |
|||
scripts_base_dest: 'couchpotato/static/scripts/combined.base.min.js', |
|||
scripts_plugins_dest: 'couchpotato/static/scripts/combined.plugins.min.js' |
|||
}; |
|||
|
|||
var vendor_scripts_files = [ |
|||
'couchpotato/static/scripts/vendor/mootools.js', |
|||
'couchpotato/static/scripts/vendor/mootools_more.js', |
|||
'couchpotato/static/scripts/vendor/Array.stableSort.js', |
|||
'couchpotato/static/scripts/vendor/history.js', |
|||
'couchpotato/static/scripts/vendor/dynamics.js', |
|||
'couchpotato/static/scripts/vendor/fastclick.js' |
|||
]; |
|||
|
|||
var scripts_files = [ |
|||
'couchpotato/static/scripts/library/uniform.js', |
|||
'couchpotato/static/scripts/library/question.js', |
|||
'couchpotato/static/scripts/library/scrollspy.js', |
|||
'couchpotato/static/scripts/couchpotato.js', |
|||
'couchpotato/static/scripts/api.js', |
|||
'couchpotato/static/scripts/page.js', |
|||
'couchpotato/static/scripts/block.js', |
|||
'couchpotato/static/scripts/block/navigation.js', |
|||
'couchpotato/static/scripts/block/header.js', |
|||
'couchpotato/static/scripts/block/footer.js', |
|||
'couchpotato/static/scripts/block/menu.js', |
|||
'couchpotato/static/scripts/page/home.js', |
|||
'couchpotato/static/scripts/page/settings.js', |
|||
'couchpotato/static/scripts/page/about.js', |
|||
'couchpotato/static/scripts/page/login.js' |
|||
]; |
|||
|
|||
grunt.initConfig({ |
|||
|
|||
// Project settings
|
|||
config: config, |
|||
|
|||
// Make sure code styles are up to par and there are no obvious mistakes
|
|||
jshint: { |
|||
options: { |
|||
reporter: require('jshint-stylish'), |
|||
unused: false, |
|||
camelcase: false, |
|||
devel: true |
|||
}, |
|||
all: [ |
|||
'<%= config.base %>/{,**/}*.js', |
|||
'!<%= config.base %>/static/scripts/vendor/{,**/}*.js', |
|||
'!<%= config.base %>/static/scripts/combined.*.js' |
|||
] |
|||
}, |
|||
|
|||
// Compiles Sass to CSS and generates necessary files if requested
|
|||
sass: { |
|||
options: { |
|||
compass: true, |
|||
update: true, |
|||
sourcemap: 'none' |
|||
}, |
|||
server: { |
|||
files: [{ |
|||
expand: true, |
|||
cwd: '<%= config.base %>/', |
|||
src: ['**/*.scss'], |
|||
dest: '<%= config.tmp %>/styles/', |
|||
ext: '.css' |
|||
}] |
|||
} |
|||
}, |
|||
|
|||
// Empties folders to start fresh
|
|||
clean: { |
|||
server: '.tmp' |
|||
}, |
|||
|
|||
// Add vendor prefixed styles
|
|||
autoprefixer: { |
|||
options: { |
|||
browsers: ['last 2 versions'], |
|||
remove: false, |
|||
cascade: false |
|||
}, |
|||
dist: { |
|||
files: [{ |
|||
expand: true, |
|||
cwd: '<%= config.tmp %>/styles/', |
|||
src: '{,**/}*.css', |
|||
dest: '<%= config.tmp %>/styles/' |
|||
}] |
|||
} |
|||
}, |
|||
|
|||
cssmin: { |
|||
dist: { |
|||
options: { |
|||
keepBreaks: true |
|||
}, |
|||
files: { |
|||
'<%= config.css_dest %>': ['<%= config.tmp %>/styles/**/*.css'] |
|||
} |
|||
} |
|||
}, |
|||
|
|||
uglify: { |
|||
options: { |
|||
mangle: false, |
|||
compress: false, |
|||
beautify: true, |
|||
screwIE8: true |
|||
}, |
|||
vendor: { |
|||
files: { |
|||
'<%= config.scripts_vendor_dest %>': vendor_scripts_files |
|||
} |
|||
}, |
|||
base: { |
|||
files: { |
|||
'<%= config.scripts_base_dest %>': scripts_files |
|||
} |
|||
}, |
|||
plugins: { |
|||
files: { |
|||
'<%= config.scripts_plugins_dest %>': ['<%= config.base %>/core/**/*.js'] |
|||
} |
|||
} |
|||
}, |
|||
|
|||
shell: { |
|||
runCouchPotato: { |
|||
command: '<%= config.python %> CouchPotato.py', |
|||
options: { |
|||
stdout: true, |
|||
stderr: true |
|||
} |
|||
} |
|||
}, |
|||
|
|||
// COOL TASKS ==============================================================
|
|||
watch: { |
|||
scss: { |
|||
files: ['<%= config.base %>/**/*.{scss,sass}'], |
|||
tasks: ['sass:server', 'autoprefixer', 'cssmin'] |
|||
}, |
|||
js: { |
|||
files: [ |
|||
'<%= config.base %>/**/*.js', |
|||
'!<%= config.base %>/static/scripts/combined.*.js' |
|||
], |
|||
tasks: ['uglify:base', 'uglify:plugins', 'jshint'] |
|||
}, |
|||
livereload: { |
|||
options: { |
|||
livereload: 35729 |
|||
}, |
|||
files: [ |
|||
'<%= config.css_dest %>', |
|||
'<%= config.scripts_vendor_dest %>', |
|||
'<%= config.scripts_base_dest %>', |
|||
'<%= config.scripts_plugins_dest %>' |
|||
] |
|||
} |
|||
}, |
|||
|
|||
concurrent: { |
|||
options: { |
|||
logConcurrentOutput: true |
|||
}, |
|||
tasks: ['shell:runCouchPotato', 'watch'] |
|||
} |
|||
|
|||
}); |
|||
|
|||
grunt.registerTask('default', [ |
|||
'clean:server', |
|||
'sass:server', |
|||
'autoprefixer', |
|||
'cssmin', |
|||
'uglify:vendor', |
|||
'uglify:base', |
|||
'uglify:plugins', |
|||
'concurrent' |
|||
]); |
|||
|
|||
}; |
@ -0,0 +1,44 @@ |
|||
# First, require any additional compass plugins installed on your system. |
|||
# require 'zen-grids' |
|||
# require 'susy' |
|||
# require 'breakpoint' |
|||
|
|||
|
|||
# Toggle this between :development and :production when deploying the CSS to the |
|||
# live server. Development mode will retain comments and spacing from the |
|||
# original Sass source and adds line numbering comments for easier debugging. |
|||
environment = :development |
|||
# environment = :development |
|||
|
|||
# In development, we can turn on the FireSass-compatible debug_info. |
|||
firesass = false |
|||
# firesass = true |
|||
|
|||
|
|||
# Location of the your project's resources. |
|||
|
|||
|
|||
# Set this to the root of your project. All resource locations above are |
|||
# considered to be relative to this path. |
|||
http_path = "/" |
|||
|
|||
# To use relative paths to assets in your compiled CSS files, set this to true. |
|||
# relative_assets = true |
|||
|
|||
|
|||
## |
|||
## You probably don't need to edit anything below this. |
|||
## |
|||
sass_dir = "./couchpotato/static/style" |
|||
css_dir = "./couchpotato/static/style" |
|||
|
|||
# You can select your preferred output style here (can be overridden via the command line): |
|||
# output_style = :expanded or :nested or :compact or :compressed |
|||
output_style = (environment == :development) ? :expanded : :compressed |
|||
|
|||
# To disable debugging comments that display the original location of your selectors. Uncomment: |
|||
# line_comments = false |
|||
|
|||
# Pass options to sass. For development, we turn on the FireSass-compatible |
|||
# debug_info if the firesass config variable above is true. |
|||
sass_options = (environment == :development && firesass == true) ? {:debug_info => true} : {} |
@ -0,0 +1,131 @@ |
|||
import re |
|||
import json |
|||
import traceback |
|||
|
|||
from couchpotato.core.helpers.variable import tryInt, getIdentifier |
|||
from couchpotato.core.logger import CPLog |
|||
from couchpotato.core.media._base.providers.torrent.base import TorrentProvider |
|||
|
|||
|
|||
log = CPLog(__name__) |
|||
|
|||
|
|||
class Base(TorrentProvider): |
|||
|
|||
urls = { |
|||
'test': 'https://hd4free.xyz/', |
|||
'detail': 'https://hd4free.xyz/details.php?id=%s', |
|||
'search': 'https://hd4free.xyz/searchapi.php?apikey=%s&username=%s&imdbid=%s&internal=%s', |
|||
'download': 'https://hd4free.xyz/download.php?torrent=%s&torrent_pass=%s', |
|||
} |
|||
|
|||
http_time_between_calls = 1 # Seconds |
|||
|
|||
def _search(self, movie, quality, results): |
|||
data = self.getJsonData(self.urls['search'] % (self.conf('apikey'), self.conf('username'), getIdentifier(movie), self.conf('internal_only'))) |
|||
|
|||
if data: |
|||
try: |
|||
#for result in data[]: |
|||
for key, result in data.iteritems(): |
|||
if tryInt(result['total_results']) == 0: |
|||
return |
|||
torrentscore = self.conf('extra_score') |
|||
releasegroup = result['releasegroup'] |
|||
resolution = result['resolution'] |
|||
encoding = result['encoding'] |
|||
freeleech = tryInt(result['freeleech']) |
|||
seeders = tryInt(result['seeders']) |
|||
torrent_desc = '/ %s / %s / %s / %s seeders' % (releasegroup, resolution, encoding, seeders) |
|||
|
|||
if freeleech > 0 and self.conf('prefer_internal'): |
|||
torrent_desc += '/ Internal' |
|||
torrentscore += 200 |
|||
|
|||
if seeders == 0: |
|||
torrentscore = 0 |
|||
|
|||
name = result['release_name'] |
|||
year = tryInt(result['year']) |
|||
|
|||
results.append({ |
|||
'id': tryInt(result['torrentid']), |
|||
'name': re.sub('[^A-Za-z0-9\-_ \(\).]+', '', '%s (%s) %s' % (name, year, torrent_desc)), |
|||
'url': self.urls['download'] % (result['torrentid'], result['torrentpass']), |
|||
'detail_url': self.urls['detail'] % result['torrentid'], |
|||
'size': tryInt(result['size']), |
|||
'seeders': tryInt(result['seeders']), |
|||
'leechers': tryInt(result['leechers']), |
|||
'age': tryInt(result['age']), |
|||
'score': torrentscore |
|||
}) |
|||
except: |
|||
log.error('Failed getting results from %s: %s', (self.getName(), traceback.format_exc())) |
|||
config = [{ |
|||
'name': 'hd4free', |
|||
'groups': [ |
|||
{ |
|||
'tab': 'searcher', |
|||
'list': 'torrent_providers', |
|||
'name': 'HD4Free', |
|||
'wizard': True, |
|||
'description': '<a href="https://hd4free.xyz">HD4Free</a>', |
|||
'icon': 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABX1BMVEUF6nsH33cJ03EJ1XIJ1nMKzXIKz28Lym4MxGsMxWsMx2wNvmgNv2kNwGkNwWwOuGgOuWYOuWcOumcOu2cOvmgPtWQPtmUPt2UPt2YQr2IQsGIQsGMQsmMQs2QRqmARq2ARrmERrmISpV4SpmASp14SqF8ToFsToFwToVwTo10TpV0UnFoUn1sVllcVmFgWkFUWklYXjVQXjlMXkFUYh1EYilIYi1MZhlEafk0af04agE4agU4beEobeUsbe0wcdUkeaUQebUYfZEMfZ0QgX0AgYEAgYUEhWj4iVz0iWD0jTzkkSzcmQTMmQzQnPTInPjInPzIoNy8oOC8oODAoOTAoOjApMi0pNC4pNS4qLCoqLSsqLisqMCwrJygrKCgrKCkrKSkrKikrKiorKyosIyYsIycsJCcsJScsJigtHyUuGCIuGiMuGyMuHCMuHCQvEyAvFSEvFiEvFyE0ABU0ABY5lYz4AAAA3ElEQVR4AWNIQAMMiYmJCYkIkMCQnpKWkZ4KBGlARlpaLEOor194kI+Pj6+PT0CET0AYg46Alr22NDeHkBinnq6SkitDrolDgYtaapajdpGppoFfGkMhv2GxE0uuPwNfsk6mhHMOQ54isxmbUJKCtWx+tIZQcDpDtqSol7qIMqsRu3dIhJxxFkOBoF2JG5O7lSqjh5S/tkkWQ5SBTbqnfkymv2WGLa95YCSDhZiMvKIwj4GJCpesuDivK0N6VFRUYlRyfHJUchQQJDMkxsfHJcTHAxEIxMVj+BZDAACjwkqhYgsTAAAAAABJRU5ErkJggg==', |
|||
'options': [ |
|||
{ |
|||
'name': 'enabled', |
|||
'type': 'enabler', |
|||
'default': False, |
|||
}, |
|||
{ |
|||
'name': 'username', |
|||
'default': '', |
|||
'description': 'Enter your site username.', |
|||
}, |
|||
{ |
|||
'name': 'apikey', |
|||
'default': '', |
|||
'label': 'API Key', |
|||
'description': 'Enter your site api key. This can be find on <a href="https://hd4free.xyz/usercp.php?action=security">Profile Security</a>', |
|||
}, |
|||
{ |
|||
'name': 'seed_ratio', |
|||
'label': 'Seed ratio', |
|||
'type': 'float', |
|||
'default': 0, |
|||
'description': 'Will not be (re)moved until this seed ratio is met. HD4Free minimum is 1:1.', |
|||
}, |
|||
{ |
|||
'name': 'seed_time', |
|||
'label': 'Seed time', |
|||
'type': 'int', |
|||
'default': 0, |
|||
'description': 'Will not be (re)moved until this seed time (in hours) is met. HD4Free minimum is 72 hours.', |
|||
}, |
|||
{ |
|||
'name': 'prefer_internal', |
|||
'advanced': True, |
|||
'type': 'bool', |
|||
'default': 1, |
|||
'description': 'Favors internal releases over non-internal releases.', |
|||
}, |
|||
{ |
|||
'name': 'internal_only', |
|||
'advanced': True, |
|||
'label': 'Internal Only', |
|||
'type': 'bool', |
|||
'default': False, |
|||
'description': 'Only download releases marked as HD4Free internal', |
|||
}, |
|||
{ |
|||
'name': 'extra_score', |
|||
'advanced': True, |
|||
'label': 'Extra Score', |
|||
'type': 'int', |
|||
'default': 0, |
|||
'description': 'Starting score for each release found via this provider.', |
|||
} |
|||
], |
|||
}, |
|||
], |
|||
}] |
@ -1,277 +0,0 @@ |
|||
.search_form { |
|||
display: inline-block; |
|||
vertical-align: middle; |
|||
position: absolute; |
|||
right: 105px; |
|||
top: 0; |
|||
text-align: right; |
|||
height: 100%; |
|||
transition: all .4s cubic-bezier(0.9,0,0.1,1); |
|||
z-index: 20; |
|||
border: 0 solid transparent; |
|||
border-bottom-width: 4px; |
|||
} |
|||
.search_form:hover { |
|||
border-color: #047792; |
|||
} |
|||
|
|||
@media all and (max-width: 480px) { |
|||
.search_form { |
|||
right: 44px; |
|||
} |
|||
} |
|||
|
|||
.search_form.focused, |
|||
.search_form.shown { |
|||
border-color: #04bce6; |
|||
} |
|||
|
|||
.search_form .input { |
|||
height: 100%; |
|||
overflow: hidden; |
|||
width: 45px; |
|||
transition: all .4s cubic-bezier(0.9,0,0.1,1); |
|||
} |
|||
|
|||
.search_form.focused .input, |
|||
.search_form.shown .input { |
|||
width: 380px; |
|||
background: #4e5969; |
|||
} |
|||
|
|||
.search_form .input input { |
|||
border-radius: 0; |
|||
display: block; |
|||
border: 0; |
|||
background: none; |
|||
color: #FFF; |
|||
font-size: 25px; |
|||
height: 100%; |
|||
width: 100%; |
|||
opacity: 0; |
|||
padding: 0 40px 0 10px; |
|||
transition: all .4s ease-in-out .2s; |
|||
} |
|||
.search_form.focused .input input, |
|||
.search_form.shown .input input { |
|||
opacity: 1; |
|||
} |
|||
|
|||
.search_form input::-ms-clear { |
|||
width : 0; |
|||
height: 0; |
|||
} |
|||
|
|||
@media all and (max-width: 480px) { |
|||
.search_form .input input { |
|||
font-size: 15px; |
|||
} |
|||
|
|||
.search_form.focused .input, |
|||
.search_form.shown .input { |
|||
width: 277px; |
|||
} |
|||
} |
|||
|
|||
.search_form .input a { |
|||
position: absolute; |
|||
top: 0; |
|||
right: 0; |
|||
width: 44px; |
|||
height: 100%; |
|||
cursor: pointer; |
|||
vertical-align: middle; |
|||
text-align: center; |
|||
line-height: 66px; |
|||
font-size: 15px; |
|||
color: #FFF; |
|||
} |
|||
|
|||
.search_form .input a:after { |
|||
content: "\e03e"; |
|||
} |
|||
|
|||
.search_form.shown.filled .input a:after { |
|||
content: "\e04e"; |
|||
} |
|||
|
|||
@media all and (max-width: 480px) { |
|||
.search_form .input a { |
|||
line-height: 44px; |
|||
} |
|||
} |
|||
|
|||
.search_form .results_container { |
|||
text-align: left; |
|||
position: absolute; |
|||
background: #5c697b; |
|||
margin: 4px 0 0; |
|||
width: 470px; |
|||
min-height: 50px; |
|||
box-shadow: 0 20px 20px -10px rgba(0,0,0,0.55); |
|||
display: none; |
|||
} |
|||
@media all and (max-width: 480px) { |
|||
.search_form .results_container { |
|||
width: 320px; |
|||
} |
|||
} |
|||
.search_form.focused.filled .results_container, |
|||
.search_form.shown.filled .results_container { |
|||
display: block; |
|||
} |
|||
|
|||
.search_form .results { |
|||
max-height: 570px; |
|||
overflow-x: hidden; |
|||
} |
|||
|
|||
.media_result { |
|||
overflow: hidden; |
|||
height: 50px; |
|||
position: relative; |
|||
} |
|||
|
|||
.media_result .options { |
|||
position: absolute; |
|||
height: 100%; |
|||
top: 0; |
|||
left: 30px; |
|||
right: 0; |
|||
padding: 13px; |
|||
border: 1px solid transparent; |
|||
border-width: 1px 0; |
|||
border-radius: 0; |
|||
box-shadow: inset 0 1px 8px rgba(0,0,0,0.25); |
|||
} |
|||
.media_result .options > .in_library_wanted { |
|||
margin-top: -7px; |
|||
} |
|||
|
|||
.media_result .options > div { |
|||
border: 0; |
|||
} |
|||
|
|||
.media_result .options .thumbnail { |
|||
vertical-align: middle; |
|||
} |
|||
|
|||
.media_result .options select { |
|||
vertical-align: middle; |
|||
display: inline-block; |
|||
margin-right: 10px; |
|||
} |
|||
.media_result .options select[name=title] { width: 170px; } |
|||
.media_result .options select[name=profile] { width: 90px; } |
|||
.media_result .options select[name=category] { width: 80px; } |
|||
|
|||
@media all and (max-width: 480px) { |
|||
|
|||
.media_result .options select[name=title] { width: 90px; } |
|||
.media_result .options select[name=profile] { width: 50px; } |
|||
.media_result .options select[name=category] { width: 50px; } |
|||
|
|||
} |
|||
|
|||
.media_result .options .button { |
|||
vertical-align: middle; |
|||
display: inline-block; |
|||
} |
|||
|
|||
.media_result .options .message { |
|||
height: 100%; |
|||
font-size: 20px; |
|||
color: #fff; |
|||
line-height: 20px; |
|||
} |
|||
|
|||
.media_result .data { |
|||
position: absolute; |
|||
height: 100%; |
|||
top: 0; |
|||
left: 30px; |
|||
right: 0; |
|||
background: #5c697b; |
|||
cursor: pointer; |
|||
border-top: 1px solid rgba(255,255,255, 0.08); |
|||
transition: all .4s cubic-bezier(0.9,0,0.1,1); |
|||
} |
|||
.media_result .data.open { |
|||
left: 100% !important; |
|||
} |
|||
|
|||
.media_result:last-child .data { border-bottom: 0; } |
|||
|
|||
.media_result .in_wanted, .media_result .in_library { |
|||
position: absolute; |
|||
bottom: 2px; |
|||
left: 14px; |
|||
font-size: 11px; |
|||
} |
|||
|
|||
.media_result .thumbnail { |
|||
width: 34px; |
|||
min-height: 100%; |
|||
display: block; |
|||
margin: 0; |
|||
vertical-align: top; |
|||
} |
|||
|
|||
.media_result .info { |
|||
position: absolute; |
|||
top: 20%; |
|||
left: 15px; |
|||
right: 7px; |
|||
vertical-align: middle; |
|||
} |
|||
|
|||
.media_result .info h2 { |
|||
margin: 0; |
|||
font-weight: normal; |
|||
font-size: 20px; |
|||
padding: 0; |
|||
} |
|||
|
|||
.search_form .info h2 { |
|||
position: absolute; |
|||
width: 100%; |
|||
} |
|||
|
|||
.media_result .info h2 .title { |
|||
display: block; |
|||
margin: 0; |
|||
text-overflow: ellipsis; |
|||
overflow: hidden; |
|||
white-space: nowrap; |
|||
} |
|||
|
|||
.search_form .info h2 .title { |
|||
position: absolute; |
|||
width: 88%; |
|||
} |
|||
|
|||
.media_result .info h2 .year { |
|||
padding: 0 5px; |
|||
text-align: center; |
|||
position: absolute; |
|||
width: 12%; |
|||
right: 0; |
|||
} |
|||
|
|||
@media all and (max-width: 480px) { |
|||
|
|||
.search_form .info h2 .year { |
|||
font-size: 12px; |
|||
margin-top: 7px; |
|||
} |
|||
|
|||
} |
|||
|
|||
.search_form .mask, |
|||
.media_result .mask { |
|||
position: absolute; |
|||
height: 100%; |
|||
width: 100%; |
|||
left: 0; |
|||
top: 0; |
|||
} |
@ -0,0 +1,503 @@ |
|||
@import "_mixins"; |
|||
|
|||
.search_form { |
|||
display: inline-block; |
|||
z-index: 11; |
|||
width: 44px; |
|||
position: relative; |
|||
|
|||
* { |
|||
transform: translateZ(0); |
|||
} |
|||
|
|||
.icon-search { |
|||
position: absolute; |
|||
z-index: 2; |
|||
top: 50%; |
|||
left: 0; |
|||
height: 100%; |
|||
text-align: center; |
|||
color: #FFF; |
|||
font-size: 20px; |
|||
transform: translateY(-50%); |
|||
} |
|||
|
|||
.wrapper { |
|||
position: absolute; |
|||
left: 44px; |
|||
bottom: 0; |
|||
background: $primary_color; |
|||
border-radius: $border_radius 0 0 $border_radius; |
|||
display: none; |
|||
box-shadow: 0 0 15px 2px rgba(0,0,0,.15); |
|||
|
|||
&:before { |
|||
transform: rotate(45deg); |
|||
content: ''; |
|||
display: block; |
|||
position: absolute; |
|||
height: 10px; |
|||
width: 10px; |
|||
background: $primary_color; |
|||
left: -6px; |
|||
bottom: 16px; |
|||
z-index: 1; |
|||
} |
|||
} |
|||
|
|||
.input { |
|||
background: $background_color; |
|||
border-radius: $border_radius 0 0 $border_radius; |
|||
position: relative; |
|||
left: 4px; |
|||
height: 44px; |
|||
overflow: hidden; |
|||
width: 100%; |
|||
|
|||
input { |
|||
position: absolute; |
|||
top: 0; |
|||
left: 0; |
|||
height: 100%; |
|||
width: 100%; |
|||
z-index: 1; |
|||
|
|||
&::-ms-clear { |
|||
width : 0; |
|||
height: 0; |
|||
} |
|||
|
|||
&:focus { |
|||
background: rgba($theme_off, .2); |
|||
|
|||
&::-webkit-input-placeholder { |
|||
color: $text_color; |
|||
opacity: .7; |
|||
} |
|||
&::-moz-placeholder { |
|||
color: $text_color; |
|||
opacity: .7; |
|||
} |
|||
&:-ms-input-placeholder { |
|||
color: $text_color; |
|||
opacity: .7; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
&.filled { |
|||
&.focused .icon-search:before, |
|||
.page.home & .icon-search:before { |
|||
content: '\e80e'; |
|||
} |
|||
|
|||
.input input { |
|||
background: rgba($theme_off, .4); |
|||
} |
|||
} |
|||
|
|||
&.focused, |
|||
&.shown, |
|||
.page.home & { |
|||
border-color: #04bce6; |
|||
|
|||
.wrapper { |
|||
display: block; |
|||
width: 380px; |
|||
transform-origin: 0 90%; |
|||
|
|||
@include media-phablet { |
|||
width: 260px; |
|||
} |
|||
} |
|||
|
|||
.input { |
|||
|
|||
input { |
|||
opacity: 1; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.results_container { |
|||
min-height: 50px; |
|||
text-align: left; |
|||
position: relative; |
|||
left: 4px; |
|||
display: none; |
|||
background: $background_color; |
|||
border-radius: $border_radius 0 0 0; |
|||
overflow: hidden; |
|||
|
|||
.results { |
|||
max-height: 280px; |
|||
overflow-x: hidden; |
|||
|
|||
.media_result { |
|||
overflow: hidden; |
|||
height: 50px; |
|||
position: relative; |
|||
|
|||
@include media-phablet { |
|||
font-size: 12px; |
|||
} |
|||
|
|||
.options { |
|||
position: absolute; |
|||
height: 100%; |
|||
top: 0; |
|||
left: 30px; |
|||
right: 0; |
|||
background: rgba(0,0,0,.3); |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
@include media-phablet { |
|||
left: 0; |
|||
} |
|||
|
|||
> .in_library_wanted { |
|||
margin-top: -7px; |
|||
} |
|||
|
|||
> div { |
|||
border: 0; |
|||
display: flex; |
|||
padding: 10px; |
|||
align-items: stretch; |
|||
justify-content: space-between; |
|||
|
|||
@include media-phablet { |
|||
padding: 3px; |
|||
} |
|||
} |
|||
|
|||
select { |
|||
display: block; |
|||
height: 100%; |
|||
width: 100%; |
|||
|
|||
@include media-phablet { |
|||
min-width: 0; |
|||
margin-right: 2px; |
|||
} |
|||
} |
|||
|
|||
.title { |
|||
margin-right: 5px; |
|||
width: 210px; |
|||
|
|||
@include media-phablet { |
|||
width: 140px; |
|||
margin-right: 2px; |
|||
} |
|||
} |
|||
|
|||
.profile, .category { |
|||
margin: 0 5px 0 0; |
|||
|
|||
@include media-phablet { |
|||
margin-right: 2px; |
|||
} |
|||
} |
|||
|
|||
.add { |
|||
width: 42px; |
|||
flex: 1 auto; |
|||
|
|||
a { |
|||
color: #FFF; |
|||
} |
|||
} |
|||
|
|||
.button { |
|||
display: block; |
|||
background: $primary_color; |
|||
text-align: center; |
|||
margin: 0; |
|||
} |
|||
|
|||
.message { |
|||
font-size: 20px; |
|||
color: #fff; |
|||
} |
|||
|
|||
} |
|||
|
|||
.thumbnail { |
|||
width: 30px; |
|||
min-height: 100%; |
|||
display: block; |
|||
margin: 0; |
|||
vertical-align: top; |
|||
|
|||
@include media-phablet { |
|||
display: none; |
|||
} |
|||
} |
|||
|
|||
.data { |
|||
position: absolute; |
|||
height: 100%; |
|||
top: 0; |
|||
left: 30px; |
|||
right: 0; |
|||
cursor: pointer; |
|||
border-top: 1px solid rgba(255,255,255, 0.08); |
|||
transition: all .4s cubic-bezier(0.9,0,0.1,1); |
|||
transform: translateX(0); |
|||
background: $background_color; |
|||
|
|||
@include media-phablet { |
|||
left: 0; |
|||
} |
|||
|
|||
&:hover { |
|||
transform: translateX(2%); |
|||
} |
|||
|
|||
&.open { |
|||
transform: translateX(100%); |
|||
} |
|||
|
|||
.info { |
|||
position: absolute; |
|||
top: 20%; |
|||
left: 15px; |
|||
right: 7px; |
|||
vertical-align: middle; |
|||
|
|||
h2 { |
|||
margin: 0; |
|||
font-weight: 300; |
|||
font-size: 1.25em; |
|||
padding: 0; |
|||
position: absolute; |
|||
width: 100%; |
|||
display: flex; |
|||
|
|||
.title { |
|||
display: inline-block; |
|||
margin: 0; |
|||
text-overflow: ellipsis; |
|||
overflow: hidden; |
|||
white-space: nowrap; |
|||
flex: 1 auto; |
|||
} |
|||
|
|||
.year { |
|||
opacity: .4; |
|||
padding: 0 5px; |
|||
width: auto; |
|||
display: none; |
|||
} |
|||
|
|||
.in_wanted, |
|||
.in_library { |
|||
position: absolute; |
|||
top: 15px; |
|||
left: 0; |
|||
font-size: 11px; |
|||
color: $primary_color; |
|||
} |
|||
|
|||
&.in_library_wanted { |
|||
.title { |
|||
margin-top: -7px; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
&:hover .info h2 .year { |
|||
display: inline-block; |
|||
} |
|||
|
|||
&:last-child .data { |
|||
border-bottom: 0; |
|||
} |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
&.focused.filled, |
|||
&.shown.filled { |
|||
.results_container { |
|||
display: block; |
|||
} |
|||
|
|||
.input { |
|||
border-radius: 0 0 0 $border_radius; |
|||
} |
|||
} |
|||
|
|||
.page.home & { |
|||
$input_height: 66px; |
|||
$input_height_mobile: 44px; |
|||
|
|||
display: block; |
|||
padding: $padding; |
|||
width: 100%; |
|||
max-width: 500px; |
|||
margin: 0 auto; |
|||
height: $input_height + 2*$padding; |
|||
position: relative; |
|||
margin-top: $padding; |
|||
|
|||
@include media-phablet { |
|||
margin-top: $padding/2; |
|||
height: $input_height_mobile + $padding; |
|||
} |
|||
|
|||
.icon-search { |
|||
display: block; |
|||
color: #000; |
|||
right: $padding; |
|||
top: $padding; |
|||
width: $input_height; |
|||
height: $input_height; |
|||
line-height: $input_height; |
|||
left: auto; |
|||
transform: none; |
|||
font-size: 2em; |
|||
opacity: .5; |
|||
|
|||
@include media-phablet { |
|||
right: $padding/2; |
|||
width: $input_height_mobile; |
|||
height: $input_height_mobile; |
|||
line-height: $input_height_mobile; |
|||
right: $padding/2; |
|||
top: $padding/2; |
|||
font-size: 1.5em; |
|||
} |
|||
} |
|||
|
|||
.wrapper { |
|||
border-radius: 0; |
|||
box-shadow: none; |
|||
bottom: auto; |
|||
top: $padding; |
|||
left: $padding; |
|||
right: $padding; |
|||
position: absolute; |
|||
width: auto; |
|||
|
|||
@include media-phablet { |
|||
right: $padding/2; |
|||
top: $padding/2; |
|||
left: $padding/2; |
|||
} |
|||
|
|||
&:before { |
|||
display: none; |
|||
} |
|||
|
|||
.input { |
|||
border-radius: 0; |
|||
left: 0; |
|||
position: absolute; |
|||
top: 0; |
|||
height: $input_height; |
|||
|
|||
@include media-phablet { |
|||
height: $input_height_mobile; |
|||
} |
|||
|
|||
input { |
|||
box-shadow: 0; |
|||
font-size: 2em; |
|||
font-weight: 400; |
|||
|
|||
@include media-phablet { |
|||
font-size: 1em; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.results_container { |
|||
min-height: $input_height; |
|||
position: absolute; |
|||
top: $input_height; |
|||
left: 0; |
|||
right: 0; |
|||
border: 1px solid #b7b7b7; |
|||
border-top: 0; |
|||
|
|||
@include media-phablet { |
|||
top: $input_height_mobile; |
|||
min-height: $input_height_mobile; |
|||
} |
|||
|
|||
|
|||
@include media-phablet-and-up { |
|||
.results { |
|||
max-height: 400px; |
|||
|
|||
.media_result { |
|||
height: $input_height; |
|||
|
|||
|
|||
@include media-phablet { |
|||
height: $input_height_mobile; |
|||
} |
|||
|
|||
.thumbnail { |
|||
width: 40px; |
|||
} |
|||
|
|||
.options { |
|||
left: 40px; |
|||
|
|||
.title { |
|||
margin-right: 5px; |
|||
width: 320px; |
|||
|
|||
@include media-phablet { |
|||
width: 140px; |
|||
margin-right: 2px; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.data { |
|||
left: 40px; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
@include media-phablet { |
|||
.results { |
|||
.media_result { |
|||
height: $input_height_mobile; |
|||
|
|||
.options { |
|||
|
|||
.title { |
|||
|
|||
width: 140px; |
|||
margin-right: 2px; |
|||
} |
|||
|
|||
} |
|||
|
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
.big_search { |
|||
background: $theme_off; |
|||
} |
@ -0,0 +1,154 @@ |
|||
var MovieDetails = new Class({ |
|||
|
|||
Extends: BlockBase, |
|||
|
|||
sections: null, |
|||
buttons: null, |
|||
|
|||
initialize: function(parent, options){ |
|||
var self = this; |
|||
|
|||
self.sections = {}; |
|||
|
|||
var category = parent.get('category'), |
|||
profile = parent.profile; |
|||
|
|||
self.el = new Element('div',{ |
|||
'class': 'page active movie_details level_' + (options.level || 0) |
|||
}).adopt( |
|||
self.overlay = new Element('div.overlay', { |
|||
'events': { |
|||
'click': self.close.bind(self) |
|||
} |
|||
}).grab( |
|||
new Element('a.close.icon-left-arrow') |
|||
), |
|||
self.content = new Element('div.scroll_content').grab( |
|||
new Element('div.head').adopt( |
|||
new Element('h1').grab( |
|||
self.title_dropdown = new BlockMenu(self, { |
|||
'class': 'title', |
|||
'button_text': parent.getTitle() + (parent.get('year') ? ' (' + parent.get('year') + ')' : ''), |
|||
'button_class': 'icon-dropdown' |
|||
}) |
|||
), |
|||
self.buttons = new Element('div.buttons') |
|||
) |
|||
) |
|||
); |
|||
|
|||
self.addSection('description', new Element('div', { |
|||
'text': parent.get('plot') |
|||
})); |
|||
|
|||
|
|||
// Title dropdown
|
|||
var titles = parent.get('info').titles; |
|||
$(self.title_dropdown).addEvents({ |
|||
'click:relay(li a)': function(e, el){ |
|||
(e).stopPropagation(); |
|||
|
|||
// Update category
|
|||
Api.request('movie.edit', { |
|||
'data': { |
|||
'id': parent.get('_id'), |
|||
'default_title': el.get('text') |
|||
} |
|||
}); |
|||
|
|||
$(self.title_dropdown).getElements('.icon-ok').removeClass('icon-ok'); |
|||
el.addClass('icon-ok'); |
|||
|
|||
self.title_dropdown.button.set('text', el.get('text') + (parent.get('year') ? ' (' + parent.get('year') + ')' : '')); |
|||
|
|||
} |
|||
}); |
|||
|
|||
titles.each(function(t){ |
|||
self.title_dropdown.addLink(new Element('a', { |
|||
'text': t, |
|||
'class': parent.get('title') == t ? 'icon-ok' : '' |
|||
})); |
|||
}); |
|||
|
|||
}, |
|||
|
|||
addSection: function(name, section_el){ |
|||
var self = this; |
|||
name = name.toLowerCase(); |
|||
|
|||
self.content.grab( |
|||
self.sections[name] = new Element('div', { |
|||
'class': 'section section_' + name |
|||
}).grab(section_el) |
|||
); |
|||
}, |
|||
|
|||
addButton: function(button){ |
|||
var self = this; |
|||
|
|||
self.buttons.grab(button); |
|||
}, |
|||
|
|||
open: function(){ |
|||
var self = this; |
|||
|
|||
self.el.addClass('show'); |
|||
|
|||
if(!App.mobile_screen){ |
|||
$(self.content).getElements('> .head, > .section').each(function(section, nr){ |
|||
dynamics.css(section, { |
|||
opacity: 0, |
|||
translateY: 100 |
|||
}); |
|||
|
|||
dynamics.animate(section, { |
|||
opacity: 1, |
|||
translateY: 0 |
|||
}, { |
|||
type: dynamics.spring, |
|||
frequency: 200, |
|||
friction: 300, |
|||
duration: 1200, |
|||
delay: 500 + (nr * 100) |
|||
}); |
|||
}); |
|||
} |
|||
|
|||
}, |
|||
|
|||
close: function(){ |
|||
var self = this; |
|||
|
|||
var ended = function() { |
|||
self.el.dispose(); |
|||
self.overlay.removeEventListener('transitionend', ended); |
|||
}; |
|||
self.overlay.addEventListener('transitionend', ended, false); |
|||
|
|||
// animate out
|
|||
|
|||
if(!App.mobile_screen){ |
|||
$(self.content).getElements('> .head, > .section').reverse().each(function(section, nr){ |
|||
dynamics.animate(section, { |
|||
opacity: 0, |
|||
translateY: 100 |
|||
}, { |
|||
type: dynamics.spring, |
|||
frequency: 200, |
|||
friction: 300, |
|||
duration: 1200, |
|||
delay: (nr * 50) |
|||
}); |
|||
}); |
|||
|
|||
dynamics.setTimeout(function(){ |
|||
self.el.removeClass('show'); |
|||
}, 200); |
|||
} |
|||
else { |
|||
self.el.removeClass('show'); |
|||
} |
|||
} |
|||
|
|||
}); |
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -0,0 +1,50 @@ |
|||
Page.Movies = new Class({ |
|||
|
|||
Extends: PageBase, |
|||
|
|||
name: 'movies', |
|||
icon: 'movie', |
|||
sub_pages: ['Wanted', 'Manage'], |
|||
default_page: 'Wanted', |
|||
current_page: null, |
|||
|
|||
initialize: function(parent, options){ |
|||
var self = this; |
|||
self.parent(parent, options); |
|||
|
|||
self.navigation = new BlockNavigation(); |
|||
$(self.navigation).inject(self.content, 'top'); |
|||
|
|||
}, |
|||
|
|||
defaultAction: function(action, params){ |
|||
var self = this; |
|||
|
|||
if(self.current_page){ |
|||
self.current_page.hide(); |
|||
|
|||
if(self.current_page.list && self.current_page.list.navigation) |
|||
self.current_page.list.navigation.dispose(); |
|||
} |
|||
|
|||
var route = new Route(); |
|||
route.parse(action); |
|||
|
|||
var page_name = route.getPage() != 'index' ? route.getPage().capitalize() : self.default_page; |
|||
|
|||
var page = self.sub_pages.filter(function(page){ |
|||
return page.name == page_name; |
|||
}).pick()['class']; |
|||
|
|||
page.open(route.getAction() || 'index', params); |
|||
page.show(); |
|||
|
|||
if(page.list && page.list.navigation) |
|||
page.list.navigation.inject(self.navigation); |
|||
|
|||
self.current_page = page; |
|||
self.navigation.activate(page_name.toLowerCase()); |
|||
|
|||
} |
|||
|
|||
}); |
@ -1,95 +0,0 @@ |
|||
from xml.etree.ElementTree import QName |
|||
import datetime |
|||
import re |
|||
|
|||
from couchpotato.core.helpers.rss import RSS |
|||
from couchpotato.core.helpers.variable import tryInt, splitString |
|||
from couchpotato.core.logger import CPLog |
|||
from couchpotato.core.media.movie.providers.automation.base import Automation |
|||
|
|||
|
|||
log = CPLog(__name__) |
|||
|
|||
autoload = 'Rottentomatoes' |
|||
|
|||
|
|||
class Rottentomatoes(Automation, RSS): |
|||
|
|||
interval = 1800 |
|||
|
|||
def getIMDBids(self): |
|||
|
|||
movies = [] |
|||
|
|||
rotten_tomatoes_namespace = 'http://www.rottentomatoes.com/xmlns/rtmovie/' |
|||
urls = dict(zip(splitString(self.conf('automation_urls')), [tryInt(x) for x in splitString(self.conf('automation_urls_use'))])) |
|||
|
|||
for url in urls: |
|||
|
|||
if not urls[url]: |
|||
continue |
|||
|
|||
rss_movies = self.getRSSData(url) |
|||
rating_tag = str(QName(rotten_tomatoes_namespace, 'tomatometer_percent')) |
|||
|
|||
for movie in rss_movies: |
|||
|
|||
value = self.getTextElement(movie, "title") |
|||
result = re.search('(?<=%\s).*', value) |
|||
|
|||
if result: |
|||
|
|||
rating = tryInt(self.getTextElement(movie, rating_tag)) |
|||
name = result.group(0) |
|||
|
|||
print rating, tryInt(self.conf('tomatometer_percent')) |
|||
if rating < tryInt(self.conf('tomatometer_percent')): |
|||
log.info2('%s seems to be rotten...', name) |
|||
else: |
|||
log.info2('Found %s with fresh rating %s', (name, rating)) |
|||
year = datetime.datetime.now().strftime("%Y") |
|||
imdb = self.search(name, year) |
|||
|
|||
if imdb and self.isMinimalMovie(imdb): |
|||
movies.append(imdb['imdb']) |
|||
|
|||
return movies |
|||
|
|||
|
|||
config = [{ |
|||
'name': 'rottentomatoes', |
|||
'groups': [ |
|||
{ |
|||
'tab': 'automation', |
|||
'list': 'automation_providers', |
|||
'name': 'rottentomatoes_automation', |
|||
'label': 'Rottentomatoes', |
|||
'description': 'Imports movies from rottentomatoes rss feeds specified below.', |
|||
'options': [ |
|||
{ |
|||
'name': 'automation_enabled', |
|||
'default': False, |
|||
'type': 'enabler', |
|||
}, |
|||
{ |
|||
'name': 'automation_urls_use', |
|||
'label': 'Use', |
|||
'default': '1', |
|||
}, |
|||
{ |
|||
'name': 'automation_urls', |
|||
'label': 'url', |
|||
'type': 'combined', |
|||
'combine': ['automation_urls_use', 'automation_urls'], |
|||
'default': 'http://www.rottentomatoes.com/syndication/rss/in_theaters.xml', |
|||
}, |
|||
{ |
|||
'name': 'tomatometer_percent', |
|||
'default': '80', |
|||
'label': 'Tomatometer', |
|||
'description': 'Use as extra scoring requirement', |
|||
}, |
|||
], |
|||
}, |
|||
], |
|||
}] |
@ -0,0 +1,11 @@ |
|||
from couchpotato.core.logger import CPLog |
|||
from couchpotato.core.media._base.providers.torrent.hd4free import Base |
|||
from couchpotato.core.media.movie.providers.base import MovieProvider |
|||
|
|||
log = CPLog(__name__) |
|||
|
|||
autoload = 'HD4Free' |
|||
|
|||
|
|||
class HD4Free(MovieProvider, Base): |
|||
pass |
@ -1,162 +0,0 @@ |
|||
.suggestions { |
|||
clear: both; |
|||
padding-top: 10px; |
|||
margin-bottom: 30px; |
|||
} |
|||
|
|||
.suggestions > h2 { |
|||
height: 40px; |
|||
} |
|||
|
|||
.suggestions .media_result { |
|||
display: inline-block; |
|||
width: 33.333%; |
|||
height: 150px; |
|||
} |
|||
|
|||
@media all and (max-width: 960px) { |
|||
.suggestions .media_result { |
|||
width: 50%; |
|||
} |
|||
} |
|||
|
|||
@media all and (max-width: 600px) { |
|||
.suggestions .media_result { |
|||
width: 100%; |
|||
} |
|||
} |
|||
|
|||
.suggestions .media_result .data { |
|||
left: 100px; |
|||
background: #4e5969; |
|||
border: none; |
|||
} |
|||
|
|||
.suggestions .media_result .data .info { |
|||
top: 10px; |
|||
left: 15px; |
|||
right: 15px; |
|||
bottom: 10px; |
|||
overflow: hidden; |
|||
} |
|||
|
|||
.suggestions .media_result .data .info h2 { |
|||
white-space: normal; |
|||
max-height: 120px; |
|||
font-size: 18px; |
|||
line-height: 18px; |
|||
} |
|||
|
|||
.suggestions .media_result .data .info .rating, |
|||
.suggestions .media_result .data .info .genres, |
|||
.suggestions .media_result .data .info .year { |
|||
position: static; |
|||
display: block; |
|||
padding: 0; |
|||
opacity: .6; |
|||
} |
|||
|
|||
.suggestions .media_result .data .info .year { |
|||
margin: 10px 0 0; |
|||
} |
|||
|
|||
.suggestions .media_result .data .info .rating { |
|||
font-size: 20px; |
|||
float: right; |
|||
margin-top: -20px; |
|||
} |
|||
.suggestions .media_result .data .info .rating:before { |
|||
content: "\e031"; |
|||
font-family: 'Elusive-Icons'; |
|||
font-size: 14px; |
|||
margin: 0 5px 0 0; |
|||
vertical-align: bottom; |
|||
} |
|||
|
|||
.suggestions .media_result .data .info .genres { |
|||
font-size: 11px; |
|||
font-style: italic; |
|||
text-align: right; |
|||
} |
|||
|
|||
.suggestions .media_result .data .info .plot { |
|||
display: block; |
|||
font-size: 11px; |
|||
overflow: hidden; |
|||
text-align: justify; |
|||
height: 100%; |
|||
z-index: 2; |
|||
top: 64px; |
|||
position: absolute; |
|||
background: #4e5969; |
|||
cursor: pointer; |
|||
transition: all .4s ease-in-out; |
|||
padding: 0 3px 10px 0; |
|||
} |
|||
.suggestions .media_result .data:before { |
|||
content: ''; |
|||
display: block; |
|||
height: 10px; |
|||
right: 0; |
|||
left: 0; |
|||
bottom: 10px; |
|||
position: absolute; |
|||
background: linear-gradient( |
|||
0deg, |
|||
rgba(78, 89, 105, 1) 0%, |
|||
rgba(78, 89, 105, 0) 100% |
|||
); |
|||
z-index: 3; |
|||
pointer-events: none; |
|||
} |
|||
|
|||
.suggestions .media_result .data .info .plot.full { |
|||
top: 0; |
|||
overflow: auto; |
|||
} |
|||
|
|||
.suggestions .media_result .data { |
|||
cursor: default; |
|||
} |
|||
|
|||
.suggestions .media_result .options { |
|||
left: 100px; |
|||
} |
|||
.suggestions .media_result .options select[name=title] { width: 100%; } |
|||
.suggestions .media_result .options select[name=profile] { width: 100%; } |
|||
.suggestions .media_result .options select[name=category] { width: 100%; } |
|||
|
|||
.suggestions .media_result .button { |
|||
position: absolute; |
|||
margin: 2px 0 0 0; |
|||
right: 15px; |
|||
bottom: 15px; |
|||
} |
|||
|
|||
|
|||
.suggestions .media_result .thumbnail { |
|||
width: 100px; |
|||
} |
|||
|
|||
.suggestions .media_result .actions { |
|||
position: absolute; |
|||
top: 10px; |
|||
right: 10px; |
|||
display: none; |
|||
width: 140px; |
|||
} |
|||
.suggestions .media_result:hover .actions { |
|||
display: block; |
|||
} |
|||
.suggestions .media_result:hover h2 .title { |
|||
opacity: 0; |
|||
} |
|||
.suggestions .media_result .data.open .actions { |
|||
display: none; |
|||
} |
|||
|
|||
.suggestions .media_result .actions a { |
|||
margin-left: 10px; |
|||
vertical-align: middle; |
|||
} |
|||
|
@ -1,173 +0,0 @@ |
|||
var SuggestList = new Class({ |
|||
|
|||
Implements: [Options, Events], |
|||
|
|||
shown_once: false, |
|||
|
|||
initialize: function(options){ |
|||
var self = this; |
|||
self.setOptions(options); |
|||
|
|||
self.create(); |
|||
}, |
|||
|
|||
create: function(){ |
|||
var self = this; |
|||
|
|||
self.el = new Element('div.suggestions', { |
|||
'events': { |
|||
'click:relay(a.delete)': function(e, el){ |
|||
(e).stop(); |
|||
|
|||
$(el).getParent('.media_result').destroy(); |
|||
|
|||
Api.request('suggestion.ignore', { |
|||
'data': { |
|||
'imdb': el.get('data-ignore') |
|||
}, |
|||
'onComplete': self.fill.bind(self) |
|||
}); |
|||
|
|||
}, |
|||
'click:relay(a.eye-open)': function(e, el){ |
|||
(e).stop(); |
|||
|
|||
$(el).getParent('.media_result').destroy(); |
|||
|
|||
Api.request('suggestion.ignore', { |
|||
'data': { |
|||
'imdb': el.get('data-seen'), |
|||
'mark_seen': 1 |
|||
}, |
|||
'onComplete': self.fill.bind(self) |
|||
}); |
|||
|
|||
} |
|||
} |
|||
}); |
|||
|
|||
var cookie_menu_select = Cookie.read('suggestions_charts_menu_selected') || 'suggestions'; |
|||
if( cookie_menu_select === 'suggestions') |
|||
self.show(); |
|||
else |
|||
self.hide(); |
|||
|
|||
self.fireEvent.delay(0, self, 'created'); |
|||
|
|||
}, |
|||
|
|||
fill: function(json){ |
|||
|
|||
var self = this; |
|||
|
|||
if(!json || json.count == 0){ |
|||
self.el.hide(); |
|||
} |
|||
else { |
|||
|
|||
Object.each(json.suggestions, function(movie){ |
|||
|
|||
var m = new Block.Search.MovieItem(movie, { |
|||
'onAdded': function(){ |
|||
self.afterAdded(m, movie) |
|||
} |
|||
}); |
|||
m.data_container.grab( |
|||
new Element('div.actions').adopt( |
|||
new Element('a.add.icon2', { |
|||
'title': 'Add movie with your default quality', |
|||
'data-add': movie.imdb, |
|||
'events': { |
|||
'click': m.showOptions.bind(m) |
|||
} |
|||
}), |
|||
$(new MA.IMDB(m)), |
|||
$(new MA.Trailer(m, { |
|||
'height': 150 |
|||
})), |
|||
new Element('a.delete.icon2', { |
|||
'title': 'Don\'t suggest this movie again', |
|||
'data-ignore': movie.imdb |
|||
}), |
|||
new Element('a.eye-open.icon2', { |
|||
'title': 'Seen it, like it, don\'t add', |
|||
'data-seen': movie.imdb |
|||
}) |
|||
) |
|||
); |
|||
m.data_container.removeEvents('click'); |
|||
|
|||
var plot = false; |
|||
if(m.info.plot && m.info.plot.length > 0) |
|||
plot = m.info.plot; |
|||
|
|||
// Add rating
|
|||
m.info_container.adopt( |
|||
m.rating = m.info.rating && m.info.rating.imdb && m.info.rating.imdb.length == 2 && parseFloat(m.info.rating.imdb[0]) > 0 ? new Element('span.rating', { |
|||
'text': parseFloat(m.info.rating.imdb[0]), |
|||
'title': parseInt(m.info.rating.imdb[1]) + ' votes' |
|||
}) : null, |
|||
m.genre = m.info.genres && m.info.genres.length > 0 ? new Element('span.genres', { |
|||
'text': m.info.genres.slice(0, 3).join(', ') |
|||
}) : null, |
|||
m.plot = plot ? new Element('span.plot', { |
|||
'text': plot, |
|||
'events': { |
|||
'click': function(){ |
|||
this.toggleClass('full') |
|||
} |
|||
} |
|||
}) : null |
|||
); |
|||
|
|||
$(m).inject(self.el); |
|||
|
|||
}); |
|||
|
|||
} |
|||
|
|||
self.fireEvent('loaded'); |
|||
|
|||
}, |
|||
|
|||
afterAdded: function(m, movie){ |
|||
var self = this; |
|||
|
|||
setTimeout(function(){ |
|||
$(m).destroy(); |
|||
|
|||
Api.request('suggestion.ignore', { |
|||
'data': { |
|||
'imdb': movie.imdb, |
|||
'remove_only': true |
|||
}, |
|||
'onComplete': self.fill.bind(self) |
|||
}); |
|||
|
|||
}, 3000); |
|||
|
|||
}, |
|||
|
|||
show: function(){ |
|||
var self = this; |
|||
|
|||
self.el.show(); |
|||
|
|||
if(!self.shown_once){ |
|||
self.api_request = Api.request('suggestion.view', { |
|||
'onComplete': self.fill.bind(self) |
|||
}); |
|||
|
|||
self.shown_once = true; |
|||
} |
|||
}, |
|||
|
|||
hide: function(){ |
|||
this.el.hide(); |
|||
}, |
|||
|
|||
toElement: function(){ |
|||
return this.el; |
|||
} |
|||
|
|||
}); |
@ -1,199 +0,0 @@ |
|||
.page.log .nav { |
|||
display: block; |
|||
text-align: center; |
|||
padding: 0 0 30px; |
|||
margin: 0; |
|||
font-size: 20px; |
|||
position: fixed; |
|||
width: 100%; |
|||
bottom: 0; |
|||
left: 0; |
|||
background: #4E5969; |
|||
z-index: 100; |
|||
} |
|||
|
|||
.page.log .nav li { |
|||
display: inline-block; |
|||
padding: 5px 10px; |
|||
margin: 0; |
|||
} |
|||
|
|||
.page.log .nav li.select, |
|||
.page.log .nav li.clear { |
|||
cursor: pointer; |
|||
} |
|||
|
|||
.page.log .nav li:hover:not(.active):not(.filter) { |
|||
background: rgba(255, 255, 255, 0.1); |
|||
} |
|||
|
|||
.page.log .nav li.active { |
|||
font-weight: bold; |
|||
cursor: default; |
|||
background: rgba(255,255,255,.1); |
|||
} |
|||
|
|||
@media all and (max-width: 480px) { |
|||
.page.log .nav { |
|||
font-size: 14px; |
|||
} |
|||
|
|||
.page.log .nav li { |
|||
padding: 5px; |
|||
} |
|||
} |
|||
|
|||
.page.log .nav li.hint { |
|||
text-align: center; |
|||
width: 400px; |
|||
left: 50%; |
|||
margin-left: -200px; |
|||
font-style: italic; |
|||
font-size: 11px; |
|||
position: absolute; |
|||
right: 20px; |
|||
opacity: .5; |
|||
bottom: 5px; |
|||
} |
|||
|
|||
.page.log .loading { |
|||
text-align: center; |
|||
font-size: 20px; |
|||
padding: 50px; |
|||
} |
|||
|
|||
.page.log .container { |
|||
padding: 30px 0 60px; |
|||
overflow: hidden; |
|||
line-height: 150%; |
|||
font-size: 11px; |
|||
color: #FFF; |
|||
} |
|||
|
|||
.page.log .container select { |
|||
vertical-align: top; |
|||
} |
|||
|
|||
.page.log .container .time { |
|||
clear: both; |
|||
color: lightgrey; |
|||
font-size: 10px; |
|||
border-top: 1px solid rgba(255, 255, 255, 0.1); |
|||
position: relative; |
|||
overflow: hidden; |
|||
padding: 0 3px; |
|||
font-family: Lucida Console, Monaco, Nimbus Mono L, monospace, serif; |
|||
} |
|||
.page.log .container .time.highlight { |
|||
background: rgba(255, 255, 255, 0.1); |
|||
} |
|||
.page.log .container .time span { |
|||
padding: 5px 0 3px; |
|||
display: inline-block; |
|||
vertical-align: middle; |
|||
} |
|||
|
|||
.page.log[data-filter=INFO] .error, |
|||
.page.log[data-filter=INFO] .debug, |
|||
.page.log[data-filter=ERROR] .debug, |
|||
.page.log[data-filter=ERROR] .info, |
|||
.page.log[data-filter=DEBUG] .info, |
|||
.page.log[data-filter=DEBUG] .error { |
|||
display: none; |
|||
} |
|||
|
|||
.page.log .container .type { |
|||
margin-left: 10px; |
|||
} |
|||
|
|||
.page.log .container .message { |
|||
float: right; |
|||
width: 86%; |
|||
white-space: pre-wrap; |
|||
} |
|||
|
|||
.page.log .container .error { color: #FFA4A4; } |
|||
.page.log .container .debug span { opacity: .6; } |
|||
|
|||
.do_report { |
|||
position: absolute; |
|||
padding: 10px; |
|||
} |
|||
|
|||
.page.log .report { |
|||
position: fixed; |
|||
width: 100%; |
|||
height: 100%; |
|||
background: rgba(0,0,0,.7); |
|||
left: 0; |
|||
top: 0; |
|||
z-index: 99999; |
|||
font-size: 14px; |
|||
} |
|||
|
|||
.page.log .report .button { |
|||
display: inline-block; |
|||
margin: 10px 0; |
|||
padding: 10px; |
|||
} |
|||
|
|||
.page.log .report .bug { |
|||
width: 800px; |
|||
height: 80%; |
|||
position: absolute; |
|||
left: 50%; |
|||
top: 50%; |
|||
margin: 0 0 0 -400px; |
|||
transform: translate(0, -50%); |
|||
} |
|||
|
|||
.page.log .report .bug textarea { |
|||
display: block; |
|||
width: 100%; |
|||
background: #FFF; |
|||
padding: 20px; |
|||
overflow: auto; |
|||
color: #666; |
|||
height: 70%; |
|||
font-size: 12px; |
|||
} |
|||
|
|||
.page.log .container .time ::-webkit-selection { |
|||
background-color: #000; |
|||
color: #FFF; |
|||
} |
|||
|
|||
.page.log .container .time ::-moz-selection { |
|||
background-color: #000; |
|||
color: #FFF; |
|||
} |
|||
|
|||
.page.log .container .time ::-ms-selection { |
|||
background-color: #000; |
|||
color: #FFF; |
|||
} |
|||
|
|||
.page.log .container .time.highlight ::selection { |
|||
background-color: transparent; |
|||
color: inherit; |
|||
} |
|||
|
|||
.page.log .container .time.highlight ::-webkit-selection { |
|||
background-color: transparent; |
|||
color: inherit; |
|||
} |
|||
|
|||
.page.log .container .time.highlight ::-moz-selection { |
|||
background-color: transparent; |
|||
color: inherit; |
|||
} |
|||
|
|||
.page.log .container .time.highlight ::-ms-selection { |
|||
background-color: transparent; |
|||
color: inherit; |
|||
} |
|||
|
|||
.page.log .container .time.highlight ::selection { |
|||
background-color: transparent; |
|||
color: inherit; |
|||
} |
@ -0,0 +1,159 @@ |
|||
@import "_mixins"; |
|||
|
|||
.page.log { |
|||
|
|||
.nav { |
|||
text-align: right; |
|||
padding: 0; |
|||
margin: 0; |
|||
|
|||
li { |
|||
display: inline-block; |
|||
padding: 5px 10px; |
|||
margin: 0; |
|||
|
|||
&.select, &.clear { |
|||
cursor: pointer; |
|||
} |
|||
|
|||
&:hover:not(.active):not(.filter) { |
|||
background: rgba(255, 255, 255, 0.1); |
|||
} |
|||
|
|||
&.active { |
|||
font-weight: bold; |
|||
cursor: default; |
|||
background: rgba(255,255,255,.1); |
|||
} |
|||
} |
|||
} |
|||
|
|||
.hint { |
|||
font-style: italic; |
|||
opacity: .5; |
|||
margin-top: 3px; |
|||
} |
|||
|
|||
.container { |
|||
padding: $padding; |
|||
overflow: hidden; |
|||
line-height: 150%; |
|||
|
|||
&.loading { |
|||
text-align: center; |
|||
font-size: 20px; |
|||
padding: 100px 50px; |
|||
} |
|||
|
|||
select { |
|||
vertical-align: top; |
|||
} |
|||
|
|||
.time { |
|||
clear: both; |
|||
font-size: .75em; |
|||
border-top: 1px solid rgba(255, 255, 255, 0.1); |
|||
overflow: hidden; |
|||
padding: 0 3px; |
|||
font-family: Lucida Console, Monaco, Nimbus Mono L, monospace, serif; |
|||
display: flex; |
|||
|
|||
&.highlight { |
|||
background: $theme_off; |
|||
} |
|||
|
|||
span { |
|||
padding: 5px 0 3px; |
|||
display: inline-block; |
|||
vertical-align: middle; |
|||
width: 90px; |
|||
} |
|||
|
|||
::selection { |
|||
background-color: #000; |
|||
color: #FFF; |
|||
} |
|||
} |
|||
|
|||
.type.type { |
|||
margin-left: 10px; |
|||
width: 40px; |
|||
} |
|||
|
|||
.message { |
|||
white-space: pre-wrap; |
|||
flex: 1 auto; |
|||
} |
|||
|
|||
|
|||
.error { color: #FFA4A4; } |
|||
.debug span { opacity: .6; } |
|||
} |
|||
|
|||
|
|||
|
|||
[data-filter=INFO] .error, |
|||
[data-filter=INFO] .debug, |
|||
[data-filter=ERROR] .debug, |
|||
[data-filter=ERROR] .info, |
|||
[data-filter=DEBUG] .info, |
|||
[data-filter=DEBUG] .error { |
|||
display: none; |
|||
} |
|||
} |
|||
|
|||
.report_popup.report_popup { |
|||
position: fixed; |
|||
left: 0; |
|||
right: 0; |
|||
bottom: 0; |
|||
top: 0; |
|||
z-index: 99999; |
|||
font-size: 14px; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
opacity: 1; |
|||
color: #FFF; |
|||
pointer-events: auto; |
|||
|
|||
.button { |
|||
margin: 10px 0; |
|||
padding: 10px; |
|||
color: $background_color; |
|||
background: $primary_color; |
|||
} |
|||
|
|||
.bug { |
|||
width: 80%; |
|||
height: 80%; |
|||
max-height: 800px; |
|||
max-width: 800px; |
|||
|
|||
display: flex; |
|||
flex-flow: column nowrap; |
|||
|
|||
> span { |
|||
margin: $padding/2 0 $padding 0; |
|||
} |
|||
|
|||
textarea { |
|||
display: block; |
|||
width: 100%; |
|||
background: #FFF; |
|||
padding: 20px; |
|||
overflow: auto; |
|||
color: #666; |
|||
height: 70%; |
|||
font-size: 12px; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.do_report.do_report { |
|||
z-index: 10000; |
|||
position: absolute; |
|||
padding: 10px; |
|||
background: $primary_color; |
|||
color: #FFF; |
|||
} |
@ -1,197 +0,0 @@ |
|||
.add_new_profile { |
|||
padding: 20px; |
|||
display: block; |
|||
text-align: center; |
|||
font-size: 20px; |
|||
border-bottom: 1px solid rgba(255,255,255,0.2); |
|||
} |
|||
|
|||
.profile { |
|||
border-bottom: 1px solid rgba(255,255,255,0.2); |
|||
position: relative; |
|||
} |
|||
|
|||
.profile > .delete { |
|||
position: absolute; |
|||
padding: 16px; |
|||
right: 0; |
|||
cursor: pointer; |
|||
opacity: 0.6; |
|||
color: #fd5353; |
|||
} |
|||
.profile > .delete:hover { |
|||
opacity: 1; |
|||
} |
|||
|
|||
.profile .ctrlHolder:hover { |
|||
background: none; |
|||
} |
|||
|
|||
.profile .qualities { |
|||
min-height: 80px; |
|||
} |
|||
|
|||
.profile .formHint { |
|||
width: 210px !important; |
|||
vertical-align: top !important; |
|||
margin: 0 !important; |
|||
padding-left: 3px !important; |
|||
opacity: 0.1; |
|||
} |
|||
.profile:hover .formHint { |
|||
opacity: 1; |
|||
} |
|||
|
|||
.profile .wait_for { |
|||
padding-top: 0; |
|||
padding-bottom: 20px; |
|||
} |
|||
|
|||
.profile .wait_for input { |
|||
margin: 0 5px !important; |
|||
} |
|||
|
|||
.profile .wait_for .minimum_score_input { |
|||
width: 40px !important; |
|||
text-align: left; |
|||
} |
|||
|
|||
.profile .types { |
|||
padding: 0; |
|||
margin: 0 20px 0 -4px; |
|||
display: inline-block; |
|||
} |
|||
|
|||
.profile .types li { |
|||
padding: 3px 5px; |
|||
border-bottom: 1px solid rgba(255,255,255,0.2); |
|||
list-style: none; |
|||
} |
|||
.profile .types li:last-child { border: 0; } |
|||
|
|||
.profile .types li > * { |
|||
display: inline-block; |
|||
vertical-align: middle; |
|||
line-height: 0; |
|||
margin-right: 10px; |
|||
} |
|||
|
|||
.profile .type .check { |
|||
margin-top: -1px; |
|||
} |
|||
|
|||
.profile .quality_type select { |
|||
width: 120px; |
|||
margin-left: -1px; |
|||
} |
|||
|
|||
.profile .types li.is_empty .check, |
|||
.profile .types li.is_empty .delete, |
|||
.profile .types li.is_empty .handle, |
|||
.profile .types li.is_empty .check_label { |
|||
visibility: hidden; |
|||
} |
|||
|
|||
.profile .types .type label { |
|||
display: inline-block; |
|||
width: auto; |
|||
float: none; |
|||
text-transform: uppercase; |
|||
font-size: 11px; |
|||
font-weight: normal; |
|||
margin-right: 20px; |
|||
text-shadow: none; |
|||
vertical-align: bottom; |
|||
padding: 0; |
|||
height: 17px; |
|||
} |
|||
.profile .types .type label .check { |
|||
margin-right: 5px; |
|||
} |
|||
.profile .types .type label .check_label { |
|||
display: inline-block; |
|||
vertical-align: top; |
|||
height: 16px; |
|||
line-height: 13px; |
|||
} |
|||
|
|||
.profile .types .type .threed { |
|||
display: none; |
|||
} |
|||
|
|||
.profile .types .type.allow_3d .threed { |
|||
display: inline-block; |
|||
} |
|||
|
|||
.profile .types .type .handle { |
|||
background: url('../../images/handle.png') center; |
|||
display: inline-block; |
|||
height: 20px; |
|||
width: 20px; |
|||
cursor: -moz-grab; |
|||
cursor: -webkit-grab; |
|||
cursor: grab; |
|||
margin: 0; |
|||
} |
|||
|
|||
.profile .types .type .delete { |
|||
height: 20px; |
|||
width: 20px; |
|||
line-height: 20px; |
|||
visibility: hidden; |
|||
cursor: pointer; |
|||
font-size: 13px; |
|||
color: #fd5353; |
|||
} |
|||
.profile .types .type:not(.allow_3d) .delete { |
|||
margin-left: 55px; |
|||
} |
|||
|
|||
.profile .types .type:hover:not(.is_empty) .delete { |
|||
visibility: visible; |
|||
} |
|||
|
|||
#profile_ordering { |
|||
|
|||
} |
|||
|
|||
#profile_ordering ul { |
|||
float: left; |
|||
margin: 0; |
|||
width: 275px; |
|||
padding: 0; |
|||
} |
|||
|
|||
#profile_ordering li { |
|||
border-bottom: 1px solid rgba(255,255,255,0.2); |
|||
padding: 0 5px; |
|||
} |
|||
#profile_ordering li:last-child { border: 0; } |
|||
|
|||
#profile_ordering li .check { |
|||
margin: 2px 10px 0 0; |
|||
vertical-align: top; |
|||
} |
|||
|
|||
#profile_ordering li > span { |
|||
display: inline-block; |
|||
height: 20px; |
|||
vertical-align: top; |
|||
line-height: 20px; |
|||
} |
|||
|
|||
#profile_ordering li .handle { |
|||
background: url('../../images/handle.png') center; |
|||
width: 20px; |
|||
float: right; |
|||
cursor: -webkit-grab; |
|||
cursor: -moz-grab; |
|||
cursor: grab; |
|||
} |
|||
|
|||
#profile_ordering .formHint { |
|||
clear: none; |
|||
float: right; |
|||
width: 250px; |
|||
margin: 0; |
|||
} |
@ -0,0 +1,150 @@ |
|||
@import "_mixins"; |
|||
|
|||
.add_new_profile { |
|||
padding: 20px; |
|||
display: block; |
|||
text-align: center; |
|||
font-size: 20px; |
|||
border-bottom: 1px solid $theme_off; |
|||
} |
|||
|
|||
.profile { |
|||
margin-bottom: 20px; |
|||
|
|||
.quality_label input { |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.ctrlHolder { |
|||
|
|||
.types { |
|||
flex: 1 1 auto; |
|||
min-width: 360px; |
|||
|
|||
.type { |
|||
display: flex; |
|||
flex-row: row nowrap; |
|||
align-items: center; |
|||
padding: 2px 0; |
|||
|
|||
label { |
|||
min-width: 0; |
|||
margin-left: $padding/2; |
|||
|
|||
span { |
|||
font-size: .9em; |
|||
} |
|||
} |
|||
|
|||
input[type=checkbox] { |
|||
margin-right: 3px; |
|||
} |
|||
|
|||
.delete, .handle { |
|||
margin-left: $padding/4; |
|||
width: 20px; |
|||
font-size: 20px; |
|||
opacity: .1; |
|||
text-align: center; |
|||
cursor: pointer; |
|||
|
|||
&.handle { |
|||
cursor: move; |
|||
cursor: grab; |
|||
} |
|||
|
|||
&:hover { |
|||
opacity: 1; |
|||
} |
|||
} |
|||
|
|||
&.is_empty { |
|||
.delete, .handle { |
|||
display: none; |
|||
} |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
&.wait_for.wait_for { |
|||
display: block; |
|||
|
|||
input { |
|||
min-width: 0; |
|||
width: 40px; |
|||
text-align: center; |
|||
margin: 0 2px; |
|||
} |
|||
|
|||
.advanced { |
|||
display: none; |
|||
color: $primary_color; |
|||
|
|||
.show_advanced & { |
|||
display: inline; |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
.formHint { |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
#profile_ordering { |
|||
ul { |
|||
list-style: none; |
|||
margin: 0; |
|||
width: 275px; |
|||
padding: 0; |
|||
} |
|||
|
|||
li { |
|||
border-bottom: 1px solid $theme_off; |
|||
padding: 5px; |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
&:hover { |
|||
background: $theme_off; |
|||
} |
|||
|
|||
&:last-child { border: 0; } |
|||
|
|||
input[type=checkbox] { |
|||
margin: 2px 10px 0 0; |
|||
vertical-align: top; |
|||
} |
|||
|
|||
> span { |
|||
display: inline-block; |
|||
height: 20px; |
|||
vertical-align: top; |
|||
line-height: 20px; |
|||
|
|||
&.profile_label { |
|||
flex: 1 1 auto; |
|||
} |
|||
} |
|||
|
|||
.handle { |
|||
font-size: 20px; |
|||
width: 20px; |
|||
float: right; |
|||
cursor: move; |
|||
cursor: grab; |
|||
opacity: .5; |
|||
text-align: center; |
|||
|
|||
&:hover { |
|||
opacity: 1; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.formHint { |
|||
} |
|||
} |
@ -1,26 +0,0 @@ |
|||
.group_sizes { |
|||
|
|||
} |
|||
|
|||
.group_sizes .head { |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.group_sizes .ctrlHolder { |
|||
padding-top: 4px !important; |
|||
padding-bottom: 4px !important; |
|||
font-size: 12px; |
|||
} |
|||
|
|||
.group_sizes .label { |
|||
max-width: 120px; |
|||
} |
|||
|
|||
.group_sizes .min, .group_sizes .max { |
|||
text-align: center; |
|||
width: 50px; |
|||
max-width: 50px; |
|||
margin: 0 5px !important; |
|||
padding: 0 3px; |
|||
display: inline-block; |
|||
} |
@ -0,0 +1,19 @@ |
|||
@import "_mixins"; |
|||
|
|||
.group_sizes { |
|||
|
|||
.item { |
|||
.label { |
|||
min-width: 150px; |
|||
} |
|||
|
|||
.min, .max { |
|||
display: inline-block; |
|||
width: 70px !important; |
|||
min-width: 0 !important; |
|||
margin-right: $padding/2; |
|||
text-align: center; |
|||
} |
|||
} |
|||
|
|||
} |
@ -1,84 +0,0 @@ |
|||
.page.wizard .uniForm { |
|||
margin: 0 0 30px; |
|||
width: 83%; |
|||
} |
|||
|
|||
.page.wizard h1 { |
|||
padding: 10px 0; |
|||
display: block; |
|||
font-size: 30px; |
|||
margin: 80px 5px 0; |
|||
} |
|||
|
|||
.page.wizard .description { |
|||
padding: 10px 5px; |
|||
font-size: 1.45em; |
|||
line-height: 1.4em; |
|||
display: block; |
|||
} |
|||
|
|||
.page.wizard .tab_wrapper { |
|||
background: #5c697b; |
|||
height: 65px; |
|||
font-size: 1.75em; |
|||
position: fixed; |
|||
top: 0; |
|||
margin: 0; |
|||
width: 100%; |
|||
left: 0; |
|||
z-index: 2; |
|||
box-shadow: 0 0 10px rgba(0,0,0,0.1); |
|||
} |
|||
|
|||
.page.wizard .tab_wrapper .tabs { |
|||
padding: 0; |
|||
margin: 0 auto; |
|||
display: block; |
|||
height: 100%; |
|||
width: 100%; |
|||
max-width: 960px; |
|||
} |
|||
|
|||
.page.wizard .tabs li { |
|||
display: inline-block; |
|||
height: 100%; |
|||
} |
|||
.page.wizard .tabs li a { |
|||
padding: 20px 10px; |
|||
height: 100%; |
|||
display: block; |
|||
color: #FFF; |
|||
font-weight: normal; |
|||
border-bottom: 4px solid transparent; |
|||
} |
|||
|
|||
.page.wizard .tabs li:hover a { border-color: #047792; } |
|||
.page.wizard .tabs li.done a { border-color: #04bce6; } |
|||
|
|||
.page.wizard .tab_wrapper .pointer { |
|||
border-right: 10px solid transparent; |
|||
border-left: 10px solid transparent; |
|||
border-top: 10px solid #5c697b; |
|||
display: block; |
|||
position: absolute; |
|||
top: 44px; |
|||
} |
|||
|
|||
.page.wizard .tab_content { |
|||
margin: 20px 0 160px; |
|||
} |
|||
|
|||
.page.wizard form > div { |
|||
min-height: 300px; |
|||
} |
|||
|
|||
.page.wizard .button.green { |
|||
padding: 20px; |
|||
font-size: 25px; |
|||
margin: 10px 0 80px; |
|||
display: block; |
|||
} |
|||
|
|||
.page.wizard .tab_nzb_providers { |
|||
margin: 20px 0 0 0; |
|||
} |
@ -0,0 +1,62 @@ |
|||
@import "_mixins"; |
|||
|
|||
.page.wizard { |
|||
|
|||
.navigation.navigation { |
|||
display: none; |
|||
} |
|||
|
|||
.tab_content.tab_content { |
|||
display: block; |
|||
|
|||
fieldset { |
|||
|
|||
.ctrlHolder, h2 { |
|||
padding: $padding/4; |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
h1 { |
|||
padding: 10px 0; |
|||
display: block; |
|||
font-size: 30px; |
|||
margin: 80px 5px 0; |
|||
font-weight: 300; |
|||
} |
|||
|
|||
.description { |
|||
padding: $padding/2 $padding/4; |
|||
font-size: 1.45em; |
|||
line-height: 1.4em; |
|||
display: block; |
|||
} |
|||
|
|||
form.uniForm.containers { |
|||
margin: 0; |
|||
} |
|||
|
|||
form > div { |
|||
min-height: 300px; |
|||
max-width: $mq-desktop; |
|||
padding: $padding; |
|||
margin: 0 auto; |
|||
|
|||
@include media-phablet { |
|||
padding: $padding/2; |
|||
} |
|||
} |
|||
|
|||
.button.green { |
|||
padding: 20px; |
|||
font-size: 25px; |
|||
margin: 10px 0 80px; |
|||
display: inline-block; |
|||
} |
|||
|
|||
.tab_nzb_providers { |
|||
margin: 20px 0 0 0; |
|||
} |
|||
|
|||
} |
Binary file not shown.
Before Width: | Height: | Size: 213 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 4.2 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 114 KiB |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,190 @@ |
|||
{ |
|||
"name": "icons", |
|||
"css_prefix_text": "icon-", |
|||
"css_use_suffix": false, |
|||
"hinting": true, |
|||
"units_per_em": 1000, |
|||
"ascent": 850, |
|||
"glyphs": [ |
|||
{ |
|||
"uid": "48cc210e59ff4bc56b6c8fba6eb384b8", |
|||
"css": "emo-coffee", |
|||
"code": 59401, |
|||
"src": "fontelico" |
|||
}, |
|||
{ |
|||
"uid": "078fec38562c3f83a1201a908040c141", |
|||
"css": "emo-sunglasses", |
|||
"code": 59402, |
|||
"src": "fontelico" |
|||
}, |
|||
{ |
|||
"uid": "04688d76a33ce7a7950e40fae79c08ac", |
|||
"css": "emo-cry", |
|||
"code": 59400, |
|||
"src": "fontelico" |
|||
}, |
|||
{ |
|||
"uid": "9dd9e835aebe1060ba7190ad2b2ed951", |
|||
"css": "search", |
|||
"code": 59394, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "474656633f79ea2f1dad59ff63f6bf07", |
|||
"css": "star", |
|||
"code": 59418, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "d17030afaecc1e1c22349b99f3c4992a", |
|||
"css": "star-empty", |
|||
"code": 59419, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "84cf1fcc3fec556e7eaeb19679ca2dc9", |
|||
"css": "star-half", |
|||
"code": 59420, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "872d9516df93eb6b776cc4d94bd97dac", |
|||
"css": "movie", |
|||
"code": 59416, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "b1887b423d2fd15c345e090320c91ca0", |
|||
"css": "thumbs", |
|||
"code": 59397, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "f805bb95d40c7ef2bc51b3d50d4f2e5c", |
|||
"css": "list", |
|||
"code": 59398, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "12f4ece88e46abd864e40b35e05b11cd", |
|||
"css": "ok", |
|||
"code": 59408, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "5211af474d3a9848f67f945e2ccaf143", |
|||
"css": "cancel", |
|||
"code": 59406, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "44e04715aecbca7f266a17d5a7863c68", |
|||
"css": "plus", |
|||
"code": 59411, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "3d4ea8a78dc34efe891f3a0f3d961274", |
|||
"css": "info", |
|||
"code": 59403, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "d7271d490b71df4311e32cdacae8b331", |
|||
"css": "home", |
|||
"code": 59415, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "c5fd349cbd3d23e4ade333789c29c729", |
|||
"css": "eye", |
|||
"code": 59412, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "9a76bc135eac17d2c8b8ad4a5774fc87", |
|||
"css": "download", |
|||
"code": 59404, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "f48ae54adfb27d8ada53d0fd9e34ee10", |
|||
"css": "delete", |
|||
"code": 59405, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "e99461abfef3923546da8d745372c995", |
|||
"css": "settings", |
|||
"code": 59393, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "bc71f4c6e53394d5ba46b063040014f1", |
|||
"css": "redo", |
|||
"code": 59407, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "a73c5deb486c8d66249811642e5d719a", |
|||
"css": "refresh", |
|||
"code": 59414, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "4109c474ff99cad28fd5a2c38af2ec6f", |
|||
"css": "filter", |
|||
"code": 59396, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "026007bd17bfc67f3fe013199676f620", |
|||
"css": "donate", |
|||
"code": 59421, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "94103e1b3f1e8cf514178ec5912b4469", |
|||
"css": "dropdown", |
|||
"code": 59409, |
|||
"src": "fontawesome" |
|||
}, |
|||
{ |
|||
"uid": "2cfb3f2b46b34a1790aec0aa846297b6", |
|||
"css": "menu", |
|||
"code": 59417, |
|||
"src": "entypo" |
|||
}, |
|||
{ |
|||
"uid": "c311c48d79488965b0fab7f9cd12b6b5", |
|||
"css": "left-arrow", |
|||
"code": 59392, |
|||
"src": "entypo" |
|||
}, |
|||
{ |
|||
"uid": "cb13afd4722a849d48056540bb74c47e", |
|||
"css": "play", |
|||
"code": 59410, |
|||
"src": "entypo" |
|||
}, |
|||
{ |
|||
"uid": "d10920db2e79c997c5e783279291970c", |
|||
"css": "dots", |
|||
"code": 59395, |
|||
"src": "entypo" |
|||
}, |
|||
{ |
|||
"uid": "51fb22f9ff9d7f60c95ef31e4c59502d", |
|||
"css": "notifications", |
|||
"code": 59399, |
|||
"src": "mfglabs" |
|||
}, |
|||
{ |
|||
"uid": "3ab229dd9bccaaaf6c71096da4b72c04", |
|||
"css": "error", |
|||
"code": 59413, |
|||
"src": "elusive" |
|||
} |
|||
] |
|||
} |
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,52 @@ |
|||
var BlockHeader = new Class({ |
|||
|
|||
Extends: BlockNavigation, |
|||
|
|||
create: function(){ |
|||
var self = this, |
|||
animation_options = { |
|||
type: dynamics.spring |
|||
}, |
|||
couch, potato; |
|||
|
|||
self.parent(); |
|||
|
|||
self.el.adopt( |
|||
self.logo = new Element('a.logo', { |
|||
'href': App.createUrl(''), |
|||
'events': { |
|||
'mouseenter': function(){ |
|||
dynamics.animate(couch, { |
|||
opacity: 0, |
|||
translateX: -50 |
|||
}, animation_options); |
|||
|
|||
dynamics.animate(potato, { |
|||
opacity: 1, |
|||
translateX: 0 |
|||
}, animation_options); |
|||
}, |
|||
'mouseleave': function(){ |
|||
dynamics.animate(couch, { |
|||
opacity: 1, |
|||
translateX: 0 |
|||
}, animation_options); |
|||
|
|||
dynamics.animate(potato, { |
|||
opacity: 0, |
|||
translateX: 50 |
|||
}, animation_options); |
|||
} |
|||
} |
|||
}).adopt( |
|||
couch = new Element('span[text=Couch]'), |
|||
potato = new Element('span[text=Potato]') |
|||
), |
|||
self.nav |
|||
); |
|||
|
|||
|
|||
|
|||
} |
|||
|
|||
}); |
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue