Commit d53e71f1d625bb9cc9e6756dc7dd297d9259bff0

Authored by Rafael Reggiani Manzo
1 parent 7024df4e

Remove PeopleBlock#footer

This method was producing view code from within the model which is a
violation of MVC.

Part of the code was extracted into the new helper and most of it became
a view. This follow the standard for using
BoxesHelper#render_block_footer.
plugins/people_block/lib/friends_block.rb
... ... @@ -20,14 +20,6 @@ class FriendsBlock < PeopleBlockBase
20 20 owner.suggested_profiles.of_person.enabled.limit(3).includes(:suggestion)
21 21 end
22 22  
23   - def footer
24   - profile = self.owner
25   - suggestions = self.suggestions
26   - proc do
27   - render :file => 'blocks/footers/friends', :locals => { :profile => profile, :suggestions => suggestions }
28   - end
29   - end
30   -
31 23 def self.expire_on
32 24 { :profile => [:profile] }
33 25 end
... ...
plugins/people_block/lib/members_block.rb
... ... @@ -20,15 +20,6 @@ class MembersBlock < PeopleBlockBase
20 20 role ? owner.members.with_role(role.id) : owner.members
21 21 end
22 22  
23   - def footer
24   - profile = self.owner
25   - role_key = visible_role
26   - s = show_join_leave_button
27   - proc do
28   - render :file => 'blocks/footers/members', :locals => { :profile => profile, :show_join_leave_button => s, :role_key => role_key}
29   - end
30   - end
31   -
32 23 def role
33 24 visible_role && !visible_role.empty? ? Role.find_by_key_and_environment_id(visible_role, owner.environment) : nil
34 25 end
... ...
plugins/people_block/lib/people_block.rb
... ... @@ -15,11 +15,4 @@ class PeopleBlock < PeopleBlockBase
15 15 def profiles
16 16 owner.people
17 17 end
18   -
19   - def footer
20   - proc do
21   - render :file => 'blocks/footers/people'
22   - end
23   - end
24   -
25 18 end
... ...
plugins/people_block/lib/people_block_base.rb
... ... @@ -42,58 +42,6 @@ class PeopleBlockBase < Block
42 42 profiles.visible.count
43 43 end
44 44  
45   -=begin
46   - def content(args={})
47   - profiles = self.profile_list
48   - title = self.view_title
49   -
50   - if !self.name.blank? && !self.address.blank?
51   - name = self.name
52   - expanded_address = expand_address(self.address)
53   - end
54   -
55   - proc do
56   - count = 0
57   - list = profiles.map {|item|
58   - count += 1
59   - send(:profile_image_link, item, :minor )
60   - }.join("\n")
61   - if list.empty?
62   - list = content_tag 'div', c_('None'), :class => 'common-profile-list-block-none'
63   - else
64   - if !name.blank? && !expanded_address.blank?
65   - list << content_tag(
66   - 'div',
67   - content_tag(
68   - 'li',
69   - content_tag(
70   - 'div',
71   - link_to(
72   - content_tag('span', name, :class => 'banner-span' ),
73   - expanded_address,
74   - :title => name
75   - ),
76   - :class => 'banner-div'
77   - ),
78   - :class => 'vcard'
79   - ),
80   - :class => 'common-profile-list-block'
81   - )
82   - end
83   - list = content_tag 'ul', list
84   - end
85   - block_title(title) + content_tag('div', list + tag('br', :style => 'clear:both'))
86   - end
87   - end
88   -=end
89   - def expand_address(address)
90   - if address !~ /^[a-z]+:\/\// && address !~ /^\//
91   - 'http://' + address
92   - else
93   - address
94   - end
95   - end
96   -
97 45 def extra_option
98 46 { }
99 47 end
... ...
plugins/people_block/test/unit/friends_block_test.rb
... ... @@ -60,19 +60,6 @@ class FriendsBlockTest &lt; ActionView::TestCase
60 60 assert_equal 20, block.limit
61 61 end
62 62  
63   - should 'link to "all friends"' do
64   - person1 = create_user('mytestperson').person
65   -
66   - block = FriendsBlock.new
67   - block.stubs(:suggestions).returns([])
68   - block.expects(:owner).returns(person1).at_least_once
69   -
70   - instance_eval(&block.footer)
71   - assert_select 'a.view-all' do |elements|
72   - assert_select '[href=/profile/mytestperson/friends]'
73   - end
74   - end
75   -
76 63 should 'count number of owner friends' do
77 64 owner = fast_create(Person)
78 65 friend1 = fast_create(Person)
... ... @@ -156,4 +143,14 @@ class FriendsBlockViewTest &lt; ActionView::TestCase
156 143 assert_match(/#{friend1.name}/, content)
157 144 assert_match(/#{friend2.name}/, content)
158 145 end
  146 +
  147 + should 'link to "all friends"' do
  148 + person1 = create_user('mytestperson').person
  149 +
  150 + block = FriendsBlock.new
  151 + block.stubs(:suggestions).returns([])
  152 + block.expects(:owner).returns(person1).at_least_once
  153 +
  154 + assert_tag_in_string render_block_footer(block), tag: 'a', attributes: {class: 'view-all', href: '/profile/mytestperson/friends' }
  155 + end
159 156 end
... ...
plugins/people_block/test/unit/members_block_test.rb
... ... @@ -119,57 +119,6 @@ class MembersBlockTest &lt; ActionView::TestCase
119 119 assert_equal 1, block.profile_count
120 120 end
121 121  
122   - should 'provide link to members page without a visible_role selected' do
123   - profile = create_user('mytestuser').person
124   - block = MembersBlock.new
125   - block.box = profile.boxes.first
126   - block.save!
127   -
128   - instance_eval(&block.footer)
129   - assert_select 'a.view-all' do |elements|
130   - assert_select "[href=/profile/mytestuser/members#members-tab]"
131   - end
132   - end
133   -
134   - should 'provide link to members page when visible_role is profile_member' do
135   - profile = create_user('mytestuser').person
136   - block = MembersBlock.new
137   - block.box = profile.boxes.first
138   - block.visible_role = 'profile_member'
139   - block.save!
140   -
141   - instance_eval(&block.footer)
142   - assert_select 'a.view-all' do |elements|
143   - assert_select '[href=/profile/mytestuser/members#members-tab]'
144   - end
145   - end
146   -
147   - should 'provide link to members page when visible_role is profile_moderator' do
148   - profile = create_user('mytestuser').person
149   - block = MembersBlock.new
150   - block.box = profile.boxes.first
151   - block.visible_role = 'profile_moderator'
152   - block.save!
153   -
154   - instance_eval(&block.footer)
155   - assert_select 'a.view-all' do |elements|
156   - assert_select '[href=/profile/mytestuser/members#members-tab]'
157   - end
158   - end
159   -
160   - should 'provide link to admins page when visible_role is profile_admin' do
161   - profile = create_user('mytestuser').person
162   - block = MembersBlock.new
163   - block.box = profile.boxes.first
164   - block.visible_role = 'profile_admin'
165   - block.save!
166   -
167   - instance_eval(&block.footer)
168   - assert_select 'a.view-all' do |elements|
169   - assert_select '[href=/profile/mytestuser/members#admins-tab]'
170   - end
171   - end
172   -
173 122 should 'provide a role to be displayed (and default to nil)' do
174 123 env = fast_create(Environment)
175 124 env.boxes << Box.new
... ... @@ -306,4 +255,55 @@ class MembersBlockViewTest &lt; ActionView::TestCase
306 255 assert_match(/#{person1.name}/, content)
307 256 assert_match(/#{person2.name}/, content)
308 257 end
  258 +
  259 + should 'provide link to members page without a visible_role selected' do
  260 + profile = create_user('mytestuser').person
  261 + block = MembersBlock.new
  262 + block.box = profile.boxes.first
  263 + block.save!
  264 +
  265 + render_block_footer(block)
  266 + assert_select 'a.view-all' do |elements|
  267 + assert_select "[href=/profile/mytestuser/members#members-tab]"
  268 + end
  269 + end
  270 +
  271 + should 'provide link to members page when visible_role is profile_member' do
  272 + profile = create_user('mytestuser').person
  273 + block = MembersBlock.new
  274 + block.box = profile.boxes.first
  275 + block.visible_role = 'profile_member'
  276 + block.save!
  277 +
  278 + render_block_footer(block)
  279 + assert_select 'a.view-all' do |elements|
  280 + assert_select '[href=/profile/mytestuser/members#members-tab]'
  281 + end
  282 + end
  283 +
  284 + should 'provide link to members page when visible_role is profile_moderator' do
  285 + profile = create_user('mytestuser').person
  286 + block = MembersBlock.new
  287 + block.box = profile.boxes.first
  288 + block.visible_role = 'profile_moderator'
  289 + block.save!
  290 +
  291 + render_block_footer(block)
  292 + assert_select 'a.view-all' do |elements|
  293 + assert_select '[href=/profile/mytestuser/members#members-tab]'
  294 + end
  295 + end
  296 +
  297 + should 'provide link to admins page when visible_role is profile_admin' do
  298 + profile = create_user('mytestuser').person
  299 + block = MembersBlock.new
  300 + block.box = profile.boxes.first
  301 + block.visible_role = 'profile_admin'
  302 + block.save!
  303 +
  304 + render_block_footer(block)
  305 + assert_select 'a.view-all' do |elements|
  306 + assert_select '[href=/profile/mytestuser/members#admins-tab]'
  307 + end
  308 + end
309 309 end
... ...
plugins/people_block/test/unit/people_block_test.rb
... ... @@ -85,17 +85,6 @@ class PeopleBlockTest &lt; ActionView::TestCase
85 85 end
86 86  
87 87  
88   - should 'link to "all people"' do
89   - env = fast_create(Environment)
90   - block = PeopleBlock.new
91   -
92   - instance_eval(&block.footer)
93   - assert_select 'a.view-all' do |elements|
94   - assert_select '[href=/search/people]'
95   - end
96   - end
97   -
98   -
99 88 should 'count number of public and private people' do
100 89 owner = fast_create(Environment)
101 90 private_p = fast_create(Person, :public_profile => false, :environment_id => owner.id)
... ... @@ -146,4 +135,14 @@ class PeopleBlockViewTest &lt; ActionView::TestCase
146 135 assert_match(/#{person1.name}/, content)
147 136 assert_match(/#{person2.name}/, content)
148 137 end
  138 +
  139 + should 'link to "all people"' do
  140 + env = fast_create(Environment)
  141 + block = PeopleBlock.new
  142 +
  143 + render_block_footer(block)
  144 + assert_select 'a.view-all' do |elements|
  145 + assert_select '[href=/search/people]'
  146 + end
  147 + end
149 148 end
... ...
plugins/people_block/views/blocks/footers/friends.html.erb
1   -<%= link_to s_('friends|View all'), {:profile => profile.identifier, :controller => 'profile', :action => 'friends'}, :class => 'view-all' %>
  1 +<%= link_to s_('friends|View all'), {:profile => block.owner.identifier, :controller => 'profile', :action => 'friends'}, :class => 'view-all' %>
2 2  
3   -<% if !suggestions.empty? && user == profile %>
  3 +<% if !block.suggestions.empty? && user == block.owner %>
4 4 <div class='suggestions-block common-profile-list-block'>
5 5 <h4 class='block-subtitle'><%= _('Some suggestions for you') %></h4>
6 6 <div class='profiles-suggestions'>
7   - <%= render :partial => 'shared/profile_suggestions_list', :locals => { :suggestions => suggestions, :collection => :friends_suggestions } %>
  7 + <%= render :partial => 'shared/profile_suggestions_list', :locals => { :suggestions => block.suggestions, :collection => :friends_suggestions } %>
8 8 </div>
9 9 <div class='more-suggestions'>
10   - <%= link_to _('See all suggestions'), profile.people_suggestions_url %>
  10 + <%= link_to _('See all suggestions'), block.owner.people_suggestions_url %>
11 11 </div>
12 12 </div>
13 13 <% end %>
... ...
plugins/people_block/views/blocks/footers/members.html.erb
1   -<% anchor = role_key == "profile_admin" ? "admins-tab" : "members-tab" %>
2   -<%= link_to c_('View all'), {:profile => profile.identifier, :controller => 'profile', :action => 'members', :anchor =>anchor }, :class => 'view-all' %>
  1 +<% anchor = block.visible_role == "profile_admin" ? "admins-tab" : "members-tab" %>
  2 +<%= link_to c_('View all'), {:profile => block.owner.identifier, :controller => 'profile', :action => 'members', :anchor =>anchor }, :class => 'view-all' %>
3 3  
4   -<% if show_join_leave_button %>
  4 +<% if block.show_join_leave_button %>
5 5 <%= render :partial => 'blocks/profile_info_actions/join_leave_community' %>
6 6 <% end %>
... ...