moodle2cc 0.2.28 → 0.2.29

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.
Files changed (30) hide show
  1. checksums.yaml +5 -13
  2. data/Changelog +4 -0
  3. data/lib/moodle2cc/moodle2/extractor.rb +7 -0
  4. data/lib/moodle2cc/moodle2/models.rb +1 -0
  5. data/lib/moodle2cc/moodle2/models/course.rb +3 -2
  6. data/lib/moodle2cc/moodle2/models/lti.rb +5 -0
  7. data/lib/moodle2cc/moodle2/models/section.rb +0 -2
  8. data/lib/moodle2cc/moodle2/parsers.rb +1 -0
  9. data/lib/moodle2cc/moodle2/parsers/lti_parser.rb +35 -0
  10. data/lib/moodle2cc/moodle2/parsers/section_parser.rb +1 -4
  11. data/lib/moodle2cc/moodle2converter/converter_helper.rb +3 -1
  12. data/lib/moodle2cc/moodle2converter/section_converter.rb +21 -0
  13. data/lib/moodle2cc/version.rb +1 -1
  14. data/moodle2cc.gemspec +1 -1
  15. data/spec/moodle2cc/moodle2/extractor_spec.rb +8 -0
  16. data/spec/moodle2cc/moodle2/models/course_spec.rb +1 -0
  17. data/spec/moodle2cc/moodle2/models/forum_spec.rb +1 -1
  18. data/spec/moodle2cc/moodle2/parsers/forum_parser_spec.rb +1 -1
  19. data/spec/moodle2cc/moodle2/parsers/lti_parser_spec.rb +21 -0
  20. data/spec/moodle2cc/moodle2converter/section_converter_spec.rb +42 -1
  21. data/test/fixtures/moodle2/backup/activities/lti_78841/calendar.xml +3 -0
  22. data/test/fixtures/moodle2/backup/activities/lti_78841/filters.xml +7 -0
  23. data/test/fixtures/moodle2/backup/activities/lti_78841/grade_history.xml +5 -0
  24. data/test/fixtures/moodle2/backup/activities/lti_78841/grades.xml +7 -0
  25. data/test/fixtures/moodle2/backup/activities/lti_78841/inforef.xml +3 -0
  26. data/test/fixtures/moodle2/backup/activities/lti_78841/lti.xml +26 -0
  27. data/test/fixtures/moodle2/backup/activities/lti_78841/module.xml +20 -0
  28. data/test/fixtures/moodle2/backup/activities/lti_78841/roles.xml +7 -0
  29. data/test/fixtures/moodle2/backup/moodle_backup.xml +8 -1
  30. metadata +56 -36
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZDgzMGY2MjI2OGU3YmM4NDI5Mzg5MTRkNGYwMzM5OGU4YWU5MzBiNw==
5
- data.tar.gz: !binary |-
6
- MzVhYjExMjAwODM0OTVkMjg0MTdmYTY1Njc0ZTI0ZWE0ZTFlZmYxMw==
2
+ SHA1:
3
+ metadata.gz: 7852ac0df4ec637ac21c82e50fb3af7d95913e4c
4
+ data.tar.gz: 2b7a0055cf75bea08fa84003241f84566c114ed1
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- OTQ1MjhmYzI5NWE3NGFjYWVlZWY5NWI1NmEwZGYyNzJmMjQwOTNlYzUxZWFj
10
- NzJjOTI2MjM2ZjE2MTNlOWE1N2UxMmQxNTRiM2QwODU2MzlhYTc3MzBiZjlh
11
- N2U2MTQ5ZTFhYTBhMGU3YWMwMzVkMDE2MjI5MmFjNzU1YWIwNzA=
12
- data.tar.gz: !binary |-
13
- MjgyZDZlM2M4NGM1YWE5YmVjMjg5MDQ5Nzg5NDE1N2M4ZmYzNjMzZDlhY2Iy
14
- ZmUyZDQwMTc5YzFhZTQyNWMxMWZiOTU0Njg1MDY3ZGNhMzYzZTM2MzNjYjA4
15
- NzQzY2M4ZjJmZWZmMDRlMWJiNDc1NmViNzNmNjk3ZWFhZGE3YTg=
6
+ metadata.gz: bbe007fcd42be598446394ec1b9baaddfd60289902420ba88033ded9cd9f0fdc3f793fdf0267c3fdb12ad06914db534363eb101b46f538b3927ded578b1b9eaa
7
+ data.tar.gz: ce26098ed8fae34f62e09935ee6dc12aafcb728c118ac58369698ee9a1c79f29b4d259011a5e61865cd67049fc22da67fbfb0fbcddff56c821f3bea613738f06
data/Changelog CHANGED
@@ -1,3 +1,7 @@
1
+ 2016-03-16 Version 0.2.29
2
+ * Imports LTI links as Canvas External Tool module items
3
+ * Uses the first section label as a module name if needed
4
+
1
5
  2015-11-18 Version 0.2.28
2
6
  * Fixes module item reference resolution caused by 0.2.26
3
7
  * Also distinguishes Announcement type discussion topics
@@ -45,6 +45,7 @@ module Moodle2CC::Moodle2
45
45
  parse_labels(work_dir, course)
46
46
  parse_external_urls(work_dir, course)
47
47
  parse_resources(work_dir, course)
48
+ parse_lti_links(work_dir, course)
48
49
  collect_files_for_resources(course)
49
50
  collect_activities_for_sections(course.sections, course.activities)
50
51
  course
@@ -171,6 +172,12 @@ module Moodle2CC::Moodle2
171
172
  end
172
173
  end
173
174
 
175
+ def parse_lti_links(work_dir, course)
176
+ if lti_links = Parsers::LtiParser.new(work_dir).parse
177
+ course.lti_links = lti_links
178
+ end
179
+ end
180
+
174
181
  def collect_files_for_resources(course)
175
182
  files_hash = {}
176
183
  course.files.each{ |file| files_hash[file.id] = file }
@@ -18,4 +18,5 @@ module Moodle2CC::Moodle2::Models
18
18
  require_relative 'models/questionnaire'
19
19
  require_relative 'models/resource'
20
20
  require_relative 'models/wiki'
21
+ require_relative 'models/lti'
21
22
  end
@@ -4,7 +4,7 @@ module Moodle2CC::Moodle2::Models
4
4
  :course_id, :show_grades, :sections, :files, :pages, :forums, :assignments,
5
5
  :books, :folders, :question_categories, :quizzes, :glossaries,
6
6
  :labels, :resources, :external_urls, :choices, :questionnaires,
7
- :feedbacks, :wikis, :grading_scales, :missing_files
7
+ :feedbacks, :wikis, :grading_scales, :missing_files, :lti_links
8
8
 
9
9
  def initialize
10
10
  @sections = []
@@ -26,11 +26,12 @@ module Moodle2CC::Moodle2::Models
26
26
  @external_urls = []
27
27
  @wikis = []
28
28
  @grading_scales = {}
29
+ @lti_links = []
29
30
  end
30
31
 
31
32
  def activities
32
33
  pages + forums + assignments + books + folders + quizzes + labels + resources + glossaries +
33
- external_urls + choices + questionnaires + feedbacks + wikis
34
+ external_urls + choices + questionnaires + feedbacks + wikis + lti_links
34
35
  end
35
36
 
36
37
  end
@@ -0,0 +1,5 @@
1
+ module Moodle2CC::Moodle2::Models
2
+ class Lti
3
+ attr_accessor :id, :module_id, :name, :url, :visible
4
+ end
5
+ end
@@ -3,8 +3,6 @@ module Moodle2CC::Moodle2::Models
3
3
  attr_accessor :id, :number, :name, :summary, :summary_format, :sequence, :visible, :available_from, :available_until,
4
4
  :release_code, :show_availability, :grouping_id, :position, :activities
5
5
 
6
- DEFAULT_NAME = 'Untitled Module'
7
-
8
6
  def initialize
9
7
  @sequence = []
10
8
  @activities = []
@@ -20,4 +20,5 @@ module Moodle2CC::Moodle2::Parsers
20
20
  require_relative 'parsers/external_url_parser'
21
21
  require_relative 'parsers/resource_parser'
22
22
  require_relative 'parsers/wiki_parser'
23
+ require_relative 'parsers/lti_parser'
23
24
  end
@@ -0,0 +1,35 @@
1
+ module Moodle2CC::Moodle2
2
+ class Parsers::LtiParser
3
+ include Parsers::ParserHelper
4
+
5
+ LTI_XML = 'lti.xml'
6
+ LTI_MODULE_NAME = 'lti'
7
+
8
+ def initialize(backup_dir)
9
+ @backup_dir = backup_dir
10
+ end
11
+
12
+ def parse
13
+ activity_dirs = activity_directories(@backup_dir, LTI_MODULE_NAME)
14
+ activity_dirs.map { |dir| parse_lti(dir) }
15
+ end
16
+
17
+ private
18
+
19
+ def parse_lti(dir)
20
+ lti = Models::Lti.new
21
+ activity_dir = File.join(@backup_dir, dir)
22
+ File.open(File.join(activity_dir, LTI_XML)) do |f|
23
+ lti_xml = Nokogiri::XML(f)
24
+ lti.id = lti_xml.at_xpath('/activity/lti/@id').value
25
+ lti.module_id = lti_xml.at_xpath('/activity/@moduleid').value
26
+ lti.name = parse_text(lti_xml, '/activity/lti/name')
27
+ lti.url = parse_text(lti_xml, '/activity/lti/toolurl')
28
+ end
29
+ parse_module(activity_dir, lti)
30
+ lti
31
+ end
32
+
33
+
34
+ end
35
+ end
@@ -37,10 +37,7 @@ module Moodle2CC::Moodle2::Parsers
37
37
  section.grouping_id = parse_text(section_xml, 'section/groupingid')
38
38
  end
39
39
  if section.name.to_s.strip.length == 0
40
- section.name = Nokogiri::HTML(section.summary.to_s).text rescue ''
41
- if section.name.to_s.strip.length == 0
42
- section.name = Moodle2CC::Moodle2::Models::Section::DEFAULT_NAME
43
- end
40
+ section.name = Nokogiri::HTML(section.summary.to_s).text.to_s.strip rescue ''
44
41
  end
45
42
 
46
43
  section
@@ -17,6 +17,7 @@ module Moodle2CC
17
17
  GLOSSARY_SUFFIX = '_glossary'
18
18
  SUMMARY_PAGE_SUFFIX = '_summary_page'
19
19
  EXTERNAL_URL_SUFFIX = '_external_url'
20
+ LTI_SUFFIX = '_lti'
20
21
 
21
22
  ACTIVITY_LOOKUP = {
22
23
  Moodle2::Models::Page => {suffix: PAGE_SUFFIX, content_type: CanvasCC::Models::ModuleItem::CONTENT_TYPE_WIKI_PAGE},
@@ -33,7 +34,8 @@ module Moodle2CC
33
34
  Moodle2::Models::Label => {suffix: nil, content_type: CanvasCC::Models::ModuleItem::CONTENT_TYPE_CONTEXT_MODULE_SUB_HEADER},
34
35
  Moodle2::Models::Glossary => {suffix: GLOSSARY_SUFFIX, content_type: CanvasCC::Models::ModuleItem::CONTENT_TYPE_WIKI_PAGE},
35
36
  Moodle2::Models::ExternalUrl => {suffix: EXTERNAL_URL_SUFFIX, content_type: CanvasCC::Models::ModuleItem::CONTENT_TYPE_EXTERNAL_URL},
36
- Moodle2::Models::Resource => {suffix: nil, content_type: CanvasCC::Models::ModuleItem::CONTENT_TYPE_ATTACHMENT}
37
+ Moodle2::Models::Resource => {suffix: nil, content_type: CanvasCC::Models::ModuleItem::CONTENT_TYPE_ATTACHMENT},
38
+ Moodle2::Models::Lti => {suffix: LTI_SUFFIX, content_type: CanvasCC::Models::ModuleItem::CONTENT_TYPE_CONTEXT_EXTERNAL_TOOL}
37
39
  }
38
40
 
39
41
  MAX_TITLE_LENGTH = 250
@@ -7,6 +7,8 @@ module Moodle2CC
7
7
  Moodle2::Models::Label => Moodle2Converter::LabelConverter,
8
8
  }
9
9
 
10
+ DEFAULT_NAME = 'Untitled Module'
11
+
10
12
  def initialize
11
13
  @converters ={}
12
14
  end
@@ -21,6 +23,8 @@ module Moodle2CC
21
23
  canvas_module.module_items += moodle_section.activities.map { |a| convert_activity(a) }
22
24
  canvas_module.module_items = canvas_module.module_items.flatten.compact
23
25
 
26
+ handle_untitled_module!(canvas_module)
27
+
24
28
  canvas_module
25
29
  end
26
30
 
@@ -53,6 +57,9 @@ module Moodle2CC
53
57
  module_item.url = moodle_activity.external_url.gsub(/\s/, '%20')
54
58
  elsif moodle_activity.is_a? Moodle2::Models::Resource
55
59
  module_item.identifierref = moodle_activity.file.content_hash if moodle_activity.file
60
+ elsif moodle_activity.is_a? Moodle2::Models::Lti
61
+ module_item.identifierref = module_item.identifier
62
+ module_item.url = moodle_activity.url.gsub(/\s/, '%20')
56
63
  else
57
64
  module_item.identifierref = get_unique_identifier_for_activity(moodle_activity)
58
65
  end
@@ -70,5 +77,19 @@ module Moodle2CC
70
77
  ACTIVITY_CONVERTERS[moodle_activity.class] ? ACTIVITY_CONVERTERS[moodle_activity.class].new : self
71
78
  end
72
79
 
80
+ # If a module has no title, but its first item is a subheader, promote that to the title
81
+ # (per example package provided by a customer)
82
+ def handle_untitled_module!(canvas_module)
83
+ if canvas_module.title.nil? || canvas_module.title.empty?
84
+ if canvas_module.module_items.any? &&
85
+ canvas_module.module_items.first.is_a?(CanvasCC::Models::ModuleItem) &&
86
+ canvas_module.module_items.first.content_type == 'ContextModuleSubHeader'
87
+ canvas_module.title = canvas_module.module_items.shift.title
88
+ else
89
+ canvas_module.title = DEFAULT_NAME
90
+ end
91
+ end
92
+ end
93
+
73
94
  end
74
95
  end
@@ -1,3 +1,3 @@
1
1
  module Moodle2CC
2
- VERSION = "0.2.28"
2
+ VERSION = "0.2.29"
3
3
  end
data/moodle2cc.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |gem|
23
23
  gem.add_development_dependency "guard-bundler"
24
24
  gem.add_development_dependency "guard-minitest"
25
25
  gem.add_development_dependency "guard-rspec"
26
- gem.add_development_dependency "debugger"
26
+ gem.add_development_dependency "byebug"
27
27
 
28
28
 
29
29
  gem.files = `git ls-files`.split($\)
@@ -25,6 +25,7 @@ module Moodle2CC::Moodle2
25
25
  Parsers::LabelParser.any_instance.stub(:parse)
26
26
  Parsers::ExternalUrlParser.any_instance.stub(:parse)
27
27
  Parsers::ResourceParser.any_instance.stub(:parse)
28
+ Parsers::LtiParser.any_instance.stub(:parse)
28
29
  Zip::File.stub(:open).and_yield([])
29
30
  end
30
31
 
@@ -203,5 +204,12 @@ module Moodle2CC::Moodle2
203
204
  extractor.extract {}
204
205
  expect(course.resources).to eq [resource]
205
206
  end
207
+
208
+ it 'parses lti links' do
209
+ resource = Models::Lti.new
210
+ Parsers::LtiParser.any_instance.stub(:parse).and_return([resource])
211
+ extractor.extract {}
212
+ expect(course.lti_links).to eq [resource]
213
+ end
206
214
  end
207
215
  end
@@ -15,6 +15,7 @@ module Moodle2CC::Moodle2::Models
15
15
  it_behaves_like 'it has an attribute for', :labels, []
16
16
  it_behaves_like 'it has an attribute for', :external_urls, []
17
17
  it_behaves_like 'it has an attribute for', :resources, []
18
+ it_behaves_like 'it has an attribute for', :lti_links, []
18
19
 
19
20
  describe '#activities' do
20
21
  it 'collects pages' do
@@ -14,7 +14,7 @@ describe Moodle2CC::Moodle2::Models::Forum do
14
14
  it_behaves_like 'it has an attribute for', :scale
15
15
  it_behaves_like 'it has an attribute for', :max_bytes
16
16
  it_behaves_like 'it has an attribute for', :max_attachments
17
- it_behaves_like 'it has an attribute for', :force_subsscribe
17
+ it_behaves_like 'it has an attribute for', :force_subscribe
18
18
  it_behaves_like 'it has an attribute for', :tracking_type
19
19
  it_behaves_like 'it has an attribute for', :rss_type
20
20
  it_behaves_like 'it has an attribute for', :rss_articles
@@ -19,7 +19,7 @@ describe Moodle2CC::Moodle2::Parsers::ForumParser do
19
19
  expect(forum.scale).to eq '1'
20
20
  expect(forum.max_bytes).to eq '0'
21
21
  expect(forum.max_attachments).to eq '1'
22
- expect(forum.force_subsscribe).to eq '1'
22
+ expect(forum.force_subscribe).to eq true
23
23
  expect(forum.tracking_type).to eq '1'
24
24
  expect(forum.rss_type).to eq '0'
25
25
  expect(forum.rss_articles).to eq '0'
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ module Moodle2CC::Moodle2::Parsers
4
+ describe LtiParser do
5
+
6
+ subject { LtiParser.new(fixture_path(File.join('moodle2', 'backup'))) }
7
+
8
+ it 'parses lti links' do
9
+ lti_links = subject.parse
10
+ expect(lti_links.count).to eq(1)
11
+
12
+ lti_link = lti_links.first
13
+ expect(lti_link.module_id).to eq('78841')
14
+ expect(lti_link.id).to eq('47236')
15
+ expect(lti_link.name).to eq('eTeacher Guide')
16
+ expect(lti_link.url).to eq('https://lti.flvsgl.com/tool.php?id=11&launch=educator_psychology1_v14_gs_guide/index.htm')
17
+ expect(lti_link.visible).to eq false
18
+ end
19
+
20
+ end
21
+ end
@@ -151,7 +151,7 @@ module Moodle2CC
151
151
  expect(module_item.indent).to eq '0'
152
152
  end
153
153
 
154
- it 'converts a moodle external url to a external url module item' do
154
+ it 'converts a moodle resource to a file module item' do
155
155
  moodle_resource = Moodle2::Models::Resource.new
156
156
  moodle_file = Moodle2::Models::Moodle2File.new
157
157
  moodle_file.content_hash = 'some_id'
@@ -165,6 +165,47 @@ module Moodle2CC
165
165
  expect(module_item.identifierref).to eq 'some_id'
166
166
  end
167
167
 
168
+ it 'converts a moodle LTI item to an external tool module item' do
169
+ subject.stub(:generate_unique_identifier) { 'some_random_id' }
170
+
171
+ moodle_lti = Moodle2::Models::Lti.new
172
+ moodle_lti.id = 1
173
+ moodle_lti.name = 'Whatever'
174
+ moodle_lti.url = 'http://whatever.invalid'
175
+ moodle_lti.visible = false
176
+
177
+ module_items = subject.convert_to_module_items(moodle_lti)
178
+ expect(module_items.size).to eq 1
179
+
180
+ expect(module_items[0].identifier).to eq 'some_random_id'
181
+ expect(module_items[0].workflow_state).to eq 'unpublished'
182
+ expect(module_items[0].title).to eq 'Whatever'
183
+ expect(module_items[0].identifierref).to eq 'some_random_id'
184
+ expect(module_items[0].content_type).to eq 'ContextExternalTool'
185
+ expect(module_items[0].url).to eq 'http://whatever.invalid'
186
+ expect(module_items[0].indent).to eq '0'
187
+ end
188
+
189
+ it 'infers a default name for an untitled section' do
190
+ moodle_section.id = 'section_id'
191
+ moodle_section.name = ''
192
+ canvas_module = subject.convert(moodle_section)
193
+ expect(canvas_module.title).to eq('Untitled Module')
194
+ end
195
+
196
+ it 'uses the first label as a title if needed' do
197
+ moodle_section.id = 'section_id'
198
+ moodle_section.name = ''
199
+ label = Moodle2::Models::Label.new
200
+ label.module_id = 'section_id'
201
+ label.id = 'label_id'
202
+ label.name = 'blah'
203
+ moodle_section.activities << label
204
+ canvas_module = subject.convert(moodle_section)
205
+ expect(canvas_module.title).to eq 'blah'
206
+ expect(canvas_module.module_items).to be_empty
207
+ end
208
+
168
209
  end
169
210
  end
170
211
  end
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <events>
3
+ </events>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <filters>
3
+ <filter_actives>
4
+ </filter_actives>
5
+ <filter_configs>
6
+ </filter_configs>
7
+ </filters>
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <grade_history>
3
+ <grade_grades>
4
+ </grade_grades>
5
+ </grade_history>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <activity_gradebook>
3
+ <grade_items>
4
+ </grade_items>
5
+ <grade_letters>
6
+ </grade_letters>
7
+ </activity_gradebook>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <inforef>
3
+ </inforef>
@@ -0,0 +1,26 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <activity id="47236" moduleid="78841" modulename="lti" contextid="82672">
3
+ <lti id="47236">
4
+ <name>eTeacher Guide</name>
5
+ <intro></intro>
6
+ <introformat>1</introformat>
7
+ <timecreated>1375814377</timecreated>
8
+ <timemodified>1375968182</timemodified>
9
+ <typeid>0</typeid>
10
+ <toolurl>https://lti.flvsgl.com/tool.php?id=11&amp;launch=educator_psychology1_v14_gs_guide/index.htm</toolurl>
11
+ <securetoolurl></securetoolurl>
12
+ <launchcontainer>1</launchcontainer>
13
+ <instructorchoicesendname>$@NULL@$</instructorchoicesendname>
14
+ <instructorchoicesendemailaddr>$@NULL@$</instructorchoicesendemailaddr>
15
+ <instructorchoiceacceptgrades>$@NULL@$</instructorchoiceacceptgrades>
16
+ <instructorchoiceallowroster>$@NULL@$</instructorchoiceallowroster>
17
+ <instructorchoiceallowsetting>$@NULL@$</instructorchoiceallowsetting>
18
+ <grade>100</grade>
19
+ <instructorcustomparameters></instructorcustomparameters>
20
+ <debuglaunch>0</debuglaunch>
21
+ <showtitlelaunch>0</showtitlelaunch>
22
+ <showdescriptionlaunch>0</showdescriptionlaunch>
23
+ <icon></icon>
24
+ <secureicon></secureicon>
25
+ </lti>
26
+ </activity>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module id="78841" version="2014111000">
3
+ <modulename>lti</modulename>
4
+ <sectionid>3443</sectionid>
5
+ <sectionnumber>0</sectionnumber>
6
+ <idnumber></idnumber>
7
+ <added>1375814377</added>
8
+ <score>0</score>
9
+ <indent>0</indent>
10
+ <visible>0</visible>
11
+ <visibleold>1</visibleold>
12
+ <groupmode>0</groupmode>
13
+ <groupingid>0</groupingid>
14
+ <completion>0</completion>
15
+ <completiongradeitemnumber>$@NULL@$</completiongradeitemnumber>
16
+ <completionview>0</completionview>
17
+ <completionexpected>0</completionexpected>
18
+ <availability>$@NULL@$</availability>
19
+ <showdescription>0</showdescription>
20
+ </module>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <roles>
3
+ <role_overrides>
4
+ </role_overrides>
5
+ <role_assignments>
6
+ </role_assignments>
7
+ </roles>
@@ -169,6 +169,13 @@
169
169
  <title>Hidden Assignmnet</title>
170
170
  <directory>activities/assignment_42</directory>
171
171
  </activity>
172
+ <activity>
173
+ <moduleid>78841</moduleid>
174
+ <sectionid>3443</sectionid>
175
+ <modulename>lti</modulename>
176
+ <title>eTeacher Guide</title>
177
+ <directory>activities/lti_78841</directory>
178
+ </activity>
172
179
  </activities>
173
180
  <sections>
174
181
  <section>
@@ -562,4 +569,4 @@
562
569
  </setting>
563
570
  </settings>
564
571
  </information>
565
- </moodle_backup>
572
+ </moodle_backup>
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.28
4
+ version: 0.2.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Durtschi
@@ -10,202 +10,202 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-11-18 00:00:00.000000000 Z
13
+ date: 2016-03-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rubyzip
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - ! '>='
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
21
  version: 1.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ! '>='
26
+ - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: 1.0.0
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: instructure-happymapper
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ~>
33
+ - - "~>"
34
34
  - !ruby/object:Gem::Version
35
35
  version: 0.5.10
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ~>
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: 0.5.10
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: builder
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ! '>='
47
+ - - ">="
48
48
  - !ruby/object:Gem::Version
49
49
  version: '0'
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - ! '>='
54
+ - - ">="
55
55
  - !ruby/object:Gem::Version
56
56
  version: '0'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: thor
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - ! '>='
61
+ - - ">="
62
62
  - !ruby/object:Gem::Version
63
63
  version: '0'
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - ! '>='
68
+ - - ">="
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0'
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: nokogiri
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - ! '>='
75
+ - - ">="
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - ! '>='
82
+ - - ">="
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: rdiscount
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - ! '>='
89
+ - - ">="
90
90
  - !ruby/object:Gem::Version
91
91
  version: '0'
92
92
  type: :runtime
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - ! '>='
96
+ - - ">="
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: rake
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
- - - ! '>='
103
+ - - ">="
104
104
  - !ruby/object:Gem::Version
105
105
  version: '0'
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - ! '>='
110
+ - - ">="
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: minitest
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - ! '>='
117
+ - - ">="
118
118
  - !ruby/object:Gem::Version
119
119
  version: '0'
120
120
  type: :development
121
121
  prerelease: false
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
123
  requirements:
124
- - - ! '>='
124
+ - - ">="
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
127
  - !ruby/object:Gem::Dependency
128
128
  name: rspec
129
129
  requirement: !ruby/object:Gem::Requirement
130
130
  requirements:
131
- - - ~>
131
+ - - "~>"
132
132
  - !ruby/object:Gem::Version
133
133
  version: '2'
134
134
  type: :development
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
137
137
  requirements:
138
- - - ~>
138
+ - - "~>"
139
139
  - !ruby/object:Gem::Version
140
140
  version: '2'
141
141
  - !ruby/object:Gem::Dependency
142
142
  name: guard
143
143
  requirement: !ruby/object:Gem::Requirement
144
144
  requirements:
145
- - - ! '>='
145
+ - - ">="
146
146
  - !ruby/object:Gem::Version
147
147
  version: '0'
148
148
  type: :development
149
149
  prerelease: false
150
150
  version_requirements: !ruby/object:Gem::Requirement
151
151
  requirements:
152
- - - ! '>='
152
+ - - ">="
153
153
  - !ruby/object:Gem::Version
154
154
  version: '0'
155
155
  - !ruby/object:Gem::Dependency
156
156
  name: guard-bundler
157
157
  requirement: !ruby/object:Gem::Requirement
158
158
  requirements:
159
- - - ! '>='
159
+ - - ">="
160
160
  - !ruby/object:Gem::Version
161
161
  version: '0'
162
162
  type: :development
163
163
  prerelease: false
164
164
  version_requirements: !ruby/object:Gem::Requirement
165
165
  requirements:
166
- - - ! '>='
166
+ - - ">="
167
167
  - !ruby/object:Gem::Version
168
168
  version: '0'
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: guard-minitest
171
171
  requirement: !ruby/object:Gem::Requirement
172
172
  requirements:
173
- - - ! '>='
173
+ - - ">="
174
174
  - !ruby/object:Gem::Version
175
175
  version: '0'
176
176
  type: :development
177
177
  prerelease: false
178
178
  version_requirements: !ruby/object:Gem::Requirement
179
179
  requirements:
180
- - - ! '>='
180
+ - - ">="
181
181
  - !ruby/object:Gem::Version
182
182
  version: '0'
183
183
  - !ruby/object:Gem::Dependency
184
184
  name: guard-rspec
185
185
  requirement: !ruby/object:Gem::Requirement
186
186
  requirements:
187
- - - ! '>='
187
+ - - ">="
188
188
  - !ruby/object:Gem::Version
189
189
  version: '0'
190
190
  type: :development
191
191
  prerelease: false
192
192
  version_requirements: !ruby/object:Gem::Requirement
193
193
  requirements:
194
- - - ! '>='
194
+ - - ">="
195
195
  - !ruby/object:Gem::Version
196
196
  version: '0'
197
197
  - !ruby/object:Gem::Dependency
198
- name: debugger
198
+ name: byebug
199
199
  requirement: !ruby/object:Gem::Requirement
200
200
  requirements:
201
- - - ! '>='
201
+ - - ">="
202
202
  - !ruby/object:Gem::Version
203
203
  version: '0'
204
204
  type: :development
205
205
  prerelease: false
206
206
  version_requirements: !ruby/object:Gem::Requirement
207
207
  requirements:
208
- - - ! '>='
208
+ - - ">="
209
209
  - !ruby/object:Gem::Version
210
210
  version: '0'
211
211
  description: Migrates Moodle backup ZIP to IMS Common Cartridge package
@@ -218,8 +218,8 @@ executables:
218
218
  extensions: []
219
219
  extra_rdoc_files: []
220
220
  files:
221
- - .gitignore
222
- - .travis.yml
221
+ - ".gitignore"
222
+ - ".travis.yml"
223
223
  - Changelog
224
224
  - Gemfile
225
225
  - Guardfile
@@ -331,6 +331,7 @@ files:
331
331
  - lib/moodle2cc/moodle2/models/glossary.rb
332
332
  - lib/moodle2cc/moodle2/models/glossary_entry.rb
333
333
  - lib/moodle2cc/moodle2/models/label.rb
334
+ - lib/moodle2cc/moodle2/models/lti.rb
334
335
  - lib/moodle2cc/moodle2/models/moodle2_file.rb
335
336
  - lib/moodle2cc/moodle2/models/page.rb
336
337
  - lib/moodle2cc/moodle2/models/questionnaire.rb
@@ -362,6 +363,7 @@ files:
362
363
  - lib/moodle2cc/moodle2/parsers/forum_parser.rb
363
364
  - lib/moodle2cc/moodle2/parsers/glossary_parser.rb
364
365
  - lib/moodle2cc/moodle2/parsers/label_parser.rb
366
+ - lib/moodle2cc/moodle2/parsers/lti_parser.rb
365
367
  - lib/moodle2cc/moodle2/parsers/page_parser.rb
366
368
  - lib/moodle2cc/moodle2/parsers/parser_helper.rb
367
369
  - lib/moodle2cc/moodle2/parsers/question_category_parser.rb
@@ -483,6 +485,7 @@ files:
483
485
  - spec/moodle2cc/moodle2/parsers/forum_parser_spec.rb
484
486
  - spec/moodle2cc/moodle2/parsers/glossary_parser_spec.rb
485
487
  - spec/moodle2cc/moodle2/parsers/label_parser_spec.rb
488
+ - spec/moodle2cc/moodle2/parsers/lti_parser_spec.rb
486
489
  - spec/moodle2cc/moodle2/parsers/page_parser_spec.rb
487
490
  - spec/moodle2cc/moodle2/parsers/parser_helper_spec.rb
488
491
  - spec/moodle2cc/moodle2/parsers/question_category_parser_spec.rb
@@ -641,6 +644,14 @@ files:
641
644
  - test/fixtures/moodle2/backup/activities/label_11/label.xml
642
645
  - test/fixtures/moodle2/backup/activities/label_11/module.xml
643
646
  - test/fixtures/moodle2/backup/activities/label_11/roles.xml
647
+ - test/fixtures/moodle2/backup/activities/lti_78841/calendar.xml
648
+ - test/fixtures/moodle2/backup/activities/lti_78841/filters.xml
649
+ - test/fixtures/moodle2/backup/activities/lti_78841/grade_history.xml
650
+ - test/fixtures/moodle2/backup/activities/lti_78841/grades.xml
651
+ - test/fixtures/moodle2/backup/activities/lti_78841/inforef.xml
652
+ - test/fixtures/moodle2/backup/activities/lti_78841/lti.xml
653
+ - test/fixtures/moodle2/backup/activities/lti_78841/module.xml
654
+ - test/fixtures/moodle2/backup/activities/lti_78841/roles.xml
644
655
  - test/fixtures/moodle2/backup/activities/page_10/calendar.xml
645
656
  - test/fixtures/moodle2/backup/activities/page_10/comments.xml
646
657
  - test/fixtures/moodle2/backup/activities/page_10/completion.xml
@@ -822,17 +833,17 @@ require_paths:
822
833
  - lib
823
834
  required_ruby_version: !ruby/object:Gem::Requirement
824
835
  requirements:
825
- - - ! '>='
836
+ - - ">="
826
837
  - !ruby/object:Gem::Version
827
838
  version: '0'
828
839
  required_rubygems_version: !ruby/object:Gem::Requirement
829
840
  requirements:
830
- - - ! '>='
841
+ - - ">="
831
842
  - !ruby/object:Gem::Version
832
843
  version: '0'
833
844
  requirements: []
834
845
  rubyforge_project:
835
- rubygems_version: 2.4.5
846
+ rubygems_version: 2.4.7
836
847
  signing_key:
837
848
  specification_version: 4
838
849
  summary: Migrates Moodle backup ZIP to IMS Common Cartridge package
@@ -910,6 +921,7 @@ test_files:
910
921
  - spec/moodle2cc/moodle2/parsers/forum_parser_spec.rb
911
922
  - spec/moodle2cc/moodle2/parsers/glossary_parser_spec.rb
912
923
  - spec/moodle2cc/moodle2/parsers/label_parser_spec.rb
924
+ - spec/moodle2cc/moodle2/parsers/lti_parser_spec.rb
913
925
  - spec/moodle2cc/moodle2/parsers/page_parser_spec.rb
914
926
  - spec/moodle2cc/moodle2/parsers/parser_helper_spec.rb
915
927
  - spec/moodle2cc/moodle2/parsers/question_category_parser_spec.rb
@@ -1068,6 +1080,14 @@ test_files:
1068
1080
  - test/fixtures/moodle2/backup/activities/label_11/label.xml
1069
1081
  - test/fixtures/moodle2/backup/activities/label_11/module.xml
1070
1082
  - test/fixtures/moodle2/backup/activities/label_11/roles.xml
1083
+ - test/fixtures/moodle2/backup/activities/lti_78841/calendar.xml
1084
+ - test/fixtures/moodle2/backup/activities/lti_78841/filters.xml
1085
+ - test/fixtures/moodle2/backup/activities/lti_78841/grade_history.xml
1086
+ - test/fixtures/moodle2/backup/activities/lti_78841/grades.xml
1087
+ - test/fixtures/moodle2/backup/activities/lti_78841/inforef.xml
1088
+ - test/fixtures/moodle2/backup/activities/lti_78841/lti.xml
1089
+ - test/fixtures/moodle2/backup/activities/lti_78841/module.xml
1090
+ - test/fixtures/moodle2/backup/activities/lti_78841/roles.xml
1071
1091
  - test/fixtures/moodle2/backup/activities/page_10/calendar.xml
1072
1092
  - test/fixtures/moodle2/backup/activities/page_10/comments.xml
1073
1093
  - test/fixtures/moodle2/backup/activities/page_10/completion.xml