Commit 40843cecd5832c3f626a1258e542d52df3eb52c4
1 parent
92346b73
Exists in
master
and in
29 other branches
ActionItem380: admin can edit enterprise description
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1788 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
8 changed files
with
103 additions
and
17 deletions
Show diff stats
app/controllers/my_profile/profile_editor_controller.rb
... | ... | @@ -11,7 +11,7 @@ class ProfileEditorController < MyProfileController |
11 | 11 | # edits the profile info (posts back) |
12 | 12 | def edit |
13 | 13 | if request.post? |
14 | - if profile.info.update_attributes(params[:info]) | |
14 | + if profile.update_attributes(params[:profile_data]) and profile.info.save | |
15 | 15 | redirect_to :action => 'index' |
16 | 16 | end |
17 | 17 | else | ... | ... |
app/helpers/application_helper.rb
... | ... | @@ -163,6 +163,11 @@ module ApplicationHelper |
163 | 163 | |
164 | 164 | alias_method :display_form_field, :labelled_form_field |
165 | 165 | |
166 | + def labelled_fields_for(name, object = nil, options = {}, &proc) | |
167 | + object ||= instance_variable_get("@#{name}") | |
168 | + fields_for(name, object, { :builder => NoosferoFormBuilder }.merge(options), &proc) | |
169 | + end | |
170 | + | |
166 | 171 | def labelled_form_for(name, object = nil, options = {}, &proc) |
167 | 172 | object ||= instance_variable_get("@#{name}") |
168 | 173 | form_for(name, object, { :builder => NoosferoFormBuilder }.merge(options), &proc) | ... | ... |
app/models/profile.rb
... | ... | @@ -142,6 +142,10 @@ class Profile < ActiveRecord::Base |
142 | 142 | nil |
143 | 143 | end |
144 | 144 | |
145 | + def info=(args = {}) | |
146 | + self.info.attributes = args if self.info | |
147 | + end | |
148 | + | |
145 | 149 | # returns the contact email for this profile. By default returns the the |
146 | 150 | # e-mail of the owner user. |
147 | 151 | # | ... | ... |
app/views/profile_editor/organization_info.rhtml
1 | 1 | <h1> <%= _('Edit organization info') %> </h1> |
2 | 2 | |
3 | -<%= error_messages_for :info %> | |
4 | -<% labelled_form_for :info, @info do |f| %> | |
5 | - <%= f.text_field(:contact_person) %> | |
6 | - <%= f.text_field(:acronym) %> | |
7 | - <%= f.text_field(:foundation_year) %> | |
8 | - <%= f.text_field(:legal_form) %> | |
9 | - <%= f.text_field(:economic_activity) %> | |
10 | - <%= f.text_area(:management_information) %> | |
3 | +<%= error_messages_for :profile %> | |
4 | + | |
5 | +<% labelled_form_for :profile_data, @profile do |f| %> | |
6 | + <%= f.text_area(:description, :rows => 5) if @profile.kind_of?(Community) %> | |
7 | + <% labelled_fields_for 'profile_data[info]', @profile.organization_info do |i| %> | |
8 | + <%= i.text_field(:contact_person) %> | |
9 | + <%= i.text_field(:acronym) %> | |
10 | + <%= i.text_field(:foundation_year) %> | |
11 | + <%= i.text_field(:legal_form) %> | |
12 | + <%= i.text_field(:economic_activity) %> | |
13 | + <%= i.text_area(:management_information, :rows => 5) %> | |
14 | + <% end %> | |
11 | 15 | <% button_bar do %> |
12 | 16 | <%= submit_button('save' , _('Save'), :cancel => {:action => 'index'}) %> |
13 | 17 | <% end %> | ... | ... |
test/functional/profile_editor_controller_test.rb
... | ... | @@ -66,9 +66,8 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
66 | 66 | person = User.create(:login => 'test_profile', :email => 'test@noosfero.org', :password => 'test', :password_confirmation => 'test').person |
67 | 67 | person.person_info.address = 'my address' |
68 | 68 | person.person_info.contact_information = 'my contact information' |
69 | - person.person_info.save | |
69 | + person.person_info.save! | |
70 | 70 | |
71 | -# profile.person_info.expects(:update_attributes).with({ 'contact_information' => 'new contact information', 'address' => 'new address' }).returns(true) | |
72 | 71 | post :edit, :profile => 'test_profile', :info => { 'contact_information' => 'new contact information', 'address' => 'new address' } |
73 | 72 | |
74 | 73 | assert_redirected_to :action => 'index' |
... | ... | @@ -103,43 +102,96 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
103 | 102 | should 'filter html from name when edit person_info' do |
104 | 103 | person = create_user('test_profile').person |
105 | 104 | name = "name <strong id='name_html_test'>with</strong> html" |
106 | - post :edit, :profile => person.identifier, :info => { :name => name } | |
105 | + post :edit, :profile => person.identifier, :profile_data => { :info => { :name => name } } | |
107 | 106 | assert_sanitized assigns(:profile).info.name |
108 | 107 | end |
109 | 108 | |
110 | 109 | should 'filter html from contact_person to organization' do |
111 | 110 | org = Organization.create!(:name => 'test org', :identifier => 'testorg') |
112 | 111 | contact = "name <strong id='name_html_test'>with</strong> html" |
113 | - post :edit, :profile => org.identifier, :info => { :contact_person => contact } | |
112 | + post :edit, :profile => org.identifier, :profile_data => { :info => { :contact_person => contact } } | |
114 | 113 | assert_sanitized assigns(:profile).info.contact_person |
115 | 114 | end |
116 | 115 | |
117 | 116 | should 'filter html from acronym organization' do |
118 | 117 | org = Organization.create!(:name => 'test org', :identifier => 'testorg') |
119 | 118 | value = "name <strong id='name_html_test'>with</strong> html" |
120 | - post :edit, :profile => org.identifier, :info => { :acronym => value } | |
119 | + post :edit, :profile => org.identifier, :profile_data => { :info => { :acronym => value } } | |
121 | 120 | assert_sanitized assigns(:profile).info.acronym |
122 | 121 | end |
123 | 122 | |
124 | 123 | should 'filter html from legal_form organization' do |
125 | 124 | org = Organization.create!(:name => 'test org', :identifier => 'testorg') |
126 | 125 | value = "name <strong id='name_html_test'>with</strong> html" |
127 | - post :edit, :profile => org.identifier, :info => { :legal_form => value } | |
126 | + post :edit, :profile => org.identifier, :profile_data => { :info => { :legal_form => value } } | |
128 | 127 | assert_sanitized assigns(:profile).info.legal_form |
129 | 128 | end |
130 | 129 | |
131 | 130 | should 'filter html from economic_activity organization' do |
132 | 131 | org = Organization.create!(:name => 'test org', :identifier => 'testorg') |
133 | 132 | value = "name <strong id='name_html_test'>with</strong> html" |
134 | - post :edit, :profile => org.identifier, :info => { :economic_activity => value } | |
133 | + post :edit, :profile => org.identifier, :profile_data => { :info => { :economic_activity => value } } | |
135 | 134 | assert_sanitized assigns(:profile).info.economic_activity |
136 | 135 | end |
137 | 136 | |
138 | 137 | should 'filter html from management_information organization' do |
139 | 138 | org = Organization.create!(:name => 'test org', :identifier => 'testorg') |
140 | 139 | value = "name <strong id='name_html_test'>with</strong> html" |
141 | - post :edit, :profile => org.identifier, :info => { :management_information => value } | |
140 | + post :edit, :profile => org.identifier, :profile_data => { :info => { :management_information => value } } | |
142 | 141 | assert_sanitized assigns(:profile).info.management_information |
143 | 142 | end |
144 | 143 | |
144 | + should 'saving profile organization_info' do | |
145 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
146 | + org.organization_info.create! | |
147 | + post :edit, :profile => 'testorg', :profile_data => { :info => { :contact_person => 'contact person' } } | |
148 | + assert_equal 'contact person', Organization.find(org.id).organization_info.contact_person | |
149 | + end | |
150 | + | |
151 | + should 'show contact_person field on edit organization' do | |
152 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
153 | + get :edit, :profile => org.identifier | |
154 | + assert_tag :tag => 'input', :attributes => { :name => 'profile_data[info][contact_person]' } | |
155 | + end | |
156 | + | |
157 | + should 'save community description' do | |
158 | + org = Community.create!(:name => 'test org', :identifier => 'testorg') | |
159 | + post :edit, :profile => 'testorg', :profile_data => { :description => 'my description' } | |
160 | + assert_equal 'my description', Organization.find(org.id).description | |
161 | + end | |
162 | + | |
163 | + should 'show community description' do | |
164 | + org = Community.create!(:name => 'test org', :identifier => 'testorg') | |
165 | + get :edit, :profile => 'testorg' | |
166 | + assert_tag :tag => 'textarea', :attributes => { :name => 'profile_data[description]' } | |
167 | + end | |
168 | + | |
169 | + should 'not show organization description' do | |
170 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
171 | + get :edit, :profile => 'testorg' | |
172 | + assert_no_tag :tag => 'textarea', :attributes => { :name => 'profile_data[description]' } | |
173 | + end | |
174 | + | |
175 | + should 'save organization contact_person' do | |
176 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
177 | + post :edit, :profile => 'testorg', :profile_data => { :info => { :contact_person => 'my contact' } } | |
178 | + assert_equal 'my contact', Organization.find(org.id).info.contact_person | |
179 | + end | |
180 | + | |
181 | + should 'save enterprise contact_person' do | |
182 | + org = Enterprise.create!(:name => 'test org', :identifier => 'testorg') | |
183 | + post :edit, :profile => 'testorg', :profile_data => { :info => { :contact_person => 'my contact' } } | |
184 | + assert_equal 'my contact', Enterprise.find(org.id).info.contact_person | |
185 | + end | |
186 | + | |
187 | + should 'show field values on edit organization info' do | |
188 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
189 | + org.info = { :contact_person => 'my contact' } | |
190 | + org.info.save! | |
191 | + get :edit, :profile => 'testorg' | |
192 | + assert_tag :tag => 'input', :attributes => { :name => 'profile_data[info][contact_person]', :value => 'my contact' } | |
193 | + end | |
194 | + | |
195 | + should 'show error messages for' | |
196 | + | |
145 | 197 | end | ... | ... |
test/unit/community_test.rb
... | ... | @@ -39,4 +39,11 @@ class CommunityTest < Test::Unit::TestCase |
39 | 39 | assert_kind_of RssFeed, community.articles.find_by_path('feed') |
40 | 40 | end |
41 | 41 | |
42 | + should 'save info' do | |
43 | + community = Community.create!(:name => 'my new community') | |
44 | + community.info = {:contact_person => 'my contact'} | |
45 | + community.save! | |
46 | + assert_equal 'my contact', community.info.contact_person | |
47 | + end | |
48 | + | |
42 | 49 | end | ... | ... |
test/unit/organization_test.rb
... | ... | @@ -124,4 +124,11 @@ class OrganizationTest < Test::Unit::TestCase |
124 | 124 | assert_equal true, Organization.new.has_members? |
125 | 125 | end |
126 | 126 | |
127 | + should 'update organization_info' do | |
128 | + org = Organization.create!(:name => 'test org', :identifier => 'testorg') | |
129 | + assert_nil org.info.contact_person | |
130 | + org.info = {:contact_person => 'new person'} | |
131 | + assert_not_nil org.info.contact_person | |
132 | + end | |
133 | + | |
127 | 134 | end | ... | ... |
test/unit/person_test.rb
... | ... | @@ -215,4 +215,11 @@ class PersonTest < Test::Unit::TestCase |
215 | 215 | assert_equal 'randomhacker', p.name |
216 | 216 | end |
217 | 217 | |
218 | + should 'save info' do | |
219 | + person = create_user('new_person').person | |
220 | + person.info = {:contact_information => 'my contact'} | |
221 | + person.save! | |
222 | + assert_equal 'my contact', person.info.contact_information | |
223 | + end | |
224 | + | |
218 | 225 | end | ... | ... |