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 | ... | ... |