module Moodle2CC::Moodle2Converter::QuestionnaireConverter
Constants
- QUESTION_TYPE_ID_MAP
Public Instance Methods
convert_questionnaire(moodle_questionnaire)
click to toggle source
# File lib/moodle2cc/moodle2converter/questionnaire_converter.rb, line 5 def convert_questionnaire(moodle_questionnaire) canvas_assessment = Moodle2CC::CanvasCC::Models::Assessment.new canvas_assessment.identifier = generate_unique_identifier_for_activity(moodle_questionnaire) canvas_assessment.title = truncate_text(moodle_questionnaire.name) canvas_assessment.description = moodle_questionnaire.intro canvas_assessment.workflow_state = workflow_state(moodle_questionnaire.visible) canvas_assessment.lock_at = Time.at(Integer(moodle_questionnaire.close_date)) if moodle_questionnaire.close_date canvas_assessment.unlock_at = Time.at(Integer(moodle_questionnaire.open_date)) if moodle_questionnaire.open_date canvas_assessment.scoring_policy = 'keep_latest' canvas_assessment.quiz_type = 'survey' canvas_assessment.items = [] moodle_questionnaire.questions.each do |question| next if question.deleted if canvas_question = convert_questionnaire_question(question) canvas_assessment.items << canvas_question end end canvas_assessment end
convert_questionnaire_question(moodle_question)
click to toggle source
# File lib/moodle2cc/moodle2converter/questionnaire_converter.rb, line 42 def convert_questionnaire_question(moodle_question) return unless canvas_type = QUESTION_TYPE_ID_MAP[moodle_question.type_id.to_i] canvas_question = Moodle2CC::CanvasCC::Models::Question.create(canvas_type) canvas_question.identifier = generate_unique_identifier_for(moodle_question.id, "_questionnaire_question") canvas_question.title = truncate_text(moodle_question.name) canvas_question.material = moodle_question.content canvas_question.answers = [] if moodle_question.type_id.to_i == 1 # yes/no question moodle_question.choices = [{:id => 'yes', :content => "Yes"}, {:id => 'no', :content => "No"}] end if canvas_type == 'multiple_dropdowns_question' # rating scale question convert_rating_question(moodle_question, canvas_question) else moodle_question.choices.each do |choice| answer = Moodle2CC::CanvasCC::Models::Answer.new answer.id = choice[:id] answer.answer_text = choice[:content] canvas_question.answers << answer end end canvas_question end
convert_rating_question(moodle_question, canvas_question)
click to toggle source
For l..x rating questions
# File lib/moodle2cc/moodle2converter/questionnaire_converter.rb, line 72 def convert_rating_question(moodle_question, canvas_question) choices = create_rating_choices(moodle_question) canvas_question.responses = [] moodle_question.choices.each_with_index do |answer, answer_idx| response = {:id => "response#{answer_idx + 1}", :choices => []} # add dropdown to the question text canvas_question.material = canvas_question.material.to_s + "<p>#{answer[:content]} [#{response[:id]}]</p>" choices.each_with_index do |choice, choice_idx| response[:choices] << {:id => "#{moodle_question.id}_choice_#{answer_idx}_#{choice_idx}", :text => choice} end canvas_question.responses << response end end
create_rating_choices(moodle_question)
click to toggle source
# File lib/moodle2cc/moodle2converter/questionnaire_converter.rb, line 90 def create_rating_choices(moodle_question) scale = (moodle_question.length || 5).to_i choices = (1..scale).map(&:to_s) if moodle_question.precise.to_i == 1 choices << "N/A" end choices end