Commit af25f7a4ec4269ab53804a99c1e7ff60d5fa6a93

Authored by Daniela Feitosa
1 parent 37e8561e

[event_plugin] displaying profile events

Also:
- By default, list only future events
- Replacing strings describing the number of days left/past to the event
- Removed br tags and added margin on elements from edit block view
- Only display option "Show all environment events" if there's another option
- Fixed tests

See merge request !400
plugins/event/lib/event_plugin/event_block.rb
... ... @@ -5,7 +5,7 @@ class EventPlugin::EventBlock < Block
5 5  
6 6 settings_items :all_env_events, :type => :boolean, :default => false
7 7 settings_items :limit, :type => :integer, :default => 4
8   - settings_items :future_only, :type => :boolean, :default => false
  8 + settings_items :future_only, :type => :boolean, :default => true
9 9 settings_items :date_distance_limit, :type => :integer, :default => 0
10 10  
11 11 def self.description
... ... @@ -17,15 +17,12 @@ class EventPlugin::EventBlock < Block
17 17 end
18 18  
19 19 def events_source
20   - unless all_env_events
21   - if self.owner.kind_of? Environment
22   - return self.owner
23   - elsif environment.portal_community
24   - return environment.portal_community
25   - end
  20 + return environment if all_env_events
  21 + if self.owner.kind_of? Environment
  22 + environment.portal_community ? environment.portal_community : environment
  23 + else
  24 + self.owner
26 25 end
27   -
28   - environment
29 26 end
30 27  
31 28 def events(user = nil)
... ... @@ -65,15 +62,15 @@ class EventPlugin::EventBlock < Block
65 62 def human_time_left(days_left)
66 63 months_left = (days_left/30.0).round
67 64 if days_left <= -60
68   - n_('Started one month ago.', 'Started %d months ago.', -months_left) % -months_left
  65 + n_('One month ago', '%d months ago', -months_left) % -months_left
69 66 elsif days_left < 0
70   - n_('Started one day ago.', 'Started %d days ago.', -days_left) % -days_left
  67 + n_('Yesterday', '%d days ago', -days_left) % -days_left
71 68 elsif days_left == 0
72   - _("I happens today.")
  69 + _("Today")
73 70 elsif days_left < 60
74   - n_('One day left to start.', '%d days left to start.', days_left) % days_left
  71 + n_('Tomorrow', '%d days left to start', days_left) % days_left
75 72 else
76   - n_('One month left to start.', '%d months left to start.', months_left) % months_left
  73 + n_('One month left to start', '%d months left to start', months_left) % months_left
77 74 end
78 75 end
79 76  
... ...
plugins/event/public/style.css
... ... @@ -119,6 +119,11 @@
119 119 background: #D4D4D4;
120 120 }
121 121  
  122 +.event-plugin_event-block .event .week-day,
  123 +.event-plugin_event-block .event .year {
  124 + display: none;
  125 +}
  126 +
122 127 .event-plugin_event-block .event .duration {
123 128 display: block;
124 129 }
... ... @@ -184,3 +189,8 @@
184 189 .msie8 #content .event-plugin_event-block .event .days-left {
185 190 float: left;
186 191 }
  192 +
  193 +.event-plugin-config-tip {
  194 + display: block;
  195 + margin-bottom: 3px;
  196 +}
... ...
plugins/event/test/functional/event_block_test.rb
... ... @@ -42,17 +42,17 @@ class HomeControllerTest &lt; ActionController::TestCase
42 42 should 'see event duration' do
43 43 @e1a.slug = 'event1a'
44 44 @e1a.start_date = Date.today
45   - @e1a.end_date = Date.tomorrow
  45 + @e1a.end_date = Date.today + 1.day
46 46 @e1a.save!
47 47 get :index
48   - assert_select ev + 'time.duration[itemprop="endDate"]', '+1 day'
  48 + assert_select ev + 'time.duration[itemprop="endDate"]', /1 day/
49 49  
50 50 @e1a.slug = 'event1a'
51 51 @e1a.start_date = Date.today
52   - @e1a.end_date = Date.tomorrow+1
  52 + @e1a.end_date = Date.today + 2.day
53 53 @e1a.save!
54 54 get :index
55   - assert_select ev + 'time.duration[itemprop="endDate"]', '+2 days'
  55 + assert_select ev + 'time.duration[itemprop="endDate"]', /2 days/
56 56 end
57 57  
58 58 should 'not see event duration for one day events' do
... ...
plugins/event/test/unit/event_block_test.rb
... ... @@ -19,7 +19,7 @@ class EventPlugin::EventBlockTest &lt; ActiveSupport::TestCase
19 19 :start_date => Date.today-30)
20 20  
21 21 box = fast_create(Box, :owner_id => @p1)
22   - @block = EventPlugin::EventBlock.new(:limit => 99, :box => box)
  22 + @block = EventPlugin::EventBlock.new(:limit => 99, :future_only => false, :box => box)
23 23 end
24 24  
25 25 def set_portal(env, portal)
... ... @@ -78,9 +78,7 @@ class EventPlugin::EventBlockTest &lt; ActiveSupport::TestCase
78 78 end
79 79  
80 80 should 'say human left time for an event' do
81   - one_day = @block.human_time_left(Date.tomorrow - Date.today)
82   -
83   - assert_match /One day left/, one_day
  81 + assert_match /Tomorrow/, @block.human_time_left(1)
84 82 assert_match /5 days left/, @block.human_time_left(5)
85 83 assert_match /30 days left/, @block.human_time_left(30)
86 84 assert_match /2 months left/, @block.human_time_left(60)
... ... @@ -88,13 +86,15 @@ class EventPlugin::EventBlockTest &lt; ActiveSupport::TestCase
88 86 end
89 87  
90 88 should 'say human past time for an event' do
91   - one_day = @block.human_time_left(Date.yesterday - Date.today)
  89 + assert_match /Yesterday/, @block.human_time_left(-1)
  90 + assert_match /5 days ago/, @block.human_time_left(-5)
  91 + assert_match /30 days ago/, @block.human_time_left(-30)
  92 + assert_match /2 months ago/, @block.human_time_left(-60)
  93 + assert_match /3 months ago/, @block.human_time_left(-85)
  94 + end
92 95  
93   - assert_match /One day past/, one_day
94   - assert_match /5 days past/, @block.human_time_left(-5)
95   - assert_match /30 days past/, @block.human_time_left(-30)
96   - assert_match /2 months past/, @block.human_time_left(-60)
97   - assert_match /3 months past/, @block.human_time_left(-85)
  96 + should 'say human present time for an event' do
  97 + assert_match /Today/, @block.human_time_left(0)
98 98 end
99 99  
100 100 should 'write formatable data in html' do
... ...
plugins/event/views/blocks/event.html.erb
1 1 <%= block_title(block.title) %>
2 2  
3 3 <ul class="events">
4   - <% block.events(@user).map do |event| %>
  4 + <% block.events(user).map do |event| %>
5 5 <% days_left = ( event.start_date - Date.today ).round %>
6 6 <li itemscope="itemscope" itemtype="http://data-vocabulary.org/Event" class="event">
7 7 <%= render(
... ...
plugins/event/views/profile_design/event_plugin/_event_block.html.erb
1 1 <%= labelled_form_field _('Limit of items'), text_field(:block, :limit, :size => 4) %>
2 2  
3   -<%= labelled_check_box(_('Show all environment events'), "block[all_env_events]", "1", @block.all_env_events) %>
4   -<br>
5   -<small><%=
6   - if @profile
7   - if @profile.person?
8   - _("(Don't check to show only your events)")
9   - else
10   - _("(Don't check to show only %s events)") % @profile.name
11   - end
12   - elsif environment.portal_community
13   - _("(Don't check to show only the environment events)")
14   - end
15   -%></small>
16   -<br>
  3 +<% unless @block.owner.kind_of?(Environment) && !@block.owner.portal_community %>
  4 + <%= labelled_check_box(_('Show all environment events'), "block[all_env_events]", "1", @block.all_env_events) %>
17 5  
18   -<%= labelled_form_field _('Limit of days to display'),
19   - text_field(:block, :date_distance_limit, :size => 4) %>
20   -<small>(<%=_('Only show events on this limit of days.')%>)</small>
21   -<br><br>
  6 + <small class='event-plugin-config-tip'>
  7 + <%= if @block.owner.kind_of?(Profile)
  8 + if @block.owner.person?
  9 + _("(Don't check to show only your events)")
  10 + else
  11 + _("(Don't check to show only %s events)") % @profile.name
  12 + end
  13 + elsif environment.portal_community
  14 + _("(Don't check to show only %s events)") % link_to(environment.portal_community.name, environment.portal_community.url)
  15 + end
  16 + %>
  17 + </small>
  18 +<% end %>
22 19  
23 20 <%= labelled_check_box(_('Only show future events'), "block[future_only]", "1", @block.future_only) %>
  21 +
  22 +<%= labelled_form_field _('Limit of days to display'),
  23 + text_field(:block, :date_distance_limit, :size => 4) %>
  24 +<small class='event-plugin-config-tip'>(<%=_('Only show events in this interval of days.')%>)</small>
... ...