| Class | ApplicationController |
| In: |
app/controllers/application_controller.rb
|
| Parent: | ActionController::Base |
Filters added to this controller apply to all controllers in the application. Likewise, all the methods added will be available for all controllers.
# File app/controllers/application_controller.rb, line 70
70: def current_user_id!
71: if user_set?
72: id = user_creds[:id]
73: if id.nil?
74: user = User.first(:conditions => { :email => user_creds[:email], :encoded_password => user_creds[:encoded_pass] })
75: session[:user][:id] = user.id
76: else
77: id
78: end
79: end
80: end
# File app/controllers/application_controller.rb, line 90
90: def named_url_for_question(question)
91: "#{url_prefix}#{question.name}"
92: end
# File app/controllers/application_controller.rb, line 94
94: def parse_items(items)
95: if items
96: sanitizer = HTML::FullSanitizer.new
97: items.split("\n").reject(&:empty?).map { |el| sanitizer.sanitize(el) }
98: end
99: end
# File app/controllers/application_controller.rb, line 82
82: def percentage(num, denom)
83: denom.zero? ? "0%" : "#{(100 * (num.to_f / denom)).round}%"
84: end
# File app/controllers/application_controller.rb, line 52
52: def questions(question_id = nil)
53: question_id ? set_pairwise_from_question_id(question_id) : set_pairwise_user
54: pairwise_qs = Pairwise.list_questions
55: Question.all(
56: :conditions => { :pairwise_id => pairwise_qs.transpose.first }
57: ).inject([]) do |array, question|
58: array << (pairwise_qs.assoc(question.pairwise_id.to_s) << question.active << question.id)
59: end
60: end
# File app/controllers/application_controller.rb, line 33
33: def require_user_set
34: unless user_set?
35: redirect_to root_path
36: flash[:error] = t('error.please_login_to_access_this_resource')
37: end
38: @header = true
39: end
# File app/controllers/application_controller.rb, line 41
41: def require_user_unset
42: if user_set?
43: redirect_to root_path
44: flash[:error] = t('error.you_already_have_an_account')
45: end
46: end
# File app/controllers/application_controller.rb, line 21
21: def reset_user
22: session[:user] = nil
23: end
# File app/controllers/application_controller.rb, line 86
86: def second_nav
87: @second_nav = true
88: end
# File app/controllers/application_controller.rb, line 25
25: def set_user(email, password)
26: session[:user] = { :email => email, :password => password, :encoded_pass => Base64.encode64(password) }
27: end
# File app/controllers/application_controller.rb, line 15
15: def set_vars
16: if user_set?
17: @login = user_creds[:email]
18: end
19: end
# File app/controllers/application_controller.rb, line 62
62: def user_account?
63: if user_set?
64: !User.first(:conditions => { :email => user_creds[:email], :encoded_password => user_creds[:encoded_pass] }).nil?
65: else
66: false
67: end
68: end
# File app/controllers/application_controller.rb, line 48
48: def user_creds
49: session[:user]
50: end
# File app/controllers/application_controller.rb, line 29
29: def user_set?
30: user_creds && user_creds.values.all? { |el| !el.nil? && !el.to_s.empty? }
31: end
# File app/controllers/application_controller.rb, line 107
107: def active_items(question_id, algo = nil, limit = nil)
108: items = Pairwise.list_items(question_id, algo, true)
109: items = items.reject { |el| el[2].to_i.zero? }
110: limit ? items.first(limit) : items
111: end
# File app/controllers/application_controller.rb, line 149
149: def fill_question
150: set_pairwise_from_question_id(@question_id)
151: @question_internal = Question.first(:conditions => { :pairwise_id => @question_id })
152: @question_id, @question, @items_count, @votes_count = Pairwise.get_question(@question_id)
153: end
# File app/controllers/application_controller.rb, line 127
127: def ip_percents(votes, percent = true)
128: ret = votes.inject({}) do |hash, vote|
129: if ip = vote[3]
130: unless hash[ip]
131: geo = GeoIP.location(ip)
132: if geo
133: loc = geo[:city]
134: loc = geo[:region] if loc && loc.empty?
135: loc = geo[:county_name] if loc && loc.empty?
136: hash[ip] = [geo[:latitude], geo[:longitude], loc, 0, 0]
137: end
138: end
139: if hash[ip]
140: col = vote.last.nil? ? 3 : 4
141: hash[ip][col] += 1
142: end
143: end
144: hash
145: end
146: ret.values.map { |el| el << (el.pop + el.pop) }
147: end
# File app/controllers/application_controller.rb, line 167
167: def parse_question_id_from_name
168: @name = params[:name]
169: @name = @name.is_a?(Array) ? @name.first.downcase : @name.downcase if @name
170: @name && Question.first(:conditions => { :name => @name }).pairwise_id
171: end
# File app/controllers/application_controller.rb, line 155
155: def require_question_id
156: if (@question_id = params[:question_id]).nil?
157: redirect_to root_path
158: return
159: end
160: end
# File app/controllers/application_controller.rb, line 162
162: def require_question_id_or_name
163: @question_id = params[:question_id] || parse_question_id_from_name
164: @question_id ? fill_question : redirect_to(root_path)
165: end
# File app/controllers/application_controller.rb, line 122
122: def set_pairwise_from_question_id(id)
123: user = user_from_question_id(id)
124: set_pairwise_user(user.email, user.decoded_password)
125: end
# File app/controllers/application_controller.rb, line 113
113: def set_pairwise_user(email = nil, pass = nil)
114: pairwise_params = PAIRWISE_PARAMS.merge(:user => email || user_creds[:email], :pass => pass || user_creds[:password])
115: Pairwise.server(pairwise_params)
116: end
# File app/controllers/application_controller.rb, line 102
102: def url_prefix
103: "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}/"
104: end