Featured Video Plus - Version 1.5

Version Description

AJAX!

Download this release

Release Info

Developer a.hoereth
Plugin Icon 128x128 Featured Video Plus
Version 1.5
Comparing to
See all releases

Code changes from version 1.4 to 1.5

css/backend-min.css CHANGED
@@ -1 +1,13 @@
1
- .wp-picker-holder{position:absolute;bottom:2.5em;left:-1em;z-index:1;-webkit-box-shadow:3px 3px 5px #ddd;-moz-box-shadow:3px 3px 5px #ddd;box-shadow:3px 3px 5px #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.fvp_colorpicker{position:absolute;bottom:0;right:-197px;background-color:#fff;z-index:100;border:1px solid #ccc}.defaultTextActive{color:#a1a1a1;font-style:italic}#fvp_activation_notification{border-color:#00adef!important;background-color:whiteSmoke!important}.fvp_hidden{display:none}.fvp_notice{-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;background-color:white;border-color:gray;margin:.5em 0;padding:.4em .6em .2em}.fvp_warning{-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;background-color:lightYellow;border-color:#e6db55;margin:.5em 0;padding:.4em .6em .2em}#featured_video_plus-box textarea{resize:none;width:100%;height:1.1em;line-height:1.1em;font-size:1em}.fvp_grouplable{width:100px;float:left;padding-top:2px}.fvp_grouppart1{width:200px;float:left;padding-top:2px}.fvp_readonly{color:gray!important}.fvp_invalid{background-color:#fa8072}.fvp_radio_bumper{float:left;width:100px}.fvp_input_wrapper{position:relative}#featured_video_plus-box .fvp_input{padding-right:21px}.fvp_media_icon{background:transparent no-repeat top left;display:block;width:15px;height:15px;position:absolute;top:4px;right:4px}.fvp_code_list li{margin-bottom:0}.box_topright{float:right;width:20px;height:30px;line-height:30px;text-align:center}.box_topright #fvp_remove{display:block;height:10px;width:10px;margin-top:10px;background:url('/wordpress/wp-admin/images/xit.gif') no-repeat center left}.box_topright #fvp_remove:hover{background:url('/wordpress/wp-admin/images/xit.gif') no-repeat center right}
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .wp-picker-holder{position:absolute;bottom:2.5em;left:-1em;z-index:1;-webkit-box-shadow:3px 3px 5px #ddd;-moz-box-shadow:3px 3px 5px #ddd;box-shadow:3px 3px 5px #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
2
+ .fvp_colorpicker{position:absolute;bottom:0;right:-197px;background-color:#fff;z-index:100;border:1px solid #ccc;}
3
+ .defaultTextActive{color:#a1a1a1;font-style:italic;}#fvp_activation_notification{border-color:#00adef!important;background-color:whiteSmoke!important;}
4
+ .fvp_hidden{display:none;}.fvp_notice{-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;background-color:white;border-color:gray;margin:.5em 0;padding:.4em .6em .2em;}
5
+ .fvp_warning{-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;background-color:lightYellow;border-color:#E6DB55;margin:.5em 0;padding:.4em .6em .2em;}
6
+ #featured_video_plus-box textarea{resize:none;width:100%;height:1.1em;line-height:1.1em;font-size:1em;}
7
+ .fvp_grouplable{width:100px;float:left;padding-top:2px;}.fvp_grouppart1{width:200px;float:left;padding-top:2px;}
8
+ .fvp_readonly{color:gray!important;}.fvp_invalid{background-color:#FA8072;}.fvp_radio_bumper{float:left;width:100px;}
9
+ .fvp_input_wrapper{position:relative;}#featured_video_plus-box .fvp_input{padding-right:21px;}
10
+ .fvp_media_icon{background:transparent no-repeat top left;display:block;width:15px;height:15px;position:absolute;top:4px;right:4px;}
11
+ .fvp_code_list li{margin-bottom:0;}.box_topright{float:right;width:20px;height:30px;line-height:30px;text-align:center;}
12
+ .box_topright #fvp_remove{display:block;height:10px;width:10px;margin-top:10px;background:url('/wordpress/wp-admin/images/xit.gif') no-repeat center left;}
13
+ .box_topright #fvp_remove:hover{background:url('/wordpress/wp-admin/images/xit.gif') no-repeat center right;}
css/videojs-min.css ADDED
@@ -0,0 +1 @@
 
1
+ .video-js{background-color:#000;position:relative;padding:0;font-size:10px;vertical-align:middle}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%}.video-js:-moz-full-screen{position:absolute}body.vjs-full-window{padding:0;margin:0;height:100%;overflow-y:auto}.video-js.vjs-fullscreen{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0;width:100%!important;height:100%!important;_position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.vjs-poster{margin:0 auto;padding:0;cursor:pointer;position:relative;width:100%;max-height:100%}.video-js .vjs-text-track-display{text-align:center;position:absolute;bottom:4em;left:1em;right:1em;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.video-js .vjs-text-track{display:none;color:#fff;font-size:1.4em;text-align:center;margin-bottom:.1em;background:#000;background:rgba(0,0,0,0.50)}.video-js .vjs-subtitles{color:#fff}.video-js .vjs-captions{color:#fc6}.vjs-tt-cue{display:block}.vjs-fade-in{visibility:visible!important;opacity:1!important;-webkit-transition:visibility 0s linear 0s,opacity .3s linear;-moz-transition:visibility 0s linear 0s,opacity .3s linear;-ms-transition:visibility 0s linear 0s,opacity .3s linear;-o-transition:visibility 0s linear 0s,opacity .3s linear;transition:visibility 0s linear 0s,opacity .3s linear}.vjs-fade-out{visibility:hidden!important;opacity:0!important;-webkit-transition:visibility 0s linear 1.5s,opacity 1.5s linear;-moz-transition:visibility 0s linear 1.5s,opacity 1.5s linear;-ms-transition:visibility 0s linear 1.5s,opacity 1.5s linear;-o-transition:visibility 0s linear 1.5s,opacity 1.5s linear;transition:visibility 0s linear 1.5s,opacity 1.5s linear}.vjs-default-skin .vjs-controls{position:absolute;bottom:0;left:0;right:0;margin:0;padding:0;height:2.6em;color:#fff;border-top:1px solid #404040;background:#242424;background:-moz-linear-gradient(top,#242424 50%,#1f1f1f 50%,#171717 100%);background:-webkit-gradient(linear,0% 0,0% 100%,color-stop(50%,#242424),color-stop(50%,#1f1f1f),color-stop(100%,#171717));background:-webkit-linear-gradient(top,#242424 50%,#1f1f1f 50%,#171717 100%);background:-o-linear-gradient(top,#242424 50%,#1f1f1f 50%,#171717 100%);background:-ms-linear-gradient(top,#242424 50%,#1f1f1f 50%,#171717 100%);background:linear-gradient(top,#242424 50%,#1f1f1f 50%,#171717 100%);visibility:hidden;opacity:0}.vjs-default-skin .vjs-control{position:relative;float:left;text-align:center;margin:0;padding:0;height:2.6em;width:2.6em}.vjs-default-skin .vjs-control:focus{outline:0}.vjs-default-skin .vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-default-skin .vjs-play-control{width:5em;cursor:pointer!important}.vjs-default-skin.vjs-paused .vjs-play-control div{width:15px;height:17px;background:url('video-js.png');margin:.5em auto 0}.vjs-default-skin.vjs-playing .vjs-play-control div{width:15px;height:17px;background:url('video-js.png') -25px 0;margin:.5em auto 0}.vjs-default-skin .vjs-rewind-control{width:5em;cursor:pointer!important}.vjs-default-skin .vjs-rewind-control div{width:19px;height:16px;background:url('video-js.png');margin:.5em auto 0}.vjs-default-skin .vjs-mute-control{width:3.8em;cursor:pointer!important;float:right}.vjs-default-skin .vjs-mute-control div{width:22px;height:16px;background:url('video-js.png') -75px -25px;margin:.5em auto 0}.vjs-default-skin .vjs-mute-control.vjs-vol-0 div{background:url('video-js.png') 0 -25px}.vjs-default-skin .vjs-mute-control.vjs-vol-1 div{background:url('video-js.png') -25px -25px}.vjs-default-skin .vjs-mute-control.vjs-vol-2 div{background:url('video-js.png') -50px -25px}.vjs-default-skin .vjs-volume-control{width:5em;float:right}.vjs-default-skin .vjs-volume-bar{position:relative;width:5em;height:.6em;margin:1em auto 0;cursor:pointer!important;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em;background:#666;background:-moz-linear-gradient(top,#333,#666);background:-webkit-gradient(linear,0% 0,0% 100%,from(#333),to(#666));background:-webkit-linear-gradient(top,#333,#666);background:-o-linear-gradient(top,#333,#666);background:-ms-linear-gradient(top,#333,#666);background:linear-gradient(top,#333,#666)}.vjs-default-skin .vjs-volume-level{position:absolute;top:0;left:0;height:.6em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em;background:#fff;background:-moz-linear-gradient(top,#fff,#ccc);background:-webkit-gradient(linear,0% 0,0% 100%,from(#fff),to(#ccc));background:-webkit-linear-gradient(top,#fff,#ccc);background:-o-linear-gradient(top,#fff,#ccc);background:-ms-linear-gradient(top,#fff,#ccc);background:linear-gradient(top,#fff,#ccc)}.vjs-default-skin .vjs-volume-handle{position:absolute;top:-0.2em;width:.8em;height:.8em;background:#ccc;left:0;border:1px solid #fff;-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.vjs-default-skin div.vjs-progress-control{position:absolute;left:4.8em;right:4.8em;height:1.0em;width:auto;top:-1.3em;border-bottom:1px solid #1f1f1f;border-top:1px solid #222;background:#333;background:-moz-linear-gradient(top,#222,#333);background:-webkit-gradient(linear,0% 0,0% 100%,from(#222),to(#333));background:-webkit-linear-gradient(top,#222,#333);background:-o-linear-gradient(top,#333,#222);background:-ms-linear-gradient(top,#333,#222);background:linear-gradient(top,#333,#222)}.vjs-default-skin .vjs-progress-holder{position:relative;cursor:pointer!important;padding:0;margin:0;height:1.0em;-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em;background:#111;background:-moz-linear-gradient(top,#111,#262626);background:-webkit-gradient(linear,0% 0,0% 100%,from(#111),to(#262626));background:-webkit-linear-gradient(top,#111,#262626);background:-o-linear-gradient(top,#111,#262626);background:-ms-linear-gradient(top,#111,#262626);background:linear-gradient(top,#111,#262626)}.vjs-default-skin .vjs-progress-holder .vjs-play-progress,.vjs-default-skin .vjs-progress-holder .vjs-load-progress{position:absolute;display:block;height:1.0em;margin:0;padding:0;left:0;top:0;-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.vjs-default-skin .vjs-play-progress{background:#fff;background:-moz-linear-gradient(top,#fff 0,#d6d6d6 50%,#fff 100%);background:-webkit-gradient(linear,0% 0,0% 100%,color-stop(0%,#fff),color-stop(50%,#d6d6d6),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#fff 0,#d6d6d6 50%,#fff 100%);background:-o-linear-gradient(top,#fff 0,#d6d6d6 50%,#fff 100%);background:-ms-linear-gradient(top,#fff 0,#d6d6d6 50%,#fff 100%);background:linear-gradient(top,#fff 0,#d6d6d6 50%,#fff 100%);background:#efefef;background:-moz-linear-gradient(top,#efefef 0,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);background:-webkit-gradient(linear,0% 0,0% 100%,color-stop(0%,#efefef),color-stop(50%,#f5f5f5),color-stop(50%,#dbdbdb),color-stop(100%,#f1f1f1));background:-webkit-linear-gradient(top,#efefef 0,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);background:-o-linear-gradient(top,#efefef 0,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);background:-ms-linear-gradient(top,#efefef 0,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#efefef',endColorstr='#f1f1f1',GradientType=0);background:linear-gradient(top,#efefef 0,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%)}.vjs-default-skin .vjs-load-progress{opacity:.8;background:#666;background:-moz-linear-gradient(top,#666,#333);background:-webkit-gradient(linear,0% 0,0% 100%,from(#666),to(#333));background:-webkit-linear-gradient(top,#666,#333);background:-o-linear-gradient(top,#666,#333);background:-ms-linear-gradient(top,#666,#333);background:linear-gradient(top,#666,#333)}.vjs-default-skin div.vjs-seek-handle{position:absolute;width:16px;height:16px;margin-top:-0.3em;left:0;top:0;background:url('video-js.png') 0 -50px;-moz-border-radius:.8em;-webkit-border-radius:.8em;border-radius:.8em;-webkit-box-shadow:0 2px 4px 0 #000;-moz-box-shadow:0 2px 4px 0 #000;box-shadow:0 2px 4px 0 #000}.vjs-default-skin .vjs-time-controls{position:absolute;right:0;height:1.0em;width:4.8em;top:-1.3em;border-bottom:1px solid #1f1f1f;border-top:1px solid #222;background-color:#333;font-size:1em;line-height:1.0em;font-weight:normal;font-family:Helvetica,Arial,sans-serif;background:#333;background:-moz-linear-gradient(top,#222,#333);background:-webkit-gradient(linear,0% 0,0% 100%,from(#222),to(#333));background:-webkit-linear-gradient(top,#222,#333);background:-o-linear-gradient(top,#333,#222);background:-ms-linear-gradient(top,#333,#222);background:linear-gradient(top,#333,#222)}.vjs-default-skin .vjs-current-time{left:0}.vjs-default-skin .vjs-duration{right:0;display:none}.vjs-default-skin .vjs-remaining-time{right:0}.vjs-time-divider{display:none}.vjs-default-skin .vjs-time-control{font-size:1em;line-height:1;font-weight:normal;font-family:Helvetica,Arial,sans-serif}.vjs-default-skin .vjs-time-control span{line-height:25px}.vjs-secondary-controls{float:right}.vjs-default-skin .vjs-fullscreen-control{width:3.8em;cursor:pointer!important;float:right}.vjs-default-skin .vjs-fullscreen-control div{width:16px;height:16px;background:url('video-js.png') -50px 0;margin:.5em auto 0}.vjs-default-skin.vjs-fullscreen .vjs-fullscreen-control div{background:url('video-js.png') -75px 0}.vjs-default-skin .vjs-big-play-button{display:block;z-index:2;position:absolute;top:50%;left:50%;width:8.0em;height:8.0em;margin:-42px 0 0 -42px;text-align:center;vertical-align:center;cursor:pointer!important;border:.2em solid #fff;opacity:.95;-webkit-border-radius:25px;-moz-border-radius:25px;border-radius:25px;background:#454545;background:-moz-linear-gradient(top,#454545 0,#232323 50%,#161616 50%,#3f3f3f 100%);background:-webkit-gradient(linear,0% 0,0% 100%,color-stop(0%,#454545),color-stop(50%,#232323),color-stop(50%,#161616),color-stop(100%,#3f3f3f));background:-webkit-linear-gradient(top,#454545 0,#232323 50%,#161616 50%,#3f3f3f 100%);background:-o-linear-gradient(top,#454545 0,#232323 50%,#161616 50%,#3f3f3f 100%);background:-ms-linear-gradient(top,#454545 0,#232323 50%,#161616 50%,#3f3f3f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#454545',endColorstr='#3f3f3f',GradientType=0);background:linear-gradient(top,#454545 0,#232323 50%,#161616 50%,#3f3f3f 100%);-webkit-box-shadow:4px 4px 8px #000;-moz-box-shadow:4px 4px 8px #000;box-shadow:4px 4px 8px #000}.vjs-default-skin div.vjs-big-play-button:hover{-webkit-box-shadow:0 0 80px #fff;-moz-box-shadow:0 0 80px #fff;box-shadow:0 0 80px #fff}.vjs-default-skin div.vjs-big-play-button span{position:absolute;top:50%;left:50%;display:block;width:35px;height:42px;margin:-20px 0 0 -15px;background:url('video-js.png') -100px 0}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;width:55px;height:55px;margin:-28px 0 0 -28px;-webkit-animation-name:rotatethis;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-moz-animation-name:rotatethis;-moz-animation-duration:1s;-moz-animation-iteration-count:infinite;-moz-animation-timing-function:linear}@-webkit-keyframes rotatethis{0%{-webkit-transform:scale(0.6) rotate(0deg)}12.5%{-webkit-transform:scale(0.6) rotate(0deg)}12.51%{-webkit-transform:scale(0.6) rotate(45deg)}25%{-webkit-transform:scale(0.6) rotate(45deg)}25.01%{-webkit-transform:scale(0.6) rotate(90deg)}37.5%{-webkit-transform:scale(0.6) rotate(90deg)}37.51%{-webkit-transform:scale(0.6) rotate(135deg)}50%{-webkit-transform:scale(0.6) rotate(135deg)}50.01%{-webkit-transform:scale(0.6) rotate(180deg)}62.5%{-webkit-transform:scale(0.6) rotate(180deg)}62.51%{-webkit-transform:scale(0.6) rotate(225deg)}75%{-webkit-transform:scale(0.6) rotate(225deg)}75.01%{-webkit-transform:scale(0.6) rotate(270deg)}87.5%{-webkit-transform:scale(0.6) rotate(270deg)}87.51%{-webkit-transform:scale(0.6) rotate(315deg)}100%{-webkit-transform:scale(0.6) rotate(315deg)}}@-moz-keyframes rotatethis{0%{-moz-transform:scale(0.6) rotate(0deg)}12.5%{-moz-transform:scale(0.6) rotate(0deg)}12.51%{-moz-transform:scale(0.6) rotate(45deg)}25%{-moz-transform:scale(0.6) rotate(45deg)}25.01%{-moz-transform:scale(0.6) rotate(90deg)}37.5%{-moz-transform:scale(0.6) rotate(90deg)}37.51%{-moz-transform:scale(0.6) rotate(135deg)}50%{-moz-transform:scale(0.6) rotate(135deg)}50.01%{-moz-transform:scale(0.6) rotate(180deg)}62.5%{-moz-transform:scale(0.6) rotate(180deg)}62.51%{-moz-transform:scale(0.6) rotate(225deg)}75%{-moz-transform:scale(0.6) rotate(225deg)}75.01%{-moz-transform:scale(0.6) rotate(270deg)}87.5%{-moz-transform:scale(0.6) rotate(270deg)}87.51%{-moz-transform:scale(0.6) rotate(315deg)}100%{-moz-transform:scale(0.6) rotate(315deg)}}div.vjs-loading-spinner .ball1{opacity:.12;position:absolute;left:20px;top:0;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}div.vjs-loading-spinner .ball2{opacity:.25;position:absolute;left:34px;top:6px;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}div.vjs-loading-spinner .ball3{opacity:.37;position:absolute;left:40px;top:20px;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}div.vjs-loading-spinner .ball4{opacity:.50;position:absolute;left:34px;top:34px;width:13px;height:13px;background:#fff;border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:15px;border:1px solid #ccc}div.vjs-loading-spinner .ball5{opacity:.62;position:absolute;left:20px;top:40px;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}div.vjs-loading-spinner .ball6{opacity:.75;position:absolute;left:6px;top:34px;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}div.vjs-loading-spinner .ball7{opacity:.87;position:absolute;left:0;top:20px;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}div.vjs-loading-spinner .ball8{opacity:1.00;position:absolute;left:6px;top:6px;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}.vjs-default-skin .vjs-menu-button{float:right;margin:.2em .5em 0 0;padding:0;width:3em;height:2em;cursor:pointer!important;border:1px solid #111;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em;background:#4d4d4d;background:-moz-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#4d4d4d),color-stop(50%,#3f3f3f),color-stop(50%,#333),color-stop(100%,#252525));background:-webkit-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:-o-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:-ms-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%)}.vjs-default-skin .vjs-menu-button div{background:url('video-js.png') 0 -75px no-repeat;width:16px;height:16px;margin:.2em auto 0;padding:0}.vjs-default-skin .vjs-menu-button ul{display:none;opacity:.8;padding:0;margin:0;position:absolute;width:10em;bottom:2em;max-height:15em;left:-3.5em;background-color:#111;border:2px solid #333;-moz-border-radius:.7em;-webkit-border-radius:1em;border-radius:.5em;-webkit-box-shadow:0 2px 4px 0 #000;-moz-box-shadow:0 2px 4px 0 #000;box-shadow:0 2px 4px 0 #000;overflow:auto}.vjs-default-skin .vjs-menu-button:focus ul,.vjs-default-skin .vjs-menu-button:hover ul{display:block;list-style:none}.vjs-default-skin .vjs-menu-button ul li{list-style:none;margin:0;padding:.3em 0 .3em 20px;line-height:1.4em;font-size:1.2em;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;text-align:left}.vjs-default-skin .vjs-menu-button ul li.vjs-selected{text-decoration:underline;background:url('video-js.png') -125px -50px no-repeat}.vjs-default-skin .vjs-menu-button ul li:focus,.vjs-default-skin .vjs-menu-button ul li:hover,.vjs-default-skin .vjs-menu-button ul li.vjs-selected:focus,.vjs-default-skin .vjs-menu-button ul li.vjs-selected:hover{background-color:#ccc;color:#111;outline:0}.vjs-default-skin .vjs-menu-button ul li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em 0;color:#fff;font-weight:bold;cursor:default;background:#4d4d4d;background:-moz-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#4d4d4d),color-stop(50%,#3f3f3f),color-stop(50%,#333),color-stop(100%,#252525));background:-webkit-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:-o-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:-ms-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%)}.vjs-default-skin .vjs-captions-button div{background-position:-25px -75px}.vjs-default-skin .vjs-chapters-button div{background-position:-100px -75px}.vjs-default-skin .vjs-chapters-button ul{width:20em;left:-8.5em}
featured-video-plus.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Featured Video Plus
4
  Plugin URI: https://github.com/ahoereth/featured-video-plus
5
  Description: Add Featured Videos to your posts and pages.
6
  Author: Alexander Höreth
7
- Version: 1.4
8
  Author URI: http://ahoereth.yrnxt.com
9
  License: GPL2
10
 
@@ -27,7 +27,7 @@ License: GPL2
27
  */
28
 
29
  if (!defined('FVP_VERSION'))
30
- define('FVP_VERSION', '1.4');
31
 
32
  // symlink proof
33
  $pathinfo = pathinfo(dirname(plugin_basename(__FILE__)));
@@ -60,8 +60,9 @@ if( is_admin() ) {
60
  add_action( 'admin_init', 'featured_video_plus_upgrade' );
61
 
62
  // admin meta box
63
- add_action('admin_menu', array( &$featured_video_plus_backend, 'metabox_register' ) );
64
- add_action('save_post', array( &$featured_video_plus_backend, 'metabox_save' ) );
 
65
 
66
  // enqueue admin scripts and styles
67
  add_action('admin_enqueue_scripts', array( &$featured_video_plus_backend, 'enqueue' ) );
4
  Plugin URI: https://github.com/ahoereth/featured-video-plus
5
  Description: Add Featured Videos to your posts and pages.
6
  Author: Alexander Höreth
7
+ Version: 1.5
8
  Author URI: http://ahoereth.yrnxt.com
9
  License: GPL2
10
 
27
  */
28
 
29
  if (!defined('FVP_VERSION'))
30
+ define('FVP_VERSION', '1.5');
31
 
32
  // symlink proof
33
  $pathinfo = pathinfo(dirname(plugin_basename(__FILE__)));
60
  add_action( 'admin_init', 'featured_video_plus_upgrade' );
61
 
62
  // admin meta box
63
+ add_action('admin_menu', array( &$featured_video_plus_backend, 'metabox_register' ) );
64
+ add_action('save_post', array( &$featured_video_plus_backend, 'metabox_save' ) );
65
+ add_action('wp_ajax_fvp_ajax', array( &$featured_video_plus_backend, 'ajax' ) );
66
 
67
  // enqueue admin scripts and styles
68
  add_action('admin_enqueue_scripts', array( &$featured_video_plus_backend, 'enqueue' ) );
js/backend-min.js CHANGED
@@ -1 +1,11 @@
1
- jQuery(document).ready(function(f){f(".fvp_input").blur(function(){f(this).val(f.trim(f(this).val()));e=f(this).val();if((e.length===0)||(e==fvp_backend_data.default_value)||(e==fvp_backend_data.default_value_sec)){f(this).addClass("defaultTextActive");if(f(this).attr("id")=="fvp_video"){f(this).val(fvp_backend_data.default_value)}else{f(this).val(fvp_backend_data.default_value_sec)}}f(this).trigger("autosize")});f(".fvp_input").focus(function(){e=f(this).val();if((e==fvp_backend_data.default_value)||(e==fvp_backend_data.default_value_sec)){f(this).removeClass("defaultTextActive");f(this).val("")}});f(".fvp_input").autosize().trigger("blur").keypress(function(i){if(i.keyCode==13){i.preventDefault()}});f(".fvp_input").click(function(){f(this).select()});var e=f("#fvp_video").val();if(e.length===0||e==fvp_backend_data.default_value||!e.match(fvp_backend_data.wp_upload_dir.replace(/\//g,"\\/"))){f("#fvp_sec").val(fvp_backend_data.default_value_sec);f("#fvp_sec_wrapper").hide()}f("#fvp_video").bind("change paste keyup",function(){setTimeout(h(f(this)),200)});function h(l){var k=f.trim(l.val());var j=f.trim(f("#fvp_sec").val());f("#fvp_help_notice").show("fast");if(k.length===0||k==fvp_backend_data.default_value){f("#fvp_video").css("backgroundColor","white");f("#fvp_sec").val(fvp_backend_data.default_value_sec).blur();f("#fvp_sec_wrapper").hide("fast","linear");f("#fvp_localvideo_format_warning").hide("fast","linear")}if(k.match(fvp_backend_data.wp_upload_dir.replace(/\//g,"\\/"))){var m=/^.*\/(.*)\.(.*)$/g;var i=m.exec(k);if(i[2]=="webm"||i[2]=="mp4"||i[2]=="ogg"||i[2]=="ogv"){f("#fvp_sec_wrapper").show("fast","linear");f("#fvp_video").css("backgroundColor","white");f("#fvp_localvideo_format_warning").hide("fast","linear")}else{f("#fvp_sec").val(fvp_backend_data.default_value_sec).blur();f("#fvp_sec_wrapper").hide("fast","linear");f("#fvp_video").css("backgroundColor","lightYellow");f("#fvp_localvideo_format_warning").show("fast","linear")}d()}else{f("#fvp_sec_wrapper").hide("fast","linear");f("#fvp_video").css("backgroundColor","white");f("#fvp_localvideo_format_warning").hide("fast","linear")}}f("#fvp_sec").bind("change paste keyup",function(){setTimeout(a(f(this)),200)});function a(l){var k=f.trim(l.val());var i=f.trim(f("#fvp_video").val());if(k.length===0||k==fvp_backend_data.default_value){f("#fvp_localvideo_format_warning").hide("fast");f("#fvp_sec").css("backgroundColor","white")}if(k.match(fvp_backend_data.wp_upload_dir.replace(/\//g,"\\/"))){var m=/^.*\/(.*)\.(.*)$/g;var j=m.exec(k);if(j[2]=="webm"||j[2]=="mp4"||j[2]=="ogg"||j[2]=="ogv"){d();f("#fvp_sec").css("backgroundColor","white");f("#fvp_localvideo_format_warning").hide("fast")}else{d();f("#fvp_sec").css("backgroundColor","lightYellow");f("#fvp_localvideo_format_warning").show("fast")}}else{if(k.length!==0){f("#fvp_sec").css("backgroundColor","lightYellow");f("#fvp_localvideo_notdistinct_warning").show("fast")}}}function d(){if(f("#fvp_video").val()==f("#fvp_sec").val()){f("#fvp_sec").css("backgroundColor","lightYellow");f("#fvp_localvideo_notdistinct_warning").show("fast")}else{f("#fvp_localvideo_notdistinct_warning").hide("fast");f("#fvp_sec").css("backgroundColor","white")}}f("#fvp_set_featimg_link").show();f("#fvp_set_featimg_input").hide();f("#fvp_set_featimg_link, #fvp_warning_set_featimg").click(function(){f("#fvp_set_featimg").attr("checked",true);f("#fvp_set_featimg").closest("form").submit();return false});f("#remove-post-thumbnail").click(function(){f("#fvp_featimg_box_warning").removeClass("fvp_hidden")});f("#set-post-thumbnail").click(function(){f("#fvp_featimg_box_warning").addClass("fvp_hidden")});f("#fvp_help_toggle").bind("click",function(){f("#contextual-help-link").trigger("click")});var c,g,b;b={frame:function(){if(this._frame){return this._frame}this._frame=wp.media({title:c.data("title"),library:{type:"video"},button:{text:c.data("button")},multiple:false});this._frame.on("open",this.updateFrame).state("library").on("select",this.select);return this._frame},select:function(){var j=this.get("selection"),i="url";f(c.data("target")).val(j.pluck(i)).trigger("autosize").change().removeClass("defaultTextActive")},updateFrame:function(){},init:function(){f("#wpbody").on("click",".fvp_video_choose",function(i){i.preventDefault();c=f(this).closest(".fvp_input_wrapper");b.frame().open()})}};if(fvp_backend_data.wp_35==1){b.init()}});
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function(a){function g(){a.trim(a("#fvp_video").val())==a.trim(a("#fvp_sec").val())?(a("#fvp_sec").addClass("fvp_invalid"),a("#fvp_localvideo_notdistinct_warning").slideDown("fast")):(a("#fvp_localvideo_notdistinct_warning").slideUp("fast"),a("#fvp_sec").removeClass("fvp_invalid"))}a("#fvp_video,#fvp_sec").blur(function(){var b=a(this);b.val(a.trim(b.val()));d=b.val();if(0===d.length||d==fvp_backend_data.default_value||d==fvp_backend_data.default_value_sec)b.addClass("defaultTextActive"),
2
+ b.is("#fvp_video")?b.val(fvp_backend_data.default_value):b.val(fvp_backend_data.default_value_sec);b.trigger("autosize");b.val()!=b.siblings(".fvp_mirror").val()&&(bg=b.siblings(".fvp_video_choose").children(".fvp_media_icon").css("backgroundImage"),b.siblings(".fvp_video_choose").children(".fvp_media_icon").css("backgroundImage","url('"+fvp_backend_data.loading_gif+"')"),a("#fvp_current_video").css({backgroundImage:"url('"+fvp_backend_data.loading_gif+"')",width:"256px",height:"144px"}),a.post(ajaxurl,
3
+ {action:"fvp_ajax",id:a("#post_ID").val(),fvp_nonce:a("#fvp_nonce").val(),fvp_video:a("#fvp_video").val(),fvp_sec:a("#fvp_sec").val()},function(c){b.siblings(".fvp_mirror").val(b.val());b.siblings(".fvp_video_choose").children(".fvp_media_icon").css("backgroundImage",bg);"removed"==c.typ?a("#fvp_current_video").html("").css({backgroundImage:"",width:"",height:""}):c.valid?(a("#fvp_current_video").html(c.video),b.css("backgroundColor","#00FF00").animate({backgroundColor:"white"},500,function(){b.css("backgroundColor",
4
+ "")}),a("#fvp_help_notice").slideUp("fast")):b.addClass("fvp_invalid")},"json"))});a(".fvp_input").focus(function(){d=a(this).val();if(d==fvp_backend_data.default_value||d==fvp_backend_data.default_value_sec)a(this).removeClass("defaultTextActive"),a(this).val("")});a(".fvp_input").autosize().trigger("blur").keypress(function(a){13==a.keyCode&&a.preventDefault()});a(".fvp_input").click(function(){a(this).select()});if(0<a("#fvp_video").length){var d=a("#fvp_video").val();if(0===d.length||d==fvp_backend_data.default_value||
5
+ !d.match(fvp_backend_data.wp_upload_dir.replace(/\//g,"\\/")))a("#fvp_sec").val(fvp_backend_data.default_value_sec),a("#fvp_sec_wrapper").hide()}a("#fvp_video").bind("change paste keyup",function(){var b=setTimeout,c=a(this),c=a.trim(c.val());a.trim(a("#fvp_sec").val());a("#fvp_help_notice").slideDown("fast");if(0===c.length||c==fvp_backend_data.default_value)a("#fvp_video").removeClass("fvp_invalid"),a("#fvp_sec").val(fvp_backend_data.default_value_sec).blur(),a("#fvp_sec_wrapper").slideUp("fast"),
6
+ a("#fvp_localvideo_format_warning").slideUp("fast");c.match(fvp_backend_data.wp_upload_dir.replace(/\//g,"\\/"))?(c=/^.*\/(.*)\.(.*)$/g.exec(c),"webm"==c[2]||"mp4"==c[2]||"ogg"==c[2]||"ogv"==c[2]?(a("#fvp_sec_wrapper").slideDown("fast"),a("#fvp_video").removeClass("fvp_invalid"),a("#fvp_localvideo_format_warning").slideUp("fast")):(a("#fvp_sec").val(fvp_backend_data.default_value_sec).blur(),a("#fvp_sec_wrapper").slideUp("fast"),a("#fvp_video").addClass("fvp_invalid"),a("#fvp_localvideo_format_warning").slideDown("fast",
7
+ "linear")),g()):(a("#fvp_sec_wrapper").slideUp("fast"),a("#fvp_video").removeClass("fvp_invalid"),a("#fvp_localvideo_format_warning").slideUp("fast"));b(void 0,200)});a("#fvp_sec").bind("change paste keyup",function(){var b=setTimeout,c=a(this),c=a.trim(c.val());a.trim(a("#fvp_video").val());if(0===c.length||c==fvp_backend_data.default_value)a("#fvp_localvideo_format_warning").slideUp("fast"),a("#fvp_sec").removeClass("fvp_invalid");c.match(fvp_backend_data.wp_upload_dir.replace(/\//g,"\\/"))?(c=
8
+ /^.*\/(.*)\.(.*)$/g.exec(c),"webm"==c[2]||"mp4"==c[2]||"ogg"==c[2]||"ogv"==c[2]?(a("#fvp_sec").removeClass("fvp_invalid"),a("#fvp_localvideo_format_warning").slideUp("fast"),g()):(a("#fvp_sec").addClass("fvp_invalid"),a("#fvp_localvideo_format_warning").slideDown("fast"))):0!==c.length&&(a("#fvp_sec").addClass("fvp_invalid"),a("#fvp_localvideo_notdistinct_warning").slideDown("fast"));b(void 0,200)});a("#fvp_set_featimg_link").removeClass("fvp_hidden");a("#fvp_set_featimg_input").addClass("fvp_hidden");
9
+ a("#fvp_set_featimg_link, #fvp_warning_set_featimg").click(function(){a("#fvp_set_featimg").attr("checked",!0);a.post(ajaxurl,{action:"fvp_ajax",id:a("#post_ID").val(),fvp_nonce:a("#fvp_nonce").val(),fvp_video:a("#fvp_video").val(),fvp_sec:a("#fvp_sec").val()},function(b){a("#postimagediv .inside").html(b.img);a("#fvp_set_featimg_link, #fvp_featimg_warning").slideUp().addClass("fvp_hidden")},"json");return!1});a("#remove-post-thumbnail").click(function(){a("#fvp_set_featimg_link, #fvp_featimg_warning").slideDown().removeClass("fvp_hidden")});
10
+ a("#set-post-thumbnail").click(function(){a("#fvp_featimg_box_warning").addClass("fvp_hidden")});a("#fvp_help_toggle").bind("click",function(){a("#contextual-help-link").trigger("click")});var e,f;f={frame:function(){if(this._frame)return this._frame;this._frame=wp.media({title:e.data("title"),library:{type:"video"},button:{text:e.data("button")},multiple:!1});this._frame.on("open",this.updateFrame).state("library").on("select",this.select);return this._frame},select:function(){var b=this.get("selection");
11
+ a(e.data("target")).val(b.pluck("url")).trigger("autosize").change().removeClass("defaultTextActive")},updateFrame:function(){},init:function(){a("#wpbody").on("click",".fvp_video_choose",function(b){b.preventDefault();e=a(this).closest(".fvp_input_wrapper");f.frame().open()})}};1==fvp_backend_data.wp_35&&f.init()});
js/backend.js CHANGED
@@ -1,22 +1,53 @@
1
  jQuery(document).ready(function($){
2
 
3
  /**
4
- * Set input field values to default on blur if empty
5
  * @since 1.0
6
  */
7
- $(".fvp_input").blur(function() {
8
- $(this).val( $.trim($(this).val()) );
9
- value = $(this).val();
 
 
 
10
  if((value.length === 0) ||
11
  (value == fvp_backend_data.default_value ) ||
12
  (value == fvp_backend_data.default_value_sec) ){
13
- $(this).addClass("defaultTextActive");
14
- if( $(this).attr('id') == 'fvp_video' )
15
- $(this).val( fvp_backend_data.default_value );
16
  else
17
- $(this).val( fvp_backend_data.default_value_sec );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  }
19
- $(this).trigger('autosize');
20
  });
21
 
22
  /**
@@ -37,10 +68,9 @@ jQuery(document).ready(function($){
37
  * @see http://www.jacklmoore.com/autosize
38
  * @since 1.0
39
  */
40
- $(".fvp_input").autosize().trigger("blur").keypress(function(event) { //{append: "\n"}
41
- if (event.keyCode == 13) { // enter
42
  event.preventDefault();
43
- }
44
  });
45
 
46
  /**
@@ -55,10 +85,12 @@ jQuery(document).ready(function($){
55
  * hide secondary input initially
56
  * @since 1.2
57
  */
58
- var value = $("#fvp_video").val();
59
- if ( value.length === 0 || value == fvp_backend_data.default_value || !value.match( fvp_backend_data.wp_upload_dir.replace(/\//g, "\\\/") ) ) {
60
- $("#fvp_sec").val( fvp_backend_data.default_value_sec );
61
- $("#fvp_sec_wrapper").hide();
 
 
62
  }
63
 
64
  /**
@@ -76,33 +108,33 @@ jQuery(document).ready(function($){
76
  function handleVideoInput( obj ) {
77
  var value = $.trim(obj.val());
78
  var sec = $.trim($('#fvp_sec').val());
79
- $("#fvp_help_notice").show('fast');
80
 
81
  if ( value.length === 0 || value == fvp_backend_data.default_value ) {
82
- $("#fvp_video").css('backgroundColor', 'white');
83
  $("#fvp_sec").val( fvp_backend_data.default_value_sec ).blur();
84
- $("#fvp_sec_wrapper").hide('fast', 'linear');
85
- $("#fvp_localvideo_format_warning").hide('fast', 'linear');
86
  }
87
 
88
  if ( value.match( fvp_backend_data.wp_upload_dir.replace(/\//g, "\\\/") ) ) {
89
  var file_extension = /^.*\/(.*)\.(.*)$/g;
90
  var match = file_extension.exec(value);
91
  if ( match[2] == 'webm' || match[2] == 'mp4' || match[2] == 'ogg' || match[2] == 'ogv' ) {
92
- $("#fvp_sec_wrapper").show('fast', 'linear');
93
- $("#fvp_video").css('backgroundColor', 'white');
94
- $("#fvp_localvideo_format_warning").hide('fast', 'linear');
95
  } else {
96
  $("#fvp_sec").val( fvp_backend_data.default_value_sec ).blur();
97
- $("#fvp_sec_wrapper").hide('fast', 'linear');
98
- $("#fvp_video").css('backgroundColor', 'lightYellow');
99
- $("#fvp_localvideo_format_warning").show('fast', 'linear');
100
  }
101
  distinctContent();
102
  } else {
103
- $("#fvp_sec_wrapper").hide('fast', 'linear');
104
- $("#fvp_video").css('backgroundColor', 'white');
105
- $("#fvp_localvideo_format_warning").hide('fast', 'linear');
106
  }
107
  }
108
 
@@ -123,25 +155,24 @@ jQuery(document).ready(function($){
123
  var prim = $.trim($('#fvp_video').val());
124
 
125
  if ( value.length === 0 || value == fvp_backend_data.default_value ) {
126
- $("#fvp_localvideo_format_warning").hide('fast');
127
- $("#fvp_sec").css('backgroundColor', 'white');
128
  }
129
 
130
  if ( value.match( fvp_backend_data.wp_upload_dir.replace(/\//g, "\\\/") ) ) {
131
  var file_extension = /^.*\/(.*)\.(.*)$/g;
132
  var match = file_extension.exec(value);
133
  if ( match[2] == 'webm' || match[2] == 'mp4' || match[2] == 'ogg' || match[2] == 'ogv' ) {
 
 
134
  distinctContent();
135
- $("#fvp_sec").css('backgroundColor', 'white');
136
- $("#fvp_localvideo_format_warning").hide('fast');
137
  } else {
138
- distinctContent();
139
- $("#fvp_sec").css('backgroundColor', 'lightYellow');
140
- $("#fvp_localvideo_format_warning").show('fast');
141
  }
142
  } else if (value.length !== 0) {
143
- $("#fvp_sec").css('backgroundColor', 'lightYellow');
144
- $("#fvp_localvideo_notdistinct_warning").show('fast');
145
  }
146
 
147
  }
@@ -151,12 +182,12 @@ jQuery(document).ready(function($){
151
  * @since 1.2
152
  */
153
  function distinctContent() {
154
- if ( $('#fvp_video').val() == $('#fvp_sec').val() ) {
155
- $("#fvp_sec").css('backgroundColor', 'lightYellow');
156
- $("#fvp_localvideo_notdistinct_warning").show('fast');
157
  } else {
158
- $("#fvp_localvideo_notdistinct_warning").hide('fast');
159
- $("#fvp_sec").css('backgroundColor', 'white');
160
  }
161
  }
162
 
@@ -164,18 +195,30 @@ jQuery(document).ready(function($){
164
  * set featured image link and featured image requirement warning
165
  * @since 1.1
166
  */
167
- $("#fvp_set_featimg_link").show();
168
- $("#fvp_set_featimg_input").hide();
169
 
170
  $("#fvp_set_featimg_link, #fvp_warning_set_featimg").click(function() {
171
  $("#fvp_set_featimg").attr('checked', true);
172
- $("#fvp_set_featimg").closest("form").submit();
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  return false;
174
  });
175
 
176
  $("#remove-post-thumbnail").click(function() {
177
- //$("#fvp_set_featimg_box").removeClass("fvp_hidden");
178
- $("#fvp_featimg_box_warning").removeClass("fvp_hidden");
179
  });
180
 
181
  $("#set-post-thumbnail").click(function() {
@@ -190,14 +233,6 @@ jQuery(document).ready(function($){
190
  $('#contextual-help-link').trigger('click');
191
  });
192
 
193
-
194
- /**
195
- * Button in the top right of the Featured Video box. Planned for a feature release.
196
- *
197
- * @since 1.#
198
- */
199
- //$('#featured_video_plus-box .handlediv').after('<div class="box_topright"><a href="#" id="fvp_remove" title="Remove Featured Video"><br /></div></div>');
200
-
201
  /**
202
  * Making use of the WordPress 3.5 Media Manager
203
  *
@@ -251,6 +286,16 @@ jQuery(document).ready(function($){
251
  }
252
  };
253
 
 
254
  if(fvp_backend_data.wp_35 == 1)
255
  mediaControl.init();
 
 
 
 
 
 
 
 
 
256
  });
1
  jQuery(document).ready(function($){
2
 
3
  /**
4
+ * Set input field values to default on blur if empty and ajax submit if changed
5
  * @since 1.0
6
  */
7
+ $('#fvp_video,#fvp_sec').blur(function() {
8
+ var t = $(this); // required to make use of it in ajax callback
9
+
10
+ t.val( $.trim( t.val()) );
11
+
12
+ value = t.val();
13
  if((value.length === 0) ||
14
  (value == fvp_backend_data.default_value ) ||
15
  (value == fvp_backend_data.default_value_sec) ){
16
+ t.addClass("defaultTextActive");
17
+ if( t.is('#fvp_video') )
18
+ t.val( fvp_backend_data.default_value );
19
  else
20
+ t.val( fvp_backend_data.default_value_sec );
21
+ }
22
+ t.trigger('autosize');
23
+
24
+ if( t.val() != t.siblings('.fvp_mirror').val() ) {
25
+ bg = t.siblings('.fvp_video_choose').children('.fvp_media_icon').css('backgroundImage');
26
+ t.siblings('.fvp_video_choose').children('.fvp_media_icon').css('backgroundImage', "url('"+fvp_backend_data.loading_gif+"')");
27
+ $('#fvp_current_video').css({'backgroundImage':"url('"+fvp_backend_data.loading_gif+"')",'width':'256px','height':'144px'});
28
+ $.post( ajaxurl,
29
+ {
30
+ 'action' : 'fvp_ajax',
31
+ 'id' : $('#post_ID').val(),
32
+ 'fvp_nonce' : $('#fvp_nonce').val(),
33
+ 'fvp_video' : $('#fvp_video').val(),
34
+ 'fvp_sec' : $('#fvp_sec').val()
35
+ },
36
+ function(data) {
37
+ t.siblings('.fvp_mirror').val( t.val() );
38
+ t.siblings('.fvp_video_choose').children('.fvp_media_icon').css('backgroundImage', bg);
39
+ if(data.typ == 'removed')
40
+ $('#fvp_current_video').html('').css({'backgroundImage':'','width':'','height':''});
41
+ else
42
+ if(data.valid) {
43
+ $('#fvp_current_video').html(data.video);
44
+ t.css('backgroundColor','#00FF00').animate({'backgroundColor':'white'}, 500, function() { t.css('backgroundColor',''); });
45
+ $("#fvp_help_notice").slideUp('fast');
46
+ } else
47
+ t.addClass('fvp_invalid');
48
+ }, "json"
49
+ );
50
  }
 
51
  });
52
 
53
  /**
68
  * @see http://www.jacklmoore.com/autosize
69
  * @since 1.0
70
  */
71
+ $(".fvp_input").autosize().trigger("blur").keypress(function(event) {
72
+ if (event.keyCode == 13) // enter
73
  event.preventDefault();
 
74
  });
75
 
76
  /**
85
  * hide secondary input initially
86
  * @since 1.2
87
  */
88
+ if ($("#fvp_video").length > 0){
89
+ var value = $("#fvp_video").val();
90
+ if ( value.length === 0 || value == fvp_backend_data.default_value || !value.match( fvp_backend_data.wp_upload_dir.replace(/\//g, "\\\/") ) ) {
91
+ $("#fvp_sec").val( fvp_backend_data.default_value_sec );
92
+ $("#fvp_sec_wrapper").hide();
93
+ }
94
  }
95
 
96
  /**
108
  function handleVideoInput( obj ) {
109
  var value = $.trim(obj.val());
110
  var sec = $.trim($('#fvp_sec').val());
111
+ $("#fvp_help_notice").slideDown('fast');
112
 
113
  if ( value.length === 0 || value == fvp_backend_data.default_value ) {
114
+ $("#fvp_video").removeClass('fvp_invalid'); //css('backgroundColor', 'white');
115
  $("#fvp_sec").val( fvp_backend_data.default_value_sec ).blur();
116
+ $("#fvp_sec_wrapper").slideUp('fast');
117
+ $("#fvp_localvideo_format_warning").slideUp('fast');
118
  }
119
 
120
  if ( value.match( fvp_backend_data.wp_upload_dir.replace(/\//g, "\\\/") ) ) {
121
  var file_extension = /^.*\/(.*)\.(.*)$/g;
122
  var match = file_extension.exec(value);
123
  if ( match[2] == 'webm' || match[2] == 'mp4' || match[2] == 'ogg' || match[2] == 'ogv' ) {
124
+ $("#fvp_sec_wrapper").slideDown('fast');
125
+ $("#fvp_video").removeClass('fvp_invalid'); //.css('backgroundColor', 'white');
126
+ $("#fvp_localvideo_format_warning").slideUp('fast');
127
  } else {
128
  $("#fvp_sec").val( fvp_backend_data.default_value_sec ).blur();
129
+ $("#fvp_sec_wrapper").slideUp('fast');
130
+ $("#fvp_video").addClass('fvp_invalid'); //css('backgroundColor', 'lightYellow');
131
+ $("#fvp_localvideo_format_warning").slideDown('fast', 'linear');
132
  }
133
  distinctContent();
134
  } else {
135
+ $("#fvp_sec_wrapper").slideUp('fast');
136
+ $("#fvp_video").removeClass('fvp_invalid'); //.css('backgroundColor', 'white');
137
+ $("#fvp_localvideo_format_warning").slideUp('fast');
138
  }
139
  }
140
 
155
  var prim = $.trim($('#fvp_video').val());
156
 
157
  if ( value.length === 0 || value == fvp_backend_data.default_value ) {
158
+ $("#fvp_localvideo_format_warning").slideUp('fast');
159
+ $("#fvp_sec").removeClass('fvp_invalid'); //.css('backgroundColor', 'white');
160
  }
161
 
162
  if ( value.match( fvp_backend_data.wp_upload_dir.replace(/\//g, "\\\/") ) ) {
163
  var file_extension = /^.*\/(.*)\.(.*)$/g;
164
  var match = file_extension.exec(value);
165
  if ( match[2] == 'webm' || match[2] == 'mp4' || match[2] == 'ogg' || match[2] == 'ogv' ) {
166
+ $("#fvp_sec").removeClass('fvp_invalid'); //.css('backgroundColor', 'white');
167
+ $("#fvp_localvideo_format_warning").slideUp('fast');
168
  distinctContent();
 
 
169
  } else {
170
+ $("#fvp_sec").addClass('fvp_invalid'); //.css('backgroundColor', 'lightYellow');
171
+ $("#fvp_localvideo_format_warning").slideDown('fast');
 
172
  }
173
  } else if (value.length !== 0) {
174
+ $("#fvp_sec").addClass('fvp_invalid'); //.css('backgroundColor', 'lightYellow');
175
+ $("#fvp_localvideo_notdistinct_warning").slideDown('fast');
176
  }
177
 
178
  }
182
  * @since 1.2
183
  */
184
  function distinctContent() {
185
+ if ( $.trim( $('#fvp_video').val() ) == $.trim( $('#fvp_sec').val() ) ) {
186
+ $("#fvp_sec").addClass('fvp_invalid'); //.css('backgroundColor', 'lightYellow');
187
+ $("#fvp_localvideo_notdistinct_warning").slideDown('fast');
188
  } else {
189
+ $("#fvp_localvideo_notdistinct_warning").slideUp('fast');
190
+ $("#fvp_sec").removeClass('fvp_invalid'); //.css('backgroundColor', 'white');
191
  }
192
  }
193
 
195
  * set featured image link and featured image requirement warning
196
  * @since 1.1
197
  */
198
+ $("#fvp_set_featimg_link").removeClass('fvp_hidden');
199
+ $("#fvp_set_featimg_input").addClass('fvp_hidden');
200
 
201
  $("#fvp_set_featimg_link, #fvp_warning_set_featimg").click(function() {
202
  $("#fvp_set_featimg").attr('checked', true);
203
+ //$("#fvp_set_featimg").closest("form").submit();
204
+ $.post( ajaxurl,
205
+ {
206
+ 'action' : 'fvp_ajax',
207
+ 'id' : $('#post_ID').val(),
208
+ 'fvp_nonce' : $('#fvp_nonce').val(),
209
+ 'fvp_video' : $('#fvp_video').val(),
210
+ 'fvp_sec' : $('#fvp_sec').val()
211
+ },
212
+ function (data) {
213
+ $('#postimagediv .inside').html(data.img);
214
+ $("#fvp_set_featimg_link, #fvp_featimg_warning").slideUp().addClass("fvp_hidden");
215
+ }, "json"
216
+ );
217
  return false;
218
  });
219
 
220
  $("#remove-post-thumbnail").click(function() {
221
+ $("#fvp_set_featimg_link, #fvp_featimg_warning").slideDown().removeClass("fvp_hidden");
 
222
  });
223
 
224
  $("#set-post-thumbnail").click(function() {
233
  $('#contextual-help-link').trigger('click');
234
  });
235
 
 
 
 
 
 
 
 
 
236
  /**
237
  * Making use of the WordPress 3.5 Media Manager
238
  *
286
  }
287
  };
288
 
289
+ // Media Manager was implemented in WordPress 3.5
290
  if(fvp_backend_data.wp_35 == 1)
291
  mediaControl.init();
292
+
293
+
294
+ /**
295
+ * Button in the top right of the Featured Video box. Planned for a feature release.
296
+ *
297
+ * @since 1.#
298
+ */
299
+ //$('#featured_video_plus-box .handlediv').after('<div class="box_topright"><a href="#" id="fvp_remove" title="Remove Featured Video"><br /></div></div>');
300
+
301
  });
js/backend_35.js CHANGED
@@ -1,30 +1,26 @@
1
  // >=WordPress 3.5
2
  jQuery(document).ready(function($){
3
- var vimeo_options = {
4
  defaultColor: '#00adef',
5
  hide: true,
6
  palettes: new Array('#00adef', '#ff9933', '#c9ff23', '#ff0179', '#ffffff')
7
- };
8
- $('#fvp-settings-vimeo-color').wpColorPicker(vimeo_options);
9
 
10
- var dm_foreground_options = {
11
  defaultColor: '#f7fffd',
12
  hide: true,
13
  palettes: new Array('#E02C72', '#92ADE0', '#E8D9AC', '#C2E165', '#FF0099', '#CFCFCF')
14
- };
15
- $('#fvp-settings-dailymotion-foreground').wpColorPicker(dm_foreground_options);
16
 
17
- var dm_highlight_options = {
18
  defaultColor: '#ffc300',
19
  hide: true,
20
  palettes: new Array('#BF4B78', '#A2ACBF', '#FFF6D9', '#809443', '#C9A1FF', '#834596')
21
- };
22
- $('#fvp-settings-dailymotion-highlight').wpColorPicker(dm_highlight_options);
23
 
24
- var dm_background_options = {
25
  defaultColor: '#171d1b',
26
  hide: true,
27
  palettes: new Array('#260F18', '#202226', '#493D27', '#232912', '#052880', '#000000')
28
- };
29
- $('#fvp-settings-dailymotion-background').wpColorPicker(dm_background_options);
30
  });
1
  // >=WordPress 3.5
2
  jQuery(document).ready(function($){
3
+ $('#fvp-settings-vimeo-color').wpColorPicker({
4
  defaultColor: '#00adef',
5
  hide: true,
6
  palettes: new Array('#00adef', '#ff9933', '#c9ff23', '#ff0179', '#ffffff')
7
+ });
 
8
 
9
+ $('#fvp-settings-dailymotion-foreground').wpColorPicker({
10
  defaultColor: '#f7fffd',
11
  hide: true,
12
  palettes: new Array('#E02C72', '#92ADE0', '#E8D9AC', '#C2E165', '#FF0099', '#CFCFCF')
13
+ });
 
14
 
15
+ $('#fvp-settings-dailymotion-highlight').wpColorPicker({
16
  defaultColor: '#ffc300',
17
  hide: true,
18
  palettes: new Array('#BF4B78', '#A2ACBF', '#FFF6D9', '#809443', '#C9A1FF', '#834596')
19
+ });
 
20
 
21
+ $('#fvp-settings-dailymotion-background').wpColorPicker({
22
  defaultColor: '#171d1b',
23
  hide: true,
24
  palettes: new Array('#260F18', '#202226', '#493D27', '#232912', '#052880', '#000000')
25
+ });
 
26
  });
js/backend_pre35.js CHANGED
@@ -1,53 +1,16 @@
1
  // <WordPress 3.5
2
  jQuery(document).ready(function($){
3
- $('#fvp-settings-vimeo-colorpicker').hide();
4
- $('#fvp-settings-vimeo-colorpicker').farbtastic('#fvp-settings-vimeo-color');
5
-
6
- $('#fvp-settings-vimeo-color').click(function() {
7
- $('#fvp-settings-vimeo-colorpicker').fadeIn();
8
  });
9
-
10
  $(document).mousedown(function() {
11
- $('#fvp-settings-vimeo-colorpicker').each(function() {
12
  var display = $(this).css('display');
13
  if ( display == 'block' )
14
  $(this).fadeOut();
15
  });
16
- $('#fvp-settings-dailymotion-foreground-colorpicker').each(function() {
17
- var display = $(this).css('display');
18
- if ( display == 'block' )
19
- $(this).fadeOut();
20
- });
21
- $('#fvp-settings-dailymotion-background-colorpicker').each(function() {
22
- var display = $(this).css('display');
23
- if ( display == 'block' )
24
- $(this).fadeOut();
25
- });
26
- $('#fvp-settings-dailymotion-highlight-colorpicker').each(function() {
27
- var display = $(this).css('display');
28
- if ( display == 'block' )
29
- $(this).fadeOut();
30
- });
31
- });
32
-
33
-
34
- $('#fvp-settings-dailymotion-foreground-colorpicker').hide();
35
- $('#fvp-settings-dailymotion-foreground-colorpicker').farbtastic('#fvp-settings-dailymotion-foreground');
36
- $('#fvp-settings-dailymotion-foreground').click(function() {
37
- $('#fvp-settings-dailymotion-foreground-colorpicker').fadeIn();
38
- });
39
-
40
- $('#fvp-settings-dailymotion-background-colorpicker').hide();
41
- $('#fvp-settings-dailymotion-background-colorpicker').farbtastic('#fvp-settings-dailymotion-background');
42
- $('#fvp-settings-dailymotion-background').click(function() {
43
- $('#fvp-settings-dailymotion-background-colorpicker').fadeIn();
44
  });
45
-
46
-
47
- $('#fvp-settings-dailymotion-highlight-colorpicker').hide();
48
- $('#fvp-settings-dailymotion-highlight-colorpicker').farbtastic('#fvp-settings-dailymotion-highlight');
49
- $('#fvp-settings-dailymotion-highlight').click(function() {
50
- $('#fvp-settings-dailymotion-highlight-colorpicker').fadeIn();
51
  });
52
-
53
  });
1
  // <WordPress 3.5
2
  jQuery(document).ready(function($){
3
+ $('.fvp_colorpicker').hide().each(function() {
4
+ $(this).farbtastic($(this).siblings('.fvp_colorpicker_input'));
 
 
 
5
  });
 
6
  $(document).mousedown(function() {
7
+ $('.fvp_colorpicker').each(function() {
8
  var display = $(this).css('display');
9
  if ( display == 'block' )
10
  $(this).fadeOut();
11
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  });
13
+ $('.fvp_colorpicker_input').click(function() {
14
+ $(this).siblings('.fvp_colorpicker').fadeIn();
 
 
 
 
15
  });
 
16
  });
js/backend_settings.js CHANGED
@@ -1,35 +1,30 @@
1
  jQuery(document).ready(function($){
2
-
3
  $('.fvp_toggle_input .fvp_toggle').bind('click change', function() {
4
  var input = $(this).closest('.fvp_toggle_input').children('.fvp_input');
5
-
6
- if ($(this).attr('checked')) {
7
  input.attr('readonly', 'true').addClass('fvp_readonly');
8
- } else {
9
  input.removeAttr('readonly').removeClass('fvp_readonly');
10
- }
11
  });
12
 
13
  $('#fvp-settings-youtube-color').click(function() {
14
- if ($('#fvp-settings-youtube-color:checked').length == 1) {
15
  $('#youtube_logoinput_wrapper').fadeOut('slow', function() { $(this).addClass( 'fvp_hidden'); } );
16
- } else {
17
  $('#youtube_logoinput_wrapper').fadeIn( 'slow', function() { $(this).removeClass('fvp_hidden'); } );
18
- }
19
  });
20
 
21
- $('#fvp_help_toggle').bind( 'click', function() {
22
- $('#contextual-help-link').trigger('click');
23
- });
24
 
25
  if( $('#fvp-settings-width-auto:checked').length == 1 )
26
  $('#fvp-settings-align-1').closest('tr').hide();
27
 
28
  $('#fvp-settings-width-auto').click(function() {
29
- if( $('#fvp-settings-width-auto:checked').length == 1 ) {
30
  $('#fvp-settings-align-1').closest('tr').fadeOut('slow');
31
- } else {
32
- $('#fvp-settings-align-1').closest('tr').fadeIn('slow');
33
- }
34
  });
35
  });
1
  jQuery(document).ready(function($){
 
2
  $('.fvp_toggle_input .fvp_toggle').bind('click change', function() {
3
  var input = $(this).closest('.fvp_toggle_input').children('.fvp_input');
4
+ if ($(this).attr('checked'))
 
5
  input.attr('readonly', 'true').addClass('fvp_readonly');
6
+ else
7
  input.removeAttr('readonly').removeClass('fvp_readonly');
 
8
  });
9
 
10
  $('#fvp-settings-youtube-color').click(function() {
11
+ if($('#fvp-settings-youtube-color:checked').length == 1)
12
  $('#youtube_logoinput_wrapper').fadeOut('slow', function() { $(this).addClass( 'fvp_hidden'); } );
13
+ else
14
  $('#youtube_logoinput_wrapper').fadeIn( 'slow', function() { $(this).removeClass('fvp_hidden'); } );
 
15
  });
16
 
17
+ $('#fvp_help_toggle').bind( 'click', function() {
18
+ $('#contextual-help-link').trigger('click');
19
+ });
20
 
21
  if( $('#fvp-settings-width-auto:checked').length == 1 )
22
  $('#fvp-settings-align-1').closest('tr').hide();
23
 
24
  $('#fvp-settings-width-auto').click(function() {
25
+ if( $('#fvp-settings-width-auto:checked').length == 1 )
26
  $('#fvp-settings-align-1').closest('tr').fadeOut('slow');
27
+ else
28
+ $('#fvp-settings-align-1').closest('tr').fadeIn( 'slow');
 
29
  });
30
  });
js/jquery.fitvids_fvp-min.js CHANGED
@@ -1,10 +1,3 @@
1
- /*!
2
- * FitVids 1.0
3
- *
4
- * Copyright 2011, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
5
- * Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
6
- * Released under the WTFPL license - http://sam.zoy.org/wtfpl/
7
- *
8
- * Date: Thu Sept 01 18:00:00 2011 -0500
9
- */
10
- (function(a){a.fn.fitVids=function(b){var c={customSelector:null};var e=document.createElement("div"),d=document.getElementsByTagName("base")[0]||document.getElementsByTagName("script")[0];e.className="fit-vids-style";e.innerHTML="&shy;<style> .fluid-width-video-wrapper { width: 100%; position: relative; padding: 0; } .fluid-width-video-wrapper iframe, .fluid-width-video-wrapper object, .fluid-width-video-wrapper embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } </style>";d.parentNode.insertBefore(e,d);if(b){a.extend(c,b)}return this.each(function(){var f=["iframe[src*='player.vimeo.com']","iframe[src*='www.youtube.com']","iframe[src*='www.youtube-nocookie.com']","iframe[src*='www.kickstarter.com']","iframe[src*='www.liveleak.com']","iframe[src*='www.prochan.com']","object","embed"];if(c.customSelector){f.push(c.customSelector)}var g=a(this).find(f.join(","));g.each(function(){var l=a(this);if(this.tagName.toLowerCase()==="embed"&&l.parent("object").length||l.parent(".fluid-width-video-wrapper").length){return}var h=(this.tagName.toLowerCase()==="object"||(l.attr("height")&&!isNaN(parseInt(l.attr("height"),10))))?parseInt(l.attr("height"),10):l.height(),i=!isNaN(parseInt(l.attr("width"),10))?parseInt(l.attr("width"),10):l.width(),j=h/i;if(!l.attr("id")){var k="fitvid"+Math.floor(Math.random()*999999);l.attr("id",k)}l.wrap('<div class="fluid-width-video-wrapper"></div>').parent(".fluid-width-video-wrapper").css("padding-top",(j*100)+"%");l.removeAttr("height").removeAttr("width")})})}})(jQuery);jQuery(document).ready(function(a){a(".featured_video_plus").fitVids()});
1
+ (function(d){d.fn.fitVids=function(e){var c={customSelector:null},b=document.createElement("div"),f=document.getElementsByTagName("base")[0]||document.getElementsByTagName("script")[0];b.className="fit-vids-style";b.innerHTML="&shy;<style> .fluid-width-video-wrapper { width: 100%; position: relative; padding: 0; } .fluid-width-video-wrapper iframe, .fluid-width-video-wrapper object, .fluid-width-video-wrapper embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } </style>";
2
+ f.parentNode.insertBefore(b,f);e&&d.extend(c,e);return this.each(function(){var b="iframe[src*='player.vimeo.com'] iframe[src*='www.youtube.com'] iframe[src*='www.youtube-nocookie.com'] iframe[src*='www.kickstarter.com'] iframe[src*='www.liveleak.com'] iframe[src*='www.prochan.com'] object embed".split(" ");c.customSelector&&b.push(c.customSelector);d(this).find(b.join(",")).each(function(){var a=d(this);if(!("embed"===this.tagName.toLowerCase()&&a.parent("object").length||a.parent(".fluid-width-video-wrapper").length)){var b=
3
+ "object"===this.tagName.toLowerCase()||a.attr("height")&&!isNaN(parseInt(a.attr("height"),10))?parseInt(a.attr("height"),10):a.height(),c=!isNaN(parseInt(a.attr("width"),10))?parseInt(a.attr("width"),10):a.width(),b=b/c;a.attr("id")||(c="fitvid"+Math.floor(999999*Math.random()),a.attr("id",c));a.wrap('<div class="fluid-width-video-wrapper"></div>').parent(".fluid-width-video-wrapper").css("padding-top",100*b+"%");a.removeAttr("height").removeAttr("width")}})})}})(jQuery);jQuery(document).ready(function(d){d(".featured_video_plus").fitVids()});
 
 
 
 
 
 
 
js/videojs-min.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ Video.js - HTML5 Video Player
3
+ Version 3.2.0
4
+
5
+ LGPL v3 LICENSE INFO
6
+ This file is part of Video.js. Copyright 2011 Zencoder, Inc.
7
+
8
+ Video.js is free software: you can redistribute it and/or modify
9
+ it under the terms of the GNU Lesser General Public License as published by
10
+ the Free Software Foundation, either version 3 of the License, or
11
+ (at your option) any later version.
12
+
13
+ Video.js is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ GNU Lesser General Public License for more details.
17
+
18
+ You should have received a copy of the GNU Lesser General Public License
19
+ along with Video.js. If not, see <http://www.gnu.org/licenses/>.
20
+ */
21
+ (function(window,undefined){var document=window.document;document.createElement("video");document.createElement("audio");var VideoJS=function(id,addOptions,ready){var tag;if(typeof id=="string"){if(id.indexOf("#")===0){id=id.slice(1)}if(_V_.players[id]){return _V_.players[id]}else{tag=_V_.el(id)}}else{tag=id}if(!tag||!tag.nodeName){throw new TypeError("The element or ID supplied is not valid. (VideoJS)")}return tag.player||new _V_.Player(tag,addOptions,ready)},_V_=VideoJS,CDN_VERSION="c";VideoJS.players={};VideoJS.options={techOrder:["html5","flash"],html5:{},flash:{swf:"http://vjs.zencdn.net/c/video-js.swf"},width:"auto",height:"auto",defaultVolume:0,components:{posterImage:{},textTrackDisplay:{},loadingSpinner:{},bigPlayButton:{},controlBar:{}}};if(CDN_VERSION!="GENERATED_CDN_VSN"){_V_.options.flash.swf="http://vjs.zencdn.net/"+CDN_VERSION+"/video-js.swf"}_V_.merge=function(obj1,obj2,safe){if(!obj2){obj2={}}for(var attrname in obj2){if(obj2.hasOwnProperty(attrname)&&(!safe||!obj1.hasOwnProperty(attrname))){obj1[attrname]=obj2[attrname]}}return obj1};_V_.extend=function(obj){this.merge(this,obj,true)};_V_.extend({tech:{},controlSets:{},isIE:function(){return !+"\v1"},isFF:function(){return !!_V_.ua.match("Firefox")},isIPad:function(){return navigator.userAgent.match(/iPad/i)!==null},isIPhone:function(){return navigator.userAgent.match(/iPhone/i)!==null},isIOS:function(){return VideoJS.isIPhone()||VideoJS.isIPad()},iOSVersion:function(){var match=navigator.userAgent.match(/OS (\d+)_/i);if(match&&match[1]){return match[1]}},isAndroid:function(){return navigator.userAgent.match(/Android.*AppleWebKit/i)!==null},androidVersion:function(){var match=navigator.userAgent.match(/Android (\d+)\./i);if(match&&match[1]){return match[1]}},testVid:document.createElement("video"),ua:navigator.userAgent,support:{},each:function(arr,fn){if(!arr||arr.length===0){return}for(var i=0,j=arr.length;i<j;i++){fn.call(this,arr[i],i)}},eachProp:function(obj,fn){if(!obj){return}for(var name in obj){if(obj.hasOwnProperty(name)){fn.call(this,name,obj[name])}}},el:function(id){return document.getElementById(id)},createElement:function(tagName,attributes){var el=document.createElement(tagName),attrname;for(attrname in attributes){if(attributes.hasOwnProperty(attrname)){if(attrname.indexOf("-")!==-1){el.setAttribute(attrname,attributes[attrname])}else{el[attrname]=attributes[attrname]}}}return el},insertFirst:function(node,parent){if(parent.firstChild){parent.insertBefore(node,parent.firstChild)}else{parent.appendChild(node)}},addClass:function(element,classToAdd){if((" "+element.className+" ").indexOf(" "+classToAdd+" ")==-1){element.className=element.className===""?classToAdd:element.className+" "+classToAdd}},removeClass:function(element,classToRemove){if(element.className.indexOf(classToRemove)==-1){return}var classNames=element.className.split(" ");classNames.splice(classNames.indexOf(classToRemove),1);element.className=classNames.join(" ")},remove:function(item,array){if(!array){return}var i=array.indexOf(item);if(i!=-1){return array.splice(i,1)}},blockTextSelection:function(){document.body.focus();document.onselectstart=function(){return false}},unblockTextSelection:function(){document.onselectstart=function(){return true}},formatTime:function(seconds,guide){guide=guide||seconds;var s=Math.floor(seconds%60),m=Math.floor(seconds/60%60),h=Math.floor(seconds/3600),gm=Math.floor(guide/60%60),gh=Math.floor(guide/3600);h=(h>0||gh>0)?h+":":"";m=(((h||gm>=10)&&m<10)?"0"+m:m)+":";s=(s<10)?"0"+s:s;return h+m+s},uc:function(string){return string.charAt(0).toUpperCase()+string.slice(1)},getRelativePosition:function(x,relativeElement){return Math.max(0,Math.min(1,(x-_V_.findPosX(relativeElement))/relativeElement.offsetWidth))},getComputedStyleValue:function(element,style){return window.getComputedStyle(element,null).getPropertyValue(style)},trim:function(string){return string.toString().replace(/^\s+/,"").replace(/\s+$/,"")},round:function(num,dec){if(!dec){dec=0}return Math.round(num*Math.pow(10,dec))/Math.pow(10,dec)},isEmpty:function(object){for(var prop in object){return false}return true},createTimeRange:function(start,end){return{length:1,start:function(){return start},end:function(){return end}}},cache:{},guid:1,expando:"vdata"+(new Date).getTime(),getData:function(elem){var id=elem[_V_.expando];if(!id){id=elem[_V_.expando]=_V_.guid++;_V_.cache[id]={}}return _V_.cache[id]},removeData:function(elem){var id=elem[_V_.expando];if(!id){return}delete _V_.cache[id];try{delete elem[_V_.expando]}catch(e){if(elem.removeAttribute){elem.removeAttribute(_V_.expando)}else{elem[_V_.expando]=null}}},proxy:function(context,fn,uid){if(!fn.guid){fn.guid=_V_.guid++}var ret=function(){return fn.apply(context,arguments)};ret.guid=(uid)?uid+"_"+fn.guid:fn.guid;return ret},get:function(url,onSuccess,onError){var local=(url.indexOf("file:")==0||(window.location.href.indexOf("file:")==0&&url.indexOf("http:")==-1));if(typeof XMLHttpRequest=="undefined"){XMLHttpRequest=function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(f){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(g){}throw new Error("This browser does not support XMLHttpRequest.")}}var request=new XMLHttpRequest();try{request.open("GET",url)}catch(e){_V_.log("VideoJS XMLHttpRequest (open)",e);return false}request.onreadystatechange=_V_.proxy(this,function(){if(request.readyState==4){if(request.status==200||local&&request.status==0){onSuccess(request.responseText)}else{if(onError){onError()}}}});try{request.send()}catch(e){_V_.log("VideoJS XMLHttpRequest (send)",e);if(onError){onError(e)}}},setLocalStorage:function(key,value){var localStorage=window.localStorage||false;if(!localStorage){return}try{localStorage[key]=value}catch(e){if(e.code==22||e.code==1014){_V_.log("LocalStorage Full (VideoJS)",e)}else{_V_.log("LocalStorage Error (VideoJS)",e)}}},getAbsoluteURL:function(url){if(!url.match(/^https?:\/\//)){url=_V_.createElement("div",{innerHTML:'<a href="'+url+'">x</a>'}).firstChild.href}return url}});_V_.log=function(){_V_.log.history=_V_.log.history||[];_V_.log.history.push(arguments);if(window.console){arguments.callee=arguments.callee.caller;var newarr=[].slice.call(arguments);(typeof console.log==="object"?_V_.log.apply.call(console.log,console,newarr):console.log.apply(console,newarr))}};(function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,timeStamp,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();){b[a]=b[a]||c}})((function(){try{console.log();return window.console}catch(err){return window.console={}}})());if("getBoundingClientRect" in document.documentElement){_V_.findPosX=function(el){var box;try{box=el.getBoundingClientRect()}catch(e){}if(!box){return 0}var docEl=document.documentElement,body=document.body,clientLeft=docEl.clientLeft||body.clientLeft||0,scrollLeft=window.pageXOffset||body.scrollLeft,left=box.left+scrollLeft-clientLeft;return left}}else{_V_.findPosX=function(el){var curleft=el.offsetLeft;while(el=obj.offsetParent){if(el.className.indexOf("video-js")==-1){}else{}curleft+=el.offsetLeft}return curleft}}(function(){var initializing=false,fnTest=/xyz/.test(function(){xyz})?/\b_super\b/:/.*/;_V_.Class=function(){};_V_.Class.extend=function(prop){var _super=this.prototype;initializing=true;var prototype=new this();initializing=false;for(var name in prop){prototype[name]=typeof prop[name]=="function"&&typeof _super[name]=="function"&&fnTest.test(prop[name])?(function(name,fn){return function(){var tmp=this._super;this._super=_super[name];var ret=fn.apply(this,arguments);this._super=tmp;return ret}})(name,prop[name]):prop[name]}function Class(){if(!initializing&&this.init){return this.init.apply(this,arguments)}else{if(!initializing){return arguments.callee.prototype.init()}}}Class.prototype=prototype;Class.constructor=Class;Class.extend=arguments.callee;return Class}})();_V_.Component=_V_.Class.extend({init:function(player,options){this.player=player;options=this.options=_V_.merge(this.options||{},options);if(options.el){this.el=options.el}else{this.el=this.createElement()}this.initComponents()},destroy:function(){},createElement:function(type,attrs){return _V_.createElement(type||"div",attrs)},buildCSSClass:function(){return""},initComponents:function(){var options=this.options;if(options&&options.components){this.eachProp(options.components,function(name,opts){var tempAdd=this.proxy(function(){this[name]=this.addComponent(name,opts)});if(opts.loadEvent){this.one(opts.loadEvent,tempAdd)}else{tempAdd()}})}},addComponent:function(name,options){var component,componentClass;if(typeof name=="string"){options=options||{};componentClass=options.componentClass||_V_.uc(name);component=new _V_[componentClass](this.player||this,options)}else{component=name}this.el.appendChild(component.el);return component},removeComponent:function(component){this.el.removeChild(component.el)},show:function(){this.el.style.display="block"},hide:function(){this.el.style.display="none"},fadeIn:function(){this.removeClass("vjs-fade-out");this.addClass("vjs-fade-in")},fadeOut:function(){this.removeClass("vjs-fade-in");this.addClass("vjs-fade-out")},lockShowing:function(){var style=this.el.style;style.display="block";style.opacity=1;style.visiblity="visible"},unlockShowing:function(){var style=this.el.style;style.display="";style.opacity="";style.visiblity=""},addClass:function(classToAdd){_V_.addClass(this.el,classToAdd)},removeClass:function(classToRemove){_V_.removeClass(this.el,classToRemove)},addEvent:function(type,fn,uid){return _V_.addEvent(this.el,type,_V_.proxy(this,fn))},removeEvent:function(type,fn){return _V_.removeEvent(this.el,type,fn)},triggerEvent:function(type,e){return _V_.triggerEvent(this.el,type,e)},one:function(type,fn){_V_.one(this.el,type,_V_.proxy(this,fn))},ready:function(fn){if(!fn){return this}if(this.isReady){fn.call(this)}else{if(this.readyQueue===undefined){this.readyQueue=[]}this.readyQueue.push(fn)}return this},triggerReady:function(){this.isReady=true;if(this.readyQueue&&this.readyQueue.length>0){this.each(this.readyQueue,function(fn){fn.call(this)});this.readyQueue=[];this.triggerEvent("ready")}},each:function(arr,fn){_V_.each.call(this,arr,fn)},eachProp:function(obj,fn){_V_.eachProp.call(this,obj,fn)},extend:function(obj){_V_.merge(this,obj)},proxy:function(fn,uid){return _V_.proxy(this,fn,uid)}});_V_.Control=_V_.Component.extend({buildCSSClass:function(){return"vjs-control "+this._super()}});_V_.ControlBar=_V_.Component.extend({options:{loadEvent:"play",components:{playToggle:{},fullscreenToggle:{},currentTimeDisplay:{},timeDivider:{},durationDisplay:{},remainingTimeDisplay:{},progressControl:{},volumeControl:{},muteToggle:{}}},init:function(player,options){this._super(player,options);player.addEvent("play",this.proxy(function(){this.fadeIn();this.player.addEvent("mouseover",this.proxy(this.fadeIn));this.player.addEvent("mouseout",this.proxy(this.fadeOut))}))},createElement:function(){return _V_.createElement("div",{className:"vjs-controls"})},fadeIn:function(){this._super();this.player.triggerEvent("controlsvisible")},fadeOut:function(){this._super();this.player.triggerEvent("controlshidden")},lockShowing:function(){this.el.style.opacity="1"}});_V_.Button=_V_.Control.extend({init:function(player,options){this._super(player,options);this.addEvent("click",this.onClick);this.addEvent("focus",this.onFocus);this.addEvent("blur",this.onBlur)},createElement:function(type,attrs){attrs=_V_.merge({className:this.buildCSSClass(),innerHTML:'<div><span class="vjs-control-text">'+(this.buttonText||"Need Text")+"</span></div>",role:"button",tabIndex:0},attrs);return this._super(type,attrs)},onClick:function(){},onFocus:function(){_V_.addEvent(document,"keyup",_V_.proxy(this,this.onKeyPress))},onKeyPress:function(event){if(event.which==32||event.which==13){event.preventDefault();this.onClick()}},onBlur:function(){_V_.removeEvent(document,"keyup",_V_.proxy(this,this.onKeyPress))}});_V_.PlayButton=_V_.Button.extend({buttonText:"Play",buildCSSClass:function(){return"vjs-play-button "+this._super()},onClick:function(){this.player.play()}});_V_.PauseButton=_V_.Button.extend({buttonText:"Pause",buildCSSClass:function(){return"vjs-pause-button "+this._super()},onClick:function(){this.player.pause()}});_V_.PlayToggle=_V_.Button.extend({buttonText:"Play",init:function(player,options){this._super(player,options);player.addEvent("play",_V_.proxy(this,this.onPlay));player.addEvent("pause",_V_.proxy(this,this.onPause))},buildCSSClass:function(){return"vjs-play-control "+this._super()},onClick:function(){if(this.player.paused()){this.player.play()}else{this.player.pause()}},onPlay:function(){_V_.removeClass(this.el,"vjs-paused");_V_.addClass(this.el,"vjs-playing")},onPause:function(){_V_.removeClass(this.el,"vjs-playing");_V_.addClass(this.el,"vjs-paused")}});_V_.FullscreenToggle=_V_.Button.extend({buttonText:"Fullscreen",buildCSSClass:function(){return"vjs-fullscreen-control "+this._super()},onClick:function(){if(!this.player.isFullScreen){this.player.requestFullScreen()}else{this.player.cancelFullScreen()}}});_V_.BigPlayButton=_V_.Button.extend({init:function(player,options){this._super(player,options);player.addEvent("play",_V_.proxy(this,this.hide));player.addEvent("ended",_V_.proxy(this,this.show))},createElement:function(){return this._super("div",{className:"vjs-big-play-button",innerHTML:"<span></span>"})},onClick:function(){if(this.player.currentTime()){this.player.currentTime(0)}this.player.play()}});_V_.LoadingSpinner=_V_.Component.extend({init:function(player,options){this._super(player,options);player.addEvent("canplay",_V_.proxy(this,this.hide));player.addEvent("canplaythrough",_V_.proxy(this,this.hide));player.addEvent("playing",_V_.proxy(this,this.hide));player.addEvent("seeking",_V_.proxy(this,this.show));player.addEvent("error",_V_.proxy(this,this.show));player.addEvent("waiting",_V_.proxy(this,this.show))},createElement:function(){var classNameSpinner,innerHtmlSpinner;if(typeof this.player.el.style.WebkitBorderRadius=="string"||typeof this.player.el.style.MozBorderRadius=="string"||typeof this.player.el.style.KhtmlBorderRadius=="string"||typeof this.player.el.style.borderRadius=="string"){classNameSpinner="vjs-loading-spinner";innerHtmlSpinner="<div class='ball1'></div><div class='ball2'></div><div class='ball3'></div><div class='ball4'></div><div class='ball5'></div><div class='ball6'></div><div class='ball7'></div><div class='ball8'></div>"}else{classNameSpinner="vjs-loading-spinner-fallback";innerHtmlSpinner=""}return this._super("div",{className:classNameSpinner,innerHTML:innerHtmlSpinner})}});_V_.CurrentTimeDisplay=_V_.Component.extend({init:function(player,options){this._super(player,options);player.addEvent("timeupdate",_V_.proxy(this,this.updateContent))},createElement:function(){var el=this._super("div",{className:"vjs-current-time vjs-time-controls vjs-control"});this.content=_V_.createElement("div",{className:"vjs-current-time-display",innerHTML:"0:00"});el.appendChild(_V_.createElement("div").appendChild(this.content));return el},updateContent:function(){var time=(this.player.scrubbing)?this.player.values.currentTime:this.player.currentTime();this.content.innerHTML=_V_.formatTime(time,this.player.duration())}});_V_.DurationDisplay=_V_.Component.extend({init:function(player,options){this._super(player,options);player.addEvent("timeupdate",_V_.proxy(this,this.updateContent))},createElement:function(){var el=this._super("div",{className:"vjs-duration vjs-time-controls vjs-control"});this.content=_V_.createElement("div",{className:"vjs-duration-display",innerHTML:"0:00"});el.appendChild(_V_.createElement("div").appendChild(this.content));return el},updateContent:function(){if(this.player.duration()){this.content.innerHTML=_V_.formatTime(this.player.duration())}}});_V_.TimeDivider=_V_.Component.extend({createElement:function(){return this._super("div",{className:"vjs-time-divider",innerHTML:"<div><span>/</span></div>"})}});_V_.RemainingTimeDisplay=_V_.Component.extend({init:function(player,options){this._super(player,options);player.addEvent("timeupdate",_V_.proxy(this,this.updateContent))},createElement:function(){var el=this._super("div",{className:"vjs-remaining-time vjs-time-controls vjs-control"});this.content=_V_.createElement("div",{className:"vjs-remaining-time-display",innerHTML:"-0:00"});el.appendChild(_V_.createElement("div").appendChild(this.content));return el},updateContent:function(){if(this.player.duration()){this.content.innerHTML="-"+_V_.formatTime(this.player.remainingTime())}}});_V_.Slider=_V_.Component.extend({init:function(player,options){this._super(player,options);player.addEvent(this.playerEvent,_V_.proxy(this,this.update));this.addEvent("mousedown",this.onMouseDown);this.addEvent("focus",this.onFocus);this.addEvent("blur",this.onBlur);this.player.addEvent("controlsvisible",this.proxy(this.update));this.update()},createElement:function(type,attrs){attrs=_V_.merge({role:"slider","aria-valuenow":0,"aria-valuemin":0,"aria-valuemax":100,tabIndex:0},attrs);return this._super(type,attrs)},onMouseDown:function(event){event.preventDefault();_V_.blockTextSelection();_V_.addEvent(document,"mousemove",_V_.proxy(this,this.onMouseMove));_V_.addEvent(document,"mouseup",_V_.proxy(this,this.onMouseUp));this.onMouseMove(event)},onMouseUp:function(event){_V_.unblockTextSelection();_V_.removeEvent(document,"mousemove",this.onMouseMove,false);_V_.removeEvent(document,"mouseup",this.onMouseUp,false);this.update()},update:function(){var barProgress,progress=this.getPercent();handle=this.handle,bar=this.bar;if(isNaN(progress)){progress=0}barProgress=progress;if(handle){var box=this.el,boxWidth=box.offsetWidth,handleWidth=handle.el.offsetWidth,handlePercent=(handleWidth)?handleWidth/boxWidth:0,boxAdjustedPercent=1-handlePercent;adjustedProgress=progress*boxAdjustedPercent,barProgress=adjustedProgress+(handlePercent/2);handle.el.style.left=_V_.round(adjustedProgress*100,2)+"%"}bar.el.style.width=_V_.round(barProgress*100,2)+"%"},calculateDistance:function(event){var box=this.el,boxX=_V_.findPosX(box),boxW=box.offsetWidth,handle=this.handle;if(handle){var handleW=handle.el.offsetWidth;boxX=boxX+(handleW/2);boxW=boxW-handleW}return Math.max(0,Math.min(1,(event.pageX-boxX)/boxW))},onFocus:function(event){_V_.addEvent(document,"keyup",_V_.proxy(this,this.onKeyPress))},onKeyPress:function(event){if(event.which==37){event.preventDefault();this.stepBack()}else{if(event.which==39){event.preventDefault();this.stepForward()}}},onBlur:function(event){_V_.removeEvent(document,"keyup",_V_.proxy(this,this.onKeyPress))}});_V_.ProgressControl=_V_.Component.extend({options:{components:{seekBar:{}}},createElement:function(){return this._super("div",{className:"vjs-progress-control vjs-control"})}});_V_.SeekBar=_V_.Slider.extend({options:{components:{loadProgressBar:{},bar:{componentClass:"PlayProgressBar"},handle:{componentClass:"SeekHandle"}}},playerEvent:"timeupdate",init:function(player,options){this._super(player,options)},createElement:function(){return this._super("div",{className:"vjs-progress-holder"})},getPercent:function(){return this.player.currentTime()/this.player.duration()},onMouseDown:function(event){this._super(event);this.player.scrubbing=true;this.videoWasPlaying=!this.player.paused();this.player.pause()},onMouseMove:function(event){var newTime=this.calculateDistance(event)*this.player.duration();if(newTime==this.player.duration()){newTime=newTime-0.1}this.player.currentTime(newTime)},onMouseUp:function(event){this._super(event);this.player.scrubbing=false;if(this.videoWasPlaying){this.player.play()}},stepForward:function(){this.player.currentTime(this.player.currentTime()+1)},stepBack:function(){this.player.currentTime(this.player.currentTime()-1)}});_V_.LoadProgressBar=_V_.Component.extend({init:function(player,options){this._super(player,options);player.addEvent("progress",_V_.proxy(this,this.update))},createElement:function(){return this._super("div",{className:"vjs-load-progress",innerHTML:'<span class="vjs-control-text">Loaded: 0%</span>'})},update:function(){if(this.el.style){this.el.style.width=_V_.round(this.player.bufferedPercent()*100,2)+"%"}}});_V_.PlayProgressBar=_V_.Component.extend({createElement:function(){return this._super("div",{className:"vjs-play-progress",innerHTML:'<span class="vjs-control-text">Progress: 0%</span>'})}});_V_.SeekHandle=_V_.Component.extend({createElement:function(){return this._super("div",{className:"vjs-seek-handle",innerHTML:'<span class="vjs-control-text">00:00</span>'})}});_V_.VolumeControl=_V_.Component.extend({options:{components:{volumeBar:{}}},createElement:function(){return this._super("div",{className:"vjs-volume-control vjs-control"})}});_V_.VolumeBar=_V_.Slider.extend({options:{components:{bar:{componentClass:"VolumeLevel"},handle:{componentClass:"VolumeHandle"}}},playerEvent:"volumechange",createElement:function(){return this._super("div",{className:"vjs-volume-bar"})},onMouseMove:function(event){this.player.volume(this.calculateDistance(event))},getPercent:function(){return this.player.volume()},stepForward:function(){this.player.volume(this.player.volume()+0.1)},stepBack:function(){this.player.volume(this.player.volume()-0.1)}});_V_.VolumeLevel=_V_.Component.extend({createElement:function(){return this._super("div",{className:"vjs-volume-level",innerHTML:'<span class="vjs-control-text"></span>'})}});_V_.VolumeHandle=_V_.Component.extend({createElement:function(){return this._super("div",{className:"vjs-volume-handle",innerHTML:'<span class="vjs-control-text"></span>'})}});_V_.MuteToggle=_V_.Button.extend({init:function(player,options){this._super(player,options);player.addEvent("volumechange",_V_.proxy(this,this.update))},createElement:function(){return this._super("div",{className:"vjs-mute-control vjs-control",innerHTML:'<div><span class="vjs-control-text">Mute</span></div>'})},onClick:function(event){this.player.muted(this.player.muted()?false:true)},update:function(event){var vol=this.player.volume(),level=3;if(vol==0||this.player.muted()){level=0}else{if(vol<0.33){level=1}else{if(vol<0.67){level=2}}}_V_.each.call(this,[0,1,2,3],function(i){_V_.removeClass(this.el,"vjs-vol-"+i)});_V_.addClass(this.el,"vjs-vol-"+level)}});_V_.PosterImage=_V_.Button.extend({init:function(player,options){this._super(player,options);if(!this.player.options.poster){this.hide()}player.addEvent("play",_V_.proxy(this,this.hide))},createElement:function(){return _V_.createElement("img",{className:"vjs-poster",src:this.player.options.poster,tabIndex:-1})},onClick:function(){this.player.play()}});_V_.Menu=_V_.Component.extend({init:function(player,options){this._super(player,options)},addItem:function(component){this.addComponent(component);component.addEvent("click",this.proxy(function(){this.unlockShowing()}))},createElement:function(){return this._super("ul",{className:"vjs-menu"})}});_V_.MenuItem=_V_.Button.extend({init:function(player,options){this._super(player,options);if(options.selected){this.addClass("vjs-selected")}},createElement:function(type,attrs){return this._super("li",_V_.merge({className:"vjs-menu-item",innerHTML:this.options.label},attrs))},onClick:function(){this.selected(true)},selected:function(selected){if(selected){this.addClass("vjs-selected")}else{this.removeClass("vjs-selected")}}});if(!Array.prototype.indexOf){Array.prototype.indexOf=function(searchElement){if(this===void 0||this===null){throw new TypeError()}var t=Object(this);var len=t.length>>>0;if(len===0){return -1}var n=0;if(arguments.length>0){n=Number(arguments[1]);if(n!==n){n=0}else{if(n!==0&&n!==(1/0)&&n!==-(1/0)){n=(n>0||-1)*Math.floor(Math.abs(n))}}}if(n>=len){return -1}var k=n>=0?n:Math.max(len-Math.abs(n),0);for(;k<len;k++){if(k in t&&t[k]===searchElement){return k}}return -1}}_V_.extend({addEvent:function(elem,type,fn){var data=_V_.getData(elem),handlers;if(data&&!data.handler){data.handler=function(event){event=_V_.fixEvent(event);var handlers=_V_.getData(elem).events[event.type];if(handlers){var handlersCopy=[];_V_.each(handlers,function(handler,i){handlersCopy[i]=handler});for(var i=0,l=handlersCopy.length;i<l;i++){handlersCopy[i].call(elem,event)}}}}if(!data.events){data.events={}}handlers=data.events[type];if(!handlers){handlers=data.events[type]=[];if(document.addEventListener){elem.addEventListener(type,data.handler,false)}else{if(document.attachEvent){elem.attachEvent("on"+type,data.handler)}}}if(!fn.guid){fn.guid=_V_.guid++}handlers.push(fn)},removeEvent:function(elem,type,fn){var data=_V_.getData(elem),handlers;if(!data.events){return}if(!type){for(type in data.events){_V_.cleanUpEvents(elem,type)}return}handlers=data.events[type];if(!handlers){return}if(fn&&fn.guid){for(var i=0;i<handlers.length;i++){if(handlers[i].guid===fn.guid){handlers.splice(i--,1)}}}_V_.cleanUpEvents(elem,type)},cleanUpEvents:function(elem,type){var data=_V_.getData(elem);if(data.events[type].length===0){delete data.events[type];if(document.removeEventListener){elem.removeEventListener(type,data.handler,false)}else{if(document.detachEvent){elem.detachEvent("on"+type,data.handler)}}}if(_V_.isEmpty(data.events)){delete data.events;delete data.handler}if(_V_.isEmpty(data)){_V_.removeData(elem)}},fixEvent:function(event){if(event[_V_.expando]){return event}var originalEvent=event;event=new _V_.Event(originalEvent);for(var i=_V_.Event.props.length,prop;i;){prop=_V_.Event.props[--i];event[prop]=originalEvent[prop]}if(!event.target){event.target=event.srcElement||document}if(event.target.nodeType===3){event.target=event.target.parentNode}if(!event.relatedTarget&&event.fromElement){event.relatedTarget=event.fromElement===event.target?event.toElement:event.fromElement}if(event.pageX==null&&event.clientX!=null){var eventDocument=event.target.ownerDocument||document,doc=eventDocument.documentElement,body=eventDocument.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0)}if(event.which==null&&(event.charCode!=null||event.keyCode!=null)){event.which=event.charCode!=null?event.charCode:event.keyCode}if(!event.metaKey&&event.ctrlKey){event.metaKey=event.ctrlKey}if(!event.which&&event.button!==undefined){event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)))}return event},triggerEvent:function(elem,event){var data=_V_.getData(elem),parent=elem.parentNode||elem.ownerDocument,type=event.type||event,handler;if(data){handler=data.handler}event=typeof event==="object"?event[_V_.expando]?event:new _V_.Event(type,event):new _V_.Event(type);event.type=type;if(handler){handler.call(elem,event)}event.result=undefined;event.target=elem},one:function(elem,type,fn){_V_.addEvent(elem,type,function(){_V_.removeEvent(elem,type,arguments.callee);fn.apply(this,arguments)})}});_V_.Event=function(src,props){if(src&&src.type){this.originalEvent=src;this.type=src.type;this.isDefaultPrevented=(src.defaultPrevented||src.returnValue===false||src.getPreventDefault&&src.getPreventDefault())?returnTrue:returnFalse}else{this.type=src}if(props){_V_.merge(this,props)}this.timeStamp=(new Date).getTime();this[_V_.expando]=true};_V_.Event.prototype={preventDefault:function(){this.isDefaultPrevented=returnTrue;var e=this.originalEvent;if(!e){return}if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=returnTrue;var e=this.originalEvent;if(!e){return}if(e.stopPropagation){e.stopPropagation()}e.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=returnTrue;this.stopPropagation()},isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse};_V_.Event.props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" ");function returnTrue(){return true}function returnFalse(){return false}var JSON;if(!JSON){JSON={}}(function(){var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());_V_.Player=_V_.Component.extend({init:function(tag,addOptions,ready){this.tag=tag;var el=this.el=_V_.createElement("div"),options=this.options={},width=options.width=tag.getAttribute("width"),height=options.height=tag.getAttribute("height"),initWidth=width||300,initHeight=height||150;tag.player=el.player=this;this.ready(ready);tag.parentNode.insertBefore(el,tag);el.appendChild(tag);el.id=this.id=tag.id;el.className=tag.className;tag.id+="_html5_api";tag.className="vjs-tech";_V_.players[el.id]=this;el.setAttribute("width",initWidth);el.setAttribute("height",initHeight);el.style.width=initWidth+"px";el.style.height=initHeight+"px";tag.removeAttribute("width");tag.removeAttribute("height");_V_.merge(options,_V_.options);_V_.merge(options,this.getVideoTagSettings());_V_.merge(options,addOptions);tag.removeAttribute("controls");tag.removeAttribute("poster");if(tag.hasChildNodes()){for(var i=0,j=tag.childNodes;i<j.length;i++){if(j[i].nodeName=="SOURCE"||j[i].nodeName=="TRACK"){tag.removeChild(j[i])}}}this.values={};this.addClass("vjs-paused");this.addEvent("ended",this.onEnded);this.addEvent("play",this.onPlay);this.addEvent("pause",this.onPause);this.addEvent("progress",this.onProgress);this.addEvent("error",this.onError);if(options.controls){this.ready(function(){this.initComponents()})}this.textTracks=[];if(options.tracks&&options.tracks.length>0){this.addTextTracks(options.tracks)}if(!options.sources||options.sources.length==0){for(var i=0,j=options.techOrder;i<j.length;i++){var techName=j[i],tech=_V_[techName];if(tech.isSupported()){this.loadTech(techName);break}}}else{this.src(options.sources)}},values:{},destroy:function(){this.stopTrackingProgress();this.stopTrackingCurrentTime();_V_.players[this.id]=null;delete _V_.players[this.id];this.tech.destroy();this.el.parentNode.removeChild(this.el)},createElement:function(type,options){},getVideoTagSettings:function(){var options={sources:[],tracks:[]};options.src=this.tag.getAttribute("src");options.controls=this.tag.getAttribute("controls")!==null;options.poster=this.tag.getAttribute("poster");options.preload=this.tag.getAttribute("preload");options.autoplay=this.tag.getAttribute("autoplay")!==null;options.loop=this.tag.getAttribute("loop")!==null;options.muted=this.tag.getAttribute("muted")!==null;if(this.tag.hasChildNodes()){for(var c,i=0,j=this.tag.childNodes;i<j.length;i++){c=j[i];if(c.nodeName=="SOURCE"){options.sources.push({src:c.getAttribute("src"),type:c.getAttribute("type"),media:c.getAttribute("media"),title:c.getAttribute("title")})}if(c.nodeName=="TRACK"){options.tracks.push({src:c.getAttribute("src"),kind:c.getAttribute("kind"),srclang:c.getAttribute("srclang"),label:c.getAttribute("label"),"default":c.getAttribute("default")!==null,title:c.getAttribute("title")})}}}return options},loadTech:function(techName,source){if(this.tech){this.unloadTech()}else{if(techName!="html5"&&this.tag){this.el.removeChild(this.tag);this.tag=false}}this.techName=techName;this.isReady=false;var techReady=function(){this.player.triggerReady();if(!this.support.progressEvent){this.player.manualProgressOn()}if(!this.support.timeupdateEvent){this.player.manualTimeUpdatesOn()}};var techOptions=_V_.merge({source:source,parentEl:this.el},this.options[techName]);if(source){if(source.src==this.values.src&&this.values.currentTime>0){techOptions.startTime=this.values.currentTime}this.values.src=source.src}this.tech=new _V_[techName](this,techOptions);this.tech.ready(techReady)},unloadTech:function(){this.tech.destroy();if(this.manualProgress){this.manualProgressOff()}if(this.manualTimeUpdates){this.manualTimeUpdatesOff()}this.tech=false},manualProgressOn:function(){this.manualProgress=true;this.trackProgress();this.tech.addEvent("progress",function(){this.removeEvent("progress",arguments.callee);this.support.progressEvent=true;this.player.manualProgressOff()})},manualProgressOff:function(){this.manualProgress=false;this.stopTrackingProgress()},trackProgress:function(){this.progressInterval=setInterval(_V_.proxy(this,function(){if(this.values.bufferEnd<this.buffered().end(0)){this.triggerEvent("progress")}else{if(this.bufferedPercent()==1){this.stopTrackingProgress();this.triggerEvent("progress")}}}),500)},stopTrackingProgress:function(){clearInterval(this.progressInterval)},manualTimeUpdatesOn:function(){this.manualTimeUpdates=true;this.addEvent("play",this.trackCurrentTime);this.addEvent("pause",this.stopTrackingCurrentTime);this.tech.addEvent("timeupdate",function(){this.removeEvent("timeupdate",arguments.callee);this.support.timeupdateEvent=true;this.player.manualTimeUpdatesOff()})},manualTimeUpdatesOff:function(){this.manualTimeUpdates=false;this.stopTrackingCurrentTime();this.removeEvent("play",this.trackCurrentTime);this.removeEvent("pause",this.stopTrackingCurrentTime)},trackCurrentTime:function(){if(this.currentTimeInterval){this.stopTrackingCurrentTime()}this.currentTimeInterval=setInterval(_V_.proxy(this,function(){this.triggerEvent("timeupdate")}),250)},stopTrackingCurrentTime:function(){clearInterval(this.currentTimeInterval)},onEnded:function(){if(this.options.loop){this.currentTime(0);this.play()}else{this.pause();this.currentTime(0);this.pause()}},onPlay:function(){_V_.removeClass(this.el,"vjs-paused");_V_.addClass(this.el,"vjs-playing")},onPause:function(){_V_.removeClass(this.el,"vjs-playing");_V_.addClass(this.el,"vjs-paused")},onProgress:function(){if(this.bufferedPercent()==1){this.triggerEvent("loadedalldata")}},onError:function(e){_V_.log("Video Error",e)},techCall:function(method,arg){if(!this.tech.isReady){this.tech.ready(function(){this[method](arg)})}else{try{this.tech[method](arg)}catch(e){_V_.log(e)}}},techGet:function(method){if(this.tech.isReady){try{return this.tech[method]()}catch(e){if(this.tech[method]===undefined){_V_.log("Video.js: "+method+" method not defined for "+this.techName+" playback technology.",e)}else{if(e.name=="TypeError"){_V_.log("Video.js: "+method+" unavailable on "+this.techName+" playback technology element.",e);this.tech.isReady=false}else{_V_.log(e)}}}}return},play:function(){this.techCall("play");return this},pause:function(){this.techCall("pause");return this},paused:function(){return(this.techGet("paused")===false)?false:true},currentTime:function(seconds){if(seconds!==undefined){this.values.lastSetCurrentTime=seconds;this.techCall("setCurrentTime",seconds);if(this.manualTimeUpdates){this.triggerEvent("timeupdate")}return this}return this.values.currentTime=(this.techGet("currentTime")||0)},duration:function(){return parseFloat(this.techGet("duration"))},remainingTime:function(){return this.duration()-this.currentTime()},buffered:function(){var buffered=this.techGet("buffered"),start=0,end=this.values.bufferEnd=this.values.bufferEnd||0,timeRange;if(buffered&&buffered.length>0&&buffered.end(0)!==end){end=buffered.end(0);this.values.bufferEnd=end}return _V_.createTimeRange(start,end)},bufferedPercent:function(){return(this.duration())?this.buffered().end(0)/this.duration():0},volume:function(percentAsDecimal){var vol;if(percentAsDecimal!==undefined){vol=Math.max(0,Math.min(1,parseFloat(percentAsDecimal)));this.values.volume=vol;this.techCall("setVolume",vol);_V_.setLocalStorage("volume",vol);return this}vol=parseFloat(this.techGet("volume"));return(isNaN(vol))?1:vol},muted:function(muted){if(muted!==undefined){this.techCall("setMuted",muted);return this}return this.techGet("muted")||false},width:function(width,skipListeners){if(width!==undefined){this.el.width=width;this.el.style.width=width+"px";if(!skipListeners){this.triggerEvent("resize")}return this}return parseInt(this.el.getAttribute("width"))},height:function(height){if(height!==undefined){this.el.height=height;this.el.style.height=height+"px";this.triggerEvent("resize");return this}return parseInt(this.el.getAttribute("height"))},size:function(width,height){return this.width(width,true).height(height)},supportsFullScreen:function(){return this.techGet("supportsFullScreen")||false},requestFullScreen:function(){var requestFullScreen=_V_.support.requestFullScreen;this.isFullScreen=true;if(requestFullScreen){_V_.addEvent(document,requestFullScreen.eventName,this.proxy(function(){this.isFullScreen=document[requestFullScreen.isFullScreen];if(this.isFullScreen==false){_V_.removeEvent(document,requestFullScreen.eventName,arguments.callee)}this.triggerEvent("fullscreenchange")}));if(this.tech.support.fullscreenResize===false&&this.options.flash.iFrameMode!=true){this.pause();this.unloadTech();_V_.addEvent(document,requestFullScreen.eventName,this.proxy(function(){_V_.removeEvent(document,requestFullScreen.eventName,arguments.callee);this.loadTech(this.techName,{src:this.values.src})}));this.el[requestFullScreen.requestFn]()}else{this.el[requestFullScreen.requestFn]()}}else{if(this.tech.supportsFullScreen()){this.triggerEvent("fullscreenchange");this.techCall("enterFullScreen")}else{this.triggerEvent("fullscreenchange");this.enterFullWindow()}}return this},cancelFullScreen:function(){var requestFullScreen=_V_.support.requestFullScreen;this.isFullScreen=false;if(requestFullScreen){if(this.tech.support.fullscreenResize===false&&this.options.flash.iFrameMode!=true){this.pause();this.unloadTech();_V_.addEvent(document,requestFullScreen.eventName,this.proxy(function(){_V_.removeEvent(document,requestFullScreen.eventName,arguments.callee);this.loadTech(this.techName,{src:this.values.src})}));document[requestFullScreen.cancelFn]()}else{document[requestFullScreen.cancelFn]()}}else{if(this.tech.supportsFullScreen()){this.techCall("exitFullScreen");this.triggerEvent("fullscreenchange")}else{this.exitFullWindow();this.triggerEvent("fullscreenchange")}}return this},enterFullWindow:function(){this.isFullWindow=true;this.docOrigOverflow=document.documentElement.style.overflow;_V_.addEvent(document,"keydown",_V_.proxy(this,this.fullWindowOnEscKey));document.documentElement.style.overflow="hidden";_V_.addClass(document.body,"vjs-full-window");_V_.addClass(this.el,"vjs-fullscreen");this.triggerEvent("enterFullWindow")},fullWindowOnEscKey:function(event){if(event.keyCode==27){if(this.isFullScreen==true){this.cancelFullScreen()}else{this.exitFullWindow()}}},exitFullWindow:function(){this.isFullWindow=false;_V_.removeEvent(document,"keydown",this.fullWindowOnEscKey);document.documentElement.style.overflow=this.docOrigOverflow;_V_.removeClass(document.body,"vjs-full-window");_V_.removeClass(this.el,"vjs-fullscreen");this.triggerEvent("exitFullWindow")},selectSource:function(sources){for(var i=0,j=this.options.techOrder;i<j.length;i++){var techName=j[i],tech=_V_[techName];if(tech.isSupported()){for(var a=0,b=sources;a<b.length;a++){var source=b[a];if(tech.canPlaySource.call(this,source)){return{source:source,tech:techName}}}}}return false},src:function(source){if(source instanceof Array){var sourceTech=this.selectSource(source),source,techName;if(sourceTech){source=sourceTech.source;techName=sourceTech.tech;if(techName==this.techName){this.src(source)}else{this.loadTech(techName,source)}}else{_V_.log("No compatible source and playback technology were found.")}}else{if(source instanceof Object){if(_V_[this.techName].canPlaySource(source)){this.src(source.src)}else{this.src([source])}}else{this.values.src=source;if(!this.isReady){this.ready(function(){this.src(source)})}else{this.techCall("src",source);if(this.options.preload=="auto"){this.load()}if(this.options.autoplay){this.play()}}}}return this},load:function(){this.techCall("load");return this},currentSrc:function(){return this.techGet("currentSrc")||this.values.src||""},preload:function(value){if(value!==undefined){this.techCall("setPreload",value);this.options.preload=value;return this}return this.techGet("preload")},autoplay:function(value){if(value!==undefined){this.techCall("setAutoplay",value);this.options.autoplay=value;return this}return this.techGet("autoplay",value)},loop:function(value){if(value!==undefined){this.techCall("setLoop",value);this.options.loop=value;return this}return this.techGet("loop")},controls:function(){return this.options.controls},poster:function(){return this.techGet("poster")},error:function(){return this.techGet("error")},ended:function(){return this.techGet("ended")}});(function(){var requestFn,cancelFn,eventName,isFullScreen,playerProto=_V_.Player.prototype;if(document.cancelFullscreen!==undefined){requestFn="requestFullscreen";cancelFn="exitFullscreen";eventName="fullscreenchange";isFullScreen="fullScreen"}else{_V_.each(["moz","webkit"],function(prefix){if((prefix!="moz"||document.mozFullScreenEnabled)&&document[prefix+"CancelFullScreen"]!==undefined){requestFn=prefix+"RequestFullScreen";cancelFn=prefix+"CancelFullScreen";eventName=prefix+"fullscreenchange";if(prefix=="webkit"){isFullScreen=prefix+"IsFullScreen"}else{isFullScreen=prefix+"FullScreen"}}})}if(requestFn){_V_.support.requestFullScreen={requestFn:requestFn,cancelFn:cancelFn,eventName:eventName,isFullScreen:isFullScreen}}})();_V_.PlaybackTech=_V_.Component.extend({init:function(player,options){},onClick:function(){if(this.player.options.controls){_V_.PlayToggle.prototype.onClick.call(this)}}});_V_.apiMethods="play,pause,paused,currentTime,setCurrentTime,duration,buffered,volume,setVolume,muted,setMuted,width,height,supportsFullScreen,enterFullScreen,src,load,currentSrc,preload,setPreload,autoplay,setAutoplay,loop,setLoop,error,networkState,readyState,seeking,initialTime,startOffsetTime,played,seekable,ended,videoTracks,audioTracks,videoWidth,videoHeight,textTracks,defaultPlaybackRate,playbackRate,mediaGroup,controller,controls,defaultMuted".split(",");_V_.each(_V_.apiMethods,function(methodName){_V_.PlaybackTech.prototype[methodName]=function(){throw new Error("The '"+methodName+"' method is not available on the playback technology's API")}});_V_.html5=_V_.PlaybackTech.extend({init:function(player,options,ready){this.player=player;this.el=this.createElement();this.ready(ready);this.addEvent("click",this.proxy(this.onClick));var source=options.source;if(source&&this.el.currentSrc==source.src){player.triggerEvent("loadstart")}else{if(source){this.el.src=source.src}}player.ready(function(){if(this.options.autoplay&&this.paused()){this.tag.poster=null;this.play()}});this.setupTriggers();this.triggerReady()},destroy:function(){this.player.tag=false;this.removeTriggers();this.el.parentNode.removeChild(this.el)},createElement:function(){var html5=_V_.html5,player=this.player,el=player.tag,newEl;if(!el||this.support.movingElementInDOM===false){if(el){player.el.removeChild(el)}newEl=_V_.createElement("video",{id:el.id||player.el.id+"_html5_api",className:el.className||"vjs-tech"});el=newEl;_V_.insertFirst(el,player.el)}_V_.each(["autoplay","preload","loop","muted"],function(attr){if(player.options[attr]!==null){el[attr]=player.options[attr]}},this);return el},setupTriggers:function(){_V_.each.call(this,_V_.html5.events,function(type){_V_.addEvent(this.el,type,_V_.proxy(this.player,this.eventHandler))})},removeTriggers:function(){_V_.each.call(this,_V_.html5.events,function(type){_V_.removeEvent(this.el,type,_V_.proxy(this.player,this.eventHandler))})},eventHandler:function(e){e.stopPropagation();this.triggerEvent(e)},play:function(){this.el.play()},pause:function(){this.el.pause()},paused:function(){return this.el.paused},currentTime:function(){return this.el.currentTime},setCurrentTime:function(seconds){try{this.el.currentTime=seconds}catch(e){_V_.log(e,"Video isn't ready. (VideoJS)")}},duration:function(){return this.el.duration||0},buffered:function(){return this.el.buffered},volume:function(){return this.el.volume},setVolume:function(percentAsDecimal){this.el.volume=percentAsDecimal},muted:function(){return this.el.muted},setMuted:function(muted){this.el.muted=muted},width:function(){return this.el.offsetWidth},height:function(){return this.el.offsetHeight},supportsFullScreen:function(){if(typeof this.el.webkitEnterFullScreen=="function"){if(!navigator.userAgent.match("Chrome")&&!navigator.userAgent.match("Mac OS X 10.5")){return true}}return false},enterFullScreen:function(){try{this.el.webkitEnterFullScreen()}catch(e){if(e.code==11){_V_.log("VideoJS: Video not ready.")}}},src:function(src){this.el.src=src},load:function(){this.el.load()},currentSrc:function(){return this.el.currentSrc},preload:function(){return this.el.preload},setPreload:function(val){this.el.preload=val},autoplay:function(){return this.el.autoplay},setAutoplay:function(val){this.el.autoplay=val},loop:function(){return this.el.loop},setLoop:function(val){this.el.loop=val},error:function(){return this.el.error},seeking:function(){return this.el.seeking},ended:function(){return this.el.ended},controls:function(){return this.player.options.controls},defaultMuted:function(){return this.el.defaultMuted}});_V_.html5.isSupported=function(){return !!document.createElement("video").canPlayType};_V_.html5.canPlaySource=function(srcObj){return !!document.createElement("video").canPlayType(srcObj.type)};_V_.html5.events="loadstart,suspend,abort,error,emptied,stalled,loadedmetadata,loadeddata,canplay,canplaythrough,playing,waiting,seeking,seeked,ended,durationchange,timeupdate,progress,play,pause,ratechange,volumechange".split(",");_V_.html5.prototype.support={fullscreen:(typeof _V_.testVid.webkitEnterFullScreen!==undefined)?(!_V_.ua.match("Chrome")&&!_V_.ua.match("Mac OS X 10.5")?true:false):false,movingElementInDOM:!_V_.isIOS()};if(_V_.isAndroid()){if(_V_.androidVersion()<3){document.createElement("video").constructor.prototype.canPlayType=function(type){return(type&&type.toLowerCase().indexOf("video/mp4")!=-1)?"maybe":""}}}_V_.flash=_V_.PlaybackTech.extend({init:function(player,options){this.player=player;var source=options.source,parentEl=options.parentEl,placeHolder=this.el=_V_.createElement("div",{id:parentEl.id+"_temp_flash"}),objId=player.el.id+"_flash_api",playerOptions=player.options,flashVars=_V_.merge({readyFunction:"_V_.flash.onReady",eventProxyFunction:"_V_.flash.onEvent",errorEventProxyFunction:"_V_.flash.onError",autoplay:playerOptions.autoplay,preload:playerOptions.preload,loop:playerOptions.loop,muted:playerOptions.muted},options.flashVars),params=_V_.merge({wmode:"opaque",bgcolor:"#000000"},options.params),attributes=_V_.merge({id:objId,name:objId,"class":"vjs-tech"},options.attributes);if(source){flashVars.src=encodeURIComponent(_V_.getAbsoluteURL(source.src))}_V_.insertFirst(placeHolder,parentEl);if(options.startTime){this.ready(function(){this.load();this.play();this.currentTime(options.startTime)})}if(options.iFrameMode==true&&!_V_.isFF){var iFrm=_V_.createElement("iframe",{id:objId+"_iframe",name:objId+"_iframe",className:"vjs-tech",scrolling:"no",marginWidth:0,marginHeight:0,frameBorder:0});flashVars.readyFunction="ready";flashVars.eventProxyFunction="events";flashVars.errorEventProxyFunction="errors";_V_.addEvent(iFrm,"load",_V_.proxy(this,function(){var iDoc,objTag,swfLoc,iWin=iFrm.contentWindow,varString="";iDoc=iFrm.contentDocument?iFrm.contentDocument:iFrm.contentWindow.document;iDoc.write(_V_.flash.getEmbedCode(options.swf,flashVars,params,attributes));iWin.player=this.player;iWin.ready=_V_.proxy(this.player,function(currSwf){var el=iDoc.getElementById(currSwf),player=this,tech=player.tech;tech.el=el;_V_.addEvent(el,"click",tech.proxy(tech.onClick));_V_.flash.checkReady(tech)});iWin.events=_V_.proxy(this.player,function(swfID,eventName,other){var player=this;if(player&&player.techName=="flash"){player.triggerEvent(eventName)}});iWin.errors=_V_.proxy(this.player,function(swfID,eventName){_V_.log("Flash Error",eventName)})}));placeHolder.parentNode.replaceChild(iFrm,placeHolder)}else{_V_.flash.embed(options.swf,placeHolder,flashVars,params,attributes)}},destroy:function(){this.el.parentNode.removeChild(this.el)},play:function(){this.el.vjs_play()},pause:function(){this.el.vjs_pause()},src:function(src){src=_V_.getAbsoluteURL(src);this.el.vjs_src(src);if(this.player.autoplay()){var tech=this;setTimeout(function(){tech.play()},0)}},load:function(){this.el.vjs_load()},poster:function(){this.el.vjs_getProperty("poster")},buffered:function(){return _V_.createTimeRange(0,this.el.vjs_getProperty("buffered"))},supportsFullScreen:function(){return false},enterFullScreen:function(){return false}});(function(){var api=_V_.flash.prototype,readWrite="preload,currentTime,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted".split(","),readOnly="error,currentSrc,networkState,readyState,seeking,initialTime,duration,startOffsetTime,paused,played,seekable,ended,videoTracks,audioTracks,videoWidth,videoHeight,textTracks".split(","),callOnly="load,play,pause".split(",");createSetter=function(attr){var attrUpper=attr.charAt(0).toUpperCase()+attr.slice(1);api["set"+attrUpper]=function(val){return this.el.vjs_setProperty(attr,val)}},createGetter=function(attr){api[attr]=function(){return this.el.vjs_getProperty(attr)}};_V_.each(readWrite,function(attr){createGetter(attr);createSetter(attr)});_V_.each(readOnly,function(attr){createGetter(attr)})})();_V_.flash.isSupported=function(){return _V_.flash.version()[0]>=10};_V_.flash.canPlaySource=function(srcObj){if(srcObj.type in _V_.flash.prototype.support.formats){return"maybe"}};_V_.flash.prototype.support={formats:{"video/flv":"FLV","video/x-flv":"FLV","video/mp4":"MP4","video/m4v":"MP4"},progressEvent:false,timeupdateEvent:false,fullscreenResize:false,parentResize:!(_V_.ua.match("Firefox"))};_V_.flash.onReady=function(currSwf){var el=_V_.el(currSwf);var player=el.player||el.parentNode.player,tech=player.tech;el.player=player;tech.el=el;tech.addEvent("click",tech.onClick);_V_.flash.checkReady(tech)};_V_.flash.checkReady=function(tech){if(tech.el.vjs_getProperty){tech.triggerReady()}else{setTimeout(function(){_V_.flash.checkReady(tech)},50)}};_V_.flash.onEvent=function(swfID,eventName){var player=_V_.el(swfID).player;player.triggerEvent(eventName)};_V_.flash.onError=function(swfID,err){var player=_V_.el(swfID).player;player.triggerEvent("error");_V_.log("Flash Error",err,swfID)};_V_.flash.version=function(){var version="0,0,0";try{version=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version").replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}catch(e){try{if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){version=(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}}catch(e){}}return version.split(",")};_V_.flash.embed=function(swf,placeHolder,flashVars,params,attributes){var code=_V_.flash.getEmbedCode(swf,flashVars,params,attributes),obj=_V_.createElement("div",{innerHTML:code}).childNodes[0],par=placeHolder.parentNode;placeHolder.parentNode.replaceChild(obj,placeHolder);if(_V_.isIE()){var newObj=par.childNodes[0];setTimeout(function(){newObj.style.display="block"},1000)}return obj};_V_.flash.getEmbedCode=function(swf,flashVars,params,attributes){var objTag='<object type="application/x-shockwave-flash"',flashVarsString="",paramsString="";attrsString="";if(flashVars){_V_.eachProp(flashVars,function(key,val){flashVarsString+=(key+"="+val+"&amp;")})}params=_V_.merge({movie:swf,flashvars:flashVarsString,allowScriptAccess:"always",allowNetworking:"all"},params);_V_.eachProp(params,function(key,val){paramsString+='<param name="'+key+'" value="'+val+'" />'});attributes=_V_.merge({data:swf,width:"100%",height:"100%"},attributes);_V_.eachProp(attributes,function(key,val){attrsString+=(key+'="'+val+'" ')});return objTag+attrsString+">"+paramsString+"</object>"};_V_.merge(_V_.Player.prototype,{addTextTracks:function(trackObjects){var tracks=this.textTracks=(this.textTracks)?this.textTracks:[],i=0,j=trackObjects.length,track,Kind;for(;i<j;i++){Kind=_V_.uc(trackObjects[i].kind||"subtitles");track=new _V_[Kind+"Track"](this,trackObjects[i]);tracks.push(track);if(track["default"]){this.ready(_V_.proxy(track,track.show))}}return this},showTextTrack:function(id,disableSameKind){var tracks=this.textTracks,i=0,j=tracks.length,track,showTrack,kind;for(;i<j;i++){track=tracks[i];if(track.id===id){track.show();showTrack=track}else{if(disableSameKind&&track.kind==disableSameKind&&track.mode>0){track.disable()}}}kind=(showTrack)?showTrack.kind:((disableSameKind)?disableSameKind:false);if(kind){this.triggerEvent(kind+"trackchange")}return this}});_V_.Track=_V_.Component.extend({init:function(player,options){this._super(player,options);_V_.merge(this,{id:options.id||("vjs_"+options.kind+"_"+options.language+"_"+_V_.guid++),src:options.src,"default":options["default"],title:options.title,language:options.srclang,label:options.label,cues:[],activeCues:[],readyState:0,mode:0})},createElement:function(){return this._super("div",{className:"vjs-"+this.kind+" vjs-text-track"})},show:function(){this.activate();this.mode=2;this._super()},hide:function(){this.activate();this.mode=1;this._super()},disable:function(){if(this.mode==2){this.hide()}this.deactivate();this.mode=0},activate:function(){if(this.readyState==0){this.load()}if(this.mode==0){this.player.addEvent("timeupdate",this.proxy(this.update,this.id));this.player.addEvent("ended",this.proxy(this.reset,this.id));if(this.kind=="captions"||this.kind=="subtitles"){this.player.textTrackDisplay.addComponent(this)}}},deactivate:function(){this.player.removeEvent("timeupdate",this.proxy(this.update,this.id));this.player.removeEvent("ended",this.proxy(this.reset,this.id));this.reset();this.player.textTrackDisplay.removeComponent(this)},load:function(){if(this.readyState==0){this.readyState=1;_V_.get(this.src,this.proxy(this.parseCues),this.proxy(this.onError))}},onError:function(err){this.error=err;this.readyState=3;this.triggerEvent("error")},parseCues:function(srcContent){var cue,time,text,lines=srcContent.split("\n"),line="",id;for(var i=1,j=lines.length;i<j;i++){line=_V_.trim(lines[i]);if(line){if(line.indexOf("-->")==-1){id=line;line=_V_.trim(lines[++i])}else{id=this.cues.length}cue={id:id,index:this.cues.length};time=line.split(" --> ");cue.startTime=this.parseCueTime(time[0]);cue.endTime=this.parseCueTime(time[1]);text=[];while(lines[++i]&&(line=_V_.trim(lines[i]))){text.push(line)}cue.text=text.join("<br/>");this.cues.push(cue)}}this.readyState=2;this.triggerEvent("loaded")},parseCueTime:function(timeText){var parts=timeText.split(":"),time=0,hours,minutes,other,seconds,ms,flags;if(parts.length==3){hours=parts[0];minutes=parts[1];other=parts[2]}else{hours=0;minutes=parts[0];other=parts[1]}other=other.split(/\s+/);seconds=other.splice(0,1)[0];seconds=seconds.split(/\.|,/);ms=parseFloat(seconds[1]);seconds=seconds[0];time+=parseFloat(hours)*3600;time+=parseFloat(minutes)*60;time+=parseFloat(seconds);if(ms){time+=ms/1000}return time},update:function(){if(this.cues.length>0){var time=this.player.currentTime();if(this.prevChange===undefined||time<this.prevChange||this.nextChange<=time){var cues=this.cues,newNextChange=this.player.duration(),newPrevChange=0,reverse=false,newCues=[],firstActiveIndex,lastActiveIndex,html="",cue,i,j;if(time>=this.nextChange||this.nextChange===undefined){i=(this.firstActiveIndex!==undefined)?this.firstActiveIndex:0}else{reverse=true;i=(this.lastActiveIndex!==undefined)?this.lastActiveIndex:cues.length-1}while(true){cue=cues[i];if(cue.endTime<=time){newPrevChange=Math.max(newPrevChange,cue.endTime);if(cue.active){cue.active=false}}else{if(time<cue.startTime){newNextChange=Math.min(newNextChange,cue.startTime);if(cue.active){cue.active=false}if(!reverse){break}}else{if(reverse){newCues.splice(0,0,cue);if(lastActiveIndex===undefined){lastActiveIndex=i}firstActiveIndex=i}else{newCues.push(cue);if(firstActiveIndex===undefined){firstActiveIndex=i}lastActiveIndex=i}newNextChange=Math.min(newNextChange,cue.endTime);newPrevChange=Math.max(newPrevChange,cue.startTime);cue.active=true}}if(reverse){if(i===0){break}else{i--}}else{if(i===cues.length-1){break}else{i++}}}this.activeCues=newCues;this.nextChange=newNextChange;this.prevChange=newPrevChange;this.firstActiveIndex=firstActiveIndex;this.lastActiveIndex=lastActiveIndex;this.updateDisplay();this.triggerEvent("cuechange")}}},updateDisplay:function(){var cues=this.activeCues,html="",i=0,j=cues.length;for(;i<j;i++){html+="<span class='vjs-tt-cue'>"+cues[i].text+"</span>"}this.el.innerHTML=html},reset:function(){this.nextChange=0;this.prevChange=this.player.duration();this.firstActiveIndex=0;this.lastActiveIndex=0}});_V_.CaptionsTrack=_V_.Track.extend({kind:"captions"});_V_.SubtitlesTrack=_V_.Track.extend({kind:"subtitles"});_V_.ChaptersTrack=_V_.Track.extend({kind:"chapters"});_V_.TextTrackDisplay=_V_.Component.extend({createElement:function(){return this._super("div",{className:"vjs-text-track-display"})}});_V_.TextTrackMenuItem=_V_.MenuItem.extend({init:function(player,options){var track=this.track=options.track;options.label=track.label;options.selected=track["default"];this._super(player,options);this.player.addEvent(track.kind+"trackchange",_V_.proxy(this,this.update))},onClick:function(){this._super();this.player.showTextTrack(this.track.id,this.track.kind)},update:function(){if(this.track.mode==2){this.selected(true)}else{this.selected(false)}}});_V_.OffTextTrackMenuItem=_V_.TextTrackMenuItem.extend({init:function(player,options){options.track={kind:options.kind,player:player,label:"Off"};this._super(player,options)},onClick:function(){this._super();this.player.showTextTrack(this.track.id,this.track.kind)},update:function(){var tracks=this.player.textTracks,i=0,j=tracks.length,track,off=true;for(;i<j;i++){track=tracks[i];if(track.kind==this.track.kind&&track.mode==2){off=false}}if(off){this.selected(true)}else{this.selected(false)}}});_V_.TextTrackButton=_V_.Button.extend({init:function(player,options){this._super(player,options);this.menu=this.createMenu();if(this.items.length===0){this.hide()}},createMenu:function(){var menu=new _V_.Menu(this.player);menu.el.appendChild(_V_.createElement("li",{className:"vjs-menu-title",innerHTML:_V_.uc(this.kind)}));menu.addItem(new _V_.OffTextTrackMenuItem(this.player,{kind:this.kind}));this.items=this.createItems();this.each(this.items,function(item){menu.addItem(item)});this.addComponent(menu);return menu},createItems:function(){var items=[];this.each(this.player.textTracks,function(track){if(track.kind===this.kind){items.push(new _V_.TextTrackMenuItem(this.player,{track:track}))}});return items},buildCSSClass:function(){return this.className+" vjs-menu-button "+this._super()},onFocus:function(){this.menu.lockShowing();_V_.one(this.menu.el.childNodes[this.menu.el.childNodes.length-1],"blur",this.proxy(function(){this.menu.unlockShowing()}))},onBlur:function(){},onClick:function(){this.one("mouseout",this.proxy(function(){this.menu.unlockShowing();this.el.blur()}))}});_V_.CaptionsButton=_V_.TextTrackButton.extend({kind:"captions",buttonText:"Captions",className:"vjs-captions-button"});_V_.SubtitlesButton=_V_.TextTrackButton.extend({kind:"subtitles",buttonText:"Subtitles",className:"vjs-subtitles-button"});_V_.ChaptersButton=_V_.TextTrackButton.extend({kind:"chapters",buttonText:"Chapters",className:"vjs-chapters-button",createItems:function(chaptersTrack){var items=[];this.each(this.player.textTracks,function(track){if(track.kind===this.kind){items.push(new _V_.TextTrackMenuItem(this.player,{track:track}))}});return items},createMenu:function(){var tracks=this.player.textTracks,i=0,j=tracks.length,track,chaptersTrack,items=this.items=[];for(;i<j;i++){track=tracks[i];if(track.kind==this.kind&&track["default"]){if(track.readyState<2){this.chaptersTrack=track;track.addEvent("loaded",this.proxy(this.createMenu));return}else{chaptersTrack=track;break}}}var menu=this.menu=new _V_.Menu(this.player);menu.el.appendChild(_V_.createElement("li",{className:"vjs-menu-title",innerHTML:_V_.uc(this.kind)}));if(chaptersTrack){var cues=chaptersTrack.cues,i=0,j=cues.length,cue,mi;for(;i<j;i++){cue=cues[i];mi=new _V_.ChaptersTrackMenuItem(this.player,{track:chaptersTrack,cue:cue});items.push(mi);menu.addComponent(mi)}}this.addComponent(menu);if(this.items.length>0){this.show()}return menu}});_V_.ChaptersTrackMenuItem=_V_.MenuItem.extend({init:function(player,options){var track=this.track=options.track,cue=this.cue=options.cue,currentTime=player.currentTime();options.label=cue.text;options.selected=(cue.startTime<=currentTime&&currentTime<cue.endTime);this._super(player,options);track.addEvent("cuechange",_V_.proxy(this,this.update))},onClick:function(){this._super();this.player.currentTime(this.cue.startTime);this.update(this.cue.startTime)},update:function(time){var cue=this.cue,currentTime=this.player.currentTime();if(cue.startTime<=currentTime&&currentTime<cue.endTime){this.selected(true)}else{this.selected(false)}}});_V_.merge(_V_.ControlBar.prototype.options.components,{subtitlesButton:{},captionsButton:{},chaptersButton:{}});_V_.autoSetup=function(){var options,vid,player,vids=document.getElementsByTagName("video");if(vids&&vids.length>0){for(var i=0,j=vids.length;i<j;i++){vid=vids[i];if(vid&&vid.getAttribute){if(vid.player===undefined){options=vid.getAttribute("data-setup");if(options!==null){options=JSON.parse(options||"{}");player=_V_(vid,options)}}}else{_V_.autoSetupTimeout(1);break}}}else{if(!_V_.windowLoaded){_V_.autoSetupTimeout(1)}}};_V_.autoSetupTimeout=function(wait){setTimeout(_V_.autoSetup,wait)};_V_.addEvent(window,"load",function(){_V_.windowLoaded=true});_V_.autoSetup();window.VideoJS=window._V_=VideoJS})(window);
lng/featured-video-plus-de_DE.mo CHANGED
Binary file
lng/featured-video-plus-de_DE.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: featured-video-plus 1.3 de_DE\n"
4
- "POT-Creation-Date: 2013-03-15 17:05+0100\n"
5
- "PO-Revision-Date: 2013-03-15 17:13+0100\n"
6
  "Last-Translator: Alexander Höreth <a.hoereth@gmail.com>\n"
7
  "Language-Team: a.hoereth <a.hoereth@gmail.com>\n"
8
  "Language: de_DE\n"
@@ -23,16 +23,16 @@ msgstr "Video URL"
23
  msgid "Fallback: same video, different format"
24
  msgstr "Fallback: gleiche Video, anderes Format"
25
 
26
- #: php/backend.php:89 php/backend.php:611 php/backend.php:618
27
- #: php/backend.php:635 php/backend.php:637
28
  msgid "Featured Video"
29
  msgstr "Beitragsvideo"
30
 
31
- #: php/backend.php:120
32
  msgid "Outdated WordPress Version"
33
  msgstr "Veraltete WordPress Version"
34
 
35
- #: php/backend.php:120
36
  #, php-format
37
  msgid ""
38
  "There is WordPress 3.5 out there! The plugin supports older versions way "
@@ -41,74 +41,74 @@ msgstr ""
41
  "Es gibt schon WordPress 3.5! Das Plugin unterstützt alle Versionen ab 3.1 - "
42
  "aber %s ist wirklich zu alt!"
43
 
44
- #: php/backend.php:129
45
  msgid "Set Featured Video"
46
  msgstr "Beitragsvideo festlegen"
47
 
48
- #: php/backend.php:129
49
  msgid "Set featured video"
50
  msgstr "Beitragsvideo festlegen"
51
 
52
- #: php/backend.php:136
53
  msgid "Set Featured Video Fallback"
54
  msgstr "Beitragsvideo-Ersatz festlegen"
55
 
56
- #: php/backend.php:136
57
  msgid "Set featured video fallback"
58
  msgstr "Beitragsvideo Fallback festlegen"
59
 
60
- #: php/backend.php:143 php/backend.php:564
61
  msgid "Supported Video Formats"
62
  msgstr "Unterstützte Videoformate"
63
 
64
- #: php/backend.php:143
65
  msgid "or"
66
  msgstr "oder"
67
 
68
- #: php/backend.php:143 php/backend.php:563
69
  msgid "More information"
70
  msgstr "Mehr Informationen"
71
 
72
- #: php/backend.php:148
73
  msgid "Fallback Video"
74
  msgstr "Fallback Video"
75
 
76
- #: php/backend.php:148
77
  msgid ""
78
  "The two input fields should contain the same video but in distinct formats."
79
  msgstr ""
80
  "Die zwei Eingabefelder sollen das gleiche Video in unterschiedlichen "
81
  "Formaten enthalten."
82
 
83
- #: php/backend.php:155
84
  msgid "Hint"
85
  msgstr "Hinweis"
86
 
87
- #: php/backend.php:155
88
  #, php-format
89
  msgid "Take a look into the %sContextual Help%s."
90
  msgstr "Wirf einen Blick in die %sHilfe%s."
91
 
92
- #: php/backend.php:162 php/settings.php:392
93
  msgid "Featured Image"
94
  msgstr ""
95
 
96
- #: php/backend.php:162
97
  msgid ""
98
  "For automatically displaying the Featured Video a Featured Image is required."
99
  msgstr ""
100
  "Um das Artikelvideo automatisch im Theme anzeigen zu können, muss ein "
101
  "Artikelbild festgelegt werden."
102
 
103
- #: php/backend.php:167
104
  msgid "Set as Featured Image"
105
  msgstr "Als Beitragsbild festlegen"
106
 
107
- #: php/backend.php:171 php/settings.php:70
108
  msgid "The current theme does not support Featured Images"
109
  msgstr "Das aktuelle Theme nutzt keine Beitragsbilder."
110
 
111
- #: php/backend.php:171
112
  #, php-format
113
  msgid ""
114
  "To display Featured Videos you need to use the <code>Shortcode</code> or "
@@ -120,7 +120,7 @@ msgstr ""
120
  "diese Warnung zu verstecken, deaktiviere &quot;<em>Artikelbilder ersetzen</"
121
  "em>&quot; in deinen %sMedien Einstellungen%s."
122
 
123
- #: php/backend.php:558
124
  #, php-format
125
  msgid ""
126
  "To use local videos, copy the <code>Link To Media File</code> from your "
@@ -129,7 +129,7 @@ msgstr ""
129
  "Um lokale Videos zu nutzen, kopiere den <code>Link zur Medien-Datei</code> "
130
  "aus deiner %sMediathek%s und füge ihn in das Textfeld ein."
131
 
132
- #: php/backend.php:559
133
  #, php-format
134
  msgid ""
135
  "To use local videos, copy the <code>File URL</code> from your %sMedia Library"
@@ -138,7 +138,7 @@ msgstr ""
138
  "Um lokale Videos zu nutzen, kopiere die <code>Datei-URL</code> aus deiner "
139
  "%sMediathek%s und füge sie in das Textfeld ein."
140
 
141
- #: php/backend.php:563
142
  msgid ""
143
  "The second text field is intended to hold the URL to the same video in a "
144
  "different format. It will be used as fallback if the primary file can not be "
@@ -148,11 +148,11 @@ msgstr ""
148
  "Videoformat gedacht. Dieses zweite Video wird dann als Fallback benutzt, "
149
  "falls das erste Video nicht kompatibel ist."
150
 
151
- #: php/backend.php:566
152
  msgid "Converting your videos"
153
  msgstr "Videos konvertieren"
154
 
155
- #: php/backend.php:567
156
  #, php-format
157
  msgid ""
158
  "Take a look at the %sMiro Video Converter%s. It is open source, lightweight "
@@ -161,11 +161,11 @@ msgstr ""
161
  "Schau dir den %sMiro Video Converter%s an. Er is Open Source, klein, einfach "
162
  "zu verwenden und mit Windows, Mac und Linux kompatibel."
163
 
164
- #: php/backend.php:568
165
  msgid "Fixing upload errors"
166
  msgstr "Videoupload Fehler beheben"
167
 
168
- #: php/backend.php:570
169
  #, php-format
170
  msgid ""
171
  "Read %sthis%s on how to increase the <strong>maximum file upload size</"
@@ -174,7 +174,7 @@ msgstr ""
174
  "Lies %sdas hier%s, um zu erfahren, wie man das <strong>Dateigrößenlimit</"
175
  "strong> erhöht."
176
 
177
- #: php/backend.php:571
178
  #, php-format
179
  msgid ""
180
  "WordPress by default does not support <code>webM</code>. The plugin "
@@ -185,11 +185,11 @@ msgstr ""
185
  "aktiviert die unterstützung, aber manchmal reicht das noch nicht. %sHier%s "
186
  "gibt es mehr Informationen."
187
 
188
- #: php/backend.php:573
189
  msgid "Flash Fallback"
190
  msgstr "Flash Fallback"
191
 
192
- #: php/backend.php:574
193
  #, php-format
194
  msgid ""
195
  "The video player, %sVIDEOJS%s, features an Adobe Flash fallback. All you "
@@ -198,7 +198,7 @@ msgstr ""
198
  "Der Video Player, %sVIDEOJS%s, bietet einen Adobe Flash Fallback. Du musst "
199
  "einfach nur ein <code>mp4</code>-Video einbinden."
200
 
201
- #: php/backend.php:578
202
  msgid ""
203
  "These are some of the tested URL formats. Everything in bold is required, "
204
  "everything in brackets is optional."
@@ -206,11 +206,11 @@ msgstr ""
206
  "Das hier sind einige getestete URL Formate. Alles fettgedruckte ist "
207
  "notwendig, alles in Klammern optional."
208
 
209
- #: php/backend.php:611 php/backend.php:635
210
  msgid "Local Media"
211
  msgstr "Lokale Medien"
212
 
213
- #: php/backend.php:618 php/backend.php:637
214
  msgid "Valid URLs"
215
  msgstr "Video URLs"
216
 
@@ -234,17 +234,21 @@ msgstr "Videogröße"
234
  msgid "Video Align"
235
  msgstr "Video-Ausrichtung"
236
 
 
 
 
 
237
  #: php/settings.php:28
238
- msgid "YouTube Player Options"
239
- msgstr "YouTube Player Optionen"
240
 
241
  #: php/settings.php:29
242
- msgid "Vimeo Player Options"
243
- msgstr "Vimeo Player Optionen"
244
 
245
  #: php/settings.php:30
246
- msgid "Dailymotion Player Options"
247
- msgstr "Dailymotion Player Optionen"
248
 
249
  #: php/settings.php:31
250
  msgid "Support"
@@ -275,7 +279,7 @@ msgid "yes"
275
  msgstr "ja"
276
 
277
  #: php/settings.php:62 php/settings.php:88 php/settings.php:111
278
- #: php/settings.php:121 php/settings.php:142 php/settings.php:160
279
  msgid "default"
280
  msgstr "default"
281
 
@@ -338,75 +342,93 @@ msgstr "zentriert"
338
  msgid "right"
339
  msgstr "rechts"
340
 
 
 
 
 
 
 
 
 
 
 
 
 
341
  #: php/settings.php:165
342
- msgid "VIDEOJS Player Options"
343
- msgstr "VIDEOJS Player Optionen"
 
 
 
 
 
 
344
 
345
- #: php/settings.php:183
346
  msgid "Light Theme"
347
  msgstr "Helles Design"
348
 
349
- #: php/settings.php:184
350
- msgid "Info"
351
- msgstr "Info"
352
-
353
  #: php/settings.php:185
354
  msgid "Fullscreen Button"
355
  msgstr "Vollbildschalter"
356
 
357
- #: php/settings.php:186
 
 
 
 
358
  msgid "Related Videos"
359
  msgstr "Verwandte Videos"
360
 
361
- #: php/settings.php:187
362
  msgid "White Progressbar"
363
  msgstr "Weißer Fortschrittsbalken"
364
 
365
- #: php/settings.php:189 php/settings.php:241
366
  msgid "Logo"
367
  msgstr "Logo"
368
 
369
- #: php/settings.php:210
370
  msgid "Portrait"
371
  msgstr "Portrait"
372
 
373
- #: php/settings.php:211
374
  msgid "Title"
375
  msgstr "Titel"
376
 
377
- #: php/settings.php:212
378
  msgid "Byline"
379
  msgstr "Author"
380
 
381
- #: php/settings.php:215
382
  msgid "Color"
383
  msgstr "Farbe"
384
 
385
- #: php/settings.php:219
386
  msgid "Vimeo Plus Videos might ignore these settings."
387
  msgstr "Vimeo Plus Videos können diese Einstellungen ignorieren."
388
 
389
- #: php/settings.php:242
390
  msgid "Videoinfo"
391
  msgstr "Videoinfo"
392
 
393
- #: php/settings.php:243
394
  msgid "Syndication Key"
395
  msgstr "Syndication Schlüssel"
396
 
397
- #: php/settings.php:247
398
  msgid "Foreground"
399
  msgstr "Vordergrund"
400
 
401
- #: php/settings.php:252
402
  msgid "Highlight"
403
  msgstr "Hervorhebung"
404
 
405
- #: php/settings.php:257
406
  msgid "Background"
407
  msgstr "Hintergrund"
408
 
409
- #: php/settings.php:274
410
  #, php-format
411
  msgid ""
412
  "If you have found a bug or are missing a specific video service, please "
@@ -417,7 +439,7 @@ msgstr ""
417
  "vermisst, %ssag bescheid%s; Ansonsten, wenn dir das Plugin gefällt, bitte "
418
  "%sbewerte es!%s"
419
 
420
- #: php/settings.php:280
421
  msgid ""
422
  "The plugin logs it's version, the WordPress version and WordPress language "
423
  "for internal statistics. Those help for future plugin development."
@@ -425,7 +447,7 @@ msgstr ""
425
  "Das Plugin speichert seine Version, die WordPress Version und WordPress "
426
  "Spracheinstellung für eigene Statistiken."
427
 
428
- #: php/settings.php:282
429
  msgid ""
430
  "No personal user information is being collected. Still, you can easily Opt-"
431
  "Out and have the data deleted:"
@@ -433,11 +455,11 @@ msgstr ""
433
  "Es werden keine persönlichen Nutzerinformationen gespeichert. Wenn du willst "
434
  "kannst du dich abmelden und deine Daten werden gelöscht:"
435
 
436
- #: php/settings.php:368
437
  msgid "Displays the video in its default size."
438
  msgstr "Stellt das Video in seiner Standardgröße dar."
439
 
440
- #: php/settings.php:372
441
  msgid ""
442
  "Displays the video with an width of 300 pixel. Height will be fitted to the "
443
  "aspect ratio."
@@ -445,11 +467,11 @@ msgstr ""
445
  "Stellt das Video mit einer breite von 300 Pixeln dar. Die Höhe wird "
446
  "automatisch angepasst, so dass das Seitenverhältniss erhalten bleibt."
447
 
448
- #: php/settings.php:376
449
  msgid "Displays the video with an fixed width and height."
450
  msgstr "Stellt das Video mit fester Breite und Höhe dar."
451
 
452
- #: php/settings.php:389
453
  #, php-format
454
  msgid ""
455
  "All parameters are optional. If %s the current post's id will be used. %s is "
@@ -461,7 +483,7 @@ msgstr ""
461
  "full) oder ein Array mit zwei Stellen (Breite und Höhe); Zum Beispiel array"
462
  "(32,32)."
463
 
464
- #: php/settings.php:392
465
  #, php-format
466
  msgid ""
467
  "The functions are implemented corresponding to the original %sfunctions%s: "
@@ -472,53 +494,65 @@ msgstr ""
472
  "sollten genauso genutzt werden können und sich genauso verhalten. Schau dir "
473
  "für mehr Informationen den WordPress Codex an:"
474
 
475
- #: php/settings.php:415 php/settings.php:438
476
  msgid "PHP-Functions"
477
  msgstr "PHP-Funktionen"
478
 
479
- #: php/upgrade.php:132 php/upgrade.php:143 php/upgrade.php:154
 
480
  msgid "Featured Video Plus was <strong>upgraded</strong>."
481
  msgstr "Featured Video Plus wurde <strong>aktualisiert</strong>."
482
 
483
- #: php/upgrade.php:132
484
  #, php-format
485
  msgid ""
486
- "%s features a seamless <strong>WP3.5 Media Manager</strong> integration, "
487
- "time-links (#t=4m2s) for YouTube and Dailymotion, some new options and new "
488
- "PHP functions for developers."
489
  msgstr ""
490
- "%s integriert den <strong>WP3.5 Media Manager</strong> nahtlos, bietet time-"
491
- "links für YouTube und Dailymotion(#t=4m2s), einige neue Einstellungen und "
492
- "neue PHP Funktionen für Entwickler."
493
 
494
- #: php/upgrade.php:132 php/upgrade.php:143 php/upgrade.php:154
 
495
  #, php-format
496
  msgid "If you like the plugin, please %srate it%s."
497
  msgstr "Wenn dir das Plugin gefällt, bitte %sbewerte es%s."
498
 
499
- #: php/upgrade.php:143
 
 
 
 
 
 
 
 
 
 
 
500
  #, php-format
501
  msgid ""
502
- "%s features a seamless WP3.5 Media Manager integration, time-links (#t=4m2s) "
503
- "for YouTube and Dailymotion, more customization settings and "
504
- "internationalization."
505
  msgstr ""
506
- "%s integriert den <strong>WP3.5 Media Manager</strong> nahtlos, bietet time-"
507
- "links für YouTube und Dailymotion(#t=4m2s), mehr Einstellungen und "
508
- "Internationalisierung."
509
 
510
- #: php/upgrade.php:154
511
  #, php-format
512
  msgid ""
513
  "%s features support for <strong>Local Videos</strong>, a seamless WP3.5 "
514
- "Media Manager integration, time-links (#t=4m2s) for YouTube and Dailymotion "
515
- "and many more customization settings."
516
  msgstr ""
517
  "%s integriert unterstützung für <strong>lokale Videos</strong>, den neuen "
518
- "WP3.5 Media Manager, time-links (#t=4m2s) für YouTube und Dailymotion und "
519
- "viele neue Einstellungsmöglichkeiten."
520
 
521
- #: php/upgrade.php:166
522
  #, php-format
523
  msgid ""
524
  "Featured Video Plus is <strong>ready to use</strong>. There is a new box on "
@@ -529,6 +563,9 @@ msgstr ""
529
  "Einträge gibt es eine neue Box um Artikelvideos hinzuzufügen. Außerdem: "
530
  "<strong>Schau in deine %sMedien Einstellungen%s</strong>."
531
 
 
 
 
532
  #~ msgid ""
533
  #~ "%s features more customization settings, internationalization, better "
534
  #~ "error handling and experimental LiveLeak integration."
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: featured-video-plus 1.3 de_DE\n"
4
+ "POT-Creation-Date: 2013-03-22 17:41+0100\n"
5
+ "PO-Revision-Date: 2013-03-22 17:46+0100\n"
6
  "Last-Translator: Alexander Höreth <a.hoereth@gmail.com>\n"
7
  "Language-Team: a.hoereth <a.hoereth@gmail.com>\n"
8
  "Language: de_DE\n"
23
  msgid "Fallback: same video, different format"
24
  msgstr "Fallback: gleiche Video, anderes Format"
25
 
26
+ #: php/backend.php:92 php/backend.php:701 php/backend.php:708
27
+ #: php/backend.php:725 php/backend.php:727
28
  msgid "Featured Video"
29
  msgstr "Beitragsvideo"
30
 
31
+ #: php/backend.php:123
32
  msgid "Outdated WordPress Version"
33
  msgstr "Veraltete WordPress Version"
34
 
35
+ #: php/backend.php:123
36
  #, php-format
37
  msgid ""
38
  "There is WordPress 3.5 out there! The plugin supports older versions way "
41
  "Es gibt schon WordPress 3.5! Das Plugin unterstützt alle Versionen ab 3.1 - "
42
  "aber %s ist wirklich zu alt!"
43
 
44
+ #: php/backend.php:134
45
  msgid "Set Featured Video"
46
  msgstr "Beitragsvideo festlegen"
47
 
48
+ #: php/backend.php:134
49
  msgid "Set featured video"
50
  msgstr "Beitragsvideo festlegen"
51
 
52
+ #: php/backend.php:143
53
  msgid "Set Featured Video Fallback"
54
  msgstr "Beitragsvideo-Ersatz festlegen"
55
 
56
+ #: php/backend.php:143
57
  msgid "Set featured video fallback"
58
  msgstr "Beitragsvideo Fallback festlegen"
59
 
60
+ #: php/backend.php:152 php/backend.php:654
61
  msgid "Supported Video Formats"
62
  msgstr "Unterstützte Videoformate"
63
 
64
+ #: php/backend.php:152
65
  msgid "or"
66
  msgstr "oder"
67
 
68
+ #: php/backend.php:152 php/backend.php:653
69
  msgid "More information"
70
  msgstr "Mehr Informationen"
71
 
72
+ #: php/backend.php:157
73
  msgid "Fallback Video"
74
  msgstr "Fallback Video"
75
 
76
+ #: php/backend.php:157
77
  msgid ""
78
  "The two input fields should contain the same video but in distinct formats."
79
  msgstr ""
80
  "Die zwei Eingabefelder sollen das gleiche Video in unterschiedlichen "
81
  "Formaten enthalten."
82
 
83
+ #: php/backend.php:164
84
  msgid "Hint"
85
  msgstr "Hinweis"
86
 
87
+ #: php/backend.php:164
88
  #, php-format
89
  msgid "Take a look into the %sContextual Help%s."
90
  msgstr "Wirf einen Blick in die %sHilfe%s."
91
 
92
+ #: php/backend.php:170 php/settings.php:404
93
  msgid "Featured Image"
94
  msgstr ""
95
 
96
+ #: php/backend.php:170
97
  msgid ""
98
  "For automatically displaying the Featured Video a Featured Image is required."
99
  msgstr ""
100
  "Um das Artikelvideo automatisch im Theme anzeigen zu können, muss ein "
101
  "Artikelbild festgelegt werden."
102
 
103
+ #: php/backend.php:175
104
  msgid "Set as Featured Image"
105
  msgstr "Als Beitragsbild festlegen"
106
 
107
+ #: php/backend.php:179 php/settings.php:70
108
  msgid "The current theme does not support Featured Images"
109
  msgstr "Das aktuelle Theme nutzt keine Beitragsbilder."
110
 
111
+ #: php/backend.php:179
112
  #, php-format
113
  msgid ""
114
  "To display Featured Videos you need to use the <code>Shortcode</code> or "
120
  "diese Warnung zu verstecken, deaktiviere &quot;<em>Artikelbilder ersetzen</"
121
  "em>&quot; in deinen %sMedien Einstellungen%s."
122
 
123
+ #: php/backend.php:648
124
  #, php-format
125
  msgid ""
126
  "To use local videos, copy the <code>Link To Media File</code> from your "
129
  "Um lokale Videos zu nutzen, kopiere den <code>Link zur Medien-Datei</code> "
130
  "aus deiner %sMediathek%s und füge ihn in das Textfeld ein."
131
 
132
+ #: php/backend.php:649
133
  #, php-format
134
  msgid ""
135
  "To use local videos, copy the <code>File URL</code> from your %sMedia Library"
138
  "Um lokale Videos zu nutzen, kopiere die <code>Datei-URL</code> aus deiner "
139
  "%sMediathek%s und füge sie in das Textfeld ein."
140
 
141
+ #: php/backend.php:653
142
  msgid ""
143
  "The second text field is intended to hold the URL to the same video in a "
144
  "different format. It will be used as fallback if the primary file can not be "
148
  "Videoformat gedacht. Dieses zweite Video wird dann als Fallback benutzt, "
149
  "falls das erste Video nicht kompatibel ist."
150
 
151
+ #: php/backend.php:656
152
  msgid "Converting your videos"
153
  msgstr "Videos konvertieren"
154
 
155
+ #: php/backend.php:657
156
  #, php-format
157
  msgid ""
158
  "Take a look at the %sMiro Video Converter%s. It is open source, lightweight "
161
  "Schau dir den %sMiro Video Converter%s an. Er is Open Source, klein, einfach "
162
  "zu verwenden und mit Windows, Mac und Linux kompatibel."
163
 
164
+ #: php/backend.php:658
165
  msgid "Fixing upload errors"
166
  msgstr "Videoupload Fehler beheben"
167
 
168
+ #: php/backend.php:660
169
  #, php-format
170
  msgid ""
171
  "Read %sthis%s on how to increase the <strong>maximum file upload size</"
174
  "Lies %sdas hier%s, um zu erfahren, wie man das <strong>Dateigrößenlimit</"
175
  "strong> erhöht."
176
 
177
+ #: php/backend.php:661
178
  #, php-format
179
  msgid ""
180
  "WordPress by default does not support <code>webM</code>. The plugin "
185
  "aktiviert die unterstützung, aber manchmal reicht das noch nicht. %sHier%s "
186
  "gibt es mehr Informationen."
187
 
188
+ #: php/backend.php:663
189
  msgid "Flash Fallback"
190
  msgstr "Flash Fallback"
191
 
192
+ #: php/backend.php:664
193
  #, php-format
194
  msgid ""
195
  "The video player, %sVIDEOJS%s, features an Adobe Flash fallback. All you "
198
  "Der Video Player, %sVIDEOJS%s, bietet einen Adobe Flash Fallback. Du musst "
199
  "einfach nur ein <code>mp4</code>-Video einbinden."
200
 
201
+ #: php/backend.php:668
202
  msgid ""
203
  "These are some of the tested URL formats. Everything in bold is required, "
204
  "everything in brackets is optional."
206
  "Das hier sind einige getestete URL Formate. Alles fettgedruckte ist "
207
  "notwendig, alles in Klammern optional."
208
 
209
+ #: php/backend.php:701 php/backend.php:725
210
  msgid "Local Media"
211
  msgstr "Lokale Medien"
212
 
213
+ #: php/backend.php:708 php/backend.php:727
214
  msgid "Valid URLs"
215
  msgstr "Video URLs"
216
 
234
  msgid "Video Align"
235
  msgstr "Video-Ausrichtung"
236
 
237
+ #: php/settings.php:27
238
+ msgid "Local Video Options"
239
+ msgstr "Lokale Videos"
240
+
241
  #: php/settings.php:28
242
+ msgid "YouTube Options"
243
+ msgstr "YouTube Optionen"
244
 
245
  #: php/settings.php:29
246
+ msgid "Vimeo Options"
247
+ msgstr "Vimeo Optionen"
248
 
249
  #: php/settings.php:30
250
+ msgid "Dailymotion Options"
251
+ msgstr "Dailymotion Optionen"
252
 
253
  #: php/settings.php:31
254
  msgid "Support"
279
  msgstr "ja"
280
 
281
  #: php/settings.php:62 php/settings.php:88 php/settings.php:111
282
+ #: php/settings.php:121 php/settings.php:142
283
  msgid "default"
284
  msgstr "default"
285
 
342
  msgid "right"
343
  msgstr "rechts"
344
 
345
+ #: php/settings.php:161
346
+ msgid "Use CDN"
347
+ msgstr "Nutze CDN"
348
+
349
+ #: php/settings.php:162
350
+ msgid "Include JS"
351
+ msgstr "JS einbinden"
352
+
353
+ #: php/settings.php:163
354
+ msgid "Include CSS"
355
+ msgstr "CSS einbinden"
356
+
357
  #: php/settings.php:165
358
+ msgid ""
359
+ "Disabling JS and/or CSS will break the local video player. Disable only when "
360
+ "you want to replace VideoJS with a different script and know what you are "
361
+ "doing."
362
+ msgstr ""
363
+ "JS und/oder CSS einbindung ist für die richtige Darstellung von lokalen "
364
+ "Videos notwendig. Nutze diese funktionen nur wenn du VideoJS durch ein "
365
+ "anderes Skript austauschen willst und weißt was du tust."
366
 
367
+ #: php/settings.php:184
368
  msgid "Light Theme"
369
  msgstr "Helles Design"
370
 
 
 
 
 
371
  #: php/settings.php:185
372
  msgid "Fullscreen Button"
373
  msgstr "Vollbildschalter"
374
 
375
+ #: php/settings.php:193
376
+ msgid "Info"
377
+ msgstr "Info"
378
+
379
+ #: php/settings.php:195
380
  msgid "Related Videos"
381
  msgstr "Verwandte Videos"
382
 
383
+ #: php/settings.php:196
384
  msgid "White Progressbar"
385
  msgstr "Weißer Fortschrittsbalken"
386
 
387
+ #: php/settings.php:198 php/settings.php:250
388
  msgid "Logo"
389
  msgstr "Logo"
390
 
391
+ #: php/settings.php:219
392
  msgid "Portrait"
393
  msgstr "Portrait"
394
 
395
+ #: php/settings.php:220
396
  msgid "Title"
397
  msgstr "Titel"
398
 
399
+ #: php/settings.php:221
400
  msgid "Byline"
401
  msgstr "Author"
402
 
403
+ #: php/settings.php:224
404
  msgid "Color"
405
  msgstr "Farbe"
406
 
407
+ #: php/settings.php:228
408
  msgid "Vimeo Plus Videos might ignore these settings."
409
  msgstr "Vimeo Plus Videos können diese Einstellungen ignorieren."
410
 
411
+ #: php/settings.php:251
412
  msgid "Videoinfo"
413
  msgstr "Videoinfo"
414
 
415
+ #: php/settings.php:252
416
  msgid "Syndication Key"
417
  msgstr "Syndication Schlüssel"
418
 
419
+ #: php/settings.php:256
420
  msgid "Foreground"
421
  msgstr "Vordergrund"
422
 
423
+ #: php/settings.php:261
424
  msgid "Highlight"
425
  msgstr "Hervorhebung"
426
 
427
+ #: php/settings.php:266
428
  msgid "Background"
429
  msgstr "Hintergrund"
430
 
431
+ #: php/settings.php:283
432
  #, php-format
433
  msgid ""
434
  "If you have found a bug or are missing a specific video service, please "
439
  "vermisst, %ssag bescheid%s; Ansonsten, wenn dir das Plugin gefällt, bitte "
440
  "%sbewerte es!%s"
441
 
442
+ #: php/settings.php:289
443
  msgid ""
444
  "The plugin logs it's version, the WordPress version and WordPress language "
445
  "for internal statistics. Those help for future plugin development."
447
  "Das Plugin speichert seine Version, die WordPress Version und WordPress "
448
  "Spracheinstellung für eigene Statistiken."
449
 
450
+ #: php/settings.php:291
451
  msgid ""
452
  "No personal user information is being collected. Still, you can easily Opt-"
453
  "Out and have the data deleted:"
455
  "Es werden keine persönlichen Nutzerinformationen gespeichert. Wenn du willst "
456
  "kannst du dich abmelden und deine Daten werden gelöscht:"
457
 
458
+ #: php/settings.php:380
459
  msgid "Displays the video in its default size."
460
  msgstr "Stellt das Video in seiner Standardgröße dar."
461
 
462
+ #: php/settings.php:384
463
  msgid ""
464
  "Displays the video with an width of 300 pixel. Height will be fitted to the "
465
  "aspect ratio."
467
  "Stellt das Video mit einer breite von 300 Pixeln dar. Die Höhe wird "
468
  "automatisch angepasst, so dass das Seitenverhältniss erhalten bleibt."
469
 
470
+ #: php/settings.php:388
471
  msgid "Displays the video with an fixed width and height."
472
  msgstr "Stellt das Video mit fester Breite und Höhe dar."
473
 
474
+ #: php/settings.php:401
475
  #, php-format
476
  msgid ""
477
  "All parameters are optional. If %s the current post's id will be used. %s is "
483
  "full) oder ein Array mit zwei Stellen (Breite und Höhe); Zum Beispiel array"
484
  "(32,32)."
485
 
486
+ #: php/settings.php:404
487
  #, php-format
488
  msgid ""
489
  "The functions are implemented corresponding to the original %sfunctions%s: "
494
  "sollten genauso genutzt werden können und sich genauso verhalten. Schau dir "
495
  "für mehr Informationen den WordPress Codex an:"
496
 
497
+ #: php/settings.php:427 php/settings.php:450
498
  msgid "PHP-Functions"
499
  msgstr "PHP-Funktionen"
500
 
501
+ #: php/upgrade.php:153 php/upgrade.php:164 php/upgrade.php:175
502
+ #: php/upgrade.php:186
503
  msgid "Featured Video Plus was <strong>upgraded</strong>."
504
  msgstr "Featured Video Plus wurde <strong>aktualisiert</strong>."
505
 
506
+ #: php/upgrade.php:153
507
  #, php-format
508
  msgid ""
509
+ "%s <strong>ajax</strong>ifies the Featured Video box and introduces new "
510
+ "options (especially for the local video player)."
 
511
  msgstr ""
512
+ "In %s wurde die Featured Video box überarbeitet und unterstützt nun AJAX. "
513
+ "Außerdem gibt es neue Optionen in den Medieneinstellungen, besonders für den "
514
+ "lokalen Videoplayer."
515
 
516
+ #: php/upgrade.php:153 php/upgrade.php:164 php/upgrade.php:175
517
+ #: php/upgrade.php:186
518
  #, php-format
519
  msgid "If you like the plugin, please %srate it%s."
520
  msgstr "Wenn dir das Plugin gefällt, bitte %sbewerte es%s."
521
 
522
+ #: php/upgrade.php:164
523
+ #, php-format
524
+ msgid ""
525
+ "%s features a seamless <strong>WP3.5 Media Manager</strong> integration, an "
526
+ "all new <strong>ajax</strong>ified metabox, time-links (#t=4m2s) for YouTube "
527
+ "and Dailymotion, new PHP functions for developers and more."
528
+ msgstr ""
529
+ "%s integriert den <strong>WP3.5 Media Manager</strong> nahtlos, unterstützt "
530
+ "nun AJAX, bietet time-links für YouTube und Dailymotion(#t=4m2s), einige "
531
+ "neue Einstellungen und neue PHP Funktionen für Entwickler."
532
+
533
+ #: php/upgrade.php:175
534
  #, php-format
535
  msgid ""
536
+ "%s features a seamless WP3.5 Media Manager integration, an ajaxified "
537
+ "metabox, time-links (#t=4m2s) for YouTube and Dailymotion, more "
538
+ "customization settings and internationalization."
539
  msgstr ""
540
+ "%s integriert den <strong>WP3.5 Media Manager</strong> nahtlos, bringt AJAX, "
541
+ "bietet time-links für YouTube und Dailymotion(#t=4m2s), mehr Einstellungen "
542
+ "und Internationalisierung."
543
 
544
+ #: php/upgrade.php:186
545
  #, php-format
546
  msgid ""
547
  "%s features support for <strong>Local Videos</strong>, a seamless WP3.5 "
548
+ "Media Manager integration, an ajaxified metabox, time-links (#t=4m2s) for "
549
+ "YouTube and Dailymotion and many more customization settings."
550
  msgstr ""
551
  "%s integriert unterstützung für <strong>lokale Videos</strong>, den neuen "
552
+ "WP3.5 Media Manager, eine überarbeitete AJAX-Metabox, time-links (#t=4m2s) "
553
+ "für YouTube und Dailymotion und viele neue Einstellungsmöglichkeiten."
554
 
555
+ #: php/upgrade.php:198
556
  #, php-format
557
  msgid ""
558
  "Featured Video Plus is <strong>ready to use</strong>. There is a new box on "
563
  "Einträge gibt es eine neue Box um Artikelvideos hinzuzufügen. Außerdem: "
564
  "<strong>Schau in deine %sMedien Einstellungen%s</strong>."
565
 
566
+ #~ msgid "VIDEOJS Player Options"
567
+ #~ msgstr "VIDEOJS Player Optionen"
568
+
569
  #~ msgid ""
570
  #~ "%s features more customization settings, internationalization, better "
571
  #~ "error handling and experimental LiveLeak integration."
lng/featured-video-plus.pot CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: featured-video-plus 1.3\n"
4
- "POT-Creation-Date: 2013-03-15 17:05+0100\n"
5
- "PO-Revision-Date: 2013-03-15 17:05+0100\n"
6
  "Last-Translator: Alexander Höreth <a.hoereth@gmail.com>\n"
7
  "Language-Team: a.hoereth <a.hoereth@gmail.com>\n"
8
  "Language: en\n"
@@ -23,86 +23,86 @@ msgstr ""
23
  msgid "Fallback: same video, different format"
24
  msgstr ""
25
 
26
- #: php/backend.php:89 php/backend.php:611 php/backend.php:618
27
- #: php/backend.php:635 php/backend.php:637
28
  msgid "Featured Video"
29
  msgstr ""
30
 
31
- #: php/backend.php:120
32
  msgid "Outdated WordPress Version"
33
  msgstr ""
34
 
35
- #: php/backend.php:120
36
  #, php-format
37
  msgid ""
38
  "There is WordPress 3.5 out there! The plugin supports older versions way "
39
  "back to 3.1 - but %s is defenitly to old!"
40
  msgstr ""
41
 
42
- #: php/backend.php:129
43
  msgid "Set Featured Video"
44
  msgstr ""
45
 
46
- #: php/backend.php:129
47
  msgid "Set featured video"
48
  msgstr ""
49
 
50
- #: php/backend.php:136
51
  msgid "Set Featured Video Fallback"
52
  msgstr ""
53
 
54
- #: php/backend.php:136
55
  msgid "Set featured video fallback"
56
  msgstr ""
57
 
58
- #: php/backend.php:143 php/backend.php:564
59
  msgid "Supported Video Formats"
60
  msgstr ""
61
 
62
- #: php/backend.php:143
63
  msgid "or"
64
  msgstr ""
65
 
66
- #: php/backend.php:143 php/backend.php:563
67
  msgid "More information"
68
  msgstr ""
69
 
70
- #: php/backend.php:148
71
  msgid "Fallback Video"
72
  msgstr ""
73
 
74
- #: php/backend.php:148
75
  msgid ""
76
  "The two input fields should contain the same video but in distinct formats."
77
  msgstr ""
78
 
79
- #: php/backend.php:155
80
  msgid "Hint"
81
  msgstr ""
82
 
83
- #: php/backend.php:155
84
  #, php-format
85
  msgid "Take a look into the %sContextual Help%s."
86
  msgstr ""
87
 
88
- #: php/backend.php:162 php/settings.php:392
89
  msgid "Featured Image"
90
  msgstr ""
91
 
92
- #: php/backend.php:162
93
  msgid ""
94
  "For automatically displaying the Featured Video a Featured Image is required."
95
  msgstr ""
96
 
97
- #: php/backend.php:167
98
  msgid "Set as Featured Image"
99
  msgstr ""
100
 
101
- #: php/backend.php:171 php/settings.php:70
102
  msgid "The current theme does not support Featured Images"
103
  msgstr ""
104
 
105
- #: php/backend.php:171
106
  #, php-format
107
  msgid ""
108
  "To display Featured Videos you need to use the <code>Shortcode</code> or "
@@ -110,50 +110,50 @@ msgid ""
110
  "Featured Images</em>&quot; in the %sMedia Settings%s."
111
  msgstr ""
112
 
113
- #: php/backend.php:558
114
  #, php-format
115
  msgid ""
116
  "To use local videos, copy the <code>Link To Media File</code> from your "
117
  "%sMedia Library%s and paste it into the text field."
118
  msgstr ""
119
 
120
- #: php/backend.php:559
121
  #, php-format
122
  msgid ""
123
  "To use local videos, copy the <code>File URL</code> from your %sMedia Library"
124
  "%s and paste it into the text field."
125
  msgstr ""
126
 
127
- #: php/backend.php:563
128
  msgid ""
129
  "The second text field is intended to hold the URL to the same video in a "
130
  "different format. It will be used as fallback if the primary file can not be "
131
  "played."
132
  msgstr ""
133
 
134
- #: php/backend.php:566
135
  msgid "Converting your videos"
136
  msgstr ""
137
 
138
- #: php/backend.php:567
139
  #, php-format
140
  msgid ""
141
  "Take a look at the %sMiro Video Converter%s. It is open source, lightweight "
142
  "and compatible with Windows, Mac and Linux."
143
  msgstr ""
144
 
145
- #: php/backend.php:568
146
  msgid "Fixing upload errors"
147
  msgstr ""
148
 
149
- #: php/backend.php:570
150
  #, php-format
151
  msgid ""
152
  "Read %sthis%s on how to increase the <strong>maximum file upload size</"
153
  "strong>."
154
  msgstr ""
155
 
156
- #: php/backend.php:571
157
  #, php-format
158
  msgid ""
159
  "WordPress by default does not support <code>webM</code>. The plugin "
@@ -161,28 +161,28 @@ msgid ""
161
  "you can get more information on this."
162
  msgstr ""
163
 
164
- #: php/backend.php:573
165
  msgid "Flash Fallback"
166
  msgstr ""
167
 
168
- #: php/backend.php:574
169
  #, php-format
170
  msgid ""
171
  "The video player, %sVIDEOJS%s, features an Adobe Flash fallback. All you "
172
  "need to do is provide an <code>mp4</code>-video."
173
  msgstr ""
174
 
175
- #: php/backend.php:578
176
  msgid ""
177
  "These are some of the tested URL formats. Everything in bold is required, "
178
  "everything in brackets is optional."
179
  msgstr ""
180
 
181
- #: php/backend.php:611 php/backend.php:635
182
  msgid "Local Media"
183
  msgstr ""
184
 
185
- #: php/backend.php:618 php/backend.php:637
186
  msgid "Valid URLs"
187
  msgstr ""
188
 
@@ -206,16 +206,20 @@ msgstr ""
206
  msgid "Video Align"
207
  msgstr ""
208
 
 
 
 
 
209
  #: php/settings.php:28
210
- msgid "YouTube Player Options"
211
  msgstr ""
212
 
213
  #: php/settings.php:29
214
- msgid "Vimeo Player Options"
215
  msgstr ""
216
 
217
  #: php/settings.php:30
218
- msgid "Dailymotion Player Options"
219
  msgstr ""
220
 
221
  #: php/settings.php:31
@@ -242,7 +246,7 @@ msgid "yes"
242
  msgstr ""
243
 
244
  #: php/settings.php:62 php/settings.php:88 php/settings.php:111
245
- #: php/settings.php:121 php/settings.php:142 php/settings.php:160
246
  msgid "default"
247
  msgstr ""
248
 
@@ -295,75 +299,90 @@ msgstr ""
295
  msgid "right"
296
  msgstr ""
297
 
298
- #: php/settings.php:165
299
- msgid "VIDEOJS Player Options"
300
  msgstr ""
301
 
302
- #: php/settings.php:183
303
- msgid "Light Theme"
 
 
 
 
 
 
 
 
 
 
 
304
  msgstr ""
305
 
306
  #: php/settings.php:184
307
- msgid "Info"
308
  msgstr ""
309
 
310
  #: php/settings.php:185
311
  msgid "Fullscreen Button"
312
  msgstr ""
313
 
314
- #: php/settings.php:186
 
 
 
 
315
  msgid "Related Videos"
316
  msgstr ""
317
 
318
- #: php/settings.php:187
319
  msgid "White Progressbar"
320
  msgstr ""
321
 
322
- #: php/settings.php:189 php/settings.php:241
323
  msgid "Logo"
324
  msgstr ""
325
 
326
- #: php/settings.php:210
327
  msgid "Portrait"
328
  msgstr ""
329
 
330
- #: php/settings.php:211
331
  msgid "Title"
332
  msgstr ""
333
 
334
- #: php/settings.php:212
335
  msgid "Byline"
336
  msgstr ""
337
 
338
- #: php/settings.php:215
339
  msgid "Color"
340
  msgstr ""
341
 
342
- #: php/settings.php:219
343
  msgid "Vimeo Plus Videos might ignore these settings."
344
  msgstr ""
345
 
346
- #: php/settings.php:242
347
  msgid "Videoinfo"
348
  msgstr ""
349
 
350
- #: php/settings.php:243
351
  msgid "Syndication Key"
352
  msgstr ""
353
 
354
- #: php/settings.php:247
355
  msgid "Foreground"
356
  msgstr ""
357
 
358
- #: php/settings.php:252
359
  msgid "Highlight"
360
  msgstr ""
361
 
362
- #: php/settings.php:257
363
  msgid "Background"
364
  msgstr ""
365
 
366
- #: php/settings.php:274
367
  #, php-format
368
  msgid ""
369
  "If you have found a bug or are missing a specific video service, please "
@@ -371,33 +390,33 @@ msgid ""
371
  "Please %srate it!%s"
372
  msgstr ""
373
 
374
- #: php/settings.php:280
375
  msgid ""
376
  "The plugin logs it's version, the WordPress version and WordPress language "
377
  "for internal statistics. Those help for future plugin development."
378
  msgstr ""
379
 
380
- #: php/settings.php:282
381
  msgid ""
382
  "No personal user information is being collected. Still, you can easily Opt-"
383
  "Out and have the data deleted:"
384
  msgstr ""
385
 
386
- #: php/settings.php:368
387
  msgid "Displays the video in its default size."
388
  msgstr ""
389
 
390
- #: php/settings.php:372
391
  msgid ""
392
  "Displays the video with an width of 300 pixel. Height will be fitted to the "
393
  "aspect ratio."
394
  msgstr ""
395
 
396
- #: php/settings.php:376
397
  msgid "Displays the video with an fixed width and height."
398
  msgstr ""
399
 
400
- #: php/settings.php:389
401
  #, php-format
402
  msgid ""
403
  "All parameters are optional. If %s the current post's id will be used. %s is "
@@ -405,7 +424,7 @@ msgid ""
405
  "representing width and height in pixels, e.g. array(32,32)."
406
  msgstr ""
407
 
408
- #: php/settings.php:392
409
  #, php-format
410
  msgid ""
411
  "The functions are implemented corresponding to the original %sfunctions%s: "
@@ -413,44 +432,53 @@ msgid ""
413
  "WordPress Codex for further guidance:"
414
  msgstr ""
415
 
416
- #: php/settings.php:415 php/settings.php:438
417
  msgid "PHP-Functions"
418
  msgstr ""
419
 
420
- #: php/upgrade.php:132 php/upgrade.php:143 php/upgrade.php:154
 
421
  msgid "Featured Video Plus was <strong>upgraded</strong>."
422
  msgstr ""
423
 
424
- #: php/upgrade.php:132
425
  #, php-format
426
  msgid ""
427
- "%s features a seamless <strong>WP3.5 Media Manager</strong> integration, "
428
- "time-links (#t=4m2s) for YouTube and Dailymotion, some new options and new "
429
- "PHP functions for developers."
430
  msgstr ""
431
 
432
- #: php/upgrade.php:132 php/upgrade.php:143 php/upgrade.php:154
 
433
  #, php-format
434
  msgid "If you like the plugin, please %srate it%s."
435
  msgstr ""
436
 
437
- #: php/upgrade.php:143
 
 
 
 
 
 
 
 
438
  #, php-format
439
  msgid ""
440
- "%s features a seamless WP3.5 Media Manager integration, time-links (#t=4m2s) "
441
- "for YouTube and Dailymotion, more customization settings and "
442
- "internationalization."
443
  msgstr ""
444
 
445
- #: php/upgrade.php:154
446
  #, php-format
447
  msgid ""
448
  "%s features support for <strong>Local Videos</strong>, a seamless WP3.5 "
449
- "Media Manager integration, time-links (#t=4m2s) for YouTube and Dailymotion "
450
- "and many more customization settings."
451
  msgstr ""
452
 
453
- #: php/upgrade.php:166
454
  #, php-format
455
  msgid ""
456
  "Featured Video Plus is <strong>ready to use</strong>. There is a new box on "
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: featured-video-plus 1.3\n"
4
+ "POT-Creation-Date: 2013-03-22 17:41+0100\n"
5
+ "PO-Revision-Date: 2013-03-22 17:41+0100\n"
6
  "Last-Translator: Alexander Höreth <a.hoereth@gmail.com>\n"
7
  "Language-Team: a.hoereth <a.hoereth@gmail.com>\n"
8
  "Language: en\n"
23
  msgid "Fallback: same video, different format"
24
  msgstr ""
25
 
26
+ #: php/backend.php:92 php/backend.php:701 php/backend.php:708
27
+ #: php/backend.php:725 php/backend.php:727
28
  msgid "Featured Video"
29
  msgstr ""
30
 
31
+ #: php/backend.php:123
32
  msgid "Outdated WordPress Version"
33
  msgstr ""
34
 
35
+ #: php/backend.php:123
36
  #, php-format
37
  msgid ""
38
  "There is WordPress 3.5 out there! The plugin supports older versions way "
39
  "back to 3.1 - but %s is defenitly to old!"
40
  msgstr ""
41
 
42
+ #: php/backend.php:134
43
  msgid "Set Featured Video"
44
  msgstr ""
45
 
46
+ #: php/backend.php:134
47
  msgid "Set featured video"
48
  msgstr ""
49
 
50
+ #: php/backend.php:143
51
  msgid "Set Featured Video Fallback"
52
  msgstr ""
53
 
54
+ #: php/backend.php:143
55
  msgid "Set featured video fallback"
56
  msgstr ""
57
 
58
+ #: php/backend.php:152 php/backend.php:654
59
  msgid "Supported Video Formats"
60
  msgstr ""
61
 
62
+ #: php/backend.php:152
63
  msgid "or"
64
  msgstr ""
65
 
66
+ #: php/backend.php:152 php/backend.php:653
67
  msgid "More information"
68
  msgstr ""
69
 
70
+ #: php/backend.php:157
71
  msgid "Fallback Video"
72
  msgstr ""
73
 
74
+ #: php/backend.php:157
75
  msgid ""
76
  "The two input fields should contain the same video but in distinct formats."
77
  msgstr ""
78
 
79
+ #: php/backend.php:164
80
  msgid "Hint"
81
  msgstr ""
82
 
83
+ #: php/backend.php:164
84
  #, php-format
85
  msgid "Take a look into the %sContextual Help%s."
86
  msgstr ""
87
 
88
+ #: php/backend.php:170 php/settings.php:404
89
  msgid "Featured Image"
90
  msgstr ""
91
 
92
+ #: php/backend.php:170
93
  msgid ""
94
  "For automatically displaying the Featured Video a Featured Image is required."
95
  msgstr ""
96
 
97
+ #: php/backend.php:175
98
  msgid "Set as Featured Image"
99
  msgstr ""
100
 
101
+ #: php/backend.php:179 php/settings.php:70
102
  msgid "The current theme does not support Featured Images"
103
  msgstr ""
104
 
105
+ #: php/backend.php:179
106
  #, php-format
107
  msgid ""
108
  "To display Featured Videos you need to use the <code>Shortcode</code> or "
110
  "Featured Images</em>&quot; in the %sMedia Settings%s."
111
  msgstr ""
112
 
113
+ #: php/backend.php:648
114
  #, php-format
115
  msgid ""
116
  "To use local videos, copy the <code>Link To Media File</code> from your "
117
  "%sMedia Library%s and paste it into the text field."
118
  msgstr ""
119
 
120
+ #: php/backend.php:649
121
  #, php-format
122
  msgid ""
123
  "To use local videos, copy the <code>File URL</code> from your %sMedia Library"
124
  "%s and paste it into the text field."
125
  msgstr ""
126
 
127
+ #: php/backend.php:653
128
  msgid ""
129
  "The second text field is intended to hold the URL to the same video in a "
130
  "different format. It will be used as fallback if the primary file can not be "
131
  "played."
132
  msgstr ""
133
 
134
+ #: php/backend.php:656
135
  msgid "Converting your videos"
136
  msgstr ""
137
 
138
+ #: php/backend.php:657
139
  #, php-format
140
  msgid ""
141
  "Take a look at the %sMiro Video Converter%s. It is open source, lightweight "
142
  "and compatible with Windows, Mac and Linux."
143
  msgstr ""
144
 
145
+ #: php/backend.php:658
146
  msgid "Fixing upload errors"
147
  msgstr ""
148
 
149
+ #: php/backend.php:660
150
  #, php-format
151
  msgid ""
152
  "Read %sthis%s on how to increase the <strong>maximum file upload size</"
153
  "strong>."
154
  msgstr ""
155
 
156
+ #: php/backend.php:661
157
  #, php-format
158
  msgid ""
159
  "WordPress by default does not support <code>webM</code>. The plugin "
161
  "you can get more information on this."
162
  msgstr ""
163
 
164
+ #: php/backend.php:663
165
  msgid "Flash Fallback"
166
  msgstr ""
167
 
168
+ #: php/backend.php:664
169
  #, php-format
170
  msgid ""
171
  "The video player, %sVIDEOJS%s, features an Adobe Flash fallback. All you "
172
  "need to do is provide an <code>mp4</code>-video."
173
  msgstr ""
174
 
175
+ #: php/backend.php:668
176
  msgid ""
177
  "These are some of the tested URL formats. Everything in bold is required, "
178
  "everything in brackets is optional."
179
  msgstr ""
180
 
181
+ #: php/backend.php:701 php/backend.php:725
182
  msgid "Local Media"
183
  msgstr ""
184
 
185
+ #: php/backend.php:708 php/backend.php:727
186
  msgid "Valid URLs"
187
  msgstr ""
188
 
206
  msgid "Video Align"
207
  msgstr ""
208
 
209
+ #: php/settings.php:27
210
+ msgid "Local Video Options"
211
+ msgstr ""
212
+
213
  #: php/settings.php:28
214
+ msgid "YouTube Options"
215
  msgstr ""
216
 
217
  #: php/settings.php:29
218
+ msgid "Vimeo Options"
219
  msgstr ""
220
 
221
  #: php/settings.php:30
222
+ msgid "Dailymotion Options"
223
  msgstr ""
224
 
225
  #: php/settings.php:31
246
  msgstr ""
247
 
248
  #: php/settings.php:62 php/settings.php:88 php/settings.php:111
249
+ #: php/settings.php:121 php/settings.php:142
250
  msgid "default"
251
  msgstr ""
252
 
299
  msgid "right"
300
  msgstr ""
301
 
302
+ #: php/settings.php:161
303
+ msgid "Use CDN"
304
  msgstr ""
305
 
306
+ #: php/settings.php:162
307
+ msgid "Include JS"
308
+ msgstr ""
309
+
310
+ #: php/settings.php:163
311
+ msgid "Include CSS"
312
+ msgstr ""
313
+
314
+ #: php/settings.php:165
315
+ msgid ""
316
+ "Disabling JS and/or CSS will break the local video player. Disable only when "
317
+ "you want to replace VideoJS with a different script and know what you are "
318
+ "doing."
319
  msgstr ""
320
 
321
  #: php/settings.php:184
322
+ msgid "Light Theme"
323
  msgstr ""
324
 
325
  #: php/settings.php:185
326
  msgid "Fullscreen Button"
327
  msgstr ""
328
 
329
+ #: php/settings.php:193
330
+ msgid "Info"
331
+ msgstr ""
332
+
333
+ #: php/settings.php:195
334
  msgid "Related Videos"
335
  msgstr ""
336
 
337
+ #: php/settings.php:196
338
  msgid "White Progressbar"
339
  msgstr ""
340
 
341
+ #: php/settings.php:198 php/settings.php:250
342
  msgid "Logo"
343
  msgstr ""
344
 
345
+ #: php/settings.php:219
346
  msgid "Portrait"
347
  msgstr ""
348
 
349
+ #: php/settings.php:220
350
  msgid "Title"
351
  msgstr ""
352
 
353
+ #: php/settings.php:221
354
  msgid "Byline"
355
  msgstr ""
356
 
357
+ #: php/settings.php:224
358
  msgid "Color"
359
  msgstr ""
360
 
361
+ #: php/settings.php:228
362
  msgid "Vimeo Plus Videos might ignore these settings."
363
  msgstr ""
364
 
365
+ #: php/settings.php:251
366
  msgid "Videoinfo"
367
  msgstr ""
368
 
369
+ #: php/settings.php:252
370
  msgid "Syndication Key"
371
  msgstr ""
372
 
373
+ #: php/settings.php:256
374
  msgid "Foreground"
375
  msgstr ""
376
 
377
+ #: php/settings.php:261
378
  msgid "Highlight"
379
  msgstr ""
380
 
381
+ #: php/settings.php:266
382
  msgid "Background"
383
  msgstr ""
384
 
385
+ #: php/settings.php:283
386
  #, php-format
387
  msgid ""
388
  "If you have found a bug or are missing a specific video service, please "
390
  "Please %srate it!%s"
391
  msgstr ""
392
 
393
+ #: php/settings.php:289
394
  msgid ""
395
  "The plugin logs it's version, the WordPress version and WordPress language "
396
  "for internal statistics. Those help for future plugin development."
397
  msgstr ""
398
 
399
+ #: php/settings.php:291
400
  msgid ""
401
  "No personal user information is being collected. Still, you can easily Opt-"
402
  "Out and have the data deleted:"
403
  msgstr ""
404
 
405
+ #: php/settings.php:380
406
  msgid "Displays the video in its default size."
407
  msgstr ""
408
 
409
+ #: php/settings.php:384
410
  msgid ""
411
  "Displays the video with an width of 300 pixel. Height will be fitted to the "
412
  "aspect ratio."
413
  msgstr ""
414
 
415
+ #: php/settings.php:388
416
  msgid "Displays the video with an fixed width and height."
417
  msgstr ""
418
 
419
+ #: php/settings.php:401
420
  #, php-format
421
  msgid ""
422
  "All parameters are optional. If %s the current post's id will be used. %s is "
424
  "representing width and height in pixels, e.g. array(32,32)."
425
  msgstr ""
426
 
427
+ #: php/settings.php:404
428
  #, php-format
429
  msgid ""
430
  "The functions are implemented corresponding to the original %sfunctions%s: "
432
  "WordPress Codex for further guidance:"
433
  msgstr ""
434
 
435
+ #: php/settings.php:427 php/settings.php:450
436
  msgid "PHP-Functions"
437
  msgstr ""
438
 
439
+ #: php/upgrade.php:153 php/upgrade.php:164 php/upgrade.php:175
440
+ #: php/upgrade.php:186
441
  msgid "Featured Video Plus was <strong>upgraded</strong>."
442
  msgstr ""
443
 
444
+ #: php/upgrade.php:153
445
  #, php-format
446
  msgid ""
447
+ "%s <strong>ajax</strong>ifies the Featured Video box and introduces new "
448
+ "options (especially for the local video player)."
 
449
  msgstr ""
450
 
451
+ #: php/upgrade.php:153 php/upgrade.php:164 php/upgrade.php:175
452
+ #: php/upgrade.php:186
453
  #, php-format
454
  msgid "If you like the plugin, please %srate it%s."
455
  msgstr ""
456
 
457
+ #: php/upgrade.php:164
458
+ #, php-format
459
+ msgid ""
460
+ "%s features a seamless <strong>WP3.5 Media Manager</strong> integration, an "
461
+ "all new <strong>ajax</strong>ified metabox, time-links (#t=4m2s) for YouTube "
462
+ "and Dailymotion, new PHP functions for developers and more."
463
+ msgstr ""
464
+
465
+ #: php/upgrade.php:175
466
  #, php-format
467
  msgid ""
468
+ "%s features a seamless WP3.5 Media Manager integration, an ajaxified "
469
+ "metabox, time-links (#t=4m2s) for YouTube and Dailymotion, more "
470
+ "customization settings and internationalization."
471
  msgstr ""
472
 
473
+ #: php/upgrade.php:186
474
  #, php-format
475
  msgid ""
476
  "%s features support for <strong>Local Videos</strong>, a seamless WP3.5 "
477
+ "Media Manager integration, an ajaxified metabox, time-links (#t=4m2s) for "
478
+ "YouTube and Dailymotion and many more customization settings."
479
  msgstr ""
480
 
481
+ #: php/upgrade.php:198
482
  #, php-format
483
  msgid ""
484
  "Featured Video Plus is <strong>ready to use</strong>. There is a new box on "
php/backend.php CHANGED
@@ -68,14 +68,16 @@ class featured_video_plus_backend {
68
  $upload_dir = wp_upload_dir();
69
  wp_localize_script( 'fvp_backend', 'fvp_backend_data', array(
70
  'wp_upload_dir' => $upload_dir['baseurl'],
 
71
  'default_value' => $this->default_value,
72
  'default_value_sec' => $this->default_value_sec,
73
  'wp_35' => $wp_35
74
  ) );
75
  }
76
 
77
- wp_enqueue_style( 'fvp_backend', FVP_URL . 'css/backend-min.css', array(), FVP_VERSION ); // production
78
- //wp_enqueue_style( 'fvp_backend', FVP_URL . 'css/backend.css', array(), FVP_VERSION ); // development
 
79
  }
80
 
81
  /**
@@ -112,7 +114,7 @@ class featured_video_plus_backend {
112
  $has_post_video = has_post_video($post_id);
113
 
114
  $options = get_option( 'fvp-settings' );
115
- $meta = unserialize( get_post_meta($post_id, '_fvp_video', true) );
116
 
117
  echo "\n\n\n<!-- Featured Video Plus Metabox -->\n";
118
 
@@ -120,15 +122,18 @@ class featured_video_plus_backend {
120
  if( get_bloginfo('version') < 3.1 )
121
  printf ('<div class="fvp_warning"><p class="description"><strong>'.__('Outdated WordPress Version', 'featured-video-plus').':</strong>&nbsp'.__('There is WordPress 3.5 out there! The plugin supports older versions way back to 3.1 - but %s is defenitly to old!', 'featured-video-plus').'</p></div>', get_bloginfo('version') );
122
 
123
- // displays the current featured video
 
124
  if( $has_post_video )
125
- echo $this->featured_video_plus->get_the_post_video( $post_id, array(256,144) );
 
126
 
127
  // input box containing the featured video URL
128
  $legal= isset($meta['valid']) && !$meta['valid'] ? ' fvp_invalid' : '';
129
- $full = $meta['prov'] == 'local' ? wp_get_attachment_url($meta['id']) : isset($meta['full']) ? $meta['full'] : $this->default_value;
130
  echo '<div class="fvp_input_wrapper" data-title="'.__('Set Featured Video', 'featured-video-plus').'" data-button="'.__('Set featured video', 'featured-video-plus').'" data-target="#fvp_video">'."\n\t";
131
  echo '<textarea class="fvp_input'.$legal.'" id="fvp_video" name="fvp_video" type="text">' . $full . '</textarea>' . "\n\t";
 
132
  if( !(get_bloginfo('version') < 3.5) )
133
  echo '<a href="#" class="fvp_video_choose"><span class="fvp_media_icon" style="background-image: url(\''.get_bloginfo('wpurl').'/wp-admin/images/media-button.png\');"></span></a>'."\n";
134
  echo "</div>\n";
@@ -137,6 +142,7 @@ class featured_video_plus_backend {
137
  $class = !isset($meta['sec']) || empty($meta['sec']) ? ' defaultTextActive' : '';
138
  echo '<div class="fvp_input_wrapper" id="fvp_sec_wrapper" data-title="'.__('Set Featured Video Fallback', 'featured-video-plus').'" data-button="'.__('Set featured video fallback', 'featured-video-plus').'" data-target="#fvp_sec">'."\n\t";
139
  echo '<textarea class="fvp_input'.$class.'" id="fvp_sec" name="fvp_sec" type="text">' . $sec . '</textarea>' . "\n\t";
 
140
  if( !(get_bloginfo('version') < 3.5) )
141
  echo '<a href="#" class="fvp_video_choose"><span class="fvp_media_icon" style="background-image: url(\''.get_bloginfo('wpurl').'/wp-admin/images/media-button.png\');"></span></a>'."\n";
142
  echo "</div>\n";
@@ -157,8 +163,7 @@ class featured_video_plus_backend {
157
  echo "<div id=\"fvp_help_notice\" class=\"fvp_notice".$class."\">\n\t<p class=\"description\">\n\t\t";
158
  echo '<span style="font-weight: bold;">'.__('Hint', 'featured-video-plus').':</span>&nbsp;'.sprintf(__('Take a look into the %sContextual Help%s.', 'featured-video-plus'), '<a href="#contextual-help'.$wrap.'" id="fvp_help_toggle">', '</a>');
159
  echo "\n\t</p>\n</div>\n";
160
- ?>
161
- <?php
162
  // no featured image warning
163
  $class = $has_featimg || !$has_post_video || (isset($options['overwrite']) && !$options['overwrite']) ? ' fvp_hidden' : '';
164
  echo '<div id="fvp_featimg_warning" class="fvp_notice'.$class.'">'."\n\t".'<p class="description">';
@@ -166,8 +171,8 @@ class featured_video_plus_backend {
166
  echo "</p>\n</div>\n";
167
 
168
  // set as featured image
169
- $class = $meta['prov'] == 'local' || !$has_post_video || ($has_featimg && $featimg_is_fvp) ? ' class="fvp_hidden"' : '';
170
- printf('<p id="fvp_set_featimg_box"'.$class.'>'."\n\t".'<span id="fvp_set_featimg_input">'."\n\t\t".'<input id="fvp_set_featimg" name="fvp_set_featimg" type="checkbox" value="set_featimg" />'."\n\t\t".'<label for="fvp_set_featimg">&nbsp;%s</label>'."\n\t".'</span>'."\n\t".'<a style="display: none;" id="fvp_set_featimg_link" href="#">%s</a>'."\n".'</p>'."\n", __('Set as Featured Image', 'featured-video-plus'), __('Set as Featured Image', 'featured-video-plus') );
171
 
172
  // current theme does not support Featured Images
173
  if( !current_theme_supports('post-thumbnails') && $options['overwrite'] )
@@ -183,120 +188,206 @@ class featured_video_plus_backend {
183
  *
184
  * @param int $post_id
185
  */
186
- public function metabox_save($post_id, $set_featimg = false){
187
 
188
  if (( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || // Autosave, do nothing
189
  ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || // AJAX? Not used here
190
  ( !current_user_can( 'edit_post', $post_id ) ) || // Check user permissions
191
- ( false !== wp_is_post_revision( $post_id ) ) || // Return if it's a post revision
192
- ( ( isset($_POST['fvp_nonce']) && // WP Form submitted..
193
- !wp_verify_nonce( $_POST['fvp_nonce'], FVP_NAME ) ) && // ..and wrong nonce?
194
- !is_string($set_featimg) )
195
  ) return;
196
 
197
- // get fvp_video post meta data
198
- $meta = unserialize( get_post_meta($post_id, '_fvp_video', true) );
 
 
 
 
 
 
199
 
200
- $set_featimg = isset($_POST['fvp_set_featimg']) && !empty($_POST['fvp_set_featimg']) ? true : false;
 
201
 
202
- if( (!isset($_POST['fvp_video'])) || ($_POST['fvp_video'] == $this->default_value) )
203
- $video = '';
204
- else
205
- $video = trim($_POST['fvp_video']);
 
 
 
 
 
206
 
207
- $sec = isset($_POST['fvp_sec']) && !empty($_POST['fvp_sec']) && $_POST['fvp_sec'] != $this->default_value_sec ? trim($_POST['fvp_sec']) : '';
 
 
208
 
209
- // Did the video input field value change?
210
- if( ( (isset($meta) && !empty($meta)) && empty($video) ) )
211
- $this->delete_featured_video_image($post_id, $meta);
212
 
 
 
 
 
 
213
 
214
- // there is no video to save, end process
215
- if( empty($video) )
216
- return;
 
 
 
 
 
217
 
218
- // the video provided is the same as the video we already saved, we do
219
- // not want to set the featured image and the secondary video did not
220
- // change either
221
- if( ($video == $meta['full']) &&
222
- (!$set_featimg) &&
223
- (empty($sec) || ( isset($meta['sec']) && $meta['sec'] == $sec ) ) )
224
- return;
225
 
226
- $options = get_option( 'fvp-settings' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
 
228
- // get the video's provider
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  $local = wp_upload_dir();
230
- preg_match('/(vimeo|youtu|dailymotion|liveleak|'.preg_quote($local['baseurl'], '/').')/i', $video, $video_provider);
231
- if( isset($video_provider[1]) )
232
- $video_prov = $video_provider[1];
233
- else $video_prov = '';
234
 
235
- switch ($video_prov) {
236
 
237
  // local video
238
  case $local['baseurl']:
239
- $ext = pathinfo( $video, PATHINFO_EXTENSION );
240
  if( !isset($ext) || ($ext != 'mp4' && $ext != 'ogv' && $ext != 'webm' && $ext != 'ogg') ) return; // wrong extension
241
 
242
- $video_id = $this->get_post_by_url($video);
243
- $video_prov = 'local';
244
 
245
  if( !empty($sec) ) {
246
- preg_match('/(' . preg_quote($local['baseurl'], '/') . ')/i', $sec, $sec_prov);
247
  $ext2 = pathinfo( $sec, PATHINFO_EXTENSION );
248
- if ( isset($sec_prov[1]) && isset($ext2) && $sec_prov[1] == $video_provider[1] && $ext != $ext2 &&
249
- ($ext2 == 'mp4' || $ext2 == 'ogv' || $ext2 == 'webm' || $ext2 == 'ogg'))
250
- $video_sec_id = $this->get_post_by_url($sec);
251
- else $sec = ''; // illegal second video, remove it
 
252
  }
253
 
254
  break;
255
 
256
  // youtube.com
257
  case 'youtu':
258
- $video_prov = 'youtube';
259
  case 'youtube':
260
  // domain 11 char ID time-link parameter
261
  $pattern = '#(?:https?\:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/watch\?.+&v=))([\w-]{11})#x';
262
- preg_match($pattern, $video, $video_data);
263
- if( !isset($video_data[1]) )
264
  break;
265
 
266
- $video_id = $video_data[1];
267
 
268
  // access API
269
  $response = wp_remote_get( 'http://youtube.com/get_video_info?video_id=' . $video_id );
270
  if( is_wp_error( $response ) )
271
  break;
272
- parse_str( $response['body'], $data );
273
- if( isset($data['status']) && $data['status'] == 'fail' )
274
  break;
275
 
276
  // extract info of a time-link
277
- preg_match('/t=(?:(\d+)m)?(?:(\d+)s)?/', $video, $attr);
278
  if( !empty($attr[1] ) || !empty($attr[2]) ) {
279
  $min = !empty($attr[1]) ? $attr[1]*60 : 0;
280
  $sek = !empty($attr[2]) ? $attr[2] : 0;
281
- $video_attr = $min + $sek;
282
  } else {
283
- preg_match('/start=(\d+)/', $video, $attr);
284
  if( !empty($attr[1] ) )
285
- $video_attr = $attr[1];
286
  else
287
- $video_attr = 0;
288
  }
289
 
290
  // generate video metadata
291
- $video_info = array(
292
- 'title' => $data['title'],
293
- 'description' => $data['keywords'],
294
- 'filename' => sanitize_file_name($data['title']),
295
- 'timestamp' => $data['timestamp'],
296
- 'author' => $data['author'],
297
- 'tags' => $data['keywords'],
298
- 'img' => ( isset($data['iurlmaxres']) && !empty($data['iurlmaxres']) ) ? $data['iurlmaxres'] : 'http://img.youtube.com/vi/' . $video_id . '/0.jpg',
299
- 'url' => ( $video_attr > 0 ) ? 'http://youtu.be/'.$video_id.'#t='.floor($video_attr/60).'m'.($video_attr%60).'s' : 'http://youtu.be/'.$video_id
 
 
 
300
  );
301
 
302
  break;
@@ -305,15 +396,15 @@ class featured_video_plus_backend {
305
  case 'vimeo':
306
  // domain video ID
307
  $pattern = '#(?:https?://)?(?:\w+.)?vimeo.com/(?:video/|moogaloop\.swf\?clip_id=)?(\w+)#x';
308
- preg_match($pattern, $video, $video_data);
309
- $video_id = $video_data[1];
310
 
311
  // access API: http://developer.vimeo.com/apis/simple
312
  $response = wp_remote_get( 'http://vimeo.com/api/v2/video/' . $video_id . '.php' );
313
  if( is_wp_error( $response ) || (isset($response['response']['code']) && $response['response']['code'] == '404') )
314
  break;
315
  // title, description, upload_date, thumbnail_large, user_name, tags
316
- $data = unserialize( $response['body'] );
317
 
318
  // extract info of a time-link
319
  /*preg_match('/#t=((?:\d+m)?(?:\d+s)?)/', $video, $attr);
@@ -321,15 +412,17 @@ class featured_video_plus_backend {
321
  $video_attr = $attr[1];*/
322
 
323
  // generate video metadata
324
- $video_info = array(
325
- 'title' => $data[0]['title'],
326
- 'description' => $data[0]['description'],
327
- 'filename' => sanitize_file_name( $data[0]['title'] ),
328
- 'timestamp' => strtotime( $data[0]['upload_date'] ),
329
- 'author' => $data[0]['user_name'],
330
- 'tags' => $data[0]['tags'],
331
- 'img' => $data[0]['thumbnail_large'],
332
- 'url' => $data[0]['url']
 
 
333
  );
334
 
335
  break;
@@ -337,46 +430,49 @@ class featured_video_plus_backend {
337
  // dailymotion.com
338
  case 'dailymotion':
339
  // domain video ID
340
- preg_match('/dailymotion.com\/(?:embed\/)?video\/([^_#\?]+)/', $video, $video_data);
341
- if( !isset($video_data[1]) )
342
  break;
343
 
344
- $video_id = $video_data[1];
345
 
346
  // access API: http://www.dailymotion.com/doc/api/obj-video.html
347
  $url = 'https://api.dailymotion.com/video/'.$video_id.'?fields=title,description,created_time,owner.screenname,tags,thumbnail_url,thumbnail_large_url,url,aspect_ratio';
348
  $request = new WP_Http;
349
- $result = $request->request( $url, array( 'method' => 'GET', 'sslverify' => false) );
350
- if( is_wp_error($result) )
351
  break;
352
- $data = json_decode($result['body'], true);
353
- if( !isset($data) || (isset($data['error']['code']) && ($data['error']['code'] == 501 || $data['error']['code'] == 400) ) )
354
  break;
355
 
356
  // extract info of a time-link
357
- preg_match('/t=(?:(\d+)m)?(?:(\d+)s)?/', $video, $attr);
358
  if( !empty($attr[1] ) || !empty($attr[2]) ) {
359
  $min = !empty($attr[1]) ? $attr[1]*60 : 0;
360
  $sek = !empty($attr[2]) ? $attr[2] : 0;
361
- $video_attr = $min + $sek;
362
  } else {
363
- preg_match('/start=(\d+)/', $video, $attr);
364
  if( !empty($attr[1] ) )
365
- $video_attr = $attr[1];
366
  else
367
- $video_attr = 0;
368
  }
369
 
370
  // generate video metadata
371
- $video_info = array(
372
- 'title' => $data['title'],
373
- 'description' => $data['description'],
374
- 'filename' => sanitize_file_name($data['title']),
375
- 'timestamp' => $data['created_time'],
376
- 'author' => $data['owner.screenname'],
377
- 'tags' => implode(', ', $data['tags']),
378
- 'img' => ( isset($data['thumbnail_url']) && !empty($data['thumbnail_url']) ) ? $data['thumbnail_url'] : $data['thumbnail_large_url'],
379
- 'url' => 'http://dailymotion.com/video/'.$video_id. ( $video_attr>0 ? '#t='.floor($video_attr/60).'m'.($video_attr%60).'s' : '')
 
 
 
380
  );
381
 
382
  break;
@@ -386,12 +482,12 @@ class featured_video_plus_backend {
386
  // source url and other metadata from the source code.
387
  case 'liveleak': // view-source:http://www.liveleak.com/view?i=45f_1358105976&ajax=1
388
  // domain video ID
389
- preg_match('/(?:http:\/\/)?(?:www\.)?liveleak.com\/view\?i=([\d\w]{3}_\d{10})/', $video, $video_data);
390
- if( !isset($video_data[1]) )
391
  break;
392
 
393
  // no API, get stripped down version of the full website
394
- $response = wp_remote_get( 'http://liveleak.com/view?i='.$video_data[1].'&ajax=1');
395
  if( is_wp_error( $response ) )
396
  break;
397
 
@@ -403,28 +499,30 @@ class featured_video_plus_backend {
403
  $llmeta = explode(',', $llmeta[2]);
404
  foreach( $llmeta as $line ) {
405
  $thisline = explode(': ', $line);
406
- $data[trim($thisline[0])] = trim($thisline[1]);
407
  }
408
 
409
  preg_match('#class="section_title".*>([\s\w]+)</span>#', $response['body'], $title);
410
  preg_match('#id="body_text".*><p>(.*)<\/p><\/#', $response['body'], $desc);
411
- $data['title'] = isset($title[1]) ? $title[1] : '';
412
 
413
- $video_info = array(
414
- 'title' => $data['title'],
 
 
415
  'description' => isset($desc[1]) ? $desc[1] : '',
416
- 'filename' => sanitize_file_name($data['title']),
417
  'timestamp' => time(),
418
- 'author' => '', // <strong>By:</strong> <a href="http://www.liveleak.com/c/k-doe">k-doe</a>
419
- 'tags' => '', // <strong>Tags:</strong> <a href="browse?q=Drive By">Drive By</a>, <a href="browse?q=Fire Extinguisher">Fire Extinguisher</a><br />
420
- 'img' => isset($data['image']) ? trim($data['image'],"\"") : '',
421
  'url' => 'http://liveleak.com/view?i='.$video_data[1]
422
  );
423
  break;
424
  }
425
 
426
  // if the regex fails the video is provided by prochan, not LL
427
- $video_prov = 'prochan';
428
  $type = 'iframe';
429
 
430
  // prochan.com (only implemented as used by liveleak
@@ -433,76 +531,64 @@ class featured_video_plus_backend {
433
  preg_match('#<iframe.*src="(?:http://)?(?:www\.)?prochan.com/embed\?f=([\d\w]{3}_\d{10})".*></iframe>#', $response['body'], $proframe);
434
  if( !isset($proframe[1]) )
435
  break;
436
- $video_id = $proframe[1];
 
 
 
437
  }
438
  break;
439
  }
 
 
440
 
441
- $valid = true;
442
- if( !isset($video_id) )
443
- $valid = false;
444
-
445
- // Do we have a screen capture to pull?
446
- if( isset($video_info['img']) && !empty($video_info['img']) ) {
447
- // First delete the old image
448
- $this->delete_featured_video_image($post_id, $meta);
449
-
450
- // Is this screen capture already existing in our media library?
451
- $video_img = $this->featured_video_plus->get_post_by_custom_meta('_fvp_image', $video_prov . '?' . $video_id);
452
- if( !isset($video_img) ) {
453
-
454
- // Generate attachment post metadata
455
- $video_img_data = array(
456
- 'post_content' => $video_info['description'],
457
- 'post_title' => $video_info['title'],
458
- 'post_name' => $video_info['filename']
459
- );
460
-
461
- // pull external img to local server and add to media library
462
- include_once( FVP_DIR . 'php/somatic_attach_external_image.php' );
463
- $video_img = somatic_attach_external_image($video_info['img'], $post_id, false, $video_info['filename'], $video_img_data);
464
-
465
- // generate picture metadata
466
- $video_img_meta = wp_get_attachment_metadata( $video_img );
467
- $video_img_meta['image_meta'] = array(
468
- 'aperture' => 0,
469
- 'credit' => $video_id,
470
- 'camera' => $video_prov,
471
- 'caption' => $video_info['description'],
472
- 'created_timestamp' => $video_info['timestamp'],
473
- 'copyright' => $video_info['author'],
474
- 'focal_length' => 0,
475
- 'iso' => 0,
476
- 'shutter_speed' => 0,
477
- 'title' => $video_info['title']
478
- );
479
-
480
- // save picture metadata
481
- wp_update_attachment_metadata($video_img, $video_img_meta);
482
- update_post_meta( $video_img, '_fvp_image', $video_prov . '?' . $video_id );
483
- }
484
 
485
- if( (get_bloginfo('version') >= 3.1) && // set_post_thumbnail was added in 3.1
486
- ( (!has_post_thumbnail( $post_id )) ||
487
- ($set_featimg) ) )
488
- set_post_thumbnail( $post_id, $video_img );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
489
 
 
 
 
490
  }
491
 
492
- $meta = array(
493
- 'full' => isset($video_info['url']) && !empty($video_info['url']) ? $video_info['url'] : $video,
494
- 'id' => isset($video_id) ? $video_id : '',
495
- 'sec' => isset($sec) ? $sec : '',
496
- 'sec_id'=> isset($video_sec_id) && !empty($video_sec_id) ? $video_sec_id : '',
497
- 'img' => isset($video_img) ? $video_img : '',
498
- 'prov' => isset($video_prov) ? $video_prov : '',
499
- 'attr' => isset($video_attr) ? $video_attr : '',
500
- 'valid' => $valid
501
- );
502
-
503
- update_post_meta( $post_id, '_fvp_video', serialize($meta) );
504
 
505
- return;
506
  }
507
 
508
  /**
@@ -512,7 +598,7 @@ class featured_video_plus_backend {
512
  * @since 1.4
513
  */
514
  function delete_featured_video_image($post_id, $meta) {
515
- delete_post_meta( $post_id, '_fvp_video' );
516
 
517
  // Unset featured image if it is from this video
518
  delete_post_meta( $post_id, '_thumbnail_id', $meta['img'] );
68
  $upload_dir = wp_upload_dir();
69
  wp_localize_script( 'fvp_backend', 'fvp_backend_data', array(
70
  'wp_upload_dir' => $upload_dir['baseurl'],
71
+ 'loading_gif' => get_admin_url(null,'images/loading.gif'),
72
  'default_value' => $this->default_value,
73
  'default_value_sec' => $this->default_value_sec,
74
  'wp_35' => $wp_35
75
  ) );
76
  }
77
 
78
+ if( ($hook_suffix == 'options-media.php') || ($hook_suffix == 'post.php' && isset($_GET['post'])) )
79
+ wp_enqueue_style( 'fvp_backend', FVP_URL . 'css/backend-min.css', array(), FVP_VERSION ); // production
80
+ //wp_enqueue_style( 'fvp_backend', FVP_URL . 'css/backend.css', array(), FVP_VERSION ); // development
81
  }
82
 
83
  /**
114
  $has_post_video = has_post_video($post_id);
115
 
116
  $options = get_option( 'fvp-settings' );
117
+ $meta = get_post_meta($post_id, '_fvp_video', true);
118
 
119
  echo "\n\n\n<!-- Featured Video Plus Metabox -->\n";
120
 
122
  if( get_bloginfo('version') < 3.1 )
123
  printf ('<div class="fvp_warning"><p class="description"><strong>'.__('Outdated WordPress Version', 'featured-video-plus').':</strong>&nbsp'.__('There is WordPress 3.5 out there! The plugin supports older versions way back to 3.1 - but %s is defenitly to old!', 'featured-video-plus').'</p></div>', get_bloginfo('version') );
124
 
125
+ // current featured video
126
+ echo '<div id="fvp_current_video" style="background: no-repeat center center;">'; //url(\''.get_admin_url(null,'images/loading.gif').'\')
127
  if( $has_post_video )
128
+ echo get_the_post_video( $post_id, array(256,144) );
129
+ echo '</div>'."\n\n";
130
 
131
  // input box containing the featured video URL
132
  $legal= isset($meta['valid']) && !$meta['valid'] ? ' fvp_invalid' : '';
133
+ $full = isset($meta['prov']) && $meta['prov'] == 'local' ? wp_get_attachment_url($meta['id']) : isset($meta['full']) ? $meta['full'] : $this->default_value;
134
  echo '<div class="fvp_input_wrapper" data-title="'.__('Set Featured Video', 'featured-video-plus').'" data-button="'.__('Set featured video', 'featured-video-plus').'" data-target="#fvp_video">'."\n\t";
135
  echo '<textarea class="fvp_input'.$legal.'" id="fvp_video" name="fvp_video" type="text">' . $full . '</textarea>' . "\n\t";
136
+ echo '<input type="hidden" class="fvp_mirror" value="'.$full."\" />\n\t";
137
  if( !(get_bloginfo('version') < 3.5) )
138
  echo '<a href="#" class="fvp_video_choose"><span class="fvp_media_icon" style="background-image: url(\''.get_bloginfo('wpurl').'/wp-admin/images/media-button.png\');"></span></a>'."\n";
139
  echo "</div>\n";
142
  $class = !isset($meta['sec']) || empty($meta['sec']) ? ' defaultTextActive' : '';
143
  echo '<div class="fvp_input_wrapper" id="fvp_sec_wrapper" data-title="'.__('Set Featured Video Fallback', 'featured-video-plus').'" data-button="'.__('Set featured video fallback', 'featured-video-plus').'" data-target="#fvp_sec">'."\n\t";
144
  echo '<textarea class="fvp_input'.$class.'" id="fvp_sec" name="fvp_sec" type="text">' . $sec . '</textarea>' . "\n\t";
145
+ echo '<input type="hidden" class="fvp_mirror" value="'.$sec."\" />\n\t";
146
  if( !(get_bloginfo('version') < 3.5) )
147
  echo '<a href="#" class="fvp_video_choose"><span class="fvp_media_icon" style="background-image: url(\''.get_bloginfo('wpurl').'/wp-admin/images/media-button.png\');"></span></a>'."\n";
148
  echo "</div>\n";
163
  echo "<div id=\"fvp_help_notice\" class=\"fvp_notice".$class."\">\n\t<p class=\"description\">\n\t\t";
164
  echo '<span style="font-weight: bold;">'.__('Hint', 'featured-video-plus').':</span>&nbsp;'.sprintf(__('Take a look into the %sContextual Help%s.', 'featured-video-plus'), '<a href="#contextual-help'.$wrap.'" id="fvp_help_toggle">', '</a>');
165
  echo "\n\t</p>\n</div>\n";
166
+
 
167
  // no featured image warning
168
  $class = $has_featimg || !$has_post_video || (isset($options['overwrite']) && !$options['overwrite']) ? ' fvp_hidden' : '';
169
  echo '<div id="fvp_featimg_warning" class="fvp_notice'.$class.'">'."\n\t".'<p class="description">';
171
  echo "</p>\n</div>\n";
172
 
173
  // set as featured image
174
+ $class = isset($meta['prov']) && $meta['prov'] == 'local' || !$has_post_video || ($has_featimg && $featimg_is_fvp) ? ' class="fvp_hidden"' : '';
175
+ printf('<p id="fvp_set_featimg_box"'.$class.'>'."\n\t".'<span id="fvp_set_featimg_input">'."\n\t\t".'<input id="fvp_set_featimg" name="fvp_set_featimg" type="checkbox" value="set_featimg" />'."\n\t\t".'<label for="fvp_set_featimg">&nbsp;%s</label>'."\n\t".'</span>'."\n\t".'<a class="fvp_hidden" id="fvp_set_featimg_link" href="#">%s</a>'."\n".'</p>'."\n", __('Set as Featured Image', 'featured-video-plus'), __('Set as Featured Image', 'featured-video-plus') );
176
 
177
  // current theme does not support Featured Images
178
  if( !current_theme_supports('post-thumbnails') && $options['overwrite'] )
188
  *
189
  * @param int $post_id
190
  */
191
+ public function metabox_save($post_id){
192
 
193
  if (( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || // Autosave, do nothing
194
  ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || // AJAX? Not used here
195
  ( !current_user_can( 'edit_post', $post_id ) ) || // Check user permissions
196
+ ( false !== wp_is_post_revision( $post_id ) ) // Return if it's a post revision
 
 
 
197
  ) return;
198
 
199
+ $post = array(
200
+ 'id' => $post_id,
201
+ 'fvp_nonce' => isset($_POST['fvp_nonce']) ? $_POST['fvp_nonce'] : '',
202
+ 'fvp_set_featimg' => isset($_POST['fvp_set_featimg']) ? $_POST['fvp_set_featimg'] : '',
203
+ 'fvp_video' => isset($_POST['fvp_video']) ? $_POST['fvp_video'] : '',
204
+ 'fvp_sec' => isset($_POST['fvp_sec']) ? $_POST['fvp_sec'] : ''
205
+ );
206
+ $this->save($post);
207
 
208
+ return;
209
+ }
210
 
211
+ public function ajax() {
212
+ $post = array(
213
+ 'id' => $_POST['id'],
214
+ 'fvp_nonce' => isset($_POST['fvp_nonce']) ? $_POST['fvp_nonce'] : '',
215
+ 'fvp_set_featimg' => isset($_POST['fvp_set_featimg']) ? $_POST['fvp_set_featimg'] : '',
216
+ 'fvp_video' => isset($_POST['fvp_video']) ? $_POST['fvp_video'] : '',
217
+ 'fvp_sec' => isset($_POST['fvp_sec']) ? $_POST['fvp_sec'] : ''
218
+ );
219
+ $meta = $this->save($post);
220
 
221
+ if(isset($meta['id'])) {
222
+ if( has_post_video($post['id']) )
223
+ $video = get_the_post_video( $post['id'], array(256,144) );
224
 
225
+ if( has_post_thumbnail($post['id']) )
226
+ $img = _wp_post_thumbnail_html( get_post_thumbnail_id($post['id']), $post['id'] );
 
227
 
228
+ echo json_encode(array( 'typ' => 'updated', 'valid' => $meta['valid'], 'video' => $video, 'img' => $img ));
229
+ } else
230
+ echo json_encode(array( 'typ' => 'removed' ));
231
+ die();
232
+ }
233
 
234
+ /**
235
+ * Used for processing an (AJAX) save request.
236
+ *
237
+ * @since 1.5
238
+ *
239
+ * @see http://codex.wordpress.org/Function_Reference/update_post_meta
240
+ */
241
+ function save($post) {
242
 
243
+ if( ( isset($post['fvp_nonce']) && // WP Form submitted..
244
+ !wp_verify_nonce( $post['fvp_nonce'], FVP_NAME ) ) )
245
+ return false;
 
 
 
 
246
 
247
+ // get fvp_video post meta data
248
+ $meta = get_post_meta($post['id'], '_fvp_video', true);
249
+
250
+ // video is empty or default value
251
+ if( !isset($post['fvp_video']) || empty($post['fvp_video']) || $post['fvp_video'] == $this->default_value )
252
+ $url = '';
253
+ else $url = trim($post['fvp_video']);
254
+
255
+ // fallback video is empty or default value
256
+ if( !isset($post['fvp_sec']) || empty($post['fvp_sec']) || $post['fvp_sec'] == $this->default_value_sec )
257
+ $sec = '';
258
+ else $sec = trim($post['fvp_sec']);
259
+
260
+ // neither primary nor fallback did change OR primary is and was empty
261
+ // AND we do not want to set
262
+ if( ( ( isset($meta['full']) && $url == $meta['full'] && $sec == $meta['sec'] ) ||
263
+ ( !isset($meta['full']) && empty($url) ) ) &&
264
+ ( isset($post['fvp_set_featimg']) && !empty($post['fvp_set_featimg']) ) )
265
+ return false;
266
+
267
+ // there was a video and we want to delete it
268
+ if( isset($meta['full']) && empty($url) ) {
269
+ delete_post_meta( $post['id'], '_fvp_video' );
270
+ $this->delete_featured_video_image($post['id'], $meta);
271
+ return false;
272
+ }
273
+
274
+ $data = $this->get_video_data($url, $sec);
275
 
276
+ $valid = true;
277
+ if( !isset($data['id']) ) {
278
+ $meta['valid'] = false;
279
+ $meta['full'] = $url;
280
+ $meta['sec' ] = $sec;
281
+ } else {
282
+
283
+ // Do we have a screen capture to pull?
284
+ if( isset($data['img']) && !empty($data['img']) ) {
285
+ $this->delete_featured_video_image( $post['id'], $meta );
286
+ $img = $this->set_featured_video_image( $post['id'], $data );
287
+ }
288
+
289
+ $meta = array(
290
+ 'full' => isset($data['url']) && !empty($data['url']) ? $data['url'] : $url,
291
+ 'id' => isset($data['id']) ? $data['id'] : '',
292
+ 'sec' => isset($data['sec']) ? $data['sec'] : '',
293
+ 'sec_id'=> isset($data['sec_id']) && !empty($data['sec_id']) ? $data['sec_id'] : '',
294
+ 'img' => isset($img) ? $img : '',
295
+ 'prov' => isset($data['provider']) ? $data['provider'] : '',
296
+ 'time' => isset($data['time']) ? $data['time'] : '',
297
+ 'valid' => $valid
298
+ );
299
+
300
+ }
301
+
302
+ update_post_meta( $post['id'], '_fvp_video', $meta );
303
+
304
+ return $meta;
305
+ }
306
+
307
+ /**
308
+ * Returns an array containing video information like id provider imgurl etc
309
+ * Code existing since 1.0, got it own function in 1.5
310
+ *
311
+ * @since 1.5
312
+ *
313
+ * @param string video a video url
314
+ */
315
+ function get_video_data($url, $sec = '') {
316
  $local = wp_upload_dir();
317
+ preg_match('/(vimeo|youtu|dailymotion|liveleak|'.preg_quote($local['baseurl'], '/').')/i', $url, $prov_data);
318
+ if( isset($prov_data[1]) )
319
+ $provider = $prov_data[1];
320
+ else return false;
321
 
322
+ switch ($provider) {
323
 
324
  // local video
325
  case $local['baseurl']:
326
+ $ext = pathinfo( $url, PATHINFO_EXTENSION );
327
  if( !isset($ext) || ($ext != 'mp4' && $ext != 'ogv' && $ext != 'webm' && $ext != 'ogg') ) return; // wrong extension
328
 
329
+ $data['id'] = $this->get_post_by_url($url);
330
+ $data['provider'] = 'local';
331
 
332
  if( !empty($sec) ) {
333
+ preg_match('/(' . preg_quote($local['baseurl'], '/') . ')/i', $sec, $sec_prov_data);
334
  $ext2 = pathinfo( $sec, PATHINFO_EXTENSION );
335
+ if ( isset($sec_prov_data[1]) && isset($ext2) && $sec_prov_data[1] == $provider && $ext != $ext2 &&
336
+ ($ext2 == 'mp4' || $ext2 == 'ogv' || $ext2 == 'webm' || $ext2 == 'ogg')) {
337
+ $data['sec_id'] = $this->get_post_by_url($sec);
338
+ $data['sec'] = $sec;
339
+ }
340
  }
341
 
342
  break;
343
 
344
  // youtube.com
345
  case 'youtu':
346
+ $provider = 'youtube';
347
  case 'youtube':
348
  // domain 11 char ID time-link parameter
349
  $pattern = '#(?:https?\:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/watch\?.+&v=))([\w-]{11})#x';
350
+ preg_match($pattern, $url, $url_data);
351
+ if( !isset($url_data[1]) )
352
  break;
353
 
354
+ $video_id = $url_data[1];
355
 
356
  // access API
357
  $response = wp_remote_get( 'http://youtube.com/get_video_info?video_id=' . $video_id );
358
  if( is_wp_error( $response ) )
359
  break;
360
+ parse_str( $response['body'], $result );
361
+ if( isset($result['status']) && $result['status'] == 'fail' )
362
  break;
363
 
364
  // extract info of a time-link
365
+ preg_match('/t=(?:(\d+)m)?(?:(\d+)s)?/', $url, $attr);
366
  if( !empty($attr[1] ) || !empty($attr[2]) ) {
367
  $min = !empty($attr[1]) ? $attr[1]*60 : 0;
368
  $sek = !empty($attr[2]) ? $attr[2] : 0;
369
+ $video_time = $min + $sek;
370
  } else {
371
+ preg_match('/start=(\d+)/', $url, $attr);
372
  if( !empty($attr[1] ) )
373
+ $video_time = $attr[1];
374
  else
375
+ $video_time = 0;
376
  }
377
 
378
  // generate video metadata
379
+ $data = array(
380
+ 'id' => $video_id,
381
+ 'provider' => $provider,
382
+ 'time' => $video_time,
383
+ 'title' => $result['title'],
384
+ 'description' => $result['keywords'],
385
+ 'filename' => sanitize_file_name($result['title']),
386
+ 'timestamp' => $result['timestamp'],
387
+ 'author' => $result['author'],
388
+ 'tags' => $result['keywords'],
389
+ 'img' => ( isset($result['iurlmaxres']) && !empty($result['iurlmaxres']) ) ? $result['iurlmaxres'] : 'http://img.youtube.com/vi/' . $video_id . '/0.jpg',
390
+ 'url' => ( $video_time > 0 ) ? 'http://youtu.be/'.$video_id.'#t='.floor($video_time/60).'m'.($video_time%60).'s' : 'http://youtu.be/'.$video_id
391
  );
392
 
393
  break;
396
  case 'vimeo':
397
  // domain video ID
398
  $pattern = '#(?:https?://)?(?:\w+.)?vimeo.com/(?:video/|moogaloop\.swf\?clip_id=)?(\w+)#x';
399
+ preg_match($pattern, $url, $url_data);
400
+ $video_id = $url_data[1];
401
 
402
  // access API: http://developer.vimeo.com/apis/simple
403
  $response = wp_remote_get( 'http://vimeo.com/api/v2/video/' . $video_id . '.php' );
404
  if( is_wp_error( $response ) || (isset($response['response']['code']) && $response['response']['code'] == '404') )
405
  break;
406
  // title, description, upload_date, thumbnail_large, user_name, tags
407
+ $result = unserialize( $response['body'] );
408
 
409
  // extract info of a time-link
410
  /*preg_match('/#t=((?:\d+m)?(?:\d+s)?)/', $video, $attr);
412
  $video_attr = $attr[1];*/
413
 
414
  // generate video metadata
415
+ $data = array(
416
+ 'id' => $video_id,
417
+ 'provider' => $provider,
418
+ 'title' => $result[0]['title'],
419
+ 'description' => $result[0]['description'],
420
+ 'filename' => sanitize_file_name( $result[0]['title'] ),
421
+ 'timestamp' => strtotime( $result[0]['upload_date'] ),
422
+ 'author' => $result[0]['user_name'],
423
+ 'tags' => $result[0]['tags'],
424
+ 'img' => $result[0]['thumbnail_large'],
425
+ 'url' => $result[0]['url']
426
  );
427
 
428
  break;
430
  // dailymotion.com
431
  case 'dailymotion':
432
  // domain video ID
433
+ preg_match('/dailymotion.com\/(?:embed\/)?video\/([^_#\?]+)/', $url, $url_data);
434
+ if( !isset($url_data[1]) )
435
  break;
436
 
437
+ $video_id = $url_data[1];
438
 
439
  // access API: http://www.dailymotion.com/doc/api/obj-video.html
440
  $url = 'https://api.dailymotion.com/video/'.$video_id.'?fields=title,description,created_time,owner.screenname,tags,thumbnail_url,thumbnail_large_url,url,aspect_ratio';
441
  $request = new WP_Http;
442
+ $response = $request->request( $url, array( 'method' => 'GET', 'sslverify' => false) );
443
+ if( is_wp_error($response) )
444
  break;
445
+ $result = json_decode($response['body'], true);
446
+ if( !isset($result) || (isset($result['error']['code']) && ($result['error']['code'] == 501 || $result['error']['code'] == 400) ) )
447
  break;
448
 
449
  // extract info of a time-link
450
+ preg_match('/t=(?:(\d+)m)?(?:(\d+)s)?/', $url, $attr);
451
  if( !empty($attr[1] ) || !empty($attr[2]) ) {
452
  $min = !empty($attr[1]) ? $attr[1]*60 : 0;
453
  $sek = !empty($attr[2]) ? $attr[2] : 0;
454
+ $video_time = $min + $sek;
455
  } else {
456
+ preg_match('/start=(\d+)/', $url, $attr);
457
  if( !empty($attr[1] ) )
458
+ $video_time = $attr[1];
459
  else
460
+ $video_time = 0;
461
  }
462
 
463
  // generate video metadata
464
+ $data = array(
465
+ 'id' => $video_id,
466
+ 'provider' => $provider,
467
+ 'time' => $video_time,
468
+ 'title' => $result['title'],
469
+ 'description' => $result['description'],
470
+ 'filename' => sanitize_file_name($result['title']),
471
+ 'timestamp' => $result['created_time'],
472
+ 'author' => $result['owner.screenname'],
473
+ 'tags' => implode(', ', $result['tags']),
474
+ 'img' => ( isset($result['thumbnail_url']) && !empty($result['thumbnail_url']) ) ? $result['thumbnail_url'] : $result['thumbnail_large_url'],
475
+ 'url' => 'http://dailymotion.com/video/'.$video_id. ( $video_time>0 ? '#t='.floor($video_time/60).'m'.($video_time%60).'s' : '')
476
  );
477
 
478
  break;
482
  // source url and other metadata from the source code.
483
  case 'liveleak': // view-source:http://www.liveleak.com/view?i=45f_1358105976&ajax=1
484
  // domain video ID
485
+ preg_match('/(?:http:\/\/)?(?:www\.)?liveleak.com\/view\?i=([\d\w]{3}_\d{10})/', $url, $url_data);
486
+ if( !isset($url_data[1]) )
487
  break;
488
 
489
  // no API, get stripped down version of the full website
490
+ $response = wp_remote_get( 'http://liveleak.com/view?i='.$url_data[1].'&ajax=1');
491
  if( is_wp_error( $response ) )
492
  break;
493
 
499
  $llmeta = explode(',', $llmeta[2]);
500
  foreach( $llmeta as $line ) {
501
  $thisline = explode(': ', $line);
502
+ $result[trim($thisline[0])] = trim($thisline[1]);
503
  }
504
 
505
  preg_match('#class="section_title".*>([\s\w]+)</span>#', $response['body'], $title);
506
  preg_match('#id="body_text".*><p>(.*)<\/p><\/#', $response['body'], $desc);
507
+ $result['title'] = isset($title[1]) ? $title[1] : '';
508
 
509
+ $data = array(
510
+ 'id' => $video_id,
511
+ 'provider' => $provider,
512
+ 'title' => $result['title'],
513
  'description' => isset($desc[1]) ? $desc[1] : '',
514
+ 'filename' => sanitize_file_name($result['title']),
515
  'timestamp' => time(),
516
+ //'author' => '', // <strong>By:</strong> <a href="http://www.liveleak.com/c/k-doe">k-doe</a>
517
+ //'tags' => '', // <strong>Tags:</strong> <a href="browse?q=Drive By">Drive By</a>, <a href="browse?q=Fire Extinguisher">Fire Extinguisher</a><br />
518
+ 'img' => isset($result['image']) ? trim($result['image'],"\"") : '',
519
  'url' => 'http://liveleak.com/view?i='.$video_data[1]
520
  );
521
  break;
522
  }
523
 
524
  // if the regex fails the video is provided by prochan, not LL
525
+ $provider = 'prochan';
526
  $type = 'iframe';
527
 
528
  // prochan.com (only implemented as used by liveleak
531
  preg_match('#<iframe.*src="(?:http://)?(?:www\.)?prochan.com/embed\?f=([\d\w]{3}_\d{10})".*></iframe>#', $response['body'], $proframe);
532
  if( !isset($proframe[1]) )
533
  break;
534
+ $data = array(
535
+ 'id' => $proframe[1],
536
+ 'provider' => $provider
537
+ );
538
  }
539
  break;
540
  }
541
+ return isset($data) ? $data : false;
542
+ }
543
 
544
+ /**
545
+ * Pulls the new featured image picture to local and sets it as featured image.
546
+ * Since 1.0, got it own function in 1.5
547
+ *
548
+ * @since 1.5
549
+ */
550
+ function set_featured_video_image($post_id, $data) {
551
+ // Is this screen capture already existing in our media library?
552
+ $img = $this->featured_video_plus->get_post_by_custom_meta('_fvp_image', $data['provider'] . '?' . $data['id']);
553
+ if( !isset($img) ) {
554
+
555
+ // Generate attachment post metadata
556
+ $img_data = array(
557
+ 'post_content' => $data['description'],
558
+ 'post_title' => $data['title'],
559
+ 'post_name' => $data['filename']
560
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
561
 
562
+ // pull external img to local server and add to media library
563
+ include_once( FVP_DIR . 'php/somatic_attach_external_image.php' );
564
+ $img = somatic_attach_external_image($data['img'], $post_id, false, $data['filename'], $img_data);
565
+
566
+ // generate picture metadata
567
+ $img_meta = wp_get_attachment_metadata( $img );
568
+ $img_meta['image_meta'] = array(
569
+ 'aperture' => 0,
570
+ 'credit' => $data['id'],
571
+ 'camera' => $data['provider'],
572
+ 'caption' => $data['description'],
573
+ 'created_timestamp' => $data['timestamp'],
574
+ 'copyright' => $data['author'],
575
+ 'focal_length' => 0,
576
+ 'iso' => 0,
577
+ 'shutter_speed' => 0,
578
+ 'title' => $data['title']
579
+ );
580
 
581
+ // save picture metadata
582
+ wp_update_attachment_metadata($img, $img_meta);
583
+ update_post_meta( $img, '_fvp_image', $data['provider'] . '?' . $data['id'] );
584
  }
585
 
586
+ if( (get_bloginfo('version') >= 3.1) && // set_post_thumbnail was added in 3.1
587
+ ( (!has_post_thumbnail( $post_id )) ||
588
+ ($set_featimg) ) )
589
+ set_post_thumbnail( $post_id, $img );
 
 
 
 
 
 
 
 
590
 
591
+ return $img;
592
  }
593
 
594
  /**
598
  * @since 1.4
599
  */
600
  function delete_featured_video_image($post_id, $meta) {
601
+ if(!isset($meta['img'])) return false;
602
 
603
  // Unset featured image if it is from this video
604
  delete_post_meta( $post_id, '_thumbnail_id', $meta['img'] );
php/functions.php CHANGED
@@ -39,7 +39,7 @@ function get_the_post_video($post_id = null, $size = null) {
39
  function has_post_video($post_id = null){
40
  $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
41
 
42
- $meta = unserialize( get_post_meta( $post_id, '_fvp_video', true ) );
43
  if( !isset($meta) || empty($meta['id']) )
44
  return false;
45
 
@@ -56,7 +56,7 @@ function has_post_video($post_id = null){
56
  function get_the_post_video_image_url($post_id = null) {
57
  $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
58
 
59
- $meta = unserialize( get_post_meta( $post_id, '_fvp_video', true ) );
60
  if( !isset($meta) || empty($meta['id']) )
61
  return false;
62
 
@@ -75,7 +75,7 @@ function get_the_post_video_image_url($post_id = null) {
75
  * @param size
76
  */
77
  function get_the_post_video_image($post_id = null, $size = null) {
78
- $meta = unserialize( get_post_meta( $post_id, '_fvp_video', true ) );
79
  if( !isset($meta) || empty($meta['id']) )
80
  return false;
81
 
39
  function has_post_video($post_id = null){
40
  $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
41
 
42
+ $meta = get_post_meta( $post_id, '_fvp_video', true );
43
  if( !isset($meta) || empty($meta['id']) )
44
  return false;
45
 
56
  function get_the_post_video_image_url($post_id = null) {
57
  $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
58
 
59
+ $meta = get_post_meta( $post_id, '_fvp_video', true );
60
  if( !isset($meta) || empty($meta['id']) )
61
  return false;
62
 
75
  * @param size
76
  */
77
  function get_the_post_video_image($post_id = null, $size = null) {
78
+ $meta = get_post_meta( $post_id, '_fvp_video', true );
79
  if( !isset($meta) || empty($meta['id']) )
80
  return false;
81
 
php/general.php CHANGED
@@ -20,12 +20,18 @@ class featured_video_plus {
20
  public function enqueue($hook_suffix) {
21
  // just required on post.php
22
  if( !is_admin() || ( $hook_suffix == 'post.php' && isset($_GET['post']) ) ) {
 
23
 
24
  // http://videojs.com/
25
- wp_enqueue_script( 'videojs', 'http://vjs.zencdn.net/c/video.js', array(), FVP_VERSION, false );
26
- wp_enqueue_style( 'videojs', 'http://vjs.zencdn.net/c/video-js.css', array(), FVP_VERSION, false );
 
 
 
 
 
 
27
 
28
- $options = get_option( 'fvp-settings' );
29
  if( $options['sizing']['wmode'] == 'auto' )
30
  wp_enqueue_script('fvp_fitvids', FVP_URL . 'js/jquery.fitvids_fvp-min.js', array( 'jquery' ), FVP_VERSION, true ); // production
31
  //wp_enqueue_script('fvp_fitvids', FVP_URL . 'js/jquery.fitvids_fvp.js', array( 'jquery' ), FVP_VERSION, true ); // development
@@ -48,7 +54,7 @@ class featured_video_plus {
48
  if( !has_post_video($post_id) )
49
  return false;
50
 
51
- $meta = unserialize( get_post_meta($post_id, '_fvp_video', true) );
52
  $options= get_option( 'fvp-settings' );
53
 
54
  $size = $this->get_size($size);
@@ -72,7 +78,7 @@ class featured_video_plus {
72
  $embed = "\n\t".'<video class="video-js vjs-default-skin" controls preload="auto" width="'.$width.'" height="'.$height.'" data-setup="{}">'; // poster="'.$featimg.'" data-setup="{}"
73
  $embed .= "\n\t\t".'<source src="' . $a . '" type="video/'.$ext.'">';
74
 
75
- if( isset($meta['sec_id']) && !empty($meta['sec_id']) ) {
76
  $b = wp_get_attachment_url($meta['sec_id']);
77
  $ext2 = pathinfo( $b, PATHINFO_EXTENSION );
78
  $ext2 = $ext2 == 'ogv' ? 'ogg' : $ext2;
@@ -96,8 +102,9 @@ class featured_video_plus {
96
  $youtube['logo'] = isset($options['youtube']['logo']) ? $options['youtube']['logo'] : 1;
97
  $youtube['rel'] = isset($options['youtube']['rel']) ? $options['youtube']['rel'] : 1;
98
  $youtube['fs'] = isset($options['youtube']['fs']) ? $options['youtube']['fs'] : 1;
 
99
 
100
- $src = 'http://www.youtube.com/embed/'.$meta['id'].'?theme='.$youtube['theme'].'&color='.$youtube['color'].'&showinfo='.$youtube['info'].'&modestbranding='.$youtube['logo'].'&origin='.esc_attr(home_url()).'&rel='.$youtube['rel'].'&fs='.$youtube['fs'].'&start='.$meta['attr'].$autoplay;
101
  $embed = "\n\t" . '<iframe width="'.$width.'" height="'.$height.'" src="'.$src.'" type="text/html" frameborder="0"></iframe>' . "\n";
102
  break;
103
 
@@ -110,7 +117,7 @@ class featured_video_plus {
110
  $dm['syndication'] = isset($options['dailymotion']['syndication']) ? $options['dailymotion']['syndication'] : '';
111
  $dm['synd'] = !empty($dm['syndication']) ? '&syndication='.$dm['syndication'] : '';
112
 
113
- $dm['src'] = 'http://www.dailymotion.com/embed/video/'.$meta['id'].'?logo='.$dm['logo'].'&hideInfos='.$dm['hideinfo'].'&foreground=%23'.$dm['foreground'].'&highlight=%23'.$dm['highlight'].'&background=%23'.$dm['background'].$dm['synd'].'&start='.$meta['attr'].$autoplay;
114
  $embed = "\n" . '<iframe width="'.$width.'" height="'.$height.'" src="'.$dm['src'].'" frameborder="0"></iframe>' . "\n";
115
  break;
116
 
@@ -182,13 +189,21 @@ class featured_video_plus {
182
  * @param string $meta_key which meta_key to look for
183
  * @param string $meta_value which meta_value to look for
184
  */
185
- function get_post_by_custom_meta($meta_key, $meta_value) {
186
  global $wpdb;
187
- $prepared = $wpdb->prepare(
188
- "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key=%s AND meta_value=%s;",
189
- $meta_key, $meta_value
190
- );
191
- return $wpdb->get_var( $prepared );
 
 
 
 
 
 
 
 
192
  }
193
 
194
  /**
20
  public function enqueue($hook_suffix) {
21
  // just required on post.php
22
  if( !is_admin() || ( $hook_suffix == 'post.php' && isset($_GET['post']) ) ) {
23
+ $options = get_option( 'fvp-settings' );
24
 
25
  // http://videojs.com/
26
+ if( $options['local']['videojs']['js'] )
27
+ if( $options['local']['videojs']['cdn'] )
28
+ wp_enqueue_script( 'videojs', 'http://vjs.zencdn.net/c/video.js', array(), FVP_VERSION, false );
29
+ else wp_enqueue_script( 'videojs', FVP_URL . 'js/videojs-min.js', array(), FVP_VERSION, false );
30
+ if( $options['local']['videojs']['css'] )
31
+ if( $options['local']['videojs']['cdn'] )
32
+ wp_enqueue_style( 'videojs', 'http://vjs.zencdn.net/c/video-js.css', array(), FVP_VERSION, false );
33
+ else wp_enqueue_style( 'videojs', FVP_URL . 'css/videojs-min.css', array(), FVP_VERSION, false );
34
 
 
35
  if( $options['sizing']['wmode'] == 'auto' )
36
  wp_enqueue_script('fvp_fitvids', FVP_URL . 'js/jquery.fitvids_fvp-min.js', array( 'jquery' ), FVP_VERSION, true ); // production
37
  //wp_enqueue_script('fvp_fitvids', FVP_URL . 'js/jquery.fitvids_fvp.js', array( 'jquery' ), FVP_VERSION, true ); // development
54
  if( !has_post_video($post_id) )
55
  return false;
56
 
57
+ $meta = get_post_meta($post_id, '_fvp_video', true);
58
  $options= get_option( 'fvp-settings' );
59
 
60
  $size = $this->get_size($size);
78
  $embed = "\n\t".'<video class="video-js vjs-default-skin" controls preload="auto" width="'.$width.'" height="'.$height.'" data-setup="{}">'; // poster="'.$featimg.'" data-setup="{}"
79
  $embed .= "\n\t\t".'<source src="' . $a . '" type="video/'.$ext.'">';
80
 
81
+ if( isset($meta['sec_id']) && !empty($meta['sec_id']) && $meta['sec_id'] != $meta['id'] ) {
82
  $b = wp_get_attachment_url($meta['sec_id']);
83
  $ext2 = pathinfo( $b, PATHINFO_EXTENSION );
84
  $ext2 = $ext2 == 'ogv' ? 'ogg' : $ext2;
102
  $youtube['logo'] = isset($options['youtube']['logo']) ? $options['youtube']['logo'] : 1;
103
  $youtube['rel'] = isset($options['youtube']['rel']) ? $options['youtube']['rel'] : 1;
104
  $youtube['fs'] = isset($options['youtube']['fs']) ? $options['youtube']['fs'] : 1;
105
+ $youtube['wmode'] = isset($options['youtube']['wmode']) && $options['youtube']['wmode'] != 'auto' ? '&wmode='.$options['youtube']['wmode'] : '';
106
 
107
+ $src = 'http://www.youtube.com/embed/'.$meta['id'].'?theme='.$youtube['theme'].$youtube['wmode'].'&color='.$youtube['color'].'&showinfo='.$youtube['info'].'&modestbranding='.$youtube['logo'].'&origin='.esc_attr(home_url()).'&rel='.$youtube['rel'].'&fs='.$youtube['fs'].'&start='.$meta['time'].$autoplay;
108
  $embed = "\n\t" . '<iframe width="'.$width.'" height="'.$height.'" src="'.$src.'" type="text/html" frameborder="0"></iframe>' . "\n";
109
  break;
110
 
117
  $dm['syndication'] = isset($options['dailymotion']['syndication']) ? $options['dailymotion']['syndication'] : '';
118
  $dm['synd'] = !empty($dm['syndication']) ? '&syndication='.$dm['syndication'] : '';
119
 
120
+ $dm['src'] = 'http://www.dailymotion.com/embed/video/'.$meta['id'].'?logo='.$dm['logo'].'&hideInfos='.$dm['hideinfo'].'&foreground=%23'.$dm['foreground'].'&highlight=%23'.$dm['highlight'].'&background=%23'.$dm['background'].$dm['synd'].'&start='.$meta['time'].$autoplay;
121
  $embed = "\n" . '<iframe width="'.$width.'" height="'.$height.'" src="'.$dm['src'].'" frameborder="0"></iframe>' . "\n";
122
  break;
123
 
189
  * @param string $meta_key which meta_key to look for
190
  * @param string $meta_value which meta_value to look for
191
  */
192
+ function get_post_by_custom_meta($meta_key, $meta_value = null) {
193
  global $wpdb;
194
+ if( $meta_value !== null ) {
195
+ $prepared = $wpdb->prepare(
196
+ "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key=%s AND meta_value=%s LIMIT 1",
197
+ $meta_key, $meta_value
198
+ );
199
+ return $wpdb->get_var( $prepared );
200
+ } else {
201
+ $prepared = $wpdb->prepare(
202
+ "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key=%s",
203
+ $meta_key
204
+ );
205
+ return $wpdb->get_col( $prepared );
206
+ }
207
  }
208
 
209
  /**
php/settings.php CHANGED
@@ -24,10 +24,10 @@ class featured_video_plus_settings {
24
  add_settings_field('fvp-settings-autoplay', __('Autoplay', 'featured-video-plus'), array( &$this, 'settings_autoplay' ), 'media', 'fvp-settings-section');
25
  add_settings_field('fvp-settings-sizing', __('Video Sizing', 'featured-video-plus'), array( &$this, 'settings_sizing' ), 'media', 'fvp-settings-section');
26
  add_settings_field('fvp-settings-align', __('Video Align', 'featured-video-plus'), array( &$this, 'settings_align' ), 'media', 'fvp-settings-section');
27
- //add_settings_field('fvp-settings-videojs', __('VIDEOJS Player Options', 'featured-video-plus'), array( &$this, 'settings_videojs' ), 'media', 'fvp-settings-section');
28
- add_settings_field('fvp-settings-youtube', __('YouTube Player Options', 'featured-video-plus'), array( &$this, 'settings_youtube' ), 'media', 'fvp-settings-section');
29
- add_settings_field('fvp-settings-vimeo', __('Vimeo Player Options', 'featured-video-plus'), array( &$this, 'settings_vimeo' ), 'media', 'fvp-settings-section');
30
- add_settings_field('fvp-settings-dailymotion', __('Dailymotion Player Options', 'featured-video-plus'), array( &$this, 'settings_dailymotion' ),'media', 'fvp-settings-section');
31
  add_settings_field('fvp-settings-rate', __('Support', 'featured-video-plus'), array( &$this, 'settings_rate' ), 'media', 'fvp-settings-section');
32
 
33
  register_setting('media', 'fvp-settings', array( &$this, 'settings_save' ));
@@ -144,26 +144,26 @@ if( !current_theme_supports('post-thumbnails') )
144
 
145
  <?php }
146
  /**
147
- * Displays the settings to style the VIDEOJS player.
148
  *
149
  * @see https://github.com/zencoder/video-js/blob/master/docs/skins.md
150
  * @see http://jlofstedt.com/moonify/
151
  * @see http://videojs.com/
152
- * @since 1.3
153
- *
154
- * NOTE: NOT IN USE YET!
155
  */
156
- function settings_videojs() {
157
  $options = get_option( 'fvp-settings' );
158
- $videojs['skin'] = isset($options['videojs']['skin']) ? $options['videojs']['skin'] : 'default'; ?>
 
 
159
 
160
- <input type="radio" name="fvp-settings[videojs][skin]" id="fvp-settings-videojs-skin-1" value="videojs" <?php checked( 'videojs', $videojs['skin'], true ) ?>/><label for="fvp-settings-videojs-skin-1">&nbsp;<?php _e('default', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
161
- <input type="radio" name="fvp-settings[videojs][skin]" id="fvp-settings-videojs-skin-2" value="tubecss" <?php checked( 'tubecss', $videojs['skin'], true ) ?>/><label for="fvp-settings-videojs-skin-2">&nbsp;TubeCSS</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
162
- <input type="radio" name="fvp-settings[videojs][skin]" id="fvp-settings-videojs-skin-3" value="moonify" <?php checked( 'moonify', $videojs['skin'], true ) ?>/><label for="fvp-settings-videojs-skin-3">&nbsp;Moonify</label>&nbsp;(<a style="font-style: italic;" href="http://jlofstedt.com/moonify/" target="_blank">info</a>)&nbsp;&nbsp;&nbsp;&nbsp;
 
163
 
164
- <?php
165
- __('VIDEOJS Player Options', 'featured-video-plus'); // translate it, even if not yet integrated
166
- }
167
 
168
  /**
169
  * Displays the settings to style the YouTube video player.
@@ -173,17 +173,26 @@ if( !current_theme_supports('post-thumbnails') )
173
  */
174
  function settings_youtube() {
175
  $options = get_option( 'fvp-settings' );
176
- $youtube['theme'] = isset($options['youtube']['theme']) ? $options['youtube']['theme'] : 'dark';
177
- $youtube['color'] = isset($options['youtube']['color']) ? $options['youtube']['color'] : 'red';
 
178
  $youtube['info'] = isset($options['youtube']['info']) ? $options['youtube']['info'] : 1;
179
  $youtube['logo'] = isset($options['youtube']['logo']) ? $options['youtube']['logo'] : 1;
180
- $youtube['rel'] = isset($options['youtube']['rel']) ? $options['youtube']['rel'] : 1;
181
- $youtube['fs'] = isset($options['youtube']['fs']) ? $options['youtube']['fs'] : 1; ?>
 
 
 
 
 
 
 
 
 
 
 
182
 
183
- <input type="checkbox" name="fvp-settings[youtube][theme]" id="fvp-settings-youtube-theme" value="light" <?php checked( 'light', $youtube['theme'], 1 ) ?>/><label for="fvp-settings-youtube-theme">&nbsp;<?php _e('Light Theme', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
184
- <input type="checkbox" name="fvp-settings[youtube][info]" id="fvp-settings-youtube-info" value="true" <?php checked( 1, $youtube['info'], 1 ) ?>/><label for="fvp-settings-youtube-info">&nbsp;<?php _e('Info', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
185
- <input type="checkbox" name="fvp-settings[youtube][fs]" id="fvp-settings-youtube-fs" value="true" <?php checked( 1, $youtube['fs'], 1 ) ?>/><label for="fvp-settings-youtube-fs">&nbsp;<?php _e('Fullscreen Button', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
186
- <input type="checkbox" name="fvp-settings[youtube][rel]" id="fvp-settings-youtube-rel" value="true" <?php checked( 1, $youtube['rel'], 1 ) ?>/><label for="fvp-settings-youtube-rel">&nbsp;<?php _e('Related Videos', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
187
  <input type="checkbox" name="fvp-settings[youtube][color]" id="fvp-settings-youtube-color" value="white" <?php checked( 'white', $youtube['color'], 1 ) ?>/><label for="fvp-settings-youtube-color">&nbsp;<?php _e('White Progressbar', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
188
  <span id="youtube_logoinput_wrapper"<?php if($youtube['color'] != 'red') echo ' class="fvp_hidden"'; ?>>
189
  <input type="checkbox" name="fvp-settings[youtube][logo]" id="fvp-settings-youtube-logo" value="true" <?php checked( 1, $youtube['logo'], 1 ) ?>/><label for="fvp-settings-youtube-logo">&nbsp;<?php _e('Logo', 'featured-video-plus'); ?></label>
@@ -211,7 +220,7 @@ if( !current_theme_supports('post-thumbnails') )
211
  <input type="checkbox" name="fvp-settings[vimeo][title]" id="fvp-settings-vimeo-2" value="display" <?php checked( 1, $vimeo['title'], 1 ) ?>/><label for="fvp-settings-vimeo-2">&nbsp;<?php _e('Title', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
212
  <input type="checkbox" name="fvp-settings[vimeo][byline]" id="fvp-settings-vimeo-3" value="display" <?php checked( 1, $vimeo['byline'], 1 ) ?>/><label for="fvp-settings-vimeo-3">&nbsp;<?php _e('Byline', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
213
  <span class="color-picker" style="position: relative;<?php if( wp_style_is( 'wp-color-picker', 'done' ) ) echo ' top: .6em;'; ?>" >
214
- <input type="text" name="fvp-settings[vimeo][color]" id="fvp-settings-vimeo-color" value="#<?php echo $vimeo['color'] ?>" data-default-color="#00adef" />
215
  <label for="fvp-settings-vimeo-color" style="display: none;">&nbsp;<?php _e('Color', 'featured-video-plus'); ?></label>
216
  <?php if( !wp_style_is('wp-color-picker', 'registered' ) ) { ?><div class="fvp_colorpicker" id="fvp-settings-vimeo-colorpicker"></div><?php } ?>
217
  </span>
@@ -243,17 +252,17 @@ if( !current_theme_supports('post-thumbnails') )
243
  <input type="text" name="fvp-settings[dailymotion][synd]" id="fvp-settings-dailymotion-synd" value="<?php echo $dailymotion['synd']; ?>" size="6" /> <label for="fvp-settings-dailymotion-synd">&nbsp;<?php _e('Syndication Key', 'featured-video-plus'); ?></label>
244
  <br />
245
  <span class="color-picker" style="position: relative;<?php if( wp_style_is( 'wp-color-picker', 'done' ) ) echo ' top: .6em;'; ?>" >
246
- <input type="text" name="fvp-settings[dailymotion][foreground]" id="fvp-settings-dailymotion-foreground" value="#<?php echo $dailymotion['foreground'] ?>" data-default-color="#f7fffd" />
247
  <label for="fvp-settings-dailymotion-foreground" style="display: none;">&nbsp;<?php _e('Foreground', 'featured-video-plus'); ?></label>
248
  <?php if( !wp_style_is('wp-color-picker', 'registered' ) ) { ?><div class="fvp_colorpicker" id="fvp-settings-dailymotion-foreground-colorpicker"></div><?php } ?>
249
  </span>
250
  <span class="color-picker" style="position: relative;<?php if( wp_style_is( 'wp-color-picker', 'done' ) ) echo ' top: .6em;'; ?>" >
251
- <input type="text" name="fvp-settings[dailymotion][highlight]" id="fvp-settings-dailymotion-highlight" value="#<?php echo $dailymotion['highlight'] ?>" data-default-color="#ffc300" />
252
  <label for="fvp-settings-dailymotion-highlight" style="display: none;">&nbsp;<?php _e('Highlight', 'featured-video-plus'); ?></label>
253
  <?php if( !wp_style_is('wp-color-picker', 'registered' ) ) { ?><div class="fvp_colorpicker" id="fvp-settings-dailymotion-highlight-colorpicker"></div><?php } ?>
254
  </span>
255
  <span class="color-picker" style="position: relative;<?php if( wp_style_is( 'wp-color-picker', 'done' ) ) echo ' top: .6em;'; ?>" >
256
- <input type="text" name="fvp-settings[dailymotion][background]" id="fvp-settings-dailymotion-background" value="#<?php echo $dailymotion['background'] ?>" data-default-color="#171d1b" />
257
  <label for="fvp-settings-dailymotion-background" style="display: none;">&nbsp;<?php _e('Background', 'featured-video-plus'); ?></label>
258
  <?php if( !wp_style_is('wp-color-picker', 'registered' ) ) { ?><div class="fvp_colorpicker" id="fvp-settings-dailymotion-background-colorpicker"></div><?php } ?>
259
  </span>
@@ -315,12 +324,15 @@ if( !current_theme_supports('post-thumbnails') )
315
  // Autoplay
316
  $options['autoplay'] = isset($input['autoplay']) && $input['autoplay'] == 'true' ? 1 : 0;
317
 
318
- // VIDEOJS
319
- //$options['videojs']['skin'] = isset( $input['videojs']['skin'] ) ? $input['videojs']['skin'] : 'videojs';
 
 
320
 
321
  // YouTube
322
  $options['youtube']['theme'] = isset($input['youtube']['theme']) && ( $input['youtube']['theme'] == 'light' ) ? 'light' : 'dark';
323
  $options['youtube']['color'] = isset($input['youtube']['color']) && ( $input['youtube']['color'] == 'white' ) ? 'white' : 'red';
 
324
  $options['youtube']['info'] = isset($input['youtube']['info']) && ( $input['youtube']['info'] == 'true' ) ? 1 : 0;
325
  $options['youtube']['logo'] = isset($input['youtube']['logo']) && ( $input['youtube']['logo'] == 'true' ) ? 1 : 0;
326
  $options['youtube']['rel'] = isset($input['youtube']['rel']) && ( $input['youtube']['rel'] == 'true' ) ? 1 : 0;
24
  add_settings_field('fvp-settings-autoplay', __('Autoplay', 'featured-video-plus'), array( &$this, 'settings_autoplay' ), 'media', 'fvp-settings-section');
25
  add_settings_field('fvp-settings-sizing', __('Video Sizing', 'featured-video-plus'), array( &$this, 'settings_sizing' ), 'media', 'fvp-settings-section');
26
  add_settings_field('fvp-settings-align', __('Video Align', 'featured-video-plus'), array( &$this, 'settings_align' ), 'media', 'fvp-settings-section');
27
+ add_settings_field('fvp-settings-local', __('Local Video Options', 'featured-video-plus'), array( &$this, 'settings_local' ), 'media', 'fvp-settings-section');
28
+ add_settings_field('fvp-settings-youtube', __('YouTube Options', 'featured-video-plus'), array( &$this, 'settings_youtube' ), 'media', 'fvp-settings-section');
29
+ add_settings_field('fvp-settings-vimeo', __('Vimeo Options', 'featured-video-plus'), array( &$this, 'settings_vimeo' ), 'media', 'fvp-settings-section');
30
+ add_settings_field('fvp-settings-dailymotion', __('Dailymotion Options', 'featured-video-plus'), array( &$this, 'settings_dailymotion' ),'media', 'fvp-settings-section');
31
  add_settings_field('fvp-settings-rate', __('Support', 'featured-video-plus'), array( &$this, 'settings_rate' ), 'media', 'fvp-settings-section');
32
 
33
  register_setting('media', 'fvp-settings', array( &$this, 'settings_save' ));
144
 
145
  <?php }
146
  /**
147
+ * Displays the settings for local videos
148
  *
149
  * @see https://github.com/zencoder/video-js/blob/master/docs/skins.md
150
  * @see http://jlofstedt.com/moonify/
151
  * @see http://videojs.com/
152
+ * @since 1.5
 
 
153
  */
154
+ function settings_local() {
155
  $options = get_option( 'fvp-settings' );
156
+ $videojs['js'] = isset($options['local']['videojs']['js']) ? $options['local']['videojs']['js'] : true;
157
+ $videojs['css'] = isset($options['local']['videojs']['css']) ? $options['local']['videojs']['css'] : true;
158
+ $videojs['cdn'] = isset($options['local']['videojs']['cdn']) ? $options['local']['videojs']['cdn'] : false; ?>
159
 
160
+ VideoJS:&nbsp;
161
+ <input type="checkbox" name="fvp-settings[local][videojs][cdn]" id="fvp-settings-local-videojs-cdn" value="true" <?php checked( true, $videojs['cdn'], 1 ) ?>/><label for="fvp-settings-local-videojs-cdn">&nbsp;<?php _e('Use CDN', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
162
+ <input type="checkbox" name="fvp-settings[local][videojs][js]" id="fvp-settings-local-videojs-js" value="true" <?php checked( true, $videojs['js'], 1 ) ?>/><label for="fvp-settings-local-videojs-js">&nbsp;<?php _e('Include JS', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
163
+ <input type="checkbox" name="fvp-settings[local][videojs][css]" id="fvp-settings-local-videojs-css" value="true" <?php checked( true, $videojs['css'], 1 ) ?>/><label for="fvp-settings-local-videojs-css">&nbsp;<?php _e('Include CSS', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
164
 
165
+ <p class="description"><?php _e('Disabling JS and/or CSS will break the local video player. Disable only when you want to replace VideoJS with a different script and know what you are doing.', 'featured-video-plus'); ?></p>
166
+ <?php }
 
167
 
168
  /**
169
  * Displays the settings to style the YouTube video player.
173
  */
174
  function settings_youtube() {
175
  $options = get_option( 'fvp-settings' );
176
+ $youtube['theme'] = isset($options['youtube']['theme']) ? $options['youtube']['theme'] : 'dark';
177
+ $youtube['color'] = isset($options['youtube']['color']) ? $options['youtube']['color'] : 'red';
178
+ $youtube['wmode'] = isset($options['youtube']['wmode']) ? $options['youtube']['wmode'] : 'auto';
179
  $youtube['info'] = isset($options['youtube']['info']) ? $options['youtube']['info'] : 1;
180
  $youtube['logo'] = isset($options['youtube']['logo']) ? $options['youtube']['logo'] : 1;
181
+ $youtube['rel'] = isset($options['youtube']['rel']) ? $options['youtube']['rel'] : 1;
182
+ $youtube['fs'] = isset($options['youtube']['fs']) ? $options['youtube']['fs'] : 1; ?>
183
+
184
+ <input type="checkbox" name="fvp-settings[youtube][theme]" id="fvp-settings-youtube-theme" value="light" <?php checked( 'light', $youtube['theme'], 1 ) ?>/><label for="fvp-settings-youtube-theme">&nbsp;<?php _e('Light Theme', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
185
+ <input type="checkbox" name="fvp-settings[youtube][fs]" id="fvp-settings-youtube-fs" value="true" <?php checked( 1, $youtube['fs'], 1 ) ?>/><label for="fvp-settings-youtube-fs">&nbsp;<?php _e('Fullscreen Button', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
186
+ <select name="fvp-settings[youtube][wmode]" id="fvp-settings-youtube-wmode" size="1">
187
+ <option<?php selected($youtube['wmode'],'auto'); ?>>auto</option>
188
+ <option<?php selected($youtube['wmode'],'transparent'); ?>>transparent</option>
189
+ <option<?php selected($youtube['wmode'],'opaque'); ?>>opaque</option>
190
+ </select>
191
+ <label for="fvp-settings-youtube-wmode">&quot;wmode&quot;</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
192
+ <br />
193
+ <input type="checkbox" name="fvp-settings[youtube][info]" id="fvp-settings-youtube-info" value="true" <?php checked( 1, $youtube['info'], 1 ) ?>/><label for="fvp-settings-youtube-info">&nbsp;<?php _e('Info', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
194
 
195
+ <input type="checkbox" name="fvp-settings[youtube][rel]" id="fvp-settings-youtube-rel" value="true" <?php checked( 1, $youtube['rel'], 1 ) ?>/><label for="fvp-settings-youtube-rel">&nbsp;<?php _e('Related Videos', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
 
 
196
  <input type="checkbox" name="fvp-settings[youtube][color]" id="fvp-settings-youtube-color" value="white" <?php checked( 'white', $youtube['color'], 1 ) ?>/><label for="fvp-settings-youtube-color">&nbsp;<?php _e('White Progressbar', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
197
  <span id="youtube_logoinput_wrapper"<?php if($youtube['color'] != 'red') echo ' class="fvp_hidden"'; ?>>
198
  <input type="checkbox" name="fvp-settings[youtube][logo]" id="fvp-settings-youtube-logo" value="true" <?php checked( 1, $youtube['logo'], 1 ) ?>/><label for="fvp-settings-youtube-logo">&nbsp;<?php _e('Logo', 'featured-video-plus'); ?></label>
220
  <input type="checkbox" name="fvp-settings[vimeo][title]" id="fvp-settings-vimeo-2" value="display" <?php checked( 1, $vimeo['title'], 1 ) ?>/><label for="fvp-settings-vimeo-2">&nbsp;<?php _e('Title', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
221
  <input type="checkbox" name="fvp-settings[vimeo][byline]" id="fvp-settings-vimeo-3" value="display" <?php checked( 1, $vimeo['byline'], 1 ) ?>/><label for="fvp-settings-vimeo-3">&nbsp;<?php _e('Byline', 'featured-video-plus'); ?></label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
222
  <span class="color-picker" style="position: relative;<?php if( wp_style_is( 'wp-color-picker', 'done' ) ) echo ' top: .6em;'; ?>" >
223
+ <input type="text" name="fvp-settings[vimeo][color]" id="fvp-settings-vimeo-color" class="fvp_colorpicker_input" value="#<?php echo $vimeo['color'] ?>" data-default-color="#00adef" />
224
  <label for="fvp-settings-vimeo-color" style="display: none;">&nbsp;<?php _e('Color', 'featured-video-plus'); ?></label>
225
  <?php if( !wp_style_is('wp-color-picker', 'registered' ) ) { ?><div class="fvp_colorpicker" id="fvp-settings-vimeo-colorpicker"></div><?php } ?>
226
  </span>
252
  <input type="text" name="fvp-settings[dailymotion][synd]" id="fvp-settings-dailymotion-synd" value="<?php echo $dailymotion['synd']; ?>" size="6" /> <label for="fvp-settings-dailymotion-synd">&nbsp;<?php _e('Syndication Key', 'featured-video-plus'); ?></label>
253
  <br />
254
  <span class="color-picker" style="position: relative;<?php if( wp_style_is( 'wp-color-picker', 'done' ) ) echo ' top: .6em;'; ?>" >
255
+ <input type="text" name="fvp-settings[dailymotion][foreground]" id="fvp-settings-dailymotion-foreground" class="fvp_colorpicker_input" value="#<?php echo $dailymotion['foreground'] ?>" data-default-color="#f7fffd" />
256
  <label for="fvp-settings-dailymotion-foreground" style="display: none;">&nbsp;<?php _e('Foreground', 'featured-video-plus'); ?></label>
257
  <?php if( !wp_style_is('wp-color-picker', 'registered' ) ) { ?><div class="fvp_colorpicker" id="fvp-settings-dailymotion-foreground-colorpicker"></div><?php } ?>
258
  </span>
259
  <span class="color-picker" style="position: relative;<?php if( wp_style_is( 'wp-color-picker', 'done' ) ) echo ' top: .6em;'; ?>" >
260
+ <input type="text" name="fvp-settings[dailymotion][highlight]" id="fvp-settings-dailymotion-highlight" class="fvp_colorpicker_input" value="#<?php echo $dailymotion['highlight'] ?>" data-default-color="#ffc300" />
261
  <label for="fvp-settings-dailymotion-highlight" style="display: none;">&nbsp;<?php _e('Highlight', 'featured-video-plus'); ?></label>
262
  <?php if( !wp_style_is('wp-color-picker', 'registered' ) ) { ?><div class="fvp_colorpicker" id="fvp-settings-dailymotion-highlight-colorpicker"></div><?php } ?>
263
  </span>
264
  <span class="color-picker" style="position: relative;<?php if( wp_style_is( 'wp-color-picker', 'done' ) ) echo ' top: .6em;'; ?>" >
265
+ <input type="text" name="fvp-settings[dailymotion][background]" id="fvp-settings-dailymotion-background" class="fvp_colorpicker_input" value="#<?php echo $dailymotion['background'] ?>" data-default-color="#171d1b" />
266
  <label for="fvp-settings-dailymotion-background" style="display: none;">&nbsp;<?php _e('Background', 'featured-video-plus'); ?></label>
267
  <?php if( !wp_style_is('wp-color-picker', 'registered' ) ) { ?><div class="fvp_colorpicker" id="fvp-settings-dailymotion-background-colorpicker"></div><?php } ?>
268
  </span>
324
  // Autoplay
325
  $options['autoplay'] = isset($input['autoplay']) && $input['autoplay'] == 'true' ? 1 : 0;
326
 
327
+ // Local
328
+ $options['local']['videojs']['js'] = isset( $input['local']['videojs']['js'] ) ? true : false;
329
+ $options['local']['videojs']['css'] = isset( $input['local']['videojs']['css'] ) ? true : false;
330
+ $options['local']['videojs']['cdn'] = isset( $input['local']['videojs']['cdn'] ) ? true : false;
331
 
332
  // YouTube
333
  $options['youtube']['theme'] = isset($input['youtube']['theme']) && ( $input['youtube']['theme'] == 'light' ) ? 'light' : 'dark';
334
  $options['youtube']['color'] = isset($input['youtube']['color']) && ( $input['youtube']['color'] == 'white' ) ? 'white' : 'red';
335
+ $options['youtube']['wmode'] = isset($input['youtube']['wmode']) ? $input['youtube']['wmode'] : 'auto';
336
  $options['youtube']['info'] = isset($input['youtube']['info']) && ( $input['youtube']['info'] == 'true' ) ? 1 : 0;
337
  $options['youtube']['logo'] = isset($input['youtube']['logo']) && ( $input['youtube']['logo'] == 'true' ) ? 1 : 0;
338
  $options['youtube']['rel'] = isset($input['youtube']['rel']) && ( $input['youtube']['rel'] == 'true' ) ? 1 : 0;
php/upgrade.php CHANGED
@@ -77,14 +77,35 @@ function featured_video_plus_upgrade() {
77
  case '1.3':
78
  $notice = isset($notice) ? $notice : 'upgrade_13';
79
 
80
- $options['autoplay'] = 0;
81
- $options['youtube']['logo'] = 1;
82
- $options['dailymotion']['syndication'] = '';
83
  $options['out'] = 0;
 
 
 
84
 
85
  $options['align'] = $options['sizing']['wmode'] == 'auto' ? 'center' : $options['sizing']['align'];
86
  unset( $options['sizing']['align'] );
87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  // *************************************************************
89
  $options['version'] = FVP_VERSION;
90
  $options['reged' ] = false;
@@ -122,6 +143,17 @@ class featured_video_plus_notices {
122
  $this->pluginpage = 'http://wordpress.org/extend/plugins/featured-video-plus#plugin-title';
123
  }
124
 
 
 
 
 
 
 
 
 
 
 
 
125
  /**
126
  * Upgrade notification 1.3 to current version
127
  *
@@ -129,7 +161,7 @@ class featured_video_plus_notices {
129
  */
130
  function upgrade_13() {
131
  echo "\n" . '<div class="updated" id="fvp_activation_notification"><p>';
132
- printf(__('Featured Video Plus was <strong>upgraded</strong>.', 'featured-video-plus').'&nbsp'.__('%s features a seamless <strong>WP3.5 Media Manager</strong> integration, time-links (#t=4m2s) for YouTube and Dailymotion, some new options and new PHP functions for developers.', 'featured-video-plus').'&nbsp;'.__('If you like the plugin, please %srate it%s.', 'featured-video-plus'), '<strong>Version&nbsp;'.FVP_VERSION.'</strong>', '<a href="'.$this->pluginpage.'" target="_blank">', '</a>');
133
  echo "</p></div>\n";
134
  }
135
 
@@ -140,7 +172,7 @@ class featured_video_plus_notices {
140
  */
141
  function upgrade_12() {
142
  echo "\n" . '<div class="updated" id="fvp_activation_notification"><p>';
143
- printf(__('Featured Video Plus was <strong>upgraded</strong>.', 'featured-video-plus').'&nbsp'.__('%s features a seamless WP3.5 Media Manager integration, time-links (#t=4m2s) for YouTube and Dailymotion, more customization settings and internationalization.', 'featured-video-plus').'&nbsp;'.__('If you like the plugin, please %srate it%s.', 'featured-video-plus'), '<strong>Version&nbsp;'.FVP_VERSION.'</strong>', '<a href="'.$this->pluginpage.'" target="_blank">', '</a>');
144
  echo "</p></div>\n";
145
  }
146
 
@@ -151,7 +183,7 @@ class featured_video_plus_notices {
151
  */
152
  function upgrade_11() {
153
  echo "\n" . '<div class="updated" id="fvp_activation_notification"><p>';
154
- printf(__('Featured Video Plus was <strong>upgraded</strong>.', 'featured-video-plus').'&nbsp;'.__('%s features support for <strong>Local Videos</strong>, a seamless WP3.5 Media Manager integration, time-links (#t=4m2s) for YouTube and Dailymotion and many more customization settings.', 'featured-video-plus').'&nbsp;'.__('If you like the plugin, please %srate it%s.', 'featured-video-plus'), '<strong>Version&nbsp;'.FVP_VERSION.'</strong>', '<a href="'.$this->pluginpage.'" traget="_blank">','</a>');
155
  echo "</p></div>\n";
156
  }
157
 
77
  case '1.3':
78
  $notice = isset($notice) ? $notice : 'upgrade_13';
79
 
 
 
 
80
  $options['out'] = 0;
81
+ $options['autoplay'] = 0;
82
+ $options['youtube']['logo'] = 1;
83
+ $options['dailymotion']['syndication'] = '';
84
 
85
  $options['align'] = $options['sizing']['wmode'] == 'auto' ? 'center' : $options['sizing']['align'];
86
  unset( $options['sizing']['align'] );
87
 
88
+ case '1.4':
89
+ $notice = isset($notice) ? $notice : 'upgrade_14';
90
+
91
+ $options['youtube']['wmode'] = 'auto';
92
+ $options['local']['videojs']['js'] = true;
93
+ $options['local']['videojs']['css'] = true;
94
+ $options['local']['videojs']['cdn'] = false;
95
+ unset($options['videojs']);
96
+
97
+ // update video data ('attr' to 'time') and fix serialization
98
+ $ids = $GLOBALS['featured_video_plus']->get_post_by_custom_meta('_fvp_video');
99
+ foreach( $ids as $id ) {
100
+ $meta = maybe_unserialize(get_post_meta( $id, '_fvp_video', true ));
101
+ if( isset( $meta['attr'] ) ) {
102
+ $meta['time'] = $meta['attr'];
103
+ unset($meta['attr']);
104
+ update_post_meta($id, '_fvp_video', $meta);
105
+ }
106
+ }
107
+
108
+
109
  // *************************************************************
110
  $options['version'] = FVP_VERSION;
111
  $options['reged' ] = false;
143
  $this->pluginpage = 'http://wordpress.org/extend/plugins/featured-video-plus#plugin-title';
144
  }
145
 
146
+ /**
147
+ * Upgrade notification 1.4 to current version
148
+ *
149
+ * @since 1.5
150
+ */
151
+ function upgrade_14() {
152
+ echo "\n" . '<div class="updated" id="fvp_activation_notification"><p>';
153
+ printf(__('Featured Video Plus was <strong>upgraded</strong>.', 'featured-video-plus').'&nbsp'.__('%s <strong>ajax</strong>ifies the Featured Video box and introduces new options (especially for the local video player).', 'featured-video-plus').'&nbsp;'.__('If you like the plugin, please %srate it%s.', 'featured-video-plus'), '<strong>Version&nbsp;'.FVP_VERSION.'</strong>', '<a href="'.$this->pluginpage.'" target="_blank">', '</a>');
154
+ echo "</p></div>\n";
155
+ }
156
+
157
  /**
158
  * Upgrade notification 1.3 to current version
159
  *
161
  */
162
  function upgrade_13() {
163
  echo "\n" . '<div class="updated" id="fvp_activation_notification"><p>';
164
+ printf(__('Featured Video Plus was <strong>upgraded</strong>.', 'featured-video-plus').'&nbsp'.__('%s features a seamless <strong>WP3.5 Media Manager</strong> integration, an all new <strong>ajax</strong>ified metabox, time-links (#t=4m2s) for YouTube and Dailymotion, new PHP functions for developers and more.', 'featured-video-plus').'&nbsp;'.__('If you like the plugin, please %srate it%s.', 'featured-video-plus'), '<strong>Version&nbsp;'.FVP_VERSION.'</strong>', '<a href="'.$this->pluginpage.'" target="_blank">', '</a>');
165
  echo "</p></div>\n";
166
  }
167
 
172
  */
173
  function upgrade_12() {
174
  echo "\n" . '<div class="updated" id="fvp_activation_notification"><p>';
175
+ printf(__('Featured Video Plus was <strong>upgraded</strong>.', 'featured-video-plus').'&nbsp'.__('%s features a seamless WP3.5 Media Manager integration, an ajaxified metabox, time-links (#t=4m2s) for YouTube and Dailymotion, more customization settings and internationalization.', 'featured-video-plus').'&nbsp;'.__('If you like the plugin, please %srate it%s.', 'featured-video-plus'), '<strong>Version&nbsp;'.FVP_VERSION.'</strong>', '<a href="'.$this->pluginpage.'" target="_blank">', '</a>');
176
  echo "</p></div>\n";
177
  }
178
 
183
  */
184
  function upgrade_11() {
185
  echo "\n" . '<div class="updated" id="fvp_activation_notification"><p>';
186
+ printf(__('Featured Video Plus was <strong>upgraded</strong>.', 'featured-video-plus').'&nbsp;'.__('%s features support for <strong>Local Videos</strong>, a seamless WP3.5 Media Manager integration, an ajaxified metabox, time-links (#t=4m2s) for YouTube and Dailymotion and many more customization settings.', 'featured-video-plus').'&nbsp;'.__('If you like the plugin, please %srate it%s.', 'featured-video-plus'), '<strong>Version&nbsp;'.FVP_VERSION.'</strong>', '<a href="'.$this->pluginpage.'" traget="_blank">','</a>');
187
  echo "</p></div>\n";
188
  }
189
 
readme.txt CHANGED
@@ -2,30 +2,30 @@
2
  Contributors: a.hoereth
3
  Plugin Name: Featured Video Plus
4
  Plugin URI: https://github.com/ahoereth/featured-video-plus
5
- Tags: featured video, featured image, featured, video, post video, post thumbnail, post, thumbnail, html5, flash, youtube, vimeo, dailymotion, mp4, webm, ogg, ogv, embed
6
  Author: Alexander Höreth
7
  Author URI: http://ahoereth.yrnxt.com/
8
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=a%2ehoereth%40gmail%2ecom
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
  Requires at least: 3.1
12
- Tested up to: 3.5
13
- Stable tag: 1.4
14
 
15
  Add Featured Videos to your posts and pages. Works like magic with most themes which use Featured Images. Local Media, YouTube, Vimeo, Dailymotion.
16
 
17
  == Description ==
18
  *A picture is worth a thousand words. How many words is a video worth?*
19
 
20
- This plugin enables you to define Featured Videos in addition to Featured Images. There are three ways to get the videos onto your page:
21
 
22
- 1. If your theme already makes use of Featured Images, these will __automatically__ be replaced by Featured Videos if available. Alternatively you can
23
  2. insert the `[featured-video-plus]`-__Shortcode__ in your posts or
24
- 3. manually use the __PHP functions__ in your theme's source files.
25
 
26
  Beside your __Local Videos__ (`mp4`, `webM` & `ogg/ogv`) you can use videos from __YouTube__, __Vimeo__ and __Dailymotion__. If you miss a certain video platform: [Leave me a note](http://wordpress.org/support/plugin/featured-video-plus). For YouTube and Dailymotion the plugin also features [time-links](http://support.google.com/youtube/bin/answer.py?hl=en&answer=116618).
27
 
28
- The plugin adds customization options to your Media Settings. Beside aesthetic individualizations for each video platform's player you can turn off automatic integration, turn on autoplay, define your Dailymotion Syndication Key and tweak video sizing. By default videos try to dynamically fit their parent containers width.
29
 
30
  = Shortcode =
31
 
@@ -58,6 +58,10 @@ The plugin is ready to go. Now edit your posts and add video links to the "Featu
58
 
59
 
60
  == Changelog ==
 
 
 
 
61
 
62
  = 1.4: 2013-03-15 =
63
  * __WP 3.5 Media Manager__ seamless integrated
@@ -92,6 +96,9 @@ The plugin is ready to go. Now edit your posts and add video links to the "Featu
92
 
93
  == Upgrade Notice ==
94
 
 
 
 
95
  = 1.4 =
96
  WP3.5 Media Manager, time-links...
97
 
2
  Contributors: a.hoereth
3
  Plugin Name: Featured Video Plus
4
  Plugin URI: https://github.com/ahoereth/featured-video-plus
5
+ Tags: featured, post, video, image, thumbnail, html5, flash, youtube, vimeo, dailymotion, mp4, webm, ogg, embed, ajax
6
  Author: Alexander Höreth
7
  Author URI: http://ahoereth.yrnxt.com/
8
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=a%2ehoereth%40gmail%2ecom
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
  Requires at least: 3.1
12
+ Tested up to: 3.5.1
13
+ Stable tag: 1.5
14
 
15
  Add Featured Videos to your posts and pages. Works like magic with most themes which use Featured Images. Local Media, YouTube, Vimeo, Dailymotion.
16
 
17
  == Description ==
18
  *A picture is worth a thousand words. How many words is a video worth?*
19
 
20
+ This plugin enables you to define Featured Videos, which, if set, take the place of Featured Images. There are three ways to get the videos onto your page:
21
 
22
+ 1. If your theme already makes use of [Featured Images](http://codex.wordpress.org/Post_Thumbnails), these will in most themes __automatically__ be replaced by your Featured Videos if available. Alternatively you can
23
  2. insert the `[featured-video-plus]`-__Shortcode__ in your posts or
24
+ 3. manually make use of the __PHP functions__ in your theme's source files.
25
 
26
  Beside your __Local Videos__ (`mp4`, `webM` & `ogg/ogv`) you can use videos from __YouTube__, __Vimeo__ and __Dailymotion__. If you miss a certain video platform: [Leave me a note](http://wordpress.org/support/plugin/featured-video-plus). For YouTube and Dailymotion the plugin also features [time-links](http://support.google.com/youtube/bin/answer.py?hl=en&answer=116618).
27
 
28
+ The plugin adds customization options to your Media Settings. Beside aesthetic individualizations for each video platform's player you can turn off automatic integration, turn on autoplay, define your Dailymotion Syndication Key and tweak video sizing. By default videos try to dynamically fit their parent containers width. Take a look at *Settings -> Media*.
29
 
30
  = Shortcode =
31
 
58
 
59
 
60
  == Changelog ==
61
+ = 1.5: 2013-03-22 =
62
+ * __AJAX__-ified the Featured Video box - just like Featured Images
63
+ * Added options for a) disabling VideoJS JS/CSS, b) enabling VideoJS CDN and c) YouTube `wmode`
64
+ * Plugin no longer breaks WP image editor ([*](http://wordpress.org/support/topic/breaks-image-scaling-shows-nan))
65
 
66
  = 1.4: 2013-03-15 =
67
  * __WP 3.5 Media Manager__ seamless integrated
96
 
97
  == Upgrade Notice ==
98
 
99
+ = 1.5 =
100
+ AJAX!
101
+
102
  = 1.4 =
103
  WP3.5 Media Manager, time-links...
104
 
uninstall.php CHANGED
@@ -14,7 +14,7 @@ foreach( $post_types as $post_type )
14
  if( $post_type != 'attachment' ) {
15
  $allposts = get_posts('numberposts=-1&post_type=' . $post_type . '&post_status=any');
16
  foreach( $allposts as $post ) {
17
- $meta = unserialize(get_post_meta( $post->ID, '_fvp_video', true ));
18
  wp_delete_attachment( $meta['img'] );
19
  delete_post_meta($meta['img'], '_fvp_image');
20
  delete_post_meta($post->ID, '_fvp_video');
14
  if( $post_type != 'attachment' ) {
15
  $allposts = get_posts('numberposts=-1&post_type=' . $post_type . '&post_status=any');
16
  foreach( $allposts as $post ) {
17
+ $meta = get_post_meta( $post->ID, '_fvp_video', true );
18
  wp_delete_attachment( $meta['img'] );
19
  delete_post_meta($meta['img'], '_fvp_image');
20
  delete_post_meta($post->ID, '_fvp_video');