added settings view to mvc project
This commit is contained in:
parent
941d516e42
commit
d7bae9135c
|
@ -9,6 +9,7 @@ namespace NzbDrone.Core.Controllers
|
|||
{
|
||||
public class DbConfigController : IConfigController
|
||||
{
|
||||
private const string _seriesroots = "SeriesRoots";
|
||||
private readonly IDiskController _diskController;
|
||||
private readonly ILog _logger;
|
||||
private readonly IRepository _sonicRepo;
|
||||
|
@ -21,20 +22,27 @@ namespace NzbDrone.Core.Controllers
|
|||
_sonicRepo = dataRepository;
|
||||
}
|
||||
|
||||
#region IConfigController Members
|
||||
|
||||
public List<String> GetTvRoots()
|
||||
{
|
||||
return (GetValue("tvRoot").Trim(';').Split(';').Where(path => _diskController.Exists(path))).ToList();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private string GetValue(string key)
|
||||
{
|
||||
return GetValue(key, String.Empty, false);
|
||||
}
|
||||
|
||||
public String SeriesRoot
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetValue(_seriesroots);
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
SetValue(_seriesroots, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private string GetValue(string key, object defaultValue, bool makePermanent)
|
||||
{
|
||||
string value;
|
||||
|
|
|
@ -1,65 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using log4net;
|
||||
|
||||
namespace NzbDrone.Core.Controllers
|
||||
{
|
||||
public class FileConfigController : IConfigController
|
||||
{
|
||||
private readonly Configuration _config = ConfigurationManager.OpenExeConfiguration(Path.Combine(Main.AppPath, @"NzbDrone.exe"));
|
||||
private readonly IDiskController _diskController;
|
||||
private readonly ILog _logger;
|
||||
|
||||
public FileConfigController(ILog logger, IDiskController diskController)
|
||||
{
|
||||
_logger = logger;
|
||||
_diskController = diskController;
|
||||
}
|
||||
|
||||
#region IConfigController Members
|
||||
|
||||
public List<String> GetTvRoots()
|
||||
{
|
||||
return (GetValue("tvRoot").Trim(';').Split(';').Where(path => _diskController.Exists(path))).ToList();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private string GetValue(string key)
|
||||
{
|
||||
return GetValue(key, String.Empty, false);
|
||||
}
|
||||
|
||||
private string GetValue(string key, object defaultValue, bool makePermanent)
|
||||
{
|
||||
string value;
|
||||
|
||||
if (_config.AppSettings.Settings[key] != null)
|
||||
{
|
||||
value = _config.AppSettings.Settings[key].Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.WarnFormat("Unable to find config key '{0}' defaultValue:'{1}'", key, defaultValue);
|
||||
if (makePermanent)
|
||||
{
|
||||
SetValue(key, defaultValue.ToString());
|
||||
}
|
||||
value = defaultValue.ToString();
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
private void SetValue(string key, object value)
|
||||
{
|
||||
_logger.DebugFormat("Writing Setting to file. Key:'{0}' Value:'{1}'", key, value);
|
||||
_config.AppSettings.Settings.Remove(key);
|
||||
_config.AppSettings.Settings.Add(key, value.ToString());
|
||||
_config.Save();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,9 +1,15 @@
|
|||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace NzbDrone.Core.Controllers
|
||||
{
|
||||
public interface IConfigController
|
||||
{
|
||||
List<string> GetTvRoots();
|
||||
String SeriesRoot
|
||||
{
|
||||
get;
|
||||
|
||||
set;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -34,9 +34,8 @@ namespace NzbDrone.Core.Controllers
|
|||
|
||||
public void SyncSeriesWithDisk()
|
||||
{
|
||||
foreach (string root in _config.GetTvRoots())
|
||||
{
|
||||
foreach (string seriesFolder in _diskController.GetDirectories(root))
|
||||
|
||||
foreach (string seriesFolder in _diskController.GetDirectories(_config.SeriesRoot))
|
||||
{
|
||||
var dirInfo = new DirectoryInfo(seriesFolder);
|
||||
if (!_sonioRepo.Exists<Series>(s => s.Path == _diskController.CleanPath(dirInfo.FullName)))
|
||||
|
@ -45,7 +44,7 @@ namespace NzbDrone.Core.Controllers
|
|||
AddShow(seriesFolder);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -140,7 +140,6 @@
|
|||
<Compile Include="Repository\Series.cs" />
|
||||
<Compile Include="Main.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Controllers\FileConfigController.cs" />
|
||||
<Compile Include="Controllers\DiskController.cs" />
|
||||
<Compile Include="Controllers\IConfigController.cs" />
|
||||
<Compile Include="Controllers\IDiskController.cs" />
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -3,6 +3,8 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using NzbDrone.Core.Controllers;
|
||||
using NzbDrone.Web.Models;
|
||||
|
||||
namespace NzbDrone.Web.Controllers
|
||||
{
|
||||
|
@ -10,10 +12,27 @@ namespace NzbDrone.Web.Controllers
|
|||
{
|
||||
//
|
||||
// GET: /Settings/
|
||||
private IConfigController _configController;
|
||||
|
||||
public SettingsController(IConfigController configController)
|
||||
{
|
||||
_configController = configController;
|
||||
}
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
return View();
|
||||
return View(new SettingsModel() { RootPath = _configController.SeriesRoot });
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public ActionResult Save(SettingsModel model)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
_configController.SeriesRoot = model.RootPath;
|
||||
}
|
||||
|
||||
return RedirectToAction("index");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -11,65 +11,13 @@ using System.Web.Security;
|
|||
namespace NzbDrone.Web.Models
|
||||
{
|
||||
|
||||
#region Models
|
||||
[PropertiesMustMatch("NewPassword", "ConfirmPassword", ErrorMessage = "The new password and confirmation password do not match.")]
|
||||
public class ChangePasswordModel1
|
||||
public class SettingsModel
|
||||
{
|
||||
[Required]
|
||||
[DataType(DataType.Password)]
|
||||
[DisplayName("Current password")]
|
||||
public string OldPassword { get; set; }
|
||||
|
||||
[Required]
|
||||
[ValidatePasswordLength]
|
||||
[DataType(DataType.Password)]
|
||||
[DisplayName("New password")]
|
||||
public string NewPassword { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataType(DataType.Password)]
|
||||
[DisplayName("Confirm new password")]
|
||||
public string ConfirmPassword { get; set; }
|
||||
}
|
||||
|
||||
public class LogOnModel1
|
||||
public String RootPath
|
||||
{
|
||||
[Required]
|
||||
[DisplayName("User name")]
|
||||
public string UserName { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataType(DataType.Password)]
|
||||
[DisplayName("Password")]
|
||||
public string Password { get; set; }
|
||||
|
||||
[DisplayName("Remember me?")]
|
||||
public bool RememberMe { get; set; }
|
||||
get;
|
||||
set;
|
||||
}
|
||||
}
|
||||
|
||||
[PropertiesMustMatch("Password", "ConfirmPassword", ErrorMessage = "The password and confirmation password do not match.")]
|
||||
public class RegisterModel1
|
||||
{
|
||||
[Required]
|
||||
[DisplayName("User name")]
|
||||
public string UserName { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataType(DataType.EmailAddress)]
|
||||
[DisplayName("Email address")]
|
||||
public string Email { get; set; }
|
||||
|
||||
[Required]
|
||||
[ValidatePasswordLength]
|
||||
[DataType(DataType.Password)]
|
||||
[DisplayName("Password")]
|
||||
public string Password { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataType(DataType.Password)]
|
||||
[DisplayName("Confirm password")]
|
||||
public string ConfirmPassword { get; set; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
|
|
@ -82,6 +82,7 @@
|
|||
<ItemGroup>
|
||||
<Content Include="Global.asax" />
|
||||
<Content Include="Views\Series\index.aspx" />
|
||||
<Content Include="Views\Settings\Index.aspx" />
|
||||
<Content Include="Web.config">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
|
@ -117,7 +118,6 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="App_Data\" />
|
||||
<Folder Include="Views\Settings\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\NzbDrone.Core\NzbDrone.Core.csproj">
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<NzbDrone.Web.Models.SettingsModel>" %>
|
||||
<%@ Import Namespace="NzbDrone.Web.Controllers" %>
|
||||
|
||||
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
|
||||
Index
|
||||
</asp:Content>
|
||||
<asp:Content ID="General" ContentPlaceHolderID="MainContent" runat="server">
|
||||
<h2>
|
||||
Settings</h2>
|
||||
<% using (Html.BeginForm())
|
||||
{ %>
|
||||
<div>
|
||||
<fieldset>
|
||||
<legend>General</legend>
|
||||
<div class="editor-label">
|
||||
<%: Html.LabelFor(m => m.RootPath) %>
|
||||
</div>
|
||||
<div class="editor-field">
|
||||
<%: Html.TextBoxFor(m => m.RootPath) %>
|
||||
</div>
|
||||
<p>
|
||||
<input type="submit" value="Save" />
|
||||
</p>
|
||||
</fieldset>
|
||||
</div>
|
||||
<% } %>
|
||||
</asp:Content>
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
<ul id="menu">
|
||||
<li><%: Html.ActionLink("Home", "Index", "Home")%></li>
|
||||
<li><%: Html.ActionLink("About", "About", "Home")%></li>
|
||||
<li><%: Html.ActionLink("Settings", "Index", "Settings")%></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue