Commit 61ec511412dc33793880c3f8a112d775d30023c0
1 parent
29e218ba
Exists in
master
and in
1 other branch
slimmed down xml response, added controller support deactivation/activation
Showing
2 changed files
with
52 additions
and
12 deletions
Show diff stats
app/controllers/choices_controller.rb
... | ... | @@ -3,21 +3,29 @@ class ChoicesController < InheritedResources::Base |
3 | 3 | actions :show, :index, :create, :update |
4 | 4 | belongs_to :question |
5 | 5 | has_scope :active, :boolean => true, :only => :index |
6 | + #caches_page :index | |
6 | 7 | |
7 | 8 | def index |
8 | 9 | if params[:limit] |
9 | 10 | @question = Question.find(params[:question_id])#, :include => :choices) |
10 | 11 | @question.reload |
11 | 12 | @question.choices.each(&:compute_score!) |
12 | - @choices = Choice.find(:all, :conditions => {:question_id => @question.id, :active => true}, :limit => params[:limit].to_i, :order => 'score DESC', :include => :item) | |
13 | + unless params[:include_inactive] | |
14 | + @choices = Choice.find(:all, :conditions => {:question_id => @question.id, :active => true}, :limit => params[:limit].to_i, :order => 'score DESC', :include => :item) | |
15 | + else | |
16 | + @choices = Choice.find(:all, :conditions => {:question_id => @question.id}, :limit => params[:limit].to_i, :order => 'score DESC', :include => :item) | |
17 | + end | |
13 | 18 | else |
14 | 19 | @question = Question.find(params[:question_id], :include => :choices) #eagerloads ALL choices |
15 | 20 | @question.choices.each(&:compute_score!) |
16 | - @choices = @question.choices(true).active.find(:all, :include => :item) | |
21 | + unless params[:include_inactive] | |
22 | + @choices = @question.choices(true).active.find(:all, :include => :item) | |
23 | + else | |
24 | + @choices = @question.choices(true) | |
25 | + end | |
17 | 26 | end |
18 | 27 | index! do |format| |
19 | - format.xml { render :xml => params[:data].blank? ? @choices.to_xml(:methods => [:item_data, :votes_count]) : @choices.to_xml(:include => [:items], :methods => [:data, :votes_count])} | |
20 | - format.json { render :json => params[:data].blank? ? @choices.to_json : @choices.to_json(:include => [:items]) } | |
28 | + format.xml { render :xml => @choices.to_xml(:only => [ :data, :score, :id ])} | |
21 | 29 | end |
22 | 30 | |
23 | 31 | end |
... | ... | @@ -45,6 +53,7 @@ class ChoicesController < InheritedResources::Base |
45 | 53 | |
46 | 54 | def create_from_abroad |
47 | 55 | authenticate |
56 | + expire_page :action => :index | |
48 | 57 | logger.info "inside create_from_abroad" |
49 | 58 | |
50 | 59 | @question = Question.find params[:question_id] |
... | ... | @@ -69,6 +78,7 @@ class ChoicesController < InheritedResources::Base |
69 | 78 | |
70 | 79 | def update_from_abroad |
71 | 80 | authenticate |
81 | + expire_page :action => :index | |
72 | 82 | @question = current_user.questions.find(params[:question_id]) |
73 | 83 | @choice = @question.choices.find(params[:id]) |
74 | 84 | |
... | ... | @@ -85,8 +95,28 @@ class ChoicesController < InheritedResources::Base |
85 | 95 | end |
86 | 96 | end |
87 | 97 | |
98 | + def deactivate_from_abroad | |
99 | + authenticate | |
100 | + expire_page :action => :index | |
101 | + @question = current_user.questions.find(params[:question_id]) | |
102 | + @choice = @question.choices.find(params[:id]) | |
103 | + | |
104 | + respond_to do |format| | |
105 | + if @choice.deactivate! | |
106 | + logger.info "successfully deactivated choice #{@choice.inspect}" | |
107 | + format.xml { render :xml => true } | |
108 | + format.json { render :json => true } | |
109 | + else | |
110 | + logger.info "failed to deactivate choice #{@choice.inspect}" | |
111 | + format.xml { render :xml => @choice.to_xml(:methods => [:data, :votes_count, :wins_plus_losses])} | |
112 | + format.json { render :json => @choice.to_json(:methods => [:data])} | |
113 | + end | |
114 | + end | |
115 | + end | |
116 | + | |
88 | 117 | def activate |
89 | 118 | authenticate |
119 | + expire_page :action => :index | |
90 | 120 | @question = current_user.questions.find(params[:question_id]) |
91 | 121 | @choice = @question.choices.find(params[:id]) |
92 | 122 | respond_to do |format| |
... | ... | @@ -103,6 +133,7 @@ class ChoicesController < InheritedResources::Base |
103 | 133 | |
104 | 134 | def suspend |
105 | 135 | authenticate |
136 | + expire_page :action => :index | |
106 | 137 | @question = current_user.questions.find(params[:question_id]) |
107 | 138 | @choice = @question.choices.find(params[:id]) |
108 | 139 | respond_to do |format| | ... | ... |
app/controllers/questions_controller.rb
... | ... | @@ -5,15 +5,24 @@ class QuestionsController < InheritedResources::Base |
5 | 5 | |
6 | 6 | def show |
7 | 7 | @question = Question.find(params[:id]) |
8 | - @p = @question.picked_prompt | |
9 | - left_choice_text = Proc.new { |options| options[:builder].tag!('left_choice_text', @p.left_choice.item.data) } | |
10 | - right_choice_text = Proc.new { |options| options[:builder].tag!('right_choice_text', @p.right_choice.item.data) } | |
11 | - picked_prompt_id = Proc.new { |options| options[:builder].tag!('picked_prompt_id', @p.id) } | |
12 | - show! do |format| | |
13 | - session['prompts_ids'] ||= [] | |
14 | - format.xml { | |
15 | - render :xml => @question.to_xml(:methods => [:item_count], :procs => [left_choice_text, right_choice_text, picked_prompt_id]) | |
8 | + unless params[:barebones] | |
9 | + @p = @question.picked_prompt | |
10 | + left_choice_text = Proc.new { |options| options[:builder].tag!('left_choice_text', @p.left_choice.item.data) } | |
11 | + right_choice_text = Proc.new { |options| options[:builder].tag!('right_choice_text', @p.right_choice.item.data) } | |
12 | + picked_prompt_id = Proc.new { |options| options[:builder].tag!('picked_prompt_id', @p.id) } | |
13 | + show! do |format| | |
14 | + session['prompts_ids'] ||= [] | |
15 | + format.xml { | |
16 | + render :xml => @question.to_xml(:methods => [:item_count], :procs => [left_choice_text, right_choice_text, picked_prompt_id]) | |
17 | + } | |
18 | + end | |
19 | + else | |
20 | + show! do |format| | |
21 | + session['prompts_ids'] ||= [] | |
22 | + format.xml { | |
23 | + render :xml => @question.to_xml(:methods => [:item_count]) | |
16 | 24 | } |
25 | + end | |
17 | 26 | end |
18 | 27 | end |
19 | 28 | ... | ... |