class Moodle2CC::CanvasCC::DiscussionWriter
Public Class Methods
new(work_dir, *canvas_discussions)
click to toggle source
# File lib/moodle2cc/canvas_cc/discussion_writer.rb, line 4 def initialize(work_dir, *canvas_discussions) @work_dir = work_dir @discussions = canvas_discussions end
Public Instance Methods
write()
click to toggle source
# File lib/moodle2cc/canvas_cc/discussion_writer.rb, line 9 def write @discussions.each do |discussion| write_discussion(discussion) write_meta(discussion) end end
Private Instance Methods
write_discussion(discussion)
click to toggle source
# File lib/moodle2cc/canvas_cc/discussion_writer.rb, line 19 def write_discussion(discussion) xml = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml| xml.topic('xmlns' => 'http://www.imsglobal.org/xsd/imsccv1p1/imsdt_v1p1', 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:schemaLocation' => 'http://www.imsglobal.org/xsd/imsccv1p1/imsdt_v1p1 http://www.imsglobal.org/profile/cc/ccv1p1/ccv1p1_imsdt_v1p1.xsd' ) { |xml| xml.title discussion.title xml.text_('texttype' => 'text/html') { xml.text discussion.text } } end.to_xml File.open(File.join(@work_dir, discussion.discussion_resource.files.first), 'w') { |f| f.write(xml) } end
write_meta(discussion)
click to toggle source
# File lib/moodle2cc/canvas_cc/discussion_writer.rb, line 32 def write_meta(discussion) meta_resource = discussion.meta_resource discussion_resource = discussion.discussion_resource xml = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml| xml.topicMeta('identifier' => meta_resource.identifier, 'xmlns' => 'http://canvas.instructure.com/xsd/cccv1p0', 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:schemaLocation' => 'http://canvas.instructure.com/xsd/cccv1p0 http://canvas.instructure.com/xsd/cccv1p0.xsd' ) { |xml| xml.topic_id discussion_resource.identifier xml.title discussion.title xml.position xml.type (discussion.is_announcement ? 'announcement' : 'topic') xml.discussion_type discussion.discussion_type xml.require_initial_post discussion.require_initial_post xml.workflow_state discussion.workflow_state if discussion.points_possible xml.assignment('identifier' => "#{meta_resource.identifier}_assignment" ) do |a| a.title discussion.title a.submission_types 'discussion_topic' a.grading_type 'points' a.points_possible discussion.points_possible end end } end.to_xml File.open(File.join(@work_dir, meta_resource.href), 'w') { |f| f.write(xml) } end