Commit 10afab4180865d504ae3c41711508c9df6f4d96a
Committed by
Gabriela Navarro
1 parent
80db92cc
Exists in
master
and in
5 other branches
fix_institution: Separate institution edition from community edition
Signed-off-by: Fabio Teixeira <fabio1079@gmail.com> Signed-off-by: Gabriela Navarro <navarro1703@gmail.com>
Showing
6 changed files
with
175 additions
and
65 deletions
Show diff stats
controllers/mpog_software_plugin_myprofile_controller.rb
| ... | ... | @@ -9,6 +9,35 @@ class MpogSoftwarePluginMyprofileController < MyProfileController |
| 9 | 9 | nil |
| 10 | 10 | end |
| 11 | 11 | |
| 12 | + def edit_institution | |
| 13 | + @show_sisp_field = environment.admins.include?(current_user.person) | |
| 14 | + @estate_list = NationalRegion.find(:all, :conditions=>["national_region_type_id = ?", 2], :order=>"name") | |
| 15 | + | |
| 16 | + @institution = @profile.institution | |
| 17 | + | |
| 18 | + if request.post? | |
| 19 | + @institution.community.update_attributes(params[:community]) | |
| 20 | + @institution.update_attributes(params[:institutions].except(:governmental_power, :governmental_sphere, :juridical_nature)) | |
| 21 | + | |
| 22 | + if @institution.type == "PublicInstitution" | |
| 23 | + begin | |
| 24 | + govPower = GovernmentalPower.find params[:institutions][:governmental_power] | |
| 25 | + govSphere = GovernmentalSphere.find params[:institutions][:governmental_sphere] | |
| 26 | + jur_nature = JuridicalNature.find params[:institutions][:juridical_nature] | |
| 27 | + | |
| 28 | + @institution.juridical_nature = jur_nature | |
| 29 | + @institution.governmental_power = govPower | |
| 30 | + @institution.governmental_sphere = govSphere | |
| 31 | + @institution.save | |
| 32 | + rescue | |
| 33 | + @institution.errors.add(:governmental_fields, _("Could not find Governmental Power or Governmental Sphere")) | |
| 34 | + end | |
| 35 | + end | |
| 36 | + | |
| 37 | + flash[:errors] = @institution.errors.full_messages unless @institution.valid? | |
| 38 | + end | |
| 39 | + end | |
| 40 | + | |
| 12 | 41 | def new_software |
| 13 | 42 | @errors = [] |
| 14 | 43 | ... | ... |
lib/mpog_software_plugin.rb
| ... | ... | @@ -233,6 +233,8 @@ class MpogSoftwarePlugin < Noosfero::Plugin |
| 233 | 233 | elsif context.profile.person? |
| 234 | 234 | return { :title => _("Create a new software"), :icon => "design-editor", :url => {:controller => "mpog_software_plugin_myprofile", :action => "new_software"} } |
| 235 | 235 | return nil |
| 236 | + elsif context.profile.institution? | |
| 237 | + return { :title => _("Institution Info"), :icon => "edit-profile-group", :url => {:controller => "mpog_software_plugin_myprofile", :action => "edit_institution"} } | |
| 236 | 238 | end |
| 237 | 239 | end |
| 238 | 240 | ... | ... |
public/mpog-institution-validations.js
| ... | ... | @@ -183,14 +183,15 @@ |
| 183 | 183 | jQuery(".intitution_cnpj_field").mask("99.999.999/9999-99"); |
| 184 | 184 | } |
| 185 | 185 | |
| 186 | - function show_hide_cnpj_city(e) { | |
| 186 | + function show_hide_cnpj_city(country) { | |
| 187 | + console.log(country) | |
| 187 | 188 | var cnpj = jQuery("#institutions_cnpj").parent().parent(); |
| 188 | 189 | var city = jQuery("#community_city").parent().parent(); |
| 189 | 190 | var state = jQuery("#community_state").parent().parent(); |
| 190 | 191 | |
| 191 | - if( this.value == "-1" ) jQuery(this).val("BR"); | |
| 192 | + if( country == "-1" ) jQuery("#community_country").val("BR"); | |
| 192 | 193 | |
| 193 | - if( this.value != "BR" ) { | |
| 194 | + if( country != "BR" ) { | |
| 194 | 195 | cnpj.hide(); |
| 195 | 196 | city.hide(); |
| 196 | 197 | state.hide(); |
| ... | ... | @@ -199,12 +200,10 @@ |
| 199 | 200 | city.show(); |
| 200 | 201 | state.show(); |
| 201 | 202 | } |
| 202 | - | |
| 203 | - e.preventDefault(); | |
| 204 | 203 | } |
| 205 | 204 | |
| 206 | - function institution_type_actions() { | |
| 207 | - if( this.value == "PublicInstitution" ) | |
| 205 | + function institution_type_actions(type) { | |
| 206 | + if( type == "PublicInstitution" ) | |
| 208 | 207 | show_public_institutions_fields(); |
| 209 | 208 | else |
| 210 | 209 | show_private_institutions_fields(); |
| ... | ... | @@ -214,20 +213,30 @@ |
| 214 | 213 | var divisor_option = SelectElement.generateOption("-1", "--------------------------------"); |
| 215 | 214 | var default_option = SelectElement.generateOption("BR", "Brazil"); |
| 216 | 215 | |
| 216 | + var inst_type = jQuery("input[name='institutions[type]']:checked").val(); | |
| 217 | + var country = jQuery("#community_country").val(); | |
| 218 | + | |
| 219 | + institution_type_actions(inst_type); | |
| 220 | + show_hide_cnpj_city(country); | |
| 221 | + | |
| 217 | 222 | if( jQuery('#community_country').find("option[value='']").length == 1 ) { |
| 218 | 223 | jQuery('#community_country').find("option[value='']").remove(); |
| 219 | 224 | jQuery('#community_country').prepend(divisor_option); |
| 220 | 225 | jQuery('#community_country').prepend(default_option); |
| 221 | - jQuery('#community_country').val("BR"); | |
| 226 | + | |
| 227 | + if(jQuery("#edit_institution_page").val() == "false"){ | |
| 228 | + jQuery('#community_country').val("BR"); | |
| 229 | + show_hide_cnpj_city(jQuery('#community_country').val()); | |
| 230 | + } | |
| 222 | 231 | } |
| 223 | 232 | } |
| 224 | 233 | |
| 225 | 234 | function set_events() { |
| 226 | - show_private_institutions_fields(); | |
| 227 | - | |
| 228 | 235 | jQuery("#create_institution_link").click(open_create_institution_modal); |
| 229 | 236 | |
| 230 | - jQuery("input[type='radio'][name='institutions[type]']").click(institution_type_actions); | |
| 237 | + jQuery("input[name='institutions[type]']").click(function(){ | |
| 238 | + institution_type_actions(this.value); | |
| 239 | + }); | |
| 231 | 240 | |
| 232 | 241 | jQuery('#save_institution_button').click(save_institution); |
| 233 | 242 | |
| ... | ... | @@ -237,7 +246,10 @@ |
| 237 | 246 | |
| 238 | 247 | jQuery(".remove-institution").click(remove_institution); |
| 239 | 248 | |
| 240 | - jQuery("#community_country").change(show_hide_cnpj_city); | |
| 249 | + jQuery("#community_country").change(function(){ | |
| 250 | + console.log(this.value) | |
| 251 | + show_hide_cnpj_city(this.value); | |
| 252 | + }); | |
| 241 | 253 | |
| 242 | 254 | add_mask_to_form_items(); |
| 243 | 255 | ... | ... |
views/institution_editor_extras.html.erb
| ... | ... | @@ -1,52 +0,0 @@ |
| 1 | -<h2><%= _('Institution Information') %></h2> | |
| 2 | - | |
| 3 | -<div class="formfield type-text"> | |
| 4 | - <%= labelled_text_field(_("CNPJ"), 'institution[cnpj]', context.profile.institution.cnpj, :class=>"formlabel intitution_cnpj_field", :placeholder=>"99.999.999/9999-99") %> | |
| 5 | -</div> | |
| 6 | - | |
| 7 | -<span class='required-field'> | |
| 8 | -<div class="formfield type-text"> | |
| 9 | - <% if context.profile.institution.type == "PublicInstitution" %> | |
| 10 | - <%= labelled_text_field(_("Acronym"), "institution[acronym]", context.profile.institution.acronym, :class=>"formlabel") %> | |
| 11 | - <% else %> | |
| 12 | - <%= labelled_text_field(_("Fantasy name"), "institution[acronym]", context.profile.institution.acronym, :class=>"formlabel") %> | |
| 13 | - <% end %> | |
| 14 | -</div> | |
| 15 | -</span> | |
| 16 | - | |
| 17 | -<% if context.profile.institution.type == "PublicInstitution" %> | |
| 18 | - <span class='public-institutions-fields'> | |
| 19 | - <div class="formfield type-select"> | |
| 20 | - <%= label_tag('governmental_power', _("Governmental Power")) %> | |
| 21 | - <%= select_tag(:governmental_power, options_for_select(GovernmentalPower.all.map {|g| [g.name, g.id]}, :selected => context.profile.institution.governmental_power_id), :class=>"formlabel") %> | |
| 22 | - </div> | |
| 23 | - </span> | |
| 24 | - | |
| 25 | - <span class= 'public-institutions-fields'> | |
| 26 | - <div class="formfield type-select"> | |
| 27 | - <%= label_tag('governmental_sphere', _("Governmental Sphere")) %> | |
| 28 | - <%= select_tag(:governmental_sphere, options_for_select(GovernmentalSphere.all.map {|s| [s.name, s.id]}, :selected => context.profile.institution.governmental_sphere_id), :class=>"formlabel") %> | |
| 29 | - </div> | |
| 30 | - </span> | |
| 31 | - | |
| 32 | - <span class= 'public-institutions-fields'> | |
| 33 | - <div class="formfield type-select"> | |
| 34 | - <%= label_tag('juridical_nature', _("Juridical Nature")) %> | |
| 35 | - <%= select_tag(:juridical_nature, options_for_select(JuridicalNature.all.map {|j| [j.name, j.id]}, :selected => context.profile.institution.juridical_nature_id), :class=>"formlabel") %> | |
| 36 | - </div> | |
| 37 | - </span> | |
| 38 | - | |
| 39 | - <span class= 'public-institutions-fields'> | |
| 40 | - <div class="formfieldline"> | |
| 41 | - <% if @show_sisp_field %> | |
| 42 | - <%= _("SISP?") %> | |
| 43 | - <%= labelled_radio_button(_('Yes'), 'institution[sisp]', 'true', context.profile.institution.sisp)%> | |
| 44 | - <%= labelled_radio_button(_('No'), 'institution[sisp]', 'false', !context.profile.institution.sisp)%> | |
| 45 | - <% else %> | |
| 46 | - <%= _("SISP?") %> | |
| 47 | - <%= label_tag('SISP', context.profile.institution.sisp ? "YES" : "NO") %> | |
| 48 | - <% end %> | |
| 49 | - </div> | |
| 50 | - </span> | |
| 51 | - | |
| 52 | -<% end %> |
views/mpog_software_plugin/_institution.html.erb
| ... | ... | @@ -25,7 +25,7 @@ |
| 25 | 25 | </div> |
| 26 | 26 | <br/> |
| 27 | 27 | <%= labelled_form_for :community, :url => {:action=>"new_institution"}, :html => { :multipart => true, :id=>"institution_form" } do |f| %> |
| 28 | - | |
| 28 | + <%= hidden_field_tag "edit_institution_page", false %> | |
| 29 | 29 | <%= fields_for :institutions do |inst| %> |
| 30 | 30 | <span class=''> |
| 31 | 31 | <div class='formfield type-radio'> | ... | ... |
views/mpog_software_plugin_myprofile/edit_institution.html.erb
0 → 100644
| ... | ... | @@ -0,0 +1,119 @@ |
| 1 | +<h1><%= _('Edit Institution') %></h1> | |
| 2 | + | |
| 3 | +<% if environment.enabled?('admin_must_approve_new_communities') %> | |
| 4 | + <div class='explanation'> | |
| 5 | + <%= _("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 }%> | |
| 6 | + </div> | |
| 7 | +<%end %> | |
| 8 | + | |
| 9 | +<% unless flash[:errors].nil? %> | |
| 10 | +<div class="errorExplanation" id="errorExplanation"> | |
| 11 | + <h2> <%= _("Can`t create new Institution: #{flash[:errors].length} errors") %> </h2> | |
| 12 | + <ul> | |
| 13 | + <% flash[:errors].each do |error| %> | |
| 14 | + <li> <%= error %> </li> | |
| 15 | + <% end %> | |
| 16 | + </ul> | |
| 17 | +</div> | |
| 18 | +<% end %> | |
| 19 | + | |
| 20 | +<div id = 'create_institution_errors' class='errorExplanation hide-field'></div> | |
| 21 | + | |
| 22 | +<div> | |
| 23 | + <div class="fields-required"> | |
| 24 | + <span class="errorExplanation"><%= _("All fields with (*) are mandatory") %></span> | |
| 25 | + </div> | |
| 26 | + <br/> | |
| 27 | + <%= labelled_form_for :community,:html => { :multipart => true, :id=>"institution_form" } do |f| %> | |
| 28 | + <%= hidden_field_tag "edit_institution_page", true %> | |
| 29 | + <%= fields_for :institutions do |inst| %> | |
| 30 | + <span class=''> | |
| 31 | + <div class='formfield type-radio'> | |
| 32 | + <label> <%= _("Public Institution") %> | |
| 33 | + <%= radio_button_tag("institutions[type]", "PublicInstitution", (@institution.type == "PublicInstitution" ? true : false)) %> | |
| 34 | + </label> | |
| 35 | + | |
| 36 | + <label> | |
| 37 | + <%= _("Private Institution") %> | |
| 38 | + <%= radio_button_tag("institutions[type]" ,"PrivateInstitution", (@institution.type == "PrivateInstitution" ? true : false))%> | |
| 39 | + </label> | |
| 40 | + </div> | |
| 41 | + </span> | |
| 42 | + | |
| 43 | + <%= required f.text_field(:name, :value => @institution.community.name) %> | |
| 44 | + <%= content_tag :span, _("Institution name already exists"), :id=>"already_exists_text", :class=>"errorExplanation hide-field" %> | |
| 45 | + | |
| 46 | + <span class='required-field'> | |
| 47 | + <div class="formfield type-text"> | |
| 48 | + <%= inst.label "corporate_name", _("Corporate Name"), :class=>"formlabel" %> | |
| 49 | + <%= required inst.text_field(:corporate_name, :value => @institution.corporate_name) %> | |
| 50 | + </div> | |
| 51 | + </span> | |
| 52 | + | |
| 53 | + <%= required select_country(_('Country'), 'community', 'country', {:class => 'type-select', :id => "community_country"}, :selected => @institution.community.country) %> | |
| 54 | + | |
| 55 | + <span class='required-field'> | |
| 56 | + <div class="formfield"> | |
| 57 | + <label for="community_state" class="formlabel"><%= _("State") %></label> | |
| 58 | + <%= f.select(:state, @estate_list.collect {|state| [state.name, state.name]}, :selected => @institution.community.state) %> | |
| 59 | + </div> | |
| 60 | + </span> | |
| 61 | + | |
| 62 | + <%= required f.text_field(:city, :value => @institution.community.city) %> | |
| 63 | + | |
| 64 | + | |
| 65 | + <span class='required-field'> | |
| 66 | + <div class="formfield type-text"> | |
| 67 | + <%= inst.label("cnpj" ,_("CNPJ"), :class=>"formlabel") %> | |
| 68 | + <%= required inst.text_field(:cnpj, :placeholder=>"99.999.999/9999-99", :class=>"intitution_cnpj_field", :value => @institution.cnpj) %> | |
| 69 | + </div> | |
| 70 | + </span> | |
| 71 | + | |
| 72 | + <span class='optional-field'> | |
| 73 | + <div class="formfield type-text"> | |
| 74 | + <%= hidden_field_tag "acronym_translate", _("Acronym") %> | |
| 75 | + <%= hidden_field_tag "fantasy_name_translate", _("Fantasy name") %> | |
| 76 | + <%= inst.label("acronym" ,_("Acronym"), :class=>"formlabel") %> | |
| 77 | + <%= inst.text_field(:acronym, :value => @institution.acronym) %> | |
| 78 | + </div> | |
| 79 | + </span> | |
| 80 | + | |
| 81 | + <span class='required-field public-institutions-fields'> | |
| 82 | + <div class="formfield type-text"> | |
| 83 | + <%= inst.label("governmental_sphere_id" ,_("Governmental Sphere:"), :class=>"formlabel") %> | |
| 84 | + <%= inst.select(:governmental_sphere, [[_("Select a Governmental Sphere"), 0]]|GovernmentalSphere.all.map {|s| [s.name, s.id]}, {:selected=>@institution.governmental_power_id})%> | |
| 85 | + </div> | |
| 86 | + </span> | |
| 87 | + | |
| 88 | + <span class='required-field public-institutions-fields'> | |
| 89 | + <div class="formfield type-text"> | |
| 90 | + <%= inst.label("governmental_power_id" ,_("Governmental Power:"), :class=>"formlabel") %> | |
| 91 | + <%= inst.select(:governmental_power, [[_("Select a Governmental Power"), 0]]|GovernmentalPower.all.map {|g| [g.name, g.id]}, {:selected=> @institution.governmental_sphere_id})%> | |
| 92 | + </div> | |
| 93 | + </span> | |
| 94 | + <span class='required-field public-institutions-fields'> | |
| 95 | + <div class="formfield type-text"> | |
| 96 | + <%= inst.label("juridical_nature_id" ,_("Juridical Nature:"), :class=>"formlabel") %> | |
| 97 | + <%= inst.select(:juridical_nature, [[_("Select a Juridical Nature"), 0]]|JuridicalNature.all.map {|j| [j.name, j.id]}, {:selected=> @institution.juridical_nature_id})%> | |
| 98 | + </div> | |
| 99 | + </span> | |
| 100 | + | |
| 101 | + <span class='required-field public-institutions-fields'> | |
| 102 | + <div class="formfield type-text"> | |
| 103 | + <%= _("SISP?") %> | |
| 104 | + <% if @show_sisp_field %> | |
| 105 | + <%= inst.label("sisp" ,_("Yes")) %> | |
| 106 | + <%= inst.radio_button(:sisp, true, :checked=>(@institution.sisp ? true : false)) %> | |
| 107 | + <%= inst.label("sisp" ,_("No")) %> | |
| 108 | + <%= inst.radio_button(:sisp, false, :checked=>(@institution.sisp ? false : true)) %> | |
| 109 | + <% else %> | |
| 110 | + <%= inst.label("sisp", _("No")) %> | |
| 111 | + <% end %> | |
| 112 | + </div> | |
| 113 | + </span> | |
| 114 | + <br /> | |
| 115 | + | |
| 116 | + <%= submit_button :save, _('Save') %> | |
| 117 | + <% end %> | |
| 118 | +<% end %> | |
| 119 | + | ... | ... |