diff --git a/controllers/software_communities_plugin_controller.rb b/controllers/software_communities_plugin_controller.rb
index 749dbb6..dcf0e84 100644
--- a/controllers/software_communities_plugin_controller.rb
+++ b/controllers/software_communities_plugin_controller.rb
@@ -1,19 +1,6 @@
require 'csv'
class SoftwareCommunitiesPluginController < ApplicationController
- def check_reactivate_account
- if request.xhr? && params[:email]
- result = ""
- user = User.where(:email => params[:email])
-
- if user.length == 1 && !user[0].person.visible
- result = " Reactive account"
- end
-
- render :json => result.to_json
- end
- end
-
def hide_registration_incomplete_percentage
response = false
diff --git a/lib/software_communities_plugin.rb b/lib/software_communities_plugin.rb
index f2b2f68..48ae52c 100644
--- a/lib/software_communities_plugin.rb
+++ b/lib/software_communities_plugin.rb
@@ -119,7 +119,6 @@ class SoftwareCommunitiesPlugin < Noosfero::Plugin
end
def js_files
- #mpog-user-validations.js
%w(
vendor/jquery.maskedinput.min.js
vendor/modulejs-1.5.0.min.js
@@ -134,7 +133,6 @@ class SoftwareCommunitiesPlugin < Noosfero::Plugin
views/user-edit-profile.js
initializer.js
app.js
-
mpog-institution-validations.js
mpog-incomplete-registration.js
mpog-search.js
diff --git a/public/mpog-user-validations.js b/public/mpog-user-validations.js
deleted file mode 100644
index eb92ded..0000000
--- a/public/mpog-user-validations.js
+++ /dev/null
@@ -1,332 +0,0 @@
-(function(){
- var AJAX_URL = {
- check_reactivate_account:
- url_with_subdirectory("/plugin/software_communities/check_reactivate_account")
- };
-
-
- /*
- * "Class" that switch state field between input and select
- * If the Country if Brazil, set state to select field
- * else set it as a input field
- */
- var SelectFieldChoices = (function() {
- function SelectFieldChoices(state_id, city_id, state_url) {
- this.state_id = state_id;
- this.input_html = jQuery(state_id).parent().html();
- this.old_value = jQuery(state_id).val();
- this.city_parent_div = jQuery(city_id).parent().parent().parent();
- this.state_url = state_url;
- }
-
- SelectFieldChoices.prototype.getCurrentStateElement = function() {
- return jQuery(this.state_id);
- };
-
- SelectFieldChoices.prototype.replaceWith = function(html) {
- var parent_div = this.getCurrentStateElement().parent();
- parent_div.html(html);
- };
-
- SelectFieldChoices.prototype.generateSelect = function(state_list) {
- var select_element, option;
-
- select_element = new SelectElement();
- select_element.setAttr("name", "profile_data[state]");
- select_element.setAttr("id", "state_field");
- select_element.setAttr("class", "type-select valid");
-
- state_list.forEach(function(state) {
- option = SelectElement.generateOption(state, state);
- select_element.addOption(option);
- });
-
- return select_element.getSelect();
- };
-
- SelectFieldChoices.prototype.replaceStateWithSelectElement = function() {
- var klass = this;
-
- jQuery.get(this.state_url, function(response) {
- var select_html;
-
- if (response.length > 0) {
- select_html = klass.generateSelect(response);
- klass.replaceWith(select_html);
-
- if (klass.old_value.length !== 0 && response.include(klass.old_value)) {
- klass.getCurrentStateElement().val(klass.old_value);
- }
- }
- });
- };
-
- SelectFieldChoices.prototype.replaceStateWithInputElement = function() {
- this.replaceWith(this.input_html);
- };
-
- SelectFieldChoices.prototype.hideCity = function() {
- this.city_parent_div.addClass("mpog_hidden_field");
- };
-
- SelectFieldChoices.prototype.showCity = function() {
- this.city_parent_div.removeClass("mpog_hidden_field");
- };
-
- SelectFieldChoices.prototype.actualFieldIsInput = function() {
- return this.getCurrentStateElement().attr("type") === "text";
- };
-
- return SelectFieldChoices;
- })();
-
- function set_form_count_custom_data() {
- var divisor_option = SelectElement.generateOption("-1", "--------------------------------");
- var default_option = SelectElement.generateOption("BR", "Brazil");
-
- jQuery('#profile_data_country').find("option[value='']").remove();
- jQuery('#profile_data_country').prepend(divisor_option);
- jQuery('#profile_data_country').prepend(default_option);
- jQuery('#profile_data_country').val("BR");
- }
-
- function set_initial_form_custom_data(selectFieldChoices) {
- set_form_count_custom_data();
-
- jQuery("#password-balloon").html(jQuery("#user_password_menssage").val());
- jQuery("#profile_data_email").parent().append(jQuery("#email_public_message").remove());
-
- if( jQuery("#state_field").length !== 0 ) selectFieldChoices.replaceStateWithSelectElement();
- }
-
- function check_reactivate_account(value, input_object){
- jQuery.ajax({
- url : AJAX_URL.check_reactivate_account,
- type: "GET",
- data: { "email": value },
- success: function(response) {
- if( jQuery("#forgot_link").length === 0 )
- jQuery(input_object).parent().append(response);
- else
- jQuery("#forgot_link").html(response);
- },
- error: function(type, err, message) {
- console.log(type+" -- "+err+" -- "+message);
- }
- });
- }
-
- function put_brazil_based_on_email(){
- var suffixes = ['gov.br', 'jus.br', 'leg.br', 'mp.br'];
- var value = this.value;
- var input_object = this;
- var gov_suffix = false;
-
- suffixes.each(function(suffix){
- var has_suffix = new RegExp("(.*)"+suffix+"$", "i");
-
- if( has_suffix.test(value) ) {
- gov_suffix = true;
- jQuery("#profile_data_country").val("BR");
- }
- });
-
- jQuery("#profile_data_country").find(':not(:selected)').css('display', (gov_suffix?'none':'block'));
-
- check_reactivate_account(value, input_object);
- }
-
- function validate_email_format(){
- var correct_format_regex = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/;
-
- if( this.value.length > 0 ) {
- if(correct_format_regex.test(this.value))
- this.className = "validated";
- else
- this.className = "invalid";
- } else
- this.className = "";
- }
-
- function verify_user_password_size() {
- if( this.value.length < 6 ) {
- jQuery(this).switchClass("validated", "invalid");
- } else {
- jQuery(this).switchClass("invalid", "validated");
- }
- }
-
- function show_or_hide_phone_mask() {
- if(jQuery("#profile_data_country").val() == "BR") {
- if( (typeof jQuery("#profile_data_cell_phone").data("rawMaskFn") === 'undefined') ) {
- jQuery("#profile_data_cell_phone").mask("(99) 9999?9-9999");
- jQuery("#profile_data_comercial_phone").mask("(99) 9999?9-9999");
- jQuery("#profile_data_contact_phone").mask("(99) 9999?9-9999");
- }
- } else {
- jQuery("#profile_data_cell_phone").unmask();
- jQuery("#profile_data_comercial_phone").unmask();
- jQuery("#profile_data_contact_phone").unmask();
- }
- }
-
- function fix_phone_mask_format(id) {
- jQuery(id).blur(function() {
- var last = jQuery(this).val().substr( jQuery(this).val().indexOf("-") + 1 );
-
- if( last.length == 3 ) {
- var move = jQuery(this).val().substr( jQuery(this).val().indexOf("-") - 1, 1 );
- var lastfour = move + last;
- var first = jQuery(this).val().substr( 0, 9 );
-
- jQuery(this).val( first + '-' + lastfour );
- }
- });
- }
-
- // Generic
- function show_plugin_error_message(field_selector, hidden_message_id ) {
- var field = jQuery(field_selector);
-
- field.removeClass("validated").addClass("invalid");
-
- if(!jQuery("." + hidden_message_id)[0]) {
- var message = jQuery("#" + hidden_message_id).val();
- field.parent().append("
"+message+"");
- } else {
- jQuery("." + hidden_message_id).show();
- }
- }
-
- function hide_plugin_error_message(field_selector, hidden_message_id) {
- jQuery(field_selector).removeClass("invalid").addClass("validated");
- jQuery("." + hidden_message_id).hide();
- }
-
- function addBlurFields(field_selector, hidden_message_id, validation_function, allow_blank) {
- jQuery(field_selector).blur(function(){
- jQuery(this).attr("class", "");
-
- if( validation_function(this.value, !!allow_blank) ) {
- show_plugin_error_message(field_selector, hidden_message_id);
- } else {
- hide_plugin_error_message(field_selector, hidden_message_id);
- }
- });
- }
-
- function invalid_email_validation(value, allow_blank) {
- if( allow_blank && value.trim().length === 0 ) {
- return false;
- }
-
- var correct_format_regex = new RegExp(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/);
-
- return !correct_format_regex.test(value);
- }
-
- function invalid_site_validation(value) {
- var correct_format_regex = new RegExp(/(^|)(http[s]{0,1})\:\/\/(\w+[.])\w+/g);
-
- return !correct_format_regex.test(value);
- }
- //End generic
-
- function get_privacy_selector_parent_div(field_id, actual) {
- if( actual === undefined ) actual = jQuery(field_id);
-
- if( actual.is("form") || actual.length === 0 ) return null; // Not allow recursion over form
-
- if( actual.hasClass("field-with-privacy-selector") ) {
- return actual;
- } else {
- return get_privacy_selector_parent_div(field_id, actual.parent());
- }
- }
-
- function try_to_remove(list, field) {
- try {
- list.push(field.remove());
- } catch(e) {
- console.log("Cound not remove field");
- }
- }
-
- function get_edit_fields_in_insertion_order() {
- var containers = [];
-
- try_to_remove(containers, jQuery("h2")[0]);
- try_to_remove(containers, jQuery(".pseudoformlabel").parent().parent());
- try_to_remove(containers, get_privacy_selector_parent_div("#profile_data_name"));
- try_to_remove(containers, get_privacy_selector_parent_div("#profile_data_email"));
- try_to_remove(containers, jQuery("#user_secondary_email").parent().parent());
- try_to_remove(containers, jQuery("#select_institution"));
- try_to_remove(containers, get_privacy_selector_parent_div("#profile_data_cell_phone"));
- try_to_remove(containers, get_privacy_selector_parent_div("#profile_data_contact_phone"));
- try_to_remove(containers, get_privacy_selector_parent_div("#profile_data_comercial_phone"));
- try_to_remove(containers, get_privacy_selector_parent_div("#profile_data_personal_website"));
- try_to_remove(containers, get_privacy_selector_parent_div("#profile_data_organization_website"));
- try_to_remove(containers, get_privacy_selector_parent_div("#profile_data_birth_date"));
- try_to_remove(containers, get_privacy_selector_parent_div("#profile_data_country"));
- try_to_remove(containers, get_privacy_selector_parent_div("#state_field"));
- try_to_remove(containers, get_privacy_selector_parent_div("#city_field"));
-
- return containers;
- }
-
- function change_edit_fields_order() {
- var form = jQuery("#profile-data");
- if( form.length !== 0 ) {
- var containers = get_edit_fields_in_insertion_order();
-
- containers.reverse();
-
- containers.forEach(function(container){
- form.prepend(container);
- });
- }
- }
-
- jQuery(document).ready(function(){
- change_edit_fields_order(); // To change the fields order, it MUST be the first function executed
-
- var selectFieldChoices = new SelectFieldChoices("#state_field", "#city_field", "/plugin/software_communities/get_brazil_states");
- set_initial_form_custom_data(selectFieldChoices);
-
- jQuery('#secondary_email_field').blur(validate_email_format);
-
- jQuery("#user_email").blur(put_brazil_based_on_email);
-
- jQuery('#secondary_email_field').focus(function() { jQuery('#secondary-email-balloon').fadeIn('slow'); });
- jQuery('#secondary_email_field').blur(function() { jQuery('#secondary-email-balloon').fadeOut('slow'); });
-
- jQuery("#user_pw").blur(verify_user_password_size);
-
- jQuery("#profile_data_country").blur(show_or_hide_phone_mask);
-
- // Event that calls the "Class" to siwtch state field types
- jQuery("#profile_data_country").change(function(){
- if( this.value == "-1" ) jQuery(this).val("BR");
-
- if( this.value == "BR" && selectFieldChoices.actualFieldIsInput() ) {
- selectFieldChoices.replaceStateWithSelectElement();
- selectFieldChoices.showCity();
- } else if( this.value != "BR" && !selectFieldChoices.actualFieldIsInput() ) {
- selectFieldChoices.replaceStateWithInputElement();
- selectFieldChoices.hideCity();
- }
- });
-
- show_or_hide_phone_mask();
- jQuery("#profile_data_birth_date").mask("99/99/9999");
-
- fix_phone_mask_format("#profile_data_cell_phone");
- fix_phone_mask_format("#profile_data_comercial_phone");
- fix_phone_mask_format("#profile_data_contact_phone");
-
- addBlurFields("#profile_data_email", "email_error", invalid_email_validation);
- addBlurFields("#user_secondary_email", "email_error", invalid_email_validation, true);
- addBlurFields("#profile_data_personal_website", "site_error", invalid_site_validation);
- addBlurFields("#profile_data_organization_website", "site_error", invalid_site_validation);
- });
-})();
diff --git a/public/views/user-edit-profile.js b/public/views/user-edit-profile.js
index 51a78d6..1e70c43 100644
--- a/public/views/user-edit-profile.js
+++ b/public/views/user-edit-profile.js
@@ -1,12 +1,6 @@
-modulejs.define('UserEditProfile', ['jquery', 'NoosferoRoot', 'SelectElement', 'SelectFieldChoices'], function($, NoosferoRoot, SelectElement, SelectFieldChoices) {
+modulejs.define('UserEditProfile', ['jquery', 'SelectElement', 'SelectFieldChoices'], function($, SelectElement, SelectFieldChoices) {
'use strict';
- var AJAX_URL = {
- check_reactivate_account:
- NoosferoRoot.urlWithSubDirectory("/plugin/software_communities/check_reactivate_account")
- };
-
-
function set_form_count_custom_data() {
var divisor_option = SelectElement.generateOption("-1", "--------------------------------");
var default_option = SelectElement.generateOption("BR", "Brazil");
@@ -28,71 +22,26 @@ modulejs.define('UserEditProfile', ['jquery', 'NoosferoRoot', 'SelectElement', '
}
- function check_reactivate_account(value, input_object){
- $.ajax({
- url : AJAX_URL.check_reactivate_account,
- type: "GET",
- data: { "email": value },
- success: function(response) {
- if( $("#forgot_link").length === 0 )
- $(input_object).parent().append(response);
- else
- $("#forgot_link").html(response);
- },
- error: function(type, err, message) {
- console.log(type+" -- "+err+" -- "+message);
- }
- });
- }
-
-
- function put_brazil_based_on_email(){
- var suffixes = ['gov.br', 'jus.br', 'leg.br', 'mp.br'];
- var value = this.value;
- var input_object = this;
- var gov_suffix = false;
+ function show_state_if_country_is_brazil() {
+ var selectFieldChoices = new SelectFieldChoices("#state_field", "#city_field", "/plugin/software_communities/get_brazil_states");
+ set_initial_form_custom_data(selectFieldChoices);
- suffixes.each(function(suffix){
- var has_suffix = new RegExp("(.*)"+suffix+"$", "i");
+ $("#profile_data_country").change(function(){
+ if( this.value === "-1" ) $(this).val("BR");
- if( has_suffix.test(value) ) {
- gov_suffix = true;
- $("#profile_data_country").val("BR");
+ if( this.value === "BR" && selectFieldChoices.actualFieldIsInput() ) {
+ selectFieldChoices.replaceStateWithSelectElement();
+ selectFieldChoices.showCity();
+ } else if( this.value !== "BR" && !selectFieldChoices.actualFieldIsInput() ) {
+ selectFieldChoices.replaceStateWithInputElement();
+ selectFieldChoices.hideCity();
}
});
-
- $("#profile_data_country").find(':not(:selected)').css('display', (gov_suffix?'none':'block'));
-
- check_reactivate_account(value, input_object);
- }
-
-
- function validate_email_format(){
- var correct_format_regex = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/;
-
- if( this.value.length > 0 ) {
- if(correct_format_regex.test(this.value)) {
- this.className = "validated";
- } else {
- this.className = "invalid";
- }
- } else {
- this.className = "";
- }
- }
-
-
- function verify_user_password_size() {
- if( this.value.length < 6 ) {
- $(this).switchClass("validated", "invalid");
- } else {
- $(this).switchClass("invalid", "validated");
- }
}
function show_or_hide_phone_mask() {
- if($("#profile_data_country").val() == "BR") {
+ if($("#profile_data_country").val() === "BR") {
if( (typeof $("#profile_data_cell_phone").data("rawMaskFn") === 'undefined') ) {
$("#profile_data_cell_phone").mask("(99) 9999?9-9999");
$("#profile_data_comercial_phone").mask("(99) 9999?9-9999");
@@ -110,7 +59,7 @@ modulejs.define('UserEditProfile', ['jquery', 'NoosferoRoot', 'SelectElement', '
$(id).blur(function() {
var last = $(this).val().substr( $(this).val().indexOf("-") + 1 );
- if( last.length == 3 ) {
+ if( last.length === 3 ) {
var move = $(this).val().substr( $(this).val().indexOf("-") - 1, 1 );
var lastfour = move + last;
var first = $(this).val().substr( 0, 9 );
@@ -231,13 +180,18 @@ modulejs.define('UserEditProfile', ['jquery', 'NoosferoRoot', 'SelectElement', '
function set_fields_validations() {
- $('#secondary_email_field').blur(validate_email_format);
+ $("#profile_data_country").blur(show_or_hide_phone_mask);
- $("#user_email").blur(put_brazil_based_on_email);
+ $("#profile_data_birth_date").mask("99/99/9999");
- $("#user_pw").blur(verify_user_password_size);
+ fix_phone_mask_format("#profile_data_cell_phone");
+ fix_phone_mask_format("#profile_data_comercial_phone");
+ fix_phone_mask_format("#profile_data_contact_phone");
- $("#profile_data_country").blur(show_or_hide_phone_mask);
+ add_blur_fields("#profile_data_email", "email_error", invalid_email_validation);
+ add_blur_fields("#user_secondary_email", "email_error", invalid_email_validation, true);
+ add_blur_fields("#profile_data_personal_website", "site_error", invalid_site_validation);
+ add_blur_fields("#profile_data_organization_website", "site_error", invalid_site_validation);
}
@@ -250,35 +204,11 @@ modulejs.define('UserEditProfile', ['jquery', 'NoosferoRoot', 'SelectElement', '
init: function() {
change_edit_fields_order(); // To change the fields order, it MUST be the first function executed
- var selectFieldChoices = new SelectFieldChoices("#state_field", "#city_field", "/plugin/software_communities/get_brazil_states");
- set_initial_form_custom_data(selectFieldChoices);
-
-
-
- // Event that calls the "Class" to siwtch state field types
- $("#profile_data_country").change(function(){
- if( this.value == "-1" ) $(this).val("BR");
-
- if( this.value == "BR" && selectFieldChoices.actualFieldIsInput() ) {
- selectFieldChoices.replaceStateWithSelectElement();
- selectFieldChoices.showCity();
- } else if( this.value != "BR" && !selectFieldChoices.actualFieldIsInput() ) {
- selectFieldChoices.replaceStateWithInputElement();
- selectFieldChoices.hideCity();
- }
- });
+ show_state_if_country_is_brazil();
show_or_hide_phone_mask();
- $("#profile_data_birth_date").mask("99/99/9999");
-
- fix_phone_mask_format("#profile_data_cell_phone");
- fix_phone_mask_format("#profile_data_comercial_phone");
- fix_phone_mask_format("#profile_data_contact_phone");
- add_blur_fields("#profile_data_email", "email_error", invalid_email_validation);
- add_blur_fields("#user_secondary_email", "email_error", invalid_email_validation, true);
- add_blur_fields("#profile_data_personal_website", "site_error", invalid_site_validation);
- add_blur_fields("#profile_data_organization_website", "site_error", invalid_site_validation);
+ set_fields_validations();
}
}
});
--
libgit2 0.21.2