moodle2cc 0.2.9 → 0.2.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/Changelog +4 -0
- data/lib/moodle2cc/canvas_cc/discussion_writer.rb +1 -0
- data/lib/moodle2cc/canvas_cc/models/discussion.rb +1 -1
- data/lib/moodle2cc/moodle2/models/feedback.rb +1 -1
- data/lib/moodle2cc/moodle2/models/quizzes/multianswer_question.rb +1 -0
- data/lib/moodle2cc/moodle2/parsers/feedback_parser.rb +2 -0
- data/lib/moodle2cc/moodle2converter/discussion_converter.rb +1 -1
- data/lib/moodle2cc/moodle2converter/feedback_converter.rb +2 -0
- data/lib/moodle2cc/version.rb +1 -1
- data/spec/moodle2cc/moodle2/models/quizzes/multianswer_question_spec.rb +1 -1
- data/spec/moodle2cc/moodle2/parsers/feedback_parser_spec.rb +6 -4
- data/spec/moodle2cc/moodle2converter/discussion_converter_spec.rb +5 -0
- data/test/fixtures/moodle2/backup/activities/feedback_58589/feedback.xml +147 -0
- data/test/fixtures/moodle2/backup/activities/feedback_58589/filters.xml +7 -0
- data/test/fixtures/moodle2/backup/activities/feedback_58589/grades.xml +7 -0
- data/test/fixtures/moodle2/backup/activities/feedback_58589/inforef.xml +3 -0
- data/test/fixtures/moodle2/backup/activities/feedback_58589/module.xml +28 -0
- data/test/fixtures/moodle2/backup/activities/feedback_58589/roles.xml +7 -0
- data/test/fixtures/moodle2/backup/moodle_backup.xml +7 -0
- metadata +15 -3
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NmY2ODJmNDFmYWI4NzNlNWE3MWM4ZTFlMmE4Y2Y2YTk4YjljZWRiOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NjQ2ZDlhOTc4NDcxYzY0NDdiZmEyNDcyZGI0MzY1ZjBiZWM5ZDUzMw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZjI4M2FmYzQ1NmQ5NWJhMzExOTY5ZTViYTYxYmUyNjJmNWQ2ODgzODA1YzAx
|
10
|
+
YWMzNzJmNGY2MTI0YzkwNjRkODVhNjZiYWZlNzRhMWVmN2NhMWZhOGQwNzNl
|
11
|
+
N2M4NmFkNGJhODZmZWI1NGQzMTcwZWNlY2Y3Njc2N2NkN2EzY2Y=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NTM4YjMwODIwNmQ4MWZkNzk0NGQyZGExMjNhMzdmMDRjZGJkMmE3MWMyMDEy
|
14
|
+
MTg5MGRmODA0MjExNDNlZGRhYjE1MWU5YTAzZGVjYWJlYjNkMzg5ZjYwYjhm
|
15
|
+
NDA1NjdkMzA3NGMyNTk4MzFmMTRjNzU4ZmQyMzdkNmQ3NWVhM2U=
|
data/Changelog
CHANGED
@@ -42,6 +42,7 @@ module Moodle2CC::CanvasCC
|
|
42
42
|
xml.position
|
43
43
|
xml.type 'topic'
|
44
44
|
xml.discussion_type discussion.discussion_type
|
45
|
+
xml.require_initial_post discussion.require_initial_post
|
45
46
|
}
|
46
47
|
end.to_xml
|
47
48
|
File.open(File.join(@work_dir, meta_resource.href), 'w') { |f| f.write(xml) }
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Moodle2CC::CanvasCC::Models
|
2
2
|
class Discussion
|
3
|
-
attr_accessor :identifier, :title, :text, :discussion_type, :workflow_state
|
3
|
+
attr_accessor :identifier, :title, :text, :discussion_type, :workflow_state, :require_initial_post
|
4
4
|
DISCUSSION_ID_POSTFIX = '_DISCUSSION'
|
5
5
|
DISCUSSION_META_POSTFIX = '_meta'
|
6
6
|
IMSDT_TYPE = 'imsdt_xmlv1p1'
|
@@ -32,6 +32,8 @@ module Moodle2CC::Moodle2::Parsers
|
|
32
32
|
feedback.time_close = parse_text(xml, '/activity/feedback/timeclose')
|
33
33
|
feedback.time_modified = parse_text(xml, '/activity/feedback/timemodified')
|
34
34
|
|
35
|
+
feedback.multiple_submit = parse_boolean(xml, '/activity/feedback/multiple_submit')
|
36
|
+
|
35
37
|
xml.search('/activity/feedback/items/item').each do |node|
|
36
38
|
item = Moodle2CC::Moodle2::Models::Feedback::Question.new
|
37
39
|
item.id = node.attributes['id'].value
|
@@ -15,6 +15,8 @@ module Moodle2CC::Moodle2Converter
|
|
15
15
|
canvas_assessment.scoring_policy = 'keep_latest'
|
16
16
|
canvas_assessment.quiz_type = 'survey'
|
17
17
|
|
18
|
+
canvas_assessment.allowed_attempts = -1 if moodle_feedback.multiple_submit
|
19
|
+
|
18
20
|
canvas_assessment.items = []
|
19
21
|
moodle_feedback.items.each do |item|
|
20
22
|
if canvas_question = convert_feedback_question(item)
|
data/lib/moodle2cc/version.rb
CHANGED
@@ -6,7 +6,7 @@ module Moodle2CC::Moodle2::Models::Quizzes
|
|
6
6
|
it_behaves_like 'a Moodle2CC::Moodle2::Models::Quizzes::Question'
|
7
7
|
|
8
8
|
it_behaves_like 'it has an attribute for', :embedded_question_references
|
9
|
-
it_behaves_like 'it has an attribute for', :embedded_questions
|
9
|
+
it_behaves_like 'it has an attribute for', :embedded_questions, []
|
10
10
|
|
11
11
|
it_behaves_like 'it is registered as a Question', 'multianswer'
|
12
12
|
|
@@ -5,10 +5,8 @@ describe Moodle2CC::Moodle2::Parsers::FeedbackParser do
|
|
5
5
|
|
6
6
|
it 'should parse a feedback activity' do
|
7
7
|
feedbacks = subject.parse
|
8
|
-
expect(feedbacks.count).to eq
|
9
|
-
feedback = feedbacks.
|
10
|
-
|
11
|
-
expect(feedback.id).to eq '7'
|
8
|
+
expect(feedbacks.count).to eq 2
|
9
|
+
feedback = feedbacks.detect{|f| f.id == '7'}
|
12
10
|
|
13
11
|
expect(feedback.module_id).to eq '58588'
|
14
12
|
expect(feedback.name).to eq 'feedback name'
|
@@ -17,6 +15,7 @@ describe Moodle2CC::Moodle2::Parsers::FeedbackParser do
|
|
17
15
|
expect(feedback.time_close).to eq '0'
|
18
16
|
expect(feedback.time_open).to eq '0'
|
19
17
|
expect(feedback.time_modified).to eq '1397566320'
|
18
|
+
expect(feedback.multiple_submit).to eq false
|
20
19
|
|
21
20
|
expect(feedback.items.count).to eq 9
|
22
21
|
item = feedback.items.last
|
@@ -26,6 +25,9 @@ describe Moodle2CC::Moodle2::Parsers::FeedbackParser do
|
|
26
25
|
expect(item.position).to eq '9'
|
27
26
|
expect(item.type).to eq 'textfield'
|
28
27
|
expect(item.presentation).to eq '30|5'
|
28
|
+
|
29
|
+
feedback2 = feedbacks.detect{|f| f.id == '8'}
|
30
|
+
expect(feedback2.multiple_submit).to eq true
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
@@ -9,6 +9,7 @@ describe DiscussionConverter do
|
|
9
9
|
forum.name = 'Forum Name'
|
10
10
|
forum.intro = 'Forum Introduction'
|
11
11
|
forum.visible = false
|
12
|
+
forum.type = 'qanda'
|
12
13
|
|
13
14
|
discussion = subject.convert(forum)
|
14
15
|
|
@@ -17,7 +18,11 @@ describe DiscussionConverter do
|
|
17
18
|
expect(discussion.text).to eq 'Forum Introduction'
|
18
19
|
expect(discussion.discussion_type).to eq 'threaded'
|
19
20
|
expect(discussion.workflow_state).to eq 'unpublished'
|
21
|
+
expect(discussion.require_initial_post).to eq true
|
20
22
|
|
23
|
+
forum.type = 'general'
|
24
|
+
discussion2 = subject.convert(forum)
|
25
|
+
expect(discussion2.require_initial_post).to eq false
|
21
26
|
end
|
22
27
|
end
|
23
28
|
end
|
@@ -0,0 +1,147 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<activity id="8" moduleid="58589" modulename="feedback" contextid="162391">
|
3
|
+
<feedback id="8">
|
4
|
+
<name>feedback name</name>
|
5
|
+
<intro><p>feedback description</p></intro>
|
6
|
+
<introformat>1</introformat>
|
7
|
+
<anonymous>1</anonymous>
|
8
|
+
<email_notification>0</email_notification>
|
9
|
+
<multiple_submit>1</multiple_submit>
|
10
|
+
<autonumbering>0</autonumbering>
|
11
|
+
<site_after_submit></site_after_submit>
|
12
|
+
<page_after_submit></page_after_submit>
|
13
|
+
<page_after_submitformat>1</page_after_submitformat>
|
14
|
+
<publish_stats>0</publish_stats>
|
15
|
+
<timeopen>0</timeopen>
|
16
|
+
<timeclose>0</timeclose>
|
17
|
+
<timemodified>1397566320</timemodified>
|
18
|
+
<completionsubmit>0</completionsubmit>
|
19
|
+
<items>
|
20
|
+
<item id="123">
|
21
|
+
<template>0</template>
|
22
|
+
<name>Captcha</name>
|
23
|
+
<label>Captcha</label>
|
24
|
+
<presentation></presentation>
|
25
|
+
<typ>captcha</typ>
|
26
|
+
<hasvalue>0</hasvalue>
|
27
|
+
<position>1</position>
|
28
|
+
<required>1</required>
|
29
|
+
<dependitem>0</dependitem>
|
30
|
+
<dependvalue></dependvalue>
|
31
|
+
<options></options>
|
32
|
+
</item>
|
33
|
+
<item id="124">
|
34
|
+
<template>0</template>
|
35
|
+
<name>Information question</name>
|
36
|
+
<label>informationlabel</label>
|
37
|
+
<presentation>3</presentation>
|
38
|
+
<typ>info</typ>
|
39
|
+
<hasvalue>1</hasvalue>
|
40
|
+
<position>2</position>
|
41
|
+
<required>0</required>
|
42
|
+
<dependitem>0</dependitem>
|
43
|
+
<dependvalue></dependvalue>
|
44
|
+
<options></options>
|
45
|
+
</item>
|
46
|
+
<item id="125">
|
47
|
+
<template>0</template>
|
48
|
+
<name>label</name>
|
49
|
+
<label></label>
|
50
|
+
<presentation><p>Label "question"</p></presentation>
|
51
|
+
<typ>label</typ>
|
52
|
+
<hasvalue>0</hasvalue>
|
53
|
+
<position>3</position>
|
54
|
+
<required>0</required>
|
55
|
+
<dependitem>0</dependitem>
|
56
|
+
<dependvalue></dependvalue>
|
57
|
+
<options></options>
|
58
|
+
</item>
|
59
|
+
<item id="126">
|
60
|
+
<template>0</template>
|
61
|
+
<name></name>
|
62
|
+
<label></label>
|
63
|
+
<presentation></presentation>
|
64
|
+
<typ>pagebreak</typ>
|
65
|
+
<hasvalue>0</hasvalue>
|
66
|
+
<position>4</position>
|
67
|
+
<required>0</required>
|
68
|
+
<dependitem>0</dependitem>
|
69
|
+
<dependvalue></dependvalue>
|
70
|
+
<options></options>
|
71
|
+
</item>
|
72
|
+
<item id="127">
|
73
|
+
<template>0</template>
|
74
|
+
<name>longer text answer</name>
|
75
|
+
<label>longertextanswerlabel</label>
|
76
|
+
<presentation>30|5</presentation>
|
77
|
+
<typ>textarea</typ>
|
78
|
+
<hasvalue>1</hasvalue>
|
79
|
+
<position>5</position>
|
80
|
+
<required>0</required>
|
81
|
+
<dependitem>0</dependitem>
|
82
|
+
<dependvalue></dependvalue>
|
83
|
+
<options></options>
|
84
|
+
</item>
|
85
|
+
<item id="128">
|
86
|
+
<template>0</template>
|
87
|
+
<name>multiple choice question</name>
|
88
|
+
<label>multiplechoicelabel</label>
|
89
|
+
<presentation>r>>>>>Option 1
|
90
|
+
|Option 2
|
91
|
+
|Option 3</presentation>
|
92
|
+
<typ>multichoice</typ>
|
93
|
+
<hasvalue>1</hasvalue>
|
94
|
+
<position>6</position>
|
95
|
+
<required>0</required>
|
96
|
+
<dependitem>0</dependitem>
|
97
|
+
<dependvalue></dependvalue>
|
98
|
+
<options></options>
|
99
|
+
</item>
|
100
|
+
<item id="129">
|
101
|
+
<template>0</template>
|
102
|
+
<name>multiple choice rated</name>
|
103
|
+
<label>ratedlabel</label>
|
104
|
+
<presentation>r>>>>>1####Something
|
105
|
+
|2####something else
|
106
|
+
|3####something something else</presentation>
|
107
|
+
<typ>multichoicerated</typ>
|
108
|
+
<hasvalue>1</hasvalue>
|
109
|
+
<position>7</position>
|
110
|
+
<required>0</required>
|
111
|
+
<dependitem>0</dependitem>
|
112
|
+
<dependvalue></dependvalue>
|
113
|
+
<options></options>
|
114
|
+
</item>
|
115
|
+
<item id="130">
|
116
|
+
<template>0</template>
|
117
|
+
<name>numeric question</name>
|
118
|
+
<label>numbericquestisonlabel</label>
|
119
|
+
<presentation>1|100</presentation>
|
120
|
+
<typ>numeric</typ>
|
121
|
+
<hasvalue>1</hasvalue>
|
122
|
+
<position>8</position>
|
123
|
+
<required>0</required>
|
124
|
+
<dependitem>0</dependitem>
|
125
|
+
<dependvalue></dependvalue>
|
126
|
+
<options></options>
|
127
|
+
</item>
|
128
|
+
<item id="131">
|
129
|
+
<template>0</template>
|
130
|
+
<name>short text question</name>
|
131
|
+
<label>shorttextlabel</label>
|
132
|
+
<presentation>30|5</presentation>
|
133
|
+
<typ>textfield</typ>
|
134
|
+
<hasvalue>1</hasvalue>
|
135
|
+
<position>9</position>
|
136
|
+
<required>0</required>
|
137
|
+
<dependitem>0</dependitem>
|
138
|
+
<dependvalue></dependvalue>
|
139
|
+
<options></options>
|
140
|
+
</item>
|
141
|
+
</items>
|
142
|
+
<completeds>
|
143
|
+
</completeds>
|
144
|
+
<trackings>
|
145
|
+
</trackings>
|
146
|
+
</feedback>
|
147
|
+
</activity>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<module id="58588" version="2013050100">
|
3
|
+
<modulename>feedback</modulename>
|
4
|
+
<sectionid>34361</sectionid>
|
5
|
+
<sectionnumber>2</sectionnumber>
|
6
|
+
<idnumber>$@NULL@$</idnumber>
|
7
|
+
<added>1397566320</added>
|
8
|
+
<score>0</score>
|
9
|
+
<indent>0</indent>
|
10
|
+
<visible>1</visible>
|
11
|
+
<visibleold>1</visibleold>
|
12
|
+
<groupmode>0</groupmode>
|
13
|
+
<groupingid>0</groupingid>
|
14
|
+
<groupmembersonly>0</groupmembersonly>
|
15
|
+
<completion>1</completion>
|
16
|
+
<completiongradeitemnumber>$@NULL@$</completiongradeitemnumber>
|
17
|
+
<completionview>0</completionview>
|
18
|
+
<completionexpected>0</completionexpected>
|
19
|
+
<availablefrom>0</availablefrom>
|
20
|
+
<availableuntil>0</availableuntil>
|
21
|
+
<releasecode>code</releasecode>
|
22
|
+
<showavailability>1</showavailability>
|
23
|
+
<showdescription>0</showdescription>
|
24
|
+
<plugin_outcomesupport_mod_module>
|
25
|
+
</plugin_outcomesupport_mod_module>
|
26
|
+
<availability_info>
|
27
|
+
</availability_info>
|
28
|
+
</module>
|
@@ -127,6 +127,13 @@
|
|
127
127
|
<title>feedback name</title>
|
128
128
|
<directory>activities/feedback_58588</directory>
|
129
129
|
</activity>
|
130
|
+
<activity>
|
131
|
+
<moduleid>58589</moduleid>
|
132
|
+
<sectionid>7</sectionid>
|
133
|
+
<modulename>feedback</modulename>
|
134
|
+
<title>feedback name</title>
|
135
|
+
<directory>activities/feedback_58589</directory>
|
136
|
+
</activity>
|
130
137
|
<activity>
|
131
138
|
<moduleid>58541</moduleid>
|
132
139
|
<sectionid>7</sectionid>
|
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.
|
4
|
+
version: 0.2.10
|
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: 2014-06-
|
13
|
+
date: 2014-06-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rubyzip
|
@@ -580,6 +580,12 @@ files:
|
|
580
580
|
- test/fixtures/moodle2/backup/activities/feedback_58588/inforef.xml
|
581
581
|
- test/fixtures/moodle2/backup/activities/feedback_58588/module.xml
|
582
582
|
- test/fixtures/moodle2/backup/activities/feedback_58588/roles.xml
|
583
|
+
- test/fixtures/moodle2/backup/activities/feedback_58589/feedback.xml
|
584
|
+
- test/fixtures/moodle2/backup/activities/feedback_58589/filters.xml
|
585
|
+
- test/fixtures/moodle2/backup/activities/feedback_58589/grades.xml
|
586
|
+
- test/fixtures/moodle2/backup/activities/feedback_58589/inforef.xml
|
587
|
+
- test/fixtures/moodle2/backup/activities/feedback_58589/module.xml
|
588
|
+
- test/fixtures/moodle2/backup/activities/feedback_58589/roles.xml
|
583
589
|
- test/fixtures/moodle2/backup/activities/folder_7/calendar.xml
|
584
590
|
- test/fixtures/moodle2/backup/activities/folder_7/comments.xml
|
585
591
|
- test/fixtures/moodle2/backup/activities/folder_7/completion.xml
|
@@ -816,7 +822,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
816
822
|
version: '0'
|
817
823
|
requirements: []
|
818
824
|
rubyforge_project:
|
819
|
-
rubygems_version: 2.
|
825
|
+
rubygems_version: 2.3.0
|
820
826
|
signing_key:
|
821
827
|
specification_version: 4
|
822
828
|
summary: Migrates Moodle backup ZIP to IMS Common Cartridge package
|
@@ -991,6 +997,12 @@ test_files:
|
|
991
997
|
- test/fixtures/moodle2/backup/activities/feedback_58588/inforef.xml
|
992
998
|
- test/fixtures/moodle2/backup/activities/feedback_58588/module.xml
|
993
999
|
- test/fixtures/moodle2/backup/activities/feedback_58588/roles.xml
|
1000
|
+
- test/fixtures/moodle2/backup/activities/feedback_58589/feedback.xml
|
1001
|
+
- test/fixtures/moodle2/backup/activities/feedback_58589/filters.xml
|
1002
|
+
- test/fixtures/moodle2/backup/activities/feedback_58589/grades.xml
|
1003
|
+
- test/fixtures/moodle2/backup/activities/feedback_58589/inforef.xml
|
1004
|
+
- test/fixtures/moodle2/backup/activities/feedback_58589/module.xml
|
1005
|
+
- test/fixtures/moodle2/backup/activities/feedback_58589/roles.xml
|
994
1006
|
- test/fixtures/moodle2/backup/activities/folder_7/calendar.xml
|
995
1007
|
- test/fixtures/moodle2/backup/activities/folder_7/comments.xml
|
996
1008
|
- test/fixtures/moodle2/backup/activities/folder_7/completion.xml
|