Commit cf94bc1e5bd51d0e6f978d96a6e9d1c5005fc8e9
1 parent
ca1dc3cd
Exists in
master
and in
29 other branches
container_block: do not show its boxes at add_block view
Showing
7 changed files
with
33 additions
and
6 deletions
Show diff stats
app/controllers/box_organizer_controller.rb
... | ... | @@ -70,7 +70,7 @@ class BoxOrganizerController < ApplicationController |
70 | 70 | else |
71 | 71 | @center_block_types = (Box.acceptable_center_blocks & available_blocks) + plugins.dispatch(:extra_blocks, :type => boxes_holder.class, :position => 1) |
72 | 72 | @side_block_types = (Box.acceptable_side_blocks & available_blocks) + plugins.dispatch(:extra_blocks, :type => boxes_holder.class, :position => [2,3]) |
73 | - @boxes = boxes_holder.boxes | |
73 | + @boxes = boxes_holder.boxes.with_position | |
74 | 74 | render :action => 'add_block', :layout => false |
75 | 75 | end |
76 | 76 | end | ... | ... |
app/helpers/boxes_helper.rb
... | ... | @@ -39,7 +39,7 @@ module BoxesHelper |
39 | 39 | end |
40 | 40 | |
41 | 41 | def display_boxes(holder, main_content) |
42 | - boxes = holder.boxes.first(holder.boxes_limit) | |
42 | + boxes = holder.boxes.with_position.first(holder.boxes_limit) | |
43 | 43 | content = boxes.reverse.map { |item| display_box(item, main_content) }.join("\n") |
44 | 44 | content = main_content if (content.blank?) |
45 | 45 | ... | ... |
app/models/box.rb
plugins/container_block/lib/container_block_plugin/container_block.rb
... | ... | @@ -24,8 +24,9 @@ class ContainerBlockPlugin::ContainerBlock < Block |
24 | 24 | end |
25 | 25 | |
26 | 26 | def create_box |
27 | - box = Box.create!(:owner => owner) | |
28 | - settings[:container_box_id] = box.id | |
27 | + container_box = Box.create!(:owner => owner) | |
28 | + container_box.update_attribute(:position, nil) | |
29 | + settings[:container_box_id] = container_box.id | |
29 | 30 | save! |
30 | 31 | end |
31 | 32 | ... | ... |
plugins/container_block/test/unit/container_block_plugin/container_block_test.rb
... | ... | @@ -20,6 +20,11 @@ class ContainerBlockPlugin::ContainerBlockTest < ActiveSupport::TestCase |
20 | 20 | assert @block.container_box_id |
21 | 21 | end |
22 | 22 | |
23 | + should 'created box should have nil as position' do | |
24 | + @block.save! | |
25 | + assert_equal nil, @block.container_box.position | |
26 | + end | |
27 | + | |
23 | 28 | should 'return created box' do |
24 | 29 | @block.save! |
25 | 30 | assert @block.container_box |
... | ... | @@ -89,4 +94,14 @@ class ContainerBlockPlugin::ContainerBlockTest < ActiveSupport::TestCase |
89 | 94 | end |
90 | 95 | end |
91 | 96 | |
97 | + should 'not mess up with boxes positions when destroyed' do | |
98 | + env = fast_create(Environment) | |
99 | + box1 = fast_create(Box, :owner_id => env.id, :owner_type => 'Environment', :position => 1) | |
100 | + box2 = fast_create(Box, :owner_id => env.id, :owner_type => 'Environment', :position => 2) | |
101 | + box3 = fast_create(Box, :owner_id => env.id, :owner_type => 'Environment', :position => 3) | |
102 | + block = ContainerBlockPlugin::ContainerBlock.create!(:box => box1) | |
103 | + block.destroy | |
104 | + assert_equal [1, 2, 3], [box1.reload.position, box2.reload.position, box3.reload.position] | |
105 | + end | |
106 | + | |
92 | 107 | end | ... | ... |
test/unit/box_test.rb
... | ... | @@ -119,4 +119,11 @@ class BoxTest < ActiveSupport::TestCase |
119 | 119 | assert blocks.include?('plugin-block') |
120 | 120 | end |
121 | 121 | |
122 | + should 'list only boxes with a postion greater than zero' do | |
123 | + profile = fast_create(Profile) | |
124 | + box = fast_create(Box, :owner_id => profile.id, :owner_type => 'Profile', :position => 0) | |
125 | + box2 = fast_create(Box, :owner_id => profile.id, :owner_type => 'Profile', :position => 1) | |
126 | + assert_equal [box2], profile.boxes.with_position | |
127 | + end | |
128 | + | |
122 | 129 | end | ... | ... |
test/unit/boxes_helper_test.rb
... | ... | @@ -13,7 +13,8 @@ class BoxesHelperTest < ActiveSupport::TestCase |
13 | 13 | |
14 | 14 | should 'include profile-specific header' do |
15 | 15 | holder = mock |
16 | - holder.stubs(:boxes).returns([]) | |
16 | + holder.stubs(:boxes).returns(boxes = []) | |
17 | + boxes.stubs(:with_position).returns([]) | |
17 | 18 | holder.stubs(:boxes_limit).returns(0) |
18 | 19 | holder.stubs(:custom_header_expanded).returns('my custom header') |
19 | 20 | @controller.stubs(:boxes_holder).returns(holder) |
... | ... | @@ -23,7 +24,8 @@ class BoxesHelperTest < ActiveSupport::TestCase |
23 | 24 | |
24 | 25 | should 'include profile-specific footer' do |
25 | 26 | holder = mock |
26 | - holder.stubs(:boxes).returns([]) | |
27 | + holder.stubs(:boxes).returns(boxes = []) | |
28 | + boxes.stubs(:with_position).returns([]) | |
27 | 29 | holder.stubs(:boxes_limit).returns(0) |
28 | 30 | holder.stubs(:custom_footer_expanded).returns('my custom footer') |
29 | 31 | @controller.stubs(:boxes_holder).returns(holder) | ... | ... |