Retrospring/app/controllers/ajax/question_controller.rb

100 lines
2.7 KiB
Ruby
Raw Normal View History

class Ajax::QuestionController < ApplicationController
2015-04-18 15:42:58 -07:00
include MarkdownHelper
2015-05-08 16:31:31 -07:00
rescue_from(ActionController::ParameterMissing) do |param_miss_ex|
@status = :parameter_error
2015-06-07 09:24:01 -07:00
@message = I18n.t('messages.parameter_error', parameter: param_miss_ex.param.capitalize)
2015-05-08 16:31:31 -07:00
@success = false
render partial: "ajax/shared/status"
end
2015-04-25 18:36:25 -07:00
def destroy
params.require :question
question = Question.find params[:question]
if question.nil?
@status = :not_found
2015-06-07 09:24:01 -07:00
@message = I18n.t('messages.question.destroy.not_found')
2015-04-25 18:36:25 -07:00
@success = false
return
end
2015-04-25 18:39:51 -07:00
if not (current_user.mod? or question.user == current_user)
@status = :not_authorized
2015-06-07 09:24:01 -07:00
@message = I18n.t('messages.question.destroy.not_authorized')
2015-04-25 18:39:51 -07:00
@success = false
return
end
2015-04-25 18:36:25 -07:00
question.destroy!
@status = :okay
2015-06-07 09:24:01 -07:00
@message = I18n.t('messages.question.destroy.okay')
2015-04-25 18:36:25 -07:00
@success = true
end
def create
params.require :question
params.require :anonymousQuestion
params.require :rcpt
2014-12-08 06:34:37 -08:00
begin
question = Question.create!(content: params[:question],
author_is_anonymous: params[:anonymousQuestion],
user: current_user)
rescue ActiveRecord::RecordInvalid
@status = :rec_inv
2015-06-07 09:24:01 -07:00
@message = I18n.t('messages.question.create.rec_inv')
2014-12-08 06:34:37 -08:00
@success = false
return
end
2014-11-10 22:18:34 -08:00
unless current_user.nil?
current_user.increment! :asked_count unless params[:anonymousQuestion] == 'true'
end
2014-12-07 11:13:45 -08:00
if params[:rcpt] == 'followers'
unless current_user.nil?
current_user.followers.each do |f|
Inbox.create!(user_id: f.id, question_id: question.id, new: true)
end
end
elsif params[:rcpt].start_with? 'grp:'
unless current_user.nil?
begin
current_user.groups.find_by_name!(params[:rcpt].sub 'grp:', '').members.each do |m|
Inbox.create!(user_id: m.user.id, question_id: question.id, new: true)
end
rescue ActiveRecord::RecordNotFound
@status = :not_found
2015-06-07 09:24:01 -07:00
@message = I18n.t('messages.question.create.not_found')
@success = false
return
end
end
2014-12-07 11:13:45 -08:00
else
Inbox.create!(user_id: params[:rcpt], question_id: question.id, new: true)
end
@status = :okay
2015-06-07 09:24:01 -07:00
@message = I18n.t('messages.question.create.okay')
@success = true
end
def preview
params.require :md
2015-06-07 09:24:01 -07:00
@message = I18n.t('messages.question.preview.fail')
begin
@markdown = markdown(params[:md], Time.new)
2015-06-07 09:24:01 -07:00
@message = I18n.t('messages.question.preview.okay')
rescue
@status = :fail
@success = false
return
end
@status = :okay
@success = true
end
end