diff --git a/static/coffee/src/courseware.coffee b/static/coffee/src/courseware.coffee index d7469cec04..762df721c4 100644 --- a/static/coffee/src/courseware.coffee +++ b/static/coffee/src/courseware.coffee @@ -4,12 +4,17 @@ class window.Courseware new Calculator new FeedbackForm Logger.bind() - @renderModules() + @bind() + @render() @start: -> new Courseware - renderModules: -> + bind: -> + if $('#seq_content').length + $('#seq_content').change @render + + render: -> $('.course-content .video').each -> id = $(this).attr('id').replace(/video_/, '') new Video id, $(this).data('streams') diff --git a/templates/coffee/src/modules/sequence.coffee b/templates/coffee/src/modules/sequence.coffee index 96450199e8..e33cad5416 100644 --- a/templates/coffee/src/modules/sequence.coffee +++ b/templates/coffee/src/modules/sequence.coffee @@ -6,6 +6,7 @@ class window.Sequence bind: -> $('#sequence-list a').click @goto + $('#seq_content').change @toggleArrows buildNavigation: -> $.each @elements, (index, item) -> @@ -14,7 +15,7 @@ class window.Sequence list_item = $('
  • ').append(link.append(title)) $('#sequence-list').append list_item - toggleArrows: -> + toggleArrows: => $('.sequence-nav-buttons a').unbind('click') if @position == 1 @@ -38,7 +39,7 @@ class window.Sequence MathJax.Hub.Queue(["Typeset",MathJax.Hub]) @position = new_position - @toggleArrows() + $('#seq_content').change() goto: (event) => event.preventDefault() diff --git a/templates/coffee/src/modules/video.coffee b/templates/coffee/src/modules/video.coffee index 8f35ae0cb1..9d059cf0b5 100644 --- a/templates/coffee/src/modules/video.coffee +++ b/templates/coffee/src/modules/video.coffee @@ -1,13 +1,16 @@ class Video constructor: (@id, videos) -> + window.player = null @element = $("#video_#{@id}") @parseVideos videos - @fetchMetadata() - @parseSpeed() $("#video_#{@id}").data('video', this) - window.onYouTubePlayerAPIReady = => - $('.course-content .video').each -> - $(this).data('video').embed() + + if YT.Player + @embed() + else + window.onYouTubePlayerAPIReady = => + $('.course-content .video').each -> + $(this).data('video').embed() youtubeId: (speed)-> @videos[speed || @speed] @@ -18,6 +21,8 @@ class Video video = video.split(/:/) speed = parseFloat(video[0]).toFixed(2).replace /\.00$/, '.0' @videos[speed] = video[1] + @fetchMetadata() + @parseSpeed() parseSpeed: -> @setSpeed($.cookie('video_speed')) diff --git a/templates/coffee/src/modules/video/video_player.coffee b/templates/coffee/src/modules/video/video_player.coffee index b51dbcd95e..2871f6ff0c 100644 --- a/templates/coffee/src/modules/video/video_player.coffee +++ b/templates/coffee/src/modules/video/video_player.coffee @@ -63,12 +63,14 @@ class VideoPlayer $(@).trigger('ended') onPlay: => + Logger.log 'play_video', id: @currentTime, code: @player.getVideoEmbedCode() window.player.pauseVideo() if window.player && window.player != @player window.player = @player unless @player.interval @player.interval = setInterval(@update, 200) onPause: => + Logger.log 'pause_video', id: @currentTime, code: @player.getVideoEmbedCode() window.player = null if window.player == @player clearInterval(@player.interval) @player.interval = null