summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/my_controller.rb10
-rw-r--r--app/views/my/_block.html.erb6
-rw-r--r--app/views/my/page_layout.html.erb58
-rw-r--r--test/functional/my_controller_test.rb8
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