mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-21 05:53:33 -07:00
Manage multiple Tv Root Folders in Settings/General.
Start of AddExisting.
This commit is contained in:
parent
2e9dd7f1ff
commit
2871723bfe
21 changed files with 381 additions and 90 deletions
|
@ -22,6 +22,7 @@ namespace NzbDrone.Web.Controllers
|
|||
private readonly IQualityProvider _qualityProvider;
|
||||
private readonly IMediaFileProvider _mediaFileProvider;
|
||||
private readonly IRenameProvider _renameProvider;
|
||||
private readonly IRootDirProvider _rootDirProvider;
|
||||
|
||||
//
|
||||
// GET: /Series/
|
||||
|
@ -29,7 +30,7 @@ namespace NzbDrone.Web.Controllers
|
|||
public SeriesController(ISyncProvider syncProvider, ISeriesProvider seriesProvider,
|
||||
IEpisodeProvider episodeProvider, IRssSyncProvider rssSyncProvider,
|
||||
IQualityProvider qualityProvider, IMediaFileProvider mediaFileProvider,
|
||||
IRenameProvider renameProvider)
|
||||
IRenameProvider renameProvider, IRootDirProvider rootDirProvider)
|
||||
{
|
||||
_seriesProvider = seriesProvider;
|
||||
_episodeProvider = episodeProvider;
|
||||
|
@ -38,6 +39,7 @@ namespace NzbDrone.Web.Controllers
|
|||
_qualityProvider = qualityProvider;
|
||||
_mediaFileProvider = mediaFileProvider;
|
||||
_renameProvider = renameProvider;
|
||||
_rootDirProvider = rootDirProvider;
|
||||
}
|
||||
|
||||
public ActionResult Index()
|
||||
|
@ -51,9 +53,15 @@ namespace NzbDrone.Web.Controllers
|
|||
return View(new AddSeriesModel());
|
||||
}
|
||||
|
||||
public ActionResult Sync()
|
||||
public ActionResult AddExisting()
|
||||
{
|
||||
_syncProvider.BeginSyncUnmappedFolders();
|
||||
return View();
|
||||
}
|
||||
|
||||
public ActionResult Sync(List<String> paths)
|
||||
{
|
||||
//Todo: Make this do something...
|
||||
_syncProvider.BeginSyncUnmappedFolders(paths);
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
|
@ -63,9 +71,9 @@ namespace NzbDrone.Web.Controllers
|
|||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
public ActionResult UnMapped()
|
||||
public ActionResult UnMapped(string path)
|
||||
{
|
||||
return View(_seriesProvider.GetUnmappedFolders().Select(c => new MappingModel() { Id = 1, Path = c.Value }).ToList());
|
||||
return View(_syncProvider.GetUnmappedFolders(path).Select(c => new MappingModel() { Id = 1, Path = c }).ToList());
|
||||
}
|
||||
|
||||
public ActionResult LoadEpisodes(int seriesId)
|
||||
|
@ -103,6 +111,24 @@ namespace NzbDrone.Web.Controllers
|
|||
Total = data.Count()
|
||||
});
|
||||
}
|
||||
|
||||
[GridAction]
|
||||
public ActionResult _AjaxUnmappedFoldersGrid()
|
||||
{
|
||||
var unmappedList = new List<String>();
|
||||
|
||||
foreach (var folder in _rootDirProvider.GetAll())
|
||||
unmappedList.AddRange(_syncProvider.GetUnmappedFolders(folder.Path));
|
||||
|
||||
var seriesPaths = unmappedList.Select(c => new AddExistingSeriesModel
|
||||
{
|
||||
IsWanted = true,
|
||||
Path = c
|
||||
});
|
||||
|
||||
return View(new GridModel(seriesPaths));
|
||||
}
|
||||
|
||||
private IEnumerable<Episode> GetData(GridCommand command)
|
||||
{
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ using NzbDrone.Core;
|
|||
using NzbDrone.Core.Helpers;
|
||||
using NzbDrone.Core.Model;
|
||||
using NzbDrone.Core.Providers;
|
||||
using NzbDrone.Core.Repository;
|
||||
using NzbDrone.Core.Repository.Quality;
|
||||
using NzbDrone.Web.Models;
|
||||
|
||||
|
@ -20,15 +21,19 @@ namespace NzbDrone.Web.Controllers
|
|||
private IConfigProvider _configProvider;
|
||||
private IIndexerProvider _indexerProvider;
|
||||
private IQualityProvider _qualityProvider;
|
||||
private IRootDirProvider _rootDirProvider;
|
||||
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private string _settingsSaved = "Settings Saved.";
|
||||
private string _settingsFailed = "Error Saving Settings, please fix any errors";
|
||||
|
||||
public SettingsController(IConfigProvider configProvider, IIndexerProvider indexerProvider, IQualityProvider qualityProvider)
|
||||
public SettingsController(IConfigProvider configProvider, IIndexerProvider indexerProvider,
|
||||
IQualityProvider qualityProvider, IRootDirProvider rootDirProvider)
|
||||
{
|
||||
_configProvider = configProvider;
|
||||
_indexerProvider = indexerProvider;
|
||||
_qualityProvider = qualityProvider;
|
||||
_rootDirProvider = rootDirProvider;
|
||||
}
|
||||
|
||||
public ActionResult Index(string viewName)
|
||||
|
@ -37,21 +42,18 @@ namespace NzbDrone.Web.Controllers
|
|||
ViewData["viewName"] = viewName;
|
||||
|
||||
else
|
||||
ViewData["viewName"] = "General";
|
||||
return RedirectToAction("General");
|
||||
|
||||
return View("Index", new SettingsModel
|
||||
{
|
||||
TvFolder = _configProvider.SeriesRoot
|
||||
});
|
||||
return View("Index");
|
||||
}
|
||||
|
||||
public ActionResult General()
|
||||
{
|
||||
ViewData["viewName"] = "General";
|
||||
|
||||
return View("Index", new SettingsModel
|
||||
{
|
||||
TvFolder = _configProvider.SeriesRoot,
|
||||
Quality = Convert.ToInt32(_configProvider.GetValue("Quality", "1", true)),
|
||||
Directories = new List<RootDir>()
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -185,6 +187,11 @@ namespace NzbDrone.Web.Controllers
|
|||
return View("UserProfileSection", new QualityProfile { Name = "New Profile", UserProfile = true });
|
||||
}
|
||||
|
||||
public ViewResult AddRootDir()
|
||||
{
|
||||
return View("RootDir", new RootDir { Default = false });
|
||||
}
|
||||
|
||||
public ActionResult SubMenu()
|
||||
{
|
||||
return PartialView();
|
||||
|
@ -202,9 +209,30 @@ namespace NzbDrone.Web.Controllers
|
|||
[HttpPost]
|
||||
public ActionResult SaveGeneral(SettingsModel data)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
if (data.Directories.Count > 0)
|
||||
{
|
||||
_configProvider.SeriesRoot = data.TvFolder;
|
||||
//If the Javascript was beaten we need to return an error
|
||||
if (!data.Directories.Exists(d => d.Default))
|
||||
return Content(_settingsFailed);
|
||||
|
||||
var currentRootDirs = _rootDirProvider.GetAll();
|
||||
|
||||
foreach (var currentRootDir in currentRootDirs)
|
||||
{
|
||||
var closureRootDir = currentRootDir;
|
||||
if (!data.Directories.Exists(d => d.RootDirId == closureRootDir.RootDirId))
|
||||
_rootDirProvider.Remove(closureRootDir.RootDirId);
|
||||
}
|
||||
|
||||
foreach (var dir in data.Directories)
|
||||
{
|
||||
if (dir.RootDirId == 0)
|
||||
_rootDirProvider.Add(dir);
|
||||
|
||||
else
|
||||
_rootDirProvider.Update(dir);
|
||||
}
|
||||
|
||||
return Content(_settingsSaved);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue