| Class | QuestionsController |
| In: |
app/controllers/questions_controller.rb
|
| Parent: | ApplicationController |
# 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
# 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
# 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
# File app/controllers/questions_controller.rb, line 6 6: def index 7: @questions = questions 8: end
# 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
# 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
# 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
# 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