moodle2cc 0.2.27 → 0.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjcyYjEyNjE5MjdkYjJiMzdjZjVhMjk4Mjc2YjRjOTUwMTc3NmY2Nw==
4
+ ZDgzMGY2MjI2OGU3YmM4NDI5Mzg5MTRkNGYwMzM5OGU4YWU5MzBiNw==
5
5
  data.tar.gz: !binary |-
6
- Y2YyNTg2OTU0ZDhhM2IwNDUzNDhlZjdjMDU0MmIzMTc3MjBmZDI3ZQ==
6
+ MzVhYjExMjAwODM0OTVkMjg0MTdmYTY1Njc0ZTI0ZWE0ZTFlZmYxMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZWI4MDBjMGQxMGI1OWIzNzg2YzIyMDExYmQ0Njc3YjQ0YTA0MmNjMjk0Mzg4
10
- ZjE4MjU2MzYzYjJmNGZmOWFhNzhhODZjZjA2MzVmMjEwYzRlYzdkYjZmOTE2
11
- MzYyZGMyNDFiZDU0MDhjZDE4ZmY1ZmE5YzAzMmFkMzkxNGIwZjM=
9
+ OTQ1MjhmYzI5NWE3NGFjYWVlZWY5NWI1NmEwZGYyNzJmMjQwOTNlYzUxZWFj
10
+ NzJjOTI2MjM2ZjE2MTNlOWE1N2UxMmQxNTRiM2QwODU2MzlhYTc3MzBiZjlh
11
+ N2U2MTQ5ZTFhYTBhMGU3YWMwMzVkMDE2MjI5MmFjNzU1YWIwNzA=
12
12
  data.tar.gz: !binary |-
13
- NDc5ZGM4NTlmYzVmODVlMWEyMzg4MDM5NzA5NTM1NWQzNGZhOTQyZDYxOWVi
14
- ZWI2OTQzYmE3OGRlYTNmZTNlNGZmNTA1ZWRkNGUyNmQ0YWFjYWE2YjY4ZTZm
15
- MWFjOWU4N2RkMzVjYTE5ZmYwMmM4YzZiYmRiMTk4ZTcxOGJhMDg=
13
+ MjgyZDZlM2M4NGM1YWE5YmVjMjg5MDQ5Nzg5NDE1N2M4ZmYzNjMzZDlhY2Iy
14
+ ZmUyZDQwMTc5YzFhZTQyNWMxMWZiOTU0Njg1MDY3ZGNhMzYzZTM2MzNjYjA4
15
+ NzQzY2M4ZjJmZWZmMDRlMWJiNDc1NmViNzNmNjk3ZWFhZGE3YTg=
data/Changelog CHANGED
@@ -1,3 +1,7 @@
1
+ 2015-11-18 Version 0.2.28
2
+ * Fixes module item reference resolution caused by 0.2.26
3
+ * Also distinguishes Announcement type discussion topics
4
+
1
5
  2015-10-21 Version 0.2.27
2
6
  * Handles duplicated wiki names better in Moodle 2 packages
3
7
 
@@ -40,7 +40,7 @@ module Moodle2CC::CanvasCC
40
40
  xml.topic_id discussion_resource.identifier
41
41
  xml.title discussion.title
42
42
  xml.position
43
- xml.type 'topic'
43
+ xml.type (discussion.is_announcement ? 'announcement' : 'topic')
44
44
  xml.discussion_type discussion.discussion_type
45
45
  xml.require_initial_post discussion.require_initial_post
46
46
  xml.workflow_state discussion.workflow_state
@@ -1,6 +1,6 @@
1
1
  module Moodle2CC::CanvasCC::Models
2
2
  class Discussion
3
- attr_accessor :identifier, :title, :text, :discussion_type, :workflow_state, :require_initial_post, :points_possible
3
+ attr_accessor :identifier, :title, :text, :discussion_type, :workflow_state, :require_initial_post, :points_possible, :is_announcement
4
4
  DISCUSSION_ID_POSTFIX = '_DISCUSSION'
5
5
  DISCUSSION_META_POSTFIX = '_meta'
6
6
  IMSDT_TYPE = 'imsdt_xmlv1p1'
@@ -2,7 +2,7 @@ module Moodle2CC::Moodle2::Models
2
2
  class Forum
3
3
 
4
4
  attr_accessor :id, :module_id, :type, :name, :intro, :intro_format, :assessed, :assess_time_start, :assess_time_finish, :scale,
5
- :max_bytes, :max_attachments, :force_subsscribe, :tracking_type, :rss_type, :rss_articles,
5
+ :max_bytes, :max_attachments, :force_subscribe, :tracking_type, :rss_type, :rss_articles,
6
6
  :time_modified, :warn_after, :block_after, :block_period, :completion_discussions, :completion_replies,
7
7
  :completion_posts, :visible, :points_possible
8
8
 
@@ -34,7 +34,7 @@ module Moodle2CC::Moodle2::Parsers
34
34
  forum.scale = parse_text(forum_xml, "/activity/#{module_name}/scale")
35
35
  forum.max_bytes = parse_text(forum_xml, "/activity/#{module_name}/maxbytes")
36
36
  forum.max_attachments = parse_text(forum_xml, "/activity/#{module_name}/maxattachments")
37
- forum.force_subsscribe = parse_text(forum_xml, "/activity/#{module_name}/forcesubscribe")
37
+ forum.force_subscribe = parse_boolean(forum_xml, "/activity/#{module_name}/forcesubscribe")
38
38
  forum.tracking_type = parse_text(forum_xml, "/activity/#{module_name}/trackingtype")
39
39
  forum.rss_type = parse_text(forum_xml, "/activity/#{module_name}/rsstype")
40
40
  forum.rss_articles = parse_text(forum_xml, "/activity/#{module_name}/rssarticles")
@@ -10,7 +10,7 @@ module Moodle2CC::Moodle2Converter
10
10
 
11
11
  def convert_quiz(moodle_quiz)
12
12
  canvas_assessment = Moodle2CC::CanvasCC::Models::Assessment.new
13
- canvas_assessment.identifier = generate_unique_identifier_for(moodle_quiz.id, ASSESSMENT_SUFFIX)
13
+ canvas_assessment.identifier = generate_unique_identifier_for_activity(moodle_quiz)
14
14
  canvas_assessment.title = truncate_text(moodle_quiz.name)
15
15
  canvas_assessment.description = moodle_quiz.intro
16
16
  canvas_assessment.workflow_state = workflow_state(moodle_quiz.visible)
@@ -37,7 +37,7 @@ module Moodle2CC::Moodle2Converter
37
37
 
38
38
  def convert_choice(moodle_choice)
39
39
  canvas_assessment = Moodle2CC::CanvasCC::Models::Assessment.new
40
- canvas_assessment.identifier = generate_unique_identifier_for(moodle_choice.id, CHOICE_ASSESSMENT_SUFFIX)
40
+ canvas_assessment.identifier = generate_unique_identifier_for_activity(moodle_choice)
41
41
  canvas_assessment.title = truncate_text(moodle_choice.name)
42
42
  canvas_assessment.description = ''
43
43
  canvas_assessment.workflow_state = workflow_state(moodle_choice.visible)
@@ -5,7 +5,7 @@ module Moodle2CC::Moodle2Converter
5
5
  def convert(moodle_assignment, moodle_grading_scales)
6
6
 
7
7
  canvas_assignment = Moodle2CC::CanvasCC::Models::Assignment.new
8
- canvas_assignment.identifier = generate_unique_identifier_for(moodle_assignment.id, ASSIGNMENT_SUFFIX)
8
+ canvas_assignment.identifier = generate_unique_identifier_for_activity(moodle_assignment)
9
9
  canvas_assignment.title = truncate_text(moodle_assignment.name)
10
10
  canvas_assignment.body = moodle_assignment.intro
11
11
  canvas_assignment.due_at = Time.at(Integer(moodle_assignment.due_date)) if moodle_assignment.due_date
@@ -48,9 +48,21 @@ module Moodle2CC
48
48
  "m2#{SecureRandom.uuid.gsub('-', '')}"
49
49
  end
50
50
 
51
+ def get_unique_identifier_for_activity(activity)
52
+ # use when we want to retrieve an existing id, not generate a new one
53
+ id = Moodle2Converter::Migrator.activity_id_map[activity.hash]
54
+ unless id
55
+ puts "could not find matching id for #{activity.inspect}"
56
+ id = generate_unique_identifier_for_activity(activity)
57
+ end
58
+ id
59
+ end
60
+
51
61
  def generate_unique_identifier_for_activity(activity)
52
62
  if lookup = ACTIVITY_LOOKUP[activity.class]
53
- generate_unique_identifier_for(activity.id, lookup[:suffix])
63
+ unique_id = generate_unique_identifier_for(activity.id, lookup[:suffix])
64
+ Moodle2Converter::Migrator.activity_id_map[activity.hash] = unique_id
65
+ unique_id
54
66
  else
55
67
  raise "Unknown activity type: #{activity.class}"
56
68
  end
@@ -5,9 +5,10 @@ module Moodle2CC::Moodle2Converter
5
5
 
6
6
  def convert(forum)
7
7
  discussion = Moodle2CC::CanvasCC::Models::Discussion.new
8
- discussion.identifier = generate_unique_identifier_for(forum.id, DISCUSSION_SUFFIX)
8
+ discussion.identifier = generate_unique_identifier_for_activity(forum)
9
9
  discussion.title = truncate_text(forum.name)
10
10
  discussion.text = forum.intro
11
+ discussion.is_announcement = forum.force_subscribe
11
12
  discussion.discussion_type = 'threaded'
12
13
  discussion.workflow_state = workflow_state(forum.visible)
13
14
  discussion.require_initial_post = (forum.type == 'qanda')
@@ -4,7 +4,7 @@ module Moodle2CC::Moodle2Converter
4
4
 
5
5
  def convert_feedback(moodle_feedback)
6
6
  canvas_assessment = Moodle2CC::CanvasCC::Models::Assessment.new
7
- canvas_assessment.identifier = generate_unique_identifier_for(moodle_feedback.id, FEEDBACK_ASSESSMENT_SUFFIX)
7
+ canvas_assessment.identifier = generate_unique_identifier_for_activity(moodle_feedback)
8
8
  canvas_assessment.title = truncate_text(moodle_feedback.name)
9
9
  canvas_assessment.description = moodle_feedback.intro
10
10
  canvas_assessment.workflow_state = workflow_state(moodle_feedback.visible)
@@ -8,7 +8,7 @@ module Moodle2CC::Moodle2Converter
8
8
 
9
9
  def convert(moodle_folder)
10
10
  canvas_page = Moodle2CC::CanvasCC::Models::Page.new
11
- canvas_page.identifier = generate_unique_identifier_for(moodle_folder.id) + FOLDER_SUFFIX
11
+ canvas_page.identifier = generate_unique_identifier_for_activity(moodle_folder)
12
12
  canvas_page.page_name = moodle_folder.name
13
13
  canvas_page.workflow_state = workflow_state(moodle_folder.visible)
14
14
  canvas_page.editing_roles = 'teachers'
@@ -8,7 +8,7 @@ module Moodle2CC::Moodle2Converter
8
8
 
9
9
  def convert(moodle_glossary)
10
10
  canvas_page = Moodle2CC::CanvasCC::Models::Page.new
11
- canvas_page.identifier = generate_unique_identifier_for(moodle_glossary.id) + GLOSSARY_SUFFIX
11
+ canvas_page.identifier = generate_unique_identifier_for_activity(moodle_glossary)
12
12
  canvas_page.page_name = moodle_glossary.name
13
13
  canvas_page.workflow_state = 'active'
14
14
  canvas_page.editing_roles = 'teachers,students'
@@ -84,7 +84,7 @@ module Moodle2CC::Moodle2Converter
84
84
  case activity
85
85
  when 'assignment'
86
86
  if assignment = @moodle_course.assignments.find { |assignment| assignment.id == id }
87
- "#{OBJECT_TOKEN}/assignments/#{generate_unique_identifier_for_activity(assignment)}#{anchor}"
87
+ "#{OBJECT_TOKEN}/assignments/#{get_unique_identifier_for_activity(assignment)}#{anchor}"
88
88
  end
89
89
  when 'page'
90
90
  if page = @moodle_course.pages.find { |page| page.id == id }
@@ -92,7 +92,7 @@ module Moodle2CC::Moodle2Converter
92
92
  end
93
93
  when 'forum'
94
94
  if forum = @moodle_course.forums.find { |forum| forum.id == id }
95
- "#{OBJECT_TOKEN}/discussion_topics/#{generate_unique_identifier_for_activity(forum)}#{anchor}"
95
+ "#{OBJECT_TOKEN}/discussion_topics/#{get_unique_identifier_for_activity(forum)}#{anchor}"
96
96
  end
97
97
  else
98
98
  puts "unknown activity to replace link for. activity:#{activity} id:#{id}"
@@ -11,7 +11,7 @@ module Moodle2CC
11
11
  module_item.indent = '0'
12
12
 
13
13
  if moodle_label.convert_to_page?
14
- module_item.identifierref = generate_unique_identifier_for_activity(moodle_label)
14
+ module_item.identifierref = get_unique_identifier_for_activity(moodle_label)
15
15
  module_item.content_type = CanvasCC::Models::ModuleItem::CONTENT_TYPE_WIKI_PAGE
16
16
  elsif moodle_label.convert_to_header?
17
17
  module_item.content_type = CanvasCC::Models::ModuleItem::CONTENT_TYPE_CONTEXT_MODULE_SUB_HEADER
@@ -197,10 +197,15 @@ module Moodle2CC::Moodle2Converter
197
197
 
198
198
  def self.clear_unique_id_set!
199
199
  @unique_id_set = Set.new
200
+ @activity_id_map = {}
200
201
  end
201
202
 
202
203
  def self.unique_id_set
203
204
  @unique_id_set ||= Set.new
204
205
  end
206
+
207
+ def self.activity_id_map
208
+ @activity_id_map ||= {}
209
+ end
205
210
  end
206
211
  end
@@ -4,7 +4,7 @@ module Moodle2CC::Moodle2Converter
4
4
 
5
5
  def convert(moodle_page)
6
6
  canvas_page = Moodle2CC::CanvasCC::Models::Page.new
7
- canvas_page.identifier = generate_unique_identifier_for(moodle_page.id) + PAGE_SUFFIX
7
+ canvas_page.identifier = generate_unique_identifier_for_activity(moodle_page)
8
8
  canvas_page.page_name = moodle_page.name
9
9
  canvas_page.workflow_state = workflow_state(moodle_page.visible)
10
10
  canvas_page.editing_roles = 'teachers'
@@ -4,7 +4,7 @@ module Moodle2CC::Moodle2Converter
4
4
 
5
5
  def convert_questionnaire(moodle_questionnaire)
6
6
  canvas_assessment = Moodle2CC::CanvasCC::Models::Assessment.new
7
- canvas_assessment.identifier = generate_unique_identifier_for(moodle_questionnaire.id, QUESTIONNAIRE_ASSESSMENT_SUFFIX)
7
+ canvas_assessment.identifier = generate_unique_identifier_for_activity(moodle_questionnaire)
8
8
  canvas_assessment.title = truncate_text(moodle_questionnaire.name)
9
9
  canvas_assessment.description = moodle_questionnaire.intro
10
10
  canvas_assessment.workflow_state = workflow_state(moodle_questionnaire.visible)
@@ -54,7 +54,7 @@ module Moodle2CC
54
54
  elsif moodle_activity.is_a? Moodle2::Models::Resource
55
55
  module_item.identifierref = moodle_activity.file.content_hash if moodle_activity.file
56
56
  else
57
- module_item.identifierref = generate_unique_identifier_for_activity(moodle_activity)
57
+ module_item.identifierref = get_unique_identifier_for_activity(moodle_activity)
58
58
  end
59
59
  end
60
60
  module_item.content_type = activity_content_type(moodle_activity)
@@ -17,12 +17,12 @@ module Moodle2CC::Moodle2Converter
17
17
 
18
18
  if moodle_wiki.first_page_title.to_s.strip.length > 0 &&
19
19
  (first_page = canvas_pages.detect{|page| page.title.to_s.strip == moodle_wiki.first_page_title.to_s.strip})
20
- first_page.identifier = generate_unique_identifier_for("#{moodle_wiki.id}") + PAGE_SUFFIX
20
+ first_page.identifier = generate_unique_identifier_for_activity(moodle_wiki)
21
21
  first_page.body = moodle_wiki.intro.to_s + first_page.body.to_s
22
22
  first_page.page_name = moodle_wiki.name
23
23
  else
24
24
  first_page = Moodle2CC::CanvasCC::Models::Page.new
25
- first_page.identifier = generate_unique_identifier_for("#{moodle_wiki.id}") + PAGE_SUFFIX
25
+ first_page.identifier = generate_unique_identifier_for_activity(moodle_wiki)
26
26
  first_page.body = moodle_wiki.intro
27
27
  first_page.workflow_state = workflow_state(moodle_wiki.visible)
28
28
  first_page.editing_roles = 'teachers'
@@ -1,3 +1,3 @@
1
1
  module Moodle2CC
2
- VERSION = "0.2.27"
2
+ VERSION = "0.2.28"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moodle2cc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.27
4
+ version: 0.2.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Durtschi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-10-21 00:00:00.000000000 Z
13
+ date: 2015-11-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rubyzip