diff options
-rw-r--r-- | app/controllers/my_controller.rb | 10 | ||||
-rw-r--r-- | app/views/my/_block.html.erb | 6 | ||||
-rw-r--r-- | app/views/my/page_layout.html.erb | 58 | ||||
-rw-r--r-- | test/functional/my_controller_test.rb | 8 |
4 files changed, 20 insertions, 62 deletions
diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb index cfa7531b0..d92494540 100644 --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -135,7 +135,11 @@ class MyController < ApplicationController @user = User.current @blocks = @user.pref[:my_page_layout] || DEFAULT_LAYOUT.dup @block_options = [] - BLOCKS.each {|k, v| @block_options << [l("my.blocks.#{v}", :default => [v, v.to_s.humanize]), k.dasherize]} + BLOCKS.each do |k, v| + unless %w(top left right).detect {|f| (@blocks[f] ||= []).include?(k)} + @block_options << [l("my.blocks.#{v}", :default => [v, v.to_s.humanize]), k.dasherize] + end + end end # Add a block to user's page @@ -152,7 +156,7 @@ class MyController < ApplicationController layout['top'].unshift block @user.pref[:my_page_layout] = layout @user.pref.save - render :partial => "block", :locals => {:user => @user, :block_name => block} + redirect_to :action => 'page_layout' end # Remove a block to user's page @@ -165,7 +169,7 @@ class MyController < ApplicationController %w(top left right).each {|f| (layout[f] ||= []).delete block } @user.pref[:my_page_layout] = layout @user.pref.save - render :nothing => true + redirect_to :action => 'page_layout' end # Change blocks order on user's page diff --git a/app/views/my/_block.html.erb b/app/views/my/_block.html.erb index bd08a4540..813eb2b88 100644 --- a/app/views/my/_block.html.erb +++ b/app/views/my/_block.html.erb @@ -1,11 +1,7 @@ <div id="block_<%= block_name.dasherize %>" class="mypage-box"> <div style="float:right;margin-right:16px;z-index:500;"> - <%= link_to_remote "", { - :url => { :action => "remove_block", :block => block_name }, - :complete => "removeBlock('block_#{block_name.dasherize}')" }, - :class => "close-icon" - %> + <%= link_to "", {:action => "remove_block", :block => block_name}, :method => 'post', :class => "close-icon" %> </div> <div class="handle"> diff --git a/app/views/my/page_layout.html.erb b/app/views/my/page_layout.html.erb index 8b6c2e8dd..a4d1888ba 100644 --- a/app/views/my/page_layout.html.erb +++ b/app/views/my/page_layout.html.erb @@ -1,53 +1,12 @@ -<script language="JavaScript"> -//<![CDATA[ -function recreateSortables() { - Sortable.destroy('list-top'); - Sortable.destroy('list-left'); - Sortable.destroy('list-right'); - - Sortable.create("list-top", {constraint:false, containment:['list-top','list-left','list-right'], dropOnEmpty:true, handle:'handle', onUpdate:function(){new Ajax.Request('<%= url_for(:controller => 'my', :action => 'order_blocks', :group => 'top') %>', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize("list-top")})}, only:'mypage-box', tag:'div'}) - Sortable.create("list-left", {constraint:false, containment:['list-top','list-left','list-right'], dropOnEmpty:true, handle:'handle', onUpdate:function(){new Ajax.Request('<%= url_for(:controller => 'my', :action => 'order_blocks', :group => 'left') %>', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize("list-left")})}, only:'mypage-box', tag:'div'}) - Sortable.create("list-right", {constraint:false, containment:['list-top','list-left','list-right'], dropOnEmpty:true, handle:'handle', onUpdate:function(){new Ajax.Request('<%= url_for(:controller => 'my', :action => 'order_blocks', :group => 'right') %>', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize("list-right")})}, only:'mypage-box', tag:'div'}) -} - -function updateSelect() { - s = $('block-select') - for (var i = 0; i < s.options.length; i++) { - if ($('block_' + s.options[i].value)) { - s.options[i].disabled = true; - } else { - s.options[i].disabled = false; - } - } - s.options[0].selected = true; -} - -function afterAddBlock() { - recreateSortables(); - updateSelect(); -} - -function removeBlock(block) { - Effect.DropOut(block); - updateSelect(); -} -//]]> -</script> - <div class="contextual"> -<%= form_tag({:action => "add_block"}, :id => "block-form") do %> -<%= label_tag('block-select', l(:label_my_page_block)) %>: -<%= select_tag 'block', - content_tag('option') + options_for_select(@block_options), - :id => "block-select" %> -<%= link_to_remote l(:button_add), - {:url => { :action => "add_block" }, - :with => "Form.serialize('block-form')", - :update => "list-top", - :position => :top, - :complete => "afterAddBlock();" - }, :class => 'icon icon-add' - %> +<% if @block_options.present? %> + <%= form_tag({:action => "add_block"}, :id => "block-form") do %> + <%= label_tag('block-select', l(:label_my_page_block)) %>: + <%= select_tag 'block', + content_tag('option') + options_for_select(@block_options), + :id => "block-select" %> + <%= link_to l(:button_add), '#', :onclick => '$("block-form").submit()', :class => 'icon icon-add' %> + <% end %> <% end %> <%= link_to l(:button_back), {:action => 'page'}, :class => 'icon icon-cancel' %> </div> @@ -105,5 +64,4 @@ function removeBlock(block) { :url => { :action => "order_blocks", :group => "right" } %> -<%= javascript_tag "updateSelect()" %> <% html_title(l(:label_my_page)) -%> diff --git a/test/functional/my_controller_test.rb b/test/functional/my_controller_test.rb index d7364dfa8..a543189ed 100644 --- a/test/functional/my_controller_test.rb +++ b/test/functional/my_controller_test.rb @@ -182,14 +182,14 @@ class MyControllerTest < ActionController::TestCase end def test_add_block - xhr :post, :add_block, :block => 'issuesreportedbyme' - assert_response :success + post :add_block, :block => 'issuesreportedbyme' + assert_redirected_to '/my/page_layout' assert User.find(2).pref[:my_page_layout]['top'].include?('issuesreportedbyme') end def test_remove_block - xhr :post, :remove_block, :block => 'issuesassignedtome' - assert_response :success + post :remove_block, :block => 'issuesassignedtome' + assert_redirected_to '/my/page_layout' assert !User.find(2).pref[:my_page_layout].values.flatten.include?('issuesassignedtome') end |