From 972375ec7e054fda672241b3cb3efe2d080f1364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Pedersen?= Date: Mon, 19 Feb 2018 18:02:42 +0100 Subject: [PATCH] Add length validation to text input This change allows to enforce minimum and maximum length limit for registration form text input fields. --- CHANGES.rst | 2 ++ .../js/indico/modules/registration/form/field.js | 2 ++ .../form/tpls/fields/dialogs/size.tpl.html | 16 ++++++++++++++++ .../registration/form/tpls/fields/text.tpl.html | 10 ++++++++++ 4 files changed, 30 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index e51e3a639e0..dfe1c0be0da 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -60,6 +60,8 @@ Improvements defined for the event (:issue:`2813`) - Show warning box to inform that reviewer roles do not apply when an event has no tracks (:issue:`2919`) +- Allow specifying min/max length for registration form text fields + (:issue:`3193`, thanks :user:`bpedersen2`) Bugfixes ^^^^^^^^ diff --git a/indico/htdocs/js/indico/modules/registration/form/field.js b/indico/htdocs/js/indico/modules/registration/form/field.js index 7712cdb5153..4024bf76d27 100644 --- a/indico/htdocs/js/indico/modules/registration/form/field.js +++ b/indico/htdocs/js/indico/modules/registration/form/field.js @@ -758,6 +758,8 @@ ndRegForm.directive('ndTextField', function(url) { scope.settings.fieldName = $T("Text"); scope.settings.size = true; scope.settings.formData.push('length'); + scope.settings.formData.push('maxLength'); + scope.settings.formData.push('minLength'); } }; }); diff --git a/indico/htdocs/js/indico/modules/registration/form/tpls/fields/dialogs/size.tpl.html b/indico/htdocs/js/indico/modules/registration/form/tpls/fields/dialogs/size.tpl.html index 4367111302f..02253d93bf3 100644 --- a/indico/htdocs/js/indico/modules/registration/form/tpls/fields/dialogs/size.tpl.html +++ b/indico/htdocs/js/indico/modules/registration/form/tpls/fields/dialogs/size.tpl.html @@ -9,3 +9,19 @@ max="60"> + +
+ + + +
+
+ + + +
+ diff --git a/indico/htdocs/js/indico/modules/registration/form/tpls/fields/text.tpl.html b/indico/htdocs/js/indico/modules/registration/form/tpls/fields/text.tpl.html index f8c9c186123..c5375eb53fc 100644 --- a/indico/htdocs/js/indico/modules/registration/form/tpls/fields/text.tpl.html +++ b/indico/htdocs/js/indico/modules/registration/form/tpls/fields/text.tpl.html @@ -5,10 +5,20 @@ size="{{ field.length || getDefaultFieldSetting('defaultTextFieldSize') }}" ng-model="userdata[fieldName]" ng-required="field.isRequired" + ng-maxlength="{{ field.maxLength }}" + ng-minlength="{{ field.minLength }}" ng-class="{ hasError: validationStarted && nestedForm.$invalid }"/> + + {{ 'Minimum length:' | i18n }} {{ field.minLength }} + + + + {{ 'Maximum length:' | i18n }} {{ field.maxLength }} + + {{ 'Field is mandatory' | i18n }}