Defect #5538 ยป keep_default_widgets.diff
app/controllers/my_controller.rb (working copy) | ||
---|---|---|
136 | 136 |
block = params[:block].to_s.underscore |
137 | 137 |
(render :nothing => true; return) unless block && (BLOCKS.keys.include? block) |
138 | 138 |
@user = User.current |
139 |
layout = @user.pref[:my_page_layout] || {}
|
|
139 |
layout = @user.pref[:my_page_layout] || DEFAULT_LAYOUT.dup
|
|
140 | 140 |
# remove if already present in a group |
141 | 141 |
%w(top left right).each {|f| (layout[f] ||= []).delete block } |
142 | 142 |
# add it on top |
... | ... | |
152 | 152 |
block = params[:block].to_s.underscore |
153 | 153 |
@user = User.current |
154 | 154 |
# remove block in all groups |
155 |
layout = @user.pref[:my_page_layout] || {}
|
|
155 |
layout = @user.pref[:my_page_layout] || DEFAULT_LAYOUT.dup
|
|
156 | 156 |
%w(top left right).each {|f| (layout[f] ||= []).delete block } |
157 | 157 |
@user.pref[:my_page_layout] = layout |
158 | 158 |
@user.pref.save |
... | ... | |
168 | 168 |
if group.is_a?(String) |
169 | 169 |
group_items = (params["list-#{group}"] || []).collect(&:underscore) |
170 | 170 |
if group_items and group_items.is_a? Array |
171 |
layout = @user.pref[:my_page_layout] || {}
|
|
171 |
layout = @user.pref[:my_page_layout] || DEFAULT_LAYOUT.dup
|
|
172 | 172 |
# remove group blocks if they are presents in other groups |
173 | 173 |
%w(top left right).each {|f| |
174 | 174 |
layout[f] = (layout[f] || []) - group_items |
test/functional/my_controller_test.rb (working copy) | ||
---|---|---|
129 | 129 |
assert_response :success |
130 | 130 |
assert_equal ['documents', 'calendar', 'latestnews'], User.find(2).pref[:my_page_layout]['left'] |
131 | 131 |
end |
132 |
|
|
133 |
context "MyPage layout for new users" do |
|
134 |
setup do |
|
135 |
@user = User.find(2) |
|
136 |
assert_equal @user.preference, nil |
|
137 |
@user.save |
|
138 |
end |
|
139 |
|
|
140 |
should "add block" do |
|
141 |
xhr :post, :add_block, :block => 'issueswatched' |
|
142 |
assert_response :success |
|
143 |
|
|
144 |
@user.reload |
|
145 |
assert @user.pref[:my_page_layout]['top'].include?('issueswatched') |
|
146 |
assert @user.pref[:my_page_layout]['right'].include?('issuesreportedbyme') |
|
147 |
end |
|
148 |
|
|
149 |
should "remove block" do |
|
150 |
xhr :post, :remove_block, :block => 'issueswatched' |
|
151 |
assert_response :success |
|
152 |
|
|
153 |
@user.reload |
|
154 |
assert !@user.pref[:my_page_layout]['top'].include?('issueswatched') |
|
155 |
assert @user.pref[:my_page_layout]['right'].include?('issuesreportedbyme') |
|
156 |
end |
|
157 |
|
|
158 |
should "order blocks" do |
|
159 |
xhr :post, :order_blocks, :group => 'top', 'list-top' => ['issuesreportedbyme', 'issuesassignedtome'] |
|
160 |
assert_response :success |
|
161 |
|
|
162 |
@user.reload |
|
163 |
assert_equal ['issuesreportedbyme', 'issuesassignedtome'], @user.pref[:my_page_layout]['top'] |
|
164 |
|
|
165 |
assert_equal [], @user.pref[:my_page_layout]['left'] |
|
166 |
assert_equal [], @user.pref[:my_page_layout]['right'] |
|
167 |
end |
|
168 |
end |
|
132 | 169 | |
133 | 170 |
context "POST to reset_rss_key" do |
134 | 171 |
context "with an existing rss_token" do |