Class: Moodle2CC::Canvas::QuestionBank

Inherits:
Object
  • Object
show all
Includes:
Moodle2CC::CC::CCHelper
Defined in:
lib/moodle2cc/canvas/question_bank.rb

Constant Summary

Constants included from Moodle2CC::CC::CCHelper

Moodle2CC::CC::CCHelper::ASSESSMENT_CC_QTI, Moodle2CC::CC::CCHelper::ASSESSMENT_META, Moodle2CC::CC::CCHelper::ASSESSMENT_NON_CC_FOLDER, Moodle2CC::CC::CCHelper::ASSESSMENT_TYPE, Moodle2CC::CC::CCHelper::ASSIGNMENT_GROUPS, Moodle2CC::CC::CCHelper::ASSIGNMENT_SETTINGS, Moodle2CC::CC::CCHelper::BASIC_LTI, Moodle2CC::CC::CCHelper::BLTI_NAMESPACE, Moodle2CC::CC::CCHelper::CANVAS_NAMESPACE, Moodle2CC::CC::CCHelper::CANVAS_PLATFORM, Moodle2CC::CC::CCHelper::CC_ASSIGNMENT_FOLDER, Moodle2CC::CC::CCHelper::CC_EXTENSION, Moodle2CC::CC::CCHelper::CC_WIKI_FOLDER, Moodle2CC::CC::CCHelper::COURSE_SETTINGS, Moodle2CC::CC::CCHelper::COURSE_SETTINGS_DIR, Moodle2CC::CC::CCHelper::COURSE_TOKEN, Moodle2CC::CC::CCHelper::DISCUSSION_TOPIC, Moodle2CC::CC::CCHelper::EVENTS, Moodle2CC::CC::CCHelper::EXTERNAL_FEEDS, Moodle2CC::CC::CCHelper::EXTERNAL_TOOLS, Moodle2CC::CC::CCHelper::FILES_META, Moodle2CC::CC::CCHelper::GRADING_STANDARDS, Moodle2CC::CC::CCHelper::IMS_DATE, Moodle2CC::CC::CCHelper::IMS_DATETIME, Moodle2CC::CC::CCHelper::LEARNING_OUTCOMES, Moodle2CC::CC::CCHelper::LOR, Moodle2CC::CC::CCHelper::MANIFEST, Moodle2CC::CC::CCHelper::MEDIA_OBJECTS_FOLDER, Moodle2CC::CC::CCHelper::MODULE_META, Moodle2CC::CC::CCHelper::MOODLE_FILEBASE_TOKEN, Moodle2CC::CC::CCHelper::MOODLE_SLASH_TOKEN, Moodle2CC::CC::CCHelper::OBJECT_TOKEN, Moodle2CC::CC::CCHelper::QTI_ASSESSMENT_TYPE, Moodle2CC::CC::CCHelper::QTI_EXTENSION, Moodle2CC::CC::CCHelper::QUESTION_BANK, Moodle2CC::CC::CCHelper::RUBRICS, Moodle2CC::CC::CCHelper::SYLLABUS, Moodle2CC::CC::CCHelper::WEBCONTENT, Moodle2CC::CC::CCHelper::WEB_CONTENT_TOKEN, Moodle2CC::CC::CCHelper::WEB_LINK, Moodle2CC::CC::CCHelper::WEB_RESOURCES_FOLDER, Moodle2CC::CC::CCHelper::WIKI_FOLDER, Moodle2CC::CC::CCHelper::WIKI_TOKEN, Moodle2CC::CC::CCHelper::XSD_URI

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Moodle2CC::CC::CCHelper

#convert_file_path_tokens, convert_file_path_tokens, #create_key, create_key, create_mod_key, #create_mod_key, #create_resource_key, create_resource_key, file_query_string, #file_slug, file_slug, #get_html_title_and_body, #get_html_title_and_body_and_id, #get_html_title_and_body_and_meta_fields, ims_date, #ims_date, ims_datetime, #ims_datetime, media_object_info

Constructor Details

#initialize(question_category) ⇒ QuestionBank

Returns a new instance of QuestionBank.



6
7
8
9
10
11
12
13
14
# File 'lib/moodle2cc/canvas/question_bank.rb', line 6

def initialize(question_category)
  @id = question_category.id
  @title = question_category.name
  @identifier = create_key(@id, 'objectbank_')
  @question_category = question_category
  @questions = @question_category.questions.reject { |q| q.type == 'random' }.map do |question|
    Question.new question
  end
end

Instance Attribute Details

#idObject

Returns the value of attribute id.



4
5
6
# File 'lib/moodle2cc/canvas/question_bank.rb', line 4

def id
  @id
end

#identifierObject

Returns the value of attribute identifier.



4
5
6
# File 'lib/moodle2cc/canvas/question_bank.rb', line 4

def identifier
  @identifier
end

#questionsObject

Returns the value of attribute questions.



4
5
6
# File 'lib/moodle2cc/canvas/question_bank.rb', line 4

def questions
  @questions
end

#titleObject

Returns the value of attribute title.



4
5
6
# File 'lib/moodle2cc/canvas/question_bank.rb', line 4

def title
  @title
end

Instance Method Details

#create_files(export_dir) ⇒ Object



27
28
29
# File 'lib/moodle2cc/canvas/question_bank.rb', line 27

def create_files(export_dir)
  create_qti_xml(export_dir)
end

#create_qti_xml(export_dir) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/moodle2cc/canvas/question_bank.rb', line 31

def create_qti_xml(export_dir)
  path = File.join(export_dir, ASSESSMENT_NON_CC_FOLDER, "#{identifier}.xml.qti")
  FileUtils.mkdir_p(File.dirname(path))
  File.open(path, 'w') do |file|
    node = Builder::XmlMarkup.new(:target => file, :indent => 2)
    node.instruct!
    node.questestinterop(
      'xsi:schemaLocation' => "http://www.imsglobal.org/xsd/ims_qtiasiv1p2 http://www.imsglobal.org/xsd/ims_qtiasiv1p2p1.xsd",
      'xmlns:xsi' => "http://www.w3.org/2001/XMLSchema-instance",
      'xmlns' => "http://www.imsglobal.org/xsd/ims_qtiasiv1p2"
    ) do |root_node|
      root_node.objectbank(:ident => identifier) do |objectbank_node|
        objectbank_node. do ||
          .qtimetadatafield do |qtimetadatafield_node|
            qtimetadatafield_node.fieldlabel "bank_title"
            qtimetadatafield_node.fieldentry @title
          end
        end
        @questions.each do |question|
          question.create_item_xml(objectbank_node) if question
        end
      end
    end
  end
end

#create_resource_node(resources_node) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/moodle2cc/canvas/question_bank.rb', line 16

def create_resource_node(resources_node)
  href = File.join(ASSESSMENT_NON_CC_FOLDER, "#{identifier}.xml.qti")
  resources_node.resource(
    :href => href,
    :type => LOR,
    :identifier => identifier
  ) do |resource_node|
    resource_node.file(:href => href)
  end
end