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 44 SoftwareTabDataBlock => {:type => [Community], :position => 1},
45 45 WikiBlock => {:type => [Community]},
46 46 StatisticBlock => { :type => [Community] },
47   - SoftwareEventsBlock => { :type => [Community], :position => 1 }
  47 + SoftwareEventsBlock => { :type => [Community] }
48 48 }
49 49 end
50 50  
... ...
src/noosfero-spb/software_communities/lib/software_events_block.rb
... ... @@ -9,14 +9,12 @@ class SoftwareEventsBlock &lt; Block
9 9 end
10 10  
11 11 def content(args={})
12   - events = community_events
13   -
14 12 block = self
15 13  
16 14 lambda do |object|
17 15 render(
18 16 :file => 'blocks/software_events',
19   - :locals => { :block => block, :events => events }
  17 + :locals => { :block => block }
20 18 )
21 19 end
22 20 end
... ... @@ -25,8 +23,22 @@ class SoftwareEventsBlock &lt; Block
25 23 false
26 24 end
27 25  
28   - def community_events
  26 + def get_events
29 27 today = DateTime.now.beginning_of_day
30 28 self.owner.events.where("end_date >= ?", today).order(:start_date)
31 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 44 end
... ...
src/noosfero-spb/software_communities/test/unit/software_events_block_test.rb
... ... @@ -9,30 +9,55 @@ class SoftwareEventsBlockTest &lt; ActiveSupport::TestCase
9 9 @software_events_block = SoftwareEventsBlock.new
10 10  
11 11 box = Box.new
  12 + box.position = 1
12 13 box.owner = @community
13 14 box.blocks << @software_events_block
14 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 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 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 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 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 62 end
38 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 3 <span class="software-events-list-item-date">
4 4 <%= event.start_date.strftime "%d/%m - " %>
... ...
src/noosfero-spb/software_communities/views/blocks/software_events.html.erb
1 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 21 <% end %>
13 22 </div>
... ...