]> source.dussan.org Git - redmine.git/commitdiff
Removes most of the ajax stuff on my page layout.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 18 Jul 2012 18:26:10 +0000 (18:26 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 18 Jul 2012 18:26:10 +0000 (18:26 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10033 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/my_controller.rb
app/views/my/_block.html.erb
app/views/my/page_layout.html.erb
test/functional/my_controller_test.rb

index cfa7531b0b86ad70e552681f4e1551f224d94cc5..d92494540cc743b632e13ff74ee9e588d8eb7cc0 100644 (file)
@@ -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
index bd08a45405943a7393f4c500d9d846d96a01aa74..813eb2b88e6c7de95d41e697f790608568b5d8cb 100644 (file)
@@ -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">
index 8b6c2e8dd91b646e632a47ba36b18f4a459e7e84..a4d1888ba85eebfdddfe59563c831be24da01b41 100644 (file)
@@ -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)) -%>
index d7364dfa81543e8ed413658f91bc225c67ea7ac8..a543189ed7838c989ae4c4af4ab22162766e8922 100644 (file)
@@ -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