Commit e6c086315c508ee7629fdaebd97a9107874d7f99
Exists in
ratings_minor_fixes
and in
4 other branches
Merge branch 'refactor_profile_members_headlines' into 'master'
Remove ProfileMembersHeadlinesBlock#content This method was in violation of MVC principles and its logic is now handled by the BoxesHelper. Minor adaptations to the view and a rename were required in order to meet BoxesHelper expectations. See merge request !908
Showing
4 changed files
with
46 additions
and
51 deletions
Show diff stats
plugins/profile_members_headlines/lib/profile_members_headlines_block.rb
| @@ -35,12 +35,4 @@ class ProfileMembersHeadlinesBlock < Block | @@ -35,12 +35,4 @@ class ProfileMembersHeadlinesBlock < Block | ||
| 35 | result.select{ |p| p.has_headline? }.slice(0..limit-1) | 35 | result.select{ |p| p.has_headline? }.slice(0..limit-1) |
| 36 | end | 36 | end |
| 37 | 37 | ||
| 38 | - def content(args={}) | ||
| 39 | - block = self | ||
| 40 | - members = authors_list | ||
| 41 | - proc do | ||
| 42 | - render :file => 'blocks/headlines', :locals => { :block => block, :members => members } | ||
| 43 | - end | ||
| 44 | - end | ||
| 45 | - | ||
| 46 | end | 38 | end |
plugins/profile_members_headlines/test/unit/profile_members_headlines_block_test.rb
| 1 | require 'test_helper' | 1 | require 'test_helper' |
| 2 | +require 'boxes_helper' | ||
| 2 | 3 | ||
| 3 | class ProfileMembersHeadlinesBlockTest < ActiveSupport::TestCase | 4 | class ProfileMembersHeadlinesBlockTest < ActiveSupport::TestCase |
| 4 | 5 | ||
| 5 | include Noosfero::Plugin::HotSpot | 6 | include Noosfero::Plugin::HotSpot |
| 7 | + include BoxesHelper | ||
| 6 | 8 | ||
| 7 | def setup | 9 | def setup |
| 8 | @environment = fast_create(Environment) | 10 | @environment = fast_create(Environment) |
| @@ -32,8 +34,8 @@ class ProfileMembersHeadlinesBlockTest < ActiveSupport::TestCase | @@ -32,8 +34,8 @@ class ProfileMembersHeadlinesBlockTest < ActiveSupport::TestCase | ||
| 32 | block = ProfileMembersHeadlinesBlock.create | 34 | block = ProfileMembersHeadlinesBlock.create |
| 33 | block.stubs(:owner).returns(community) | 35 | block.stubs(:owner).returns(community) |
| 34 | 36 | ||
| 35 | - self.expects(:render).with(:file => 'blocks/headlines', :locals => { :block => block, :members => []}).returns('file-without-authors-and-headlines') | ||
| 36 | - assert_equal 'file-without-authors-and-headlines', instance_eval(&block.content) | 37 | + self.expects(:render).with(:template => 'blocks/profile_members_headlines', :locals => { :block => block }).returns('file-without-authors-and-headlines') |
| 38 | + assert_equal 'file-without-authors-and-headlines', render_block_content(block) | ||
| 37 | end | 39 | end |
| 38 | 40 | ||
| 39 | should 'display headlines file' do | 41 | should 'display headlines file' do |
| @@ -41,8 +43,8 @@ class ProfileMembersHeadlinesBlockTest < ActiveSupport::TestCase | @@ -41,8 +43,8 @@ class ProfileMembersHeadlinesBlockTest < ActiveSupport::TestCase | ||
| 41 | block.stubs(:owner).returns(community) | 43 | block.stubs(:owner).returns(community) |
| 42 | blog = fast_create(Blog, :profile_id => member1.id) | 44 | blog = fast_create(Blog, :profile_id => member1.id) |
| 43 | post = fast_create(TinyMceArticle, :name => 'headlines', :profile_id => member1.id, :parent_id => blog.id) | 45 | post = fast_create(TinyMceArticle, :name => 'headlines', :profile_id => member1.id, :parent_id => blog.id) |
| 44 | - self.expects(:render).with(:file => 'blocks/headlines', :locals => { :block => block, :members => []}).returns('file-with-authors-and-headlines') | ||
| 45 | - assert_equal 'file-with-authors-and-headlines', instance_eval(&block.content) | 46 | + self.expects(:render).with(:template => 'blocks/profile_members_headlines', :locals => { :block => block }).returns('file-with-authors-and-headlines') |
| 47 | + assert_equal 'file-with-authors-and-headlines', render_block_content(block) | ||
| 46 | end | 48 | end |
| 47 | 49 | ||
| 48 | should 'select only authors with articles and selected roles to display' do | 50 | should 'select only authors with articles and selected roles to display' do |
plugins/profile_members_headlines/views/blocks/headlines.html.erb
| @@ -1,39 +0,0 @@ | @@ -1,39 +0,0 @@ | ||
| 1 | -<%= block_title(block.title, block.subtitle) %> | ||
| 2 | - | ||
| 3 | -<% unless members.empty? %> | ||
| 4 | - <div class='headlines-container'> | ||
| 5 | - <% members.each do |member| %> | ||
| 6 | - <div> | ||
| 7 | - <% headline = member.headline %> | ||
| 8 | - <%= link_to_profile(profile_image(member, :big) + content_tag(:p, member.short_name), member.identifier, {:class => 'author'}) %> | ||
| 9 | - <div class='post'> | ||
| 10 | - <h4><%= link_to(headline.title, headline.url, :class => 'title') %></h4> | ||
| 11 | - <div class='lead'> | ||
| 12 | - <%= headline.short_lead %> | ||
| 13 | - </div> | ||
| 14 | - <div class='date'> | ||
| 15 | - <%= show_date(headline.published_at) %> | ||
| 16 | - </div> | ||
| 17 | - <div class='tags'> | ||
| 18 | - <%= safe_join(headline.tags.map { |t| link_to(t, :controller => 'profile', :profile => member.identifier, :action => 'tags', :id => t.name ) }, "\n") %> | ||
| 19 | - </div> | ||
| 20 | - </div> | ||
| 21 | - </div> | ||
| 22 | - <% end %> | ||
| 23 | - </div> | ||
| 24 | - <% if block.navigation %> | ||
| 25 | - <div class='headlines-block-pager'> | ||
| 26 | - </div> | ||
| 27 | - <% end %> | ||
| 28 | - | ||
| 29 | - <script> | ||
| 30 | - (function($) { | ||
| 31 | - var options = {fx: 'fade', pause: 1, fastOnEvent: 1, timeout: <%= block.interval * 1000 %>}; | ||
| 32 | - options.pager = '#block-<%= block.id %> .headlines-block-pager'; | ||
| 33 | - $('#block-<%= block.id %> .headlines-container').cycle(options); | ||
| 34 | - })(jQuery); | ||
| 35 | - </script> | ||
| 36 | -<% else %> | ||
| 37 | - <em><%= _('No headlines to be shown.') %></em> | ||
| 38 | -<% end %> | ||
| 39 | - |
plugins/profile_members_headlines/views/blocks/profile_members_headlines.html.erb
0 → 100644
| @@ -0,0 +1,40 @@ | @@ -0,0 +1,40 @@ | ||
| 1 | +<%= block_title(block.title, block.subtitle) %> | ||
| 2 | +<% members = block.authors_list %> | ||
| 3 | + | ||
| 4 | +<% unless members.empty? %> | ||
| 5 | + <div class='headlines-container'> | ||
| 6 | + <% members.each do |member| %> | ||
| 7 | + <div> | ||
| 8 | + <% headline = member.headline %> | ||
| 9 | + <%= link_to_profile(profile_image(member, :big) + content_tag(:p, member.short_name), member.identifier, {:class => 'author'}) %> | ||
| 10 | + <div class='post'> | ||
| 11 | + <h4><%= link_to(headline.title, headline.url, :class => 'title') %></h4> | ||
| 12 | + <div class='lead'> | ||
| 13 | + <%= headline.short_lead %> | ||
| 14 | + </div> | ||
| 15 | + <div class='date'> | ||
| 16 | + <%= show_date(headline.published_at) %> | ||
| 17 | + </div> | ||
| 18 | + <div class='tags'> | ||
| 19 | + <%= safe_join(headline.tags.map { |t| link_to(t, :controller => 'profile', :profile => member.identifier, :action => 'tags', :id => t.name ) }, "\n") %> | ||
| 20 | + </div> | ||
| 21 | + </div> | ||
| 22 | + </div> | ||
| 23 | + <% end %> | ||
| 24 | + </div> | ||
| 25 | + <% if block.navigation %> | ||
| 26 | + <div class='headlines-block-pager'> | ||
| 27 | + </div> | ||
| 28 | + <% end %> | ||
| 29 | + | ||
| 30 | + <script> | ||
| 31 | + (function($) { | ||
| 32 | + var options = {fx: 'fade', pause: 1, fastOnEvent: 1, timeout: <%= block.interval * 1000 %>}; | ||
| 33 | + options.pager = '#block-<%= block.id %> .headlines-block-pager'; | ||
| 34 | + $('#block-<%= block.id %> .headlines-container').cycle(options); | ||
| 35 | + })(jQuery); | ||
| 36 | + </script> | ||
| 37 | +<% else %> | ||
| 38 | + <em><%= _('No headlines to be shown.') %></em> | ||
| 39 | +<% end %> | ||
| 40 | + |