canvas_cc 0.0.2 → 0.0.3
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 +4 -4
- data/lib/canvas_cc/canvas_cc/cartridge_creator.rb +1 -1
- data/lib/canvas_cc/canvas_cc/file_meta_writer.rb +34 -7
- data/lib/canvas_cc/canvas_cc/models/canvas_file.rb +2 -2
- data/lib/canvas_cc/canvas_cc/models/canvas_folder.rb +15 -0
- data/lib/canvas_cc/canvas_cc/models/course.rb +2 -1
- data/lib/canvas_cc/version.rb +1 -1
- data/lib/canvas_cc.rb +1 -0
- data/spec/moodle2cc/canvas_cc/file_meta_writer_spec.rb +40 -8
- data/spec/moodle2cc/canvas_cc/models/canvas_file_spec.rb +2 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f86794affc4033afb84e2972e08ff383331d65e
|
4
|
+
data.tar.gz: 98fd7535f07d5e624d244a820d5a2b3ba4a9f313
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: adce606f2fb582b1609ad19f3db16ba87f2c4331d821a3d2e7f0d683e55fecdfae5f3fb2df02e24408a5fff136d9af26a8f04ecace963a409169e01b27269035
|
7
|
+
data.tar.gz: ec55da56ea3b4dc62285655412078144553374915c19eed1418f9554b7961a8b71c8e2768d9ee10566b1d2a223b475f65a3cc78f90e9aec7799cc576e100d49e
|
@@ -40,7 +40,7 @@ module CanvasCc::CanvasCC
|
|
40
40
|
CanvasCc::CanvasCC::AssignmentGroupWriter.new(dir, @course.assignment_groups).write
|
41
41
|
CanvasCc::CanvasCC::ModuleMetaWriter.new(dir, *@course.canvas_modules).write
|
42
42
|
CanvasCc::CanvasCC::ImsManifestGenerator.new(dir, @course).write
|
43
|
-
CanvasCc::CanvasCC::FileMetaWriter.new(dir,
|
43
|
+
CanvasCc::CanvasCC::FileMetaWriter.new(dir, @course.files, @course.folders).write
|
44
44
|
CanvasCc::CanvasCC::PageWriter.new(dir, *@course.pages).write
|
45
45
|
CanvasCc::CanvasCC::DiscussionWriter.new(dir, *@course.discussions).write
|
46
46
|
CanvasCc::CanvasCC::AssignmentWriter.new(dir, *@course.assignments).write
|
@@ -3,20 +3,45 @@ module CanvasCc::CanvasCC
|
|
3
3
|
|
4
4
|
FILE_META_FILE = 'files_meta.xml'
|
5
5
|
|
6
|
-
def initialize(work_dir,
|
6
|
+
def initialize(work_dir, canvas_files, canvas_folders)
|
7
7
|
@work_dir = work_dir
|
8
|
-
@canvas_files = canvas_files
|
8
|
+
@canvas_files = [canvas_files].flatten.compact
|
9
|
+
@canvas_folders = [canvas_folders].flatten.compact
|
9
10
|
end
|
10
11
|
|
11
12
|
def write
|
12
|
-
copy_files
|
13
|
-
write_xml
|
13
|
+
copy_files unless @canvas_files.nil?
|
14
|
+
write_xml do |xml|
|
15
|
+
write_folders(xml) unless @canvas_folders.empty?
|
16
|
+
write_files(xml) unless @canvas_files.empty?
|
17
|
+
end
|
14
18
|
end
|
15
19
|
|
16
20
|
private
|
17
21
|
|
18
|
-
def
|
22
|
+
def write_folders(xml)
|
23
|
+
xml.folders{
|
24
|
+
@canvas_folders.each do |folder|
|
25
|
+
xml.folder('path' => folder.folder_location){
|
26
|
+
xml.hidden folder.hidden unless folder.hidden.nil?
|
27
|
+
xml.locked folder.locked unless folder.locked.nil?
|
28
|
+
}
|
29
|
+
end
|
30
|
+
}
|
31
|
+
end
|
19
32
|
|
33
|
+
def write_files(xml)
|
34
|
+
xml.files{
|
35
|
+
@canvas_files.each do |file|
|
36
|
+
xml.file('identifier' => file.identifier){
|
37
|
+
xml.hidden file.hidden unless file.hidden.nil?
|
38
|
+
xml.locked file.locked unless file.locked.nil?
|
39
|
+
}
|
40
|
+
end
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
44
|
+
def copy_files
|
20
45
|
@canvas_files.each do |canvas_file|
|
21
46
|
FileUtils.mkdir_p(File.dirname(File.join(@work_dir, canvas_file.href)))
|
22
47
|
FileUtils.cp(canvas_file.file_location, File.join(@work_dir, canvas_file.href))
|
@@ -29,10 +54,12 @@ module CanvasCc::CanvasCC
|
|
29
54
|
'xmlns' => 'http://canvas.instructure.com/xsd/cccv1p0',
|
30
55
|
'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
|
31
56
|
'xsi:schemaLocation' => 'http://canvas.instructure.com/xsd/cccv1p0 http://canvas.instructure.com/xsd/cccv1p0.xsd'
|
32
|
-
)
|
57
|
+
){
|
58
|
+
yield xml
|
59
|
+
}
|
33
60
|
end.to_xml
|
34
61
|
File.open(File.join(@work_dir, CanvasCc::CanvasCC::CartridgeCreator::COURSE_SETTINGS_DIR, FILE_META_FILE), 'w') { |f| f.write(xml) }
|
35
62
|
end
|
36
63
|
|
37
64
|
end
|
38
|
-
end
|
65
|
+
end
|
@@ -4,7 +4,7 @@ module CanvasCc::CanvasCC::Models
|
|
4
4
|
WEB_RESOURCES = 'web_resources'
|
5
5
|
|
6
6
|
attr_reader :file_path
|
7
|
-
attr_accessor :file_location
|
7
|
+
attr_accessor :file_location, :hidden, :locked
|
8
8
|
|
9
9
|
def initialize
|
10
10
|
super
|
@@ -19,4 +19,4 @@ module CanvasCc::CanvasCC::Models
|
|
19
19
|
|
20
20
|
|
21
21
|
end
|
22
|
-
end
|
22
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module CanvasCc::CanvasCC::Models
|
2
|
+
class CanvasFolder < CanvasCc::CanvasCC::Models::Resource
|
3
|
+
|
4
|
+
WEB_RESOURCES = 'web_resources'
|
5
|
+
|
6
|
+
attr_accessor :folder_location, :hidden, :locked
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super
|
10
|
+
@type = WEB_CONTENT_TYPE
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -2,13 +2,14 @@ module CanvasCc::CanvasCC::Models
|
|
2
2
|
class Course
|
3
3
|
|
4
4
|
attr_accessor :format, :identifier, :copyright, :settings, :resources, :canvas_modules, :files, :pages, :discussions,
|
5
|
-
:assignments, :assessments, :question_banks, :assignment_groups
|
5
|
+
:assignments, :assessments, :question_banks, :assignment_groups, :folders
|
6
6
|
|
7
7
|
def initialize
|
8
8
|
@settings = {}
|
9
9
|
@resources = []
|
10
10
|
@canvas_modules = []
|
11
11
|
@files = []
|
12
|
+
@folders = []
|
12
13
|
@pages = []
|
13
14
|
@discussions = []
|
14
15
|
@assignments = []
|
data/lib/canvas_cc/version.rb
CHANGED
data/lib/canvas_cc.rb
CHANGED
@@ -86,6 +86,7 @@ module CanvasCc
|
|
86
86
|
autoload :CanvasModule, 'canvas_cc/canvas_cc/models/canvas_module'
|
87
87
|
autoload :ModuleItem, 'canvas_cc/canvas_cc/models/module_item'
|
88
88
|
autoload :CanvasFile, 'canvas_cc/canvas_cc/models/canvas_file'
|
89
|
+
autoload :CanvasFolder, 'canvas_cc/canvas_cc/models/canvas_folder'
|
89
90
|
autoload :Page, 'canvas_cc/canvas_cc/models/page'
|
90
91
|
autoload :Discussion, 'canvas_cc/canvas_cc/models/discussion'
|
91
92
|
autoload :WorkflowState, 'canvas_cc/canvas_cc/models/workflow_state'
|
@@ -4,6 +4,7 @@ module CanvasCc::CanvasCC
|
|
4
4
|
describe FileMetaWriter do
|
5
5
|
|
6
6
|
let(:file) { Models::CanvasFile.new }
|
7
|
+
let(:folder) { Models::CanvasFolder.new }
|
7
8
|
let(:tmpdir) { Dir.mktmpdir }
|
8
9
|
|
9
10
|
before :each do
|
@@ -15,28 +16,59 @@ module CanvasCc::CanvasCC
|
|
15
16
|
end
|
16
17
|
|
17
18
|
it 'xml contains the correct schema' do
|
18
|
-
meta_writer = writer(file)
|
19
|
+
meta_writer = writer(file, nil)
|
19
20
|
meta_writer.stub(:copy_files) { nil }
|
20
21
|
xml = write_xml(meta_writer)
|
21
22
|
assert_xml_schema(xml)
|
22
23
|
end
|
23
24
|
|
24
25
|
it '#write' do
|
25
|
-
|
26
|
-
source_file = File.join(dir, 'sample.txt')
|
27
|
-
FileUtils.touch(source_file)
|
26
|
+
create_file('sample.txt') do |source_file|
|
28
27
|
file.file_location = source_file
|
29
28
|
file.file_path = 'sample.txt'
|
30
|
-
write_xml(writer(file))
|
29
|
+
write_xml(writer(file, nil))
|
31
30
|
path = File.join(tmpdir, Models::CanvasFile::WEB_RESOURCES, 'sample.txt')
|
32
31
|
expect(File.exist?(path)).to be_true
|
33
32
|
end
|
34
33
|
end
|
35
34
|
|
35
|
+
it 'writes files' do
|
36
|
+
file.hidden = true
|
37
|
+
file.locked = true
|
38
|
+
file.identifier = 'abc123'
|
39
|
+
create_file('sample.txt') do |source_file|
|
40
|
+
file.file_location = source_file
|
41
|
+
file.file_path = 'sample.txt'
|
42
|
+
xml = write_xml(writer(file, nil))
|
43
|
+
expect(xml.at_xpath('xmlns:fileMeta/xmlns:files/xmlns:file/@identifier').text).to eq 'abc123'
|
44
|
+
expect(xml.at_xpath('xmlns:fileMeta/xmlns:files/xmlns:file/xmlns:locked').text).to eq 'true'
|
45
|
+
expect(xml.at_xpath('xmlns:fileMeta/xmlns:files/xmlns:file/xmlns:hidden').text).to eq 'true'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'writes folders' do
|
50
|
+
folder.hidden = true
|
51
|
+
folder.locked = true
|
52
|
+
folder.folder_location = '/folder1'
|
53
|
+
xml = write_xml(writer(nil, folder))
|
54
|
+
expect(xml.at_xpath('xmlns:fileMeta/xmlns:folders/xmlns:folder/@path').text).to eq '/folder1'
|
55
|
+
expect(xml.at_xpath('xmlns:fileMeta/xmlns:folders/xmlns:folder/xmlns:locked').text).to eq 'true'
|
56
|
+
expect(xml.at_xpath('xmlns:fileMeta/xmlns:folders/xmlns:folder/xmlns:hidden').text).to eq 'true'
|
57
|
+
|
58
|
+
end
|
59
|
+
|
36
60
|
private
|
37
61
|
|
38
|
-
def
|
39
|
-
|
62
|
+
def create_file(name)
|
63
|
+
Dir.mktmpdir do |dir|
|
64
|
+
source_file = File.join(dir, name)
|
65
|
+
FileUtils.touch(source_file)
|
66
|
+
yield source_file
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def writer(file, folder)
|
71
|
+
FileMetaWriter.new(tmpdir, file, folder)
|
40
72
|
end
|
41
73
|
|
42
74
|
def write_xml(writer)
|
@@ -54,4 +86,4 @@ module CanvasCc::CanvasCC
|
|
54
86
|
end
|
55
87
|
|
56
88
|
end
|
57
|
-
end
|
89
|
+
end
|
@@ -5,6 +5,8 @@ module CanvasCc::CanvasCC::Models
|
|
5
5
|
|
6
6
|
it_behaves_like 'a CanvasCc::CanvasCC::Models::Resource'
|
7
7
|
it_behaves_like 'it has an attribute for', :file_location
|
8
|
+
it_behaves_like 'it has an attribute for', :hidden
|
9
|
+
it_behaves_like 'it has an attribute for', :locked
|
8
10
|
|
9
11
|
it 'has a type to webcontent' do
|
10
12
|
expect(subject.type).to eq(Resource::WEB_CONTENT_TYPE)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: canvas_cc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Instructure
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -268,6 +268,7 @@ files:
|
|
268
268
|
- lib/canvas_cc/canvas_cc/models/assignment_group.rb
|
269
269
|
- lib/canvas_cc/canvas_cc/models/calculated_question.rb
|
270
270
|
- lib/canvas_cc/canvas_cc/models/canvas_file.rb
|
271
|
+
- lib/canvas_cc/canvas_cc/models/canvas_folder.rb
|
271
272
|
- lib/canvas_cc/canvas_cc/models/canvas_module.rb
|
272
273
|
- lib/canvas_cc/canvas_cc/models/course.rb
|
273
274
|
- lib/canvas_cc/canvas_cc/models/discussion.rb
|