Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
9a0d9f70
Commit
9a0d9f70
authored
Sep 02, 2014
by
Alexander Kryklia
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4501 from htareque/lti_revision_3
username and email request for lti module
parents
c7d41833
3f159ea5
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
65 additions
and
1 deletions
+65
-1
common/lib/xmodule/xmodule/css/lti/lti.scss
+4
-0
common/lib/xmodule/xmodule/lti_module.py
+54
-0
lms/djangoapps/courseware/tests/test_lti_integration.py
+3
-0
lms/templates/lti.html
+4
-1
No files found.
common/lib/xmodule/xmodule/css/lti/lti.scss
View file @
9a0d9f70
...
...
@@ -34,6 +34,10 @@ div.lti {
}
}
div
.ltiTextBox
{
width
:
280px
;
}
form
.ltiLaunchForm
{
display
:
none
;
}
...
...
common/lib/xmodule/xmodule/lti_module.py
View file @
9a0d9f70
...
...
@@ -191,6 +191,35 @@ class LTIFields(object):
default
=
False
,
scope
=
Scope
.
settings
)
"""
Users will be presented with a message indicating that their e-mail/username would be sent to a third
party application. When "Open in new Page" is not selected, the tool automatically appears without any user action.
"""
request_username
=
Boolean
(
display_name
=
_
(
"Request user's username"
),
help
=
_
(
"Requesting user's username will only work if 'Open in a new page' is set to True"
),
default
=
False
,
scope
=
Scope
.
settings
)
request_email
=
Boolean
(
display_name
=
_
(
"Request user's email"
),
help
=
_
(
"Requesting user's email will only work if 'Open in a new page' is set to True"
),
default
=
False
,
scope
=
Scope
.
settings
)
text_box
=
String
(
display_name
=
_
(
"LTI Application Information"
),
help
=
_
(
"Provide a description of the third party application. If requesting username and/or email, use this text box to inform users "
"that their username and/or email will be forwarded to a third party application."
),
default
=
""
,
scope
=
Scope
.
settings
)
class
LTIModule
(
LTIFields
,
LTI20ModuleMixin
,
XModule
):
...
...
@@ -317,6 +346,7 @@ class LTIModule(LTIFields, LTI20ModuleMixin, XModule):
# parsing custom parameters to dict
custom_parameters
=
{}
for
custom_parameter
in
self
.
custom_parameters
:
try
:
param_name
,
param_value
=
[
p
.
strip
()
for
p
in
custom_parameter
.
split
(
'='
,
1
)]
...
...
@@ -370,6 +400,10 @@ class LTIModule(LTIFields, LTI20ModuleMixin, XModule):
'weight'
:
self
.
weight
,
'module_score'
:
self
.
module_score
,
'comment'
:
sanitized_comment
,
'text_box'
:
self
.
text_box
,
'request_username'
:
self
.
request_username
,
'request_email'
:
self
.
request_email
,
}
def
get_html
(
self
):
...
...
@@ -516,6 +550,26 @@ class LTIModule(LTIFields, LTI20ModuleMixin, XModule):
u'lis_outcome_service_url'
:
self
.
get_outcome_service_url
()
})
self
.
user_email
=
""
self
.
user_username
=
""
# Username and email can't be sent in studio mode, because the user object is not defined.
# To test functionality test in LMS
if
self
.
runtime
.
get_real_user
is
not
None
:
real_user_object
=
self
.
runtime
.
get_real_user
(
self
.
runtime
.
anonymous_student_id
)
self
.
user_email
=
real_user_object
.
email
self
.
user_username
=
real_user_object
.
username
if
self
.
request_username
and
self
.
user_username
and
self
.
open_in_a_new_page
:
body
.
update
({
u'lis_person_sourcedid'
:
self
.
user_username
})
if
self
.
request_email
and
self
.
user_email
and
self
.
open_in_a_new_page
:
body
.
update
({
u'lis_person_contact_email_primary'
:
self
.
user_email
})
# Appending custom parameter for signing.
body
.
update
(
custom_parameters
)
...
...
lms/djangoapps/courseware/tests/test_lti_integration.py
View file @
9a0d9f70
...
...
@@ -89,6 +89,9 @@ class TestLTI(BaseTestXmodule):
'module_score'
:
None
,
'comment'
:
u''
,
'weight'
:
1.0
,
'request_username'
:
self
.
item_descriptor
.
request_username
,
'request_email'
:
self
.
item_descriptor
.
request_email
,
'text_box'
:
self
.
item_descriptor
.
text_box
,
}
def
mocked_sign
(
self
,
*
args
,
**
kwargs
):
...
...
lms/templates/lti.html
View file @
9a0d9f70
...
...
@@ -26,6 +26,9 @@
% if launch_url and launch_url != 'http://www.example.com' and not hide_launch:
% if open_in_a_new_page:
<div
class=
"wrapper-lti-link"
>
<div
class=
"ltiTextBox"
>
<span>
${text_box}
</span>
</div>
<p
class=
"lti-link external"
><a
target=
"_blank"
class=
"link_lti_new_window"
href=
"${form_url}"
>
${_('View resource in a new window')}
<i
class=
"icon-external-link"
></i>
...
...
@@ -43,7 +46,7 @@
<h3
class=
"error_message"
>
${_('Please provide launch_url. Click "Edit", and fill in the required fields.')}
</h3>
%endif
%
endif
% if has_score and comment:
<h4
class=
"problem-feedback-label"
>
${_("Feedback on your work from the grader:")}
</h4>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment