Commit 2ec7dec9bc3ad176ee4b9d109ff931e0d7991a95
1 parent
03d6fe1b
Exists in
master
and in
5 other branches
correcoes_aderencia: Refactoty some code on mpog-user-validations.js
Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
Showing
1 changed file
with
63 additions
and
68 deletions
Show diff stats
public/mpog-user-validations.js
| @@ -35,79 +35,75 @@ | @@ -35,79 +35,75 @@ | ||
| 35 | * If the Country if Brazil, set state to select field | 35 | * If the Country if Brazil, set state to select field |
| 36 | * else set it as a input field | 36 | * else set it as a input field |
| 37 | */ | 37 | */ |
| 38 | - function SelectFieldChoices() { | ||
| 39 | - // Get the initial state html | ||
| 40 | - var input_select = jQuery("#state_field").parent().html(); | ||
| 41 | - var old_value = jQuery("#state_field").val(); | ||
| 42 | - var city_parent_div = jQuery("#city_field").parent().parent().parent(); | ||
| 43 | - | ||
| 44 | - function replace_with(html) { | ||
| 45 | - var parent_div = jQuery("#state_field").parent(); | ||
| 46 | - parent_div.html(html); | 38 | + var SelectFieldChoices = (function() { |
| 39 | + function SelectFieldChoices(state_id, city_id, state_url) { | ||
| 40 | + this.state_id = state_id; | ||
| 41 | + this.input_html = jQuery(state_id).parent().html(); | ||
| 42 | + this.old_value = jQuery(state_id).val(); | ||
| 43 | + this.city_parent_div = jQuery(city_id).parent().parent().parent(); | ||
| 44 | + this.state_url = state_url; | ||
| 47 | } | 45 | } |
| 48 | 46 | ||
| 49 | - function generate_select(state_list) { | ||
| 50 | - var select_element = new SelectElement(); | 47 | + SelectFieldChoices.prototype.getCurrentStateElement = function() { |
| 48 | + return jQuery(this.state_id); | ||
| 49 | + }; | ||
| 50 | + | ||
| 51 | + SelectFieldChoices.prototype.replaceWith = function(html) { | ||
| 52 | + var parent_div = this.getCurrentStateElement().parent(); | ||
| 53 | + parent_div.html(html); | ||
| 54 | + }; | ||
| 55 | + | ||
| 56 | + SelectFieldChoices.prototype.generateSelect = function(state_list) { | ||
| 57 | + var select_element, option; | ||
| 51 | 58 | ||
| 59 | + select_element = new SelectElement(); | ||
| 52 | select_element.setAttr("name", "profile_data[state]"); | 60 | select_element.setAttr("name", "profile_data[state]"); |
| 53 | select_element.setAttr("id", "state_field"); | 61 | select_element.setAttr("id", "state_field"); |
| 54 | select_element.setAttr("class", "type-select valid"); | 62 | select_element.setAttr("class", "type-select valid"); |
| 55 | 63 | ||
| 56 | - state_list.forEach(function(state){ | ||
| 57 | - var option = SelectElement.generateOption(state, state); | 64 | + state_list.forEach(function(state) { |
| 65 | + option = SelectElement.generateOption(state, state); | ||
| 58 | select_element.addOption(option); | 66 | select_element.addOption(option); |
| 59 | }); | 67 | }); |
| 60 | 68 | ||
| 61 | return select_element.getSelect(); | 69 | return select_element.getSelect(); |
| 62 | - } | 70 | + }; |
| 63 | 71 | ||
| 64 | - function replace_state_with_select() { | ||
| 65 | - jQuery.get("/plugin/mpog_software/get_brazil_states", function(response){ | ||
| 66 | - if( response.length > 0 ) { | ||
| 67 | - var select_html = generate_select(response); | ||
| 68 | - replace_with(select_html); | 72 | + SelectFieldChoices.prototype.replaceStateWithSelectElement = function() { |
| 73 | + var klass = this; | ||
| 69 | 74 | ||
| 70 | - if( old_value.length != 0 && response.include(old_value) ) { | ||
| 71 | - jQuery("#state_field").val(old_value); | 75 | + jQuery.get(this.state_url, function(response) { |
| 76 | + var select_html; | ||
| 77 | + | ||
| 78 | + if (response.length > 0) { | ||
| 79 | + select_html = klass.generateSelect(response); | ||
| 80 | + klass.replaceWith(select_html); | ||
| 81 | + | ||
| 82 | + if (klass.old_value.length !== 0 && response.include(klass.old_value)) { | ||
| 83 | + klass.getCurrentStateElement().val(klass.old_value); | ||
| 72 | } | 84 | } |
| 73 | } | 85 | } |
| 74 | }); | 86 | }); |
| 75 | - } | ||
| 76 | - | ||
| 77 | - function hide_city(){ | ||
| 78 | - city_parent_div.addClass("mpog_hidden_field"); | ||
| 79 | - } | ||
| 80 | - | ||
| 81 | - function show_city(){ | ||
| 82 | - city_parent_div.removeClass("mpog_hidden_field"); | ||
| 83 | - } | 87 | + }; |
| 84 | 88 | ||
| 85 | - function replace_state_with_input() { | ||
| 86 | - replace_with(input_select); | ||
| 87 | - } | 89 | + SelectFieldChoices.prototype.replaceStateWithInputElement = function() { |
| 90 | + this.replaceWith(this.input_html); | ||
| 91 | + }; | ||
| 88 | 92 | ||
| 89 | - return { | ||
| 90 | - actualFieldIsInput : function() { | ||
| 91 | - return jQuery("#state_field").attr("type") == "text"; | ||
| 92 | - }, | 93 | + SelectFieldChoices.prototype.hideCity = function() { |
| 94 | + this.city_parent_div.addClass("mpog_hidden_field"); | ||
| 95 | + }; | ||
| 93 | 96 | ||
| 94 | - setSelect : function() { | ||
| 95 | - replace_state_with_select(); | ||
| 96 | - }, | 97 | + SelectFieldChoices.prototype.showCity = function() { |
| 98 | + this.city_parent_div.removeClass("mpog_hidden_field"); | ||
| 99 | + }; | ||
| 97 | 100 | ||
| 98 | - setInput : function() { | ||
| 99 | - replace_state_with_input(); | ||
| 100 | - }, | ||
| 101 | - | ||
| 102 | - setHideCity : function(){ | ||
| 103 | - hide_city(); | ||
| 104 | - }, | 101 | + SelectFieldChoices.prototype.actualFieldIsInput = function() { |
| 102 | + return this.getCurrentStateElement().attr("type") === "text"; | ||
| 103 | + }; | ||
| 105 | 104 | ||
| 106 | - setShowCity : function(){ | ||
| 107 | - show_city(); | ||
| 108 | - } | ||
| 109 | - } | ||
| 110 | - } | 105 | + return SelectFieldChoices; |
| 106 | + })(); | ||
| 111 | 107 | ||
| 112 | function set_form_count_custom_data() { | 108 | function set_form_count_custom_data() { |
| 113 | var divisor_option = SelectElement.generateOption("-1", "--------------------------------"); | 109 | var divisor_option = SelectElement.generateOption("-1", "--------------------------------"); |
| @@ -125,7 +121,7 @@ | @@ -125,7 +121,7 @@ | ||
| 125 | jQuery("#password-balloon").html(jQuery("#user_password_menssage").val()); | 121 | jQuery("#password-balloon").html(jQuery("#user_password_menssage").val()); |
| 126 | jQuery("#profile_data_email").parent().append(jQuery("#email_public_message").remove()); | 122 | jQuery("#profile_data_email").parent().append(jQuery("#email_public_message").remove()); |
| 127 | 123 | ||
| 128 | - if( jQuery("#state_field").length != 0 ) selectFieldChoices.setSelect(); | 124 | + if( jQuery("#state_field").length !== 0 ) selectFieldChoices.replaceStateWithSelectElement(); |
| 129 | } | 125 | } |
| 130 | 126 | ||
| 131 | function check_reactivate_account(value, input_object){ | 127 | function check_reactivate_account(value, input_object){ |
| @@ -134,7 +130,7 @@ | @@ -134,7 +130,7 @@ | ||
| 134 | type: "GET", | 130 | type: "GET", |
| 135 | data: { "email": value }, | 131 | data: { "email": value }, |
| 136 | success: function(response) { | 132 | success: function(response) { |
| 137 | - if( jQuery("#forgot_link").length == 0 ) | 133 | + if( jQuery("#forgot_link").length === 0 ) |
| 138 | jQuery(input_object).parent().append(response); | 134 | jQuery(input_object).parent().append(response); |
| 139 | else | 135 | else |
| 140 | jQuery("#forgot_link").html(response); | 136 | jQuery("#forgot_link").html(response); |
| @@ -162,7 +158,7 @@ | @@ -162,7 +158,7 @@ | ||
| 162 | 158 | ||
| 163 | jQuery("#profile_data_country").find(':not(:selected)').css('display', (gov_suffix?'none':'block')); | 159 | jQuery("#profile_data_country").find(':not(:selected)').css('display', (gov_suffix?'none':'block')); |
| 164 | 160 | ||
| 165 | - check_reactivate_account(value, input_object) | 161 | + check_reactivate_account(value, input_object); |
| 166 | } | 162 | } |
| 167 | 163 | ||
| 168 | function validate_email_format(){ | 164 | function validate_email_format(){ |
| @@ -233,7 +229,7 @@ | @@ -233,7 +229,7 @@ | ||
| 233 | } | 229 | } |
| 234 | 230 | ||
| 235 | function invalid_name_validation(text) { | 231 | function invalid_name_validation(text) { |
| 236 | - if( text.trim().length == 0 ) { | 232 | + if( text.trim().length === 0 ) { |
| 237 | return true; | 233 | return true; |
| 238 | } | 234 | } |
| 239 | 235 | ||
| @@ -288,7 +284,7 @@ | @@ -288,7 +284,7 @@ | ||
| 288 | } | 284 | } |
| 289 | 285 | ||
| 290 | function invalid_email_validation(value, allow_blank) { | 286 | function invalid_email_validation(value, allow_blank) { |
| 291 | - if( allow_blank && value.trim().length == 0 ) { | 287 | + if( allow_blank && value.trim().length === 0 ) { |
| 292 | return false; | 288 | return false; |
| 293 | } | 289 | } |
| 294 | 290 | ||
| @@ -305,9 +301,9 @@ | @@ -305,9 +301,9 @@ | ||
| 305 | //End generic | 301 | //End generic |
| 306 | 302 | ||
| 307 | function get_privacy_selector_parent_div(field_id, actual) { | 303 | function get_privacy_selector_parent_div(field_id, actual) { |
| 308 | - if( actual == undefined ) actual = jQuery(field_id); | 304 | + if( actual === undefined ) actual = jQuery(field_id); |
| 309 | 305 | ||
| 310 | - if( actual.is("form") || actual.length == 0 ) return null; // Not allow recursion over form | 306 | + if( actual.is("form") || actual.length === 0 ) return null; // Not allow recursion over form |
| 311 | 307 | ||
| 312 | if( actual.hasClass("field-with-privacy-selector") ) { | 308 | if( actual.hasClass("field-with-privacy-selector") ) { |
| 313 | return actual; | 309 | return actual; |
| @@ -346,7 +342,7 @@ | @@ -346,7 +342,7 @@ | ||
| 346 | 342 | ||
| 347 | function change_edit_fields_order() { | 343 | function change_edit_fields_order() { |
| 348 | var form = jQuery("#profile-data"); | 344 | var form = jQuery("#profile-data"); |
| 349 | - if( form.length != 0 ) { | 345 | + if( form.length !== 0 ) { |
| 350 | var containers = get_edit_fields_in_insertion_order(); | 346 | var containers = get_edit_fields_in_insertion_order(); |
| 351 | 347 | ||
| 352 | containers.reverse(); | 348 | containers.reverse(); |
| @@ -360,12 +356,10 @@ | @@ -360,12 +356,10 @@ | ||
| 360 | jQuery(document).ready(function(){ | 356 | jQuery(document).ready(function(){ |
| 361 | change_edit_fields_order(); // To change the fields order, it MUST be the first function executed | 357 | change_edit_fields_order(); // To change the fields order, it MUST be the first function executed |
| 362 | 358 | ||
| 363 | - var selectFieldChoices = new SelectFieldChoices(); | 359 | + var selectFieldChoices = new SelectFieldChoices("#state_field", "#city_field", "/plugin/mpog_software/get_brazil_states"); |
| 364 | set_initial_form_custom_data(selectFieldChoices); | 360 | set_initial_form_custom_data(selectFieldChoices); |
| 365 | 361 | ||
| 366 | - jQuery('#secondary_email_field').blur( | ||
| 367 | - validate_email_format | ||
| 368 | - ); | 362 | + jQuery('#secondary_email_field').blur(validate_email_format); |
| 369 | 363 | ||
| 370 | jQuery("#user_email").blur(put_brazil_based_on_email); | 364 | jQuery("#user_email").blur(put_brazil_based_on_email); |
| 371 | 365 | ||
| @@ -381,15 +375,16 @@ | @@ -381,15 +375,16 @@ | ||
| 381 | if( this.value == "-1" ) jQuery(this).val("BR"); | 375 | if( this.value == "-1" ) jQuery(this).val("BR"); |
| 382 | 376 | ||
| 383 | if( this.value == "BR" && selectFieldChoices.actualFieldIsInput() ) { | 377 | if( this.value == "BR" && selectFieldChoices.actualFieldIsInput() ) { |
| 384 | - selectFieldChoices.setSelect(); | ||
| 385 | - selectFieldChoices.setShowCity(); | 378 | + selectFieldChoices.replaceStateWithSelectElement(); |
| 379 | + selectFieldChoices.showCity(); | ||
| 386 | } else if( this.value != "BR" && !selectFieldChoices.actualFieldIsInput() ) { | 380 | } else if( this.value != "BR" && !selectFieldChoices.actualFieldIsInput() ) { |
| 387 | - selectFieldChoices.setInput(); | ||
| 388 | - selectFieldChoices.setHideCity(); | 381 | + selectFieldChoices.replaceStateWithInputElement(); |
| 382 | + selectFieldChoices.hideCity(); | ||
| 389 | } | 383 | } |
| 390 | }); | 384 | }); |
| 391 | 385 | ||
| 392 | show_or_hide_phone_mask(); | 386 | show_or_hide_phone_mask(); |
| 387 | + jQuery("#profile_data_birth_date").mask("99/99/9999"); | ||
| 393 | 388 | ||
| 394 | fix_phone_mask_format("#profile_data_cell_phone"); | 389 | fix_phone_mask_format("#profile_data_cell_phone"); |
| 395 | fix_phone_mask_format("#profile_data_comercial_phone"); | 390 | fix_phone_mask_format("#profile_data_comercial_phone"); |