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 |
*.pyc |
||||
/data/ |
/data/ |
||||
|
/_env/ |
||||
/_source/ |
/_source/ |
||||
.project |
.project |
||||
.pydevproject |
.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