class CanvasCc::CanvasCC::Models::Assessment
Constants
- ASSESSMENT_NON_CC_FOLDER
- ASSESSMENT_TYPE
- DATETIME_ATTRIBUTES
- LAR_TYPE
- META_ATTRIBUTES
Attributes
assignment[RW]
identifier[RW]
items[RW]
question_references[RW]
workflow_state[RW]
Public Class Methods
new()
click to toggle source
# File lib/canvas_cc/canvas_cc/models/assessment.rb, line 18 def initialize @question_references = [] end
Public Instance Methods
canvas_assessment_resource()
click to toggle source
# File lib/canvas_cc/canvas_cc/models/assessment.rb, line 35 def canvas_assessment_resource resource = CanvasCc::CanvasCC::Models::Resource.new resource.identifier = "#{@identifier}_meta" resource.href = meta_file_path resource.type = LAR_TYPE resource.files = [meta_file_path, qti_file_path] resource end
cc_assessment_resource()
click to toggle source
# File lib/canvas_cc/canvas_cc/models/assessment.rb, line 26 def cc_assessment_resource resource = CanvasCc::CanvasCC::Models::Resource.new resource.identifier = @identifier resource.type = ASSESSMENT_TYPE resource.dependencies = ["#{@identifier}_meta"] resource.files = [] # TODO: export cc qti file resource end
meta_file_path()
click to toggle source
# File lib/canvas_cc/canvas_cc/models/assessment.rb, line 44 def meta_file_path "#{@identifier}/assessment_meta.xml" end
qti_file_path()
click to toggle source
# File lib/canvas_cc/canvas_cc/models/assessment.rb, line 48 def qti_file_path "#{ASSESSMENT_NON_CC_FOLDER}/#{@identifier}.xml.qti" end
resolve_question_references!(question_banks)
click to toggle source
# File lib/canvas_cc/canvas_cc/models/assessment.rb, line 52 def resolve_question_references!(question_banks) @items ||= [] # keep track of each time a bank is referenced through a random question reference random_bank_counts = {} @question_references.each do |ref| question = nil group = nil question_banks.each do |bank| break if (question = bank.questions.detect{|q| q.original_identifier.to_s == ref[:question]}) || (group = bank.question_groups.detect{|g| g.identifier.to_s == ref[:question]}) if bank.random_question_references.any?{|r| r.to_s == ref[:question]} random_bank_counts[bank] ||= 0 random_bank_counts[bank] += 1 break end end if question question.assessment_question_identifierref ||= "question_#{question.identifier}" copy = question.dup copy.points_possible = ref[:grade] if ref[:grade] @items << copy elsif group copy = group.dup if ref[:grade] && copy.selection_number.to_i != 0 copy.points_per_item = ref[:grade].to_f / copy.selection_number.to_i end @items << copy end end random_bank_counts.each do |bank, count| new_group = CanvasCc::CanvasCC::Models::QuestionGroup.new new_group.identifier = "#{@identifier}#{bank.identifier}_random_group" new_group.selection_number = count new_group.questions = bank.questions.map(&:dup) child_banks = bank.find_children_banks(question_banks) child_banks.each do |child| new_group.questions += child.questions.map(&:dup) end @items << new_group end @items.select{|i| i.is_a?(CanvasCc::CanvasCC::Models::QuestionGroup)}.each do |group| group.questions.each do |q| @items.delete_if{|i| i.respond_to?(:original_identifier) && i.original_identifier == q.original_identifier} end end end
resources()
click to toggle source
# File lib/canvas_cc/canvas_cc/models/assessment.rb, line 22 def resources [cc_assessment_resource, canvas_assessment_resource] end