Commit ac098d9329a10a0d16c42c26979bb8de9802186f

Authored by Daniel Cunha
Committed by Daniela Feitosa
1 parent c23f40da

Adding blocks whitelist for receive dropped draggable elements

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
test/unit/box_test.rb 0 → 100644
@@ -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