Merge Develop into Net-Import
@@ -1,7 +1,7 @@
|
||||
var Marionette = require('marionette');
|
||||
var Backgrid = require('backgrid');
|
||||
var QueueCollection = require('./QueueCollection');
|
||||
var SeriesTitleCell = require('../../Cells/MovieTitleCell');
|
||||
var MovieTitleCell = require('../../Cells/MovieTitleCell');
|
||||
var EpisodeNumberCell = require('../../Cells/EpisodeNumberCell');
|
||||
var EpisodeTitleCell = require('../../Cells/EpisodeTitleCell');
|
||||
var QualityCell = require('../../Cells/QualityCell');
|
||||
@@ -30,7 +30,7 @@ module.exports = Marionette.Layout.extend({
|
||||
{
|
||||
name : 'movie',
|
||||
label : 'Movie',
|
||||
cell : SeriesTitleCell
|
||||
cell : MovieTitleCell
|
||||
},
|
||||
/*{
|
||||
name : 'episode',
|
||||
|
||||
@@ -6,9 +6,7 @@ module.exports = TemplatedCell.extend({
|
||||
|
||||
|
||||
render : function() {
|
||||
this.$el.html(this.model.get("movie").get("title")); //Hack, but somehow handlebar helper does not work.
|
||||
debugger;
|
||||
this.$el.html('<a href="movies/' + this.model.get("movie").get("titleSlug") +'">' + this.model.get("movie").get("title") + '</a>'); //Hack, but somehow handlebar helper does not work.
|
||||
return this;
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
@@ -2,23 +2,26 @@ var $ = require('jquery');
|
||||
var vent = require('./vent');
|
||||
|
||||
module.exports = {
|
||||
ConfigNamespace : 'Radarr.',
|
||||
|
||||
Events : {
|
||||
ConfigUpdatedEvent : 'ConfigUpdatedEvent'
|
||||
},
|
||||
|
||||
Keys : {
|
||||
DefaultProfileId : 'DefaultProfileId',
|
||||
DefaultRootFolderId : 'DefaultRootFolderId',
|
||||
UseSeasonFolder : 'UseSeasonFolder',
|
||||
DefaultSeriesType : 'DefaultSeriesType',
|
||||
MonitorEpisodes : 'MonitorEpisodes',
|
||||
AdvancedSettings : 'advancedSettings'
|
||||
DefaultProfileId : 'RadarrDefaultProfileId',
|
||||
DefaultRootFolderId : 'RadarrDefaultRootFolderId',
|
||||
UseSeasonFolder : 'RadarrUseSeasonFolder',
|
||||
DefaultSeriesType : 'RadarrDefaultSeriesType',
|
||||
MonitorEpisodes : 'RadarrMonitorEpisodes',
|
||||
AdvancedSettings : 'RadarradvancedSettings'
|
||||
},
|
||||
|
||||
getValueJson : function (key, defaultValue) {
|
||||
var storeKey = this.ConfigNamespace + key;
|
||||
defaultValue = defaultValue || {};
|
||||
|
||||
var storeValue = window.localStorage.getItem(key);
|
||||
var storeValue = window.localStorage.getItem(storeKey);
|
||||
|
||||
if (!storeValue) {
|
||||
return defaultValue;
|
||||
@@ -34,7 +37,8 @@ module.exports = {
|
||||
},
|
||||
|
||||
getValue : function(key, defaultValue) {
|
||||
var storeValue = window.localStorage.getItem(key);
|
||||
var storeKey = this.ConfigNamespace + key;
|
||||
var storeValue = window.localStorage.getItem(storeKey);
|
||||
|
||||
if (!storeValue) {
|
||||
return defaultValue;
|
||||
@@ -48,22 +52,22 @@ module.exports = {
|
||||
},
|
||||
|
||||
setValue : function(key, value) {
|
||||
|
||||
console.log('Config: [{0}] => [{1}]'.format(key, value));
|
||||
var storeKey = this.ConfigNamespace + key;
|
||||
console.log('Config: [{0}] => [{1}]'.format(storeKey, value));
|
||||
|
||||
if (this.getValue(key) === value.toString()) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
window.localStorage.setItem(key, value);
|
||||
window.localStorage.setItem(storeKey, value);
|
||||
vent.trigger(this.Events.ConfigUpdatedEvent, {
|
||||
key : key,
|
||||
value : value
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
console.error('Unable to save config: [{0}] => [{1}]'.format(key, value));
|
||||
console.error('Unable to save config: [{0}] => [{1}]'.format(storeKey, value));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 862 B |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 1018 B |
|
After Width: | Height: | Size: 890 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 971 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square70x70logo src="/Content/Images/favicon/mstile-70x70.png"/>
|
||||
<square150x150logo src="/Content/Images/favicon/mstile-150x150.png"/>
|
||||
<square310x310logo src="/Content/Images/favicon/mstile-310x310.png"/>
|
||||
<wide310x150logo src="/Content/Images/favicon/mstile-310x150.png"/>
|
||||
<TileColor>#272727</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
|
After Width: | Height: | Size: 488 B |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 843 B |
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"name": "Radarr",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/Content/Images/favicon/android-chrome-36x36.png",
|
||||
"sizes": "36x36",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/Content/Images/favicon/android-chrome-48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/Content/Images/favicon/android-chrome-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/Content/Images/favicon/android-chrome-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/Content/Images/favicon/android-chrome-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/Content/Images/favicon/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/Content/Images/favicon/android-chrome-256x256.png",
|
||||
"sizes": "256x256",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/Content/Images/favicon/android-chrome-384x384.png",
|
||||
"sizes": "384x384",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/Content/Images/favicon/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"theme_color": "#272727",
|
||||
"background_color": "#272727",
|
||||
"display": "standalone"
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="16.000000pt" height="16.000000pt" viewBox="0 0 16.000000 16.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,16.000000) scale(0.002286,-0.002286)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M3298 6995 c-1 -1 -45 -5 -97 -9 -51 -3 -96 -8 -100 -10 -3 -2 -40
|
||||
-7 -80 -10 -41 -4 -78 -9 -81 -11 -3 -2 -24 -6 -46 -9 -51 -8 -81 -14 -102
|
||||
-20 -9 -3 -33 -8 -52 -11 -96 -16 -424 -116 -527 -161 -18 -8 -48 -21 -67 -29
|
||||
-19 -8 -37 -15 -40 -15 -9 0 -274 -132 -332 -166 -127 -73 -278 -174 -388
|
||||
-257 -67 -50 -123 -94 -126 -98 -3 -4 -25 -23 -50 -44 -71 -58 -236 -221 -326
|
||||
-323 -316 -355 -553 -766 -705 -1223 -26 -81 -51 -158 -53 -170 -3 -13 -12
|
||||
-51 -21 -84 -8 -33 -18 -76 -21 -95 -3 -19 -7 -37 -9 -40 -5 -7 -34 -174 -41
|
||||
-232 -3 -24 -7 -59 -10 -78 -12 -85 -18 -209 -18 -395 -1 -318 12 -441 89
|
||||
-815 2 -8 9 -35 16 -60 7 -25 13 -51 15 -58 9 -48 85 -270 131 -382 189 -466
|
||||
458 -863 823 -1215 66 -63 101 -95 210 -189 33 -28 204 -154 255 -188 140 -91
|
||||
198 -126 312 -186 115 -60 166 -85 298 -142 40 -18 102 -41 206 -78 185 -67
|
||||
485 -138 664 -157 28 -3 56 -8 64 -11 74 -25 640 -25 821 1 14 2 48 6 75 10
|
||||
43 6 184 31 280 50 62 12 224 58 338 96 791 262 1462 798 1894 1515 61 99 157
|
||||
284 208 399 98 220 209 585 239 791 4 22 9 51 11 64 3 14 13 84 22 155 24 188
|
||||
23 692 -2 810 -2 11 -7 39 -9 63 -41 338 -165 738 -335 1082 -456 919 -1301
|
||||
1595 -2301 1839 -121 29 -308 63 -420 76 -30 4 -68 8 -85 11 -35 5 -522 14
|
||||
-527 9z m-1674 -897 c59 -62 246 -254 415 -427 168 -173 343 -353 389 -400
|
||||
141 -145 335 -341 338 -341 2 0 29 12 61 26 61 28 283 105 283 99 0 -2 14 0
|
||||
32 5 30 9 52 13 168 30 72 11 320 10 390 -1 30 -5 69 -11 85 -13 106 -17 243
|
||||
-62 426 -138 28 -12 31 -8 464 437 59 61 236 243 394 405 159 162 318 326 354
|
||||
364 l66 69 43 -34 c204 -157 437 -383 581 -564 291 -364 508 -782 624 -1205
|
||||
37 -134 72 -300 88 -415 3 -22 8 -51 10 -65 3 -14 7 -56 10 -95 3 -38 8 -90
|
||||
11 -115 7 -65 7 -363 -1 -445 -18 -202 -24 -248 -51 -390 -13 -71 -36 -173
|
||||
-50 -225 -13 -52 -27 -104 -29 -115 -22 -98 -137 -384 -225 -560 -167 -330
|
||||
-349 -582 -615 -850 -141 -142 -199 -194 -328 -294 l-70 -55 -170 175 c-93 96
|
||||
-306 314 -472 484 -166 171 -372 381 -456 468 l-154 158 -75 -34 c-113 -52
|
||||
-204 -81 -350 -112 -184 -39 -449 -39 -625 0 -144 31 -288 79 -381 125 l-39
|
||||
19 -140 -144 c-249 -255 -735 -753 -924 -947 -101 -103 -187 -188 -191 -188
|
||||
-3 0 -15 8 -26 18 -10 9 -42 34 -69 55 -256 196 -597 573 -750 829 -5 9 -34
|
||||
56 -63 105 -129 214 -277 560 -338 790 -9 32 -17 65 -20 73 -16 56 -72 347
|
||||
-78 400 -3 36 -8 81 -11 100 -15 125 -22 460 -11 560 2 19 7 73 11 120 4 46 8
|
||||
87 10 90 1 3 6 32 10 65 3 32 8 62 11 66 2 3 6 31 10 60 3 30 8 57 11 62 2 4
|
||||
7 20 9 35 26 150 117 429 206 632 128 294 310 584 523 836 114 134 339 350
|
||||
479 459 21 17 48 38 60 47 12 10 23 17 26 18 3 0 54 -51 114 -112z"/>
|
||||
<path d="M1403 5507 c-251 -260 -468 -600 -603 -942 -59 -148 -133 -395 -146
|
||||
-485 -2 -14 -6 -36 -9 -50 -27 -128 -48 -349 -48 -515 -1 -94 12 -334 17 -344
|
||||
2 -3 7 -35 10 -70 21 -197 115 -543 203 -741 45 -101 120 -251 150 -298 18
|
||||
-29 33 -55 33 -58 0 -7 160 -247 169 -254 3 -3 31 -36 62 -75 89 -110 195
|
||||
-225 208 -225 3 0 311 306 684 679 373 374 687 687 697 696 19 17 21 16 58
|
||||
-17 227 -205 561 -282 862 -198 132 37 274 116 367 203 32 30 33 30 52 13 11
|
||||
-10 321 -319 688 -687 367 -369 676 -674 685 -679 17 -10 30 1 146 129 93 102
|
||||
255 329 329 461 180 319 293 637 347 970 23 147 25 160 32 271 17 253 7 429
|
||||
-41 744 -10 64 -64 272 -96 370 -134 403 -362 786 -654 1093 l-50 53 -701
|
||||
-701 -701 -700 -27 25 c-174 161 -398 246 -636 240 -149 -4 -180 -9 -284 -44
|
||||
-122 -42 -244 -113 -336 -198 l-24 -22 -698 697 c-384 383 -700 698 -701 699
|
||||
-2 1 -21 -17 -44 -40z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 2.6 KiB |
@@ -16,302 +16,303 @@ require('backstrech');
|
||||
require('../../Mixins/backbone.signalr.mixin');
|
||||
|
||||
module.exports = Marionette.Layout.extend({
|
||||
itemViewContainer : '.x-movie-seasons',
|
||||
template : 'Movies/Details/MoviesDetailsTemplate',
|
||||
itemViewContainer : '.x-movie-seasons',
|
||||
template : 'Movies/Details/MoviesDetailsTemplate',
|
||||
|
||||
regions : {
|
||||
seasons : '#seasons',
|
||||
info : '#info',
|
||||
search : '#movie-search',
|
||||
history : '#movie-history',
|
||||
files : "#movie-files"
|
||||
},
|
||||
regions : {
|
||||
seasons : '#seasons',
|
||||
info : '#info',
|
||||
search : '#movie-search',
|
||||
history : '#movie-history',
|
||||
files : "#movie-files"
|
||||
},
|
||||
|
||||
|
||||
ui : {
|
||||
header : '.x-header',
|
||||
monitored : '.x-monitored',
|
||||
edit : '.x-edit',
|
||||
refresh : '.x-refresh',
|
||||
rename : '.x-rename',
|
||||
searchAuto : '.x-search',
|
||||
poster : '.x-movie-poster',
|
||||
manualSearch : '.x-manual-search',
|
||||
history : '.x-movie-history',
|
||||
search : '.x-movie-search',
|
||||
files : ".x-movie-files"
|
||||
},
|
||||
ui : {
|
||||
header : '.x-header',
|
||||
monitored : '.x-monitored',
|
||||
edit : '.x-edit',
|
||||
refresh : '.x-refresh',
|
||||
rename : '.x-rename',
|
||||
searchAuto : '.x-search',
|
||||
poster : '.x-movie-poster',
|
||||
manualSearch : '.x-manual-search',
|
||||
history : '.x-movie-history',
|
||||
search : '.x-movie-search',
|
||||
files : ".x-movie-files"
|
||||
},
|
||||
|
||||
events : {
|
||||
'click .x-episode-file-editor' : '_showFiles',
|
||||
'click .x-monitored' : '_toggleMonitored',
|
||||
'click .x-edit' : '_editMovie',
|
||||
'click .x-refresh' : '_refreshMovies',
|
||||
'click .x-rename' : '_renameMovies',
|
||||
'click .x-search' : '_moviesSearch',
|
||||
'click .x-manual-search' : '_showSearch',
|
||||
'click .x-movie-history' : '_showHistory',
|
||||
'click .x-movie-search' : '_showSearch',
|
||||
"click .x-movie-files" : "_showFiles",
|
||||
},
|
||||
events : {
|
||||
'click .x-episode-file-editor' : '_showFiles',
|
||||
'click .x-monitored' : '_toggleMonitored',
|
||||
'click .x-edit' : '_editMovie',
|
||||
'click .x-refresh' : '_refreshMovies',
|
||||
'click .x-rename' : '_renameMovies',
|
||||
'click .x-search' : '_moviesSearch',
|
||||
'click .x-manual-search' : '_showSearch',
|
||||
'click .x-movie-history' : '_showHistory',
|
||||
'click .x-movie-search' : '_showSearch',
|
||||
"click .x-movie-files" : "_showFiles",
|
||||
},
|
||||
|
||||
initialize : function() {
|
||||
this.moviesCollection = MoviesCollection.clone();
|
||||
this.moviesCollection.shadowCollection.bindSignalR();
|
||||
initialize : function() {
|
||||
this.moviesCollection = MoviesCollection.clone();
|
||||
this.moviesCollection.shadowCollection.bindSignalR();
|
||||
|
||||
this.listenTo(this.model, 'change:monitored', this._setMonitoredState);
|
||||
this.listenTo(this.model, 'remove', this._moviesRemoved);
|
||||
this.listenTo(vent, vent.Events.CommandComplete, this._commandComplete);
|
||||
this.listenTo(this.model, 'change:monitored', this._setMonitoredState);
|
||||
this.listenTo(this.model, 'remove', this._moviesRemoved);
|
||||
this.listenTo(this.model, "change:movieFile", this._refreshFiles);
|
||||
|
||||
this.listenTo(this.model, 'change', function(model, options) {
|
||||
if (options && options.changeSource === 'signalr') {
|
||||
this._refresh();
|
||||
}
|
||||
});
|
||||
this.listenTo(vent, vent.Events.CommandComplete, this._commandComplete);
|
||||
|
||||
this.listenTo(this.model, 'change:images', this._updateImages);
|
||||
},
|
||||
this.listenTo(this.model, 'change', function(model, options) {
|
||||
if (options && options.changeSource === 'signalr') {
|
||||
this._refresh();
|
||||
}
|
||||
});
|
||||
|
||||
onShow : function() {
|
||||
this.searchLayout = new SearchLayout({ model : this.model });
|
||||
this.searchLayout.startManualSearch = true;
|
||||
this.listenTo(this.model, 'change:images', this._updateImages);
|
||||
},
|
||||
|
||||
this.filesLayout = new FilesLayout({ model : this.model });
|
||||
onShow : function() {
|
||||
this.searchLayout = new SearchLayout({ model : this.model });
|
||||
this.searchLayout.startManualSearch = true;
|
||||
|
||||
this._showBackdrop();
|
||||
this._showSeasons();
|
||||
this._setMonitoredState();
|
||||
this._showInfo();
|
||||
if (this.model.get("movieFile")) {
|
||||
this._showFiles()
|
||||
} else {
|
||||
this._showHistory();
|
||||
}
|
||||
this.filesLayout = new FilesLayout({ model : this.model });
|
||||
|
||||
},
|
||||
this._showBackdrop();
|
||||
this._showSeasons();
|
||||
this._setMonitoredState();
|
||||
this._showInfo();
|
||||
if (this.model.get("movieFile")) {
|
||||
this._showFiles()
|
||||
} else {
|
||||
this._showHistory();
|
||||
}
|
||||
|
||||
onRender : function() {
|
||||
CommandController.bindToCommand({
|
||||
element : this.ui.refresh,
|
||||
command : {
|
||||
name : 'refreshMovie'
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
CommandController.bindToCommand({
|
||||
element : this.ui.searchAuto,
|
||||
command : {
|
||||
name : 'moviesSearch'
|
||||
}
|
||||
});
|
||||
onRender : function() {
|
||||
CommandController.bindToCommand({
|
||||
element : this.ui.refresh,
|
||||
command : {
|
||||
name : 'refreshMovie'
|
||||
}
|
||||
});
|
||||
|
||||
CommandController.bindToCommand({
|
||||
element : this.ui.rename,
|
||||
command : {
|
||||
name : 'renameMovieFiles',
|
||||
movieId : this.model.id,
|
||||
seasonNumber : -1
|
||||
}
|
||||
});
|
||||
},
|
||||
CommandController.bindToCommand({
|
||||
element : this.ui.searchAuto,
|
||||
command : {
|
||||
name : 'moviesSearch'
|
||||
}
|
||||
});
|
||||
|
||||
onClose : function() {
|
||||
if (this._backstrech) {
|
||||
this._backstrech.destroy();
|
||||
delete this._backstrech;
|
||||
}
|
||||
CommandController.bindToCommand({
|
||||
element : this.ui.rename,
|
||||
command : {
|
||||
name : 'renameMovieFiles',
|
||||
movieId : this.model.id,
|
||||
seasonNumber : -1
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
$('body').removeClass('backdrop');
|
||||
reqres.removeHandler(reqres.Requests.GetEpisodeFileById);
|
||||
},
|
||||
onClose : function() {
|
||||
if (this._backstrech) {
|
||||
this._backstrech.destroy();
|
||||
delete this._backstrech;
|
||||
}
|
||||
|
||||
_getImage : function(type) {
|
||||
var image = _.where(this.model.get('images'), { coverType : type });
|
||||
$('body').removeClass('backdrop');
|
||||
reqres.removeHandler(reqres.Requests.GetEpisodeFileById);
|
||||
},
|
||||
|
||||
if (image && image[0]) {
|
||||
return image[0].url;
|
||||
}
|
||||
_getImage : function(type) {
|
||||
var image = _.where(this.model.get('images'), { coverType : type });
|
||||
|
||||
return undefined;
|
||||
},
|
||||
if (image && image[0]) {
|
||||
return image[0].url;
|
||||
}
|
||||
|
||||
_showHistory : function(e) {
|
||||
if (e) {
|
||||
e.preventDefault();
|
||||
}
|
||||
return undefined;
|
||||
},
|
||||
|
||||
this.ui.history.tab('show');
|
||||
this.history.show(new HistoryLayout({
|
||||
model : this.model
|
||||
}));
|
||||
},
|
||||
_showHistory : function(e) {
|
||||
if (e) {
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
_showSearch : function(e) {
|
||||
if (e) {
|
||||
e.preventDefault();
|
||||
}
|
||||
this.ui.history.tab('show');
|
||||
this.history.show(new HistoryLayout({
|
||||
model : this.model
|
||||
}));
|
||||
},
|
||||
|
||||
this.ui.search.tab('show');
|
||||
this.search.show(this.searchLayout);
|
||||
},
|
||||
_showSearch : function(e) {
|
||||
if (e) {
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
_showFiles : function(e) {
|
||||
if (e) {
|
||||
e.preventDefault();
|
||||
}
|
||||
this.ui.search.tab('show');
|
||||
this.search.show(this.searchLayout);
|
||||
},
|
||||
|
||||
this.ui.files.tab('show');
|
||||
this.files.show(this.filesLayout);
|
||||
},
|
||||
_showFiles : function(e) {
|
||||
if (e) {
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
_toggleMonitored : function() {
|
||||
var savePromise = this.model.save('monitored', !this.model.get('monitored'), { wait : true });
|
||||
this.ui.files.tab('show');
|
||||
this.files.show(this.filesLayout);
|
||||
},
|
||||
|
||||
this.ui.monitored.spinForPromise(savePromise);
|
||||
},
|
||||
_toggleMonitored : function() {
|
||||
var savePromise = this.model.save('monitored', !this.model.get('monitored'), { wait : true });
|
||||
|
||||
_setMonitoredState : function() {
|
||||
var monitored = this.model.get('monitored');
|
||||
this.ui.monitored.spinForPromise(savePromise);
|
||||
},
|
||||
|
||||
this.ui.monitored.removeAttr('data-idle-icon');
|
||||
this.ui.monitored.removeClass('fa-spin icon-sonarr-spinner');
|
||||
_setMonitoredState : function() {
|
||||
var monitored = this.model.get('monitored');
|
||||
|
||||
if (monitored) {
|
||||
this.ui.monitored.addClass('icon-sonarr-monitored');
|
||||
this.ui.monitored.removeClass('icon-sonarr-unmonitored');
|
||||
this.$el.removeClass('movie-not-monitored');
|
||||
} else {
|
||||
this.ui.monitored.addClass('icon-sonarr-unmonitored');
|
||||
this.ui.monitored.removeClass('icon-sonarr-monitored');
|
||||
this.$el.addClass('movie-not-monitored');
|
||||
}
|
||||
},
|
||||
this.ui.monitored.removeAttr('data-idle-icon');
|
||||
this.ui.monitored.removeClass('fa-spin icon-sonarr-spinner');
|
||||
|
||||
_editMovie : function() {
|
||||
vent.trigger(vent.Commands.EditMovieCommand, { movie : this.model });
|
||||
},
|
||||
if (monitored) {
|
||||
this.ui.monitored.addClass('icon-sonarr-monitored');
|
||||
this.ui.monitored.removeClass('icon-sonarr-unmonitored');
|
||||
this.$el.removeClass('movie-not-monitored');
|
||||
} else {
|
||||
this.ui.monitored.addClass('icon-sonarr-unmonitored');
|
||||
this.ui.monitored.removeClass('icon-sonarr-monitored');
|
||||
this.$el.addClass('movie-not-monitored');
|
||||
}
|
||||
},
|
||||
|
||||
_refreshMovies : function() {
|
||||
CommandController.Execute('refreshMovie', {
|
||||
name : 'refreshMovie',
|
||||
movieId : this.model.id
|
||||
});
|
||||
},
|
||||
_editMovie : function() {
|
||||
vent.trigger(vent.Commands.EditMovieCommand, { movie : this.model });
|
||||
},
|
||||
|
||||
_moviesRemoved : function() {
|
||||
Backbone.history.navigate('/', { trigger : true });
|
||||
},
|
||||
_refreshMovies : function() {
|
||||
CommandController.Execute('refreshMovie', {
|
||||
name : 'refreshMovie',
|
||||
movieId : this.model.id
|
||||
});
|
||||
},
|
||||
|
||||
_renameMovies : function() {
|
||||
vent.trigger(vent.Commands.ShowRenamePreview, { movie : this.model });
|
||||
},
|
||||
_moviesRemoved : function() {
|
||||
Backbone.history.navigate('/', { trigger : true });
|
||||
},
|
||||
|
||||
_moviesSearch : function() {
|
||||
CommandController.Execute('moviesSearch', {
|
||||
name : 'moviesSearch',
|
||||
movieId : this.model.id
|
||||
});
|
||||
},
|
||||
_renameMovies : function() {
|
||||
vent.trigger(vent.Commands.ShowRenamePreview, { movie : this.model });
|
||||
},
|
||||
|
||||
_showSeasons : function() {
|
||||
var self = this;
|
||||
_moviesSearch : function() {
|
||||
CommandController.Execute('moviesSearch', {
|
||||
name : 'moviesSearch',
|
||||
movieIds : [this.model.id]
|
||||
});
|
||||
},
|
||||
|
||||
return;
|
||||
_showSeasons : function() {
|
||||
var self = this;
|
||||
|
||||
reqres.setHandler(reqres.Requests.GetEpisodeFileById, function(episodeFileId) {
|
||||
return self.episodeFileCollection.get(episodeFileId);
|
||||
});
|
||||
return;
|
||||
|
||||
reqres.setHandler(reqres.Requests.GetAlternateNameBySeasonNumber, function(moviesId, seasonNumber, sceneSeasonNumber) {
|
||||
if (self.model.get('id') !== moviesId) {
|
||||
return [];
|
||||
}
|
||||
reqres.setHandler(reqres.Requests.GetEpisodeFileById, function(episodeFileId) {
|
||||
return self.episodeFileCollection.get(episodeFileId);
|
||||
});
|
||||
|
||||
if (sceneSeasonNumber === undefined) {
|
||||
sceneSeasonNumber = seasonNumber;
|
||||
}
|
||||
reqres.setHandler(reqres.Requests.GetAlternateNameBySeasonNumber, function(moviesId, seasonNumber, sceneSeasonNumber) {
|
||||
if (self.model.get('id') !== moviesId) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return _.where(self.model.get('alternateTitles'),
|
||||
function(alt) {
|
||||
return alt.sceneSeasonNumber === sceneSeasonNumber || alt.seasonNumber === seasonNumber;
|
||||
});
|
||||
});
|
||||
if (sceneSeasonNumber === undefined) {
|
||||
sceneSeasonNumber = seasonNumber;
|
||||
}
|
||||
|
||||
$.when(this.episodeCollection.fetch(), this.episodeFileCollection.fetch()).done(function() {
|
||||
var seasonCollectionView = new SeasonCollectionView({
|
||||
collection : self.seasonCollection,
|
||||
episodeCollection : self.episodeCollection,
|
||||
movies : self.model
|
||||
});
|
||||
return _.where(self.model.get('alternateTitles'),
|
||||
function(alt) {
|
||||
return alt.sceneSeasonNumber === sceneSeasonNumber || alt.seasonNumber === seasonNumber;
|
||||
});
|
||||
});
|
||||
|
||||
if (!self.isClosed) {
|
||||
self.seasons.show(seasonCollectionView);
|
||||
}
|
||||
});
|
||||
},
|
||||
$.when(this.episodeCollection.fetch(), this.episodeFileCollection.fetch()).done(function() {
|
||||
var seasonCollectionView = new SeasonCollectionView({
|
||||
collection : self.seasonCollection,
|
||||
episodeCollection : self.episodeCollection,
|
||||
movies : self.model
|
||||
});
|
||||
|
||||
_showInfo : function() {
|
||||
this.info.show(new InfoView({
|
||||
model : this.model
|
||||
}));
|
||||
},
|
||||
if (!self.isClosed) {
|
||||
self.seasons.show(seasonCollectionView);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
_commandComplete : function(options) {
|
||||
if (options.command.get('name') === 'renameMoviefiles') {
|
||||
if (options.command.get('moviesId') === this.model.get('id')) {
|
||||
this._refresh();
|
||||
}
|
||||
}
|
||||
},
|
||||
_showInfo : function() {
|
||||
this.info.show(new InfoView({
|
||||
model : this.model
|
||||
}));
|
||||
},
|
||||
|
||||
_refresh : function() {
|
||||
//this.seasonCollection.add(this.model.get('seasons'), { merge : true });
|
||||
//this.episodeCollection.fetch();
|
||||
//this.episodeFileCollection.fetch();
|
||||
_commandComplete : function(options) {
|
||||
if (options.command.get('name') === 'renameMoviefiles') {
|
||||
if (options.command.get('moviesId') === this.model.get('id')) {
|
||||
this._refresh();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
this._setMonitoredState();
|
||||
this._showInfo();
|
||||
},
|
||||
_refresh : function() {
|
||||
//this.seasonCollection.add(this.model.get('seasons'), { merge : true });
|
||||
//this.episodeCollection.fetch();
|
||||
//this.episodeFileCollection.fetch();
|
||||
this._setMonitoredState();
|
||||
this._showInfo();
|
||||
},
|
||||
|
||||
_openEpisodeFileEditor : function() {
|
||||
var view = new EpisodeFileEditorLayout({
|
||||
movies : this.model,
|
||||
episodeCollection : this.episodeCollection
|
||||
});
|
||||
_openEpisodeFileEditor : function() {
|
||||
var view = new EpisodeFileEditorLayout({
|
||||
movies : this.model,
|
||||
episodeCollection : this.episodeCollection
|
||||
});
|
||||
|
||||
vent.trigger(vent.Commands.OpenModalCommand, view);
|
||||
},
|
||||
vent.trigger(vent.Commands.OpenModalCommand, view);
|
||||
},
|
||||
|
||||
_updateImages : function () {
|
||||
var poster = this._getImage('poster');
|
||||
_updateImages : function () {
|
||||
var poster = this._getImage('poster');
|
||||
|
||||
if (poster) {
|
||||
this.ui.poster.attr('src', poster);
|
||||
}
|
||||
if (poster) {
|
||||
this.ui.poster.attr('src', poster);
|
||||
}
|
||||
|
||||
this._showBackdrop();
|
||||
},
|
||||
this._showBackdrop();
|
||||
},
|
||||
|
||||
_showBackdrop : function () {
|
||||
$('body').addClass('backdrop');
|
||||
var fanArt = this._getImage('banner');
|
||||
_showBackdrop : function () {
|
||||
$('body').addClass('backdrop');
|
||||
var fanArt = this._getImage('banner');
|
||||
|
||||
if (fanArt) {
|
||||
this._backstrech = $.backstretch(fanArt);
|
||||
} else {
|
||||
$('body').removeClass('backdrop');
|
||||
}
|
||||
},
|
||||
if (fanArt) {
|
||||
this._backstrech = $.backstretch(fanArt);
|
||||
} else {
|
||||
$('body').removeClass('backdrop');
|
||||
}
|
||||
},
|
||||
|
||||
_manualSearchM : function() {
|
||||
console.warn("Manual Search started");
|
||||
console.warn(this.model.id);
|
||||
console.warn(this.model)
|
||||
console.warn(this.episodeCollection);
|
||||
vent.trigger(vent.Commands.ShowEpisodeDetails, {
|
||||
episode : this.model,
|
||||
hideMoviesLink : true,
|
||||
openingTab : 'search'
|
||||
});
|
||||
}
|
||||
_manualSearchM : function() {
|
||||
console.warn("Manual Search started");
|
||||
console.warn(this.model.id);
|
||||
console.warn(this.model)
|
||||
console.warn(this.episodeCollection);
|
||||
vent.trigger(vent.Commands.ShowEpisodeDetails, {
|
||||
episode : this.model,
|
||||
hideMoviesLink : true,
|
||||
openingTab : 'search'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3>{{relativePath}}</h3>
|
||||
</div>
|
||||
<div class="modal-body edit-series-modal">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">Quality</label>
|
||||
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control x-quality" id="inputProfile" name="qualityId">
|
||||
{{#each qualities}}
|
||||
<option value="{{quality.id}}">{{quality.name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
|
||||
<span class="indicator x-indicator"><i class="icon-sonarr-spinner fa-spin"></i></span>
|
||||
<button class="btn" data-dismiss="modal">Cancel</button>
|
||||
<button class="btn btn-primary x-save">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,60 @@
|
||||
var vent = require('vent');
|
||||
var Marionette = require('marionette');
|
||||
var Qualities = require('../../../Quality/QualityDefinitionCollection');
|
||||
var AsModelBoundView = require('../../../Mixins/AsModelBoundView');
|
||||
var AsValidatedView = require('../../../Mixins/AsValidatedView');
|
||||
var AsEditModalView = require('../../../Mixins/AsEditModalView');
|
||||
require('../../../Mixins/TagInput');
|
||||
require('../../../Mixins/FileBrowser');
|
||||
|
||||
var view = Marionette.ItemView.extend({
|
||||
template : 'Movies/Files/Edit/EditFileTemplate',
|
||||
|
||||
ui : {
|
||||
quality : '.x-quality',
|
||||
path : '.x-path',
|
||||
tags : '.x-tags'
|
||||
},
|
||||
|
||||
events : {
|
||||
|
||||
},
|
||||
|
||||
initialize : function() {
|
||||
this.qualities = new Qualities();
|
||||
var self = this;
|
||||
this.listenTo(this.qualities, 'all', this._qualitiesUpdated);
|
||||
this.qualities.fetch()
|
||||
|
||||
},
|
||||
|
||||
onRender : function() {
|
||||
this.ui.quality.val(this.model.get("quality").quality.id)
|
||||
},
|
||||
|
||||
_onBeforeSave : function() {
|
||||
var qualityId = this.ui.quality.val();
|
||||
var quality = this.qualities.find(function(m){return m.get("quality").id == qualityId}).get("quality");
|
||||
var mQuality = this.model.get("quality");
|
||||
mQuality.quality = quality;
|
||||
this.model.set({ quality : mQuality });
|
||||
},
|
||||
|
||||
_qualitiesUpdated : function() {
|
||||
this.templateHelpers = {};
|
||||
this.templateHelpers.qualities = this.qualities.toJSON();
|
||||
this.render();
|
||||
},
|
||||
|
||||
_onAfterSave : function() {
|
||||
this.trigger('saved');
|
||||
vent.trigger(vent.Commands.CloseModalCommand);
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
AsModelBoundView.call(view);
|
||||
AsValidatedView.call(view);
|
||||
AsEditModalView.call(view);
|
||||
|
||||
module.exports = view;
|
||||
@@ -0,0 +1,22 @@
|
||||
var vent = require('vent');
|
||||
var Backgrid = require('backgrid');
|
||||
|
||||
module.exports = Backgrid.Cell.extend({
|
||||
className : 'edit-episode-file-cell',
|
||||
|
||||
events : {
|
||||
'click' : '_onClick'
|
||||
},
|
||||
|
||||
render : function() {
|
||||
this.$el.empty();
|
||||
this.$el.html('<i class="icon-sonarr-edit" title="Edit information about this file."></i>');
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
_onClick : function() {
|
||||
var self = this;
|
||||
vent.trigger(vent.Commands.EditFileCommand, { file : this.model });
|
||||
}
|
||||
});
|
||||
@@ -19,89 +19,117 @@ var ProtocolCell = require('../../Release/ProtocolCell');
|
||||
var PeersCell = require('../../Release/PeersCell');
|
||||
var EditionCell = require('../../Cells/EditionCell');
|
||||
var DeleteFileCell = require("./DeleteFileCell");
|
||||
var EditFileCell = require("./EditFileCell");
|
||||
|
||||
module.exports = Marionette.Layout.extend({
|
||||
template : 'Movies/Files/FilesLayoutTemplate',
|
||||
template : 'Movies/Files/FilesLayoutTemplate',
|
||||
|
||||
regions : {
|
||||
main : '#movie-files-region',
|
||||
grid : "#movie-files-grid"
|
||||
},
|
||||
regions : {
|
||||
main : '#movie-files-region',
|
||||
grid : "#movie-files-grid"
|
||||
},
|
||||
|
||||
events : {
|
||||
'click .x-search-auto' : '_searchAuto',
|
||||
'click .x-search-manual' : '_searchManual',
|
||||
'click .x-search-back' : '_showButtons'
|
||||
},
|
||||
events : {
|
||||
'click .x-search-auto' : '_searchAuto',
|
||||
'click .x-search-manual' : '_searchManual',
|
||||
'click .x-search-back' : '_showButtons'
|
||||
},
|
||||
|
||||
columns : [
|
||||
{
|
||||
name : 'title',
|
||||
label : 'Title',
|
||||
cell : FileTitleCell
|
||||
},
|
||||
{
|
||||
name : "mediaInfo",
|
||||
label : "Media Info",
|
||||
cell : MediaInfoCell
|
||||
},
|
||||
{
|
||||
name : 'edition',
|
||||
label : 'Edition',
|
||||
cell : EditionCell,
|
||||
title : "Edition",
|
||||
},
|
||||
{
|
||||
name : 'size',
|
||||
label : 'Size',
|
||||
cell : FileSizeCell
|
||||
},
|
||||
{
|
||||
name : 'quality',
|
||||
label : 'Quality',
|
||||
cell : QualityCell,
|
||||
},
|
||||
{
|
||||
name : "delete",
|
||||
label : "",
|
||||
cell : DeleteFileCell,
|
||||
}
|
||||
],
|
||||
columns : [
|
||||
{
|
||||
name : 'title',
|
||||
label : 'Title',
|
||||
cell : FileTitleCell
|
||||
},
|
||||
{
|
||||
name : "mediaInfo",
|
||||
label : "Media Info",
|
||||
cell : MediaInfoCell
|
||||
},
|
||||
{
|
||||
name : 'edition',
|
||||
label : 'Edition',
|
||||
cell : EditionCell,
|
||||
title : "Edition",
|
||||
},
|
||||
{
|
||||
name : 'size',
|
||||
label : 'Size',
|
||||
cell : FileSizeCell
|
||||
},
|
||||
{
|
||||
name : 'quality',
|
||||
label : 'Quality',
|
||||
cell : QualityCell,
|
||||
},
|
||||
{
|
||||
name : "delete",
|
||||
label : "",
|
||||
cell : DeleteFileCell,
|
||||
},
|
||||
{
|
||||
name : "edit",
|
||||
label : "",
|
||||
cell : EditFileCell,
|
||||
}
|
||||
],
|
||||
|
||||
|
||||
initialize : function(movie) {
|
||||
this.filesCollection = new FilesCollection();
|
||||
var file = movie.model.get("movieFile");
|
||||
this.filesCollection.add(file);
|
||||
//this.listenTo(this.releaseCollection, 'sync', this._showSearchResults);
|
||||
},
|
||||
initialize : function(movie) {
|
||||
this.filesCollection = new FilesCollection();
|
||||
var file = movie.model.get("movieFile");
|
||||
this.movie = movie;
|
||||
this.filesCollection.add(file);
|
||||
//this.listenTo(this.releaseCollection, 'sync', this._showSearchResults);
|
||||
this.listenTo(this.model, 'change', function(model, options) {
|
||||
if (options && options.changeSource === 'signalr') {
|
||||
this._refresh(movie);
|
||||
}
|
||||
});
|
||||
|
||||
onShow : function() {
|
||||
this.grid.show(new Backgrid.Grid({
|
||||
row : Backgrid.Row,
|
||||
columns : this.columns,
|
||||
collection : this.filesCollection,
|
||||
className : 'table table-hover'
|
||||
}));
|
||||
},
|
||||
vent.on(vent.Commands.CloseModalCommand, this._refreshClose, this);
|
||||
},
|
||||
|
||||
_showMainView : function() {
|
||||
this.main.show(this.mainView);
|
||||
},
|
||||
_refresh : function(movie) {
|
||||
this.filesCollection = new FilesCollection();
|
||||
var file = movie.model.get("movieFile");
|
||||
this.filesCollection.add(file);
|
||||
this.onShow();
|
||||
},
|
||||
|
||||
_showButtons : function() {
|
||||
this._showMainView();
|
||||
},
|
||||
_refreshClose : function(options) {
|
||||
this.filesCollection = new FilesCollection();
|
||||
var file = this.movie.model.get("movieFile");
|
||||
this.filesCollection.add(file);
|
||||
this.onShow();
|
||||
},
|
||||
|
||||
_showSearchResults : function() {
|
||||
if (this.releaseCollection.length === 0) {
|
||||
this.mainView = new NoResultsView();
|
||||
}
|
||||
onShow : function() {
|
||||
this.grid.show(new Backgrid.Grid({
|
||||
row : Backgrid.Row,
|
||||
columns : this.columns,
|
||||
collection : this.filesCollection,
|
||||
className : 'table table-hover'
|
||||
}));
|
||||
},
|
||||
|
||||
else {
|
||||
//this.mainView = new ManualSearchLayout({ collection : this.releaseCollection });
|
||||
}
|
||||
_showMainView : function() {
|
||||
this.main.show(this.mainView);
|
||||
},
|
||||
|
||||
this._showMainView();
|
||||
}
|
||||
_showButtons : function() {
|
||||
this._showMainView();
|
||||
},
|
||||
|
||||
_showSearchResults : function() {
|
||||
if (this.releaseCollection.length === 0) {
|
||||
this.mainView = new NoResultsView();
|
||||
}
|
||||
|
||||
else {
|
||||
//this.mainView = new ManualSearchLayout({ collection : this.releaseCollection });
|
||||
}
|
||||
|
||||
this._showMainView();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -182,6 +182,27 @@ module.exports = Marionette.Layout.extend({
|
||||
tooltip : 'Missing Only',
|
||||
icon : 'icon-sonarr-missing',
|
||||
callback : this._setFilter
|
||||
},
|
||||
{
|
||||
key : 'released',
|
||||
title : '',
|
||||
tooltip : 'Released',
|
||||
icon : 'icon-sonarr-movie-released',
|
||||
callback : this._setFilter
|
||||
},
|
||||
{
|
||||
key : 'announced',
|
||||
title : '',
|
||||
tooltip : 'Announced',
|
||||
icon : 'icon-sonarr-movie-announced',
|
||||
callback : this._setFilter
|
||||
},
|
||||
{
|
||||
key : 'cinemas',
|
||||
title : '',
|
||||
tooltip : 'In Cinemas',
|
||||
icon : 'icon-sonarr-movie-cinemas',
|
||||
callback : this._setFilter
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
@@ -14,13 +14,13 @@ var Collection = PageableCollection.extend({
|
||||
model : MovieModel,
|
||||
tableName : 'movie',
|
||||
|
||||
state : {
|
||||
sortKey : 'sortTitle',
|
||||
order : 1,
|
||||
pageSize : 100000,
|
||||
secondarySortKey : 'sortTitle',
|
||||
secondarySortOrder : -1
|
||||
},
|
||||
state : {
|
||||
sortKey : 'sortTitle',
|
||||
order : -1,
|
||||
pageSize : 100000,
|
||||
secondarySortKey : 'sortTitle',
|
||||
secondarySortOrder : -1
|
||||
},
|
||||
|
||||
mode : 'client',
|
||||
|
||||
@@ -47,6 +47,44 @@ var Collection = PageableCollection.extend({
|
||||
return proxy.save();
|
||||
},
|
||||
|
||||
filterModes : {
|
||||
'all' : [
|
||||
null,
|
||||
null
|
||||
],
|
||||
'continuing' : [
|
||||
'status',
|
||||
'continuing'
|
||||
],
|
||||
'ended' : [
|
||||
'status',
|
||||
'ended'
|
||||
],
|
||||
'monitored' : [
|
||||
'monitored',
|
||||
true
|
||||
],
|
||||
'missing' : [
|
||||
'downloaded',
|
||||
false
|
||||
],
|
||||
'released' : [
|
||||
null,
|
||||
null,
|
||||
function(model) { return model.getStatus() == "released"; }
|
||||
],
|
||||
'announced' : [
|
||||
null,
|
||||
null,
|
||||
function(model) { return model.getStatus() == "announced"; }
|
||||
],
|
||||
'cinemas' : [
|
||||
null,
|
||||
null,
|
||||
function(model) { return model.getStatus() == "inCinemas"; }
|
||||
]
|
||||
},
|
||||
|
||||
importFromList : function(models) {
|
||||
var self = this;
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
</div>
|
||||
|
||||
<div class="col-sm-2 col-sm-pull-1">
|
||||
<input type="number" name="downloadedMovieScanInterval" class="form-control" />
|
||||
<input type="number" name="downloadedEpisodesScanInterval" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
@@ -328,7 +328,7 @@
|
||||
</div>
|
||||
|
||||
{{#if_mono}}
|
||||
<div class="alert alert-warning">Please see: <a href="https://github.com/NzbDrone/NzbDrone/wiki/Updating">the wiki</a> for more information</div>
|
||||
<div class="alert alert-warning">Please see: <a href="https://github.com/Radarr/Radarr/wiki">the wiki</a> for more information</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">Automatic</label>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
</div>
|
||||
|
||||
<div class="col-sm-2 col-sm-pull-1">
|
||||
<input type="number" name="rssSyncInterval" class="form-control" min="0" max="120"/>
|
||||
<input type="number" name="rssSyncInterval" class="form-control" min="0" max="720"/>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
@@ -4,25 +4,38 @@ var LanguageCollection = require('../Language/LanguageCollection');
|
||||
var Config = require('../../../Config');
|
||||
var AsModelBoundView = require('../../../Mixins/AsModelBoundView');
|
||||
var AsValidatedView = require('../../../Mixins/AsValidatedView');
|
||||
require('../../../Mixins/TagInput');
|
||||
require('bootstrap');
|
||||
require('bootstrap.tagsinput');
|
||||
|
||||
var view = Marionette.ItemView.extend({
|
||||
template : 'Settings/Profile/Edit/EditProfileViewTemplate',
|
||||
template : 'Settings/Profile/Edit/EditProfileViewTemplate',
|
||||
|
||||
ui : { cutoff : '.x-cutoff' },
|
||||
ui : { cutoff : '.x-cutoff',
|
||||
preferred : '.x-preferred',
|
||||
},
|
||||
|
||||
templateHelpers : function() {
|
||||
return {
|
||||
languages : LanguageCollection.toJSON()
|
||||
};
|
||||
},
|
||||
onRender : function() {
|
||||
this.ui.preferred.tagsinput({
|
||||
trimValue : true,
|
||||
allowDuplicates: true,
|
||||
tagClass : 'label label-success'
|
||||
});
|
||||
},
|
||||
|
||||
getCutoff : function() {
|
||||
var self = this;
|
||||
templateHelpers : function() {
|
||||
return {
|
||||
languages : LanguageCollection.toJSON()
|
||||
};
|
||||
},
|
||||
|
||||
return _.findWhere(_.pluck(this.model.get('items'), 'quality'), { id : parseInt(self.ui.cutoff.val(), 10) });
|
||||
}
|
||||
getCutoff : function() {
|
||||
var self = this;
|
||||
|
||||
return _.findWhere(_.pluck(this.model.get('items'), 'quality'), { id : parseInt(self.ui.cutoff.val(), 10) });
|
||||
}
|
||||
});
|
||||
|
||||
AsValidatedView.call(view);
|
||||
|
||||
module.exports = AsModelBoundView.call(view);
|
||||
module.exports = AsModelBoundView.call(view);
|
||||
|
||||
@@ -1,45 +1,59 @@
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">Name</label>
|
||||
<label class="col-sm-3 control-label">Name</label>
|
||||
|
||||
<div class="col-sm-5">
|
||||
<input type="text" name="name" class="form-control">
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<input type="text" name="name" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">Language</label>
|
||||
<label class="col-sm-3 control-label">Language</label>
|
||||
|
||||
<div class="col-sm-5">
|
||||
<select class="form-control" name="language">
|
||||
{{#each languages}}
|
||||
{{#unless_eq nameLower compare="unknown"}}
|
||||
<option value="{{nameLower}}">{{name}}</option>
|
||||
{{/unless_eq}}
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<select class="form-control" name="language">
|
||||
{{#each languages}}
|
||||
{{#unless_eq nameLower compare="unknown"}}
|
||||
<option value="{{nameLower}}">{{name}}</option>
|
||||
{{/unless_eq}}
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-1 help-inline">
|
||||
<i class="icon-sonarr-form-info" title="Series assigned this profile will be look for episodes with the selected language"/>
|
||||
</div>
|
||||
<div class="col-sm-1 help-inline">
|
||||
<i class="icon-sonarr-form-info" title="Series assigned this profile will be look for episodes with the selected language"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">Preferred Tags</label>
|
||||
|
||||
<div class="col-sm-1 col-sm-push-5 help-inline">
|
||||
<i class="icon-sonarr-form-info" title="When the release contains these tags it will be preferred." />
|
||||
</div>
|
||||
|
||||
<div class="col-sm-5 col-sm-pull-1">
|
||||
<input type="text" name="preferredTags" class="form-control x-preferred"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">Cutoff</label>
|
||||
<label class="col-sm-3 control-label">Cutoff</label>
|
||||
|
||||
<div class="col-sm-5">
|
||||
<select class="form-control x-cutoff" name="cutoff.id" validation-name="cutoff">
|
||||
{{#eachReverse items}}
|
||||
{{#if allowed}}
|
||||
<option value="{{quality.id}}">{{quality.name}}</option>
|
||||
{{/if}}
|
||||
{{/eachReverse}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<select class="form-control x-cutoff" name="cutoff.id" validation-name="cutoff">
|
||||
{{#eachReverse items}}
|
||||
{{#if allowed}}
|
||||
<option value="{{quality.id}}">{{quality.name}}</option>
|
||||
{{/if}}
|
||||
{{/eachReverse}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-1 help-inline">
|
||||
<i class="icon-sonarr-form-info" title="Once this quality is reached Radarr will no longer download episodes"/>
|
||||
</div>
|
||||
<div class="col-sm-1 help-inline">
|
||||
<i class="icon-sonarr-form-info" title="Once this quality is reached Radarr will no longer download episodes"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -6,30 +6,32 @@ require('./AllowedLabeler');
|
||||
require('./LanguageLabel');
|
||||
require('bootstrap');
|
||||
|
||||
|
||||
var view = Marionette.ItemView.extend({
|
||||
template : 'Settings/Profile/ProfileViewTemplate',
|
||||
tagName : 'li',
|
||||
template : 'Settings/Profile/ProfileViewTemplate',
|
||||
tagName : 'li',
|
||||
|
||||
ui : {
|
||||
"progressbar" : '.progress .bar',
|
||||
"deleteButton" : '.x-delete'
|
||||
},
|
||||
ui : {
|
||||
"progressbar" : '.progress .bar',
|
||||
"deleteButton" : '.x-delete',
|
||||
|
||||
events : {
|
||||
'click' : '_editProfile'
|
||||
},
|
||||
},
|
||||
|
||||
initialize : function() {
|
||||
this.listenTo(this.model, 'sync', this.render);
|
||||
},
|
||||
events : {
|
||||
'click' : '_editProfile'
|
||||
},
|
||||
|
||||
_editProfile : function() {
|
||||
var view = new EditProfileView({
|
||||
model : this.model,
|
||||
profileCollection : this.model.collection
|
||||
});
|
||||
AppLayout.modalRegion.show(view);
|
||||
}
|
||||
initialize : function() {
|
||||
this.listenTo(this.model, 'sync', this.render);
|
||||
},
|
||||
|
||||
_editProfile : function() {
|
||||
var view = new EditProfileView({
|
||||
model : this.model,
|
||||
profileCollection : this.model.collection
|
||||
});
|
||||
AppLayout.modalRegion.show(view);
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = AsModelBoundView.call(view);
|
||||
module.exports = AsModelBoundView.call(view);
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<div class="profile-item thingy">
|
||||
<div>
|
||||
<h3 name="name"></h3>
|
||||
</div>
|
||||
<div>
|
||||
<h3 name="name"></h3>
|
||||
</div>
|
||||
|
||||
<div class="language">
|
||||
{{languageLabel}}
|
||||
</div>
|
||||
<div class="language">
|
||||
{{languageLabel}}
|
||||
</div>
|
||||
|
||||
<ul class="allowed-qualities">
|
||||
{{allowedLabeler}}
|
||||
</ul>
|
||||
</div>
|
||||
<ul class="allowed-qualities">
|
||||
{{allowedLabeler}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -11,101 +11,108 @@ var RenamePreviewLayout = require('../../Rename/RenamePreviewLayout');
|
||||
var ManualImportLayout = require('../../ManualImport/ManualImportLayout');
|
||||
var FileBrowserLayout = require('../FileBrowser/FileBrowserLayout');
|
||||
var MoviesDetailsLayout = require('../../Movies/Details/MoviesDetailsLayout');
|
||||
var EditFileView = require("../../Movies/Files/Edit/EditFileView");
|
||||
|
||||
module.exports = Marionette.AppRouter.extend({
|
||||
initialize : function() {
|
||||
vent.on(vent.Commands.OpenModalCommand, this._openModal, this);
|
||||
vent.on(vent.Commands.CloseModalCommand, this._closeModal, this);
|
||||
vent.on(vent.Commands.OpenModal2Command, this._openModal2, this);
|
||||
vent.on(vent.Commands.CloseModal2Command, this._closeModal2, this);
|
||||
vent.on(vent.Commands.EditSeriesCommand, this._editSeries, this);
|
||||
vent.on(vent.Commands.EditMovieCommand, this._editMovie, this);
|
||||
vent.on(vent.Commands.DeleteSeriesCommand, this._deleteSeries, this);
|
||||
vent.on(vent.Commands.ShowEpisodeDetails, this._showEpisode, this);
|
||||
vent.on(vent.Commands.ShowMovieDetails, this._showMovie, this);
|
||||
vent.on(vent.Commands.ShowHistoryDetails, this._showHistory, this);
|
||||
vent.on(vent.Commands.ShowLogDetails, this._showLogDetails, this);
|
||||
vent.on(vent.Commands.ShowRenamePreview, this._showRenamePreview, this);
|
||||
vent.on(vent.Commands.ShowManualImport, this._showManualImport, this);
|
||||
vent.on(vent.Commands.ShowFileBrowser, this._showFileBrowser, this);
|
||||
vent.on(vent.Commands.CloseFileBrowser, this._closeFileBrowser, this);
|
||||
},
|
||||
initialize : function() {
|
||||
vent.on(vent.Commands.OpenModalCommand, this._openModal, this);
|
||||
vent.on(vent.Commands.CloseModalCommand, this._closeModal, this);
|
||||
vent.on(vent.Commands.OpenModal2Command, this._openModal2, this);
|
||||
vent.on(vent.Commands.CloseModal2Command, this._closeModal2, this);
|
||||
vent.on(vent.Commands.EditSeriesCommand, this._editSeries, this);
|
||||
vent.on(vent.Commands.EditMovieCommand, this._editMovie, this);
|
||||
vent.on(vent.Commands.EditFileCommand, this._editFile, this);
|
||||
vent.on(vent.Commands.DeleteSeriesCommand, this._deleteSeries, this);
|
||||
vent.on(vent.Commands.ShowEpisodeDetails, this._showEpisode, this);
|
||||
vent.on(vent.Commands.ShowMovieDetails, this._showMovie, this);
|
||||
vent.on(vent.Commands.ShowHistoryDetails, this._showHistory, this);
|
||||
vent.on(vent.Commands.ShowLogDetails, this._showLogDetails, this);
|
||||
vent.on(vent.Commands.ShowRenamePreview, this._showRenamePreview, this);
|
||||
vent.on(vent.Commands.ShowManualImport, this._showManualImport, this);
|
||||
vent.on(vent.Commands.ShowFileBrowser, this._showFileBrowser, this);
|
||||
vent.on(vent.Commands.CloseFileBrowser, this._closeFileBrowser, this);
|
||||
},
|
||||
|
||||
_openModal : function(view) {
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
_openModal : function(view) {
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
|
||||
_closeModal : function() {
|
||||
AppLayout.modalRegion.closeModal();
|
||||
},
|
||||
_closeModal : function() {
|
||||
AppLayout.modalRegion.closeModal();
|
||||
},
|
||||
|
||||
_openModal2 : function(view) {
|
||||
AppLayout.modalRegion2.show(view);
|
||||
},
|
||||
_openModal2 : function(view) {
|
||||
AppLayout.modalRegion2.show(view);
|
||||
},
|
||||
|
||||
_closeModal2 : function() {
|
||||
AppLayout.modalRegion2.closeModal();
|
||||
},
|
||||
_closeModal2 : function() {
|
||||
AppLayout.modalRegion2.closeModal();
|
||||
},
|
||||
|
||||
_editSeries : function(options) {
|
||||
var view = new EditSeriesView({ model : options.series });
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
_editSeries : function(options) {
|
||||
var view = new EditSeriesView({ model : options.series });
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
|
||||
_editMovie : function(options) {
|
||||
var view = new EditMovieView({ model : options.movie });
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
_editMovie : function(options) {
|
||||
var view = new EditMovieView({ model : options.movie });
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
|
||||
_deleteSeries : function(options) {
|
||||
var view = new DeleteSeriesView({ model : options.series });
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
_editFile : function(options) {
|
||||
var view = new EditFileView({ model : options.file });
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
|
||||
_showEpisode : function(options) {
|
||||
var view = new EpisodeDetailsLayout({
|
||||
model : options.episode,
|
||||
hideSeriesLink : options.hideSeriesLink,
|
||||
openingTab : options.openingTab
|
||||
});
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
_deleteSeries : function(options) {
|
||||
var view = new DeleteSeriesView({ model : options.series });
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
|
||||
_showMovie : function(options) {
|
||||
var view = new MoviesDetailsLayout({
|
||||
model : options.movie,
|
||||
hideSeriesLink : options.hideSeriesLink,
|
||||
openingTab : options.openingTab
|
||||
});
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
_showEpisode : function(options) {
|
||||
var view = new EpisodeDetailsLayout({
|
||||
model : options.episode,
|
||||
hideSeriesLink : options.hideSeriesLink,
|
||||
openingTab : options.openingTab
|
||||
});
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
|
||||
_showHistory : function(options) {
|
||||
var view = new HistoryDetailsLayout({ model : options.model });
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
_showMovie : function(options) {
|
||||
var view = new MoviesDetailsLayout({
|
||||
model : options.movie,
|
||||
hideSeriesLink : options.hideSeriesLink,
|
||||
openingTab : options.openingTab
|
||||
});
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
|
||||
_showLogDetails : function(options) {
|
||||
var view = new LogDetailsView({ model : options.model });
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
_showHistory : function(options) {
|
||||
var view = new HistoryDetailsLayout({ model : options.model });
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
|
||||
_showRenamePreview : function(options) {
|
||||
var view = new RenamePreviewLayout(options);
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
_showLogDetails : function(options) {
|
||||
var view = new LogDetailsView({ model : options.model });
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
|
||||
_showManualImport : function(options) {
|
||||
var view = new ManualImportLayout(options);
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
_showRenamePreview : function(options) {
|
||||
var view = new RenamePreviewLayout(options);
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
|
||||
_showFileBrowser : function(options) {
|
||||
var view = new FileBrowserLayout(options);
|
||||
AppLayout.modalRegion2.show(view);
|
||||
},
|
||||
_showManualImport : function(options) {
|
||||
var view = new ManualImportLayout(options);
|
||||
AppLayout.modalRegion.show(view);
|
||||
},
|
||||
|
||||
_closeFileBrowser : function() {
|
||||
AppLayout.modalRegion2.closeModal();
|
||||
}
|
||||
_showFileBrowser : function(options) {
|
||||
var view = new FileBrowserLayout(options);
|
||||
AppLayout.modalRegion2.show(view);
|
||||
},
|
||||
|
||||
_closeFileBrowser : function() {
|
||||
AppLayout.modalRegion2.closeModal();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -165,11 +165,11 @@ module.exports = Marionette.Layout.extend({
|
||||
}));
|
||||
CommandController.bindToCommand({
|
||||
element : this.$('.x-search-selected'),
|
||||
command : { name : 'episodeSearch' }
|
||||
command : { name : 'moviesSearch' }
|
||||
});
|
||||
CommandController.bindToCommand({
|
||||
element : this.$('.x-search-missing'),
|
||||
command : { name : 'missingEpisodeSearch' }
|
||||
command : { name : 'missingMoviesSearch' }
|
||||
});
|
||||
},
|
||||
|
||||
@@ -187,20 +187,20 @@ module.exports = Marionette.Layout.extend({
|
||||
if (selected.length === 0) {
|
||||
Messenger.show({
|
||||
type : 'error',
|
||||
message : 'No episodes selected'
|
||||
message : 'No movies selected'
|
||||
});
|
||||
return;
|
||||
}
|
||||
var ids = _.pluck(selected, 'id');
|
||||
CommandController.Execute('episodeSearch', {
|
||||
name : 'episodeSearch',
|
||||
episodeIds : ids
|
||||
CommandController.Execute('moviesSearch', {
|
||||
name : 'moviesSearch',
|
||||
movieIds : ids
|
||||
});
|
||||
},
|
||||
_searchMissing : function() {
|
||||
if (window.confirm('Are you sure you want to search for {0} missing movies? '.format(this.collection.state.totalRecords) +
|
||||
'One API request to each indexer will be used for each movie. ' + 'This cannot be stopped once started.')) {
|
||||
CommandController.Execute('missingEpisodeSearch', { name : 'missingEpisodeSearch' });
|
||||
CommandController.Execute('missingMoviesSearch', { name : 'missingMoviesSearch' });
|
||||
}
|
||||
},
|
||||
_toggleMonitoredOfSelected : function() {
|
||||
@@ -209,7 +209,7 @@ module.exports = Marionette.Layout.extend({
|
||||
if (selected.length === 0) {
|
||||
Messenger.show({
|
||||
type : 'error',
|
||||
message : 'No episodes selected'
|
||||
message : 'No movies selected'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -7,11 +7,6 @@
|
||||
<meta name="mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"/>
|
||||
|
||||
<!-- Chrome, Opera, and Firefox OS -->
|
||||
<meta name="theme-color" content="#272727"/>
|
||||
<!-- Windows Phone -->
|
||||
<meta name="msapplication-navbutton-color" content="#272727"/>
|
||||
|
||||
<meta content="text/html;charset=utf-8" http-equiv="Content-Type"/>
|
||||
|
||||
<link href="/Content/bootstrap.css" rel='stylesheet' type='text/css'/>
|
||||
@@ -33,12 +28,24 @@
|
||||
<link href="/Content/overrides.css" rel='stylesheet' type='text/css'/>
|
||||
<link href="/Content/info.css" rel='stylesheet' type='text/css'/>
|
||||
|
||||
<link rel="apple-touch-icon" href="/Content/Images/touch/57.png"/>
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/Content/Images/touch/72.png"/>
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/Content/Images/touch/114.png"/>
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/Content/Images/touch/144.png"/>
|
||||
<link rel="mask-icon" href="/Content/Images/safari/logo.svg" color="#35c5f4">
|
||||
<link rel="icon" type="image/ico" href="/Content/Images/favicon.ico"/>
|
||||
<!-- Windows Phone -->
|
||||
<meta name="msapplication-navbutton-color" content="#272727"/>
|
||||
|
||||
<!-- Generated by http://realfavicongenerator.net/ -->
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/Content/Images/favicon/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" href="/Content/Images/favicon/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="/Content/Images/favicon/favicon-194x194.png" sizes="194x194">
|
||||
<link rel="icon" type="image/png" href="/Content/Images/favicon/android-chrome-192x192.png" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="/Content/Images/favicon/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="/Content/Images/favicon/manifest.json">
|
||||
<link rel="mask-icon" href="/Content/Images/favicon/safari-pinned-tab.svg" color="#ffc230">
|
||||
<link rel="shortcut icon" href="/Content/Images/favicon/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="Radarr">
|
||||
<meta name="application-name" content="Radarr">
|
||||
<meta name="msapplication-TileColor" content="#272727">
|
||||
<meta name="msapplication-TileImage" content="/Content/Images/favicon/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="/Content/Images/favicon/browserconfig.xml">
|
||||
<meta name="theme-color" content="#272727">
|
||||
|
||||
<link rel="alternate" type="text/calendar" title="iCalendar feed for Radarr" href="/feed/calendar/NzbDrone.ics"/>
|
||||
</head>
|
||||
|
||||
@@ -11,11 +11,24 @@
|
||||
<link href="/Content/bootstrap.css" rel='stylesheet' type='text/css'/>
|
||||
<link href="/Content/theme.css" rel='stylesheet' type='text/css'/>
|
||||
|
||||
<link rel="apple-touch-icon" href="/Content/Images/touch/57.png"/>
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/Content/Images/touch/72.png"/>
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/Content/Images/touch/114.png"/>
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/Content/Images/touch/144.png"/>
|
||||
<link rel="icon" type="image/ico" href="/Content/Images/favicon.ico"/>
|
||||
<!-- Windows Phone -->
|
||||
<meta name="msapplication-navbutton-color" content="#272727"/>
|
||||
|
||||
<!-- Generated by http://realfavicongenerator.net/ -->
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/Content/Images/favicon/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" href="/Content/Images/favicon/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="/Content/Images/favicon/favicon-194x194.png" sizes="194x194">
|
||||
<link rel="icon" type="image/png" href="/Content/Images/favicon/android-chrome-192x192.png" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="/Content/Images/favicon/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="/Content/Images/favicon/manifest.json">
|
||||
<link rel="mask-icon" href="/Content/Images/favicon/safari-pinned-tab.svg" color="#ffc230">
|
||||
<link rel="shortcut icon" href="/Content/Images/favicon/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="Radarr">
|
||||
<meta name="application-name" content="Radarr">
|
||||
<meta name="msapplication-TileColor" content="#272727">
|
||||
<meta name="msapplication-TileImage" content="/Content/Images/favicon/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="/Content/Images/favicon/browserconfig.xml">
|
||||
<meta name="theme-color" content="#272727">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
@@ -3,40 +3,41 @@ var Wreqr = require('./JsLibraries/backbone.wreqr');
|
||||
var vent = new Wreqr.EventAggregator();
|
||||
|
||||
vent.Events = {
|
||||
SeriesAdded : 'series:added',
|
||||
SeriesDeleted : 'series:deleted',
|
||||
CommandComplete : 'command:complete',
|
||||
ServerUpdated : 'server:updated',
|
||||
EpisodeFileDeleted : 'episodefile:deleted'
|
||||
SeriesAdded : 'series:added',
|
||||
SeriesDeleted : 'series:deleted',
|
||||
CommandComplete : 'command:complete',
|
||||
ServerUpdated : 'server:updated',
|
||||
EpisodeFileDeleted : 'episodefile:deleted'
|
||||
};
|
||||
|
||||
vent.Commands = {
|
||||
EditSeriesCommand : 'EditSeriesCommand',
|
||||
EditMovieCommand : 'EditMovieCommand',
|
||||
DeleteSeriesCommand : 'DeleteSeriesCommand',
|
||||
OpenModalCommand : 'OpenModalCommand',
|
||||
CloseModalCommand : 'CloseModalCommand',
|
||||
OpenModal2Command : 'OpenModal2Command',
|
||||
CloseModal2Command : 'CloseModal2Command',
|
||||
ShowEpisodeDetails : 'ShowEpisodeDetails',
|
||||
ShowMovieDetails : 'ShowMovieDetails',
|
||||
ShowHistoryDetails : 'ShowHistoryDetails',
|
||||
ShowLogDetails : 'ShowLogDetails',
|
||||
SaveSettings : 'saveSettings',
|
||||
ShowLogFile : 'showLogFile',
|
||||
ShowRenamePreview : 'showRenamePreview',
|
||||
ShowManualImport : 'showManualImport',
|
||||
ShowFileBrowser : 'showFileBrowser',
|
||||
CloseFileBrowser : 'closeFileBrowser',
|
||||
OpenControlPanelCommand : 'OpenControlPanelCommand',
|
||||
CloseControlPanelCommand : 'CloseControlPanelCommand',
|
||||
ShowExistingCommand : 'ShowExistingCommand'
|
||||
EditSeriesCommand : 'EditSeriesCommand',
|
||||
EditMovieCommand : 'EditMovieCommand',
|
||||
EditFileCommand : "EditFileCommand",
|
||||
DeleteSeriesCommand : 'DeleteSeriesCommand',
|
||||
OpenModalCommand : 'OpenModalCommand',
|
||||
CloseModalCommand : 'CloseModalCommand',
|
||||
OpenModal2Command : 'OpenModal2Command',
|
||||
CloseModal2Command : 'CloseModal2Command',
|
||||
ShowEpisodeDetails : 'ShowEpisodeDetails',
|
||||
ShowMovieDetails : 'ShowMovieDetails',
|
||||
ShowHistoryDetails : 'ShowHistoryDetails',
|
||||
ShowLogDetails : 'ShowLogDetails',
|
||||
SaveSettings : 'saveSettings',
|
||||
ShowLogFile : 'showLogFile',
|
||||
ShowRenamePreview : 'showRenamePreview',
|
||||
ShowManualImport : 'showManualImport',
|
||||
ShowFileBrowser : 'showFileBrowser',
|
||||
CloseFileBrowser : 'closeFileBrowser',
|
||||
OpenControlPanelCommand : 'OpenControlPanelCommand',
|
||||
CloseControlPanelCommand : 'CloseControlPanelCommand',
|
||||
ShowExistingCommand : 'ShowExistingCommand'
|
||||
};
|
||||
|
||||
vent.Hotkeys = {
|
||||
NavbarSearch : 'navbar:search',
|
||||
SaveSettings : 'settings:save',
|
||||
ShowHotkeys : 'hotkeys:show'
|
||||
NavbarSearch : 'navbar:search',
|
||||
SaveSettings : 'settings:save',
|
||||
ShowHotkeys : 'hotkeys:show'
|
||||
};
|
||||
|
||||
module.exports = vent;
|
||||
|
||||