ims-lti 1.2.4 → 1.2.7
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/Changelog +1 -1
- data/lib/ims/lti/extensions/content.rb +76 -27
- data/lib/ims/lti/extensions/outcome_data.rb +30 -6
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29574604b1d50bb3ad7a18357c73989e650cc7eaee9693115661f4b1fba01369
|
4
|
+
data.tar.gz: 7d3ce283cf78880097a4803f35ef96f0e2cdea74d49e17a6b45982b9f5171390
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8effe8dd1fe14c17dd01a41c4f3c719a0201717d72b244b5d181df53df0de9ec13bec6bed53f1f9aa873c2cb9ada99dfad4eadc94818003610a287a56d8884f1
|
7
|
+
data.tar.gz: a738260e51baa9a6a61db871ad3807e73dbf3918e1fd45da1cf27d6be0fd61bdf8e597579f8ac68c639936c848bb5d676dddacd7d592f784e1051bc9db2aa7d0
|
data/Changelog
CHANGED
@@ -96,67 +96,116 @@ module IMS::LTI
|
|
96
96
|
|
97
97
|
#generates the return url for file submissions
|
98
98
|
def file_content_return_url(url, text, content_type = nil)
|
99
|
-
url = CGI::escape(url)
|
100
|
-
text = CGI::escape(text)
|
101
|
-
content_type = CGI::escape(content_type) if content_type
|
102
99
|
|
103
|
-
return_url =
|
104
|
-
|
100
|
+
return_url = add_parameters(content_return_url, {
|
101
|
+
return_type: 'file',
|
102
|
+
url: url,
|
103
|
+
text: text
|
104
|
+
})
|
105
|
+
|
106
|
+
if content_type
|
107
|
+
return_url = add_parameters(return_url, {
|
108
|
+
content_type: content_type
|
109
|
+
})
|
110
|
+
end
|
105
111
|
|
106
112
|
return return_url
|
107
113
|
end
|
108
114
|
|
109
115
|
#generates the return url for url submissions
|
110
116
|
def url_content_return_url(url, title = nil, text = 'link', target = '_blank')
|
111
|
-
url = CGI::escape(url)
|
112
|
-
text = CGI::escape(text)
|
113
|
-
target = CGI::escape(target)
|
114
117
|
|
115
|
-
return_url =
|
116
|
-
|
118
|
+
return_url = add_parameters(content_return_url, {
|
119
|
+
return_type: 'url',
|
120
|
+
url: url,
|
121
|
+
text: text,
|
122
|
+
target: target
|
123
|
+
})
|
124
|
+
|
125
|
+
if title
|
126
|
+
return_url = add_parameters(return_url, {
|
127
|
+
title:title
|
128
|
+
})
|
129
|
+
end
|
117
130
|
|
118
131
|
return return_url
|
119
132
|
end
|
120
133
|
|
121
134
|
#generates the return url for lti launch submissions
|
122
135
|
def lti_launch_content_return_url(url, text='link', title=nil)
|
123
|
-
url = CGI::escape(url)
|
124
|
-
text = CGI::escape(text)
|
125
136
|
|
126
|
-
return_url =
|
127
|
-
|
137
|
+
return_url = add_parameters(content_return_url, {
|
138
|
+
return_type: 'lti_launch_url',
|
139
|
+
url: url,
|
140
|
+
text: text
|
141
|
+
})
|
142
|
+
|
143
|
+
if title
|
144
|
+
return_url = add_parameters(return_url, {
|
145
|
+
title:title
|
146
|
+
})
|
147
|
+
end
|
128
148
|
|
129
149
|
return return_url
|
130
150
|
end
|
131
151
|
|
132
152
|
#generates the return url for image submissions
|
133
153
|
def image_content_return_url(url, width, height, alt = '')
|
134
|
-
url = CGI::escape(url)
|
135
|
-
width = CGI::escape(width.to_s)
|
136
|
-
height = CGI::escape(height.to_s)
|
137
|
-
alt = CGI::escape(alt)
|
138
154
|
|
139
|
-
|
155
|
+
add_parameters(content_return_url, {
|
156
|
+
return_type: 'image_url',
|
157
|
+
url: url,
|
158
|
+
width: width.to_s,
|
159
|
+
height: height.to_s,
|
160
|
+
alt: alt
|
161
|
+
})
|
140
162
|
end
|
141
163
|
|
142
164
|
#generates the return url for iframe submissions
|
143
165
|
def iframe_content_return_url(url, width, height, title = nil)
|
144
|
-
url = CGI::escape(url)
|
145
|
-
width = CGI::escape(width.to_s)
|
146
|
-
height = CGI::escape(height.to_s)
|
147
166
|
|
148
|
-
return_url =
|
149
|
-
|
167
|
+
return_url = add_parameters(content_return_url, {
|
168
|
+
return_type: 'iframe',
|
169
|
+
url: url,
|
170
|
+
width: width.to_s,
|
171
|
+
height: height.to_s
|
172
|
+
})
|
173
|
+
|
174
|
+
if title
|
175
|
+
return_url = add_parameters(return_url, {
|
176
|
+
title:title
|
177
|
+
})
|
178
|
+
end
|
150
179
|
|
151
180
|
return return_url
|
152
181
|
end
|
153
182
|
|
154
183
|
#generates the return url for oembed submissions
|
155
184
|
def oembed_content_return_url(url, endpoint)
|
156
|
-
url = CGI::escape(url)
|
157
|
-
endpoint = CGI::escape(endpoint)
|
158
185
|
|
159
|
-
|
186
|
+
add_parameters(content_return_url, {
|
187
|
+
return_type: 'oembed',
|
188
|
+
url: url,
|
189
|
+
endpoint: endpoint
|
190
|
+
})
|
191
|
+
end
|
192
|
+
|
193
|
+
private
|
194
|
+
|
195
|
+
# adds parameters to a url, with consideration for
|
196
|
+
# already existing parameters
|
197
|
+
def add_parameters(url, params)
|
198
|
+
parsed = URI.parse(url)
|
199
|
+
query = if parsed.query
|
200
|
+
CGI.parse(parsed.query)
|
201
|
+
else
|
202
|
+
{}
|
203
|
+
end
|
204
|
+
|
205
|
+
query = query.merge(params)
|
206
|
+
|
207
|
+
parsed.query = URI.encode_www_form(query)
|
208
|
+
parsed.to_s
|
160
209
|
end
|
161
210
|
end
|
162
211
|
|
@@ -69,7 +69,8 @@ module IMS::LTI
|
|
69
69
|
|
70
70
|
# check if the consumer accepts a submitted at date as outcome data
|
71
71
|
def accepts_submitted_at?
|
72
|
-
accepted_outcome_types.member?("submitted_at")
|
72
|
+
accepted_outcome_types.member?("submitted_at") ||
|
73
|
+
@ext_params["ext_outcome_submission_submitted_at_accepted"] == "true"
|
73
74
|
end
|
74
75
|
|
75
76
|
def accepts_outcome_lti_launch_url?
|
@@ -80,8 +81,19 @@ module IMS::LTI
|
|
80
81
|
!!@ext_params["outcome_result_total_score_accepted"]
|
81
82
|
end
|
82
83
|
|
84
|
+
def accepts_needs_additional_review?
|
85
|
+
@ext_params["ext_outcome_submission_needs_additional_review_accepted"] == "true"
|
86
|
+
end
|
87
|
+
|
88
|
+
def accepts_prioritize_non_tool_grade?
|
89
|
+
@ext_params["ext_outcome_submission_prioritize_non_tool_grade_accepted"] == "true"
|
90
|
+
end
|
91
|
+
|
83
92
|
# POSTs the given score to the Tool Consumer with a replaceResult and
|
84
|
-
# adds the specified data.
|
93
|
+
# adds the specified data.
|
94
|
+
#
|
95
|
+
# The data hash can have the keys "text", "cdata_text", "url", "submitted_at"
|
96
|
+
# "needs_additional_review", "prioritize_non_tool_grade", or "lti_launch_url"
|
85
97
|
#
|
86
98
|
# If both cdata_text and text are sent, cdata_text will be used
|
87
99
|
#
|
@@ -98,7 +110,8 @@ module IMS::LTI
|
|
98
110
|
|
99
111
|
# POSTs the given score to the Tool Consumer with a replaceResult and
|
100
112
|
# adds the specified data. The options hash can have the keys
|
101
|
-
# :text, :cdata_text, :url, :submitted_at, :lti_launch_url, :score,
|
113
|
+
# :text, :cdata_text, :url, :submitted_at, :lti_launch_url, :score,
|
114
|
+
# :needs_additional_review, or :total_score
|
102
115
|
#
|
103
116
|
# If both cdata_text and text are sent, cdata_text will be used
|
104
117
|
# If both total_score and score are sent, total_score will be used
|
@@ -116,6 +129,8 @@ module IMS::LTI
|
|
116
129
|
req.outcome_text = opts[:text]
|
117
130
|
req.outcome_url = opts[:url]
|
118
131
|
req.submitted_at = opts[:submitted_at]
|
132
|
+
req.needs_additional_review = opts[:needs_additional_review]
|
133
|
+
req.prioritize_non_tool_grade = opts[:prioritize_non_tool_grade]
|
119
134
|
req.outcome_lti_launch_url = opts[:lti_launch_url]
|
120
135
|
req.total_score = opts[:total_score]
|
121
136
|
req.post_replace_result!(opts[:score])
|
@@ -156,7 +171,14 @@ module IMS::LTI
|
|
156
171
|
include IMS::LTI::Extensions::ExtensionBase
|
157
172
|
include Base
|
158
173
|
|
159
|
-
attr_accessor :outcome_text,
|
174
|
+
attr_accessor :outcome_text,
|
175
|
+
:outcome_url,
|
176
|
+
:submitted_at,
|
177
|
+
:outcome_lti_launch_url,
|
178
|
+
:outcome_cdata_text,
|
179
|
+
:total_score,
|
180
|
+
:needs_additional_review,
|
181
|
+
:prioritize_non_tool_grade
|
160
182
|
|
161
183
|
def result_values(node)
|
162
184
|
super
|
@@ -188,7 +210,9 @@ module IMS::LTI
|
|
188
210
|
super
|
189
211
|
return unless has_details_data?
|
190
212
|
|
191
|
-
node.submittedAt submitted_at
|
213
|
+
node.submittedAt submitted_at if submitted_at
|
214
|
+
node.needsAdditionalReview if needs_additional_review
|
215
|
+
node.prioritizeNonToolGrade if prioritize_non_tool_grade
|
192
216
|
end
|
193
217
|
|
194
218
|
def score
|
@@ -200,7 +224,7 @@ module IMS::LTI
|
|
200
224
|
end
|
201
225
|
|
202
226
|
def has_details_data?
|
203
|
-
!!submitted_at
|
227
|
+
!!submitted_at || !!needs_additional_review || !!prioritize_non_tool_grade
|
204
228
|
end
|
205
229
|
|
206
230
|
def extention_process_xml(doc)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ims-lti
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Instructure
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: builder
|
@@ -54,20 +54,20 @@ dependencies:
|
|
54
54
|
name: rspec
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
56
56
|
requirements:
|
57
|
-
- - "
|
57
|
+
- - ">"
|
58
58
|
- !ruby/object:Gem::Version
|
59
59
|
version: '3.0'
|
60
|
-
- - "
|
60
|
+
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '3.0'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - "
|
67
|
+
- - ">"
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '3.0'
|
70
|
-
- - "
|
70
|
+
- - "~>"
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: '3.0'
|
73
73
|
description:
|
@@ -115,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '0'
|
117
117
|
requirements: []
|
118
|
-
rubygems_version: 3.1
|
118
|
+
rubygems_version: 3.0.3.1
|
119
119
|
signing_key:
|
120
120
|
specification_version: 4
|
121
121
|
summary: Ruby library for creating IMS LTI tool providers and consumers
|