Merge remote-tracking branch 'origin/master' into dynamic-jobs
Conflicts: NzbDrone.Web/Scripts/NzbDrone/series.js
This commit is contained in:
commit
b21bf01bf0
|
@ -34,6 +34,24 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="FizzWare.NBuilder, Version=3.0.1.0, Culture=neutral, PublicKeyToken=5651b03e12e42c12, processorArchitecture=MSIL">
|
<Reference Include="FizzWare.NBuilder, Version=3.0.1.0, Culture=neutral, PublicKeyToken=5651b03e12e42c12, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll</HintPath>
|
<HintPath>..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll</HintPath>
|
||||||
|
|
|
@ -34,6 +34,24 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="FluentAssertions, Version=1.7.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
|
<Reference Include="FluentAssertions, Version=1.7.0.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
|
|
@ -34,6 +34,24 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Exceptioneer.WindowsFormsClient">
|
<Reference Include="Exceptioneer.WindowsFormsClient">
|
||||||
<HintPath>..\Libraries\Exceptioneer.WindowsFormsClient.dll</HintPath>
|
<HintPath>..\Libraries\Exceptioneer.WindowsFormsClient.dll</HintPath>
|
||||||
|
|
|
@ -34,6 +34,24 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Accessibility">
|
<Reference Include="Accessibility">
|
||||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||||
|
@ -129,6 +147,7 @@
|
||||||
<Compile Include="ProviderTests\ConfigProviderTests\ConfigCachingFixture.cs" />
|
<Compile Include="ProviderTests\ConfigProviderTests\ConfigCachingFixture.cs" />
|
||||||
<Compile Include="ProviderTests\BannerProviderTest.cs" />
|
<Compile Include="ProviderTests\BannerProviderTest.cs" />
|
||||||
<Compile Include="ProviderTests\DecisionEngineTests\AllowedReleaseGroupSpecificationFixture.cs" />
|
<Compile Include="ProviderTests\DecisionEngineTests\AllowedReleaseGroupSpecificationFixture.cs" />
|
||||||
|
<Compile Include="ProviderTests\DecisionEngineTests\CustomStartDateSpecificationFixture.cs" />
|
||||||
<Compile Include="ProviderTests\DiskScanProviderTests\CleanUpFixture.cs" />
|
<Compile Include="ProviderTests\DiskScanProviderTests\CleanUpFixture.cs" />
|
||||||
<Compile Include="ProviderTests\DiskScanProviderTests\CleanUpDropFolderFixture.cs" />
|
<Compile Include="ProviderTests\DiskScanProviderTests\CleanUpDropFolderFixture.cs" />
|
||||||
<Compile Include="ProviderTests\DiskScanProviderTests\GetVideoFilesFixture.cs" />
|
<Compile Include="ProviderTests\DiskScanProviderTests\GetVideoFilesFixture.cs" />
|
||||||
|
|
|
@ -52,6 +52,10 @@ namespace NzbDrone.Core.Test.ProviderTests.DecisionEngineTests
|
||||||
Mocker.GetMock<AllowedReleaseGroupSpecification>()
|
Mocker.GetMock<AllowedReleaseGroupSpecification>()
|
||||||
.Setup(c => c.IsSatisfiedBy(It.IsAny<EpisodeParseResult>()))
|
.Setup(c => c.IsSatisfiedBy(It.IsAny<EpisodeParseResult>()))
|
||||||
.Returns(true);
|
.Returns(true);
|
||||||
|
|
||||||
|
Mocker.GetMock<CustomStartDateSpecification>()
|
||||||
|
.Setup(c => c.IsSatisfiedBy(It.IsAny<EpisodeParseResult>()))
|
||||||
|
.Returns(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WithProfileNotAllowed()
|
private void WithProfileNotAllowed()
|
||||||
|
@ -89,6 +93,13 @@ namespace NzbDrone.Core.Test.ProviderTests.DecisionEngineTests
|
||||||
.Returns(false);
|
.Returns(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void WithAiredBeforeCustomStartDateCutoff()
|
||||||
|
{
|
||||||
|
Mocker.GetMock<CustomStartDateSpecification>()
|
||||||
|
.Setup(c => c.IsSatisfiedBy(It.IsAny<EpisodeParseResult>()))
|
||||||
|
.Returns(false);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_be_allowed_if_all_conditions_are_met()
|
public void should_be_allowed_if_all_conditions_are_met()
|
||||||
{
|
{
|
||||||
|
@ -130,6 +141,13 @@ namespace NzbDrone.Core.Test.ProviderTests.DecisionEngineTests
|
||||||
spec.IsSatisfiedBy(parseResult).Should().Be(ReportRejectionType.Retention);
|
spec.IsSatisfiedBy(parseResult).Should().Be(ReportRejectionType.Retention);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_not_be_allowed_if_episode_aired_before_cutoff()
|
||||||
|
{
|
||||||
|
WithAiredBeforeCustomStartDateCutoff();
|
||||||
|
spec.IsSatisfiedBy(parseResult).Should().Be(ReportRejectionType.AiredAfterCustomStartDate);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_be_allowed_if_none_of_conditions_are_met()
|
public void should_not_be_allowed_if_none_of_conditions_are_met()
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,145 @@
|
||||||
|
// ReSharper disable RedundantUsingDirective
|
||||||
|
|
||||||
|
using System.Linq;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using FizzWare.NBuilder;
|
||||||
|
using FluentAssertions;
|
||||||
|
using Moq;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Core.Model;
|
||||||
|
using NzbDrone.Core.Providers;
|
||||||
|
using NzbDrone.Core.Providers.DecisionEngine;
|
||||||
|
using NzbDrone.Core.Repository;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.ProviderTests.DecisionEngineTests
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
// ReSharper disable InconsistentNaming
|
||||||
|
public class CustomStartDateSpecificationFixture : CoreTest
|
||||||
|
{
|
||||||
|
private CustomStartDateSpecification _customStartDateSpecification;
|
||||||
|
|
||||||
|
private EpisodeParseResult parseResultMulti;
|
||||||
|
private EpisodeParseResult parseResultSingle;
|
||||||
|
private Series fakeSeries;
|
||||||
|
private Episode firstEpisode;
|
||||||
|
private Episode secondEpisode;
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void Setup()
|
||||||
|
{
|
||||||
|
_customStartDateSpecification = Mocker.Resolve<CustomStartDateSpecification>();
|
||||||
|
|
||||||
|
fakeSeries = Builder<Series>.CreateNew()
|
||||||
|
.With(c => c.Monitored = true)
|
||||||
|
.With(c => c.CustomStartDate = null)
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
parseResultMulti = new EpisodeParseResult
|
||||||
|
{
|
||||||
|
SeriesTitle = "Title",
|
||||||
|
Series = fakeSeries,
|
||||||
|
EpisodeNumbers = new List<int> { 3, 4 },
|
||||||
|
SeasonNumber = 12,
|
||||||
|
};
|
||||||
|
|
||||||
|
parseResultSingle = new EpisodeParseResult
|
||||||
|
{
|
||||||
|
SeriesTitle = "Title",
|
||||||
|
Series = fakeSeries,
|
||||||
|
EpisodeNumbers = new List<int> { 3 },
|
||||||
|
SeasonNumber = 12,
|
||||||
|
};
|
||||||
|
|
||||||
|
firstEpisode = new Episode { AirDate = DateTime.Today };
|
||||||
|
secondEpisode = new Episode { AirDate = DateTime.Today };
|
||||||
|
|
||||||
|
var singleEpisodeList = new List<Episode> { firstEpisode };
|
||||||
|
var doubleEpisodeList = new List<Episode> { firstEpisode, secondEpisode };
|
||||||
|
|
||||||
|
Mocker.GetMock<EpisodeProvider>().Setup(c => c.GetEpisodesByParseResult(parseResultSingle)).Returns(singleEpisodeList);
|
||||||
|
Mocker.GetMock<EpisodeProvider>().Setup(c => c.GetEpisodesByParseResult(parseResultMulti)).Returns(doubleEpisodeList);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void WithFirstEpisodeLastYear()
|
||||||
|
{
|
||||||
|
firstEpisode.AirDate = DateTime.Today.AddYears(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void WithSecondEpisodeYear()
|
||||||
|
{
|
||||||
|
secondEpisode.AirDate = DateTime.Today.AddYears(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void WithAiredAfterYesterday()
|
||||||
|
{
|
||||||
|
fakeSeries.CustomStartDate = DateTime.Today.AddDays(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void WithAiredAfterLastWeek()
|
||||||
|
{
|
||||||
|
fakeSeries.CustomStartDate = DateTime.Today.AddDays(-7);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_true_when_downloadEpisodesAiredAfter_is_null_for_single_episode()
|
||||||
|
{
|
||||||
|
_customStartDateSpecification.IsSatisfiedBy(parseResultSingle).Should().BeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_true_when_downloadEpisodesAiredAfter_is_null_for_multiple_episodes()
|
||||||
|
{
|
||||||
|
_customStartDateSpecification.IsSatisfiedBy(parseResultMulti).Should().BeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_true_if_both_episodes_air_after_cutoff()
|
||||||
|
{
|
||||||
|
WithAiredAfterLastWeek();
|
||||||
|
_customStartDateSpecification.IsSatisfiedBy(parseResultMulti).Should().BeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_true_if_episode_airs_after_cutoff()
|
||||||
|
{
|
||||||
|
WithAiredAfterLastWeek();
|
||||||
|
_customStartDateSpecification.IsSatisfiedBy(parseResultSingle).Should().BeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_true_if_first_episode_aired_after_cutoff()
|
||||||
|
{
|
||||||
|
WithAiredAfterLastWeek();
|
||||||
|
WithSecondEpisodeYear();
|
||||||
|
_customStartDateSpecification.IsSatisfiedBy(parseResultMulti).Should().BeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_true_if_second_episode_aired_after_cutoff()
|
||||||
|
{
|
||||||
|
WithAiredAfterLastWeek();
|
||||||
|
WithFirstEpisodeLastYear();
|
||||||
|
_customStartDateSpecification.IsSatisfiedBy(parseResultMulti).Should().BeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_false_if_both_episodes_aired_before_cutoff()
|
||||||
|
{
|
||||||
|
WithAiredAfterLastWeek();
|
||||||
|
WithFirstEpisodeLastYear();
|
||||||
|
WithSecondEpisodeYear();
|
||||||
|
_customStartDateSpecification.IsSatisfiedBy(parseResultMulti).Should().BeFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_false_if_episode_aired_before_cutoff()
|
||||||
|
{
|
||||||
|
WithAiredAfterLastWeek();
|
||||||
|
WithFirstEpisodeLastYear();
|
||||||
|
_customStartDateSpecification.IsSatisfiedBy(parseResultSingle).Should().BeFalse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -729,7 +729,7 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
//act
|
//act
|
||||||
var seriesProvider = Mocker.Resolve<SeriesProvider>();
|
var seriesProvider = Mocker.Resolve<SeriesProvider>();
|
||||||
|
|
||||||
seriesProvider.AddSeries("Test Series","c:\\test\\", tvDbSeriesId, 1);
|
seriesProvider.AddSeries("Test Series","c:\\test\\", tvDbSeriesId, 1, null);
|
||||||
|
|
||||||
var episodeProvider = Mocker.Resolve<EpisodeProvider>();
|
var episodeProvider = Mocker.Resolve<EpisodeProvider>();
|
||||||
episodeProvider.RefreshEpisodeInfo(seriesProvider.GetSeries(tvDbSeriesId));
|
episodeProvider.RefreshEpisodeInfo(seriesProvider.GetSeries(tvDbSeriesId));
|
||||||
|
|
|
@ -36,7 +36,7 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
|
|
||||||
//Act
|
//Act
|
||||||
var seriesProvider = Mocker.Resolve<SeriesProvider>();
|
var seriesProvider = Mocker.Resolve<SeriesProvider>();
|
||||||
seriesProvider.AddSeries(title, path, tvDbId, qualityProfileId);
|
seriesProvider.AddSeries(title, path, tvDbId, qualityProfileId, null);
|
||||||
|
|
||||||
//Assert
|
//Assert
|
||||||
var series = seriesProvider.GetAllSeries();
|
var series = seriesProvider.GetAllSeries();
|
||||||
|
@ -54,7 +54,7 @@ namespace NzbDrone.Core.Test.ProviderTests
|
||||||
public void add_series_should_fail_if_series_is_less_than_zero(int seriesId)
|
public void add_series_should_fail_if_series_is_less_than_zero(int seriesId)
|
||||||
{
|
{
|
||||||
WithRealDb();
|
WithRealDb();
|
||||||
Assert.Throws<ArgumentOutOfRangeException>(() => Mocker.Resolve<SeriesProvider>().AddSeries("Title", "C:\\Test", seriesId, 1));
|
Assert.Throws<ArgumentOutOfRangeException>(() => Mocker.Resolve<SeriesProvider>().AddSeries("Title", "C:\\Test", seriesId, 1, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using Migrator.Framework;
|
||||||
|
using NzbDrone.Common;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Datastore.Migrations
|
||||||
|
{
|
||||||
|
|
||||||
|
[Migration(20120918)]
|
||||||
|
public class Migration20120918 : NzbDroneMigration
|
||||||
|
{
|
||||||
|
protected override void MainDbUpgrade()
|
||||||
|
{
|
||||||
|
Database.AddColumn("Series", new Column("DownloadEpisodesAiredAfter", DbType.DateTime, ColumnProperty.Null));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using Migrator.Framework;
|
||||||
|
using NzbDrone.Common;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Datastore.Migrations
|
||||||
|
{
|
||||||
|
|
||||||
|
[Migration(20120919)]
|
||||||
|
public class Migration20120919 : NzbDroneMigration
|
||||||
|
{
|
||||||
|
protected override void MainDbUpgrade()
|
||||||
|
{
|
||||||
|
Database.AddColumn("Series", new Column("CustomStartDate", DbType.DateTime, ColumnProperty.Null));
|
||||||
|
|
||||||
|
Database.ExecuteNonQuery("UPDATE Series SET CustomStartDate = DownloadEpisodesAiredAfter");
|
||||||
|
|
||||||
|
Database.RemoveColumn("Series", "DownloadEpisodesAiredAfter");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,6 +17,7 @@ namespace NzbDrone.Core.Model
|
||||||
DownloadClientFailure = 10,
|
DownloadClientFailure = 10,
|
||||||
Skipped = 11,
|
Skipped = 11,
|
||||||
Failure = 12,
|
Failure = 12,
|
||||||
ReleaseGroupNotWanted = 13
|
ReleaseGroupNotWanted = 13,
|
||||||
|
AiredAfterCustomStartDate = 14
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -227,6 +227,8 @@
|
||||||
<Compile Include="Datastore\MigrationLogger.cs" />
|
<Compile Include="Datastore\MigrationLogger.cs" />
|
||||||
<Compile Include="Datastore\MigrationsHelper.cs" />
|
<Compile Include="Datastore\MigrationsHelper.cs" />
|
||||||
<Compile Include="Datastore\CustomeMapper.cs" />
|
<Compile Include="Datastore\CustomeMapper.cs" />
|
||||||
|
<Compile Include="Datastore\Migrations\Migration20120919.cs" />
|
||||||
|
<Compile Include="Datastore\Migrations\Migration20120918.cs" />
|
||||||
<Compile Include="Datastore\Migrations\Migration20120802.cs" />
|
<Compile Include="Datastore\Migrations\Migration20120802.cs" />
|
||||||
<Compile Include="Datastore\Migrations\Migration20120727.cs" />
|
<Compile Include="Datastore\Migrations\Migration20120727.cs" />
|
||||||
<Compile Include="Datastore\Migrations\Migration20120504.cs" />
|
<Compile Include="Datastore\Migrations\Migration20120504.cs" />
|
||||||
|
@ -291,6 +293,7 @@
|
||||||
<Compile Include="Model\Xbmc\IconType.cs" />
|
<Compile Include="Model\Xbmc\IconType.cs" />
|
||||||
<Compile Include="Providers\BannerProvider.cs" />
|
<Compile Include="Providers\BannerProvider.cs" />
|
||||||
<Compile Include="Providers\DecisionEngine\AllowedReleaseGroupSpecification.cs" />
|
<Compile Include="Providers\DecisionEngine\AllowedReleaseGroupSpecification.cs" />
|
||||||
|
<Compile Include="Providers\DecisionEngine\CustomStartDateSpecification.cs" />
|
||||||
<Compile Include="Providers\DownloadClients\PneumaticProvider.cs" />
|
<Compile Include="Providers\DownloadClients\PneumaticProvider.cs" />
|
||||||
<Compile Include="Providers\Indexer\NzbClub.cs" />
|
<Compile Include="Providers\Indexer\NzbClub.cs" />
|
||||||
<Compile Include="Providers\Indexer\NzbIndex.cs" />
|
<Compile Include="Providers\Indexer\NzbIndex.cs" />
|
||||||
|
|
|
@ -14,13 +14,14 @@ namespace NzbDrone.Core.Providers.DecisionEngine
|
||||||
private readonly AlreadyInQueueSpecification _alreadyInQueueSpecification;
|
private readonly AlreadyInQueueSpecification _alreadyInQueueSpecification;
|
||||||
private readonly RetentionSpecification _retentionSpecification;
|
private readonly RetentionSpecification _retentionSpecification;
|
||||||
private readonly AllowedReleaseGroupSpecification _allowedReleaseGroupSpecification;
|
private readonly AllowedReleaseGroupSpecification _allowedReleaseGroupSpecification;
|
||||||
|
private readonly CustomStartDateSpecification _customStartDateSpecification;
|
||||||
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
|
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
[Inject]
|
[Inject]
|
||||||
public AllowedDownloadSpecification(QualityAllowedByProfileSpecification qualityAllowedByProfileSpecification,
|
public AllowedDownloadSpecification(QualityAllowedByProfileSpecification qualityAllowedByProfileSpecification,
|
||||||
UpgradeDiskSpecification upgradeDiskSpecification, AcceptableSizeSpecification acceptableSizeSpecification,
|
UpgradeDiskSpecification upgradeDiskSpecification, AcceptableSizeSpecification acceptableSizeSpecification,
|
||||||
AlreadyInQueueSpecification alreadyInQueueSpecification, RetentionSpecification retentionSpecification,
|
AlreadyInQueueSpecification alreadyInQueueSpecification, RetentionSpecification retentionSpecification,
|
||||||
AllowedReleaseGroupSpecification allowedReleaseGroupSpecification)
|
AllowedReleaseGroupSpecification allowedReleaseGroupSpecification, CustomStartDateSpecification customStartDateSpecification)
|
||||||
{
|
{
|
||||||
_qualityAllowedByProfileSpecification = qualityAllowedByProfileSpecification;
|
_qualityAllowedByProfileSpecification = qualityAllowedByProfileSpecification;
|
||||||
_upgradeDiskSpecification = upgradeDiskSpecification;
|
_upgradeDiskSpecification = upgradeDiskSpecification;
|
||||||
|
@ -28,6 +29,7 @@ namespace NzbDrone.Core.Providers.DecisionEngine
|
||||||
_alreadyInQueueSpecification = alreadyInQueueSpecification;
|
_alreadyInQueueSpecification = alreadyInQueueSpecification;
|
||||||
_retentionSpecification = retentionSpecification;
|
_retentionSpecification = retentionSpecification;
|
||||||
_allowedReleaseGroupSpecification = allowedReleaseGroupSpecification;
|
_allowedReleaseGroupSpecification = allowedReleaseGroupSpecification;
|
||||||
|
_customStartDateSpecification = customStartDateSpecification;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AllowedDownloadSpecification()
|
public AllowedDownloadSpecification()
|
||||||
|
@ -37,6 +39,7 @@ namespace NzbDrone.Core.Providers.DecisionEngine
|
||||||
public virtual ReportRejectionType IsSatisfiedBy(EpisodeParseResult subject)
|
public virtual ReportRejectionType IsSatisfiedBy(EpisodeParseResult subject)
|
||||||
{
|
{
|
||||||
if (!_qualityAllowedByProfileSpecification.IsSatisfiedBy(subject)) return ReportRejectionType.QualityNotWanted;
|
if (!_qualityAllowedByProfileSpecification.IsSatisfiedBy(subject)) return ReportRejectionType.QualityNotWanted;
|
||||||
|
if (!_customStartDateSpecification.IsSatisfiedBy(subject)) return ReportRejectionType.AiredAfterCustomStartDate;
|
||||||
if (!_upgradeDiskSpecification.IsSatisfiedBy(subject)) return ReportRejectionType.ExistingQualityIsEqualOrBetter;
|
if (!_upgradeDiskSpecification.IsSatisfiedBy(subject)) return ReportRejectionType.ExistingQualityIsEqualOrBetter;
|
||||||
if (!_retentionSpecification.IsSatisfiedBy(subject)) return ReportRejectionType.Retention;
|
if (!_retentionSpecification.IsSatisfiedBy(subject)) return ReportRejectionType.Retention;
|
||||||
if (!_acceptableSizeSpecification.IsSatisfiedBy(subject)) return ReportRejectionType.Size;
|
if (!_acceptableSizeSpecification.IsSatisfiedBy(subject)) return ReportRejectionType.Size;
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
using System.Linq;
|
||||||
|
using NLog;
|
||||||
|
using Ninject;
|
||||||
|
using NzbDrone.Core.Model;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Providers.DecisionEngine
|
||||||
|
{
|
||||||
|
public class CustomStartDateSpecification
|
||||||
|
{
|
||||||
|
private readonly EpisodeProvider _episodeProvider;
|
||||||
|
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
[Inject]
|
||||||
|
public CustomStartDateSpecification(EpisodeProvider episodeProvider)
|
||||||
|
{
|
||||||
|
_episodeProvider = episodeProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CustomStartDateSpecification()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual bool IsSatisfiedBy(EpisodeParseResult subject)
|
||||||
|
{
|
||||||
|
if (!subject.Series.CustomStartDate.HasValue)
|
||||||
|
{
|
||||||
|
logger.Debug("{0} does not restrict downloads before date.", subject.Series.Title);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var episodes = _episodeProvider.GetEpisodesByParseResult(subject);
|
||||||
|
|
||||||
|
if (episodes.Any(episode => episode.AirDate > subject.Series.CustomStartDate.Value))
|
||||||
|
{
|
||||||
|
logger.Debug("One or more episodes aired after cutoff, downloading.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Debug("Episodes aired before cutoff date: {0}", subject.Series.CustomStartDate);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -110,7 +110,7 @@ namespace NzbDrone.Core.Providers
|
||||||
return series;
|
return series;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void AddSeries(string title, string path, int tvDbSeriesId, int qualityProfileId)
|
public virtual void AddSeries(string title, string path, int tvDbSeriesId, int qualityProfileId, DateTime? airedAfter)
|
||||||
{
|
{
|
||||||
Logger.Info("Adding Series [{0}] Path: [{1}]", tvDbSeriesId, path);
|
Logger.Info("Adding Series [{0}] Path: [{1}]", tvDbSeriesId, path);
|
||||||
|
|
||||||
|
@ -131,6 +131,9 @@ namespace NzbDrone.Core.Providers
|
||||||
repoSeries.SeasonFolder = _configProvider.UseSeasonFolder;
|
repoSeries.SeasonFolder = _configProvider.UseSeasonFolder;
|
||||||
repoSeries.BacklogSetting = BacklogSettingType.Inherit;
|
repoSeries.BacklogSetting = BacklogSettingType.Inherit;
|
||||||
|
|
||||||
|
if (airedAfter.HasValue)
|
||||||
|
repoSeries.CustomStartDate = airedAfter;
|
||||||
|
|
||||||
_database.Insert(repoSeries);
|
_database.Insert(repoSeries);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,6 +232,7 @@ namespace NzbDrone.Core.Providers
|
||||||
series.SeasonFolder = edited.SeasonFolder;
|
series.SeasonFolder = edited.SeasonFolder;
|
||||||
series.BacklogSetting = edited.BacklogSetting;
|
series.BacklogSetting = edited.BacklogSetting;
|
||||||
series.Path = edited.Path;
|
series.Path = edited.Path;
|
||||||
|
series.CustomStartDate = edited.CustomStartDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
_database.UpdateMany(allSeries);
|
_database.UpdateMany(allSeries);
|
||||||
|
|
|
@ -48,6 +48,8 @@ namespace NzbDrone.Core.Repository
|
||||||
|
|
||||||
public string Network { get; set; }
|
public string Network { get; set; }
|
||||||
|
|
||||||
|
public DateTime? CustomStartDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether this <see cref="Series"/> is hidden.
|
/// Gets or sets a value indicating whether this <see cref="Series"/> is hidden.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -335,6 +335,24 @@
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||||
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
|
||||||
|
|
|
@ -33,6 +33,24 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="FizzWare.NBuilder">
|
<Reference Include="FizzWare.NBuilder">
|
||||||
<HintPath>..\..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll</HintPath>
|
<HintPath>..\..\packages\NBuilder.3.0.1.1\lib\FizzWare.NBuilder.dll</HintPath>
|
||||||
|
|
|
@ -34,6 +34,24 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.Practices.ServiceLocation">
|
<Reference Include="Microsoft.Practices.ServiceLocation">
|
||||||
<HintPath>..\packages\CommonServiceLocator.1.0\lib\NET35\Microsoft.Practices.ServiceLocation.dll</HintPath>
|
<HintPath>..\packages\CommonServiceLocator.1.0\lib\NET35\Microsoft.Practices.ServiceLocation.dll</HintPath>
|
||||||
|
|
|
@ -34,6 +34,24 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\x86\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="FluentAssertions">
|
<Reference Include="FluentAssertions">
|
||||||
<HintPath>..\packages\FluentAssertions.1.7.0\Lib\net40\FluentAssertions.dll</HintPath>
|
<HintPath>..\packages\FluentAssertions.1.7.0\Lib\net40\FluentAssertions.dll</HintPath>
|
||||||
|
|
|
@ -68,10 +68,7 @@
|
||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.episodeMissing, table.dataTable tr.series-ended {
|
||||||
|
|
||||||
.episodeMissing
|
|
||||||
{
|
|
||||||
background-color: #f5d6d6;
|
background-color: #f5d6d6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,7 @@ hr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
input[type=text], select
|
input[type=text], input[type=date], select
|
||||||
{
|
{
|
||||||
font-size: small;
|
font-size: small;
|
||||||
padding: 2px 2px;
|
padding: 2px 2px;
|
||||||
|
@ -181,28 +181,18 @@ button span, input[type="button"] span, input[type="submit"] span, input[type="r
|
||||||
height: 25px;
|
height: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.dialog
|
.dialog
|
||||||
{
|
{
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.qualitySelector
|
.qualitySelector
|
||||||
{
|
{
|
||||||
min-width: 60px;
|
min-width: 60px;
|
||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#quickAdd
|
|
||||||
{
|
|
||||||
position: fixed;
|
|
||||||
top: 30px;
|
|
||||||
right: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#localSeriesLookup
|
#localSeriesLookup
|
||||||
{
|
{
|
||||||
width: 220px;
|
width: 220px;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.checkboxColumn {
|
.checkboxColumn {
|
||||||
width: 110px;
|
width: 50px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,12 +13,12 @@
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
table input[type="text"], table select {
|
table input[type="text"], table input[type="date"], table select {
|
||||||
margin: 2px 2px;
|
margin: 2px 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
td .path {
|
td .path {
|
||||||
width: 300px;
|
width: 290px;
|
||||||
}
|
}
|
||||||
|
|
||||||
td .backlogSetting {
|
td .backlogSetting {
|
||||||
|
@ -37,6 +37,19 @@ th .footer-control-quality {
|
||||||
width: 120px;
|
width: 120px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
td .start-date {
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
th .footer-control-boolean {
|
||||||
|
width: 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
th .footer-control-start-date {
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#stylized, .settingsForm {
|
#stylized, .settingsForm {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
p, h1, form, button
|
p, h1, form, button {
|
||||||
{
|
|
||||||
border: 0;
|
border: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
@ -9,21 +8,18 @@
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.spacer
|
.spacer {
|
||||||
{
|
|
||||||
clear: both;
|
clear: both;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.settingsForm
|
.settingsForm {
|
||||||
{
|
|
||||||
width: 620px;
|
width: 620px;
|
||||||
padding: 14px;
|
padding: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#stylized p
|
#stylized p {
|
||||||
{
|
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
color: #666666;
|
color: #666666;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
@ -31,8 +27,7 @@
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#stylized .labelClass
|
#stylized .labelClass {
|
||||||
{
|
|
||||||
display: block;
|
display: block;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
|
@ -41,8 +36,7 @@
|
||||||
margin-bottom: -10px;
|
margin-bottom: -10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#stylized .small
|
#stylized .small {
|
||||||
{
|
|
||||||
color: #666666;
|
color: #666666;
|
||||||
display: block;
|
display: block;
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
|
@ -51,8 +45,7 @@
|
||||||
width: 340px;
|
width: 340px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#stylized .inputClass
|
#stylized .inputClass {
|
||||||
{
|
|
||||||
float: left;
|
float: left;
|
||||||
padding: 2px 2px;
|
padding: 2px 2px;
|
||||||
border: solid 1px #aacfe4;
|
border: solid 1px #aacfe4;
|
||||||
|
@ -60,19 +53,16 @@
|
||||||
margin: 4px 0 20px 10px;
|
margin: 4px 0 20px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#stylized .selectClass
|
#stylized .selectClass {
|
||||||
{
|
|
||||||
width: 206px;
|
width: 206px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#stylized .checkClass
|
#stylized .checkClass {
|
||||||
{
|
|
||||||
margin: 12px 0px 20px 10px;
|
margin: 12px 0px 20px 10px;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#stylized button
|
#stylized button {
|
||||||
{
|
|
||||||
clear: both;
|
clear: both;
|
||||||
margin-left: 220px;
|
margin-left: 220px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
|
@ -85,8 +75,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#saveAjax
|
#saveAjax {
|
||||||
{
|
|
||||||
padding-left: 6px;
|
padding-left: 6px;
|
||||||
margin-bottom: -7px;
|
margin-bottom: -7px;
|
||||||
width: 20px;
|
width: 20px;
|
||||||
|
@ -94,24 +83,21 @@
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#save_button[disabled="disabled"]
|
#save_button[disabled="disabled"] {
|
||||||
{
|
|
||||||
padding: 0px 6px 0px 6px;
|
padding: 0px 6px 0px 6px;
|
||||||
border: 2px outset ButtonFace;
|
border: 2px outset ButtonFace;
|
||||||
color: lightgrey;
|
color: lightgrey;
|
||||||
cursor: progress;
|
cursor: progress;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ui-dialog-buttonset .ui-delete-button
|
.ui-dialog-buttonset .ui-delete-button {
|
||||||
{
|
|
||||||
background: url("jQueryUI/images/ui-bg_flat_30_b40404_40x100.png") repeat-x scroll 50% 50% #B40404;
|
background: url("jQueryUI/images/ui-bg_flat_30_b40404_40x100.png") repeat-x scroll 50% 50% #B40404;
|
||||||
border: 1px solid #FFFFFF;
|
border: 1px solid #FFFFFF;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ui-dialog-buttonset .ui-delete-button:active
|
.ui-dialog-buttonset .ui-delete-button:active {
|
||||||
{
|
|
||||||
background: url("jQueryUI/images/ui-bg_flat_30_616161_40x100.png") repeat-x scroll 50% 50% #616161;
|
background: url("jQueryUI/images/ui-bg_flat_30_616161_40x100.png") repeat-x scroll 50% 50% #616161;
|
||||||
border: 1px solid #FFFFFF;
|
border: 1px solid #FFFFFF;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Web.Mvc;
|
using System.Web.Mvc;
|
||||||
|
@ -43,11 +44,9 @@ namespace NzbDrone.Web.Controllers
|
||||||
_diskProvider = diskProvider;
|
_diskProvider = diskProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
public ActionResult Index()
|
||||||
public EmptyResult ScanNewSeries()
|
|
||||||
{
|
{
|
||||||
_jobProvider.QueueJob(typeof(ImportNewSeriesJob));
|
return View();
|
||||||
return new EmptyResult();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult AddNew()
|
public ActionResult AddNew()
|
||||||
|
@ -66,11 +65,6 @@ namespace NzbDrone.Web.Controllers
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult Index()
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ActionResult ExistingSeries()
|
public ActionResult ExistingSeries()
|
||||||
{
|
{
|
||||||
var result = new ExistingSeriesModel();
|
var result = new ExistingSeriesModel();
|
||||||
|
@ -116,7 +110,7 @@ namespace NzbDrone.Web.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public JsonResult AddNewSeries(string path, string seriesName, int seriesId, int qualityProfileId)
|
public JsonResult AddNewSeries(string path, string seriesName, int seriesId, int qualityProfileId, string startDate)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(path) || String.Equals(path,"null",StringComparison.InvariantCultureIgnoreCase))
|
if (string.IsNullOrWhiteSpace(path) || String.Equals(path,"null",StringComparison.InvariantCultureIgnoreCase))
|
||||||
return JsonNotificationResult.Error("Couldn't add " + seriesName, "You need a valid root folder");
|
return JsonNotificationResult.Error("Couldn't add " + seriesName, "You need a valid root folder");
|
||||||
|
@ -127,63 +121,27 @@ namespace NzbDrone.Web.Controllers
|
||||||
//Use the created folder name when adding the series
|
//Use the created folder name when adding the series
|
||||||
path = _diskProvider.CreateDirectory(path);
|
path = _diskProvider.CreateDirectory(path);
|
||||||
|
|
||||||
return AddExistingSeries(path, seriesName, seriesId, qualityProfileId);
|
return AddExistingSeries(path, seriesName, seriesId, qualityProfileId, startDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[JsonErrorFilter]
|
[JsonErrorFilter]
|
||||||
public JsonResult AddExistingSeries(string path, string seriesName, int seriesId, int qualityProfileId)
|
public JsonResult AddExistingSeries(string path, string seriesName, int seriesId, int qualityProfileId, string startDate)
|
||||||
{
|
{
|
||||||
if (seriesId == 0 || String.IsNullOrWhiteSpace(seriesName))
|
if (seriesId == 0 || String.IsNullOrWhiteSpace(seriesName))
|
||||||
return JsonNotificationResult.Error("Add Existing series failed.", "Invalid Series information");
|
return JsonNotificationResult.Error("Add Existing series failed.", "Invalid Series information");
|
||||||
|
|
||||||
_seriesProvider.AddSeries(seriesName,path, seriesId, qualityProfileId);
|
DateTime? date = null;
|
||||||
ScanNewSeries();
|
|
||||||
|
if (!String.IsNullOrWhiteSpace(startDate))
|
||||||
|
date = DateTime.Parse(startDate, null, DateTimeStyles.RoundtripKind);
|
||||||
|
|
||||||
|
_seriesProvider.AddSeries(seriesName,path, seriesId, qualityProfileId, date);
|
||||||
|
_jobProvider.QueueJob(typeof(ImportNewSeriesJob));
|
||||||
|
|
||||||
return JsonNotificationResult.Info(seriesName, "Was added successfully");
|
return JsonNotificationResult.Info(seriesName, "Was added successfully");
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
|
||||||
public JsonResult QuickAddNewSeries(string seriesName, int seriesId, int qualityProfileId)
|
|
||||||
{
|
|
||||||
var path = _rootFolderProvider.GetMostFreeRootDir();
|
|
||||||
path = Path.Combine(path, MediaFileProvider.CleanFilename(seriesName));
|
|
||||||
|
|
||||||
//Create the folder for the new series
|
|
||||||
//Use the created folder name when adding the series
|
|
||||||
path = _diskProvider.CreateDirectory(path);
|
|
||||||
|
|
||||||
return AddExistingSeries(path, seriesName, seriesId, qualityProfileId);
|
|
||||||
}
|
|
||||||
|
|
||||||
[ChildActionOnly]
|
|
||||||
public ActionResult QuickAdd()
|
|
||||||
{
|
|
||||||
var defaultQuality = _configProvider.DefaultQualityProfile;
|
|
||||||
var qualityProfiles = _qualityProvider.All();
|
|
||||||
|
|
||||||
ViewData["qualityProfiles"] = new SelectList(
|
|
||||||
qualityProfiles,
|
|
||||||
"QualityProfileId",
|
|
||||||
"Name",
|
|
||||||
defaultQuality);
|
|
||||||
|
|
||||||
return PartialView();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[HttpPost]
|
|
||||||
[JsonErrorFilter]
|
|
||||||
public JsonResult SaveRootDir(string path)
|
|
||||||
{
|
|
||||||
if (String.IsNullOrWhiteSpace(path))
|
|
||||||
JsonNotificationResult.Error("Can't add root folder", "Path can not be empty");
|
|
||||||
|
|
||||||
_rootFolderProvider.Add(new RootDir { Path = path });
|
|
||||||
|
|
||||||
return JsonNotificationResult.Info("Root Folder saved", "Root folder saved successfully.");
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public JsonResult LookupSeries(string term)
|
public JsonResult LookupSeries(string term)
|
||||||
{
|
{
|
||||||
|
@ -228,6 +186,18 @@ namespace NzbDrone.Web.Controllers
|
||||||
return PartialView("RootDir");
|
return PartialView("RootDir");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
[JsonErrorFilter]
|
||||||
|
public JsonResult SaveRootDir(string path)
|
||||||
|
{
|
||||||
|
if (String.IsNullOrWhiteSpace(path))
|
||||||
|
JsonNotificationResult.Error("Can't add root folder", "Path can not be empty");
|
||||||
|
|
||||||
|
_rootFolderProvider.Add(new RootDir { Path = path });
|
||||||
|
|
||||||
|
return JsonNotificationResult.Info("Root Folder saved", "Root folder saved successfully.");
|
||||||
|
}
|
||||||
|
|
||||||
[JsonErrorFilter]
|
[JsonErrorFilter]
|
||||||
public JsonResult DeleteRootDir(string path)
|
public JsonResult DeleteRootDir(string path)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Web.Mvc;
|
using System.Web.Mvc;
|
||||||
|
@ -44,7 +45,7 @@ namespace NzbDrone.Web.Controllers
|
||||||
return View((object)serialized);
|
return View((object)serialized);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult SingleSeriesEditor(int seriesId)
|
public ActionResult Edit(int seriesId)
|
||||||
{
|
{
|
||||||
var profiles = _qualityProvider.All();
|
var profiles = _qualityProvider.All();
|
||||||
ViewData["SelectList"] = new SelectList(profiles, "QualityProfileId", "Name");
|
ViewData["SelectList"] = new SelectList(profiles, "QualityProfileId", "Name");
|
||||||
|
@ -63,7 +64,7 @@ namespace NzbDrone.Web.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public EmptyResult SaveSingleSeriesEditor(SeriesModel seriesModel)
|
public EmptyResult Edit(SeriesModel seriesModel)
|
||||||
{
|
{
|
||||||
var series = _seriesProvider.GetSeries(seriesModel.SeriesId);
|
var series = _seriesProvider.GetSeries(seriesModel.SeriesId);
|
||||||
series.Monitored = seriesModel.Monitored;
|
series.Monitored = seriesModel.Monitored;
|
||||||
|
@ -72,6 +73,9 @@ namespace NzbDrone.Web.Controllers
|
||||||
series.Path = seriesModel.Path;
|
series.Path = seriesModel.Path;
|
||||||
series.BacklogSetting = (BacklogSettingType)seriesModel.BacklogSetting;
|
series.BacklogSetting = (BacklogSettingType)seriesModel.BacklogSetting;
|
||||||
|
|
||||||
|
if (!String.IsNullOrWhiteSpace(seriesModel.CustomStartDate))
|
||||||
|
series.CustomStartDate = DateTime.Parse(seriesModel.CustomStartDate, null, DateTimeStyles.RoundtripKind);
|
||||||
|
|
||||||
_seriesProvider.UpdateSeries(series);
|
_seriesProvider.UpdateSeries(series);
|
||||||
|
|
||||||
return new EmptyResult();
|
return new EmptyResult();
|
||||||
|
@ -166,19 +170,30 @@ namespace NzbDrone.Web.Controllers
|
||||||
masterBacklogList.Insert(0, new KeyValuePair<int, string>(-10, "Select..."));
|
masterBacklogList.Insert(0, new KeyValuePair<int, string>(-10, "Select..."));
|
||||||
ViewData["MasterBacklogSettingSelectList"] = new SelectList(masterBacklogList, "Key", "Value");
|
ViewData["MasterBacklogSettingSelectList"] = new SelectList(masterBacklogList, "Key", "Value");
|
||||||
|
|
||||||
var series = _seriesProvider.GetAllSeries().OrderBy(o => SortHelper.SkipArticles(o.Title));
|
var series = GetSeriesModels(_seriesProvider.GetAllSeries()).OrderBy(o => SortHelper.SkipArticles(o.Title));
|
||||||
|
|
||||||
return View(series);
|
return View(series);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public JsonResult SaveEditor(List<Series> series)
|
public JsonResult Editor(List<SeriesModel> series)
|
||||||
{
|
{
|
||||||
//Save edits
|
//Save edits
|
||||||
if (series == null || series.Count == 0)
|
if (series == null || series.Count == 0)
|
||||||
return JsonNotificationResult.Oops("Invalid post data");
|
return JsonNotificationResult.Oops("Invalid post data");
|
||||||
|
|
||||||
_seriesProvider.UpdateFromSeriesEditor(series);
|
_seriesProvider.UpdateFromSeriesEditor(series.Select(s => new Series
|
||||||
|
{
|
||||||
|
SeriesId = s.SeriesId,
|
||||||
|
QualityProfileId = s.QualityProfileId,
|
||||||
|
Monitored = s.Monitored,
|
||||||
|
SeasonFolder = s.SeasonFolder,
|
||||||
|
BacklogSetting = (BacklogSettingType)s.BacklogSetting,
|
||||||
|
Path = s.Path,
|
||||||
|
CustomStartDate = String.IsNullOrWhiteSpace(s.CustomStartDate) ? (DateTime?)null
|
||||||
|
: DateTime.Parse(s.CustomStartDate, null, DateTimeStyles.RoundtripKind)
|
||||||
|
}
|
||||||
|
).ToList());
|
||||||
return JsonNotificationResult.Info("Series Mass Edit Saved");
|
return JsonNotificationResult.Info("Series Mass Edit Saved");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,7 +219,8 @@ namespace NzbDrone.Web.Controllers
|
||||||
EpisodeFileCount = s.EpisodeFileCount,
|
EpisodeFileCount = s.EpisodeFileCount,
|
||||||
NextAiring = s.NextAiring == null ? String.Empty : s.NextAiring.Value.ToBestDateString(),
|
NextAiring = s.NextAiring == null ? String.Empty : s.NextAiring.Value.ToBestDateString(),
|
||||||
NextAiringSorter = s.NextAiring == null ? "12/31/9999" : s.NextAiring.Value.ToString("MM/dd/yyyy"),
|
NextAiringSorter = s.NextAiring == null ? "12/31/9999" : s.NextAiring.Value.ToString("MM/dd/yyyy"),
|
||||||
AirTime = s.AirTimes
|
AirTime = s.AirTimes,
|
||||||
|
CustomStartDate = s.CustomStartDate.HasValue ? s.CustomStartDate.Value.ToString("yyyy-MM-dd") : String.Empty
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
return series;
|
return series;
|
||||||
|
|
|
@ -52,5 +52,9 @@ namespace NzbDrone.Web.Models
|
||||||
[DisplayName("Backlog Setting")]
|
[DisplayName("Backlog Setting")]
|
||||||
[Description("Should NzbDrone search for missing episodes every 30 days?")]
|
[Description("Should NzbDrone search for missing episodes every 30 days?")]
|
||||||
public int BacklogSetting { get; set; }
|
public int BacklogSetting { get; set; }
|
||||||
|
|
||||||
|
[DisplayName("Custom Start Date")]
|
||||||
|
[Description("Should NzbDrone only download episodes after your preferred start date?")]
|
||||||
|
public string CustomStartDate { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -476,9 +476,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Settings\System.cshtml" />
|
<Content Include="Views\Settings\System.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="Views\Shared\QuickAdd.cshtml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Settings\Xbmc.cshtml" />
|
<Content Include="Views\Settings\Xbmc.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -534,7 +531,7 @@
|
||||||
<Content Include="Views\Series\Details.cshtml" />
|
<Content Include="Views\Series\Details.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Series\SingleSeriesEditor.cshtml" />
|
<Content Include="Views\Series\Edit.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Upcoming\UpcomingEpisode.cshtml" />
|
<Content Include="Views\Upcoming\UpcomingEpisode.cshtml" />
|
||||||
|
@ -559,9 +556,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Settings\MetadataPartial.cshtml" />
|
<Content Include="Views\Settings\MetadataPartial.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="Views\Shared\_MINIPROFILER UPDATED Layout.cshtml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Settings\Pneumatic.cshtml" />
|
<Content Include="Views\Settings\Pneumatic.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -569,6 +563,24 @@
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<OutputPath>bin\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>BasicCorrectnessRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<OutputPath>bin\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||||
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
|
||||||
|
|
|
@ -44,4 +44,10 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('.jQuery-datepicker').livequery(function () {
|
||||||
|
$(this).datepicker({
|
||||||
|
dateFormat: "yy-mm-dd"
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
|
@ -1,7 +1,6 @@
|
||||||
//URLs
|
//URLs
|
||||||
var addSeriesUrl = '../AddSeries/AddExistingSeries';
|
var addSeriesUrl = '../AddSeries/AddExistingSeries';
|
||||||
var addNewSeriesUrl = '../AddSeries/AddNewSeries';
|
var addNewSeriesUrl = '../AddSeries/AddNewSeries';
|
||||||
var quickAddNewSeriesUrl = '../AddSeries/QuickAddNewSeries';
|
|
||||||
var existingSeriesUrl = '../AddSeries/ExistingSeries';
|
var existingSeriesUrl = '../AddSeries/ExistingSeries';
|
||||||
var addNewUrl = '../AddSeries/AddNew';
|
var addNewUrl = '../AddSeries/AddNew';
|
||||||
|
|
||||||
|
@ -19,11 +18,14 @@ $(".masterQualitySelector").live('change', function () {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".addExistingButton").live('click', function() {
|
$(".addExistingButton").live('click', function () {
|
||||||
|
var button = $(this);
|
||||||
|
$(button).attr('disabled', 'disabled');
|
||||||
var root = $(this).parents(".existingSeries");
|
var root = $(this).parents(".existingSeries");
|
||||||
var title = $(this).siblings(".seriesLookup").val();
|
var title = $(this).siblings(".seriesLookup").val();
|
||||||
var seriesId = $(this).siblings(".seriesId").val();
|
var seriesId = $(this).siblings(".seriesId").val();
|
||||||
var qualityId = $(this).siblings(".qualitySelector").val();
|
var qualityId = $(this).siblings(".qualitySelector").val();
|
||||||
|
var date = $(this).siblings('.start-date').val();
|
||||||
|
|
||||||
var path = root.find(".seriesPathValue Label").text();
|
var path = root.find(".seriesPathValue Label").text();
|
||||||
|
|
||||||
|
@ -41,8 +43,9 @@ $(".addExistingButton").live('click', function() {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "POST",
|
type: "POST",
|
||||||
url: addSeriesUrl,
|
url: addSeriesUrl,
|
||||||
data: jQuery.param({ path: path, seriesName: title, seriesId: seriesId, qualityProfileId: qualityId }),
|
data: jQuery.param({ path: path, seriesName: title, seriesId: seriesId, qualityProfileId: qualityId, startDate: date }),
|
||||||
error: function(req, status, error) {
|
error: function (req, status, error) {
|
||||||
|
$(button).removeAttr('disabled');
|
||||||
alert("Sorry! We could not add " + path + " at this time. " + error);
|
alert("Sorry! We could not add " + path + " at this time. " + error);
|
||||||
},
|
},
|
||||||
success: function() {
|
success: function() {
|
||||||
|
@ -64,6 +67,14 @@ function reloadExistingSeries() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$(".start-date-master").live('change', function () {
|
||||||
|
|
||||||
|
var date = $(this).val();
|
||||||
|
$("#existingSeries").find(".start-date").each(function () {
|
||||||
|
$(this).val(date);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
//RootDir
|
//RootDir
|
||||||
//Delete RootDir
|
//Delete RootDir
|
||||||
$('#rootDirs .actionButton img').live('click', function (image) {
|
$('#rootDirs .actionButton img').live('click', function (image) {
|
||||||
|
@ -112,20 +123,26 @@ function refreshRoot() {
|
||||||
|
|
||||||
//AddNew
|
//AddNew
|
||||||
$('#saveNewSeries').live('click', function () {
|
$('#saveNewSeries').live('click', function () {
|
||||||
|
$('#saveNewSeries').attr('disabled', 'disabled');
|
||||||
|
|
||||||
var seriesTitle = $("#newSeriesLookup").val();
|
var seriesTitle = $("#newSeriesLookup").val();
|
||||||
var seriesId = $("#newSeriesId").val();
|
var seriesId = $("#newSeriesId").val();
|
||||||
var qualityId = $("#qualityList").val();
|
var qualityId = $("#qualityList").val();
|
||||||
var path = $('#newSeriesPath').val();
|
var path = $('#newSeriesPath').val();
|
||||||
|
var date = $('#newStartDate').val();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "POST",
|
type: "POST",
|
||||||
url: addNewSeriesUrl,
|
url: addNewSeriesUrl,
|
||||||
data: jQuery.param({ path: path, seriesName: seriesTitle, seriesId: seriesId, qualityProfileId: qualityId }),
|
data: jQuery.param({ path: path, seriesName: seriesTitle, seriesId: seriesId, qualityProfileId: qualityId, startDate: date }),
|
||||||
error: function (req, status, error) {
|
error: function (req, status, error) {
|
||||||
|
$('#saveNewSeries').removeAttr('disabled');
|
||||||
alert("Sorry! We could not add " + path + " at this time. " + error);
|
alert("Sorry! We could not add " + path + " at this time. " + error);
|
||||||
},
|
},
|
||||||
success: function () {
|
success: function () {
|
||||||
$("#newSeriesLookup").val("");
|
$('#saveNewSeries').removeAttr('disabled');
|
||||||
|
$("#newSeriesLookup").val('');
|
||||||
|
$('#newStartDate').val('');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -140,27 +157,6 @@ function reloadAddNew() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//QuickAddNew
|
|
||||||
$('#quickAddNew').live('click', function () {
|
|
||||||
var seriesTitle = $("#newSeriesLookup").val();
|
|
||||||
var seriesId = $("#newSeriesId").val();
|
|
||||||
var qualityId = $("#qualityList").val();
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
type: "POST",
|
|
||||||
url: quickAddNewSeriesUrl,
|
|
||||||
data: jQuery.param({ seriesName: seriesTitle, seriesId: seriesId, qualityProfileId: qualityId }),
|
|
||||||
error: function (req, status, error) {
|
|
||||||
alert("Sorry! We could not add " + path + " at this time. " + error);
|
|
||||||
},
|
|
||||||
success: function () {
|
|
||||||
$("#newSeriesLookup").val("");
|
|
||||||
$('#newSeriesPath').val("");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
//Watermark
|
//Watermark
|
||||||
$('#rootDirInput').livequery(function () {
|
$('#rootDirInput').livequery(function () {
|
||||||
$(this).watermark('Enter your new root folder path...');
|
$(this).watermark('Enter your new root folder path...');
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
var seriesEditorUrl = '../Series/SingleSeriesEditor';
|
var seriesEditorUrl = '../Series/Edit';
|
||||||
var saveSeriesEditorUrl = '../Series/SaveSingleSeriesEditor';
|
var saveSeriesEditorUrl = '../Series/Edit';
|
||||||
var seriesDeleteUrl = '../Series/Delete';
|
var seriesDeleteUrl = '../Series/Delete';
|
||||||
|
|
||||||
$("#seriesEditor").dialog({
|
$("#seriesEditor").dialog({
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
</div>
|
</div>
|
||||||
@Html.DropDownList("newSeriesPath", new SelectList((IList)ViewData["RootDirs"]), new { style = "width: 406px; margin-left: 0px;" })
|
@Html.DropDownList("newSeriesPath", new SelectList((IList)ViewData["RootDirs"]), new { style = "width: 406px; margin-left: 0px;" })
|
||||||
@Html.DropDownList("qualityList", (SelectList)ViewData["QualityProfiles"], new { @class = "qualitySelector" })
|
@Html.DropDownList("qualityList", (SelectList)ViewData["QualityProfiles"], new { @class = "qualitySelector" })
|
||||||
|
@Html.TextBox("newStartDate", "", new { type = "date", @class = "jQuery-datepicker start-date", placeholder = "Custom Start Date", title = "Only download episodes that aired after the specified date" })
|
||||||
<button id="saveNewSeries">
|
<button id="saveNewSeries">
|
||||||
Add</button>
|
Add</button>
|
||||||
</div>
|
</div>
|
|
@ -23,6 +23,8 @@ else
|
||||||
{
|
{
|
||||||
@Html.DropDownList(Guid.NewGuid().ToString(), Model.Quality, new { @class = "qualitySelector masterQualitySelector" })
|
@Html.DropDownList(Guid.NewGuid().ToString(), Model.Quality, new { @class = "qualitySelector masterQualitySelector" })
|
||||||
|
|
||||||
|
@Html.TextBox(Guid.NewGuid().ToString(), "", new { type="date", @class = "jQuery-datepicker start-date-master", placeholder = "Custom Start Date", title = "Only download episodes that aired after the specified date" })
|
||||||
|
|
||||||
foreach (var series in Model.ExistingSeries)
|
foreach (var series in Model.ExistingSeries)
|
||||||
{
|
{
|
||||||
<div class="existingSeries">
|
<div class="existingSeries">
|
||||||
|
@ -30,9 +32,10 @@ else
|
||||||
<label>@series.Item1</label>
|
<label>@series.Item1</label>
|
||||||
</span>
|
</span>
|
||||||
<div class="existingSeriesContainer">
|
<div class="existingSeriesContainer">
|
||||||
<input class="seriesLookup" type="text" style="width: 400px;" value="@series.Item2" />
|
<input class="seriesLookup" type="text" style="width: 400px;" value="@series.Item2" placeholder="Series Title" />
|
||||||
@Html.Hidden("seriesId", series.Item3, new { @class = "seriesId" })
|
@Html.Hidden("seriesId", series.Item3, new { @class = "seriesId" })
|
||||||
@Html.DropDownList(Guid.NewGuid().ToString(), Model.Quality, new { @class = "qualitySelector" })
|
@Html.DropDownList(Guid.NewGuid().ToString(), Model.Quality, new { @class = "qualitySelector" })
|
||||||
|
@Html.TextBox(Guid.NewGuid().ToString(), "", new { type="date", @class = "jQuery-datepicker start-date", placeholder = "Custom Start Date", title = "Only download episodes that aired after the specified date" })
|
||||||
<button class="addExistingButton">
|
<button class="addExistingButton">
|
||||||
Add</button>
|
Add</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -20,6 +20,11 @@
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.start-date-master {
|
||||||
|
left: 430px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
.seriesPathValue
|
.seriesPathValue
|
||||||
{
|
{
|
||||||
display: block;
|
display: block;
|
||||||
|
@ -45,6 +50,10 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input[type=date].start-date {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div id="stylized" style="border-color: transparent;">
|
<div id="stylized" style="border-color: transparent;">
|
||||||
@using (Html.BeginForm("SaveSingleSeriesEditor", "Series", FormMethod.Post, new { id = "SeriesEditorForm", name = "SeriesEditorForm", @class = "settingsForm" }))
|
@using (Html.BeginForm("Edit", "Series", FormMethod.Post, new { id = "SeriesEditorForm", name = "SeriesEditorForm", @class = "settingsForm" }))
|
||||||
{
|
{
|
||||||
@Html.HiddenFor(m => m.SeriesId)
|
@Html.HiddenFor(m => m.SeriesId)
|
||||||
@Html.HiddenFor(m => m.Status)
|
@Html.HiddenFor(m => m.Status)
|
||||||
|
@ -36,5 +36,10 @@
|
||||||
<span class="small">@Html.DescriptionFor(m => m.BacklogSetting)</span>
|
<span class="small">@Html.DescriptionFor(m => m.BacklogSetting)</span>
|
||||||
</label>
|
</label>
|
||||||
@Html.DropDownListFor(m => m.BacklogSetting, (SelectList)ViewData["BacklogSettingSelectList"], new { @class = "inputClass" })
|
@Html.DropDownListFor(m => m.BacklogSetting, (SelectList)ViewData["BacklogSettingSelectList"], new { @class = "inputClass" })
|
||||||
|
|
||||||
|
<label class="labelClass">@Html.LabelFor(m => m.CustomStartDate)
|
||||||
|
<span class="small">@Html.DescriptionFor(m => m.CustomStartDate)</span>
|
||||||
|
</label>
|
||||||
|
@Html.TextBoxFor(m => m.CustomStartDate, new { type = "date", @class = "inputClass jQuery-datepicker" })
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
|
@ -1,5 +1,5 @@
|
||||||
@using NzbDrone.Web.Helpers
|
@using NzbDrone.Web.Helpers
|
||||||
@model IEnumerable<NzbDrone.Core.Repository.Series>
|
@model IEnumerable<NzbDrone.Web.Models.SeriesModel>
|
||||||
@{ViewBag.Title = "Series Editor";}
|
@{ViewBag.Title = "Series Editor";}
|
||||||
|
|
||||||
@section HeaderContent
|
@section HeaderContent
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
}
|
}
|
||||||
|
|
||||||
@using (Html.BeginForm("SaveEditor", "Series", FormMethod.Post, new { id = "SeriesEditor", name = "SeriesEditor" }))
|
@using (Html.BeginForm("Editor", "Series", FormMethod.Post, new { id = "SeriesEditor", name = "SeriesEditor" }))
|
||||||
{
|
{
|
||||||
<table id="seriesEditorGrid" class="dataTable dataTablesGrid no-details">
|
<table id="seriesEditorGrid" class="dataTable dataTablesGrid no-details">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -24,10 +24,12 @@
|
||||||
<th width="14px">@Html.CheckBox("editToggleMaster", false, new { @class = "editToggleMaster" })</th>
|
<th width="14px">@Html.CheckBox("editToggleMaster", false, new { @class = "editToggleMaster" })</th>
|
||||||
<th>Title</th>
|
<th>Title</th>
|
||||||
<th width="125px;">Quality</th>
|
<th width="125px;">Quality</th>
|
||||||
<th class="checkboxColumn">Monitored</th>
|
<th width="90px">Monitored</th>
|
||||||
<th class="checkboxColumn">Season Folder</th>
|
<th width="110px">Season Folder</th>
|
||||||
<th width="100px">Backlog Status</th>
|
<th width="110px">Backlog Status</th>
|
||||||
<th width="310px">Path</th>
|
<th width="80px" title="Custom Start Date">Start Date</th>
|
||||||
|
<th width="300px">Path</th>
|
||||||
|
<th style="width: 10px"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
|
@ -46,22 +48,30 @@
|
||||||
@Html.DropDownList("masterQualitySelector", (SelectList)ViewData["MasterProfileSelectList"], new { @class = "footer-control-quality masterSelector master-quality", disabled = true })
|
@Html.DropDownList("masterQualitySelector", (SelectList)ViewData["MasterProfileSelectList"], new { @class = "footer-control-quality masterSelector master-quality", disabled = true })
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
@Html.DropDownList("masterMonitored", (SelectList)ViewData["BoolSelectList"], new { @class = "footer-control masterSelector master-monitored", disabled = true })
|
@Html.DropDownList("masterMonitored", (SelectList)ViewData["BoolSelectList"], new { @class = "footer-control-boolean masterSelector master-monitored", disabled = true })
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
@Html.DropDownList("masterSeasonFolder", (SelectList)ViewData["BoolSelectList"], new { @class = "footer-control masterSelector master-season-folder", disabled = true })
|
@Html.DropDownList("masterSeasonFolder", (SelectList)ViewData["BoolSelectList"], new { @class = "footer-control-boolean masterSelector master-season-folder", disabled = true })
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
@Html.DropDownList("masterBacklogSetting", (SelectList)ViewData["MasterBacklogSettingSelectList"], new { @class = "footer-control masterSelector master-backlog-setting", disabled = true })
|
@Html.DropDownList("masterBacklogSetting", (SelectList)ViewData["MasterBacklogSettingSelectList"], new { @class = "footer-control masterSelector master-backlog-setting", disabled = true })
|
||||||
</th>
|
</th>
|
||||||
|
<th>
|
||||||
|
@Html.TextBox("masterStartDate", "" , new { type = "date", @class = "footer-control-start-date masterSelector master-start-date jQuery-datepicker", disabled = true })
|
||||||
|
</th>
|
||||||
<th>
|
<th>
|
||||||
<button id="series-editor-save" type="submit" class="save_button" disabled="disabled" title="Commit the settings from your series above to the database">
|
<button id="series-editor-save" type="submit" class="save_button" disabled="disabled" title="Commit the settings from your series above to the database">
|
||||||
Save Changes
|
Save Changes
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
@Html.CheckBox("highlightEnded", true)
|
||||||
|
<label for="highlightEnded">Highlight Ended</label>
|
||||||
}
|
}
|
||||||
|
|
||||||
@section Scripts
|
@section Scripts
|
||||||
|
@ -75,19 +85,70 @@
|
||||||
"bPaginate": false,
|
"bPaginate": false,
|
||||||
"bLengthChange": false,
|
"bLengthChange": false,
|
||||||
"bFilter": false,
|
"bFilter": false,
|
||||||
"bSort": false,
|
"bSort": true,
|
||||||
"bInfo": false,
|
"bInfo": false,
|
||||||
"bAutoWidth": false
|
"bAutoWidth": false,
|
||||||
|
"aaSorting": [[1, 'asc']],
|
||||||
|
"aoColumns": [
|
||||||
|
{ "bSortable": false },
|
||||||
|
{ "bSortable": true },
|
||||||
|
{ "bSortable": false },
|
||||||
|
{ "bSortable": false },
|
||||||
|
{ "bSortable": false },
|
||||||
|
{ "bSortable": false },
|
||||||
|
{ "bSortable": false },
|
||||||
|
{ "bSortable": false },
|
||||||
|
{ "bSortable": true }
|
||||||
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
new FixedHeader(oTable, { "top": true, "left": false, "right": false, "bottom": true });
|
new FixedHeader(oTable, { "top": true, "left": false, "right": false, "bottom": true });
|
||||||
|
|
||||||
$('.editToggle').enableCheckboxRangeSelection();
|
$('.editToggle').enableCheckboxRangeSelection();
|
||||||
|
|
||||||
//$('.master-quality option[value=-10]').text('Quality...');
|
$(document).ready(function () {
|
||||||
//$('.master-monitored option[value=-10]').text('Monitored...');
|
var cookieValue = $.cookie("highlightEnded");
|
||||||
//$('.master-season-folder option[value=-10]').text('Season Folder...');
|
|
||||||
//$('.master-backlog-setting option[value=-10]').text('Backlog Setting...');
|
if (cookieValue == "true") {
|
||||||
|
$('#highlightEnded').attr('checked', true);
|
||||||
|
toggleHighlightEnded(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
$('#highlightEnded').attr('checked', false);
|
||||||
|
toggleHighlightEnded(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#highlightEnded').button();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#highlightEnded').on('change', function () {
|
||||||
|
var checked = $(this).attr('checked');
|
||||||
|
toggleHighlightEnded(checked);
|
||||||
|
toggleHighlightEndedCookie(checked);
|
||||||
|
});
|
||||||
|
|
||||||
|
function toggleHighlightEnded(highlight) {
|
||||||
|
var ended = $('tr[data-status="Ended"]');
|
||||||
|
|
||||||
|
ended.each(function () {
|
||||||
|
if (highlight) {
|
||||||
|
$(this).addClass('series-ended');
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
$(this).removeClass('series-ended');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleHighlightEndedCookie(highlight) {
|
||||||
|
if (highlight)
|
||||||
|
$.cookie("highlightEnded", true, { expires: 365 });
|
||||||
|
|
||||||
|
else
|
||||||
|
$.cookie("highlightEnded", false, { expires: 365 });
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('change', '.editToggleMaster', function () {
|
$(document).on('change', '.editToggleMaster', function () {
|
||||||
|
@ -180,6 +241,16 @@
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '#masterStartDate', function () {
|
||||||
|
var startDate = $(this).val();
|
||||||
|
|
||||||
|
var selected = $('.editToggle:checked');
|
||||||
|
|
||||||
|
selected.each(function () {
|
||||||
|
$(this).parent('td').parent('.seriesEditRow').find('.start-date').val(startDate);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
$(document).on('click', '#series-editor-save', function () {
|
$(document).on('click', '#series-editor-save', function () {
|
||||||
$('#SeriesEditor').submit();
|
$('#SeriesEditor').submit();
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
@model NzbDrone.Core.Repository.Series
|
@model NzbDrone.Web.Models.SeriesModel
|
||||||
@using NzbDrone.Core.Model
|
@using NzbDrone.Core.Model
|
||||||
@using NzbDrone.Core.Repository.Quality
|
@using NzbDrone.Core.Repository.Quality
|
||||||
@using NzbDrone.Web.Helpers
|
@using NzbDrone.Web.Helpers
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
@*SeriesId, Title, Quality, Monitored, Use Season Folder, Root Directory/Path*, Backlog Toggle*@
|
@*SeriesId, Title, Quality, Monitored, Use Season Folder, Root Directory/Path*, Backlog Toggle*@
|
||||||
|
|
||||||
<tr class="seriesEditRow">
|
<tr class="seriesEditRow" data-status="@Model.Status">
|
||||||
@using (Html.BeginCollectionItem("series"))
|
@using (Html.BeginCollectionItem("series"))
|
||||||
{
|
{
|
||||||
var idClean = ViewData.TemplateInfo.HtmlFieldPrefix.Replace('[', '_').Replace(']', '_');
|
var idClean = ViewData.TemplateInfo.HtmlFieldPrefix.Replace('[', '_').Replace(']', '_');
|
||||||
|
@ -21,6 +21,18 @@
|
||||||
<td class="checkboxColumn">@Html.CheckBoxFor(m => m.Monitored, new {@class = "seriesCheckbox monitored"})</td>
|
<td class="checkboxColumn">@Html.CheckBoxFor(m => m.Monitored, new {@class = "seriesCheckbox monitored"})</td>
|
||||||
<td class="checkboxColumn">@Html.CheckBoxFor(m => m.SeasonFolder, new {@class = "seriesCheckbox seasonFolder"})</td>
|
<td class="checkboxColumn">@Html.CheckBoxFor(m => m.SeasonFolder, new {@class = "seriesCheckbox seasonFolder"})</td>
|
||||||
<td>@Html.DropDownListFor(m => m.BacklogSetting, new SelectList((List<KeyValuePair<int, string>>)ViewData["BacklogSettingTypes"], "Key", "Value", (int)Model.BacklogSetting), new { @class = "backlogSetting" })</td>
|
<td>@Html.DropDownListFor(m => m.BacklogSetting, new SelectList((List<KeyValuePair<int, string>>)ViewData["BacklogSettingTypes"], "Key", "Value", (int)Model.BacklogSetting), new { @class = "backlogSetting" })</td>
|
||||||
|
<td>@Html.TextBoxFor(m => m.CustomStartDate, new { type = "date", @class = "start-date jQuery-datepicker" })</td>
|
||||||
<td>@Html.TextBoxFor(m => m.Path, new { @class = "path" })</td>
|
<td>@Html.TextBoxFor(m => m.Path, new { @class = "path" })</td>
|
||||||
|
<td>
|
||||||
|
@if (Model.Status == "Ended")
|
||||||
|
{
|
||||||
|
<img src="../../Content/Images/stop.png" width="24" height="24" alt="Ended" title="Ended" />
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<img src="../../Content/Images/play.png" width="24" height="24" alt="Active" title="Continuing" />
|
||||||
|
}
|
||||||
|
</td>
|
||||||
}
|
}
|
||||||
</tr>
|
</tr>
|
|
@ -1,15 +0,0 @@
|
||||||
@using System.Collections
|
|
||||||
@using NzbDrone.Core
|
|
||||||
<div id="quickAdd">
|
|
||||||
<input id="quickSeriesLookup" class="seriesLookup" type="text" style="width: 400px" />
|
|
||||||
@Html.Hidden("newSeriesId", 0, new { @class = "seriesId" })
|
|
||||||
@Html.DropDownList("qualityList", (SelectList)ViewData["QualityProfiles"], new { @class = "qualitySelector" })
|
|
||||||
<button id="quickAddNew">Add</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
jQuery(document).ready(function () {
|
|
||||||
//AddNew
|
|
||||||
$('#quickSeriesLookup').watermark('Title of the series you want to add...');
|
|
||||||
});
|
|
||||||
</script>
|
|
|
@ -1,45 +0,0 @@
|
||||||
@* Required so you have extention methods for client timings *@
|
|
||||||
@using StackExchange.Profiling;
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
@* optional (enable client timing framework) *@
|
|
||||||
@this.InitClientTimings()
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<title>@ViewBag.Title</title>
|
|
||||||
|
|
||||||
@* optional time scripts in the header *@
|
|
||||||
@this.TimeScript("Content Site.css",
|
|
||||||
@<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />)
|
|
||||||
@this.TimeScript("jQuery 1.5.1",
|
|
||||||
@<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>)
|
|
||||||
@this.TimeScript("modernizr",
|
|
||||||
@<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>)
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="page">
|
|
||||||
<header>
|
|
||||||
<div id="title">
|
|
||||||
<h1>My MVC Application</h1>
|
|
||||||
</div>
|
|
||||||
<div id="logindisplay">
|
|
||||||
@Html.Partial("_LogOnPartial")
|
|
||||||
</div>
|
|
||||||
<nav>
|
|
||||||
<ul id="menu">
|
|
||||||
<li>@Html.ActionLink("Home", "Index", "Home")</li>
|
|
||||||
<li>@Html.ActionLink("About", "About", "Home")</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</header>
|
|
||||||
<section id="main">
|
|
||||||
@RenderBody()
|
|
||||||
</section>
|
|
||||||
<footer>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
@* Make sure you've added this one line to your LAYOUT or MASTER PAGE *@
|
|
||||||
@MiniProfiler.RenderIncludes()
|
|
||||||
</body>
|
|
||||||
</html>
|
|
70
NzbDrone.sln
70
NzbDrone.sln
|
@ -9,6 +9,10 @@ EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{5853FEE1-D6C1-49AB-B1E3-12216491DA69}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{5853FEE1-D6C1-49AB-B1E3-12216491DA69}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NzbDrone", "NzbDrone\NzbDrone.csproj", "{D12F7F2F-8A3C-415F-88FA-6DD061A84869}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NzbDrone", "NzbDrone\NzbDrone.csproj", "{D12F7F2F-8A3C-415F-88FA-6DD061A84869}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205} = {FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}
|
||||||
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD} = {43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}
|
||||||
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NzbDrone.Core", "NzbDrone.Core\NzbDrone.Core.csproj", "{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NzbDrone.Core", "NzbDrone.Core\NzbDrone.Core.csproj", "{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}"
|
||||||
EndProject
|
EndProject
|
||||||
|
@ -103,7 +107,7 @@ Global
|
||||||
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Pilot|x64.ActiveCfg = Release|Any CPU
|
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Pilot|x64.ActiveCfg = Release|Any CPU
|
||||||
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Pilot|x86.ActiveCfg = Release|Any CPU
|
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Pilot|x86.ActiveCfg = Release|x86
|
||||||
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Release|Any CPU.Build.0 = Release|Any CPU
|
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||||
|
@ -125,14 +129,14 @@ Global
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|x86.Build.0 = Debug|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Debug|x86.Build.0 = Debug|x86
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Pilot|Mixed Platforms.ActiveCfg = Release|x86
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Pilot|Mixed Platforms.Build.0 = Release|x86
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Pilot|x64.ActiveCfg = Release|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Pilot|x64.ActiveCfg = Release|Any CPU
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Pilot|x86.ActiveCfg = Release|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Pilot|x86.ActiveCfg = Release|x86
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Release|Any CPU.Build.0 = Release|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{43BD3BBD-1531-4D8F-9C08-E1CD544AB2CD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
|
@ -150,14 +154,14 @@ Global
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x86.Build.0 = Debug|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x86.Build.0 = Debug|x86
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Pilot|x64.ActiveCfg = Release|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Pilot|x64.ActiveCfg = Release|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Pilot|x86.ActiveCfg = Release|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Pilot|x86.ActiveCfg = Release|x86
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Release|Any CPU.Build.0 = Release|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
|
@ -175,14 +179,14 @@ Global
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|x86.Build.0 = Debug|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|x86.Build.0 = Debug|x86
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Pilot|Mixed Platforms.ActiveCfg = Release|x86
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Pilot|Mixed Platforms.Build.0 = Release|x86
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Pilot|x64.ActiveCfg = Release|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Pilot|x64.ActiveCfg = Release|Any CPU
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Pilot|x86.ActiveCfg = Release|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Pilot|x86.ActiveCfg = Release|x86
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Release|Any CPU.Build.0 = Release|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
|
@ -272,14 +276,14 @@ Global
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|x86.Build.0 = Debug|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|x86.Build.0 = Debug|x86
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Pilot|Mixed Platforms.ActiveCfg = Release|x86
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Pilot|Mixed Platforms.Build.0 = Release|x86
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Pilot|x64.ActiveCfg = Release|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Pilot|x64.ActiveCfg = Release|Any CPU
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Pilot|x86.ActiveCfg = Release|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Pilot|x86.ActiveCfg = Release|x86
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|Any CPU.Build.0 = Release|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
|
@ -297,14 +301,14 @@ Global
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|x86.Build.0 = Debug|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|x86.Build.0 = Debug|x86
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Pilot|x64.ActiveCfg = Release|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Pilot|x64.ActiveCfg = Release|Any CPU
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Pilot|x86.ActiveCfg = Release|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Pilot|x86.ActiveCfg = Release|x86
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|Any CPU.Build.0 = Release|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
|
@ -322,14 +326,14 @@ Global
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|x86.Build.0 = Debug|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|x86.Build.0 = Debug|x86
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Pilot|x64.ActiveCfg = Release|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Pilot|x64.ActiveCfg = Release|Any CPU
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Pilot|x86.ActiveCfg = Release|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Pilot|x86.ActiveCfg = Release|x86
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Release|Any CPU.Build.0 = Release|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
|
@ -347,13 +351,13 @@ Global
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Pilot|x64.ActiveCfg = Release|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Pilot|x64.ActiveCfg = Release|Any CPU
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Pilot|x86.ActiveCfg = Release|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Pilot|x86.ActiveCfg = Release|x86
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Release|Any CPU.Build.0 = Release|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{3CCD64E1-84DA-4853-B7EF-98B02FD4E39E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
|
@ -419,14 +423,14 @@ Global
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Debug|x86.Build.0 = Debug|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Debug|x86.Build.0 = Debug|x86
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Pilot|x64.ActiveCfg = Release|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Pilot|x64.ActiveCfg = Release|Any CPU
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Pilot|x86.ActiveCfg = Release|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Pilot|x86.ActiveCfg = Release|x86
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Release|Any CPU.Build.0 = Release|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{63B155D7-AE78-4FEB-88BB-2F025ADD1F15}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
|
@ -444,14 +448,14 @@ Global
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Debug|x86.Build.0 = Debug|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Debug|x86.Build.0 = Debug|x86
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Pilot|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Pilot|Any CPU.Build.0 = Release|Any CPU
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Pilot|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Pilot|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Pilot|x64.ActiveCfg = Release|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Pilot|x64.ActiveCfg = Release|Any CPU
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Pilot|x86.ActiveCfg = Release|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Pilot|x86.ActiveCfg = Release|x86
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Release|Any CPU.Build.0 = Release|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
{12261AE5-BCC4-4DC7-A218-0764B9C30230}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||||
|
|
Loading…
Reference in New Issue