Fixed too restrictive validator for extra tags, fixes #382

This commit is contained in:
emeric
2023-11-27 20:40:20 +01:00
parent 1f282c0517
commit 6b5e53de1d
3 changed files with 5 additions and 10 deletions
+1 -1
View File
@@ -77,7 +77,7 @@ namespace UserInterface
setValidator(UpdatePeriodField, createMandatoryValidator()); setValidator(UpdatePeriodField, createMandatoryValidator());
setValidator(UpdateStartTimeField, createMandatoryValidator()); setValidator(UpdateStartTimeField, createMandatoryValidator());
setValidator(SimilarityEngineTypeField, createMandatoryValidator()); setValidator(SimilarityEngineTypeField, createMandatoryValidator());
setValidator(ExtraTagsField, createUppercaseValidator(extraTagsDelimiter)); setValidator(ExtraTagsField, createUppercaseValidator());
// populate the model with initial data // populate the model with initial data
loadData(); loadData();
+3 -8
View File
@@ -26,14 +26,9 @@ namespace UserInterface
{ {
class UppercaseValidator : public Wt::WValidator class UppercaseValidator : public Wt::WValidator
{ {
public:
UppercaseValidator(std::string_view delimiters) : _delimiters{ delimiters } {}
private: private:
Wt::WValidator::Result validate(const Wt::WString& input) const override; Wt::WValidator::Result validate(const Wt::WString& input) const override;
std::string javaScriptValidate() const override { return {}; } std::string javaScriptValidate() const override { return {}; }
std::string _delimiters;
}; };
Wt::WValidator::Result UppercaseValidator::validate(const Wt::WString& input) const Wt::WValidator::Result UppercaseValidator::validate(const Wt::WString& input) const
@@ -42,7 +37,7 @@ namespace UserInterface
return Wt::WValidator::validate(input); return Wt::WValidator::validate(input);
const std::string str{ input.toUTF8() }; const std::string str{ input.toUTF8() };
const bool valid{ std::all_of(std::cbegin(str),std::cend(str), [&](char c) { return std::isupper(c) || _delimiters.find(c) != std::string::npos;}) }; const bool valid{ std::all_of(std::cbegin(str), std::cend(str), [&](char c) { return !std::isalpha(c) || std::isupper(c);}) };
if (!valid) if (!valid)
return Wt::WValidator::Result(Wt::ValidationState::Invalid, Wt::WString::tr("Lms.field-must-be-in-upper-case")); return Wt::WValidator::Result(Wt::ValidationState::Invalid, Wt::WString::tr("Lms.field-must-be-in-upper-case"));
@@ -50,8 +45,8 @@ namespace UserInterface
return Wt::WValidator::Result(Wt::ValidationState::Valid); return Wt::WValidator::Result(Wt::ValidationState::Valid);
} }
std::unique_ptr<Wt::WValidator> createUppercaseValidator(std::string_view delimiters) std::unique_ptr<Wt::WValidator> createUppercaseValidator()
{ {
return std::make_unique<UppercaseValidator>(delimiters); return std::make_unique<UppercaseValidator>();
} }
} // namespace UserInterface } // namespace UserInterface
+1 -1
View File
@@ -23,5 +23,5 @@
namespace UserInterface namespace UserInterface
{ {
std::unique_ptr<Wt::WValidator> createUppercaseValidator(std::string_view delimiters); std::unique_ptr<Wt::WValidator> createUppercaseValidator();
} // namespace UserInterface } // namespace UserInterface