diff --git a/Logo/1024.png b/Logo/1024.png new file mode 100644 index 000000000..9979d55d4 Binary files /dev/null and b/Logo/1024.png differ diff --git a/Logo/128.png b/Logo/128.png new file mode 100644 index 000000000..ae8cf56c7 Binary files /dev/null and b/Logo/128.png differ diff --git a/Logo/16.png b/Logo/16.png new file mode 100644 index 000000000..00078bfdd Binary files /dev/null and b/Logo/16.png differ diff --git a/Logo/256.png b/Logo/256.png new file mode 100644 index 000000000..815750aa0 Binary files /dev/null and b/Logo/256.png differ diff --git a/Logo/32.png b/Logo/32.png new file mode 100644 index 000000000..a079d7afc Binary files /dev/null and b/Logo/32.png differ diff --git a/Logo/400.png b/Logo/400.png new file mode 100644 index 000000000..f445977bf Binary files /dev/null and b/Logo/400.png differ diff --git a/Logo/48.png b/Logo/48.png new file mode 100644 index 000000000..b4a009323 Binary files /dev/null and b/Logo/48.png differ diff --git a/Logo/512.png b/Logo/512.png new file mode 100644 index 000000000..36e87c0da Binary files /dev/null and b/Logo/512.png differ diff --git a/Logo/800.png b/Logo/800.png new file mode 100644 index 000000000..a0081ab5c Binary files /dev/null and b/Logo/800.png differ diff --git a/Logo/Square.psd b/Logo/Square.psd deleted file mode 100644 index 5780ca4c1..000000000 Binary files a/Logo/Square.psd and /dev/null differ diff --git a/src/NzbDrone.Core.Test/HealthCheck/Checks/RootFolderCheckFixture.cs b/src/NzbDrone.Core.Test/HealthCheck/Checks/RootFolderCheckFixture.cs new file mode 100644 index 000000000..668b7fa4c --- /dev/null +++ b/src/NzbDrone.Core.Test/HealthCheck/Checks/RootFolderCheckFixture.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using FizzWare.NBuilder; +using Moq; +using NUnit.Framework; +using NzbDrone.Common.Disk; +using NzbDrone.Core.HealthCheck.Checks; +using NzbDrone.Core.Test.Framework; +using NzbDrone.Core.Tv; + +namespace NzbDrone.Core.Test.HealthCheck.Checks +{ + [TestFixture] + public class RootFolderCheckFixture : CoreTest + { + private void GivenMissingRootFolder() + { + var series = Builder.CreateListOfSize(1) + .Build() + .ToList(); + + Mocker.GetMock() + .Setup(s => s.GetAllSeries()) + .Returns(series); + + Mocker.GetMock() + .Setup(s => s.GetParentFolder(series.First().Path)) + .Returns(@"C:\TV"); + + Mocker.GetMock() + .Setup(s => s.FolderExists(It.IsAny())) + .Returns(false); + } + + [Test] + public void should_not_return_error_when_no_series() + { + Mocker.GetMock() + .Setup(s => s.GetAllSeries()) + .Returns(new List()); + + Subject.Check().ShouldBeOk(); + } + + [Test] + public void should_return_error_if_series_parent_is_missing() + { + GivenMissingRootFolder(); + + Subject.Check().ShouldBeError(); + } + } +} diff --git a/src/NzbDrone.Core.Test/HealthCheck/Checks/UpdateCheckFixture.cs b/src/NzbDrone.Core.Test/HealthCheck/Checks/UpdateCheckFixture.cs index ed48675e4..7e6fd213c 100644 --- a/src/NzbDrone.Core.Test/HealthCheck/Checks/UpdateCheckFixture.cs +++ b/src/NzbDrone.Core.Test/HealthCheck/Checks/UpdateCheckFixture.cs @@ -1,8 +1,10 @@ using System; +using FluentAssertions; using Moq; using NUnit.Framework; using NzbDrone.Common.Disk; using NzbDrone.Common.EnvironmentInfo; +using NzbDrone.Core.HealthCheck; using NzbDrone.Core.HealthCheck.Checks; using NzbDrone.Core.Test.Framework; diff --git a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index 52e2d0867..82fc19ecc 100644 --- a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -125,6 +125,7 @@ + diff --git a/src/NzbDrone.Core.Test/ParserTests/QualityParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/QualityParserFixture.cs index aa8d13a37..0b4a71cf2 100644 --- a/src/NzbDrone.Core.Test/ParserTests/QualityParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/QualityParserFixture.cs @@ -1,5 +1,4 @@ using System; -using System.Linq; using FluentAssertions; using NUnit.Framework; using NzbDrone.Core.Qualities; @@ -105,6 +104,7 @@ namespace NzbDrone.Core.Test.ParserTests [TestCase("Sonny.With.a.Chance.S02E15.720p.WEB-DL.DD5.1.H.264-SURFER", false)] [TestCase("S07E23 - [WEBDL].mkv ", false)] [TestCase("Fringe S04E22 720p WEB-DL DD5.1 H264-EbP.mkv", false)] + [TestCase("House.S04.720p.Web-Dl.Dd5.1.h264-P2PACK", false)] public void should_parse_webdl720p_quality(string title, bool proper) { ParseAndVerifyQuality(title, Quality.WEBDL720p, proper); diff --git a/src/NzbDrone.Core/HealthCheck/Checks/RootFolderCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/RootFolderCheck.cs index 23c9c44a2..0c44b0947 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/RootFolderCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/RootFolderCheck.cs @@ -19,10 +19,10 @@ namespace NzbDrone.Core.HealthCheck.Checks public override HealthCheck Check() { var missingRootFolders = _seriesService.GetAllSeries() - .Select(s => _diskProvider.GetParentFolder(s.Path)) - .Distinct() - .Where(s => !_diskProvider.FolderExists(s)) - .ToList(); + .Select(s => _diskProvider.GetParentFolder(s.Path)) + .Distinct() + .Where(s => !_diskProvider.FolderExists(s)) + .ToList(); if (missingRootFolders.Any()) { diff --git a/src/NzbDrone.Core/IndexerSearch/SeriesSearchService.cs b/src/NzbDrone.Core/IndexerSearch/SeriesSearchService.cs index 9eca04157..e80480ef0 100644 --- a/src/NzbDrone.Core/IndexerSearch/SeriesSearchService.cs +++ b/src/NzbDrone.Core/IndexerSearch/SeriesSearchService.cs @@ -32,6 +32,12 @@ namespace NzbDrone.Core.IndexerSearch foreach (var season in series.Seasons) { + if (!season.Monitored) + { + _logger.Debug("Season {0} of {1} is not monitored, skipping seaarch", season.SeasonNumber, series.Title); + continue; + } + var decisions = _nzbSearchService.SeasonSearch(message.SeriesId, season.SeasonNumber); downloadedCount += _downloadApprovedReports.DownloadApproved(decisions).Count; } diff --git a/src/NzbDrone.Core/Notifications/NotificationService.cs b/src/NzbDrone.Core/Notifications/NotificationService.cs index e52dd1fac..ead495aaf 100644 --- a/src/NzbDrone.Core/Notifications/NotificationService.cs +++ b/src/NzbDrone.Core/Notifications/NotificationService.cs @@ -42,7 +42,7 @@ namespace NzbDrone.Core.Notifications var episodeTitles = String.Join(" + ", episodes.Select(e => e.Title)); - return String.Format("{0} - {1}{2} - {3} {4}", + return String.Format("{0} - {1}{2} - {3} [{4}]", series.Title, episodes.First().SeasonNumber, episodeNumbers, @@ -71,7 +71,7 @@ namespace NzbDrone.Core.Notifications public void Handle(EpisodeDownloadedEvent message) { var downloadMessage = new DownloadMessage(); - downloadMessage.Message = GetMessage(message.Episode.Series, message.Episode.Episodes, message.Episode.ParsedEpisodeInfo.Quality); + downloadMessage.Message = GetMessage(message.Episode.Series, message.Episode.Episodes, message.Episode.Quality); downloadMessage.Series = message.Episode.Series; downloadMessage.EpisodeFile = message.EpisodeFile; downloadMessage.OldFiles = message.OldFiles; diff --git a/src/NzbDrone.Update/UpdateApp.cs b/src/NzbDrone.Update/UpdateApp.cs index 582efd936..3691f6fce 100644 --- a/src/NzbDrone.Update/UpdateApp.cs +++ b/src/NzbDrone.Update/UpdateApp.cs @@ -88,12 +88,26 @@ namespace NzbDrone.Update return startupContext; } - if (args.Count() >= 3) + else if (args.Count() == 3) { startupContext.UpdateLocation = args[1]; startupContext.ExecutingApplication = args[2]; } + else + { + logger.Debug("Arguments:"); + + foreach (var arg in args) + { + logger.Debug(" {0}", arg); + } + + var message = String.Format("Number of arguments are unexpected, expected: 3, found: {0}", args.Count()); + + throw new ArgumentOutOfRangeException("args", message); + } + return startupContext; } diff --git a/src/UI/Calendar/calendar.less b/src/UI/Calendar/calendar.less index 2f7c715e8..3aedf3eef 100644 --- a/src/UI/Calendar/calendar.less +++ b/src/UI/Calendar/calendar.less @@ -119,7 +119,7 @@ } @media (min-width: @screen-md-min) { - width : 140px; + width : 135px; } } } diff --git a/src/UI/Cells/cells.less b/src/UI/Cells/cells.less index f9eefd46a..4105f32a1 100644 --- a/src/UI/Cells/cells.less +++ b/src/UI/Cells/cells.less @@ -5,11 +5,6 @@ @import "../Content/mixins"; @import "../Content/variables"; -.table { - - //table-layout: fixed; -} - .series-title { .text-overflow(); @@ -24,9 +19,10 @@ color: #428bca; text-decoration: none; - &.focus, &.hover { + &:focus, &:hover { color: #2a6496; text-decoration: underline; + cursor: pointer; } @media @lg { diff --git a/src/UI/Content/form.less b/src/UI/Content/form.less index 86ade923a..66bf13a81 100644 --- a/src/UI/Content/form.less +++ b/src/UI/Content/form.less @@ -87,3 +87,19 @@ h3 { margin-left: 0px; } } + +// Tooltips + +.help-inline-checkbox, .help-inline { + .tooltip-inner { + white-space : pre-wrap; + min-width : 200px; + } + + .help-link ~ .tooltip { + .tooltip-inner { + white-space : normal; + min-width : 0px; + } + } +} diff --git a/src/UI/Handlebars/Helpers/Episode.js b/src/UI/Handlebars/Helpers/Episode.js index ac4bb4e8a..dbe5ac499 100644 --- a/src/UI/Handlebars/Helpers/Episode.js +++ b/src/UI/Handlebars/Helpers/Episode.js @@ -47,7 +47,7 @@ define( Handlebars.registerHelper('EpisodeProgressClass', function () { if (this.episodeFileCount === this.episodeCount) { - if (this.continuing) { + if (this.status === 'continuing') { return ''; } diff --git a/src/UI/Rename/RenamePreviewItemViewTemplate.html b/src/UI/Rename/RenamePreviewItemViewTemplate.html index 17652e584..fb161d465 100644 --- a/src/UI/Rename/RenamePreviewItemViewTemplate.html +++ b/src/UI/Rename/RenamePreviewItemViewTemplate.html @@ -1,9 +1,9 @@ 
-
+