Feeds for YouTube (YouTube video, channel, and gallery plugin) - Version 1.1

Version Description

  • New: Several improvements to the lightbox for YouTube grid feeds were made including a video index indicator, navigation arrows moved to the outside of the YouTube video, and a close button.
  • New: Added play button icon that displays on top of YouTube video thumbnails. Disable this on the "Customize" tab.
  • New: Added workaround for occasional issue caused by multiple elements of the page using the YouTube Player API.
  • Tweak: Fixed typo in HTML element with the class "sby_thumbail_hover". Now "sby_thumbnail_hover".
  • Tweak: Updated admin PHP code.
  • Tweak: Updated JavaScript code.
  • Tweak: Updated language files and several strings to use text domain "feeds-for-youtube" instead of "youtube-feed".
Download this release

Release Info

Developer smashballoon
Plugin Icon 128x128 Feeds for YouTube (YouTube video, channel, and gallery plugin)
Version 1.1
Comparing to
See all releases

Code changes from version 1.0.3 to 1.1

README.txt CHANGED
@@ -1,15 +1,15 @@
1
- === Feeds for YouTube (YouTube feed, channel, and gallery plugin) ===
2
  Author: Smash Balloon
3
  Contributors: smashballoon, craig-at-smash-balloon
4
  Support Website: http://smashballoon/youtube-feed/
5
- Tags: YouTube, YouTube feed, YouTube channel, YouTube widget, YouTube gallery
6
  Requires at least: 3.4
7
  Tested up to: 5.3
8
- Stable tag: 1.0.3
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
12
- A simple to use YouTube Feed plugin for displaying customizable YouTube feeds from any YouTube channel. All YouTube feeds are fast and responsive.
13
 
14
  == Description ==
15
  **Display customizable YouTube channel feeds on your website. Feed your YouTube channel content automatically to your website in powerful and customizable ways.**
@@ -21,27 +21,27 @@ A simple to use YouTube Feed plugin for displaying customizable YouTube feeds fr
21
  * **Multiple layouts** - display videos from any YouTube channel in a list, gallery, or grid layout
22
  * **Multiple feeds** from different YouTube channels on multiple pages or widgets
23
  * **Lightning fast** - post caching and minimized YouTube API requests means that your YouTube feed loads lightning fast
24
- * **Infinitely load more** of your YouTube channel videos with the 'Load More' button
25
  * Built-in easy to use "YouTube Feed" Widget
26
  * Fully internationalized and translatable into any language
27
  * Includes a header at the top of your YouTube channel feed
28
  * Enter your own custom CSS or JavaScript for even deeper customization
29
 
30
- For simple step-by-step directions on how to set up the Feeds for YouTube plugin please refer to our [setup guide](http://smashballoon.com/youtube-feed/free/?utm_source=wordpress&utm_campaign=sby 'Feeds for YouTube channel setup guide').
31
 
32
  ### Benefits
33
- * **Increase social engagement** between you and your YouTube channel subscribers
34
  * **Save time** by using the Feeds for YouTube plugin to generate dynamic, search engine crawlable content on your website
35
- * **Get more subscribers** to your channel by displaying your YouTube videos directly on your site
36
  * Display your YouTube channel content **your way** to perfectly match your website's style
37
  * The plugin is **updated regularly** with new features, bug-fixes and YouTube API changes
38
  * Support is quick, effective, and always happy to help
39
  * We're dedicated to providing the **most customizable**, **robust** and **well supported** YouTube feed plugin in the world!
40
 
41
  ### Feedback or Support
42
- Customer support is a huge deal to us. We pride ourselves on always providing quick, effective, and courteous support to all of our users. If you're having an issue with our YouTube plugin then just let us know and we'll be there to help as soon as possible. You can either open a ticket on the support forum on [WordPress.org](https://wordpress.org/support/plugin/feeds-for-youtube/ "YouTube Feed Free support forum"), or directly on [our website](https://smashballoon.com/youtube-feed/support/ "YouTube channel Feed website support form").
43
 
44
- If you like the plugin then please consider leaving a review, as it really helps to support the plugin. If you have an issue then please allow us to help you fix it before leaving a review. Just [let us know](https://smashballoon.com/youtube-feed/support/?utm_source=wordpress&utm_campaign=sby 'Feeds for YouTube channel Support') what the problem is and we'll get back to you right away.
45
 
46
  ### Pro Version (Feeds for YouTube Pro)
47
  We plan on releasing a [Pro version](http://smashballoon.com/youtube-feed/?utm_source=wordpress&utm_campaign=sby 'Feeds for YouTube Pro') which includes some awesome additional features to help you display your YouTube content in even more powerful ways:
@@ -75,35 +75,35 @@ To find out more about the team, see [here](https://smashballoon.com/about/ "Tea
75
 
76
  ### YouTube Feed Shortcode Settings
77
 
78
- You can edit the settings globally for all YouTube feeds on your site using the plugin settings page, but if you want to change settings for specific YouTube channel feeds then you can do so by using the shortcode settings listed below:
79
 
80
  **channel** - Display videos from a YouTube channel. Eg: [youtube-feed channel="smashballoon"]
81
- **width** - The width of your YouTube channel feed. Any number with a unit like "px" or "%". Eg: [youtube-feed width="300px"]
82
- **height** - The height of your YouTube channel feed. Any number with a unit like "px" or "em". Eg: [youtube-feed height="500px"]
83
- **background** - Background color for your YouTube channel feed. Any hex color code. Eg: [youtube-feed background="#f00"]
84
- **playvideo** - What the user needs to do to play a YouTube channel video: **onclick**, **automatically**. Eg: [youtube-feed playvideo="onclick"]
85
- **layout** - How your YouTube channel videos are displayed visually. Eg: [youtube-feed layout="list"]
86
- **num** - The number of YouTube videos in the channel feed. Eg: [youtube-feed num="5"]
87
- **itemspacing** - The spacing/padding around the YouTube channel videos in the feed. Any number with a unit like "px" or "em". Eg: [youtube-feed itemspacing="5px"]
88
- **showheader** - Include a header for this YouTube channel feed. Eg: [youtube-feed showheader="false"]
89
  **showdescription** Include the channel description in the YouTube feed header. Eg: [youtube-feed showdescription="false"]
90
- **showbutton** - Include a "Load More" button at the bottom of the feed to load more YouTube channel videos. Eg: [youtube-feed showbutton="false"]
91
- **buttoncolor** - Background color for the "Load More" button at the bottom of the YouTube channel feed. Any hex color code Eg: [youtube-feed buttoncolor="#0f0"]
92
  **buttontextcolor** - Text color for the "Load More" button. Any hex color code. Eg: [youtube-feed buttontextcolor="#00f"]
93
  **buttontext** - The text that appers on the "Load More" button. Eg: [youtube-feed buttontext=""More Videos""]
94
- **showsubscribe** - Include a "Subscribe" button at the bottom of the YouTube channel feed to load more YouTube videos. Eg: [youtube-feed showsubscribe="false"]
95
- **subscribecolor** - Background color for the YouTube channel "Subscribe" button. Any hex color code. Eg: [youtube-feed subscribecolor="#0f0"]
96
- **subscribetextcolor** - Text color for the YouTube channel "Subscribe" button. Any hex color code. Eg: [youtube-feed subscribetextcolor="#00f"]
97
- **subscribetext** - The text that appers on the YouTube channel "Subscribe" button. Eg: [youtube-feed subscribetext=""Subscribe to My Channel""]
98
 
99
  == Installation ==
100
  1. Install the Feeds for YouTube plugin either via the WordPress plugin directory, or by uploading the files to your web server (in the /wp-content/plugins/ directory).
101
  2. Activate the plugin through the 'Plugins' menu in WordPress.
102
- 3. Navigate to the 'Feeds for YouTube' settings page to configure your YouTube channel feed.
103
- 4. Use the shortcode [youtube-feed] in your page, post or widget to display your YouTube channel feed.
104
  5. You can display multiple YouTube channels with different configurations by specifying the necessary parameters directly in the shortcode: [youtube-feed channel=smashballoon].
105
 
106
- For simple step-by-step directions on how to set up the Feeds for YouTube plugin please refer to our [setup guide](http://smashballoon.com/youtube-feed/free/?utm_source=wordpress&utm_campaign=sby 'Feeds for YouTube channel setup guide').
107
 
108
  = Setting up the Free Feeds for YouTube WordPress Plugin =
109
 
@@ -119,27 +119,27 @@ The Feeds for YouTube plugin is brand new and so we're currently working on impr
119
 
120
  5) Enter a YouTube channel name to display videos from.
121
 
122
- 6) Navigate to the Customize and Style pages to customize your YouTube channel feed.
123
 
124
- 7) Once you've customized your YouTube channel feed, click on the "Display Your Feed" tab for directions on how to display your YouTube feed (or multiple YouTube channel feeds).
125
 
126
- 8) Copy the [youtube-feed] shortcode and paste it into any page, post or widget where you want the YouTube channel feed to appear.
127
 
128
  9) You can paste the [youtube-feed] shortcode directly into your page editor.
129
 
130
  10) You can use the default WordPress 'Text' widget to display your Feeds for YouTube in a sidebar or other widget area.
131
 
132
- 11) View your website to see your YouTube channel feed(s) in all their glory!
133
 
134
  == Frequently Asked Questions ==
135
 
136
- = Can I display multiple YouTube channel feeds on my site or on the same page? =
137
 
138
  Yep. You can display multiple YouTube feeds by using our built-in shortcode options, for example: `[youtube-feed channel="smashballoon" num=3]`.
139
 
140
- = How do I embed a YouTube channel or gallery directly into a WordPress page template? =
141
 
142
- You can embed your YouTube feed directly into a template file by using the WordPress [do_shortcode](http://codex.wordpress.org/Function_Reference/do_shortcode) function: `<?php echo do_shortcode('[youtube-feed]'); ?>`.
143
 
144
  = Will Feeds for YouTube work with W3 Total Cache or other caching plugins? =
145
 
@@ -151,11 +151,11 @@ Yep, just use the following setting: Feeds for YouTube > Customize > Video Exper
151
 
152
  = How can I change the layout of my YouTube video feed? =
153
 
154
- This free plugin has several layout options built into it. Use the settings in the following location to display your YouTube channel videos in a list, grid, or gallery layout: Feeds for YouTube > Customize > Layout. You can also change the spacing/padding between the YouTube videos by using the "Spacing between videos" setting in this same section.
155
 
156
  = Can I select how many YouTube videos should be displayed in the feed? =
157
 
158
- Yep, you can choose to display between 1-50 YouTube videos in your feed by using the following setting: Feeds for YouTube > Customize > Layout > Number of Videos. The plugin also contains a "Load More" button to allow you to infinitely load more YouTube channel videos into your feed.
159
 
160
  = Will my YouTube gallery be responsive to accommodate mobile visitors? =
161
 
@@ -163,43 +163,52 @@ Yes. All YouTube feed layouts are completely mobile responsive. Using the plugin
163
 
164
  = Will videos from my YouTube channel be cached? =
165
 
166
- Yes. The Feeds for YouTube plugin will cache all of the posts collected from the YouTube API. Your YouTube channel videos and information about your YouTube channel can then be retrieved and used for future page loads.
167
 
168
- = How do I find the nickname or channel ID for different YouTube channels? =
169
 
170
  You can display videos from any YouTube channel using the unique YouTube channel ID. This can be found by viewing the channel page on YouTube and looking at the end of the URL. ex: https://www.youtube.com/channel/UC1a2b3c4D5F6g7i8j9k. You can also use the channel nickname.
171
 
172
- = How does the plugin retrieve my YouTube channel videos? =
173
 
174
  The plugin connects to YouTube and requests data about videos from your YouTube channel in three ways: The RSS feed associated with each YouTube Channel, using the Smash Balloon app and the YouTube API, and using an API Key to connect to the YouTube API. The plugin uses each connection type in certain circumstances with the main concern of optimizing API calls overall.
175
 
176
  = Will displaying my YouTube channel affect the time it takes to load the page? =
177
 
178
- The Feeds for YouTube plugin had been designed to minimize the impact it has on page load time. For example, iframes for playing YouTube videos are not loaded until the feed is interacted with by a visitor. Thumbnails of your YouTube videos are the smallest resolution necessary relative to the size of the feed. Also, these video thumbnails are not loaded until the rest of the content on the page is loaded.
179
 
180
  = How often do new videos from my YouTube channel appear in the YouTube gallery? =
181
 
182
- By default, the plugin retrieves new YouTube videos for your YouTube gallery once every hour. You can reduce this to as little as 15 minutes if needed. You can even set your YouTube channel gallery to update using WordPress cron in the background so the caching process is not relying on the page with your YouTube gallery being visited.
183
 
184
  == Screenshots ==
185
 
186
  1. By default the Feeds for YouTube plugin inherits styles from your theme
187
- 2. Display multiple YouTube channel feeds and customize each one
188
  3. When using the "grid" layout, YouTube videos open and play in a lightbox
189
  4. Feeds for YouTube Settings pages
190
- 5. Built in customization settings make customizing your YouTube channel feed easy
191
- 6. Use handy shortcode options to customize individual YouTube channel feeds
192
- 7. To display a YouTube channel feed just copy and paste the [youtube-feed] shortcode into a widget or page
193
 
194
  == Changelog ==
 
 
 
 
 
 
 
 
 
195
  = 1.0.3 =
196
  * Tweak: Changed tooltip and notes regarding how to display a YouTube feed from a certain YouTube channel.
197
  * Fix: YouTube iframe JavaScript file was being loaded with HTTP. Changed to HTTPS.
198
- * Fix: Prevented error if allow_url_fopen set to false in php.ini by changing how RSS channel feeds are retrieved from YouTube.
199
  * Fix: Unable to view YouTube account details if more than one YouTube account connected.
200
 
201
  = 1.0.2 =
202
- * New: Changed the method used to update YouTube feeds to reduce YouTube channel API requests.
203
  * Tweak: More YouTube posts cached in the wp_posts table when a YouTube API request is made.
204
  * Tweak: YouTube channel data cached to reduce YouTube API requests.
205
  * Fix: Error when deactivating and reactivating the Feeds for YouTube plugin with background caching enabled.
1
+ === Feeds for YouTube (YouTube video, channel, and gallery plugin) ===
2
  Author: Smash Balloon
3
  Contributors: smashballoon, craig-at-smash-balloon
4
  Support Website: http://smashballoon/youtube-feed/
5
+ Tags: YouTube, YouTube feed, YouTube widget, YouTube channel, YouTube gallery
6
  Requires at least: 3.4
7
  Tested up to: 5.3
8
+ Stable tag: 1.1
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
12
+ The Feeds for YouTube plugin allows you to display customizable YouTube feeds from any YouTube channel.
13
 
14
  == Description ==
15
  **Display customizable YouTube channel feeds on your website. Feed your YouTube channel content automatically to your website in powerful and customizable ways.**
21
  * **Multiple layouts** - display videos from any YouTube channel in a list, gallery, or grid layout
22
  * **Multiple feeds** from different YouTube channels on multiple pages or widgets
23
  * **Lightning fast** - post caching and minimized YouTube API requests means that your YouTube feed loads lightning fast
24
+ * **Infinitely load more** of your YouTube videos with the 'Load More' button
25
  * Built-in easy to use "YouTube Feed" Widget
26
  * Fully internationalized and translatable into any language
27
  * Includes a header at the top of your YouTube channel feed
28
  * Enter your own custom CSS or JavaScript for even deeper customization
29
 
30
+ For simple step-by-step directions on how to set up the Feeds for YouTube plugin please refer to our [setup guide](http://smashballoon.com/youtube-feed/free/?utm_source=wordpress&utm_campaign=sby 'Feeds for YouTube setup guide').
31
 
32
  ### Benefits
33
+ * **Increase social engagement** between you and your YouTube subscribers
34
  * **Save time** by using the Feeds for YouTube plugin to generate dynamic, search engine crawlable content on your website
35
+ * **Get more subscribers** by displaying your YouTube videos directly on your site
36
  * Display your YouTube channel content **your way** to perfectly match your website's style
37
  * The plugin is **updated regularly** with new features, bug-fixes and YouTube API changes
38
  * Support is quick, effective, and always happy to help
39
  * We're dedicated to providing the **most customizable**, **robust** and **well supported** YouTube feed plugin in the world!
40
 
41
  ### Feedback or Support
42
+ Customer support is a huge deal to us. We pride ourselves on always providing quick, effective, and courteous support to all of our users. If you're having an issue with our YouTube pluginthen just let us know and we'll be there to help as soon as possible. You can either open a ticket on the support forum on [WordPress.org](https://wordpress.org/support/plugin/feeds-for-youtube/ "YouTube Feed Free support forum"), or directly on [our website](https://smashballoon.com/youtube-feed/support/ "YouTube Feed website support form").
43
 
44
+ If you like the plugin then please consider leaving a review, as it really helps to support the plugin. If you have an issue then please allow us to help you fix it before leaving a review. Just [let us know](https://smashballoon.com/youtube-feed/support/?utm_source=wordpress&utm_campaign=sby 'Feeds for YouTube Support') what the problem is and we'll get back to you right away.
45
 
46
  ### Pro Version (Feeds for YouTube Pro)
47
  We plan on releasing a [Pro version](http://smashballoon.com/youtube-feed/?utm_source=wordpress&utm_campaign=sby 'Feeds for YouTube Pro') which includes some awesome additional features to help you display your YouTube content in even more powerful ways:
75
 
76
  ### YouTube Feed Shortcode Settings
77
 
78
+ You can edit the settings globally for all YouTube feeds on your site using the plugin settings page, but if you want to change settings for specific YouTube feeds then you can do so by using the shortcode settings listed below:
79
 
80
  **channel** - Display videos from a YouTube channel. Eg: [youtube-feed channel="smashballoon"]
81
+ **width** - The width of your YouTube feed. Any number with a unit like "px" or "%". Eg: [youtube-feed width="300px"]
82
+ **height** - The height of your YouTube feed. Any number with a unit like "px" or "em". Eg: [youtube-feed height="500px"]
83
+ **background** - Background color for your YouTube feed. Any hex color code. Eg: [youtube-feed background="#f00"]
84
+ **playvideo** - What the user needs to do to play a YouTube video: **onclick**, **automatically**. Eg: [youtube-feed playvideo="onclick"]
85
+ **layout** - How your YouTube videos are displayed visually. Eg: [youtube-feed layout="list"]
86
+ **num** - The number of YouTube videos in the feed. Eg: [youtube-feed num="5"]
87
+ **itemspacing** - The spacing/padding around the YouTube videos in the feed. Any number with a unit like "px" or "em". Eg: [youtube-feed itemspacing="5px"]
88
+ **showheader** - Include a header for this YouTube feed. Eg: [youtube-feed showheader="false"]
89
  **showdescription** Include the channel description in the YouTube feed header. Eg: [youtube-feed showdescription="false"]
90
+ **showbutton** - Include a "Load More" button at the bottom of the feed to load more YouTube videos. Eg: [youtube-feed showbutton="false"]
91
+ **buttoncolor** - Background color for the "Load More" button at the bottom of the YouTube feed. Any hex color code Eg: [youtube-feed buttoncolor="#0f0"]
92
  **buttontextcolor** - Text color for the "Load More" button. Any hex color code. Eg: [youtube-feed buttontextcolor="#00f"]
93
  **buttontext** - The text that appers on the "Load More" button. Eg: [youtube-feed buttontext=""More Videos""]
94
+ **showsubscribe** - Include a "Subscribe" button at the bottom of the YouTube feed to load more YouTube videos. Eg: [youtube-feed showsubscribe="false"]
95
+ **subscribecolor** - Background color for the YouTube "Subscribe" button. Any hex color code. Eg: [youtube-feed subscribecolor="#0f0"]
96
+ **subscribetextcolor** - Text color for the YouTube "Subscribe" button. Any hex color code. Eg: [youtube-feed subscribetextcolor="#00f"]
97
+ **subscribetext** - The text that appers on the YouTube "Subscribe" button. Eg: [youtube-feed subscribetext=""Subscribe to My Channel""]
98
 
99
  == Installation ==
100
  1. Install the Feeds for YouTube plugin either via the WordPress plugin directory, or by uploading the files to your web server (in the /wp-content/plugins/ directory).
101
  2. Activate the plugin through the 'Plugins' menu in WordPress.
102
+ 3. Navigate to the 'Feeds for YouTube' settings page to configure your YouTube gallery.
103
+ 4. Use the shortcode [youtube-feed] in your page, post or widget to display your YouTube feed.
104
  5. You can display multiple YouTube channels with different configurations by specifying the necessary parameters directly in the shortcode: [youtube-feed channel=smashballoon].
105
 
106
+ For simple step-by-step directions on how to set up the Feeds for YouTube plugin please refer to our [setup guide](http://smashballoon.com/youtube-feed/free/?utm_source=wordpress&utm_campaign=sby 'Feeds for YouTube setup guide').
107
 
108
  = Setting up the Free Feeds for YouTube WordPress Plugin =
109
 
119
 
120
  5) Enter a YouTube channel name to display videos from.
121
 
122
+ 6) Navigate to the Customize and Style pages to customize your YouTube feed.
123
 
124
+ 7) Once you've customized your YouTube feed, click on the "Display Your Feed" tab for directions on how to display your YouTube feed (or multiple YouTube feeds).
125
 
126
+ 8) Copy the [youtube-feed] shortcode and paste it into any page, post or widget where you want the YouTube feed to appear.
127
 
128
  9) You can paste the [youtube-feed] shortcode directly into your page editor.
129
 
130
  10) You can use the default WordPress 'Text' widget to display your Feeds for YouTube in a sidebar or other widget area.
131
 
132
+ 11) View your website to see your YouTube feed(s) in all their glory!
133
 
134
  == Frequently Asked Questions ==
135
 
136
+ = Can I display multiple YouTube feeds on my site or on the same page? =
137
 
138
  Yep. You can display multiple YouTube feeds by using our built-in shortcode options, for example: `[youtube-feed channel="smashballoon" num=3]`.
139
 
140
+ = How do I embed a YouTube gallery directly into a WordPress page template? =
141
 
142
+ You can embed your YouTube gallery directly into a template file by using the WordPress [do_shortcode](http://codex.wordpress.org/Function_Reference/do_shortcode) function: `<?php echo do_shortcode('[youtube-feed]'); ?>`.
143
 
144
  = Will Feeds for YouTube work with W3 Total Cache or other caching plugins? =
145
 
151
 
152
  = How can I change the layout of my YouTube video feed? =
153
 
154
+ This free plugin has several layout options built into it. Use the settings in the following location to display your YouTube videos in a list, grid, or gallery layout: Feeds for YouTube > Customize > Layout. You can also change the spacing/padding between the YouTube videos by using the "Spacing between videos" setting in this same section.
155
 
156
  = Can I select how many YouTube videos should be displayed in the feed? =
157
 
158
+ Yep, you can choose to display between 1-50 YouTube videos in your feed by using the following setting: Feeds for YouTube > Customize > Layout > Number of Videos. The plugin also contains a "Load More" button to allow you to infinitely load more YouTube videos into your feed.
159
 
160
  = Will my YouTube gallery be responsive to accommodate mobile visitors? =
161
 
163
 
164
  = Will videos from my YouTube channel be cached? =
165
 
166
+ Yes. The Feeds for YouTube plugin will cache all of the posts collected from the YouTube API. Your YouTube videos and information about your YouTube channel can then be retrieved and used for future page loads.
167
 
168
+ = How do I find the nickname of channel ID for different YouTube channels? =
169
 
170
  You can display videos from any YouTube channel using the unique YouTube channel ID. This can be found by viewing the channel page on YouTube and looking at the end of the URL. ex: https://www.youtube.com/channel/UC1a2b3c4D5F6g7i8j9k. You can also use the channel nickname.
171
 
172
+ = How does the plugin retrieve my YouTube videos? =
173
 
174
  The plugin connects to YouTube and requests data about videos from your YouTube channel in three ways: The RSS feed associated with each YouTube Channel, using the Smash Balloon app and the YouTube API, and using an API Key to connect to the YouTube API. The plugin uses each connection type in certain circumstances with the main concern of optimizing API calls overall.
175
 
176
  = Will displaying my YouTube channel affect the time it takes to load the page? =
177
 
178
+ The Feeds for YouTube plugin has a few features to minimize the impact it has on page load time. For example, iframes for playing YouTube videos are not loaded until the feed is interacted with by a visitor. Thumbnails of your YouTube videos are the smallest resolution necessary relative to the size of the feed. Also, these video thumbnails are not loaded until the rest of the content on the page is loaded.
179
 
180
  = How often do new videos from my YouTube channel appear in the YouTube gallery? =
181
 
182
+ By default, the plugin retrieves new YouTube videos for your YouTube gallery once every hour. You can reduce this to as little as 15 minutes if needed. You can even set your YouTube gallery to update using WordPress cron in the background so the caching process is not relying on the page with your YouTube gallery being visited.
183
 
184
  == Screenshots ==
185
 
186
  1. By default the Feeds for YouTube plugin inherits styles from your theme
187
+ 2. Display multiple YouTube feeds and customize each one
188
  3. When using the "grid" layout, YouTube videos open and play in a lightbox
189
  4. Feeds for YouTube Settings pages
190
+ 5. Built in customization settings make customizing your YouTube feed easy
191
+ 6. Use handy shortcode options to customize individual YouTube feeds
192
+ 7. To display a YouTube feed just copy and paste the [youtube-feed] shortcode into a widget or page
193
 
194
  == Changelog ==
195
+ = 1.1 =
196
+ * New: Several improvements to the lightbox for YouTube grid feeds were made including a video index indicator, navigation arrows moved to the outside of the YouTube video, and a close button.
197
+ * New: Added play button icon that displays on top of YouTube video thumbnails. Disable this on the "Customize" tab.
198
+ * New: Added workaround for occasional issue caused by multiple elements of the page using the YouTube Player API.
199
+ * Tweak: Fixed typo in HTML element with the class "sby_thumbail_hover". Now "sby_thumbnail_hover".
200
+ * Tweak: Updated admin PHP code.
201
+ * Tweak: Updated JavaScript code.
202
+ * Tweak: Updated language files and several strings to use text domain "feeds-for-youtube" instead of "youtube-feed".
203
+
204
  = 1.0.3 =
205
  * Tweak: Changed tooltip and notes regarding how to display a YouTube feed from a certain YouTube channel.
206
  * Fix: YouTube iframe JavaScript file was being loaded with HTTP. Changed to HTTPS.
207
+ * Fix: Prevented error if allow_url_fopen set to false in php.ini by changing how RSS feeds are retrieved from YouTube.
208
  * Fix: Unable to view YouTube account details if more than one YouTube account connected.
209
 
210
  = 1.0.2 =
211
+ * New: Changed the method used to update YouTube feeds to reduce YouTube API requests.
212
  * Tweak: More YouTube posts cached in the wp_posts table when a YouTube API request is made.
213
  * Tweak: YouTube channel data cached to reduce YouTube API requests.
214
  * Fix: Error when deactivating and reactivating the Feeds for YouTube plugin with background caching enabled.
css/admin.css CHANGED
@@ -738,4 +738,9 @@
738
  #sbspf_admin .sby_mode_option.sbspf_fade .sby_important,
739
  #sbspf_admin .sby_mode_option.sbspf_fade .sbspf_note {
740
  opacity: 1;
 
 
 
 
 
741
  }
738
  #sbspf_admin .sby_mode_option.sbspf_fade .sby_important,
739
  #sbspf_admin .sby_mode_option.sbspf_fade .sbspf_note {
740
  opacity: 1;
741
+ }
742
+
743
+ /* Temp Pro */
744
+ .sbspf_multi_checkbox_option.sbspf_pro_only {
745
+ display: none;
746
  }
css/sb-youtube.css CHANGED
@@ -238,7 +238,7 @@
238
  }
239
 
240
  /* Use CSS for lightbox fade instead of JS */
241
- [id^=sb_youtube_].sb_youtube .sby_thumbail_hover {
242
  opacity: 0;
243
  display: block;
244
  position: absolute;
@@ -254,7 +254,7 @@
254
  -moz-transition: opacity .6s ease-in-out;
255
  -webkit-transition: opacity .6s ease-in-out;
256
  }
257
- [id^=sb_youtube_].sb_youtube.sby_layout_list .sby_thumbail_hover {
258
  display: none;
259
  }
260
  .sby_video_title {
@@ -265,14 +265,14 @@
265
  font-size: 13px;
266
  line-height: 1.2;
267
  }
268
- [id^=sb_youtube_].sb_youtube .sby_video_thumbnail:hover .sby_thumbail_hover {
269
  opacity: 1;
270
  display: block;
271
  transition: opacity .2s ease-in-out;
272
  -moz-transition: opacity .2s ease-in-out;
273
  -webkit-transition: opacity .2s ease-in-out;
274
  }
275
- [id^=sb_youtube_].sb_youtube.sby_layout_list .sby_video_thumbnail:hover .sby_thumbail_hover {
276
  opacity: 0;
277
  display: none;
278
  transition: none;
@@ -280,6 +280,55 @@
280
  -webkit-transition: none;
281
  }
282
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
283
  /* Loader */
284
  [id^=sb_youtube_].sb_youtube .sby_loader{
285
  width: 20px;
@@ -762,7 +811,6 @@
762
  left: 0;
763
  width: 100%;
764
  z-index: 10000;
765
- text-align: center;
766
  line-height: 0;
767
  font-weight: normal;
768
  }
@@ -811,7 +859,6 @@
811
  height: 100%;
812
  bottom: 0;
813
  right: 0;
814
- overflow: hidden;
815
 
816
  -webkit-border-radius: 3px;
817
  -moz-border-radius: 3px;
@@ -860,50 +907,80 @@
860
  top: 0;
861
  height: 90%;
862
  outline: none;
 
863
  }
 
 
 
864
  .sby_lb-prev, .sby_lb-next {
865
  height: 100%;
866
  cursor: pointer;
867
  display: block;
868
  }
869
  .sby_lb-nav a.sby_lb-prev {
870
- width: 30%;
871
- left: 0;
 
 
 
872
  float: left;
873
- background: url(../img/prev.png) left 52% no-repeat;
874
- filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
875
- opacity: 0;
876
- -webkit-transition: opacity 0.6s;
877
- -moz-transition: opacity 0.6s;
878
- -o-transition: opacity 0.6s;
879
- transition: opacity 0.6s;
880
- }
881
- .ctf-audio-iframe .sby_lb-nav a.sby_lb-prev{
882
- max-width: 100px;
883
- height: 80%;
884
- margin-top: 10%;
885
- background: url(../img/prev.png) left 0 top 35% no-repeat;
886
  }
 
887
  .sby_lb-nav a.sby_lb-prev:hover {
888
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
889
  opacity: 1;
890
  }
 
891
  .sby_lb-nav a.sby_lb-next {
892
- width: 30%;
893
- right: 0;
 
 
 
894
  float: right;
895
- background: url(../img/next.png) right 52% no-repeat;
896
- filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
897
- opacity: 0;
898
- -webkit-transition: opacity 0.6s;
899
- -moz-transition: opacity 0.6s;
900
- -o-transition: opacity 0.6s;
901
- transition: opacity 0.6s;
 
902
  }
 
903
  .sby_lb-nav a.sby_lb-next:hover {
904
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
905
  opacity: 1;
906
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
907
  .sby_lb-dataContainer {
908
  margin: 0 auto;
909
  padding-top: 5px;
@@ -1227,4 +1304,9 @@
1227
  height: 1em;
1228
  overflow: visible;
1229
  vertical-align: -.125em;
 
 
 
 
 
1230
  }
238
  }
239
 
240
  /* Use CSS for lightbox fade instead of JS */
241
+ [id^=sb_youtube_].sb_youtube .sby_thumbnail_hover {
242
  opacity: 0;
243
  display: block;
244
  position: absolute;
254
  -moz-transition: opacity .6s ease-in-out;
255
  -webkit-transition: opacity .6s ease-in-out;
256
  }
257
+ [id^=sb_youtube_].sb_youtube.sby_layout_list .sby_thumbnail_hover {
258
  display: none;
259
  }
260
  .sby_video_title {
265
  font-size: 13px;
266
  line-height: 1.2;
267
  }
268
+ [id^=sb_youtube_].sb_youtube .sby_video_thumbnail:hover .sby_thumbnail_hover {
269
  opacity: 1;
270
  display: block;
271
  transition: opacity .2s ease-in-out;
272
  -moz-transition: opacity .2s ease-in-out;
273
  -webkit-transition: opacity .2s ease-in-out;
274
  }
275
+ [id^=sb_youtube_].sb_youtube.sby_layout_list .sby_video_thumbnail:hover .sby_thumbnail_hover {
276
  opacity: 0;
277
  display: none;
278
  transition: none;
280
  -webkit-transition: none;
281
  }
282
 
283
+ /* Play Button */
284
+ [id^=sb_youtube_].sb_youtube .sby_video_thumbnail:hover .sby_play_btn {
285
+ opacity: .5;
286
+ }
287
+ [id^=sb_youtube_].sb_youtube .sby_play_btn {
288
+ position: absolute;
289
+ left: 50%;
290
+ bottom: 50%;
291
+ top: 50%;
292
+ right: 50%;
293
+ margin-top: -24px;
294
+ margin-left: -24px;
295
+ color: #fff;
296
+ width: 48px;
297
+ opacity: 1;
298
+ transition: opacity .2s ease-in-out;
299
+ -moz-transition: opacity .2s ease-in-out;
300
+ -webkit-transition: opacity .2s ease-in-out;
301
+ }
302
+ [id^=sb_youtube_].sb_youtube .sby_play_btn svg:not(:root).svg-inline--fa{
303
+ width: 48px;
304
+ height: auto;
305
+ }
306
+
307
+ [id^=sb_youtube_].sb_youtube .sby_play_btn svg,
308
+ [id^=sb_youtube_].sb_youtube .sby_play_btn i{
309
+ -webkit-filter: drop-shadow( 0 0 2px rgba(0,0,0,.4) );
310
+ filter: drop-shadow( 0 0 2px rgba(0,0,0,.4) )
311
+ }
312
+ /* Medium */
313
+ [id^=sb_youtube_].sb_youtube.sby_medium .sby_play_btn {
314
+ margin-top: -12px;
315
+ margin-left: -10px;
316
+ width: 23px;
317
+ }
318
+ [id^=sb_youtube_].sb_youtube.sby_medium .sby_play_btn svg.svg-inline--fa.fa-play{
319
+ width: 23px;
320
+ }
321
+
322
+ /* Small */
323
+ [id^=sb_youtube_].sb_youtube.sby_small .sby_play_btn{
324
+ margin-top: -9px;
325
+ margin-left: -7px;
326
+ width: 18px;
327
+ }
328
+ [id^=sb_youtube_].sb_youtube.sby_small .sby_play_btn svg.svg-inline--fa.fa-play{
329
+ width: 18px;
330
+ }
331
+
332
  /* Loader */
333
  [id^=sb_youtube_].sb_youtube .sby_loader{
334
  width: 20px;
811
  left: 0;
812
  width: 100%;
813
  z-index: 10000;
 
814
  line-height: 0;
815
  font-weight: normal;
816
  }
859
  height: 100%;
860
  bottom: 0;
861
  right: 0;
 
862
 
863
  -webkit-border-radius: 3px;
864
  -moz-border-radius: 3px;
907
  top: 0;
908
  height: 90%;
909
  outline: none;
910
+ background-image: url('data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
911
  }
912
+
913
+
914
+ /* Arrows */
915
  .sby_lb-prev, .sby_lb-next {
916
  height: 100%;
917
  cursor: pointer;
918
  display: block;
919
  }
920
  .sby_lb-nav a.sby_lb-prev {
921
+ /*width: 30%;*/
922
+ width: 50px;
923
+ left: -70px;
924
+ padding-left: 10px;
925
+ padding-right: 10px;
926
  float: left;
927
+
928
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0.5);
929
+ opacity: 0.5;
930
+ -webkit-transition: opacity 0.2s;
931
+ -moz-transition: opacity 0.2;
932
+ -o-transition: opacity 0.2s;
933
+ transition: opacity 0.2s;
934
+
 
 
 
 
 
935
  }
936
+
937
  .sby_lb-nav a.sby_lb-prev:hover {
938
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
939
  opacity: 1;
940
  }
941
+
942
  .sby_lb-nav a.sby_lb-next {
943
+ /*width: 30%;*/
944
+ width: 50px;
945
+ right: -70px;
946
+ padding-left: 10px;
947
+ padding-right: 10px;
948
  float: right;
949
+
950
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0.5);
951
+ opacity: 0.5;
952
+ -webkit-transition: opacity 0.2s;
953
+ -moz-transition: opacity 0.2s;
954
+ -o-transition: opacity 0.2s;
955
+ transition: opacity 0.2s;
956
+
957
  }
958
+
959
  .sby_lb-nav a.sby_lb-next:hover {
960
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
961
  opacity: 1;
962
  }
963
+
964
+ .sby_lb-nav span{
965
+ display: block;
966
+ top: 55%;
967
+ position: absolute;
968
+ left: 20px;
969
+ width: 34px;
970
+ height: 45px;
971
+ margin: -25px 0 0 0;
972
+ background: url(../img/sby-sprite.png) no-repeat;
973
+ }
974
+ .sby_lb-nav a.sby_lb-prev span{
975
+ background-position: -53px 0;
976
+ }
977
+ .sby_lb-nav a.sby_lb-next span{
978
+ left: auto;
979
+ right: 20px;
980
+ background-position: -18px 0;
981
+ }
982
+
983
+
984
  .sby_lb-dataContainer {
985
  margin: 0 auto;
986
  padding-top: 5px;
1304
  height: 1em;
1305
  overflow: visible;
1306
  vertical-align: -.125em;
1307
+ }
1308
+
1309
+ [id^=sb_youtube_].sb_youtube.sby_player_loaded .sby_player_outer_wrap .sby_video_thumbnail,
1310
+ [id^=sb_youtube_].sb_youtube.sby_player_loaded.sby_layout_list .sby_video_thumbnail{
1311
+ z-index: -1 !important;
1312
  }
css/sb-youtube.min.css CHANGED
@@ -1 +1 @@
1
- [id^=sb_youtube_].sb_youtube{width:100%;margin:0 auto;padding:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[id^=sb_youtube_].sb_youtube:after{content:"";display:table;clear:both}[id^=sb_youtube_].sb_youtube.sby_fixed_height{overflow:hidden;overflow-y:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[id^=sb_youtube_].sb_youtube .sby_items_wrap{width:100%;float:left;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[id^=sb_youtube_].sb_youtube .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube .sby_player_outer_wrap .sby_video_thumbnail_wrap,[id^=sb_youtube_].sb_youtube .sby_player_wrap{display:-moz-inline-stack;display:inline-block;vertical-align:top;zoom:1;max-height:1000px;padding:inherit!important;text-decoration:none;opacity:1;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;-ms-transition:all .5s ease;transition:all .5s ease}[id^=sb_youtube_].sb_youtube .sby_items_wrap .sby_item.sby_no_margin{margin:0!important}[id^=sb_youtube_].sb_youtube .sby_items_wrap .sby_item{float:left}[id^=sb_youtube_].sb_youtube .sby_items_wrap .sby_item.sby_transition{opacity:0;max-height:0}[id^=sb_youtube_].sb_youtube.sby_col_0 .sby_items_wrap .sby_item{width:100%}[id^=sb_youtube_].sb_youtube.sby_col_1 .sby_items_wrap .sby_item{width:100%}[id^=sb_youtube_].sb_youtube.sby_col_2 .sby_items_wrap .sby_item{width:50%}[id^=sb_youtube_].sb_youtube.sby_col_3 .sby_items_wrap .sby_item{width:33.33%}[id^=sb_youtube_].sb_youtube.sby_col_4 .sby_items_wrap .sby_item{width:25%}[id^=sb_youtube_].sb_youtube.sby_col_5 .sby_items_wrap .sby_item{width:20%}[id^=sb_youtube_].sb_youtube.sby_col_6 .sby_items_wrap .sby_item{width:16.66%}[id^=sb_youtube_].sb_youtube.sby_col_7 .sby_items_wrap .sby_item{width:14.28%}[id^=sb_youtube_].sb_youtube.sby_col_8 .sby_items_wrap .sby_item{width:12.5%}[id^=sb_youtube_].sb_youtube.sby_col_9 .sby_items_wrap .sby_item{width:11.11%}[id^=sb_youtube_].sb_youtube.sby_col_10 .sby_items_wrap .sby_item{width:10%}.sby-screenreader{text-indent:-9999px!important;display:block!important;width:0!important;height:0!important;line-height:0!important}[id^=sb_youtube_].sb_youtube .sby_player_outer_wrap,[id^=sb_youtube_].sb_youtube .sby_video_thumbnail_wrap{width:100%;position:relative;float:left}[id^=sb_youtube_].sb_youtube .sby_video_thumbnail{display:block;position:relative;text-decoration:none;line-height:0;z-index:5}[id^=sb_youtube_].sb_youtube .sby_video_thumbnail img{width:100%;height:auto;border-radius:0}[id^=sb_youtube_].sb_youtube .sby_link{display:none;position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;width:100%;padding:0;background:#333;background:rgba(0,0,0,.6);text-align:center;color:#fff;font-size:12px;line-height:1.1;overflow:hidden}[id^=sb_youtube_].sb_youtube .sby_link.sby_default a,[id^=sb_youtube_].sb_youtube .sby_link.sby_default p,[id^=sb_youtube_].sb_youtube .sby_link.sby_default span{text-shadow:0 0 10px #000}[id^=sb_youtube_].sb_youtube .sby_link .sby_hover_bottom,[id^=sb_youtube_].sb_youtube .sby_link .sby_lightbox_link,[id^=sb_youtube_].sb_youtube .sby_link .sby_playbtn,[id^=sb_youtube_].sb_youtube .sby_link .sby_username a,[id^=sb_youtube_].sb_youtube .sby_link .sby_youtube_link,[id^=sb_youtube_].sb_youtube .sby_link .svg-inline--fa.fa-play{opacity:.9}[id^=sb_youtube_].sb_youtube .sby_link .sby_lightbox_link:hover,[id^=sb_youtube_].sb_youtube .sby_link .sby_playbtn:hover,[id^=sb_youtube_].sb_youtube .sby_link .sby_username a:hover,[id^=sb_youtube_].sb_youtube .sby_link .sby_youtube_link:hover,[id^=sb_youtube_].sb_youtube .sby_link .svg-inline--fa.fa-play:hover{opacity:1}[id^=sb_youtube_].sb_youtube .sby_link_area{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}[id^=sb_youtube_].sb_youtube .sby_link a{padding:0;text-decoration:none;color:#ddd;color:rgba(255,255,255,.7);line-height:1.1;background:0 0;display:-moz-inline-stack;display:inline-block;vertical-align:top;zoom:1}[id^=sb_youtube_].sb_youtube .sby_link a:active,[id^=sb_youtube_].sb_youtube .sby_link a:hover{color:#fff}[id^=sb_youtube_].sb_youtube .sby_link .sby_lightbox_link{display:block;position:absolute;z-index:2;top:50%;left:50%;margin-top:-24px;margin-left:-21px;padding:0;font-size:49px;font-style:normal!important}[id^=sb_youtube_].sb_youtube .sby_carousel_vid_first .sby_lightbox_link,[id^=sb_youtube_].sb_youtube .sby_type_video .sby_lightbox_link{display:none}[id^=sb_youtube_].sb_youtube .sby_link .sby_youtube_link{font-size:30px;position:absolute;z-index:100;bottom:0;right:2px;padding:8px}[id^=sb_youtube_].sb_youtube .sby_link a:focus,[id^=sb_youtube_].sb_youtube .sby_link a:hover{text-decoration:underline}[id^=sb_youtube_].sb_youtube .sby_player_wrap{z-index:1;width:100%!important;height:100%!important;position:absolute;top:0;left:0}[id^=sb_youtube_].sb_youtube .sby_player_wrap iframe{width:100%!important;height:100%!important}[id^=sb_youtube_].sb_youtube .sby_thumbail_hover{opacity:0;display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;color:#fff;background:#333;background:rgba(0,0,0,.6);transition:opacity .6s ease-in-out;-moz-transition:opacity .6s ease-in-out;-webkit-transition:opacity .6s ease-in-out}[id^=sb_youtube_].sb_youtube.sby_layout_list .sby_thumbail_hover{display:none}.sby_video_title{display:inline-block;height:100%;padding:10px;overflow:hidden;font-size:13px;line-height:1.2}[id^=sb_youtube_].sb_youtube .sby_video_thumbnail:hover .sby_thumbail_hover{opacity:1;display:block;transition:opacity .2s ease-in-out;-moz-transition:opacity .2s ease-in-out;-webkit-transition:opacity .2s ease-in-out}[id^=sb_youtube_].sb_youtube.sby_layout_list .sby_video_thumbnail:hover .sby_thumbail_hover{opacity:0;display:none;transition:none;-moz-transition:none;-webkit-transition:none}[id^=sb_youtube_].sb_youtube .sby_loader{width:20px;height:20px;position:relative;top:50%;left:50%;margin:-10px 0 0 -10px;background-color:#000;background-color:rgba(0,0,0,.5);border-radius:100%;-webkit-animation:sby-sk-scaleout 1s infinite ease-in-out;animation:sby-sk-scaleout 1s infinite ease-in-out}[id^=sb_youtube_].sb_youtube br{display:none}.sby_footer p{display:inline;padding:0;margin:0}[id^=sb_youtube_].sb_youtube .sby_footer .sby_loader,[id^=sb_youtube_].sb_youtube .sby_item .sby_loader,[id^=sb_youtube_].sb_youtube .sby_player_outer_wrap .sby_loader{position:absolute;margin-top:-11px;background-color:#fff}[id^=sb_youtube_].sb_youtube .sby_item.sby_player_loading,[id^=sb_youtube_].sb_youtube .sby_player_outer_wrap.sby_player_loading{opacity:.8}@-webkit-keyframes sby-sk-scaleout{0%{-webkit-transform:scale(0)}100%{-webkit-transform:scale(1);opacity:0}}@keyframes sby-sk-scaleout{0%{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}100%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:0}}#sby_lightbox .fa-spin,[id^=sb_youtube_].sb_youtube .fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}#sby_lightbox .fa-pulse,[id^=sb_youtube_].sb_youtube .fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}[id^=sb_youtube_].sb_youtube .sb_youtube_header{float:left;clear:both;margin:0 0 15px 0;padding:0;line-height:1.2;width:100%}[id^=sb_youtube_].sb_youtube .sb_youtube_header a{float:left;display:block;text-decoration:none;transition:color .5s ease}@media all and (min-width:480px){[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_img{width:80px;height:80px;border-radius:40px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_img img{width:80px;height:80px;border-radius:40px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text h3{font-size:20px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text .sby_bio,[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text .sby_bio_info{font-size:14px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text .sby_bio,[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text .sby_bio_info,[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text h3{margin-left:95px!important;line-height:1.4}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text h3{margin-right:-85px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text .sby_bio_info{margin-top:4px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text.sby_no_bio h3{padding-top:20px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_img{width:120px;height:120px;border-radius:60px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_img img{width:120px;height:120px;border-radius:60px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text h3{font-size:28px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text .sby_bio,[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text .sby_bio_info{font-size:16px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text .sby_bio,[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text .sby_bio_info,[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text h3{margin-left:140px!important;line-height:1.5}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text h3{margin-right:-120px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text .sby_bio_info{margin-top:12px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text.sby_no_bio h3{padding-top:32px!important}}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img{float:left;position:relative;width:50px;margin:0 0 0 -100%!important;overflow:hidden;-moz-border-radius:40px;-webkit-border-radius:40px;border-radius:40px}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img img{float:left;margin:0!important;padding:0!important;border:none!important;-moz-border-radius:40px;-webkit-border-radius:40px;border-radius:40px}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img_hover{opacity:0;position:absolute;width:100%;top:0;bottom:0;left:0;text-align:center;color:#fff;background:rgba(0,0,0,.75)}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img_hover .sby_new_logo{position:absolute;top:50%;left:50%;margin-top:-12px;margin-left:-12px;width:24px;height:24px;font-size:24px}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img_hover i{overflow:hidden;background:url(../img/small-logo.png) no-repeat 0 0}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img_hover{z-index:2;transition:opacity .4s ease-in-out}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_fade_in{opacity:1;transition:opacity .2s ease-in-out}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img_hover{position:absolute;width:100%;top:0;bottom:0;left:0;text-align:center;color:#fff;background:rgba(0,0,0,.75);-moz-opacity:0;-khtml-opacity:0;opacity:0;border-radius:40px;transition:opacity .2s}[id^=sb_youtube_].sb_youtube .sb_youtube_header a:focus .sby_header_img_hover,[id^=sb_youtube_].sb_youtube .sb_youtube_header a:hover .sby_header_img_hover{opacity:1}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_text{float:left;width:100%;padding-top:5px}[id^=sb_youtube_].sb_youtube .sb_youtube_header a{text-decoration:none}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_text .sby_bio,[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_text h3{float:left;clear:both;width:auto;margin:0 0 0 60px!important;padding:0!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header h3{font-size:16px;line-height:1.3}[id^=sb_youtube_].sb_youtube .sb_youtube_header p{font-size:13px;line-height:1.3;margin:0;padding:0}[id^=sb_youtube_].sb_youtube p:empty{display:none}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_text img.emoji{margin-right:3px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_text.sby_no_bio h3{padding-top:9px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_text.sby_no_bio .sby_bio_info{clear:both}[id^=sb_youtube_].sb_youtube .sby_footer{float:left;clear:both;width:100%;text-align:center}[id^=sb_youtube_].sb_youtube .sby_footer .fa-spinner{display:none;position:absolute;top:50%;left:50%;margin:-8px 0 0 -7px;font-size:15px}[id^=sb_youtube_].sb_youtube .sby_footer{opacity:1;transition:all .5s ease-in}[id^=sb_youtube_].sb_youtube .sby_load_btn .sby_btn_text,[id^=sb_youtube_].sb_youtube .sby_load_btn .sby_loader{opacity:1;transition:all .1s ease-in}[id^=sb_youtube_].sb_youtube .sby_hidden{opacity:0!important}[id^=sb_youtube_].sb_youtube .sby_follow_btn a,[id^=sb_youtube_].sb_youtube .sby_footer .sby_load_btn{display:-moz-inline-stack;display:inline-block;vertical-align:top;zoom:1;padding:7px 14px;margin:5px auto 0 auto;background:#333;color:#eee;border:none;color:#fff;text-decoration:none;font-size:13px;line-height:1.5;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[id^=sb_youtube_].sb_youtube .sby_footer .sby_load_btn{position:relative}[id^=sb_youtube_].sb_youtube .sby_follow_btn{display:-moz-inline-stack;display:inline-block;vertical-align:top;zoom:1;text-align:center}[id^=sb_youtube_].sb_youtube .sby_follow_btn.sby_top{display:block;margin-bottom:5px}[id^=sb_youtube_].sb_youtube .sby_follow_btn a{background:#408bd1;color:#fff}[id^=sb_youtube_].sb_youtube .sby_follow_btn a,[id^=sb_youtube_].sb_youtube .sby_footer .sby_load_btn{transition:all .1s ease-in}[id^=sb_youtube_].sb_youtube .sby_footer .sby_load_btn:hover{outline:0;box-shadow:inset 0 0 20px 20px rgba(255,255,255,.25)}[id^=sb_youtube_].sb_youtube .sby_follow_btn a:focus,[id^=sb_youtube_].sb_youtube .sby_follow_btn a:hover{outline:0;box-shadow:inset 0 0 10px 20px #359dff}[id^=sb_youtube_].sb_youtube .sby_follow_btn.sby_custom a:focus,[id^=sb_youtube_].sb_youtube .sby_follow_btn.sby_custom a:hover,[id^=sb_youtube_].sb_youtube .sby_footer .sby_load_btn.sby_custom:hover{box-shadow:inset 0 0 20px 20px rgba(255,255,255,.15)}[id^=sb_youtube_].sb_youtube .sby_follow_btn a:active,[id^=sb_youtube_].sb_youtube .sby_footer .sby_load_btn:active{box-shadow:inset 0 0 10px 20px rgba(0,0,0,.3)}[id^=sb_youtube_].sb_youtube .sby_follow_btn .fa,[id^=sb_youtube_].sb_youtube .sby_follow_btn svg{margin-bottom:-1px;margin-right:7px;font-size:15px}[id^=sb_youtube_].sb_youtube .sby_follow_btn svg{vertical-align:-.125em}[id^=sb_youtube_].sb_youtube .sby_footer .sby_follow_btn{margin-left:5px}@media all and (max-width:640px){[id^=sb_youtube_].sb_youtube.sby_col_3.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_4.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_5.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_6.sby_mob_col_auto .sby_items_wrap .sby_item{width:50%}[id^=sb_youtube_].sb_youtube.sby_col_10 .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_10.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_7 .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_7.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_8 .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_8.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_9 .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_9.sby_mob_col_auto .sby_items_wrap .sby_item{width:25%}[id^=sb_youtube_].sb_youtube.sby_col_2 .sby_items_wrap .sby_item{width:50%}[id^=sb_youtube_].sb_youtube.sby_col_3 .sby_items_wrap .sby_item{width:33.33%}[id^=sb_youtube_].sb_youtube.sby_col_4 .sby_items_wrap .sby_item{width:25%}[id^=sb_youtube_].sb_youtube.sby_col_5 .sby_items_wrap .sby_item{width:20%}[id^=sb_youtube_].sb_youtube.sby_col_6 .sby_items_wrap .sby_item{width:16.66%}[id^=sb_youtube_].sb_youtube.sby_col_7 .sby_items_wrap .sby_item{width:14.28%}[id^=sb_youtube_].sb_youtube.sby_col_8 .sby_items_wrap .sby_item{width:12.5%}[id^=sb_youtube_].sb_youtube.sby_col_9 .sby_items_wrap .sby_item{width:11.11%}[id^=sb_youtube_].sb_youtube.sby_col_10 .sby_items_wrap .sby_item{width:10%}[id^=sb_youtube_].sb_youtube.sby_width_resp{width:100%!important}}@media all and (max-width:480px){[id^=sb_youtube_].sb_youtube.sby_col_10.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_3.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_4.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_5.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_6.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_7.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_8.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_9.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_mob_col_1 .sby_items_wrap .sby_item{width:100%}[id^=sb_youtube_].sb_youtube.sby_mob_col_2 .sby_items_wrap .sby_item{width:50%}[id^=sb_youtube_].sb_youtube.sby_mob_col_3 .sby_items_wrap .sby_item{width:33.33%}[id^=sb_youtube_].sb_youtube.sby_mob_col_4 .sby_items_wrap .sby_item{width:25%}[id^=sb_youtube_].sb_youtube.sby_mob_col_5 .sby_items_wrap .sby_item{width:20%}[id^=sb_youtube_].sb_youtube.sby_mob_col_6 .sby_items_wrap .sby_item{width:16.66%}[id^=sb_youtube_].sb_youtube.sby_mob_col_7 .sby_items_wrap .sby_item{width:14.28%}}.sby_lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:#000;opacity:.9;display:none}.sby_lightbox{position:absolute;left:0;width:100%;z-index:10000;text-align:center;line-height:0;font-weight:400}.sby_lightbox .sby_lb-image{display:block;height:auto;max-width:inherit;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.sby_lightbox a:active,.sby_lightbox a:focus,.sby_lightbox a:hover{outline:0}.sby_lightbox a img{border:none}.sby_lb-outerContainer{position:relative;background-color:#000;width:250px;height:250px;margin:0 auto 5px auto;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.sby_lb-outerContainer:after{content:"";display:table;clear:both}.sby_lb-container{position:relative;padding:4px;top:0;left:0;width:100%;height:100%;bottom:0;right:0;overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.sby_lb-loader{position:absolute;top:43%;left:0;height:25%;width:100%;text-align:center;line-height:0}.sby_lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background-color:#666;background-color:rgba(255,255,255,.5);border-radius:100%;-webkit-animation:ctf-sk-scaleout 1s infinite ease-in-out;animation:ctf-sk-scaleout 1s infinite ease-in-out}.sby_lb-nav{top:0;left:0;width:100%;z-index:10}.sby_lb-container>.nav{left:0}.sby_lb-nav a{position:absolute;z-index:100;top:0;height:90%;outline:0}.sby_lb-next,.sby_lb-prev{height:100%;cursor:pointer;display:block}.sby_lb-nav a.sby_lb-prev{width:30%;left:0;float:left;background:url(../img/prev.png) left 52% no-repeat;opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.ctf-audio-iframe .sby_lb-nav a.sby_lb-prev{max-width:100px;height:80%;margin-top:10%;background:url(../img/prev.png) left 0 top 35% no-repeat}.sby_lb-nav a.sby_lb-prev:hover{opacity:1}.sby_lb-nav a.sby_lb-next{width:30%;right:0;float:right;background:url(../img/next.png) right 52% no-repeat;opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.sby_lb-nav a.sby_lb-next:hover{opacity:1}.sby_lb-dataContainer{margin:0 auto;padding-top:5px;width:100%;font-family:"Open Sans",Helvetica,Arial,sans-serif;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.sby_lb-dataContainer:after{content:"";display:table;clear:both}.sby_lb-data{padding:0 4px;color:#ccc}.sby_lb-data .sby_lb-details{width:85%;float:left;text-align:left;line-height:1.1}.sby_lb-data .sby_lb-caption{float:left;font-size:13px;font-weight:400;line-height:1.3;padding-bottom:3px;color:#ccc;word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto}.sby_lb-data .sby_lb-caption .ctf-screename-sep,.sby_lb-data .sby_lb-caption a{color:#ccc;font-weight:700;text-decoration:none}.sby_lb-data .sby_lb-caption a:hover{color:#fff;text-decoration:underline}.sby_lb-data .sby_lb-caption .sby_lightbox_username{float:left;width:100%;color:#ccc;padding-bottom:0;display:block;margin:0 0 5px 0}.sby_lb-data .sby_lb-caption .sby_lightbox_username{color:#ccc}.sby_lb-data .sby_lb-caption .sby_lightbox_username:hover p{color:#fff;text-decoration:underline}.sby_lightbox .sby_lightbox_username img{float:left;border:none;width:48px;height:48px;margin-right:10px;background:#666;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sby_lightbox_username p{float:left;margin:0;padding:0;color:#ccc;line-height:32px;font-weight:700;font-size:13px;text-align:left}.sby_lb-data .ctf-caption-text{width:100%;margin-left:58px;padding-top:3px}.sby_lb-data .sby_lb-caption .ctf-author-screenname,.sby_lb-data .sby_lb-caption .ctf-tweet-date{font-weight:400}.sby_lb-data .sby_lb-info{width:100%;float:left;clear:both}.sby_lb-data .sby_lb-number{display:block;float:left;clear:both;padding:5px 0 15px 0;font-size:12px;color:#999}.sby_lb-data .sby_lb-close{display:block;float:right;width:30px;height:30px;background:url(../img/close.png) top right no-repeat;text-align:right;outline:0;opacity:.7;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.sby_lb-data .sby_lb-close:hover{cursor:pointer;opacity:1}.sby_lb-nav{height:auto}.sby_lb-container{padding:0}.sby_lb-container iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}#sby_lightbox .sby_lightbox_action{float:left;position:relative;padding:0 0 0 10px;margin:5px 0 0 10px;border-left:1px solid #666;font-size:12px}#sby_lightbox .sby_lightbox_action a{display:block;float:left;color:#999;text-decoration:none}#sby_lightbox .sby_lightbox_action a:focus,#sby_lightbox .sby_lightbox_action a:hover{color:#fff}#sby_lightbox .sby_lightbox_action .fa,#sby_lightbox .sby_lightbox_action svg{margin-right:5px}#sby_lightbox .sby_lightbox_action.sby_youtube .fa{font-size:13px}#sby_lightbox .sby_tooltip_social a svg{font-size:19px;padding:3px 4px;margin:auto}#sby_lightbox .sby_lightbox_tooltip{display:none;position:absolute;width:100px;bottom:22px;left:0;padding:5px 10px;margin:0;background:rgba(255,255,255,.9);color:#222;font-size:12px;line-height:1.3;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;box-shadow:0 0 10px rgba(0,0,0,.4);-moz-box-shadow:0 0 10px rgba(0,0,0,.4);-webkit-box-shadow:0 0 10px rgba(0,0,0,.4);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#sby_lightbox .sby_lightbox_tooltip .fa-play{position:absolute;font-size:8px;bottom:-6px;left:36px;color:rgba(255,255,255,.9)}#sby_lightbox .sby_tooltip_social a .fa{font-size:16px;margin:0;padding:5px}#sby_lightbox .sby_tooltip_social a#sby_facebook_icon .fa,#sby_lightbox .sby_tooltip_social a#sby_pinterest_icon .fa,#sby_lightbox .sby_tooltip_social a#sby_twitter_icon .fa{padding-top:4px;font-size:18px}#sby_lightbox #sby_mod_box{width:280px;padding:5px 10px 7px 10px}#sby_lightbox .sby_tooltip_social{width:172px;padding:5px 5px 4px 5px}#sby_lightbox .sby_tooltip_social a{color:#333;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}#sby_lightbox .sby_lightbox_action #sby_facebook_icon:hover{background:#3b5998}#sby_lightbox .sby_lightbox_action #sby_twitter_icon:hover{background:#00aced}#sby_lightbox .sby_lightbox_action #sby_google_icon:hover{background:#dd4b39}#sby_lightbox .sby_lightbox_action #sby_linkedin_icon:hover{background:#007bb6}#sby_lightbox .sby_lightbox_action #sby_pinterest_icon:hover{background:#cb2027}#sby_lightbox .sby_lightbox_action #sby_email_icon:hover{background:#333}.sby_lb-dataContainer,.sby_lb-outerContainer{min-width:450px}@media all and (max-width:450px){.sby_lb-dataContainer,.sby_lb-outerContainer{min-width:0}}.sby_lightbox .sby_lb-image{display:block;height:auto;max-width:inherit;margin:0 auto;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#sby_mod_error{display:none;border:1px solid #ddd;background:#eee;color:#333;margin:10px 0 0;padding:10px 15px;font-size:13px;text-align:center;clear:both;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}#sby_mod_error p{padding:5px 0!important;margin:0!important;line-height:1.3!important}#sby_mod_error ol,#sby_mod_error ul{padding:5px 0 5px 20px!important;margin:0!important}#sby_mod_error li{padding:1px 0!important;margin:0!important}#sby_mod_error span{font-size:12px}[id^=sb_youtube_].sb_youtube svg:not(:root).svg-inline--fa,[id^=sb_youtube_].sb_youtube_lightbox svg:not(:root).svg-inline--fa{box-sizing:unset;overflow:visible;width:1em}[id^=sb_youtube_].sb_youtube .svg-inline--fa.fa-w-16{width:16px}[id^=sb_youtube_].sb_youtube .svg-inline--fa,[id^=sb_youtube_].sb_youtube_lightbox .svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}
1
+ [id^=sb_youtube_].sb_youtube{width:100%;margin:0 auto;padding:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[id^=sb_youtube_].sb_youtube:after{content:"";display:table;clear:both}[id^=sb_youtube_].sb_youtube.sby_fixed_height{overflow:hidden;overflow-y:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[id^=sb_youtube_].sb_youtube .sby_items_wrap{width:100%;float:left;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[id^=sb_youtube_].sb_youtube .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube .sby_player_outer_wrap .sby_video_thumbnail_wrap,[id^=sb_youtube_].sb_youtube .sby_player_wrap{display:-moz-inline-stack;display:inline-block;vertical-align:top;zoom:1;max-height:1000px;padding:inherit!important;text-decoration:none;opacity:1;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;-ms-transition:all .5s ease;transition:all .5s ease}[id^=sb_youtube_].sb_youtube .sby_items_wrap .sby_item.sby_no_margin{margin:0!important}[id^=sb_youtube_].sb_youtube .sby_items_wrap .sby_item{float:left}[id^=sb_youtube_].sb_youtube .sby_items_wrap .sby_item.sby_transition{opacity:0;max-height:0}[id^=sb_youtube_].sb_youtube.sby_col_0 .sby_items_wrap .sby_item{width:100%}[id^=sb_youtube_].sb_youtube.sby_col_1 .sby_items_wrap .sby_item{width:100%}[id^=sb_youtube_].sb_youtube.sby_col_2 .sby_items_wrap .sby_item{width:50%}[id^=sb_youtube_].sb_youtube.sby_col_3 .sby_items_wrap .sby_item{width:33.33%}[id^=sb_youtube_].sb_youtube.sby_col_4 .sby_items_wrap .sby_item{width:25%}[id^=sb_youtube_].sb_youtube.sby_col_5 .sby_items_wrap .sby_item{width:20%}[id^=sb_youtube_].sb_youtube.sby_col_6 .sby_items_wrap .sby_item{width:16.66%}[id^=sb_youtube_].sb_youtube.sby_col_7 .sby_items_wrap .sby_item{width:14.28%}[id^=sb_youtube_].sb_youtube.sby_col_8 .sby_items_wrap .sby_item{width:12.5%}[id^=sb_youtube_].sb_youtube.sby_col_9 .sby_items_wrap .sby_item{width:11.11%}[id^=sb_youtube_].sb_youtube.sby_col_10 .sby_items_wrap .sby_item{width:10%}.sby-screenreader{text-indent:-9999px!important;display:block!important;width:0!important;height:0!important;line-height:0!important}[id^=sb_youtube_].sb_youtube .sby_player_outer_wrap,[id^=sb_youtube_].sb_youtube .sby_video_thumbnail_wrap{width:100%;position:relative;float:left}[id^=sb_youtube_].sb_youtube .sby_video_thumbnail{display:block;position:relative;text-decoration:none;line-height:0;z-index:5}[id^=sb_youtube_].sb_youtube .sby_video_thumbnail img{width:100%;height:auto;border-radius:0}[id^=sb_youtube_].sb_youtube .sby_link{display:none;position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;width:100%;padding:0;background:#333;background:rgba(0,0,0,.6);text-align:center;color:#fff;font-size:12px;line-height:1.1;overflow:hidden}[id^=sb_youtube_].sb_youtube .sby_link.sby_default a,[id^=sb_youtube_].sb_youtube .sby_link.sby_default p,[id^=sb_youtube_].sb_youtube .sby_link.sby_default span{text-shadow:0 0 10px #000}[id^=sb_youtube_].sb_youtube .sby_link .sby_hover_bottom,[id^=sb_youtube_].sb_youtube .sby_link .sby_lightbox_link,[id^=sb_youtube_].sb_youtube .sby_link .sby_playbtn,[id^=sb_youtube_].sb_youtube .sby_link .sby_username a,[id^=sb_youtube_].sb_youtube .sby_link .sby_youtube_link,[id^=sb_youtube_].sb_youtube .sby_link .svg-inline--fa.fa-play{opacity:.9}[id^=sb_youtube_].sb_youtube .sby_link .sby_lightbox_link:hover,[id^=sb_youtube_].sb_youtube .sby_link .sby_playbtn:hover,[id^=sb_youtube_].sb_youtube .sby_link .sby_username a:hover,[id^=sb_youtube_].sb_youtube .sby_link .sby_youtube_link:hover,[id^=sb_youtube_].sb_youtube .sby_link .svg-inline--fa.fa-play:hover{opacity:1}[id^=sb_youtube_].sb_youtube .sby_link_area{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}[id^=sb_youtube_].sb_youtube .sby_link a{padding:0;text-decoration:none;color:#ddd;color:rgba(255,255,255,.7);line-height:1.1;background:0 0;display:-moz-inline-stack;display:inline-block;vertical-align:top;zoom:1}[id^=sb_youtube_].sb_youtube .sby_link a:active,[id^=sb_youtube_].sb_youtube .sby_link a:hover{color:#fff}[id^=sb_youtube_].sb_youtube .sby_link .sby_lightbox_link{display:block;position:absolute;z-index:2;top:50%;left:50%;margin-top:-24px;margin-left:-21px;padding:0;font-size:49px;font-style:normal!important}[id^=sb_youtube_].sb_youtube .sby_carousel_vid_first .sby_lightbox_link,[id^=sb_youtube_].sb_youtube .sby_type_video .sby_lightbox_link{display:none}[id^=sb_youtube_].sb_youtube .sby_link .sby_youtube_link{font-size:30px;position:absolute;z-index:100;bottom:0;right:2px;padding:8px}[id^=sb_youtube_].sb_youtube .sby_link a:focus,[id^=sb_youtube_].sb_youtube .sby_link a:hover{text-decoration:underline}[id^=sb_youtube_].sb_youtube .sby_player_wrap{z-index:1;width:100%!important;height:100%!important;position:absolute;top:0;left:0}[id^=sb_youtube_].sb_youtube .sby_player_wrap iframe{width:100%!important;height:100%!important}[id^=sb_youtube_].sb_youtube .sby_thumbnail_hover{opacity:0;display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;color:#fff;background:#333;background:rgba(0,0,0,.6);transition:opacity .6s ease-in-out;-moz-transition:opacity .6s ease-in-out;-webkit-transition:opacity .6s ease-in-out}[id^=sb_youtube_].sb_youtube.sby_layout_list .sby_thumbnail_hover{display:none}.sby_video_title{display:inline-block;height:100%;padding:10px;overflow:hidden;font-size:13px;line-height:1.2}[id^=sb_youtube_].sb_youtube .sby_video_thumbnail:hover .sby_thumbnail_hover{opacity:1;display:block;transition:opacity .2s ease-in-out;-moz-transition:opacity .2s ease-in-out;-webkit-transition:opacity .2s ease-in-out}[id^=sb_youtube_].sb_youtube.sby_layout_list .sby_video_thumbnail:hover .sby_thumbnail_hover{opacity:0;display:none;transition:none;-moz-transition:none;-webkit-transition:none}[id^=sb_youtube_].sb_youtube .sby_video_thumbnail:hover .sby_play_btn{opacity:.5}[id^=sb_youtube_].sb_youtube .sby_play_btn{position:absolute;left:50%;bottom:50%;top:50%;right:50%;margin-top:-24px;margin-left:-24px;color:#fff;width:48px;opacity:1;transition:opacity .2s ease-in-out;-moz-transition:opacity .2s ease-in-out;-webkit-transition:opacity .2s ease-in-out}[id^=sb_youtube_].sb_youtube .sby_play_btn svg:not(:root).svg-inline--fa{width:48px;height:auto}[id^=sb_youtube_].sb_youtube .sby_play_btn i,[id^=sb_youtube_].sb_youtube .sby_play_btn svg{-webkit-filter:drop-shadow( 0 0 2px rgba(0,0,0,.4) );filter:drop-shadow( 0 0 2px rgba(0,0,0,.4) )}[id^=sb_youtube_].sb_youtube.sby_medium .sby_play_btn{margin-top:-12px;margin-left:-10px;width:23px}[id^=sb_youtube_].sb_youtube.sby_medium .sby_play_btn svg.svg-inline--fa.fa-play{width:23px}[id^=sb_youtube_].sb_youtube.sby_small .sby_play_btn{margin-top:-9px;margin-left:-7px;width:18px}[id^=sb_youtube_].sb_youtube.sby_small .sby_play_btn svg.svg-inline--fa.fa-play{width:18px}[id^=sb_youtube_].sb_youtube .sby_loader{width:20px;height:20px;position:relative;top:50%;left:50%;margin:-10px 0 0 -10px;background-color:#000;background-color:rgba(0,0,0,.5);border-radius:100%;-webkit-animation:sby-sk-scaleout 1s infinite ease-in-out;animation:sby-sk-scaleout 1s infinite ease-in-out}[id^=sb_youtube_].sb_youtube br{display:none}.sby_footer p{display:inline;padding:0;margin:0}[id^=sb_youtube_].sb_youtube .sby_footer .sby_loader,[id^=sb_youtube_].sb_youtube .sby_item .sby_loader,[id^=sb_youtube_].sb_youtube .sby_player_outer_wrap .sby_loader{position:absolute;margin-top:-11px;background-color:#fff}[id^=sb_youtube_].sb_youtube .sby_item.sby_player_loading,[id^=sb_youtube_].sb_youtube .sby_player_outer_wrap.sby_player_loading{opacity:.8}@-webkit-keyframes sby-sk-scaleout{0%{-webkit-transform:scale(0)}100%{-webkit-transform:scale(1);opacity:0}}@keyframes sby-sk-scaleout{0%{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}100%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:0}}#sby_lightbox .fa-spin,[id^=sb_youtube_].sb_youtube .fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}#sby_lightbox .fa-pulse,[id^=sb_youtube_].sb_youtube .fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}[id^=sb_youtube_].sb_youtube .sb_youtube_header{float:left;clear:both;margin:0 0 15px 0;padding:0;line-height:1.2;width:100%}[id^=sb_youtube_].sb_youtube .sb_youtube_header a{float:left;display:block;text-decoration:none;transition:color .5s ease}@media all and (min-width:480px){[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_img{width:80px;height:80px;border-radius:40px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_img img{width:80px;height:80px;border-radius:40px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text h3{font-size:20px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text .sby_bio,[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text .sby_bio_info{font-size:14px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text .sby_bio,[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text .sby_bio_info,[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text h3{margin-left:95px!important;line-height:1.4}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text h3{margin-right:-85px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text .sby_bio_info{margin-top:4px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_medium .sby_header_text.sby_no_bio h3{padding-top:20px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_img{width:120px;height:120px;border-radius:60px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_img img{width:120px;height:120px;border-radius:60px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text h3{font-size:28px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text .sby_bio,[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text .sby_bio_info{font-size:16px}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text .sby_bio,[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text .sby_bio_info,[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text h3{margin-left:140px!important;line-height:1.5}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text h3{margin-right:-120px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text .sby_bio_info{margin-top:12px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header.sby_large .sby_header_text.sby_no_bio h3{padding-top:32px!important}}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img{float:left;position:relative;width:50px;margin:0 0 0 -100%!important;overflow:hidden;-moz-border-radius:40px;-webkit-border-radius:40px;border-radius:40px}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img img{float:left;margin:0!important;padding:0!important;border:none!important;-moz-border-radius:40px;-webkit-border-radius:40px;border-radius:40px}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img_hover{opacity:0;position:absolute;width:100%;top:0;bottom:0;left:0;text-align:center;color:#fff;background:rgba(0,0,0,.75)}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img_hover .sby_new_logo{position:absolute;top:50%;left:50%;margin-top:-12px;margin-left:-12px;width:24px;height:24px;font-size:24px}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img_hover i{overflow:hidden;background:url(../img/small-logo.png) no-repeat 0 0}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img_hover{z-index:2;transition:opacity .4s ease-in-out}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_fade_in{opacity:1;transition:opacity .2s ease-in-out}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_img_hover{position:absolute;width:100%;top:0;bottom:0;left:0;text-align:center;color:#fff;background:rgba(0,0,0,.75);-moz-opacity:0;-khtml-opacity:0;opacity:0;border-radius:40px;transition:opacity .2s}[id^=sb_youtube_].sb_youtube .sb_youtube_header a:focus .sby_header_img_hover,[id^=sb_youtube_].sb_youtube .sb_youtube_header a:hover .sby_header_img_hover{opacity:1}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_text{float:left;width:100%;padding-top:5px}[id^=sb_youtube_].sb_youtube .sb_youtube_header a{text-decoration:none}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_text .sby_bio,[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_text h3{float:left;clear:both;width:auto;margin:0 0 0 60px!important;padding:0!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header h3{font-size:16px;line-height:1.3}[id^=sb_youtube_].sb_youtube .sb_youtube_header p{font-size:13px;line-height:1.3;margin:0;padding:0}[id^=sb_youtube_].sb_youtube p:empty{display:none}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_text img.emoji{margin-right:3px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_text.sby_no_bio h3{padding-top:9px!important}[id^=sb_youtube_].sb_youtube .sb_youtube_header .sby_header_text.sby_no_bio .sby_bio_info{clear:both}[id^=sb_youtube_].sb_youtube .sby_footer{float:left;clear:both;width:100%;text-align:center}[id^=sb_youtube_].sb_youtube .sby_footer .fa-spinner{display:none;position:absolute;top:50%;left:50%;margin:-8px 0 0 -7px;font-size:15px}[id^=sb_youtube_].sb_youtube .sby_footer{opacity:1;transition:all .5s ease-in}[id^=sb_youtube_].sb_youtube .sby_load_btn .sby_btn_text,[id^=sb_youtube_].sb_youtube .sby_load_btn .sby_loader{opacity:1;transition:all .1s ease-in}[id^=sb_youtube_].sb_youtube .sby_hidden{opacity:0!important}[id^=sb_youtube_].sb_youtube .sby_follow_btn a,[id^=sb_youtube_].sb_youtube .sby_footer .sby_load_btn{display:-moz-inline-stack;display:inline-block;vertical-align:top;zoom:1;padding:7px 14px;margin:5px auto 0 auto;background:#333;color:#eee;border:none;color:#fff;text-decoration:none;font-size:13px;line-height:1.5;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}[id^=sb_youtube_].sb_youtube .sby_footer .sby_load_btn{position:relative}[id^=sb_youtube_].sb_youtube .sby_follow_btn{display:-moz-inline-stack;display:inline-block;vertical-align:top;zoom:1;text-align:center}[id^=sb_youtube_].sb_youtube .sby_follow_btn.sby_top{display:block;margin-bottom:5px}[id^=sb_youtube_].sb_youtube .sby_follow_btn a{background:#408bd1;color:#fff}[id^=sb_youtube_].sb_youtube .sby_follow_btn a,[id^=sb_youtube_].sb_youtube .sby_footer .sby_load_btn{transition:all .1s ease-in}[id^=sb_youtube_].sb_youtube .sby_footer .sby_load_btn:hover{outline:0;box-shadow:inset 0 0 20px 20px rgba(255,255,255,.25)}[id^=sb_youtube_].sb_youtube .sby_follow_btn a:focus,[id^=sb_youtube_].sb_youtube .sby_follow_btn a:hover{outline:0;box-shadow:inset 0 0 10px 20px #359dff}[id^=sb_youtube_].sb_youtube .sby_follow_btn.sby_custom a:focus,[id^=sb_youtube_].sb_youtube .sby_follow_btn.sby_custom a:hover,[id^=sb_youtube_].sb_youtube .sby_footer .sby_load_btn.sby_custom:hover{box-shadow:inset 0 0 20px 20px rgba(255,255,255,.15)}[id^=sb_youtube_].sb_youtube .sby_follow_btn a:active,[id^=sb_youtube_].sb_youtube .sby_footer .sby_load_btn:active{box-shadow:inset 0 0 10px 20px rgba(0,0,0,.3)}[id^=sb_youtube_].sb_youtube .sby_follow_btn .fa,[id^=sb_youtube_].sb_youtube .sby_follow_btn svg{margin-bottom:-1px;margin-right:7px;font-size:15px}[id^=sb_youtube_].sb_youtube .sby_follow_btn svg{vertical-align:-.125em}[id^=sb_youtube_].sb_youtube .sby_footer .sby_follow_btn{margin-left:5px}@media all and (max-width:640px){[id^=sb_youtube_].sb_youtube.sby_col_3.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_4.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_5.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_6.sby_mob_col_auto .sby_items_wrap .sby_item{width:50%}[id^=sb_youtube_].sb_youtube.sby_col_10 .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_10.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_7 .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_7.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_8 .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_8.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_9 .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_9.sby_mob_col_auto .sby_items_wrap .sby_item{width:25%}[id^=sb_youtube_].sb_youtube.sby_col_2 .sby_items_wrap .sby_item{width:50%}[id^=sb_youtube_].sb_youtube.sby_col_3 .sby_items_wrap .sby_item{width:33.33%}[id^=sb_youtube_].sb_youtube.sby_col_4 .sby_items_wrap .sby_item{width:25%}[id^=sb_youtube_].sb_youtube.sby_col_5 .sby_items_wrap .sby_item{width:20%}[id^=sb_youtube_].sb_youtube.sby_col_6 .sby_items_wrap .sby_item{width:16.66%}[id^=sb_youtube_].sb_youtube.sby_col_7 .sby_items_wrap .sby_item{width:14.28%}[id^=sb_youtube_].sb_youtube.sby_col_8 .sby_items_wrap .sby_item{width:12.5%}[id^=sb_youtube_].sb_youtube.sby_col_9 .sby_items_wrap .sby_item{width:11.11%}[id^=sb_youtube_].sb_youtube.sby_col_10 .sby_items_wrap .sby_item{width:10%}[id^=sb_youtube_].sb_youtube.sby_width_resp{width:100%!important}}@media all and (max-width:480px){[id^=sb_youtube_].sb_youtube.sby_col_10.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_3.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_4.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_5.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_6.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_7.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_8.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_col_9.sby_mob_col_auto .sby_items_wrap .sby_item,[id^=sb_youtube_].sb_youtube.sby_mob_col_1 .sby_items_wrap .sby_item{width:100%}[id^=sb_youtube_].sb_youtube.sby_mob_col_2 .sby_items_wrap .sby_item{width:50%}[id^=sb_youtube_].sb_youtube.sby_mob_col_3 .sby_items_wrap .sby_item{width:33.33%}[id^=sb_youtube_].sb_youtube.sby_mob_col_4 .sby_items_wrap .sby_item{width:25%}[id^=sb_youtube_].sb_youtube.sby_mob_col_5 .sby_items_wrap .sby_item{width:20%}[id^=sb_youtube_].sb_youtube.sby_mob_col_6 .sby_items_wrap .sby_item{width:16.66%}[id^=sb_youtube_].sb_youtube.sby_mob_col_7 .sby_items_wrap .sby_item{width:14.28%}}.sby_lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:#000;opacity:.9;display:none}.sby_lightbox{position:absolute;left:0;width:100%;z-index:10000;line-height:0;font-weight:400}.sby_lightbox .sby_lb-image{display:block;height:auto;max-width:inherit;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.sby_lightbox a:active,.sby_lightbox a:focus,.sby_lightbox a:hover{outline:0}.sby_lightbox a img{border:none}.sby_lb-outerContainer{position:relative;background-color:#000;width:250px;height:250px;margin:0 auto 5px auto;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.sby_lb-outerContainer:after{content:"";display:table;clear:both}.sby_lb-container{position:relative;padding:4px;top:0;left:0;width:100%;height:100%;bottom:0;right:0;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.sby_lb-loader{position:absolute;top:43%;left:0;height:25%;width:100%;text-align:center;line-height:0}.sby_lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background-color:#666;background-color:rgba(255,255,255,.5);border-radius:100%;-webkit-animation:ctf-sk-scaleout 1s infinite ease-in-out;animation:ctf-sk-scaleout 1s infinite ease-in-out}.sby_lb-nav{top:0;left:0;width:100%;z-index:10}.sby_lb-container>.nav{left:0}.sby_lb-nav a{position:absolute;z-index:100;top:0;height:90%;outline:0;background-image:url(data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==)}.sby_lb-next,.sby_lb-prev{height:100%;cursor:pointer;display:block}.sby_lb-nav a.sby_lb-prev{width:50px;left:-70px;padding-left:10px;padding-right:10px;float:left;opacity:.5;-webkit-transition:opacity .2s;-moz-transition:opacity .2;-o-transition:opacity .2s;transition:opacity .2s}.sby_lb-nav a.sby_lb-prev:hover{opacity:1}.sby_lb-nav a.sby_lb-next{width:50px;right:-70px;padding-left:10px;padding-right:10px;float:right;opacity:.5;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.sby_lb-nav a.sby_lb-next:hover{opacity:1}.sby_lb-nav span{display:block;top:55%;position:absolute;left:20px;width:34px;height:45px;margin:-25px 0 0 0;background:url(../img/sby-sprite.png) no-repeat}.sby_lb-nav a.sby_lb-prev span{background-position:-53px 0}.sby_lb-nav a.sby_lb-next span{left:auto;right:20px;background-position:-18px 0}.sby_lb-dataContainer{margin:0 auto;padding-top:5px;width:100%;font-family:"Open Sans",Helvetica,Arial,sans-serif;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.sby_lb-dataContainer:after{content:"";display:table;clear:both}.sby_lb-data{padding:0 4px;color:#ccc}.sby_lb-data .sby_lb-details{width:85%;float:left;text-align:left;line-height:1.1}.sby_lb-data .sby_lb-caption{float:left;font-size:13px;font-weight:400;line-height:1.3;padding-bottom:3px;color:#ccc;word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto}.sby_lb-data .sby_lb-caption .ctf-screename-sep,.sby_lb-data .sby_lb-caption a{color:#ccc;font-weight:700;text-decoration:none}.sby_lb-data .sby_lb-caption a:hover{color:#fff;text-decoration:underline}.sby_lb-data .sby_lb-caption .sby_lightbox_username{float:left;width:100%;color:#ccc;padding-bottom:0;display:block;margin:0 0 5px 0}.sby_lb-data .sby_lb-caption .sby_lightbox_username{color:#ccc}.sby_lb-data .sby_lb-caption .sby_lightbox_username:hover p{color:#fff;text-decoration:underline}.sby_lightbox .sby_lightbox_username img{float:left;border:none;width:48px;height:48px;margin-right:10px;background:#666;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sby_lightbox_username p{float:left;margin:0;padding:0;color:#ccc;line-height:32px;font-weight:700;font-size:13px;text-align:left}.sby_lb-data .ctf-caption-text{width:100%;margin-left:58px;padding-top:3px}.sby_lb-data .sby_lb-caption .ctf-author-screenname,.sby_lb-data .sby_lb-caption .ctf-tweet-date{font-weight:400}.sby_lb-data .sby_lb-info{width:100%;float:left;clear:both}.sby_lb-data .sby_lb-number{display:block;float:left;clear:both;padding:5px 0 15px 0;font-size:12px;color:#999}.sby_lb-data .sby_lb-close{display:block;float:right;width:30px;height:30px;background:url(../img/close.png) top right no-repeat;text-align:right;outline:0;opacity:.7;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.sby_lb-data .sby_lb-close:hover{cursor:pointer;opacity:1}.sby_lb-nav{height:auto}.sby_lb-container{padding:0}.sby_lb-container iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}#sby_lightbox .sby_lightbox_action{float:left;position:relative;padding:0 0 0 10px;margin:5px 0 0 10px;border-left:1px solid #666;font-size:12px}#sby_lightbox .sby_lightbox_action a{display:block;float:left;color:#999;text-decoration:none}#sby_lightbox .sby_lightbox_action a:focus,#sby_lightbox .sby_lightbox_action a:hover{color:#fff}#sby_lightbox .sby_lightbox_action .fa,#sby_lightbox .sby_lightbox_action svg{margin-right:5px}#sby_lightbox .sby_lightbox_action.sby_youtube .fa{font-size:13px}#sby_lightbox .sby_tooltip_social a svg{font-size:19px;padding:3px 4px;margin:auto}#sby_lightbox .sby_lightbox_tooltip{display:none;position:absolute;width:100px;bottom:22px;left:0;padding:5px 10px;margin:0;background:rgba(255,255,255,.9);color:#222;font-size:12px;line-height:1.3;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;box-shadow:0 0 10px rgba(0,0,0,.4);-moz-box-shadow:0 0 10px rgba(0,0,0,.4);-webkit-box-shadow:0 0 10px rgba(0,0,0,.4);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#sby_lightbox .sby_lightbox_tooltip .fa-play{position:absolute;font-size:8px;bottom:-6px;left:36px;color:rgba(255,255,255,.9)}#sby_lightbox .sby_tooltip_social a .fa{font-size:16px;margin:0;padding:5px}#sby_lightbox .sby_tooltip_social a#sby_facebook_icon .fa,#sby_lightbox .sby_tooltip_social a#sby_pinterest_icon .fa,#sby_lightbox .sby_tooltip_social a#sby_twitter_icon .fa{padding-top:4px;font-size:18px}#sby_lightbox #sby_mod_box{width:280px;padding:5px 10px 7px 10px}#sby_lightbox .sby_tooltip_social{width:172px;padding:5px 5px 4px 5px}#sby_lightbox .sby_tooltip_social a{color:#333;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}#sby_lightbox .sby_lightbox_action #sby_facebook_icon:hover{background:#3b5998}#sby_lightbox .sby_lightbox_action #sby_twitter_icon:hover{background:#00aced}#sby_lightbox .sby_lightbox_action #sby_google_icon:hover{background:#dd4b39}#sby_lightbox .sby_lightbox_action #sby_linkedin_icon:hover{background:#007bb6}#sby_lightbox .sby_lightbox_action #sby_pinterest_icon:hover{background:#cb2027}#sby_lightbox .sby_lightbox_action #sby_email_icon:hover{background:#333}.sby_lb-dataContainer,.sby_lb-outerContainer{min-width:450px}@media all and (max-width:450px){.sby_lb-dataContainer,.sby_lb-outerContainer{min-width:0}}.sby_lightbox .sby_lb-image{display:block;height:auto;max-width:inherit;margin:0 auto;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#sby_mod_error{display:none;border:1px solid #ddd;background:#eee;color:#333;margin:10px 0 0;padding:10px 15px;font-size:13px;text-align:center;clear:both;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}#sby_mod_error p{padding:5px 0!important;margin:0!important;line-height:1.3!important}#sby_mod_error ol,#sby_mod_error ul{padding:5px 0 5px 20px!important;margin:0!important}#sby_mod_error li{padding:1px 0!important;margin:0!important}#sby_mod_error span{font-size:12px}[id^=sb_youtube_].sb_youtube svg:not(:root).svg-inline--fa,[id^=sb_youtube_].sb_youtube_lightbox svg:not(:root).svg-inline--fa{box-sizing:unset;overflow:visible;width:1em}[id^=sb_youtube_].sb_youtube .svg-inline--fa.fa-w-16{width:16px}[id^=sb_youtube_].sb_youtube .svg-inline--fa,[id^=sb_youtube_].sb_youtube_lightbox .svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}[id^=sb_youtube_].sb_youtube.sby_player_loaded .sby_player_outer_wrap .sby_video_thumbnail,[id^=sb_youtube_].sb_youtube.sby_player_loaded.sby_layout_list .sby_video_thumbnail{z-index:-1!important}
img/sby-sprite.png ADDED
Binary file
inc/admin/admin-functions.php CHANGED
@@ -61,7 +61,7 @@ function sby_admin_init() {
61
  'label' => __( 'Channel', SBY_TEXT_DOMAIN ),
62
  'input_type' => 'text',
63
  'default' => $first_channel_id,
64
- 'note' => __( 'Eg: Channel ID or User Name.', SBY_TEXT_DOMAIN ),
65
  'tooltip' => '<p><ul>
66
  <li><b>' . __( 'Channel ID or User Name', SBY_TEXT_DOMAIN ).'</b><br>
67
  ' . __( 'You can find the ID or User Name of your YouTube Channel from the URL. In each URL format, the text you need to use is highlighted below:', SBY_TEXT_DOMAIN ).'<br><br>
61
  'label' => __( 'Channel', SBY_TEXT_DOMAIN ),
62
  'input_type' => 'text',
63
  'default' => $first_channel_id,
64
+ 'note' => __( 'Eg: Channel ID or User Name', SBY_TEXT_DOMAIN ),
65
  'tooltip' => '<p><ul>
66
  <li><b>' . __( 'Channel ID or User Name', SBY_TEXT_DOMAIN ).'</b><br>
67
  ' . __( 'You can find the ID or User Name of your YouTube Channel from the URL. In each URL format, the text you need to use is highlighted below:', SBY_TEXT_DOMAIN ).'<br><br>
inc/admin/class-sbspf-admin.php CHANGED
@@ -78,176 +78,9 @@ class SB_YOUTUBE_Admin {
78
  public function init() {
79
  add_action( 'admin_menu', array( $this, 'create_menus' ) );
80
  add_action( 'admin_init', array( $this, 'settings_init' ) );
81
- add_action( 'admin_init', array( $this, 'additional_settings_init' ) );
82
-
83
  }
84
 
85
  public function settings_init() {
86
- $text_domain = $this->vars->text_domain();
87
- /**
88
- * Configure Tab
89
- */
90
- $args = array(
91
- 'id' => 'sbspf_types',
92
- 'tab' => 'configure',
93
- 'save_after' => 'true'
94
- );
95
- $this->add_settings_section( $args );
96
-
97
- /* Types */
98
- $args = array(
99
- 'name' => 'type',
100
- 'section' => 'sbspf_types',
101
- 'callback' => 'types',
102
- 'title' => '<label>' . __( 'Feed Type', $text_domain ) .'</label>',
103
- 'shortcode' => array(
104
- 'key' => 'channel',
105
- 'example' => 'smashballoon',
106
- 'description' => __( 'Display videos from a YouTube channel (channel)', $text_domain ),
107
- 'display_section' => 'configure'
108
- ),
109
- 'types' => $this->types
110
- );
111
- $this->add_settings_field( $args );
112
-
113
- $args = array(
114
- 'name' => 'preserve_settings',
115
- 'section' => 'sbspf_types',
116
- 'callback' => 'checkbox',
117
- 'title' => __( 'Preserve settings when plugin is removed', $text_domain ),
118
- 'default' => false,
119
- 'tooltip_info' => __( 'When removing the plugin your settings are automatically erased. Checking this box will prevent any settings from being deleted. This means that you can uninstall and reinstall the plugin without losing your settings.', $text_domain )
120
- );
121
- $this->add_settings_field( $args );
122
-
123
- /* Cache */
124
- $args = array(
125
- 'name' => 'cache',
126
- 'section' => 'sbspf_types',
127
- 'callback' => 'cache',
128
- 'title' => __( 'Check for new posts', $text_domain )
129
- );
130
- $this->add_settings_field( $args );
131
-
132
- /**
133
- * Customize Tab
134
- */
135
- $args = array(
136
- 'title' => __( 'General', $text_domain ),
137
- 'id' => 'sbspf_general',
138
- 'tab' => 'customize',
139
- 'save_after' => 'true'
140
- );
141
- $this->add_settings_section( $args );
142
-
143
- /* Width and Height */
144
- $select_options = array(
145
- array(
146
- 'label' => '%',
147
- 'value' => '%'
148
- ),
149
- array(
150
- 'label' => 'px',
151
- 'value' => 'px'
152
- )
153
- );
154
-
155
- $args = array(
156
- 'name' => 'width',
157
- 'default' => '100',
158
- 'section' => 'sbspf_general',
159
- 'callback' => 'text',
160
- 'min' => 1,
161
- 'size' => 4,
162
- 'title' => __( 'Width of Feed', $text_domain ),
163
- 'shortcode' => array(
164
- 'key' => 'width',
165
- 'example' => '300px',
166
- 'description' => __( 'The width of your feed. Any number with a unit like "px" or "%".', $text_domain ),
167
- 'display_section' => 'customize'
168
- ),
169
- 'select_name' => 'widthunit',
170
- 'select_options' => $select_options,
171
- 'hidden' => array(
172
- 'callback' => 'checkbox',
173
- 'name' => 'width_responsive',
174
- 'label' => __( 'Set to be 100% width on mobile?', $text_domain ),
175
- 'before' => '<div id="sbspf_width_options">',
176
- 'after' => '</div>',
177
- 'tooltip_info' => __( 'If you set a width on the feed then this will be used on mobile as well as desktop. Check this setting to set the feed width to be 100% on mobile so that it is responsive.', $text_domain )
178
- ),
179
- );
180
- $this->add_settings_field( $args );
181
-
182
- $select_options = array(
183
- array(
184
- 'label' => '%',
185
- 'value' => '%'
186
- ),
187
- array(
188
- 'label' => 'px',
189
- 'value' => 'px'
190
- )
191
- );
192
- $args = array(
193
- 'name' => 'height',
194
- 'default' => '',
195
- 'section' => 'sbspf_general',
196
- 'callback' => 'text',
197
- 'min' => 1,
198
- 'size' => 4,
199
- 'title' => __( 'Height of Feed', $text_domain ),
200
- 'shortcode' => array(
201
- 'key' => 'height',
202
- 'example' => '500px',
203
- 'description' => __( 'The height of your feed. Any number with a unit like "px" or "em".', $text_domain ),
204
- 'display_section' => 'customize'
205
- ),
206
- 'select_name' => 'heightunit',
207
- 'select_options' => $select_options,
208
- );
209
- $this->add_settings_field( $args );
210
-
211
- $args = array(
212
- 'name' => 'background',
213
- 'default' => '',
214
- 'section' => 'sbspf_general',
215
- 'callback' => 'color',
216
- 'title' => __( 'Background Color', $text_domain ),
217
- 'shortcode' => array(
218
- 'key' => 'background',
219
- 'example' => '#f00',
220
- 'description' => __( 'Background color for the feed. Any hex color code.', $text_domain ),
221
- 'display_section' => 'customize'
222
- ),
223
- );
224
- $this->add_settings_field( $args );
225
-
226
- $args = array(
227
- 'title' => __( 'Layout', $text_domain ),
228
- 'id' => 'sbspf_layout',
229
- 'tab' => 'customize',
230
- 'save_after' => 'true'
231
- );
232
- $this->add_settings_section( $args );
233
-
234
- $args = array(
235
- 'name' => 'layout',
236
- 'section' => 'sbspf_layout',
237
- 'callback' => 'layout',
238
- 'title' => __( 'Layout Type', $text_domain ),
239
- 'layouts' => $this->layouts,
240
- 'shortcode' => array(
241
- 'key' => 'layout',
242
- 'example' => 'list',
243
- 'description' => __( 'How your posts are display visually.', $text_domain ),
244
- 'display_section' => 'layout'
245
- )
246
- );
247
- $this->add_settings_field( $args );
248
- }
249
-
250
- public function additional_settings_init() {
251
 
252
  }
253
 
@@ -318,6 +151,18 @@ class SB_YOUTUBE_Admin {
318
  $this->add_false_field( $args['name'], $tab );
319
  }
320
 
 
 
 
 
 
 
 
 
 
 
 
 
321
  if ( $args['callback'] === 'textarea' ) {
322
  $tab = 'none';
323
  foreach ( $this->settings_sections as $key => $settings_sections ) {
@@ -382,9 +227,36 @@ class SB_YOUTUBE_Admin {
382
  $selected = isset( $this->settings[ $args['name'] ] ) ? $this->settings[ $args['name'] ] : $default;
383
  $label = isset( $args['label'] ) ? $args['label'] : __( 'Yes' );
384
  $tooltip_text = isset( $args['tooltip_text'] ) ? $args['label'] : $this->default_tooltip_text();
 
385
  ?>
386
  <input name="<?php echo $this->option_name .'['.esc_attr( $args['name'] ).']'; ?>" id="<?php echo $this->option_name . '_' . $args['name']; ?>" type="checkbox"<?php if ( $selected ) echo ' checked'; ?>/>
387
- <label for="<?php echo $this->option_name . '_' . $args['name']; ?>"><?php echo esc_html( $label ); ?></label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
388
  <?php if ( isset( $args['tooltip_info'] ) ) : ?>
389
  <a class="sbspf_tooltip_link" href="JavaScript:void(0);"><?php echo $tooltip_text; ?></a>
390
  <p class="sbspf_tooltip sbspf_more_info"><?php echo $args['tooltip_info']; ?></p>
@@ -512,15 +384,18 @@ class SB_YOUTUBE_Admin {
512
  if ( $input_type === 'connected_account' ) {
513
  $selected = isset( $this->settings[ $type['slug'] . '_ids' ] ) ? $this->settings[ $type['slug'] . '_ids' ] : array();
514
  }
 
515
  ?>
516
- <div class="sbspf_row" style="min-height: 29px;">
517
  <div class="sbspf_col sbspf_one">
518
- <input type="radio" name="<?php echo $this->option_name.'['.esc_attr( $args['name'] ).']'; ?>" id="sbspf_type_<?php echo esc_attr( $type['slug'] ); ?>" value="<?php echo esc_attr( $type['slug'] ); ?>"<?php if ( $type_selected === $type['slug'] ) echo 'checked'; ?>>
519
  <label class="sbspf_radio_label" for="sbspf_type_<?php echo esc_attr( $type['slug'] ); ?>"><?php echo esc_html( $type['label'] ); ?>: <a class="sbspf_type_tooltip_link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true" style="margin-left: 2px;"></i></a></label>
520
  </div>
521
  <div class="sbspf_col sbspf_two">
522
- <?php if ( $input_type === 'text' ) : ?>
523
- <input name="<?php echo $this->option_name.'['.esc_attr( $type['slug'] ).']'; ?>" id="sbspf_<?php echo esc_attr( $type['slug'] ); ?>" type="text" value="<?php echo esc_attr( $selected ); ?>" size="45">
 
 
524
  <?php else :
525
  $connected_accounts = $this->get_connected_accounts(); ?>
526
  <div class="sbspf_<?php echo esc_attr( $type['slug'] ); ?>_feed_ids_wrap">
@@ -535,16 +410,24 @@ class SB_YOUTUBE_Admin {
535
  <?php endif; ?>
536
 
537
  <?php endif; ?>
538
- <?php if ( isset( $type['note'] ) ) : ?>
539
  <br><span class="sbspf_note"><?php echo $type['note']; ?></span>
540
  <?php endif; ?>
541
  </div>
 
 
 
 
 
542
 
543
  <div class="sbspf_tooltip sbspf_type_tooltip sbspf_more_info">
544
  <?php if ( ! empty( $type['tooltip'] ) ) : ?>
545
  <?php echo $type['tooltip']; ?>
546
  <?php endif; ?>
547
  </div>
 
 
 
548
  </div>
549
  <?php endforeach;
550
  }
@@ -560,10 +443,10 @@ class SB_YOUTUBE_Admin {
560
 
561
  ?>
562
  <div class="sbspf_cache_settings_wrap">
563
- <div class="sbspf_row">
564
  <input type="radio" name="<?php echo $this->option_name.'[caching_type]'; ?>" class="sbspf_caching_type_input" id="sbspf_caching_type_page" value="page"<?php if ( $type_selected === 'page' ) echo ' checked'?>>
565
  <label class="sbspf_radio_label" for="sbspf_caching_type_page"><?php _e ( 'When the page loads', $this->vars->text_domain() ); ?></label>
566
- <a class="sbspf_tooltip_link sbspf_tooltip_link" href="JavaScript:void(0);" style="position: relative; top: 2px;"><?php echo $this->default_tooltip_text() ?></a>
567
  <p class="sbspf_tooltip sbspf_more_info"><?php echo sprintf( __( "Your %s data is temporarily cached by the plugin in your WordPress database. There are two ways that you can set the plugin to check for new data:<br><br>
568
  <b>1. When the page loads</b><br>Selecting this option means that when the cache expires then the plugin will check %s for new posts the next time that the feed is loaded. You can choose how long this data should be cached for with a minimum time of 15 minutes. If you set the time to 60 minutes then the plugin will clear the cached data after that length of time, and the next time the page is viewed it will check for new data. <b>Tip:</b> If you're experiencing an issue with the plugin not updating automatically then try enabling the setting labeled <b>'Force cache to clear on interval'</b> which is located on the 'Customize' tab.<br><br>
569
  <b>2. In the background</b><br>Selecting this option means that the plugin will check for new data in the background so that the feed is updated behind the scenes. You can select at what time and how often the plugin should check for new data using the settings below. <b>Please note</b> that the plugin will initially check for data from Instagram when the page first loads, but then after that will check in the background on the schedule selected - unless the cache is cleared.", $this->vars->text_domain() ), $social_network, $social_network ); ?>
@@ -662,9 +545,12 @@ class SB_YOUTUBE_Admin {
662
  $option['name'] = $layout['slug'].$option['name'];
663
  ?>
664
  <div class="ctf_layout_setting">
665
-
666
- <label title="<?php echo __( 'Click for shortcode option', $this->vars->text_domain() ); ?>"><?php echo $option['label']; ?></label><code class="sbspf_shortcode"> <?php echo $option['name'] . "\n"; ?>
667
- Eg: <?php echo $option['name']; ?>=<?php echo $option['shortcode_example']; ?></code><br>
 
 
 
668
  <?php call_user_func_array( array( $this, $option['callback'] ), array( $option ) ); ?>
669
 
670
  </div>
@@ -707,6 +593,7 @@ class SB_YOUTUBE_Admin {
707
  } elseif ( in_array( $key, $textarea_keys ) ) {
708
  $updated_options[ $key ] = sanitize_textarea_field( $val );
709
  } elseif ( is_array( $val ) ) {
 
710
  foreach ( $val as $key2 => $val2 ) {
711
  $updated_options[ $key ][ $key2 ] = sanitize_text_field( $val2 );
712
  }
@@ -747,19 +634,21 @@ class SB_YOUTUBE_Admin {
747
  );
748
 
749
  foreach ( $this->tabs as $tab ) {
750
- $title = isset( $tab['title'] ) ? $tab['title'] : '';
751
- $capability = isset( $tab['capability'] ) ? $tab['capability'] : 'manage_options';
752
- $slug = isset( $tab['slug'] ) ? $tab['slug'] : '';
753
- $callback = isset( $tab['callback'] ) ? $tab['callback'] : array( $this, 'create_options_page' );
754
-
755
- add_submenu_page(
756
- $this->slug,
757
- $title,
758
- $title,
759
- $capability,
760
- $this->slug . '_' . $slug,
761
- $callback
762
- );
 
 
763
  }
764
 
765
  }
78
  public function init() {
79
  add_action( 'admin_menu', array( $this, 'create_menus' ) );
80
  add_action( 'admin_init', array( $this, 'settings_init' ) );
 
 
81
  }
82
 
83
  public function settings_init() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
 
85
  }
86
 
151
  $this->add_false_field( $args['name'], $tab );
152
  }
153
 
154
+ if ( $args['callback'] === 'layout' ) {
155
+ foreach ( $args['layouts'] as $layout ) {
156
+ if ( isset( $layout['options'] ) ) {
157
+ foreach( $layout['options'] as $option ) {
158
+ if ( $option['callback'] === 'checkbox' ) {
159
+ $this->add_false_field( $layout['slug'] . $option['name'], 'customize' );
160
+ }
161
+ }
162
+ }
163
+ }
164
+ }
165
+
166
  if ( $args['callback'] === 'textarea' ) {
167
  $tab = 'none';
168
  foreach ( $this->settings_sections as $key => $settings_sections ) {
227
  $selected = isset( $this->settings[ $args['name'] ] ) ? $this->settings[ $args['name'] ] : $default;
228
  $label = isset( $args['label'] ) ? $args['label'] : __( 'Yes' );
229
  $tooltip_text = isset( $args['tooltip_text'] ) ? $args['label'] : $this->default_tooltip_text();
230
+ $has_shortcode = isset( $args['has_shortcode'] ) && $args['has_shortcode'] ? '1' : '';
231
  ?>
232
  <input name="<?php echo $this->option_name .'['.esc_attr( $args['name'] ).']'; ?>" id="<?php echo $this->option_name . '_' . $args['name']; ?>" type="checkbox"<?php if ( $selected ) echo ' checked'; ?>/>
233
+ <label for="<?php echo $this->option_name . '_' . $args['name'] . $has_shortcode; ?>"><?php echo esc_html( $label ); ?></label><?php if ( $has_shortcode === '1' ) : ?><code class="sbspf_shortcode"> <?php echo $args['name'] . "\n"; ?>
234
+ Eg: <?php echo $args['name']; ?>=<?php echo $args['shortcode_example']; ?></code><br><?php endif; ?>
235
+ <?php if ( isset( $args['tooltip_info'] ) ) : ?>
236
+ <a class="sbspf_tooltip_link" href="JavaScript:void(0);"><?php echo $tooltip_text; ?></a>
237
+ <p class="sbspf_tooltip sbspf_more_info"><?php echo $args['tooltip_info']; ?></p>
238
+ <?php
239
+ endif;
240
+ }
241
+
242
+ public function multi_checkbox( $args ) {
243
+ $default = isset( $args['default'] ) ? $args['default'] : false;
244
+ $selection_array = isset( $this->settings[ $args['name'] ] ) ? (array)$this->settings[ $args['name'] ] : (array)$default;
245
+ $tooltip_text = isset( $args['tooltip_text'] ) ? $args['label'] : $this->default_tooltip_text();
246
+ $index = 0;
247
+ ?>
248
+ <?php foreach ( $args['select_options'] as $select_option ) :
249
+ $selected = in_array( $select_option['value'], $selection_array, true );
250
+ $pro_only = (isset( $select_option['pro'] ) && $select_option['pro']) ? ' sbspf_pro_only' : '';
251
+ ?>
252
+ <div class="sbspf_multi_checkbox_option<?php echo $pro_only; ?>">
253
+ <input name="<?php echo $this->option_name .'['.esc_attr( $args['name'] ).'][]'; ?>" id="<?php echo $this->option_name . '_' . $args['name']. '_' . $index; ?>" value="<?php echo esc_attr( $select_option['value'] ); ?>" type="checkbox"<?php if ( $selected ) echo ' checked'; ?>/>
254
+ <label for="<?php echo $this->option_name . '_' . $args['name'] . '_' . $index; ?>"><?php echo esc_html( $select_option['label'] ); ?></label>
255
+ </div>
256
+ <?php
257
+ $index++;
258
+ endforeach; ?>
259
+
260
  <?php if ( isset( $args['tooltip_info'] ) ) : ?>
261
  <a class="sbspf_tooltip_link" href="JavaScript:void(0);"><?php echo $tooltip_text; ?></a>
262
  <p class="sbspf_tooltip sbspf_more_info"><?php echo $args['tooltip_info']; ?></p>
384
  if ( $input_type === 'connected_account' ) {
385
  $selected = isset( $this->settings[ $type['slug'] . '_ids' ] ) ? $this->settings[ $type['slug'] . '_ids' ] : array();
386
  }
387
+ $on_select = isset( $type['onselect'] ) ? $type['onselect'] : false;
388
  ?>
389
+ <div class="sbspf_row sbspf_type_row" style="min-height: 29px;">
390
  <div class="sbspf_col sbspf_one">
391
+ <input type="radio" name="<?php echo $this->option_name.'['.esc_attr( $args['name'] ).']'; ?>" class="sbspf_type_input" id="sbspf_type_<?php echo esc_attr( $type['slug'] ); ?>" value="<?php echo esc_attr( $type['slug'] ); ?>"<?php if ( $type_selected === $type['slug'] ) echo 'checked'; ?>>
392
  <label class="sbspf_radio_label" for="sbspf_type_<?php echo esc_attr( $type['slug'] ); ?>"><?php echo esc_html( $type['label'] ); ?>: <a class="sbspf_type_tooltip_link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true" style="margin-left: 2px;"></i></a></label>
393
  </div>
394
  <div class="sbspf_col sbspf_two">
395
+ <?php if ( $input_type === 'text' ) :
396
+ $placeholder = isset( $type['note'] ) ? ' placeholder="' . esc_attr( $type['note'] ). '"' : '';
397
+ ?>
398
+ <input name="<?php echo $this->option_name.'['.esc_attr( $type['slug'] ).']'; ?>" id="sbspf_<?php echo esc_attr( $type['slug'] ); ?>" type="text" value="<?php echo esc_attr( $selected ); ?>" size="45"<?php echo $placeholder; ?>>
399
  <?php else :
400
  $connected_accounts = $this->get_connected_accounts(); ?>
401
  <div class="sbspf_<?php echo esc_attr( $type['slug'] ); ?>_feed_ids_wrap">
410
  <?php endif; ?>
411
 
412
  <?php endif; ?>
413
+ <?php if ( $input_type !== 'text' && isset( $type['note'] ) ) : ?>
414
  <br><span class="sbspf_note"><?php echo $type['note']; ?></span>
415
  <?php endif; ?>
416
  </div>
417
+ <?php if ( $on_select ) : ?>
418
+ <div class="sbspf_onselect">
419
+ <?php call_user_func_array( array( $this, $on_select ), array( $type ) ); ?>
420
+ </div>
421
+ <?php endif; ?>
422
 
423
  <div class="sbspf_tooltip sbspf_type_tooltip sbspf_more_info">
424
  <?php if ( ! empty( $type['tooltip'] ) ) : ?>
425
  <?php echo $type['tooltip']; ?>
426
  <?php endif; ?>
427
  </div>
428
+
429
+
430
+
431
  </div>
432
  <?php endforeach;
433
  }
443
 
444
  ?>
445
  <div class="sbspf_cache_settings_wrap">
446
+ <div class="sbspf_row">
447
  <input type="radio" name="<?php echo $this->option_name.'[caching_type]'; ?>" class="sbspf_caching_type_input" id="sbspf_caching_type_page" value="page"<?php if ( $type_selected === 'page' ) echo ' checked'?>>
448
  <label class="sbspf_radio_label" for="sbspf_caching_type_page"><?php _e ( 'When the page loads', $this->vars->text_domain() ); ?></label>
449
+ <a class="sbspf_tooltip_link" href="JavaScript:void(0);" style="position: relative; top: 2px;"><?php echo $this->default_tooltip_text() ?></a>
450
  <p class="sbspf_tooltip sbspf_more_info"><?php echo sprintf( __( "Your %s data is temporarily cached by the plugin in your WordPress database. There are two ways that you can set the plugin to check for new data:<br><br>
451
  <b>1. When the page loads</b><br>Selecting this option means that when the cache expires then the plugin will check %s for new posts the next time that the feed is loaded. You can choose how long this data should be cached for with a minimum time of 15 minutes. If you set the time to 60 minutes then the plugin will clear the cached data after that length of time, and the next time the page is viewed it will check for new data. <b>Tip:</b> If you're experiencing an issue with the plugin not updating automatically then try enabling the setting labeled <b>'Force cache to clear on interval'</b> which is located on the 'Customize' tab.<br><br>
452
  <b>2. In the background</b><br>Selecting this option means that the plugin will check for new data in the background so that the feed is updated behind the scenes. You can select at what time and how often the plugin should check for new data using the settings below. <b>Please note</b> that the plugin will initially check for data from Instagram when the page first loads, but then after that will check in the background on the schedule selected - unless the cache is cleared.", $this->vars->text_domain() ), $social_network, $social_network ); ?>
545
  $option['name'] = $layout['slug'].$option['name'];
546
  ?>
547
  <div class="ctf_layout_setting">
548
+ <?php if ( $option['callback'] !== 'checkbox' ) : ?>
549
+ <label title="<?php echo __( 'Click for shortcode option', $this->vars->text_domain() ); ?>"><?php echo $option['label']; ?></label><code class="sbspf_shortcode"> <?php echo $option['name'] . "\n"; ?>
550
+ Eg: <?php echo $option['name']; ?>=<?php echo $option['shortcode_example']; ?></code><br>
551
+ <?php else:
552
+ $option['has_shortcode'] = true;
553
+ endif; ?>
554
  <?php call_user_func_array( array( $this, $option['callback'] ), array( $option ) ); ?>
555
 
556
  </div>
593
  } elseif ( in_array( $key, $textarea_keys ) ) {
594
  $updated_options[ $key ] = sanitize_textarea_field( $val );
595
  } elseif ( is_array( $val ) ) {
596
+ $updated_options[ $key ] = array();
597
  foreach ( $val as $key2 => $val2 ) {
598
  $updated_options[ $key ][ $key2 ] = sanitize_text_field( $val2 );
599
  }
634
  );
635
 
636
  foreach ( $this->tabs as $tab ) {
637
+ if ( $tab['slug'] !== 'configure' ) {
638
+ $title = isset( $tab['title'] ) ? $tab['title'] : '';
639
+ $capability = isset( $tab['capability'] ) ? $tab['capability'] : 'manage_options';
640
+ $slug = isset( $tab['slug'] ) ? $tab['slug'] : '';
641
+ $callback = isset( $tab['callback'] ) ? $tab['callback'] : array( $this, 'create_options_page' );
642
+
643
+ add_submenu_page(
644
+ $this->slug,
645
+ $title,
646
+ $title,
647
+ $capability,
648
+ $this->slug . '_' . $slug,
649
+ $callback
650
+ );
651
+ }
652
  }
653
 
654
  }
inc/admin/class-sby-admin.php CHANGED
@@ -5,12 +5,187 @@ if ( ! defined( 'ABSPATH' ) ) {
5
 
6
  class SBY_Admin extends SB_YOUTUBE_Admin {
7
 
8
- public function additional_settings_init() {
9
- $text_domain = SBY_TEXT_DOMAIN;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
  $args = array(
12
  'name' => 'num',
13
- 'default' => 8,
14
  'section' => 'sbspf_layout',
15
  'callback' => 'text',
16
  'min' => 1,
@@ -27,16 +202,63 @@ class SBY_Admin extends SB_YOUTUBE_Admin {
27
  );
28
  $this->add_settings_field( $args );
29
 
30
- $select_options = array(
31
  array(
32
- 'label' => 'px',
33
- 'value' => 'px'
34
  ),
35
  array(
36
- 'label' => '%',
37
- 'value' => '%'
38
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  );
 
 
40
  $args = array(
41
  'name' => 'itemspacing',
42
  'default' => 5,
@@ -289,7 +511,7 @@ class SBY_Admin extends SB_YOUTUBE_Admin {
289
  'title' => __( 'Custom JavaScript', $text_domain ),
290
  'options' => $select_options,
291
  'tooltip_info' => __( 'Enter your own custom JavaScript/jQuery in the box below', $text_domain ),
292
- 'note' => __( 'Note: Custom JavaScript reruns every time more videos are loaded into the feed', $text_domain )
293
  );
294
  $this->add_settings_field( $args );
295
 
@@ -334,96 +556,98 @@ class SBY_Admin extends SB_YOUTUBE_Admin {
334
  'callback' => 'checkbox',
335
  'title' => __( 'Are you using an AJAX theme?', $text_domain ),
336
  'default' => false,
337
- 'tooltip_info' => __( 'When navigating your site, if your theme uses Ajax to load content into your pages (meaning your page doesn\'t refresh) then check this setting. If you\'re not sure then it\'s best to leave this setting unchecked while checking with your theme author, otherwise checking it may cause a problem.', $text_domain )
338
  );
339
  $this->add_settings_field( $args );
 
340
  }
341
 
342
  public function cache( $args ) {
343
  $social_network = $this->vars->social_network();
344
  $type_selected = isset( $this->settings['caching_type'] ) ? $this->settings['caching_type'] : 'page';
345
  $caching_time = isset( $this->settings['caching_time'] ) ? $this->settings['caching_time'] : 1;
346
- $cache_time_unit_selected = isset( $this->settings['caching_time_unit'] ) ? $this->settings['caching_time_unit'] : 'hours';
347
  $cache_cron_interval_selected = isset( $this->settings['cache_cron_interval'] ) ? $this->settings['cache_cron_interval'] : '';
348
  $cache_cron_time = isset( $this->settings['cache_cron_time'] ) ? $this->settings['cache_cron_time'] : '';
349
  $cache_cron_am_pm = isset( $this->settings['cache_cron_am_pm'] ) ? $this->settings['cache_cron_am_pm'] : '';
 
350
  ?>
351
- <div class="sbspf_cache_settings_wrap">
352
- <div class="sbspf_row">
353
- <input type="radio" name="<?php echo $this->option_name.'[caching_type]'; ?>" class="sbspf_caching_type_input" id="sbspf_caching_type_page" value="page"<?php if ( $type_selected === 'page' ) echo ' checked'?>>
354
- <label class="sbspf_radio_label" for="sbspf_caching_type_page"><?php _e ( 'When the page loads', $this->vars->text_domain() ); ?></label>
355
- <a class="sbspf_tooltip_link sbspf_tooltip_link" href="JavaScript:void(0);" style="position: relative; top: 2px;"><?php echo $this->default_tooltip_text() ?></a>
356
- <p class="sbspf_tooltip sbspf_more_info"><?php echo sprintf( __( "Your %s data is temporarily cached by the plugin in your WordPress database. There are two ways that you can set the plugin to check for new data:<br><br>
357
- <b>1. When the page loads</b><br>Selecting this option means that when the cache expires then the plugin will check %s for new posts the next time that the feed is loaded. You can choose how long this data should be cached for. If you set the time to 60 minutes then the plugin will clear the cached data after that length of time, and the next time the page is viewed it will check for new data. <b>Tip:</b> If you're experiencing an issue with the plugin not updating automatically then try enabling the setting labeled <b>'Force cache to clear on interval'</b> which is located on the 'Customize' tab.<br><br>
358
  <b>2. In the background</b><br>Selecting this option means that the plugin will check for new data in the background so that the feed is updated behind the scenes. You can select at what time and how often the plugin should check for new data using the settings below. <b>Please note</b> that the plugin will initially check for data from Instagram when the page first loads, but then after that will check in the background on the schedule selected - unless the cache is cleared.", $this->vars->text_domain() ), $social_network, $social_network ); ?>
359
- </p>
360
- </div>
361
- <div class="sbspf_row sbspf-caching-page-options" style="display: none;">
362
  <?php _e ( 'Every', $this->vars->text_domain() ); ?>:
363
- <input name="<?php echo $this->option_name.'[caching_time]'; ?>" type="text" value="<?php echo esc_attr( $caching_time ); ?>" size="4">
364
- <select name="<?php echo $this->option_name.'[caching_time_unit]'; ?>">
365
  <option value="minutes"<?php if ( $cache_time_unit_selected === 'minutes' ) echo ' selected'?>><?php _e ( 'Minutes', $this->vars->text_domain() ); ?></option>
366
  <option value="hours"<?php if ( $cache_time_unit_selected === 'hours' ) echo ' selected'?>><?php _e ( 'Hours', $this->vars->text_domain() ); ?></option>
367
- <option value="days"<?php if ( $cache_time_unit_selected === 'days' ) echo ' selected'?>><?php _e ( 'Days', $this->vars->text_domain() ); ?></option>
368
- </select>
369
- <a class="sbspf_tooltip_link" href="JavaScript:void(0);"><?php _e ( 'What does this mean?', $this->vars->text_domain() ); ?></a>
370
- <p class="sbspf_tooltip sbspf_more_info"><?php echo sprintf( __("Your %s posts are temporarily cached by the plugin in your WordPress database. You can choose how long the posts should be cached for. If you set the time to 1 hour then the plugin will clear the cache after that length of time and check %s for posts again.", $this->vars->text_domain() ), $social_network, $social_network ); ?></p>
371
- </div>
372
-
373
- <div class="sbspf_row">
374
- <input type="radio" name="<?php echo $this->option_name.'[caching_type]'; ?>" id="sbspf_caching_type_cron" class="sbspf_caching_type_input" value="background" <?php if ( $type_selected === 'background' ) echo ' checked'?>>
375
- <label class="sbspf_radio_label" for="sbspf_caching_type_cron"><?php _e ( 'In the background', $this->vars->text_domain() ); ?></label>
376
- </div>
377
- <div class="sbspf_row sbspf-caching-cron-options" style="display: block;">
378
-
379
- <select name="<?php echo $this->option_name.'[cache_cron_interval]'; ?>" id="sbspf_cache_cron_interval">
380
  <option value="30mins"<?php if ( $cache_cron_interval_selected === '30mins' ) echo ' selected'?>><?php _e ( 'Every 30 minutes', $this->vars->text_domain() ); ?></option>
381
  <option value="1hour"<?php if ( $cache_cron_interval_selected === '1hour' ) echo ' selected'?>><?php _e ( 'Every hour', $this->vars->text_domain() ); ?></option>
382
- <option value="12hours"<?php if ( $cache_cron_interval_selected === '12hours' ) echo ' selected'?>><?php _e ( 'Every 12 hours', $this->vars->text_domain() ); ?></option>
383
- <option value="24hours"<?php if ( $cache_cron_interval_selected === '24hours' ) echo ' selected'?>><?php _e ( 'Every 24 hours', $this->vars->text_domain() ); ?></option>
384
- </select>
385
 
386
- <div id="sbspf-caching-time-settings" style="">
387
  <?php _e ( 'at', $this->vars->text_domain() ); ?>
388
- <select name="<?php echo $this->option_name.'[cache_cron_time]'; ?>" style="width: 80px">
389
- <option value="1"<?php if ( (int)$cache_cron_time === 1 ) echo ' selected'?>>1:00</option>
390
- <option value="2"<?php if ( (int)$cache_cron_time === 2 ) echo ' selected'?>>2:00</option>
391
- <option value="3"<?php if ( (int)$cache_cron_time === 3 ) echo ' selected'?>>3:00</option>
392
- <option value="4"<?php if ( (int)$cache_cron_time === 4 ) echo ' selected'?>>4:00</option>
393
- <option value="5"<?php if ( (int)$cache_cron_time === 5 ) echo ' selected'?>>5:00</option>
394
- <option value="6"<?php if ( (int)$cache_cron_time === 6 ) echo ' selected'?>>6:00</option>
395
- <option value="7"<?php if ( (int)$cache_cron_time === 7 ) echo ' selected'?>>7:00</option>
396
- <option value="8"<?php if ( (int)$cache_cron_time === 8 ) echo ' selected'?>>8:00</option>
397
- <option value="9"<?php if ( (int)$cache_cron_time === 9 ) echo ' selected'?>>9:00</option>
398
- <option value="10"<?php if ( (int)$cache_cron_time === 10 ) echo ' selected'?>>10:00</option>
399
- <option value="11"<?php if ( (int)$cache_cron_time === 11 ) echo ' selected'?>>11:00</option>
400
- <option value="0"<?php if ( (int)$cache_cron_time === 0 ) echo ' selected'?>>12:00</option>
401
- </select>
402
-
403
- <select name="<?php echo $this->option_name.'[cache_cron_am_pm]'; ?>" style="width: 50px">
404
- <option value="am"<?php if ( $cache_cron_am_pm === 'am' ) echo ' selected'?>><?php _e ( 'AM', $this->vars->text_domain() ); ?></option>
405
- <option value="pm"<?php if ( $cache_cron_am_pm === 'pm' ) echo ' selected'?>><?php _e ( 'PM', $this->vars->text_domain() ); ?></option>
406
- </select>
407
- </div>
408
 
409
  <?php
410
- if ( wp_next_scheduled( 'sby_feed_update' ) ) {
411
  $time_format = get_option( 'time_format' );
412
  if ( ! $time_format ) {
413
  $time_format = 'g:i a';
414
  }
415
  //
416
- $schedule = wp_get_schedule( 'sby_feed_update' );
417
  if ( $schedule == '30mins' ) $schedule = __( 'every 30 minutes', $this->vars->text_domain() );
418
  if ( $schedule == 'twicedaily' ) $schedule = __( 'every 12 hours', $this->vars->text_domain() );
419
- $sbspf_next_cron_event = wp_next_scheduled( 'sby_feed_update' );
420
- echo '<p class="sbspf-caching-sched-notice"><span><b>' . __( 'Next check', $this->vars->text_domain() ) . ': ' . date( $time_format, $sbspf_next_cron_event + sby_get_utc_offset() ) . ' (' . $schedule . ')</b> - ' . __( 'Note: Saving the settings on this page will clear the cache and reset this schedule', $this->vars->text_domain() ) . '</span></p>';
421
  } else {
422
  echo '<p style="font-size: 11px; color: #666;">' . __( 'Nothing currently scheduled', $this->vars->text_domain() ) . '</p>';
423
  }
424
  ?>
425
- </div>
426
- </div>
427
  <?php
428
  }
429
 
5
 
6
  class SBY_Admin extends SB_YOUTUBE_Admin {
7
 
8
+ public function settings_init() {
9
+ $text_domain = $this->vars->text_domain();
10
+
11
+ $defaults = sby_settings_defaults();
12
+
13
+ /**
14
+ * Configure Tab
15
+ */
16
+ $args = array(
17
+ 'id' => 'sbspf_types',
18
+ 'tab' => 'configure',
19
+ 'save_after' => 'true'
20
+ );
21
+ $this->add_settings_section( $args );
22
+
23
+ /* Types */
24
+ $args = array(
25
+ 'name' => 'type',
26
+ 'section' => 'sbspf_types',
27
+ 'callback' => 'types',
28
+ 'title' => '<label>' . __( 'Feed Type', $text_domain ) .'</label>',
29
+ 'shortcode' => array(
30
+ 'key' => 'channel',
31
+ 'example' => 'smashballoon',
32
+ 'description' => __( 'Display videos from a YouTube channel (channel)', $text_domain ),
33
+ 'display_section' => 'configure'
34
+ ),
35
+ 'types' => $this->types
36
+ );
37
+ $this->add_settings_field( $args );
38
+
39
+ /* Cache */
40
+ $args = array(
41
+ 'name' => 'cache',
42
+ 'section' => 'sbspf_types',
43
+ 'callback' => 'cache',
44
+ 'title' => __( 'Check for new posts', $text_domain )
45
+ );
46
+ $this->add_settings_field( $args );
47
+
48
+ $args = array(
49
+ 'name' => 'preserve_settings',
50
+ 'section' => 'sbspf_types',
51
+ 'callback' => 'checkbox',
52
+ 'title' => __( 'Preserve settings when plugin is removed', $text_domain ),
53
+ 'default' => false,
54
+ 'tooltip_info' => __( 'When removing the plugin your settings are automatically erased. Checking this box will prevent any settings from being deleted. This means that you can uninstall and reinstall the plugin without losing your settings.', $text_domain )
55
+ );
56
+ $this->add_settings_field( $args );
57
+
58
+ /**
59
+ * Customize Tab
60
+ */
61
+ $args = array(
62
+ 'title' => __( 'General', $text_domain ),
63
+ 'id' => 'sbspf_general',
64
+ 'tab' => 'customize',
65
+ 'save_after' => 'true'
66
+ );
67
+ $this->add_settings_section( $args );
68
+
69
+ /* Width and Height */
70
+ $select_options = array(
71
+ array(
72
+ 'label' => '%',
73
+ 'value' => '%'
74
+ ),
75
+ array(
76
+ 'label' => 'px',
77
+ 'value' => 'px'
78
+ )
79
+ );
80
+
81
+ $args = array(
82
+ 'name' => 'width',
83
+ 'default' => '100',
84
+ 'section' => 'sbspf_general',
85
+ 'callback' => 'text',
86
+ 'min' => 1,
87
+ 'size' => 4,
88
+ 'title' => __( 'Width of Feed', $text_domain ),
89
+ 'shortcode' => array(
90
+ 'key' => 'width',
91
+ 'example' => '300px',
92
+ 'description' => __( 'The width of your feed. Any number with a unit like "px" or "%".', $text_domain ),
93
+ 'display_section' => 'customize'
94
+ ),
95
+ 'select_name' => 'widthunit',
96
+ 'select_options' => $select_options,
97
+ 'hidden' => array(
98
+ 'callback' => 'checkbox',
99
+ 'name' => 'width_responsive',
100
+ 'label' => __( 'Set to be 100% width on mobile?', $text_domain ),
101
+ 'before' => '<div id="sbspf_width_options">',
102
+ 'after' => '</div>',
103
+ 'tooltip_info' => __( 'If you set a width on the feed then this will be used on mobile as well as desktop. Check this setting to set the feed width to be 100% on mobile so that it is responsive.', $text_domain )
104
+ ),
105
+ );
106
+ $this->add_settings_field( $args );
107
+
108
+ $select_options = array(
109
+ array(
110
+ 'label' => '%',
111
+ 'value' => '%'
112
+ ),
113
+ array(
114
+ 'label' => 'px',
115
+ 'value' => 'px'
116
+ )
117
+ );
118
+ $args = array(
119
+ 'name' => 'height',
120
+ 'default' => '',
121
+ 'section' => 'sbspf_general',
122
+ 'callback' => 'text',
123
+ 'min' => 1,
124
+ 'size' => 4,
125
+ 'title' => __( 'Height of Feed', $text_domain ),
126
+ 'shortcode' => array(
127
+ 'key' => 'height',
128
+ 'example' => '500px',
129
+ 'description' => __( 'The height of your feed. Any number with a unit like "px" or "em".', $text_domain ),
130
+ 'display_section' => 'customize'
131
+ ),
132
+ 'select_name' => 'heightunit',
133
+ 'select_options' => $select_options,
134
+ );
135
+ $this->add_settings_field( $args );
136
+
137
+ $args = array(
138
+ 'name' => 'background',
139
+ 'default' => '',
140
+ 'section' => 'sbspf_general',
141
+ 'callback' => 'color',
142
+ 'title' => __( 'Background Color', $text_domain ),
143
+ 'shortcode' => array(
144
+ 'key' => 'background',
145
+ 'example' => '#f00',
146
+ 'description' => __( 'Background color for the feed. Any hex color code.', $text_domain ),
147
+ 'display_section' => 'customize'
148
+ ),
149
+ );
150
+ $this->add_settings_field( $args );
151
+
152
+ $args = array(
153
+ 'title' => __( 'Layout', $text_domain ),
154
+ 'id' => 'sbspf_layout',
155
+ 'tab' => 'customize',
156
+ 'save_after' => 'true'
157
+ );
158
+ $this->add_settings_section( $args );
159
+
160
+ $args = array(
161
+ 'name' => 'layout',
162
+ 'section' => 'sbspf_layout',
163
+ 'callback' => 'layout',
164
+ 'title' => __( 'Layout Type', $text_domain ),
165
+ 'layouts' => $this->layouts,
166
+ 'shortcode' => array(
167
+ 'key' => 'layout',
168
+ 'example' => 'list',
169
+ 'description' => __( 'How your posts are display visually.', $text_domain ),
170
+ 'display_section' => 'layout'
171
+ )
172
+ );
173
+ $this->add_settings_field( $args );
174
+
175
+ $select_options = array(
176
+ array(
177
+ 'label' => 'px',
178
+ 'value' => 'px'
179
+ ),
180
+ array(
181
+ 'label' => '%',
182
+ 'value' => '%'
183
+ )
184
+ );
185
 
186
  $args = array(
187
  'name' => 'num',
188
+ 'default' => $defaults['num'],
189
  'section' => 'sbspf_layout',
190
  'callback' => 'text',
191
  'min' => 1,
202
  );
203
  $this->add_settings_field( $args );
204
 
205
+ $include_options = array(
206
  array(
207
+ 'label' => __( 'Play Icon', $text_domain ),
208
+ 'value' => 'icon'
209
  ),
210
  array(
211
+ 'label' => __( 'Title', $text_domain ),
212
+ 'value' => 'title',
213
+ 'pro' => true
214
+ ),
215
+ array(
216
+ 'label' => __( 'User Name', $text_domain ),
217
+ 'value' => 'user',
218
+ 'pro' => true
219
+ ),
220
+ array(
221
+ 'label' => __( 'Views', $text_domain ),
222
+ 'value' => 'views',
223
+ 'pro' => true
224
+ ),
225
+ array(
226
+ 'label' => __( 'Date', $text_domain ),
227
+ 'value' => 'date',
228
+ 'pro' => true
229
+ ),
230
+ array(
231
+ 'label' => __( 'Live Stream Countdown (when applies)', $text_domain ),
232
+ 'value' => 'countdown',
233
+ 'pro' => true
234
+ ),
235
+ array(
236
+ 'label' => __( 'Stats (like and comment counts)', $text_domain ),
237
+ 'value' => 'stats',
238
+ 'pro' => true
239
+ ),
240
+ array(
241
+ 'label' => __( 'Description', $text_domain ),
242
+ 'value' => 'description',
243
+ 'pro' => true
244
+ ),
245
+ );
246
+ $args = array(
247
+ 'name' => 'include',
248
+ 'default' => $defaults['include'],
249
+ 'section' => 'sbspf_layout',
250
+ 'callback' => 'multi_checkbox',
251
+ 'title' => __( 'Show/Hide', $text_domain ),
252
+ 'shortcode' => array(
253
+ 'key' => 'include',
254
+ 'example' => '"icon"',
255
+ 'description' => __( 'Comma separated list of what video information (title, description, stats) will display in the feed. eg.', $text_domain ) . ' icon',
256
+ 'display_section' => 'customize'
257
+ ),
258
+ 'select_options' => $include_options,
259
  );
260
+ $this->add_settings_field( $args );
261
+
262
  $args = array(
263
  'name' => 'itemspacing',
264
  'default' => 5,
511
  'title' => __( 'Custom JavaScript', $text_domain ),
512
  'options' => $select_options,
513
  'tooltip_info' => __( 'Enter your own custom JavaScript/jQuery in the box below', $text_domain ),
514
+ 'note' => __( 'Note: Custom JavaScript reruns every time more videos are loaded into the feed', $text_domain )
515
  );
516
  $this->add_settings_field( $args );
517
 
556
  'callback' => 'checkbox',
557
  'title' => __( 'Are you using an AJAX theme?', $text_domain ),
558
  'default' => false,
559
+ 'tooltip_info' => __( 'When navigating your site, if your theme uses Ajax to load content into your pages (meaning your page doesn\'t refresh) then check this setting. If you\'re not sure then it\'s best to leave this setting unchecked while checking with your theme author, otherwise checking it may cause a problem.', $text_domain )
560
  );
561
  $this->add_settings_field( $args );
562
+
563
  }
564
 
565
  public function cache( $args ) {
566
  $social_network = $this->vars->social_network();
567
  $type_selected = isset( $this->settings['caching_type'] ) ? $this->settings['caching_type'] : 'page';
568
  $caching_time = isset( $this->settings['caching_time'] ) ? $this->settings['caching_time'] : 1;
569
+ $cache_time_unit_selected = isset( $this->settings['cache_time_unit'] ) ? $this->settings['cache_time_unit'] : 'hours';
570
  $cache_cron_interval_selected = isset( $this->settings['cache_cron_interval'] ) ? $this->settings['cache_cron_interval'] : '';
571
  $cache_cron_time = isset( $this->settings['cache_cron_time'] ) ? $this->settings['cache_cron_time'] : '';
572
  $cache_cron_am_pm = isset( $this->settings['cache_cron_am_pm'] ) ? $this->settings['cache_cron_am_pm'] : '';
573
+
574
  ?>
575
+ <div class="sbspf_cache_settings_wrap">
576
+ <div class="sbspf_row">
577
+ <input type="radio" name="<?php echo $this->option_name.'[caching_type]'; ?>" class="sbspf_caching_type_input" id="sbspf_caching_type_page" value="page"<?php if ( $type_selected === 'page' ) echo ' checked'?>>
578
+ <label class="sbspf_radio_label" for="sbspf_caching_type_page"><?php _e ( 'When the page loads', $this->vars->text_domain() ); ?></label>
579
+ <a class="sbspf_tooltip_link" href="JavaScript:void(0);" style="position: relative; top: 2px;"><?php echo $this->default_tooltip_text() ?></a>
580
+ <p class="sbspf_tooltip sbspf_more_info"><?php echo sprintf( __( "Your %s data is temporarily cached by the plugin in your WordPress database. There are two ways that you can set the plugin to check for new data:<br><br>
581
+ <b>1. When the page loads</b><br>Selecting this option means that when the cache expires then the plugin will check %s for new posts the next time that the feed is loaded. You can choose how long this data should be cached for with a minimum time of 15 minutes. If you set the time to 60 minutes then the plugin will clear the cached data after that length of time, and the next time the page is viewed it will check for new data. <b>Tip:</b> If you're experiencing an issue with the plugin not updating automatically then try enabling the setting labeled <b>'Force cache to clear on interval'</b> which is located on the 'Customize' tab.<br><br>
582
  <b>2. In the background</b><br>Selecting this option means that the plugin will check for new data in the background so that the feed is updated behind the scenes. You can select at what time and how often the plugin should check for new data using the settings below. <b>Please note</b> that the plugin will initially check for data from Instagram when the page first loads, but then after that will check in the background on the schedule selected - unless the cache is cleared.", $this->vars->text_domain() ), $social_network, $social_network ); ?>
583
+ </p>
584
+ </div>
585
+ <div class="sbspf_row sbspf-caching-page-options" style="display: none;">
586
  <?php _e ( 'Every', $this->vars->text_domain() ); ?>:
587
+ <input name="<?php echo $this->option_name.'[caching_time]'; ?>" type="text" value="<?php echo esc_attr( $caching_time ); ?>" size="4">
588
+ <select name="<?php echo $this->option_name.'[caching_time_unit]'; ?>">
589
  <option value="minutes"<?php if ( $cache_time_unit_selected === 'minutes' ) echo ' selected'?>><?php _e ( 'Minutes', $this->vars->text_domain() ); ?></option>
590
  <option value="hours"<?php if ( $cache_time_unit_selected === 'hours' ) echo ' selected'?>><?php _e ( 'Hours', $this->vars->text_domain() ); ?></option>
591
+ <option value="days"<?php if ( $cache_time_unit_selected === 'days' ) echo ' selected'?>><?php _e ( 'Days', $this->vars->text_domain() ); ?></option>
592
+ </select>
593
+ <a class="sbspf_tooltip_link" href="JavaScript:void(0);"><?php _e ( 'What does this mean?', $this->vars->text_domain() ); ?></a>
594
+ <p class="sbspf_tooltip sbspf_more_info"><?php echo sprintf( __("Your %s posts are temporarily cached by the plugin in your WordPress database. You can choose how long the posts should be cached for. If you set the time to 1 hour then the plugin will clear the cache after that length of time and check %s for posts again.", $this->vars->text_domain() ), $social_network, $social_network ); ?></p>
595
+ </div>
596
+
597
+ <div class="sbspf_row">
598
+ <input type="radio" name="<?php echo $this->option_name.'[caching_type]'; ?>" id="sbspf_caching_type_cron" class="sbspf_caching_type_input" value="background" <?php if ( $type_selected === 'background' ) echo ' checked'?>>
599
+ <label class="sbspf_radio_label" for="sbspf_caching_type_cron"><?php _e ( 'In the background', $this->vars->text_domain() ); ?></label>
600
+ </div>
601
+ <div class="sbspf_row sbspf-caching-cron-options" style="display: block;">
602
+
603
+ <select name="<?php echo $this->option_name.'[cache_cron_interval]'; ?>" id="sbspf_cache_cron_interval">
604
  <option value="30mins"<?php if ( $cache_cron_interval_selected === '30mins' ) echo ' selected'?>><?php _e ( 'Every 30 minutes', $this->vars->text_domain() ); ?></option>
605
  <option value="1hour"<?php if ( $cache_cron_interval_selected === '1hour' ) echo ' selected'?>><?php _e ( 'Every hour', $this->vars->text_domain() ); ?></option>
606
+ <option value="12hours"<?php if ( $cache_cron_interval_selected === '12hours' ) echo ' selected'?>><?php _e ( 'Every 12 hours', $this->vars->text_domain() ); ?></option>
607
+ <option value="24hours"<?php if ( $cache_cron_interval_selected === '24hours' ) echo ' selected'?>><?php _e ( 'Every 24 hours', $this->vars->text_domain() ); ?></option>
608
+ </select>
609
 
610
+ <div id="sbspf-caching-time-settings" style="">
611
  <?php _e ( 'at', $this->vars->text_domain() ); ?>
612
+ <select name="<?php echo $this->option_name.'[cache_cron_time]'; ?>" style="width: 80px">
613
+ <option value="1"<?php if ( (int)$cache_cron_time === 1 ) echo ' selected'?>>1:00</option>
614
+ <option value="2"<?php if ( (int)$cache_cron_time === 2 ) echo ' selected'?>>2:00</option>
615
+ <option value="3"<?php if ( (int)$cache_cron_time === 3 ) echo ' selected'?>>3:00</option>
616
+ <option value="4"<?php if ( (int)$cache_cron_time === 4 ) echo ' selected'?>>4:00</option>
617
+ <option value="5"<?php if ( (int)$cache_cron_time === 5 ) echo ' selected'?>>5:00</option>
618
+ <option value="6"<?php if ( (int)$cache_cron_time === 6 ) echo ' selected'?>>6:00</option>
619
+ <option value="7"<?php if ( (int)$cache_cron_time === 7 ) echo ' selected'?>>7:00</option>
620
+ <option value="8"<?php if ( (int)$cache_cron_time === 8 ) echo ' selected'?>>8:00</option>
621
+ <option value="9"<?php if ( (int)$cache_cron_time === 9 ) echo ' selected'?>>9:00</option>
622
+ <option value="10"<?php if ( (int)$cache_cron_time === 10 ) echo ' selected'?>>10:00</option>
623
+ <option value="11"<?php if ( (int)$cache_cron_time === 11 ) echo ' selected'?>>11:00</option>
624
+ <option value="0"<?php if ( (int)$cache_cron_time === 0 ) echo ' selected'?>>12:00</option>
625
+ </select>
626
+
627
+ <select name="<?php echo $this->option_name.'[cache_cron_am_pm]'; ?>" style="width: 50px">
628
+ <option value="am"<?php if ( $cache_cron_am_pm === 'am' ) echo ' selected'?>><?php _e ( 'AM', $this->vars->text_domain() ); ?></option>
629
+ <option value="pm"<?php if ( $cache_cron_am_pm === 'pm' ) echo ' selected'?>><?php _e ( 'PM', $this->vars->text_domain() ); ?></option>
630
+ </select>
631
+ </div>
632
 
633
  <?php
634
+ if ( wp_next_scheduled( 'sbspf_feed_update' ) ) {
635
  $time_format = get_option( 'time_format' );
636
  if ( ! $time_format ) {
637
  $time_format = 'g:i a';
638
  }
639
  //
640
+ $schedule = wp_get_schedule( 'sbspf_feed_update' );
641
  if ( $schedule == '30mins' ) $schedule = __( 'every 30 minutes', $this->vars->text_domain() );
642
  if ( $schedule == 'twicedaily' ) $schedule = __( 'every 12 hours', $this->vars->text_domain() );
643
+ $sbspf_next_cron_event = wp_next_scheduled( 'sbspf_feed_update' );
644
+ echo '<p class="sbspf-caching-sched-notice"><span><b>' . __( 'Next check', $this->vars->text_domain() ) . ': ' . date( $time_format, $sbspf_next_cron_event + sbspf_get_utc_offset() ) . ' (' . $schedule . ')</b> - ' . __( 'Note: Saving the settings on this page will clear the cache and reset this schedule', $this->vars->text_domain() ) . '</span></p>';
645
  } else {
646
  echo '<p style="font-size: 11px; color: #666;">' . __( 'Nothing currently scheduled', $this->vars->text_domain() ) . '</p>';
647
  }
648
  ?>
649
+ </div>
650
+ </div>
651
  <?php
652
  }
653
 
inc/admin/templates/display.php CHANGED
@@ -26,7 +26,7 @@
26
  <tr>
27
  <td><?php echo $setting['key']; ?></td>
28
  <td><?php echo $setting['description']; ?></td>
29
- <td><code>[<?php echo $slug; ?> <?php echo $setting['key']; ?>="<?php echo $setting['example']; ?>"]</code></td>
30
  </tr>
31
  <?php endforeach; ?>
32
 
26
  <tr>
27
  <td><?php echo $setting['key']; ?></td>
28
  <td><?php echo $setting['description']; ?></td>
29
+ <td><code>[<?php echo $slug; ?> <?php echo $setting['key']; ?>="<?php echo str_replace('"', '', $setting['example'] ); ?>"]</code></td>
30
  </tr>
31
  <?php endforeach; ?>
32
 
inc/admin/templates/main.php CHANGED
@@ -24,7 +24,7 @@ $slug = $this->get_slug();
24
  $tabs = $this->get_tabs();
25
  ?>
26
 
27
- <div id="sbspf_admin" class="wrap sbspf-admin" data-sb-plugin="sbspf">
28
  <h1><?php echo esc_html( $plugin_name ); ?></h1>
29
 
30
  <!-- Display the tabs along with styling for the 'active' tab -->
@@ -32,7 +32,7 @@ $tabs = $this->get_tabs();
32
  <?php
33
  $i = 1;
34
  foreach ( $tabs as $tab ) :
35
- $title = isset( $tab['numbered_tab'] ) && ! $tab['numbered_tab'] ? __( $tab['title'], 'youtube-feed' ) : $i . '. ' . __( $tab['title'], 'youtube-feed' );
36
  ?>
37
  <a href="admin.php?page=<?php echo esc_attr( $slug ); ?>&tab=<?php echo esc_attr( $tab['slug'] ); ?>" class="nav-tab <?php if ( $active_tab === $tab['slug'] ){ echo 'nav-tab-active'; } ?>"><?php echo $title; ?></a>
38
  <?php
@@ -47,7 +47,7 @@ $tabs = $this->get_tabs();
47
  $next_step = $this->next_step();
48
  if ( ! empty( $next_step ) ) : ?>
49
  <p class="sbspf_footer_help">
50
- <?php echo sby_admin_icon( 'chevron-right', 'sbspf_small_svg' ) ; ?>&nbsp; <?php _e('Next Step', $text_domain ); ?>: <a href="?page=<?php echo esc_attr( $slug ); ?>&tab=<?php echo esc_attr( $next_step['next_tab'] ); ?>"><?php echo esc_html( __( $next_step['instructions'], 'youtube-feed' ) ); ?></a>
51
  </p>
52
  <?php endif; ?>
53
 
24
  $tabs = $this->get_tabs();
25
  ?>
26
 
27
+ <div id="sbspf_admin" class="wrap sbspf-admin sby_admin" data-sb-plugin="sbspf">
28
  <h1><?php echo esc_html( $plugin_name ); ?></h1>
29
 
30
  <!-- Display the tabs along with styling for the 'active' tab -->
32
  <?php
33
  $i = 1;
34
  foreach ( $tabs as $tab ) :
35
+ $title = isset( $tab['numbered_tab'] ) && ! $tab['numbered_tab'] ? __( $tab['title'], 'feeds-for-youtube' ) : $i . '. ' . __( $tab['title'], 'feeds-for-youtube' );
36
  ?>
37
  <a href="admin.php?page=<?php echo esc_attr( $slug ); ?>&tab=<?php echo esc_attr( $tab['slug'] ); ?>" class="nav-tab <?php if ( $active_tab === $tab['slug'] ){ echo 'nav-tab-active'; } ?>"><?php echo $title; ?></a>
38
  <?php
47
  $next_step = $this->next_step();
48
  if ( ! empty( $next_step ) ) : ?>
49
  <p class="sbspf_footer_help">
50
+ <?php echo sby_admin_icon( 'chevron-right', 'sbspf_small_svg' ) ; ?>&nbsp; <?php _e('Next Step', $text_domain ); ?>: <a href="?page=<?php echo esc_attr( $slug ); ?>&tab=<?php echo esc_attr( $next_step['next_tab'] ); ?>"><?php echo esc_html( __( $next_step['instructions'], 'feeds-for-youtube' ) ); ?></a>
51
  </p>
52
  <?php endif; ?>
53
 
inc/admin/templates/support.php CHANGED
@@ -37,26 +37,46 @@ foreach ( $plugins as $plugin_path => $plugin ) {
37
  <?php
38
  $options = get_option( $this->get_option_name(), array() );
39
  foreach ( $options as $key => $val ) {
40
- if ( is_array( $val ) ) {
41
- foreach ( $val as $key2 => $val2 ) {
42
- if ( is_array( $val2 ) ) {
43
- foreach ( $val2 as $key3 => $val3 ) {
44
- $label = $key3 . ':';
45
- $value = isset( $val3 ) ? esc_attr( $val3 ) : 'unset';
46
- echo str_pad( $label, 24 ) . $value ."\n";
47
- }
48
- } else {
49
- $label = $key2 . ':';
50
- $value = isset( $val2 ) ? esc_attr( $val2 ) : 'unset';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  echo str_pad( $label, 24 ) . $value ."\n";
52
  }
 
 
 
 
53
  }
54
- } else {
55
- $label = $key . ':';
56
- $value = isset( $val ) ? esc_attr( $val ) : 'unset';
57
- echo str_pad( $label, 24 ) . $value ."\n";
58
  }
59
-
60
  }
61
  ?>
62
 
37
  <?php
38
  $options = get_option( $this->get_option_name(), array() );
39
  foreach ( $options as $key => $val ) {
40
+ if ( $key !== 'connected_accounts' ) {
41
+ if ( is_array( $val ) ) {
42
+ foreach ( $val as $key2 => $val2 ) {
43
+ if ( is_array( $val2 ) ) {
44
+ foreach ( $val2 as $key3 => $val3 ) {
45
+ $label = $key . ':';
46
+ $value = isset( $val3 ) ? esc_attr( $val3 ) : 'unset';
47
+ echo str_pad( $label, 24 ) . $value ."\n";
48
+ }
49
+ } else {
50
+ $label = $key . ':';
51
+ $value = isset( $val2 ) ? esc_attr( $val2 ) : 'unset';
52
+ echo str_pad( $label, 24 ) . $value ."\n";
53
+ }
54
+ }
55
+ } else {
56
+ $label = $key . ':';
57
+ $value = isset( $val ) ? esc_attr( $val ) : 'unset';
58
+ echo str_pad( $label, 24 ) . $value ."\n";
59
+ }
60
+ }
61
+ }
62
+ ?>
63
+
64
+ ## Connected Accounts: ##
65
+ <?php
66
+ foreach ( $options['connected_accounts'] as $account ) {
67
+ foreach ( $account as $key2 => $val2 ) {
68
+ if ( is_array( $val2 ) ) {
69
+ foreach ( $val2 as $key3 => $val3 ) {
70
+ $label = $key3 . ':';
71
+ $value = isset( $val3 ) ? esc_attr( $val3 ) : 'unset';
72
  echo str_pad( $label, 24 ) . $value ."\n";
73
  }
74
+ } else {
75
+ $label = $key2 . ':';
76
+ $value = isset( $val2 ) ? esc_attr( $val2 ) : 'unset';
77
+ echo str_pad( $label, 24 ) . $value ."\n";
78
  }
 
 
 
 
79
  }
 
80
  }
81
  ?>
82
 
inc/class-sby-display-elements.php CHANGED
@@ -352,6 +352,32 @@ class SBY_Display_Elements
352
  return $styles;
353
  }
354
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
355
  /**
356
  * Returns the html for an icon based on the kind requested
357
  *
@@ -390,6 +416,12 @@ class SBY_Display_Elements
390
  } else {
391
  return '<i aria-hidden="true" role="img" class="sby_new_logo fab fa-youtube"></i>';
392
  }
 
 
 
 
 
 
393
  } else {
394
  return '';
395
  }
352
  return $styles;
353
  }
354
 
355
+ /**
356
+ * A not very elegant but useful method to abstract out how the settings
357
+ * work for displaying certain elements in the feed.
358
+ *
359
+ * @param string $element specific key, view below for supported ones
360
+ * @param $settings
361
+ *
362
+ * @return bool
363
+ *
364
+ * @since 5.0
365
+ */
366
+ public static function should_show_element( $element, $context, $settings ) {
367
+ //user, views, date
368
+ if ( $context === 'item-hover' ) {
369
+ $include_array = $settings['hoverinclude'];
370
+ } else {
371
+ $include_array = $settings['include'];
372
+ }
373
+
374
+ if ( in_array( $element, $include_array, true ) ) {
375
+ return true;
376
+ }
377
+
378
+ return false;
379
+ }
380
+
381
  /**
382
  * Returns the html for an icon based on the kind requested
383
  *
416
  } else {
417
  return '<i aria-hidden="true" role="img" class="sby_new_logo fab fa-youtube"></i>';
418
  }
419
+ } elseif ( $type === 'play') {
420
+ if ( $icon_type === 'svg' ) {
421
+ return '<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="play" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class="svg-inline--fa fa-play fa-w-14"><path fill="currentColor" d="M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z" class=""></path></svg>';
422
+ } else {
423
+ return '<i aria-hidden="true" role="img" class="fa fas fa-play"></i>';
424
+ }
425
  } else {
426
  return '';
427
  }
inc/sby-functions.php CHANGED
@@ -26,8 +26,8 @@ function sby_youtube_feed( $atts = array() ) {
26
  $style = current_user_can( 'manage_youtube_feed_options' ) ? ' style="display: block;"' : '';
27
  ob_start(); ?>
28
  <div id="sbi_mod_error" <?php echo $style; ?>>
29
- <span><?php _e('This error message is only visible to WordPress admins', 'youtube-feed' ); ?></span><br />
30
- <p><b><?php _e( 'Error: No connected account or API key.', 'youtube-feed' ); ?></b>
31
  <p><?php _e( 'Please go to the YouTube Feed settings page to enter an API key or connect an account.', 'youtube-feed' ); ?></p>
32
  </div>
33
  <?php
26
  $style = current_user_can( 'manage_youtube_feed_options' ) ? ' style="display: block;"' : '';
27
  ob_start(); ?>
28
  <div id="sbi_mod_error" <?php echo $style; ?>>
29
+ <span><?php _e('This error message is only visible to WordPress admins', 'feeds-for-youtube' ); ?></span><br />
30
+ <p><b><?php _e( 'Error: No connected account or API key.', 'feeds-for-youtube' ); ?></b>
31
  <p><?php _e( 'Please go to the YouTube Feed settings page to enter an API key or connect an account.', 'youtube-feed' ); ?></p>
32
  </div>
33
  <?php
js/sb-youtube.js CHANGED
@@ -60,6 +60,19 @@ if(!sby_js_exists) {
60
  createFeeds(createFeedsArgs);
61
  },
62
  createLightbox: function() {
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  /* Lightbox v2.7.1 by Lokesh Dhakar - http://lokeshdhakar.com/projects/lightbox2/ - Heavily modified specifically for this plugin */
64
  (function() {
65
  var a = jQuery,
@@ -85,74 +98,52 @@ if(!sby_js_exists) {
85
  }, b.prototype.build = function() {
86
  var b = this;
87
  a(""+
88
- "<div id='sby_lightboxOverlay' class='sby_lightboxOverlay'></div>"+
89
- "<div id='sby_lightbox' class='sby_lightbox'>"+
90
- "<div class='sby_lb-outerContainer'>"+
91
- "<div class='sby_lb-container'>"+
92
- "<img class='sby_lb-image' alt='Lightbox image placeholder' src='' />"+
93
- "<div class='sby_lb-player' id='sby_lb-player'></div>" +
94
- "<div class='sby_lb-nav'><a class='sby_lb-prev' href='#' ><p class='sby-screenreader'>Previous Slide</p></a><a class='sby_lb-next' href='#' ><p class='sby-screenreader'>Next Slide</p></a></div>"+
95
- "<div class='sby_lb-loader'><a class='sby_lb-cancel'></a></div>"+
96
- "</div>"+
97
- "</div>"+
98
- "<div class='sby_lb-dataContainer'>"+
99
- "<div class='sby_lb-data'>"+
100
- "<div class='sby_lb-details'>"+
101
- "<div class='sby_lb-caption'></div>"+
102
- "<div class='sby_lb-info'>"+
103
- "<div class='sby_lb-number'></div>"+
104
- "<div class='sby_lb-closeContainer'><a class='sby_lb-close'></a></div>"+
105
- "</div>"+
106
- "</div>"+
107
- "</div>").appendTo(a("body")), this.$lightbox = a("#sby_lightbox"), this.$overlay = a("#sby_lightboxOverlay"), this.$outerContainer = this.$lightbox.find(".sby_lb-outerContainer"), this.$container = this.$lightbox.find(".sby_lb-container"), this.containerTopPadding = parseInt(this.$container.css("padding-top"), 10), this.containerRightPadding = parseInt(this.$container.css("padding-right"), 10), this.containerBottomPadding = parseInt(this.$container.css("padding-bottom"), 10), this.containerLeftPadding = parseInt(this.$container.css("padding-left"), 10), this.$overlay.hide().on("click", function() {
108
  return b.end(), !1
109
  }), jQuery(document).on('click', function(event, b, c) {
110
  //Fade out the lightbox if click anywhere outside of the two elements defined below
111
  if (!jQuery(event.target).closest('.sby_lb-outerContainer').length) {
112
  if (!jQuery(event.target).closest('.sby_lb-dataContainer').length) {
113
  //Fade out lightbox
114
- if (typeof window.sbyLightboxPlayer !== 'undefined') { window.sbyLightboxPlayer.pauseVideo(); }
115
 
116
  jQuery('#sby_lightboxOverlay, #sby_lightbox').fadeOut();
117
  }
118
  }
119
  }), this.$lightbox.hide(),
120
  jQuery('#sby_lightboxOverlay').on("click", function(c) {
121
- if (typeof window.sbyLightboxPlayer !== 'undefined') { window.sbyLightboxPlayer.pauseVideo(); }
122
 
123
  return "sby_lightbox" === a(c.target).attr("id") && b.end(), !1
124
  }), this.$lightbox.find(".sby_lb-prev").on("click", function() {
125
 
126
- if (typeof window.sbyLightboxPlayer !== 'undefined') { window.sbyLightboxPlayer.pauseVideo(); }
127
 
128
  return b.changeImage(0 === b.currentImageIndex ? b.album.length - 1 : b.currentImageIndex - 1), !1
129
  }), this.$lightbox.find(".sby_lb-container").on("swiperight", function() {
130
 
131
- if (typeof window.sbyLightboxPlayer !== 'undefined') { window.sbyLightboxPlayer.pauseVideo(); }
132
 
133
  return b.changeImage(0 === b.currentImageIndex ? b.album.length - 1 : b.currentImageIndex - 1), !1
134
  }), this.$lightbox.find(".sby_lb-next").on("click", function() {
135
 
136
- if (typeof window.sbyLightboxPlayer !== 'undefined') { window.sbyLightboxPlayer.pauseVideo(); }
137
 
138
  return b.changeImage(b.currentImageIndex === b.album.length - 1 ? 0 : b.currentImageIndex + 1), !1
139
  }), this.$lightbox.find(".sby_lb-container").on("swipeleft", function() {
140
 
141
- if (typeof window.sbyLightboxPlayer !== 'undefined') { window.sbyLightboxPlayer.pauseVideo(); }
142
 
143
  return b.changeImage(b.currentImageIndex === b.album.length - 1 ? 0 : b.currentImageIndex + 1), !1
144
  }), this.$lightbox.find(".sby_lb-loader, .sby_lb-close").on("click", function() {
145
 
146
- if (typeof window.sbyLightboxPlayer !== 'undefined') { window.sbyLightboxPlayer.pauseVideo(); }
147
 
148
  return b.end(), !1
149
  })
150
  }, b.prototype.start = function(b) {
151
  function c(a) {
152
- d.album.push({
153
- link: a.attr("href"),
154
- video: a.attr("data-video-id"),
155
- })
156
  }
157
  var d = this,
158
  e = a(window);
@@ -183,7 +174,8 @@ if(!sby_js_exists) {
183
  var e = new Image;
184
  e.onload = function() {
185
  var f, g, h, i, j, k, l;
186
- d.attr("src", c.album[b].link), f = a(e), d.width(e.width), d.height(e.height), c.options.fitImagesInViewport && (l = a(window).width(), k = a(window).height(), j = l - c.containerLeftPadding - c.containerRightPadding - 20, i = k - c.containerTopPadding - c.containerBottomPadding - 150, (e.width > j || e.height > i) && (e.width / j > e.height / i ? (h = j, g = parseInt(e.height / (e.width / h), 10), d.width(h), d.height(g)) : (g = i, h = parseInt(e.width / (e.height / g), 10), d.width(h), d.height(g)))), c.sizeContainer(d.width(), d.height())
 
187
  }, e.src = this.album[b].link, this.currentImageIndex = b
188
  }, b.prototype.sizeOverlay = function() {
189
  this.$overlay.width(a(window).width()).height(a(document).height())
@@ -214,10 +206,18 @@ if(!sby_js_exists) {
214
  var b = this;
215
 
216
  /** NEW PHOTO ACTION **/
 
 
 
 
 
217
  //Switch video when either a new popup or navigating to new one
 
 
 
218
  if( sby_supports_video() ){
219
  jQuery('#sby_lightbox').removeClass('sby_video_lightbox');
220
- if( this.album[this.currentImageIndex].video.length ){
221
  var playerID = 'sby_lb-player';
222
  jQuery('#sby_lightbox').addClass('sby_video_lightbox');
223
 
@@ -232,13 +232,40 @@ if(!sby_js_exists) {
232
  rel: 0,
233
  autoplay: autoplay
234
  },
 
 
 
 
 
 
235
  };
 
236
 
237
  window.sbyLightboxPlayer = new window.YT.Player(playerID, args);
238
  } else {
239
  window.sbyLightboxPlayer.loadVideoById(videoID);
240
  }
241
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
242
  }
243
  }
244
  }, b.prototype.preloadNeighboringImages = function() {
@@ -283,7 +310,7 @@ if(!sby_js_exists) {
283
  this.changeImage(0);
284
  }
285
 
286
- if (typeof window.sbyLightboxPlayer !== 'undefined') { window.sbyLightboxPlayer.pauseVideo(); }
287
  }
288
 
289
  }, b.prototype.end = function() {
@@ -398,6 +425,7 @@ if(!sby_js_exists) {
398
  this.needsResizing = [];
399
  this.outOfPages = false;
400
  this.isInitialized = false;
 
401
  }
402
 
403
  SbyFeed.prototype = {
@@ -423,10 +451,15 @@ if(!sby_js_exists) {
423
  });
424
  },
425
  initLayout: function() {
 
 
 
426
  var $self = $(this.el),
427
  feed = this;
 
428
  if ($self.hasClass('sby_layout_gallery') && $self.find('.sby_player_outer_wrap').length) {
429
  this.maybeRaiseSingleImageResolution($self.find('.sby_player_outer_wrap'), 0, true);
 
430
  $self.find('.sby_player_outer_wrap .sby_video_thumbnail').off().click(function (event) {
431
  event.preventDefault();
432
  feed.onThumbnailClick($(this), true);
@@ -440,18 +473,18 @@ if(!sby_js_exists) {
440
  $self.addClass('sby_player_added').find('.sby_player_outer_wrap').addClass('sby_player_loading');
441
  $self.find('.sby_player_outer_wrap .sby_video_thumbnail').find('.sby_loader').show().removeClass('sby_hidden');
442
  feed.createPlayer('sby_player'+feed.index);
 
 
443
  }
444
  });
445
 
446
  }
447
-
448
  },
449
  createPlayer: function(playerID,videoID,autoplay,args) {
450
  var $self = $(this.el),
451
  feed = this;
452
  videoID = typeof videoID !== 'undefined' ? videoID : this.getVideoID($self.find('.sby_item').first());
453
  autoplay = typeof autoplay !== 'undefined' ? autoplay : 0;
454
-
455
  if (typeof args === 'undefined') {
456
  args = {
457
  host: window.location.protocol + '//www.youtube-nocookie.com',
@@ -476,11 +509,15 @@ if(!sby_js_exists) {
476
  }
477
  },
478
  'onStateChange': function(data) {
 
 
 
479
  if (data.data !== 1) return;
480
  if (typeof feed.players !== 'undefined') {
481
  $self.find('.sby_item').each(function() {
482
  var itemVidID = feed.getVideoID($(this));
483
- if (videoID !== itemVidID) {
 
484
  if (typeof feed.players[itemVidID] !== 'undefined') {
485
  feed.players[itemVidID].pauseVideo();
486
  }
@@ -491,7 +528,13 @@ if(!sby_js_exists) {
491
  },
492
  }
493
  }
494
- var newPlayer = new window.YT.Player(playerID, args);
 
 
 
 
 
 
495
 
496
  if ($self.hasClass('sby_layout_list') && typeof this.players[videoID] === 'undefined') {
497
  this.players[videoID] = newPlayer;
@@ -501,6 +544,8 @@ if(!sby_js_exists) {
501
 
502
  return newPlayer;
503
  },
 
 
504
  afterInitialImagesLoaded: function() {
505
  this.initLayout();
506
  this.loadMoreButtonInit();
@@ -508,6 +553,7 @@ if(!sby_js_exists) {
508
  this.beforeNewImagesRevealed();
509
  this.revealNewImages();
510
  this.afterNewImagesRevealed();
 
511
  },
512
  afterResize: function() {
513
  this.setImageHeight();
@@ -537,6 +583,9 @@ if(!sby_js_exists) {
537
  this.setImageHeight();
538
  this.maybeRaiseImageResolution(true);
539
  this.setImageSizeClass();
 
 
 
540
  },
541
  revealNewImages: function() {
542
  var $self = $(this.el),
@@ -576,6 +625,13 @@ if(!sby_js_exists) {
576
  $self.find('.sby_video_thumbnail').attr('href',sbyOptions.lightboxPlaceholder);
577
  }
578
  }
 
 
 
 
 
 
 
579
  }); //End .sby_item each
580
 
581
  //Remove the new class after 500ms, once the sorting is done
@@ -593,6 +649,11 @@ if(!sby_js_exists) {
593
  time += 10;
594
  });
595
  }, 500);
 
 
 
 
 
596
  },
597
  afterNewImagesRevealed: function() {
598
  this.listenForVisibilityChange();
@@ -657,6 +718,9 @@ if(!sby_js_exists) {
657
  };
658
  sbyAjax(submitData,onSuccess);
659
  }
 
 
 
660
  },
661
  loadMoreButtonInit: function () {
662
  var $self = $(this.el),
@@ -683,18 +747,6 @@ if(!sby_js_exists) {
683
  if (feed.settings.debugEnabled) {
684
  console.log(response);
685
  }
686
- if (typeof response.feedStatus.cacheAll !== 'undefined'
687
- && response.feedStatus.cacheAll) {
688
- feed.settings.cacheAll = true;
689
- } else {
690
- feed.settings.cacheAll = false;
691
- }
692
- if (typeof response.feedStatus.checkWPPosts !== 'undefined'
693
- && response.feedStatus.checkWPPosts) {
694
- feed.settings.checkWPPosts = true;
695
- } else {
696
- feed.settings.checkWPPosts = false;
697
- }
698
  feed.appendNewPosts(response.html);
699
  feed.addResizedImages(response.resizedImages);
700
  if (feed.settings.ajaxPostLoad) {
@@ -710,6 +762,7 @@ if(!sby_js_exists) {
710
  } else {
711
  feed.outOfPages = false;
712
  }
 
713
  $('.sby_no_js').removeClass('sby_no_js');
714
  }
715
 
@@ -866,15 +919,18 @@ if(!sby_js_exists) {
866
  num = typeof $self.attr('data-num') !== 'undefined' && $self.attr('data-num') !== '' ? parseInt($self.attr('data-num')) : 1,
867
  nummobile = typeof $self.attr('data-nummobile') !== 'undefined' && $self.attr('data-nummobile') !== '' ? parseInt($self.attr('data-nummobile')) : num;
868
 
869
- if ($(window).width() < 480) {
870
- if (nummobile < $self.find('.sby_item').length) {
871
- $self.find('.sby_item').slice(nummobile - $self.find('.sby_item').length).addClass('sby_num_diff_hide');
872
- }
873
- } else {
874
- if (num < $self.find('.sby_item').length) {
875
- $self.find('.sby_item').slice(num - $self.find('.sby_item').length).addClass('sby_num_diff_hide');
 
 
876
  }
877
  }
 
878
  },
879
  setImageSizeClass: function () {
880
  var $self = $(this.el);
@@ -984,8 +1040,9 @@ if(!sby_js_exists) {
984
  }
985
  } else if ($el.hasClass('sb_youtube')) {
986
  return $el.find('.sby_item').first().find('.sby_video_thumbnail').attr('data-video-id');
 
 
987
  }
988
- console.log('no id');
989
  return '';
990
  },
991
  getAvatarUrl: function (username,favorType) {
@@ -1050,42 +1107,51 @@ if(!sby_js_exists) {
1050
 
1051
  return parseInt(returnCols);
1052
  },
1053
- onThumbnailClick: function($clicked,isPlayer) {
1054
  if (!this.canCreatePlayer()) {
1055
  return;
1056
  }
 
1057
  var $self = $(this.el);
1058
  if ($self.hasClass('sby_layout_gallery')) {
1059
-
1060
  $self.addClass('sby_player_added').find('.sby_player_outer_wrap').addClass('sby_player_loading');
1061
  $self.find('.sby_player_outer_wrap .sby_video_thumbnail').find('.sby_loader').show().removeClass('sby_hidden');
1062
  if (!$self.find('.sby_player_outer_wrap iframe').length) {
1063
  if (isPlayer) {
1064
  this.createPlayer('sby_player'+this.index);
1065
  } else {
1066
- this.createPlayer('sby_player'+this.index,this.getVideoID($clicked.closest('.sby_item')));
 
1067
  }
1068
  } else {
1069
  if (isPlayer) {
1070
- this.playVideoInPlayer(this.getVideoID($self.find('.sby_item').first()));
 
 
1071
  } else {
1072
- this.playVideoInPlayer(this.getVideoID($clicked.closest('.sby_item')));
 
 
 
1073
  this.afterVideoChanged();
1074
  }
1075
  }
1076
 
1077
- } else if ($(this.el).hasClass('sby_layout_grid')) {
1078
- var $sbyItem = $clicked.closest('.sby_item'),
1079
- videoID = this.getVideoID($sbyItem);
1080
  this.playVideoInPlayer(videoID);
1081
  this.afterVideoChanged();
1082
  } else if ($(this.el).hasClass('sby_layout_list')) {
1083
- var $sbyItem = $clicked.closest('.sby_item'),
1084
- videoID = this.getVideoID($sbyItem);
1085
- if (!$sbyItem.find('iframe').length) {
1086
  $sbyItem.find('.sby_loader').show().removeClass('sby_hidden');
1087
  $sbyItem.addClass('sby_player_loading sby_player_loaded');
1088
  this.createPlayer('sby_player_'+videoID,videoID);
 
 
 
1089
  }
1090
  }
1091
  },
@@ -1106,12 +1172,24 @@ if(!sby_js_exists) {
1106
  },
1107
  onThumbnailLeave: function($hovered) {
1108
  },
 
 
 
 
 
 
 
 
1109
  canCreatePlayer: function() {
1110
- return (this.playerAPIReady && this.consentGiven);
1111
  },
1112
- playVideoInPlayer: function(videoID) {
1113
  if (typeof this.player !== 'undefined' && typeof this.player.loadVideoById !== 'undefined') {
1114
  this.player.loadVideoById(videoID);
 
 
 
 
1115
  }
1116
  },
1117
  afterVideoChanged: function() {
@@ -1126,6 +1204,61 @@ if(!sby_js_exists) {
1126
  }
1127
 
1128
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1129
  }
1130
  };
1131
 
@@ -1138,6 +1271,10 @@ if(!sby_js_exists) {
1138
  return new SbyFeed(feed,index,feedOptions);
1139
  }
1140
 
 
 
 
 
1141
  function sbyAjax(submitData,onSuccess) {
1142
  $.ajax({
1143
  url: sbyOptions.adminAjaxUrl,
@@ -1160,13 +1297,97 @@ if(!sby_js_exists) {
1160
  sby_init();
1161
  });
1162
 
 
 
 
 
 
 
 
1163
  } // if sby_js_exists
1164
 
1165
  window.onYouTubeIframeAPIReady = function() {
1166
  var numFeeds = document.getElementsByClassName('sb_youtube').length;
1167
  if (numFeeds > 0) {
1168
- for (var i = 0; i < numFeeds; i++) {
1169
- window.sby.feeds[i].playerAPIReady = true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1170
  }
1171
  }
1172
  };
60
  createFeeds(createFeedsArgs);
61
  },
62
  createLightbox: function() {
63
+ var lbBuilder = sbyGetlightboxBuilder();
64
+ var sby_lb_delay = (function () {
65
+ var sby_timer = 0;
66
+ return function (sby_callback, sby_ms) {
67
+ clearTimeout(sby_timer);
68
+ sby_timer = setTimeout(sby_callback, sby_ms);
69
+ };
70
+ })();
71
+ jQuery(window).resize(function () {
72
+ sby_lb_delay(function () {
73
+ lbBuilder.afterResize();
74
+ }, 200);
75
+ });
76
  /* Lightbox v2.7.1 by Lokesh Dhakar - http://lokeshdhakar.com/projects/lightbox2/ - Heavily modified specifically for this plugin */
77
  (function() {
78
  var a = jQuery,
98
  }, b.prototype.build = function() {
99
  var b = this;
100
  a(""+
101
+ lbBuilder.template()).appendTo(a("body")), this.$lightbox = a("#sby_lightbox"), this.$overlay = a("#sby_lightboxOverlay"), this.$outerContainer = this.$lightbox.find(".sby_lb-outerContainer"), this.$container = this.$lightbox.find(".sby_lb-container"), this.containerTopPadding = parseInt(this.$container.css("padding-top"), 10), this.containerRightPadding = parseInt(this.$container.css("padding-right"), 10), this.containerBottomPadding = parseInt(this.$container.css("padding-bottom"), 10), this.containerLeftPadding = parseInt(this.$container.css("padding-left"), 10), this.$overlay.hide().on("click", function() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  return b.end(), !1
103
  }), jQuery(document).on('click', function(event, b, c) {
104
  //Fade out the lightbox if click anywhere outside of the two elements defined below
105
  if (!jQuery(event.target).closest('.sby_lb-outerContainer').length) {
106
  if (!jQuery(event.target).closest('.sby_lb-dataContainer').length) {
107
  //Fade out lightbox
108
+ if (typeof window.sbyLightboxPlayer !== 'undefined') { YT.get('sby_lb-player').pauseVideo(); }
109
 
110
  jQuery('#sby_lightboxOverlay, #sby_lightbox').fadeOut();
111
  }
112
  }
113
  }), this.$lightbox.hide(),
114
  jQuery('#sby_lightboxOverlay').on("click", function(c) {
115
+ if (typeof window.sbyLightboxPlayer !== 'undefined') { YT.get('sby_lb-player').pauseVideo(); }
116
 
117
  return "sby_lightbox" === a(c.target).attr("id") && b.end(), !1
118
  }), this.$lightbox.find(".sby_lb-prev").on("click", function() {
119
 
120
+ if (typeof window.sbyLightboxPlayer !== 'undefined') { YT.get('sby_lb-player').pauseVideo(); }
121
 
122
  return b.changeImage(0 === b.currentImageIndex ? b.album.length - 1 : b.currentImageIndex - 1), !1
123
  }), this.$lightbox.find(".sby_lb-container").on("swiperight", function() {
124
 
125
+ if (typeof window.sbyLightboxPlayer !== 'undefined') { YT.get('sby_lb-player').pauseVideo(); }
126
 
127
  return b.changeImage(0 === b.currentImageIndex ? b.album.length - 1 : b.currentImageIndex - 1), !1
128
  }), this.$lightbox.find(".sby_lb-next").on("click", function() {
129
 
130
+ if (typeof window.sbyLightboxPlayer !== 'undefined') { YT.get('sby_lb-player').pauseVideo(); }
131
 
132
  return b.changeImage(b.currentImageIndex === b.album.length - 1 ? 0 : b.currentImageIndex + 1), !1
133
  }), this.$lightbox.find(".sby_lb-container").on("swipeleft", function() {
134
 
135
+ if (typeof window.sbyLightboxPlayer !== 'undefined') { YT.get('sby_lb-player').pauseVideo(); }
136
 
137
  return b.changeImage(b.currentImageIndex === b.album.length - 1 ? 0 : b.currentImageIndex + 1), !1
138
  }), this.$lightbox.find(".sby_lb-loader, .sby_lb-close").on("click", function() {
139
 
140
+ if (typeof window.sbyLightboxPlayer !== 'undefined') { YT.get('sby_lb-player').pauseVideo(); }
141
 
142
  return b.end(), !1
143
  })
144
  }, b.prototype.start = function(b) {
145
  function c(a) {
146
+ d.album.push(lbBuilder.getData(a))
 
 
 
147
  }
148
  var d = this,
149
  e = a(window);
174
  var e = new Image;
175
  e.onload = function() {
176
  var f, g, h, i, j, k, l;
177
+ var sbyArrowWidth = 100;
178
+ d.attr("src", c.album[b].link), f = a(e), d.width(e.width), d.height(e.height), c.options.fitImagesInViewport && (l = a(window).width(), k = a(window).height(), j = l - c.containerLeftPadding - c.containerRightPadding - 20 - sbyArrowWidth, i = k - c.containerTopPadding - c.containerBottomPadding - 150, (e.width > j || e.height > i) && (e.width / j > e.height / i ? (h = j, g = parseInt(e.height / (e.width / h), 10), d.width(h), d.height(g)) : (g = i, h = parseInt(e.width / (e.height / g), 10), d.width(h), d.height(g)))), c.sizeContainer(d.width(), d.height())
179
  }, e.src = this.album[b].link, this.currentImageIndex = b
180
  }, b.prototype.sizeOverlay = function() {
181
  this.$overlay.width(a(window).width()).height(a(document).height())
206
  var b = this;
207
 
208
  /** NEW PHOTO ACTION **/
209
+ if(jQuery('iframe.sby_lb-player-loaded').length) {
210
+ console.log('swapping');
211
+ jQuery('.sby_lb-player-placeholder').replaceWith(jQuery('iframe.sby_lb-player-loaded'));
212
+ jQuery('iframe.sby_lb-player-loaded').removeClass('sby_lb-player-loaded').show();
213
+ }
214
  //Switch video when either a new popup or navigating to new one
215
+ var feed = window.sby.feeds[this.album[this.currentImageIndex].feedIndex];
216
+ lbBuilder.beforePlayerSetup(this.$lightbox,this.album[this.currentImageIndex],this.currentImageIndex,this.album,feed);
217
+
218
  if( sby_supports_video() ){
219
  jQuery('#sby_lightbox').removeClass('sby_video_lightbox');
220
+ if (this.album[this.currentImageIndex].video.length){
221
  var playerID = 'sby_lb-player';
222
  jQuery('#sby_lightbox').addClass('sby_video_lightbox');
223
 
232
  rel: 0,
233
  autoplay: autoplay
234
  },
235
+ events: {
236
+ 'onStateChange': function(data) {
237
+ var videoID = data.target.getVideoData()['video_id'];
238
+ feed.afterStateChange(playerID,videoID,data,$('#' + playerID).closest('.sby_video_thumbnail_wrap'));
239
+ }
240
+ }
241
  };
242
+ feed.maybeAddCTA(playerID);
243
 
244
  window.sbyLightboxPlayer = new window.YT.Player(playerID, args);
245
  } else {
246
  window.sbyLightboxPlayer.loadVideoById(videoID);
247
  }
248
 
249
+ lbBuilder.afterPlayerSetup(this.$lightbox,this.album[this.currentImageIndex],this.currentImageIndex,this.album);
250
+
251
+ if (this.album.length > 1 && this.options.showImageNumberLabel) {
252
+ this.$lightbox.find(".sby_lb-number").text(this.options.albumLabel(this.currentImageIndex + 1, this.album.length)).fadeIn("fast");
253
+ } else {
254
+ this.$lightbox.find(".sby_lb-number").hide();
255
+ }
256
+ this.$outerContainer.removeClass("animating");
257
+ this.$lightbox.find(".sby_lb-dataContainer").fadeIn(this.options.resizeDuration, function() {
258
+ return b.sizeOverlay()
259
+ });
260
+
261
+ setTimeout(function() {
262
+ $('#sby_lightbox .sby_lb-player').css({
263
+ 'height' : $('#sby_lightbox .sby_lb-outerContainer').height()+'px',
264
+ 'width' : $('#sby_lightbox .sby_lb-outerContainer').width()+'px',
265
+ 'top': 0
266
+ });
267
+ },400);
268
+
269
  }
270
  }
271
  }, b.prototype.preloadNeighboringImages = function() {
310
  this.changeImage(0);
311
  }
312
 
313
+ if (typeof window.sbyLightboxPlayer !== 'undefined') { YT.get('sby_lb-player').pauseVideo(); }
314
  }
315
 
316
  }, b.prototype.end = function() {
425
  this.needsResizing = [];
426
  this.outOfPages = false;
427
  this.isInitialized = false;
428
+ this.mostRecentlyLoadedPosts = [];
429
  }
430
 
431
  SbyFeed.prototype = {
451
  });
452
  },
453
  initLayout: function() {
454
+ this.initGalleryLayout();
455
+ },
456
+ initGalleryLayout: function() {
457
  var $self = $(this.el),
458
  feed = this;
459
+
460
  if ($self.hasClass('sby_layout_gallery') && $self.find('.sby_player_outer_wrap').length) {
461
  this.maybeRaiseSingleImageResolution($self.find('.sby_player_outer_wrap'), 0, true);
462
+
463
  $self.find('.sby_player_outer_wrap .sby_video_thumbnail').off().click(function (event) {
464
  event.preventDefault();
465
  feed.onThumbnailClick($(this), true);
473
  $self.addClass('sby_player_added').find('.sby_player_outer_wrap').addClass('sby_player_loading');
474
  $self.find('.sby_player_outer_wrap .sby_video_thumbnail').find('.sby_loader').show().removeClass('sby_hidden');
475
  feed.createPlayer('sby_player'+feed.index);
476
+ } else if (typeof feed.player === 'undefined' && feed.playerEagerLoaded()) {
477
+ feed.createPlayer('sby_player'+feed.index);
478
  }
479
  });
480
 
481
  }
 
482
  },
483
  createPlayer: function(playerID,videoID,autoplay,args) {
484
  var $self = $(this.el),
485
  feed = this;
486
  videoID = typeof videoID !== 'undefined' ? videoID : this.getVideoID($self.find('.sby_item').first());
487
  autoplay = typeof autoplay !== 'undefined' ? autoplay : 0;
 
488
  if (typeof args === 'undefined') {
489
  args = {
490
  host: window.location.protocol + '//www.youtube-nocookie.com',
509
  }
510
  },
511
  'onStateChange': function(data) {
512
+ $self.find('.sby_player_outer_wrap').removeClass('sby_player_loading').find('.sby_video_thumbnail').css('z-index', -1).find('.sby_loader').hide().addClass('sby_hidden');
513
+ var videoID = data.target.getVideoData()['video_id'];
514
+ feed.afterStateChange(playerID,videoID,data,$('#' + playerID).closest('.sby_video_thumbnail_wrap'));
515
  if (data.data !== 1) return;
516
  if (typeof feed.players !== 'undefined') {
517
  $self.find('.sby_item').each(function() {
518
  var itemVidID = feed.getVideoID($(this));
519
+
520
+ if ($(this).find('iframe').length && $(data.target.a).attr('id') !== $(this).find('iframe').attr('id')) {
521
  if (typeof feed.players[itemVidID] !== 'undefined') {
522
  feed.players[itemVidID].pauseVideo();
523
  }
528
  },
529
  }
530
  }
531
+ if (window.sbyEagerLoading) {
532
+ var newPlayer = YT.get(playerID);
533
+ } else {
534
+ var newPlayer = new window.YT.Player(playerID, args);
535
+ }
536
+
537
+ this.maybeAddCTA(playerID);
538
 
539
  if ($self.hasClass('sby_layout_list') && typeof this.players[videoID] === 'undefined') {
540
  this.players[videoID] = newPlayer;
544
 
545
  return newPlayer;
546
  },
547
+ afterStateChange: function(playerID,videoID,data,$player) {
548
+ },
549
  afterInitialImagesLoaded: function() {
550
  this.initLayout();
551
  this.loadMoreButtonInit();
553
  this.beforeNewImagesRevealed();
554
  this.revealNewImages();
555
  this.afterNewImagesRevealed();
556
+ this.afterFeedSet();
557
  },
558
  afterResize: function() {
559
  this.setImageHeight();
583
  this.setImageHeight();
584
  this.maybeRaiseImageResolution(true);
585
  this.setImageSizeClass();
586
+ },
587
+ afterFeedSet: function() {
588
+
589
  },
590
  revealNewImages: function() {
591
  var $self = $(this.el),
625
  $self.find('.sby_video_thumbnail').attr('href',sbyOptions.lightboxPlaceholder);
626
  }
627
  }
628
+ feed.afterItemRevealed($self);
629
+ }); //End .sby_item each
630
+
631
+ $self.find('.sby_player_item').each(function (index) {
632
+ var $self = jQuery(this);
633
+
634
+ feed.afterItemRevealed($self);
635
  }); //End .sby_item each
636
 
637
  //Remove the new class after 500ms, once the sorting is done
649
  time += 10;
650
  });
651
  }, 500);
652
+
653
+
654
+ },
655
+ afterItemRevealed: function() {
656
+
657
  },
658
  afterNewImagesRevealed: function() {
659
  this.listenForVisibilityChange();
718
  };
719
  sbyAjax(submitData,onSuccess);
720
  }
721
+ },
722
+ afterSendCheckWPPostsToServer: function (response) {
723
+
724
  },
725
  loadMoreButtonInit: function () {
726
  var $self = $(this.el),
747
  if (feed.settings.debugEnabled) {
748
  console.log(response);
749
  }
 
 
 
 
 
 
 
 
 
 
 
 
750
  feed.appendNewPosts(response.html);
751
  feed.addResizedImages(response.resizedImages);
752
  if (feed.settings.ajaxPostLoad) {
762
  } else {
763
  feed.outOfPages = false;
764
  }
765
+
766
  $('.sby_no_js').removeClass('sby_no_js');
767
  }
768
 
919
  num = typeof $self.attr('data-num') !== 'undefined' && $self.attr('data-num') !== '' ? parseInt($self.attr('data-num')) : 1,
920
  nummobile = typeof $self.attr('data-nummobile') !== 'undefined' && $self.attr('data-nummobile') !== '' ? parseInt($self.attr('data-nummobile')) : num;
921
 
922
+ if (!$self.hasClass('.sby_layout_carousel')) {
923
+ if ($(window).width() < 480) {
924
+ if (nummobile < $self.find('.sby_item').length) {
925
+ $self.find('.sby_item').slice(nummobile - $self.find('.sby_item').length).addClass('sby_num_diff_hide');
926
+ }
927
+ } else {
928
+ if (num < $self.find('.sby_item').length) {
929
+ $self.find('.sby_item').slice(num - $self.find('.sby_item').length).addClass('sby_num_diff_hide');
930
+ }
931
  }
932
  }
933
+
934
  },
935
  setImageSizeClass: function () {
936
  var $self = $(this.el);
1040
  }
1041
  } else if ($el.hasClass('sb_youtube')) {
1042
  return $el.find('.sby_item').first().find('.sby_video_thumbnail').attr('data-video-id');
1043
+ } else if ($(this.el).find('.sby_video_thumbnail').first().length && typeof $(this.el).find('.sby_video_thumbnail').first().attr('data-video-id') !== 'undefined'){
1044
+ return $(this.el).find('.sby_video_thumbnail').first().attr('data-video-id');
1045
  }
 
1046
  return '';
1047
  },
1048
  getAvatarUrl: function (username,favorType) {
1107
 
1108
  return parseInt(returnCols);
1109
  },
1110
+ onThumbnailClick: function($clicked,isPlayer,videoID) {
1111
  if (!this.canCreatePlayer()) {
1112
  return;
1113
  }
1114
+
1115
  var $self = $(this.el);
1116
  if ($self.hasClass('sby_layout_gallery')) {
 
1117
  $self.addClass('sby_player_added').find('.sby_player_outer_wrap').addClass('sby_player_loading');
1118
  $self.find('.sby_player_outer_wrap .sby_video_thumbnail').find('.sby_loader').show().removeClass('sby_hidden');
1119
  if (!$self.find('.sby_player_outer_wrap iframe').length) {
1120
  if (isPlayer) {
1121
  this.createPlayer('sby_player'+this.index);
1122
  } else {
1123
+ var videoID = typeof videoID === 'undefined' ? this.getVideoID($clicked.closest('.sby_item')) : videoID;
1124
+ this.createPlayer('sby_player'+this.index,videoID);
1125
  }
1126
  } else {
1127
  if (isPlayer) {
1128
+ var videoID = typeof videoID === 'undefined' ? this.getVideoID($self.find('.sby_item').first()) : videoID;
1129
+
1130
+ this.playVideoInPlayer(videoID);
1131
  } else {
1132
+ var videoID = typeof videoID === 'undefined' ? this.getVideoID($clicked.closest('.sby_item')) : videoID;
1133
+
1134
+ this.changePlayerInfo($clicked.closest('.sby_item'));
1135
+ this.playVideoInPlayer(videoID);
1136
  this.afterVideoChanged();
1137
  }
1138
  }
1139
 
1140
+ } else if ($(this.el).hasClass('sby_layout_grid') || $(this.el).hasClass('sby_layout_carousel')) {
1141
+ var $sbyItem = $clicked.closest('.sby_item');
1142
+ var videoID = typeof videoID === 'undefined' ? this.getVideoID($sbyItem) : videoID;
1143
  this.playVideoInPlayer(videoID);
1144
  this.afterVideoChanged();
1145
  } else if ($(this.el).hasClass('sby_layout_list')) {
1146
+ var $sbyItem = $clicked.closest('.sby_item');
1147
+ var videoID = typeof videoID === 'undefined' ? this.getVideoID($sbyItem) : videoID;
1148
+ if ($sbyItem.length && !$sbyItem.find('iframe').length) {
1149
  $sbyItem.find('.sby_loader').show().removeClass('sby_hidden');
1150
  $sbyItem.addClass('sby_player_loading sby_player_loaded');
1151
  this.createPlayer('sby_player_'+videoID,videoID);
1152
+ } else {
1153
+ this.playVideoInPlayer(videoID,$sbyItem.attr('data-video-id'));
1154
+ this.afterVideoChanged();
1155
  }
1156
  }
1157
  },
1172
  },
1173
  onThumbnailLeave: function($hovered) {
1174
  },
1175
+ changePlayerInfo: function($newItem) {
1176
+
1177
+ },
1178
+ playerEagerLoaded: function() {
1179
+ if (typeof this.player !== 'undefined' || $(this.el).hasClass('sby_player_loaded')) {
1180
+ return true;
1181
+ }
1182
+ },
1183
  canCreatePlayer: function() {
1184
+ return this.playerEagerLoaded() || (this.playerAPIReady && this.consentGiven);
1185
  },
1186
+ playVideoInPlayer: function(videoID,playerID) {
1187
  if (typeof this.player !== 'undefined' && typeof this.player.loadVideoById !== 'undefined') {
1188
  this.player.loadVideoById(videoID);
1189
+ } else if (typeof window.sbyLightboxPlayer !== 'undefined' && typeof window.sbyLightboxPlayer.loadVideoById !== 'undefined') {
1190
+ window.sbyLightboxPlayer.loadVideoById(videoID);
1191
+ } else if (typeof playerID !== 'undefined' && typeof this.players !== 'undefined' && typeof this.players[playerID] !== 'undefined') {
1192
+ this.players[playerID].loadVideoById(videoID);
1193
  }
1194
  },
1195
  afterVideoChanged: function() {
1204
  }
1205
 
1206
  }
1207
+ },
1208
+ maybeAddCTA: function() {
1209
+
1210
+ }
1211
+ };
1212
+
1213
+ function SbyLightboxBuilder() {}
1214
+
1215
+ SbyLightboxBuilder.prototype = {
1216
+ getData: function(a){
1217
+ var closestFeedIndex = parseInt(a.closest('.sb_youtube').attr('data-sby-index')-1);
1218
+ return {
1219
+ feedIndex : closestFeedIndex,
1220
+ link: a.attr("href"),
1221
+ video: a.attr("data-video-id")
1222
+ }
1223
+ },
1224
+ template: function () {
1225
+ return "<div id='sby_lightboxOverlay' class='sby_lightboxOverlay'></div>"+
1226
+ "<div id='sby_lightbox' class='sby_lightbox'>"+
1227
+ "<div class='sby_lb-outerContainer'>"+
1228
+ "<div class='sby_lb-container'>"+
1229
+ "<img class='sby_lb-image' alt='Lightbox image placeholder' src='' />"+
1230
+ "<div class='sby_lb-player sby_lb-player-placeholder' id='sby_lb-player'></div>" +
1231
+ "<div class='sby_lb-nav'><a class='sby_lb-prev' href='#' ><p class='sby-screenreader'>Previous Slide</p><span></span></a><a class='sby_lb-next' href='#' ><p class='sby-screenreader'>Next Slide</p><span></span></a></div>"+
1232
+ "<div class='sby_lb-loader'><a class='sby_lb-cancel'></a></div>"+
1233
+ "</div>"+
1234
+ "</div>"+
1235
+ "<div class='sby_lb-dataContainer'>"+
1236
+ "<div class='sby_lb-data'>"+
1237
+ "<div class='sby_lb-details'>"+
1238
+ "<div class='sby_lb-caption'></div>"+
1239
+ "<div class='sby_lb-info'>"+
1240
+ "<div class='sby_lb-number'></div>"+
1241
+ "</div>"+
1242
+ "</div>"+
1243
+ "<div class='sby_lb-closeContainer'><a class='sby_lb-close'></a></div>"+
1244
+ "</div>"+
1245
+ "</div>"+
1246
+ "</div>";
1247
+ },
1248
+ beforePlayerSetup: function($lightbox,data,index,album,feed){
1249
+
1250
+ },
1251
+ afterPlayerSetup: function ($lightbox,data,index,album) {
1252
+ },
1253
+ afterResize: function(){
1254
+ var playerHeight = $('#sby_lightbox .sby_lb-player').height();
1255
+
1256
+ if (playerHeight > 100) {
1257
+ var heightDif = $('#sby_lightbox .sby_lb-outerContainer').height() - playerHeight;
1258
+ if (heightDif > 10) {
1259
+ $('#sby_lightbox .sby_lb-player').css('top',heightDif/2);
1260
+ }
1261
+ }
1262
  }
1263
  };
1264
 
1271
  return new SbyFeed(feed,index,feedOptions);
1272
  }
1273
 
1274
+ function sbyGetlightboxBuilder() {
1275
+ return new SbyLightboxBuilder();
1276
+ }
1277
+
1278
  function sbyAjax(submitData,onSuccess) {
1279
  $.ajax({
1280
  url: sbyOptions.adminAjaxUrl,
1297
  sby_init();
1298
  });
1299
 
1300
+ if (typeof window.sbyEagerLoading === 'undefined') {
1301
+ window.sbyEagerLoading = false;
1302
+ if (jQuery('div[data-vc-video-bg]').length) {
1303
+ window.sbyEagerLoading = true;
1304
+ }
1305
+ }
1306
+
1307
  } // if sby_js_exists
1308
 
1309
  window.onYouTubeIframeAPIReady = function() {
1310
  var numFeeds = document.getElementsByClassName('sb_youtube').length;
1311
  if (numFeeds > 0) {
1312
+ if (window.sbyEagerLoading || typeof window.sby === 'undefined') {
1313
+ window.sbyEagerLoading = true;
1314
+
1315
+ var flagLightbox = false,
1316
+ autoplay = false;
1317
+
1318
+ jQuery('.sb_youtube').each(function(index) {
1319
+ var $self = jQuery(this);
1320
+
1321
+ if ($self.hasClass('sby_layout_list')) {
1322
+ jQuery(this).addClass('sby_player_loaded');
1323
+
1324
+ $self.find('.sby_item').each(function() {
1325
+ videoID = jQuery(this).attr('data-video-id');
1326
+ //this.createPlayer(,videoID,0);
1327
+ player = new YT.Player('sby_player_'+videoID, {
1328
+ height: '100',
1329
+ width: '100',
1330
+ videoId: videoID,
1331
+ playerVars: {
1332
+ modestbranding: 1,
1333
+ rel: 0,
1334
+ autoplay: autoplay
1335
+ },
1336
+ events: {
1337
+ 'onStateChange': function(data) {
1338
+ var videoID = data.target.getVideoData()['video_id'];
1339
+ if (data.data !== 1) return;
1340
+ $self.find('.sby_item').each(function() {
1341
+ var itemVidID = jQuery(this).attr('data-video-id');
1342
+
1343
+ if (jQuery(this).find('iframe').length && jQuery(data.target.a).attr('id') !== jQuery(this).find('iframe').attr('id')) {
1344
+ YT.get('sby_player_'+itemVidID).pauseVideo();
1345
+ }
1346
+ });
1347
+ }
1348
+ }
1349
+ });
1350
+ });
1351
+
1352
+ } else if ($self.hasClass('sby_layout_gallery')) {
1353
+ jQuery(this).addClass('sby_player_loaded');
1354
+
1355
+ player = new YT.Player('sby_player'+index, {
1356
+ height: '100',
1357
+ width: '100',
1358
+ videoId: jQuery(this).find('.sby_item').first().attr('data-video-id'),
1359
+ playerVars: {
1360
+ modestbranding: 1,
1361
+ rel: 0,
1362
+ autoplay: autoplay
1363
+ }
1364
+ });
1365
+ } else {
1366
+ flagLightbox = true;
1367
+ }
1368
+ });
1369
+
1370
+ if (flagLightbox) {
1371
+ if (!jQuery('#sby_lb-player').length) {
1372
+ jQuery('.sb_youtube').first().append('<div class="sby_lb-player-loaded sby_lb-player" id="sby_lb-player" style="display: none;"></div>');
1373
+ }
1374
+ player = new YT.Player('sby_lb-player', {
1375
+ height: '100',
1376
+ width: '100',
1377
+ videoId: jQuery(this).find('.sby_item').first().attr('data-video-id'),
1378
+ playerVars: {
1379
+ modestbranding: 1,
1380
+ rel: 0,
1381
+ autoplay: autoplay
1382
+ },
1383
+ });
1384
+ window.sbyLightboxPlayer = player;
1385
+ }
1386
+
1387
+ } else {
1388
+ for (var i = 0; i < numFeeds; i++) {
1389
+ window.sby.feeds[i].playerAPIReady = true;
1390
+ }
1391
  }
1392
  }
1393
  };
js/sb-youtube.min.js CHANGED
@@ -1 +1 @@
1
- var sby_js_exists=void 0!==sby_js_exists;if(!sby_js_exists){function sby_supports_video(){return!!document.createElement("video").canPlayType}!function(e){function i(){this.feeds={},this.options=sbyOptions,this.isTouch=function(){if("ontouchstart"in document.documentElement)return!0;return!1}()}function t(e,i,t){this.el=e,this.index=i,this.settings=t,this.playerAPIReady=!1,this.consentGiven=!0,this.players={},this.minImageWidth=0,this.imageResolution=150,this.resizedImages={},this.needsResizing=[],this.outOfPages=!1,this.isInitialized=!1}function s(i,t){e.ajax({url:sbyOptions.adminAjaxUrl,type:"post",data:i,success:t})}i.prototype={createPage:function(i,t){void 0!==window.sbyajaxurl&&-1!==window.sbyajaxurl.indexOf(window.location.hostname)||(window.sbyajaxurl=window.location.hostname+"/wp-admin/admin-ajax.php"),e(".sby_no_js_error_message").remove(),e(".sby_no_js").removeClass("sby_no_js");if(null===document.getElementById("youtube-api")){var s=document.createElement("script"),a=document.getElementsByTagName("script")[0];s.src="https://www.youtube.com/iframe_api",s.id="youtube-api",a.parentNode.insertBefore(s,a)}i(t)},createLightbox:function(){(function(){var i=jQuery,t=function(){function e(){this.fadeDuration=500,this.fitImagesInViewport=!0,this.resizeDuration=700,this.positionFromTop=50,this.showImageNumberLabel=!0,this.alwaysShowNavOnTouchDevices=!1,this.wrapAround=!1}return e.prototype.albumLabel=function(e,i){return e+" / "+i},e}(),s=function(){function t(e){this.options=e,this.album=[],this.currentImageIndex=void 0,this.init()}return t.prototype.init=function(){this.enable(),this.build()},t.prototype.enable=function(){var e=this;i("body").on("click","a[data-sby-lightbox]",function(t){return e.start(i(t.currentTarget)),!1})},t.prototype.build=function(){var e=this;i("<div id='sby_lightboxOverlay' class='sby_lightboxOverlay'></div><div id='sby_lightbox' class='sby_lightbox'><div class='sby_lb-outerContainer'><div class='sby_lb-container'><img class='sby_lb-image' alt='Lightbox image placeholder' src='' /><div class='sby_lb-player' id='sby_lb-player'></div><div class='sby_lb-nav'><a class='sby_lb-prev' href='#' ><p class='sby-screenreader'>Previous Slide</p></a><a class='sby_lb-next' href='#' ><p class='sby-screenreader'>Next Slide</p></a></div><div class='sby_lb-loader'><a class='sby_lb-cancel'></a></div></div></div><div class='sby_lb-dataContainer'><div class='sby_lb-data'><div class='sby_lb-details'><div class='sby_lb-caption'></div><div class='sby_lb-info'><div class='sby_lb-number'></div><div class='sby_lb-closeContainer'><a class='sby_lb-close'></a></div></div></div></div>").appendTo(i("body")),this.$lightbox=i("#sby_lightbox"),this.$overlay=i("#sby_lightboxOverlay"),this.$outerContainer=this.$lightbox.find(".sby_lb-outerContainer"),this.$container=this.$lightbox.find(".sby_lb-container"),this.containerTopPadding=parseInt(this.$container.css("padding-top"),10),this.containerRightPadding=parseInt(this.$container.css("padding-right"),10),this.containerBottomPadding=parseInt(this.$container.css("padding-bottom"),10),this.containerLeftPadding=parseInt(this.$container.css("padding-left"),10),this.$overlay.hide().on("click",function(){return e.end(),!1}),jQuery(document).on("click",function(e,i,t){jQuery(e.target).closest(".sby_lb-outerContainer").length||jQuery(e.target).closest(".sby_lb-dataContainer").length||(void 0!==window.sbyLightboxPlayer&&window.sbyLightboxPlayer.pauseVideo(),jQuery("#sby_lightboxOverlay, #sby_lightbox").fadeOut())}),this.$lightbox.hide(),jQuery("#sby_lightboxOverlay").on("click",function(t){return void 0!==window.sbyLightboxPlayer&&window.sbyLightboxPlayer.pauseVideo(),"sby_lightbox"===i(t.target).attr("id")&&e.end(),!1}),this.$lightbox.find(".sby_lb-prev").on("click",function(){return void 0!==window.sbyLightboxPlayer&&window.sbyLightboxPlayer.pauseVideo(),e.changeImage(0===e.currentImageIndex?e.album.length-1:e.currentImageIndex-1),!1}),this.$lightbox.find(".sby_lb-container").on("swiperight",function(){return void 0!==window.sbyLightboxPlayer&&window.sbyLightboxPlayer.pauseVideo(),e.changeImage(0===e.currentImageIndex?e.album.length-1:e.currentImageIndex-1),!1}),this.$lightbox.find(".sby_lb-next").on("click",function(){return void 0!==window.sbyLightboxPlayer&&window.sbyLightboxPlayer.pauseVideo(),e.changeImage(e.currentImageIndex===e.album.length-1?0:e.currentImageIndex+1),!1}),this.$lightbox.find(".sby_lb-container").on("swipeleft",function(){return void 0!==window.sbyLightboxPlayer&&window.sbyLightboxPlayer.pauseVideo(),e.changeImage(e.currentImageIndex===e.album.length-1?0:e.currentImageIndex+1),!1}),this.$lightbox.find(".sby_lb-loader, .sby_lb-close").on("click",function(){return void 0!==window.sbyLightboxPlayer&&window.sbyLightboxPlayer.pauseVideo(),e.end(),!1})},t.prototype.start=function(e){function t(e){s.album.push({link:e.attr("href"),video:e.attr("data-video-id")})}var s=this,a=i(window);a.on("resize",i.proxy(this.sizeOverlay,this)),i("select, object, embed").css({visibility:"hidden"}),this.sizeOverlay(),this.album=[];var n,o=0,d=e.attr("data-sby-lightbox");if(d){n=i(e.prop("tagName")+'[data-sby-lightbox="'+d+'"]');for(var r=0;r<n.length;r=++r)t(i(n[r])),n[r]===e[0]&&(o=r)}else if("lightbox"===e.attr("rel"))t(e);else{n=i(e.prop("tagName")+'[rel="'+e.attr("rel")+'"]');for(var l=0;l<n.length;l=++l)t(i(n[l])),n[l]===e[0]&&(o=l)}var h=a.scrollTop()+this.options.positionFromTop,b=a.scrollLeft();this.$lightbox.css({top:h+"px",left:b+"px"}).fadeIn(this.options.fadeDuration),this.changeImage(o)},t.prototype.changeImage=function(e){var t=this;this.disableKeyboardNav();var s=this.$lightbox.find(".sby_lb-image");this.$overlay.fadeIn(this.options.fadeDuration),i(".sby_lb-loader").fadeIn("slow"),this.$lightbox.find(".sby_lb-image, .sby_lb-nav, .sby_lb-prev, .sby_lb-next, .sby_lb-dataContainer, .sby_lb-numbers, .sby_lb-caption").hide(),this.$outerContainer.addClass("animating");var a=new Image;a.onload=function(){var n,o,d,r,l,h;s.attr("src",t.album[e].link),i(a),s.width(a.width),s.height(a.height),t.options.fitImagesInViewport&&(h=i(window).width(),l=i(window).height(),r=h-t.containerLeftPadding-t.containerRightPadding-20,d=l-t.containerTopPadding-t.containerBottomPadding-150,(a.width>r||a.height>d)&&(a.width/r>a.height/d?(o=r,n=parseInt(a.height/(a.width/o),10),s.width(o),s.height(n)):(n=d,o=parseInt(a.width/(a.height/n),10),s.width(o),s.height(n)))),t.sizeContainer(s.width(),s.height())},a.src=this.album[e].link,this.currentImageIndex=e},t.prototype.sizeOverlay=function(){this.$overlay.width(i(window).width()).height(i(document).height())},t.prototype.sizeContainer=function(e,i){function t(){s.$lightbox.find(".sby_lb-dataContainer").width(o),s.$lightbox.find(".sby_lb-prevLink").height(d),s.$lightbox.find(".sby_lb-nextLink").height(d),s.showImage()}var s=this,a=this.$outerContainer.outerWidth(),n=this.$outerContainer.outerHeight(),o=e+this.containerLeftPadding+this.containerRightPadding,d=i+this.containerTopPadding+this.containerBottomPadding;a!==o||n!==d?this.$outerContainer.animate({width:o,height:d},this.options.resizeDuration,"swing",function(){t()}):t()},t.prototype.showImage=function(){this.$lightbox.find(".sby_lb-loader").hide(),this.$lightbox.find(".sby_lb-image").fadeIn("slow"),this.updateNav(),this.updateDetails(),this.preloadNeighboringImages(),this.enableKeyboardNav()},t.prototype.updateNav=function(){var e=!1;try{document.createEvent("TouchEvent"),e=!!this.options.alwaysShowNavOnTouchDevices}catch(e){}this.$lightbox.find(".sby_lb-nav").show(),this.album.length>1&&(this.options.wrapAround?(e&&this.$lightbox.find(".sby_lb-prev, .sby_lb-next").css("opacity","1"),this.$lightbox.find(".sby_lb-prev, .sby_lb-next").show()):(this.currentImageIndex>0&&(this.$lightbox.find(".sby_lb-prev").show(),e&&this.$lightbox.find(".sby_lb-prev").css("opacity","1")),this.currentImageIndex<this.album.length-1&&(this.$lightbox.find(".sby_lb-next").show(),e&&this.$lightbox.find(".sby_lb-next").css("opacity","1"))))},t.prototype.updateDetails=function(){if(sby_supports_video()&&(jQuery("#sby_lightbox").removeClass("sby_video_lightbox"),this.album[this.currentImageIndex].video.length)){jQuery("#sby_lightbox").addClass("sby_video_lightbox");var e=this.album[this.currentImageIndex].video,i=sbyOptions.autoplay;if(void 0===window.sbyLightboxPlayer){var t={host:window.location.protocol+"//www.youtube-nocookie.com",videoId:e,playerVars:{modestbranding:1,rel:0,autoplay:i}};window.sbyLightboxPlayer=new window.YT.Player("sby_lb-player",t)}else window.sbyLightboxPlayer.loadVideoById(e)}},t.prototype.preloadNeighboringImages=function(){this.album.length>this.currentImageIndex+1&&((new Image).src=this.album[this.currentImageIndex+1].link);this.currentImageIndex>0&&((new Image).src=this.album[this.currentImageIndex-1].link)},t.prototype.enableKeyboardNav=function(){i(document).on("keyup.keyboard",i.proxy(this.keyboardAction,this))},t.prototype.disableKeyboardNav=function(){i(document).off(".keyboard")},t.prototype.keyboardAction=function(i){var t=event.keyCode,s=String.fromCharCode(t).toLowerCase();27===t||s.match(/x|o|c/)?(sby_supports_video()&&e("#sby_lightbox video.sby_video")[0].pause(),e("#sby_lightbox iframe").attr("src",""),this.end()):"p"===s||37===t?(0!==this.currentImageIndex?this.changeImage(this.currentImageIndex-1):this.options.wrapAround&&this.album.length>1&&this.changeImage(this.album.length-1),sby_supports_video()&&e("#sby_lightbox video.sby_video")[0].pause(),e("#sby_lightbox iframe").attr("src","")):"n"!==s&&39!==t||(this.currentImageIndex!==this.album.length-1?this.changeImage(this.currentImageIndex+1):this.options.wrapAround&&this.album.length>1&&this.changeImage(0),void 0!==window.sbyLightboxPlayer&&window.sbyLightboxPlayer.pauseVideo())},t.prototype.end=function(){this.disableKeyboardNav(),i(window).off("resize",this.sizeOverlay),this.$lightbox.fadeOut(this.options.fadeDuration),this.$overlay.fadeOut(this.options.fadeDuration),i("select, object, embed").css({visibility:"visible"})},t}();i(function(){var i=new t;new s(i),e(".sby_lightbox_action a").unbind().bind("click",function(){e(this).parent().find(".sby_lightbox_tooltip").toggle()})})}).call(this)},createFeeds:function(i){window.sby.createLightbox(),i.whenFeedsCreated(e(".sb_youtube").each(function(i){e(this).attr("data-sby-index",i+1),e(this).find(".sby_player").replaceWith('<div id="sby_player'+i+'"></div>');var a=e(this),n=void 0!==a.attr("data-sby-flags")?a.attr("data-sby-flags").split(","):[],o=void 0!==a.attr("data-options")?JSON.parse(a.attr("data-options")):{};if(n.indexOf("testAjax")>-1){window.sby.triggeredTest=!0;s({action:"sby_on_ajax_test_trigger"},function(e){console.log("did test")})}var d={cols:a.attr("data-cols"),colsmobile:"same"!==a.attr("data-colsmobile")?a.attr("data-colsmobile"):a.attr("data-cols"),num:a.attr("data-num"),imgRes:a.attr("data-res"),feedID:a.attr("data-feedid"),shortCodeAtts:a.attr("data-shortcode-atts"),resizingEnabled:-1===n.indexOf("resizeDisable"),imageLoadEnabled:-1===n.indexOf("imageLoadDisable"),debugEnabled:n.indexOf("debug")>-1,favorLocal:n.indexOf("favorLocal")>-1,ajaxPostLoad:n.indexOf("ajaxPostLoad")>-1,checkWPPosts:n.indexOf("checkWPPosts")>-1,cacheAll:n.indexOf("cacheAll")>-1,lightboxEnabled:void 0!==a.attr("data-sby-supports-lightbox"),autoMinRes:1,general:o};window.sby.feeds[i]=function(e,i,s){return new t(e,i,s)}(this,i,d),window.sby.feeds[i].setResizedImages(),window.sby.feeds[i].init();var r=jQuery.Event("sbyafterfeedcreate");r.feed=window.sby.feeds[i],jQuery(window).trigger(r)}))},afterFeedsCreated:function(){e(".sb_instagram_header").each(function(){var i=e(this);i.find(".sby_header_link").hover(function(){i.find(".sby_header_img_hover").addClass("sby_fade_in")},function(){i.find(".sby_header_img_hover").removeClass("sby_fade_in")})})},encodeHTML:function(e){return void 0===e?"":e.replace(/(>)/g,"&gt;").replace(/(<)/g,"&lt;").replace(/(&lt;br\/&gt;)/g,"<br>").replace(/(&lt;br&gt;)/g,"<br>")},urlDetect:function(e){return e.match(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)/g)}},t.prototype={init:function(){var e=this;this.settings.ajaxPostLoad?this.getNewPostSet():this.afterInitialImagesLoaded();var i,t=(i=0,function(e,t){clearTimeout(i),i=setTimeout(e,t)});jQuery(window).resize(function(){t(function(){e.afterResize()},500)})},initLayout:function(){var i=e(this.el),t=this;i.hasClass("sby_layout_gallery")&&i.find(".sby_player_outer_wrap").length&&(this.maybeRaiseSingleImageResolution(i.find(".sby_player_outer_wrap"),0,!0),i.find(".sby_player_outer_wrap .sby_video_thumbnail").off().click(function(i){i.preventDefault(),t.onThumbnailClick(e(this),!0)}),i.mouseenter(function(){t.canCreatePlayer()&&(i.find(".sby_player_outer_wrap iframe").length||(i.addClass("sby_player_added").find(".sby_player_outer_wrap").addClass("sby_player_loading"),i.find(".sby_player_outer_wrap .sby_video_thumbnail").find(".sby_loader").show().removeClass("sby_hidden"),t.createPlayer("sby_player"+t.index)))}))},createPlayer:function(i,t,s,a){var n=e(this.el),o=this;t=void 0!==t?t:this.getVideoID(n.find(".sby_item").first()),s=void 0!==s?s:0,void 0===a&&(a={host:window.location.protocol+"//www.youtube-nocookie.com",videoId:t,playerVars:{modestbranding:1,rel:0,autoplay:s}}),void 0===a.events&&(a.events={onReady:function(){n.find(".sby_player_outer_wrap").removeClass("sby_player_loading").find(".sby_video_thumbnail").css("z-index",-1).find(".sby_loader").hide().addClass("sby_hidden"),e("#"+i).length&&e("#"+i).closest(".sby_video_thumbnail_wrap").find(".sby_video_thumbnail").length&&e("#"+i).closest(".sby_video_thumbnail_wrap").find(".sby_video_thumbnail").fadeTo(0,"slow",function(){e(this).css("z-index",-1),e(this).find(".sby_loader").hide().addClass("sby_hidden"),e(this).closest(".sby_item").removeClass("sby_player_loading")})},onStateChange:function(i){1===i.data&&void 0!==o.players&&n.find(".sby_item").each(function(){var i=o.getVideoID(e(this));t!==i&&void 0!==o.players[i]&&o.players[i].pauseVideo()})}});var d=new window.YT.Player(i,a);return n.hasClass("sby_layout_list")&&void 0===this.players[t]?this.players[t]=d:void 0===this.player&&(this.player=d),d},afterInitialImagesLoaded:function(){this.initLayout(),this.loadMoreButtonInit(),this.hideExtraItemsForWidth(),this.beforeNewImagesRevealed(),this.revealNewImages(),this.afterNewImagesRevealed()},afterResize:function(){this.setImageHeight(),this.setImageResolution(),this.maybeRaiseImageResolution(),this.setImageSizeClass()},afterLoadMoreClicked:function(e){e.find(".sby_loader").removeClass("sby_hidden"),e.find(".sby_btn_text").addClass("sby_hidden"),e.closest(".sb_youtube").find(".sby_num_diff_hide").addClass("sby_transition").removeClass("sby_num_diff_hide")},afterNewImagesLoaded:function(){var i=e(this.el),t=this;this.beforeNewImagesRevealed(),this.revealNewImages(),this.afterNewImagesRevealed(),setTimeout(function(){i.find(".sby_loader").addClass("sby_hidden"),i.find(".sby_btn_text").removeClass("sby_hidden"),t.maybeRaiseImageResolution()},500)},beforeNewImagesRevealed:function(){this.setImageHeight(),this.maybeRaiseImageResolution(!0),this.setImageSizeClass()},revealNewImages:function(){var i=e(this.el),t=this;"function"==typeof sbyCustomJS&&setTimeout(function(){sbyCustomJS()},100),i.find(".sby_item").each(function(i){var s=jQuery(this);s.find(".sby_video_thumbnail").hover(function(){jQuery(this).fadeTo(200,.85)},function(){jQuery(this).stop().fadeTo(500,1)}),s.find(".sby_video_thumbnail").off().click(function(i){i.preventDefault(),t.onThumbnailClick(e(this),!1)}),s.find(".sby_video_thumbnail").mouseenter(function(){t.onThumbnailEnter(e(this),!1)}),s.find(".sby_player_wrap").mouseleave(function(){t.onThumbnailLeave(e(this),!1)}),t.settings.lightboxEnabled&&(s.find(".sby_video_thumbnail").attr("data-sby-lightbox",t.index),"undefined"!=typeof sbyOptions&&void 0!==sbyOptions.lightboxPlaceholder&&s.find(".sby_video_thumbnail").attr("href",sbyOptions.lightboxPlaceholder))}),setTimeout(function(){i.find(".sby_item.sby_new").removeClass("sby_new");var e=10;i.find(".sby_transition").length;i.find(".sby_transition").each(function(i){var t=jQuery(this);setTimeout(function(){t.removeClass("sby_transition")},e),e+=10})},500)},afterNewImagesRevealed:function(){this.listenForVisibilityChange(),this.sendNeedsResizingToServer(),this.sendCheckWPPostsToServer(),this.settings.imageLoadEnabled||e(".sby_no_resraise").removeClass("sby_no_resraise");var i=e.Event("sbyafterimagesloaded");i.el=e(this.el),e(window).trigger(i)},setResizedImages:function(){e(this.el).find(".sby_resized_image_data").length&&void 0!==e(this.el).find(".sby_resized_image_data").attr("data-resized")&&0===e(this.el).find(".sby_resized_image_data").attr("data-resized").indexOf('{"')&&(this.resizedImages=JSON.parse(e(this.el).find(".sby_resized_image_data").attr("data-resized")),e(this.el).find(".sby_resized_image_data").remove())},sendNeedsResizingToServer:function(){var i=this;if(i.needsResizing.length>0&&i.settings.resizingEnabled){var t=e(this.el).find(".sby_item").length;s({action:"sby_resized_images_submit",needs_resizing:i.needsResizing,offset:t,feed_id:i.settings.feedID,atts:i.settings.shortCodeAtts},function(e){if(0===e.trim().indexOf("{")){var t=JSON.parse(e);i.settings.debugEnabled&&console.log(t)}})}},sendCheckWPPostsToServer:function(){var i=this;if(i.settings.checkWPPosts||i.settings.cacheAll){s({action:"sby_check_wp_submit",feed_id:i.settings.feedID,atts:i.settings.shortCodeAtts,offset:e(this.el).find(".sby_item").length,cache_all:i.settings.cacheAll},function(e){if(0===e.trim().indexOf("{")){var t=JSON.parse(e);i.settings.debugEnabled&&console.log(t)}})}},loadMoreButtonInit:function(){var i=e(this.el),t=this;i.find(".sby_footer .sby_load_btn").off().on("click",function(){t.afterLoadMoreClicked(jQuery(this)),t.getNewPostSet()})},getNewPostSet:function(){var i=e(this.el),t=this;s({action:"sby_load_more_clicked",offset:i.find(".sby_item").length,feed_id:t.settings.feedID,atts:t.settings.shortCodeAtts,current_resolution:t.imageResolution},function(s){if(0===s.trim().indexOf("{")){var a=JSON.parse(s);t.settings.debugEnabled&&console.log(a),void 0!==a.feedStatus.cacheAll&&a.feedStatus.cacheAll?t.settings.cacheAll=!0:t.settings.cacheAll=!1,void 0!==a.feedStatus.checkWPPosts&&a.feedStatus.checkWPPosts?t.settings.checkWPPosts=!0:t.settings.checkWPPosts=!1,t.appendNewPosts(a.html),t.addResizedImages(a.resizedImages),t.settings.ajaxPostLoad?(t.settings.ajaxPostLoad=!1,t.afterInitialImagesLoaded()):t.afterNewImagesLoaded(),a.feedStatus.shouldPaginate?t.outOfPages=!1:(t.outOfPages=!0,i.find(".sby_load_btn").hide()),e(".sby_no_js").removeClass("sby_no_js")}})},appendNewPosts:function(i){var t=e(this.el);t.find(".sby_items_wrap .sby_item").length?t.find(".sby_items_wrap .sby_item").last().after(i):t.find(".sby_items_wrap").append(i)},addResizedImages:function(e){for(var i in e)this.resizedImages[i]=e[i]},setImageHeight:function(){},maybeRaiseSingleImageResolution:function(i,t,s){var a=this,n=a.getImageUrls(i),o=i.find(".sby_video_thumbnail img").attr("src"),d=150;s=void 0!==s&&s;if(!i.hasClass("sby_no_resraise")){e.each(n,function(e,i){i===o&&(d=parseInt(e),s=!1)});var r=640;switch(a.settings.imgRes){case"thumb":r=120;break;case"medium":r=320;break;case"large":r=480;break;case"full":r=640;break;default:var l=Math.max(a.settings.autoMinRes,i.find(".sby_video_thumbnail").innerWidth());switch(a.getBestResolutionForAuto(l,1,e(this.el).find("sby_item").first())){case 480:r=480;break;case 320:r=320;break;case 120:r=120}}if(r>d||o===window.sby.options.placeholder||s){if(a.settings.debugEnabled){var h=o===window.sby.options.placeholder?"was placeholder":"too small";console.log("rais res for "+o,h)}var b=n[r];i.find(".sby_video_thumbnail img").attr("src",b)}i.find("img").on("error",function(){if(e(this).hasClass("sby_img_error"))console.log("unfixed error "+e(this).attr("src"));else{if(e(this).addClass("sby_img_error"),e(this).attr("src").indexOf("i.ytimg.com")>-1)a.settings.favorLocal=!0,a.getImageUrls(e(this).closest(".sby_item"))[640];else void 0!==e(this).closest(".sby_video_thumbnail").attr("data-full-res")||e(this).closest(".sby_video_thumbnail").attr("href");setTimeout(function(){a.afterResize()},1500)}})}},maybeRaiseImageResolution:function(i){var t=this,s=void 0!==i&&!0===i?".sby_item.sby_new":".sby_item",a=!t.isInitialized;e(t.el).find(s).each(function(i){!e(this).hasClass("sby_num_diff_hide")&&e(this).find(".sby_video_thumbnail").length&&void 0!==e(this).find(".sby_video_thumbnail").attr("data-img-src-set")&&t.maybeRaiseSingleImageResolution(e(this),i,a)}),t.isInitialized=!0},getBestResolutionForAuto:function(i,t,s){(isNaN(t)||t<1)&&(t=1);var a=i*t,n=10*Math.ceil(a/10),o=[120,320,480,640];if(s.hasClass("sby_highlighted")&&(n*=2),-1===o.indexOf(parseInt(n))){var d=!1;e.each(o,function(e,i){i>parseInt(n)&&!d&&(n=i,d=!0)})}return n},hideExtraItemsForWidth:function(){if("carousel"!==this.layout){var i=e(this.el),t=void 0!==i.attr("data-num")&&""!==i.attr("data-num")?parseInt(i.attr("data-num")):1,s=void 0!==i.attr("data-nummobile")&&""!==i.attr("data-nummobile")?parseInt(i.attr("data-nummobile")):t;e(window).width()<480?s<i.find(".sby_item").length&&i.find(".sby_item").slice(s-i.find(".sby_item").length).addClass("sby_num_diff_hide"):t<i.find(".sby_item").length&&i.find(".sby_item").slice(t-i.find(".sby_item").length).addClass("sby_num_diff_hide")}},setImageSizeClass:function(){var i=e(this.el);i.removeClass("sby_small sby_medium");var t=i.innerWidth(),s=parseInt(i.find(".sby_items_wrap").outerWidth()-i.find(".sby_items_wrap").width())/2,a=this.getColumnCount(),n=(t-s*(a+2))/a;n>120&&n<240?i.addClass("sby_medium"):n<=120&&i.addClass("sby_small")},setMinImageWidth:function(){e(this.el).find(".sby_item .sby_video_thumbnail").first().length?this.minImageWidth=e(this.el).find(".sby_item .sby_video_thumbnail").first().innerWidth():this.minImageWidth=150},setImageResolution:function(){if("auto"===this.settings.imgRes)this.imageResolution="auto";else switch(this.settings.imgRes){case"thumb":this.imageResolution=150;break;case"medium":this.imageResolution=320;break;default:this.imageResolution=640}},getImageUrls:function(e){var i=JSON.parse(e.find(".sby_video_thumbnail").attr("data-img-src-set").replace(/\\\//g,"/")),t=e.attr("id").replace("sby_","").replace("player_","");if(void 0!==this.resizedImages[t]&&"video"!==this.resizedImages[t]&&"pending"!==this.resizedImages[t]&&"error"!==this.resizedImages[t].id&&"video"!==this.resizedImages[t].id&&"pending"!==this.resizedImages[t].id){if(void 0!==this.resizedImages[t].sizes){var s=[];void 0!==this.resizedImages[t].sizes.full&&(s.push(640),i[640]=sbyOptions.resized_url+this.resizedImages[t].id+"full.jpg",e.find(".sby_link_area").attr("href",sbyOptions.resized_url+this.resizedImages[t].id+"full.jpg"),e.find(".sby_video_thumbnail").attr("data-full-res",sbyOptions.resized_url+this.resizedImages[t].id+"full.jpg")),void 0!==this.resizedImages[t].sizes.low&&(s.push(320),i[320]=sbyOptions.resized_url+this.resizedImages[t].id+"low.jpg",this.settings.favorLocal&&void 0===this.resizedImages[t].sizes.full&&(e.find(".sby_link_area").attr("href",sbyOptions.resized_url+this.resizedImages[t].id+"low.jpg"),e.find(".sby_video_thumbnail").attr("data-full-res",sbyOptions.resized_url+this.resizedImages[t].id+"low.jpg"))),void 0!==this.resizedImages[t].sizes.thumb&&(s.push(150),i[150]=sbyOptions.resized_url+this.resizedImages[t].id+"thumb.jpg"),this.settings.favorLocal&&(-1===s.indexOf(640)&&s.indexOf(320)>-1&&(i[640]=sbyOptions.resized_url+this.resizedImages[t].id+"low.jpg"),-1===s.indexOf(320)&&(s.indexOf(640)>-1?i[320]=sbyOptions.resized_url+this.resizedImages[t].id+"full.jpg":s.indexOf(150)>-1&&(i[320]=sbyOptions.resized_url+this.resizedImages[t].id+"thumb.jpg")),-1===s.indexOf(150)&&(s.indexOf(320)>-1?i[150]=sbyOptions.resized_url+this.resizedImages[t].id+"low.jpg":s.indexOf(640)>-1&&(i[150]=sbyOptions.resized_url+this.resizedImages[t].id+"full.jpg")))}}else(void 0===this.resizedImages[t]||void 0!==this.resizedImages[t].id&&"pending"!==this.resizedImages[t].id&&"error"!==this.resizedImages[t].id)&&this.addToNeedsResizing(t);return i},getVideoID:function(e){if(e.hasClass("sby_item")||e.hasClass("sby_player_item")){if(void 0!==e.find(".sby_video_thumbnail").attr("data-video-id"))return e.find(".sby_video_thumbnail").attr("data-video-id")}else if(e.closest("sby_item").length||e.closest("sby_player_item").length){var i=e.closest("sby_item").length?e.closest("sby_item"):e.closest("sby_player_item");if(void 0!==i.find(".sby_video_thumbnail").attr("data-video-id"))return i.find(".sby_video_thumbnail").attr("data-video-id")}else if(e.hasClass("sb_youtube"))return e.find(".sby_item").first().find(".sby_video_thumbnail").attr("data-video-id");return console.log("no id"),""},getAvatarUrl:function(e,i){if(""===e)return"";var t=this.settings.general.avatars;return"local"===(i=void 0!==i?i:"local")?void 0!==t["LCL"+e]&&1===parseInt(t["LCL"+e])?sbyOptions.resized_url+e+".jpg":void 0!==t[e]?t[e]:"":void 0!==t[e]?t[e]:void 0!==t["LCL"+e]&&1===parseInt(t["LCL"+e])?sbyOptions.resized_url+e+".jpg":""},addToNeedsResizing:function(e){-1===this.needsResizing.indexOf(e)&&this.needsResizing.push(e)},listenForVisibilityChange:function(){var i,t,s,a=this;i=jQuery,t={callback:function(){},runOnLoad:!0,frequency:100,sbyPreviousVisibility:null},s={sbyCheckVisibility:function(e,i){if(jQuery.contains(document,e[0])){var t=i.sbyPreviousVisibility,a=e.is(":visible");i.sbyPreviousVisibility=a,null==t?i.runOnLoad&&i.callback(e,a):t!==a&&i.callback(e,a),setTimeout(function(){s.sbyCheckVisibility(e,i)},i.frequency)}}},i.fn.sbyVisibilityChanged=function(e){var a=i.extend({},t,e);return this.each(function(){s.sbyCheckVisibility(i(this),a)})},"function"==typeof e(this.el).filter(":hidden").sbyVisibilityChanged&&e(this.el).filter(":hidden").sbyVisibilityChanged({callback:function(e,i){a.afterResize()},runOnLoad:!1})},getColumnCount:function(){var i=e(this.el),t=this.settings.cols,s=this.settings.colsmobile,a=t;return sbyWindowWidth=window.innerWidth,i.hasClass("sby_mob_col_auto")?(sbyWindowWidth<640&&parseInt(t)>2&&parseInt(t)<7&&(a=2),sbyWindowWidth<640&&parseInt(t)>6&&parseInt(t)<11&&(a=4),sbyWindowWidth<=480&&parseInt(t)>2&&(a=1)):sbyWindowWidth<=480&&(a=s),parseInt(a)},onThumbnailClick:function(i,t){if(this.canCreatePlayer()){var s=e(this.el);if(s.hasClass("sby_layout_gallery"))s.addClass("sby_player_added").find(".sby_player_outer_wrap").addClass("sby_player_loading"),s.find(".sby_player_outer_wrap .sby_video_thumbnail").find(".sby_loader").show().removeClass("sby_hidden"),s.find(".sby_player_outer_wrap iframe").length?t?this.playVideoInPlayer(this.getVideoID(s.find(".sby_item").first())):(this.playVideoInPlayer(this.getVideoID(i.closest(".sby_item"))),this.afterVideoChanged()):t?this.createPlayer("sby_player"+this.index):this.createPlayer("sby_player"+this.index,this.getVideoID(i.closest(".sby_item")));else if(e(this.el).hasClass("sby_layout_grid")){var a=i.closest(".sby_item"),n=this.getVideoID(a);this.playVideoInPlayer(n),this.afterVideoChanged()}else if(e(this.el).hasClass("sby_layout_list")){a=i.closest(".sby_item"),n=this.getVideoID(a);a.find("iframe").length||(a.find(".sby_loader").show().removeClass("sby_hidden"),a.addClass("sby_player_loading sby_player_loaded"),this.createPlayer("sby_player_"+n,n))}}},onThumbnailEnter:function(i){if(this.canCreatePlayer()&&e(this.el).hasClass("sby_layout_list")){var t=i.closest(".sby_item"),s=this.getVideoID(t);t.find("iframe").length||(t.find(".sby_loader").show().removeClass("sby_hidden"),t.addClass("sby_player_loading sby_player_loaded"),this.createPlayer("sby_player_"+s,s,0))}},onThumbnailLeave:function(e){},canCreatePlayer:function(){return this.playerAPIReady&&this.consentGiven},playVideoInPlayer:function(e){void 0!==this.player&&void 0!==this.player.loadVideoById&&this.player.loadVideoById(e)},afterVideoChanged:function(){e(this.el).hasClass("sby_layout_gallery")&&(e(this.el).find(".sby_player_outer_wrap").removeClass("sby_player_loading"),e(this.el).find(".sby_player_outer_wrap .sby_video_thumbnail").find(".sby_loader").hide().addClass("sby_hidden"),e(window).width()<480&&e("html, body").animate({scrollTop:e(this.el).find(".sby_player_outer_wrap").offset().top},300))}},window.sby_init=function(){window.sby=new i,window.sby.createPage(window.sby.createFeeds,{whenFeedsCreated:window.sby.afterFeedsCreated})}}(jQuery),jQuery(document).ready(function(e){sby_init()})}window.onYouTubeIframeAPIReady=function(){var e=document.getElementsByClassName("sb_youtube").length;if(e>0)for(var i=0;i<e;i++)window.sby.feeds[i].playerAPIReady=!0};
1
+ var sby_js_exists=void 0!==sby_js_exists;if(!sby_js_exists){function sby_supports_video(){return!!document.createElement("video").canPlayType}!function(e){function i(){this.feeds={},this.options=sbyOptions,this.isTouch=function(){if("ontouchstart"in document.documentElement)return!0;return!1}()}function t(e,i,t){this.el=e,this.index=i,this.settings=t,this.playerAPIReady=!1,this.consentGiven=!0,this.players={},this.minImageWidth=0,this.imageResolution=150,this.resizedImages={},this.needsResizing=[],this.outOfPages=!1,this.isInitialized=!1,this.mostRecentlyLoadedPosts=[]}function s(){}function a(i,t){e.ajax({url:sbyOptions.adminAjaxUrl,type:"post",data:i,success:t})}i.prototype={createPage:function(i,t){void 0!==window.sbyajaxurl&&-1!==window.sbyajaxurl.indexOf(window.location.hostname)||(window.sbyajaxurl=window.location.hostname+"/wp-admin/admin-ajax.php"),e(".sby_no_js_error_message").remove(),e(".sby_no_js").removeClass("sby_no_js");if(null===document.getElementById("youtube-api")){var s=document.createElement("script"),a=document.getElementsByTagName("script")[0];s.src="https://www.youtube.com/iframe_api",s.id="youtube-api",a.parentNode.insertBefore(s,a)}i(t)},createLightbox:function(){var i,t=new s,a=(i=0,function(e,t){clearTimeout(i),i=setTimeout(e,t)});jQuery(window).resize(function(){a(function(){t.afterResize()},200)}),function(){var i=jQuery,s=function(){function e(){this.fadeDuration=500,this.fitImagesInViewport=!0,this.resizeDuration=700,this.positionFromTop=50,this.showImageNumberLabel=!0,this.alwaysShowNavOnTouchDevices=!1,this.wrapAround=!1}return e.prototype.albumLabel=function(e,i){return e+" / "+i},e}(),a=function(){function s(e){this.options=e,this.album=[],this.currentImageIndex=void 0,this.init()}return s.prototype.init=function(){this.enable(),this.build()},s.prototype.enable=function(){var e=this;i("body").on("click","a[data-sby-lightbox]",function(t){return e.start(i(t.currentTarget)),!1})},s.prototype.build=function(){var e=this;i(""+t.template()).appendTo(i("body")),this.$lightbox=i("#sby_lightbox"),this.$overlay=i("#sby_lightboxOverlay"),this.$outerContainer=this.$lightbox.find(".sby_lb-outerContainer"),this.$container=this.$lightbox.find(".sby_lb-container"),this.containerTopPadding=parseInt(this.$container.css("padding-top"),10),this.containerRightPadding=parseInt(this.$container.css("padding-right"),10),this.containerBottomPadding=parseInt(this.$container.css("padding-bottom"),10),this.containerLeftPadding=parseInt(this.$container.css("padding-left"),10),this.$overlay.hide().on("click",function(){return e.end(),!1}),jQuery(document).on("click",function(e,i,t){jQuery(e.target).closest(".sby_lb-outerContainer").length||jQuery(e.target).closest(".sby_lb-dataContainer").length||(void 0!==window.sbyLightboxPlayer&&YT.get("sby_lb-player").pauseVideo(),jQuery("#sby_lightboxOverlay, #sby_lightbox").fadeOut())}),this.$lightbox.hide(),jQuery("#sby_lightboxOverlay").on("click",function(t){return void 0!==window.sbyLightboxPlayer&&YT.get("sby_lb-player").pauseVideo(),"sby_lightbox"===i(t.target).attr("id")&&e.end(),!1}),this.$lightbox.find(".sby_lb-prev").on("click",function(){return void 0!==window.sbyLightboxPlayer&&YT.get("sby_lb-player").pauseVideo(),e.changeImage(0===e.currentImageIndex?e.album.length-1:e.currentImageIndex-1),!1}),this.$lightbox.find(".sby_lb-container").on("swiperight",function(){return void 0!==window.sbyLightboxPlayer&&YT.get("sby_lb-player").pauseVideo(),e.changeImage(0===e.currentImageIndex?e.album.length-1:e.currentImageIndex-1),!1}),this.$lightbox.find(".sby_lb-next").on("click",function(){return void 0!==window.sbyLightboxPlayer&&YT.get("sby_lb-player").pauseVideo(),e.changeImage(e.currentImageIndex===e.album.length-1?0:e.currentImageIndex+1),!1}),this.$lightbox.find(".sby_lb-container").on("swipeleft",function(){return void 0!==window.sbyLightboxPlayer&&YT.get("sby_lb-player").pauseVideo(),e.changeImage(e.currentImageIndex===e.album.length-1?0:e.currentImageIndex+1),!1}),this.$lightbox.find(".sby_lb-loader, .sby_lb-close").on("click",function(){return void 0!==window.sbyLightboxPlayer&&YT.get("sby_lb-player").pauseVideo(),e.end(),!1})},s.prototype.start=function(e){function s(e){a.album.push(t.getData(e))}var a=this,n=i(window);n.on("resize",i.proxy(this.sizeOverlay,this)),i("select, object, embed").css({visibility:"hidden"}),this.sizeOverlay(),this.album=[];var o,d=0,r=e.attr("data-sby-lightbox");if(r){o=i(e.prop("tagName")+'[data-sby-lightbox="'+r+'"]');for(var l=0;l<o.length;l=++l)s(i(o[l])),o[l]===e[0]&&(d=l)}else if("lightbox"===e.attr("rel"))s(e);else{o=i(e.prop("tagName")+'[rel="'+e.attr("rel")+'"]');for(var h=0;h<o.length;h=++h)s(i(o[h])),o[h]===e[0]&&(d=h)}var b=n.scrollTop()+this.options.positionFromTop,y=n.scrollLeft();this.$lightbox.css({top:b+"px",left:y+"px"}).fadeIn(this.options.fadeDuration),this.changeImage(d)},s.prototype.changeImage=function(e){var t=this;this.disableKeyboardNav();var s=this.$lightbox.find(".sby_lb-image");this.$overlay.fadeIn(this.options.fadeDuration),i(".sby_lb-loader").fadeIn("slow"),this.$lightbox.find(".sby_lb-image, .sby_lb-nav, .sby_lb-prev, .sby_lb-next, .sby_lb-dataContainer, .sby_lb-numbers, .sby_lb-caption").hide(),this.$outerContainer.addClass("animating");var a=new Image;a.onload=function(){var n,o,d,r,l,h;s.attr("src",t.album[e].link),i(a),s.width(a.width),s.height(a.height),t.options.fitImagesInViewport&&(h=i(window).width(),l=i(window).height(),r=h-t.containerLeftPadding-t.containerRightPadding-20-100,d=l-t.containerTopPadding-t.containerBottomPadding-150,(a.width>r||a.height>d)&&(a.width/r>a.height/d?(o=r,n=parseInt(a.height/(a.width/o),10),s.width(o),s.height(n)):(n=d,o=parseInt(a.width/(a.height/n),10),s.width(o),s.height(n)))),t.sizeContainer(s.width(),s.height())},a.src=this.album[e].link,this.currentImageIndex=e},s.prototype.sizeOverlay=function(){this.$overlay.width(i(window).width()).height(i(document).height())},s.prototype.sizeContainer=function(e,i){function t(){s.$lightbox.find(".sby_lb-dataContainer").width(o),s.$lightbox.find(".sby_lb-prevLink").height(d),s.$lightbox.find(".sby_lb-nextLink").height(d),s.showImage()}var s=this,a=this.$outerContainer.outerWidth(),n=this.$outerContainer.outerHeight(),o=e+this.containerLeftPadding+this.containerRightPadding,d=i+this.containerTopPadding+this.containerBottomPadding;a!==o||n!==d?this.$outerContainer.animate({width:o,height:d},this.options.resizeDuration,"swing",function(){t()}):t()},s.prototype.showImage=function(){this.$lightbox.find(".sby_lb-loader").hide(),this.$lightbox.find(".sby_lb-image").fadeIn("slow"),this.updateNav(),this.updateDetails(),this.preloadNeighboringImages(),this.enableKeyboardNav()},s.prototype.updateNav=function(){var e=!1;try{document.createEvent("TouchEvent"),e=!!this.options.alwaysShowNavOnTouchDevices}catch(e){}this.$lightbox.find(".sby_lb-nav").show(),this.album.length>1&&(this.options.wrapAround?(e&&this.$lightbox.find(".sby_lb-prev, .sby_lb-next").css("opacity","1"),this.$lightbox.find(".sby_lb-prev, .sby_lb-next").show()):(this.currentImageIndex>0&&(this.$lightbox.find(".sby_lb-prev").show(),e&&this.$lightbox.find(".sby_lb-prev").css("opacity","1")),this.currentImageIndex<this.album.length-1&&(this.$lightbox.find(".sby_lb-next").show(),e&&this.$lightbox.find(".sby_lb-next").css("opacity","1"))))},s.prototype.updateDetails=function(){var i=this;jQuery("iframe.sby_lb-player-loaded").length&&(console.log("swapping"),jQuery(".sby_lb-player-placeholder").replaceWith(jQuery("iframe.sby_lb-player-loaded")),jQuery("iframe.sby_lb-player-loaded").removeClass("sby_lb-player-loaded").show());var s=window.sby.feeds[this.album[this.currentImageIndex].feedIndex];if(t.beforePlayerSetup(this.$lightbox,this.album[this.currentImageIndex],this.currentImageIndex,this.album,s),sby_supports_video()&&(jQuery("#sby_lightbox").removeClass("sby_video_lightbox"),this.album[this.currentImageIndex].video.length)){var a="sby_lb-player";jQuery("#sby_lightbox").addClass("sby_video_lightbox");var n=this.album[this.currentImageIndex].video,o=sbyOptions.autoplay;if(void 0===window.sbyLightboxPlayer){var d={host:window.location.protocol+"//www.youtube-nocookie.com",videoId:n,playerVars:{modestbranding:1,rel:0,autoplay:o},events:{onStateChange:function(i){var t=i.target.getVideoData().video_id;s.afterStateChange(a,t,i,e("#"+a).closest(".sby_video_thumbnail_wrap"))}}};s.maybeAddCTA(a),window.sbyLightboxPlayer=new window.YT.Player(a,d)}else window.sbyLightboxPlayer.loadVideoById(n);t.afterPlayerSetup(this.$lightbox,this.album[this.currentImageIndex],this.currentImageIndex,this.album),this.album.length>1&&this.options.showImageNumberLabel?this.$lightbox.find(".sby_lb-number").text(this.options.albumLabel(this.currentImageIndex+1,this.album.length)).fadeIn("fast"):this.$lightbox.find(".sby_lb-number").hide(),this.$outerContainer.removeClass("animating"),this.$lightbox.find(".sby_lb-dataContainer").fadeIn(this.options.resizeDuration,function(){return i.sizeOverlay()}),setTimeout(function(){e("#sby_lightbox .sby_lb-player").css({height:e("#sby_lightbox .sby_lb-outerContainer").height()+"px",width:e("#sby_lightbox .sby_lb-outerContainer").width()+"px",top:0})},400)}},s.prototype.preloadNeighboringImages=function(){this.album.length>this.currentImageIndex+1&&((new Image).src=this.album[this.currentImageIndex+1].link);this.currentImageIndex>0&&((new Image).src=this.album[this.currentImageIndex-1].link)},s.prototype.enableKeyboardNav=function(){i(document).on("keyup.keyboard",i.proxy(this.keyboardAction,this))},s.prototype.disableKeyboardNav=function(){i(document).off(".keyboard")},s.prototype.keyboardAction=function(i){var t=event.keyCode,s=String.fromCharCode(t).toLowerCase();27===t||s.match(/x|o|c/)?(sby_supports_video()&&e("#sby_lightbox video.sby_video")[0].pause(),e("#sby_lightbox iframe").attr("src",""),this.end()):"p"===s||37===t?(0!==this.currentImageIndex?this.changeImage(this.currentImageIndex-1):this.options.wrapAround&&this.album.length>1&&this.changeImage(this.album.length-1),sby_supports_video()&&e("#sby_lightbox video.sby_video")[0].pause(),e("#sby_lightbox iframe").attr("src","")):"n"!==s&&39!==t||(this.currentImageIndex!==this.album.length-1?this.changeImage(this.currentImageIndex+1):this.options.wrapAround&&this.album.length>1&&this.changeImage(0),void 0!==window.sbyLightboxPlayer&&YT.get("sby_lb-player").pauseVideo())},s.prototype.end=function(){this.disableKeyboardNav(),i(window).off("resize",this.sizeOverlay),this.$lightbox.fadeOut(this.options.fadeDuration),this.$overlay.fadeOut(this.options.fadeDuration),i("select, object, embed").css({visibility:"visible"})},s}();i(function(){var i=new s;new a(i),e(".sby_lightbox_action a").unbind().bind("click",function(){e(this).parent().find(".sby_lightbox_tooltip").toggle()})})}.call(this)},createFeeds:function(i){window.sby.createLightbox(),i.whenFeedsCreated(e(".sb_youtube").each(function(i){e(this).attr("data-sby-index",i+1),e(this).find(".sby_player").replaceWith('<div id="sby_player'+i+'"></div>');var s=e(this),n=void 0!==s.attr("data-sby-flags")?s.attr("data-sby-flags").split(","):[],o=void 0!==s.attr("data-options")?JSON.parse(s.attr("data-options")):{};if(n.indexOf("testAjax")>-1){window.sby.triggeredTest=!0;a({action:"sby_on_ajax_test_trigger"},function(e){console.log("did test")})}var d={cols:s.attr("data-cols"),colsmobile:"same"!==s.attr("data-colsmobile")?s.attr("data-colsmobile"):s.attr("data-cols"),num:s.attr("data-num"),imgRes:s.attr("data-res"),feedID:s.attr("data-feedid"),shortCodeAtts:s.attr("data-shortcode-atts"),resizingEnabled:-1===n.indexOf("resizeDisable"),imageLoadEnabled:-1===n.indexOf("imageLoadDisable"),debugEnabled:n.indexOf("debug")>-1,favorLocal:n.indexOf("favorLocal")>-1,ajaxPostLoad:n.indexOf("ajaxPostLoad")>-1,checkWPPosts:n.indexOf("checkWPPosts")>-1,cacheAll:n.indexOf("cacheAll")>-1,lightboxEnabled:void 0!==s.attr("data-sby-supports-lightbox"),autoMinRes:1,general:o};window.sby.feeds[i]=function(e,i,s){return new t(e,i,s)}(this,i,d),window.sby.feeds[i].setResizedImages(),window.sby.feeds[i].init();var r=jQuery.Event("sbyafterfeedcreate");r.feed=window.sby.feeds[i],jQuery(window).trigger(r)}))},afterFeedsCreated:function(){e(".sb_instagram_header").each(function(){var i=e(this);i.find(".sby_header_link").hover(function(){i.find(".sby_header_img_hover").addClass("sby_fade_in")},function(){i.find(".sby_header_img_hover").removeClass("sby_fade_in")})})},encodeHTML:function(e){return void 0===e?"":e.replace(/(>)/g,"&gt;").replace(/(<)/g,"&lt;").replace(/(&lt;br\/&gt;)/g,"<br>").replace(/(&lt;br&gt;)/g,"<br>")},urlDetect:function(e){return e.match(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)/g)}},t.prototype={init:function(){var e=this;this.settings.ajaxPostLoad?this.getNewPostSet():this.afterInitialImagesLoaded();var i,t=(i=0,function(e,t){clearTimeout(i),i=setTimeout(e,t)});jQuery(window).resize(function(){t(function(){e.afterResize()},500)})},initLayout:function(){this.initGalleryLayout()},initGalleryLayout:function(){var i=e(this.el),t=this;i.hasClass("sby_layout_gallery")&&i.find(".sby_player_outer_wrap").length&&(this.maybeRaiseSingleImageResolution(i.find(".sby_player_outer_wrap"),0,!0),i.find(".sby_player_outer_wrap .sby_video_thumbnail").off().click(function(i){i.preventDefault(),t.onThumbnailClick(e(this),!0)}),i.mouseenter(function(){t.canCreatePlayer()&&(i.find(".sby_player_outer_wrap iframe").length?void 0===t.player&&t.playerEagerLoaded()&&t.createPlayer("sby_player"+t.index):(i.addClass("sby_player_added").find(".sby_player_outer_wrap").addClass("sby_player_loading"),i.find(".sby_player_outer_wrap .sby_video_thumbnail").find(".sby_loader").show().removeClass("sby_hidden"),t.createPlayer("sby_player"+t.index)))}))},createPlayer:function(i,t,s,a){var n=e(this.el),o=this;if(t=void 0!==t?t:this.getVideoID(n.find(".sby_item").first()),s=void 0!==s?s:0,void 0===a&&(a={host:window.location.protocol+"//www.youtube-nocookie.com",videoId:t,playerVars:{modestbranding:1,rel:0,autoplay:s}}),void 0===a.events&&(a.events={onReady:function(){n.find(".sby_player_outer_wrap").removeClass("sby_player_loading").find(".sby_video_thumbnail").css("z-index",-1).find(".sby_loader").hide().addClass("sby_hidden"),e("#"+i).length&&e("#"+i).closest(".sby_video_thumbnail_wrap").find(".sby_video_thumbnail").length&&e("#"+i).closest(".sby_video_thumbnail_wrap").find(".sby_video_thumbnail").fadeTo(0,"slow",function(){e(this).css("z-index",-1),e(this).find(".sby_loader").hide().addClass("sby_hidden"),e(this).closest(".sby_item").removeClass("sby_player_loading")})},onStateChange:function(t){n.find(".sby_player_outer_wrap").removeClass("sby_player_loading").find(".sby_video_thumbnail").css("z-index",-1).find(".sby_loader").hide().addClass("sby_hidden");var s=t.target.getVideoData().video_id;o.afterStateChange(i,s,t,e("#"+i).closest(".sby_video_thumbnail_wrap")),1===t.data&&void 0!==o.players&&n.find(".sby_item").each(function(){var i=o.getVideoID(e(this));e(this).find("iframe").length&&e(t.target.a).attr("id")!==e(this).find("iframe").attr("id")&&void 0!==o.players[i]&&o.players[i].pauseVideo()})}}),window.sbyEagerLoading)var d=YT.get(i);else d=new window.YT.Player(i,a);return this.maybeAddCTA(i),n.hasClass("sby_layout_list")&&void 0===this.players[t]?this.players[t]=d:void 0===this.player&&(this.player=d),d},afterStateChange:function(e,i,t,s){},afterInitialImagesLoaded:function(){this.initLayout(),this.loadMoreButtonInit(),this.hideExtraItemsForWidth(),this.beforeNewImagesRevealed(),this.revealNewImages(),this.afterNewImagesRevealed(),this.afterFeedSet()},afterResize:function(){this.setImageHeight(),this.setImageResolution(),this.maybeRaiseImageResolution(),this.setImageSizeClass()},afterLoadMoreClicked:function(e){e.find(".sby_loader").removeClass("sby_hidden"),e.find(".sby_btn_text").addClass("sby_hidden"),e.closest(".sb_youtube").find(".sby_num_diff_hide").addClass("sby_transition").removeClass("sby_num_diff_hide")},afterNewImagesLoaded:function(){var i=e(this.el),t=this;this.beforeNewImagesRevealed(),this.revealNewImages(),this.afterNewImagesRevealed(),setTimeout(function(){i.find(".sby_loader").addClass("sby_hidden"),i.find(".sby_btn_text").removeClass("sby_hidden"),t.maybeRaiseImageResolution()},500)},beforeNewImagesRevealed:function(){this.setImageHeight(),this.maybeRaiseImageResolution(!0),this.setImageSizeClass()},afterFeedSet:function(){},revealNewImages:function(){var i=e(this.el),t=this;"function"==typeof sbyCustomJS&&setTimeout(function(){sbyCustomJS()},100),i.find(".sby_item").each(function(i){var s=jQuery(this);s.find(".sby_video_thumbnail").hover(function(){jQuery(this).fadeTo(200,.85)},function(){jQuery(this).stop().fadeTo(500,1)}),s.find(".sby_video_thumbnail").off().click(function(i){i.preventDefault(),t.onThumbnailClick(e(this),!1)}),s.find(".sby_video_thumbnail").mouseenter(function(){t.onThumbnailEnter(e(this),!1)}),s.find(".sby_player_wrap").mouseleave(function(){t.onThumbnailLeave(e(this),!1)}),t.settings.lightboxEnabled&&(s.find(".sby_video_thumbnail").attr("data-sby-lightbox",t.index),"undefined"!=typeof sbyOptions&&void 0!==sbyOptions.lightboxPlaceholder&&s.find(".sby_video_thumbnail").attr("href",sbyOptions.lightboxPlaceholder)),t.afterItemRevealed(s)}),i.find(".sby_player_item").each(function(e){var i=jQuery(this);t.afterItemRevealed(i)}),setTimeout(function(){i.find(".sby_item.sby_new").removeClass("sby_new");var e=10;i.find(".sby_transition").length;i.find(".sby_transition").each(function(i){var t=jQuery(this);setTimeout(function(){t.removeClass("sby_transition")},e),e+=10})},500)},afterItemRevealed:function(){},afterNewImagesRevealed:function(){this.listenForVisibilityChange(),this.sendNeedsResizingToServer(),this.sendCheckWPPostsToServer(),this.settings.imageLoadEnabled||e(".sby_no_resraise").removeClass("sby_no_resraise");var i=e.Event("sbyafterimagesloaded");i.el=e(this.el),e(window).trigger(i)},setResizedImages:function(){e(this.el).find(".sby_resized_image_data").length&&void 0!==e(this.el).find(".sby_resized_image_data").attr("data-resized")&&0===e(this.el).find(".sby_resized_image_data").attr("data-resized").indexOf('{"')&&(this.resizedImages=JSON.parse(e(this.el).find(".sby_resized_image_data").attr("data-resized")),e(this.el).find(".sby_resized_image_data").remove())},sendNeedsResizingToServer:function(){var i=this;if(i.needsResizing.length>0&&i.settings.resizingEnabled){var t=e(this.el).find(".sby_item").length;a({action:"sby_resized_images_submit",needs_resizing:i.needsResizing,offset:t,feed_id:i.settings.feedID,atts:i.settings.shortCodeAtts},function(e){if(0===e.trim().indexOf("{")){var t=JSON.parse(e);i.settings.debugEnabled&&console.log(t)}})}},sendCheckWPPostsToServer:function(){var i=this;if(i.settings.checkWPPosts||i.settings.cacheAll){a({action:"sby_check_wp_submit",feed_id:i.settings.feedID,atts:i.settings.shortCodeAtts,offset:e(this.el).find(".sby_item").length,cache_all:i.settings.cacheAll},function(e){if(0===e.trim().indexOf("{")){var t=JSON.parse(e);i.settings.debugEnabled&&console.log(t)}})}},afterSendCheckWPPostsToServer:function(e){},loadMoreButtonInit:function(){var i=e(this.el),t=this;i.find(".sby_footer .sby_load_btn").off().on("click",function(){t.afterLoadMoreClicked(jQuery(this)),t.getNewPostSet()})},getNewPostSet:function(){var i=e(this.el),t=this;a({action:"sby_load_more_clicked",offset:i.find(".sby_item").length,feed_id:t.settings.feedID,atts:t.settings.shortCodeAtts,current_resolution:t.imageResolution},function(s){if(0===s.trim().indexOf("{")){var a=JSON.parse(s);t.settings.debugEnabled&&console.log(a),t.appendNewPosts(a.html),t.addResizedImages(a.resizedImages),t.settings.ajaxPostLoad?(t.settings.ajaxPostLoad=!1,t.afterInitialImagesLoaded()):t.afterNewImagesLoaded(),a.feedStatus.shouldPaginate?t.outOfPages=!1:(t.outOfPages=!0,i.find(".sby_load_btn").hide()),e(".sby_no_js").removeClass("sby_no_js")}})},appendNewPosts:function(i){var t=e(this.el);t.find(".sby_items_wrap .sby_item").length?t.find(".sby_items_wrap .sby_item").last().after(i):t.find(".sby_items_wrap").append(i)},addResizedImages:function(e){for(var i in e)this.resizedImages[i]=e[i]},setImageHeight:function(){},maybeRaiseSingleImageResolution:function(i,t,s){var a=this,n=a.getImageUrls(i),o=i.find(".sby_video_thumbnail img").attr("src"),d=150;s=void 0!==s&&s;if(!i.hasClass("sby_no_resraise")){e.each(n,function(e,i){i===o&&(d=parseInt(e),s=!1)});var r=640;switch(a.settings.imgRes){case"thumb":r=120;break;case"medium":r=320;break;case"large":r=480;break;case"full":r=640;break;default:var l=Math.max(a.settings.autoMinRes,i.find(".sby_video_thumbnail").innerWidth());switch(a.getBestResolutionForAuto(l,1,e(this.el).find("sby_item").first())){case 480:r=480;break;case 320:r=320;break;case 120:r=120}}if(r>d||o===window.sby.options.placeholder||s){if(a.settings.debugEnabled){var h=o===window.sby.options.placeholder?"was placeholder":"too small";console.log("rais res for "+o,h)}var b=n[r];i.find(".sby_video_thumbnail img").attr("src",b)}i.find("img").on("error",function(){if(e(this).hasClass("sby_img_error"))console.log("unfixed error "+e(this).attr("src"));else{if(e(this).addClass("sby_img_error"),e(this).attr("src").indexOf("i.ytimg.com")>-1)a.settings.favorLocal=!0,a.getImageUrls(e(this).closest(".sby_item"))[640];else void 0!==e(this).closest(".sby_video_thumbnail").attr("data-full-res")||e(this).closest(".sby_video_thumbnail").attr("href");setTimeout(function(){a.afterResize()},1500)}})}},maybeRaiseImageResolution:function(i){var t=this,s=void 0!==i&&!0===i?".sby_item.sby_new":".sby_item",a=!t.isInitialized;e(t.el).find(s).each(function(i){!e(this).hasClass("sby_num_diff_hide")&&e(this).find(".sby_video_thumbnail").length&&void 0!==e(this).find(".sby_video_thumbnail").attr("data-img-src-set")&&t.maybeRaiseSingleImageResolution(e(this),i,a)}),t.isInitialized=!0},getBestResolutionForAuto:function(i,t,s){(isNaN(t)||t<1)&&(t=1);var a=i*t,n=10*Math.ceil(a/10),o=[120,320,480,640];if(s.hasClass("sby_highlighted")&&(n*=2),-1===o.indexOf(parseInt(n))){var d=!1;e.each(o,function(e,i){i>parseInt(n)&&!d&&(n=i,d=!0)})}return n},hideExtraItemsForWidth:function(){if("carousel"!==this.layout){var i=e(this.el),t=void 0!==i.attr("data-num")&&""!==i.attr("data-num")?parseInt(i.attr("data-num")):1,s=void 0!==i.attr("data-nummobile")&&""!==i.attr("data-nummobile")?parseInt(i.attr("data-nummobile")):t;i.hasClass(".sby_layout_carousel")||(e(window).width()<480?s<i.find(".sby_item").length&&i.find(".sby_item").slice(s-i.find(".sby_item").length).addClass("sby_num_diff_hide"):t<i.find(".sby_item").length&&i.find(".sby_item").slice(t-i.find(".sby_item").length).addClass("sby_num_diff_hide"))}},setImageSizeClass:function(){var i=e(this.el);i.removeClass("sby_small sby_medium");var t=i.innerWidth(),s=parseInt(i.find(".sby_items_wrap").outerWidth()-i.find(".sby_items_wrap").width())/2,a=this.getColumnCount(),n=(t-s*(a+2))/a;n>120&&n<240?i.addClass("sby_medium"):n<=120&&i.addClass("sby_small")},setMinImageWidth:function(){e(this.el).find(".sby_item .sby_video_thumbnail").first().length?this.minImageWidth=e(this.el).find(".sby_item .sby_video_thumbnail").first().innerWidth():this.minImageWidth=150},setImageResolution:function(){if("auto"===this.settings.imgRes)this.imageResolution="auto";else switch(this.settings.imgRes){case"thumb":this.imageResolution=150;break;case"medium":this.imageResolution=320;break;default:this.imageResolution=640}},getImageUrls:function(e){var i=JSON.parse(e.find(".sby_video_thumbnail").attr("data-img-src-set").replace(/\\\//g,"/")),t=e.attr("id").replace("sby_","").replace("player_","");if(void 0!==this.resizedImages[t]&&"video"!==this.resizedImages[t]&&"pending"!==this.resizedImages[t]&&"error"!==this.resizedImages[t].id&&"video"!==this.resizedImages[t].id&&"pending"!==this.resizedImages[t].id){if(void 0!==this.resizedImages[t].sizes){var s=[];void 0!==this.resizedImages[t].sizes.full&&(s.push(640),i[640]=sbyOptions.resized_url+this.resizedImages[t].id+"full.jpg",e.find(".sby_link_area").attr("href",sbyOptions.resized_url+this.resizedImages[t].id+"full.jpg"),e.find(".sby_video_thumbnail").attr("data-full-res",sbyOptions.resized_url+this.resizedImages[t].id+"full.jpg")),void 0!==this.resizedImages[t].sizes.low&&(s.push(320),i[320]=sbyOptions.resized_url+this.resizedImages[t].id+"low.jpg",this.settings.favorLocal&&void 0===this.resizedImages[t].sizes.full&&(e.find(".sby_link_area").attr("href",sbyOptions.resized_url+this.resizedImages[t].id+"low.jpg"),e.find(".sby_video_thumbnail").attr("data-full-res",sbyOptions.resized_url+this.resizedImages[t].id+"low.jpg"))),void 0!==this.resizedImages[t].sizes.thumb&&(s.push(150),i[150]=sbyOptions.resized_url+this.resizedImages[t].id+"thumb.jpg"),this.settings.favorLocal&&(-1===s.indexOf(640)&&s.indexOf(320)>-1&&(i[640]=sbyOptions.resized_url+this.resizedImages[t].id+"low.jpg"),-1===s.indexOf(320)&&(s.indexOf(640)>-1?i[320]=sbyOptions.resized_url+this.resizedImages[t].id+"full.jpg":s.indexOf(150)>-1&&(i[320]=sbyOptions.resized_url+this.resizedImages[t].id+"thumb.jpg")),-1===s.indexOf(150)&&(s.indexOf(320)>-1?i[150]=sbyOptions.resized_url+this.resizedImages[t].id+"low.jpg":s.indexOf(640)>-1&&(i[150]=sbyOptions.resized_url+this.resizedImages[t].id+"full.jpg")))}}else(void 0===this.resizedImages[t]||void 0!==this.resizedImages[t].id&&"pending"!==this.resizedImages[t].id&&"error"!==this.resizedImages[t].id)&&this.addToNeedsResizing(t);return i},getVideoID:function(i){if(i.hasClass("sby_item")||i.hasClass("sby_player_item")){if(void 0!==i.find(".sby_video_thumbnail").attr("data-video-id"))return i.find(".sby_video_thumbnail").attr("data-video-id")}else if(i.closest("sby_item").length||i.closest("sby_player_item").length){var t=i.closest("sby_item").length?i.closest("sby_item"):i.closest("sby_player_item");if(void 0!==t.find(".sby_video_thumbnail").attr("data-video-id"))return t.find(".sby_video_thumbnail").attr("data-video-id")}else{if(i.hasClass("sb_youtube"))return i.find(".sby_item").first().find(".sby_video_thumbnail").attr("data-video-id");if(e(this.el).find(".sby_video_thumbnail").first().length&&void 0!==e(this.el).find(".sby_video_thumbnail").first().attr("data-video-id"))return e(this.el).find(".sby_video_thumbnail").first().attr("data-video-id")}return""},getAvatarUrl:function(e,i){if(""===e)return"";var t=this.settings.general.avatars;return"local"===(i=void 0!==i?i:"local")?void 0!==t["LCL"+e]&&1===parseInt(t["LCL"+e])?sbyOptions.resized_url+e+".jpg":void 0!==t[e]?t[e]:"":void 0!==t[e]?t[e]:void 0!==t["LCL"+e]&&1===parseInt(t["LCL"+e])?sbyOptions.resized_url+e+".jpg":""},addToNeedsResizing:function(e){-1===this.needsResizing.indexOf(e)&&this.needsResizing.push(e)},listenForVisibilityChange:function(){var i,t,s,a=this;i=jQuery,t={callback:function(){},runOnLoad:!0,frequency:100,sbyPreviousVisibility:null},s={sbyCheckVisibility:function(e,i){if(jQuery.contains(document,e[0])){var t=i.sbyPreviousVisibility,a=e.is(":visible");i.sbyPreviousVisibility=a,null==t?i.runOnLoad&&i.callback(e,a):t!==a&&i.callback(e,a),setTimeout(function(){s.sbyCheckVisibility(e,i)},i.frequency)}}},i.fn.sbyVisibilityChanged=function(e){var a=i.extend({},t,e);return this.each(function(){s.sbyCheckVisibility(i(this),a)})},"function"==typeof e(this.el).filter(":hidden").sbyVisibilityChanged&&e(this.el).filter(":hidden").sbyVisibilityChanged({callback:function(e,i){a.afterResize()},runOnLoad:!1})},getColumnCount:function(){var i=e(this.el),t=this.settings.cols,s=this.settings.colsmobile,a=t;return sbyWindowWidth=window.innerWidth,i.hasClass("sby_mob_col_auto")?(sbyWindowWidth<640&&parseInt(t)>2&&parseInt(t)<7&&(a=2),sbyWindowWidth<640&&parseInt(t)>6&&parseInt(t)<11&&(a=4),sbyWindowWidth<=480&&parseInt(t)>2&&(a=1)):sbyWindowWidth<=480&&(a=s),parseInt(a)},onThumbnailClick:function(i,t,s){if(this.canCreatePlayer()){var a=e(this.el);if(a.hasClass("sby_layout_gallery"))if(a.addClass("sby_player_added").find(".sby_player_outer_wrap").addClass("sby_player_loading"),a.find(".sby_player_outer_wrap .sby_video_thumbnail").find(".sby_loader").show().removeClass("sby_hidden"),a.find(".sby_player_outer_wrap iframe").length)if(t){s=void 0===s?this.getVideoID(a.find(".sby_item").first()):s;this.playVideoInPlayer(s)}else{s=void 0===s?this.getVideoID(i.closest(".sby_item")):s;this.changePlayerInfo(i.closest(".sby_item")),this.playVideoInPlayer(s),this.afterVideoChanged()}else if(t)this.createPlayer("sby_player"+this.index);else{var s=void 0===s?this.getVideoID(i.closest(".sby_item")):s;this.createPlayer("sby_player"+this.index,s)}else if(e(this.el).hasClass("sby_layout_grid")||e(this.el).hasClass("sby_layout_carousel")){var n=i.closest(".sby_item");s=void 0===s?this.getVideoID(n):s;this.playVideoInPlayer(s),this.afterVideoChanged()}else if(e(this.el).hasClass("sby_layout_list")){n=i.closest(".sby_item"),s=void 0===s?this.getVideoID(n):s;n.length&&!n.find("iframe").length?(n.find(".sby_loader").show().removeClass("sby_hidden"),n.addClass("sby_player_loading sby_player_loaded"),this.createPlayer("sby_player_"+s,s)):(this.playVideoInPlayer(s,n.attr("data-video-id")),this.afterVideoChanged())}}},onThumbnailEnter:function(i){if(this.canCreatePlayer()&&e(this.el).hasClass("sby_layout_list")){var t=i.closest(".sby_item"),s=this.getVideoID(t);t.find("iframe").length||(t.find(".sby_loader").show().removeClass("sby_hidden"),t.addClass("sby_player_loading sby_player_loaded"),this.createPlayer("sby_player_"+s,s,0))}},onThumbnailLeave:function(e){},changePlayerInfo:function(e){},playerEagerLoaded:function(){if(void 0!==this.player||e(this.el).hasClass("sby_player_loaded"))return!0},canCreatePlayer:function(){return this.playerEagerLoaded()||this.playerAPIReady&&this.consentGiven},playVideoInPlayer:function(e,i){void 0!==this.player&&void 0!==this.player.loadVideoById?this.player.loadVideoById(e):void 0!==window.sbyLightboxPlayer&&void 0!==window.sbyLightboxPlayer.loadVideoById?window.sbyLightboxPlayer.loadVideoById(e):void 0!==i&&void 0!==this.players&&void 0!==this.players[i]&&this.players[i].loadVideoById(e)},afterVideoChanged:function(){e(this.el).hasClass("sby_layout_gallery")&&(e(this.el).find(".sby_player_outer_wrap").removeClass("sby_player_loading"),e(this.el).find(".sby_player_outer_wrap .sby_video_thumbnail").find(".sby_loader").hide().addClass("sby_hidden"),e(window).width()<480&&e("html, body").animate({scrollTop:e(this.el).find(".sby_player_outer_wrap").offset().top},300))},maybeAddCTA:function(){}},s.prototype={getData:function(e){return{feedIndex:parseInt(e.closest(".sb_youtube").attr("data-sby-index")-1),link:e.attr("href"),video:e.attr("data-video-id")}},template:function(){return"<div id='sby_lightboxOverlay' class='sby_lightboxOverlay'></div><div id='sby_lightbox' class='sby_lightbox'><div class='sby_lb-outerContainer'><div class='sby_lb-container'><img class='sby_lb-image' alt='Lightbox image placeholder' src='' /><div class='sby_lb-player sby_lb-player-placeholder' id='sby_lb-player'></div><div class='sby_lb-nav'><a class='sby_lb-prev' href='#' ><p class='sby-screenreader'>Previous Slide</p><span></span></a><a class='sby_lb-next' href='#' ><p class='sby-screenreader'>Next Slide</p><span></span></a></div><div class='sby_lb-loader'><a class='sby_lb-cancel'></a></div></div></div><div class='sby_lb-dataContainer'><div class='sby_lb-data'><div class='sby_lb-details'><div class='sby_lb-caption'></div><div class='sby_lb-info'><div class='sby_lb-number'></div></div></div><div class='sby_lb-closeContainer'><a class='sby_lb-close'></a></div></div></div></div>"},beforePlayerSetup:function(e,i,t,s,a){},afterPlayerSetup:function(e,i,t,s){},afterResize:function(){var i=e("#sby_lightbox .sby_lb-player").height();if(i>100){var t=e("#sby_lightbox .sby_lb-outerContainer").height()-i;t>10&&e("#sby_lightbox .sby_lb-player").css("top",t/2)}}},window.sby_init=function(){window.sby=new i,window.sby.createPage(window.sby.createFeeds,{whenFeedsCreated:window.sby.afterFeedsCreated})}}(jQuery),jQuery(document).ready(function(e){sby_init()}),void 0===window.sbyEagerLoading&&(window.sbyEagerLoading=!1,jQuery("div[data-vc-video-bg]").length&&(window.sbyEagerLoading=!0))}window.onYouTubeIframeAPIReady=function(){var e=document.getElementsByClassName("sb_youtube").length;if(e>0)if(window.sbyEagerLoading||void 0===window.sby){window.sbyEagerLoading=!0;var i=!1;jQuery(".sb_youtube").each(function(e){var t=jQuery(this);t.hasClass("sby_layout_list")?(jQuery(this).addClass("sby_player_loaded"),t.find(".sby_item").each(function(){videoID=jQuery(this).attr("data-video-id"),player=new YT.Player("sby_player_"+videoID,{height:"100",width:"100",videoId:videoID,playerVars:{modestbranding:1,rel:0,autoplay:!1},events:{onStateChange:function(e){e.target.getVideoData().video_id;1===e.data&&t.find(".sby_item").each(function(){var i=jQuery(this).attr("data-video-id");jQuery(this).find("iframe").length&&jQuery(e.target.a).attr("id")!==jQuery(this).find("iframe").attr("id")&&YT.get("sby_player_"+i).pauseVideo()})}}})})):t.hasClass("sby_layout_gallery")?(jQuery(this).addClass("sby_player_loaded"),player=new YT.Player("sby_player"+e,{height:"100",width:"100",videoId:jQuery(this).find(".sby_item").first().attr("data-video-id"),playerVars:{modestbranding:1,rel:0,autoplay:!1}})):i=!0}),i&&(jQuery("#sby_lb-player").length||jQuery(".sb_youtube").first().append('<div class="sby_lb-player-loaded sby_lb-player" id="sby_lb-player" style="display: none;"></div>'),player=new YT.Player("sby_lb-player",{height:"100",width:"100",videoId:jQuery(this).find(".sby_item").first().attr("data-video-id"),playerVars:{modestbranding:1,rel:0,autoplay:!1}}),window.sbyLightboxPlayer=player)}else for(var t=0;t<e;t++)window.sby.feeds[t].playerAPIReady=!0};
languages/feeds-for-youtube-de_DE.mo ADDED
Binary file
languages/feeds-for-youtube-de_DE.po ADDED
@@ -0,0 +1,989 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "POT-Creation-Date: 2020-02-04 15:53-0600\n"
5
+ "PO-Revision-Date: 2020-02-04 15:53-0600\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: \n"
8
+ "Language: de_DE\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 2.2.4\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Poedit-KeywordsList: __;_e;esc_html__;esc_html_e;esc_attr_e;esc_attr__\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ #: inc/admin/admin-functions.php:17 inc/admin/templates/configure.php:1
19
+ msgid "Configure"
20
+ msgstr "Konfigurieren"
21
+
22
+ #: inc/admin/admin-functions.php:20
23
+ msgid "Customize your feed"
24
+ msgstr ""
25
+
26
+ #: inc/admin/admin-functions.php:23
27
+ msgid "Customize"
28
+ msgstr "Anpassen"
29
+
30
+ #: inc/admin/admin-functions.php:26 inc/admin/templates/main.php:57
31
+ msgid "Display your feed"
32
+ msgstr ""
33
+
34
+ #: inc/admin/admin-functions.php:29
35
+ msgid "Display"
36
+ msgstr "Anzeige"
37
+
38
+ #: inc/admin/admin-functions.php:34
39
+ msgid "Support"
40
+ msgstr ""
41
+
42
+ #: inc/admin/admin-functions.php:61
43
+ msgid "Channel"
44
+ msgstr ""
45
+
46
+ #: inc/admin/admin-functions.php:64
47
+ msgid "Eg: Channel ID or User Name"
48
+ msgstr ""
49
+
50
+ #: inc/admin/admin-functions.php:66
51
+ msgid "Channel ID or User Name"
52
+ msgstr ""
53
+
54
+ #: inc/admin/admin-functions.php:67
55
+ msgid ""
56
+ "You can find the ID or User Name of your YouTube Channel from the URL. In "
57
+ "each URL format, the text you need to use is highlighted below:"
58
+ msgstr ""
59
+
60
+ #: inc/admin/admin-functions.php:68
61
+ msgid "URL Format 1:"
62
+ msgstr ""
63
+
64
+ #: inc/admin/admin-functions.php:70
65
+ msgid "URL Format 2:"
66
+ msgstr ""
67
+
68
+ #: inc/admin/admin-functions.php:83
69
+ msgid "List"
70
+ msgstr ""
71
+
72
+ #: inc/admin/admin-functions.php:85
73
+ msgid "A single columns of videos that play when clicked."
74
+ msgstr ""
75
+
76
+ #: inc/admin/admin-functions.php:89
77
+ msgid "Grid"
78
+ msgstr ""
79
+
80
+ #: inc/admin/admin-functions.php:91
81
+ msgid ""
82
+ "Video thumbnails are displayed in columns and play in a lightbox when "
83
+ "clicked."
84
+ msgstr ""
85
+
86
+ #: inc/admin/admin-functions.php:96 inc/admin/admin-functions.php:122
87
+ msgid "Columns"
88
+ msgstr ""
89
+
90
+ #: inc/admin/admin-functions.php:105 inc/admin/admin-functions.php:131
91
+ msgid "Mobile Columns"
92
+ msgstr ""
93
+
94
+ #: inc/admin/admin-functions.php:115
95
+ msgid "Gallery"
96
+ msgstr ""
97
+
98
+ #: inc/admin/admin-functions.php:117
99
+ msgid ""
100
+ "One large video that plays when clicked with thumbnails underneath to play "
101
+ "more."
102
+ msgstr ""
103
+
104
+ #: inc/admin/admin-functions.php:146
105
+ msgid "Configure Options"
106
+ msgstr ""
107
+
108
+ #: inc/admin/admin-functions.php:150
109
+ msgid "Customize Options"
110
+ msgstr ""
111
+
112
+ #: inc/admin/admin-functions.php:154
113
+ msgid "Layout Options"
114
+ msgstr ""
115
+
116
+ #: inc/admin/admin-functions.php:158
117
+ msgid "Header Options"
118
+ msgstr ""
119
+
120
+ #: inc/admin/admin-functions.php:162
121
+ msgid "\"Load More\" Button Options"
122
+ msgstr ""
123
+
124
+ #: inc/admin/admin-functions.php:166
125
+ msgid "\"Subscribe\" Button Options"
126
+ msgstr ""
127
+
128
+ #: inc/admin/admin-functions.php:297
129
+ msgid ""
130
+ "Could not connect your account. Please check to make sure this is a valid "
131
+ "access token for the Smash Balloon YouTube App."
132
+ msgstr ""
133
+
134
+ #: inc/admin/admin-functions.php:572
135
+ msgid ""
136
+ "PS. We currently have a <a href=\"https://smashballoon.com/video-feed/?"
137
+ "utm_source=plugin-free&utm_campaign=sby&discount="
138
+ msgstr ""
139
+
140
+ #: inc/admin/admin-functions.php:590
141
+ #, php-format
142
+ msgid ""
143
+ "It's great to see that you've been using the %s plugin for a while now. "
144
+ "Hopefully you're happy with it!&nbsp; If so, would you consider leaving a "
145
+ "positive review? It really helps to support the plugin and helps others to "
146
+ "discover it too!"
147
+ msgstr ""
148
+
149
+ #: inc/admin/admin-functions.php:594
150
+ msgid "Sure, I'd love to!"
151
+ msgstr ""
152
+
153
+ #: inc/admin/admin-functions.php:596
154
+ msgid "No thanks"
155
+ msgstr ""
156
+
157
+ #: inc/admin/admin-functions.php:598
158
+ msgid "I've already given a review"
159
+ msgstr ""
160
+
161
+ #: inc/admin/admin-functions.php:600
162
+ msgid "Ask Me Later"
163
+ msgstr ""
164
+
165
+ #: inc/admin/admin-functions.php:617
166
+ #, php-format
167
+ msgid ""
168
+ "<b style=\"font-weight: 700;\">Exclusive offer!</b> We don't run promotions "
169
+ "very often, but for a limited time we're offering <b style=\"font-weight: "
170
+ "700;\">20% off</b> our Pro version to all users of our free %s plugin."
171
+ msgstr ""
172
+
173
+ #: inc/admin/admin-functions.php:619 inc/admin/admin-functions.php:637
174
+ msgid "Get this offer"
175
+ msgstr ""
176
+
177
+ #: inc/admin/admin-functions.php:620 inc/admin/admin-functions.php:638
178
+ msgid "I'm not interested"
179
+ msgstr ""
180
+
181
+ #: inc/admin/admin-functions.php:635
182
+ #, php-format
183
+ msgid ""
184
+ "<b style=\"font-weight: 700;\">Black Friday/Cyber Monday Deal!</b> Thank you "
185
+ "for using our free %s plugin. For a limited time, we're offering <b style="
186
+ "\"font-weight: 700;\">20% off</b> the Pro version for all of our users."
187
+ msgstr ""
188
+
189
+ #: inc/admin/class-sbspf-admin.php:228
190
+ msgid "Yes"
191
+ msgstr ""
192
+
193
+ #: inc/admin/class-sbspf-admin.php:409
194
+ msgid "Connect an account above"
195
+ msgstr ""
196
+
197
+ #: inc/admin/class-sbspf-admin.php:448 inc/admin/class-sby-admin.php:578
198
+ msgid "When the page loads"
199
+ msgstr ""
200
+
201
+ #: inc/admin/class-sbspf-admin.php:450 inc/admin/class-sby-admin.php:580
202
+ #, php-format
203
+ msgid ""
204
+ "Your %s data is temporarily cached by the plugin in your WordPress database. "
205
+ "There are two ways that you can set the plugin to check for new data:"
206
+ "<br><br>\n"
207
+ " <b>1. When the page loads</b><br>Selecting this option means "
208
+ "that when the cache expires then the plugin will check %s for new posts the "
209
+ "next time that the feed is loaded. You can choose how long this data should "
210
+ "be cached for with a minimum time of 15 minutes. If you set the time to 60 "
211
+ "minutes then the plugin will clear the cached data after that length of "
212
+ "time, and the next time the page is viewed it will check for new data. "
213
+ "<b>Tip:</b> If you're experiencing an issue with the plugin not updating "
214
+ "automatically then try enabling the setting labeled <b>'Force cache to clear "
215
+ "on interval'</b> which is located on the 'Customize' tab.<br><br>\n"
216
+ " <b>2. In the background</b><br>Selecting this option means "
217
+ "that the plugin will check for new data in the background so that the feed "
218
+ "is updated behind the scenes. You can select at what time and how often the "
219
+ "plugin should check for new data using the settings below. <b>Please note</"
220
+ "b> that the plugin will initially check for data from Instagram when the "
221
+ "page first loads, but then after that will check in the background on the "
222
+ "schedule selected - unless the cache is cleared."
223
+ msgstr ""
224
+
225
+ #: inc/admin/class-sbspf-admin.php:456 inc/admin/class-sby-admin.php:586
226
+ msgid "Every"
227
+ msgstr ""
228
+
229
+ #: inc/admin/class-sbspf-admin.php:459 inc/admin/class-sby-admin.php:589
230
+ msgid "Minutes"
231
+ msgstr ""
232
+
233
+ #: inc/admin/class-sbspf-admin.php:460 inc/admin/class-sby-admin.php:590
234
+ msgid "Hours"
235
+ msgstr ""
236
+
237
+ #: inc/admin/class-sbspf-admin.php:461 inc/admin/class-sby-admin.php:591
238
+ msgid "Days"
239
+ msgstr ""
240
+
241
+ #: inc/admin/class-sbspf-admin.php:463 inc/admin/class-sbspf-admin.php:736
242
+ #: inc/admin/class-sby-admin.php:593
243
+ msgid "What does this mean?"
244
+ msgstr ""
245
+
246
+ #: inc/admin/class-sbspf-admin.php:464 inc/admin/class-sby-admin.php:594
247
+ #, php-format
248
+ msgid ""
249
+ "Your %s posts are temporarily cached by the plugin in your WordPress "
250
+ "database. You can choose how long the posts should be cached for. If you set "
251
+ "the time to 1 hour then the plugin will clear the cache after that length of "
252
+ "time and check %s for posts again."
253
+ msgstr ""
254
+
255
+ #: inc/admin/class-sbspf-admin.php:469 inc/admin/class-sby-admin.php:599
256
+ msgid "In the background"
257
+ msgstr ""
258
+
259
+ #: inc/admin/class-sbspf-admin.php:474 inc/admin/class-sby-admin.php:604
260
+ #: youtube-feed.php:187
261
+ msgid "Every 30 minutes"
262
+ msgstr ""
263
+
264
+ #: inc/admin/class-sbspf-admin.php:475 inc/admin/class-sby-admin.php:605
265
+ msgid "Every hour"
266
+ msgstr ""
267
+
268
+ #: inc/admin/class-sbspf-admin.php:476 inc/admin/class-sby-admin.php:606
269
+ msgid "Every 12 hours"
270
+ msgstr ""
271
+
272
+ #: inc/admin/class-sbspf-admin.php:477 inc/admin/class-sby-admin.php:607
273
+ msgid "Every 24 hours"
274
+ msgstr ""
275
+
276
+ #: inc/admin/class-sbspf-admin.php:481 inc/admin/class-sby-admin.php:611
277
+ msgid "at"
278
+ msgstr ""
279
+
280
+ #: inc/admin/class-sbspf-admin.php:498 inc/admin/class-sby-admin.php:628
281
+ msgid "AM"
282
+ msgstr ""
283
+
284
+ #: inc/admin/class-sbspf-admin.php:499 inc/admin/class-sby-admin.php:629
285
+ msgid "PM"
286
+ msgstr ""
287
+
288
+ #: inc/admin/class-sbspf-admin.php:511 inc/admin/class-sby-admin.php:641
289
+ msgid "every 30 minutes"
290
+ msgstr ""
291
+
292
+ #: inc/admin/class-sbspf-admin.php:512 inc/admin/class-sby-admin.php:642
293
+ msgid "every 12 hours"
294
+ msgstr ""
295
+
296
+ #: inc/admin/class-sbspf-admin.php:514 inc/admin/class-sby-admin.php:644
297
+ msgid "Next check"
298
+ msgstr ""
299
+
300
+ #: inc/admin/class-sbspf-admin.php:514 inc/admin/class-sby-admin.php:644
301
+ msgid ""
302
+ "Note: Saving the settings on this page will clear the cache and reset this "
303
+ "schedule"
304
+ msgstr ""
305
+
306
+ #: inc/admin/class-sbspf-admin.php:516 inc/admin/class-sby-admin.php:646
307
+ msgid "Nothing currently scheduled"
308
+ msgstr ""
309
+
310
+ #: inc/admin/class-sbspf-admin.php:549
311
+ msgid "Click for shortcode option"
312
+ msgstr ""
313
+
314
+ #: inc/admin/class-sby-admin.php:28
315
+ msgid "Feed Type"
316
+ msgstr ""
317
+
318
+ #: inc/admin/class-sby-admin.php:32
319
+ msgid "Display videos from a YouTube channel (channel)"
320
+ msgstr ""
321
+
322
+ #: inc/admin/class-sby-admin.php:44
323
+ msgid "Check for new posts"
324
+ msgstr ""
325
+
326
+ #: inc/admin/class-sby-admin.php:52
327
+ msgid "Preserve settings when plugin is removed"
328
+ msgstr ""
329
+
330
+ #: inc/admin/class-sby-admin.php:54
331
+ msgid ""
332
+ "When removing the plugin your settings are automatically erased. Checking "
333
+ "this box will prevent any settings from being deleted. This means that you "
334
+ "can uninstall and reinstall the plugin without losing your settings."
335
+ msgstr ""
336
+
337
+ #: inc/admin/class-sby-admin.php:62
338
+ msgid "General"
339
+ msgstr ""
340
+
341
+ #: inc/admin/class-sby-admin.php:88
342
+ msgid "Width of Feed"
343
+ msgstr ""
344
+
345
+ #: inc/admin/class-sby-admin.php:92
346
+ msgid "The width of your feed. Any number with a unit like \"px\" or \"%\"."
347
+ msgstr ""
348
+
349
+ #: inc/admin/class-sby-admin.php:100
350
+ msgid "Set to be 100% width on mobile?"
351
+ msgstr ""
352
+
353
+ #: inc/admin/class-sby-admin.php:103
354
+ #, php-format
355
+ msgid ""
356
+ "If you set a width on the feed then this will be used on mobile as well as "
357
+ "desktop. Check this setting to set the feed width to be 100% on mobile so "
358
+ "that it is responsive."
359
+ msgstr ""
360
+
361
+ #: inc/admin/class-sby-admin.php:125
362
+ msgid "Height of Feed"
363
+ msgstr ""
364
+
365
+ #: inc/admin/class-sby-admin.php:129
366
+ msgid "The height of your feed. Any number with a unit like \"px\" or \"em\"."
367
+ msgstr ""
368
+
369
+ #: inc/admin/class-sby-admin.php:142
370
+ msgid "Background Color"
371
+ msgstr ""
372
+
373
+ #: inc/admin/class-sby-admin.php:146
374
+ msgid "Background color for the feed. Any hex color code."
375
+ msgstr ""
376
+
377
+ #: inc/admin/class-sby-admin.php:153
378
+ msgid "Layout"
379
+ msgstr ""
380
+
381
+ #: inc/admin/class-sby-admin.php:164
382
+ msgid "Layout Type"
383
+ msgstr ""
384
+
385
+ #: inc/admin/class-sby-admin.php:169
386
+ msgid "How your posts are display visually."
387
+ msgstr ""
388
+
389
+ #: inc/admin/class-sby-admin.php:194
390
+ msgid "Number of Videos"
391
+ msgstr ""
392
+
393
+ #: inc/admin/class-sby-admin.php:195
394
+ msgid "Number of videos to show initially."
395
+ msgstr ""
396
+
397
+ #: inc/admin/class-sby-admin.php:199
398
+ msgid "The number of videos in the feed"
399
+ msgstr ""
400
+
401
+ #: inc/admin/class-sby-admin.php:207
402
+ msgid "Play Icon"
403
+ msgstr ""
404
+
405
+ #: inc/admin/class-sby-admin.php:211
406
+ msgid "Title"
407
+ msgstr ""
408
+
409
+ #: inc/admin/class-sby-admin.php:216
410
+ msgid "User Name"
411
+ msgstr ""
412
+
413
+ #: inc/admin/class-sby-admin.php:221
414
+ msgid "Views"
415
+ msgstr ""
416
+
417
+ #: inc/admin/class-sby-admin.php:226
418
+ msgid "Date"
419
+ msgstr ""
420
+
421
+ #: inc/admin/class-sby-admin.php:231
422
+ msgid "Live Stream Countdown (when applies)"
423
+ msgstr ""
424
+
425
+ #: inc/admin/class-sby-admin.php:236
426
+ msgid "Stats (like and comment counts)"
427
+ msgstr ""
428
+
429
+ #: inc/admin/class-sby-admin.php:241 inc/admin/templates/display.php:19
430
+ msgid "Description"
431
+ msgstr ""
432
+
433
+ #: inc/admin/class-sby-admin.php:251
434
+ msgid "Show/Hide"
435
+ msgstr ""
436
+
437
+ #: inc/admin/class-sby-admin.php:255
438
+ msgid ""
439
+ "Comma separated list of what video information (title, description, stats) "
440
+ "will display in the feed. eg."
441
+ msgstr ""
442
+
443
+ #: inc/admin/class-sby-admin.php:269
444
+ msgid "Spacing between videos"
445
+ msgstr ""
446
+
447
+ #: inc/admin/class-sby-admin.php:273
448
+ msgid ""
449
+ "The spacing/padding around the videos in the feed. Any number with a unit "
450
+ "like \"px\" or \"em\"."
451
+ msgstr ""
452
+
453
+ #: inc/admin/class-sby-admin.php:282
454
+ msgid "Header"
455
+ msgstr ""
456
+
457
+ #: inc/admin/class-sby-admin.php:292
458
+ msgid "Show Header"
459
+ msgstr ""
460
+
461
+ #: inc/admin/class-sby-admin.php:297
462
+ msgid "Include a header for this feed."
463
+ msgstr ""
464
+
465
+ #: inc/admin/class-sby-admin.php:307
466
+ msgid "Show Channel Description"
467
+ msgstr ""
468
+
469
+ #: inc/admin/class-sby-admin.php:312
470
+ msgid "Include the channel description in the header."
471
+ msgstr ""
472
+
473
+ #: inc/admin/class-sby-admin.php:319
474
+ msgid "\"Load More\" Button"
475
+ msgstr ""
476
+
477
+ #: inc/admin/class-sby-admin.php:329
478
+ msgid "Show \"Load More\" Button"
479
+ msgstr ""
480
+
481
+ #: inc/admin/class-sby-admin.php:334
482
+ msgid ""
483
+ "Include a \"Load More\" button at the bottom of the feed to load more videos."
484
+ msgstr ""
485
+
486
+ #: inc/admin/class-sby-admin.php:345
487
+ msgid "Button Background Color"
488
+ msgstr ""
489
+
490
+ #: inc/admin/class-sby-admin.php:349
491
+ msgid "Background color for the \"Load More\" button. Any hex color code."
492
+ msgstr ""
493
+
494
+ #: inc/admin/class-sby-admin.php:360
495
+ msgid "Button Text Color"
496
+ msgstr ""
497
+
498
+ #: inc/admin/class-sby-admin.php:364
499
+ msgid "Text color for the \"Load More\" button. Any hex color code."
500
+ msgstr ""
501
+
502
+ #: inc/admin/class-sby-admin.php:372 youtube-feed.php:457
503
+ msgid "Load More..."
504
+ msgstr "Mehr laden…"
505
+
506
+ #: inc/admin/class-sby-admin.php:375
507
+ msgid "Button Text"
508
+ msgstr ""
509
+
510
+ #: inc/admin/class-sby-admin.php:379
511
+ msgid "The text that appers on the \"Load More\" button."
512
+ msgstr ""
513
+
514
+ #: inc/admin/class-sby-admin.php:387
515
+ msgid "\"Subscribe\" Button"
516
+ msgstr ""
517
+
518
+ #: inc/admin/class-sby-admin.php:398
519
+ msgid "Show \"Subscribe\" Button"
520
+ msgstr ""
521
+
522
+ #: inc/admin/class-sby-admin.php:403
523
+ msgid ""
524
+ "Include a \"Subscribe\" button at the bottom of the feed to load more videos."
525
+ msgstr ""
526
+
527
+ #: inc/admin/class-sby-admin.php:414
528
+ msgid "Subscribe Background Color"
529
+ msgstr ""
530
+
531
+ #: inc/admin/class-sby-admin.php:418
532
+ msgid "Background color for the \"Subscribe\" button. Any hex color code."
533
+ msgstr ""
534
+
535
+ #: inc/admin/class-sby-admin.php:429
536
+ msgid "Subscribe Text Color"
537
+ msgstr ""
538
+
539
+ #: inc/admin/class-sby-admin.php:433
540
+ msgid "Text color for the \"Subscribe\" button. Any hex color code."
541
+ msgstr ""
542
+
543
+ #: inc/admin/class-sby-admin.php:441 youtube-feed.php:458
544
+ msgid "Subscribe"
545
+ msgstr "Abonnieren"
546
+
547
+ #: inc/admin/class-sby-admin.php:444
548
+ msgid "Subscribe Text"
549
+ msgstr ""
550
+
551
+ #: inc/admin/class-sby-admin.php:448
552
+ msgid "The text that appers on the \"Subscribe\" button."
553
+ msgstr ""
554
+
555
+ #: inc/admin/class-sby-admin.php:455
556
+ msgid "Video Experience"
557
+ msgstr ""
558
+
559
+ #: inc/admin/class-sby-admin.php:463
560
+ msgid "Play when clicked"
561
+ msgstr ""
562
+
563
+ #: inc/admin/class-sby-admin.php:476
564
+ msgid "When does video play?"
565
+ msgstr ""
566
+
567
+ #: inc/admin/class-sby-admin.php:480
568
+ msgid "What the user needs to do to play a video. eg."
569
+ msgstr ""
570
+
571
+ #: inc/admin/class-sby-admin.php:484
572
+ msgid ""
573
+ "List layout will not play automatically. Choose whether to play the video "
574
+ "automatically in the player or wait until the user clicks the play button "
575
+ "after the video is loaded."
576
+ msgstr ""
577
+
578
+ #: inc/admin/class-sby-admin.php:489
579
+ msgid "Custom Code Snippets"
580
+ msgstr ""
581
+
582
+ #: inc/admin/class-sby-admin.php:500
583
+ msgid "Custom CSS"
584
+ msgstr ""
585
+
586
+ #: inc/admin/class-sby-admin.php:502
587
+ msgid "Enter your own custom CSS in the box below"
588
+ msgstr ""
589
+
590
+ #: inc/admin/class-sby-admin.php:511
591
+ msgid "Custom JavaScript"
592
+ msgstr ""
593
+
594
+ #: inc/admin/class-sby-admin.php:513
595
+ msgid "Enter your own custom JavaScript/jQuery in the box below"
596
+ msgstr ""
597
+
598
+ #: inc/admin/class-sby-admin.php:514
599
+ msgid ""
600
+ "Note: Custom JavaScript reruns every time more videos are loaded into the "
601
+ "feed"
602
+ msgstr ""
603
+
604
+ #: inc/admin/class-sby-admin.php:519
605
+ msgid "Advanced"
606
+ msgstr ""
607
+
608
+ #: inc/admin/class-sby-admin.php:528
609
+ msgid "Background"
610
+ msgstr ""
611
+
612
+ #: inc/admin/class-sby-admin.php:532
613
+ msgid "Page"
614
+ msgstr ""
615
+
616
+ #: inc/admin/class-sby-admin.php:536
617
+ msgid "None"
618
+ msgstr ""
619
+
620
+ #: inc/admin/class-sby-admin.php:546
621
+ msgid "Local storage process"
622
+ msgstr ""
623
+
624
+ #: inc/admin/class-sby-admin.php:549
625
+ msgid ""
626
+ "To preserve your feeds and videos even if the YouTube API is unavailable, a "
627
+ "record of each video is added to the wp_posts table in the WordPress "
628
+ "database. Please note that changing this setting to \"none\" will limit the "
629
+ "number of posts available in the feed to 15 or less."
630
+ msgstr ""
631
+
632
+ #: inc/admin/class-sby-admin.php:557
633
+ msgid "Are you using an AJAX theme?"
634
+ msgstr ""
635
+
636
+ #: inc/admin/class-sby-admin.php:559
637
+ msgid ""
638
+ "When navigating your site, if your theme uses Ajax to load content into your "
639
+ "pages (meaning your page doesn't refresh) then check this setting. If you're "
640
+ "not sure then it's best to leave this setting unchecked while checking with "
641
+ "your theme author, otherwise checking it may cause a problem."
642
+ msgstr ""
643
+
644
+ #: inc/admin/templates/configure.php:3
645
+ #, php-format
646
+ msgid "Log in to %s and connect an account"
647
+ msgstr "Melden Sie sich bei %s an und verbinden Sie ein Konto"
648
+
649
+ #: inc/admin/templates/configure.php:4
650
+ msgid "Button not working?"
651
+ msgstr ""
652
+
653
+ #: inc/admin/templates/configure.php:16
654
+ msgid "API Key"
655
+ msgstr ""
656
+
657
+ #: inc/admin/templates/configure.php:17
658
+ msgid "Recommended"
659
+ msgstr ""
660
+
661
+ #: inc/admin/templates/configure.php:21
662
+ msgid ""
663
+ "Entering an API key is <strong>optional</strong> but recommended. It allows "
664
+ "the plugin to fetch older videos and prevents potential disruption in your "
665
+ "feed. It only takes a few minutes: <a href=\"https://smashballoon.com/"
666
+ "youtube-api-key/\" target=\"_blank\" rel=\"noopener\">Get my API key.</a>"
667
+ msgstr ""
668
+
669
+ #: inc/admin/templates/configure.php:34 inc/admin/templates/customize.php:8
670
+ msgid "Save Changes"
671
+ msgstr ""
672
+
673
+ #: inc/admin/templates/connected-accounts.php:10
674
+ #, php-format
675
+ msgid "%s Accounts"
676
+ msgstr ""
677
+
678
+ #: inc/admin/templates/connected-accounts.php:11
679
+ #, php-format
680
+ msgid "Use the button above to connect %s account"
681
+ msgstr ""
682
+
683
+ #: inc/admin/templates/connected-accounts.php:15
684
+ #, php-format
685
+ msgid "No %s accounts connected. Click the button above to connect an account."
686
+ msgstr ""
687
+
688
+ #: inc/admin/templates/connected-accounts.php:34
689
+ msgid "Manually Connect a Primary Account"
690
+ msgstr ""
691
+
692
+ #: inc/admin/templates/connected-accounts.php:36
693
+ msgid "Enter a valid Access Token"
694
+ msgstr ""
695
+
696
+ #: inc/admin/templates/connected-accounts.php:37
697
+ msgid "Enter a valid Refresh Token"
698
+ msgstr ""
699
+
700
+ #: inc/admin/templates/connected-accounts.php:38
701
+ msgid "Connect This Account"
702
+ msgstr ""
703
+
704
+ #: inc/admin/templates/display.php:1
705
+ msgid "Display your Feed"
706
+ msgstr ""
707
+
708
+ #: inc/admin/templates/display.php:2
709
+ msgid ""
710
+ "Copy and paste the following shortcode directly into the page, post or "
711
+ "widget where you'd like the feed to show up:"
712
+ msgstr ""
713
+
714
+ #: inc/admin/templates/display.php:3 inc/admin/templates/main.php:59
715
+ #: inc/admin/templates/single-connected-account.php:39
716
+ #: inc/admin/templates/single-connected-account.php:40
717
+ #: inc/admin/templates/single-connected-account.php:41
718
+ msgid "To copy, click the field then press Ctrl + C (PC) or Cmd + C (Mac)."
719
+ msgstr ""
720
+
721
+ #: inc/admin/templates/display.php:5
722
+ msgid "Multiple Feeds"
723
+ msgstr ""
724
+
725
+ #: inc/admin/templates/display.php:6
726
+ msgid ""
727
+ "If you'd like to display multiple feeds then you can set different settings "
728
+ "directly in the shortcode like so:"
729
+ msgstr ""
730
+
731
+ #: inc/admin/templates/display.php:8
732
+ msgid ""
733
+ "You can display as many different feeds as you like, on either the same page "
734
+ "or on different pages, by just using the shortcode options below. For "
735
+ "example:"
736
+ msgstr ""
737
+
738
+ #: inc/admin/templates/display.php:13
739
+ msgid "See the table below for a full list of available shortcode options:"
740
+ msgstr ""
741
+
742
+ #: inc/admin/templates/display.php:18
743
+ msgid "Shortcode option"
744
+ msgstr ""
745
+
746
+ #: inc/admin/templates/display.php:20
747
+ msgid "Example"
748
+ msgstr ""
749
+
750
+ #: inc/admin/templates/display.php:37 inc/admin/templates/support.php:1
751
+ msgid "Need help?"
752
+ msgstr ""
753
+
754
+ #: inc/admin/templates/display.php:37
755
+ msgid "Get Support"
756
+ msgstr ""
757
+
758
+ #: inc/admin/templates/main.php:17
759
+ msgid "Settings saved."
760
+ msgstr ""
761
+
762
+ #: inc/admin/templates/main.php:50
763
+ msgid "Next Step"
764
+ msgstr ""
765
+
766
+ #: inc/admin/templates/main.php:54
767
+ msgid "Need help setting up the plugin? Check out our <a href=\""
768
+ msgstr ""
769
+
770
+ #: inc/admin/templates/main.php:58
771
+ msgid ""
772
+ "Copy and paste this shortcode directly into the page, post or widget where "
773
+ "you'd like to display the feed:"
774
+ msgstr ""
775
+
776
+ #: inc/admin/templates/main.php:60
777
+ msgid "Find out how to display <a href='?page="
778
+ msgstr ""
779
+
780
+ #: inc/admin/templates/single-connected-account.php:4
781
+ msgid ""
782
+ "The Access Token for this account is expired or invalid. Click the button "
783
+ "above to attempt to renew it."
784
+ msgstr ""
785
+
786
+ #: inc/admin/templates/single-connected-account.php:9
787
+ msgid "Remove"
788
+ msgstr ""
789
+
790
+ #: inc/admin/templates/single-connected-account.php:14
791
+ msgid "Channel ID:"
792
+ msgstr ""
793
+
794
+ #: inc/admin/templates/single-connected-account.php:18
795
+ msgid "Add to another Feed"
796
+ msgstr ""
797
+
798
+ #: inc/admin/templates/single-connected-account.php:19
799
+ msgid "Show access token and account info"
800
+ msgstr ""
801
+
802
+ #: inc/admin/templates/single-connected-account.php:24
803
+ msgid "Copy and paste this shortcode into your page or widget area"
804
+ msgstr ""
805
+
806
+ #: inc/admin/templates/single-connected-account.php:32
807
+ msgid ""
808
+ "To add multiple channels in the same feed, simply separate them using commas"
809
+ msgstr ""
810
+
811
+ #: inc/admin/templates/single-connected-account.php:35
812
+ #, php-format
813
+ msgid "Click on the %s tab to learn more about shortcodes"
814
+ msgstr ""
815
+
816
+ #: inc/admin/templates/single-connected-account.php:35
817
+ msgid "Display Your Feed"
818
+ msgstr ""
819
+
820
+ #: inc/admin/templates/single-connected-account.php:39
821
+ msgid "Access Token"
822
+ msgstr ""
823
+
824
+ #: inc/admin/templates/single-connected-account.php:40
825
+ msgid "Refresh Token"
826
+ msgstr ""
827
+
828
+ #: inc/admin/templates/single-connected-account.php:41
829
+ msgid "Channel ID"
830
+ msgstr ""
831
+
832
+ #: inc/admin/templates/support.php:3
833
+ msgid "Check out our "
834
+ msgstr ""
835
+
836
+ #: inc/admin/templates/support.php:3
837
+ msgid "setup directions"
838
+ msgstr ""
839
+
840
+ #: inc/admin/templates/support.php:3
841
+ msgid "for a step-by-step guide on how to setup and use the plugin"
842
+ msgstr ""
843
+
844
+ #: inc/admin/templates/support.php:5
845
+ msgid "Have a problem? Submit a "
846
+ msgstr ""
847
+
848
+ #: inc/admin/templates/support.php:5
849
+ msgid "support ticket"
850
+ msgstr ""
851
+
852
+ #: inc/admin/templates/support.php:5
853
+ msgid "on our website"
854
+ msgstr ""
855
+
856
+ #: inc/admin/templates/support.php:5
857
+ msgid "Please include your <b>System Info</b> below with all support requests."
858
+ msgstr ""
859
+
860
+ #: inc/admin/templates/support.php:8
861
+ msgid "System Info"
862
+ msgstr ""
863
+
864
+ #: inc/admin/templates/support.php:8
865
+ msgid "Click the text below to select all"
866
+ msgstr ""
867
+
868
+ #: inc/class-sby-api-connect.php:104
869
+ #, php-format
870
+ msgid "Error: %s."
871
+ msgstr ""
872
+
873
+ #: inc/class-sby-api-connect.php:106
874
+ msgid ""
875
+ "There's an issue with the YouTube API Key that you are using. Please check "
876
+ "to make sure that this is a valid API Key."
877
+ msgstr ""
878
+
879
+ #: inc/class-sby-api-connect.php:120
880
+ #, php-format
881
+ msgid "Error connecting to %s."
882
+ msgstr ""
883
+
884
+ #: inc/class-sby-feed.php:971
885
+ msgid "Error: No videos found."
886
+ msgstr ""
887
+
888
+ #: inc/class-sby-feed.php:972
889
+ msgid ""
890
+ "Make sure this is a valid channel ID and that the channel has videos "
891
+ "available on youtube.com."
892
+ msgstr ""
893
+
894
+ #: inc/class-sby-feed.php:1102
895
+ msgid "No posts found."
896
+ msgstr ""
897
+
898
+ #: inc/class-sby-posts-manager.php:235
899
+ msgid "There was an error creating the folder for storing resized images."
900
+ msgstr ""
901
+
902
+ #: inc/class-sby-posts-manager.php:323
903
+ msgid "Notice: API requests are being delayed for 5 minutes."
904
+ msgstr ""
905
+
906
+ #: inc/class-sby-posts-manager.php:323
907
+ msgid "Feed will not update."
908
+ msgstr ""
909
+
910
+ #: inc/class-sby-posts-manager.php:332
911
+ msgid ""
912
+ "There may be an issue with the YouTube access token that you are using. Your "
913
+ "server might also be unable to connect to YouTube at this time."
914
+ msgstr ""
915
+
916
+ #: inc/sby-functions.php:29 inc/sby-functions.php:137
917
+ msgid "This error message is only visible to WordPress admins"
918
+ msgstr ""
919
+
920
+ #: inc/sby-functions.php:30
921
+ msgid "Error: No connected account or API key."
922
+ msgstr ""
923
+
924
+ #: inc/sby-functions.php:31
925
+ msgid ""
926
+ "Please go to the YouTube Feed settings page to enter an API key or connect "
927
+ "an account."
928
+ msgstr ""
929
+
930
+ #: inc/widget.php:13
931
+ msgid "YouTube Feed"
932
+ msgstr ""
933
+
934
+ #: inc/widget.php:14
935
+ msgid "Display your YouTube feed"
936
+ msgstr ""
937
+
938
+ #: inc/widget.php:40
939
+ msgid "Title:"
940
+ msgstr ""
941
+
942
+ #: templates/item.php:23 templates/player.php:10
943
+ msgid "Image for post"
944
+ msgstr ""
945
+
946
+ #: templates/item.php:35 templates/player.php:17
947
+ #, php-format
948
+ msgid "YouTube Video %s"
949
+ msgstr ""
950
+
951
+ #: youtube-feed.php:97
952
+ msgid "Feeds for YouTube"
953
+ msgstr ""
954
+
955
+ #: youtube-feed.php:100
956
+ msgid "a"
957
+ msgstr ""
958
+
959
+ #: youtube-feed.php:103
960
+ msgid "YouTube"
961
+ msgstr ""
962
+
963
+ #: youtube-feed.php:154
964
+ msgid "Videos"
965
+ msgstr ""
966
+
967
+ #: youtube-feed.php:155
968
+ msgid " "
969
+ msgstr ""
970
+
971
+ #: youtube-feed.php:156 youtube-feed.php:157
972
+ msgid "Add New Video"
973
+ msgstr ""
974
+
975
+ #: youtube-feed.php:158
976
+ msgid "Edit Video"
977
+ msgstr ""
978
+
979
+ #: youtube-feed.php:159
980
+ msgid "View Video"
981
+ msgstr ""
982
+
983
+ #: youtube-feed.php:160
984
+ msgid "All Videos"
985
+ msgstr ""
986
+
987
+ #: youtube-feed.php:487
988
+ msgid "Settings"
989
+ msgstr ""
languages/feeds-for-youtube-fr_FR.mo ADDED
Binary file
languages/feeds-for-youtube-fr_FR.po ADDED
@@ -0,0 +1,989 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "POT-Creation-Date: 2020-02-04 15:53-0600\n"
5
+ "PO-Revision-Date: 2020-02-04 15:53-0600\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: \n"
8
+ "Language: fr_FR\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 2.2.4\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
15
+ "X-Poedit-KeywordsList: __;_e;esc_html__;esc_html_e;esc_attr_e;esc_attr__\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ #: inc/admin/admin-functions.php:17 inc/admin/templates/configure.php:1
19
+ msgid "Configure"
20
+ msgstr "Configurer"
21
+
22
+ #: inc/admin/admin-functions.php:20
23
+ msgid "Customize your feed"
24
+ msgstr ""
25
+
26
+ #: inc/admin/admin-functions.php:23
27
+ msgid "Customize"
28
+ msgstr "Personnaliser"
29
+
30
+ #: inc/admin/admin-functions.php:26 inc/admin/templates/main.php:57
31
+ msgid "Display your feed"
32
+ msgstr ""
33
+
34
+ #: inc/admin/admin-functions.php:29
35
+ msgid "Display"
36
+ msgstr "Afficher"
37
+
38
+ #: inc/admin/admin-functions.php:34
39
+ msgid "Support"
40
+ msgstr ""
41
+
42
+ #: inc/admin/admin-functions.php:61
43
+ msgid "Channel"
44
+ msgstr ""
45
+
46
+ #: inc/admin/admin-functions.php:64
47
+ msgid "Eg: Channel ID or User Name"
48
+ msgstr ""
49
+
50
+ #: inc/admin/admin-functions.php:66
51
+ msgid "Channel ID or User Name"
52
+ msgstr ""
53
+
54
+ #: inc/admin/admin-functions.php:67
55
+ msgid ""
56
+ "You can find the ID or User Name of your YouTube Channel from the URL. In "
57
+ "each URL format, the text you need to use is highlighted below:"
58
+ msgstr ""
59
+
60
+ #: inc/admin/admin-functions.php:68
61
+ msgid "URL Format 1:"
62
+ msgstr ""
63
+
64
+ #: inc/admin/admin-functions.php:70
65
+ msgid "URL Format 2:"
66
+ msgstr ""
67
+
68
+ #: inc/admin/admin-functions.php:83
69
+ msgid "List"
70
+ msgstr ""
71
+
72
+ #: inc/admin/admin-functions.php:85
73
+ msgid "A single columns of videos that play when clicked."
74
+ msgstr ""
75
+
76
+ #: inc/admin/admin-functions.php:89
77
+ msgid "Grid"
78
+ msgstr ""
79
+
80
+ #: inc/admin/admin-functions.php:91
81
+ msgid ""
82
+ "Video thumbnails are displayed in columns and play in a lightbox when "
83
+ "clicked."
84
+ msgstr ""
85
+
86
+ #: inc/admin/admin-functions.php:96 inc/admin/admin-functions.php:122
87
+ msgid "Columns"
88
+ msgstr ""
89
+
90
+ #: inc/admin/admin-functions.php:105 inc/admin/admin-functions.php:131
91
+ msgid "Mobile Columns"
92
+ msgstr ""
93
+
94
+ #: inc/admin/admin-functions.php:115
95
+ msgid "Gallery"
96
+ msgstr ""
97
+
98
+ #: inc/admin/admin-functions.php:117
99
+ msgid ""
100
+ "One large video that plays when clicked with thumbnails underneath to play "
101
+ "more."
102
+ msgstr ""
103
+
104
+ #: inc/admin/admin-functions.php:146
105
+ msgid "Configure Options"
106
+ msgstr ""
107
+
108
+ #: inc/admin/admin-functions.php:150
109
+ msgid "Customize Options"
110
+ msgstr ""
111
+
112
+ #: inc/admin/admin-functions.php:154
113
+ msgid "Layout Options"
114
+ msgstr ""
115
+
116
+ #: inc/admin/admin-functions.php:158
117
+ msgid "Header Options"
118
+ msgstr ""
119
+
120
+ #: inc/admin/admin-functions.php:162
121
+ msgid "\"Load More\" Button Options"
122
+ msgstr ""
123
+
124
+ #: inc/admin/admin-functions.php:166
125
+ msgid "\"Subscribe\" Button Options"
126
+ msgstr ""
127
+
128
+ #: inc/admin/admin-functions.php:297
129
+ msgid ""
130
+ "Could not connect your account. Please check to make sure this is a valid "
131
+ "access token for the Smash Balloon YouTube App."
132
+ msgstr ""
133
+
134
+ #: inc/admin/admin-functions.php:572
135
+ msgid ""
136
+ "PS. We currently have a <a href=\"https://smashballoon.com/video-feed/?"
137
+ "utm_source=plugin-free&utm_campaign=sby&discount="
138
+ msgstr ""
139
+
140
+ #: inc/admin/admin-functions.php:590
141
+ #, php-format
142
+ msgid ""
143
+ "It's great to see that you've been using the %s plugin for a while now. "
144
+ "Hopefully you're happy with it!&nbsp; If so, would you consider leaving a "
145
+ "positive review? It really helps to support the plugin and helps others to "
146
+ "discover it too!"
147
+ msgstr ""
148
+
149
+ #: inc/admin/admin-functions.php:594
150
+ msgid "Sure, I'd love to!"
151
+ msgstr ""
152
+
153
+ #: inc/admin/admin-functions.php:596
154
+ msgid "No thanks"
155
+ msgstr ""
156
+
157
+ #: inc/admin/admin-functions.php:598
158
+ msgid "I've already given a review"
159
+ msgstr ""
160
+
161
+ #: inc/admin/admin-functions.php:600
162
+ msgid "Ask Me Later"
163
+ msgstr ""
164
+
165
+ #: inc/admin/admin-functions.php:617
166
+ #, php-format
167
+ msgid ""
168
+ "<b style=\"font-weight: 700;\">Exclusive offer!</b> We don't run promotions "
169
+ "very often, but for a limited time we're offering <b style=\"font-weight: "
170
+ "700;\">20% off</b> our Pro version to all users of our free %s plugin."
171
+ msgstr ""
172
+
173
+ #: inc/admin/admin-functions.php:619 inc/admin/admin-functions.php:637
174
+ msgid "Get this offer"
175
+ msgstr ""
176
+
177
+ #: inc/admin/admin-functions.php:620 inc/admin/admin-functions.php:638
178
+ msgid "I'm not interested"
179
+ msgstr ""
180
+
181
+ #: inc/admin/admin-functions.php:635
182
+ #, php-format
183
+ msgid ""
184
+ "<b style=\"font-weight: 700;\">Black Friday/Cyber Monday Deal!</b> Thank you "
185
+ "for using our free %s plugin. For a limited time, we're offering <b style="
186
+ "\"font-weight: 700;\">20% off</b> the Pro version for all of our users."
187
+ msgstr ""
188
+
189
+ #: inc/admin/class-sbspf-admin.php:228
190
+ msgid "Yes"
191
+ msgstr ""
192
+
193
+ #: inc/admin/class-sbspf-admin.php:409
194
+ msgid "Connect an account above"
195
+ msgstr ""
196
+
197
+ #: inc/admin/class-sbspf-admin.php:448 inc/admin/class-sby-admin.php:578
198
+ msgid "When the page loads"
199
+ msgstr ""
200
+
201
+ #: inc/admin/class-sbspf-admin.php:450 inc/admin/class-sby-admin.php:580
202
+ #, php-format
203
+ msgid ""
204
+ "Your %s data is temporarily cached by the plugin in your WordPress database. "
205
+ "There are two ways that you can set the plugin to check for new data:"
206
+ "<br><br>\n"
207
+ " <b>1. When the page loads</b><br>Selecting this option means "
208
+ "that when the cache expires then the plugin will check %s for new posts the "
209
+ "next time that the feed is loaded. You can choose how long this data should "
210
+ "be cached for with a minimum time of 15 minutes. If you set the time to 60 "
211
+ "minutes then the plugin will clear the cached data after that length of "
212
+ "time, and the next time the page is viewed it will check for new data. "
213
+ "<b>Tip:</b> If you're experiencing an issue with the plugin not updating "
214
+ "automatically then try enabling the setting labeled <b>'Force cache to clear "
215
+ "on interval'</b> which is located on the 'Customize' tab.<br><br>\n"
216
+ " <b>2. In the background</b><br>Selecting this option means "
217
+ "that the plugin will check for new data in the background so that the feed "
218
+ "is updated behind the scenes. You can select at what time and how often the "
219
+ "plugin should check for new data using the settings below. <b>Please note</"
220
+ "b> that the plugin will initially check for data from Instagram when the "
221
+ "page first loads, but then after that will check in the background on the "
222
+ "schedule selected - unless the cache is cleared."
223
+ msgstr ""
224
+
225
+ #: inc/admin/class-sbspf-admin.php:456 inc/admin/class-sby-admin.php:586
226
+ msgid "Every"
227
+ msgstr ""
228
+
229
+ #: inc/admin/class-sbspf-admin.php:459 inc/admin/class-sby-admin.php:589
230
+ msgid "Minutes"
231
+ msgstr ""
232
+
233
+ #: inc/admin/class-sbspf-admin.php:460 inc/admin/class-sby-admin.php:590
234
+ msgid "Hours"
235
+ msgstr ""
236
+
237
+ #: inc/admin/class-sbspf-admin.php:461 inc/admin/class-sby-admin.php:591
238
+ msgid "Days"
239
+ msgstr ""
240
+
241
+ #: inc/admin/class-sbspf-admin.php:463 inc/admin/class-sbspf-admin.php:736
242
+ #: inc/admin/class-sby-admin.php:593
243
+ msgid "What does this mean?"
244
+ msgstr ""
245
+
246
+ #: inc/admin/class-sbspf-admin.php:464 inc/admin/class-sby-admin.php:594
247
+ #, php-format
248
+ msgid ""
249
+ "Your %s posts are temporarily cached by the plugin in your WordPress "
250
+ "database. You can choose how long the posts should be cached for. If you set "
251
+ "the time to 1 hour then the plugin will clear the cache after that length of "
252
+ "time and check %s for posts again."
253
+ msgstr ""
254
+
255
+ #: inc/admin/class-sbspf-admin.php:469 inc/admin/class-sby-admin.php:599
256
+ msgid "In the background"
257
+ msgstr ""
258
+
259
+ #: inc/admin/class-sbspf-admin.php:474 inc/admin/class-sby-admin.php:604
260
+ #: youtube-feed.php:187
261
+ msgid "Every 30 minutes"
262
+ msgstr ""
263
+
264
+ #: inc/admin/class-sbspf-admin.php:475 inc/admin/class-sby-admin.php:605
265
+ msgid "Every hour"
266
+ msgstr ""
267
+
268
+ #: inc/admin/class-sbspf-admin.php:476 inc/admin/class-sby-admin.php:606
269
+ msgid "Every 12 hours"
270
+ msgstr ""
271
+
272
+ #: inc/admin/class-sbspf-admin.php:477 inc/admin/class-sby-admin.php:607
273
+ msgid "Every 24 hours"
274
+ msgstr ""
275
+
276
+ #: inc/admin/class-sbspf-admin.php:481 inc/admin/class-sby-admin.php:611
277
+ msgid "at"
278
+ msgstr ""
279
+
280
+ #: inc/admin/class-sbspf-admin.php:498 inc/admin/class-sby-admin.php:628
281
+ msgid "AM"
282
+ msgstr ""
283
+
284
+ #: inc/admin/class-sbspf-admin.php:499 inc/admin/class-sby-admin.php:629
285
+ msgid "PM"
286
+ msgstr ""
287
+
288
+ #: inc/admin/class-sbspf-admin.php:511 inc/admin/class-sby-admin.php:641
289
+ msgid "every 30 minutes"
290
+ msgstr ""
291
+
292
+ #: inc/admin/class-sbspf-admin.php:512 inc/admin/class-sby-admin.php:642
293
+ msgid "every 12 hours"
294
+ msgstr ""
295
+
296
+ #: inc/admin/class-sbspf-admin.php:514 inc/admin/class-sby-admin.php:644
297
+ msgid "Next check"
298
+ msgstr ""
299
+
300
+ #: inc/admin/class-sbspf-admin.php:514 inc/admin/class-sby-admin.php:644
301
+ msgid ""
302
+ "Note: Saving the settings on this page will clear the cache and reset this "
303
+ "schedule"
304
+ msgstr ""
305
+
306
+ #: inc/admin/class-sbspf-admin.php:516 inc/admin/class-sby-admin.php:646
307
+ msgid "Nothing currently scheduled"
308
+ msgstr ""
309
+
310
+ #: inc/admin/class-sbspf-admin.php:549
311
+ msgid "Click for shortcode option"
312
+ msgstr ""
313
+
314
+ #: inc/admin/class-sby-admin.php:28
315
+ msgid "Feed Type"
316
+ msgstr ""
317
+
318
+ #: inc/admin/class-sby-admin.php:32
319
+ msgid "Display videos from a YouTube channel (channel)"
320
+ msgstr ""
321
+
322
+ #: inc/admin/class-sby-admin.php:44
323
+ msgid "Check for new posts"
324
+ msgstr ""
325
+
326
+ #: inc/admin/class-sby-admin.php:52
327
+ msgid "Preserve settings when plugin is removed"
328
+ msgstr ""
329
+
330
+ #: inc/admin/class-sby-admin.php:54
331
+ msgid ""
332
+ "When removing the plugin your settings are automatically erased. Checking "
333
+ "this box will prevent any settings from being deleted. This means that you "
334
+ "can uninstall and reinstall the plugin without losing your settings."
335
+ msgstr ""
336
+
337
+ #: inc/admin/class-sby-admin.php:62
338
+ msgid "General"
339
+ msgstr ""
340
+
341
+ #: inc/admin/class-sby-admin.php:88
342
+ msgid "Width of Feed"
343
+ msgstr ""
344
+
345
+ #: inc/admin/class-sby-admin.php:92
346
+ msgid "The width of your feed. Any number with a unit like \"px\" or \"%\"."
347
+ msgstr ""
348
+
349
+ #: inc/admin/class-sby-admin.php:100
350
+ msgid "Set to be 100% width on mobile?"
351
+ msgstr ""
352
+
353
+ #: inc/admin/class-sby-admin.php:103
354
+ #, php-format
355
+ msgid ""
356
+ "If you set a width on the feed then this will be used on mobile as well as "
357
+ "desktop. Check this setting to set the feed width to be 100% on mobile so "
358
+ "that it is responsive."
359
+ msgstr ""
360
+
361
+ #: inc/admin/class-sby-admin.php:125
362
+ msgid "Height of Feed"
363
+ msgstr ""
364
+
365
+ #: inc/admin/class-sby-admin.php:129
366
+ msgid "The height of your feed. Any number with a unit like \"px\" or \"em\"."
367
+ msgstr ""
368
+
369
+ #: inc/admin/class-sby-admin.php:142
370
+ msgid "Background Color"
371
+ msgstr ""
372
+
373
+ #: inc/admin/class-sby-admin.php:146
374
+ msgid "Background color for the feed. Any hex color code."
375
+ msgstr ""
376
+
377
+ #: inc/admin/class-sby-admin.php:153
378
+ msgid "Layout"
379
+ msgstr ""
380
+
381
+ #: inc/admin/class-sby-admin.php:164
382
+ msgid "Layout Type"
383
+ msgstr ""
384
+
385
+ #: inc/admin/class-sby-admin.php:169
386
+ msgid "How your posts are display visually."
387
+ msgstr ""
388
+
389
+ #: inc/admin/class-sby-admin.php:194
390
+ msgid "Number of Videos"
391
+ msgstr ""
392
+
393
+ #: inc/admin/class-sby-admin.php:195
394
+ msgid "Number of videos to show initially."
395
+ msgstr ""
396
+
397
+ #: inc/admin/class-sby-admin.php:199
398
+ msgid "The number of videos in the feed"
399
+ msgstr ""
400
+
401
+ #: inc/admin/class-sby-admin.php:207
402
+ msgid "Play Icon"
403
+ msgstr ""
404
+
405
+ #: inc/admin/class-sby-admin.php:211
406
+ msgid "Title"
407
+ msgstr ""
408
+
409
+ #: inc/admin/class-sby-admin.php:216
410
+ msgid "User Name"
411
+ msgstr ""
412
+
413
+ #: inc/admin/class-sby-admin.php:221
414
+ msgid "Views"
415
+ msgstr ""
416
+
417
+ #: inc/admin/class-sby-admin.php:226
418
+ msgid "Date"
419
+ msgstr ""
420
+
421
+ #: inc/admin/class-sby-admin.php:231
422
+ msgid "Live Stream Countdown (when applies)"
423
+ msgstr ""
424
+
425
+ #: inc/admin/class-sby-admin.php:236
426
+ msgid "Stats (like and comment counts)"
427
+ msgstr ""
428
+
429
+ #: inc/admin/class-sby-admin.php:241 inc/admin/templates/display.php:19
430
+ msgid "Description"
431
+ msgstr ""
432
+
433
+ #: inc/admin/class-sby-admin.php:251
434
+ msgid "Show/Hide"
435
+ msgstr ""
436
+
437
+ #: inc/admin/class-sby-admin.php:255
438
+ msgid ""
439
+ "Comma separated list of what video information (title, description, stats) "
440
+ "will display in the feed. eg."
441
+ msgstr ""
442
+
443
+ #: inc/admin/class-sby-admin.php:269
444
+ msgid "Spacing between videos"
445
+ msgstr ""
446
+
447
+ #: inc/admin/class-sby-admin.php:273
448
+ msgid ""
449
+ "The spacing/padding around the videos in the feed. Any number with a unit "
450
+ "like \"px\" or \"em\"."
451
+ msgstr ""
452
+
453
+ #: inc/admin/class-sby-admin.php:282
454
+ msgid "Header"
455
+ msgstr ""
456
+
457
+ #: inc/admin/class-sby-admin.php:292
458
+ msgid "Show Header"
459
+ msgstr ""
460
+
461
+ #: inc/admin/class-sby-admin.php:297
462
+ msgid "Include a header for this feed."
463
+ msgstr ""
464
+
465
+ #: inc/admin/class-sby-admin.php:307
466
+ msgid "Show Channel Description"
467
+ msgstr ""
468
+
469
+ #: inc/admin/class-sby-admin.php:312
470
+ msgid "Include the channel description in the header."
471
+ msgstr ""
472
+
473
+ #: inc/admin/class-sby-admin.php:319
474
+ msgid "\"Load More\" Button"
475
+ msgstr ""
476
+
477
+ #: inc/admin/class-sby-admin.php:329
478
+ msgid "Show \"Load More\" Button"
479
+ msgstr ""
480
+
481
+ #: inc/admin/class-sby-admin.php:334
482
+ msgid ""
483
+ "Include a \"Load More\" button at the bottom of the feed to load more videos."
484
+ msgstr ""
485
+
486
+ #: inc/admin/class-sby-admin.php:345
487
+ msgid "Button Background Color"
488
+ msgstr ""
489
+
490
+ #: inc/admin/class-sby-admin.php:349
491
+ msgid "Background color for the \"Load More\" button. Any hex color code."
492
+ msgstr ""
493
+
494
+ #: inc/admin/class-sby-admin.php:360
495
+ msgid "Button Text Color"
496
+ msgstr ""
497
+
498
+ #: inc/admin/class-sby-admin.php:364
499
+ msgid "Text color for the \"Load More\" button. Any hex color code."
500
+ msgstr ""
501
+
502
+ #: inc/admin/class-sby-admin.php:372 youtube-feed.php:457
503
+ msgid "Load More..."
504
+ msgstr "Charger plus…"
505
+
506
+ #: inc/admin/class-sby-admin.php:375
507
+ msgid "Button Text"
508
+ msgstr ""
509
+
510
+ #: inc/admin/class-sby-admin.php:379
511
+ msgid "The text that appers on the \"Load More\" button."
512
+ msgstr ""
513
+
514
+ #: inc/admin/class-sby-admin.php:387
515
+ msgid "\"Subscribe\" Button"
516
+ msgstr ""
517
+
518
+ #: inc/admin/class-sby-admin.php:398
519
+ msgid "Show \"Subscribe\" Button"
520
+ msgstr ""
521
+
522
+ #: inc/admin/class-sby-admin.php:403
523
+ msgid ""
524
+ "Include a \"Subscribe\" button at the bottom of the feed to load more videos."
525
+ msgstr ""
526
+
527
+ #: inc/admin/class-sby-admin.php:414
528
+ msgid "Subscribe Background Color"
529
+ msgstr ""
530
+
531
+ #: inc/admin/class-sby-admin.php:418
532
+ msgid "Background color for the \"Subscribe\" button. Any hex color code."
533
+ msgstr ""
534
+
535
+ #: inc/admin/class-sby-admin.php:429
536
+ msgid "Subscribe Text Color"
537
+ msgstr ""
538
+
539
+ #: inc/admin/class-sby-admin.php:433
540
+ msgid "Text color for the \"Subscribe\" button. Any hex color code."
541
+ msgstr ""
542
+
543
+ #: inc/admin/class-sby-admin.php:441 youtube-feed.php:458
544
+ msgid "Subscribe"
545
+ msgstr "S'abonner"
546
+
547
+ #: inc/admin/class-sby-admin.php:444
548
+ msgid "Subscribe Text"
549
+ msgstr ""
550
+
551
+ #: inc/admin/class-sby-admin.php:448
552
+ msgid "The text that appers on the \"Subscribe\" button."
553
+ msgstr ""
554
+
555
+ #: inc/admin/class-sby-admin.php:455
556
+ msgid "Video Experience"
557
+ msgstr ""
558
+
559
+ #: inc/admin/class-sby-admin.php:463
560
+ msgid "Play when clicked"
561
+ msgstr ""
562
+
563
+ #: inc/admin/class-sby-admin.php:476
564
+ msgid "When does video play?"
565
+ msgstr ""
566
+
567
+ #: inc/admin/class-sby-admin.php:480
568
+ msgid "What the user needs to do to play a video. eg."
569
+ msgstr ""
570
+
571
+ #: inc/admin/class-sby-admin.php:484
572
+ msgid ""
573
+ "List layout will not play automatically. Choose whether to play the video "
574
+ "automatically in the player or wait until the user clicks the play button "
575
+ "after the video is loaded."
576
+ msgstr ""
577
+
578
+ #: inc/admin/class-sby-admin.php:489
579
+ msgid "Custom Code Snippets"
580
+ msgstr ""
581
+
582
+ #: inc/admin/class-sby-admin.php:500
583
+ msgid "Custom CSS"
584
+ msgstr ""
585
+
586
+ #: inc/admin/class-sby-admin.php:502
587
+ msgid "Enter your own custom CSS in the box below"
588
+ msgstr ""
589
+
590
+ #: inc/admin/class-sby-admin.php:511
591
+ msgid "Custom JavaScript"
592
+ msgstr ""
593
+
594
+ #: inc/admin/class-sby-admin.php:513
595
+ msgid "Enter your own custom JavaScript/jQuery in the box below"
596
+ msgstr ""
597
+
598
+ #: inc/admin/class-sby-admin.php:514
599
+ msgid ""
600
+ "Note: Custom JavaScript reruns every time more videos are loaded into the "
601
+ "feed"
602
+ msgstr ""
603
+
604
+ #: inc/admin/class-sby-admin.php:519
605
+ msgid "Advanced"
606
+ msgstr ""
607
+
608
+ #: inc/admin/class-sby-admin.php:528
609
+ msgid "Background"
610
+ msgstr ""
611
+
612
+ #: inc/admin/class-sby-admin.php:532
613
+ msgid "Page"
614
+ msgstr ""
615
+
616
+ #: inc/admin/class-sby-admin.php:536
617
+ msgid "None"
618
+ msgstr ""
619
+
620
+ #: inc/admin/class-sby-admin.php:546
621
+ msgid "Local storage process"
622
+ msgstr ""
623
+
624
+ #: inc/admin/class-sby-admin.php:549
625
+ msgid ""
626
+ "To preserve your feeds and videos even if the YouTube API is unavailable, a "
627
+ "record of each video is added to the wp_posts table in the WordPress "
628
+ "database. Please note that changing this setting to \"none\" will limit the "
629
+ "number of posts available in the feed to 15 or less."
630
+ msgstr ""
631
+
632
+ #: inc/admin/class-sby-admin.php:557
633
+ msgid "Are you using an AJAX theme?"
634
+ msgstr ""
635
+
636
+ #: inc/admin/class-sby-admin.php:559
637
+ msgid ""
638
+ "When navigating your site, if your theme uses Ajax to load content into your "
639
+ "pages (meaning your page doesn't refresh) then check this setting. If you're "
640
+ "not sure then it's best to leave this setting unchecked while checking with "
641
+ "your theme author, otherwise checking it may cause a problem."
642
+ msgstr ""
643
+
644
+ #: inc/admin/templates/configure.php:3
645
+ #, php-format
646
+ msgid "Log in to %s and connect an account"
647
+ msgstr ""
648
+
649
+ #: inc/admin/templates/configure.php:4
650
+ msgid "Button not working?"
651
+ msgstr ""
652
+
653
+ #: inc/admin/templates/configure.php:16
654
+ msgid "API Key"
655
+ msgstr ""
656
+
657
+ #: inc/admin/templates/configure.php:17
658
+ msgid "Recommended"
659
+ msgstr ""
660
+
661
+ #: inc/admin/templates/configure.php:21
662
+ msgid ""
663
+ "Entering an API key is <strong>optional</strong> but recommended. It allows "
664
+ "the plugin to fetch older videos and prevents potential disruption in your "
665
+ "feed. It only takes a few minutes: <a href=\"https://smashballoon.com/"
666
+ "youtube-api-key/\" target=\"_blank\" rel=\"noopener\">Get my API key.</a>"
667
+ msgstr ""
668
+
669
+ #: inc/admin/templates/configure.php:34 inc/admin/templates/customize.php:8
670
+ msgid "Save Changes"
671
+ msgstr ""
672
+
673
+ #: inc/admin/templates/connected-accounts.php:10
674
+ #, php-format
675
+ msgid "%s Accounts"
676
+ msgstr ""
677
+
678
+ #: inc/admin/templates/connected-accounts.php:11
679
+ #, php-format
680
+ msgid "Use the button above to connect %s account"
681
+ msgstr ""
682
+
683
+ #: inc/admin/templates/connected-accounts.php:15
684
+ #, php-format
685
+ msgid "No %s accounts connected. Click the button above to connect an account."
686
+ msgstr ""
687
+
688
+ #: inc/admin/templates/connected-accounts.php:34
689
+ msgid "Manually Connect a Primary Account"
690
+ msgstr ""
691
+
692
+ #: inc/admin/templates/connected-accounts.php:36
693
+ msgid "Enter a valid Access Token"
694
+ msgstr ""
695
+
696
+ #: inc/admin/templates/connected-accounts.php:37
697
+ msgid "Enter a valid Refresh Token"
698
+ msgstr ""
699
+
700
+ #: inc/admin/templates/connected-accounts.php:38
701
+ msgid "Connect This Account"
702
+ msgstr ""
703
+
704
+ #: inc/admin/templates/display.php:1
705
+ msgid "Display your Feed"
706
+ msgstr ""
707
+
708
+ #: inc/admin/templates/display.php:2
709
+ msgid ""
710
+ "Copy and paste the following shortcode directly into the page, post or "
711
+ "widget where you'd like the feed to show up:"
712
+ msgstr ""
713
+
714
+ #: inc/admin/templates/display.php:3 inc/admin/templates/main.php:59
715
+ #: inc/admin/templates/single-connected-account.php:39
716
+ #: inc/admin/templates/single-connected-account.php:40
717
+ #: inc/admin/templates/single-connected-account.php:41
718
+ msgid "To copy, click the field then press Ctrl + C (PC) or Cmd + C (Mac)."
719
+ msgstr ""
720
+
721
+ #: inc/admin/templates/display.php:5
722
+ msgid "Multiple Feeds"
723
+ msgstr ""
724
+
725
+ #: inc/admin/templates/display.php:6
726
+ msgid ""
727
+ "If you'd like to display multiple feeds then you can set different settings "
728
+ "directly in the shortcode like so:"
729
+ msgstr ""
730
+
731
+ #: inc/admin/templates/display.php:8
732
+ msgid ""
733
+ "You can display as many different feeds as you like, on either the same page "
734
+ "or on different pages, by just using the shortcode options below. For "
735
+ "example:"
736
+ msgstr ""
737
+
738
+ #: inc/admin/templates/display.php:13
739
+ msgid "See the table below for a full list of available shortcode options:"
740
+ msgstr ""
741
+
742
+ #: inc/admin/templates/display.php:18
743
+ msgid "Shortcode option"
744
+ msgstr ""
745
+
746
+ #: inc/admin/templates/display.php:20
747
+ msgid "Example"
748
+ msgstr ""
749
+
750
+ #: inc/admin/templates/display.php:37 inc/admin/templates/support.php:1
751
+ msgid "Need help?"
752
+ msgstr ""
753
+
754
+ #: inc/admin/templates/display.php:37
755
+ msgid "Get Support"
756
+ msgstr ""
757
+
758
+ #: inc/admin/templates/main.php:17
759
+ msgid "Settings saved."
760
+ msgstr ""
761
+
762
+ #: inc/admin/templates/main.php:50
763
+ msgid "Next Step"
764
+ msgstr ""
765
+
766
+ #: inc/admin/templates/main.php:54
767
+ msgid "Need help setting up the plugin? Check out our <a href=\""
768
+ msgstr ""
769
+
770
+ #: inc/admin/templates/main.php:58
771
+ msgid ""
772
+ "Copy and paste this shortcode directly into the page, post or widget where "
773
+ "you'd like to display the feed:"
774
+ msgstr ""
775
+
776
+ #: inc/admin/templates/main.php:60
777
+ msgid "Find out how to display <a href='?page="
778
+ msgstr ""
779
+
780
+ #: inc/admin/templates/single-connected-account.php:4
781
+ msgid ""
782
+ "The Access Token for this account is expired or invalid. Click the button "
783
+ "above to attempt to renew it."
784
+ msgstr ""
785
+
786
+ #: inc/admin/templates/single-connected-account.php:9
787
+ msgid "Remove"
788
+ msgstr ""
789
+
790
+ #: inc/admin/templates/single-connected-account.php:14
791
+ msgid "Channel ID:"
792
+ msgstr ""
793
+
794
+ #: inc/admin/templates/single-connected-account.php:18
795
+ msgid "Add to another Feed"
796
+ msgstr ""
797
+
798
+ #: inc/admin/templates/single-connected-account.php:19
799
+ msgid "Show access token and account info"
800
+ msgstr ""
801
+
802
+ #: inc/admin/templates/single-connected-account.php:24
803
+ msgid "Copy and paste this shortcode into your page or widget area"
804
+ msgstr ""
805
+
806
+ #: inc/admin/templates/single-connected-account.php:32
807
+ msgid ""
808
+ "To add multiple channels in the same feed, simply separate them using commas"
809
+ msgstr ""
810
+
811
+ #: inc/admin/templates/single-connected-account.php:35
812
+ #, php-format
813
+ msgid "Click on the %s tab to learn more about shortcodes"
814
+ msgstr ""
815
+
816
+ #: inc/admin/templates/single-connected-account.php:35
817
+ msgid "Display Your Feed"
818
+ msgstr ""
819
+
820
+ #: inc/admin/templates/single-connected-account.php:39
821
+ msgid "Access Token"
822
+ msgstr ""
823
+
824
+ #: inc/admin/templates/single-connected-account.php:40
825
+ msgid "Refresh Token"
826
+ msgstr ""
827
+
828
+ #: inc/admin/templates/single-connected-account.php:41
829
+ msgid "Channel ID"
830
+ msgstr ""
831
+
832
+ #: inc/admin/templates/support.php:3
833
+ msgid "Check out our "
834
+ msgstr ""
835
+
836
+ #: inc/admin/templates/support.php:3
837
+ msgid "setup directions"
838
+ msgstr ""
839
+
840
+ #: inc/admin/templates/support.php:3
841
+ msgid "for a step-by-step guide on how to setup and use the plugin"
842
+ msgstr ""
843
+
844
+ #: inc/admin/templates/support.php:5
845
+ msgid "Have a problem? Submit a "
846
+ msgstr ""
847
+
848
+ #: inc/admin/templates/support.php:5
849
+ msgid "support ticket"
850
+ msgstr ""
851
+
852
+ #: inc/admin/templates/support.php:5
853
+ msgid "on our website"
854
+ msgstr ""
855
+
856
+ #: inc/admin/templates/support.php:5
857
+ msgid "Please include your <b>System Info</b> below with all support requests."
858
+ msgstr ""
859
+
860
+ #: inc/admin/templates/support.php:8
861
+ msgid "System Info"
862
+ msgstr ""
863
+
864
+ #: inc/admin/templates/support.php:8
865
+ msgid "Click the text below to select all"
866
+ msgstr ""
867
+
868
+ #: inc/class-sby-api-connect.php:104
869
+ #, php-format
870
+ msgid "Error: %s."
871
+ msgstr ""
872
+
873
+ #: inc/class-sby-api-connect.php:106
874
+ msgid ""
875
+ "There's an issue with the YouTube API Key that you are using. Please check "
876
+ "to make sure that this is a valid API Key."
877
+ msgstr ""
878
+
879
+ #: inc/class-sby-api-connect.php:120
880
+ #, php-format
881
+ msgid "Error connecting to %s."
882
+ msgstr ""
883
+
884
+ #: inc/class-sby-feed.php:971
885
+ msgid "Error: No videos found."
886
+ msgstr ""
887
+
888
+ #: inc/class-sby-feed.php:972
889
+ msgid ""
890
+ "Make sure this is a valid channel ID and that the channel has videos "
891
+ "available on youtube.com."
892
+ msgstr ""
893
+
894
+ #: inc/class-sby-feed.php:1102
895
+ msgid "No posts found."
896
+ msgstr ""
897
+
898
+ #: inc/class-sby-posts-manager.php:235
899
+ msgid "There was an error creating the folder for storing resized images."
900
+ msgstr ""
901
+
902
+ #: inc/class-sby-posts-manager.php:323
903
+ msgid "Notice: API requests are being delayed for 5 minutes."
904
+ msgstr ""
905
+
906
+ #: inc/class-sby-posts-manager.php:323
907
+ msgid "Feed will not update."
908
+ msgstr ""
909
+
910
+ #: inc/class-sby-posts-manager.php:332
911
+ msgid ""
912
+ "There may be an issue with the YouTube access token that you are using. Your "
913
+ "server might also be unable to connect to YouTube at this time."
914
+ msgstr ""
915
+
916
+ #: inc/sby-functions.php:29 inc/sby-functions.php:137
917
+ msgid "This error message is only visible to WordPress admins"
918
+ msgstr ""
919
+
920
+ #: inc/sby-functions.php:30
921
+ msgid "Error: No connected account or API key."
922
+ msgstr ""
923
+
924
+ #: inc/sby-functions.php:31
925
+ msgid ""
926
+ "Please go to the YouTube Feed settings page to enter an API key or connect "
927
+ "an account."
928
+ msgstr ""
929
+
930
+ #: inc/widget.php:13
931
+ msgid "YouTube Feed"
932
+ msgstr ""
933
+
934
+ #: inc/widget.php:14
935
+ msgid "Display your YouTube feed"
936
+ msgstr ""
937
+
938
+ #: inc/widget.php:40
939
+ msgid "Title:"
940
+ msgstr ""
941
+
942
+ #: templates/item.php:23 templates/player.php:10
943
+ msgid "Image for post"
944
+ msgstr ""
945
+
946
+ #: templates/item.php:35 templates/player.php:17
947
+ #, php-format
948
+ msgid "YouTube Video %s"
949
+ msgstr ""
950
+
951
+ #: youtube-feed.php:97
952
+ msgid "Feeds for YouTube"
953
+ msgstr ""
954
+
955
+ #: youtube-feed.php:100
956
+ msgid "a"
957
+ msgstr ""
958
+
959
+ #: youtube-feed.php:103
960
+ msgid "YouTube"
961
+ msgstr ""
962
+
963
+ #: youtube-feed.php:154
964
+ msgid "Videos"
965
+ msgstr ""
966
+
967
+ #: youtube-feed.php:155
968
+ msgid " "
969
+ msgstr ""
970
+
971
+ #: youtube-feed.php:156 youtube-feed.php:157
972
+ msgid "Add New Video"
973
+ msgstr ""
974
+
975
+ #: youtube-feed.php:158
976
+ msgid "Edit Video"
977
+ msgstr ""
978
+
979
+ #: youtube-feed.php:159
980
+ msgid "View Video"
981
+ msgstr ""
982
+
983
+ #: youtube-feed.php:160
984
+ msgid "All Videos"
985
+ msgstr ""
986
+
987
+ #: youtube-feed.php:487
988
+ msgid "Settings"
989
+ msgstr ""
languages/feeds-for-youtube.pot ADDED
@@ -0,0 +1,990 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #, fuzzy
2
+ msgid ""
3
+ msgstr ""
4
+ "Project-Id-Version: \n"
5
+ "POT-Creation-Date: 2020-02-04 15:53-0600\n"
6
+ "PO-Revision-Date: 2019-11-29 14:35-0600\n"
7
+ "Last-Translator: \n"
8
+ "Language-Team: \n"
9
+ "Language: en_US\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Poedit 2.2.4\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
+ "X-Poedit-KeywordsList: __;_e;esc_html__;esc_html_e;esc_attr_e;esc_attr__\n"
17
+ "X-Poedit-SearchPath-0: .\n"
18
+
19
+ #: inc/admin/admin-functions.php:17 inc/admin/templates/configure.php:1
20
+ msgid "Configure"
21
+ msgstr ""
22
+
23
+ #: inc/admin/admin-functions.php:20
24
+ msgid "Customize your feed"
25
+ msgstr ""
26
+
27
+ #: inc/admin/admin-functions.php:23
28
+ msgid "Customize"
29
+ msgstr ""
30
+
31
+ #: inc/admin/admin-functions.php:26 inc/admin/templates/main.php:57
32
+ msgid "Display your feed"
33
+ msgstr ""
34
+
35
+ #: inc/admin/admin-functions.php:29
36
+ msgid "Display"
37
+ msgstr ""
38
+
39
+ #: inc/admin/admin-functions.php:34
40
+ msgid "Support"
41
+ msgstr ""
42
+
43
+ #: inc/admin/admin-functions.php:61
44
+ msgid "Channel"
45
+ msgstr ""
46
+
47
+ #: inc/admin/admin-functions.php:64
48
+ msgid "Eg: Channel ID or User Name"
49
+ msgstr ""
50
+
51
+ #: inc/admin/admin-functions.php:66
52
+ msgid "Channel ID or User Name"
53
+ msgstr ""
54
+
55
+ #: inc/admin/admin-functions.php:67
56
+ msgid ""
57
+ "You can find the ID or User Name of your YouTube Channel from the URL. In "
58
+ "each URL format, the text you need to use is highlighted below:"
59
+ msgstr ""
60
+
61
+ #: inc/admin/admin-functions.php:68
62
+ msgid "URL Format 1:"
63
+ msgstr ""
64
+
65
+ #: inc/admin/admin-functions.php:70
66
+ msgid "URL Format 2:"
67
+ msgstr ""
68
+
69
+ #: inc/admin/admin-functions.php:83
70
+ msgid "List"
71
+ msgstr ""
72
+
73
+ #: inc/admin/admin-functions.php:85
74
+ msgid "A single columns of videos that play when clicked."
75
+ msgstr ""
76
+
77
+ #: inc/admin/admin-functions.php:89
78
+ msgid "Grid"
79
+ msgstr ""
80
+
81
+ #: inc/admin/admin-functions.php:91
82
+ msgid ""
83
+ "Video thumbnails are displayed in columns and play in a lightbox when "
84
+ "clicked."
85
+ msgstr ""
86
+
87
+ #: inc/admin/admin-functions.php:96 inc/admin/admin-functions.php:122
88
+ msgid "Columns"
89
+ msgstr ""
90
+
91
+ #: inc/admin/admin-functions.php:105 inc/admin/admin-functions.php:131
92
+ msgid "Mobile Columns"
93
+ msgstr ""
94
+
95
+ #: inc/admin/admin-functions.php:115
96
+ msgid "Gallery"
97
+ msgstr ""
98
+
99
+ #: inc/admin/admin-functions.php:117
100
+ msgid ""
101
+ "One large video that plays when clicked with thumbnails underneath to play "
102
+ "more."
103
+ msgstr ""
104
+
105
+ #: inc/admin/admin-functions.php:146
106
+ msgid "Configure Options"
107
+ msgstr ""
108
+
109
+ #: inc/admin/admin-functions.php:150
110
+ msgid "Customize Options"
111
+ msgstr ""
112
+
113
+ #: inc/admin/admin-functions.php:154
114
+ msgid "Layout Options"
115
+ msgstr ""
116
+
117
+ #: inc/admin/admin-functions.php:158
118
+ msgid "Header Options"
119
+ msgstr ""
120
+
121
+ #: inc/admin/admin-functions.php:162
122
+ msgid "\"Load More\" Button Options"
123
+ msgstr ""
124
+
125
+ #: inc/admin/admin-functions.php:166
126
+ msgid "\"Subscribe\" Button Options"
127
+ msgstr ""
128
+
129
+ #: inc/admin/admin-functions.php:297
130
+ msgid ""
131
+ "Could not connect your account. Please check to make sure this is a valid "
132
+ "access token for the Smash Balloon YouTube App."
133
+ msgstr ""
134
+
135
+ #: inc/admin/admin-functions.php:572
136
+ msgid ""
137
+ "PS. We currently have a <a href=\"https://smashballoon.com/video-feed/?"
138
+ "utm_source=plugin-free&utm_campaign=sby&discount="
139
+ msgstr ""
140
+
141
+ #: inc/admin/admin-functions.php:590
142
+ #, php-format
143
+ msgid ""
144
+ "It's great to see that you've been using the %s plugin for a while now. "
145
+ "Hopefully you're happy with it!&nbsp; If so, would you consider leaving a "
146
+ "positive review? It really helps to support the plugin and helps others to "
147
+ "discover it too!"
148
+ msgstr ""
149
+
150
+ #: inc/admin/admin-functions.php:594
151
+ msgid "Sure, I'd love to!"
152
+ msgstr ""
153
+
154
+ #: inc/admin/admin-functions.php:596
155
+ msgid "No thanks"
156
+ msgstr ""
157
+
158
+ #: inc/admin/admin-functions.php:598
159
+ msgid "I've already given a review"
160
+ msgstr ""
161
+
162
+ #: inc/admin/admin-functions.php:600
163
+ msgid "Ask Me Later"
164
+ msgstr ""
165
+
166
+ #: inc/admin/admin-functions.php:617
167
+ #, php-format
168
+ msgid ""
169
+ "<b style=\"font-weight: 700;\">Exclusive offer!</b> We don't run promotions "
170
+ "very often, but for a limited time we're offering <b style=\"font-weight: "
171
+ "700;\">20% off</b> our Pro version to all users of our free %s plugin."
172
+ msgstr ""
173
+
174
+ #: inc/admin/admin-functions.php:619 inc/admin/admin-functions.php:637
175
+ msgid "Get this offer"
176
+ msgstr ""
177
+
178
+ #: inc/admin/admin-functions.php:620 inc/admin/admin-functions.php:638
179
+ msgid "I'm not interested"
180
+ msgstr ""
181
+
182
+ #: inc/admin/admin-functions.php:635
183
+ #, php-format
184
+ msgid ""
185
+ "<b style=\"font-weight: 700;\">Black Friday/Cyber Monday Deal!</b> Thank you "
186
+ "for using our free %s plugin. For a limited time, we're offering <b style="
187
+ "\"font-weight: 700;\">20% off</b> the Pro version for all of our users."
188
+ msgstr ""
189
+
190
+ #: inc/admin/class-sbspf-admin.php:228
191
+ msgid "Yes"
192
+ msgstr ""
193
+
194
+ #: inc/admin/class-sbspf-admin.php:409
195
+ msgid "Connect an account above"
196
+ msgstr ""
197
+
198
+ #: inc/admin/class-sbspf-admin.php:448 inc/admin/class-sby-admin.php:578
199
+ msgid "When the page loads"
200
+ msgstr ""
201
+
202
+ #: inc/admin/class-sbspf-admin.php:450 inc/admin/class-sby-admin.php:580
203
+ #, php-format
204
+ msgid ""
205
+ "Your %s data is temporarily cached by the plugin in your WordPress database. "
206
+ "There are two ways that you can set the plugin to check for new data:"
207
+ "<br><br>\n"
208
+ " <b>1. When the page loads</b><br>Selecting this option means "
209
+ "that when the cache expires then the plugin will check %s for new posts the "
210
+ "next time that the feed is loaded. You can choose how long this data should "
211
+ "be cached for with a minimum time of 15 minutes. If you set the time to 60 "
212
+ "minutes then the plugin will clear the cached data after that length of "
213
+ "time, and the next time the page is viewed it will check for new data. "
214
+ "<b>Tip:</b> If you're experiencing an issue with the plugin not updating "
215
+ "automatically then try enabling the setting labeled <b>'Force cache to clear "
216
+ "on interval'</b> which is located on the 'Customize' tab.<br><br>\n"
217
+ " <b>2. In the background</b><br>Selecting this option means "
218
+ "that the plugin will check for new data in the background so that the feed "
219
+ "is updated behind the scenes. You can select at what time and how often the "
220
+ "plugin should check for new data using the settings below. <b>Please note</"
221
+ "b> that the plugin will initially check for data from Instagram when the "
222
+ "page first loads, but then after that will check in the background on the "
223
+ "schedule selected - unless the cache is cleared."
224
+ msgstr ""
225
+
226
+ #: inc/admin/class-sbspf-admin.php:456 inc/admin/class-sby-admin.php:586
227
+ msgid "Every"
228
+ msgstr ""
229
+
230
+ #: inc/admin/class-sbspf-admin.php:459 inc/admin/class-sby-admin.php:589
231
+ msgid "Minutes"
232
+ msgstr ""
233
+
234
+ #: inc/admin/class-sbspf-admin.php:460 inc/admin/class-sby-admin.php:590
235
+ msgid "Hours"
236
+ msgstr ""
237
+
238
+ #: inc/admin/class-sbspf-admin.php:461 inc/admin/class-sby-admin.php:591
239
+ msgid "Days"
240
+ msgstr ""
241
+
242
+ #: inc/admin/class-sbspf-admin.php:463 inc/admin/class-sbspf-admin.php:736
243
+ #: inc/admin/class-sby-admin.php:593
244
+ msgid "What does this mean?"
245
+ msgstr ""
246
+
247
+ #: inc/admin/class-sbspf-admin.php:464 inc/admin/class-sby-admin.php:594
248
+ #, php-format
249
+ msgid ""
250
+ "Your %s posts are temporarily cached by the plugin in your WordPress "
251
+ "database. You can choose how long the posts should be cached for. If you set "
252
+ "the time to 1 hour then the plugin will clear the cache after that length of "
253
+ "time and check %s for posts again."
254
+ msgstr ""
255
+
256
+ #: inc/admin/class-sbspf-admin.php:469 inc/admin/class-sby-admin.php:599
257
+ msgid "In the background"
258
+ msgstr ""
259
+
260
+ #: inc/admin/class-sbspf-admin.php:474 inc/admin/class-sby-admin.php:604
261
+ #: youtube-feed.php:187
262
+ msgid "Every 30 minutes"
263
+ msgstr ""
264
+
265
+ #: inc/admin/class-sbspf-admin.php:475 inc/admin/class-sby-admin.php:605
266
+ msgid "Every hour"
267
+ msgstr ""
268
+
269
+ #: inc/admin/class-sbspf-admin.php:476 inc/admin/class-sby-admin.php:606
270
+ msgid "Every 12 hours"
271
+ msgstr ""
272
+
273
+ #: inc/admin/class-sbspf-admin.php:477 inc/admin/class-sby-admin.php:607
274
+ msgid "Every 24 hours"
275
+ msgstr ""
276
+
277
+ #: inc/admin/class-sbspf-admin.php:481 inc/admin/class-sby-admin.php:611
278
+ msgid "at"
279
+ msgstr ""
280
+
281
+ #: inc/admin/class-sbspf-admin.php:498 inc/admin/class-sby-admin.php:628
282
+ msgid "AM"
283
+ msgstr ""
284
+
285
+ #: inc/admin/class-sbspf-admin.php:499 inc/admin/class-sby-admin.php:629
286
+ msgid "PM"
287
+ msgstr ""
288
+
289
+ #: inc/admin/class-sbspf-admin.php:511 inc/admin/class-sby-admin.php:641
290
+ msgid "every 30 minutes"
291
+ msgstr ""
292
+
293
+ #: inc/admin/class-sbspf-admin.php:512 inc/admin/class-sby-admin.php:642
294
+ msgid "every 12 hours"
295
+ msgstr ""
296
+
297
+ #: inc/admin/class-sbspf-admin.php:514 inc/admin/class-sby-admin.php:644
298
+ msgid "Next check"
299
+ msgstr ""
300
+
301
+ #: inc/admin/class-sbspf-admin.php:514 inc/admin/class-sby-admin.php:644
302
+ msgid ""
303
+ "Note: Saving the settings on this page will clear the cache and reset this "
304
+ "schedule"
305
+ msgstr ""
306
+
307
+ #: inc/admin/class-sbspf-admin.php:516 inc/admin/class-sby-admin.php:646
308
+ msgid "Nothing currently scheduled"
309
+ msgstr ""
310
+
311
+ #: inc/admin/class-sbspf-admin.php:549
312
+ msgid "Click for shortcode option"
313
+ msgstr ""
314
+
315
+ #: inc/admin/class-sby-admin.php:28
316
+ msgid "Feed Type"
317
+ msgstr ""
318
+
319
+ #: inc/admin/class-sby-admin.php:32
320
+ msgid "Display videos from a YouTube channel (channel)"
321
+ msgstr ""
322
+
323
+ #: inc/admin/class-sby-admin.php:44
324
+ msgid "Check for new posts"
325
+ msgstr ""
326
+
327
+ #: inc/admin/class-sby-admin.php:52
328
+ msgid "Preserve settings when plugin is removed"
329
+ msgstr ""
330
+
331
+ #: inc/admin/class-sby-admin.php:54
332
+ msgid ""
333
+ "When removing the plugin your settings are automatically erased. Checking "
334
+ "this box will prevent any settings from being deleted. This means that you "
335
+ "can uninstall and reinstall the plugin without losing your settings."
336
+ msgstr ""
337
+
338
+ #: inc/admin/class-sby-admin.php:62
339
+ msgid "General"
340
+ msgstr ""
341
+
342
+ #: inc/admin/class-sby-admin.php:88
343
+ msgid "Width of Feed"
344
+ msgstr ""
345
+
346
+ #: inc/admin/class-sby-admin.php:92
347
+ msgid "The width of your feed. Any number with a unit like \"px\" or \"%\"."
348
+ msgstr ""
349
+
350
+ #: inc/admin/class-sby-admin.php:100
351
+ msgid "Set to be 100% width on mobile?"
352
+ msgstr ""
353
+
354
+ #: inc/admin/class-sby-admin.php:103
355
+ #, php-format
356
+ msgid ""
357
+ "If you set a width on the feed then this will be used on mobile as well as "
358
+ "desktop. Check this setting to set the feed width to be 100% on mobile so "
359
+ "that it is responsive."
360
+ msgstr ""
361
+
362
+ #: inc/admin/class-sby-admin.php:125
363
+ msgid "Height of Feed"
364
+ msgstr ""
365
+
366
+ #: inc/admin/class-sby-admin.php:129
367
+ msgid "The height of your feed. Any number with a unit like \"px\" or \"em\"."
368
+ msgstr ""
369
+
370
+ #: inc/admin/class-sby-admin.php:142
371
+ msgid "Background Color"
372
+ msgstr ""
373
+
374
+ #: inc/admin/class-sby-admin.php:146
375
+ msgid "Background color for the feed. Any hex color code."
376
+ msgstr ""
377
+
378
+ #: inc/admin/class-sby-admin.php:153
379
+ msgid "Layout"
380
+ msgstr ""
381
+
382
+ #: inc/admin/class-sby-admin.php:164
383
+ msgid "Layout Type"
384
+ msgstr ""
385
+
386
+ #: inc/admin/class-sby-admin.php:169
387
+ msgid "How your posts are display visually."
388
+ msgstr ""
389
+
390
+ #: inc/admin/class-sby-admin.php:194
391
+ msgid "Number of Videos"
392
+ msgstr ""
393
+
394
+ #: inc/admin/class-sby-admin.php:195
395
+ msgid "Number of videos to show initially."
396
+ msgstr ""
397
+
398
+ #: inc/admin/class-sby-admin.php:199
399
+ msgid "The number of videos in the feed"
400
+ msgstr ""
401
+
402
+ #: inc/admin/class-sby-admin.php:207
403
+ msgid "Play Icon"
404
+ msgstr ""
405
+
406
+ #: inc/admin/class-sby-admin.php:211
407
+ msgid "Title"
408
+ msgstr ""
409
+
410
+ #: inc/admin/class-sby-admin.php:216
411
+ msgid "User Name"
412
+ msgstr ""
413
+
414
+ #: inc/admin/class-sby-admin.php:221
415
+ msgid "Views"
416
+ msgstr ""
417
+
418
+ #: inc/admin/class-sby-admin.php:226
419
+ msgid "Date"
420
+ msgstr ""
421
+
422
+ #: inc/admin/class-sby-admin.php:231
423
+ msgid "Live Stream Countdown (when applies)"
424
+ msgstr ""
425
+
426
+ #: inc/admin/class-sby-admin.php:236
427
+ msgid "Stats (like and comment counts)"
428
+ msgstr ""
429
+
430
+ #: inc/admin/class-sby-admin.php:241 inc/admin/templates/display.php:19
431
+ msgid "Description"
432
+ msgstr ""
433
+
434
+ #: inc/admin/class-sby-admin.php:251
435
+ msgid "Show/Hide"
436
+ msgstr ""
437
+
438
+ #: inc/admin/class-sby-admin.php:255
439
+ msgid ""
440
+ "Comma separated list of what video information (title, description, stats) "
441
+ "will display in the feed. eg."
442
+ msgstr ""
443
+
444
+ #: inc/admin/class-sby-admin.php:269
445
+ msgid "Spacing between videos"
446
+ msgstr ""
447
+
448
+ #: inc/admin/class-sby-admin.php:273
449
+ msgid ""
450
+ "The spacing/padding around the videos in the feed. Any number with a unit "
451
+ "like \"px\" or \"em\"."
452
+ msgstr ""
453
+
454
+ #: inc/admin/class-sby-admin.php:282
455
+ msgid "Header"
456
+ msgstr ""
457
+
458
+ #: inc/admin/class-sby-admin.php:292
459
+ msgid "Show Header"
460
+ msgstr ""
461
+
462
+ #: inc/admin/class-sby-admin.php:297
463
+ msgid "Include a header for this feed."
464
+ msgstr ""
465
+
466
+ #: inc/admin/class-sby-admin.php:307
467
+ msgid "Show Channel Description"
468
+ msgstr ""
469
+
470
+ #: inc/admin/class-sby-admin.php:312
471
+ msgid "Include the channel description in the header."
472
+ msgstr ""
473
+
474
+ #: inc/admin/class-sby-admin.php:319
475
+ msgid "\"Load More\" Button"
476
+ msgstr ""
477
+
478
+ #: inc/admin/class-sby-admin.php:329
479
+ msgid "Show \"Load More\" Button"
480
+ msgstr ""
481
+
482
+ #: inc/admin/class-sby-admin.php:334
483
+ msgid ""
484
+ "Include a \"Load More\" button at the bottom of the feed to load more videos."
485
+ msgstr ""
486
+
487
+ #: inc/admin/class-sby-admin.php:345
488
+ msgid "Button Background Color"
489
+ msgstr ""
490
+
491
+ #: inc/admin/class-sby-admin.php:349
492
+ msgid "Background color for the \"Load More\" button. Any hex color code."
493
+ msgstr ""
494
+
495
+ #: inc/admin/class-sby-admin.php:360
496
+ msgid "Button Text Color"
497
+ msgstr ""
498
+
499
+ #: inc/admin/class-sby-admin.php:364
500
+ msgid "Text color for the \"Load More\" button. Any hex color code."
501
+ msgstr ""
502
+
503
+ #: inc/admin/class-sby-admin.php:372 youtube-feed.php:457
504
+ msgid "Load More..."
505
+ msgstr ""
506
+
507
+ #: inc/admin/class-sby-admin.php:375
508
+ msgid "Button Text"
509
+ msgstr ""
510
+
511
+ #: inc/admin/class-sby-admin.php:379
512
+ msgid "The text that appers on the \"Load More\" button."
513
+ msgstr ""
514
+
515
+ #: inc/admin/class-sby-admin.php:387
516
+ msgid "\"Subscribe\" Button"
517
+ msgstr ""
518
+
519
+ #: inc/admin/class-sby-admin.php:398
520
+ msgid "Show \"Subscribe\" Button"
521
+ msgstr ""
522
+
523
+ #: inc/admin/class-sby-admin.php:403
524
+ msgid ""
525
+ "Include a \"Subscribe\" button at the bottom of the feed to load more videos."
526
+ msgstr ""
527
+
528
+ #: inc/admin/class-sby-admin.php:414
529
+ msgid "Subscribe Background Color"
530
+ msgstr ""
531
+
532
+ #: inc/admin/class-sby-admin.php:418
533
+ msgid "Background color for the \"Subscribe\" button. Any hex color code."
534
+ msgstr ""
535
+
536
+ #: inc/admin/class-sby-admin.php:429
537
+ msgid "Subscribe Text Color"
538
+ msgstr ""
539
+
540
+ #: inc/admin/class-sby-admin.php:433
541
+ msgid "Text color for the \"Subscribe\" button. Any hex color code."
542
+ msgstr ""
543
+
544
+ #: inc/admin/class-sby-admin.php:441 youtube-feed.php:458
545
+ msgid "Subscribe"
546
+ msgstr ""
547
+
548
+ #: inc/admin/class-sby-admin.php:444
549
+ msgid "Subscribe Text"
550
+ msgstr ""
551
+
552
+ #: inc/admin/class-sby-admin.php:448
553
+ msgid "The text that appers on the \"Subscribe\" button."
554
+ msgstr ""
555
+
556
+ #: inc/admin/class-sby-admin.php:455
557
+ msgid "Video Experience"
558
+ msgstr ""
559
+
560
+ #: inc/admin/class-sby-admin.php:463
561
+ msgid "Play when clicked"
562
+ msgstr ""
563
+
564
+ #: inc/admin/class-sby-admin.php:476
565
+ msgid "When does video play?"
566
+ msgstr ""
567
+
568
+ #: inc/admin/class-sby-admin.php:480
569
+ msgid "What the user needs to do to play a video. eg."
570
+ msgstr ""
571
+
572
+ #: inc/admin/class-sby-admin.php:484
573
+ msgid ""
574
+ "List layout will not play automatically. Choose whether to play the video "
575
+ "automatically in the player or wait until the user clicks the play button "
576
+ "after the video is loaded."
577
+ msgstr ""
578
+
579
+ #: inc/admin/class-sby-admin.php:489
580
+ msgid "Custom Code Snippets"
581
+ msgstr ""
582
+
583
+ #: inc/admin/class-sby-admin.php:500
584
+ msgid "Custom CSS"
585
+ msgstr ""
586
+
587
+ #: inc/admin/class-sby-admin.php:502
588
+ msgid "Enter your own custom CSS in the box below"
589
+ msgstr ""
590
+
591
+ #: inc/admin/class-sby-admin.php:511
592
+ msgid "Custom JavaScript"
593
+ msgstr ""
594
+
595
+ #: inc/admin/class-sby-admin.php:513
596
+ msgid "Enter your own custom JavaScript/jQuery in the box below"
597
+ msgstr ""
598
+
599
+ #: inc/admin/class-sby-admin.php:514
600
+ msgid ""
601
+ "Note: Custom JavaScript reruns every time more videos are loaded into the "
602
+ "feed"
603
+ msgstr ""
604
+
605
+ #: inc/admin/class-sby-admin.php:519
606
+ msgid "Advanced"
607
+ msgstr ""
608
+
609
+ #: inc/admin/class-sby-admin.php:528
610
+ msgid "Background"
611
+ msgstr ""
612
+
613
+ #: inc/admin/class-sby-admin.php:532
614
+ msgid "Page"
615
+ msgstr ""
616
+
617
+ #: inc/admin/class-sby-admin.php:536
618
+ msgid "None"
619
+ msgstr ""
620
+
621
+ #: inc/admin/class-sby-admin.php:546
622
+ msgid "Local storage process"
623
+ msgstr ""
624
+
625
+ #: inc/admin/class-sby-admin.php:549
626
+ msgid ""
627
+ "To preserve your feeds and videos even if the YouTube API is unavailable, a "
628
+ "record of each video is added to the wp_posts table in the WordPress "
629
+ "database. Please note that changing this setting to \"none\" will limit the "
630
+ "number of posts available in the feed to 15 or less."
631
+ msgstr ""
632
+
633
+ #: inc/admin/class-sby-admin.php:557
634
+ msgid "Are you using an AJAX theme?"
635
+ msgstr ""
636
+
637
+ #: inc/admin/class-sby-admin.php:559
638
+ msgid ""
639
+ "When navigating your site, if your theme uses Ajax to load content into your "
640
+ "pages (meaning your page doesn't refresh) then check this setting. If you're "
641
+ "not sure then it's best to leave this setting unchecked while checking with "
642
+ "your theme author, otherwise checking it may cause a problem."
643
+ msgstr ""
644
+
645
+ #: inc/admin/templates/configure.php:3
646
+ #, php-format
647
+ msgid "Log in to %s and connect an account"
648
+ msgstr ""
649
+
650
+ #: inc/admin/templates/configure.php:4
651
+ msgid "Button not working?"
652
+ msgstr ""
653
+
654
+ #: inc/admin/templates/configure.php:16
655
+ msgid "API Key"
656
+ msgstr ""
657
+
658
+ #: inc/admin/templates/configure.php:17
659
+ msgid "Recommended"
660
+ msgstr ""
661
+
662
+ #: inc/admin/templates/configure.php:21
663
+ msgid ""
664
+ "Entering an API key is <strong>optional</strong> but recommended. It allows "
665
+ "the plugin to fetch older videos and prevents potential disruption in your "
666
+ "feed. It only takes a few minutes: <a href=\"https://smashballoon.com/"
667
+ "youtube-api-key/\" target=\"_blank\" rel=\"noopener\">Get my API key.</a>"
668
+ msgstr ""
669
+
670
+ #: inc/admin/templates/configure.php:34 inc/admin/templates/customize.php:8
671
+ msgid "Save Changes"
672
+ msgstr ""
673
+
674
+ #: inc/admin/templates/connected-accounts.php:10
675
+ #, php-format
676
+ msgid "%s Accounts"
677
+ msgstr ""
678
+
679
+ #: inc/admin/templates/connected-accounts.php:11
680
+ #, php-format
681
+ msgid "Use the button above to connect %s account"
682
+ msgstr ""
683
+
684
+ #: inc/admin/templates/connected-accounts.php:15
685
+ #, php-format
686
+ msgid "No %s accounts connected. Click the button above to connect an account."
687
+ msgstr ""
688
+
689
+ #: inc/admin/templates/connected-accounts.php:34
690
+ msgid "Manually Connect a Primary Account"
691
+ msgstr ""
692
+
693
+ #: inc/admin/templates/connected-accounts.php:36
694
+ msgid "Enter a valid Access Token"
695
+ msgstr ""
696
+
697
+ #: inc/admin/templates/connected-accounts.php:37
698
+ msgid "Enter a valid Refresh Token"
699
+ msgstr ""
700
+
701
+ #: inc/admin/templates/connected-accounts.php:38
702
+ msgid "Connect This Account"
703
+ msgstr ""
704
+
705
+ #: inc/admin/templates/display.php:1
706
+ msgid "Display your Feed"
707
+ msgstr ""
708
+
709
+ #: inc/admin/templates/display.php:2
710
+ msgid ""
711
+ "Copy and paste the following shortcode directly into the page, post or "
712
+ "widget where you'd like the feed to show up:"
713
+ msgstr ""
714
+
715
+ #: inc/admin/templates/display.php:3 inc/admin/templates/main.php:59
716
+ #: inc/admin/templates/single-connected-account.php:39
717
+ #: inc/admin/templates/single-connected-account.php:40
718
+ #: inc/admin/templates/single-connected-account.php:41
719
+ msgid "To copy, click the field then press Ctrl + C (PC) or Cmd + C (Mac)."
720
+ msgstr ""
721
+
722
+ #: inc/admin/templates/display.php:5
723
+ msgid "Multiple Feeds"
724
+ msgstr ""
725
+
726
+ #: inc/admin/templates/display.php:6
727
+ msgid ""
728
+ "If you'd like to display multiple feeds then you can set different settings "
729
+ "directly in the shortcode like so:"
730
+ msgstr ""
731
+
732
+ #: inc/admin/templates/display.php:8
733
+ msgid ""
734
+ "You can display as many different feeds as you like, on either the same page "
735
+ "or on different pages, by just using the shortcode options below. For "
736
+ "example:"
737
+ msgstr ""
738
+
739
+ #: inc/admin/templates/display.php:13
740
+ msgid "See the table below for a full list of available shortcode options:"
741
+ msgstr ""
742
+
743
+ #: inc/admin/templates/display.php:18
744
+ msgid "Shortcode option"
745
+ msgstr ""
746
+
747
+ #: inc/admin/templates/display.php:20
748
+ msgid "Example"
749
+ msgstr ""
750
+
751
+ #: inc/admin/templates/display.php:37 inc/admin/templates/support.php:1
752
+ msgid "Need help?"
753
+ msgstr ""
754
+
755
+ #: inc/admin/templates/display.php:37
756
+ msgid "Get Support"
757
+ msgstr ""
758
+
759
+ #: inc/admin/templates/main.php:17
760
+ msgid "Settings saved."
761
+ msgstr ""
762
+
763
+ #: inc/admin/templates/main.php:50
764
+ msgid "Next Step"
765
+ msgstr ""
766
+
767
+ #: inc/admin/templates/main.php:54
768
+ msgid "Need help setting up the plugin? Check out our <a href=\""
769
+ msgstr ""
770
+
771
+ #: inc/admin/templates/main.php:58
772
+ msgid ""
773
+ "Copy and paste this shortcode directly into the page, post or widget where "
774
+ "you'd like to display the feed:"
775
+ msgstr ""
776
+
777
+ #: inc/admin/templates/main.php:60
778
+ msgid "Find out how to display <a href='?page="
779
+ msgstr ""
780
+
781
+ #: inc/admin/templates/single-connected-account.php:4
782
+ msgid ""
783
+ "The Access Token for this account is expired or invalid. Click the button "
784
+ "above to attempt to renew it."
785
+ msgstr ""
786
+
787
+ #: inc/admin/templates/single-connected-account.php:9
788
+ msgid "Remove"
789
+ msgstr ""
790
+
791
+ #: inc/admin/templates/single-connected-account.php:14
792
+ msgid "Channel ID:"
793
+ msgstr ""
794
+
795
+ #: inc/admin/templates/single-connected-account.php:18
796
+ msgid "Add to another Feed"
797
+ msgstr ""
798
+
799
+ #: inc/admin/templates/single-connected-account.php:19
800
+ msgid "Show access token and account info"
801
+ msgstr ""
802
+
803
+ #: inc/admin/templates/single-connected-account.php:24
804
+ msgid "Copy and paste this shortcode into your page or widget area"
805
+ msgstr ""
806
+
807
+ #: inc/admin/templates/single-connected-account.php:32
808
+ msgid ""
809
+ "To add multiple channels in the same feed, simply separate them using commas"
810
+ msgstr ""
811
+
812
+ #: inc/admin/templates/single-connected-account.php:35
813
+ #, php-format
814
+ msgid "Click on the %s tab to learn more about shortcodes"
815
+ msgstr ""
816
+
817
+ #: inc/admin/templates/single-connected-account.php:35
818
+ msgid "Display Your Feed"
819
+ msgstr ""
820
+
821
+ #: inc/admin/templates/single-connected-account.php:39
822
+ msgid "Access Token"
823
+ msgstr ""
824
+
825
+ #: inc/admin/templates/single-connected-account.php:40
826
+ msgid "Refresh Token"
827
+ msgstr ""
828
+
829
+ #: inc/admin/templates/single-connected-account.php:41
830
+ msgid "Channel ID"
831
+ msgstr ""
832
+
833
+ #: inc/admin/templates/support.php:3
834
+ msgid "Check out our "
835
+ msgstr ""
836
+
837
+ #: inc/admin/templates/support.php:3
838
+ msgid "setup directions"
839
+ msgstr ""
840
+
841
+ #: inc/admin/templates/support.php:3
842
+ msgid "for a step-by-step guide on how to setup and use the plugin"
843
+ msgstr ""
844
+
845
+ #: inc/admin/templates/support.php:5
846
+ msgid "Have a problem? Submit a "
847
+ msgstr ""
848
+
849
+ #: inc/admin/templates/support.php:5
850
+ msgid "support ticket"
851
+ msgstr ""
852
+
853
+ #: inc/admin/templates/support.php:5
854
+ msgid "on our website"
855
+ msgstr ""
856
+
857
+ #: inc/admin/templates/support.php:5
858
+ msgid "Please include your <b>System Info</b> below with all support requests."
859
+ msgstr ""
860
+
861
+ #: inc/admin/templates/support.php:8
862
+ msgid "System Info"
863
+ msgstr ""
864
+
865
+ #: inc/admin/templates/support.php:8
866
+ msgid "Click the text below to select all"
867
+ msgstr ""
868
+
869
+ #: inc/class-sby-api-connect.php:104
870
+ #, php-format
871
+ msgid "Error: %s."
872
+ msgstr ""
873
+
874
+ #: inc/class-sby-api-connect.php:106
875
+ msgid ""
876
+ "There's an issue with the YouTube API Key that you are using. Please check "
877
+ "to make sure that this is a valid API Key."
878
+ msgstr ""
879
+
880
+ #: inc/class-sby-api-connect.php:120
881
+ #, php-format
882
+ msgid "Error connecting to %s."
883
+ msgstr ""
884
+
885
+ #: inc/class-sby-feed.php:971
886
+ msgid "Error: No videos found."
887
+ msgstr ""
888
+
889
+ #: inc/class-sby-feed.php:972
890
+ msgid ""
891
+ "Make sure this is a valid channel ID and that the channel has videos "
892
+ "available on youtube.com."
893
+ msgstr ""
894
+
895
+ #: inc/class-sby-feed.php:1102
896
+ msgid "No posts found."
897
+ msgstr ""
898
+
899
+ #: inc/class-sby-posts-manager.php:235
900
+ msgid "There was an error creating the folder for storing resized images."
901
+ msgstr ""
902
+
903
+ #: inc/class-sby-posts-manager.php:323
904
+ msgid "Notice: API requests are being delayed for 5 minutes."
905
+ msgstr ""
906
+
907
+ #: inc/class-sby-posts-manager.php:323
908
+ msgid "Feed will not update."
909
+ msgstr ""
910
+
911
+ #: inc/class-sby-posts-manager.php:332
912
+ msgid ""
913
+ "There may be an issue with the YouTube access token that you are using. Your "
914
+ "server might also be unable to connect to YouTube at this time."
915
+ msgstr ""
916
+
917
+ #: inc/sby-functions.php:29 inc/sby-functions.php:137
918
+ msgid "This error message is only visible to WordPress admins"
919
+ msgstr ""
920
+
921
+ #: inc/sby-functions.php:30
922
+ msgid "Error: No connected account or API key."
923
+ msgstr ""
924
+
925
+ #: inc/sby-functions.php:31
926
+ msgid ""
927
+ "Please go to the YouTube Feed settings page to enter an API key or connect "
928
+ "an account."
929
+ msgstr ""
930
+
931
+ #: inc/widget.php:13
932
+ msgid "YouTube Feed"
933
+ msgstr ""
934
+
935
+ #: inc/widget.php:14
936
+ msgid "Display your YouTube feed"
937
+ msgstr ""
938
+
939
+ #: inc/widget.php:40
940
+ msgid "Title:"
941
+ msgstr ""
942
+
943
+ #: templates/item.php:23 templates/player.php:10
944
+ msgid "Image for post"
945
+ msgstr ""
946
+
947
+ #: templates/item.php:35 templates/player.php:17
948
+ #, php-format
949
+ msgid "YouTube Video %s"
950
+ msgstr ""
951
+
952
+ #: youtube-feed.php:97
953
+ msgid "Feeds for YouTube"
954
+ msgstr ""
955
+
956
+ #: youtube-feed.php:100
957
+ msgid "a"
958
+ msgstr ""
959
+
960
+ #: youtube-feed.php:103
961
+ msgid "YouTube"
962
+ msgstr ""
963
+
964
+ #: youtube-feed.php:154
965
+ msgid "Videos"
966
+ msgstr ""
967
+
968
+ #: youtube-feed.php:155
969
+ msgid " "
970
+ msgstr ""
971
+
972
+ #: youtube-feed.php:156 youtube-feed.php:157
973
+ msgid "Add New Video"
974
+ msgstr ""
975
+
976
+ #: youtube-feed.php:158
977
+ msgid "Edit Video"
978
+ msgstr ""
979
+
980
+ #: youtube-feed.php:159
981
+ msgid "View Video"
982
+ msgstr ""
983
+
984
+ #: youtube-feed.php:160
985
+ msgid "All Videos"
986
+ msgstr ""
987
+
988
+ #: youtube-feed.php:487
989
+ msgid "Settings"
990
+ msgstr ""
templates/feed.php CHANGED
@@ -15,7 +15,7 @@ if ( $settings['showheader'] && ! empty( $posts ) && $settings['headeroutside']
15
  }
16
  ?>
17
 
18
- <div id="sb_youtube_<?php echo esc_attr( preg_replace( "/[^A-Za-z0-9 ]/", '', $feed_id ) ); ?>" class="sb_youtube sby_layout_<?php echo esc_attr( $settings['layout'] ); ?> sby_col_<?php echo esc_attr( $cols_setting ); ?> sby_mob_col_<?php echo esc_attr( $mobile_cols_setting ); ?> <?php echo esc_attr( $additional_classes ); ?>" data-feedid="<?php echo esc_attr( $feed_id ); ?>" data-shortcode-atts="<?php echo esc_attr( $shortcode_atts ); ?>" data-num="<?php echo esc_attr( $num_setting ); ?>" data-nummobile="<?php echo esc_attr( $nummobile_setting ); ?>"<?php echo $other_atts . $feed_styles; ?>>
19
  <?php
20
  if ( $settings['showheader'] && ! empty( $posts ) && !$settings['headeroutside'] ) {
21
  include sby_get_feed_template_part( 'header', $settings );
15
  }
16
  ?>
17
 
18
+ <div id="sb_youtube_<?php echo esc_attr( preg_replace( "/[^A-Za-z0-9 ]/", '', $feed_id ) ); ?>" class="sb_youtube sby_layout_<?php echo esc_attr( $settings['layout'] ); ?> sby_col_<?php echo esc_attr( $cols_setting ); ?> sby_mob_col_<?php echo esc_attr( $mobile_cols_setting ); ?> <?php echo esc_attr( $additional_classes ); ?>" data-feedid="<?php echo esc_attr( $feed_id ); ?>" data-shortcode-atts="<?php echo esc_attr( $shortcode_atts ); ?>" data-cols="<?php echo esc_attr( $cols_setting ); ?>" data-colsmobile="<?php echo esc_attr( $mobile_cols_setting ); ?>" data-num="<?php echo esc_attr( $num_setting ); ?>" data-nummobile="<?php echo esc_attr( $nummobile_setting ); ?>"<?php echo $other_atts . $feed_styles; ?>>
19
  <?php
20
  if ( $settings['showheader'] && ! empty( $posts ) && !$settings['headeroutside'] ) {
21
  include sby_get_feed_template_part( 'header', $settings );
templates/footer.php CHANGED
@@ -9,11 +9,11 @@ $subscribe_url = isset( $posts[0] ) ? SBY_Parse::get_channel_permalink( $posts[0
9
  $sub_btn_style = SBY_Display_Elements::get_subscribe_styles( $settings ); // style="background: rgb();color: rgb();" already escaped
10
  $sub_btn_classes = strpos( $sub_btn_style, 'background' ) !== false ? ' sby_custom' : '';
11
  $show_subscribe_button = $settings['showsubscribe'];
12
- $subscribe_button_text = __( $settings['subscribetext'], 'youtube-feed' );
13
 
14
  $load_btn_style = SBY_Display_Elements::get_load_button_styles( $settings ); // style="background: rgb();color: rgb();" already escaped
15
  $load_btn_classes = strpos( $load_btn_style, 'background' ) !== false ? ' sby_custom' : '';
16
- $load_button_text = __( $settings['buttontext'], 'youtube-feed' );
17
  ?>
18
  <div class="sby_footer">
19
 
9
  $sub_btn_style = SBY_Display_Elements::get_subscribe_styles( $settings ); // style="background: rgb();color: rgb();" already escaped
10
  $sub_btn_classes = strpos( $sub_btn_style, 'background' ) !== false ? ' sby_custom' : '';
11
  $show_subscribe_button = $settings['showsubscribe'];
12
+ $subscribe_button_text = __( $settings['subscribetext'], 'feeds-for-youtube' );
13
 
14
  $load_btn_style = SBY_Display_Elements::get_load_button_styles( $settings ); // style="background: rgb();color: rgb();" already escaped
15
  $load_btn_classes = strpos( $load_btn_style, 'background' ) !== false ? ' sby_custom' : '';
16
+ $load_button_text = __( $settings['buttontext'], 'feeds-for-youtube' );
17
  ?>
18
  <div class="sby_footer">
19
 
templates/item.php CHANGED
@@ -11,6 +11,7 @@
11
  if ( ! defined( 'ABSPATH' ) ) {
12
  die( '-1' );
13
  }
 
14
  $classes = SBY_Display_Elements::get_item_classes( $settings, $offset );
15
  $post_id = SBY_Parse::get_post_id( $post );
16
  $timestamp = SBY_Parse::get_timestamp( $post );
@@ -27,11 +28,14 @@ $title = SBY_Parse::get_video_title( $post );
27
  <div class="sby_video_thumbnail_wrap">
28
  <a class="sby_video_thumbnail" href="<?php echo esc_url( $permalink ); ?>" target="_blank" rel="noopener" data-full-res="<?php echo esc_url( $media_full_res ); ?>" data-img-src-set="<?php echo esc_attr( wp_json_encode( $media_all_sizes_json ) ); ?>" data-video-id="<?php echo esc_attr( $video_id ); ?>">
29
 
30
- <div class="sby_thumbail_hover">
31
  <span class="sby_video_title"><?php echo esc_html( $title ); ?></span>
32
  </div>
33
 
34
- <span class="sby-screenreader"><?php echo sprintf( __( 'YouTube Video %s', 'youtube-feed' ), $post_id ); ?></span>
 
 
 
35
  <img src="<?php echo esc_url( $media_url ); ?>" alt="<?php echo esc_attr( $img_alt ); ?>">
36
  <span class="sby_loader sby_hidden" style="background-color: rgb(255, 255, 255);"></span>
37
  </a>
11
  if ( ! defined( 'ABSPATH' ) ) {
12
  die( '-1' );
13
  }
14
+ $context = 'item';
15
  $classes = SBY_Display_Elements::get_item_classes( $settings, $offset );
16
  $post_id = SBY_Parse::get_post_id( $post );
17
  $timestamp = SBY_Parse::get_timestamp( $post );
28
  <div class="sby_video_thumbnail_wrap">
29
  <a class="sby_video_thumbnail" href="<?php echo esc_url( $permalink ); ?>" target="_blank" rel="noopener" data-full-res="<?php echo esc_url( $media_full_res ); ?>" data-img-src-set="<?php echo esc_attr( wp_json_encode( $media_all_sizes_json ) ); ?>" data-video-id="<?php echo esc_attr( $video_id ); ?>">
30
 
31
+ <div class="sby_thumbnail_hover">
32
  <span class="sby_video_title"><?php echo esc_html( $title ); ?></span>
33
  </div>
34
 
35
+ <span class="sby-screenreader"><?php echo sprintf( __( 'YouTube Video %s', 'feeds-for-youtube' ), $post_id ); ?></span>
36
+ <?php if ( SBY_Display_Elements::should_show_element( 'icon', $context, $settings ) ) : ?>
37
+ <span class="sby_play_btn"><?php echo SBY_Display_Elements::get_icon( 'play', 'svg' ); ?></span>
38
+ <?php endif; ?>
39
  <img src="<?php echo esc_url( $media_url ); ?>" alt="<?php echo esc_attr( $img_alt ); ?>">
40
  <span class="sby_loader sby_hidden" style="background-color: rgb(255, 255, 255);"></span>
41
  </a>
templates/player.php CHANGED
@@ -14,7 +14,7 @@ $player_outer_wrap_style_attr = SBY_Display_Elements::get_style_att( 'player_out
14
  <div id="sby_player_<?php echo esc_attr( $post_id ); ?>" class="sby_player_outer_wrap sby_player_item" <?php echo $player_outer_wrap_style_attr; ?>>
15
  <div class="sby_video_thumbnail_wrap">
16
  <a class="sby_video_thumbnail" href="<?php echo esc_url( $permalink ); ?>" target="_blank" rel="noopener" data-full-res="<?php echo esc_url( $media_full_res ); ?>" data-img-src-set="<?php echo esc_attr( wp_json_encode( $media_all_sizes_json ) ); ?>" data-video-id="<?php echo esc_attr( $video_id ); ?>">
17
- <span class="sby-screenreader"><?php echo sprintf( __( 'YouTube Video %s', 'youtube-feed' ), $post_id ); ?></span>
18
  <img src="<?php echo esc_url( $media_url ); ?>" alt="<?php echo esc_attr( $img_alt ); ?>">
19
  <span class="sby_loader sby_hidden" style="background-color: rgb(255, 255, 255);"></span>
20
  </a>
14
  <div id="sby_player_<?php echo esc_attr( $post_id ); ?>" class="sby_player_outer_wrap sby_player_item" <?php echo $player_outer_wrap_style_attr; ?>>
15
  <div class="sby_video_thumbnail_wrap">
16
  <a class="sby_video_thumbnail" href="<?php echo esc_url( $permalink ); ?>" target="_blank" rel="noopener" data-full-res="<?php echo esc_url( $media_full_res ); ?>" data-img-src-set="<?php echo esc_attr( wp_json_encode( $media_all_sizes_json ) ); ?>" data-video-id="<?php echo esc_attr( $video_id ); ?>">
17
+ <span class="sby-screenreader"><?php echo sprintf( __( 'YouTube Video %s', 'feeds-for-youtube' ), $post_id ); ?></span>
18
  <img src="<?php echo esc_url( $media_url ); ?>" alt="<?php echo esc_attr( $img_alt ); ?>">
19
  <span class="sby_loader sby_hidden" style="background-color: rgb(255, 255, 255);"></span>
20
  </a>
youtube-feed.php CHANGED
@@ -3,13 +3,13 @@
3
  Plugin Name: Feeds for YouTube
4
  Plugin URI: http://smashballoon.com/youtube-feed
5
  Description: The Feeds for YouTube plugin allows you to display customizable YouTube feeds from any YouTube channel.
6
- Version: 1.0.3
7
  Author: Smash Balloon YouTube Team
8
  Author URI: http://smashballoon.com/
9
  Text Domain: feeds-for-youtube
10
  */
11
  /*
12
- Copyright 2019 Smash Balloon LLC (email : hey@smashballoon.com)
13
  This program is free software; you can redistribute it and/or modify
14
  it under the terms of the GNU General Public License as published by
15
  the Free Software Foundation; either version 2 of the License, or
@@ -26,7 +26,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
27
 
28
  if ( ! defined( 'SBYVER' ) ) {
29
- define( 'SBYVER', '1.0.3' );
30
  }
31
  if ( ! defined( 'SBY_DBVERSION' ) ) {
32
  define( 'SBY_DBVERSION', 1.1 );
@@ -454,8 +454,8 @@ if ( function_exists( 'sby_init' ) ) {
454
  'headersize' => 'small',
455
  'headeroutside' => false,
456
  'showsubscribe' => true,
457
- 'buttontext' => __( 'Load More...', 'youtube-feed' ),
458
- 'subscribetext' => __( 'Subscribe', 'youtube-feed' ),
459
  'caching_type' => 'page',
460
  'cache_time' => 1,
461
  'cache_time_unit' => 'hours',
@@ -474,6 +474,7 @@ if ( function_exists( 'sby_init' ) ) {
474
  'gallerycolsmobile' => 'auto',
475
  'gridcols' => 4,
476
  'gridcolsmobile' => 'auto',
 
477
  );
478
 
479
  return $defaults;
@@ -489,7 +490,7 @@ if ( function_exists( 'sby_init' ) ) {
489
  }
490
 
491
  function sby_text_domain() {
492
- load_plugin_textdomain( 'youtube-feed', false, basename( dirname(__FILE__) ) . '/languages' );
493
  }
494
  add_action( 'plugins_loaded', 'sby_text_domain' );
495
  }
3
  Plugin Name: Feeds for YouTube
4
  Plugin URI: http://smashballoon.com/youtube-feed
5
  Description: The Feeds for YouTube plugin allows you to display customizable YouTube feeds from any YouTube channel.
6
+ Version: 1.1
7
  Author: Smash Balloon YouTube Team
8
  Author URI: http://smashballoon.com/
9
  Text Domain: feeds-for-youtube
10
  */
11
  /*
12
+ Copyright 2020 Smash Balloon LLC (email : hey@smashballoon.com)
13
  This program is free software; you can redistribute it and/or modify
14
  it under the terms of the GNU General Public License as published by
15
  the Free Software Foundation; either version 2 of the License, or
26
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
27
 
28
  if ( ! defined( 'SBYVER' ) ) {
29
+ define( 'SBYVER', '1.1' );
30
  }
31
  if ( ! defined( 'SBY_DBVERSION' ) ) {
32
  define( 'SBY_DBVERSION', 1.1 );
454
  'headersize' => 'small',
455
  'headeroutside' => false,
456
  'showsubscribe' => true,
457
+ 'buttontext' => __( 'Load More...', 'feeds-for-youtube' ),
458
+ 'subscribetext' => __( 'Subscribe', 'feeds-for-youtube' ),
459
  'caching_type' => 'page',
460
  'cache_time' => 1,
461
  'cache_time_unit' => 'hours',
474
  'gallerycolsmobile' => 'auto',
475
  'gridcols' => 4,
476
  'gridcolsmobile' => 'auto',
477
+ 'include' => array( 'title', 'icon', 'user', 'views', 'date', 'countdown', 'description' ),
478
  );
479
 
480
  return $defaults;
490
  }
491
 
492
  function sby_text_domain() {
493
+ load_plugin_textdomain( 'feeds-for-youtube', false, basename( dirname(__FILE__) ) . '/languages' );
494
  }
495
  add_action( 'plugins_loaded', 'sby_text_domain' );
496
  }