diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py
index 0a5108590f..de8eddd0b8 100644
--- a/common/lib/xmodule/xmodule/course_module.py
+++ b/common/lib/xmodule/xmodule/course_module.py
@@ -247,7 +247,8 @@ class CourseDescriptor(SequenceDescriptor):
@property
def start_date_text(self):
- return time.strftime("%b %d, %Y", self.start)
+ displayed_start = self._try_parse_time('advertised_start') or self.start
+ return time.strftime("%b %d, %Y", displayed_start)
# An extra property is used rather than the wiki_slug/number because
# there are courses that change the number for different runs. This allows
diff --git a/common/lib/xmodule/xmodule/css/video/display.scss b/common/lib/xmodule/xmodule/css/video/display.scss
index e8aba4d671..43b024ec32 100644
--- a/common/lib/xmodule/xmodule/css/video/display.scss
+++ b/common/lib/xmodule/xmodule/css/video/display.scss
@@ -355,6 +355,34 @@ div.video {
}
}
+ a.quality_control {
+ background: url(../images/hd.png) center no-repeat;
+ border-right: 1px solid #000;
+ @include box-shadow(1px 0 0 #555, inset 1px 0 0 #555);
+ color: #797979;
+ display: block;
+ float: left;
+ line-height: 46px; //height of play pause buttons
+ margin-left: 0;
+ padding: 0 lh(.5);
+ text-indent: -9999px;
+ @include transition();
+ width: 30px;
+
+ &:hover {
+ background-color: #444;
+ color: #fff;
+ text-decoration: none;
+ }
+
+ &.active {
+ background-color: #F44;
+ color: #0ff;
+ text-decoration: none;
+ }
+ }
+
+
a.hide-subtitles {
background: url('../images/cc.png') center no-repeat;
color: #797979;
diff --git a/common/lib/xmodule/xmodule/js/src/video/display/video_caption.coffee b/common/lib/xmodule/xmodule/js/src/video/display/video_caption.coffee
index b1e41afc3c..cdd74c5d07 100644
--- a/common/lib/xmodule/xmodule/js/src/video/display/video_caption.coffee
+++ b/common/lib/xmodule/xmodule/js/src/video/display/video_caption.coffee
@@ -22,7 +22,7 @@ class @VideoCaption extends Subview
"""
@$('.video-controls .secondary-controls').append """
Captions
- """
+ """#"
@$('.subtitles').css maxHeight: @$('.video-wrapper').height() - 5
@fetchCaption()
@@ -144,7 +144,7 @@ class @VideoCaption extends Subview
@el.removeClass('closed')
@scrollCaption()
$.cookie('hide_captions', hide_captions, expires: 3650, path: '/')
-
+
captionHeight: ->
if @el.hasClass('fullscreen')
$(window).height() - @$('.video-controls').height()
diff --git a/common/lib/xmodule/xmodule/js/src/video/display/video_control.coffee b/common/lib/xmodule/xmodule/js/src/video/display/video_control.coffee
index 5053f1dcb1..856549c3e2 100644
--- a/common/lib/xmodule/xmodule/js/src/video/display/video_control.coffee
+++ b/common/lib/xmodule/xmodule/js/src/video/display/video_control.coffee
@@ -16,7 +16,7 @@ class @VideoControl extends Subview
Fill Browser
- """
+ """#"
unless onTouchBasedDevice()
@$('.video_control').addClass('play').html('Play')
diff --git a/common/lib/xmodule/xmodule/js/src/video/display/video_player.coffee b/common/lib/xmodule/xmodule/js/src/video/display/video_player.coffee
index bb89def63d..8829e25dac 100644
--- a/common/lib/xmodule/xmodule/js/src/video/display/video_player.coffee
+++ b/common/lib/xmodule/xmodule/js/src/video/display/video_player.coffee
@@ -9,6 +9,7 @@ class @VideoPlayer extends Subview
bind: ->
$(@control).bind('play', @play)
.bind('pause', @pause)
+ $(@qualityControl).bind('changeQuality', @handlePlaybackQualityChange)
$(@caption).bind('seek', @onSeek)
$(@speedControl).bind('speedChange', @onSpeedChange)
$(@progressSlider).bind('seek', @onSeek)
@@ -25,6 +26,7 @@ class @VideoPlayer extends Subview
render: ->
@control = new VideoControl el: @$('.video-controls')
+ @qualityControl = new VideoQualityControl el: @$('.secondary-controls')
@caption = new VideoCaption
el: @el
youtubeId: @video.youtubeId('1.0')
@@ -41,10 +43,12 @@ class @VideoPlayer extends Subview
rel: 0
showinfo: 0
enablejsapi: 1
+ modestbranding: 1
videoId: @video.youtubeId()
events:
onReady: @onReady
onStateChange: @onStateChange
+ onPlaybackQualityChange: @onPlaybackQualityChange
@caption.hideCaptions(@['video'].hide_captions)
addToolTip: ->
@@ -53,7 +57,7 @@ class @VideoPlayer extends Subview
my: 'top right'
at: 'top center'
- onReady: =>
+ onReady: (event) =>
unless onTouchBasedDevice()
$('.video-load-complete:first').data('video').player.play()
@@ -68,6 +72,13 @@ class @VideoPlayer extends Subview
when YT.PlayerState.ENDED
@onEnded()
+ onPlaybackQualityChange: (event, value) =>
+ quality = @player.getPlaybackQuality()
+ @qualityControl.onQualityChange(quality)
+
+ handlePlaybackQualityChange: (event, value) =>
+ @player.setPlaybackQuality(value)
+
onUnstarted: =>
@control.pause()
@caption.pause()
diff --git a/common/lib/xmodule/xmodule/js/src/video/display/video_quality_control.coffee b/common/lib/xmodule/xmodule/js/src/video/display/video_quality_control.coffee
new file mode 100644
index 0000000000..f8f6167075
--- /dev/null
+++ b/common/lib/xmodule/xmodule/js/src/video/display/video_quality_control.coffee
@@ -0,0 +1,26 @@
+class @VideoQualityControl extends Subview
+ initialize: ->
+ @quality = null;
+
+ bind: ->
+ @$('.quality_control').click @toggleQuality
+
+ render: ->
+ @el.append """
+ HD
+ """#"
+
+ onQualityChange: (value) ->
+ @quality = value
+ if @quality in ['hd720', 'hd1080', 'highres']
+ @el.addClass('active')
+ else
+ @el.removeClass('active')
+
+ toggleQuality: (event) =>
+ event.preventDefault()
+ if @quality in ['hd720', 'hd1080', 'highres']
+ newQuality = 'large'
+ else
+ newQuality = 'hd720'
+ $(@).trigger('changeQuality', newQuality)
\ No newline at end of file
diff --git a/common/lib/xmodule/xmodule/js/src/video/display/video_volume_control.coffee b/common/lib/xmodule/xmodule/js/src/video/display/video_volume_control.coffee
index 10d3f6b044..096b50042d 100644
--- a/common/lib/xmodule/xmodule/js/src/video/display/video_volume_control.coffee
+++ b/common/lib/xmodule/xmodule/js/src/video/display/video_volume_control.coffee
@@ -17,7 +17,7 @@ class @VideoVolumeControl extends Subview
- """
+ """#"
@slider = @$('.volume-slider').slider
orientation: "vertical"
range: "min"
diff --git a/common/static/images/hd.png b/common/static/images/hd.png
new file mode 100644
index 0000000000..d6b8c1b7d1
Binary files /dev/null and b/common/static/images/hd.png differ
diff --git a/lms/static/sass/multicourse/_jobs.scss b/lms/static/sass/multicourse/_jobs.scss
index d2f86e93a6..f9629232d6 100644
--- a/lms/static/sass/multicourse/_jobs.scss
+++ b/lms/static/sass/multicourse/_jobs.scss
@@ -136,6 +136,14 @@
margin-bottom: 15px;
}
+ h4 {
+ font-size: 1.0em;
+ font-family: $sans-serif;
+ font-weight: 700;
+ margin-top: 25px;
+ margin-bottom: 10px;
+ }
+
ul {
padding-left: 50px;
}
diff --git a/lms/templates/google_analytics.html b/lms/templates/google_analytics.html
new file mode 100644
index 0000000000..273fbac970
--- /dev/null
+++ b/lms/templates/google_analytics.html
@@ -0,0 +1,11 @@
+
diff --git a/lms/templates/main.html b/lms/templates/main.html
index f234aa72cf..87490a07e4 100644
--- a/lms/templates/main.html
+++ b/lms/templates/main.html
@@ -21,20 +21,9 @@
% if not course:
-
+ <%include file="google_analytics.html" />
% endif
+
diff --git a/lms/templates/portal/course_about.html b/lms/templates/portal/course_about.html
index 6fced73565..b35c7a1b6f 100644
--- a/lms/templates/portal/course_about.html
+++ b/lms/templates/portal/course_about.html
@@ -7,7 +7,12 @@
<%inherit file="../main.html" />
+<%block name="headextra">
+ <%include file="../google_analytics.html" />
+%block>
+
<%block name="js_extra">
+
% if not registered:
%if user.is_authenticated():
## If the user is authenticated, clicking the enroll button just submits a form
diff --git a/lms/templates/static_templates/jobs.html b/lms/templates/static_templates/jobs.html
index f2b3b69cab..c78ce266ed 100644
--- a/lms/templates/static_templates/jobs.html
+++ b/lms/templates/static_templates/jobs.html
@@ -1,5 +1,4 @@
<%namespace name='static' file='../static_content.html'/>
-
<%inherit file="../main.html" />
<%block name="title">Jobs%block>
@@ -50,12 +49,79 @@
If you are interested in this position, please send an email to jobs@edx.org
+
+
+
Learning Designer/Interaction Learning Designer
+
The Learning Designer will work as part of the content and development team to plan, develop and deliver highly engaging and media rich online courses. The learning designer will be a flexible thinker, able to determine and apply sound pedagogical strategies to unique situations and a diverse set of academic disciplines. This is a 6-12 months contract opportunity.
+
Specific Responsibilities include:
+
+ - Work with producers, product developers and course staff on implementing instructional design approaches in the development of media and other course materials.
+ - Articulate learning objectives and align them to content design strategy and assessments.
+ - Write effective instructional text, and audio and video scripts.
+ - Coordinate workflows with video and content development team
+ - Identify best practices and share these with the course staff and faculty as needed.
+ - Create course communication style guides. Train and coach teaching staff on best practices for communication and discussion management.
+ - Develop use case guides as needed on the use of edX courseware and new technologies.
+ - Serve as a liaison to instructional design teams located at X universities.
+ - Design peer review processes to be used by learners in selected courses.
+ - Ability to apply game-based learning theory and design into selected courses as appropriate.
+ - Use learning analytics and metrics to inform course design and revision process.
+ - Work closely with the Content Research Director on articulating best practices for MOOC teaching and learning and course design.
+ - Assist in the development of pilot courses used for sponsored research initiatives.
+
+
Qualifications:
+
Master's Degree in Educational Technology, Instructional Design or related field. Experience in higher education with additional experience in a start-up or research environment desirable. Excellent interpersonal and communication (written and verbal), project management, problem-solving and time management skills. The ability to be flexible with projects and to work on multiple courses essential. Ability to meet deadlines and manage expectations of constituents. Capacity to develop new and relevant technology skills. Experience using game theory design and learning analytics to inform instructional design decisions and strategy.
+
Technical Skills:
+
Video and screencasting experience. LMS Platform experience, xml, HTML, CSS, Adobe Design Suite, Camtasia or Captivate experience. Experience with web 2.0 collaboration tools.
+
If you are interested in this position, please send an email to jobs@edx.org
+
+
+
+
+
Production Coordinator
+
The Production Coordinator supports video editors and course staff in all video related tasks, such as ingesting footage, transcoding, tracking live dates, transcriptions, organizing project deliverables and archiving completed projects.
+
Primary responsibilities:
+
+ - organize, track, and manage video and associated assets across the video workflow
+ - manage project data and spreadsheets
+ - route incoming source footage, and apply metadata tags
+ - run encoding/transcoding jobs
+ - prepare and process associated video assets, such as slides and image files
+ - manage the transcription process
+
+ - traffic files among project staff and video transcription services
+ - coordinate transcript reviews with course staff
+ - integrate transcripts in course pages
+
+ - other video-related tasks as assigned.
+
+
+
Qualifications
+
The ideal candidate for the Production Coordinator position will have
+
+ - relentless attention to detail
+ - ability to communicate and collaborate effectively across the organization
+ - knowledge and understanding of digital media production tools and processes
+ - experience with compression techniques, image processing, and presentation software preferred
+ - proficiency with standard office applications
+
+ - spreadsheets
+ - word processing
+ - presentation
+
+ - experience with web publishing, e.g., HTML, XML, CSS, a plus
+
+
If you are interested in this position, please send an email to jobs@edx.org
+
+