Commit ac098d9329a10a0d16c42c26979bb8de9802186f
Committed by
Daniela Feitosa
1 parent
c23f40da
Exists in
master
and in
29 other branches
Adding blocks whitelist for receive dropped draggable elements
Showing
3 changed files
with
57 additions
and
7 deletions
Show diff stats
app/helpers/boxes_helper.rb
@@ -162,9 +162,6 @@ module BoxesHelper | @@ -162,9 +162,6 @@ module BoxesHelper | ||
162 | # | 162 | # |
163 | # +box+ is always needed | 163 | # +box+ is always needed |
164 | def block_target(box, block = nil) | 164 | def block_target(box, block = nil) |
165 | - # FIXME hardcoded | ||
166 | - return '' if box.position == 1 | ||
167 | - | ||
168 | id = | 165 | id = |
169 | if block.nil? | 166 | if block.nil? |
170 | "end-of-box-#{box.id}" | 167 | "end-of-box-#{box.id}" |
@@ -172,14 +169,11 @@ module BoxesHelper | @@ -172,14 +169,11 @@ module BoxesHelper | ||
172 | "before-block-#{block.id}" | 169 | "before-block-#{block.id}" |
173 | end | 170 | end |
174 | 171 | ||
175 | - content_tag('div', ' ', :id => id, :class => 'block-target' ) + drop_receiving_element(id, :url => { :action => 'move_block', :target => id }, :accept => 'block', :hoverclass => 'block-target-hover') | 172 | + content_tag('div', ' ', :id => id, :class => 'block-target' ) + drop_receiving_element(id, :url => { :action => 'move_block', :target => id }, :accept => box.acceptable_blocks, :hoverclass => 'block-target-hover') |
176 | end | 173 | end |
177 | 174 | ||
178 | # makes the given block draggable so it can be moved away. | 175 | # makes the given block draggable so it can be moved away. |
179 | def block_handle(block) | 176 | def block_handle(block) |
180 | - # FIXME hardcoded | ||
181 | - return '' if block.box.position == 1 | ||
182 | - | ||
183 | draggable_element("block-#{block.id}", :revert => true) | 177 | draggable_element("block-#{block.id}", :revert => true) |
184 | end | 178 | end |
185 | 179 |
app/models/box.rb
@@ -2,4 +2,45 @@ class Box < ActiveRecord::Base | @@ -2,4 +2,45 @@ class Box < ActiveRecord::Base | ||
2 | belongs_to :owner, :polymorphic => true | 2 | belongs_to :owner, :polymorphic => true |
3 | acts_as_list :scope => 'owner_id = #{owner_id} and owner_type = \'#{owner_type}\'' | 3 | acts_as_list :scope => 'owner_id = #{owner_id} and owner_type = \'#{owner_type}\'' |
4 | has_many :blocks, :dependent => :destroy, :order => 'position' | 4 | has_many :blocks, :dependent => :destroy, :order => 'position' |
5 | + | ||
6 | + def acceptable_blocks | ||
7 | + to_css_class_name (position == 1) ? acceptable_center_blocks : acceptable_side_blocks | ||
8 | + end | ||
9 | + | ||
10 | + private | ||
11 | + | ||
12 | + def acceptable_center_blocks | ||
13 | + %w{ MainBlock } | ||
14 | + end | ||
15 | + | ||
16 | + def acceptable_side_blocks | ||
17 | + %w{ | ||
18 | + ArticleBlock | ||
19 | + CategoriesBlock | ||
20 | + CommunitiesBlock | ||
21 | + EnterprisesBlock | ||
22 | + EnvironmentStatisticsBlock | ||
23 | + FeaturedProductsBlock | ||
24 | + FeedReaderBlock | ||
25 | + HighlightsBlock | ||
26 | + LinkListBlock | ||
27 | + LocationBlock | ||
28 | + LoginBlock | ||
29 | + MyNetworkBlock | ||
30 | + PeopleBlock | ||
31 | + ProfileImageBlock | ||
32 | + ProfileInfoBlock | ||
33 | + ProfileSearchBlock | ||
34 | + RawHTMLBlock | ||
35 | + RecentDocumentsBlock | ||
36 | + SellersSearchBlock | ||
37 | + SlideshowBlock | ||
38 | + TagsBlock | ||
39 | + } | ||
40 | + end | ||
41 | + | ||
42 | + def to_css_class_name(blocks) | ||
43 | + blocks.map{ |block| block.underscore.tr('_', '-') } | ||
44 | + end | ||
45 | + | ||
5 | end | 46 | end |
@@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
1 | +require File.dirname(__FILE__) + '/../test_helper' | ||
2 | + | ||
3 | +class BoxTest < ActiveSupport::TestCase | ||
4 | + | ||
5 | + should 'list allowed blocks for center box' do | ||
6 | + b = Box.new(:position => 1) | ||
7 | + assert b.acceptable_blocks.include?('main-block') | ||
8 | + end | ||
9 | + | ||
10 | + should 'list allowed blocks for box at position 2' do | ||
11 | + b = Box.new(:position => 2) | ||
12 | + assert !b.acceptable_blocks.include?('main-block') | ||
13 | + end | ||
14 | + | ||
15 | +end |