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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 224820ab40ce08a13bfda880f3107740a2b46cd31f672719b72d1d8e8cf3cc50
4
- data.tar.gz: b0c4c73930312bd6a27c7d6c8ea74b9dd33d83fd8cf8d240db14ea2b3e27e29f
3
+ metadata.gz: 29574604b1d50bb3ad7a18357c73989e650cc7eaee9693115661f4b1fba01369
4
+ data.tar.gz: 7d3ce283cf78880097a4803f35ef96f0e2cdea74d49e17a6b45982b9f5171390
5
5
  SHA512:
6
- metadata.gz: 4d787b098d9fe7b9dba586cf77eff9d3a76cb31697685f29d5cd9f8add1d2950a8ac55385d1419a27559e688f1629f11ce33e394bb24191e447d6876a3b692fd
7
- data.tar.gz: 4f0b4d72b52cd2ad3b936da67d64709734194c6dd321f4883b91131a8625e33193b40ed804d3ea1d633bf254fb3c9656829d04450ad26ca250899dfaf43799de
6
+ metadata.gz: 8effe8dd1fe14c17dd01a41c4f3c719a0201717d72b244b5d181df53df0de9ec13bec6bed53f1f9aa873c2cb9ada99dfad4eadc94818003610a287a56d8884f1
7
+ data.tar.gz: a738260e51baa9a6a61db871ad3807e73dbf3918e1fd45da1cf27d6be0fd61bdf8e597579f8ac68c639936c848bb5d676dddacd7d592f784e1051bc9db2aa7d0
data/Changelog CHANGED
@@ -1,4 +1,4 @@
1
- 2020-02-03 Version 1.2.3
1
+ 2020-02-03 Version 1.2.4
2
2
  * Add support for submittedAt date
3
3
 
4
4
  2017-03-08 Version 1.2.0
@@ -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 = "#{content_return_url}?return_type=file&url=#{url}&text=#{text}"
104
- return_url = "#{return_url}&content_type=#{content_type}" if content_type
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 = "#{content_return_url}?return_type=url&url=#{url}&text=#{text}&target=#{target}"
116
- return_url = "#{return_url}&title=#{CGI::escape(title)}" if title
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 = "#{content_return_url}?return_type=lti_launch_url&url=#{url}&text=#{text}"
127
- return_url = "#{return_url}&title=#{CGI::escape(title)}" if title
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
- "#{content_return_url}?return_type=image_url&url=#{url}&width=#{width}&height=#{height}&alt=#{alt}"
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 = "#{content_return_url}?return_type=iframe&url=#{url}&width=#{width}&height=#{height}"
149
- return_url = "#{return_url}&title=#{CGI::escape(title)}" if title
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
- "#{content_return_url}?return_type=oembed&url=#{url}&endpoint=#{endpoint}"
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. The data hash can have the keys "text", "cdata_text", "url", "submitted_at" or "lti_launch_url"
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, or :total_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, :outcome_url, :submitted_at, :outcome_lti_launch_url, :outcome_cdata_text, :total_score
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
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: 2020-02-07 00:00:00.000000000 Z
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.2
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