Commit 61b5a40bf38258533b051358275e35c04d9f68bb
1 parent
366f4c42
Exists in
master
and in
1 other branch
#pairwise - add support for search choices
Showing
2 changed files
with
20 additions
and
9 deletions
Show diff stats
app/controllers/choices_controller.rb
... | ... | @@ -41,11 +41,11 @@ class ChoicesController < InheritedResources::Base |
41 | 41 | end |
42 | 42 | |
43 | 43 | case params[:order][:sort_by].downcase |
44 | - when "name" | |
44 | + when "data" | |
45 | 45 | sort_by = "choices.data" |
46 | - when "date" | |
46 | + when "created_date" | |
47 | 47 | sort_by = "choices.created_at" |
48 | - when "author" | |
48 | + when "visitor_identifier" | |
49 | 49 | sort_by = "visitors.identifier" |
50 | 50 | else |
51 | 51 | sort_by = "score" |
... | ... | @@ -55,8 +55,17 @@ class ChoicesController < InheritedResources::Base |
55 | 55 | |
56 | 56 | order = "#{sort_by} #{sort_order}" |
57 | 57 | |
58 | - find_options = { :include => [:creator] } | |
59 | - find_options.merge!({ :order => order }) | |
58 | + find_options = { | |
59 | + :include => [:creator], | |
60 | + :conditions => {}, | |
61 | + :order => order | |
62 | + } | |
63 | + | |
64 | + if params[:filter] && !params[:filter][:data].blank? | |
65 | + conditions = [] | |
66 | + conditions << ['lower(data) like ?', "%#{params[:filter][:data].downcase}%"] | |
67 | + find_options[:conditions] = [conditions.map{|c| c[0] }.join(" AND "), *conditions.map{|c| c[1..-1] }.flatten] | |
68 | + end | |
60 | 69 | |
61 | 70 | if (!params[:reproved].blank?) |
62 | 71 | @choices = @question.choices(true).reproved.find(:all, find_options) |
... | ... | @@ -77,7 +86,7 @@ class ChoicesController < InheritedResources::Base |
77 | 86 | end |
78 | 87 | |
79 | 88 | index! do |format| |
80 | - format.xml { render :xml => @choices.to_xml(:only => [ :data, :score, :id, :active, :created_at, :wins, :losses], :methods => [:user_created, :creator_identifier])} | |
89 | + format.xml { render :xml => @choices.to_xml(:only => [ :data, :score, :id, :active, :created_at, :wins, :losses], :methods => [:user_created, :creator_identifier, :reproved])} | |
81 | 90 | end |
82 | 91 | |
83 | 92 | end |
... | ... | @@ -111,9 +120,8 @@ class ChoicesController < InheritedResources::Base |
111 | 120 | |
112 | 121 | flag_params = {:choice_id => params[:id].to_i, :question_id => params[:question_id].to_i, :site_id => current_user.id} |
113 | 122 | |
114 | - if explanation = params[:explanation] | |
123 | + if explanation = params[:explanation] | |
115 | 124 | flag_params.merge!({:explanation => explanation}) |
116 | - | |
117 | 125 | end |
118 | 126 | if visitor_identifier = params[:visitor_identifier] |
119 | 127 | visitor = current_user.visitors.find_or_create_by_identifier(visitor_identifier) |
... | ... | @@ -156,6 +164,5 @@ class ChoicesController < InheritedResources::Base |
156 | 164 | end |
157 | 165 | end |
158 | 166 | |
159 | - | |
160 | 167 | end |
161 | 168 | ... | ... |
app/models/choice.rb
... | ... | @@ -41,6 +41,10 @@ class Choice < ActiveRecord::Base |
41 | 41 | end |
42 | 42 | end |
43 | 43 | |
44 | + def reproved | |
45 | + self.flags.any?{|a| a.choice_id == self.id} | |
46 | + end | |
47 | + | |
44 | 48 | # if changing a choice to active, we want to regenerate prompts |
45 | 49 | def update_prompt_queue |
46 | 50 | unless part_of_batch_create | ... | ... |