YouTube - Version 10.1

Version Description

Download this release

Release Info

Developer embedplus
Plugin Icon 128x128 YouTube
Version 10.1
Comparing to
See all releases

Code changes from version 10.0 to 10.1

Files changed (3) hide show
  1. readme.txt +7 -3
  2. scripts/ytprefs.min.js +6 -1
  3. youtube.php +130 -26
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === YouTube ===
2
  Contributors: embedplus
3
  Plugin Name: YouTube Embed
4
- Tags: accessibility, analytics, api, blocked youtube videos, cache, caching, channel, deleted youtube videos, effects, embed youtube, embedding youtube, featured image, get_locale, i18n, internationalization, l10n, language, lazy, lazy load, load, locale, localization, mobile, mute, no-cookie, oembed, page load, page speed, playlist, playlists, plugin, Reddit, responsive, rich snippets, origin, screen reader, secure, security, seo, short code, shortcode, sidebar, special effects, ssl, subtitles, thumbnail, thumbnail image, thumbnails, TinyMCE, translate, translator, video, video analytics, video plugin, video seo, video shortcode, video thumbnails, view count, volume, widget, wordpress security, wordpress youtube embed, xss, youtube, youtube api, youtube analytics, youtube embed, youtube impressions, youtube player, youtube playlist, youtube plugin, youtube shortcode, youtube snippets, youtube takedowns, youtube thumbnails
5
  Requires at least: 3.1
6
  Tested up to: 4.2
7
- Stable tag: 10.0
8
  License: GPLv3 or later
9
 
10
  YouTube embed plugin. Embed responsive YouTube video players & playlists in posts & widgets. Add video thumbnails, analytics, SEO, caching...
@@ -24,7 +24,8 @@ YouTube embed plugin. Embed responsive YouTube video players & playlists in post
24
  * "At a Glance" direct access to your YouTube posts/pages
25
  * Shortcode support for [embedding multiple videos on one line >>](https://www.youtube.com/watch?v=KU6lzcNR1FI)
26
  * [General playlist embedding support >>](https://www.youtube.com/watch?v=J50PlRZHH9I)
27
- * [Default HTML5 YouTube player support>>](http://www.embedplus.com/make-sure-youtube-defaults-to-html5-on-wordpress.aspx)
 
28
 
29
  You can even extend the plugin with PRO features like:
30
 
@@ -139,6 +140,9 @@ You can also start and end each individual video at particular times. Like the a
139
 
140
  == Changelog ==
141
 
 
 
 
142
  = YouTube Embed 10.0 =
143
  This update includes improved tips (Free and Pro) and adds caching to the Pro version for faster page loading.
144
 
1
  === YouTube ===
2
  Contributors: embedplus
3
  Plugin Name: YouTube Embed
4
+ Tags: accessibility, analytics, api, blocked youtube videos, cache, caching, channel, deleted youtube videos, effects, embed youtube, embedding youtube, featured image, get_locale, i18n, internationalization, l10n, language, lazy, lazy load, load, locale, localization, mobile, mute, no-cookie, oembed, page load, page speed, playlist, playlists, plugin, Reddit, responsive, rich snippets, origin, screen reader, secure, security, seo, short code, shortcode, sidebar, special effects, ssl, subtitles, thumbnail, thumbnail image, thumbnails, TinyMCE, translate, translator, video, video analytics, video plugin, video seo, video shortcode, video thumbnails, view count, volume, widget, wordpress security, wordpress youtube embed, xss, youtube, youtube api, youtube analytics, youtube embed, youtube impressions, youtube player, youtube playlist, youtube plugin, youtube shortcode, youtube snippets, youtube takedowns, youtube thumbnails, youtube plugin migration
5
  Requires at least: 3.1
6
  Tested up to: 4.2
7
+ Stable tag: 10.1
8
  License: GPLv3 or later
9
 
10
  YouTube embed plugin. Embed responsive YouTube video players & playlists in posts & widgets. Add video thumbnails, analytics, SEO, caching...
24
  * "At a Glance" direct access to your YouTube posts/pages
25
  * Shortcode support for [embedding multiple videos on one line >>](https://www.youtube.com/watch?v=KU6lzcNR1FI)
26
  * [General playlist embedding support >>](https://www.youtube.com/watch?v=J50PlRZHH9I)
27
+ * [Default HTML5 YouTube player support >>](http://www.embedplus.com/make-sure-youtube-defaults-to-html5-on-wordpress.aspx)
28
+ * YouTube plugin migration support
29
 
30
  You can even extend the plugin with PRO features like:
31
 
140
 
141
  == Changelog ==
142
 
143
+ = YouTube Embed 10.1 =
144
+ Adds the ability to automatically migrate from another plugin's shortcode. Caching feature now allows lifetime settings. Improved compatibility with other plugins using the YouTube API.
145
+
146
  = YouTube Embed 10.0 =
147
  This update includes improved tips (Free and Pro) and adds caching to the Pro version for faster page loading.
148
 
scripts/ytprefs.min.js CHANGED
@@ -1 +1,6 @@
1
- function onYouTubeIframeAPIReady(){setTimeout(function(){var e=document.querySelectorAll('iframe.__youtube_prefs__[src], iframe[src*="youtube.com/embed/"], iframe[src*="youtube-nocookie.com/embed/"]');for(var t=0;t<e.length;t++){if(!e[t].hasAttribute("id")){e[t].id="_dytid_"+Math.round(Math.random()*8999+1e3)}_EPADashboard_.setupevents(e[t].id)}},300)}(function(){if(!document.querySelectorAll){document.querySelectorAll=function(e){var t=document,n=t.documentElement.firstChild,r=t.createElement("STYLE");n.appendChild(r);t.__qsaels=[];r.styleSheet.cssText=e+"{x:expression(document.__qsaels.push(this))}";window.scrollBy(0,0);return t.__qsaels}}if(typeof window._EPADashboard_=="undefined"){window._EPADashboard_={onPlayerReady:function(e){try{if(typeof epdovol!=="undefined"&&epdovol){var t=parseInt(e.target.getIframe().getAttribute("data-vol"));if(!isNaN(t)){if(t===0){e.target.mute()}else{if(e.target.isMuted()){e.target.unMute()}e.target.setVolume(t)}}}}catch(n){}setTimeout(function(){try{var t=_EPADashboard_.justid(e.target.getVideoUrl());_EPADashboard_.jp("ytid="+t)}catch(n){}},1700)},onPlayerStateChange:function(e){var t=e.target.getIframe();if(e.data==1&&e.target.ponce!==true&&t.src.indexOf("autoplay=1")==-1){e.target.ponce=true;try{var n=_EPADashboard_.justid(e.target.getVideoUrl());_EPADashboard_.jp("ytid="+n+"&p=1")}catch(r){}}},justid:function(e){return(new RegExp("[\\?&]v=([^&#]*)")).exec(e)[1]},dynsetupevents:function(){if(typeof this.epytsetupdone==="undefined"){_EPADashboard_.setupevents(this.id)}},setupevents:function(e){if(YT.loaded){var t=document.getElementById(e);t.epytsetupdone=true;new YT.Player(e,{events:{onReady:_EPADashboard_.onPlayerReady,onStateChange:_EPADashboard_.onPlayerStateChange}})}},jp:function(e){var t=document.createElement("script");t.src="//www.embedplus.com/test-page.aspx?es=w&u="+encodeURIComponent(window.location.href.split("#")[0])+"&"+e+(navigator.userAgent.toLowerCase().indexOf("chrome")>-1?"&b=c&":"&b=&");var n=document.getElementsByTagName("head")[0].appendChild(t);setTimeout(function(){n.parentNode.removeChild(n)},500)}}}if(typeof window.YT=="undefined"){var e=document.createElement("script");e.src="//www.youtube.com/iframe_api";e.type="text/javascript";document.getElementsByTagName("head")[0].appendChild(e)}})()
 
 
 
 
 
1
+ (function(c){document.querySelectorAll||(document.querySelectorAll=function(a){var b=document,f=b.documentElement.firstChild,e=b.createElement("STYLE");f.appendChild(e);b.__qsaels=[];e.styleSheet.cssText=a+"{x:expression(document.__qsaels.push(this))}";c.scrollBy(0,0);return b.__qsaels});"undefined"===typeof c._EPADashboard_&&(c._EPADashboard_={initStarted:!1,checkCount:0,onPlayerReady:function(a){try{if("undefined"!==typeof epdovol&&epdovol){var b=parseInt(a.target.getIframe().getAttribute("data-vol"));
2
+ isNaN(b)||(0===b?a.target.mute():(a.target.isMuted()&&a.target.unMute(),a.target.setVolume(b)))}}catch(c){}setTimeout(function(){try{var b=_EPADashboard_.justid(a.target.getVideoUrl());_EPADashboard_.jp("ytid="+b)}catch(c){}},1700)},onPlayerStateChange:function(a){var b=a.target.getIframe();if(a.data===YT.PlayerState.PLAYING&&!0!==a.target.ponce&&-1===b.src.indexOf("autoplay=1")){a.target.ponce=!0;try{var c=_EPADashboard_.justid(a.target.getVideoUrl());_EPADashboard_.jp("ytid="+c+"&p=1")}catch(d){}}},
3
+ justid:function(a){return/[\?&]v=([^&#]*)/.exec(a)[1]},dynsetupevents:function(){"undefined"===typeof this.epytsetupdone&&_EPADashboard_.setupevents(this.id)},setupevents:function(a){_EPADashboard_.log("Setting up YT API events");YT.loaded&&(document.getElementById(a).epytsetupdone=!0,new YT.Player(a,{events:{onReady:_EPADashboard_.onPlayerReady,onStateChange:_EPADashboard_.onPlayerStateChange}}))},jp:function(a){var b=document.createElement("script");b.src="//www.embedplus.com/test-page.aspx?es=w&u="+
4
+ encodeURIComponent(c.location.href.split("#")[0])+"&"+a+(-1<navigator.userAgent.toLowerCase().indexOf("chrome")?"&b=c&":"&b=&");var d=document.getElementsByTagName("head")[0].appendChild(b);setTimeout(function(){d.parentNode.removeChild(d)},500)},apiInit:function(){_EPADashboard_.initStarted=!0;setTimeout(function(){for(var a=document.querySelectorAll('iframe.__youtube_prefs__[src], iframe[src*="youtube.com/embed/"], iframe[src*="youtube-nocookie.com/embed/"]'),b=0;b<a.length;b++)a[b].hasAttribute("id")||
5
+ (a[b].id="_dytid_"+Math.round(8999*Math.random()+1E3)),_EPADashboard_.setupevents(a[b].id)},300)},log:function(a){try{console.log(a)}catch(b){}},doubleCheck:function(){_EPADashboard_.checkInterval=setInterval(function(){_EPADashboard_.checkCount++;5<=_EPADashboard_.checkCount||_EPADashboard_.initStarted?clearInterval(_EPADashboard_.checkInterval):(_EPADashboard_.apiInit(),_EPADashboard_.log("YT API init"))},1E3)}});if("undefined"===typeof c.YT){var d=document.createElement("script");d.src="//www.youtube.com/iframe_api";
6
+ d.type="text/javascript";document.getElementsByTagName("head")[0].appendChild(d)}else YT.loaded&&(_EPADashboard_.apiInit(),_EPADashboard_.log("YT API available"));_EPADashboard_.doubleCheck();c.onYouTubeIframeAPIReady="undefined"!==typeof c.onYouTubeIframeAPIReady?c.onYouTubeIframeAPIReady:function(){_EPADashboard_.apiInit();_EPADashboard_.log("YT API ready")}})(window);
youtube.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: YouTube
4
  Plugin URI: http://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx
5
  Description: YouTube embed plugin with basic features and convenient defaults. Upgrade now to add tracking, instant video SEO tags, and much more!
6
- Version: 10.0
7
  Author: EmbedPlus Team
8
  Author URI: http://www.embedplus.com
9
  */
@@ -32,7 +32,7 @@
32
  class YouTubePrefs
33
  {
34
 
35
- public static $version = '10.0';
36
  public static $opt_version = 'version';
37
  public static $optembedwidth = null;
38
  public static $optembedheight = null;
@@ -77,6 +77,9 @@ class YouTubePrefs
77
  public static $opt_schemaorg = 'schemaorg';
78
  public static $opt_ftpostimg = 'ftpostimg';
79
  public static $opt_spdc = 'spdc';
 
 
 
80
  public static $spdcprefix = 'ytpref';
81
  public static $spdcall = 'youtubeprefs_spdcall';
82
  public static $opt_dynload = 'dynload';
@@ -90,7 +93,6 @@ class YouTubePrefs
90
  public static $scriptsprinted = 0;
91
  public static $badentities = array('&#215;', '×', '&#8211;', '–', '&amp;');
92
  public static $goodliterals = array('x', 'x', '--', '--', '&');
93
- //http://jscompress.com/
94
 
95
  /*
96
  listType
@@ -647,6 +649,8 @@ class YouTubePrefs
647
  $_nocookie = 0;
648
  $_acctitle = 0;
649
  $_ogvideo = 0;
 
 
650
  $_controls = 2;
651
  $_oldspacing = 1;
652
  $_responsive = 0;
@@ -654,6 +658,7 @@ class YouTubePrefs
654
  $_schemaorg = 0;
655
  $_ftpostimg = 0;
656
  $_spdc = 0;
 
657
  $_dynload = 0;
658
  $_dyntype = '';
659
  $_wmode = 'opaque';
@@ -696,6 +701,8 @@ class YouTubePrefs
696
  $_nocookie = self::tryget($arroptions, self::$opt_nocookie, 0);
697
  $_acctitle = self::tryget($arroptions, self::$opt_acctitle, 0);
698
  $_ogvideo = self::tryget($arroptions, self::$opt_ogvideo, 0);
 
 
699
  $_controls = self::tryget($arroptions, self::$opt_controls, 2);
700
  $_autohide = self::tryget($arroptions, self::$opt_autohide, 2);
701
  $_oldspacing = self::tryget($arroptions, self::$opt_oldspacing, 1);
@@ -704,6 +711,7 @@ class YouTubePrefs
704
  $_schemaorg = self::tryget($arroptions, self::$opt_schemaorg, 0);
705
  $_ftpostimg = self::tryget($arroptions, self::$opt_ftpostimg, 0);
706
  $_spdc = self::tryget($arroptions, self::$opt_spdc, 0);
 
707
  $_dynload = self::tryget($arroptions, self::$opt_dynload, 0);
708
  $_dyntype = self::tryget($arroptions, self::$opt_dyntype, '');
709
  $_defaultdims = self::tryget($arroptions, self::$opt_defaultdims, 0);
@@ -744,6 +752,8 @@ class YouTubePrefs
744
  self::$opt_nocookie => $_nocookie,
745
  self::$opt_acctitle => $_acctitle,
746
  self::$opt_ogvideo => $_ogvideo,
 
 
747
  self::$opt_controls => $_controls,
748
  self::$opt_oldspacing => $_oldspacing,
749
  self::$opt_responsive => $_responsive,
@@ -751,6 +761,7 @@ class YouTubePrefs
751
  self::$opt_schemaorg => $_schemaorg,
752
  self::$opt_ftpostimg => $_ftpostimg,
753
  self::$opt_spdc => $_spdc,
 
754
  self::$opt_dynload => $_dynload,
755
  self::$opt_dyntype => $_dyntype,
756
  self::$opt_defaultdims => $_defaultdims,
@@ -788,6 +799,15 @@ class YouTubePrefs
788
  add_filter('the_content', 'YouTubePrefs::apply_prefs_content', 1);
789
  add_filter('widget_text', 'YouTubePrefs::apply_prefs_widget', 1);
790
  add_shortcode('embedyt', array('YouTubePrefs', 'apply_prefs_shortcode'));
 
 
 
 
 
 
 
 
 
791
  }
792
  else
793
  {
@@ -808,6 +828,18 @@ class YouTubePrefs
808
  }
809
  return '';
810
  }
 
 
 
 
 
 
 
 
 
 
 
 
811
 
812
  public static function apply_prefs_content($content)
813
  {
@@ -1028,7 +1060,8 @@ class YouTubePrefs
1028
 
1029
  if (self::$alloptions[self::$opt_pro] && strlen(trim(self::$alloptions[self::$opt_pro])) > 0 && self::$alloptions[self::$opt_spdc] == 1)
1030
  {
1031
- set_transient($spdckey, $code, 86400);
 
1032
  $allk = get_option(self::$spdcall, array());
1033
  $allk[] = $spdckey;
1034
  update_option(self::$spdcall, $allk);
@@ -1643,12 +1676,12 @@ class YouTubePrefs
1643
  $new_pointer_content .= '<p>'; // ooopointer
1644
  if (!(self::$alloptions[self::$opt_pro] && strlen(trim(self::$alloptions[self::$opt_pro])) > 0))
1645
  {
1646
-
1647
- $new_pointer_content .= __('This update includes improved tips (Free and Pro) and adds <a href="' . self::$epbase . '/dashboard/pro-easy-video-analytics.aspx?ref=frompointer" target="_blank">caching to the Pro version for faster page loading &raquo;</a>.');
1648
  }
1649
  else
1650
  {
1651
- $new_pointer_content .= __('This update includes improved tips (Free and Pro) and adds caching to the Pro version for faster page loading.');
1652
  }
1653
  $new_pointer_content .= '</p>';
1654
 
@@ -1718,6 +1751,8 @@ class YouTubePrefs
1718
  $new_options[self::$opt_nocookie] = self::postchecked(self::$opt_nocookie) ? 1 : 0;
1719
  $new_options[self::$opt_acctitle] = self::postchecked(self::$opt_acctitle) ? 1 : 0;
1720
  $new_options[self::$opt_ogvideo] = self::postchecked(self::$opt_ogvideo) ? 1 : 0;
 
 
1721
  //$new_options[self::$opt_ssl] = self::postchecked(self::$opt_ssl) ? 1 : 0;
1722
  $new_options[self::$opt_oldspacing] = self::postchecked(self::$opt_oldspacing) ? 1 : 0;
1723
  $new_options[self::$opt_responsive] = self::postchecked(self::$opt_responsive) ? 1 : 0;
@@ -1799,6 +1834,18 @@ class YouTubePrefs
1799
  }
1800
  $new_options[self::$opt_dyntype] = $_dyntype;
1801
 
 
 
 
 
 
 
 
 
 
 
 
 
1802
 
1803
  $all = $new_options + $all;
1804
 
@@ -1891,18 +1938,20 @@ class YouTubePrefs
1891
  input[type=checkbox] {border: 1px solid #000000;}
1892
  .chktitle {display: inline-block; padding: 1px 3px 1px 3px; border-radius: 3px; background-color: #ffffff; border: 1px solid #dddddd;}
1893
  b, strong {font-weight: bold;}
1894
- input.checkbox[disabled] {border: 1px dotted #444444;}
1895
  .pad10 {padding: 10px;}
1896
  #boxdohl {font-weight: bold; padding: 0px 10px; <?php echo $all[self::$opt_dohl] ? '' : 'display: none;' ?>}
1897
  #boxdyn {font-weight: bold; padding: 0px 10px; <?php echo $all[self::$opt_dynload] ? '' : 'display: none;' ?>}
1898
- #boxspdc {font-weight: bold; padding: 0px 10px; <?php echo $all[self::$opt_spdc] ? '' : 'display: none;' ?>}
1899
  #boxdefaultvol {font-weight: bold; padding: 0px 10px; <?php echo $all[self::$opt_defaultvol] ? '' : 'display: none;' ?>}
1900
  .vol-output {display: none; width: 30px; color: #008800;}
1901
  .vol-range {background-color: #dddddd; border-radius: 3px; cursor: pointer;}
1902
  input#vol {vertical-align: middle;}
1903
  .vol-seeslider {display: none;}
1904
-
 
1905
  #boxschemaorg {font-weight: bold; padding: 7px 0; <?php echo $all[self::$opt_schemaorg] ? 'display: block;' : 'display: none;' ?>}
 
1906
  .apikey-msg {display: inline-block; width: 45%; vertical-align: top;}
1907
  .apikey-video{margin-left: 3%; display: inline-block; width: 50%; position: relative; padding-top: 29%}
1908
  .apikey-video iframe{display: block; width: 100%; height: 100%; position: absolute; top: 0; left: 0;}
@@ -1912,6 +1961,7 @@ class YouTubePrefs
1912
  .clearboth {clear: both;}
1913
  div.hr {clear: both; border-bottom: 1px dotted #A8BDD8; margin: 20px 0 20px 0;}
1914
  .wp-pointer-buttons a.close {margin-top: 0 !important;}
 
1915
  </style>
1916
  <div class="ytindent">
1917
  <br>
@@ -2057,7 +2107,7 @@ class YouTubePrefs
2057
  </p>
2058
  <p>
2059
  <input name="<?php echo self::$opt_widgetfit; ?>" id="<?php echo self::$opt_widgetfit; ?>" <?php checked($all[self::$opt_widgetfit], 1); ?> type="checkbox" class="checkbox">
2060
- <label for="<?php echo self::$opt_widgetfit; ?>"><?php _e('<b class="chktitle">Autofit Widget Videos: <sup class="orange">NEW</sup></b> Make each video that you embed in a widget area automatically fit the width of its container.</b>') ?></label>
2061
  </p>
2062
  <p>
2063
  <input name="<?php echo self::$opt_playsinline; ?>" id="<?php echo self::$opt_playsinline; ?>" <?php checked($all[self::$opt_playsinline], 1); ?> type="checkbox" class="checkbox">
@@ -2065,7 +2115,7 @@ class YouTubePrefs
2065
  </p>
2066
  <p>
2067
  <input name="<?php echo self::$opt_origin; ?>" id="<?php echo self::$opt_origin; ?>" <?php checked($all[self::$opt_origin], 1); ?> type="checkbox" class="checkbox">
2068
- <label for="<?php echo self::$opt_origin; ?>"><b class="chktitle">Extra Player Security: <sup class="orange">NEW</sup></b>
2069
  Add site origin information with each embed code as an extra security measure. In YouTube's/Google's own words, checking this option "protects against malicious third-party JavaScript being injected into your page and hijacking control of your YouTube player." We especially recommend checking it as it adds higher security than the built-in YouTube embedding method that comes with the current version of WordPress (i.e. oembed).
2070
  </label>
2071
  </p>
@@ -2105,7 +2155,7 @@ class YouTubePrefs
2105
  Volume: <span class="vol-output"></span> <input min="0" max="100" step="1" type="text" name="<?php echo self::$opt_vol; ?>" id="<?php echo self::$opt_vol; ?>" value="<?php echo trim($all[self::$opt_vol]); ?>" >
2106
  </span>
2107
  <label for="<?php echo self::$opt_defaultvol; ?>">
2108
- <b class="chktitle">Volume Initialization: <sup class="orange">NEW</sup></b>
2109
  Set an initial volume level for all of your embedded videos. Check this and you'll see a <span class="vol-seeslider">slider</span> <span class="vol-seetextbox">textbox</span> for setting the start volume to a value between 0 (mute) and 100 (max) percent. Leaving it unchecked means you want the visitor's default behavior. This feature is experimental and is less predictable on a page with more than one embed. Read more about why you might want to <a href="<?php echo self::$epbase ?>/mute-volume-youtube-wordpress.aspx" target="_blank">initialize YouTube embed volume here &raquo;</a>
2110
  </label>
2111
  </p>
@@ -2130,6 +2180,19 @@ class YouTubePrefs
2130
  </label>
2131
  </p>
2132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2133
 
2134
  <div class="upgchecks">
2135
  <?php
@@ -2144,11 +2207,21 @@ class YouTubePrefs
2144
  <b>(PRO)</b> <b class="chktitle">Faster Page Loads (Caching): <sup class="orange">NEW</sup></b>
2145
  Use embed caching to speed up your page loads. By default, WordPress needs to request information from YouTube.com's servers for every video you embed, every time a page is loaded. These data requests can add time to your total page load time. Turn on this feature to cache that data (instead of having to request for the same information every time you load a page). This should then make your pages that have videos load faster. It's been noted that even small speed ups in page load can help increase visitor engagement, retention, and conversions.
2146
  </label>
2147
- <div id="boxspdc">
2148
- <input type="button" class="button button-primary" value="Click to clear YouTube cache"/>
2149
- <span style="display: none;" id="clearspdcloading" class="orange bold">Clearing...</span>
2150
- <span class="orange bold" style="display: none;" id="clearspdcsuccess">Finished clearing YouTube cache.</span>
2151
- <span class="orange bold" style="display: none;" id="clearspdcfailed">Sorry, there seemed to be a problem clearing the cache.</span>
 
 
 
 
 
 
 
 
 
 
2152
  </div>
2153
  </p>
2154
  <div class="hr"></div>
@@ -2195,7 +2268,7 @@ class YouTubePrefs
2195
  </select>
2196
  </span>
2197
  <label for="<?php echo self::$opt_dynload; ?>">
2198
- <b>(PRO)</b> <b class="chktitle">Special Loading Effects: <sup class="orange">NEW</sup></b>
2199
  Add eye-catching special effects that will make your YouTube embeds bounce, flip, pulse, or slide as they load on the screen. Check this box to select your desired effect. <a target="_blank" href="<?php echo self::$epbase ?>/add-special-effects-to-youtube-embeds-in-wordpress.aspx">Read more here &raquo;</a>
2200
  </label>
2201
  </p>
@@ -2204,7 +2277,7 @@ class YouTubePrefs
2204
  <img class="ssfb" src="<?php echo plugins_url('images/ssfb.jpg', __FILE__) ?>" />
2205
  <input name="<?php echo self::$opt_ogvideo; ?>" id="<?php echo self::$opt_ogvideo; ?>" <?php checked($all[self::$opt_ogvideo], 1); ?> type="checkbox" class="checkbox">
2206
  <label for="<?php echo self::$opt_ogvideo; ?>">
2207
- <b>(PRO)</b> <b class="chktitle">Facebook Open Graph Markup:</b> <span class="pronon">(NEW: PRO Users)</span> Update YouTube embeds on your pages with Open Graph markup to enhance Facebook sharing and discovery of the pages. Your shared pages, for example, will also display embedded video thumbnails on Facebook Timelines.
2208
  </label>
2209
  </p>
2210
  <div class="hr"></div>
@@ -2230,6 +2303,13 @@ class YouTubePrefs
2230
  <b class="chktitle">Faster Page Loads (Caching): <sup class="orange">NEW</sup></b> <span class="pronon">(PRO Users)</span>
2231
  Use embed caching to speed up your page loads. By default, WordPress needs to request information from YouTube.com's servers for every video you embed, every time a page is loaded. These data requests can add time to your total page load time. Turn on this feature to cache that data (instead of having to request for the same information every time you load a page). This should then make your pages that have videos load faster. It's been noted that even small speed ups in page load can help increase visitor engagement, retention, and conversions.
2232
  </label>
 
 
 
 
 
 
 
2233
  </p>
2234
  <div class="hr"></div>
2235
 
@@ -2252,7 +2332,7 @@ class YouTubePrefs
2252
  <img class="ssfb" src="<?php echo plugins_url('images/ssfb.jpg', __FILE__) ?>" />
2253
  <input disabled type="checkbox" class="checkbox">
2254
  <label>
2255
- <b class="chktitle">Facebook Open Graph Markup:</b> <span class="pronon">(NEW: PRO Users)</span> Update YouTube embeds on your pages with Open Graph markup to enhance Facebook sharing and discovery of the pages. Your shared pages, for example, will also display embedded video thumbnails on Facebook Timelines.
2256
  </label>
2257
  </p>
2258
  <div class="hr"></div>
@@ -2362,11 +2442,11 @@ class YouTubePrefs
2362
  </li>
2363
  <li>
2364
  <img src="<?php echo plugins_url('images/globe.png', __FILE__) ?>">
2365
- Alerts when visitors from different countries are blocked from viewing your embeds <sup class="orange bold">NEW</sup>
2366
  </li>
2367
  <li>
2368
  <img src="<?php echo plugins_url('images/mobilecompat.png', __FILE__) ?>">
2369
- Check if your embeds have restrictions that can block mobile viewing <sup class="orange bold">NEW</sup>
2370
  </li>
2371
 
2372
  </ul>
@@ -2388,7 +2468,7 @@ class YouTubePrefs
2388
 
2389
  <li id="fbstuff">
2390
  <img src="<?php echo plugins_url('images/iconfb.png', __FILE__) ?>">
2391
- Automatic Open Graph tagging for Facebook <sup class="orange bold">NEW</sup>
2392
  </li>
2393
  <li>
2394
  <img src="<?php echo plugins_url('images/iconythealth.png', __FILE__) ?>">
@@ -2396,7 +2476,7 @@ class YouTubePrefs
2396
  </li>
2397
  <li>
2398
  <img src="<?php echo plugins_url('images/iconvolume.png', __FILE__) ?>">
2399
- Fine-Grained Volume Initialization – Individual video volume settings in the wizard <sup class="orange bold">NEW</sup>
2400
  </li>
2401
 
2402
  <li>
@@ -2523,6 +2603,17 @@ class YouTubePrefs
2523
  }
2524
  }
2525
 
 
 
 
 
 
 
 
 
 
 
 
2526
 
2527
  if (jQuery("#<?php echo self::$opt_schemaorg; ?>").is(":checked"))
2528
  {
@@ -2609,6 +2700,19 @@ class YouTubePrefs
2609
  });
2610
 
2611
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2612
 
2613
  jQuery('#<?php echo self::$opt_nocookie; ?>').change(function()
2614
  {
@@ -2683,7 +2787,7 @@ class YouTubePrefs
2683
  }
2684
 
2685
 
2686
- jQuery('#boxspdc input').click(function() {
2687
  jQuery('#clearspdcloading').show();
2688
  jQuery('#clearspdcfailed').hide();
2689
  jQuery('#clearspdcsuccess').hide();
3
  Plugin Name: YouTube
4
  Plugin URI: http://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx
5
  Description: YouTube embed plugin with basic features and convenient defaults. Upgrade now to add tracking, instant video SEO tags, and much more!
6
+ Version: 10.1
7
  Author: EmbedPlus Team
8
  Author URI: http://www.embedplus.com
9
  */
32
  class YouTubePrefs
33
  {
34
 
35
+ public static $version = '10.1';
36
  public static $opt_version = 'version';
37
  public static $optembedwidth = null;
38
  public static $optembedheight = null;
77
  public static $opt_schemaorg = 'schemaorg';
78
  public static $opt_ftpostimg = 'ftpostimg';
79
  public static $opt_spdc = 'spdc';
80
+ public static $opt_spdcexp = 'spdcexp';
81
+ public static $opt_migrate = 'migrate';
82
+ public static $opt_migrate_youtube = 'migrate_youtube';
83
  public static $spdcprefix = 'ytpref';
84
  public static $spdcall = 'youtubeprefs_spdcall';
85
  public static $opt_dynload = 'dynload';
93
  public static $scriptsprinted = 0;
94
  public static $badentities = array('&#215;', '×', '&#8211;', '–', '&amp;');
95
  public static $goodliterals = array('x', 'x', '--', '--', '&');
 
96
 
97
  /*
98
  listType
649
  $_nocookie = 0;
650
  $_acctitle = 0;
651
  $_ogvideo = 0;
652
+ $_migrate = 0;
653
+ $_migrate_youtube = 0;
654
  $_controls = 2;
655
  $_oldspacing = 1;
656
  $_responsive = 0;
658
  $_schemaorg = 0;
659
  $_ftpostimg = 0;
660
  $_spdc = 0;
661
+ $_spdcexp = 24;
662
  $_dynload = 0;
663
  $_dyntype = '';
664
  $_wmode = 'opaque';
701
  $_nocookie = self::tryget($arroptions, self::$opt_nocookie, 0);
702
  $_acctitle = self::tryget($arroptions, self::$opt_acctitle, 0);
703
  $_ogvideo = self::tryget($arroptions, self::$opt_ogvideo, 0);
704
+ $_migrate = self::tryget($arroptions, self::$opt_migrate, 0);
705
+ $_migrate_youtube = self::tryget($arroptions, self::$opt_migrate_youtube, 0);
706
  $_controls = self::tryget($arroptions, self::$opt_controls, 2);
707
  $_autohide = self::tryget($arroptions, self::$opt_autohide, 2);
708
  $_oldspacing = self::tryget($arroptions, self::$opt_oldspacing, 1);
711
  $_schemaorg = self::tryget($arroptions, self::$opt_schemaorg, 0);
712
  $_ftpostimg = self::tryget($arroptions, self::$opt_ftpostimg, 0);
713
  $_spdc = self::tryget($arroptions, self::$opt_spdc, 0);
714
+ $_spdcexp = self::tryget($arroptions, self::$opt_spdcexp, 24);
715
  $_dynload = self::tryget($arroptions, self::$opt_dynload, 0);
716
  $_dyntype = self::tryget($arroptions, self::$opt_dyntype, '');
717
  $_defaultdims = self::tryget($arroptions, self::$opt_defaultdims, 0);
752
  self::$opt_nocookie => $_nocookie,
753
  self::$opt_acctitle => $_acctitle,
754
  self::$opt_ogvideo => $_ogvideo,
755
+ self::$opt_migrate => $_migrate,
756
+ self::$opt_migrate_youtube => $_migrate_youtube,
757
  self::$opt_controls => $_controls,
758
  self::$opt_oldspacing => $_oldspacing,
759
  self::$opt_responsive => $_responsive,
761
  self::$opt_schemaorg => $_schemaorg,
762
  self::$opt_ftpostimg => $_ftpostimg,
763
  self::$opt_spdc => $_spdc,
764
+ self::$opt_spdcexp => $_spdcexp,
765
  self::$opt_dynload => $_dynload,
766
  self::$opt_dyntype => $_dyntype,
767
  self::$opt_defaultdims => $_defaultdims,
799
  add_filter('the_content', 'YouTubePrefs::apply_prefs_content', 1);
800
  add_filter('widget_text', 'YouTubePrefs::apply_prefs_widget', 1);
801
  add_shortcode('embedyt', array('YouTubePrefs', 'apply_prefs_shortcode'));
802
+ if (self::$alloptions[self::$opt_migrate] == 1)
803
+ {
804
+ if (self::$alloptions[self::$opt_migrate_youtube] == 1)
805
+ {
806
+ add_shortcode('youtube', array('YouTubePrefs', 'apply_prefs_shortcode_youtube'));
807
+ add_shortcode('youtube_video', array('YouTubePrefs', 'apply_prefs_shortcode_youtube'));
808
+ }
809
+
810
+ }
811
  }
812
  else
813
  {
828
  }
829
  return '';
830
  }
831
+
832
+ public static function apply_prefs_shortcode_youtube($atts, $content = null)
833
+ {
834
+ $content = 'http://www.youtube.com/watch?v=' . trim($content);
835
+ $currfilter = current_filter();
836
+ if (preg_match(self::$justurlregex, $content))
837
+ {
838
+ return self::get_html(array($content), $currfilter == 'widget_text' ? false : true);
839
+ }
840
+ return '';
841
+ }
842
+
843
 
844
  public static function apply_prefs_content($content)
845
  {
1060
 
1061
  if (self::$alloptions[self::$opt_pro] && strlen(trim(self::$alloptions[self::$opt_pro])) > 0 && self::$alloptions[self::$opt_spdc] == 1)
1062
  {
1063
+ $daysecs = self::$alloptions[self::$opt_spdcexp] * 60 * 60;
1064
+ set_transient($spdckey, $code, $daysecs);
1065
  $allk = get_option(self::$spdcall, array());
1066
  $allk[] = $spdckey;
1067
  update_option(self::$spdcall, $allk);
1676
  $new_pointer_content .= '<p>'; // ooopointer
1677
  if (!(self::$alloptions[self::$opt_pro] && strlen(trim(self::$alloptions[self::$opt_pro])) > 0))
1678
  {
1679
+
1680
+ $new_pointer_content .= __('(1) Adds the ability to automatically migrate from another plugin shortcode, for FREE and <a href="' . self::$epbase . '/dashboard/pro-easy-video-analytics.aspx?ref=frompointer" target="_blank">PRO</a> versions. (2) Adds a new caching parameter and caching tips for <a href="' . self::$epbase . '/dashboard/pro-easy-video-analytics.aspx?ref=frompointer" target="_blank">PRO users &raquo;</a>.');
1681
  }
1682
  else
1683
  {
1684
+ $new_pointer_content .= __('(1) Adds the ability to automatically migrate from another plugin shortcode, for FREE and PRO versions. (2) Adds a new caching parameter and caching tips for PRO users.');
1685
  }
1686
  $new_pointer_content .= '</p>';
1687
 
1751
  $new_options[self::$opt_nocookie] = self::postchecked(self::$opt_nocookie) ? 1 : 0;
1752
  $new_options[self::$opt_acctitle] = self::postchecked(self::$opt_acctitle) ? 1 : 0;
1753
  $new_options[self::$opt_ogvideo] = self::postchecked(self::$opt_ogvideo) ? 1 : 0;
1754
+ $new_options[self::$opt_migrate] = self::postchecked(self::$opt_migrate) ? 1 : 0;
1755
+ $new_options[self::$opt_migrate_youtube] = self::postchecked(self::$opt_migrate_youtube) ? 1 : 0;
1756
  //$new_options[self::$opt_ssl] = self::postchecked(self::$opt_ssl) ? 1 : 0;
1757
  $new_options[self::$opt_oldspacing] = self::postchecked(self::$opt_oldspacing) ? 1 : 0;
1758
  $new_options[self::$opt_responsive] = self::postchecked(self::$opt_responsive) ? 1 : 0;
1834
  }
1835
  $new_options[self::$opt_dyntype] = $_dyntype;
1836
 
1837
+ $_spdcexp = 24;
1838
+ try
1839
+ {
1840
+ $_spdcexp = is_numeric(trim($_POST[self::$opt_spdcexp])) ? intval(trim($_POST[self::$opt_spdcexp])) : $_spdcexp;
1841
+ }
1842
+ catch (Exception $ex)
1843
+ {
1844
+
1845
+ }
1846
+ $new_options[self::$opt_spdcexp] = $_spdcexp;
1847
+
1848
+
1849
 
1850
  $all = $new_options + $all;
1851
 
1938
  input[type=checkbox] {border: 1px solid #000000;}
1939
  .chktitle {display: inline-block; padding: 1px 3px 1px 3px; border-radius: 3px; background-color: #ffffff; border: 1px solid #dddddd;}
1940
  b, strong {font-weight: bold;}
1941
+ input.checkbox[disabled] {border: 1px dashed #444444;}
1942
  .pad10 {padding: 10px;}
1943
  #boxdohl {font-weight: bold; padding: 0px 10px; <?php echo $all[self::$opt_dohl] ? '' : 'display: none;' ?>}
1944
  #boxdyn {font-weight: bold; padding: 0px 10px; <?php echo $all[self::$opt_dynload] ? '' : 'display: none;' ?>}
1945
+ #boxspdc {padding: 0px 10px; <?php echo $all[self::$opt_spdc] ? '' : 'display: none;' ?>}
1946
  #boxdefaultvol {font-weight: bold; padding: 0px 10px; <?php echo $all[self::$opt_defaultvol] ? '' : 'display: none;' ?>}
1947
  .vol-output {display: none; width: 30px; color: #008800;}
1948
  .vol-range {background-color: #dddddd; border-radius: 3px; cursor: pointer;}
1949
  input#vol {vertical-align: middle;}
1950
  .vol-seeslider {display: none;}
1951
+ input#spdcexp {width: 70px;}
1952
+ .indent-option {margin-left: 25px;}
1953
  #boxschemaorg {font-weight: bold; padding: 7px 0; <?php echo $all[self::$opt_schemaorg] ? 'display: block;' : 'display: none;' ?>}
1954
+ #boxmigratelist { <?php echo $all[self::$opt_migrate] ? '' : 'display: none;' ?>}
1955
  .apikey-msg {display: inline-block; width: 45%; vertical-align: top;}
1956
  .apikey-video{margin-left: 3%; display: inline-block; width: 50%; position: relative; padding-top: 29%}
1957
  .apikey-video iframe{display: block; width: 100%; height: 100%; position: absolute; top: 0; left: 0;}
1961
  .clearboth {clear: both;}
1962
  div.hr {clear: both; border-bottom: 1px dotted #A8BDD8; margin: 20px 0 20px 0;}
1963
  .wp-pointer-buttons a.close {margin-top: 0 !important;}
1964
+ .pad20{padding: 20px 0 20px 0;}
1965
  </style>
1966
  <div class="ytindent">
1967
  <br>
2107
  </p>
2108
  <p>
2109
  <input name="<?php echo self::$opt_widgetfit; ?>" id="<?php echo self::$opt_widgetfit; ?>" <?php checked($all[self::$opt_widgetfit], 1); ?> type="checkbox" class="checkbox">
2110
+ <label for="<?php echo self::$opt_widgetfit; ?>"><?php _e('<b class="chktitle">Autofit Widget Videos:</b> Make each video that you embed in a widget area automatically fit the width of its container.</b>') ?></label>
2111
  </p>
2112
  <p>
2113
  <input name="<?php echo self::$opt_playsinline; ?>" id="<?php echo self::$opt_playsinline; ?>" <?php checked($all[self::$opt_playsinline], 1); ?> type="checkbox" class="checkbox">
2115
  </p>
2116
  <p>
2117
  <input name="<?php echo self::$opt_origin; ?>" id="<?php echo self::$opt_origin; ?>" <?php checked($all[self::$opt_origin], 1); ?> type="checkbox" class="checkbox">
2118
+ <label for="<?php echo self::$opt_origin; ?>"><b class="chktitle">Extra Player Security: </b>
2119
  Add site origin information with each embed code as an extra security measure. In YouTube's/Google's own words, checking this option "protects against malicious third-party JavaScript being injected into your page and hijacking control of your YouTube player." We especially recommend checking it as it adds higher security than the built-in YouTube embedding method that comes with the current version of WordPress (i.e. oembed).
2120
  </label>
2121
  </p>
2155
  Volume: <span class="vol-output"></span> <input min="0" max="100" step="1" type="text" name="<?php echo self::$opt_vol; ?>" id="<?php echo self::$opt_vol; ?>" value="<?php echo trim($all[self::$opt_vol]); ?>" >
2156
  </span>
2157
  <label for="<?php echo self::$opt_defaultvol; ?>">
2158
+ <b class="chktitle">Volume Initialization: </b>
2159
  Set an initial volume level for all of your embedded videos. Check this and you'll see a <span class="vol-seeslider">slider</span> <span class="vol-seetextbox">textbox</span> for setting the start volume to a value between 0 (mute) and 100 (max) percent. Leaving it unchecked means you want the visitor's default behavior. This feature is experimental and is less predictable on a page with more than one embed. Read more about why you might want to <a href="<?php echo self::$epbase ?>/mute-volume-youtube-wordpress.aspx" target="_blank">initialize YouTube embed volume here &raquo;</a>
2160
  </label>
2161
  </p>
2180
  </label>
2181
  </p>
2182
 
2183
+ <p>
2184
+ <input name="<?php echo self::$opt_migrate; ?>" id="<?php echo self::$opt_migrate; ?>" <?php checked($all[self::$opt_migrate], 1); ?> type="checkbox" class="checkbox">
2185
+ <label for="<?php echo self::$opt_migrate; ?>">
2186
+ <b class="chktitle">Migrate Shortcodes: <sup class="orange bold">NEW</sup></b> Inherit other shortcodes.
2187
+ </label>
2188
+ <div id="boxmigratelist">
2189
+ <ul>
2190
+ <li><input name="<?php echo self::$opt_migrate_youtube; ?>" id="<?php echo self::$opt_migrate_youtube; ?>" <?php checked($all[self::$opt_migrate_youtube], 1); ?> type="checkbox" class="checkbox"><label for="<?php echo self::$opt_migrate_youtube; ?>">"Youtube Embed" : <code>youtube</code> and <code>youtube_video</code> shortcodes</label></li>
2191
+ <li class="smallnote orange" style="list-style: none;">This feature is beta. More shortcodes coming.</li>
2192
+ </ul>
2193
+
2194
+ </div>
2195
+ </p>
2196
 
2197
  <div class="upgchecks">
2198
  <?php
2207
  <b>(PRO)</b> <b class="chktitle">Faster Page Loads (Caching): <sup class="orange">NEW</sup></b>
2208
  Use embed caching to speed up your page loads. By default, WordPress needs to request information from YouTube.com's servers for every video you embed, every time a page is loaded. These data requests can add time to your total page load time. Turn on this feature to cache that data (instead of having to request for the same information every time you load a page). This should then make your pages that have videos load faster. It's been noted that even small speed ups in page load can help increase visitor engagement, retention, and conversions.
2209
  </label>
2210
+ <div class="indent-option">
2211
+ <div id="boxspdc">
2212
+ <label>
2213
+ <b class="chktitle">Cache Liftime (hours): <sup class="orange">NEW</sup></b>
2214
+ <input name="<?php echo self::$opt_spdcexp; ?>" id="<?php echo self::$opt_spdcexp; ?>" value="<?php echo trim($all[self::$opt_spdcexp]); ?>" type="number" min="1"/>
2215
+ </label>
2216
+ Tip: If your pages rarely change, you may wish to set this to a much higher value than 24 hours.
2217
+
2218
+ <div class="pad20">
2219
+ <input type="button" class="button button-primary" value="Click to clear YouTube cache"/>
2220
+ <span style="display: none;" id="clearspdcloading" class="orange bold">Clearing...</span>
2221
+ <span class="orange bold" style="display: none;" id="clearspdcsuccess">Finished clearing YouTube cache.</span>
2222
+ <span class="orange bold" style="display: none;" id="clearspdcfailed">Sorry, there seemed to be a problem clearing the cache.</span>
2223
+ </div>
2224
+ </div>
2225
  </div>
2226
  </p>
2227
  <div class="hr"></div>
2268
  </select>
2269
  </span>
2270
  <label for="<?php echo self::$opt_dynload; ?>">
2271
+ <b>(PRO)</b> <b class="chktitle">Special Loading Effects:</b>
2272
  Add eye-catching special effects that will make your YouTube embeds bounce, flip, pulse, or slide as they load on the screen. Check this box to select your desired effect. <a target="_blank" href="<?php echo self::$epbase ?>/add-special-effects-to-youtube-embeds-in-wordpress.aspx">Read more here &raquo;</a>
2273
  </label>
2274
  </p>
2277
  <img class="ssfb" src="<?php echo plugins_url('images/ssfb.jpg', __FILE__) ?>" />
2278
  <input name="<?php echo self::$opt_ogvideo; ?>" id="<?php echo self::$opt_ogvideo; ?>" <?php checked($all[self::$opt_ogvideo], 1); ?> type="checkbox" class="checkbox">
2279
  <label for="<?php echo self::$opt_ogvideo; ?>">
2280
+ <b>(PRO)</b> <b class="chktitle">Facebook Open Graph Markup:</b> Update YouTube embeds on your pages with Open Graph markup to enhance Facebook sharing and discovery of the pages. Your shared pages, for example, will also display embedded video thumbnails on Facebook Timelines.
2281
  </label>
2282
  </p>
2283
  <div class="hr"></div>
2303
  <b class="chktitle">Faster Page Loads (Caching): <sup class="orange">NEW</sup></b> <span class="pronon">(PRO Users)</span>
2304
  Use embed caching to speed up your page loads. By default, WordPress needs to request information from YouTube.com's servers for every video you embed, every time a page is loaded. These data requests can add time to your total page load time. Turn on this feature to cache that data (instead of having to request for the same information every time you load a page). This should then make your pages that have videos load faster. It's been noted that even small speed ups in page load can help increase visitor engagement, retention, and conversions.
2305
  </label>
2306
+ <div class="indent-option">
2307
+ <label>
2308
+ <b class="chktitle">Cache Liftime (hours): <sup class="orange">NEW</sup></b>
2309
+ <input id="spdcexp" disabled value="24" type="number">
2310
+ Tip: If your pages rarely change, you may wish to set this to a much higher value than 24 hours.
2311
+ </label>
2312
+ </div>
2313
  </p>
2314
  <div class="hr"></div>
2315
 
2332
  <img class="ssfb" src="<?php echo plugins_url('images/ssfb.jpg', __FILE__) ?>" />
2333
  <input disabled type="checkbox" class="checkbox">
2334
  <label>
2335
+ <b class="chktitle">Facebook Open Graph Markup:</b> <span class="pronon">(PRO Users)</span> Update YouTube embeds on your pages with Open Graph markup to enhance Facebook sharing and discovery of the pages. Your shared pages, for example, will also display embedded video thumbnails on Facebook Timelines.
2336
  </label>
2337
  </p>
2338
  <div class="hr"></div>
2442
  </li>
2443
  <li>
2444
  <img src="<?php echo plugins_url('images/globe.png', __FILE__) ?>">
2445
+ Alerts when visitors from different countries are blocked from viewing your embeds
2446
  </li>
2447
  <li>
2448
  <img src="<?php echo plugins_url('images/mobilecompat.png', __FILE__) ?>">
2449
+ Check if your embeds have restrictions that can block mobile viewing
2450
  </li>
2451
 
2452
  </ul>
2468
 
2469
  <li id="fbstuff">
2470
  <img src="<?php echo plugins_url('images/iconfb.png', __FILE__) ?>">
2471
+ Automatic Open Graph tagging for Facebook
2472
  </li>
2473
  <li>
2474
  <img src="<?php echo plugins_url('images/iconythealth.png', __FILE__) ?>">
2476
  </li>
2477
  <li>
2478
  <img src="<?php echo plugins_url('images/iconvolume.png', __FILE__) ?>">
2479
+ Fine-Grained Volume Initialization – Individual video volume settings in the wizard
2480
  </li>
2481
 
2482
  <li>
2603
  }
2604
  }
2605
 
2606
+ if (jQuery("#<?php echo self::$opt_spdc; ?>").is(":checked"))
2607
+ {
2608
+ if (!(jQuery.isNumeric(jQuery.trim(jQuery("#<?php echo self::$opt_spdcexp; ?>").val()))))
2609
+ {
2610
+ alertmessage += "Please enter a valid number of hours (greater than 0) for the cache lifetime, or uncheck the option.";
2611
+ jQuery("#boxspdc input[type=number], #boxspdc input[type=text]").css("background-color", "#ffcccc").css("border", "2px solid #000000");
2612
+ valid = false;
2613
+ }
2614
+ }
2615
+
2616
+
2617
 
2618
  if (jQuery("#<?php echo self::$opt_schemaorg; ?>").is(":checked"))
2619
  {
2700
  });
2701
 
2702
 
2703
+ jQuery('#<?php echo self::$opt_migrate; ?>').change(function()
2704
+ {
2705
+ if (jQuery(this).is(":checked"))
2706
+ {
2707
+ jQuery("#boxmigratelist").show(500);
2708
+ }
2709
+ else
2710
+ {
2711
+ jQuery("#boxmigratelist").hide(500);
2712
+ }
2713
+ });
2714
+
2715
+
2716
 
2717
  jQuery('#<?php echo self::$opt_nocookie; ?>').change(function()
2718
  {
2787
  }
2788
 
2789
 
2790
+ jQuery('#boxspdc input.button').click(function() {
2791
  jQuery('#clearspdcloading').show();
2792
  jQuery('#clearspdcfailed').hide();
2793
  jQuery('#clearspdcsuccess').hide();