From 6b5e53de1d72b7458908356a6c26529f50d60daa Mon Sep 17 00:00:00 2001 From: emeric Date: Mon, 27 Nov 2023 20:40:20 +0100 Subject: [PATCH] Fixed too restrictive validator for extra tags, fixes #382 --- src/lms/ui/admin/DatabaseSettingsView.cpp | 2 +- src/lms/ui/common/UppercaseValidator.cpp | 11 +++-------- src/lms/ui/common/UppercaseValidator.hpp | 2 +- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/lms/ui/admin/DatabaseSettingsView.cpp b/src/lms/ui/admin/DatabaseSettingsView.cpp index ada75880..351722dc 100644 --- a/src/lms/ui/admin/DatabaseSettingsView.cpp +++ b/src/lms/ui/admin/DatabaseSettingsView.cpp @@ -77,7 +77,7 @@ namespace UserInterface setValidator(UpdatePeriodField, createMandatoryValidator()); setValidator(UpdateStartTimeField, createMandatoryValidator()); setValidator(SimilarityEngineTypeField, createMandatoryValidator()); - setValidator(ExtraTagsField, createUppercaseValidator(extraTagsDelimiter)); + setValidator(ExtraTagsField, createUppercaseValidator()); // populate the model with initial data loadData(); diff --git a/src/lms/ui/common/UppercaseValidator.cpp b/src/lms/ui/common/UppercaseValidator.cpp index 77ba47b1..a2332990 100644 --- a/src/lms/ui/common/UppercaseValidator.cpp +++ b/src/lms/ui/common/UppercaseValidator.cpp @@ -26,14 +26,9 @@ namespace UserInterface { class UppercaseValidator : public Wt::WValidator { - public: - UppercaseValidator(std::string_view delimiters) : _delimiters{ delimiters } {} - private: Wt::WValidator::Result validate(const Wt::WString& input) const override; std::string javaScriptValidate() const override { return {}; } - - std::string _delimiters; }; Wt::WValidator::Result UppercaseValidator::validate(const Wt::WString& input) const @@ -42,7 +37,7 @@ namespace UserInterface return Wt::WValidator::validate(input); 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) 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); } - std::unique_ptr createUppercaseValidator(std::string_view delimiters) + std::unique_ptr createUppercaseValidator() { - return std::make_unique(delimiters); + return std::make_unique(); } } // namespace UserInterface diff --git a/src/lms/ui/common/UppercaseValidator.hpp b/src/lms/ui/common/UppercaseValidator.hpp index 679fbb1f..59dbc3d7 100644 --- a/src/lms/ui/common/UppercaseValidator.hpp +++ b/src/lms/ui/common/UppercaseValidator.hpp @@ -23,5 +23,5 @@ namespace UserInterface { - std::unique_ptr createUppercaseValidator(std::string_view delimiters); + std::unique_ptr createUppercaseValidator(); } // namespace UserInterface