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("

"+response.message+"

"+errors); @@ -271,9 +279,7 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] function add_mask_to_form_items() { - if ($.mask) { - $("#institutions_cnpj").mask("99.999.999/9999-99"); - } + $("#institutions_cnpj").mask("99.999.999/9999-99"); } diff --git a/src/noosfero-spb/gov_user/public/views/institution-modal.js b/src/noosfero-spb/gov_user/public/views/institution-modal.js index 829c0a6..e89038b 100644 --- a/src/noosfero-spb/gov_user/public/views/institution-modal.js +++ b/src/noosfero-spb/gov_user/public/views/institution-modal.js @@ -1,8 +1,8 @@ /* globals modulejs */ modulejs.define('InstitutionModal', - ['jquery', 'NoosferoRoot', 'CreateInstitution', 'ModalObserver'], - function($, NoosferoRoot, CreateInstitution, ModalObserver) + ['jquery', 'NoosferoRoot', 'CreateInstitution'], + function($, NoosferoRoot, CreateInstitution) { 'use strict'; @@ -11,32 +11,15 @@ modulejs.define('InstitutionModal', NoosferoRoot.urlWithSubDirectory("/plugin/gov_user/create_institution"), }; - // When the modal is closed, put the community name into the autocomplete - function observer_action() { - var community_name = $("#community_name").val(); - $("#input_institution").attr("value", community_name).autocomplete("search"); - - // Clear error messages - $("#create_institution_errors").html(""); - } - - // Observe when modal is closed - function observe_modal() { - var institution_modal = document.querySelector("#institution_modal"); - ModalObserver.init(institution_modal, observer_action); - } - - + // Get the modal html code and prepare it function prepare_institution_modal() { - $.get(AJAX_URL.create_institution_modal, function(response){ + $.get(AJAX_URL.create_institution_modal, function(response) { window.sessionStorage.setItem("InstitutionModalBody", response); $("#institution_modal_body").html(response); // Set all events on modal CreateInstitution.init(); }); - - $("#create_institution_link").click(observe_modal); } diff --git a/src/noosfero-spb/gov_user/test/unit/private_institution_test.rb b/src/noosfero-spb/gov_user/test/unit/private_institution_test.rb index 8f01e95..0f04532 100644 --- a/src/noosfero-spb/gov_user/test/unit/private_institution_test.rb +++ b/src/noosfero-spb/gov_user/test/unit/private_institution_test.rb @@ -19,10 +19,13 @@ class PrivateInstitutionTest < ActiveSupport::TestCase Institution.destroy_all end - should "save without a cnpj" do + should "not save without a cnpj" do @institution.cnpj = nil - assert @institution.save + assert_equal false, @institution.save + + @institution.cnpj = "11.111.111/1111-11" + assert_equal true, @institution.save end should "save without fantasy name" do @@ -31,4 +34,10 @@ class PrivateInstitutionTest < ActiveSupport::TestCase assert @institution.save end + + should "not verify cnpj if it isnt a brazilian institution" do + @institution.cnpj = nil + @institution.community.country = "AR" + assert_equal true, @institution.save + end end diff --git a/src/noosfero-spb/gov_user/test/unit/public_institution_test.rb b/src/noosfero-spb/gov_user/test/unit/public_institution_test.rb index 9f37965..cfb6220 100644 --- a/src/noosfero-spb/gov_user/test/unit/public_institution_test.rb +++ b/src/noosfero-spb/gov_user/test/unit/public_institution_test.rb @@ -65,4 +65,15 @@ class PublicInstitutionTest < ActiveSupport::TestCase assert !@institution.save assert @institution.errors.full_messages.include? invalid_msg end + + + should "verify cnpj format if it is filled" do + @institution.cnpj = "123456789" + + assert_equal false, @institution.save + + @institution.cnpj = "11.222.333/4444-55" + + assert_equal true, @institution.save + end end diff --git a/src/noosfero-spb/gov_user/views/gov_user_plugin/_institution.html.erb b/src/noosfero-spb/gov_user/views/gov_user_plugin/_institution.html.erb index ac44b0c..c7d1d2e 100644 --- a/src/noosfero-spb/gov_user/views/gov_user_plugin/_institution.html.erb +++ b/src/noosfero-spb/gov_user/views/gov_user_plugin/_institution.html.erb @@ -2,7 +2,7 @@
<% if environment.enabled?('admin_must_approve_new_communities') %>
- <%= _("Note that the creation of communities in this environment is restricted. Your request to create this new community will be sent to %{environment} administrators and will be approved or rejected according to their methods and criteria.") % { :environment => environment.name }%> + <%= _("Note that the creation of institutions in this environment is restricted. Your request to create this new community will be sent to %{environment} administrators and will be approved or rejected according to their methods and criteria.") % { :environment => environment.name }%>
<% end %>
@@ -107,7 +107,7 @@
<%= inst.text_field(:cnpj, :placeholder=>"99.999.999/9999-99", :class=>"intitution_cnpj_field", :value => params[:institutions][:cnpj]) %>
@@ -154,7 +154,7 @@ <%= inst.select(:juridical_nature, @juridical_nature, :selected=>params[:institutions][:juridical_nature], :class => flash[:error_institution_juridical_nature])%> - +
<%= _("SISP ?") %> diff --git a/src/noosfero-spb/noosfero-spb-theme/css/modal.css b/src/noosfero-spb/noosfero-spb-theme/css/modal.css index 13b29fe..a1d8500 100644 --- a/src/noosfero-spb/noosfero-spb-theme/css/modal.css +++ b/src/noosfero-spb/noosfero-spb-theme/css/modal.css @@ -161,11 +161,18 @@ .modal .explanation { color: #3F60C6; font-size: 12px; + font-style: normal; + font-family: 'open_sansitalic'; } .modal .required-field, .modal .errorExplanation { color: #EA1C00; font-size:12px; + margin-bottom: 20px; +} + +.modal .required-field, .modal .errorExplanation:empty { + margin-bottom: 0px; } .modal .spb-row { -- libgit2 0.21.2