Commit ebbd2aa42cb8a435c0da2ba277d7b462bbbf435c

Authored by Eduardo Tourinho Edington
Committed by Victor Costa
1 parent 4eb56579

Allow the display field of MainBlock to be edited.

Enable options to display the main block at all pages and all pages except in the homepage.
app/models/block.rb
... ... @@ -40,7 +40,7 @@ class Block < ActiveRecord::Base
40 40 if context[:article]
41 41 return context[:article] != owner.home_page
42 42 else
43   - return context[:request_path] != '/' + owner.identifier
  43 + return context[:request_path] != '/' + (owner.kind_of?(Profile) ? owner.identifier : '')
44 44 end
45 45 end
46 46 end
... ... @@ -153,4 +153,19 @@ class Block < ActiveRecord::Base
153 153 }
154 154 end
155 155  
  156 + DISPLAY_OPTIONS = {
  157 + 'always' => __('In all pages'),
  158 + 'home_page_only' => __('Only in the homepage'),
  159 + 'except_home_page' => __('In all pages, except in the homepage'),
  160 + 'never' => __('Don\'t display'),
  161 + }
  162 +
  163 + def display_options
  164 + DISPLAY_OPTIONS.keys
  165 + end
  166 +
  167 + def display_option_label(option)
  168 + DISPLAY_OPTIONS[option]
  169 + end
  170 +
156 171 end
... ...
app/models/main_block.rb
... ... @@ -17,11 +17,15 @@ class MainBlock < Block
17 17 end
18 18  
19 19 def editable?
20   - false
  20 + true
21 21 end
22 22  
23 23 def cacheable?
24   - false
  24 + false
  25 + end
  26 +
  27 + def display_options
  28 + ['always', 'except_home_page']
25 29 end
26 30  
27 31 end
... ...
app/views/box_organizer/edit.rhtml
... ... @@ -9,17 +9,11 @@
9 9  
10 10 <%= labelled_form_field _('Display this block:'), '' %>
11 11 <div style='margin-left: 10px'>
12   - <%= radio_button(:block, :display, 'always') %>
13   - <%= label_tag('block_display_always', _('In all pages')) %>
14   - <br/>
15   - <%= radio_button(:block, :display, 'home_page_only') %>
16   - <%= label_tag('block_display_home_page_only', _('Only in the homepage')) %>
17   - <br/>
18   - <%= radio_button(:block, :display, 'except_home_page') %>
19   - <%= label_tag('block_display_except_home_page', _('In all pages, except in the homepage')) %>
20   - <br/>
21   - <%= radio_button(:block, :display, 'never') %>
22   - <%= label_tag('block_display_never', _("Don't display")) %>
  12 + <% @block.display_options.each do |option| %>
  13 + <%= radio_button(:block, :display, option) %>
  14 + <%= label_tag("block_display_#{option}", _(@block.display_option_label(option))) %>
  15 + <br/>
  16 + <% end %>
23 17 </div>
24 18  
25 19 <%= labelled_form_field(_('Show for:'), select(:block, :language, [ [ _('all languages'), 'all']] + environment.locales.map {|key, value| [value, key]} )) %>
... ...
test/functional/profile_design_controller_test.rb
... ... @@ -300,6 +300,27 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase
300 300 assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock8)
301 301 end
302 302  
  303 + should 'not edit main block with never option' do
  304 + get :edit, :profile => 'designtestuser', :id => @b4.id
  305 + assert_no_tag :input, :attributes => { :type => 'radio', :value => 'never'}
  306 + end
  307 +
  308 + should 'not edit main block with home_page_only option' do
  309 + get :edit, :profile => 'designtestuser', :id => @b4.id
  310 + assert_no_tag :input, :attributes => { :type => 'radio', :value => 'home_page_only'}
  311 + end
  312 +
  313 + should 'edit main block with always option' do
  314 + get :edit, :profile => 'designtestuser', :id => @b4.id
  315 + assert_tag :input, :attributes => { :type => 'radio', :value => 'always'}
  316 + end
  317 +
  318 + should 'edit main block with except_home_page option' do
  319 + get :edit, :profile => 'designtestuser', :id => @b4.id
  320 + assert_tag :input, :attributes => { :type => 'radio', :value => 'except_home_page'}
  321 + end
  322 +
  323 +
303 324 ######################################################
304 325 # END - tests for BoxOrganizerController features
305 326 ######################################################
... ...
test/unit/main_block_test.rb
... ... @@ -11,8 +11,8 @@ class MainBlockTest &lt; ActiveSupport::TestCase
11 11 ok("MainBlock must not have a content") { MainBlock.new.content.blank? }
12 12 end
13 13  
14   - should 'not be editable' do
15   - assert !MainBlock.new.editable?
  14 + should 'be editable' do
  15 + assert MainBlock.new.editable?
16 16 end
17 17  
18 18 end
... ...