Removes most of the ajax stuff on my page layout.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10033 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
c9a46950de
commit
7e5bad993d
|
@ -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
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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)) -%>
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue