Defect #8770 ยป cancel_my_page_v0.1.diff
app/controllers/my_controller.rb | ||
---|---|---|
134 | 134 |
def page_layout |
135 | 135 |
@user = User.current |
136 | 136 |
@blocks = @user.pref[:my_page_layout] || DEFAULT_LAYOUT.dup |
137 |
blockpairs = { "top_deleted" => "top", "right_deleted" => "right", "left_deleted" => "left", |
|
138 |
"top_deleted" => "top_unsaved", "right_deleted" => "right_unsaved", "left_deleted" => "left_unsaved" } |
|
139 |
blockpairs.each { |parent, child| |
|
140 |
@blocks[child] = @blocks[child] - @blocks[parent] |
|
141 |
} |
|
142 |
|
|
137 | 143 |
@block_options = [] |
138 | 144 |
BLOCKS.each do |k, v| |
139 |
unless %w(top left right).detect {|f| (@blocks[f] ||= []).include?(k)}
|
|
145 |
unless %w(top top_unsaved left left_unsaved right right_unsaved).detect {|f| (@blocks[f] ||= []).include?(k)}
|
|
140 | 146 |
@block_options << [l("my.blocks.#{v}", :default => [v, v.to_s.humanize]), k.dasherize] |
141 | 147 |
end |
142 | 148 |
end |
... | ... | |
151 | 157 |
@user = User.current |
152 | 158 |
layout = @user.pref[:my_page_layout] || {} |
153 | 159 |
# remove if already present in a group |
154 |
%w(top left right).each {|f| (layout[f] ||= []).delete block }
|
|
160 |
%w(top top_unsaved top_deleted left left_unsaved left_deleted right right_unsaved right_deleted).each {|f| (layout[f] ||= []).delete block }
|
|
155 | 161 |
# add it on top |
156 |
layout['top'].unshift block |
|
162 |
layout['top_unsaved'].unshift block
|
|
157 | 163 |
@user.pref[:my_page_layout] = layout |
158 | 164 |
@user.pref.save |
159 | 165 |
redirect_to my_page_layout_path |
... | ... | |
166 | 172 |
@user = User.current |
167 | 173 |
# remove block in all groups |
168 | 174 |
layout = @user.pref[:my_page_layout] || {} |
169 |
%w(top left right).each {|f| (layout[f] ||= []).delete block } |
|
175 |
|
|
176 |
blockpairs = { "top" => "top_deleted", "right" => "right_deleted", "left" => "left_deleted", |
|
177 |
"top_unsaved" => "top_deleted", "right_unsaved" => "right_deleted", "left_unsaved" => "left_deleted" |
|
178 |
} |
|
179 |
blockpairs.each { |parent, child| |
|
180 |
layout[child] = layout[child] | block.to_a |
|
181 |
layout[parent] = layout[parent] - layout[child] |
|
182 |
} |
|
183 | ||
170 | 184 |
@user.pref[:my_page_layout] = layout |
171 | 185 |
@user.pref.save |
172 | 186 |
redirect_to my_page_layout_path |
... | ... | |
183 | 197 |
group_items.each {|s| s.sub!(/^block_/, '')} |
184 | 198 |
if group_items and group_items.is_a? Array |
185 | 199 |
layout = @user.pref[:my_page_layout] || {} |
186 |
# remove group blocks if they are presents in other groups |
|
187 |
%w(top left right).each {|f| |
|
188 |
layout[f] = (layout[f] || []) - group_items |
|
189 |
} |
|
190 |
layout[group] = group_items |
|
200 |
layout[group.to_s + "_unsaved"] = group_items |
|
201 |
|
|
191 | 202 |
@user.pref[:my_page_layout] = layout |
192 | 203 |
@user.pref.save |
193 | 204 |
end |
194 | 205 |
end |
195 | 206 |
render :nothing => true |
196 | 207 |
end |
208 |
|
|
209 |
# Save my Page changes |
|
210 |
def save_layout |
|
211 |
@user = User.current |
|
212 |
blocks = @user.pref[:my_page_layout] || {} |
|
213 |
|
|
214 |
blockpairs = { "top" => "top_unsaved", "right" => "right_unsaved", "left" => "left_unsaved" } |
|
215 |
blockpairs.each { |parent, child| |
|
216 |
blocks[parent] = blocks[parent] | blocks[child] |
|
217 |
blocks[child] = [] |
|
218 |
} |
|
219 |
blockdelete = ["top_deleted", "left_deleted", "right_deleted"] |
|
220 |
blockdelete.each{|block| |
|
221 |
blocks[block] = [] |
|
222 |
} |
|
223 |
@user.pref[:my_page_layout] = blocks |
|
224 |
@user.pref.save |
|
225 |
|
|
226 |
redirect_to my_page_path |
|
227 |
end |
|
228 |
|
|
229 |
# Save my Page changes |
|
230 |
def cancel_layout |
|
231 |
@user = User.current |
|
232 |
blocks = @user.pref[:my_page_layout] || {} |
|
233 |
|
|
234 |
blockpairs = { "top" => "top_deleted", "right" => "right_deleted", "left" => "left_deleted" } |
|
235 |
blockpairs.each { |parent, child| |
|
236 |
blocks[parent] = blocks[parent] | blocks[child] |
|
237 |
blocks[child] = [] |
|
238 |
} |
|
239 | ||
240 |
@user.pref[:my_page_layout] = blocks |
|
241 |
@user.pref.save |
|
242 |
|
|
243 |
redirect_to my_page_path |
|
244 |
end |
|
197 | 245 |
end |
app/views/my/page_layout.html.erb | ||
---|---|---|
8 | 8 |
<%= link_to l(:button_add), '#', :onclick => '$("#block-form").submit()', :class => 'icon icon-add' %> |
9 | 9 |
<% end %> |
10 | 10 |
<% end %> |
11 |
<%= link_to l(:button_back), {:action => 'page'}, :class => 'icon icon-cancel' %> |
|
11 |
<%= link_to l(:button_save), {:action => 'save_layout'}, :class => 'icon icon-save' %> |
|
12 |
<%= link_to l(:button_cancel), {:action => 'cancel_layout'}, :class => 'icon icon-cancel' %> |
|
12 | 13 |
</div> |
13 | 14 | |
14 | 15 |
<h2><%=l(:label_my_page)%></h2> |
15 | 16 | |
16 | 17 |
<div id="list-top" class="block-receiver"> |
17 |
<% @blocks['top'].each do |b| |
|
18 |
<% blocklist = @blocks['top'].to_a | @blocks['top_unsaved'].to_a %> |
|
19 |
<% blocklist.each do |b| |
|
18 | 20 |
next unless MyController::BLOCKS.keys.include? b %> |
19 | 21 |
<%= render :partial => 'block', :locals => {:user => @user, :block_name => b} %> |
20 |
<% end if @blocks['top'] %>
|
|
22 |
<% end if blocklist %>
|
|
21 | 23 |
</div> |
22 | 24 | |
23 | 25 |
<div id="list-left" class="splitcontentleft block-receiver"> |
24 |
<% @blocks['left'].each do |b| |
|
26 |
<% blocklist = @blocks['left'].to_a | @blocks['left_unsaved'].to_a %> |
|
27 |
<% blocklist.each do |b| |
|
25 | 28 |
next unless MyController::BLOCKS.keys.include? b %> |
26 | 29 |
<%= render :partial => 'block', :locals => {:user => @user, :block_name => b} %> |
27 |
<% end if @blocks['left'] %>
|
|
30 |
<% end if blocklist %>
|
|
28 | 31 |
</div> |
29 | 32 | |
30 | 33 |
<div id="list-right" class="splitcontentright block-receiver"> |
31 |
<% @blocks['right'].each do |b| |
|
34 |
<% blocklist = @blocks['right'].to_a | @blocks['right_unsaved'].to_a %> |
|
35 |
<% blocklist.each do |b| |
|
32 | 36 |
next unless MyController::BLOCKS.keys.include? b %> |
33 | 37 |
<%= render :partial => 'block', :locals => {:user => @user, :block_name => b} %> |
34 |
<% end if @blocks['right'] %>
|
|
38 |
<% end if blocklist %>
|
|
35 | 39 |
</div> |
36 | 40 | |
37 | 41 |
<%= javascript_tag "initMyPageSortable('top', '#{ escape_javascript url_for(:action => "order_blocks", :group => "top") }');" %> |
config/routes.rb | ||
---|---|---|
63 | 63 |
match 'my/account', :controller => 'my', :action => 'account', :via => [:get, :post] |
64 | 64 |
match 'my/account/destroy', :controller => 'my', :action => 'destroy', :via => [:get, :post] |
65 | 65 |
match 'my/page', :controller => 'my', :action => 'page', :via => :get |
66 |
match 'my/save_layout', :controller => 'my', :action => 'save_layout', :via => :get |
|
67 |
match 'my/cancel_layout', :controller => 'my', :action => 'cancel_layout', :via => :get |
|
66 | 68 |
match 'my', :controller => 'my', :action => 'index', :via => :get # Redirects to my/page |
67 | 69 |
match 'my/reset_rss_key', :controller => 'my', :action => 'reset_rss_key', :via => :post |
68 | 70 |
match 'my/reset_api_key', :controller => 'my', :action => 'reset_api_key', :via => :post |