Class QuestionsController
In: app/controllers/questions_controller.rb
Parent: ApplicationController

Methods

create   edit   export   index   new   show   state   update  

Public Instance methods

[Source]

    # File app/controllers/questions_controller.rb, line 16
16:   def create
17:     set_pairwise_user
18:     @question = Question.new(params[:question])
19:     @question.name = @question.name == t('questions.new.step2_exp') ? nil : @question.name && @question.name.downcase
20:     @question.question_text = @question.question_text == t('questions.new.step1_exp') ? nil : HTML::FullSanitizer.new.sanitize(@question.question_text)
21:     ideas = @question.question_ideas = @question.question_ideas == t('questions.new.step3_exp') ? nil : @question.question_ideas
22:     ideas = parse_items(ideas)
23:     @question.valid?
24:     if ideas && ideas.any? { |i| i.length > Const::MAX_ITEM_LENGTH }
25:       @question.errors.add('question_ideas', "#{t('items.new.too_long')} #{Const::MAX_ITEM_LENGTH}.")
26:     end
27:     if @question.errors.empty?
28:       id = Pairwise.question(@question.question_text).first
29:       @question.update_attributes(
30:         :user_id => current_user_id!,
31:         :pairwise_id => id,
32:         :active => true
33:       )
34:       @question.question_ideas = parse_items(@question.question_ideas)
35:       unless @question.question_ideas.nil? || @question.question_ideas.empty?
36:         user = user_from_question_id(id)
37:         user.voter_id!
38:         set_pairwise_user(user.email, user.decoded_password)
39:         Pairwise.item(@question.question_ideas, [id], ip_address, true, user.voter_id)
40:       end
41:       redirect_to named_url_for_question(@question) + '?p=1'
42:     else
43:       render :new
44:       @question.question_ideas = ideas
45:     end
46:   end

[Source]

    # File app/controllers/questions_controller.rb, line 69
69:   def edit
70:     id = params[:id]
71:     if user_owns_id?(id)
72:       @question_internal = Question.find(id)
73:       id = @question_internal.pairwise_id
74:       set_pairwise_from_question_id(id)
75:       @id, @question, @items_count, @votes_count, all_items = Pairwise.get_question(id)
76:     else
77:       flash[:error] = t('error.permission_question')
78:       redirect_to root_path
79:     end
80:   end

[Source]

     # File app/controllers/questions_controller.rb, line 117
117:   def export
118:     question_id = params[:id]
119:     items = active_items(question_id, 2)
120:     outfile = "question_#{question_id}_items_" + Time.now.strftime("%m-%d-%Y") + ".csv"
121:     csv_data = FasterCSV.generate do |csv|
122:       csv << [
123:       "Item ID",
124:       "Item Name",
125:       "Active",
126:       "Elo Score",
127:       "Ratings",
128:       "Wins",
129:       "Losses",
130:       "Skips",
131:       "Date Added"
132:       ]
133:       for id, item, active, rank, wins, losses, added, ratings, skips in items do
134:         csv << [
135:         id,
136:         item,
137:         active,
138:         rank,
139:         ratings,
140:         wins,
141:         losses,
142:         skips,
143:         added
144:         ]
145:       end
146:     end
147: 
148:     send_data(csv_data,
149:       :type => 'text/csv; charset=iso-8859-1; header=present',
150:       :disposition => "attachment; filename=#{outfile}"
151:     )
152:     flash[:notice] = t('questions.export_complete')
153:   end

[Source]

   # File app/controllers/questions_controller.rb, line 6
6:   def index
7:     @questions = questions
8:   end

[Source]

    # File app/controllers/questions_controller.rb, line 10
10:   def new
11:     @question = Question.new(:question_text => t('questions.new.step1_exp'), :question_ideas => t('questions.new.step3_exp'))
12:     question = Question.find(Const::TOUR_DEMO_QUESTION_ID)
13:     @url1 = named_url_for_question(question)
14:   end

[Source]

    # File app/controllers/questions_controller.rb, line 48
48:   def show
49:     id = params[:id]
50:     if user_owns_id?(id)
51:       @question_internal = Question.find(id)
52:       id = @question_internal.pairwise_id
53:       set_pairwise_from_question_id(id)
54:       @id, @question, @items_count, @votes_count, all_items = Pairwise.get_question(id)
55:       @items = all_items.to_i > 0 ? Pairwise.list_items(@id, nil, true) : []
56:       @items = @items.sort_by { |el| el[2] }.reverse
57:       votes = Pairwise.list_votes(id, nil, 100)
58:       @ip_percents = ip_percents(votes, false)
59:       @label = t('items.total')
60:       @explain = t('questions.map_explanation')
61:       @named_url = named_url_for_question(@question_internal)
62:     else
63:       reset_user
64:       flash[:error] = t('error.permission_question')
65:       redirect_to login_path
66:     end
67:   end

[Source]

     # File app/controllers/questions_controller.rb, line 103
103:   def state
104:     id = params[:id]
105:     if user_owns_id?(id)
106:       question = Question.find(id)
107:       question.update_attribute(:active, params[:active])
108:       url_name = "#{url_prefix}#{question.name}"
109:       flash[:notice] = "#{t('questions.activate_message')} '<a href=\"#{url_name}\">#{url_name}</a>' #{t('questions.activate_message_2')}"  if question.active
110:       redirect_to questions_path
111:     else
112:       flash[:error] = t('error.permission_question')
113:       redirect_to users_path
114:     end
115:   end

[Source]

     # File app/controllers/questions_controller.rb, line 82
 82:   def update
 83:     id = params[:id]
 84:     if user_owns_id?(id)
 85:       question = Question.find(id)
 86:       question.name = params[:question] && params[:question][:name] && params[:question][:name].downcase
 87:       if question.save
 88:         flash[:notice] = t('questions.short_url_success')
 89:         redirect_to question_path(question.id)
 90:       else
 91:         @question_internal = question.reload
 92:         id = @question_internal.pairwise_id
 93:         set_pairwise_from_question_id(id)
 94:         @id, @question, @items_count, @votes_count, all_items = Pairwise.get_question(id)
 95:         render :edit
 96:       end
 97:     else
 98:       flash[:error] = t('error.permission_question')
 99:       redirect_to root_path
100:     end
101:   end

[Validate]