Commit 196401f17e5f85ac28f2aa7f82d5d3556e346406
Exists in
master
and in
19 other branches
Merge branch 'fix_edit_institution' into 'master'
Fix edit institution page Correções na página de edição da instituição - Controle de permissão - Bugs no javascript (campos do formulário ocultos indevidamente ou parcialmente) - Correção no teste funcional de edição de instituição Closes #427 See merge request !144
Showing
7 changed files
with
69 additions
and
54 deletions
Show diff stats
src/noosfero-spb/gov_user/controllers/gov_user_plugin_myprofile_controller.rb
| 1 | class GovUserPluginMyprofileController < MyProfileController | 1 | class GovUserPluginMyprofileController < MyProfileController |
| 2 | append_view_path File.join(File.dirname(__FILE__) + '/../views') | 2 | append_view_path File.join(File.dirname(__FILE__) + '/../views') |
| 3 | 3 | ||
| 4 | + protect "edit_institution", :profile | ||
| 5 | + | ||
| 4 | def index | 6 | def index |
| 5 | end | 7 | end |
| 6 | 8 | ||
| @@ -19,7 +21,7 @@ class GovUserPluginMyprofileController < MyProfileController | @@ -19,7 +21,7 @@ class GovUserPluginMyprofileController < MyProfileController | ||
| 19 | 21 | ||
| 20 | def update_institution | 22 | def update_institution |
| 21 | @institution.community.update_attributes(params[:community]) | 23 | @institution.community.update_attributes(params[:community]) |
| 22 | - @institution.update_attributes(params[:institutions].except(:governmental_power, :governmental_sphere, :juridical_nature)) | 24 | + @institution.update_attributes(params[:institutions].except(:governmental_power, :governmental_sphere, :juridical_nature).merge({:name => params[:community][:name]})) |
| 23 | if @institution.type == "PublicInstitution" | 25 | if @institution.type == "PublicInstitution" |
| 24 | begin | 26 | begin |
| 25 | governmental_updates | 27 | governmental_updates |
src/noosfero-spb/gov_user/db/migrate/20160113194207_fix_institutions_with_wrong_country.rb
0 → 100644
| @@ -0,0 +1,16 @@ | @@ -0,0 +1,16 @@ | ||
| 1 | +class FixInstitutionsWithWrongCountry < ActiveRecord::Migration | ||
| 2 | + def up | ||
| 3 | + select_all("SELECT id, data FROM profiles WHERE type = 'Community'").each do |community| | ||
| 4 | + settings = YAML.load(community['data'] || {}.to_yaml) | ||
| 5 | + if !settings[:country].nil? && settings[:country].downcase == "brasil" | ||
| 6 | + settings[:country] = 'BR' | ||
| 7 | + assignments = ActiveRecord::Base.send(:sanitize_sql_for_assignment, {:data => settings.to_yaml}) | ||
| 8 | + update("UPDATE profiles SET %s WHERE id = %d" % [assignments, community['id']]) | ||
| 9 | + end | ||
| 10 | + end | ||
| 11 | + end | ||
| 12 | + | ||
| 13 | + def down | ||
| 14 | + say "This migration can't be reverted." | ||
| 15 | + end | ||
| 16 | +end |
src/noosfero-spb/gov_user/public/views/create-institution.js
| @@ -29,6 +29,7 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] | @@ -29,6 +29,7 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] | ||
| 29 | $(".public-institutions-fields").hide(); | 29 | $(".public-institutions-fields").hide(); |
| 30 | $("#institutions_governmental_power option").selected(0); | 30 | $("#institutions_governmental_power option").selected(0); |
| 31 | $("#institutions_governmental_sphere option").selected(0); | 31 | $("#institutions_governmental_sphere option").selected(0); |
| 32 | + $("#institutions_juridical_nature option").selected(0); | ||
| 32 | $("#cnpj_required_field_mark").html("(*)"); | 33 | $("#cnpj_required_field_mark").html("(*)"); |
| 33 | } | 34 | } |
| 34 | 35 | ||
| @@ -270,8 +271,9 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] | @@ -270,8 +271,9 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] | ||
| 270 | 271 | ||
| 271 | 272 | ||
| 272 | function show_hide_cnpj_city(country) { | 273 | function show_hide_cnpj_city(country) { |
| 273 | - var cnpj = $("#institutions_cnpj").parent(); | 274 | + var cnpj = $("#institutions_cnpj").parent().parent(); |
| 274 | var city = $("#community_city").parent(); | 275 | var city = $("#community_city").parent(); |
| 276 | + var city_label = $('label[for="community_city"]'); | ||
| 275 | var state = $("#community_state").parent(); | 277 | var state = $("#community_state").parent(); |
| 276 | var inst_type = $("input[name='institutions[type]']:checked").val(); | 278 | var inst_type = $("input[name='institutions[type]']:checked").val(); |
| 277 | 279 | ||
| @@ -284,11 +286,13 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] | @@ -284,11 +286,13 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] | ||
| 284 | 286 | ||
| 285 | if ( country !== "BR" ) { | 287 | if ( country !== "BR" ) { |
| 286 | cnpj.hide(); | 288 | cnpj.hide(); |
| 287 | - city.hide(); | 289 | + city.find('input').val(''); city.hide(); |
| 290 | + city_label.hide(); | ||
| 288 | state.hide(); | 291 | state.hide(); |
| 289 | } else { | 292 | } else { |
| 290 | cnpj.show(); | 293 | cnpj.show(); |
| 291 | city.show(); | 294 | city.show(); |
| 295 | + city_label.show(); | ||
| 292 | state.show(); | 296 | state.show(); |
| 293 | } | 297 | } |
| 294 | } | 298 | } |
| @@ -368,7 +372,7 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] | @@ -368,7 +372,7 @@ modulejs.define('CreateInstitution', ['jquery', 'NoosferoRoot', 'SelectElement'] | ||
| 368 | function set_events() { | 372 | function set_events() { |
| 369 | $("input[name='institutions[type]']").click(function(){ | 373 | $("input[name='institutions[type]']").click(function(){ |
| 370 | institution_type_actions(this.value); | 374 | institution_type_actions(this.value); |
| 371 | - }).trigger("click"); | 375 | + }); |
| 372 | 376 | ||
| 373 | $('#save_institution_button').click(save_institution); | 377 | $('#save_institution_button').click(save_institution); |
| 374 | $('#cancel_institution_button').click(cancel_institution); | 378 | $('#cancel_institution_button').click(cancel_institution); |
src/noosfero-spb/gov_user/public/views/new-community.js
| @@ -2,11 +2,6 @@ | @@ -2,11 +2,6 @@ | ||
| 2 | 2 | ||
| 3 | modulejs.define("NewCommunity", ['jquery'], function($) { | 3 | modulejs.define("NewCommunity", ['jquery'], function($) { |
| 4 | 4 | ||
| 5 | - function replace_mandatory_message() { | ||
| 6 | - $(".required-field").first() | ||
| 7 | - .replaceWith("<span class='required-field'> Os campos em destaque<label class='pseudoformlabel'> (*)</label> são obrigatórios. </span>"); | ||
| 8 | - } | ||
| 9 | - | ||
| 10 | function remove_image_builder_text() { | 5 | function remove_image_builder_text() { |
| 11 | $("label:contains('Image builder')").hide(); | 6 | $("label:contains('Image builder')").hide(); |
| 12 | } | 7 | } |
| @@ -22,7 +17,6 @@ modulejs.define("NewCommunity", ['jquery'], function($) { | @@ -22,7 +17,6 @@ modulejs.define("NewCommunity", ['jquery'], function($) { | ||
| 22 | }, | 17 | }, |
| 23 | 18 | ||
| 24 | init: function() { | 19 | init: function() { |
| 25 | - replace_mandatory_message(); | ||
| 26 | remove_image_builder_text(); | 20 | remove_image_builder_text(); |
| 27 | hide_organization_template_fields(); | 21 | hide_organization_template_fields(); |
| 28 | } | 22 | } |
src/noosfero-spb/gov_user/test/functional/gov_user_plugin_myprofile_controller.rb
| @@ -18,29 +18,30 @@ class GovUserPluginMyprofileControllerTest < ActionController::TestCase | @@ -18,29 +18,30 @@ class GovUserPluginMyprofileControllerTest < ActionController::TestCase | ||
| 18 | @offer_1 = create_user('Ana de Souza') | 18 | @offer_1 = create_user('Ana de Souza') |
| 19 | @offer_2 = create_user('Angelo Roberto') | 19 | @offer_2 = create_user('Angelo Roberto') |
| 20 | 20 | ||
| 21 | - login_as(@person.user_login) | ||
| 22 | - @environment = Environment.default | ||
| 23 | - @environment.enable_plugin('GovUserPlugin') | ||
| 24 | - @environment.save! | ||
| 25 | - end | ||
| 26 | - should "user edit its community institution" do | ||
| 27 | - govPower = GovernmentalPower.create(:name=>"Some Gov Power") | ||
| 28 | - govSphere = GovernmentalSphere.create(:name=>"Some Gov Sphere") | 21 | + gov_power = GovernmentalPower.create(:name=>"Some Gov Power") |
| 22 | + gov_sphere = GovernmentalSphere.create(:name=>"Some Gov Sphere") | ||
| 29 | juridical_nature = JuridicalNature.create(:name => "Autarquia") | 23 | juridical_nature = JuridicalNature.create(:name => "Autarquia") |
| 30 | - | ||
| 31 | - institution = InstitutionTestHelper.create_public_institution( | 24 | + @institution = InstitutionTestHelper.create_public_institution( |
| 32 | "Ministerio Publico da Uniao", | 25 | "Ministerio Publico da Uniao", |
| 33 | "MPU", | 26 | "MPU", |
| 34 | "BR", | 27 | "BR", |
| 35 | "DF", | 28 | "DF", |
| 36 | "Gama", | 29 | "Gama", |
| 37 | juridical_nature, | 30 | juridical_nature, |
| 38 | - govPower, | ||
| 39 | - govSphere, | 31 | + gov_power, |
| 32 | + gov_sphere, | ||
| 40 | "12.345.678/9012-45" | 33 | "12.345.678/9012-45" |
| 41 | ) | 34 | ) |
| 42 | 35 | ||
| 43 | - identifier = institution.community.identifier | 36 | + login_as(@person.user_login) |
| 37 | + @environment = Environment.default | ||
| 38 | + @environment.enable_plugin('GovUserPlugin') | ||
| 39 | + @environment.save! | ||
| 40 | + end | ||
| 41 | + | ||
| 42 | + should "admin user edit an institution" do | ||
| 43 | + @institution.community.add_admin @person | ||
| 44 | + identifier = @institution.community.identifier | ||
| 44 | 45 | ||
| 45 | fields = InstitutionTestHelper.generate_form_fields( | 46 | fields = InstitutionTestHelper.generate_form_fields( |
| 46 | "institution new name", | 47 | "institution new name", |
| @@ -53,7 +54,7 @@ class GovUserPluginMyprofileControllerTest < ActionController::TestCase | @@ -53,7 +54,7 @@ class GovUserPluginMyprofileControllerTest < ActionController::TestCase | ||
| 53 | 54 | ||
| 54 | post( | 55 | post( |
| 55 | :edit_institution, | 56 | :edit_institution, |
| 56 | - :profile=>institution.community.identifier, | 57 | + :profile=>@institution.community.identifier, |
| 57 | :community=>fields[:community], | 58 | :community=>fields[:community], |
| 58 | :institutions=>fields[:institutions] | 59 | :institutions=>fields[:institutions] |
| 59 | ) | 60 | ) |
| @@ -62,25 +63,31 @@ class GovUserPluginMyprofileControllerTest < ActionController::TestCase | @@ -62,25 +63,31 @@ class GovUserPluginMyprofileControllerTest < ActionController::TestCase | ||
| 62 | assert_not_equal "Ministerio Publico da Uniao", institution.community.name | 63 | assert_not_equal "Ministerio Publico da Uniao", institution.community.name |
| 63 | end | 64 | end |
| 64 | 65 | ||
| 65 | - should "not user edit its community institution with wrong values" do | ||
| 66 | - govPower = GovernmentalPower.create(:name=>"Some Gov Power") | ||
| 67 | - govSphere = GovernmentalSphere.create(:name=>"Some Gov Sphere") | ||
| 68 | - juridical_nature = JuridicalNature.create(:name => "Autarquia") | ||
| 69 | - | ||
| 70 | - institution = InstitutionTestHelper.create_public_institution( | ||
| 71 | - "Ministerio Publico da Uniao", | ||
| 72 | - "MPU", | 66 | + should "regular user should not edit an institution" do |
| 67 | + identifier = @institution.community.identifier | ||
| 68 | + fields = InstitutionTestHelper.generate_form_fields( | ||
| 69 | + "institution new name", | ||
| 73 | "BR", | 70 | "BR", |
| 74 | "DF", | 71 | "DF", |
| 75 | "Gama", | 72 | "Gama", |
| 76 | - juridical_nature, | ||
| 77 | - govPower, | ||
| 78 | - govSphere, | ||
| 79 | - "12.345.678/9012-45" | 73 | + "12.345.678/9012-45", |
| 74 | + "PrivateInstitution" | ||
| 75 | + ) | ||
| 76 | + | ||
| 77 | + post( | ||
| 78 | + :edit_institution, | ||
| 79 | + :profile=>@institution.community.identifier, | ||
| 80 | + :community=>fields[:community], | ||
| 81 | + :institutions=>fields[:institutions] | ||
| 80 | ) | 82 | ) |
| 81 | 83 | ||
| 82 | - identifier = institution.community.identifier | 84 | + institution = Community[identifier].institution |
| 85 | + assert_equal "Ministerio Publico da Uniao", institution.community.name | ||
| 86 | + assert_response 403 | ||
| 87 | + end | ||
| 83 | 88 | ||
| 89 | + should "not user edit its community institution with wrong values" do | ||
| 90 | + identifier = @institution.community.identifier | ||
| 84 | fields = InstitutionTestHelper.generate_form_fields( | 91 | fields = InstitutionTestHelper.generate_form_fields( |
| 85 | "", | 92 | "", |
| 86 | "BR", | 93 | "BR", |
| @@ -92,7 +99,7 @@ class GovUserPluginMyprofileControllerTest < ActionController::TestCase | @@ -92,7 +99,7 @@ class GovUserPluginMyprofileControllerTest < ActionController::TestCase | ||
| 92 | 99 | ||
| 93 | post( | 100 | post( |
| 94 | :edit_institution, | 101 | :edit_institution, |
| 95 | - :profile=>institution.community.identifier, | 102 | + :profile=>@institution.community.identifier, |
| 96 | :community=>fields[:community], | 103 | :community=>fields[:community], |
| 97 | :institutions=>fields[:institutions] | 104 | :institutions=>fields[:institutions] |
| 98 | ) | 105 | ) |
src/noosfero-spb/gov_user/views/gov_user_plugin_myprofile/edit_institution.html.erb
| @@ -19,6 +19,10 @@ | @@ -19,6 +19,10 @@ | ||
| 19 | 19 | ||
| 20 | <div id = 'create_institution_errors' class='errorExplanation hide-field'></div> | 20 | <div id = 'create_institution_errors' class='errorExplanation hide-field'></div> |
| 21 | 21 | ||
| 22 | +<div class="spb-row spb-col spb-col-12 required-field"> | ||
| 23 | + <%= _("The highlighted fields are mandatory") %> | ||
| 24 | +</div> | ||
| 25 | + | ||
| 22 | <div> | 26 | <div> |
| 23 | <%= labelled_form_for :community,:html => { :multipart => true, :id=>"institution_form" } do |f| %> | 27 | <%= labelled_form_for :community,:html => { :multipart => true, :id=>"institution_form" } do |f| %> |
| 24 | <%= hidden_field_tag "edit_institution_page", true %> | 28 | <%= hidden_field_tag "edit_institution_page", true %> |
| @@ -26,25 +30,19 @@ | @@ -26,25 +30,19 @@ | ||
| 26 | <span class=''> | 30 | <span class=''> |
| 27 | <div class='formfield type-radio'> | 31 | <div class='formfield type-radio'> |
| 28 | <label> <%= _("Public Institution") %> | 32 | <label> <%= _("Public Institution") %> |
| 29 | - <%= radio_button_tag("institutions[type]", "PublicInstitution", (@institution.type == "PublicInstitution" ? true : false)) %> | 33 | + <%= radio_button_tag("institutions[type]", "PublicInstitution", (@institution.type == "PublicInstitution")) %> |
| 30 | </label> | 34 | </label> |
| 31 | 35 | ||
| 32 | <label> | 36 | <label> |
| 33 | <%= _("Private Institution") %> | 37 | <%= _("Private Institution") %> |
| 34 | - <%= radio_button_tag("institutions[type]" ,"PrivateInstitution", (@institution.type == "PrivateInstitution" ? true : false))%> | 38 | + <%= radio_button_tag("institutions[type]" ,"PrivateInstitution", (@institution.type == "PrivateInstitution"))%> |
| 35 | </label> | 39 | </label> |
| 36 | </div> | 40 | </div> |
| 37 | </span> | 41 | </span> |
| 38 | 42 | ||
| 39 | - <%= required f.text_field(:name, :value => @institution.community.name) %> | ||
| 40 | - <%= content_tag :span, _("Institution name already exists"), :id=>"already_exists_text", :class=>"errorExplanation hide-field" %> | 43 | + <%= required labelled_form_field(_('Corporate Name'), text_field_tag('community[name]', @institution.community.name)) %> |
| 41 | 44 | ||
| 42 | - <span class='required-field'> | ||
| 43 | - <div class="formfield type-text"> | ||
| 44 | - <%= inst.label "corporate_name", _("Corporate Name"), :class=>"formlabel" %> | ||
| 45 | - <%= required inst.text_field(:corporate_name, :value => @institution.corporate_name) %> | ||
| 46 | - </div> | ||
| 47 | - </span> | 45 | + <%= labelled_form_field(_('Fantasy name'), inst.text_field(:corporate_name, :value => @institution.corporate_name)) %> |
| 48 | 46 | ||
| 49 | <%= required select_country(_('Country'), 'community', 'country', {:class => 'type-select', :id => "community_country"}, :selected => @institution.community.country) %> | 47 | <%= required select_country(_('Country'), 'community', 'country', {:class => 'type-select', :id => "community_country"}, :selected => @institution.community.country) %> |
| 50 | 48 |
src/noosfero-spb/software_communities/public/views/new-community.js
| 1 | modulejs.define("NewCommunity", ['jquery'], function($) { | 1 | modulejs.define("NewCommunity", ['jquery'], function($) { |
| 2 | 2 | ||
| 3 | - function replace_mandatory_message() { | ||
| 4 | - $(".required-field").first() | ||
| 5 | - .replaceWith("<span class='required-field'> Os campos em destaque<label class='pseudoformlabel'> (*)</label> são obrigatórios. </span>"); | ||
| 6 | - } | ||
| 7 | - | ||
| 8 | function remove_image_builder_text() { | 3 | function remove_image_builder_text() { |
| 9 | $("label:contains('Image builder')").hide(); | 4 | $("label:contains('Image builder')").hide(); |
| 10 | } | 5 | } |
| @@ -20,7 +15,6 @@ modulejs.define("NewCommunity", ['jquery'], function($) { | @@ -20,7 +15,6 @@ modulejs.define("NewCommunity", ['jquery'], function($) { | ||
| 20 | }, | 15 | }, |
| 21 | 16 | ||
| 22 | init: function() { | 17 | init: function() { |
| 23 | - replace_mandatory_message(); | ||
| 24 | remove_image_builder_text(); | 18 | remove_image_builder_text(); |
| 25 | hide_organization_template_fields(); | 19 | hide_organization_template_fields(); |
| 26 | } | 20 | } |