From ad07ca81526251f53ee88a5e723186f10e09f2be Mon Sep 17 00:00:00 2001 From: 19AnastasiaTsareva20 <19anastasia.tsareva20@gmail.com> Date: Fri, 18 Apr 2025 15:04:06 +0300 Subject: [PATCH 1/2] Add validation message for 'real name' field (#477) --- app/errors/intl.js | 1 + models/User.js | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/errors/intl.js b/app/errors/intl.js index d737c2f3..dddab7b6 100644 --- a/app/errors/intl.js +++ b/app/errors/intl.js @@ -92,4 +92,5 @@ export default { MAIL_SEND: 'Ошибка отправки письма', MAIL_WRONG: 'Неверный формат email, проверьте еще раз', MAIL_IN_USE: 'Этот email уже используется другим пользователем', + 'EValidation.RealNameTooLong': 'Реальное имя слишком длинное (максимум 50 символов)', }; diff --git a/models/User.js b/models/User.js index 9b8a64be..9f458e14 100755 --- a/models/User.js +++ b/models/User.js @@ -65,7 +65,10 @@ registerModel(db => { firstName: { type: String }, lastName: { type: String }, disp: { type: String }, // Display name - + realName: { + type: String, + maxlength: [50, 'EValidation.RealNameTooLong'], + }, birthdate: { type: String }, sex: { type: String }, country: { type: String }, From 5413912bf53e7bbcbfb2c9ed0d9b0756a2388bb5 Mon Sep 17 00:00:00 2001 From: 19AnastasiaTsareva20 <19anastasia.tsareva20@gmail.com> Date: Wed, 30 Apr 2025 00:53:36 +0300 Subject: [PATCH 2/2] Fix UI issues with long text in profile fields --- app/errors/intl.js | 1 - models/User.js | 5 +---- views/module/user/profile.pug | 33 +++++++++++++++++++++++++-------- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/app/errors/intl.js b/app/errors/intl.js index dddab7b6..d737c2f3 100644 --- a/app/errors/intl.js +++ b/app/errors/intl.js @@ -92,5 +92,4 @@ export default { MAIL_SEND: 'Ошибка отправки письма', MAIL_WRONG: 'Неверный формат email, проверьте еще раз', MAIL_IN_USE: 'Этот email уже используется другим пользователем', - 'EValidation.RealNameTooLong': 'Реальное имя слишком длинное (максимум 50 символов)', }; diff --git a/models/User.js b/models/User.js index 9f458e14..9b8a64be 100755 --- a/models/User.js +++ b/models/User.js @@ -65,10 +65,7 @@ registerModel(db => { firstName: { type: String }, lastName: { type: String }, disp: { type: String }, // Display name - realName: { - type: String, - maxlength: [50, 'EValidation.RealNameTooLong'], - }, + birthdate: { type: String }, sex: { type: String }, country: { type: String }, diff --git a/views/module/user/profile.pug b/views/module/user/profile.pug index de2125a7..f0feb6a6 100644 --- a/views/module/user/profile.pug +++ b/views/module/user/profile.pug @@ -9,13 +9,19 @@ .form-group(data-bind="style: {display: canBeEdit() || u.firstName().length || u.lastName().length > 0 ? '' : 'none'}") label.col-sm-3.col-md-2.control-label(for="inName") Реальное имя .col-sm-3.col-md-2 - input.form-control(type="text", id="inName", data-bind="attr: {size: u.firstName().length, disabled: !editMode(), placeholder: !editMode() ? '' : 'Имя'}, value: u.firstName, valueUpdate: 'afterkeydown'") + input.form-control(type="text", id="inName", data-bind="attr: {size: u.firstName().length, disabled: !editMode(), placeholder: !editMode() ? '' : 'Имя'}, style: {display: editMode() ? '' : 'none'}, value: u.firstName, valueUpdate: 'afterkeydown'") + .text-field-wrapper(data-bind="style: {display: !editMode() ? '' : 'none'}") + .text-value(data-bind="text: u.firstName") .col-sm-3.col-md-2 - input.form-control(type="text", id="inLastName", data-bind="attr: {disabled: !editMode(), placeholder: !editMode() ? '': 'Фамилия'}, value: u.lastName, valueUpdate: 'afterkeydown'") + input.form-control(type="text", id="inLastName", data-bind="attr: {disabled: !editMode(), placeholder: !editMode() ? '': 'Фамилия'}, style: {display: editMode() ? '' : 'none'}, value: u.lastName, valueUpdate: 'afterkeydown'") + .text-field-wrapper(data-bind="style: {display: !editMode() ? '' : 'none'}") + .text-value(data-bind="text: u.lastName") .form-group(data-bind="style: {display: canBeEdit() || u.birthdate().length ? '' : 'none'}") label.col-sm-3.col-md-2.control-label(for="inBirthdate") Дата рождения .col-sm-3.col-md-2 - input#inBirthdate.form-control(type="text", data-bind="attr: {disabled: !editMode()}, value: u.birthdate, valueUpdate: 'keyup'") + input#inBirthdate.form-control(type="text", data-bind="attr: {disabled: !editMode()}, style: {display: editMode() ? '' : 'none'}, value: u.birthdate, valueUpdate: 'keyup'") + .text-field-wrapper(data-bind="style: {display: !editMode() ? '' : 'none'}") + .text-value(data-bind="text: u.birthdate") .form-group(data-bind="style: {display: canBeEdit() || u.sex().length > 0 ? '' : 'none'}") label.col-sm-3.col-md-2.control-label(for="inSex2") Пол .col-sm-4.col-md-3 @@ -33,21 +39,31 @@ .form-group(data-bind="style: {display: canBeEdit() || u.country().length || u.city().length > 0 ? '' : 'none'}") label.col-sm-3.col-md-2.control-label(for="inResidence") Откуда .col-sm-3.col-md-2 - input.form-control(type="text", id='inResidence', data-bind="attr: {disabled: !editMode(), placeholder: !editMode() ? '': 'Страна'}, size: u.country().length, value: u.country, valueUpdate: 'afterkeydown'") + input.form-control(type="text", id='inResidence', data-bind="attr: {disabled: !editMode(), placeholder: !editMode() ? '': 'Страна'}, style: {display: editMode() ? '' : 'none'}, size: u.country().length, value: u.country, valueUpdate: 'afterkeydown'") + .text-field-wrapper(data-bind="style: {display: !editMode() ? '' : 'none'}") + .text-value(data-bind="text: u.country") .col-sm-3.col-md-2 - input.form-control(type="text", id="inResidence2", data-bind="attr: {disabled: !editMode(), placeholder: !editMode() ? '': 'Город'}, value: u.city, valueUpdate: 'afterkeydown'") + input.form-control(type="text", id="inResidence2", data-bind="attr: {disabled: !editMode(), placeholder: !editMode() ? '': 'Город'}, style: {display: editMode() ? '' : 'none'}, value: u.city, valueUpdate: 'afterkeydown'") + .text-field-wrapper(data-bind="style: {display: !editMode() ? '' : 'none'}") + .text-value(data-bind="text: u.city") .form-group(data-bind="style: {display: canBeEdit() || u.work().length > 0 ? '' : 'none'}") label.col-sm-3.col-md-2.control-label(for="inInterested") Деятельность .col-sm-3.col-md-2 - input.form-control(type="text", id='inInterested', data-bind="attr: {disabled: !editMode()}, value: u.work, valueUpdate: 'afterkeydown'") + input.form-control(type="text", id='inInterested', data-bind="attr: {disabled: !editMode()}, style: {display: editMode() ? '' : 'none'}, value: u.work, valueUpdate: 'afterkeydown'") + .text-field-wrapper(data-bind="style: {display: !editMode() ? '' : 'none'}") + .text-value(data-bind="text: u.work") .form-group(data-bind="style: {display: canBeEdit() || u.www().length > 0 ? '' : 'none'}") label.col-sm-3.col-md-2.control-label(for="inWebsite") Веб-сайт .col-sm-3.col-md-2 - input.form-control(type="text", id='inWebsite', data-bind="attr: {disabled: !editMode()}, value: u.www, valueUpdate: 'afterkeydown'") + input.form-control(type="text", id='inWebsite', data-bind="attr: {disabled: !editMode()}, style: {display: editMode() ? '' : 'none'}, value: u.www, valueUpdate: 'afterkeydown'") + .text-field-wrapper(data-bind="style: {display: !editMode() ? '' : 'none'}") + .text-value(data-bind="text: u.www") .form-group(data-bind="style: {display: canBeEdit() || u.aboutme().length > 0 ? '' : 'none'}") label.col-sm-3.col-md-2.control-label(for="inaboutme") Обо мне .col-sm-7.col-md-8 - textarea.form-control(rows="4", id='inaboutme', data-bind="attr: {disabled: !editMode()}, value: u.aboutme, valueUpdate: 'afterkeydown'") + textarea.form-control(rows="4", id='inaboutme', data-bind="attr: {disabled: !editMode()}, style: {display: editMode() ? '' : 'none'}, value: u.aboutme, valueUpdate: 'afterkeydown'") + .textarea-wrapper(data-bind="style: {display: !editMode() ? '' : 'none'}") + .text-value-multiline(data-bind="text: u.aboutme") .form-group(data-bind="style: {display: canBeEdit() ? '' : 'none'}") .col-sm-12 button.btn.btn-primary(type="button", data-bind="css: {'btn-success': editMode()}, event: {click: function(data, event) { if (!data.editMode()){data.edit(true)} else{data.saveUser()}}}") @@ -56,3 +72,4 @@ button.btn.btn-danger(type="button", data-bind="style: {display: editMode() ? '' : 'none'}, event: {click: function(data, event) { if (data.editMode()) {data.cancelUser()}}}") span.glyphicon.glyphicon-remove | Отмена + \ No newline at end of file