{ movie.Id } });
}
movie.AddOptions = null;
diff --git a/src/NzbDrone.Core/Tv/RefreshMovieService.cs b/src/NzbDrone.Core/Tv/RefreshMovieService.cs
index a086cf3ec..495f00e05 100644
--- a/src/NzbDrone.Core/Tv/RefreshMovieService.cs
+++ b/src/NzbDrone.Core/Tv/RefreshMovieService.cs
@@ -51,7 +51,7 @@ namespace NzbDrone.Core.Tv
try
{
- movieInfo = _movieInfo.GetMovieInfo(movie.TmdbId);
+ movieInfo = _movieInfo.GetMovieInfo(movie.TmdbId, movie.Profile);
}
catch (MovieNotFoundException)
{
diff --git a/src/NzbDrone.Host/Radarr.ico b/src/NzbDrone.Host/Radarr.ico
index 6f0a8b50e..7d20c6f5a 100644
Binary files a/src/NzbDrone.Host/Radarr.ico and b/src/NzbDrone.Host/Radarr.ico differ
diff --git a/src/NzbDrone/Radarr.ico b/src/NzbDrone/Radarr.ico
index 6f0a8b50e..7d20c6f5a 100644
Binary files a/src/NzbDrone/Radarr.ico and b/src/NzbDrone/Radarr.ico differ
diff --git a/src/NzbDrone/Resources/Radarr.ico b/src/NzbDrone/Resources/Radarr.ico
index 4903af4b1..7d20c6f5a 100644
Binary files a/src/NzbDrone/Resources/Radarr.ico and b/src/NzbDrone/Resources/Radarr.ico differ
diff --git a/src/Radarr.ico b/src/Radarr.ico
index 4903af4b1..7d20c6f5a 100644
Binary files a/src/Radarr.ico and b/src/Radarr.ico differ
diff --git a/src/UI/Activity/Queue/QueueLayout.js b/src/UI/Activity/Queue/QueueLayout.js
index 4416cb07b..0fc561165 100644
--- a/src/UI/Activity/Queue/QueueLayout.js
+++ b/src/UI/Activity/Queue/QueueLayout.js
@@ -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',
diff --git a/src/UI/Cells/MovieTitleHistoryCell.js b/src/UI/Cells/MovieTitleHistoryCell.js
index 174d5d361..3a3d6d927 100644
--- a/src/UI/Cells/MovieTitleHistoryCell.js
+++ b/src/UI/Cells/MovieTitleHistoryCell.js
@@ -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('' + this.model.get("movie").get("title") + ' '); //Hack, but somehow handlebar helper does not work.
return this;
-
}
});
diff --git a/src/UI/Config.js b/src/UI/Config.js
index 2115d076a..9ea57003b 100644
--- a/src/UI/Config.js
+++ b/src/UI/Config.js
@@ -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));
}
}
};
diff --git a/src/UI/Content/Images/favicon-debug.ico b/src/UI/Content/Images/favicon-debug.ico
index 90bf72090..80e6bd51b 100644
Binary files a/src/UI/Content/Images/favicon-debug.ico and b/src/UI/Content/Images/favicon-debug.ico differ
diff --git a/src/UI/Content/Images/favicon.ico b/src/UI/Content/Images/favicon.ico
index 90bf72090..80e6bd51b 100644
Binary files a/src/UI/Content/Images/favicon.ico and b/src/UI/Content/Images/favicon.ico differ
diff --git a/src/UI/Content/Images/favicon/android-chrome-144x144.png b/src/UI/Content/Images/favicon/android-chrome-144x144.png
new file mode 100644
index 000000000..a30ab0209
Binary files /dev/null and b/src/UI/Content/Images/favicon/android-chrome-144x144.png differ
diff --git a/src/UI/Content/Images/favicon/android-chrome-192x192.png b/src/UI/Content/Images/favicon/android-chrome-192x192.png
new file mode 100644
index 000000000..8f7d9f655
Binary files /dev/null and b/src/UI/Content/Images/favicon/android-chrome-192x192.png differ
diff --git a/src/UI/Content/Images/favicon/android-chrome-256x256.png b/src/UI/Content/Images/favicon/android-chrome-256x256.png
new file mode 100644
index 000000000..52977292b
Binary files /dev/null and b/src/UI/Content/Images/favicon/android-chrome-256x256.png differ
diff --git a/src/UI/Content/Images/favicon/android-chrome-36x36.png b/src/UI/Content/Images/favicon/android-chrome-36x36.png
new file mode 100644
index 000000000..d8da18abf
Binary files /dev/null and b/src/UI/Content/Images/favicon/android-chrome-36x36.png differ
diff --git a/src/UI/Content/Images/favicon/android-chrome-384x384.png b/src/UI/Content/Images/favicon/android-chrome-384x384.png
new file mode 100644
index 000000000..358b6d510
Binary files /dev/null and b/src/UI/Content/Images/favicon/android-chrome-384x384.png differ
diff --git a/src/UI/Content/Images/favicon/android-chrome-48x48.png b/src/UI/Content/Images/favicon/android-chrome-48x48.png
new file mode 100644
index 000000000..e556972c9
Binary files /dev/null and b/src/UI/Content/Images/favicon/android-chrome-48x48.png differ
diff --git a/src/UI/Content/Images/favicon/android-chrome-512x512.png b/src/UI/Content/Images/favicon/android-chrome-512x512.png
new file mode 100644
index 000000000..16658df45
Binary files /dev/null and b/src/UI/Content/Images/favicon/android-chrome-512x512.png differ
diff --git a/src/UI/Content/Images/favicon/android-chrome-72x72.png b/src/UI/Content/Images/favicon/android-chrome-72x72.png
new file mode 100644
index 000000000..35534d1bb
Binary files /dev/null and b/src/UI/Content/Images/favicon/android-chrome-72x72.png differ
diff --git a/src/UI/Content/Images/favicon/android-chrome-96x96.png b/src/UI/Content/Images/favicon/android-chrome-96x96.png
new file mode 100644
index 000000000..ae3d77034
Binary files /dev/null and b/src/UI/Content/Images/favicon/android-chrome-96x96.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-114x114-precomposed.png b/src/UI/Content/Images/favicon/apple-touch-icon-114x114-precomposed.png
new file mode 100644
index 000000000..8861297ed
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-114x114-precomposed.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-114x114.png b/src/UI/Content/Images/favicon/apple-touch-icon-114x114.png
new file mode 100644
index 000000000..cb5e2a3fd
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-114x114.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-120x120-precomposed.png b/src/UI/Content/Images/favicon/apple-touch-icon-120x120-precomposed.png
new file mode 100644
index 000000000..a870359d2
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-120x120-precomposed.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-120x120.png b/src/UI/Content/Images/favicon/apple-touch-icon-120x120.png
new file mode 100644
index 000000000..3d365dc5e
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-120x120.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-144x144-precomposed.png b/src/UI/Content/Images/favicon/apple-touch-icon-144x144-precomposed.png
new file mode 100644
index 000000000..cf4be66e8
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-144x144-precomposed.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-144x144.png b/src/UI/Content/Images/favicon/apple-touch-icon-144x144.png
new file mode 100644
index 000000000..505314e93
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-144x144.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-152x152-precomposed.png b/src/UI/Content/Images/favicon/apple-touch-icon-152x152-precomposed.png
new file mode 100644
index 000000000..e17f317c4
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-152x152-precomposed.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-152x152.png b/src/UI/Content/Images/favicon/apple-touch-icon-152x152.png
new file mode 100644
index 000000000..6fdc50ce5
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-152x152.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-180x180-precomposed.png b/src/UI/Content/Images/favicon/apple-touch-icon-180x180-precomposed.png
new file mode 100644
index 000000000..12879bd44
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-180x180-precomposed.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-180x180.png b/src/UI/Content/Images/favicon/apple-touch-icon-180x180.png
new file mode 100644
index 000000000..c169b7c1e
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-180x180.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-57x57-precomposed.png b/src/UI/Content/Images/favicon/apple-touch-icon-57x57-precomposed.png
new file mode 100644
index 000000000..3b3e2b88d
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-57x57-precomposed.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-57x57.png b/src/UI/Content/Images/favicon/apple-touch-icon-57x57.png
new file mode 100644
index 000000000..aecc105f9
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-57x57.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-60x60-precomposed.png b/src/UI/Content/Images/favicon/apple-touch-icon-60x60-precomposed.png
new file mode 100644
index 000000000..18ff320c7
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-60x60-precomposed.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-60x60.png b/src/UI/Content/Images/favicon/apple-touch-icon-60x60.png
new file mode 100644
index 000000000..87feabcc4
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-60x60.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-72x72-precomposed.png b/src/UI/Content/Images/favicon/apple-touch-icon-72x72-precomposed.png
new file mode 100644
index 000000000..9de51dbab
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-72x72-precomposed.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-72x72.png b/src/UI/Content/Images/favicon/apple-touch-icon-72x72.png
new file mode 100644
index 000000000..d19050b11
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-72x72.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-76x76-precomposed.png b/src/UI/Content/Images/favicon/apple-touch-icon-76x76-precomposed.png
new file mode 100644
index 000000000..859123883
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-76x76-precomposed.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-76x76.png b/src/UI/Content/Images/favicon/apple-touch-icon-76x76.png
new file mode 100644
index 000000000..29c962e23
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-76x76.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon-precomposed.png b/src/UI/Content/Images/favicon/apple-touch-icon-precomposed.png
new file mode 100644
index 000000000..12879bd44
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon-precomposed.png differ
diff --git a/src/UI/Content/Images/favicon/apple-touch-icon.png b/src/UI/Content/Images/favicon/apple-touch-icon.png
new file mode 100644
index 000000000..c169b7c1e
Binary files /dev/null and b/src/UI/Content/Images/favicon/apple-touch-icon.png differ
diff --git a/src/UI/Content/Images/favicon/browserconfig.xml b/src/UI/Content/Images/favicon/browserconfig.xml
new file mode 100644
index 000000000..ff37cd996
--- /dev/null
+++ b/src/UI/Content/Images/favicon/browserconfig.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+ #272727
+
+
+
diff --git a/src/UI/Content/Images/favicon/favicon-16x16.png b/src/UI/Content/Images/favicon/favicon-16x16.png
new file mode 100644
index 000000000..cba60fb4c
Binary files /dev/null and b/src/UI/Content/Images/favicon/favicon-16x16.png differ
diff --git a/src/UI/Content/Images/favicon/favicon-194x194.png b/src/UI/Content/Images/favicon/favicon-194x194.png
new file mode 100644
index 000000000..ebed98d02
Binary files /dev/null and b/src/UI/Content/Images/favicon/favicon-194x194.png differ
diff --git a/src/UI/Content/Images/favicon/favicon-32x32.png b/src/UI/Content/Images/favicon/favicon-32x32.png
new file mode 100644
index 000000000..a9e24d6c4
Binary files /dev/null and b/src/UI/Content/Images/favicon/favicon-32x32.png differ
diff --git a/src/UI/Content/Images/favicon/favicon.ico b/src/UI/Content/Images/favicon/favicon.ico
new file mode 100644
index 000000000..a0269b014
Binary files /dev/null and b/src/UI/Content/Images/favicon/favicon.ico differ
diff --git a/src/UI/Content/Images/favicon/manifest.json b/src/UI/Content/Images/favicon/manifest.json
new file mode 100644
index 000000000..24c1f5dfc
--- /dev/null
+++ b/src/UI/Content/Images/favicon/manifest.json
@@ -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"
+}
\ No newline at end of file
diff --git a/src/UI/Content/Images/favicon/mstile-144x144.png b/src/UI/Content/Images/favicon/mstile-144x144.png
new file mode 100644
index 000000000..bb8ff6ffc
Binary files /dev/null and b/src/UI/Content/Images/favicon/mstile-144x144.png differ
diff --git a/src/UI/Content/Images/favicon/mstile-150x150.png b/src/UI/Content/Images/favicon/mstile-150x150.png
new file mode 100644
index 000000000..5daff8258
Binary files /dev/null and b/src/UI/Content/Images/favicon/mstile-150x150.png differ
diff --git a/src/UI/Content/Images/favicon/mstile-310x150.png b/src/UI/Content/Images/favicon/mstile-310x150.png
new file mode 100644
index 000000000..1d534151a
Binary files /dev/null and b/src/UI/Content/Images/favicon/mstile-310x150.png differ
diff --git a/src/UI/Content/Images/favicon/mstile-310x310.png b/src/UI/Content/Images/favicon/mstile-310x310.png
new file mode 100644
index 000000000..1995d8691
Binary files /dev/null and b/src/UI/Content/Images/favicon/mstile-310x310.png differ
diff --git a/src/UI/Content/Images/favicon/mstile-70x70.png b/src/UI/Content/Images/favicon/mstile-70x70.png
new file mode 100644
index 000000000..87293e25f
Binary files /dev/null and b/src/UI/Content/Images/favicon/mstile-70x70.png differ
diff --git a/src/UI/Content/Images/favicon/safari-pinned-tab.svg b/src/UI/Content/Images/favicon/safari-pinned-tab.svg
new file mode 100644
index 000000000..1d4f4e92e
--- /dev/null
+++ b/src/UI/Content/Images/favicon/safari-pinned-tab.svg
@@ -0,0 +1,59 @@
+
+
+
+
+Created by potrace 1.11, written by Peter Selinger 2001-2013
+
+
+
+
+
+
diff --git a/src/UI/Content/Images/logos/128.png b/src/UI/Content/Images/logos/128.png
index 5e143b52e..02f00f08f 100644
Binary files a/src/UI/Content/Images/logos/128.png and b/src/UI/Content/Images/logos/128.png differ
diff --git a/src/UI/Content/Images/logos/32.png b/src/UI/Content/Images/logos/32.png
index f1fe93db5..41a6dd279 100644
Binary files a/src/UI/Content/Images/logos/32.png and b/src/UI/Content/Images/logos/32.png differ
diff --git a/src/UI/Content/Images/logos/48.png b/src/UI/Content/Images/logos/48.png
index 8b9d0fc88..45cf3047c 100644
Binary files a/src/UI/Content/Images/logos/48.png and b/src/UI/Content/Images/logos/48.png differ
diff --git a/src/UI/Content/Images/logos/64.png b/src/UI/Content/Images/logos/64.png
index 80edc7894..483e3d809 100644
Binary files a/src/UI/Content/Images/logos/64.png and b/src/UI/Content/Images/logos/64.png differ
diff --git a/src/UI/Movies/Details/MoviesDetailsLayout.js b/src/UI/Movies/Details/MoviesDetailsLayout.js
index 119c6bd71..efd0ece09 100644
--- a/src/UI/Movies/Details/MoviesDetailsLayout.js
+++ b/src/UI/Movies/Details/MoviesDetailsLayout.js
@@ -16,302 +16,303 @@ require('backstrech');
require('../../Mixins/backbone.signalr.mixin');
module.exports = Marionette.Layout.extend({
- itemViewContainer : '.x-movie-seasons',
- template : 'Movies/Details/MoviesDetailsTemplate',
-
- 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"
- },
-
- 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();
-
- 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', function(model, options) {
- if (options && options.changeSource === 'signalr') {
- this._refresh();
- }
- });
-
- this.listenTo(this.model, 'change:images', this._updateImages);
- },
-
- onShow : function() {
- this.searchLayout = new SearchLayout({ model : this.model });
- this.searchLayout.startManualSearch = true;
-
- 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'
- }
- });
-
- CommandController.bindToCommand({
- element : this.ui.rename,
- command : {
- name : 'renameMovieFiles',
- movieId : this.model.id,
- seasonNumber : -1
- }
- });
- },
-
- onClose : function() {
- if (this._backstrech) {
- this._backstrech.destroy();
- delete this._backstrech;
- }
-
- $('body').removeClass('backdrop');
- reqres.removeHandler(reqres.Requests.GetEpisodeFileById);
- },
-
- _getImage : function(type) {
- var image = _.where(this.model.get('images'), { coverType : type });
-
- if (image && image[0]) {
- return image[0].url;
- }
-
- return undefined;
- },
-
- _showHistory : function(e) {
- if (e) {
- e.preventDefault();
- }
-
- this.ui.history.tab('show');
- this.history.show(new HistoryLayout({
- model : this.model
- }));
- },
-
- _showSearch : function(e) {
- if (e) {
- e.preventDefault();
- }
-
- this.ui.search.tab('show');
- this.search.show(this.searchLayout);
- },
-
- _showFiles : function(e) {
- if (e) {
- e.preventDefault();
- }
-
- this.ui.files.tab('show');
- this.files.show(this.filesLayout);
- },
-
- _toggleMonitored : function() {
- var savePromise = this.model.save('monitored', !this.model.get('monitored'), { wait : true });
-
- this.ui.monitored.spinForPromise(savePromise);
- },
-
- _setMonitoredState : function() {
- var monitored = this.model.get('monitored');
-
- this.ui.monitored.removeAttr('data-idle-icon');
- this.ui.monitored.removeClass('fa-spin icon-sonarr-spinner');
-
- 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');
- }
- },
-
- _editMovie : function() {
- vent.trigger(vent.Commands.EditMovieCommand, { movie : this.model });
- },
-
- _refreshMovies : function() {
- CommandController.Execute('refreshMovie', {
- name : 'refreshMovie',
- movieId : this.model.id
- });
- },
-
- _moviesRemoved : function() {
- Backbone.history.navigate('/', { trigger : true });
- },
-
- _renameMovies : function() {
- vent.trigger(vent.Commands.ShowRenamePreview, { movie : this.model });
- },
-
- _moviesSearch : function() {
- CommandController.Execute('moviesSearch', {
- name : 'moviesSearch',
- movieId : this.model.id
- });
- },
-
- _showSeasons : function() {
- var self = this;
-
- return;
-
- reqres.setHandler(reqres.Requests.GetEpisodeFileById, function(episodeFileId) {
- return self.episodeFileCollection.get(episodeFileId);
- });
-
- reqres.setHandler(reqres.Requests.GetAlternateNameBySeasonNumber, function(moviesId, seasonNumber, sceneSeasonNumber) {
- if (self.model.get('id') !== moviesId) {
- return [];
- }
-
- if (sceneSeasonNumber === undefined) {
- sceneSeasonNumber = seasonNumber;
- }
-
- return _.where(self.model.get('alternateTitles'),
- function(alt) {
- return alt.sceneSeasonNumber === sceneSeasonNumber || alt.seasonNumber === seasonNumber;
- });
- });
-
- $.when(this.episodeCollection.fetch(), this.episodeFileCollection.fetch()).done(function() {
- var seasonCollectionView = new SeasonCollectionView({
- collection : self.seasonCollection,
- episodeCollection : self.episodeCollection,
- movies : self.model
- });
-
- if (!self.isClosed) {
- self.seasons.show(seasonCollectionView);
- }
- });
- },
-
- _showInfo : function() {
- this.info.show(new InfoView({
- model : this.model
- }));
- },
-
- _commandComplete : function(options) {
- if (options.command.get('name') === 'renameMoviefiles') {
- if (options.command.get('moviesId') === this.model.get('id')) {
- this._refresh();
- }
- }
- },
-
- _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
- });
-
- vent.trigger(vent.Commands.OpenModalCommand, view);
- },
-
- _updateImages : function () {
- var poster = this._getImage('poster');
-
- if (poster) {
- this.ui.poster.attr('src', poster);
- }
-
- this._showBackdrop();
- },
-
- _showBackdrop : function () {
- $('body').addClass('backdrop');
- var fanArt = this._getImage('banner');
-
- 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'
- });
- }
+ itemViewContainer : '.x-movie-seasons',
+ template : 'Movies/Details/MoviesDetailsTemplate',
+
+ 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"
+ },
+
+ 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();
+
+ 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(vent, vent.Events.CommandComplete, this._commandComplete);
+
+ this.listenTo(this.model, 'change', function(model, options) {
+ if (options && options.changeSource === 'signalr') {
+ this._refresh();
+ }
+ });
+
+ this.listenTo(this.model, 'change:images', this._updateImages);
+ },
+
+ onShow : function() {
+ this.searchLayout = new SearchLayout({ model : this.model });
+ this.searchLayout.startManualSearch = true;
+
+ 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'
+ }
+ });
+
+ CommandController.bindToCommand({
+ element : this.ui.rename,
+ command : {
+ name : 'renameMovieFiles',
+ movieId : this.model.id,
+ seasonNumber : -1
+ }
+ });
+ },
+
+ onClose : function() {
+ if (this._backstrech) {
+ this._backstrech.destroy();
+ delete this._backstrech;
+ }
+
+ $('body').removeClass('backdrop');
+ reqres.removeHandler(reqres.Requests.GetEpisodeFileById);
+ },
+
+ _getImage : function(type) {
+ var image = _.where(this.model.get('images'), { coverType : type });
+
+ if (image && image[0]) {
+ return image[0].url;
+ }
+
+ return undefined;
+ },
+
+ _showHistory : function(e) {
+ if (e) {
+ e.preventDefault();
+ }
+
+ this.ui.history.tab('show');
+ this.history.show(new HistoryLayout({
+ model : this.model
+ }));
+ },
+
+ _showSearch : function(e) {
+ if (e) {
+ e.preventDefault();
+ }
+
+ this.ui.search.tab('show');
+ this.search.show(this.searchLayout);
+ },
+
+ _showFiles : function(e) {
+ if (e) {
+ e.preventDefault();
+ }
+
+ this.ui.files.tab('show');
+ this.files.show(this.filesLayout);
+ },
+
+ _toggleMonitored : function() {
+ var savePromise = this.model.save('monitored', !this.model.get('monitored'), { wait : true });
+
+ this.ui.monitored.spinForPromise(savePromise);
+ },
+
+ _setMonitoredState : function() {
+ var monitored = this.model.get('monitored');
+
+ this.ui.monitored.removeAttr('data-idle-icon');
+ this.ui.monitored.removeClass('fa-spin icon-sonarr-spinner');
+
+ 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');
+ }
+ },
+
+ _editMovie : function() {
+ vent.trigger(vent.Commands.EditMovieCommand, { movie : this.model });
+ },
+
+ _refreshMovies : function() {
+ CommandController.Execute('refreshMovie', {
+ name : 'refreshMovie',
+ movieId : this.model.id
+ });
+ },
+
+ _moviesRemoved : function() {
+ Backbone.history.navigate('/', { trigger : true });
+ },
+
+ _renameMovies : function() {
+ vent.trigger(vent.Commands.ShowRenamePreview, { movie : this.model });
+ },
+
+ _moviesSearch : function() {
+ CommandController.Execute('moviesSearch', {
+ name : 'moviesSearch',
+ movieIds : [this.model.id]
+ });
+ },
+
+ _showSeasons : function() {
+ var self = this;
+
+ return;
+
+ reqres.setHandler(reqres.Requests.GetEpisodeFileById, function(episodeFileId) {
+ return self.episodeFileCollection.get(episodeFileId);
+ });
+
+ reqres.setHandler(reqres.Requests.GetAlternateNameBySeasonNumber, function(moviesId, seasonNumber, sceneSeasonNumber) {
+ if (self.model.get('id') !== moviesId) {
+ return [];
+ }
+
+ if (sceneSeasonNumber === undefined) {
+ sceneSeasonNumber = seasonNumber;
+ }
+
+ return _.where(self.model.get('alternateTitles'),
+ function(alt) {
+ return alt.sceneSeasonNumber === sceneSeasonNumber || alt.seasonNumber === seasonNumber;
+ });
+ });
+
+ $.when(this.episodeCollection.fetch(), this.episodeFileCollection.fetch()).done(function() {
+ var seasonCollectionView = new SeasonCollectionView({
+ collection : self.seasonCollection,
+ episodeCollection : self.episodeCollection,
+ movies : self.model
+ });
+
+ if (!self.isClosed) {
+ self.seasons.show(seasonCollectionView);
+ }
+ });
+ },
+
+ _showInfo : function() {
+ this.info.show(new InfoView({
+ model : this.model
+ }));
+ },
+
+ _commandComplete : function(options) {
+ if (options.command.get('name') === 'renameMoviefiles') {
+ if (options.command.get('moviesId') === this.model.get('id')) {
+ this._refresh();
+ }
+ }
+ },
+
+ _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
+ });
+
+ vent.trigger(vent.Commands.OpenModalCommand, view);
+ },
+
+ _updateImages : function () {
+ var poster = this._getImage('poster');
+
+ if (poster) {
+ this.ui.poster.attr('src', poster);
+ }
+
+ this._showBackdrop();
+ },
+
+ _showBackdrop : function () {
+ $('body').addClass('backdrop');
+ var fanArt = this._getImage('banner');
+
+ 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'
+ });
+ }
});
diff --git a/src/UI/Movies/Files/Edit/EditFileTemplate.hbs b/src/UI/Movies/Files/Edit/EditFileTemplate.hbs
new file mode 100644
index 000000000..e06c410d2
--- /dev/null
+++ b/src/UI/Movies/Files/Edit/EditFileTemplate.hbs
@@ -0,0 +1,32 @@
+
diff --git a/src/UI/Movies/Files/Edit/EditFileView.js b/src/UI/Movies/Files/Edit/EditFileView.js
new file mode 100644
index 000000000..8a0633fb8
--- /dev/null
+++ b/src/UI/Movies/Files/Edit/EditFileView.js
@@ -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;
diff --git a/src/UI/Movies/Files/EditFileCell.js b/src/UI/Movies/Files/EditFileCell.js
new file mode 100644
index 000000000..27b831799
--- /dev/null
+++ b/src/UI/Movies/Files/EditFileCell.js
@@ -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(' ');
+
+ return this;
+ },
+
+ _onClick : function() {
+ var self = this;
+ vent.trigger(vent.Commands.EditFileCommand, { file : this.model });
+ }
+});
diff --git a/src/UI/Movies/Files/FilesLayout.js b/src/UI/Movies/Files/FilesLayout.js
index 3e6dd2bdd..c30c59564 100644
--- a/src/UI/Movies/Files/FilesLayout.js
+++ b/src/UI/Movies/Files/FilesLayout.js
@@ -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();
+ }
});
diff --git a/src/UI/Movies/Index/MoviesIndexLayout.js b/src/UI/Movies/Index/MoviesIndexLayout.js
index 87a2de772..479c6df12 100644
--- a/src/UI/Movies/Index/MoviesIndexLayout.js
+++ b/src/UI/Movies/Index/MoviesIndexLayout.js
@@ -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
}
]
};
diff --git a/src/UI/Movies/MoviesCollection.js b/src/UI/Movies/MoviesCollection.js
index 779fb4a0d..8ec279436 100644
--- a/src/UI/Movies/MoviesCollection.js
+++ b/src/UI/Movies/MoviesCollection.js
@@ -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;
diff --git a/src/UI/Settings/DownloadClient/DroneFactory/DroneFactoryViewTemplate.hbs b/src/UI/Settings/DownloadClient/DroneFactory/DroneFactoryViewTemplate.hbs
index a10f5d234..9043ad2f5 100644
--- a/src/UI/Settings/DownloadClient/DroneFactory/DroneFactoryViewTemplate.hbs
+++ b/src/UI/Settings/DownloadClient/DroneFactory/DroneFactoryViewTemplate.hbs
@@ -23,7 +23,7 @@
-
+
\ No newline at end of file
diff --git a/src/UI/Settings/General/GeneralViewTemplate.hbs b/src/UI/Settings/General/GeneralViewTemplate.hbs
index e4b3e6b59..cd7c25f8b 100644
--- a/src/UI/Settings/General/GeneralViewTemplate.hbs
+++ b/src/UI/Settings/General/GeneralViewTemplate.hbs
@@ -328,7 +328,7 @@
{{#if_mono}}
- Please see:
the wiki for more information
+ Please see:
the wiki for more information
Automatic
diff --git a/src/UI/Settings/Indexers/Options/IndexerOptionsViewTemplate.hbs b/src/UI/Settings/Indexers/Options/IndexerOptionsViewTemplate.hbs
index 056d12648..7770ba4ee 100644
--- a/src/UI/Settings/Indexers/Options/IndexerOptionsViewTemplate.hbs
+++ b/src/UI/Settings/Indexers/Options/IndexerOptionsViewTemplate.hbs
@@ -34,7 +34,7 @@
-
+
diff --git a/src/UI/Settings/Profile/Edit/EditProfileView.js b/src/UI/Settings/Profile/Edit/EditProfileView.js
index 23535d9e6..056a23d2c 100644
--- a/src/UI/Settings/Profile/Edit/EditProfileView.js
+++ b/src/UI/Settings/Profile/Edit/EditProfileView.js
@@ -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);
\ No newline at end of file
+module.exports = AsModelBoundView.call(view);
diff --git a/src/UI/Settings/Profile/Edit/EditProfileViewTemplate.hbs b/src/UI/Settings/Profile/Edit/EditProfileViewTemplate.hbs
index c19d10e5c..072a70ed0 100644
--- a/src/UI/Settings/Profile/Edit/EditProfileViewTemplate.hbs
+++ b/src/UI/Settings/Profile/Edit/EditProfileViewTemplate.hbs
@@ -1,45 +1,59 @@
+
+
+
+
diff --git a/src/UI/Settings/Profile/ProfileView.js b/src/UI/Settings/Profile/ProfileView.js
index 4241c3f12..10a4a9be3 100644
--- a/src/UI/Settings/Profile/ProfileView.js
+++ b/src/UI/Settings/Profile/ProfileView.js
@@ -6,30 +6,32 @@ require('./AllowedLabeler');
require('./LanguageLabel');
require('bootstrap');
+
var view = Marionette.ItemView.extend({
- template : 'Settings/Profile/ProfileViewTemplate',
- tagName : 'li',
-
- ui : {
- "progressbar" : '.progress .bar',
- "deleteButton" : '.x-delete'
- },
-
- events : {
- 'click' : '_editProfile'
- },
-
- 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);
- }
+ template : 'Settings/Profile/ProfileViewTemplate',
+ tagName : 'li',
+
+ ui : {
+ "progressbar" : '.progress .bar',
+ "deleteButton" : '.x-delete',
+
+ },
+
+ events : {
+ 'click' : '_editProfile'
+ },
+
+ 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);
\ No newline at end of file
+module.exports = AsModelBoundView.call(view);
diff --git a/src/UI/Settings/Profile/ProfileViewTemplate.hbs b/src/UI/Settings/Profile/ProfileViewTemplate.hbs
index 4f5b3eef0..2f827a351 100644
--- a/src/UI/Settings/Profile/ProfileViewTemplate.hbs
+++ b/src/UI/Settings/Profile/ProfileViewTemplate.hbs
@@ -1,13 +1,13 @@
-
-
-
+
+
+
-
- {{languageLabel}}
-
+
+ {{languageLabel}}
+
-
-
\ No newline at end of file
+
+
diff --git a/src/UI/Shared/Modal/ModalController.js b/src/UI/Shared/Modal/ModalController.js
index 4392967df..f94f1d2e4 100644
--- a/src/UI/Shared/Modal/ModalController.js
+++ b/src/UI/Shared/Modal/ModalController.js
@@ -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);
- },
-
- _openModal : function(view) {
- AppLayout.modalRegion.show(view);
- },
-
- _closeModal : function() {
- AppLayout.modalRegion.closeModal();
- },
-
- _openModal2 : function(view) {
- AppLayout.modalRegion2.show(view);
- },
-
- _closeModal2 : function() {
- AppLayout.modalRegion2.closeModal();
- },
-
- _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);
- },
-
- _deleteSeries : function(options) {
- var view = new DeleteSeriesView({ model : options.series });
- AppLayout.modalRegion.show(view);
- },
-
- _showEpisode : function(options) {
- var view = new EpisodeDetailsLayout({
- model : options.episode,
- hideSeriesLink : options.hideSeriesLink,
- openingTab : options.openingTab
- });
- AppLayout.modalRegion.show(view);
- },
-
- _showMovie : function(options) {
- var view = new MoviesDetailsLayout({
- model : options.movie,
- hideSeriesLink : options.hideSeriesLink,
- openingTab : options.openingTab
- });
- AppLayout.modalRegion.show(view);
- },
-
- _showHistory : function(options) {
- var view = new HistoryDetailsLayout({ model : options.model });
- AppLayout.modalRegion.show(view);
- },
-
- _showLogDetails : function(options) {
- var view = new LogDetailsView({ model : options.model });
- AppLayout.modalRegion.show(view);
- },
-
- _showRenamePreview : function(options) {
- var view = new RenamePreviewLayout(options);
- AppLayout.modalRegion.show(view);
- },
-
- _showManualImport : function(options) {
- var view = new ManualImportLayout(options);
- AppLayout.modalRegion.show(view);
- },
-
- _showFileBrowser : function(options) {
- var view = new FileBrowserLayout(options);
- AppLayout.modalRegion2.show(view);
- },
-
- _closeFileBrowser : function() {
- AppLayout.modalRegion2.closeModal();
- }
+ 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);
+ },
+
+ _closeModal : function() {
+ AppLayout.modalRegion.closeModal();
+ },
+
+ _openModal2 : function(view) {
+ AppLayout.modalRegion2.show(view);
+ },
+
+ _closeModal2 : function() {
+ AppLayout.modalRegion2.closeModal();
+ },
+
+ _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);
+ },
+
+ _editFile : function(options) {
+ var view = new EditFileView({ model : options.file });
+ AppLayout.modalRegion.show(view);
+ },
+
+ _deleteSeries : function(options) {
+ var view = new DeleteSeriesView({ model : options.series });
+ AppLayout.modalRegion.show(view);
+ },
+
+ _showEpisode : function(options) {
+ var view = new EpisodeDetailsLayout({
+ model : options.episode,
+ hideSeriesLink : options.hideSeriesLink,
+ openingTab : options.openingTab
+ });
+ AppLayout.modalRegion.show(view);
+ },
+
+ _showMovie : function(options) {
+ var view = new MoviesDetailsLayout({
+ model : options.movie,
+ hideSeriesLink : options.hideSeriesLink,
+ openingTab : options.openingTab
+ });
+ AppLayout.modalRegion.show(view);
+ },
+
+ _showHistory : function(options) {
+ var view = new HistoryDetailsLayout({ model : options.model });
+ AppLayout.modalRegion.show(view);
+ },
+
+ _showLogDetails : function(options) {
+ var view = new LogDetailsView({ model : options.model });
+ AppLayout.modalRegion.show(view);
+ },
+
+ _showRenamePreview : function(options) {
+ var view = new RenamePreviewLayout(options);
+ AppLayout.modalRegion.show(view);
+ },
+
+ _showManualImport : function(options) {
+ var view = new ManualImportLayout(options);
+ AppLayout.modalRegion.show(view);
+ },
+
+ _showFileBrowser : function(options) {
+ var view = new FileBrowserLayout(options);
+ AppLayout.modalRegion2.show(view);
+ },
+
+ _closeFileBrowser : function() {
+ AppLayout.modalRegion2.closeModal();
+ }
});
diff --git a/src/UI/Wanted/Missing/MissingLayout.js b/src/UI/Wanted/Missing/MissingLayout.js
index b3aa9e378..1a7e6711f 100644
--- a/src/UI/Wanted/Missing/MissingLayout.js
+++ b/src/UI/Wanted/Missing/MissingLayout.js
@@ -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;
}
diff --git a/src/UI/index.html b/src/UI/index.html
index 10e77adef..aa96ef4c9 100644
--- a/src/UI/index.html
+++ b/src/UI/index.html
@@ -7,11 +7,6 @@
-
-
-
-
-
@@ -33,12 +28,24 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/UI/login.html b/src/UI/login.html
index e956bbd4c..a73b84b38 100644
--- a/src/UI/login.html
+++ b/src/UI/login.html
@@ -11,11 +11,24 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/UI/vent.js b/src/UI/vent.js
index 1962f9d22..a6a7be318 100644
--- a/src/UI/vent.js
+++ b/src/UI/vent.js
@@ -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;