From d8736a0643af13f17b971d062489db327f0bda1e Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Tue, 29 Oct 2013 11:45:07 -0300 Subject: [PATCH] Resize children of container blocks at box organizer --- plugins/container_block/controllers/admin/container_block_plugin_admin_controller.rb | 5 +++++ plugins/container_block/controllers/container_block_plugin_controller.rb | 16 ++++++++++++++++ plugins/container_block/controllers/myprofile/container_block_plugin_myprofile_controller.rb | 5 +++++ plugins/container_block/lib/container_block.rb | 12 +++++++----- plugins/container_block/public/style.css | 31 ++++++++++++++++++++++++++----- plugins/container_block/test/unit/container_block_test.rb | 12 ++++++++++++ plugins/container_block/views/blocks/container.rhtml | 30 ++++++++++++++++++++++++++++-- 7 files changed, 99 insertions(+), 12 deletions(-) create mode 100644 plugins/container_block/controllers/admin/container_block_plugin_admin_controller.rb create mode 100644 plugins/container_block/controllers/container_block_plugin_controller.rb create mode 100644 plugins/container_block/controllers/myprofile/container_block_plugin_myprofile_controller.rb diff --git a/plugins/container_block/controllers/admin/container_block_plugin_admin_controller.rb b/plugins/container_block/controllers/admin/container_block_plugin_admin_controller.rb new file mode 100644 index 0000000..d1f0755 --- /dev/null +++ b/plugins/container_block/controllers/admin/container_block_plugin_admin_controller.rb @@ -0,0 +1,5 @@ +class ContainerBlockPluginAdminController < AdminController + + include ContainerBlockPluginController + +end diff --git a/plugins/container_block/controllers/container_block_plugin_controller.rb b/plugins/container_block/controllers/container_block_plugin_controller.rb new file mode 100644 index 0000000..b336571 --- /dev/null +++ b/plugins/container_block/controllers/container_block_plugin_controller.rb @@ -0,0 +1,16 @@ +module ContainerBlockPluginController + + def saveWidths + container = boxes_holder.blocks.find(params[:id]) + pairs = params[:widths].split('|') + settings = {} + pairs.each do |pair| + id, width = pair.split(',') + settings[id.to_i] = {:width => width} + end + container.children_settings = settings + container.save! + render :json => {:ok => true} + end + +end diff --git a/plugins/container_block/controllers/myprofile/container_block_plugin_myprofile_controller.rb b/plugins/container_block/controllers/myprofile/container_block_plugin_myprofile_controller.rb new file mode 100644 index 0000000..e510c97 --- /dev/null +++ b/plugins/container_block/controllers/myprofile/container_block_plugin_myprofile_controller.rb @@ -0,0 +1,5 @@ +class ContainerBlockPluginMyprofileController < MyProfileController + + include ContainerBlockPluginController + +end diff --git a/plugins/container_block/lib/container_block.rb b/plugins/container_block/lib/container_block.rb index ce015eb..cb93b0d 100644 --- a/plugins/container_block/lib/container_block.rb +++ b/plugins/container_block/lib/container_block.rb @@ -1,10 +1,9 @@ class ContainerBlock < Block - include Noosfero::Plugin::HotSpot - after_create :create_box settings_items :container_box_id, :type => Integer, :default => nil + settings_items :children_settings, :type => Hash, :default => {} def self.description _('Container') @@ -13,6 +12,10 @@ class ContainerBlock < Block def help _('This block acts as a container for another blocks') end + + def layout_template + 'default' + end def create_box box = Box.create!(:owner => self) @@ -32,9 +35,8 @@ class ContainerBlock < Block container_box.blocks end - #FIXME needed? - def layout_template - 'default2' + def child_width(child_id) + children_settings[child_id][:width] if children_settings[child_id] end #FIXME controller test diff --git a/plugins/container_block/public/style.css b/plugins/container_block/public/style.css index f636571..b832494 100644 --- a/plugins/container_block/public/style.css +++ b/plugins/container_block/public/style.css @@ -1,11 +1,32 @@ -#content .boxes .container-block .block, #content .boxes .container-block .block-target { +#content .boxes .container-block .container_block_child { float: left; } -#content .boxes .container-block .block-target { - width: 20px; -} - #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 { display: none; } + +#content .boxes .container-block .block { + outline-offset: -2px; +} + +#content .boxes .container-block .block .ui-resizable-handle { + width: 10px; + height: 25px; + background-color: #ffffff; + border: 1px solid #000000; + z-index: 0; +} + +#content .boxes .container-block .block .ui-resizable-e { + right:-5px; + top:0%; + background-color: #AAA; +} + +#content .boxes .container-block .block .ui-resizable-w { + left:-5px; + top:50%; + background-color: #CCC; +} + diff --git a/plugins/container_block/test/unit/container_block_test.rb b/plugins/container_block/test/unit/container_block_test.rb index 2c8c294..29eab7c 100644 --- a/plugins/container_block/test/unit/container_block_test.rb +++ b/plugins/container_block/test/unit/container_block_test.rb @@ -53,4 +53,16 @@ class ContainerBlockTest < ActiveSupport::TestCase assert_equal [Block, Block], @block.blocks.map(&:class) end + should 'return child width' do + @block.children_settings = {1 => {:width => 10} } + @block.save! + assert_equal 10, @block.child_width(1) + end + + should 'return nil in width if child do not exists' do + @block.children_settings = {2 => {:width => 10} } + @block.save! + assert_equal nil, @block.child_width(1) + end + end diff --git a/plugins/container_block/views/blocks/container.rhtml b/plugins/container_block/views/blocks/container.rhtml index fa4967e..75ac769 100644 --- a/plugins/container_block/views/blocks/container.rhtml +++ b/plugins/container_block/views/blocks/container.rhtml @@ -1,4 +1,30 @@ -<% block.blocks.each do |block| %> - <%= display_block(block, '') %> +<% edit_mode = @controller.send(:boxes_editor?) && @controller.send(:uses_design_blocks?) %> +<% box_decorator = edit_mode ? self : BoxesHelper::DontMoveBlocks %> + +<% box_decorator.select_blocks(block.blocks, { :article => @page, :request_path => request.path, :locale => locale }).each do |child| %> +
+ <%= display_block(child, '') %> +
+ <% end %>
+ +<% if edit_mode %> +
+ <%= 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" } %> +
+ + +<% end %> -- libgit2 0.21.2