From c3d4732baa16ee2e17047b2d3aa0695041d2624d Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 15 Jun 2011 19:32:55 -0700 Subject: [PATCH] Adding a root dir will not add it to the DB until after it is saved, also will not save if the path is blank. --- .../Controllers/AddSeriesController.cs | 38 ++++++++++++------- NzbDrone.Web/Views/AddSeries/Index.cshtml | 19 ++++++---- NzbDrone.Web/Views/AddSeries/RootDir.cshtml | 10 ++--- 3 files changed, 41 insertions(+), 26 deletions(-) diff --git a/NzbDrone.Web/Controllers/AddSeriesController.cs b/NzbDrone.Web/Controllers/AddSeriesController.cs index 74d1f96d6..4737ebca7 100644 --- a/NzbDrone.Web/Controllers/AddSeriesController.cs +++ b/NzbDrone.Web/Controllers/AddSeriesController.cs @@ -187,9 +187,16 @@ namespace NzbDrone.Web.Controllers [HttpPost] public JsonResult SaveRootDir(int id, string path) { + if (String.IsNullOrWhiteSpace(path)) + return new JsonResult { Data = "failed" }; + try { - _rootFolderProvider.Update(new RootDir { Id = id, Path = path }); + if (id == 0) + id = _rootFolderProvider.Add(new RootDir { Path = path }); + + else + _rootFolderProvider.Update(new RootDir { Id = id, Path = path }); } catch (Exception ex) { @@ -199,30 +206,33 @@ namespace NzbDrone.Web.Controllers return new JsonResult { Data = "failed" }; } - return new JsonResult { Data = "ok" }; + return new JsonResult { Data = id }; } public PartialViewResult AddRootDir() { - var rootDir = new RootDir { Path = String.Empty }; + var model = new RootDirModel + { + Id = 0, + Path = "", + SelectList = new SelectList(new List { "" }, "") + }; - var id = _rootFolderProvider.Add(rootDir); - rootDir.Id = id; - - var model = new RootDirModel(); - model.Id = rootDir.Id; - model.Path = rootDir.Path; - model.SelectList = new SelectList(new List { rootDir.Path }, rootDir.Path); + ViewData["guid"] = Guid.NewGuid(); return PartialView("RootDir", model); } public ActionResult GetRootDirView(RootDir rootDir) { - var model = new RootDirModel(); - model.Id = rootDir.Id; - model.Path = rootDir.Path; - model.SelectList = new SelectList(new List { rootDir.Path }, rootDir.Path); + var model = new RootDirModel + { + Id = rootDir.Id, + Path = rootDir.Path, + SelectList = new SelectList(new List { rootDir.Path }, rootDir.Path) + }; + + ViewData["guid"] = Guid.NewGuid(); return PartialView("RootDir", model); } diff --git a/NzbDrone.Web/Views/AddSeries/Index.cshtml b/NzbDrone.Web/Views/AddSeries/Index.cshtml index ce1e3e29e..e47a1fe4e 100644 --- a/NzbDrone.Web/Views/AddSeries/Index.cshtml +++ b/NzbDrone.Web/Views/AddSeries/Index.cshtml @@ -132,11 +132,12 @@ var deleteRootDirUrl = '@Url.Action("DeleteRootDir", "AddSeries")'; - function deleteRootDir(id) { - sendDeleteToServer(id); + function deleteRootDir(guid) { + var id = $('#id_' + guid).val(); + sendDeleteToServer(id, guid); } - function sendDeleteToServer(id) { + function sendDeleteToServer(id, guid) { $.ajax({ type: "POST", url: deleteRootDirUrl, @@ -145,15 +146,16 @@ alert("Sorry! We could not delete your Root Directory at this time. " + error); }, success: function () { - $("#rootDir_" + id).remove(); + $("#rootDir_" + guid).remove(); } }); } var saveRootDirUrl = '@Url.Action("SaveRootDir", "AddSeries")'; - function saveRootDir(id) { - var path = $("#path_" + id).data("tComboBox").value(); + function saveRootDir(guid) { + var path = $("#path_" + guid).data("tComboBox").value(); + var id = $("#id_" + guid).val(); $.ajax({ type: "POST", @@ -163,8 +165,11 @@ alert("Sorry! We could not save " + path + " at this time. " + error); }, success: function (data, textStatus, jqXHR) { - if (data != 'ok') + if (data == 'failed') alert("An error occurred while saving Root Directory: " + path); + else { + $("#id_" + guid).val(data); + } } }); } diff --git a/NzbDrone.Web/Views/AddSeries/RootDir.cshtml b/NzbDrone.Web/Views/AddSeries/RootDir.cshtml index 618e70eae..0925819b3 100644 --- a/NzbDrone.Web/Views/AddSeries/RootDir.cshtml +++ b/NzbDrone.Web/Views/AddSeries/RootDir.cshtml @@ -4,10 +4,10 @@ Layout = null; } -
+
@{Html.Telerik().ComboBox() - .Name("path_" + Model.Id) + .Name("path_" + ViewData["guid"]) .BindTo(Model.SelectList) .DataBinding(binding => binding.Ajax().Select("_autoCompletePath", "Directory").Delay(400).Cache(false)) .Filterable(f => f.FilterMode(AutoCompleteFilterMode.StartsWith)) @@ -16,10 +16,10 @@ .Render();} - + Delete - + - @Html.HiddenFor(x => x.Id, new { id = "id_" + Model.Id }) + @Html.HiddenFor(x => x.Id, new { id = "id_" + ViewData["guid"] })
\ No newline at end of file