2014-02-09 18:05:57 +02:00
class Admin :: QuestionsController < ApplicationController
before_filter :verify_organizer
def index
2014-04-27 16:27:29 +02:00
@conference = Conference . find_by ( short_title : params [ :conference_id ] )
2014-07-21 14:49:05 +02:00
@questions = Question . where ( global : true ) . all | Question . where ( conference_id : @conference . id )
2014-02-09 18:05:57 +02:00
@questions_conference = @conference . questions
@new_question = @conference . questions . new
end
def new
2014-04-27 16:27:29 +02:00
@conference = Conference . find_by ( short_title : params [ :conference_id ] )
2014-02-09 18:05:57 +02:00
@new_question = @conference . questions . new
end
def create
2014-04-27 16:27:29 +02:00
@conference = Conference . find_by ( short_title : params [ :conference_id ] )
2014-02-09 18:05:57 +02:00
@question = @conference . questions . new ( params [ :question ] )
@question . conference_id = @conference . id
respond_to do | format |
if @conference . save
format . html { redirect_to admin_conference_questions_path , notice : 'Question was successfully created.' }
else
flash [ :error ] = " Oops, couldn't save. Question and answer(s) have titles? "
format . html { redirect_to admin_conference_questions_path }
end
end
end
# GET questions/1/edit
def edit
2014-04-27 16:27:29 +02:00
@conference = Conference . find_by ( short_title : params [ :conference_id ] )
2014-02-09 18:05:57 +02:00
@question = Question . find ( params [ :id ] )
if @question . global == true && ! has_role? ( current_user , " Admin " )
2014-07-21 14:49:05 +02:00
redirect_to ( admin_conference_questions_path ( conference_id : @conference . short_title ) , alert : " Sorry, you cannot edit global questions. Create a new one. " )
2014-02-09 18:05:57 +02:00
end
end
# PUT questions/1
def update
2014-04-27 16:27:29 +02:00
@conference = Conference . find_by ( short_title : params [ :conference_id ] )
2014-02-09 18:05:57 +02:00
@question = Question . find ( params [ :id ] )
if @question . update_attributes ( params [ :question ] )
2014-07-21 14:49:05 +02:00
redirect_to ( admin_conference_questions_path ( conference_id : @conference . short_title ) , notice : " Question ' #{ @question . title } ' for #{ @conference . short_title } successfully updated. " )
2014-02-09 18:05:57 +02:00
else
2014-07-21 14:49:05 +02:00
redirect_to ( admin_conference_questions_path ( conference_id : @conference . short_title ) , notice : " Update of questions for #{ @conference . short_title } failed. " )
2014-02-09 18:05:57 +02:00
end
end
# Update questions used for the conference
def update_conference
2014-04-27 16:27:29 +02:00
@conference = Conference . find_by ( short_title : params [ :conference_id ] )
2014-02-09 18:05:57 +02:00
if @conference . update_attributes ( params [ :conference ] )
2014-07-21 14:49:05 +02:00
redirect_to ( admin_conference_questions_path ( conference_id : @conference . short_title ) , notice : " Questions for #{ @conference . short_title } successfully updated. " )
2014-02-09 18:05:57 +02:00
else
2014-07-21 14:49:05 +02:00
redirect_to ( admin_conference_questions_path ( conference_id : @conference . short_title ) , notice : " Update of questions for #{ @conference . short_title } failed. " )
2014-02-09 18:05:57 +02:00
end
end
# DELETE questions/1
def destroy
if has_role? ( current_user , " Admin " )
@question = Question . find ( params [ :id ] )
# Do not delete global questions
if @question . global == false
# Delete question and its answers
begin
Question . transaction do
@question . delete
@question . answers . each do | a |
a . delete
end
flash [ :notice ] = " Deleted question: #{ @question . title } and its answers: #{ @question . answers . map { | a | a . title } . join ',' } "
2014-07-21 14:27:32 +02:00
end
2014-02-09 18:05:57 +02:00
rescue ActiveRecord :: RecordInvalid
flash [ :error ] = " Could not delete question. "
end
else
flash [ :error ] = " You cannot delete global questions. "
end
else
flash [ :error ] = " You must be an admin to delete a question. "
end
2014-07-21 14:49:05 +02:00
@questions = Question . where ( global : true ) . all | Question . where ( conference_id : @conference . id )
2014-07-21 14:27:32 +02:00
@questions_conference = @conference . questions
2014-02-09 18:05:57 +02:00
end
2014-06-30 17:07:53 +02:00
end