diff --git a/assets/js/common/formChecker.js b/assets/js/common/formChecker.js index ec11a9ec..1e7b0c28 100644 --- a/assets/js/common/formChecker.js +++ b/assets/js/common/formChecker.js @@ -10,9 +10,10 @@ const FormChecker = { * * @param {elem} input The input element to check * @param {Boolean} inFormGroup Specify wether the input is in a formgroup or not + * @param {number} minLength Minimum length of input * @return {Boolean} True or false depending of the validity of the field */ - checkInput: function(input, inFormGroup){ + checkInput: function(input, inFormGroup, minLength = 3){ //Check input existence if(!input){ //Error message @@ -28,7 +29,7 @@ const FormChecker = { //TextInput if(inputType == "text"){ - inputOK = (input.value.length < 3 ? false:true); + inputOK = (input.value.length < minLength ? false:true); } //MailInput diff --git a/assets/js/common/utils.js b/assets/js/common/utils.js index f68d5e1f..0fc76e37 100644 --- a/assets/js/common/utils.js +++ b/assets/js/common/utils.js @@ -228,6 +228,7 @@ function checkMail(emailAddress){ * * @info {string} value The default value of the input * * @info {boolean} disabled Set whether the field should be disabled or not * * @info {string} additionalGroupClasses Additionnal form group class names + * * @info {number} maxLength Maximum allowed length for input * @return {HTMLElement} The input */ function createFormGroup(infos){ @@ -364,6 +365,9 @@ function createFormGroup(infos){ input.placeholder = infos.placeholder; input.value = value; input.disabled = disabled; + + if (infos.maxLength) + input.maxLength = infos.maxLength; } //Return input diff --git a/assets/js/pages/createAccount.js b/assets/js/pages/createAccount.js index a3481035..5591fce8 100644 --- a/assets/js/pages/createAccount.js +++ b/assets/js/pages/createAccount.js @@ -58,7 +58,8 @@ ComunicWeb.pages.createAccount = { target: formRoot, label: lang("form_create_account_first_name_label"), placeholder: lang("form_create_account_first_name_placeholder"), - type: "text" + type: "text", + maxLength: ServerConfig.conf.account_info_policy.max_first_name_length, }); //Input user last name @@ -66,7 +67,8 @@ ComunicWeb.pages.createAccount = { target: formRoot, label: lang("form_create_account_last_name_label"), placeholder: lang("form_create_account_last_name_placeholder"), - type: "text" + type: "text", + maxLength: ServerConfig.conf.account_info_policy.max_last_name_length, }); //Input user email @@ -145,11 +147,11 @@ ComunicWeb.pages.createAccount = { return notify(lang("form_create_account_err_need_accept_terms"), "danger"); //Check the first name - if(!FormChecker.checkInput(firstNameInput, true)) + if(!FormChecker.checkInput(firstNameInput, true, ServerConfig.conf.account_info_policy.min_first_name_length)) return notify(lang("form_create_account_err_need_first_name"), "danger"); //Check the last name - if(!FormChecker.checkInput(lastNameInput, true)) + if(!FormChecker.checkInput(lastNameInput, true, ServerConfig.conf.account_info_policy.min_last_name_length)) return notify(lang("form_create_account_err_check_last_name"), "danger"); //Check the email address diff --git a/assets/js/pages/settings/sections/general.js b/assets/js/pages/settings/sections/general.js index 6eedc6df..f878c27a 100644 --- a/assets/js/pages/settings/sections/general.js +++ b/assets/js/pages/settings/sections/general.js @@ -110,29 +110,31 @@ ComunicWeb.pages.settings.sections.general = { additionalGroupClasses: "input-user-email" }); - //Display user first name + // Display user first name var firstName = createFormGroup({ target: target, - label: "First name", - placeholder: "Your first name", + label: tr("First name"), + placeholder: tr("Your first name"), type: "text", value: infos.firstName, + maxLength: ServerConfig.conf.account_info_policy.max_first_name_length }); - //Last name + // Last name var lastName = createFormGroup({ target: target, - label: "Last name", - placeholder: "Your last name", + label: tr("Last name"), + placeholder: tr("Your last name"), type: "text", - value: infos.lastName + value: infos.lastName, + maxLength: ServerConfig.conf.account_info_policy.max_last_name_length }); //Allow mails from Comunic var allowEmails = createFormGroup({ target: target, type: "checkbox", - label: "Allow Comunic to send you emails", + label: tr("Allow Comunic to send you emails"), checked: infos.allow_comunic_mails }); @@ -148,7 +150,7 @@ ComunicWeb.pages.settings.sections.general = { var publicPage = createFormGroup({ target: target, type: "checkbox", - label: "Make your page public (available to every Comunic users)", + label: tr("Make your page public (available to every Comunic users)"), checked: infos.is_public }); @@ -177,7 +179,7 @@ ComunicWeb.pages.settings.sections.general = { var allowComments = createFormGroup({ target: target, type: "checkbox", - label: "Allow the comments on your page", + label: tr("Allow comments on your page"), checked: infos.allow_comments }); @@ -185,7 +187,7 @@ ComunicWeb.pages.settings.sections.general = { var allowPostsFromFriends = createFormGroup({ target: target, type: "checkbox", - label: "Allow the posts from your friends on your page", + label: tr("Allow the creation of posts from your friends on your page"), checked: infos.allow_posts_from_friends }); @@ -193,14 +195,14 @@ ComunicWeb.pages.settings.sections.general = { var publicFriendsList = createFormGroup({ target: target, type: "checkbox", - label: "Make your friend list public", + label: tr("Make your friend list public"), checked: infos.public_friends_list }); //Personnal website var personnalWebsite = createFormGroup({ target: target, - label: "Personnal website (optionnal)", + label: tr("Personnal website (optionnal)"), type: "text", placeholder: "https://...", value: infos.personnal_website != "null" ? infos.personnal_website : "" @@ -263,15 +265,15 @@ ComunicWeb.pages.settings.sections.general = { sendButton.onclick = function(){ //Check the given values - if(!ComunicWeb.common.formChecker.checkInput(firstName, true)) - return notify("Please check your first name!", "danger"); + if(!ComunicWeb.common.formChecker.checkInput(firstName, true, ServerConfig.conf.account_info_policy.min_first_name_length)) + return notify(tr("Please check your first name!"), "danger"); - if(!ComunicWeb.common.formChecker.checkInput(lastName, true)) - return notify("Please check your last name!", "danger"); + if(!ComunicWeb.common.formChecker.checkInput(lastName, true, ServerConfig.conf.account_info_policy.min_last_name_length)) + return notify(tr("Please check your last name!"), "danger"); if(personnalWebsite.value != ""){ if(!check_url(personnalWebsite.value)) - return notify("Please check the given URL !", "danger"); + return notify(tr("Please check the given URL !"), "danger"); } //Pack all the values in an object diff --git a/assets/js/typings/ServerConfig.d.ts b/assets/js/typings/ServerConfig.d.ts index 576059b7..bac0a1b7 100644 --- a/assets/js/typings/ServerConfig.d.ts +++ b/assets/js/typings/ServerConfig.d.ts @@ -33,6 +33,13 @@ declare interface ConversationPolicy { writing_event_lifetime: number, } +declare interface AccountInformationPolicy { + min_first_name_length: number, + max_first_name_length: number, + min_last_name_length: number, + max_last_name_length: number, +} + declare interface StaticServerConfig { terms_url: string, privacy_policy_url: string, @@ -41,4 +48,5 @@ declare interface StaticServerConfig { password_policy: PasswordPolicy, data_conservation_policy: DataConservationPolicySettings, conversations_policy: ConversationPolicy, + account_info_policy: AccountInformationPolicy, } \ No newline at end of file