diff --git a/src/noosfero-spb/gov_user/lib/gov_user_plugin.rb b/src/noosfero-spb/gov_user/lib/gov_user_plugin.rb index 25b2006..e12eb41 100644 --- a/src/noosfero-spb/gov_user/lib/gov_user_plugin.rb +++ b/src/noosfero-spb/gov_user/lib/gov_user_plugin.rb @@ -148,7 +148,6 @@ class GovUserPlugin < Noosfero::Plugin lib/noosfero-root.js lib/select-element.js lib/select-field-choices.js - lib/modal-observer.js views/complete-registration.js views/control-panel.js views/create-institution.js diff --git a/src/noosfero-spb/gov_user/lib/institution.rb b/src/noosfero-spb/gov_user/lib/institution.rb index 13677d4..8c8491e 100644 --- a/src/noosfero-spb/gov_user/lib/institution.rb +++ b/src/noosfero-spb/gov_user/lib/institution.rb @@ -6,6 +6,8 @@ class Institution < ActiveRecord::Base :display => %w[compact] } + CNPJ_FORMAT = /^\d{2}\.\d{3}\.\d{3}\/\d{4}\-\d{2}$/ + def self.default_search_display 'compact' end @@ -23,7 +25,7 @@ class Institution < ActiveRecord::Base :corporate_name, :siorg_code, :community validates :name, :presence=>true, :uniqueness=>true - validates :cnpj, :presence=>true, :uniqueness=>true + validates :cnpj, :length=>{maximum: 18} before_save :verify_institution_type @@ -34,7 +36,7 @@ class Institution < ActiveRecord::Base } validate :validate_country, :validate_state, :validate_city, - :verify_institution_type, :validate_format_cnpj + :verify_institution_type def has_accepted_rating? user_rating @@ -99,18 +101,4 @@ class Institution < ActiveRecord::Base return true end - - def validate_format_cnpj - return true if self.community.blank? && self.community.country != "BR" - return true if self.cnpj.blank? - - format = /^\d{2}\.\d{3}\.\d{3}\/\d{4}\-\d{2}$/ - - if !self.cnpj.blank? && format.match(self.cnpj) - return true - else - self.errors.add(:cnpj, _("invalid format")) - return false - end - end end diff --git a/src/noosfero-spb/gov_user/lib/private_institution.rb b/src/noosfero-spb/gov_user/lib/private_institution.rb index db490d2..24028d8 100644 --- a/src/noosfero-spb/gov_user/lib/private_institution.rb +++ b/src/noosfero-spb/gov_user/lib/private_institution.rb @@ -1,2 +1,14 @@ class PrivateInstitution < Institution + validates :cnpj, + :presence=>true, + :format => {with: CNPJ_FORMAT}, + :if => :is_a_brazilian_institution? + + validates :cnpj, + :uniqueness=>true, :unless => 'cnpj.blank?' + + private + def is_a_brazilian_institution? + self.community.country == "BR" + end end diff --git a/src/noosfero-spb/gov_user/lib/public_institution.rb b/src/noosfero-spb/gov_user/lib/public_institution.rb index 33d13eb..ffc4677 100644 --- a/src/noosfero-spb/gov_user/lib/public_institution.rb +++ b/src/noosfero-spb/gov_user/lib/public_institution.rb @@ -5,9 +5,7 @@ class PublicInstitution < Institution validates :acronym, :allow_blank => true, :allow_nil => true, :uniqueness=>true - validates_format_of( - :cnpj, - :with => /^\d{2}\.\d{3}\.\d{3}\/\d{4}\-\d{2}$/, - :allow_nil => true, :allow_blank => true - ) + validates :cnpj, + :format => {with: CNPJ_FORMAT}, + :unless => 'cnpj.blank?' end diff --git a/src/noosfero-spb/gov_user/po/pt/gov_user.po b/src/noosfero-spb/gov_user/po/pt/gov_user.po index 13c474a..a7b4d83 100644 --- a/src/noosfero-spb/gov_user/po/pt/gov_user.po +++ b/src/noosfero-spb/gov_user/po/pt/gov_user.po @@ -172,7 +172,7 @@ msgstr "Nome de Instituição já existe" #: plugins/gov_user/views/gov_user_plugin_myprofile/edit_institution.html.erb:44 #: plugins/gov_user/views/gov_user_plugin/_institution.html.erb:62 msgid "Corporate Name" -msgstr "Razão social" +msgstr "Razão Social" #: plugins/gov_user/views/gov_user_plugin_myprofile/edit_institution.html.erb:49 #: plugins/gov_user/views/gov_user_plugin/_institution.html.erb:79 diff --git a/src/noosfero-spb/gov_user/public/lib/modal-observer.js b/src/noosfero-spb/gov_user/public/lib/modal-observer.js deleted file mode 100644 index 1325f00..0000000 --- a/src/noosfero-spb/gov_user/public/lib/modal-observer.js +++ /dev/null @@ -1,36 +0,0 @@ -/* globals modulejs */ - -// Works on: IE 11, Edge 12+, Firefox 40+, Chrome 43+, Opera 32+, Safari 32+ -modulejs.define("ModalObserver", function() { - "use strict"; - - function ModalObserver(target, callback) { - this.action_callback = callback; - this.observer = new MutationObserver(this.mutationVerifier.bind(this)); - - this.observer.observe(target, {attributes: true}); - } - - - ModalObserver.prototype.mutationVerifier = function(mutations) { - var callback = this.action_callback; - var observer = this.observer; - - mutations.forEach(function(mutation) { - if (mutation.attributeName === "style" && - mutation.target.style.display === "none") - { - callback(); - // stop the observer, once its action is done - observer.disconnect(); - } - }); - }; - - - return { - init: function(target, callback) { - new ModalObserver(target, callback); - } - }; -}); diff --git a/src/noosfero-spb/gov_user/public/views/create-institution.js b/src/noosfero-spb/gov_user/public/views/create-institution.js index 4652d7a..7db3634 100644 --- a/src/noosfero-spb/gov_user/public/views/create-institution.js +++ b/src/noosfero-spb/gov_user/public/views/create-institution.js @@ -21,6 +21,7 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] function show_public_institutions_fields() { $(".public-institutions-fields").show(); + $("#cnpj_required_field_mark").html(""); } @@ -28,6 +29,7 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] $(".public-institutions-fields").hide(); $("#institutions_governmental_power option").selected(0); $("#institutions_governmental_sphere option").selected(0); + $("#cnpj_required_field_mark").html("(*)"); } @@ -64,6 +66,17 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] } + // If the page has a user institution list, update it without repeating the institution + function update_user_institutions_list() { + $(".institution_container").append(get_clone_institution_data(institution_id)); + add_selected_institution_to_list(institution_id, institution_name); + + $(".remove-institution").click(remove_institution); + //$('#institution_dialog').dialog('close'); + $('#institution_modal').modal('toggle'); + } + + function success_ajax_response(response) { close_loading(); @@ -75,24 +88,19 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] window.display_notice(response.message); set_institution_field_name($("#community_name").val()); - //settup_created_institution(); // Close modal - //$(".modal-header .close").trigger("click"); + $(".modal-header .close").trigger("click"); // Clear modal fields $("#institution_modal_body").html(window.sessionStorage.getItem("InstitutionModalBody")); + $(".modal .modal-body div").show(); // Reset modal events init_module(); - - // If the page has a user institution list, update it without repeating the institution - $(".institution_container").append(get_clone_institution_data(institution_id)); - add_selected_institution_to_list(institution_id, institution_name); - $(".remove-institution").click(remove_institution); - //$('#institution_dialog').dialog('close'); - $('#institution_modal').modal('toggle'); + // If the user is is his profile edition page + update_user_institutions_list(); } else { var errors = create_error_list(response); $("#create_institution_errors").switchClass("hide-field", "show-field").html("