Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/jquery-ui-1.7.2.css |
— | — | @@ -0,0 +1,310 @@ |
| 2 | +/* |
| 3 | + * jQuery UI CSS Framework 1.8.7 |
| 4 | + * |
| 5 | + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) |
| 6 | + * Dual licensed under the MIT or GPL Version 2 licenses. |
| 7 | + * http://jquery.org/license |
| 8 | + * |
| 9 | + * http://docs.jquery.com/UI/Theming/API |
| 10 | + */ |
| 11 | + |
| 12 | +/* Layout helpers |
| 13 | +----------------------------------*/ |
| 14 | +.ui-helper-hidden { display: none; } |
| 15 | +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } |
| 16 | +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } |
| 17 | +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } |
| 18 | +.ui-helper-clearfix { display: inline-block; } |
| 19 | +/* required comment for clearfix to work in Opera \*/ |
| 20 | +* html .ui-helper-clearfix { height:1%; } |
| 21 | +.ui-helper-clearfix { display:block; } |
| 22 | +/* end clearfix */ |
| 23 | +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } |
| 24 | + |
| 25 | +/* Interaction Cues |
| 26 | +----------------------------------*/ |
| 27 | +.ui-state-disabled { cursor: default !important; } |
| 28 | + |
| 29 | + |
| 30 | +/* Icons |
| 31 | +----------------------------------*/ |
| 32 | + |
| 33 | +/* states and images */ |
| 34 | +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } |
| 35 | + |
| 36 | + |
| 37 | +/* Misc visuals |
| 38 | +----------------------------------*/ |
| 39 | + |
| 40 | +/* Overlays */ |
| 41 | +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } |
| 42 | + |
| 43 | + |
| 44 | +/* |
| 45 | + * jQuery UI CSS Framework 1.8.7 |
| 46 | + * |
| 47 | + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) |
| 48 | + * Dual licensed under the MIT or GPL Version 2 licenses. |
| 49 | + * http://jquery.org/license |
| 50 | + * |
| 51 | + * http://docs.jquery.com/UI/Theming/API |
| 52 | + * |
| 53 | + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,%20Arial,%20sans-serif&fwDefault=normal&fsDefault=11px&cornerRadius=6px&bgColorHeader=333333&bgTextureHeader=01_flat.png&bgImgOpacityHeader=70&borderColorHeader=828282&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=14_loop.png&bgImgOpacityContent=25&borderColorContent=555555&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=222222&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=35&borderColorDefault=444444&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=262626&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=50&borderColorHover=828282&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=222222&bgTextureActive=01_flat.png&bgImgOpacityActive=100&borderColorActive=3d3d3d&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=111111&bgTextureHighlight=07_diagonals_medium.png&bgImgOpacityHighlight=25&borderColorHighlight=828282&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=02_glass.png&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px |
| 54 | + */ |
| 55 | + |
| 56 | + |
| 57 | +/* Component containers |
| 58 | +----------------------------------*/ |
| 59 | +.ui-widget { font-family: Verdana, Arial, sans-serif; font-size: 11px; } |
| 60 | +.ui-widget .ui-widget { font-size: 1em; } |
| 61 | +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana, Arial, sans-serif; font-size: 1em; } |
| 62 | +.ui-widget-content { border: 1px solid #555555; background: #000000; color: #ffffff; } /* url(images/ui-bg_loop_25_000000_21x21.png) 50% 50% repeat */ |
| 63 | +.ui-widget-content a { color: #ffffff; } |
| 64 | +.ui-widget-header { border: 1px solid #828282; background: #333333 url(images/ui-bg_flat_70_333333_40x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } |
| 65 | +.ui-widget-header a { color: #ffffff; } |
| 66 | + |
| 67 | +/* Interaction states |
| 68 | +----------------------------------*/ |
| 69 | +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #606060; background: #222222 url(images/ui-bg_highlight-soft_35_222222_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #eeeeee; } |
| 70 | +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #eeeeee; text-decoration: none; } |
| 71 | +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #828282; background: #262626 url(images/ui-bg_highlight-soft_50_262626_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; } |
| 72 | +.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } |
| 73 | +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #3d3d3d; background: #222222 url(images/ui-bg_flat_100_222222_40x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; } |
| 74 | +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } |
| 75 | +.ui-widget :active { outline: none; } |
| 76 | + |
| 77 | +/* Interaction Cues |
| 78 | +----------------------------------*/ |
| 79 | +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #828282; background: #111111 url(images/ui-bg_diagonals-medium_25_111111_40x40.png) 50% 50% repeat; color: #2e7db2; } |
| 80 | +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #2e7db2; } |
| 81 | +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #ffb73d; background: #ffc73d url(images/ui-bg_glass_40_ffc73d_1x400.png) 50% 50% repeat-x; color: #111111; } |
| 82 | +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #111111; } |
| 83 | +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #111111; } |
| 84 | +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } |
| 85 | +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } |
| 86 | +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } |
| 87 | + |
| 88 | +/* Icons |
| 89 | +----------------------------------*/ |
| 90 | + |
| 91 | +/* states and images */ |
| 92 | +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_cccccc_256x240.png); } |
| 93 | +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_cccccc_256x240.png); } |
| 94 | +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } |
| 95 | +.ui-state-default .ui-icon { background-image: url(images/ui-icons_cccccc_256x240.png); } |
| 96 | +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } |
| 97 | +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } |
| 98 | +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_4b8e0b_256x240.png); } |
| 99 | +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_a83300_256x240.png); } |
| 100 | + |
| 101 | +/* positioning */ |
| 102 | +.ui-icon-carat-1-n { background-position: 0 0; } |
| 103 | +.ui-icon-carat-1-ne { background-position: -16px 0; } |
| 104 | +.ui-icon-carat-1-e { background-position: -32px 0; } |
| 105 | +.ui-icon-carat-1-se { background-position: -48px 0; } |
| 106 | +.ui-icon-carat-1-s { background-position: -64px 0; } |
| 107 | +.ui-icon-carat-1-sw { background-position: -80px 0; } |
| 108 | +.ui-icon-carat-1-w { background-position: -96px 0; } |
| 109 | +.ui-icon-carat-1-nw { background-position: -112px 0; } |
| 110 | +.ui-icon-carat-2-n-s { background-position: -128px 0; } |
| 111 | +.ui-icon-carat-2-e-w { background-position: -144px 0; } |
| 112 | +.ui-icon-triangle-1-n { background-position: 0 -16px; } |
| 113 | +.ui-icon-triangle-1-ne { background-position: -16px -16px; } |
| 114 | +.ui-icon-triangle-1-e { background-position: -32px -16px; } |
| 115 | +.ui-icon-triangle-1-se { background-position: -48px -16px; } |
| 116 | +.ui-icon-triangle-1-s { background-position: -64px -16px; } |
| 117 | +.ui-icon-triangle-1-sw { background-position: -80px -16px; } |
| 118 | +.ui-icon-triangle-1-w { background-position: -96px -16px; } |
| 119 | +.ui-icon-triangle-1-nw { background-position: -112px -16px; } |
| 120 | +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } |
| 121 | +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } |
| 122 | +.ui-icon-arrow-1-n { background-position: 0 -32px; } |
| 123 | +.ui-icon-arrow-1-ne { background-position: -16px -32px; } |
| 124 | +.ui-icon-arrow-1-e { background-position: -32px -32px; } |
| 125 | +.ui-icon-arrow-1-se { background-position: -48px -32px; } |
| 126 | +.ui-icon-arrow-1-s { background-position: -64px -32px; } |
| 127 | +.ui-icon-arrow-1-sw { background-position: -80px -32px; } |
| 128 | +.ui-icon-arrow-1-w { background-position: -96px -32px; } |
| 129 | +.ui-icon-arrow-1-nw { background-position: -112px -32px; } |
| 130 | +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } |
| 131 | +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } |
| 132 | +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } |
| 133 | +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } |
| 134 | +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } |
| 135 | +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } |
| 136 | +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } |
| 137 | +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } |
| 138 | +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } |
| 139 | +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } |
| 140 | +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } |
| 141 | +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } |
| 142 | +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } |
| 143 | +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } |
| 144 | +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } |
| 145 | +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } |
| 146 | +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } |
| 147 | +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } |
| 148 | +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } |
| 149 | +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } |
| 150 | +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } |
| 151 | +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } |
| 152 | +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } |
| 153 | +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } |
| 154 | +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } |
| 155 | +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } |
| 156 | +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } |
| 157 | +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } |
| 158 | +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } |
| 159 | +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } |
| 160 | +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } |
| 161 | +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } |
| 162 | +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } |
| 163 | +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } |
| 164 | +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } |
| 165 | +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } |
| 166 | +.ui-icon-arrow-4 { background-position: 0 -80px; } |
| 167 | +.ui-icon-arrow-4-diag { background-position: -16px -80px; } |
| 168 | +.ui-icon-extlink { background-position: -32px -80px; } |
| 169 | +.ui-icon-newwin { background-position: -48px -80px; } |
| 170 | +.ui-icon-refresh { background-position: -64px -80px; } |
| 171 | +.ui-icon-shuffle { background-position: -80px -80px; } |
| 172 | +.ui-icon-transfer-e-w { background-position: -96px -80px; } |
| 173 | +.ui-icon-transferthick-e-w { background-position: -112px -80px; } |
| 174 | +.ui-icon-folder-collapsed { background-position: 0 -96px; } |
| 175 | +.ui-icon-folder-open { background-position: -16px -96px; } |
| 176 | +.ui-icon-document { background-position: -32px -96px; } |
| 177 | +.ui-icon-document-b { background-position: -48px -96px; } |
| 178 | +.ui-icon-note { background-position: -64px -96px; } |
| 179 | +.ui-icon-mail-closed { background-position: -80px -96px; } |
| 180 | +.ui-icon-mail-open { background-position: -96px -96px; } |
| 181 | +.ui-icon-suitcase { background-position: -112px -96px; } |
| 182 | +.ui-icon-comment { background-position: -128px -96px; } |
| 183 | +.ui-icon-person { background-position: -144px -96px; } |
| 184 | +.ui-icon-print { background-position: -160px -96px; } |
| 185 | +.ui-icon-trash { background-position: -176px -96px; } |
| 186 | +.ui-icon-locked { background-position: -192px -96px; } |
| 187 | +.ui-icon-unlocked { background-position: -208px -96px; } |
| 188 | +.ui-icon-bookmark { background-position: -224px -96px; } |
| 189 | +.ui-icon-tag { background-position: -240px -96px; } |
| 190 | +.ui-icon-home { background-position: 0 -112px; } |
| 191 | +.ui-icon-flag { background-position: -16px -112px; } |
| 192 | +.ui-icon-calendar { background-position: -32px -112px; } |
| 193 | +.ui-icon-cart { background-position: -48px -112px; } |
| 194 | +.ui-icon-pencil { background-position: -64px -112px; } |
| 195 | +.ui-icon-clock { background-position: -80px -112px; } |
| 196 | +.ui-icon-disk { background-position: -96px -112px; } |
| 197 | +.ui-icon-calculator { background-position: -112px -112px; } |
| 198 | +.ui-icon-zoomin { background-position: -128px -112px; } |
| 199 | +.ui-icon-zoomout { background-position: -144px -112px; } |
| 200 | +.ui-icon-search { background-position: -160px -112px; } |
| 201 | +.ui-icon-wrench { background-position: -176px -112px; } |
| 202 | +.ui-icon-gear { background-position: -192px -112px; } |
| 203 | +.ui-icon-heart { background-position: -208px -112px; } |
| 204 | +.ui-icon-star { background-position: -224px -112px; } |
| 205 | +.ui-icon-link { background-position: -240px -112px; } |
| 206 | +.ui-icon-cancel { background-position: 0 -128px; } |
| 207 | +.ui-icon-plus { background-position: -16px -128px; } |
| 208 | +.ui-icon-plusthick { background-position: -32px -128px; } |
| 209 | +.ui-icon-minus { background-position: -48px -128px; } |
| 210 | +.ui-icon-minusthick { background-position: -64px -128px; } |
| 211 | +.ui-icon-close { background-position: -80px -128px; } |
| 212 | +.ui-icon-closethick { background-position: -96px -128px; } |
| 213 | +.ui-icon-key { background-position: -112px -128px; } |
| 214 | +.ui-icon-lightbulb { background-position: -128px -128px; } |
| 215 | +.ui-icon-scissors { background-position: -144px -128px; } |
| 216 | +.ui-icon-clipboard { background-position: -160px -128px; } |
| 217 | +.ui-icon-copy { background-position: -176px -128px; } |
| 218 | +.ui-icon-contact { background-position: -192px -128px; } |
| 219 | +.ui-icon-image { background-position: -208px -128px; } |
| 220 | +.ui-icon-video { background-position: -224px -128px; } |
| 221 | +.ui-icon-script { background-position: -240px -128px; } |
| 222 | +.ui-icon-alert { background-position: 0 -144px; } |
| 223 | +.ui-icon-info { background-position: -16px -144px; } |
| 224 | +.ui-icon-notice { background-position: -32px -144px; } |
| 225 | +.ui-icon-help { background-position: -48px -144px; } |
| 226 | +.ui-icon-check { background-position: -64px -144px; } |
| 227 | +.ui-icon-bullet { background-position: -80px -144px; } |
| 228 | +.ui-icon-radio-off { background-position: -96px -144px; } |
| 229 | +.ui-icon-radio-on { background-position: -112px -144px; } |
| 230 | +.ui-icon-pin-w { background-position: -128px -144px; } |
| 231 | +.ui-icon-pin-s { background-position: -144px -144px; } |
| 232 | +.ui-icon-play { background-position: 0 -160px; } |
| 233 | +.ui-icon-pause { background-position: -16px -160px; } |
| 234 | +.ui-icon-seek-next { background-position: -32px -160px; } |
| 235 | +.ui-icon-seek-prev { background-position: -48px -160px; } |
| 236 | +.ui-icon-seek-end { background-position: -64px -160px; } |
| 237 | + |
| 238 | +.ui-icon-seek-first { background-position: -80px -160px; } |
| 239 | +.ui-icon-stop { background-position: -96px -160px; } |
| 240 | +.ui-icon-eject { background-position: -112px -160px; } |
| 241 | +.ui-icon-volume-off { background-position: -128px -160px; } |
| 242 | +.ui-icon-volume-on { background-position: -144px -160px; } |
| 243 | +.ui-icon-power { background-position: 0 -176px; } |
| 244 | +.ui-icon-signal-diag { background-position: -16px -176px; } |
| 245 | +.ui-icon-signal { background-position: -32px -176px; } |
| 246 | +.ui-icon-battery-0 { background-position: -48px -176px; } |
| 247 | +.ui-icon-battery-1 { background-position: -64px -176px; } |
| 248 | +.ui-icon-battery-2 { background-position: -80px -176px; } |
| 249 | +.ui-icon-battery-3 { background-position: -96px -176px; } |
| 250 | +.ui-icon-circle-plus { background-position: 0 -192px; } |
| 251 | +.ui-icon-circle-minus { background-position: -16px -192px; } |
| 252 | +.ui-icon-circle-close { background-position: -32px -192px; } |
| 253 | +.ui-icon-circle-triangle-e { background-position: -48px -192px; } |
| 254 | +.ui-icon-circle-triangle-s { background-position: -64px -192px; } |
| 255 | +.ui-icon-circle-triangle-w { background-position: -80px -192px; } |
| 256 | +.ui-icon-circle-triangle-n { background-position: -96px -192px; } |
| 257 | +.ui-icon-circle-arrow-e { background-position: -112px -192px; } |
| 258 | +.ui-icon-circle-arrow-s { background-position: -128px -192px; } |
| 259 | +.ui-icon-circle-arrow-w { background-position: -144px -192px; } |
| 260 | +.ui-icon-circle-arrow-n { background-position: -160px -192px; } |
| 261 | +.ui-icon-circle-zoomin { background-position: -176px -192px; } |
| 262 | +.ui-icon-circle-zoomout { background-position: -192px -192px; } |
| 263 | +.ui-icon-circle-check { background-position: -208px -192px; } |
| 264 | +.ui-icon-circlesmall-plus { background-position: 0 -208px; } |
| 265 | +.ui-icon-circlesmall-minus { background-position: -16px -208px; } |
| 266 | +.ui-icon-circlesmall-close { background-position: -32px -208px; } |
| 267 | +.ui-icon-squaresmall-plus { background-position: -48px -208px; } |
| 268 | +.ui-icon-squaresmall-minus { background-position: -64px -208px; } |
| 269 | +.ui-icon-squaresmall-close { background-position: -80px -208px; } |
| 270 | +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } |
| 271 | +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } |
| 272 | +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } |
| 273 | +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } |
| 274 | +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } |
| 275 | +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } |
| 276 | + |
| 277 | + |
| 278 | +/* Misc visuals |
| 279 | +----------------------------------*/ |
| 280 | + |
| 281 | +/* Corner radius */ |
| 282 | +.ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; } |
| 283 | +.ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; } |
| 284 | +.ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; } |
| 285 | +.ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; } |
| 286 | +.ui-corner-top { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; } |
| 287 | +.ui-corner-bottom { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; } |
| 288 | +.ui-corner-right { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; } |
| 289 | +.ui-corner-left { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; } |
| 290 | +.ui-corner-all { -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } |
| 291 | + |
| 292 | +/* Overlays */ |
| 293 | +.ui-widget-overlay { background: #5c5c5c url(images/ui-bg_flat_50_5c5c5c_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); } |
| 294 | +.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #cccccc url(images/ui-bg_flat_30_cccccc_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } |
| 295 | +.ui-slider { position: relative; text-align: left; } |
| 296 | +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } |
| 297 | +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } |
| 298 | + |
| 299 | +.ui-slider-horizontal { height: .8em; } |
| 300 | +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } |
| 301 | +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } |
| 302 | +.ui-slider-horizontal .ui-slider-range-min { left: 0; } |
| 303 | +.ui-slider-horizontal .ui-slider-range-max { right: 0; } |
| 304 | + |
| 305 | +.ui-slider-vertical { width: .8em; height: 100px; } |
| 306 | +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } |
| 307 | +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } |
| 308 | +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } |
| 309 | +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs */ |
| 310 | + |
| 311 | +.overlay-win { background: #222; } /* Custom */ |
\ No newline at end of file |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/jquery-ui-1.7.2.css |
___________________________________________________________________ |
Added: svn:mime-type |
1 | 312 | + text/plain |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_diagonals-medium_25_111111_40x40.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_diagonals-medium_25_111111_40x40.png |
___________________________________________________________________ |
Added: svn:mime-type |
2 | 313 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_70_333333_40x100.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_70_333333_40x100.png |
___________________________________________________________________ |
Added: svn:mime-type |
3 | 314 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_highlight-soft_35_222222_1x100.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_highlight-soft_35_222222_1x100.png |
___________________________________________________________________ |
Added: svn:mime-type |
4 | 315 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_loop_25_000000_21x21.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_loop_25_000000_21x21.png |
___________________________________________________________________ |
Added: svn:mime-type |
5 | 316 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_a83300_256x240.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_a83300_256x240.png |
___________________________________________________________________ |
Added: svn:mime-type |
6 | 317 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_100_222222_40x100.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_100_222222_40x100.png |
___________________________________________________________________ |
Added: svn:mime-type |
7 | 318 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_50_5c5c5c_40x100.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_50_5c5c5c_40x100.png |
___________________________________________________________________ |
Added: svn:mime-type |
8 | 319 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_cccccc_256x240.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_cccccc_256x240.png |
___________________________________________________________________ |
Added: svn:mime-type |
9 | 320 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_ffffff_256x240.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_ffffff_256x240.png |
___________________________________________________________________ |
Added: svn:mime-type |
10 | 321 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_4b8e0b_256x240.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-icons_4b8e0b_256x240.png |
___________________________________________________________________ |
Added: svn:mime-type |
11 | 322 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_glass_40_ffc73d_1x400.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_glass_40_ffc73d_1x400.png |
___________________________________________________________________ |
Added: svn:mime-type |
12 | 323 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_highlight-soft_50_262626_1x100.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_highlight-soft_50_262626_1x100.png |
___________________________________________________________________ |
Added: svn:mime-type |
13 | 324 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_30_cccccc_40x100.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/jquery.ui.themes/kaltura-dark/images/ui-bg_flat_30_cccccc_40x100.png |
___________________________________________________________________ |
Added: svn:mime-type |
14 | 325 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/common/mw.style.mwCommon.css |
— | — | @@ -186,11 +186,14 @@ |
187 | 187 | * ( without additional assets in the embedPlayer skins folder ) |
188 | 188 | */ |
189 | 189 | .play-btn-large { |
190 | | - width : 130px; |
191 | | - height : 96px; |
192 | | - background : url(images/player_big_play_button.png); |
| 190 | + width : 70px; |
| 191 | + height : 53px; |
| 192 | + background : url(images/player_big_play_button.png?1); |
193 | 193 | position : absolute; |
194 | 194 | cursor : pointer; |
195 | 195 | border : none !important; |
196 | 196 | z-index : 1; |
| 197 | +} |
| 198 | +.play-btn-large:hover { |
| 199 | + background : url(images/player_big_play_button_hover.png?1); |
197 | 200 | } |
\ No newline at end of file |
Index: branches/MwEmbedStandAlone/skins/common/images/player_big_play_button.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Index: branches/MwEmbedStandAlone/skins/common/images/player_big_play_button_hover.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/MwEmbedStandAlone/skins/common/images/player_big_play_button_hover.png |
___________________________________________________________________ |
Added: svn:mime-type |
198 | 201 | + application/octet-stream |
Index: branches/MwEmbedStandAlone/modules/Playlist/mw.Playlist.js |
— | — | @@ -106,6 +106,7 @@ |
107 | 107 | // Empty the target and setup player and playerList divs |
108 | 108 | $j( _this.target ) |
109 | 109 | .empty() |
| 110 | + .addClass( 'ui-widget-content' ) |
110 | 111 | .css('position', 'relative' ) |
111 | 112 | .append( |
112 | 113 | $j( '<span />' ) |
— | — | @@ -521,11 +522,11 @@ |
522 | 523 | |
523 | 524 | // Setup ondone playing binding to play next clip (if autoContinue is true ) |
524 | 525 | if( _this.sourceHandler.autoContinue == true ){ |
525 | | - $j( embedPlayer ).unbind('ended').bind( 'ended', function(event, onDoneActionObject ){ |
| 526 | + $j( embedPlayer ).unbind('ended').bind( 'ended', function(event ){ |
526 | 527 | // Play next clip |
527 | 528 | if( _this.clipIndex + 1 < _this.sourceHandler.getClipCount() ){ |
528 | 529 | // Update the onDone action object to not run the base control done: |
529 | | - onDoneActionObject.runBaseControlDone = false; |
| 530 | + embedPlayer.onDoneInterfaceFlag = false; |
530 | 531 | _this.clipIndex++; |
531 | 532 | |
532 | 533 | // update the player and play the next clip |
— | — | @@ -536,7 +537,7 @@ |
537 | 538 | } else { |
538 | 539 | mw.log("Reached end of playlist run normal end action" ); |
539 | 540 | // Update the onDone action object to not run the base control done: |
540 | | - onDoneActionObject.runBaseControlDone = true; |
| 541 | + embedPlayer.onDoneInterfaceFlag = true; |
541 | 542 | } |
542 | 543 | }) |
543 | 544 | } |
— | — | @@ -575,11 +576,12 @@ |
576 | 577 | 'border': '0px', |
577 | 578 | 'width' : '100%' |
578 | 579 | }) |
| 580 | + .addClass('ui-state-active') |
579 | 581 | .append( |
580 | 582 | $j('<tr />') |
581 | 583 | .append( |
582 | 584 | $j( '<td />') |
583 | | - .css('width', _this.itemThumbWidth + 'px' ) |
| 585 | + .css('width', _this.itemThumbWidth + 'px' ) |
584 | 586 | .append( |
585 | 587 | $j('<img />') |
586 | 588 | .attr({ |
Index: branches/MwEmbedStandAlone/modules/SmilPlayer/mw.EmbedPlayerSmil.js |
— | — | @@ -186,8 +186,8 @@ |
187 | 187 | // Zero out the pause time: |
188 | 188 | _this.smilPauseTime = 0; |
189 | 189 | |
190 | | - // Set thumbnail_disp to false |
191 | | - this.thumbnail_disp = false; |
| 190 | + // Set posterDisplayed to false |
| 191 | + this.posterDisplayed = false; |
192 | 192 | |
193 | 193 | // Start up monitor: |
194 | 194 | _this.monitor(); |
Index: branches/MwEmbedStandAlone/modules/MiroSubs/mw.MiroSubsConfig.js |
— | — | @@ -6,6 +6,7 @@ |
7 | 7 | * http://dev.universalsubtitles.org/widget/api_demo.html |
8 | 8 | */ |
9 | 9 | mw.MiroSubsConfig = { |
| 10 | + config : null, |
10 | 11 | openDialog: function( embedPlayer, dialogReadyCallback ){ |
11 | 12 | var _this = this; |
12 | 13 | this.getConfig( embedPlayer , function( config ){ |
— | — | @@ -29,8 +30,8 @@ |
30 | 31 | getConfig : function( embedPlayer, callback ){ |
31 | 32 | var _this = this; |
32 | 33 | |
33 | | - if( _this.isConfigReady() ){ |
34 | | - callback(); |
| 34 | + if( this.config ){ |
| 35 | + callback( this.config ); |
35 | 36 | // if config is ready stop chain |
36 | 37 | return true; |
37 | 38 | } |
— | — | @@ -40,8 +41,14 @@ |
41 | 42 | |
42 | 43 | // Set initial config |
43 | 44 | this.config = this.getDefaultConfig(); |
44 | | - |
45 | 45 | |
| 46 | + // Check both the user name and subtitles have been set: |
| 47 | + var isConfigReady = function(){ |
| 48 | + if( _this.config.username && _this.config.subtitles ){ |
| 49 | + callback( _this.config ); |
| 50 | + } |
| 51 | + }; |
| 52 | + |
46 | 53 | // Make sure we are logged in:: |
47 | 54 | mw.getUserName( function( userName ){ |
48 | 55 | mw.log( "MiroSubsConfig::getUserName: " + userName ); |
— | — | @@ -51,13 +58,9 @@ |
52 | 59 | 'content' : gM('mwe-mirosubs-subs-please-login-desc') |
53 | 60 | }); |
54 | 61 | callback( false ); |
55 | | - return false; |
56 | 62 | } else { |
57 | 63 | _this.config.username = userName; |
58 | | - if( _this.isConfigReady() ){ |
59 | | - callback(); |
60 | | - return true; |
61 | | - } |
| 64 | + isConfigReady(); |
62 | 65 | } |
63 | 66 | }); |
64 | 67 | // Get the subtitles |
— | — | @@ -65,29 +68,16 @@ |
66 | 69 | mw.log("MiroSubsConfig::getSubsInMiroFormat: got" + miroSubs.length + ' subs'); |
67 | 70 | // no failure for miro subs ( just an empty object ) |
68 | 71 | _this.config.subtitles = miroSubs; |
69 | | - |
70 | | - // Once everything is setup issue the callback with the miro config: |
71 | | - if( _this.isConfigReady() ){ |
72 | | - callback(); |
73 | | - return true; |
74 | | - } |
| 72 | + isConfigReady(); |
75 | 73 | }); |
76 | 74 | }, |
77 | | - getTargetLanguage: function( callback ){ |
| 75 | + /** |
| 76 | + * Present a dialog to get the target language |
| 77 | + */ |
| 78 | + getTargetLanguageDialog: function( callback ){ |
78 | 79 | |
79 | 80 | }, |
80 | | - // Check all async values for config ready run the callback if its ready |
81 | | - isConfigReady: function(){ |
82 | | - if( this.config |
83 | | - && |
84 | | - this.config.subtitles |
85 | | - && |
86 | | - this.config.username |
87 | | - ){ |
88 | | - return true; |
89 | | - } |
90 | | - return false; |
91 | | - }, |
| 81 | + |
92 | 82 | getDefaultConfig: function(){ |
93 | 83 | var _this = this; |
94 | 84 | return { |
Index: branches/MwEmbedStandAlone/modules/TimedText/loader.js |
— | — | @@ -59,35 +59,43 @@ |
60 | 60 | // Update the player loader request with timedText library if the embedPlayer |
61 | 61 | // includes timedText tracks. |
62 | 62 | $j( mw ).bind( 'LoaderEmbedPlayerUpdateRequest', function( event, playerElement, classRequest ) { |
63 | | - |
64 | | - var mwLoadTimedTextFlag = false; |
65 | | - // Check for the TimedText.showInterface config flag |
66 | | - if( mw.getConfig( 'TimedText.showInterface' ) == 'always' ) { |
67 | | - mwLoadTimedTextFlag = true; |
| 63 | + if( mw.isTimedTextSupported( playerElement ) ) { |
| 64 | + $j.merge( classRequest, mwTimedTextRequestSet ); |
68 | 65 | } |
69 | | - |
70 | | - // If add timed text flag not already set check for track, and sources |
71 | | - if( ! mwLoadTimedTextFlag ) { |
72 | | - if( $j( playerElement ).find( 'track' ).length != 0 ) { |
73 | | - // Has an track child include timed text request |
74 | | - mwLoadTimedTextFlag = true; |
| 66 | + } ); |
| 67 | + |
| 68 | + // On new embed player check if we need to add timedText |
| 69 | + $j( mw ).bind( 'newEmbedPlayerEvent', function( event, embedPlayer ){ |
| 70 | + if( mw.isTimedTextSupported( embedPlayer) ){ |
| 71 | + if( ! embedPlayer.timedText ) { |
| 72 | + embedPlayer.timedText = new mw.TimedText( embedPlayer ); |
75 | 73 | } |
76 | | - // Check for ROE pointer or apiTitleKey |
77 | | - if ( $j( playerElement ).attr('roe') |
78 | | - || $j( playerElement ).attr( 'apiTitleKey' ) ) |
79 | | - { |
80 | | - mwLoadTimedTextFlag = true; |
81 | | - } |
82 | 74 | } |
83 | | - |
84 | | - // Add timed text items if flag set. |
85 | | - // its oky if we merge in multiple times the loader can handle it |
86 | | - if( mwLoadTimedTextFlag ) { |
87 | | - $j.merge( classRequest, mwTimedTextRequestSet ); |
| 75 | + }); |
| 76 | + |
| 77 | + /** |
| 78 | + * Check if we should load the timedText interface or not. |
| 79 | + * |
| 80 | + * Note we check for text sources outside of |
| 81 | + */ |
| 82 | + mw.isTimedTextSupported = function( embedPlayer ) { |
| 83 | + if( mw.getConfig( 'TimedText.showInterface' ) == 'always' ) { |
| 84 | + return true; |
88 | 85 | } |
89 | | - } ); |
90 | | - |
91 | | - |
| 86 | + // Check for timed text sources or api/ roe url |
| 87 | + if ( |
| 88 | + ( embedPlayer.roe || embedPlayer.apiTitleKey ) |
| 89 | + || |
| 90 | + ( embedPlayer.mediaElement && embedPlayer.mediaElement.textSourceExists() ) |
| 91 | + || |
| 92 | + $j( embedPlayer ).find( 'track' ).length != 0 |
| 93 | + ) { |
| 94 | + return true; |
| 95 | + } else { |
| 96 | + return false; |
| 97 | + } |
| 98 | + }; |
| 99 | + |
92 | 100 | // TimedText editor: |
93 | 101 | mw.addModuleLoader( 'TimedText.Edit', [ |
94 | 102 | [ |
Index: branches/MwEmbedStandAlone/modules/TimedText/mw.TimedText.js |
— | — | @@ -124,9 +124,18 @@ |
125 | 125 | } |
126 | 126 | |
127 | 127 | // Set up embedPlayer hooks: |
| 128 | + |
| 129 | + // Check for timed text support: |
| 130 | + $j( embedPlayer ).bind( 'addControlBarComponent', function(event, controlBar ){ |
| 131 | + if( mw.isTimedTextSupported( embedPlayer ) ){ |
| 132 | + controlBar.supportedComponets['timedText'] = true; |
| 133 | + controlBar.components['timedText'] = _this.getTimedTextButton(); |
| 134 | + } |
| 135 | + }); |
| 136 | + |
| 137 | + |
128 | 138 | $j( embedPlayer ).bind( 'monitorEvent', function() { |
129 | 139 | _this.monitor(); |
130 | | - return false; |
131 | 140 | } ); |
132 | 141 | |
133 | 142 | $j( embedPlayer ).bind( 'play', function() { |
— | — | @@ -135,8 +144,15 @@ |
136 | 145 | } ); |
137 | 146 | |
138 | 147 | // Resize the timed text font size per window width |
139 | | - $j( embedPlayer ).bind( 'closeFullScreen openFullScreen', function() { |
| 148 | + $j( embedPlayer ).bind( 'onCloseFullScreen onOpenFullScreen', function() { |
| 149 | + |
140 | 150 | var textOffset = _this.embedPlayer.controlBuilder.fullscreenMode ? 30 : 10; |
| 151 | + |
| 152 | + mw.log( 'set text size to: ' + _this.getInterfaceSizeTextCss({ |
| 153 | + 'width' : embedPlayer.getWidth(), |
| 154 | + 'height' : embedPlayer.$interface.height() |
| 155 | + })['font-size'] ); |
| 156 | + |
141 | 157 | embedPlayer.$interface.find( '.track' ).css( _this.getInterfaceSizeTextCss({ |
142 | 158 | 'width' : embedPlayer.getWidth(), |
143 | 159 | 'height' : embedPlayer.$interface.height() |
— | — | @@ -149,6 +165,10 @@ |
150 | 166 | |
151 | 167 | // Update the timed text size |
152 | 168 | $j( embedPlayer ).bind( 'onResizePlayer', function(e, size, animate) { |
| 169 | + mw.log( 'set text size to: ' + _this.getInterfaceSizeTextCss({ |
| 170 | + 'width' : embedPlayer.getWidth(), |
| 171 | + 'height' : embedPlayer.$interface.height() |
| 172 | + })['font-size'] ); |
153 | 173 | if (animate) { |
154 | 174 | embedPlayer.$interface.find( '.track' ).animate( _this.getInterfaceSizeTextCss( size ) ); |
155 | 175 | } else { |
— | — | @@ -172,6 +192,32 @@ |
173 | 193 | }); |
174 | 194 | |
175 | 195 | }, |
| 196 | + /** |
| 197 | + * The timed text button to be added to the interface |
| 198 | + */ |
| 199 | + getTimedTextButton: function(){ |
| 200 | + var _this = this; |
| 201 | + /** |
| 202 | + * The closed captions button |
| 203 | + */ |
| 204 | + return { |
| 205 | + 'w': 28, |
| 206 | + 'o': function( ctrlObj ) { |
| 207 | + return $j( '<div />' ) |
| 208 | + .attr( 'title', gM( 'mwe-embedplayer-timed_text' ) ) |
| 209 | + .addClass( "ui-state-default ui-corner-all ui-icon_link rButton timed-text" ) |
| 210 | + .append( |
| 211 | + $j( '<span />' ) |
| 212 | + .addClass( "ui-icon ui-icon-comment" ) |
| 213 | + ) |
| 214 | + // Captions binding: |
| 215 | + .buttonHover() |
| 216 | + .click( function() { |
| 217 | + _this.showTextMenu(); |
| 218 | + } ); |
| 219 | + } |
| 220 | + } |
| 221 | + }, |
176 | 222 | |
177 | 223 | /** |
178 | 224 | * Get the fullscreen text css |
— | — | @@ -182,6 +228,44 @@ |
183 | 229 | 'font-size' : this.getInterfaceSizePercent( size ) + '%' |
184 | 230 | }; |
185 | 231 | }, |
| 232 | + /** |
| 233 | + * Show the text interface library and show the text interface near the player. |
| 234 | + */ |
| 235 | + showTextMenu: function() { |
| 236 | + var embedPlayer = this.embedPlayer; |
| 237 | + var loc = embedPlayer.$interface.find( '.rButton.timed-text' ).offset(); |
| 238 | + mw.log('showTextInterface::' + embedPlayer.id + ' t' + loc.top + ' r' + loc.right); |
| 239 | + |
| 240 | + var $menu = $j( '#timedTextMenu_' + embedPlayer.id ); |
| 241 | + //This may be unnecessary .. we just need to show a spinner somewhere |
| 242 | + if ( $menu.length != 0 ) { |
| 243 | + // Hide show the menu: |
| 244 | + if( $menu.is( ':visible' ) ) { |
| 245 | + $menu.hide( "fast" ); |
| 246 | + }else{ |
| 247 | + // move the menu to proper location |
| 248 | + $menu.show("fast"); |
| 249 | + } |
| 250 | + }else{ |
| 251 | + //Setup the menu: |
| 252 | + $j('body').append( |
| 253 | + $j('<div>') |
| 254 | + .addClass('ui-widget ui-widget-content ui-corner-all') |
| 255 | + .attr( 'id', 'timedTextMenu_' + embedPlayer.id ) |
| 256 | + .css( { |
| 257 | + 'position' : 'absolute', |
| 258 | + 'z-index' : 10, |
| 259 | + 'height' : '180px', |
| 260 | + 'width' : '180px', |
| 261 | + 'font-size' : '12px', |
| 262 | + 'display' : 'none' |
| 263 | + } ) |
| 264 | + |
| 265 | + ); |
| 266 | + // Load text interface ( if not already loaded ) |
| 267 | + $j( '#' + embedPlayer.id ).timedText( 'showMenu', '#timedTextMenu_' + embedPlayer.id ); |
| 268 | + } |
| 269 | + }, |
186 | 270 | getInterfaceSizePercent: function( size ) { |
187 | 271 | // Some arbitrary scale relative to window size ( 400px wide is text size 105% ) |
188 | 272 | var textSize = size.width / 5; |
— | — | @@ -896,8 +980,10 @@ |
897 | 981 | var text = source.getTimedText( time ); |
898 | 982 | |
899 | 983 | // We do a type comparison so that "undefined" != "false" |
900 | | - if( text === this.prevText[ source.category ] ) |
| 984 | + // ( check if we are updating the text ) |
| 985 | + if( text === this.prevText[ source.category ] ){ |
901 | 986 | return ; |
| 987 | + } |
902 | 988 | |
903 | 989 | //mw.log( 'mw.TimedText:: updateTextDisplay: ' + text ); |
904 | 990 | |
— | — | @@ -910,7 +996,6 @@ |
911 | 997 | $textTarget = $playerTarget.find( '.track_' + source.category + ' span' ); |
912 | 998 | } |
913 | 999 | |
914 | | - |
915 | 1000 | // If text is "false" fade out the subtitle: |
916 | 1001 | if( text === false ) { |
917 | 1002 | $textTarget.fadeOut('fast'); |
— | — | @@ -919,11 +1004,13 @@ |
920 | 1005 | if( ! $textTarget.is(':visible') ) { |
921 | 1006 | $textTarget.fadeIn('fast'); |
922 | 1007 | } |
923 | | - // Update text ( use "html" instead of "text" so that parsers can swap in html for formating |
| 1008 | + // Update text ( use "html" instead of "text" so that subtitle format can |
| 1009 | + // include html formating |
| 1010 | + // TOOD we should scrub this for non-formating html |
924 | 1011 | $textTarget.html( text ); |
925 | 1012 | |
926 | | - // Update any links to point to |
927 | | - $textTarget.find( 'a' ).attr( 'target', '_new' ); |
| 1013 | + // Update any links to point to a new window |
| 1014 | + $textTarget.find( 'a' ).attr( 'target', '_blank' ); |
928 | 1015 | } |
929 | 1016 | // mw.log( ' len: ' + $textTarget.length + ' ' + $textTarget.html() ); |
930 | 1017 | // Update the prev text: |
— | — | @@ -945,6 +1032,7 @@ |
946 | 1033 | // Setup the display text div: |
947 | 1034 | var layoutMode = this.getLayoutMode(); |
948 | 1035 | if( layoutMode == 'ontop' ) { |
| 1036 | + this.embedPlayer.controlBuilder.displayOptionsMenuFlag = false; |
949 | 1037 | var $track = $j('<div>') |
950 | 1038 | .addClass( 'track' + ' ' + 'track_' + category ) |
951 | 1039 | .css( { |
— | — | @@ -970,12 +1058,15 @@ |
971 | 1059 | $playerTarget.append( $track ); |
972 | 1060 | |
973 | 1061 | } else if ( layoutMode == 'below') { |
974 | | - // Set the belowBar size to 60 pxiles: |
| 1062 | + this.embedPlayer.controlBuilder.displayOptionsMenuFlag = true; |
| 1063 | + // Set the belowBar size to 60 pixels: |
975 | 1064 | var belowBarHeight = 60; |
976 | 1065 | // Append before controls: |
977 | 1066 | $playerTarget.find( '.control-bar' ).before( |
978 | 1067 | $j('<div>').addClass( 'track' + ' ' + 'track_' + category ) |
979 | 1068 | .css({ |
| 1069 | + 'position' : 'absolute', |
| 1070 | + 'top' : this.embedPlayer.getHeight(), |
980 | 1071 | 'display' : 'block', |
981 | 1072 | 'width' : '100%', |
982 | 1073 | 'height' : belowBarHeight + 'px', |
Index: branches/MwEmbedStandAlone/modules/TimedText/remotes/RemoteMwTimedText.js |
— | — | @@ -7,8 +7,7 @@ |
8 | 8 | |
9 | 9 | mw.addMessageKeys( [ |
10 | 10 | "mwe-timedtext-language-subtitles-for-clip", |
11 | | - "mwe-timedtext-language-no-subtitles-for-clip", |
12 | | - "mwe-timedtext-all-subtitles" |
| 11 | + "mwe-timedtext-language-no-subtitles-for-clip" |
13 | 12 | ]); |
14 | 13 | |
15 | 14 | RemoteMwTimedText = function( options ) { |
— | — | @@ -82,8 +81,8 @@ |
83 | 82 | _this.embedPlayerLang(); |
84 | 83 | }); |
85 | 84 | }, |
86 | | - /* |
87 | | - * embeds a player with the current language key pre selected |
| 85 | + /** |
| 86 | + * Embeds a player with the current language key pre selected |
88 | 87 | */ |
89 | 88 | embedPlayerLang: function() { |
90 | 89 | var _this = this; |
— | — | @@ -124,16 +123,14 @@ |
125 | 124 | // Add the page msg to the top |
126 | 125 | $j( _this.target ).prepend( |
127 | 126 | $j('<h3>') |
128 | | - .html( |
129 | | - gM( pageMsgKey, [ mw.Language.names[ _this.langKey ], $fileLink.html() ] ) |
130 | | - ) |
| 127 | + .html( |
| 128 | + gM( pageMsgKey, [ mw.Language.names[ _this.langKey ], $fileLink.html() ] ) |
| 129 | + ) |
131 | 130 | ); |
132 | 131 | // Select the language if possible: |
133 | 132 | if( source ) { |
134 | 133 | player.timedText.selectTextSource( source ); |
135 | 134 | } |
136 | | - // Un-hide the player |
137 | | - $j('.videoLoading').show(); |
138 | 135 | } ); |
139 | 136 | } ); |
140 | 137 | }, |
Index: branches/MwEmbedStandAlone/modules/EmbedPlayer/mw.EmbedPlayer.js |
— | — | @@ -14,7 +14,44 @@ |
15 | 15 | mw.includeAllModuleMessages(); |
16 | 16 | |
17 | 17 | |
| 18 | +/** |
| 19 | + * The base source attribute checks also see: |
| 20 | + * http://dev.w3.org/html5/spec/Overview.html#the-source-element |
| 21 | + */ |
| 22 | +mw.setDefaultConfig( 'EmbedPlayer.SourceAttributes', [ |
| 23 | + // source id |
| 24 | + 'id', |
18 | 25 | |
| 26 | + // media url |
| 27 | + 'src', |
| 28 | + |
| 29 | + // Title string for the source asset |
| 30 | + 'title', |
| 31 | + |
| 32 | + // boolean if we support temporal url requests on the source media |
| 33 | + 'URLTimeEncoding', |
| 34 | + |
| 35 | + // Media has a startOffset ( used for plugins that |
| 36 | + // display ogg page time rather than presentation time |
| 37 | + 'startOffset', |
| 38 | + |
| 39 | + // A hint to the duration of the media file so that duration |
| 40 | + // can be displayed in the player without loading the media file |
| 41 | + 'durationHint', |
| 42 | + |
| 43 | + // Media start time |
| 44 | + 'start', |
| 45 | + |
| 46 | + // Media end time |
| 47 | + 'end', |
| 48 | + |
| 49 | + // If the source is the default source |
| 50 | + 'default', |
| 51 | + |
| 52 | + // titleKey ( used for api lookups ) |
| 53 | + 'titleKey' |
| 54 | +] ); |
| 55 | + |
19 | 56 | /** |
20 | 57 | * Adds jQuery binding for embedPlayer |
21 | 58 | */ |
— | — | @@ -142,7 +179,7 @@ |
143 | 180 | } |
144 | 181 | |
145 | 182 | }); |
146 | | - } |
| 183 | + }; |
147 | 184 | |
148 | 185 | } )( jQuery ); |
149 | 186 | |
— | — | @@ -202,7 +239,6 @@ |
203 | 240 | * are called; |
204 | 241 | * |
205 | 242 | * _this.checkPlayerSources() |
206 | | - * _this.checkForTimedText() // TODO Should be moved to TimedText module!!! |
207 | 243 | * _this.setupSourcePlayer() |
208 | 244 | * _this.inheritEmbedPlayer() |
209 | 245 | * _this.selectedPlayer.load() |
— | — | @@ -488,7 +524,7 @@ |
489 | 525 | } |
490 | 526 | if ( is_ready ) { |
491 | 527 | // Be sure to remove any player loader spinners |
492 | | - $j('.playerLoadingSpinner').remove(); |
| 528 | + $j('.loadingSpinner').remove(); |
493 | 529 | |
494 | 530 | mw.log( "EmbedPlayer::All on-page players ready run playerManager callbacks" ); |
495 | 531 | // Run queued functions |
— | — | @@ -565,6 +601,7 @@ |
566 | 602 | } |
567 | 603 | |
568 | 604 | var sourceAttr = mw.getConfig( 'EmbedPlayer.SourceAttributes' ); |
| 605 | + |
569 | 606 | for ( var i = 0; i < sourceAttr.length; i++ ) { // array loop: |
570 | 607 | var attr = sourceAttr[ i ]; |
571 | 608 | var attr_value = element.getAttribute( attr ); |
— | — | @@ -1231,8 +1268,8 @@ |
1232 | 1269 | // being updated) |
1233 | 1270 | 'thumbnail_updating' : false, |
1234 | 1271 | |
1235 | | - // Thumbnail display flag |
1236 | | - 'thumbnail_disp' : true, |
| 1272 | + // Poster display flag |
| 1273 | + 'posterDisplayed' : true, |
1237 | 1274 | |
1238 | 1275 | // Local variable to hold CMML meeta data about the current clip |
1239 | 1276 | // for more on CMML see: http://wiki.xiph.org/CMML |
— | — | @@ -1259,6 +1296,9 @@ |
1260 | 1297 | , |
1261 | 1298 | // if player events should be Propagated |
1262 | 1299 | '_propagateEvents': true, |
| 1300 | + |
| 1301 | + // If the onDone interface should be displayed |
| 1302 | + 'onDoneInterfaceFlag': true, |
1263 | 1303 | |
1264 | 1304 | |
1265 | 1305 | /** |
— | — | @@ -1403,8 +1443,8 @@ |
1404 | 1444 | this._propagateEvents = false; |
1405 | 1445 | }, |
1406 | 1446 | restoreEventPropagation: function(){ |
| 1447 | + this._propagateEvents = true; |
1407 | 1448 | this.startMonitor(); |
1408 | | - this._propagateEvents = true; |
1409 | 1449 | }, |
1410 | 1450 | |
1411 | 1451 | enableSeekBar: function(){ |
— | — | @@ -1420,7 +1460,7 @@ |
1421 | 1461 | * For plugin-players to update supported features |
1422 | 1462 | */ |
1423 | 1463 | updateFeatureSupport: function(){ |
1424 | | - $j( this ).trigger('updateFeatureSupport', this.supports ); |
| 1464 | + $j( this ).trigger('updateFeatureSupportEvent', this.supports ); |
1425 | 1465 | return ; |
1426 | 1466 | }, |
1427 | 1467 | |
— | — | @@ -1561,7 +1601,7 @@ |
1562 | 1602 | // callback |
1563 | 1603 | // Run embedPlayer sources hook |
1564 | 1604 | $j( _this ).triggerQueueCallback( 'checkPlayerSourcesEvent', function(){ |
1565 | | - _this.checkForTimedText(); |
| 1605 | + _this.setupSourcePlayer(); |
1566 | 1606 | }); |
1567 | 1607 | }; |
1568 | 1608 | |
— | — | @@ -1578,6 +1618,14 @@ |
1579 | 1619 | finishCheckPlayerSources(); |
1580 | 1620 | } |
1581 | 1621 | }, |
| 1622 | + /** |
| 1623 | + * Empty the player sources |
| 1624 | + */ |
| 1625 | + emptySources: function(){ |
| 1626 | + if( this.mediaElement ){ |
| 1627 | + this.mediaElement.sources = []; |
| 1628 | + } |
| 1629 | + }, |
1582 | 1630 | |
1583 | 1631 | /** |
1584 | 1632 | * Insert and play a video source ( useful for ads or bumper videos ) |
— | — | @@ -1668,38 +1716,6 @@ |
1669 | 1717 | }, |
1670 | 1718 | |
1671 | 1719 | /** |
1672 | | - * Check if we should load the timedText interface or not. |
1673 | | - * |
1674 | | - * Note we check for text sources outside of |
1675 | | - */ |
1676 | | - isTimedTextSupported: function() { |
1677 | | - // Check for timed text sources or api/ roe url |
1678 | | - if ( ( this.roe || this.apiTitleKey || |
1679 | | - this.mediaElement.textSourceExists() ) ) { |
1680 | | - return true; |
1681 | | - } else { |
1682 | | - return false; |
1683 | | - } |
1684 | | - }, |
1685 | | - |
1686 | | - /** |
1687 | | - * Check for timed Text support and load necessary libraries |
1688 | | - */ |
1689 | | - checkForTimedText: function( ) { |
1690 | | - var _this = this; |
1691 | | - mw.log( 'EmbedPlayer::checkForTimedText: ' + _this.id ); |
1692 | | - // Check for timedText support |
1693 | | - if( this.isTimedTextSupported() ) { |
1694 | | - mw.load( 'TimedText', function() { |
1695 | | - $j( '#' + _this.id ).timedText(); |
1696 | | - _this.setupSourcePlayer(); |
1697 | | - }); |
1698 | | - return ; |
1699 | | - } |
1700 | | - _this.setupSourcePlayer(); |
1701 | | - }, |
1702 | | - |
1703 | | - /** |
1704 | 1720 | * Set up the select source player |
1705 | 1721 | * |
1706 | 1722 | * issues autoSelectSource call |
— | — | @@ -1770,17 +1786,20 @@ |
1771 | 1787 | _this.updateFeatureSupport(); |
1772 | 1788 | |
1773 | 1789 | _this.getDuration(); |
1774 | | - |
1775 | | - _this.showPlayer(); |
1776 | | - |
1777 | | - // Call the global player manager to inform this video interface is |
1778 | | - // ready: |
1779 | | - mw.playerManager.playerReady( _this ); |
1780 | | - |
1781 | | - // Run the callback if provided |
1782 | | - if ( typeof callback == 'function' ){ |
1783 | | - callback(); |
1784 | | - } |
| 1790 | + |
| 1791 | + // Run player display with timeout to avoid function stacking |
| 1792 | + setTimeout(function(){ |
| 1793 | + _this.showPlayer(); |
| 1794 | + // Call the global player manager to inform this video interface is |
| 1795 | + // ready: |
| 1796 | + mw.playerManager.playerReady( _this ); |
| 1797 | + |
| 1798 | + // Run the callback if provided |
| 1799 | + if ( typeof callback == 'function' ){ |
| 1800 | + callback(); |
| 1801 | + } |
| 1802 | + },1); |
| 1803 | + |
1785 | 1804 | } ); |
1786 | 1805 | }, |
1787 | 1806 | |
— | — | @@ -1824,7 +1843,7 @@ |
1825 | 1844 | */ |
1826 | 1845 | getTimeRange: function() { |
1827 | 1846 | var end_time = (this.controlBuilder.longTimeDisp)? '/' + mw.seconds2npt( this.getDuration() ) : ''; |
1828 | | - var default_time_range = '0:00:00' + end_time; |
| 1847 | + var default_time_range = '0:00' + end_time; |
1829 | 1848 | if ( !this.mediaElement ) |
1830 | 1849 | return default_time_range; |
1831 | 1850 | if ( !this.mediaElement.selectedSource ) |
— | — | @@ -1948,10 +1967,13 @@ |
1949 | 1968 | // Run the ended trigger ( allow the ended object to prevent default |
1950 | 1969 | // actions ) |
1951 | 1970 | mw.log("EmbedPlayer::onClipDone:Trigger ended"); |
1952 | | - $j( this ).trigger( 'ended', onDoneActionObject ); |
| 1971 | + |
| 1972 | + this.tempDisableEvents(); |
| 1973 | + // TOOD we should improve the end event flow |
| 1974 | + $j( this ).trigger( 'ended' ); |
| 1975 | + |
| 1976 | + if( this.onDoneInterfaceFlag ){ |
1953 | 1977 | |
1954 | | - if( onDoneActionObject.runBaseControlDone ){ |
1955 | | - |
1956 | 1978 | // Check if we have the "loop" property set |
1957 | 1979 | if( this.loop ) { |
1958 | 1980 | this.stop(); |
— | — | @@ -1983,7 +2005,7 @@ |
1984 | 2006 | */ |
1985 | 2007 | showThumbnail: function() { |
1986 | 2008 | var _this = this; |
1987 | | - mw.log( 'EmbedPlayer::showThumbnail' + this.thumbnail_disp ); |
| 2009 | + mw.log( 'EmbedPlayer::showThumbnail' + this.posterDisplayed ); |
1988 | 2010 | |
1989 | 2011 | // Close Menu Overlay: |
1990 | 2012 | this.controlBuilder.closeMenuOverlay(); |
— | — | @@ -1992,7 +2014,7 @@ |
1993 | 2015 | this.updatePosterHTML(); |
1994 | 2016 | |
1995 | 2017 | this.paused = true; |
1996 | | - this.thumbnail_disp = true; |
| 2018 | + this.posterDisplayed = true; |
1997 | 2019 | // Make sure the controlBuilder bindings are up-to-date |
1998 | 2020 | this.controlBuilder.addControlBindings(); |
1999 | 2021 | |
— | — | @@ -2007,14 +2029,14 @@ |
2008 | 2030 | /** |
2009 | 2031 | * Show the player |
2010 | 2032 | */ |
2011 | | - showPlayer : function () { |
2012 | | - //alert( 'show player? :' + this.controls + ' is persist:' + this.isPersistentNativePlayer() ); |
| 2033 | + showPlayer: function () { |
2013 | 2034 | mw.log( 'EmbedPlayer:: Show player: ' + this.id + ' interace: w:' + this.width + ' h:' + this.height ); |
2014 | 2035 | var _this = this; |
2015 | 2036 | // Set-up the local controlBuilder instance: |
2016 | 2037 | this.controlBuilder = new mw.PlayerControlBuilder( this ); |
2017 | 2038 | var _this = this; |
2018 | | - |
| 2039 | + |
| 2040 | + |
2019 | 2041 | // Make sure we have mwplayer_interface |
2020 | 2042 | if( $j( this ).parent( '.mwplayer_interface' ).length == 0 ) { |
2021 | 2043 | // Select "player" |
— | — | @@ -2025,7 +2047,6 @@ |
2026 | 2048 | 'width' : this.width + 'px', |
2027 | 2049 | 'height' : this.height + 'px', |
2028 | 2050 | 'position' : 'relative', |
2029 | | - 'background' : '#000' |
2030 | 2051 | }) |
2031 | 2052 | ) |
2032 | 2053 | // position the "player" absolute inside the relative interface |
— | — | @@ -2044,6 +2065,12 @@ |
2045 | 2066 | 'left' : '0px', |
2046 | 2067 | 'background': null |
2047 | 2068 | }); |
| 2069 | + // if controls are not overlay add controlBuilder height to interface |
| 2070 | + if( !this.controlBuilder.checkOverlayControls() ){ |
| 2071 | + this.$interface.css('height', this.height + this.controlBuilder.getHeight() ); |
| 2072 | + } |
| 2073 | + |
| 2074 | + |
2048 | 2075 | $j( this ).show(); |
2049 | 2076 | this.controls = true; |
2050 | 2077 | } |
— | — | @@ -2065,7 +2092,7 @@ |
2066 | 2093 | // Issue a non-blocking play request |
2067 | 2094 | setTimeout(function(){ |
2068 | 2095 | _this.play(); |
2069 | | - },0) |
| 2096 | + },1) |
2070 | 2097 | } |
2071 | 2098 | |
2072 | 2099 | }, |
— | — | @@ -2230,7 +2257,7 @@ |
2231 | 2258 | if ( this.thumbnail_updating == true ) |
2232 | 2259 | $j( '#new_img_thumb_' + this.id ).stop().remove(); |
2233 | 2260 | |
2234 | | - if ( this.thumbnail_disp ) { |
| 2261 | + if ( this.posterDisplayed ) { |
2235 | 2262 | mw.log( 'set to thumb:' + src ); |
2236 | 2263 | this.thumbnail_updating = true; |
2237 | 2264 | $j( this ).append( |
— | — | @@ -2634,19 +2661,16 @@ |
2635 | 2662 | this.controlBuilder.closeMenuOverlay(); |
2636 | 2663 | |
2637 | 2664 | // Check if thumbnail is being displayed and embed html |
2638 | | - if ( this.thumbnail_disp ) { |
| 2665 | + if ( this.posterDisplayed ) { |
2639 | 2666 | if ( !this.selectedPlayer ) { |
2640 | 2667 | this.showPluginMissingHTML(); |
2641 | 2668 | return; |
2642 | 2669 | } else { |
2643 | | - this.thumbnail_disp = false; |
2644 | | - // hide any button if present: |
| 2670 | + this.posterDisplayed = false; |
| 2671 | + // Hide any button if present: |
2645 | 2672 | this.$interface.find( '.play-btn-large' ).remove(); |
2646 | 2673 | this.doEmbedHTML(); |
2647 | 2674 | } |
2648 | | - } else { |
2649 | | - // the plugin is already being displayed |
2650 | | - this.seeking = false; |
2651 | 2675 | } |
2652 | 2676 | |
2653 | 2677 | // If we previously finished playing this clip run the "replay hook" |
— | — | @@ -2733,9 +2757,11 @@ |
2734 | 2758 | .attr( 'title', gM( 'mwe-embedplayer-play_clip' ) ); |
2735 | 2759 | }, |
2736 | 2760 | |
| 2761 | + /** |
| 2762 | + * Disable event _propagateEvents for 10ms ( helps avoid event stacking ) |
| 2763 | + */ |
2737 | 2764 | tempDisableEvents: function(){ |
2738 | 2765 | var _this = this; |
2739 | | - // Disable event _propagateEvents for 10ms ( avoid pause play trigger stacking ) |
2740 | 2766 | this._propagateEvents = false; |
2741 | 2767 | setTimeout( function(){ |
2742 | 2768 | _this._propagateEvents = true; |
— | — | @@ -2768,6 +2794,8 @@ |
2769 | 2795 | // Reset current time and prev time and seek offset |
2770 | 2796 | this.currentTime = this.previousTime = this.serverSeekTime = 0; |
2771 | 2797 | |
| 2798 | + this.stopMonitor(); |
| 2799 | + |
2772 | 2800 | // Issue pause to update interface (only call this parent) |
2773 | 2801 | if( !this.paused ){ |
2774 | 2802 | this.paused = true; |
— | — | @@ -2794,8 +2822,6 @@ |
2795 | 2823 | mw.log("EmbedPlayer::Stop:: Reset play head") |
2796 | 2824 | this.updatePlayHead( 0 ); |
2797 | 2825 | |
2798 | | - // Bind play-btn-large play |
2799 | | - //this.addPlayBtnLarge(); |
2800 | 2826 | } |
2801 | 2827 | }, |
2802 | 2828 | |
— | — | @@ -2911,7 +2937,7 @@ |
2912 | 2938 | * @return {Boolean} true if playing false if not playing |
2913 | 2939 | */ |
2914 | 2940 | isPlaying : function() { |
2915 | | - if ( this.thumbnail_disp ) { |
| 2941 | + if ( this.posterDisplayed ) { |
2916 | 2942 | // in stopped state |
2917 | 2943 | return false; |
2918 | 2944 | } else if ( this.paused ) { |
— | — | @@ -2937,16 +2963,17 @@ |
2938 | 2964 | * @return {Boolean} true if stopped false if playing |
2939 | 2965 | */ |
2940 | 2966 | isStopped: function() { |
2941 | | - return this.thumbnail_disp; |
| 2967 | + return this.posterDisplayed; |
2942 | 2968 | }, |
2943 | 2969 | |
2944 | | - // xxx temporary hack we need a better stop monitor system |
| 2970 | + // TODO temporary hack we need a better stop monitor system |
2945 | 2971 | stopMonitor: function(){ |
2946 | | - this.thumbnail_disp = true; |
| 2972 | + clearInterval( this.monitorInterval ); |
| 2973 | + this.monitorInterval = 0; |
2947 | 2974 | }, |
2948 | | - // xxx temporary hack we need a better stop monitor system |
| 2975 | + // TODO temporary hack we need a better stop monitor system |
2949 | 2976 | startMonitor: function(){ |
2950 | | - this.thumbnail_disp = false; |
| 2977 | + this.monitor(); |
2951 | 2978 | }, |
2952 | 2979 | |
2953 | 2980 | /** |
— | — | @@ -3018,7 +3045,7 @@ |
3019 | 3046 | } |
3020 | 3047 | |
3021 | 3048 | //mw.log( 'Monitor:: ' + this.currentTime + ' duration: ' + ( parseInt( |
3022 | | - // this.getDuration() ) + 1 ) + ' is seeking: ' + this.seeking ); |
| 3049 | + // this.getDuration() ) + 1 ) + ' is seeking: ' + this.seeking ); |
3023 | 3050 | |
3024 | 3051 | if ( this.currentTime >= 0 && this.duration ) { |
3025 | 3052 | if ( !this.userSlide && !this.seeking ) { |
— | — | @@ -3078,8 +3105,7 @@ |
3079 | 3106 | } |
3080 | 3107 | } else { |
3081 | 3108 | // If stopped "stop" monitor: |
3082 | | - clearInterval( this.monitorInterval ); |
3083 | | - this.monitorInterval = 0; |
| 3109 | + this.stopMonitor(); |
3084 | 3110 | } |
3085 | 3111 | |
3086 | 3112 | // mw.log('trigger:monitor:: ' + this.currentTime ); |
— | — | @@ -3140,12 +3166,12 @@ |
3141 | 3167 | * perc Value between 0 and 1 for position of playhead |
3142 | 3168 | */ |
3143 | 3169 | updatePlayHead: function( perc ) { |
| 3170 | + //mw.log( 'EmbedPlayer: updatePlayHead: '+ perc); |
3144 | 3171 | $playHead = this.$interface.find( '.play_head' ); |
3145 | 3172 | if ( this.controls && $playHead.length != 0 ) { |
3146 | 3173 | var val = parseInt( perc * 1000 ); |
3147 | 3174 | $playHead.slider( 'value', val ); |
3148 | 3175 | } |
3149 | | - // @@todo should have 'progress' trigger the same as html5 |
3150 | 3176 | $j( this ).trigger('updatePlayHeadPercent', perc); |
3151 | 3177 | }, |
3152 | 3178 | |
Index: branches/MwEmbedStandAlone/modules/EmbedPlayer/skins/mw.PlayerControlBuilder.js |
— | — | @@ -163,11 +163,8 @@ |
164 | 164 | mw.log( 'PlayerControlsBuilder:: addControlComponents into:' + this.available_width ); |
165 | 165 | // Build the supportedComponets list |
166 | 166 | this.supportedComponets = $j.extend( this.supportedComponets, embedPlayer.supports ); |
167 | | - |
168 | | - // Check for timed text support: |
169 | | - if( embedPlayer.isTimedTextSupported() ){ |
170 | | - this.supportedComponets['timedText'] = true; |
171 | | - } |
| 167 | + $j(embedPlayer).trigger( 'addControlBarComponent', this); |
| 168 | + |
172 | 169 | // Check for Attribution button |
173 | 170 | if( mw.getConfig( 'EmbedPlayer.AttributionButton' ) && embedPlayer.attributionbutton ){ |
174 | 171 | this.supportedComponets[ 'attributionButton' ] = true; |
— | — | @@ -177,7 +174,21 @@ |
178 | 175 | if( mw.getConfig( 'EmbedPlayer.EnableFullscreen' ) === false ){ |
179 | 176 | this.supportedComponets[ 'fullscreen'] = false; |
180 | 177 | } |
181 | | - |
| 178 | + |
| 179 | + var addComponent = function( component_id ){ |
| 180 | + if ( _this.supportedComponets[ component_id ] ) { |
| 181 | + if ( _this.available_width > _this.components[ component_id ].w ) { |
| 182 | + // Append the component |
| 183 | + $controlBar.append( |
| 184 | + _this.getComponent( component_id ) |
| 185 | + ); |
| 186 | + _this.available_width -= _this.components[ component_id ].w; |
| 187 | + } else { |
| 188 | + mw.log( 'Not enough space for control component:' + component_id ); |
| 189 | + } |
| 190 | + } |
| 191 | + } |
| 192 | + |
182 | 193 | // Output components |
183 | 194 | for ( var component_id in this.components ) { |
184 | 195 | // Check for (component === false ) and skip |
— | — | @@ -185,8 +196,8 @@ |
186 | 197 | continue; |
187 | 198 | } |
188 | 199 | |
189 | | - // Special case with playhead skip if we have > 30px of space for it |
190 | | - if ( component_id == 'playHead' && this.available_width < 30 ){ |
| 200 | + // Special case with playhead and time ( to make sure they are to the left of everything else ) |
| 201 | + if ( component_id == 'playHead' || component_id == 'timeDisplay'){ |
191 | 202 | continue; |
192 | 203 | } |
193 | 204 | |
— | — | @@ -194,20 +205,14 @@ |
195 | 206 | if( component_id == 'fullscreen' && this.embedPlayer.height == 0 ){ |
196 | 207 | continue; |
197 | 208 | } |
198 | | - |
199 | | - // Make sure the given components is supported: |
200 | | - if ( this.supportedComponets[ component_id ] ) { |
201 | | - if ( this.available_width > this.components[ component_id ].w ) { |
202 | | - // Append the component |
203 | | - $controlBar.append( |
204 | | - _this.getComponent( component_id ) |
205 | | - ); |
206 | | - this.available_width -= this.components[ component_id ].w; |
207 | | - } else { |
208 | | - mw.log( 'Not enough space for control component:' + component_id ); |
209 | | - } |
210 | | - } |
| 209 | + addComponent( component_id ) |
211 | 210 | } |
| 211 | + // Add special case remaining components: |
| 212 | + addComponent( 'timeDisplay' ); |
| 213 | + if( this.available_width > 30 ){ |
| 214 | + addComponent( 'playHead' ); |
| 215 | + } |
| 216 | + |
212 | 217 | }, |
213 | 218 | |
214 | 219 | /** |
— | — | @@ -265,19 +270,21 @@ |
266 | 271 | * restoreWindowPlayer to restore window mode |
267 | 272 | */ |
268 | 273 | toggleFullscreen: function() { |
| 274 | + var _this = this; |
269 | 275 | if( this.fullscreenMode ){ |
270 | 276 | this.restoreWindowPlayer(); |
271 | | - $j( this.embedPlayer ).trigger( 'closeFullScreen' ); |
| 277 | + $j( this.embedPlayer ).trigger( 'onCloseFullScreen' ); |
272 | 278 | }else{ |
273 | | - this.doFullScreenPlayer(); |
274 | | - $j( this.embedPlayer ).trigger( 'openFullScreen' ); |
| 279 | + this.doFullScreenPlayer( function(){ |
| 280 | + $j( _this.embedPlayer ).trigger( 'onOpenFullScreen' ); |
| 281 | + }); |
275 | 282 | } |
276 | 283 | }, |
277 | 284 | |
278 | 285 | /** |
279 | 286 | * Do full-screen mode |
280 | 287 | */ |
281 | | - doFullScreenPlayer: function() { |
| 288 | + doFullScreenPlayer: function( callback) { |
282 | 289 | mw.log(" controlBuilder :: toggle full-screen "); |
283 | 290 | // Setup pointer to control builder : |
284 | 291 | var _this = this; |
— | — | @@ -312,7 +319,8 @@ |
313 | 320 | .hide() |
314 | 321 | .fadeIn("slow") |
315 | 322 | ); |
316 | | - |
| 323 | + |
| 324 | + |
317 | 325 | // Change the interface to absolute positioned: |
318 | 326 | this.windowPositionStyle = $interface.css( 'position' ); |
319 | 327 | this.windowZindex = $interface.css( 'z-index' ); |
— | — | @@ -329,6 +337,14 @@ |
330 | 338 | 'top' : this.windowOffset.top, |
331 | 339 | 'left' : this.windowOffset.left |
332 | 340 | } ); |
| 341 | + |
| 342 | + // If native persistent native player update z-index: |
| 343 | + if( embedPlayer.isPersistentNativePlayer() ){ |
| 344 | + $j( embedPlayer.getPlayerElement() ).css( { |
| 345 | + 'z-index': mw.getConfig( 'EmbedPlayer.fullScreenZIndex' ) + 1, |
| 346 | + 'position': 'absolute' |
| 347 | + }); |
| 348 | + } |
333 | 349 | |
334 | 350 | // Empty out the parent absolute index |
335 | 351 | _this.parentsAbsolute = []; |
— | — | @@ -361,7 +377,7 @@ |
362 | 378 | 'left' : leftOffset, |
363 | 379 | 'width' : $j( window ).width(), |
364 | 380 | 'height' : $j( window ).height() |
365 | | - }, true); |
| 381 | + }, true, callback); |
366 | 382 | |
367 | 383 | // Remove absolute css of the interface parents |
368 | 384 | $interface.parents().each( function() { |
— | — | @@ -380,6 +396,7 @@ |
381 | 397 | $interface.mousemove( function(e){ |
382 | 398 | _this.mouseMovedFlag = true; |
383 | 399 | }); |
| 400 | + |
384 | 401 | // Check every 2 seconds reset flag status: |
385 | 402 | function checkMovedMouse(){ |
386 | 403 | if( _this.fullscreenMode ){ |
— | — | @@ -409,7 +426,7 @@ |
410 | 427 | } |
411 | 428 | }); |
412 | 429 | |
413 | | - // Bind escape to restore clip resolution |
| 430 | + // Bind escape to restore in page clip |
414 | 431 | $j( window ).keyup( function(event) { |
415 | 432 | // Escape check |
416 | 433 | if( event.keyCode == 27 ){ |
— | — | @@ -439,12 +456,21 @@ |
440 | 457 | $j( embedPlayer ).animate( _this.getAspectPlayerWindowCss( size ), callback ); |
441 | 458 | // Update play button pos |
442 | 459 | $interface.find('.play-btn-large').animate( _this.getFullscreenPlayButtonCss( size ) ); |
| 460 | + |
| 461 | + if( embedPlayer.isPersistentNativePlayer() ){ |
| 462 | + $j( embedPlayer.getPlayerElement() ).animate( _this.getAspectPlayerWindowCss( size ) ); |
| 463 | + } |
443 | 464 | } else { |
444 | 465 | $interface.css( interfaceCss ); |
445 | 466 | // Update player size |
446 | 467 | $j( embedPlayer ).css( _this.getAspectPlayerWindowCss( size ) ); |
447 | 468 | // Update play button pos |
448 | 469 | $interface.find('.play-btn-large').css( _this.getFullscreenPlayButtonCss( size ) ); |
| 470 | + |
| 471 | + if( embedPlayer.isPersistentNativePlayer() ){ |
| 472 | + $j( embedPlayer.getPlayerElement() ).css( _this.getAspectPlayerWindowCss( size ) ); |
| 473 | + } |
| 474 | + |
449 | 475 | if( callback ){ |
450 | 476 | callback(); |
451 | 477 | } |
— | — | @@ -498,6 +524,13 @@ |
499 | 525 | |
500 | 526 | // Restore the body scroll bar |
501 | 527 | $j('body').css( 'overflow', 'auto' ); |
| 528 | + |
| 529 | + // If native player restore z-index: |
| 530 | + if( embedPlayer.isPersistentNativePlayer() ){ |
| 531 | + $j( embedPlayer.getPlayerElement() ).css( { |
| 532 | + 'z-index': 'auto' |
| 533 | + }); |
| 534 | + } |
502 | 535 | }); |
503 | 536 | |
504 | 537 | // Restore the play button |
— | — | @@ -542,41 +575,16 @@ |
543 | 576 | return ; |
544 | 577 | } |
545 | 578 | bindFirstPlay = true; |
546 | | - var dblClickEvent = false; |
547 | | - var lastClickTime = 0;; |
548 | | - var dblClickTime = 250; |
549 | | - $j(embedPlayer).unbind( 'click.mwPlay' ).bind( 'click.mwPlay', function( event ) { |
550 | | - // Don't support click pause / play when player is using native controls: |
| 579 | + $j(embedPlayer).click( function() { |
551 | 580 | if(embedPlayer.getPlayerElement().controls) { |
552 | 581 | return ; |
553 | 582 | } |
554 | 583 | |
555 | | - // Check for double click: |
556 | | - if( _this.supportedComponets['fullscreen'] |
557 | | - && |
558 | | - ( event.timeStamp - lastClickTime < dblClickTime ) |
559 | | - ){ |
560 | | - dblClickEvent = true; |
561 | | - // wait dblClickTime before you can trigger the next dbl click |
562 | | - setTimeout( function(){ |
563 | | - dblClickEvent = false; |
564 | | - }, dblClickTime); |
565 | | - // toggle fullscreen: |
566 | | - _this.embedPlayer.fullscreen(); |
567 | | - return ; |
| 584 | + if(embedPlayer.paused) { |
| 585 | + embedPlayer.play(); |
| 586 | + } else { |
| 587 | + embedPlayer.pause(); |
568 | 588 | } |
569 | | - setTimeout( function(){ |
570 | | - if( !dblClickEvent ){ |
571 | | - // Else treat it as a single click: |
572 | | - if(embedPlayer.paused) { |
573 | | - embedPlayer.play(); |
574 | | - } else { |
575 | | - embedPlayer.pause(); |
576 | | - } |
577 | | - _this.showControlBar(); |
578 | | - } |
579 | | - }, dblClickTime + 10); |
580 | | - lastClickTime = event.timeStamp; |
581 | 589 | }); |
582 | 590 | }); |
583 | 591 | |
— | — | @@ -685,7 +693,7 @@ |
686 | 694 | var animateDuration = 'fast'; |
687 | 695 | if(! this.embedPlayer ) |
688 | 696 | return ; |
689 | | - if( this.embedPlayer.getPlayerElement ){ |
| 697 | + if( this.embedPlayer.getPlayerElement && ! this.embedPlayer.isPersistentNativePlayer() ){ |
690 | 698 | $j( this.embedPlayer.getPlayerElement() ).css( 'z-index', '1' ); |
691 | 699 | } |
692 | 700 | mw.log( 'PlayerControlBuilder:: ShowControlBar' ); |
— | — | @@ -879,7 +887,7 @@ |
880 | 888 | doVolumeBinding: function( ) { |
881 | 889 | var embedPlayer = this.embedPlayer; |
882 | 890 | var _this = this; |
883 | | - embedPlayer.$interface.find( '.volume_control span' ).unbind().buttonHover().click( function() { |
| 891 | + embedPlayer.$interface.find( '.volume_control' ).unbind().buttonHover().click( function() { |
884 | 892 | mw.log( 'Volume control toggle' ); |
885 | 893 | embedPlayer.toggleMute(); |
886 | 894 | } ); |
— | — | @@ -1122,7 +1130,6 @@ |
1123 | 1131 | 'top' : '2px', |
1124 | 1132 | 'right' : '2px' |
1125 | 1133 | }) |
1126 | | - .buttonHover() |
1127 | 1134 | .click( function() { |
1128 | 1135 | _this.closeMenuOverlay(); |
1129 | 1136 | } ); |
— | — | @@ -1280,7 +1287,7 @@ |
1281 | 1288 | var is_selected = ( source.getSrc() == embedPlayer.mediaElement.selectedSource.getSrc() ); |
1282 | 1289 | |
1283 | 1290 | $playerSelect.append( |
1284 | | - $j( '<h2 />' ) |
| 1291 | + $j( '<h3 />' ) |
1285 | 1292 | .text( source.getTitle() ) |
1286 | 1293 | ); |
1287 | 1294 | |
— | — | @@ -1298,8 +1305,8 @@ |
1299 | 1306 | $playerLine = $j( '<span />' ) |
1300 | 1307 | .text( |
1301 | 1308 | supportingPlayers[i].getName() |
1302 | | - ) |
1303 | | - .addClass( 'ui-state-highlight ui-corner-all' ); |
| 1309 | + ); |
| 1310 | + //.addClass( 'ui-state-highlight ui-corner-all' ); removed by ran |
1304 | 1311 | } else { |
1305 | 1312 | // Non active player add link to select: |
1306 | 1313 | $playerLine = $j( '<a />') |
— | — | @@ -1367,51 +1374,8 @@ |
1368 | 1375 | // Return the player select elements |
1369 | 1376 | return $playerSelect; |
1370 | 1377 | }, |
1371 | | - |
| 1378 | + |
1372 | 1379 | /** |
1373 | | - * Show the text interface library and show the text interface near the player. |
1374 | | - */ |
1375 | | - showTextInterface: function() { |
1376 | | - var _this = this; |
1377 | | - var embedPlayer = this.embedPlayer; |
1378 | | - var loc = embedPlayer.$interface.find( '.rButton.timed-text' ).offset(); |
1379 | | - mw.log('showTextInterface::' + embedPlayer.id + ' t' + loc.top + ' r' + loc.right); |
1380 | | - |
1381 | | - |
1382 | | - var $menu = $j( '#timedTextMenu_' + embedPlayer.id ); |
1383 | | - //This may be unnecessary .. we just need to show a spinner somewhere |
1384 | | - if ( $menu.length != 0 ) { |
1385 | | - // Hide show the menu: |
1386 | | - if( $menu.is( ':visible' ) ) { |
1387 | | - $menu.hide( "fast" ); |
1388 | | - }else{ |
1389 | | - // move the menu to proper location |
1390 | | - $menu.show("fast"); |
1391 | | - } |
1392 | | - }else{ |
1393 | | - //Setup the menu: |
1394 | | - $j('body').append( |
1395 | | - $j('<div>') |
1396 | | - .addClass('ui-widget ui-widget-content ui-corner-all') |
1397 | | - .attr( 'id', 'timedTextMenu_' + embedPlayer.id ) |
1398 | | - .css( { |
1399 | | - 'position' : 'absolute', |
1400 | | - 'z-index' : 10, |
1401 | | - 'height' : '180px', |
1402 | | - 'width' : '180px', |
1403 | | - 'font-size' : '12px', |
1404 | | - 'display' : 'none' |
1405 | | - } ) |
1406 | | - |
1407 | | - ); |
1408 | | - // Load text interface ( if not already loaded ) |
1409 | | - mw.load( 'TimedText', function() { |
1410 | | - $j( '#' + embedPlayer.id ).timedText( 'showMenu', '#timedTextMenu_' + embedPlayer.id ); |
1411 | | - }); |
1412 | | - } |
1413 | | - }, |
1414 | | - |
1415 | | - /** |
1416 | 1380 | * Loads sources and calls showDownloadWithSources |
1417 | 1381 | * @param {Object} $target jQuery target to output to |
1418 | 1382 | */ |
— | — | @@ -1521,7 +1485,7 @@ |
1522 | 1486 | { |
1523 | 1487 | return this.components[ component_id ].h; |
1524 | 1488 | } |
1525 | | - return false; |
| 1489 | + return 0; |
1526 | 1490 | }, |
1527 | 1491 | |
1528 | 1492 | /** |
— | — | @@ -1535,7 +1499,7 @@ |
1536 | 1500 | { |
1537 | 1501 | return this.components[ component_id ].w; |
1538 | 1502 | } |
1539 | | - return false; |
| 1503 | + return 0; |
1540 | 1504 | }, |
1541 | 1505 | |
1542 | 1506 | /** |
— | — | @@ -1554,8 +1518,8 @@ |
1555 | 1519 | * The large play button in center of the player |
1556 | 1520 | */ |
1557 | 1521 | 'playButtonLarge': { |
1558 | | - 'w' : 130, |
1559 | | - 'h' : 96, |
| 1522 | + 'w' : 70, |
| 1523 | + 'h' : 53, |
1560 | 1524 | 'o' : function( ctrlObj ) { |
1561 | 1525 | return $j( '<div/>' ) |
1562 | 1526 | .attr( { |
— | — | @@ -1651,6 +1615,11 @@ |
1652 | 1616 | 'w': 28, |
1653 | 1617 | 'o': function( ctrlObj ) { |
1654 | 1618 | |
| 1619 | + // Setup "dobuleclick" fullscreen binding to embedPlayer |
| 1620 | + $j( ctrlObj.embedPlayer ).unbind("dblclick").bind("dblclick", function(){ |
| 1621 | + ctrlObj.embedPlayer.fullscreen(); |
| 1622 | + }); |
| 1623 | + |
1655 | 1624 | return $j( '<div />' ) |
1656 | 1625 | .attr( 'title', gM( 'mwe-embedplayer-player_fullscreen' ) ) |
1657 | 1626 | .addClass( "ui-state-default ui-corner-all ui-icon_link rButton fullscreen-btn" ) |
— | — | @@ -1660,7 +1629,7 @@ |
1661 | 1630 | ) |
1662 | 1631 | // Fullscreen binding: |
1663 | 1632 | .buttonHover().click( function() { |
1664 | | - ctrlObj.embedPlayer.fullscreen(); |
| 1633 | + ctrlObj.embedPlayer.fullscreen(); |
1665 | 1634 | } ); |
1666 | 1635 | } |
1667 | 1636 | }, |
— | — | @@ -1687,26 +1656,6 @@ |
1688 | 1657 | } |
1689 | 1658 | }, |
1690 | 1659 | |
1691 | | - /** |
1692 | | - * The closed captions button |
1693 | | - */ |
1694 | | - 'timedText': { |
1695 | | - 'w': 28, |
1696 | | - 'o': function( ctrlObj ) { |
1697 | | - return $j( '<div />' ) |
1698 | | - .attr( 'title', gM( 'mwe-embedplayer-timed_text' ) ) |
1699 | | - .addClass( "ui-state-default ui-corner-all ui-icon_link rButton timed-text" ) |
1700 | | - .append( |
1701 | | - $j( '<span />' ) |
1702 | | - .addClass( "ui-icon ui-icon-comment" ) |
1703 | | - ) |
1704 | | - // Captions binding: |
1705 | | - .buttonHover() |
1706 | | - .click( function() { |
1707 | | - ctrlObj.showTextInterface(); |
1708 | | - } ); |
1709 | | - } |
1710 | | - }, |
1711 | 1660 | |
1712 | 1661 | /** |
1713 | 1662 | * The volume control interface html |
— | — | @@ -1774,27 +1723,7 @@ |
1775 | 1724 | 'w':0, // special case (takes up remaining space) |
1776 | 1725 | 'o':function( ctrlObj ) { |
1777 | 1726 | |
1778 | | - // Set up the dissable playhead function: |
1779 | | - // TODO this will move into the disableSeekBar binding in the new thmemeing framework |
1780 | | - ctrlObj.disableSeekBar = function(){ |
1781 | | - ctrlObj.embedPlayer.$interface.find( ".play_head" ).slider( "option", "disabled", true ); |
1782 | | - } |
1783 | | - ctrlObj.enableSeekBar = function(){ |
1784 | | - ctrlObj.embedPlayer.$interface.find( ".play_head" ).slider( "option", "disabled", false ); |
1785 | | - } |
1786 | | - |
1787 | | - |
1788 | | - var embedPlayer = ctrlObj.embedPlayer; |
1789 | | - var _this = this; |
1790 | | - var $playHead = $j( '<div />' ) |
1791 | | - .addClass ( "play_head" ) |
1792 | | - .css({ |
1793 | | - "position" : 'absolute', |
1794 | | - "left" : '33px', |
1795 | | - "right" : ( ( embedPlayer.getPlayerWidth() - ctrlObj.available_width ) - 33) + 'px' |
1796 | | - }) |
1797 | | - // Playhead binding |
1798 | | - .slider( { |
| 1727 | + var sliderConfig = { |
1799 | 1728 | range: "min", |
1800 | 1729 | value: 0, |
1801 | 1730 | min: 0, |
— | — | @@ -1836,7 +1765,29 @@ |
1837 | 1766 | embedPlayer.doSeek( perc ); |
1838 | 1767 | } |
1839 | 1768 | } |
1840 | | - } ); |
| 1769 | + }; |
| 1770 | + |
| 1771 | + // Set up the disable playhead function: |
| 1772 | + // TODO this will move into the disableSeekBar binding in the new theme framework |
| 1773 | + ctrlObj.disableSeekBar = function(){ |
| 1774 | + ctrlObj.embedPlayer.$interface.find( ".play_head" ).slider( "option", "disabled", true ); |
| 1775 | + } |
| 1776 | + ctrlObj.enableSeekBar = function(){ |
| 1777 | + ctrlObj.embedPlayer.$interface.find( ".play_head" ).slider( "option", "disabled", false); |
| 1778 | + } |
| 1779 | + |
| 1780 | + |
| 1781 | + var embedPlayer = ctrlObj.embedPlayer; |
| 1782 | + var _this = this; |
| 1783 | + var $playHead = $j( '<div />' ) |
| 1784 | + .addClass ( "play_head" ) |
| 1785 | + .css({ |
| 1786 | + "position" : 'absolute', |
| 1787 | + "left" : '33px', |
| 1788 | + "right" : ( ( embedPlayer.getPlayerWidth() - ctrlObj.available_width ) - 33) + 'px' |
| 1789 | + }) |
| 1790 | + // Playhead binding |
| 1791 | + .slider( sliderConfig ); |
1841 | 1792 | |
1842 | 1793 | // Up the z-index of the default status indicator: |
1843 | 1794 | $playHead.find( '.ui-slider-handle' ).css( 'z-index', 4 ); |
Index: branches/MwEmbedStandAlone/modules/EmbedPlayer/skins/mvpcf/mw.style.PlayerSkinMvpcf.css |
— | — | @@ -119,18 +119,15 @@ |
120 | 120 | cusror: move; |
121 | 121 | } |
122 | 122 | |
123 | | - |
124 | 123 | .mv-player .overlay-win textarea { |
125 | 124 | background:none repeat scroll 0 0 transparent; |
126 | | - border-color:#333 -moz-use-text-color -moz-use-text-color #333; |
127 | | - border-style:solid none none solid; |
128 | | - border-width:2px medium medium 2px; |
129 | | - color:#222; |
130 | | - font:11px arial,sans-serif; |
| 125 | + border: 2px solid #333; |
| 126 | + color: #fff; |
| 127 | + font: 11px arial,sans-serif; |
131 | 128 | height:15px; |
132 | 129 | overflow:hidden; |
133 | 130 | padding-left:2px; |
134 | | - width:100%; |
| 131 | + width:97%; |
135 | 132 | } |
136 | 133 | |
137 | 134 | .mv-player .overlay-win div.ui-state-highlight { |
Index: branches/MwEmbedStandAlone/modules/EmbedPlayer/mw.EmbedPlayerKplayer.js |
— | — | @@ -93,13 +93,12 @@ |
94 | 94 | }, 100); |
95 | 95 | |
96 | 96 | // Flash player loses its bindings once it changes sizes:: |
97 | | - $j(_this).bind('openFullScreen', function() { |
| 97 | + $j(_this).bind('onOpenFullScreen', function() { |
98 | 98 | _this.postEmbedJS(); |
99 | 99 | }); |
100 | | - $j(_this).bind('closeFullScreen', function() { |
| 100 | + $j(_this).bind('onCloseFullScreen', function() { |
101 | 101 | _this.postEmbedJS(); |
102 | | - }) |
103 | | - |
| 102 | + }); |
104 | 103 | }, |
105 | 104 | |
106 | 105 | /** |
Index: branches/MwEmbedStandAlone/remotes/mediaWiki.js |
— | — | @@ -525,7 +525,7 @@ |
526 | 526 | if( $j( '#' + vidId ).parents( '.gallerybox,.filehistory' ).length ){ |
527 | 527 | $j( '#' + vidId ).after( |
528 | 528 | $j( '<div />') |
529 | | - .css( { |
| 529 | + .css({ |
530 | 530 | 'width' : $pimg.attr('width' ), |
531 | 531 | 'height' :$pimg.attr( 'height' ), |
532 | 532 | 'position' : 'relative', |