Easier "get next best release" buttons
This commit is contained in:
1 parent
59b924efe7
commit
b91a077c91
4 files changed
+119
-27
No files matched your search
@@ -94,36 +94,30 @@ MA.Release = new Class({
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
var buttons_done = false;
|
var releases = self.movie.data.releases.sortBy('-info.score');
|
||||||
|
|
||||||
self.movie.data.releases.sortBy('-info.score').each(function(release){
|
for(x in releases){
|
||||||
if(buttons_done) return;
|
var release = releases[x],
|
||||||
|
status = Status.get(release.status_id);
|
||||||
var status = Status.get(release.status_id);
|
|
||||||
|
|
||||||
if((self.next_release && (status.identifier == 'ignored' || status.identifier == 'failed')) || (!self.next_release && status.identifier == 'available')){
|
if((self.next_release && (status.identifier == 'ignored' || status.identifier == 'failed')) || (!self.next_release && status.identifier == 'available')){
|
||||||
self.hide_on_click = false;
|
self.showHelper();
|
||||||
self.show();
|
break;
|
||||||
buttons_done = true;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
show: function(e){
|
createReleases: function(){
|
||||||
var self = this;
|
var self = this;
|
||||||
if(e)
|
|
||||||
(e).preventDefault();
|
|
||||||
|
|
||||||
if(!self.options_container){
|
if(!self.options_container){
|
||||||
self.options_container = new Element('div.options').adopt(
|
self.options_container = new Element('div.options').adopt(
|
||||||
self.release_container = new Element('div.releases.table').adopt(
|
self.release_container = new Element('div.releases.table').adopt(
|
||||||
self.trynext_container = new Element('div.buttons.try_container')
|
self.trynext_container = new Element('div.buttons.try_container')
|
||||||
)
|
)
|
||||||
).inject(self.movie, 'top');
|
);
|
||||||
|
|
||||||
// Header
|
// Header
|
||||||
new Element('div.item.head').adopt(
|
new Element('div.item.head').adopt(
|
||||||
@@ -238,9 +232,71 @@ MA.Release = new Class({
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
show: function(e){
|
||||||
|
var self = this;
|
||||||
|
if(e)
|
||||||
|
(e).preventDefault();
|
||||||
|
|
||||||
|
self.createReleases();
|
||||||
|
self.options_container.inject(self.movie, 'top');
|
||||||
self.movie.slide('in', self.options_container);
|
self.movie.slide('in', self.options_container);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
showHelper: function(e){
|
||||||
|
var self = this;
|
||||||
|
if(e)
|
||||||
|
(e).preventDefault();
|
||||||
|
|
||||||
|
self.createReleases();
|
||||||
|
self.trynext_container = new Element('div.buttons.trynext').inject(self.movie.info_container);
|
||||||
|
|
||||||
|
if(self.next_release || self.last_release){
|
||||||
|
|
||||||
|
self.trynext_container.adopt(
|
||||||
|
self.next_release ? [new Element('a.icon.readd', {
|
||||||
|
'text': self.last_release ? 'Download another release' : 'Download the best release',
|
||||||
|
'events': {
|
||||||
|
'click': self.tryNextRelease.bind(self)
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
new Element('a.icon.download', {
|
||||||
|
'text': 'pick one yourself',
|
||||||
|
'events': {
|
||||||
|
'click': function(){
|
||||||
|
self.movie.quality.fireEvent('click');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})] : null,
|
||||||
|
new Element('a.icon.completed', {
|
||||||
|
'text': 'mark this movie done',
|
||||||
|
'events': {
|
||||||
|
'click': function(){
|
||||||
|
Api.request('movie.delete', {
|
||||||
|
'data': {
|
||||||
|
'id': self.movie.get('id'),
|
||||||
|
'delete_from': 'wanted'
|
||||||
|
},
|
||||||
|
'onComplete': function(){
|
||||||
|
var movie = $(self.movie);
|
||||||
|
movie.set('tween', {
|
||||||
|
'duration': 300,
|
||||||
|
'onComplete': function(){
|
||||||
|
self.movie.destroy()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
movie.tween('height', 0);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
get: function(release, type){
|
get: function(release, type){
|
||||||
return release.info[type] || 'n/a'
|
return release.info[type] || 'n/a'
|
||||||
},
|
},
|
||||||
@@ -251,14 +307,15 @@ MA.Release = new Class({
|
|||||||
var release_el = self.release_container.getElement('#release_'+release.id),
|
var release_el = self.release_container.getElement('#release_'+release.id),
|
||||||
icon = release_el.getElement('.download.icon');
|
icon = release_el.getElement('.download.icon');
|
||||||
|
|
||||||
icon.addClass('spinner');
|
self.movie.busy(true);
|
||||||
|
|
||||||
Api.request('release.download', {
|
Api.request('release.download', {
|
||||||
'data': {
|
'data': {
|
||||||
'id': release.id
|
'id': release.id
|
||||||
},
|
},
|
||||||
'onComplete': function(json){
|
'onComplete': function(json){
|
||||||
icon.removeClass('spinner')
|
self.movie.busy(false);
|
||||||
|
|
||||||
if(json.success)
|
if(json.success)
|
||||||
icon.addClass('completed');
|
icon.addClass('completed');
|
||||||
else
|
else
|
||||||
@@ -281,6 +338,8 @@ MA.Release = new Class({
|
|||||||
tryNextRelease: function(movie_id){
|
tryNextRelease: function(movie_id){
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
self.createReleases();
|
||||||
|
|
||||||
if(self.last_release)
|
if(self.last_release)
|
||||||
self.ignore(self.last_release);
|
self.ignore(self.last_release);
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 180px;
|
height: 180px;
|
||||||
transition: all 0.2s linear;
|
transition: all 0.6s cubic-bezier(0.9,0,0.1,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.movies.list_list .movie:not(.details_view),
|
.movies.list_list .movie:not(.details_view),
|
||||||
@@ -95,7 +95,7 @@
|
|||||||
width: 938px;
|
width: 938px;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
border: 0;
|
border: 0;
|
||||||
background: none;
|
background: #4e5969;
|
||||||
}
|
}
|
||||||
|
|
||||||
.movies.thumbs_list .data {
|
.movies.thumbs_list .data {
|
||||||
@@ -322,8 +322,8 @@
|
|||||||
right: 10px;
|
right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.movies .data:hover .action { opacity: 0.6; }
|
.movies .movie:hover .action { opacity: 0.6; }
|
||||||
.movies .data:hover .action:hover { opacity: 1; }
|
.movies .movie:hover .action:hover { opacity: 1; }
|
||||||
.movies.mass_edit_list .data .actions {
|
.movies.mass_edit_list .data .actions {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -338,8 +338,8 @@
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.movies.list_list .movie:not(.details_view) .data:hover .actions,
|
.movies.list_list .movie:not(.details_view):hover .actions,
|
||||||
.movies.mass_edit_list .data:hover .actions {
|
.movies.mass_edit_list .movie:hover .actions {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: #4e5969;
|
background: #4e5969;
|
||||||
top: 2px;
|
top: 2px;
|
||||||
@@ -510,6 +510,29 @@
|
|||||||
.movies .movie .releases .last_release > :first-child {
|
.movies .movie .releases .last_release > :first-child {
|
||||||
margin-left: -6px;
|
margin-left: -6px;
|
||||||
}
|
}
|
||||||
|
.movies .movie .trynext {
|
||||||
|
display: inline;
|
||||||
|
position: absolute;
|
||||||
|
right: 135px;
|
||||||
|
z-index: 2;
|
||||||
|
opacity: 0;
|
||||||
|
text-shadow: none;
|
||||||
|
background: #4e5969;
|
||||||
|
}
|
||||||
|
.movies .movie:hover .trynext {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.movies .movie .trynext a {
|
||||||
|
background-position: 5px center;
|
||||||
|
padding: 0 5px 0 25px;
|
||||||
|
margin-right: 10px;
|
||||||
|
color: #FFF;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
.movies .movie .trynext a:hover {
|
||||||
|
background-color: #369545;
|
||||||
|
}
|
||||||
|
|
||||||
.movies .load_more {
|
.movies .load_more {
|
||||||
display: block;
|
display: block;
|
||||||
|
|||||||
@@ -160,7 +160,9 @@ class Release(Plugin):
|
|||||||
|
|
||||||
db = get_session()
|
db = get_session()
|
||||||
id = getParam('id')
|
id = getParam('id')
|
||||||
status_snatched = fireEvent('status.add', 'snatched', single = True)
|
|
||||||
|
snatched_status = fireEvent('status.add', 'snatched', single = True)
|
||||||
|
done_status = fireEvent('status.get', 'done', single = True)
|
||||||
|
|
||||||
rel = db.query(Relea).filter_by(id = id).first()
|
rel = db.query(Relea).filter_by(id = id).first()
|
||||||
if rel:
|
if rel:
|
||||||
@@ -168,6 +170,8 @@ class Release(Plugin):
|
|||||||
for info in rel.info:
|
for info in rel.info:
|
||||||
item[info.identifier] = info.value
|
item[info.identifier] = info.value
|
||||||
|
|
||||||
|
fireEvent('notify.frontend', type = 'release.download', data = True, message = 'Snatching "%s"' % item['name'])
|
||||||
|
|
||||||
# Get matching provider
|
# Get matching provider
|
||||||
provider = fireEvent('provider.belongs_to', item['url'], provider = item.get('provider'), single = True)
|
provider = fireEvent('provider.belongs_to', item['url'], provider = item.get('provider'), single = True)
|
||||||
|
|
||||||
@@ -182,8 +186,14 @@ class Release(Plugin):
|
|||||||
}), manual = True, single = True)
|
}), manual = True, single = True)
|
||||||
|
|
||||||
if success:
|
if success:
|
||||||
rel.status_id = status_snatched.get('id')
|
db.expunge_all()
|
||||||
db.commit()
|
rel = db.query(Relea).filter_by(id = id).first() # Get release again
|
||||||
|
|
||||||
|
if rel.status_id != done_status.get('id'):
|
||||||
|
rel.status_id = snatched_status.get('id')
|
||||||
|
db.commit()
|
||||||
|
|
||||||
|
fireEvent('notify.frontend', type = 'release.download', data = True, message = 'Successfully snatched "%s"' % item['name'])
|
||||||
|
|
||||||
return jsonified({
|
return jsonified({
|
||||||
'success': success
|
'success': success
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Page.Home = new Class({
|
|||||||
'identifier': 'snatched',
|
'identifier': 'snatched',
|
||||||
'load_more': false,
|
'load_more': false,
|
||||||
'view': 'list',
|
'view': 'list',
|
||||||
'actions': [MA.IMDB, MA.Trailer, MA.Files, MA.Release, MA.Edit, MA.Readd, MA.Refresh, MA.Delete],
|
'actions': [MA.IMDB, MA.Trailer, MA.Release, MA.Refresh, MA.Delete],
|
||||||
'title': 'Snatched & Available',
|
'title': 'Snatched & Available',
|
||||||
'on_empty_element': new Element('div'),
|
'on_empty_element': new Element('div'),
|
||||||
'filter': {
|
'filter': {
|
||||||
|
|||||||
Reference in new issue
Block a user