mirror of
https://github.com/Sonarr/Sonarr.git
synced 2024-10-30 23:42:33 +01:00
Changed the way additional validation details get sent the UI.
This commit is contained in:
parent
232a2b9422
commit
822de39a9e
@ -11,6 +11,7 @@ using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using NzbDrone.Core.Parser;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using NzbDrone.Core.Validation;
|
||||
|
||||
namespace NzbDrone.Core.Download.Clients.Sabnzbd
|
||||
{
|
||||
@ -312,14 +313,22 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
|
||||
{
|
||||
if (category.Dir.EndsWith("*"))
|
||||
{
|
||||
return new ValidationFailure(String.Empty, String.Format("Remove * from Sabnzbd <a class=\"no-router\" target=\"_blank\" href=\"http://{0}:{1}/sabnzbd/config/categories/\">'{2}' category</a> Folder/Path so job folders will be created", Settings.Host, Settings.Port, Settings.TvCategory));
|
||||
return new NzbDroneValidationFailure("TvCategory", "Enable Job folders")
|
||||
{
|
||||
InfoLink = String.Format("http://{0}:{1}/sabnzbd/config/categories/", Settings.Host, Settings.Port),
|
||||
DetailedDescription = "NzbDrone prefers each download to have a separate folder. With * appended to the Folder/Path Sabnzbd will not create these job folders. Go to Sabnzbd to fix it."
|
||||
};
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!Settings.TvCategory.IsNullOrWhiteSpace())
|
||||
{
|
||||
return new ValidationFailure("TvCategory", String.Format("<a class=\"no-router\" target=\"_blank\" href=\"http://{0}:{1}/sabnzbd/config/categories/\">Category</a> does not exist", Settings.Host, Settings.Port));
|
||||
return new NzbDroneValidationFailure("TvCategory", "Category does not exist")
|
||||
{
|
||||
InfoLink = String.Format("http://{0}:{1}/sabnzbd/config/categories/", Settings.Host, Settings.Port),
|
||||
DetailedDescription = "The Category your entered doesn't exist in Sabnzbd. Go to Sabnzbd to create it."
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@ -329,7 +338,11 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
|
||||
config.Misc.tv_categories.Contains(Settings.TvCategory) ||
|
||||
(Settings.TvCategory.IsNullOrWhiteSpace() && config.Misc.tv_categories.Contains("Default")))
|
||||
{
|
||||
return new ValidationFailure(String.Empty, String.Format("Disable <a class=\"no-router\" target=\"_blank\" href=\"http://{0}:{1}/sabnzbd/config/sorting/\">TV Sorting</a> for the '{2}' category", Settings.Host, Settings.Port, Settings.TvCategory));
|
||||
return new NzbDroneValidationFailure("TvCategory", "Disable TV Sorting")
|
||||
{
|
||||
InfoLink = String.Format("http://{0}:{1}/sabnzbd/config/sorting/", Settings.Host, Settings.Port),
|
||||
DetailedDescription = "You must disable Sabnzbd TV Sorting for the category NzbDrone uses to prevent import issues. Go to Sabnzbd to fix it."
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -725,6 +725,7 @@
|
||||
<Compile Include="Validation\Paths\PathExistsValidator.cs" />
|
||||
<Compile Include="Validation\FolderValidator.cs" />
|
||||
<Compile Include="Validation\RuleBuilderExtensions.cs" />
|
||||
<Compile Include="Validation\NzbDroneValidationFailure.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
|
||||
|
20
src/NzbDrone.Core/Validation/NzbDroneValidationFailure.cs
Normal file
20
src/NzbDrone.Core/Validation/NzbDroneValidationFailure.cs
Normal file
@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using FluentValidation.Results;
|
||||
|
||||
namespace NzbDrone.Core.Validation
|
||||
{
|
||||
public class NzbDroneValidationFailure : ValidationFailure
|
||||
{
|
||||
public String DetailedDescription { get; set; }
|
||||
public String InfoLink { get; set; }
|
||||
|
||||
public NzbDroneValidationFailure(String propertyName, String error)
|
||||
: base(propertyName, error)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -88,6 +88,13 @@ h3 {
|
||||
}
|
||||
}
|
||||
|
||||
.validation-error {
|
||||
i {
|
||||
text-decoration: none;
|
||||
color: #b94a48;
|
||||
}
|
||||
}
|
||||
|
||||
// Tooltips
|
||||
|
||||
.help-inline-checkbox, .help-inline {
|
||||
|
@ -8,9 +8,16 @@ define(
|
||||
|
||||
var validationName = error.propertyName.toLowerCase();
|
||||
|
||||
var errorMessage = this.formatErrorMessage(error);
|
||||
|
||||
this.find('.validation-errors')
|
||||
.addClass('alert alert-danger')
|
||||
.append('<div><i class="icon-exclamation-sign"></i>' + error.errorMessage + '</div>');
|
||||
.append('<div><i class="icon-exclamation-sign"></i>' + errorMessage + '</div>');
|
||||
|
||||
if (!validationName || validationName === "") {
|
||||
this.addFormError(error);
|
||||
return;
|
||||
}
|
||||
|
||||
var input = this.find('[name]').filter(function () {
|
||||
return this.name.toLowerCase() === validationName;
|
||||
@ -38,11 +45,11 @@ define(
|
||||
var inputGroup = controlGroup.find('.input-group');
|
||||
|
||||
if (inputGroup.length === 0) {
|
||||
controlGroup.append('<span class="help-inline error-message">' + error.errorMessage + '</span>');
|
||||
controlGroup.append('<span class="help-inline validation-error">' + errorMessage + '</span>');
|
||||
}
|
||||
|
||||
else {
|
||||
inputGroup.parent().append('<span class="help-block error-message">' + error.errorMessage + '</span>');
|
||||
inputGroup.parent().append('<span class="help-block validation-error">' + errorMessage + '</span>');
|
||||
}
|
||||
}
|
||||
|
||||
@ -57,12 +64,15 @@ define(
|
||||
};
|
||||
|
||||
$.fn.addFormError = function (error) {
|
||||
|
||||
var errorMessage = this.formatErrorMessage(error);
|
||||
|
||||
if (this.find('.modal-body')) {
|
||||
this.find('.modal-body').prepend('<div class="alert alert-danger validation-error">' + error.errorMessage + '</div>');
|
||||
this.find('.modal-body').prepend('<div class="alert alert-danger validation-error">' + errorMessage + '</div>');
|
||||
}
|
||||
|
||||
else {
|
||||
this.prepend('<div class="alert alert-danger validation-error">' + error.errorMessage + '</div>');
|
||||
this.prepend('<div class="alert alert-danger validation-error">' + errorMessage + '</div>');
|
||||
}
|
||||
};
|
||||
|
||||
@ -74,4 +84,24 @@ define(
|
||||
return this.find('.help-inline.error-message').remove();
|
||||
};
|
||||
|
||||
$.fn.formatErrorMessage = function (error) {
|
||||
|
||||
var errorMessage = error.errorMessage;
|
||||
var infoLink = "";
|
||||
|
||||
if (error.infoLink) {
|
||||
if (error.detailedDescription) {
|
||||
errorMessage += " <a class=\"no-router\" target=\"_blank\" href=\"" + error.infoLink + "\"><i class=\"icon-external-link\" title=\"" + error.detailedDescription + "\"></i></a>";
|
||||
}
|
||||
else {
|
||||
errorMessage += " <a class=\"no-router\" target=\"_blank\" href=\"" + error.infoLink + "\"><i class=\"icon-external-link\"></i></a>";
|
||||
}
|
||||
}
|
||||
else if (error.detailedDescription) {
|
||||
errorMessage += " <i class=\"icon-nd-form-info\" title=\"" + error.detailedDescription + "\"></i>";
|
||||
}
|
||||
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user