| Class | SearchController |
| In: |
app/controllers/search_controller.rb
|
| Parent: | ApplicationController |
search_condition_items を追加する。
# File app/controllers/search_controller.rb, line 10
10: def add_item
11: @search_condition = SearchCondition.find_or_create_by_person_id_and_display_id(User.current.person_id, @display.id)
12: end
# File app/controllers/search_controller.rb, line 4 4: def index 5: @search_condition = SearchCondition.find_or_create_by_person_id_and_display_id(User.current.person_id, @display.id) 6: load 7: end
search_condition_items を並び替える。
# File app/controllers/search_controller.rb, line 20
20: def order_item
21: search_condition = verified_search_condition
22: render :update do |page|
23: page[:order_search_condition_items].value = params[:search_condition].to_json
24: end
25: end
search_condition_items を削除する。
# File app/controllers/search_controller.rb, line 15
15: def remove_item
16: @search_condition = SearchCondition.find_or_create_by_person_id_and_display_id(User.current.person_id, @display.id)
17: end
編集した検索条件を保存する。
# File app/controllers/search_controller.rb, line 28
28: def save
29: @search_condition = SearchCondition.find_or_create_by_person_id_and_display_id(User.current.person_id, @display.id)
30: load
31: begin
32: # WARNING: must be replaced by ActiveSupport::JSON.decode with Rails 2.0.x
33: @old_search_condition_items = eval(params[:old_search_condition_items] || "[]")
34: raise "must be an array" unless @old_search_condition_items.is_a?(Array)
35: @old_search_condition_items.each {|id| raise "must be an positive integer" unless id.is_a?(Integer) && id > 0}
36: rescue StandardError # ActiveSupport::JSON::ParseError
37: @old_search_condition_items = []
38: end
39: begin
40: # WARNING: must be replaced by ActiveSupport::JSON.decode with Rails 2.0.x
41: @new_search_condition_items = eval(params[:new_search_condition_items] || "[]")
42: raise "must be an array" unless @new_search_condition_items.is_a?(Array)
43: @new_search_condition_items.each {|id| raise "must be an positive integer" unless id.is_a?(Integer) && id > 0}
44: rescue StandardError # ActiveSupport::JSON::ParseError
45: @new_search_condition_items = []
46: end
47: begin
48: # WARNING: must be replaced by ActiveSupport::JSON.decode with Rails 2.0.x
49: @order_search_condition_items = eval(params[:order_search_condition_items] || "[]")
50: raise "must be an array" unless @order_search_condition_items.is_a?(Array)
51: @order_search_condition_items.each {|id| raise "must be a string" unless id.is_a?(String)}
52: rescue StandardError # ActiveSupport::JSON::ParseError
53: @order_search_condition_items = []
54: end
55: proc = lambda do |item, prefix|
56: if ( (item_id = params["#{prefix}_item_id".to_sym]) &&
57: (condition_value = params["#{prefix}_condition_value".to_sym]) &&
58: (condition_pattern = params["#{prefix}_condition_pattern".to_sym]) &&
59: (order_by = params["#{prefix}_order_by".to_sym]) )
60: item.item_id = item_id
61: item.condition_value = condition_value
62: item.condition_pattern = condition_pattern
63: item.order_by = order_by
64: item.save!
65: end
66: end
67: SearchConditionItem.transaction do
68: items = []
69: @search_condition.search_condition_items.each do |item|
70: if @old_search_condition_items.include?(item.id)
71: # remove the old item
72: item.destroy
73: elsif k = @order_search_condition_items.index("item_#{item.id}")
74: # update the item
75: proc.call(item, "item_#{item.id}")
76: items[k] = item
77: end
78: end
79: @new_search_condition_items.each do |n|
80: if k = @order_search_condition_items.index("newbie_#{n}")
81: # add a new item
82: item = SearchConditionItem.new(:search_condition_id => @search_condition.id)
83: proc.call(item, "newbie_#{n}")
84: items[k] = item
85: end
86: end
87: # sort items
88: items.each_with_index {|item, i| item.insert_at(i + 1) if item}
89: end
90: x_close_or_redirect_to :controller => "product", :action => "list", :list => @display.id, :id => @display.product_id
91: end