From 3c60d7a69ba7d9d5a4a5019984205541ace36ecb Mon Sep 17 00:00:00 2001 From: Kyle Fiedler Date: Thu, 5 Apr 2012 08:08:32 -0400 Subject: [PATCH] Added hover over video bar and js to possibly go true full screen --- static/css/application.css | 26 +++++ static/js/jquery.fullscreen.js | 145 ++++++++++++++++++++++++++ templates/sass/courseware/_video.scss | 36 +++---- templates/video.html | 2 +- 4 files changed, 190 insertions(+), 19 deletions(-) create mode 100644 static/js/jquery.fullscreen.js diff --git a/static/css/application.css b/static/css/application.css index d615320538..1c4abf1501 100644 --- a/static/css/application.css +++ b/static/css/application.css @@ -2863,6 +2863,30 @@ section.course-index div#accordion ul.ui-accordion-content li a p { section.course-index div#accordion ul.ui-accordion-content li a p.subtitle { color: #666; } +section.course-content .dullify, section.course-content div.video-subtitles div.video-wrapper section.video-controls ul.vcr, section.course-content div.video-subtitles div.video-wrapper section.video-controls div.secondary-controls { + opacity: .4; + -webkit-transition-property: all; + -moz-transition-property: all; + -ms-transition-property: all; + -o-transition-property: all; + transition-property: all; + -webkit-transition-duration: 0.15s; + -moz-transition-duration: 0.15s; + -ms-transition-duration: 0.15s; + -o-transition-duration: 0.15s; + transition-duration: 0.15s; + -webkit-transition-timing-function: ease-out; + -moz-transition-timing-function: ease-out; + -ms-transition-timing-function: ease-out; + -o-transition-timing-function: ease-out; + transition-timing-function: ease-out; + -webkit-transition-delay: 0; + -moz-transition-delay: 0; + -ms-transition-delay: 0; + -o-transition-delay: 0; + transition-delay: 0; } +section.course-content .dullify:hover, section.course-content div.video-subtitles div.video-wrapper section.video-controls ul.vcr:hover, section.course-content div.video-subtitles div.video-wrapper section.video-controls div.secondary-controls:hover { + opacity: 1; } section.course-content div.video { padding: 6px 22.652px; margin: 0 -22.652px; @@ -2911,6 +2935,8 @@ section.course-content div.video-subtitles div.video-wrapper section.video-contr border: 1px solid #000; border-top: 0; color: #ccc; } +section.course-content div.video-subtitles div.video-wrapper section.video-controls:hover ul, section.course-content div.video-subtitles div.video-wrapper section.video-controls:hover div { + opacity: 1; } section.course-content div.video-subtitles div.video-wrapper section.video-controls div#slider { -webkit-border-radius: 0; -moz-border-radius: 0; diff --git a/static/js/jquery.fullscreen.js b/static/js/jquery.fullscreen.js new file mode 100644 index 0000000000..21d6d5f8ae --- /dev/null +++ b/static/js/jquery.fullscreen.js @@ -0,0 +1,145 @@ +/** + * @name jQuery FullScreen Plugin + * @author Martin Angelov + * @version 1.0 + * @url http://tutorialzine.com/2012/02/enhance-your-website-fullscreen-api/ + * @license MIT License + */ + +(function($){ + + // Adding a new test to the jQuery support object + $.support.fullscreen = supportFullScreen(); + + // Creating the plugin + $.fn.fullScreen = function(props){ + + if(!$.support.fullscreen || this.length != 1){ + + // The plugin can be called only + // on one element at a time + + return this; + } + + if(fullScreenStatus()){ + // if we are already in fullscreen, exit + cancelFullScreen(); + return this; + } + + // You can potentially pas two arguments a color + // for the background and a callback function + + var options = $.extend({ + 'background' : '#111', + 'callback' : function(){} + }, props); + + // This temporary div is the element that is + // actually going to be enlarged in full screen + + var fs = $('
',{ + 'css' : { + 'overflow-y' : 'auto', + 'background' : options.background, + 'width' : '100%', + 'height' : '100%' + } + }); + + var elem = this; + + // You can use the .fullScreen class to + // apply styling to your element + elem.toggleClass('fullscreen'); + + // Inserting our element in the temporary + // div, after which we zoom it in fullscreen + fs.insertBefore(elem); + fs.append(elem); + requestFullScreen(fs.get(0)); + + fs.click(function(e){ + if(e.target == this){ + // If the black bar was clicked + cancelFullScreen(); + } + }); + + elem.cancel = function(){ + cancelFullScreen(); + return elem; + }; + + onFullScreenEvent(function(fullScreen){ + + if(!fullScreen){ + + // We have exited full screen. + // Remove the class and destroy + // the temporary div + + elem.removeClass('fullScreen').insertBefore(fs); + fs.remove(); + } + + // Calling the user supplied callback + options.callback(fullScreen); + }); + + return elem; + }; + + + // These helper functions available only to our plugin scope. + + + function supportFullScreen(){ + var doc = document.documentElement; + + return ('requestFullscreen' in doc) || + ('mozRequestFullScreen' in doc && document.mozFullScreenEnabled) || + ('webkitRequestFullScreen' in doc); + } + + function requestFullScreen(elem){ + + if (elem.requestFullscreen) { + elem.requestFullscreen(); + } + else if (elem.mozRequestFullScreen) { + elem.mozRequestFullScreen(); + } + else if (elem.webkitRequestFullScreen) { + elem.webkitRequestFullScreen(); + } + } + + function fullScreenStatus(){ + return document.fullscreen || + document.mozFullScreen || + document.webkitIsFullScreen; + } + + function cancelFullScreen(){ + if (document.exitFullscreen) { + document.exitFullscreen(); + } + else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } + else if (document.webkitCancelFullScreen) { + document.webkitCancelFullScreen(); + } + } + + function onFullScreenEvent(callback){ + $(document).on("fullscreenchange mozfullscreenchange webkitfullscreenchange", function(){ + // The full screen status is automatically + // passed to our callback as an argument. + callback(fullScreenStatus()); + }); + } + +})(jQuery); diff --git a/templates/sass/courseware/_video.scss b/templates/sass/courseware/_video.scss index b26af730a6..e60f7d1115 100644 --- a/templates/sass/courseware/_video.scss +++ b/templates/sass/courseware/_video.scss @@ -1,4 +1,13 @@ section.course-content { + .dullify { + opacity: .4; + @include transition(); + + &:hover { + opacity: 1; + } + } + div.video { padding: 6px lh(); margin: 0 (-(lh())); @@ -7,6 +16,7 @@ section.course-content { background: #f3f3f3; display: block; } + div.video-subtitles { display: table; @include clearfix(); @@ -47,24 +57,6 @@ section.course-content { } } - // ul { - // float: left; - - // li { - // margin-top: 5px; - // display: inline-block; - // cursor: pointer; - // border: 0; - // padding: 0; - - // div { - // &:empty { - // display: none; - // } - // } - // } - // } - section.video-controls { @extend .clearfix; background: #333; @@ -73,6 +65,12 @@ section.course-content { border-top: 0; color: #ccc; + &:hover { + ul, div { + opacity: 1; + } + } + div#slider { @extend .clearfix; @include border-radius(0); @@ -155,6 +153,7 @@ section.course-content { ul.vcr { float: left; margin-right: lh(); + @extend .dullify; li { float: left; @@ -201,6 +200,7 @@ section.course-content { div.secondary-controls { float: right; + @extend .dullify; div.speeds { border-left: 1px solid #000; diff --git a/templates/video.html b/templates/video.html index 082f755b8e..95677493b0 100644 --- a/templates/video.html +++ b/templates/video.html @@ -3,7 +3,7 @@ % endif
-
+