Commit 1064a46c96dae48da2a0b430578bc4817cf81f56

Authored by Rodrigo Souto
1 parent 9bc8cc2a

profile-editor: use timepicker on birth-date field

app/controllers/my_profile/profile_editor_controller.rb
@@ -15,20 +15,14 @@ class ProfileEditorController < MyProfileController @@ -15,20 +15,14 @@ class ProfileEditorController < MyProfileController
15 @possible_domains = profile.possible_domains 15 @possible_domains = profile.possible_domains
16 if request.post? 16 if request.post?
17 params[:profile_data][:fields_privacy] ||= {} if profile.person? && params[:profile_data].is_a?(Hash) 17 params[:profile_data][:fields_privacy] ||= {} if profile.person? && params[:profile_data].is_a?(Hash)
18 - begin  
19 - Profile.transaction do  
20 - Image.transaction do  
21 - if profile.update_attributes!(params[:profile_data])  
22 - redirect_to :action => 'index', :profile => profile.identifier  
23 - end 18 + Profile.transaction do
  19 + Image.transaction do
  20 + if @profile_data.update_attributes(params[:profile_data])
  21 + redirect_to :action => 'index', :profile => profile.identifier
  22 + else
  23 + profile.identifier = params[:profile] if profile.identifier.blank?
24 end 24 end
25 - end  
26 - rescue Exception => ex  
27 - if profile.identifier.blank?  
28 - profile.identifier = params[:profile]  
29 - end  
30 - session[:notice] = _('Cannot update profile')  
31 - logger.error ex.to_s 25 + end
32 end 26 end
33 end 27 end
34 end 28 end
app/models/person.rb
@@ -157,11 +157,6 @@ class Person < Profile @@ -157,11 +157,6 @@ class Person < Profile
157 157
158 validates_multiparameter_assignments 158 validates_multiparameter_assignments
159 159
160 - validates_each :birth_date do |record,attr,value|  
161 - date_str = record.birth_date_before_type_cast  
162 - record.errors.add(attr) if value.blank? && !date_str.blank?  
163 - end  
164 -  
165 def self.fields 160 def self.fields
166 FIELDS 161 FIELDS
167 end 162 end
app/views/profile_editor/_person_form.html.erb
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 <%= optional_field(@person, 'jabber_id', f.text_field(:jabber_id, :rel => _('Jabber'))) %> 16 <%= optional_field(@person, 'jabber_id', f.text_field(:jabber_id, :rel => _('Jabber'))) %>
17 <%= optional_field(@person, 'personal_website', f.text_field(:personal_website, :rel => _('Personal website'))) %> 17 <%= optional_field(@person, 'personal_website', f.text_field(:personal_website, :rel => _('Personal website'))) %>
18 <%= optional_field(@person, 'sex', f.radio_group(:profile_data, :sex, [ ['male',_('Male')], ['female',_('Female')] ])) %> 18 <%= optional_field(@person, 'sex', f.radio_group(:profile_data, :sex, [ ['male',_('Male')], ['female',_('Female')] ])) %>
19 -<%= optional_field(@person, 'birth_date', labelled_form_field(_('Birth date'), '<div class="select-birth-date">' + pick_date(:profile_data, :birth_date, {:start_year => (Date.today.year - 100), :end_year => (Date.today.year - 5)}) + '</div>')) %> 19 +<%= optional_field(@person, 'birth_date', labelled_form_field(_('Birth date'), date_field('profile_data[birth_date]', @profile_data. birth_date, '%Y-%m-%d', {:change_month => true, :change_year => true, :year_range => '-100:-5', :date_format => 'yy-mm-dd'}, {:id => 'profile_data_birth_date'}))) %>
20 <%= optional_field(@person, 'nationality', f.text_field(:nationality, :rel => _('Nationality'))) %> 20 <%= optional_field(@person, 'nationality', f.text_field(:nationality, :rel => _('Nationality'))) %>
21 <%= optional_field(@person, 'country', select_country(_('Country'), 'profile_data', 'country', {:class => 'type-select'})) %> 21 <%= optional_field(@person, 'country', select_country(_('Country'), 'profile_data', 'country', {:class => 'type-select'})) %>
22 <%= optional_field(@person, 'state', f.text_field(:state, :id => 'state_field', :rel => _('State'))) %> 22 <%= optional_field(@person, 'state', f.text_field(:state, :id => 'state_field', :rel => _('State'))) %>
features/edit_profile.feature
@@ -6,30 +6,6 @@ Feature: edit profile @@ -6,30 +6,6 @@ Feature: edit profile
6 | joao | 6 | joao |
7 Given I am logged in as "joao" 7 Given I am logged in as "joao"
8 8
9 - Scenario: Warn about invalid birth date when active  
10 - Given the following person fields are active fields  
11 - | display_name |  
12 - | birth_date |  
13 - When I go to joao's control panel  
14 - And I follow "Edit Profile"  
15 - And I select "November" from "profile_data_birth_date_2i"  
16 - And I select "15" from "profile_data_birth_date_3i"  
17 - And I press "Save"  
18 - Then I should see "Birth date is invalid"  
19 - And I should not see "Birth date can't be blank"  
20 -  
21 - Scenario: Warn about invalid birth date when required  
22 - Given the following person fields are required fields  
23 - | display_name |  
24 - | birth_date |  
25 - When I go to joao's control panel  
26 - And I follow "Edit Profile"  
27 - And I select "November" from "profile_data_birth_date_2i"  
28 - And I select "15" from "profile_data_birth_date_3i"  
29 - And I press "Save"  
30 - Then I should see "Birth date is invalid"  
31 - And I should not see "Birth date can't be blank"  
32 -  
33 Scenario: Not warn if birth date is valid when active 9 Scenario: Not warn if birth date is valid when active
34 Given the following person fields are active fields 10 Given the following person fields are active fields
35 | display_name | 11 | display_name |
test/unit/person_test.rb
@@ -1152,21 +1152,6 @@ class PersonTest &lt; ActiveSupport::TestCase @@ -1152,21 +1152,6 @@ class PersonTest &lt; ActiveSupport::TestCase
1152 assert_includes Person.more_active, profile 1152 assert_includes Person.more_active, profile
1153 end 1153 end
1154 1154
1155 - should 'handle multiparameter attribute exception on birth date field' do  
1156 - assert_nothing_raised ActiveRecord::MultiparameterAssignmentErrors do  
1157 - p = Person.new(  
1158 - :name => 'birthday', :identifier => 'birthday',  
1159 - 'birth_date(1i)' => '', 'birth_date(2i)' => '6', 'birth_date(3i)' => '16'  
1160 - )  
1161 - end  
1162 - end  
1163 -  
1164 - should 'not accept an empty year on birth date' do  
1165 - p = Person.new(:birth_date => "1115")  
1166 - p.valid?  
1167 - assert p.errors[:birth_date.to_s].present?  
1168 - end  
1169 -  
1170 should 'associate report with the correct complaint' do 1155 should 'associate report with the correct complaint' do
1171 p1 = create_user('user1').person 1156 p1 = create_user('user1').person
1172 p2 = create_user('user2').person 1157 p2 = create_user('user2').person