phocoder-rails 0.0.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. data/.autotest +46 -0
  2. data/.document +5 -0
  3. data/.rspec +1 -0
  4. data/Gemfile +44 -0
  5. data/LICENSE.txt +20 -0
  6. data/MIT-LICENSE +20 -0
  7. data/README.rdoc +3 -0
  8. data/Rakefile +56 -0
  9. data/VERSION +5 -0
  10. data/app/controllers/phocoder_controller.rb +118 -0
  11. data/app/helpers/phocoder_helper.rb +320 -0
  12. data/app/models/encodable_job.rb +91 -0
  13. data/app/views/phocoder/_offline_video_embed.html.erb +19 -0
  14. data/app/views/phocoder/_thumbnail_update.html.erb +3 -0
  15. data/app/views/phocoder/_video_embed.html.erb +23 -0
  16. data/app/views/phocoder/multi_thumbnail_update.json.erb +7 -0
  17. data/app/views/phocoder/thumbnail_update.js.erb +9 -0
  18. data/config/routes.rb +8 -0
  19. data/lib/generators/phocoder_rails/model_update_generator.rb +52 -0
  20. data/lib/generators/phocoder_rails/scaffold_generator.rb +94 -0
  21. data/lib/generators/phocoder_rails/setup_generator.rb +33 -0
  22. data/lib/generators/phocoder_rails/templates/controller.rb +71 -0
  23. data/lib/generators/phocoder_rails/templates/helper.rb +5 -0
  24. data/lib/generators/phocoder_rails/templates/migration.rb +24 -0
  25. data/lib/generators/phocoder_rails/templates/model.rb +20 -0
  26. data/lib/generators/phocoder_rails/templates/model_migration.rb +56 -0
  27. data/lib/generators/phocoder_rails/templates/model_thumbnail.rb +5 -0
  28. data/lib/generators/phocoder_rails/templates/model_update_migration.rb +64 -0
  29. data/lib/generators/phocoder_rails/templates/phocodable.yml +28 -0
  30. data/lib/generators/phocoder_rails/templates/views/_form.html.erb.tt +23 -0
  31. data/lib/generators/phocoder_rails/templates/views/index.html.erb.tt +26 -0
  32. data/lib/generators/phocoder_rails/templates/views/new.html.erb.tt +5 -0
  33. data/lib/generators/phocoder_rails/templates/views/show.html.erb.tt +12 -0
  34. data/lib/phocoder_rails.rb +12 -0
  35. data/lib/phocoder_rails/acts_as_phocodable.rb +1153 -0
  36. data/lib/phocoder_rails/engine.rb +24 -0
  37. data/lib/phocoder_rails/errors.rb +46 -0
  38. data/phocoder-rails.gemspec +219 -0
  39. data/public/images/building.gif +0 -0
  40. data/public/images/error.png +0 -0
  41. data/public/images/play_small.png +0 -0
  42. data/public/images/storing.gif +0 -0
  43. data/public/images/waiting.gif +0 -0
  44. data/public/javascripts/phocodable.js +110 -0
  45. data/public/javascripts/video-js-2.0.2/.DS_Store +0 -0
  46. data/public/javascripts/video-js-2.0.2/LICENSE.txt +165 -0
  47. data/public/javascripts/video-js-2.0.2/README.markdown +202 -0
  48. data/public/javascripts/video-js-2.0.2/demo-subtitles.srt +13 -0
  49. data/public/javascripts/video-js-2.0.2/demo.html +101 -0
  50. data/public/javascripts/video-js-2.0.2/skins/hu.css +116 -0
  51. data/public/javascripts/video-js-2.0.2/skins/tube.css +111 -0
  52. data/public/javascripts/video-js-2.0.2/skins/vim.css +89 -0
  53. data/public/javascripts/video-js-2.0.2/video-js.css +242 -0
  54. data/public/javascripts/video-js-2.0.2/video.js +1758 -0
  55. data/public/stylesheets/phocodable.css +19 -0
  56. data/spec/controllers/phocoder_controller_spec.rb +123 -0
  57. data/spec/dummy/Rakefile +7 -0
  58. data/spec/dummy/app/controllers/application_controller.rb +7 -0
  59. data/spec/dummy/app/controllers/images_controller.rb +72 -0
  60. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  61. data/spec/dummy/app/helpers/images_helper.rb +5 -0
  62. data/spec/dummy/app/models/image.rb +20 -0
  63. data/spec/dummy/app/models/image_thumbnail.rb +5 -0
  64. data/spec/dummy/app/models/image_upload.rb +11 -0
  65. data/spec/dummy/app/views/images/_form.html.erb +23 -0
  66. data/spec/dummy/app/views/images/index.html.erb +26 -0
  67. data/spec/dummy/app/views/images/new.html.erb +5 -0
  68. data/spec/dummy/app/views/images/show.html.erb +12 -0
  69. data/spec/dummy/app/views/layouts/application.html.erb +18 -0
  70. data/spec/dummy/config.ru +4 -0
  71. data/spec/dummy/config/application.rb +45 -0
  72. data/spec/dummy/config/boot.rb +10 -0
  73. data/spec/dummy/config/database.yml +25 -0
  74. data/spec/dummy/config/environment.rb +8 -0
  75. data/spec/dummy/config/environments/development.rb +26 -0
  76. data/spec/dummy/config/environments/production.rb +49 -0
  77. data/spec/dummy/config/environments/test.rb +40 -0
  78. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  79. data/spec/dummy/config/initializers/inflections.rb +10 -0
  80. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  81. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  82. data/spec/dummy/config/initializers/session_store.rb +8 -0
  83. data/spec/dummy/config/locales/en.yml +5 -0
  84. data/spec/dummy/config/routes.rb +60 -0
  85. data/spec/dummy/db/migrate/001_create_image_uploads.rb +37 -0
  86. data/spec/dummy/db/migrate/20110523165213_add_parent_type_to_image_uploads.rb +11 -0
  87. data/spec/dummy/db/migrate/20110523165522_create_encodable_jobs.rb +24 -0
  88. data/spec/dummy/db/migrate/20111101024507_create_images.rb +56 -0
  89. data/spec/dummy/db/schema.rb +99 -0
  90. data/spec/dummy/public/404.html +26 -0
  91. data/spec/dummy/public/422.html +26 -0
  92. data/spec/dummy/public/500.html +26 -0
  93. data/spec/dummy/public/favicon.ico +0 -0
  94. data/spec/dummy/public/index.html +239 -0
  95. data/spec/dummy/public/javascripts/application.js +2 -0
  96. data/spec/dummy/public/javascripts/controls.js +965 -0
  97. data/spec/dummy/public/javascripts/dragdrop.js +974 -0
  98. data/spec/dummy/public/javascripts/effects.js +1123 -0
  99. data/spec/dummy/public/javascripts/jquery-1.6.4.js +9046 -0
  100. data/spec/dummy/public/javascripts/prototype.js +6001 -0
  101. data/spec/dummy/public/javascripts/rails.js +175 -0
  102. data/spec/dummy/public/stylesheets/.gitkeep +0 -0
  103. data/spec/dummy/script/rails +6 -0
  104. data/spec/engine_spec.rb +12 -0
  105. data/spec/fixtures/big_eye_tiny.jpg +0 -0
  106. data/spec/fixtures/octologo.png +0 -0
  107. data/spec/fixtures/test.txt +2 -0
  108. data/spec/fixtures/video-test.mov +0 -0
  109. data/spec/helpers/phocoder_helper_spec.rb +421 -0
  110. data/spec/integration/navigation_spec.rb +10 -0
  111. data/spec/models/acts_as_phocodable_spec.rb +664 -0
  112. data/spec/models/encodable_job_spec.rb +50 -0
  113. data/spec/phocoder_rails_spec.rb +8 -0
  114. data/spec/routing/phocoder_routing_spec.rb +19 -0
  115. data/spec/spec_helper.rb +75 -0
  116. metadata +375 -0
@@ -0,0 +1,202 @@
1
+ VideoJS - [HTML5 Video Player](http://videojs.com)
2
+ ==================================================
3
+ Version 2.0.2
4
+
5
+ View [VideoJS.com](http://videojs.com) for a demo and overview.
6
+
7
+ VideoJS is an HTML5 video player that uses the HTML5 video tag built into modern browsers, and uses javascript to add custom controls, new functionality, and to fix cross browser bugs.
8
+
9
+ The base of VideoJS is Kroc Camen's [Video for Everybody](http://camendesign.com/code/video_for_everybody), which is a video embed code that falls back to a Flash video player or download links for browsers and devices that don't support HTML5 video.
10
+
11
+ View demo.html for an example of how to use it.
12
+
13
+ Originally based on [this tutorial](http://blog.steveheffernan.com/2010/04/how-to-build-an-html5-video-player/).
14
+
15
+ Contributors (Github Username)
16
+ ------------------------------
17
+ heff, dz0ny, sentientbit, tvdeyen, brandonarbini, gordonbrander, Shraymonks, albertogasparin, sandaru1, nicholasbs, majornista, Fredust85, @wonderboymusic
18
+
19
+
20
+ Getting Started
21
+ ---------------
22
+
23
+ ### Step 1: Include VideoJS Javascript and CSS files in your page.
24
+ Change the src/href to the appropriate location on your server.
25
+
26
+ <script src="video.js" type="text/javascript" charset="utf-8"></script>
27
+ <link rel="stylesheet" href="video-js.css" type="text/css" media="screen" title="Video JS" charset="utf-8">
28
+
29
+
30
+ ### Step 2: Add the VideoJS setup code to your page or another script.
31
+ Must run after the VideoJS javascript file has been included
32
+
33
+ <script type="text/javascript" charset="utf-8">
34
+
35
+ // Add VideoJS to all video tags on the page when the DOM is ready
36
+ VideoJS.setupAllWhenReady();
37
+
38
+ </script>
39
+
40
+
41
+ ### Step 3: Add the VideoJS embed code to your page (grab the latest version for demo.html).
42
+ Change the video and image files to your own. You can even swap out the Flash Fallback for your own, just maintain the "vjs-flash-fallback" class on the object. I know, seems like a lot of HTML, but it's super compatible. [Check it](http://camendesign.com/code/video_for_everybody/test.html).
43
+
44
+ <!-- Begin VideoJS -->
45
+ <div class="video-js-box">
46
+ <!-- Using the Video for Everybody Embed Code http://camendesign.com/code/video_for_everybody -->
47
+ <video id="example_video_1" class="video-js" width="640" height="264" poster="http://video-js.zencoder.com/oceans-clip.png" controls preload>
48
+ <source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
49
+ <source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm; codecs="vp8, vorbis"' />
50
+ <source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg; codecs="theora, vorbis"' />
51
+ <!-- Flash Fallback. Use any flash video player here. Make sure to keep the vjs-flash-fallback class. -->
52
+ <object id="flash_fallback_1" class="vjs-flash-fallback" width="640" height="264" type="application/x-shockwave-flash"
53
+ data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf">
54
+ <param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" />
55
+ <param name="allowfullscreen" value="true" />
56
+ <param name="flashvars" value='config={"playlist":["http://video-js.zencoder.com/oceans-clip.png", {"url": "http://video-js.zencoder.com/oceans-clip.mp4","autoPlay":false,"autoBuffering":true}]}' />
57
+ <!-- Image Fallback. Typically the same as the poster image. -->
58
+ <img src="http://video-js.zencoder.com/oceans-clip.png" width="640" height="264" alt="Poster Image"
59
+ title="No video playback capabilities." />
60
+ </object>
61
+ </video>
62
+ <!-- Download links provided for devices that can't play video in the browser. -->
63
+ <p class="vjs-no-video"><strong>Download Video:</strong>
64
+ <a href="http://video-js.zencoder.com/oceans-clip.mp4">MP4</a>,
65
+ <a href="http://video-js.zencoder.com/oceans-clip.webm">WebM</a>,
66
+ <a href="http://video-js.zencoder.com/oceans-clip.ogv">Ogg</a><br>
67
+ <!-- Support VideoJS by keeping this link. -->
68
+ <a href="http://videojs.com">HTML5 Video Player</a> by VideoJS
69
+ </p>
70
+ </div>
71
+ <!-- End VideoJS -->
72
+
73
+
74
+ Storing a Reference to the Player(s)
75
+ ------------------------------------
76
+ You can set up the player(s) in a way that allows you to access it later, and control things like the video playback. In this case, the setup has to happen after the DOM has been loaded. You can use any library's DOM Ready method, or the one built into VideoJS.
77
+
78
+ ### Using a Video's ID or Element
79
+
80
+ VideoJS.DOMReady(function(){
81
+ var myPlayer = VideoJS.setup("example_video_1");
82
+ });
83
+
84
+
85
+ ### Using an array of video elements/IDs
86
+ Note: It returns an array of players
87
+
88
+ VideoJS.DOMReady(function(){
89
+ var myManyPlayers = VideoJS.setup(["example_video_1", "example_video_2", video3Element]);
90
+ });
91
+
92
+
93
+ ### All videos on the page with the "video-js" class
94
+
95
+ VideoJS.DOMReady(function(){
96
+ var myManyPlayers = VideoJS.setup("All");
97
+ });
98
+
99
+
100
+ ### After you have references to your players you can...(example)
101
+
102
+ VideoJS.DOMReady(function(){
103
+ var myPlayer = VideoJS.setup("example_video_1");
104
+ myPlayer.play(); // Starts playing the video for this player.
105
+ });
106
+
107
+
108
+ Setting Options
109
+ ---------------
110
+ Set options when setting up the videos. The defaults are shown here.
111
+
112
+ VideoJS.setupAllWhenReady({
113
+ controlsBelow: false, // Display control bar below video instead of in front of
114
+ controlsHiding: true, // Hide controls when mouse is not over the video
115
+ defaultVolume: 0.85, // Will be overridden by user's last volume if available
116
+ flashPlayerVersion: 9, // Required flash version for fallback
117
+ });
118
+
119
+ ### Or as the second option of VideoJS.setup
120
+
121
+ VideoJS.DOMReady(function(){
122
+ var myPlayer = VideoJS.setup("example_video_1", {
123
+ // Same options
124
+ });
125
+ });
126
+
127
+
128
+ Coming Next
129
+ -----------
130
+ - API to Flash fallback
131
+
132
+ Changelog
133
+ ---------
134
+ 2.0.2 (2010-12-10)
135
+
136
+ - Feature: Rewrote and optimized subtitle code.
137
+ - Feature: Protecting against volume ranges outside of 1 and 0.
138
+ - Fix: Bug in Safari for Mac OS 10.5 (Leopard) that was breaking fullscreen.
139
+
140
+ 2.0.1 (2010-11-22)
141
+
142
+ - Fix: Issue with big play button when multiple videos are on the page.
143
+ - Fix: Optimized play progress tracking.
144
+ - Fix: Optimized buffer progress checking.
145
+ - Fix: Firefox not showing Flash fallback object.
146
+
147
+ 2.0.0 (2010-11-21)
148
+
149
+ - Feature: Created "behaviors" concept for adding behaviors to elements
150
+ - Feature: Switched back to divs for controls, for more portable styles
151
+ - Feature: Created playerFallbackOrder array option. ["html5", "flash", "links"]
152
+ - Feature: Created playerType concept, for initializing different platforms
153
+ - Feature: Added play button for Android
154
+ - Feature: Added spinner for iPad (non-fullscreen)
155
+ - Feature: Split into multiple files for easier development
156
+ - Feature: Combined VideoJS & _V_ into the same variable to reduce confusion
157
+ - Fix: Checking for m3u8 files (Apple HTTP Streaming)
158
+ - Fix: Catching error on localStorage full that safari seems to randomly throw
159
+ - Fix: Scrubbing to end doesn't trigger onEnded
160
+
161
+ 1.1.5 (2010-11-09)
162
+
163
+ - Feature: Switched to track method for setting subtitles. Now works like spec.
164
+ - Feature: Created "players" concept for defining fallbacks and fallback order
165
+ - Fix: Android playback bug.
166
+ - Fix: Massive reorganization of code to make easier to navigate
167
+
168
+ 1.1.4 (2010-11-06)
169
+
170
+ - Feature: Added loading spinner.
171
+ - Feature: Improved styles loaded checking.
172
+ - Feature: Added volume() function to get and set volume through the player.
173
+ - Fix: Fix issue where FF would loop video in background when ended.
174
+ - Fix: Bug in Chrome that shows poster & plays audio if you set currentTime too quickly.
175
+ - Fix: Bug in Safari where waiting is triggered and shows spinner when not needed
176
+ - Fix: Updated to show links if only unplayable sources and no Flash.
177
+ - Fix: Issue where if play button was loaded after play, it wouldn't hide.
178
+
179
+ 1.1.3 (2010-10-19)
180
+
181
+ - Feature: Width/Height functions for resizing the player
182
+ - Feature: Made initial click & hold trigger new value on progress and volume
183
+ - Feature: Made controls not hide when hovering over them
184
+ - Feature: Added big play button as default starting control.
185
+ - Fix: Removed trailing comma that was breaking IE7
186
+ - Fix: Removed some vars from global scope
187
+ - Fix: Changed a document.onmousemove to an eventListener to prevent conflicts
188
+ - Fix: Added a unique ID to FlowPlayer demo object to fix a FlowPlayer bug. Thanks @emirpprime.
189
+ - Fix: Safari error on unloaded video
190
+
191
+ 1.1.2 (2010-09-20)
192
+
193
+ - Added a fix for the poster bug in iPad/iPhone
194
+ - Added more specificity to styles
195
+
196
+ 1.1.1 (2010-09-14)
197
+
198
+ - First Formally Versioned Release
199
+
200
+ 1.0.0 (2010-05-18)
201
+
202
+ - First released
@@ -0,0 +1,13 @@
1
+ 1
2
+ 00:00:02,400 --> 00:00:05,200
3
+ [Background Music Playing]
4
+
5
+ 2
6
+ 00:00:15,712 --> 00:00:17,399
7
+ Heay!!
8
+
9
+ 3
10
+ 00:00:25,712 --> 00:00:30,399
11
+ [Bird noises]
12
+
13
+
@@ -0,0 +1,101 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>HTML5 Video Player</title>
6
+
7
+ <!-- Include the VideoJS Library -->
8
+ <script src="video.js" type="text/javascript" charset="utf-8"></script>
9
+
10
+ <script type="text/javascript">
11
+ // Must come after the video.js library
12
+
13
+ // Add VideoJS to all video tags on the page when the DOM is ready
14
+ VideoJS.setupAllWhenReady();
15
+
16
+ /* ============= OR ============ */
17
+
18
+ // Setup and store a reference to the player(s).
19
+ // Must happen after the DOM is loaded
20
+ // You can use any library's DOM Ready method instead of VideoJS.DOMReady
21
+
22
+ /*
23
+ VideoJS.DOMReady(function(){
24
+
25
+ // Using the video's ID or element
26
+ var myPlayer = VideoJS.setup("example_video_1");
27
+
28
+ // OR using an array of video elements/IDs
29
+ // Note: It returns an array of players
30
+ var myManyPlayers = VideoJS.setup(["example_video_1", "example_video_2", video3Element]);
31
+
32
+ // OR all videos on the page
33
+ var myManyPlayers = VideoJS.setup("All");
34
+
35
+ // After you have references to your players you can...(example)
36
+ myPlayer.play(); // Starts playing the video for this player.
37
+ });
38
+ */
39
+
40
+ /* ========= SETTING OPTIONS ========= */
41
+
42
+ // Set options when setting up the videos. The defaults are shown here.
43
+
44
+ /*
45
+ VideoJS.setupAllWhenReady({
46
+ controlsBelow: false, // Display control bar below video instead of in front of
47
+ controlsHiding: true, // Hide controls when mouse is not over the video
48
+ defaultVolume: 0.85, // Will be overridden by user's last volume if available
49
+ flashVersion: 9, // Required flash version for fallback
50
+ linksHiding: true // Hide download links when video is supported
51
+ });
52
+ */
53
+
54
+ // Or as the second option of VideoJS.setup
55
+
56
+ /*
57
+ VideoJS.DOMReady(function(){
58
+ var myPlayer = VideoJS.setup("example_video_1", {
59
+ // Same options
60
+ });
61
+ });
62
+ */
63
+
64
+ </script>
65
+
66
+ <!-- Include the VideoJS Stylesheet -->
67
+ <link rel="stylesheet" href="video-js.css" type="text/css" media="screen" title="Video JS">
68
+ </head>
69
+ <body>
70
+
71
+ <!-- Begin VideoJS -->
72
+ <div class="video-js-box">
73
+ <!-- Using the Video for Everybody Embed Code http://camendesign.com/code/video_for_everybody -->
74
+ <video id="example_video_1" class="video-js" width="640" height="264" controls="controls" preload="auto" poster="http://video-js.zencoder.com/oceans-clip.png">
75
+ <source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
76
+ <source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm; codecs="vp8, vorbis"' />
77
+ <source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg; codecs="theora, vorbis"' />
78
+ <!-- Flash Fallback. Use any flash video player here. Make sure to keep the vjs-flash-fallback class. -->
79
+ <object id="flash_fallback_1" class="vjs-flash-fallback" width="640" height="264" type="application/x-shockwave-flash"
80
+ data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf">
81
+ <param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" />
82
+ <param name="allowfullscreen" value="true" />
83
+ <param name="flashvars" value='config={"playlist":["http://video-js.zencoder.com/oceans-clip.png", {"url": "http://video-js.zencoder.com/oceans-clip.mp4","autoPlay":false,"autoBuffering":true}]}' />
84
+ <!-- Image Fallback. Typically the same as the poster image. -->
85
+ <img src="http://video-js.zencoder.com/oceans-clip.png" width="640" height="264" alt="Poster Image"
86
+ title="No video playback capabilities." />
87
+ </object>
88
+ </video>
89
+ <!-- Download links provided for devices that can't play video in the browser. -->
90
+ <p class="vjs-no-video"><strong>Download Video:</strong>
91
+ <a href="http://video-js.zencoder.com/oceans-clip.mp4">MP4</a>,
92
+ <a href="http://video-js.zencoder.com/oceans-clip.webm">WebM</a>,
93
+ <a href="http://video-js.zencoder.com/oceans-clip.ogv">Ogg</a><br>
94
+ <!-- Support VideoJS by keeping this link. -->
95
+ <a href="http://videojs.com">HTML5 Video Player</a> by VideoJS
96
+ </p>
97
+ </div>
98
+ <!-- End VideoJS -->
99
+
100
+ </body>
101
+ </html>
@@ -0,0 +1,116 @@
1
+ /*
2
+ VideoJS HuCSS Skin (http://videojs.com)
3
+ Version 2.0.0
4
+ */
5
+
6
+ .hu-css .vjs-controls {
7
+ height: 47px; opacity: 0.95; color: #fff;
8
+ background: #3A3835;
9
+ }
10
+ .hu-css.video-js-box.vjs-controls-below .vjs-controls { background: #3A3835; }
11
+
12
+ .hu-css .vjs-controls > div {
13
+ top: 0;
14
+ background: none;
15
+ border-radius: 0; -webkit-border-radius: 0; -moz-border-radius: 0;
16
+ box-shadow: none; -webkit-box-shadow: none; -moz-box-shadow: none;
17
+ }
18
+
19
+ /* Top Level Items */
20
+ .hu-css .vjs-controls > div.vjs-play-control,
21
+ .hu-css .vjs-controls > div.vjs-volume-control,
22
+ .hu-css .vjs-controls > div.vjs-fullscreen-control {
23
+ bottom: 20px; height: 27px;
24
+ }
25
+ /* Bottom Level Items */
26
+ .hu-css .vjs-controls > div.vjs-progress-control, .hu-css .vjs-controls > div.vjs-time-control {
27
+ margin-top: 28px; height: 19px;
28
+ }
29
+
30
+ /* Placement of Control Items */
31
+ .hu-css .vjs-controls > div.vjs-play-control { width: 33px; left: 0px; }
32
+ .hu-css .vjs-controls > div.vjs-progress-control { width: left: 84px; right: 0; }
33
+ .hu-css .vjs-controls > div.vjs-time-control { width: 84px; left: 0px; }
34
+ .hu-css .vjs-controls > div.vjs-volume-control { width: 43px; right: 44px; }
35
+ .hu-css .vjs-controls > div.vjs-fullscreen-control { width: 43px; right: 0px; }
36
+
37
+ /* Play/Pause
38
+ -------------------------------------------------------------------------------- */
39
+ .hu-css.vjs-paused .vjs-play-control span { margin: 9px 0 0 12px; }
40
+ .hu-css.vjs-playing .vjs-play-control span { margin: 9px 0 0 12px; }
41
+ .hu-css .vjs-play-control:hover { background-color: #000; }
42
+
43
+ /* Progress
44
+ -------------------------------------------------------------------------------- */
45
+ .hu-css .vjs-progress-holder { /* Box containing play and load progresses */
46
+ height: 19px; border: none;
47
+ margin: 0px 0px 0 0px; /* Placement within the progress control item */
48
+ background: #000;
49
+ border-radius: 0; -webkit-border-radius: 0; -moz-border-radius: 0;
50
+ }
51
+ .hu-css .vjs-progress-holder div { height: 13px; margin-top: 3px; border-radius: 0; -webkit-border-radius: 0; -moz-border-radius: 0; }
52
+ .hu-css .vjs-play-progress {
53
+ /* Default */ background: #777;
54
+ /* Webkit */ background: -webkit-gradient(linear, left top, left bottom, from(#999), to(#777));
55
+ /* Firefox */ background: -moz-linear-gradient(top, #999, #777);
56
+ }
57
+ .hu-css .vjs-load-progress { background: #555; }
58
+
59
+ /* Time Display
60
+ -------------------------------------------------------------------------------- */
61
+ .hu-css .vjs-controls .vjs-time-control { font-size: 11px; background: #000; }
62
+ .hu-css .vjs-controls .vjs-time-control span { line-height: 19px; /* Centering vertically */ }
63
+
64
+ /* Volume
65
+ -------------------------------------------------------------------------------- */
66
+ /*.hu-css .vjs-volume-control:hover { background-color: #000; }*/
67
+ .hu-css .vjs-volume-control div { margin: 0 5px 0 5px; padding: 9px 0 0 0; }
68
+ .hu-css .vjs-volume-control div span { /* Individual volume bars */
69
+ margin: 0 2px 0 0; /* Space between */
70
+ width: 3px; height: 0px; /* Total height is height + bottom border */
71
+ border-bottom: 12px solid #555; /* Default (off) color and height of visible portion */
72
+ }
73
+ .hu-css .vjs-volume-control div span.vjs-volume-level-on { border-color: #fff; /* Volume on bar color */ }
74
+ /* Creating differnt bar heights through height (transparent) and bottom border (visible). */
75
+ .hu-css .vjs-volume-control div span:nth-child(1) { border-bottom-width: 2px; height: 10px; }
76
+ .hu-css .vjs-volume-control div span:nth-child(2) { border-bottom-width: 4px; height: 8px; }
77
+ .hu-css .vjs-volume-control div span:nth-child(3) { border-bottom-width: 6px; height: 6px; }
78
+ .hu-css .vjs-volume-control div span:nth-child(4) { border-bottom-width: 8px; height: 4px; }
79
+ .hu-css .vjs-volume-control div span:nth-child(5) { border-bottom-width: 10px; height: 2px; }
80
+
81
+ /* Fullscreen
82
+ -------------------------------------------------------------------------------- */
83
+ .hu-css .vjs-fullscreen-control:hover { background-color: #000; }
84
+ .hu-css .vjs-fullscreen-control div { margin: 8px 0 0 0px; padding-left: 13px; height: 13px; border-left: 1px solid #555; }
85
+ .hu-css .vjs-fullscreen-control div span:nth-child(1) { margin-right: 9px; margin-bottom: 5px; border-top: 4px solid #fff; border-right: 4px solid rgba(0,0,0,0); }
86
+ .hu-css .vjs-fullscreen-control div span:nth-child(2) { border-top: 4px solid #fff; border-left: 4px solid rgba(0,0,0,0); }
87
+ .hu-css .vjs-fullscreen-control div span:nth-child(3) { clear: both; margin: 0 9px 0 0; border-bottom: 4px solid #fff; border-right: 4px solid rgba(0,0,0,0); }
88
+ .hu-css .vjs-fullscreen-control div span:nth-child(4) { border-bottom: 4px solid #fff; border-left: 4px solid rgba(0,0,0,0); }
89
+ /* Icon when video is in fullscreen mode */
90
+ .hu-css.vjs-fullscreen .vjs-fullscreen-control div span:nth-child(1) { border: none; border-bottom: 4px solid #fff; border-left: 4px solid rgba(0,0,0,0); }
91
+ .hu-css.vjs-fullscreen .vjs-fullscreen-control div span:nth-child(2) { border: none; border-bottom: 4px solid #fff; border-right: 4px solid rgba(0,0,0,0); }
92
+ .hu-css.vjs-fullscreen .vjs-fullscreen-control div span:nth-child(3) { border: none; border-top: 4px solid #fff; border-left: 4px solid rgba(0,0,0,0); }
93
+ .hu-css.vjs-fullscreen .vjs-fullscreen-control div span:nth-child(4) { border: none; border-top: 4px solid #fff; border-right: 4px solid rgba(0,0,0,0); }
94
+
95
+ /* Big Play Button (at start)
96
+ ---------------------------------------------------------*/
97
+ .hu-css div.vjs-big-play-button {
98
+ width: 76px; height: 70px; margin: -35px 0 0 -38px;
99
+ border: 1px solid #ccc; opacity: 0.8;
100
+ border-radius: 0px; -webkit-border-radius: 0px; -moz-border-radius: 0px;
101
+
102
+ background: rgba(50,50,50,0.8);
103
+
104
+ /* CSS Shadows */
105
+ box-shadow: none; -webkit-box-shadow: none; -moz-box-shadow: none;
106
+ }
107
+ .hu-css div.vjs-big-play-button:hover {
108
+ box-shadow: 0px 0px 80px #fff; -webkit-box-shadow: 0px 0px 80px #fff; -moz-box-shadow: 0px 0px 80px #fff;
109
+ }
110
+ .hu-css div.vjs-big-play-button span {
111
+ margin: 16px 0 0 21px;
112
+ /* Drawing the play triangle with borders - http://www.infimum.dk/HTML/slantinfo.html */
113
+ border-left: 40px solid #fff; /* Width & Color of play icon */
114
+ /* Height of play icon is total top & bottom border widths. Color is transparent. */
115
+ border-top: 20px solid rgba(0,0,0,0); border-bottom: 20px solid rgba(0,0,0,0);
116
+ }
@@ -0,0 +1,111 @@
1
+ /*
2
+ VideoJS TubeCSS Skin (http://videojs.com)
3
+ Version 2.0.0
4
+ */
5
+
6
+ .tube-css .vjs-controls {
7
+ opacity: 1; color: #000;
8
+ height: 24px;
9
+ bottom: 0;
10
+ background-color: #ccc;
11
+ background: #fcfcfc -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#d0d0d0)) left top;
12
+ background: #fcfcfc -moz-linear-gradient(top, #fcfcfc, #d0d0d0) left top;
13
+ }
14
+
15
+ .tube-css .vjs-controls > div {
16
+ height: 23px; margin: 0; background: none; top: 0;
17
+ border: 1px solid #b1b1b1; border-left-color: #eee;
18
+ border-radius: 0; -webkit-border-radius: 0; -moz-border-radius: 0;
19
+ box-shadow: none; -webkit-box-shadow: none; -moz-box-shadow: none;
20
+ }
21
+
22
+ /* Placement of Control Items */
23
+ .tube-css .vjs-controls > div.vjs-play-control { width: 25px; left: 0; }
24
+ .tube-css .vjs-controls > div.vjs-progress-control { left: 102px; right: 83px; }
25
+ .tube-css .vjs-controls > div.vjs-time-control { width: 75px; left: 27px; }
26
+ .tube-css .vjs-controls > div.vjs-volume-control { width: 50px; right: 30px; }
27
+ .tube-css .vjs-controls > div.vjs-fullscreen-control { width: 30px; right: 0; }
28
+
29
+ /* Removing borders on time & progress to join them */
30
+ .tube-css .vjs-controls > div.vjs-progress-control { border-left: none; }
31
+ .tube-css .vjs-controls > div.vjs-time-control { border-right: none; }
32
+
33
+
34
+ /* Play/Pause
35
+ -------------------------------------------------------------------------------- */
36
+ .tube-css .vjs-play-control { margin-left: 0; border-left-color: #b1b1b1; }
37
+ .tube-css.vjs-paused .vjs-play-control span { border-left-color: #333; border-top-width: 7px; border-left-width: 13px; border-bottom-width: 7px; margin: 5px 0 0 7px; }
38
+ .tube-css.vjs-playing .vjs-play-control span { height: 14px; margin: 5px auto 0; border-left: 4px solid #333; border-right: 4px solid #333; }
39
+ .tube-css.vjs-paused .vjs-play-control:hover span { border-left-color: #CF1A1A; }
40
+ .tube-css.vjs-playing .vjs-play-control:hover span { border-left-color: #CF1A1A; border-right-color: #CF1A1A; }
41
+
42
+ /* Time Display
43
+ -------------------------------------------------------------------------------- */
44
+ .tube-css .vjs-controls .vjs-time-control { font-size: 11px; }
45
+ .tube-css .vjs-controls .vjs-time-control span { line-height: 25px; /* Centering vertically */ }
46
+
47
+ /* Progress
48
+ -------------------------------------------------------------------------------- */
49
+ .tube-css .vjs-progress-holder {
50
+ margin-right: 10px;
51
+ background-color: #b1b1b1;
52
+ background: #b1b1b1 -webkit-gradient(linear, left top, left bottom, from(#b1b1b1), to(#cacaca)) left top;
53
+ background: #b1b1b1 -moz-linear-gradient(top, #b1b1b1, #cacaca) left top;
54
+ border-color: #CACACA; border-bottom-color: #eaeaea;
55
+ border-radius: 0; -webkit-border-radius: 0; -moz-border-radius: 0;
56
+ }
57
+ .tube-css .vjs-progress-control .vjs-load-progress { background: #C89191; border-radius: 0; -webkit-border-radius: 0; -moz-border-radius: 0; }
58
+ .tube-css .vjs-progress-control .vjs-play-progress { background: #f33; background: -webkit-gradient(linear, left top, left bottom, from(#f33), to(#CF1A1A)); background: -moz-linear-gradient(top, #f33, #CF1A1A); -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; }
59
+
60
+ /* Volume
61
+ -------------------------------------------------------------------------------- */
62
+ .tube-css .vjs-volume-control div { padding: 3px 0 0 0; }
63
+ .tube-css .vjs-volume-control div span { border-bottom-color: #ccc; }
64
+ /* Volume icon color */
65
+ .tube-css .vjs-volume-control div span.vjs-volume-level-on { border-color: #333; }
66
+ /* Volume icon hovering color */
67
+ .tube-css .vjs-volume-control:hover div span.vjs-volume-level-on { border-color: #CF1A1A; }
68
+
69
+ /* Fullscreen
70
+ -------------------------------------------------------------------------------- */
71
+ .tube-css .vjs-fullscreen-control div { margin: 4px 0 0 8px; }
72
+ /* Fullscreen icon color */
73
+ .tube-css .vjs-fullscreen-control div span:nth-child(3), .tube-css .vjs-fullscreen-control div span:nth-child(4), .tube-css.vjs-fullscreen .vjs-fullscreen-control div span:nth-child(1), .tube-css.vjs-fullscreen .vjs-fullscreen-control div span:nth-child(2) {
74
+ border-bottom-color: #333;
75
+ }
76
+ .tube-css .vjs-fullscreen-control div span:nth-child(1), .tube-css .vjs-fullscreen-control div span:nth-child(2), .tube-css.vjs-fullscreen .vjs-fullscreen-control div span:nth-child(3), .tube-css.vjs-fullscreen .vjs-fullscreen-control div span:nth-child(4) {
77
+ border-top-color: #333;
78
+ }
79
+ /* Fullscreen icon hovering color */
80
+ .tube-css .vjs-fullscreen-control:hover div span:nth-child(3), .tube-css .vjs-fullscreen-control:hover div span:nth-child(4), .tube-css.vjs-fullscreen .vjs-fullscreen-control:hover div span:nth-child(1), .tube-css.vjs-fullscreen .vjs-fullscreen-control:hover div span:nth-child(2) {
81
+ border-bottom-color: #CF1A1A;
82
+ }
83
+ .tube-css .vjs-fullscreen-control:hover div span:nth-child(1), .tube-css .vjs-fullscreen-control:hover div span:nth-child(2), .tube-css.vjs-fullscreen .vjs-fullscreen-control:hover div span:nth-child(3), .tube-css.vjs-fullscreen .vjs-fullscreen-control:hover div span:nth-child(4) {
84
+ border-top-color: #CF1A1A;
85
+ }
86
+
87
+ /* Big Play Button (at start)
88
+ ---------------------------------------------------------*/
89
+ .tube-css div.vjs-big-play-button {
90
+ width: 84px; height: 58px; margin: -29px 0 0 -42px;
91
+ border: 2px solid #ccc; opacity: 0.9;
92
+ border-radius: 10px; -webkit-border-radius: 10px; -moz-border-radius: 10px;
93
+
94
+ /* CSS Background Gradients */
95
+ /* Default */ background-color: #333;
96
+ /* Webkit */ background: #000 -webkit-gradient(linear, left top, left bottom, from(#000), to(#333)) left 29px;
97
+ /* Firefox */ background: #000 -moz-linear-gradient(top, #000, #333) left 29px;
98
+
99
+ /* CSS Shadows */
100
+ box-shadow: none; -webkit-box-shadow: none; -moz-box-shadow: none;
101
+ }
102
+ .tube-css div.vjs-big-play-button:hover {
103
+ opacity: 1;
104
+ }
105
+ .tube-css div.vjs-big-play-button span {
106
+ margin: 11px 0 0 26px;
107
+ /* Drawing the play triangle with borders - http://www.infimum.dk/HTML/slantinfo.html */
108
+ border-left: 36px solid #fff; /* Width & Color of play icon */
109
+ /* Height of play icon is total top & bottom border widths. Color is transparent. */
110
+ border-top: 18px solid rgba(0,0,0,0); border-bottom: 18px solid rgba(0,0,0,0);
111
+ }