mirror of
https://github.com/Sonarr/Sonarr
synced 2025-03-09 13:52:59 +00:00
rootfolder is linked to add series.
This commit is contained in:
parent
bf50c5989a
commit
1024e0f83d
10 changed files with 102 additions and 52 deletions
|
@ -182,6 +182,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="App_Start\DataTablesMvc.cs" />
|
<Compile Include="App_Start\DataTablesMvc.cs" />
|
||||||
<Compile Include="App_Start\MiniProfiler.cs" />
|
<Compile Include="App_Start\MiniProfiler.cs" />
|
||||||
|
<Content Include="_backboneApp\AddSeries\AddNewSeries\SearchResultView.js" />
|
||||||
<Content Include="_backboneApp\AddSeries\RootDir\RootDirTemplate.html" />
|
<Content Include="_backboneApp\AddSeries\RootDir\RootDirTemplate.html" />
|
||||||
<Content Include="_backboneApp\AddSeries\RootDir\RootDirView.js" />
|
<Content Include="_backboneApp\AddSeries\RootDir\RootDirView.js" />
|
||||||
<Content Include="_backboneApp\AddSeries\RootDir\RootDirItemTemplate.html" />
|
<Content Include="_backboneApp\AddSeries\RootDir\RootDirItemTemplate.html" />
|
||||||
|
@ -396,7 +397,7 @@
|
||||||
<Content Include="_backboneApp\JsLibraries\handlebars.js" />
|
<Content Include="_backboneApp\JsLibraries\handlebars.js" />
|
||||||
<Content Include="_backboneApp\JsLibraries\jquery.js" />
|
<Content Include="_backboneApp\JsLibraries\jquery.js" />
|
||||||
<Content Include="_backboneApp\JsLibraries\jquery-ui-1.9.0.js" />
|
<Content Include="_backboneApp\JsLibraries\jquery-ui-1.9.0.js" />
|
||||||
<Content Include="_backboneApp\JsLibraries\marionette.viewswapper.js" />
|
<Content Include="_backboneApp\JsLibraries\backbone.marionette.viewswapper.js" />
|
||||||
<Content Include="_backboneApp\JsLibraries\sugar.js" />
|
<Content Include="_backboneApp\JsLibraries\sugar.js" />
|
||||||
<Content Include="_backboneApp\JsLibraries\underscore.js" />
|
<Content Include="_backboneApp\JsLibraries\underscore.js" />
|
||||||
<Content Include="Views\System\Index.cshtml" />
|
<Content Include="Views\System\Index.cshtml" />
|
||||||
|
|
|
@ -1,26 +1,5 @@
|
||||||
/// <reference path="../../app.js" />
|
/// <reference path="../../app.js" />
|
||||||
/// <reference path="../SearchResultModel.js" />
|
/// <reference path="SearchResultView.js" />
|
||||||
/// <reference path="../SearchResultCollection.js" />
|
|
||||||
|
|
||||||
NzbDrone.AddSeries.SearchItemView = Backbone.Marionette.ItemView.extend({
|
|
||||||
|
|
||||||
template: "AddSeries/AddNewSeries/SearchResultTemplate",
|
|
||||||
className: 'search-item-view well',
|
|
||||||
onRender: function () {
|
|
||||||
NzbDrone.ModelBinder.bind(this.model, this.el);
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
NzbDrone.AddSeries.SearchResultView = Backbone.Marionette.CollectionView.extend({
|
|
||||||
|
|
||||||
itemView: NzbDrone.AddSeries.SearchItemView,
|
|
||||||
|
|
||||||
initialize: function () {
|
|
||||||
this.listenTo(this.collection, 'reset', this.render);
|
|
||||||
},
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
NzbDrone.AddSeries.AddNewSeriesView = Backbone.Marionette.Layout.extend({
|
NzbDrone.AddSeries.AddNewSeriesView = Backbone.Marionette.Layout.extend({
|
||||||
template: "AddSeries/AddNewSeries/AddNewSeriesTemplate",
|
template: "AddSeries/AddNewSeries/AddNewSeriesTemplate",
|
||||||
|
@ -36,6 +15,13 @@ NzbDrone.AddSeries.AddNewSeriesView = Backbone.Marionette.Layout.extend({
|
||||||
|
|
||||||
collection: new NzbDrone.AddSeries.SearchResultCollection(),
|
collection: new NzbDrone.AddSeries.SearchResultCollection(),
|
||||||
|
|
||||||
|
initialize: function (rootFolders) {
|
||||||
|
if (rootFolders === undefined) {
|
||||||
|
throw "rootFolder arg is required.";
|
||||||
|
}
|
||||||
|
|
||||||
|
this.rootFoldersCollection = rootFolders;
|
||||||
|
},
|
||||||
|
|
||||||
onRender: function () {
|
onRender: function () {
|
||||||
console.log('binding auto complete');
|
console.log('binding auto complete');
|
||||||
|
@ -62,13 +48,22 @@ NzbDrone.AddSeries.AddNewSeriesView = Backbone.Marionette.Layout.extend({
|
||||||
|
|
||||||
context.collection.fetch({
|
context.collection.fetch({
|
||||||
data: $.param({ term: term }),
|
data: $.param({ term: term }),
|
||||||
success: function () {
|
success: function (model) {
|
||||||
context.searchResult.show(context.resultView);
|
context.resultUpdated(model, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
context.searchResult.close();
|
context.searchResult.close();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
resultUpdated: function (options, context) {
|
||||||
|
_.each(options.models, function (model) {
|
||||||
|
model.set('rootFolders', context.rootFoldersCollection.rootFolders.models);
|
||||||
|
});
|
||||||
|
|
||||||
|
context.searchResult.show(context.resultView);
|
||||||
|
}
|
||||||
});
|
});
|
|
@ -1,5 +1,22 @@
|
||||||
<div class="result-item row">
|
<div class="accordion-heading">
|
||||||
<div>
|
<a href="http://thetvdb.com/?tab=series&id={{id}}" target="_blank" class="icon-info-sign pull-left"></a>
|
||||||
<a href="http://thetvdb.com/?tab=series&id={{id}}" target="_blank" class="icon-info-sign"></a>{{seriesName}} {{seriesYear}}
|
<a class="accordion-toggle" data-toggle="collapse" href="#{{id}}">{{seriesName}} {{seriesYear}}</a>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="{{id}}" class="accordion-body collapse">
|
||||||
|
<div class="accordion-inner">
|
||||||
|
<select class="root-dir-input span7" name="rootFolders">
|
||||||
|
{{#each rootFolders}}
|
||||||
|
<option value="{{id}}">{{attributes.path}}</option>
|
||||||
|
{{/each}}
|
||||||
|
</select>
|
||||||
|
<select class="quality-profile-input span2">
|
||||||
|
<option value="volvo">Volvo</option>
|
||||||
|
<option value="saab">Saab</option>
|
||||||
|
<option value="mercedes">Mercedes</option>
|
||||||
|
<option value="audi">Audi</option>
|
||||||
|
</select>
|
||||||
|
<div class="btn btn-success pull-right icon-plus">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div name="overview"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
/// <reference path="../../app.js" />
|
||||||
|
/// <reference path="../SearchResultModel.js" />
|
||||||
|
/// <reference path="../SearchResultCollection.js" />
|
||||||
|
|
||||||
|
NzbDrone.AddSeries.SearchItemView = Backbone.Marionette.ItemView.extend({
|
||||||
|
|
||||||
|
template: "AddSeries/AddNewSeries/SearchResultTemplate",
|
||||||
|
className: 'search-item accordion-group',
|
||||||
|
onRender: function () {
|
||||||
|
this.listenTo(this.model, 'change', this.render);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
NzbDrone.AddSeries.SearchResultView = Backbone.Marionette.CollectionView.extend({
|
||||||
|
|
||||||
|
itemView: NzbDrone.AddSeries.SearchItemView,
|
||||||
|
|
||||||
|
className: 'accordion',
|
||||||
|
|
||||||
|
initialize: function () {
|
||||||
|
this.listenTo(this.collection, 'reset', this.render);
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
|
@ -28,7 +28,7 @@ NzbDrone.AddSeries.AddSeriesLayout = Backbone.Marionette.Layout.extend({
|
||||||
$(this).tab('show');
|
$(this).tab('show');
|
||||||
});
|
});
|
||||||
|
|
||||||
this.addNew.show(new NzbDrone.AddSeries.AddNewSeriesView());
|
this.addNew.show(new NzbDrone.AddSeries.AddNewSeriesView({ rootFolders: this.rootFolderCollection }));
|
||||||
//this.importExisting.show(new NzbDrone.ImportExistingView());
|
//this.importExisting.show(new NzbDrone.ImportExistingView());
|
||||||
this.rootFolders.show(new NzbDrone.AddSeries.RootDirView({ collection: this.rootFolderCollection }));
|
this.rootFolders.show(new NzbDrone.AddSeries.RootDirView({ collection: this.rootFolderCollection }));
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.nz-input-large *[class*='icon-'] {
|
.nz-input-large *[class*='icon-'] {
|
||||||
font-size: 30px;
|
font-size: 28px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
width: 40px;
|
width: 40px;
|
||||||
padding-top: 14px;
|
padding-top: 14px;
|
||||||
|
@ -23,20 +23,29 @@
|
||||||
|
|
||||||
.result-list .well:hover {
|
.result-list .well:hover {
|
||||||
background-color: #fcf8e3;
|
background-color: #fcf8e3;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.result-item {
|
|
||||||
padding-left: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.result-item *[class*='icon-'] {
|
.search-item .accordion-heading *[class*='icon-'] {
|
||||||
padding-right: 10px;
|
padding-right: 5px;
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.result-list .result-item a {
|
.result-list .result-item a {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.result-list .result-item a:hover {
|
.search-item a:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.search-item a {
|
||||||
|
color: #343434;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.search-item select {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
_.extend(Marionette.TemplateCache.prototype, {
|
/// <reference path="handlebars.js" />
|
||||||
|
|
||||||
|
_.extend(Marionette.TemplateCache.prototype, {
|
||||||
|
|
||||||
loadTemplate: function (templateId) {
|
loadTemplate: function (templateId) {
|
||||||
|
|
||||||
|
@ -24,9 +26,9 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
_.extend(Marionette.TemplateCache.prototype, {
|
||||||
|
|
||||||
_.extend(Marionette.View.prototype, {
|
compileTemplate: function (rawTemplate) {
|
||||||
|
return Handlebars.compile(rawTemplate);
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
|
@ -47,22 +47,20 @@ window.onerror = function (msg, url, line) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var suppressErrorAlert = false;
|
var suppressErrorAlert = false;
|
||||||
// If you return true, then error alerts (like in older versions of
|
|
||||||
// Internet Explorer) will be suppressed.
|
|
||||||
return suppressErrorAlert;
|
return suppressErrorAlert;
|
||||||
};
|
};
|
||||||
|
|
||||||
$(document).ajaxError(function (event, XMLHttpRequest, ajaxOptionsa) {
|
$(document).ajaxError(function (event, xmlHttpRequest, ajaxOptions) {
|
||||||
|
|
||||||
|
if (xmlHttpRequest.status >= 200 && xmlHttpRequest.status <= 300) return;
|
||||||
|
|
||||||
var errorView = NzbDrone.Shared.ErrorView.instance;
|
var errorView = NzbDrone.Shared.ErrorView.instance;
|
||||||
|
|
||||||
var model = new NzbDrone.Shared.ErrorModel();
|
var model = new NzbDrone.Shared.ErrorModel();
|
||||||
model.set('title', ajaxOptionsa.url + " : " + XMLHttpRequest.statusText);
|
model.set('title', ajaxOptions.url + " : " + xmlHttpRequest.statusText);
|
||||||
model.set('message', XMLHttpRequest.responseText);
|
model.set('message', xmlHttpRequest.responseText);
|
||||||
errorView.collection.add(model);
|
errorView.collection.add(model);
|
||||||
|
|
||||||
var suppressErrorAlert = false;
|
var suppressErrorAlert = false;
|
||||||
// If you return true, then error alerts (like in older versions of
|
|
||||||
// Internet Explorer) will be suppressed.
|
|
||||||
return suppressErrorAlert;
|
return suppressErrorAlert;
|
||||||
});
|
});
|
|
@ -8,6 +8,7 @@
|
||||||
/// <reference path="JsLibraries/backbone.shortcuts.js" />
|
/// <reference path="JsLibraries/backbone.shortcuts.js" />
|
||||||
/// <reference path="JsLibraries/backbone.marionette.js" />
|
/// <reference path="JsLibraries/backbone.marionette.js" />
|
||||||
/// <reference path="JsLibraries/backbone.marionette.extend.js" />
|
/// <reference path="JsLibraries/backbone.marionette.extend.js" />
|
||||||
|
/// <reference path="JsLibraries/backbone.marionette.viewswapper.js" />
|
||||||
/// <reference path="JsLibraries/backbone.modelbinder.js" />
|
/// <reference path="JsLibraries/backbone.modelbinder.js" />
|
||||||
/// <reference path="JsLibraries/bootstrap.js" />
|
/// <reference path="JsLibraries/bootstrap.js" />
|
||||||
/// <reference path="nzbdrone.logging.js" />
|
/// <reference path="nzbdrone.logging.js" />
|
||||||
|
@ -20,9 +21,11 @@ NzbDrone = new Backbone.Marionette.Application();
|
||||||
NzbDrone.AddSeries = NzbDrone.module("AddSeries");
|
NzbDrone.AddSeries = NzbDrone.module("AddSeries");
|
||||||
NzbDrone.Shared = NzbDrone.module("Shared");
|
NzbDrone.Shared = NzbDrone.module("Shared");
|
||||||
|
|
||||||
|
/*
|
||||||
_.templateSettings = {
|
_.templateSettings = {
|
||||||
interpolate: /\{\{([\s\S]+?)\}\}/g
|
interpolate: /\{\{([\s\S]+?)\}\}/g
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
NzbDrone.ModelBinder = new Backbone.ModelBinder();
|
NzbDrone.ModelBinder = new Backbone.ModelBinder();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue