Commit 10afab4180865d504ae3c41711508c9df6f4d96a
Committed by
Gabriela Navarro
1 parent
80db92cc
Exists in
master
and in
79 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 | + | ... | ... |