Commit d8736a0643af13f17b971d062489db327f0bda1e
1 parent
55d5a006
Exists in
master
and in
22 other branches
Resize children of container blocks at box organizer
Showing
7 changed files
with
99 additions
and
12 deletions
Show diff stats
plugins/container_block/controllers/admin/container_block_plugin_admin_controller.rb
0 → 100644
plugins/container_block/controllers/container_block_plugin_controller.rb
0 → 100644
| ... | ... | @@ -0,0 +1,16 @@ |
| 1 | +module ContainerBlockPluginController | |
| 2 | + | |
| 3 | + def saveWidths | |
| 4 | + container = boxes_holder.blocks.find(params[:id]) | |
| 5 | + pairs = params[:widths].split('|') | |
| 6 | + settings = {} | |
| 7 | + pairs.each do |pair| | |
| 8 | + id, width = pair.split(',') | |
| 9 | + settings[id.to_i] = {:width => width} | |
| 10 | + end | |
| 11 | + container.children_settings = settings | |
| 12 | + container.save! | |
| 13 | + render :json => {:ok => true} | |
| 14 | + end | |
| 15 | + | |
| 16 | +end | ... | ... |
plugins/container_block/controllers/myprofile/container_block_plugin_myprofile_controller.rb
0 → 100644
plugins/container_block/lib/container_block.rb
| 1 | 1 | class ContainerBlock < Block |
| 2 | 2 | |
| 3 | - include Noosfero::Plugin::HotSpot | |
| 4 | - | |
| 5 | 3 | after_create :create_box |
| 6 | 4 | |
| 7 | 5 | settings_items :container_box_id, :type => Integer, :default => nil |
| 6 | + settings_items :children_settings, :type => Hash, :default => {} | |
| 8 | 7 | |
| 9 | 8 | def self.description |
| 10 | 9 | _('Container') |
| ... | ... | @@ -13,6 +12,10 @@ class ContainerBlock < Block |
| 13 | 12 | def help |
| 14 | 13 | _('This block acts as a container for another blocks') |
| 15 | 14 | end |
| 15 | + | |
| 16 | + def layout_template | |
| 17 | + 'default' | |
| 18 | + end | |
| 16 | 19 | |
| 17 | 20 | def create_box |
| 18 | 21 | box = Box.create!(:owner => self) |
| ... | ... | @@ -32,9 +35,8 @@ class ContainerBlock < Block |
| 32 | 35 | container_box.blocks |
| 33 | 36 | end |
| 34 | 37 | |
| 35 | - #FIXME needed? | |
| 36 | - def layout_template | |
| 37 | - 'default2' | |
| 38 | + def child_width(child_id) | |
| 39 | + children_settings[child_id][:width] if children_settings[child_id] | |
| 38 | 40 | end |
| 39 | 41 | |
| 40 | 42 | #FIXME controller test | ... | ... |
plugins/container_block/public/style.css
| 1 | -#content .boxes .container-block .block, #content .boxes .container-block .block-target { | |
| 1 | +#content .boxes .container-block .container_block_child { | |
| 2 | 2 | float: left; |
| 3 | 3 | } |
| 4 | 4 | |
| 5 | -#content .boxes .container-block .block-target { | |
| 6 | - width: 20px; | |
| 7 | -} | |
| 8 | - | |
| 9 | 5 | #content .boxes .container-block .block .icon-down, #content .boxes .container-block .block .icon-down-disabled, #content .boxes .container-block .block .icon-up, #content .boxes .container-block .block .icon-up-disabled { |
| 10 | 6 | display: none; |
| 11 | 7 | } |
| 8 | + | |
| 9 | +#content .boxes .container-block .block { | |
| 10 | + outline-offset: -2px; | |
| 11 | +} | |
| 12 | + | |
| 13 | +#content .boxes .container-block .block .ui-resizable-handle { | |
| 14 | + width: 10px; | |
| 15 | + height: 25px; | |
| 16 | + background-color: #ffffff; | |
| 17 | + border: 1px solid #000000; | |
| 18 | + z-index: 0; | |
| 19 | +} | |
| 20 | + | |
| 21 | +#content .boxes .container-block .block .ui-resizable-e { | |
| 22 | + right:-5px; | |
| 23 | + top:0%; | |
| 24 | + background-color: #AAA; | |
| 25 | +} | |
| 26 | + | |
| 27 | +#content .boxes .container-block .block .ui-resizable-w { | |
| 28 | + left:-5px; | |
| 29 | + top:50%; | |
| 30 | + background-color: #CCC; | |
| 31 | +} | |
| 32 | + | ... | ... |
plugins/container_block/test/unit/container_block_test.rb
| ... | ... | @@ -53,4 +53,16 @@ class ContainerBlockTest < ActiveSupport::TestCase |
| 53 | 53 | assert_equal [Block, Block], @block.blocks.map(&:class) |
| 54 | 54 | end |
| 55 | 55 | |
| 56 | + should 'return child width' do | |
| 57 | + @block.children_settings = {1 => {:width => 10} } | |
| 58 | + @block.save! | |
| 59 | + assert_equal 10, @block.child_width(1) | |
| 60 | + end | |
| 61 | + | |
| 62 | + should 'return nil in width if child do not exists' do | |
| 63 | + @block.children_settings = {2 => {:width => 10} } | |
| 64 | + @block.save! | |
| 65 | + assert_equal nil, @block.child_width(1) | |
| 66 | + end | |
| 67 | + | |
| 56 | 68 | end | ... | ... |
plugins/container_block/views/blocks/container.rhtml
| 1 | -<% block.blocks.each do |block| %> | |
| 2 | - <%= display_block(block, '') %> | |
| 1 | +<% edit_mode = @controller.send(:boxes_editor?) && @controller.send(:uses_design_blocks?) %> | |
| 2 | +<% box_decorator = edit_mode ? self : BoxesHelper::DontMoveBlocks %> | |
| 3 | + | |
| 4 | +<% box_decorator.select_blocks(block.blocks, { :article => @page, :request_path => request.path, :locale => locale }).each do |child| %> | |
| 5 | + <div class="container_block_child"> | |
| 6 | + <%= display_block(child, '') %> | |
| 7 | + </div> | |
| 8 | + <style>#block-<%=child.id%> { width: <%= block.child_width(child.id) %>px; }</style> | |
| 3 | 9 | <% end %> |
| 4 | 10 | <div class="clear"></div> |
| 11 | + | |
| 12 | +<% if edit_mode %> | |
| 13 | + <div class="button-bar"> | |
| 14 | + <%= link_to_remote '', :url => { :controller => @controller.boxes_holder.kind_of?(Environment) ? 'container_block_plugin_admin' : 'container_block_plugin_myprofile', :action => 'saveWidths', :id => block.id }, :with => "containerChildrenWidth(#{block.id})", :html => {:class => "button icon-save" } %> | |
| 15 | + </div> | |
| 16 | + | |
| 17 | + <script> | |
| 18 | + jQuery('.container-block .container_block_child .block').resizable({handles: 'e, w'}); | |
| 19 | + | |
| 20 | + function containerChildrenWidth(container) { | |
| 21 | + widths = ""; | |
| 22 | + jQuery('#block-'+container+' .container_block_child .block').each(function(i) { | |
| 23 | + //childId = jQuery(this).attr('id').substring(6); | |
| 24 | + childId = jQuery(this).attr('id').match(/block-(\d+)/)[1]; | |
| 25 | + widths+=childId+","+jQuery(this).width()+"|"; | |
| 26 | + }); | |
| 27 | + return "widths="+widths; | |
| 28 | + } | |
| 29 | + </script> | |
| 30 | +<% end %> | ... | ... |