Skip to content

Commit

Permalink
Merge branch 'rails4' of https://github.com/expertiza/expertiza into …
Browse files Browse the repository at this point in the history
…rails4
  • Loading branch information
Winbobob committed Aug 24, 2015
2 parents 0652007 + 58f2c1b commit 30452b4
Show file tree
Hide file tree
Showing 10 changed files with 73 additions and 52 deletions.
35 changes: 16 additions & 19 deletions app/controllers/questionnaires_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -393,8 +393,9 @@ def valid_quiz
private
#save questionnaire object after create or edit
def save
begin

@questionnaire.save!

save_questions @questionnaire.id if @questionnaire.id != nil and @questionnaire.id > 0
# We do not create node for quiz questionnaires
if @questionnaire.type != "QuizQuestionnaire"
Expand All @@ -405,10 +406,7 @@ def save
end
end
undo_link("Questionnaire \"#{@questionnaire.name}\" has been updated successfully. ")
rescue
@successful_create = false
flash[:error] = $!
end

end

#save parameters for new questions
Expand All @@ -425,15 +423,19 @@ def save_new_questions(questionnaire_id)
if params[:new_question]
# The new_question array contains all the new questions
# that should be saved to the database

for question_key in params[:new_question].keys

q = Question.new()
q.txt=params[:new_question][question_key]
q.questionnaire_id = questionnaire_id
q.type = params[:question_type][question_key][:type]
q.seq = question_key.to_i
if @questionnaire.type == "QuizQuestionnaire"
q.weight = 1 #setting the weight to 1 for quiz questionnaire since the model validates this field
end
unless q.txt.strip.empty?

q.save
end
end
Expand Down Expand Up @@ -470,12 +472,14 @@ def delete_questions(questionnaire_id)
# Handles questions whose wording changed as a result of the edit
# @param [Object] questionnaire_id
def save_questions(questionnaire_id)

delete_questions questionnaire_id
save_new_questions questionnaire_id

if params[:question]
for question_key in params[:question].keys
begin
if params[:question][question_key][:txt].strip.empty?

if params[:question][question_key][:txt].strip.empty?
# question text is empty, delete the question
Question.delete(question_key)
else
Expand All @@ -485,9 +489,7 @@ def save_questions(questionnaire_id)
Rails.logger.info(question.errors.messages.inspect)
end
end
rescue ActiveRecord::RecordNotFound
# ignored
end

end
end
end
Expand All @@ -502,23 +504,21 @@ def save_choices(questionnaire_id)

for question in questions
q_type = params[:question_type][questionnum.to_s][:type]
if(q_type!="Essay")
for choice_key in params[:new_choices][questionnum.to_s][q_type].keys

for choice_key in params[:new_choices][questionnum.to_s][q_type].keys
if params[:new_choices][questionnum.to_s][q_type][choice_key]["weight"] == 1.to_s
score = 1
else
score = 0
end

if(q_type=="MCC")
if(q_type=="MultipleChoiceCheckbox")
if (params[:new_choices][questionnum.to_s][q_type][choice_key][:iscorrect]==1.to_s)
q = QuizQuestionChoice.new(:txt => params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], :iscorrect => "true",:question_id => question.id)
else
q = QuizQuestionChoice.new(:txt => params[:new_choices][questionnum.to_s][q_type][choice_key][:txt], :iscorrect => "false",:question_id => question.id)
end
q.save
else if(q_type=="TF")
elsif(q_type=="TrueFalse")
if (params[:new_choices][questionnum.to_s][q_type][1.to_s][:iscorrect]==choice_key)
q = QuizQuestionChoice.new(:txt => "True", :iscorrect => "true",:question_id => question.id)
q.save
Expand All @@ -539,15 +539,12 @@ def save_choices(questionnaire_id)
q.save
end
end

end
end

questionnum += 1
question.weight = 1
question.true_false = false
end
end
end

private
def questionnaire_params
Expand Down
6 changes: 3 additions & 3 deletions app/controllers/student_quizzes_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def calculate_score map, response
score = 0
correct_answers = QuizQuestionChoice.where(question_id: question.id, iscorrect: true)
ques_type = question.q_type
if ques_type.eql? 'MCC'
if ques_type.eql? 'MultipleChoiceCheckbox'
if params["#{question.id}"].nil?
valid = false
else
Expand All @@ -82,7 +82,7 @@ def calculate_score map, response
else
score = 0
end
#for MCC, score =1 means the quiz taker have done this question correctly, not just make select this choice correctly.
#for MultipleChoiceCheckbox, score =1 means the quiz taker have done this question correctly, not just make select this choice correctly.
params["#{question.id}"].each do |choice|
new_score = Answer.new comments: choice, question_id: question.id, response_id: response.id, :answer => score

Expand All @@ -92,7 +92,7 @@ def calculate_score map, response
scores.push(new_score)
end
end
else #TF and MCR
else #TrueFalse and MultipleChoiceRadio
correct_answer = correct_answers.first
if correct_answer.txt==params["#{question.id}"]
score=1
Expand Down
3 changes: 3 additions & 0 deletions app/models/multipe_choice_checkbox.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class MultipleChoiceCheckbox < QuizQuestion

end
3 changes: 3 additions & 0 deletions app/models/multiple_choice_radio.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class MultipleChoiceRadio < QuizQuestion

end
8 changes: 4 additions & 4 deletions app/models/question.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,15 @@ def delete
self.destroy
end

# for quiz questions, we store 'TF', 'MCC', 'MCR' in the DB, and the full names are returned below
# for quiz questions, we store 'TrueFalse', 'ultipleChoiceCheckbox', 'MultipleChoiceRadio' in the DB, and the full names are returned below
def get_formatted_question_type
type = self.q_type

if type == 'TF'
if type == 'TrueFalse'
return 'True/False'
elsif type == 'MCC'
elsif type == 'MultipleChoiceCheckbox'
return 'Multiple Choice - Checked'
elsif type == 'MCR'
elsif type == 'MultipleChoiceRadio'
return 'Multiple Choice - Radio'
end
end
Expand Down
15 changes: 15 additions & 0 deletions app/models/quiz_question.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
class QuizQuestion < Question

def edit
end

def view_question_text
end

def complete
end

def view_completed_question
end

end
3 changes: 3 additions & 0 deletions app/models/true_false.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class TrueFalse < QuizQuestion

end
26 changes: 13 additions & 13 deletions app/views/questionnaires/_new_question_template.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,25 @@
</div>

<div id="radio_buttons<%= i %>" style="display: none;">
<%= radio_button("new_choices[#{i}][MCR][1]",:iscorrect, '1') %> <%= text_field "new_choices[#{i}][MCR][1]", :txt, size: 50 %> <br>
<%= radio_button("new_choices[#{i}][MCR][1]",:iscorrect, '2') %> <%= text_field "new_choices[#{i}][MCR][2]", :txt, size: 50 %> <br>
<%= radio_button("new_choices[#{i}][MCR][1]",:iscorrect, '3') %> <%= text_field "new_choices[#{i}][MCR][3]", :txt, size: 50 %> <br>
<%= radio_button("new_choices[#{i}][MCR][1]",:iscorrect, '4') %> <%= text_field "new_choices[#{i}][MCR][4]", :txt, size: 50 %> <br><br>
<%= radio_button("new_choices[#{i}][MultipleChoiceRadio][1]",:iscorrect, '1') %> <%= text_field "new_choices[#{i}][MultipleChoiceRadio][1]", :txt, size: 50 %> <br>
<%= radio_button("new_choices[#{i}][MultipleChoiceRadio][1]",:iscorrect, '2') %> <%= text_field "new_choices[#{i}][MultipleChoiceRadio][2]", :txt, size: 50 %> <br>
<%= radio_button("new_choices[#{i}][MultipleChoiceRadio][1]",:iscorrect, '3') %> <%= text_field "new_choices[#{i}][MultipleChoiceRadio][3]", :txt, size: 50 %> <br>
<%= radio_button("new_choices[#{i}][MultipleChoiceRadio][1]",:iscorrect, '4') %> <%= text_field "new_choices[#{i}][MultipleChoiceRadio][4]", :txt, size: 50 %> <br><br>
</div>
<div id="true_false<%= i %>" style="display: none;">
<%= radio_button("new_choices[#{i}][TF][1]",:iscorrect, '1') %> True <br>
<%= radio_button("new_choices[#{i}][TF][1]",:iscorrect, '0') %> False <br><br>
<%= radio_button("new_choices[#{i}][TrueFalse][1]",:iscorrect, '1') %> True <br>
<%= radio_button("new_choices[#{i}][TrueFalse][1]",:iscorrect, '0') %> False <br><br>
</div>
<div id="check_boxes<%= i %>" style="display: none;">
<%= check_box("new_choices[#{i}][MCC][1]",:iscorrect) %> <%= text_field "new_choices[#{i}][MCC][1]", :txt, size: 50 %> <br>
<%= check_box("new_choices[#{i}][MCC][2]",:iscorrect) %> <%= text_field "new_choices[#{i}][MCC][2]", :txt, size: 50 %> <br>
<%= check_box("new_choices[#{i}][MCC][3]",:iscorrect) %> <%= text_field "new_choices[#{i}][MCC][3]", :txt, size: 50 %> <br>
<%= check_box("new_choices[#{i}][MCC][4]",:iscorrect) %> <%= text_field "new_choices[#{i}][MCC][4]", :txt, size: 50 %> <br><br>
<%= check_box("new_choices[#{i}][MultipleChoiceCheckbox][1]",:iscorrect) %> <%= text_field "new_choices[#{i}][MultipleChoiceCheckbox][1]", :txt, size: 50 %> <br>
<%= check_box("new_choices[#{i}][MultipleChoiceCheckbox][2]",:iscorrect) %> <%= text_field "new_choices[#{i}][MultipleChoiceCheckbox][2]", :txt, size: 50 %> <br>
<%= check_box("new_choices[#{i}][MultipleChoiceCheckbox][3]",:iscorrect) %> <%= text_field "new_choices[#{i}][MultipleChoiceCheckbox][3]", :txt, size: 50 %> <br>
<%= check_box("new_choices[#{i}][MultipleChoiceCheckbox][4]",:iscorrect) %> <%= text_field "new_choices[#{i}][MultipleChoiceCheckbox][4]", :txt, size: 50 %> <br><br>
</div>
<div id="qtype<%= i %>">
<%= radio_button("question_type[#{i}]","type", "MCR") %> Multiple Choice - Radio <br>
<%= radio_button("question_type[#{i}]","type", "MCC") %> Multiple Choice - Checked <br>
<%= radio_button("question_type[#{i}]","type", "TF") %> True/False <br><br>
<%= radio_button("question_type[#{i}]","type", "MultipleChoiceRadio") %> Multiple Choice - Radio <br>
<%= radio_button("question_type[#{i}]","type", "MultipleChoiceCheckbox") %> Multiple Choice - Checked <br>
<%= radio_button("question_type[#{i}]","type", "TrueFalse") %> True/False <br><br>
</div>

<% end %>
6 changes: 3 additions & 3 deletions app/views/questionnaires/_new_quiz_script.html.erb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<script type="text/javascript">
jQuery(function(){
// For each radio button whose name is 'content[id]':
jQuery("input[type='radio'][value='MCR']").each(function(index, button){
jQuery("input[type='radio'][value='MultipleChoiceRadio']").each(function(index, button){
// Give the button a certain click behaviour:
jQuery(button).change(function(){
var question_num = index + 1;
Expand All @@ -12,7 +12,7 @@
});
});

jQuery("input[type='radio'][value='TF']").each(function(index, button){
jQuery("input[type='radio'][value='TrueFalse']").each(function(index, button){
// Give the button a certain click behaviour:
jQuery(button).change(function(){
var question_num = index + 1;
Expand All @@ -34,7 +34,7 @@
});
});

jQuery("input[type='radio'][value='MCC']").each(function(index, button){
jQuery("input[type='radio'][value='MultipleChoiceCheckbox']").each(function(index, button){
// Give the button a certain click behaviour:
jQuery(button).change(function(){
var question_num = index + 1;
Expand Down
20 changes: 10 additions & 10 deletions app/views/questionnaires/_questionnaire.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -37,25 +37,25 @@
<tr>
<td>
&nbsp;&nbsp;&nbsp;
<% if @question_type.q_type=="MCC" %>
<%= hidden_field_tag("quiz_question_choices[#{questionnum}][MCC][#{i}][iscorrect]",'0') %>
<%= check_box_tag("quiz_question_choices[#{questionnum}][MCC][#{i}][iscorrect]",'1', @quiz_question_choice.iscorrect) %>
&nbsp;<%= text_field "quiz_question_choices[#{questionnum}][MCC][#{i}]", 'txt', :size=>40 %>
<% if @question_type.q_type=="MultipleChoiceCheckbox" %>
<%= hidden_field_tag("quiz_question_choices[#{questionnum}][MultipleChoiceCheckbox][#{i}][iscorrect]",'0') %>
<%= check_box_tag("quiz_question_choices[#{questionnum}][MultipleChoiceCheckbox][#{i}][iscorrect]",'1', @quiz_question_choice.iscorrect) %>
&nbsp;<%= text_field "quiz_question_choices[#{questionnum}][MultipleChoiceCheckbox][#{i}]", 'txt', :size=>40 %>
<% end %>
<%if @question_type.q_type=="MCR" %>
<%= radio_button_tag("quiz_question_choices[#{questionnum}][MCR][correctindex]", "#{i}", @quiz_question_choice.iscorrect)%>
&nbsp;<%= text_field "quiz_question_choices[#{questionnum}][MCR][#{i}]", 'txt', :size=>40 %>
<%if @question_type.q_type=="MultipleChoiceRadio" %>
<%= radio_button_tag("quiz_question_choices[#{questionnum}][MultipleChoiceRadio][correctindex]", "#{i}", @quiz_question_choice.iscorrect)%>
&nbsp;<%= text_field "quiz_question_choices[#{questionnum}][MultipleChoiceRadio][#{i}]", 'txt', :size=>40 %>
<% end %>
<%if @question_type.q_type=="TF" %>
<%if @question_type.q_type=="TrueFalse" %>
<% if @quiz_question_choice.txt=="True"%>
<%= radio_button_tag("quiz_question_choices[#{questionnum}][TF][1][iscorrect]", 'True', @quiz_question_choice.iscorrect) %> True
<%= radio_button_tag("quiz_question_choices[#{questionnum}][TrueFalse][1][iscorrect]", 'True', @quiz_question_choice.iscorrect) %> True
<%end%>
<% if @quiz_question_choice.txt=="False"%>
<%= radio_button_tag("quiz_question_choices[#{questionnum}][TF][1][iscorrect]", 'False', @quiz_question_choice.iscorrect) %> False
<%= radio_button_tag("quiz_question_choices[#{questionnum}][TrueFalse][1][iscorrect]", 'False', @quiz_question_choice.iscorrect) %> False
<%end%>
<% end %>
</td>
Expand Down

0 comments on commit 30452b4

Please sign in to comment.