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,11 +41,11 @@ class ChoicesController < InheritedResources::Base | ||
| 41 | end | 41 | end |
| 42 | 42 | ||
| 43 | case params[:order][:sort_by].downcase | 43 | case params[:order][:sort_by].downcase |
| 44 | - when "name" | 44 | + when "data" |
| 45 | sort_by = "choices.data" | 45 | sort_by = "choices.data" |
| 46 | - when "date" | 46 | + when "created_date" |
| 47 | sort_by = "choices.created_at" | 47 | sort_by = "choices.created_at" |
| 48 | - when "author" | 48 | + when "visitor_identifier" |
| 49 | sort_by = "visitors.identifier" | 49 | sort_by = "visitors.identifier" |
| 50 | else | 50 | else |
| 51 | sort_by = "score" | 51 | sort_by = "score" |
| @@ -55,8 +55,17 @@ class ChoicesController < InheritedResources::Base | @@ -55,8 +55,17 @@ class ChoicesController < InheritedResources::Base | ||
| 55 | 55 | ||
| 56 | order = "#{sort_by} #{sort_order}" | 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 | if (!params[:reproved].blank?) | 70 | if (!params[:reproved].blank?) |
| 62 | @choices = @question.choices(true).reproved.find(:all, find_options) | 71 | @choices = @question.choices(true).reproved.find(:all, find_options) |
| @@ -77,7 +86,7 @@ class ChoicesController < InheritedResources::Base | @@ -77,7 +86,7 @@ class ChoicesController < InheritedResources::Base | ||
| 77 | end | 86 | end |
| 78 | 87 | ||
| 79 | index! do |format| | 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 | end | 90 | end |
| 82 | 91 | ||
| 83 | end | 92 | end |
| @@ -111,9 +120,8 @@ class ChoicesController < InheritedResources::Base | @@ -111,9 +120,8 @@ class ChoicesController < InheritedResources::Base | ||
| 111 | 120 | ||
| 112 | flag_params = {:choice_id => params[:id].to_i, :question_id => params[:question_id].to_i, :site_id => current_user.id} | 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 | flag_params.merge!({:explanation => explanation}) | 124 | flag_params.merge!({:explanation => explanation}) |
| 116 | - | ||
| 117 | end | 125 | end |
| 118 | if visitor_identifier = params[:visitor_identifier] | 126 | if visitor_identifier = params[:visitor_identifier] |
| 119 | visitor = current_user.visitors.find_or_create_by_identifier(visitor_identifier) | 127 | visitor = current_user.visitors.find_or_create_by_identifier(visitor_identifier) |
| @@ -156,6 +164,5 @@ class ChoicesController < InheritedResources::Base | @@ -156,6 +164,5 @@ class ChoicesController < InheritedResources::Base | ||
| 156 | end | 164 | end |
| 157 | end | 165 | end |
| 158 | 166 | ||
| 159 | - | ||
| 160 | end | 167 | end |
| 161 | 168 |
app/models/choice.rb
| @@ -41,6 +41,10 @@ class Choice < ActiveRecord::Base | @@ -41,6 +41,10 @@ class Choice < ActiveRecord::Base | ||
| 41 | end | 41 | end |
| 42 | end | 42 | end |
| 43 | 43 | ||
| 44 | + def reproved | ||
| 45 | + self.flags.any?{|a| a.choice_id == self.id} | ||
| 46 | + end | ||
| 47 | + | ||
| 44 | # if changing a choice to active, we want to regenerate prompts | 48 | # if changing a choice to active, we want to regenerate prompts |
| 45 | def update_prompt_queue | 49 | def update_prompt_queue |
| 46 | unless part_of_batch_create | 50 | unless part_of_batch_create |