diff --git a/NzbDrone.Core/Providers/Core/ConfigProvider.cs b/NzbDrone.Core/Providers/Core/ConfigProvider.cs index 46811aa5c..8cb41e6ac 100644 --- a/NzbDrone.Core/Providers/Core/ConfigProvider.cs +++ b/NzbDrone.Core/Providers/Core/ConfigProvider.cs @@ -188,6 +188,30 @@ namespace NzbDrone.Core.Providers.Core set { SetValue("BlackholeDirectory", value); } } + public virtual bool SeriesName + { + get { return GetValueBoolean("Sorting_SeriesName", true); } + set { SetValue("Sorting_SeriesName", value); } + } + + public virtual bool EpisodeName + { + get { return GetValueBoolean("Sorting_EpisodeName", true); } + set { SetValue("Sorting_EpisodeName", value); } + } + + public virtual bool ReplaceSpaces + { + get { return GetValueBoolean("Sorting_ReplaceSpaces", true); } + set { SetValue("Sorting_ReplaceSpaces", value); } + } + + public virtual bool AppendQuality + { + get { return GetValueBoolean("Sorting_AppendQaulity", true); } + set { SetValue("Sorting_AppendQaulity", value); } + } + public virtual bool UseSeasonFolder { get { return GetValueBoolean("Sorting_SeasonFolder", true); } @@ -195,6 +219,30 @@ namespace NzbDrone.Core.Providers.Core set { SetValue("Sorting_SeasonFolder", value); } } + public virtual string SeasonFolderFormat + { + get { return GetValue("Sorting_SeasonFolderFormat", "Season %s", false); } + set { SetValue("Sorting_SeasonFolderFormat", value); } + } + + public virtual int SeparatorStyle + { + get { return GetValueInt("Sorting_SeparatorStyle"); } + set { SetValue("Sorting_SeparatorStyle", value); } + } + + public virtual int NumberStyle + { + get { return GetValueInt("Sorting_NumberStyle", 2); } + set { SetValue("Sorting_NumberStyle", value); } + } + + public virtual int MultiEpisodeStyle + { + get { return GetValueInt("Sorting_MultiEpisodeStyle"); } + set { SetValue("Sorting_MultiEpisodeStyle", value); } + } + public virtual int DefaultQualityProfile { get { return GetValueInt("DefaultQualityProfile", 1); } diff --git a/NzbDrone.Web/Content/Images/Loading.gif b/NzbDrone.Web/Content/Images/Loading.gif new file mode 100644 index 000000000..9e56cb6c1 Binary files /dev/null and b/NzbDrone.Web/Content/Images/Loading.gif differ diff --git a/NzbDrone.Web/Content/style.css b/NzbDrone.Web/Content/style.css index 35eb2eab2..a4aee9077 100644 --- a/NzbDrone.Web/Content/style.css +++ b/NzbDrone.Web/Content/style.css @@ -308,4 +308,30 @@ button, input[type="button"], input[type="submit"], input[type="reset"] width: 435px; display: block; height: 25px; -} \ No newline at end of file +} + +/* Loading Bar */ +.grid-container + { + position:relative; + margin:auto; + overflow:hidden; + } + + .grid-loader + { + position: absolute; + width: 100%; + height: 100%; + top: 400px; + left: 0px; + letter-spacing: -1px; + color: white; font: 48px Berlin Sans FB, Sans-Serif; + background: #4A4D4A; + padding: 20px; + filter:alpha(opacity=80); + -moz-opacity:0.8; + -khtml-opacity: 0.8; + opacity: 0.8; + line-height: 90% + } \ No newline at end of file diff --git a/NzbDrone.Web/Controllers/SettingsController.cs b/NzbDrone.Web/Controllers/SettingsController.cs index db8b0c3f6..26a627e89 100644 --- a/NzbDrone.Web/Controllers/SettingsController.cs +++ b/NzbDrone.Web/Controllers/SettingsController.cs @@ -182,16 +182,15 @@ namespace NzbDrone.Web.Controllers var model = new EpisodeSortingModel(); - model.ShowName = Convert.ToBoolean(_configProvider.GetValue("Sorting_ShowName", true, true)); - model.EpisodeName = Convert.ToBoolean(_configProvider.GetValue("Sorting_EpisodeName", true, true)); - model.ReplaceSpaces = Convert.ToBoolean(_configProvider.GetValue("Sorting_ReplaceSpaces", false, true)); - model.AppendQuality = Convert.ToBoolean(_configProvider.GetValue("Sorting_AppendQuality", false, true)); - model.UseAirByDate = Convert.ToBoolean(_configProvider.GetValue("Sorting_UseAirByDate", true, true)); + model.SeriesName = _configProvider.SeriesName; + model.EpisodeName = _configProvider.EpisodeName; + model.ReplaceSpaces = _configProvider.ReplaceSpaces; + model.AppendQuality = _configProvider.AppendQuality; model.SeasonFolders = _configProvider.UseSeasonFolder; - model.SeasonFolderFormat = _configProvider.GetValue("Sorting_SeasonFolderFormat", "Season %s", true); - model.SeparatorStyle = Convert.ToInt32(_configProvider.GetValue("Sorting_SeparatorStyle", 0, true)); - model.NumberStyle = Convert.ToInt32(_configProvider.GetValue("Sorting_NumberStyle", 2, true)); - model.MultiEpisodeStyle = Convert.ToInt32(_configProvider.GetValue("Sorting_MultiEpisodeStyle", 0, true)); + model.SeasonFolderFormat = _configProvider.SeasonFolderFormat; + model.SeparatorStyle = _configProvider.SeparatorStyle; + model.NumberStyle = _configProvider.NumberStyle; + model.MultiEpisodeStyle = _configProvider.MultiEpisodeStyle; model.SeparatorStyles = new SelectList(EpisodeSortingHelper.GetSeparatorStyles(), "Id", "Name"); model.NumberStyles = new SelectList(EpisodeSortingHelper.GetNumberStyles(), "Id", "Name"); @@ -535,16 +534,15 @@ namespace NzbDrone.Web.Controllers if (ModelState.IsValid) { - _configProvider.SetValue("Sorting_ShowName", data.ShowName.ToString()); - _configProvider.SetValue("Sorting_EpisodeName", data.EpisodeName.ToString()); - _configProvider.SetValue("Sorting_ReplaceSpaces", data.ReplaceSpaces.ToString()); - _configProvider.SetValue("Sorting_AppendQuality", data.AppendQuality.ToString()); - _configProvider.SetValue("Sorting_UseAirByDate", data.UseAirByDate.ToString()); - _configProvider.SetValue("Sorting_SeasonFolder", data.SeasonFolders.ToString()); - _configProvider.SetValue("Sorting_SeasonFolderFormat", data.SeasonFolderFormat); - _configProvider.SetValue("Sorting_SeparatorStyle", data.SeparatorStyle.ToString()); - _configProvider.SetValue("Sorting_NumberStyle", data.NumberStyle.ToString()); - _configProvider.SetValue("Sorting_MultiEpisodeStyle", data.MultiEpisodeStyle.ToString()); + _configProvider.SeriesName = data.SeriesName; + _configProvider.EpisodeName = data.EpisodeName; + _configProvider.ReplaceSpaces = data.ReplaceSpaces; + _configProvider.AppendQuality = data.AppendQuality; + _configProvider.UseSeasonFolder = data.SeasonFolders; + _configProvider.SeasonFolderFormat = data.SeasonFolderFormat; + _configProvider.SeparatorStyle = data.SeparatorStyle; + _configProvider.NumberStyle = data.NumberStyle; + _configProvider.MultiEpisodeStyle = data.MultiEpisodeStyle; basicNotification.Title = SETTINGS_SAVED; _notificationProvider.Register(basicNotification); diff --git a/NzbDrone.Web/Models/EpisodeSortingModel.cs b/NzbDrone.Web/Models/EpisodeSortingModel.cs index beaf0c216..0f21794c2 100644 --- a/NzbDrone.Web/Models/EpisodeSortingModel.cs +++ b/NzbDrone.Web/Models/EpisodeSortingModel.cs @@ -6,36 +6,41 @@ namespace NzbDrone.Web.Models { public class EpisodeSortingModel { - [DisplayName("Show Name")] - public bool ShowName { get; set; } + [DisplayName("Series Name")] + [Description("Should filenames contain the series name when renamed?")] + public bool SeriesName { get; set; } [DisplayName("Episode Name")] + [Description("Should filenames contain the episode name when renamed?")] public bool EpisodeName { get; set; } [DisplayName("Replace Spaces")] + [Description("Do you want to replace spaces in the filename with periods?")] public bool ReplaceSpaces { get; set; } [DisplayName("Append Quality")] + [Description("Should filenames have the quality appended to the end?")] public bool AppendQuality { get; set; } - [DisplayName("Use Air By Date")] - public bool UseAirByDate { get; set; } - [DisplayName("Use Season Folders")] + [Description("Should files be stored in season folders?")] public bool SeasonFolders { get; set; } [DisplayName("Season Folder Format")] [DisplayFormat(ConvertEmptyStringToNull = false)] - [Display(Description = "This is a Description")] + [Description("How should season folders be named? (Use %0s to pad to two digits)")] public string SeasonFolderFormat { get; set; } [DisplayName("Separator Style")] + [Description("How should NzbDrone separate sections of the filename?")] public int SeparatorStyle { get; set; } [DisplayName("Numbering Style")] + [Description("What numbering style do you want?")] public int NumberStyle { get; set; } [DisplayName("Multi-Episode Style")] + [Description("How will multi-episode files be named?")] public int MultiEpisodeStyle { get; set; } public SelectList SeparatorStyles { get; set; } diff --git a/NzbDrone.Web/Views/Series/Index.cshtml b/NzbDrone.Web/Views/Series/Index.cshtml index c507d856d..84ed0c13e 100644 --- a/NzbDrone.Web/Views/Series/Index.cshtml +++ b/NzbDrone.Web/Views/Series/Index.cshtml @@ -1,7 +1,7 @@ @using NzbDrone.Core.Repository; @using NzbDrone.Web.Models; @model IEnumerable - + @section TitleContent{ Series } @@ -11,38 +11,43 @@ } @section MainContent{ - @{Html.Telerik().Grid().Name("Grid") - .TableHtmlAttributes(new { @class = "Grid" }) - .DataKeys(keys => keys.Add(p => p.SeriesId)) - .DataBinding(data => data.Ajax() - .Select("_AjaxSeriesGrid", "Series") - .Update("_SaveAjaxSeriesEditing", "Series") - .Delete("_DeleteAjaxSeriesEditing", "Series")) - - .Columns(columns => - { - columns.Bound(o => o.Title) - .ClientTemplate("<#= Title #>"); - columns.Bound(o => o.SeasonsCount).Title("Seasons") - .ClientTemplate(", \'<#= Title #>\'); return false;\"><#= SeasonsCount #>"); - columns.Bound(o => o.QualityProfileName).Title("Quality"); - columns.Bound(o => o.Status); - columns.Bound(o => o.AirsDayOfWeek); - columns.Bound(o => o.Path); - columns.Command(commands => - { - commands.Edit().ButtonType(GridButtonType.Image); - commands.Delete().ButtonType(GridButtonType.Image); - }).Title("Actions").Width(80); +
+ @{Html.Telerik().Grid().Name("Grid") + .TableHtmlAttributes(new { @class = "Grid" }) + .DataKeys(keys => keys.Add(p => p.SeriesId)) + .DataBinding(data => data.Ajax() + .Select("_AjaxSeriesGrid", "Series") + .Update("_SaveAjaxSeriesEditing", "Series") + .Delete("_DeleteAjaxSeriesEditing", "Series")) + .Columns(columns => + { + columns.Bound(o => o.Title) + .ClientTemplate("<#= Title #>"); + columns.Bound(o => o.SeasonsCount).Title("Seasons") + .ClientTemplate(", \'<#= Title #>\'); return false;\"><#= SeasonsCount #>"); + columns.Bound(o => o.QualityProfileName).Title("Quality"); + columns.Bound(o => o.Status); + columns.Bound(o => o.AirsDayOfWeek); + columns.Bound(o => o.Path); + columns.Command(commands => + { + commands.Edit().ButtonType(GridButtonType.Image); + commands.Delete().ButtonType(GridButtonType.Image); + }).Title("Actions").Width(80); - }) - .Editable(editor => editor.Mode(GridEditMode.PopUp)) - .Sortable(sort => sort.OrderBy(order => order.Add(o => o.Title).Ascending()).Enabled(true)) - .DetailView(detailView => detailView.ClientTemplate("
<#= Overview #>
")) - .ClientEvents(clientEvents => clientEvents.OnEdit("grid_edit")) - .Render();} + }) + .Editable(editor => editor.Mode(GridEditMode.PopUp)) + .Sortable(sort => sort.OrderBy(order => order.Add(o => o.Title).Ascending()).Enabled(true)) + .DetailView(detailView => detailView.ClientTemplate("
<#= Overview #>
")) + .ClientEvents(clientEvents => { clientEvents.OnEdit("grid_edit"); + clientEvents.OnDataBinding("grid_bind"); + clientEvents.OnDataBound("grid_bound"); + }) + .Render();} + Loading Loading... +
} \ No newline at end of file