Commit 1a86a1c3e44736a789b070700649101caad749c1

Authored by Fabio Teixeira
Committed by Thiago Ribeiro
1 parent fb1f8668

Do not list the event in its event page

Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
(cherry picked from commit 97647ee7bfa4b936f57d377ce7d63f8c9c59cee5)
src/noosfero-spb/software_communities/lib/software_communities_plugin.rb
@@ -44,7 +44,7 @@ class SoftwareCommunitiesPlugin &lt; Noosfero::Plugin @@ -44,7 +44,7 @@ class SoftwareCommunitiesPlugin &lt; Noosfero::Plugin
44 SoftwareTabDataBlock => {:type => [Community], :position => 1}, 44 SoftwareTabDataBlock => {:type => [Community], :position => 1},
45 WikiBlock => {:type => [Community]}, 45 WikiBlock => {:type => [Community]},
46 StatisticBlock => { :type => [Community] }, 46 StatisticBlock => { :type => [Community] },
47 - SoftwareEventsBlock => { :type => [Community], :position => 1 } 47 + SoftwareEventsBlock => { :type => [Community] }
48 } 48 }
49 end 49 end
50 50
src/noosfero-spb/software_communities/lib/software_events_block.rb
@@ -9,14 +9,12 @@ class SoftwareEventsBlock &lt; Block @@ -9,14 +9,12 @@ class SoftwareEventsBlock &lt; Block
9 end 9 end
10 10
11 def content(args={}) 11 def content(args={})
12 - events = community_events  
13 -  
14 block = self 12 block = self
15 13
16 lambda do |object| 14 lambda do |object|
17 render( 15 render(
18 :file => 'blocks/software_events', 16 :file => 'blocks/software_events',
19 - :locals => { :block => block, :events => events } 17 + :locals => { :block => block }
20 ) 18 )
21 end 19 end
22 end 20 end
@@ -25,8 +23,22 @@ class SoftwareEventsBlock &lt; Block @@ -25,8 +23,22 @@ class SoftwareEventsBlock &lt; Block
25 false 23 false
26 end 24 end
27 25
28 - def community_events 26 + def get_events
29 today = DateTime.now.beginning_of_day 27 today = DateTime.now.beginning_of_day
30 self.owner.events.where("end_date >= ?", today).order(:start_date) 28 self.owner.events.where("end_date >= ?", today).order(:start_date)
31 end 29 end
  30 +
  31 + def get_events_except event_slug=""
  32 + event_slug = "" if event_slug.nil?
  33 +
  34 + get_events.where("slug NOT IN (?)", event_slug)
  35 + end
  36 +
  37 + def has_events_to_display?
  38 + not get_events.empty?
  39 + end
  40 +
  41 + def should_display_title?
  42 + self.box.position != 1
  43 + end
32 end 44 end
src/noosfero-spb/software_communities/test/unit/software_events_block_test.rb
@@ -9,30 +9,55 @@ class SoftwareEventsBlockTest &lt; ActiveSupport::TestCase @@ -9,30 +9,55 @@ class SoftwareEventsBlockTest &lt; ActiveSupport::TestCase
9 @software_events_block = SoftwareEventsBlock.new 9 @software_events_block = SoftwareEventsBlock.new
10 10
11 box = Box.new 11 box = Box.new
  12 + box.position = 1
12 box.owner = @community 13 box.owner = @community
13 box.blocks << @software_events_block 14 box.blocks << @software_events_block
14 box.save! 15 box.save!
15 - end  
16 -  
17 - should "give community events that have not yet finished ordered by start date" do  
18 - assert_equal true, @software_events_block.community_events.empty?  
19 16
20 - e1 = Event.new :name=>"Event 1", :body=>"Event 1 body", 17 + @e1 = Event.new :name=>"Event 1", :body=>"Event 1 body",
21 :start_date=>DateTime.now, :end_date=>(DateTime.now + 1.month) 18 :start_date=>DateTime.now, :end_date=>(DateTime.now + 1.month)
22 19
23 - e2 = Event.new :name=>"Event 2", :body=>"Event 2 body", 20 + @e2 = Event.new :name=>"Event 2", :body=>"Event 2 body",
24 :start_date=>(DateTime.now - 10.days), :end_date=>(DateTime.now + 10.days) 21 :start_date=>(DateTime.now - 10.days), :end_date=>(DateTime.now + 10.days)
25 22
26 - e3 = Event.new :name=>"Event 3", :body=>"Event 3 body", 23 + @e3 = Event.new :name=>"Event 3", :body=>"Event 3 body",
27 :start_date=>(DateTime.now - 20.days), :end_date=>(DateTime.now - 10.days) 24 :start_date=>(DateTime.now - 20.days), :end_date=>(DateTime.now - 10.days)
28 25
29 - @community.events << e1  
30 - @community.events << e2  
31 - @community.events << e3 26 + @community.events << @e1
  27 + @community.events << @e2
  28 + @community.events << @e3
32 @community.save! 29 @community.save!
  30 + end
  31 +
  32 + should "give community events that have not yet finished ordered by start date" do
  33 + events = @software_events_block.get_events
  34 +
  35 + assert_equal false, events.include?(@e3)
  36 + assert_equal @e2, events.first
  37 + assert_equal @e1, events.last
  38 + end
  39 +
  40 + should "give community events except by a event with a given slug" do
  41 + events = @software_events_block.get_events_except(@e1.slug)
  42 +
  43 + assert_equal false, events.include?(@e1)
  44 + end
  45 +
  46 + should "tell if there are events to be displayed" do
  47 + assert_equal true, @software_events_block.has_events_to_display?
  48 +
  49 + @community.events.update_all :start_date => (DateTime.now - 2.days),
  50 + :end_date => (DateTime.now - 1.day)
  51 +
  52 + assert_equal false, @software_events_block.has_events_to_display?
  53 + end
  54 +
  55 + should "tell that the block must show the title in other areas that are no the main area" do
  56 + assert_equal false, @software_events_block.should_display_title?
  57 +
  58 + @software_events_block.box.position = 3
  59 + @software_events_block.save!
33 60
34 - assert_equal false, @software_events_block.community_events.include?(e3)  
35 - assert_equal e2, @software_events_block.community_events.first  
36 - assert_equal e1, @software_events_block.community_events.last 61 + assert_equal true, @software_events_block.should_display_title?
37 end 62 end
38 end 63 end
src/noosfero-spb/software_communities/views/blocks/_software_events_list_item.html.erb
1 -<span class="software-events-list-item-calendar"></span> 1 +<div class="software-events-list-item-calendar"></div>
2 2
3 <span class="software-events-list-item-date"> 3 <span class="software-events-list-item-date">
4 <%= event.start_date.strftime "%d/%m - " %> 4 <%= event.start_date.strftime "%d/%m - " %>
src/noosfero-spb/software_communities/views/blocks/software_events.html.erb
1 <div class="software-community-events-block"> 1 <div class="software-community-events-block">
2 - <% if not events.empty? %> 2 + <% if block.has_events_to_display? %>
  3 + <ul class="software-community-events-list">
3 4
4 - <ul class="software-community-events-list">  
5 - <% events.each do |event| %>  
6 - <li class="software-events-list-item">  
7 - <%= render :partial=>"blocks/software_events_list_item",  
8 - :locals => {:event => event} %>  
9 - </li>  
10 - <% end %>  
11 - </ul> 5 + <% if block.should_display_title? %>
  6 + <li class="software-events-list-item">
  7 + <span class="software-events-list-item-title">
  8 + <%= block.title %>
  9 + </span>
  10 + </li>
  11 + <% end %>
  12 +
  13 + <% block.get_events_except(params[:page]).each do |event| %>
  14 + <li class="software-events-list-item">
  15 + <%= render :partial=>"blocks/software_events_list_item",
  16 + :locals => {:event => event} %>
  17 + </li>
  18 + <% end %>
  19 +
  20 + </ul>
12 <% end %> 21 <% end %>
13 </div> 22 </div>