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
56055cc4
Commit
56055cc4
authored
Jun 24, 2016
by
Douglas Hall
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release' into douglashall/merge_patch_2016_06_22_to_master
parents
d794fc5c
1fcf32cf
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
80 additions
and
141 deletions
+80
-141
common/djangoapps/student/forms.py
+1
-1
common/djangoapps/student/tests/test_email.py
+2
-2
common/djangoapps/student/tests/test_reset_password.py
+1
-1
common/djangoapps/student/views.py
+4
-4
common/lib/xmodule/xmodule/css/video/display.scss
+0
-2
common/lib/xmodule/xmodule/js/fixtures/video_yt_multiple.html
+3
-6
common/lib/xmodule/xmodule/js/karma_xmodule.conf.js
+4
-5
common/lib/xmodule/xmodule/js/spec/main_requirejs.js
+4
-36
common/lib/xmodule/xmodule/js/spec/video/video_caption_spec.js
+1
-3
common/lib/xmodule/xmodule/js/spec/video/video_speed_control_spec.js
+6
-8
common/lib/xmodule/xmodule/js/src/video/08_video_speed_control.js
+20
-59
common/lib/xmodule/xmodule/js/src/video/09_video_caption.js
+0
-0
lms/djangoapps/bulk_email/tasks.py
+1
-1
lms/templates/emails/activation_email.txt
+6
-3
lms/templates/emails/activation_email_subject.txt
+4
-1
lms/templates/emails/confirm_email_change.txt
+8
-3
lms/templates/emails/email_change.txt
+8
-2
lms/templates/emails/email_change_subject.txt
+4
-1
openedx/core/djangoapps/credit/email_utils.py
+1
-1
openedx/core/djangoapps/user_api/accounts/api.py
+1
-1
requirements/edx/github.txt
+1
-1
No files found.
common/djangoapps/student/forms.py
View file @
56055cc4
...
@@ -58,7 +58,7 @@ class PasswordResetFormNoActive(PasswordResetForm):
...
@@ -58,7 +58,7 @@ class PasswordResetFormNoActive(PasswordResetForm):
email_template_name
=
'registration/password_reset_email.html'
,
email_template_name
=
'registration/password_reset_email.html'
,
use_https
=
False
,
use_https
=
False
,
token_generator
=
default_token_generator
,
token_generator
=
default_token_generator
,
from_email
=
theming_helpers
.
get_value
(
'
default_from_email
'
,
settings
.
DEFAULT_FROM_EMAIL
),
from_email
=
theming_helpers
.
get_value
(
'
email_from_address
'
,
settings
.
DEFAULT_FROM_EMAIL
),
request
=
None
request
=
None
):
):
"""
"""
...
...
common/djangoapps/student/tests/test_email.py
View file @
56055cc4
...
@@ -57,7 +57,7 @@ class EmailTestMixin(object):
...
@@ -57,7 +57,7 @@ class EmailTestMixin(object):
email_user
.
assert_called_with
(
email_user
.
assert_called_with
(
mock_render_to_string
(
subject_template
,
subject_context
),
mock_render_to_string
(
subject_template
,
subject_context
),
mock_render_to_string
(
body_template
,
body_context
),
mock_render_to_string
(
body_template
,
body_context
),
theming_helpers
.
get_value
(
'
default_from_email
'
,
settings
.
DEFAULT_FROM_EMAIL
)
theming_helpers
.
get_value
(
'
email_from_address
'
,
settings
.
DEFAULT_FROM_EMAIL
)
)
)
def
append_allowed_hosts
(
self
,
hostname
):
def
append_allowed_hosts
(
self
,
hostname
):
...
@@ -298,7 +298,7 @@ class EmailChangeRequestTests(EventTestMixin, TestCase):
...
@@ -298,7 +298,7 @@ class EmailChangeRequestTests(EventTestMixin, TestCase):
send_mail
.
assert_called_with
(
send_mail
.
assert_called_with
(
mock_render_to_string
(
'emails/email_change_subject.txt'
,
context
),
mock_render_to_string
(
'emails/email_change_subject.txt'
,
context
),
mock_render_to_string
(
'emails/email_change.txt'
,
context
),
mock_render_to_string
(
'emails/email_change.txt'
,
context
),
theming_helpers
.
get_value
(
'
default_from_email
'
,
settings
.
DEFAULT_FROM_EMAIL
),
theming_helpers
.
get_value
(
'
email_from_address
'
,
settings
.
DEFAULT_FROM_EMAIL
),
[
new_email
]
[
new_email
]
)
)
self
.
assert_event_emitted
(
self
.
assert_event_emitted
(
...
...
common/djangoapps/student/tests/test_reset_password.py
View file @
56055cc4
...
@@ -125,7 +125,7 @@ class ResetPasswordTests(EventTestMixin, CacheIsolationTestCase):
...
@@ -125,7 +125,7 @@ class ResetPasswordTests(EventTestMixin, CacheIsolationTestCase):
(
subject
,
msg
,
from_addr
,
to_addrs
)
=
send_email
.
call_args
[
0
]
(
subject
,
msg
,
from_addr
,
to_addrs
)
=
send_email
.
call_args
[
0
]
self
.
assertIn
(
"Password reset"
,
subject
)
self
.
assertIn
(
"Password reset"
,
subject
)
self
.
assertIn
(
"You're receiving this e-mail because you requested a password reset"
,
msg
)
self
.
assertIn
(
"You're receiving this e-mail because you requested a password reset"
,
msg
)
self
.
assertEquals
(
from_addr
,
theming_helpers
.
get_value
(
'
default_from_email
'
,
settings
.
DEFAULT_FROM_EMAIL
))
self
.
assertEquals
(
from_addr
,
theming_helpers
.
get_value
(
'
email_from_address
'
,
settings
.
DEFAULT_FROM_EMAIL
))
self
.
assertEquals
(
len
(
to_addrs
),
1
)
self
.
assertEquals
(
len
(
to_addrs
),
1
)
self
.
assertIn
(
self
.
user
.
email
,
to_addrs
)
self
.
assertIn
(
self
.
user
.
email
,
to_addrs
)
...
...
common/djangoapps/student/views.py
View file @
56055cc4
...
@@ -2229,11 +2229,11 @@ def reactivation_email_for_user(user):
...
@@ -2229,11 +2229,11 @@ def reactivation_email_for_user(user):
message
=
render_to_string
(
'emails/activation_email.txt'
,
context
)
message
=
render_to_string
(
'emails/activation_email.txt'
,
context
)
try
:
try
:
user
.
email_user
(
subject
,
message
,
theming_helpers
.
get_value
(
'
default_from_email
'
,
settings
.
DEFAULT_FROM_EMAIL
))
user
.
email_user
(
subject
,
message
,
theming_helpers
.
get_value
(
'
email_from_address
'
,
settings
.
DEFAULT_FROM_EMAIL
))
except
Exception
:
# pylint: disable=broad-except
except
Exception
:
# pylint: disable=broad-except
log
.
error
(
log
.
error
(
u'Unable to send reactivation email from "
%
s"'
,
u'Unable to send reactivation email from "
%
s"'
,
theming_helpers
.
get_value
(
'
default_from_email
'
,
settings
.
DEFAULT_FROM_EMAIL
),
theming_helpers
.
get_value
(
'
email_from_address
'
,
settings
.
DEFAULT_FROM_EMAIL
),
exc_info
=
True
exc_info
=
True
)
)
return
JsonResponse
({
return
JsonResponse
({
...
@@ -2357,7 +2357,7 @@ def confirm_email_change(request, key): # pylint: disable=unused-argument
...
@@ -2357,7 +2357,7 @@ def confirm_email_change(request, key): # pylint: disable=unused-argument
user
.
email_user
(
user
.
email_user
(
subject
,
subject
,
message
,
message
,
theming_helpers
.
get_value
(
'
default_from_email
'
,
settings
.
DEFAULT_FROM_EMAIL
)
theming_helpers
.
get_value
(
'
email_from_address
'
,
settings
.
DEFAULT_FROM_EMAIL
)
)
)
except
Exception
:
# pylint: disable=broad-except
except
Exception
:
# pylint: disable=broad-except
log
.
warning
(
'Unable to send confirmation email to old address'
,
exc_info
=
True
)
log
.
warning
(
'Unable to send confirmation email to old address'
,
exc_info
=
True
)
...
@@ -2373,7 +2373,7 @@ def confirm_email_change(request, key): # pylint: disable=unused-argument
...
@@ -2373,7 +2373,7 @@ def confirm_email_change(request, key): # pylint: disable=unused-argument
user
.
email_user
(
user
.
email_user
(
subject
,
subject
,
message
,
message
,
theming_helpers
.
get_value
(
'
default_from_email
'
,
settings
.
DEFAULT_FROM_EMAIL
)
theming_helpers
.
get_value
(
'
email_from_address
'
,
settings
.
DEFAULT_FROM_EMAIL
)
)
)
except
Exception
:
# pylint: disable=broad-except
except
Exception
:
# pylint: disable=broad-except
log
.
warning
(
'Unable to send confirmation email to new address'
,
exc_info
=
True
)
log
.
warning
(
'Unable to send confirmation email to new address'
,
exc_info
=
True
)
...
...
common/lib/xmodule/xmodule/css/video/display.scss
View file @
56055cc4
...
@@ -535,8 +535,6 @@
...
@@ -535,8 +535,6 @@
.speed-option
,
.speed-option
,
.control-lang
{
.control-lang
{
@include
border-left
(
$baseline
/
10
solid
rgb
(
14
,
166
,
236
));
font-weight
:
$font-bold
;
color
:
rgb
(
14
,
166
,
236
);
// UXPL primary accent
color
:
rgb
(
14
,
166
,
236
);
// UXPL primary accent
}
}
}
}
...
...
common/lib/xmodule/xmodule/js/fixtures/video_yt_multiple.html
View file @
56055cc4
...
@@ -55,9 +55,8 @@
...
@@ -55,9 +55,8 @@
</div>
</div>
</section>
</section>
</article>
</article>
<div
class=
"subtitles"
>
<ol
class=
"subtitles-menu"
><li></li></ol>
<ol
class=
"subtitles"
><li></li></ol>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -109,9 +108,7 @@
...
@@ -109,9 +108,7 @@
</section>
</section>
</article>
</article>
<div
class=
"subtitles"
>
<ol
class=
"subtitles"
><li></li></ol>
<ol
class=
"subtitles-menu"
><li></li></ol>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
...
common/lib/xmodule/xmodule/js/karma_xmodule.conf.js
View file @
56055cc4
...
@@ -20,10 +20,12 @@ var options = {
...
@@ -20,10 +20,12 @@ var options = {
libraryFilesToInclude
:
[
libraryFilesToInclude
:
[
{
pattern
:
'common_static/js/vendor/requirejs/require.js'
,
included
:
true
},
{
pattern
:
'common_static/js/vendor/requirejs/require.js'
,
included
:
true
},
{
pattern
:
'RequireJS-namespace-undefine.js'
,
included
:
true
},
{
pattern
:
'RequireJS-namespace-undefine.js'
,
included
:
true
},
{
pattern
:
'spec/main_requirejs.js'
,
included
:
true
},
{
pattern
:
'common_static/coffee/src/ajax_prefix.js'
,
included
:
true
},
{
pattern
:
'common_static/coffee/src/ajax_prefix.js'
,
included
:
true
},
{
pattern
:
'common_static/common/js/vendor/underscore.js'
,
included
:
true
},
{
pattern
:
'common_static/common/js/vendor/underscore.js'
,
included
:
true
},
{
pattern
:
'common_static/common/js/vendor/backbone.js'
,
included
:
true
},
{
pattern
:
'common_static/common/js/vendor/backbone.js'
,
included
:
true
},
{
pattern
:
'common_static/edx-ui-toolkit/js/utils/global-loader.js'
,
included
:
true
},
{
pattern
:
'common_static/js/vendor/CodeMirror/codemirror.js'
,
included
:
true
},
{
pattern
:
'common_static/js/vendor/CodeMirror/codemirror.js'
,
included
:
true
},
{
pattern
:
'common_static/js/vendor/draggabilly.js'
},
{
pattern
:
'common_static/js/vendor/draggabilly.js'
},
{
pattern
:
'common_static/common/js/vendor/jquery.js'
,
included
:
true
},
{
pattern
:
'common_static/common/js/vendor/jquery.js'
,
included
:
true
},
...
@@ -48,14 +50,11 @@ var options = {
...
@@ -48,14 +50,11 @@ var options = {
{
pattern
:
'common_static/js/vendor/jasmine-imagediff.js'
,
included
:
true
},
{
pattern
:
'common_static/js/vendor/jasmine-imagediff.js'
,
included
:
true
},
{
pattern
:
'common_static/common/js/spec_helpers/jasmine-waituntil.js'
,
included
:
true
},
{
pattern
:
'common_static/common/js/spec_helpers/jasmine-waituntil.js'
,
included
:
true
},
{
pattern
:
'common_static/common/js/spec_helpers/jasmine-extensions.js'
,
included
:
true
},
{
pattern
:
'common_static/common/js/spec_helpers/jasmine-extensions.js'
,
included
:
true
},
{
pattern
:
'common_static/js/vendor/sinon-1.17.0.js'
,
included
:
true
},
{
pattern
:
'common_static/js/vendor/sinon-1.17.0.js'
,
included
:
true
}
{
pattern
:
'spec/main_requirejs.js'
,
included
:
true
},
],
],
libraryFiles
:
[
libraryFiles
:
[
{
pattern
:
'common_static/edx-pattern-library/js/**/*.js'
},
{
pattern
:
'common_static/edx-pattern-library/js/**/*.js'
}
{
pattern
:
'common_static/edx-ui-toolkit/js/**/*.js'
}
],
],
// Make sure the patterns in sourceFiles and specFiles do not match the same file.
// Make sure the patterns in sourceFiles and specFiles do not match the same file.
...
...
common/lib/xmodule/xmodule/js/spec/main_requirejs.js
View file @
56055cc4
(
function
(
requirejs
,
define
)
{
(
function
(
requirejs
)
{
'use strict'
;
// We do not wish to bundle common libraries (that may also be used by non-RequireJS code on the page
// into the optimized files. Therefore load these libraries through script tags and explicitly define them.
// Note that when the optimizer executes this code, window will not be defined.
if
(
window
)
{
var
defineDependency
=
function
(
globalName
,
name
,
noShim
)
{
var
getGlobalValue
=
function
(
name
)
{
var
globalNamePath
=
name
.
split
(
'.'
),
result
=
window
,
i
;
for
(
i
=
0
;
i
<
globalNamePath
.
length
;
i
++
)
{
result
=
result
[
globalNamePath
[
i
]];
}
return
result
;
},
globalValue
=
getGlobalValue
(
globalName
);
if
(
globalValue
)
{
if
(
noShim
)
{
define
(
name
,
{});
}
else
{
define
(
name
,
[],
function
()
{
return
globalValue
;
});
}
}
else
{
console
.
error
(
"Expected library to be included on page, but not found on window object: "
+
name
);
}
};
defineDependency
(
"jQuery"
,
"jquery"
);
defineDependency
(
"jQuery"
,
"jquery-migrate"
);
defineDependency
(
"_"
,
"underscore"
);
}
requirejs
.
config
({
requirejs
.
config
({
baseUrl
:
'/base/'
,
baseUrl
:
'/base/'
,
paths
:
{
paths
:
{
...
@@ -38,8 +6,7 @@
...
@@ -38,8 +6,7 @@
"modernizr"
:
"common_static/edx-pattern-library/js/modernizr-custom"
,
"modernizr"
:
"common_static/edx-pattern-library/js/modernizr-custom"
,
"afontgarde"
:
"common_static/edx-pattern-library/js/afontgarde"
,
"afontgarde"
:
"common_static/edx-pattern-library/js/afontgarde"
,
"edxicons"
:
"common_static/edx-pattern-library/js/edx-icons"
,
"edxicons"
:
"common_static/edx-pattern-library/js/edx-icons"
,
"draggabilly"
:
"common_static/js/vendor/draggabilly"
,
"draggabilly"
:
"common_static/js/vendor/draggabilly"
'edx-ui-toolkit'
:
'common_static/edx-ui-toolkit'
},
},
"moment"
:
{
"moment"
:
{
exports
:
"moment"
exports
:
"moment"
...
@@ -51,4 +18,5 @@
...
@@ -51,4 +18,5 @@
exports
:
"AFontGarde"
exports
:
"AFontGarde"
}
}
});
});
}).
call
(
this
,
RequireJS
.
requirejs
,
RequireJS
.
define
);
}).
call
(
this
,
RequireJS
.
requirejs
);
common/lib/xmodule/xmodule/js/spec/video/video_caption_spec.js
View file @
56055cc4
...
@@ -266,7 +266,6 @@
...
@@ -266,7 +266,6 @@
expect
(
$
(
'.closed-captions'
)).
toHaveAttrs
({
expect
(
$
(
'.closed-captions'
)).
toHaveAttrs
({
'lang'
:
'de'
'lang'
:
'de'
});
});
expect
(
link
).
toHaveAttr
(
'aria-pressed'
,
'true'
);
});
});
it
(
'when clicking on link with current language'
,
function
()
{
it
(
'when clicking on link with current language'
,
function
()
{
...
@@ -285,7 +284,6 @@
...
@@ -285,7 +284,6 @@
expect
(
state
.
storage
.
setItem
)
expect
(
state
.
storage
.
setItem
)
.
not
.
toHaveBeenCalledWith
(
'language'
,
'en'
);
.
not
.
toHaveBeenCalledWith
(
'language'
,
'en'
);
expect
(
$
(
'.langs-list li.is-active'
).
length
).
toBe
(
1
);
expect
(
$
(
'.langs-list li.is-active'
).
length
).
toBe
(
1
);
expect
(
link
).
toHaveAttr
(
'aria-pressed'
,
'true'
);
});
});
it
(
'open the language toggle on hover'
,
function
()
{
it
(
'open the language toggle on hover'
,
function
()
{
...
@@ -415,7 +413,7 @@
...
@@ -415,7 +413,7 @@
});
});
it
(
'show explanation message'
,
function
()
{
it
(
'show explanation message'
,
function
()
{
expect
(
$
(
'.subtitles
.subtitles
-menu li'
)).
toHaveText
(
expect
(
$
(
'.subtitles-menu li'
)).
toHaveText
(
'Transcript will be displayed when you start playing the video.'
'Transcript will be displayed when you start playing the video.'
);
);
});
});
...
...
common/lib/xmodule/xmodule/js/spec/video/video_speed_control_spec.js
View file @
56055cc4
...
@@ -203,18 +203,16 @@
...
@@ -203,18 +203,16 @@
describe
(
'onSpeedChange'
,
function
()
{
describe
(
'onSpeedChange'
,
function
()
{
beforeEach
(
function
()
{
beforeEach
(
function
()
{
state
=
jasmine
.
initializePlayer
();
state
=
jasmine
.
initializePlayer
();
$
(
'li[data-speed="1.0"]'
).
addClass
(
'is-active'
)
.
attr
(
'aria-pressed'
,
'true'
)
;
$
(
'li[data-speed="1.0"]'
).
addClass
(
'is-active'
);
state
.
videoSpeedControl
.
setSpeed
(
0.75
);
state
.
videoSpeedControl
.
setSpeed
(
0.75
);
});
});
it
(
'set the new speed as active'
,
function
()
{
it
(
'set the new speed as active'
,
function
()
{
expect
(
$
(
'li[data-speed="1.0"]'
)).
not
.
toHaveClass
(
'is-active'
);
expect
(
$
(
'.video-speeds li[data-speed="1.0"]'
))
expect
(
$
(
'li[data-speed="1.0"] .speed-option'
).
attr
(
'aria-pressed'
)).
not
.
toEqual
(
'true'
);
.
not
.
toHaveClass
(
'is-active'
);
expect
(
$
(
'.video-speeds li[data-speed="0.75"]'
))
expect
(
$
(
'li[data-speed="0.75"]'
)).
toHaveClass
(
'is-active'
);
.
toHaveClass
(
'is-active'
);
expect
(
$
(
'li[data-speed="0.75"] .speed-option'
).
attr
(
'aria-pressed'
)).
toEqual
(
'true'
);
expect
(
$
(
'.speeds .value'
)).
toHaveHtml
(
'0.75x'
);
expect
(
$
(
'.speeds .speed-button .value'
)).
toHaveHtml
(
'0.75x'
);
});
});
});
});
...
...
common/lib/xmodule/xmodule/js/src/video/08_video_speed_control.js
View file @
56055cc4
(
function
(
requirejs
,
require
,
define
)
{
(
function
(
requirejs
,
require
,
define
)
{
"use strict"
;
"use strict"
;
define
(
define
(
'video/08_video_speed_control.js'
,
[
'video/08_video_speed_control.js'
,
'video/00_iterator.js'
,
[
'video/00_iterator.js'
],
'edx-ui-toolkit/js/utils/html-utils'
function
(
Iterator
)
{
],
function
(
Iterator
,
HtmlUtils
)
{
/**
/**
* Video speed control module.
* Video speed control module.
* @exports video/08_video_speed_control.js
* @exports video/08_video_speed_control.js
...
@@ -96,37 +95,23 @@ define(
...
@@ -96,37 +95,23 @@ define(
* Creates any necessary DOM elements, attach them, and set their,
* Creates any necessary DOM elements, attach them, and set their,
* initial configuration.
* initial configuration.
* @param {array} speeds List of speeds available for the player.
* @param {array} speeds List of speeds available for the player.
* @param {string} currentSpeed The current speed set to the player.
*/
*/
render
:
function
(
speeds
,
currentSpeed
)
{
render
:
function
(
speeds
)
{
var
speedsContainer
=
this
.
speedsContainer
,
var
speedsContainer
=
this
.
speedsContainer
,
reversedSpeeds
=
speeds
.
concat
().
reverse
(),
reversedSpeeds
=
speeds
.
concat
().
reverse
(),
speedsList
=
$
.
map
(
reversedSpeeds
,
function
(
speed
)
{
speedsList
=
$
.
map
(
reversedSpeeds
,
function
(
speed
)
{
return
HtmlUtils
.
interpolateHtml
(
return
[
HtmlUtils
.
joinHtml
(
'<li data-speed="'
,
speed
,
'">'
,
HtmlUtils
.
HTML
(
'<li data-speed="{speed}">'
),
'<button class="control speed-option" tabindex="-1">'
,
HtmlUtils
.
HTML
(
'<button class="control speed-option" tabindex="-1" aria-pressed="false">'
),
speed
,
'x'
,
HtmlUtils
.
HTML
(
speed
),
'</button>'
,
HtmlUtils
.
HTML
(
'x'
),
'</li>'
HtmlUtils
.
HTML
(
'</button>'
),
].
join
(
''
);
HtmlUtils
.
HTML
(
'</li>'
)
),
{
speed
:
speed
}
).
toString
();
});
});
HtmlUtils
.
setHtml
(
speedsContainer
.
html
(
speedsList
.
join
(
''
));
speedsContainer
,
HtmlUtils
.
HTML
(
speedsList
)
);
this
.
speedLinks
=
new
Iterator
(
speedsContainer
.
find
(
'.speed-option'
));
this
.
speedLinks
=
new
Iterator
(
speedsContainer
.
find
(
'.speed-option'
));
HtmlUtils
.
prepend
(
this
.
state
.
el
.
find
(
'.secondary-controls'
).
prepend
(
this
.
el
);
this
.
state
.
el
.
find
(
'.secondary-controls'
),
HtmlUtils
.
HTML
(
this
.
el
)
);
this
.
setActiveSpeed
(
currentSpeed
);
},
},
/**
/**
...
@@ -231,38 +216,17 @@ define(
...
@@ -231,38 +216,17 @@ define(
if
(
speed
!==
this
.
currentSpeed
||
forceUpdate
)
{
if
(
speed
!==
this
.
currentSpeed
||
forceUpdate
)
{
this
.
speedsContainer
this
.
speedsContainer
.
find
(
'li'
)
.
find
(
'li'
)
.
siblings
(
"li[data-speed='"
+
speed
+
"']"
);
.
removeClass
(
'is-active'
)
.
siblings
(
"li[data-speed='"
+
speed
+
"']"
)
.
addClass
(
'is-active'
);
this
.
speedButton
.
find
(
'.value'
).
text
(
speed
+
'x'
);
this
.
speedButton
.
find
(
'.value'
).
html
(
speed
+
'x'
);
this
.
currentSpeed
=
speed
;
this
.
currentSpeed
=
speed
;
if
(
!
silent
)
{
if
(
!
silent
)
{
this
.
el
.
trigger
(
'speedchange'
,
[
speed
,
this
.
state
.
speed
]);
this
.
el
.
trigger
(
'speedchange'
,
[
speed
,
this
.
state
.
speed
]);
}
}
}
}
this
.
resetActiveSpeed
();
this
.
setActiveSpeed
(
speed
);
},
resetActiveSpeed
:
function
()
{
var
speedOptions
=
this
.
speedsContainer
.
find
(
'li'
);
$
(
speedOptions
).
each
(
function
(
index
,
el
)
{
$
(
el
).
removeClass
(
'is-active'
)
.
find
(
'.speed-option'
)
.
attr
(
'aria-pressed'
,
'false'
);
});
},
setActiveSpeed
:
function
(
speed
)
{
var
speedOption
=
this
.
speedsContainer
.
find
(
'li[data-speed="'
+
speed
+
'"]'
);
speedOption
.
addClass
(
'is-active'
)
.
find
(
'.speed-option'
)
.
attr
(
'aria-pressed'
,
'true'
);
this
.
speedButton
.
attr
(
'title'
,
gettext
(
'Video speed: '
)
+
speed
+
'x'
);
},
},
/**
/**
...
@@ -280,13 +244,10 @@ define(
...
@@ -280,13 +244,10 @@ define(
* @param {jquery Event} event
* @param {jquery Event} event
*/
*/
clickLinkHandler
:
function
(
event
)
{
clickLinkHandler
:
function
(
event
)
{
var
el
=
$
(
event
.
currentTarget
).
parent
(),
var
speed
=
$
(
event
.
currentTarget
).
parent
().
data
(
'speed'
);
speed
=
$
(
el
).
data
(
'speed'
);
this
.
closeMenu
();
this
.
resetActiveSpeed
();
this
.
setActiveSpeed
(
speed
);
this
.
state
.
videoCommands
.
execute
(
'speed'
,
speed
);
this
.
state
.
videoCommands
.
execute
(
'speed'
,
speed
);
this
.
closeMenu
(
true
);
return
false
;
return
false
;
},
},
...
...
common/lib/xmodule/xmodule/js/src/video/09_video_caption.js
View file @
56055cc4
This diff is collapsed.
Click to expand it.
lms/djangoapps/bulk_email/tasks.py
View file @
56055cc4
...
@@ -389,7 +389,7 @@ def _get_source_address(course_id, course_title, truncate=True):
...
@@ -389,7 +389,7 @@ def _get_source_address(course_id, course_title, truncate=True):
course_title
=
course_title_no_quotes
,
course_title
=
course_title_no_quotes
,
course_name
=
course_name
,
course_name
=
course_name
,
from_email
=
theming_helpers
.
get_value
(
from_email
=
theming_helpers
.
get_value
(
'
bulk_email_default_from_email
'
,
'
email_from_address
'
,
settings
.
BULK_EMAIL_DEFAULT_FROM_EMAIL
settings
.
BULK_EMAIL_DEFAULT_FROM_EMAIL
)
)
)
)
...
...
lms/templates/emails/activation_email.txt
View file @
56055cc4
<%! from django.utils.translation import ugettext as _ %>
<%! from django.utils.translation import ugettext as _ %>
${_("Thank you for signing up for {platform_name}.").format(platform_name=settings.PLATFORM_NAME)}
<%! from openedx.core.djangoapps.theming.helpers import get_value as get_themed_value %>
${_("Thank you for signing up for {platform_name}.").format(
platform_name=get_themed_value('PLATFORM_NAME', settings.PLATFORM_NAME)
)}
${_("Change your life and start learning today by activating your "
${_("Change your life and start learning today by activating your "
"{platform_name} account. Click on the link below or copy and "
"{platform_name} account. Click on the link below or copy and "
"paste it into your browser's address bar.").format(
"paste it into your browser's address bar.").format(
platform_name=settings.PLATFORM_NAME
platform_name=get_themed_value('PLATFORM_NAME', settings.PLATFORM_NAME)
)}
)}
% if is_secure:
% if is_secure:
...
@@ -15,4 +18,4 @@ ${_("Change your life and start learning today by activating your "
...
@@ -15,4 +18,4 @@ ${_("Change your life and start learning today by activating your "
${_("If you didn't request this, you don't need to do anything; you won't "
${_("If you didn't request this, you don't need to do anything; you won't "
"receive any more email from us. Please do not reply to this e-mail; "
"receive any more email from us. Please do not reply to this e-mail; "
"if you require assistance, check the help section of the "
"if you require assistance, check the help section of the "
"{platform_name} website.").format(platform_name=
settings.PLATFORM_NAME
)}
"{platform_name} website.").format(platform_name=
get_themed_value('PLATFORM_NAME', settings.PLATFORM_NAME)
)}
lms/templates/emails/activation_email_subject.txt
View file @
56055cc4
<%! from django.utils.translation import ugettext as _ %>
<%! from django.utils.translation import ugettext as _ %>
<%! from openedx.core.djangoapps.theming.helpers import get_value as get_themed_value %>
${_("Activate Your {platform_name} Account").format(platform_name=settings.PLATFORM_NAME)}
${_("Activate Your {platform_name} Account").format(
platform_name=get_themed_value('PLATFORM_NAME', settings.PLATFORM_NAME
))}
lms/templates/emails/confirm_email_change.txt
View file @
56055cc4
<%! from django.core.urlresolvers import reverse %>
<%! from django.core.urlresolvers import reverse %>
<%! from django.utils.translation import ugettext as _ %>
<%! from django.utils.translation import ugettext as _ %>
<%! from openedx.core.djangoapps.theming.helpers import get_value as get_themed_value %>
${_("This is to confirm that you changed the e-mail associated with "
${_("This is to confirm that you changed the e-mail associated with "
"{platform_name} from {old_email} to {new_email}. If you "
"{platform_name} from {old_email} to {new_email}. If you "
"did not make this request, please contact us immediately. Contact "
"did not make this request, please contact us immediately. Contact "
"information is listed at:").format(platform_name=settings.PLATFORM_NAME, old_email=old_email, new_email=new_email)}
"information is listed at:").format(
platform_name=get_themed_value('PLATFORM_NAME', settings.PLATFORM_NAME),
old_email=old_email,
new_email=new_email
)
}
% if is_secure:
% if is_secure:
https://${ site }${reverse('contact')}
https://${ site }${reverse('contact')}
...
@@ -11,5 +17,4 @@ ${_("This is to confirm that you changed the e-mail associated with "
...
@@ -11,5 +17,4 @@ ${_("This is to confirm that you changed the e-mail associated with "
http://${ site }${reverse('contact')}
http://${ site }${reverse('contact')}
% endif
% endif
${_("We keep a log of old e-mails, so if this request was unintentional, we "
${_("We keep a log of old e-mails, so if this request was unintentional, we can investigate.")}
"can investigate.")}
lms/templates/emails/email_change.txt
View file @
56055cc4
<%! from django.utils.translation import ugettext as _ %>
<%! from django.utils.translation import ugettext as _ %>
<%! from openedx.core.djangoapps.theming.helpers import get_value as get_themed_value %>
${_("We received a request to change the e-mail associated with your "
${_("We received a request to change the e-mail associated with your "
"{platform_name} account from {old_email} to {new_email}. "
"{platform_name} account from {old_email} to {new_email}. "
"If this is correct, please confirm your new e-mail address by "
"If this is correct, please confirm your new e-mail address by "
"visiting:").format(platform_name=settings.PLATFORM_NAME, old_email=old_email, new_email=new_email)}
"visiting:").format(
platform_name=get_themed_value('PLATFORM_NAME', settings.PLATFORM_NAME),
old_email=old_email,
new_email=new_email
)
}
% if is_secure:
% if is_secure:
https://${ site }/email_confirm/${ key }
https://${ site }/email_confirm/${ key }
...
@@ -13,4 +19,4 @@ ${_("We received a request to change the e-mail associated with your "
...
@@ -13,4 +19,4 @@ ${_("We received a request to change the e-mail associated with your "
${_("If you didn't request this, you don't need to do anything; you won't "
${_("If you didn't request this, you don't need to do anything; you won't "
"receive any more email from us. Please do not reply to this e-mail; "
"receive any more email from us. Please do not reply to this e-mail; "
"if you require assistance, check the help section of the "
"if you require assistance, check the help section of the "
"{platform_name} web site.").format(platform_name=
settings.PLATFORM_NAME
)}
"{platform_name} web site.").format(platform_name=
get_themed_value('PLATFORM_NAME', settings.PLATFORM_NAME)
)}
lms/templates/emails/email_change_subject.txt
View file @
56055cc4
<%! from django.utils.translation import ugettext as _ %>
<%! from django.utils.translation import ugettext as _ %>
${_("Request to change {platform_name} account e-mail").format(platform_name=settings.PLATFORM_NAME)}
<%! from openedx.core.djangoapps.theming.helpers import get_value as get_themed_value %>
${_("Request to change {platform_name} account e-mail").format(
platform_name=get_themed_value('PLATFORM_NAME', settings.PLATFORM_NAME)
)}
openedx/core/djangoapps/credit/email_utils.py
View file @
56055cc4
...
@@ -125,7 +125,7 @@ def send_credit_notifications(username, course_key):
...
@@ -125,7 +125,7 @@ def send_credit_notifications(username, course_key):
notification_msg
.
attach
(
logo_image
)
notification_msg
.
attach
(
logo_image
)
# add email addresses of sender and receiver
# add email addresses of sender and receiver
from_address
=
theming_helpers
.
get_value
(
'
default_from_email
'
,
settings
.
DEFAULT_FROM_EMAIL
)
from_address
=
theming_helpers
.
get_value
(
'
email_from_address
'
,
settings
.
DEFAULT_FROM_EMAIL
)
to_address
=
user
.
email
to_address
=
user
.
email
# send the root email message
# send the root email message
...
...
openedx/core/djangoapps/user_api/accounts/api.py
View file @
56055cc4
...
@@ -398,7 +398,7 @@ def request_password_change(email, orig_host, is_secure):
...
@@ -398,7 +398,7 @@ def request_password_change(email, orig_host, is_secure):
# Generate a single-use link for performing a password reset
# Generate a single-use link for performing a password reset
# and email it to the user.
# and email it to the user.
form
.
save
(
form
.
save
(
from_email
=
theming_helpers
.
get_value
(
'
default_from_email
'
,
settings
.
DEFAULT_FROM_EMAIL
),
from_email
=
theming_helpers
.
get_value
(
'
email_from_address
'
,
settings
.
DEFAULT_FROM_EMAIL
),
domain_override
=
orig_host
,
domain_override
=
orig_host
,
use_https
=
is_secure
use_https
=
is_secure
)
)
...
...
requirements/edx/github.txt
View file @
56055cc4
...
@@ -90,7 +90,7 @@ git+https://github.com/edx/xblock-utils.git@v1.0.2#egg=xblock-utils==1.0.2
...
@@ -90,7 +90,7 @@ git+https://github.com/edx/xblock-utils.git@v1.0.2#egg=xblock-utils==1.0.2
-e git+https://github.com/edx/edx-reverification-block.git@0.0.5#egg=edx-reverification-block==0.0.5
-e git+https://github.com/edx/edx-reverification-block.git@0.0.5#egg=edx-reverification-block==0.0.5
git+https://github.com/edx/edx-user-state-client.git@1.0.1#egg=edx-user-state-client==1.0.1
git+https://github.com/edx/edx-user-state-client.git@1.0.1#egg=edx-user-state-client==1.0.1
git+https://github.com/edx/xblock-lti-consumer.git@v1.0.9#egg=xblock-lti-consumer==1.0.9
git+https://github.com/edx/xblock-lti-consumer.git@v1.0.9#egg=xblock-lti-consumer==1.0.9
git+https://github.com/edx/edx-proctoring.git@0.12.2
0#egg=edx-proctoring==0.12.20
git+https://github.com/edx/edx-proctoring.git@0.12.2
1#egg=edx-proctoring==0.12.21
# Third Party XBlocks
# Third Party XBlocks
-e git+https://github.com/mitodl/edx-sga@172a90fd2738f8142c10478356b2d9ed3e55334a#egg=edx-sga
-e git+https://github.com/mitodl/edx-sga@172a90fd2738f8142c10478356b2d9ed3e55334a#egg=edx-sga
...
...
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