Feed Them Social – Facebook, Instagram, Twitter, YouTube, Pinterest - Version 2.4.2

Version Description

Download this release

Release Info

Developer slickremix
Plugin Icon 128x128 Feed Them Social – Facebook, Instagram, Twitter, YouTube, Pinterest
Version 2.4.2
Comparing to
See all releases

Code changes from version 2.4.1 to 2.4.2

admin/feed-them-facebook-style-options-page.php CHANGED
@@ -49,6 +49,7 @@ class FTS_facebook_options_page
49
  $fb_like_btn_color = get_option('fb_like_btn_color', 'light');
50
  $fb_hide_shared_by_etc_text = get_option('fb_hide_shared_by_etc_text');
51
  $fb_hide_images_in_posts = get_option('fb_hide_images_in_posts');
 
52
  $fb_hide_no_posts_message = get_option('fb_hide_no_posts_message');
53
  $fb_reviews_remove_see_reviews_link = get_option('fb_reviews_remove_see_reviews_link');
54
  $fb_loadmore_background_color = get_option('fb_loadmore_background_color');
@@ -67,13 +68,13 @@ class FTS_facebook_options_page
67
  <h3>
68
  <?php _e('Facebook API Token', 'feed-them-social'); ?>
69
  </h3>
70
- <?php _e('Facebook App Token works for all facebook feeds. If you are trying to show a <strong>Group Feed</strong> but do not have a facebook page you will need to go <a href="https://www.slickremix.com/docs/create-facebook-app-id-or-user-token" target="_blank">here</a>.', 'feed-them-social'); ?>
71
  <p>
72
  <a href="https://www.facebook.com/dialog/oauth?client_id=1123168491105924&redirect_uri=https://www.slickremix.com/facebook-token/&state=<?php echo admin_url('admin.php?page=fts-facebook-feed-styles-submenu-page'); ?>&scope=manage_pages%2Cpublic_profile%2Cuser_friends%2Cemail" class="fts-facebook-get-access-token">Login
73
  and get my Access Token</a></p>
74
 
75
  </div>
76
- <a href="https://www.slickremix.com/docs/create-facebook-app-id-or-user-token" target="_blank" class="fts-admin-button-no-work"><?php _e('Button not working?', 'feed-them-social'); ?></a>
77
  <?php
78
  $test_app_token_id = get_option('fts_facebook_custom_api_token');
79
  $test_app_token_id_biz = get_option('fts_facebook_custom_api_token_biz');
@@ -140,7 +141,7 @@ class FTS_facebook_options_page
140
  }
141
 
142
  } else {
143
- echo '<div class="fts-successful-api-token default-token">' . __('You are using our Default APP Token for testing purposes. Generate your shortcode on the <a href="admin.php?page=feed-them-settings-page">settings page</a> to test your feed, but remember to add your own tokens after testing as the default token will not always work.', 'feed-them-social') . '</div>';
144
  }
145
  ?>
146
  <div class="clear"></div>
@@ -174,7 +175,7 @@ class FTS_facebook_options_page
174
 
175
  </div>
176
 
177
- <a href="https://www.slickremix.com/facebook-never-expiring-page-token" target="_blank" class="fts-admin-button-no-work"><?php _e('Button not working?', 'feed-them-social'); ?></a>
178
  <div class="clear"></div>
179
  <div class="feed-them-social-admin-input-label fts-twitter-border-bottom-color-label">
180
  <?php _e('Page Reviews Access Token', 'feed-them-social'); ?>
@@ -534,11 +535,11 @@ class FTS_facebook_options_page
534
  </div>
535
  <!--/fts-twitter-feed-styles-input-wrap-->
536
 
537
- <div class="feed-them-social-admin-input-wrap">
538
  <div class="feed-them-social-admin-input-label fts-twitter-text-color-label">
539
  <?php _e('Facebook APP ID<br/><small>Not required if you used the "Login and get my Access Token" button, otherwise View Step 3 to <a href="http://www.slickremix.com/docs/create-facebook-app-id-or-user-token" target="_blank">get APP ID</a>.</small>', 'feed-them-social'); ?>
540
  </div>
541
- <input type="text" name="fb_app_ID" class="feed-them-social-admin-input" id="fb-app-ID" value="<?php echo get_option('fb_app_ID'); ?>" placeholder="Not Required for New Users"/>
542
  <div class="clear"></div>
543
  </div>
544
  <div class="feed-them-social-admin-input-wrap">
@@ -666,16 +667,16 @@ class FTS_facebook_options_page
666
  </div>
667
  <!--/fts-facebook-feed-styles-input-wrap-->
668
 
669
- <?php if (is_plugin_active('feed-them-premium/feed-them-premium.php') || is_plugin_active('feed-them-social-combined-streams/feed-them-social-combined-streams.php')) { ?>
670
- <div class="feed-them-social-admin-input-wrap">
671
- <div class="feed-them-social-admin-input-label fts-fb-post-background-color-label">
672
- <?php _e('Post Background Color<br/><small>Only works with show_media=top</small>', 'feed-them-social'); ?>
673
- </div>
674
- <input type="text" name="fb_post_background_color" class="feed-them-social-admin-input fb-post-background-color-input color {hash:true,caps:false,required:false,adjust:false,pickerFaceColor:'#eee',pickerFace:3,pickerBorder:0,pickerInsetColor:'white'}" id="fb-feed-background-color-input" placeholder="#ddd" value="<?php echo get_option('fb_post_background_color'); ?>"/>
675
- <div class="clear"></div>
676
- </div>
677
- <!--/fts-facebook-feed-styles-input-wrap-->
678
- <?php } ?>
679
 
680
  <div class="feed-them-social-admin-input-wrap">
681
  <div class="feed-them-social-admin-input-label fts-fb-feed-background-color-label">
@@ -792,7 +793,7 @@ class FTS_facebook_options_page
792
  <!--/fts-facebook-feed-styles-input-wrap-->
793
  <?php } ?>
794
 
795
- <div class="feed-them-social-admin-input-wrap">
796
  <div class="fts-title-description-settings-page">
797
  <h3>
798
  <?php _e('Event Style Options', 'feed-them-social'); ?>
@@ -825,6 +826,32 @@ class FTS_facebook_options_page
825
  </div>
826
  <!--/fts-facebook-feed-styles-input-wrap-->
827
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
828
  <div class="clear"></div>
829
  <input type="submit" class="feed-them-social-admin-submit-btn" value="<?php _e('Save All Changes') ?>"/>
830
  </form>
49
  $fb_like_btn_color = get_option('fb_like_btn_color', 'light');
50
  $fb_hide_shared_by_etc_text = get_option('fb_hide_shared_by_etc_text');
51
  $fb_hide_images_in_posts = get_option('fb_hide_images_in_posts');
52
+ $fb_hide_error_handler_message = get_option('fb_hide_error_handler_message');
53
  $fb_hide_no_posts_message = get_option('fb_hide_no_posts_message');
54
  $fb_reviews_remove_see_reviews_link = get_option('fb_reviews_remove_see_reviews_link');
55
  $fb_loadmore_background_color = get_option('fb_loadmore_background_color');
68
  <h3>
69
  <?php _e('Facebook API Token', 'feed-them-social'); ?>
70
  </h3>
71
+ <?php _e('This Facebook Access Token is for Business Pages, Photos and Videos only and is simply used to display the feed. This will NOT work for personal accounts or groups. You must be an admin of the page to get your token.', 'feed-them-social'); ?>
72
  <p>
73
  <a href="https://www.facebook.com/dialog/oauth?client_id=1123168491105924&redirect_uri=https://www.slickremix.com/facebook-token/&state=<?php echo admin_url('admin.php?page=fts-facebook-feed-styles-submenu-page'); ?>&scope=manage_pages%2Cpublic_profile%2Cuser_friends%2Cemail" class="fts-facebook-get-access-token">Login
74
  and get my Access Token</a></p>
75
 
76
  </div>
77
+ <a href="mailto:support@slickremix.com" target="_blank" class="fts-admin-button-no-work"><?php _e('Button not working?', 'feed-them-social'); ?></a>
78
  <?php
79
  $test_app_token_id = get_option('fts_facebook_custom_api_token');
80
  $test_app_token_id_biz = get_option('fts_facebook_custom_api_token_biz');
141
  }
142
 
143
  } else {
144
+ echo '<div class="fts-failed-api-token">' . __('To get started, please click the button above to retrieve your Access Token.', 'feed-them-social') . '</div>';
145
  }
146
  ?>
147
  <div class="clear"></div>
175
 
176
  </div>
177
 
178
+ <a href="mailto:support@slickremix.com" target="_blank" class="fts-admin-button-no-work"><?php _e('Button not working?', 'feed-them-social'); ?></a>
179
  <div class="clear"></div>
180
  <div class="feed-them-social-admin-input-label fts-twitter-border-bottom-color-label">
181
  <?php _e('Page Reviews Access Token', 'feed-them-social'); ?>
535
  </div>
536
  <!--/fts-twitter-feed-styles-input-wrap-->
537
 
538
+ <div class="feed-them-social-admin-input-wrap" style="display: none">
539
  <div class="feed-them-social-admin-input-label fts-twitter-text-color-label">
540
  <?php _e('Facebook APP ID<br/><small>Not required if you used the "Login and get my Access Token" button, otherwise View Step 3 to <a href="http://www.slickremix.com/docs/create-facebook-app-id-or-user-token" target="_blank">get APP ID</a>.</small>', 'feed-them-social'); ?>
541
  </div>
542
+ <input type="text" name="fb_app_ID" class="feed-them-social-admin-input" id="fb-app-ID" value="<?php // echo get_option('fb_app_ID'); ?>" placeholder="Not Required for New Users"/>
543
  <div class="clear"></div>
544
  </div>
545
  <div class="feed-them-social-admin-input-wrap">
667
  </div>
668
  <!--/fts-facebook-feed-styles-input-wrap-->
669
 
670
+ <?php if (is_plugin_active('feed-them-premium/feed-them-premium.php') || is_plugin_active('feed-them-social-combined-streams/feed-them-social-combined-streams.php')) { ?>
671
+ <div class="feed-them-social-admin-input-wrap">
672
+ <div class="feed-them-social-admin-input-label fts-fb-post-background-color-label">
673
+ <?php _e('Post Background Color<br/><small>Only works with show_media=top</small>', 'feed-them-social'); ?>
674
+ </div>
675
+ <input type="text" name="fb_post_background_color" class="feed-them-social-admin-input fb-post-background-color-input color {hash:true,caps:false,required:false,adjust:false,pickerFaceColor:'#eee',pickerFace:3,pickerBorder:0,pickerInsetColor:'white'}" id="fb-feed-background-color-input" placeholder="#ddd" value="<?php echo get_option('fb_post_background_color'); ?>"/>
676
+ <div class="clear"></div>
677
+ </div>
678
+ <!--/fts-facebook-feed-styles-input-wrap-->
679
+ <?php } ?>
680
 
681
  <div class="feed-them-social-admin-input-wrap">
682
  <div class="feed-them-social-admin-input-label fts-fb-feed-background-color-label">
793
  <!--/fts-facebook-feed-styles-input-wrap-->
794
  <?php } ?>
795
 
796
+ <div class="feed-them-social-admin-input-wrap" style="display: none !important;">
797
  <div class="fts-title-description-settings-page">
798
  <h3>
799
  <?php _e('Event Style Options', 'feed-them-social'); ?>
826
  </div>
827
  <!--/fts-facebook-feed-styles-input-wrap-->
828
 
829
+
830
+ <div class="feed-them-social-admin-input-wrap">
831
+ <div class="fts-title-description-settings-page">
832
+ <h3>
833
+ <?php _e('Facebook Error Message', 'feed-them-social'); ?>
834
+ </h3>
835
+ <?php _e('If your feed is displaying a notice or error message at times you can utilize this option to hide them from displaying. Make sure and delete the <a href="admin.php?page=feed-them-settings-page&tab=global_options">Cache</a> to see the change. <p><small>NOTE: This does not hide any php warnings that may come up. To remove those go to the wp-config.php file on root of your WordPress install and set the wp_debug option to FALSE. Having that option set to TRUE is really only necessary when developing.</small></p>', 'feed-them-social'); ?>
836
+ </div>
837
+ <div class="feed-them-social-admin-input-label fb-error-handler-label">
838
+ <?php _e('Hide Error Handler Message', 'feed-them-social'); ?>
839
+ </div>
840
+ <select name="fb_hide_error_handler_message" id="fb_hide_error_handler_message" class="feed-them-social-admin-input">
841
+ <option value="">
842
+ <?php _e('Please Select Option', 'feed-them-social'); ?>
843
+ </option>
844
+ <option <?php echo selected($fb_hide_error_handler_message, 'no', false) ?> value="no">
845
+ <?php _e('No', 'feed-them-social'); ?>
846
+ </option>
847
+ <option <?php echo selected($fb_hide_error_handler_message, 'yes', false) ?> value="yes">
848
+ <?php _e('Yes', 'feed-them-social'); ?>
849
+ </option>
850
+ </select>
851
+ <div class="clear"></div>
852
+ </div>
853
+ <!--/fts-facebook-feed-styles-input-wrap-->
854
+
855
  <div class="clear"></div>
856
  <input type="submit" class="feed-them-social-admin-submit-btn" value="<?php _e('Save All Changes') ?>"/>
857
  </form>
admin/feed-them-instagram-style-options-page.php CHANGED
@@ -58,9 +58,9 @@ class FTS_instagram_options_page
58
  //Error Check
59
  $test_app_token_response = json_decode($response);
60
 
61
- // echo '<pre>';
62
- // print_r(json_decode($response));
63
- // echo '</pre>';
64
  ?>
65
  <p>
66
  <?php _e('This is required to make the feed work. Just click the button below and it will connect to your instagram to get an access token, then it will return it in the input below. Then just click the save button and you will now be able to generate your Instagram feed. If the button is not working for you and can always manually create an Access Token <a href="http://www.slickremix.com/docs/how-to-create-instagram-access-token/" target="_blank">here</a>.', 'feed-them-social'); ?>
@@ -122,10 +122,11 @@ class FTS_instagram_options_page
122
  else {
123
  $custom_instagram_link_hash = '#feed_type=instagram';
124
  }
125
- if (!isset($test_app_token_response->meta->error_message) && !empty($fts_instagram_access_token) || isset($test_app_token_response->meta->error_message) && $test_app_token_response->meta->error_message == 'This client has not been approved to access this resource.') {
126
  echo '<div class="fts-successful-api-token">' . __('Your access token is working! Generate your shortcode on the <a href="admin.php?page=feed-them-settings-page'.$custom_instagram_link_hash .'">settings page</a>.', 'feed-them-social') . '</div>';
127
- } elseif (isset($test_app_token_response->meta->error_message) && !empty($fts_instagram_access_token)) {
128
- echo '<div class="fts-failed-api-token">' . __('Oh No something\'s wrong.', 'feed-them-social') . ' ' . $test_app_token_response->meta->error_message . '</div>';
 
129
  }
130
  if (empty($fts_instagram_access_token)) {
131
  echo '<div class="fts-failed-api-token">' . __('You are required to get an access token to view your photos. Click Save all Changes after getting your Access Token.', 'feed-them-social') . '</div>';
58
  //Error Check
59
  $test_app_token_response = json_decode($response);
60
 
61
+ // echo '<pre>';
62
+ // print_r(json_decode($response));
63
+ // echo '</pre>';
64
  ?>
65
  <p>
66
  <?php _e('This is required to make the feed work. Just click the button below and it will connect to your instagram to get an access token, then it will return it in the input below. Then just click the save button and you will now be able to generate your Instagram feed. If the button is not working for you and can always manually create an Access Token <a href="http://www.slickremix.com/docs/how-to-create-instagram-access-token/" target="_blank">here</a>.', 'feed-them-social'); ?>
122
  else {
123
  $custom_instagram_link_hash = '#feed_type=instagram';
124
  }
125
+ if (!isset($test_app_token_response->meta->error_message) && !isset($test_app_token_response->error_message) && !empty($fts_instagram_access_token) || isset($test_app_token_response->meta->error_message) && $test_app_token_response->meta->error_message == 'This client has not been approved to access this resource.') {
126
  echo '<div class="fts-successful-api-token">' . __('Your access token is working! Generate your shortcode on the <a href="admin.php?page=feed-them-settings-page'.$custom_instagram_link_hash .'">settings page</a>.', 'feed-them-social') . '</div>';
127
+ } elseif (isset($test_app_token_response->meta->error_message) && !empty($fts_instagram_access_token) || isset($test_app_token_response->error_message) && !empty($fts_instagram_access_token)) {
128
+ $text = isset($test_app_token_response->meta->error_message) ? $test_app_token_response->meta->error_message : $test_app_token_response->error_message;
129
+ echo '<div class="fts-failed-api-token">' . __('Oh No something\'s wrong.', 'feed-them-social') . ' ' . $text . '</div>';
130
  }
131
  if (empty($fts_instagram_access_token)) {
132
  echo '<div class="fts-failed-api-token">' . __('You are required to get an access token to view your photos. Click Save all Changes after getting your Access Token.', 'feed-them-social') . '</div>';
admin/feed-them-settings-page.php CHANGED
@@ -1162,10 +1162,10 @@ class FTS_settings_page
1162
  'title' => __('Facebook Page', 'feed-them-social'),
1163
  ),
1164
  //Facebook Page List of Events
1165
- array(
1166
- 'value' => 'events',
1167
- 'title' => __('Facebook Page List of Events', 'feed-them-social'),
1168
- ),
1169
  // //Facebook Page Single Event Posts
1170
  // array(
1171
  // 'value' => 'event',
@@ -1424,7 +1424,6 @@ class FTS_settings_page
1424
  'value' => 'no',
1425
  ),
1426
  ),
1427
- 'req_plugin' => 'fts_premium',
1428
  'short_attr' => array(
1429
  'attr_name' => 'description',
1430
  ),
@@ -4860,17 +4859,13 @@ class FTS_settings_page
4860
  <p>
4861
  <label><?php _e('Cache Time', 'feed-them-social'); ?></label>
4862
  <select id="fts_clear_cache_developer_mode" name="fts_clear_cache_developer_mode">
4863
- <option value="10" <?php if ($ftsDevModeCache == '10') echo 'selected="selected"'; ?>><?php _e('10 Seconds (for testing only)', 'feed-them-social'); ?></option>
4864
- <option value="300" <?php if ($ftsDevModeCache == '300') echo 'selected="selected"'; ?>><?php _e('5 Minutes', 'feed-them-social'); ?></option>
4865
- <option value="600" <?php if ($ftsDevModeCache == '600') echo 'selected="selected"'; ?>><?php _e('10 Minutes', 'feed-them-social'); ?></option>
4866
- <option value="900" <?php if ($ftsDevModeCache == '900') echo 'selected="selected"'; ?>><?php _e('15 Minutes', 'feed-them-social'); ?></option>
4867
- <option value="1200" <?php if ($ftsDevModeCache == '1200') echo 'selected="selected"'; ?>><?php _e('20 Minutes', 'feed-them-social'); ?></option>
4868
- <option value="1800" <?php if ($ftsDevModeCache == '1800') echo 'selected="selected"'; ?>><?php _e('30 Minutes', 'feed-them-social'); ?></option>
4869
- <option value="3600" <?php if ($ftsDevModeCache == '3600') echo 'selected="selected"'; ?>><?php _e('60 Minutes', 'feed-them-social'); ?></option>
4870
- <option value="86400" <?php if ($ftsDevModeCache == '86400') echo 'selected="selected"'; ?>><?php _e('1 Day (Default)', 'feed-them-social'); ?></option>
4871
  <option value="604800" <?php if ($ftsDevModeCache == '604800') echo 'selected="selected"'; ?>><?php _e('1 Week', 'feed-them-social'); ?></option>
4872
  <option value="1209600" <?php if ($ftsDevModeCache == '1209600') echo 'selected="selected"'; ?>><?php _e('2 Weeks', 'feed-them-social'); ?></option>
4873
- <option value="1" <?php if ($ftsDevModeCache == '1') echo 'selected="selected"'; ?>><?php _e('Clear cache on every page load', 'feed-them-social'); ?></option>
4874
  </select>
4875
  </p>
4876
  <label><?php _e('Admin Bar', 'feed-them-social'); ?></label>
@@ -5319,7 +5314,7 @@ class FTS_settings_page
5319
  ★★★★★</a>
5320
  </div>
5321
  <div class="fts-plugin-reviews-support"><?php _e('If you\'re using the Free plugin and are having troubles getting setup please contact us on the <a href="https://wordpress.org/support/plugin/feed-them-social" target="_blank">Free Wordpress Support Forum</a>. We will respond within 24hrs during weekdays.', 'feed-them-social'); ?>
5322
- <?php _e('If you have a paid extensions from us please use our <a href="https://www.slickremix.com/support/" target="_blank">Paid Extension Support Ticket System</a>.', 'feed-them-social'); ?>
5323
 
5324
  <div class="fts-text-align-center">
5325
  <a class="feed-them-social-admin-slick-logo" href="https://www.slickremix.com" target="_blank"></a>
1162
  'title' => __('Facebook Page', 'feed-them-social'),
1163
  ),
1164
  //Facebook Page List of Events
1165
+ // array(
1166
+ // 'value' => 'events',
1167
+ // 'title' => __('Facebook Page List of Events', 'feed-them-social'),
1168
+ // ),
1169
  // //Facebook Page Single Event Posts
1170
  // array(
1171
  // 'value' => 'event',
1424
  'value' => 'no',
1425
  ),
1426
  ),
 
1427
  'short_attr' => array(
1428
  'attr_name' => 'description',
1429
  ),
4859
  <p>
4860
  <label><?php _e('Cache Time', 'feed-them-social'); ?></label>
4861
  <select id="fts_clear_cache_developer_mode" name="fts_clear_cache_developer_mode">
4862
+ <option value="" ><?php _e('Please choose an option', 'feed-them-social'); ?></option>
4863
+ <option value="86400" <?php if ($ftsDevModeCache == '86400') echo 'selected="selected"'; ?>><?php _e('1 Day (Suggested Default)', 'feed-them-social'); ?></option>
4864
+ <option value="172800" <?php if ($ftsDevModeCache == '172800') echo 'selected="selected"'; ?>><?php _e('2 Days', 'feed-them-social'); ?></option>
4865
+ <option value="259200" <?php if ($ftsDevModeCache == '259200') echo 'selected="selected"'; ?>><?php _e('3 Days', 'feed-them-social'); ?></option>
 
 
 
 
4866
  <option value="604800" <?php if ($ftsDevModeCache == '604800') echo 'selected="selected"'; ?>><?php _e('1 Week', 'feed-them-social'); ?></option>
4867
  <option value="1209600" <?php if ($ftsDevModeCache == '1209600') echo 'selected="selected"'; ?>><?php _e('2 Weeks', 'feed-them-social'); ?></option>
4868
+ <option value="1" <?php if ($ftsDevModeCache == '1') echo 'selected="selected"'; ?>><?php _e('(Developers Only) Clear cache on every page load', 'feed-them-social'); ?></option>
4869
  </select>
4870
  </p>
4871
  <label><?php _e('Admin Bar', 'feed-them-social'); ?></label>
5314
  ★★★★★</a>
5315
  </div>
5316
  <div class="fts-plugin-reviews-support"><?php _e('If you\'re using the Free plugin and are having troubles getting setup please contact us on the <a href="https://wordpress.org/support/plugin/feed-them-social" target="_blank">Free Wordpress Support Forum</a>. We will respond within 24hrs during weekdays.', 'feed-them-social'); ?>
5317
+ <?php _e('If you have a paid extensions from us please use our <a href="https://www.slickremix.com/my-account/#tab-support" target="_blank">Paid Extension Support Ticket System</a>.', 'feed-them-social'); ?>
5318
 
5319
  <div class="fts-text-align-center">
5320
  <a class="feed-them-social-admin-slick-logo" href="https://www.slickremix.com" target="_blank"></a>
admin/feed-them-system-info.php CHANGED
@@ -167,6 +167,7 @@ $feed_them_social_premium_license_key = get_option('feed_them_social_premium_lic
167
  $fts_bar_license_key = get_option('fts_bar_license_key');
168
  $feed_them_carousel_premium_license_key = get_option('feed_them_carousel_premium_license_key');
169
  $feed_them_social_combined_streams_license_key = get_option('feed_them_social_combined_streams_license_key');
 
170
 
171
  ?>YouTube: <?php echo $youtubeOptions . "\n"; ?>
172
 
@@ -175,6 +176,10 @@ $feed_them_social_combined_streams_license_key = get_option('feed_them_social_co
175
  Date Format: <?php echo $ftsDateTimeFormat . "\n"; ?>
176
  Timezone: <?php echo $ftsTimezone . "\n"; ?>
177
 
 
 
 
 
178
  -- Fix Twitter Time:
179
 
180
  Fix: <?php echo isset($ftsFixTwitterTime) && $ftsFixTwitterTime == 1 ? 'Yes'. "\n" : 'No'. "\n"; ?>
167
  $fts_bar_license_key = get_option('fts_bar_license_key');
168
  $feed_them_carousel_premium_license_key = get_option('feed_them_carousel_premium_license_key');
169
  $feed_them_social_combined_streams_license_key = get_option('feed_them_social_combined_streams_license_key');
170
+ $fb_hide_error_handler_message = get_option('fb_hide_error_handler_message');
171
 
172
  ?>YouTube: <?php echo $youtubeOptions . "\n"; ?>
173
 
176
  Date Format: <?php echo $ftsDateTimeFormat . "\n"; ?>
177
  Timezone: <?php echo $ftsTimezone . "\n"; ?>
178
 
179
+ -- Hide Facebook Error Handler:
180
+
181
+ Hide: <?php echo isset($fb_hide_error_handler_message) && $fb_hide_error_handler_message == 'yes' ? 'Yes'. "\n" : 'No'. "\n"; ?>
182
+
183
  -- Fix Twitter Time:
184
 
185
  Fix: <?php echo isset($ftsFixTwitterTime) && $ftsFixTwitterTime == 1 ? 'Yes'. "\n" : 'No'. "\n"; ?>
feed-them.php CHANGED
@@ -7,19 +7,19 @@
7
  *
8
  * Plugin Name: Feed Them Social (Facebook, Instagram, Twitter, etc)
9
  * Plugin URI: http://feedthemsocial.com/
10
- * Description: Create and display custom feeds for Facebook Groups, Facebook Pages, Facebook Events, Facebook Photos, Facebook Album Covers, Twitter, Instagram, Pinterest and more.
11
- * Version: 2.4.1
12
  * Author: SlickRemix
13
  * Author URI: https://slickremix.com/
14
  * Text Domain: feed-them-social
15
  * Domain Path: /languages
16
  * Requires at least: wordpress 4.0.0
17
  * Tested up to: WordPress 4.9.6
18
- * Stable tag: 2.4.1
19
  * License: GPLv2 or later
20
  * License URI: http://www.gnu.org/licenses/gpl-3.0.html
21
  *
22
- * @version 2.4.1
23
  * @package FeedThemSocial/Core
24
  * @copyright Copyright (c) 2012-2018 SlickRemix
25
  *
7
  *
8
  * Plugin Name: Feed Them Social (Facebook, Instagram, Twitter, etc)
9
  * Plugin URI: http://feedthemsocial.com/
10
+ * Description: Customize feeds for Facebook Pages, Album Photos, Videos & Covers, Instagram, Twitter, Pinterest & YouTube on pages, posts or widgets.
11
+ * Version: 2.4.2
12
  * Author: SlickRemix
13
  * Author URI: https://slickremix.com/
14
  * Text Domain: feed-them-social
15
  * Domain Path: /languages
16
  * Requires at least: wordpress 4.0.0
17
  * Tested up to: WordPress 4.9.6
18
+ * Stable tag: 2.4.2
19
  * License: GPLv2 or later
20
  * License URI: http://www.gnu.org/licenses/gpl-3.0.html
21
  *
22
+ * @version 2.4.2
23
  * @package FeedThemSocial/Core
24
  * @copyright Copyright (c) 2012-2018 SlickRemix
25
  *
feeds/facebook/facebook-feed.php CHANGED
@@ -106,6 +106,7 @@ class FTS_Facebook_Feed extends feed_them_social_functions {
106
  'id' => '',
107
  'type' => '',
108
  'posts' => '',
 
109
  'posts_displayed' => '',
110
  'height' => '',
111
  'album_id' => '',
@@ -434,20 +435,16 @@ class FTS_Facebook_Feed extends feed_them_social_functions {
434
  }
435
  if($FB_Shortcode['type'] !== 'reviews') {
436
  if (is_plugin_active('feed-them-premium/feed-them-premium.php')) {
437
-
438
  // $FTS_FB_OUTPUT .= our Facebook Page Title or About Text. Commented out the group description because in the future we will be adding the about description.
439
-
440
  $fts_align_title = isset($FB_Shortcode['title_align']) && $FB_Shortcode['title_align'] !== '' ? 'style="text-align:' . $FB_Shortcode['title_align'] . ';"' : '';
441
  $FTS_FB_OUTPUT .= isset($FB_Shortcode['title']) && $FB_Shortcode['title'] !== 'no' ? '<h1 ' . $fts_align_title . '><a href="' . $fts_view_fb_link . '" target="_blank">' . $page_data->name . '</a></h1>' : '';
442
- //Description
443
- $FTS_FB_OUTPUT .= isset($FB_Shortcode['description']) && $FB_Shortcode['description'] !== 'no' ? '<div class="fts-jal-fb-group-header-desc">' . $this->fts_facebook_tag_filter($page_data->description) . '</div>' : '';
444
 
445
  } else {
446
  // $FTS_FB_OUTPUT .= our Facebook Page Title or About Text. Commented out the group description because in the future we will be adding the about description.
447
  $FTS_FB_OUTPUT .= '<h1><a href="' . $fts_view_fb_link . '" target="_blank">' . $page_data->name . '</a></h1>';
448
- //Description
449
- $FTS_FB_OUTPUT .= '<div class="fts-jal-fb-group-header-desc">' . $this->fts_facebook_tag_filter($page_data->description) . '</div>';
450
  }
 
 
451
  }
452
  //END Header
453
  $FTS_FB_OUTPUT .= '</div>';
@@ -1235,27 +1232,27 @@ style="margin:' . (isset($FB_Shortcode['slider_margin']) && $FB_Shortcode['slide
1235
  */
1236
  function get_access_token() {
1237
  //API Access Token
1238
- $custom_access_token = get_option('fts_facebook_custom_api_token');
1239
- if (!empty($custom_access_token)) {
1240
  $access_token = get_option('fts_facebook_custom_api_token');
1241
- return $access_token;
1242
- } else {
1243
  //Randomizer
1244
- $values = array(
1245
- '431287540548931|4A23YYIFqhd-gpz_E4Fy6U_Seo0',
1246
- '1748446362151826|epVUmLiKT8QhLN63iRvvXXHwxqk',
1247
- '1875381106044241|KmWz3mtzGye0M5HTdX0SK7rqpIU',
1248
- '754106341419549|AMruxCJ_ly8825VXeLhBKo_kOfs',
1249
- '438563519819257|1GJ8GLl1AQ7ZTvXV_Xpok_QpH6s',
1250
- '753693994788276|xm_PXoNRWW8WPQdcQArRpBgWn5Q',
1251
- '644818402385988|sABEvG0QiOaJRlNLC2NphfQLlfg',
1252
- '292500071162951|9MA-kzWVs6HTEybpdxKjgF_gqeo',
1253
- '263710677420086|Jpui2CFig7RbtdHaHPN_fiEa77U',
1254
- '1850081601881384|u2JcPCn7TH40MY5BwC-i4PMHGm8',
1255
- );
1256
- $access_token = $values[array_rand($values, 1)];
1257
  return $access_token;
1258
- }
1259
  }
1260
 
1261
  /**
@@ -1510,13 +1507,13 @@ style="margin:' . (isset($FB_Shortcode['slider_margin']) && $FB_Shortcode['slide
1510
  $response = $this->fts_get_feed_json($mulit_data);
1511
 
1512
  if (!isset($_GET['load_more_ajaxing'])) {
1513
- //Error Check
1514
- $feed_data = json_decode($response['feed_data']);
1515
- $fts_error_check = new fts_error_handler();
1516
- $fts_error_check_complete = $fts_error_check->facebook_error_check($FB_Shortcode, $feed_data);
1517
- if (is_array($fts_error_check_complete) && $fts_error_check_complete[0] == true) {
1518
- return array(false, $fts_error_check_complete[1]);
1519
- }
1520
  }
1521
 
1522
  //Make sure it's not ajaxing
@@ -1640,7 +1637,7 @@ style="margin:' . (isset($FB_Shortcode['slider_margin']) && $FB_Shortcode['slide
1640
  }
1641
 
1642
  } //End else
1643
- // echo'<pre>';
1644
  // print_r($response_post_array);
1645
  // echo'</pre>';
1646
  return $response_post_array;
106
  'id' => '',
107
  'type' => '',
108
  'posts' => '',
109
+ 'description' => 'yes',
110
  'posts_displayed' => '',
111
  'height' => '',
112
  'album_id' => '',
435
  }
436
  if($FB_Shortcode['type'] !== 'reviews') {
437
  if (is_plugin_active('feed-them-premium/feed-them-premium.php')) {
 
438
  // $FTS_FB_OUTPUT .= our Facebook Page Title or About Text. Commented out the group description because in the future we will be adding the about description.
 
439
  $fts_align_title = isset($FB_Shortcode['title_align']) && $FB_Shortcode['title_align'] !== '' ? 'style="text-align:' . $FB_Shortcode['title_align'] . ';"' : '';
440
  $FTS_FB_OUTPUT .= isset($FB_Shortcode['title']) && $FB_Shortcode['title'] !== 'no' ? '<h1 ' . $fts_align_title . '><a href="' . $fts_view_fb_link . '" target="_blank">' . $page_data->name . '</a></h1>' : '';
 
 
441
 
442
  } else {
443
  // $FTS_FB_OUTPUT .= our Facebook Page Title or About Text. Commented out the group description because in the future we will be adding the about description.
444
  $FTS_FB_OUTPUT .= '<h1><a href="' . $fts_view_fb_link . '" target="_blank">' . $page_data->name . '</a></h1>';
 
 
445
  }
446
+ //Description
447
+ $FTS_FB_OUTPUT .= isset($FB_Shortcode['description']) && $FB_Shortcode['description'] !== 'no' ? '<div class="fts-jal-fb-group-header-desc">' . $this->fts_facebook_tag_filter($page_data->description) . '</div>' : '';
448
  }
449
  //END Header
450
  $FTS_FB_OUTPUT .= '</div>';
1232
  */
1233
  function get_access_token() {
1234
  //API Access Token
1235
+ // $custom_access_token = get_option('fts_facebook_custom_api_token');
1236
+ // if (!empty($custom_access_token)) {
1237
  $access_token = get_option('fts_facebook_custom_api_token');
1238
+ // return $access_token;
1239
+ // } else {
1240
  //Randomizer
1241
+ // $values = array(
1242
+ // '431287540548931|4A23YYIFqhd-gpz_E4Fy6U_Seo0',
1243
+ // '1748446362151826|epVUmLiKT8QhLN63iRvvXXHwxqk',
1244
+ // '1875381106044241|KmWz3mtzGye0M5HTdX0SK7rqpIU',
1245
+ // '754106341419549|AMruxCJ_ly8825VXeLhBKo_kOfs',
1246
+ // '438563519819257|1GJ8GLl1AQ7ZTvXV_Xpok_QpH6s',
1247
+ // '753693994788276|xm_PXoNRWW8WPQdcQArRpBgWn5Q',
1248
+ // '644818402385988|sABEvG0QiOaJRlNLC2NphfQLlfg',
1249
+ // '292500071162951|9MA-kzWVs6HTEybpdxKjgF_gqeo',
1250
+ // '263710677420086|Jpui2CFig7RbtdHaHPN_fiEa77U',
1251
+ // '1850081601881384|u2JcPCn7TH40MY5BwC-i4PMHGm8',
1252
+ // );
1253
+ // $access_token = $values[array_rand($values, 1)];
1254
  return $access_token;
1255
+ // }
1256
  }
1257
 
1258
  /**
1507
  $response = $this->fts_get_feed_json($mulit_data);
1508
 
1509
  if (!isset($_GET['load_more_ajaxing'])) {
1510
+ //Error Check
1511
+ $feed_data = json_decode($response['feed_data']);
1512
+ $fts_error_check = new fts_error_handler();
1513
+ $fts_error_check_complete = $fts_error_check->facebook_error_check($FB_Shortcode, $feed_data);
1514
+ if (is_array($fts_error_check_complete) && $fts_error_check_complete[0] == true) {
1515
+ return array(false, $fts_error_check_complete[1]);
1516
+ }
1517
  }
1518
 
1519
  //Make sure it's not ajaxing
1637
  }
1638
 
1639
  } //End else
1640
+ // echo'<pre>';
1641
  // print_r($response_post_array);
1642
  // echo'</pre>';
1643
  return $response_post_array;
feeds/instagram/instagram-feed.php CHANGED
@@ -163,6 +163,11 @@ class FTS_Instagram_Feed extends feed_them_social_functions
163
  if ($pics_count == NULL)
164
  $pics_count = '6';
165
  }
 
 
 
 
 
166
 
167
  if(!is_plugin_active('feed-them-premium/feed-them-premium.php') && $pics_count > '6'){
168
  $pics_count = '6';
@@ -206,6 +211,7 @@ class FTS_Instagram_Feed extends feed_them_social_functions
206
  // }
207
 
208
  // New method since Instagram API changes as of April 4th, 2018
 
209
  if($access_token == '') {
210
  $fts_instagram_access_token = $fts_instagram_access_token;
211
  }
@@ -229,22 +235,53 @@ class FTS_Instagram_Feed extends feed_them_social_functions
229
 
230
  $cache = 'instagram_cache_' . $instagram_id . '_num' . $pics_count . '';
231
 
232
- $response = $this->fts_get_feed_json($instagram_data_array);
 
 
 
 
 
233
 
234
- //Error Check
235
- $error_check = json_decode($response['data']);
236
- if (isset($error_check->meta->error_message)) {
237
- return $error_check->meta->error_message;
 
 
 
 
 
238
  }
239
 
 
240
  if (false !== ($transient_exists = $this->fts_check_feed_cache_exists($cache)) && !isset($_GET['load_more_ajaxing'])) {
241
  $response = $this->fts_get_feed_cache($cache);
242
  $insta_data = json_decode($response['data']);
243
- } else {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
244
  $insta_data = json_decode($response['data']);
245
  //if Error DON'T Cache
246
- if (!isset($error_check->meta->error_message) && !isset($_GET['load_more_ajaxing'])) {
247
  $this->fts_create_feed_cache($cache, $response);
 
248
  }
249
  }
250
 
@@ -258,15 +295,18 @@ class FTS_Instagram_Feed extends feed_them_social_functions
258
  $website = $instagram_user_info->data->website;
259
  }
260
 
261
-
262
- // echo '<pre>';
263
- // print_r($instagram_user_info);
264
- // echo '</pre>';
 
265
 
266
  //->pagination->next_url
267
- // echo '<pre>';
268
- // print_r($insta_data);
269
- // echo '</pre>';
 
 
270
 
271
  //Make sure it's not ajaxing
272
  if (!isset($_GET['load_more_ajaxing'])) {
163
  if ($pics_count == NULL)
164
  $pics_count = '6';
165
  }
166
+ // Added new debug option SRL: 6/7/18
167
+ extract(shortcode_atts(array(
168
+ 'debug' => '',
169
+ 'debug_userinfo' => '',
170
+ ), $atts));
171
 
172
  if(!is_plugin_active('feed-them-premium/feed-them-premium.php') && $pics_count > '6'){
173
  $pics_count = '6';
211
  // }
212
 
213
  // New method since Instagram API changes as of April 4th, 2018
214
+
215
  if($access_token == '') {
216
  $fts_instagram_access_token = $fts_instagram_access_token;
217
  }
235
 
236
  $cache = 'instagram_cache_' . $instagram_id . '_num' . $pics_count . '';
237
 
238
+ // First we make sure the feed is not cached already before trying to run the Instagram API
239
+ if (false == ($transient_exists = $this->fts_check_feed_cache_exists($cache))) {
240
+ $response = $this->fts_get_feed_json($instagram_data_array);
241
+
242
+ //Error Check
243
+ $error_check = json_decode($response['data']);
244
 
245
+ // $error_check_test = 'test error zzzz';
246
+ // || $error_check_test == 'test error';
247
+
248
+ if($debug == 'true' && current_user_can('administrator') ) {
249
+ echo __('Check if user exists in Instagram\'s API', 'feed-them-social');
250
+ echo '<br/><pre>';
251
+ print_r($error_check);
252
+ echo '</pre>';
253
+ }
254
  }
255
 
256
+ // If the feed is cached then we run the cached array to display the feed.
257
  if (false !== ($transient_exists = $this->fts_check_feed_cache_exists($cache)) && !isset($_GET['load_more_ajaxing'])) {
258
  $response = $this->fts_get_feed_cache($cache);
259
  $insta_data = json_decode($response['data']);
260
+ $note = __('Cached', 'feed-them-social');
261
+ }
262
+ // If the Instagram API array returns any error messages we check for them here and return the corrisponding error message.
263
+ elseif (isset($error_check->error_message) || isset($error_check->meta->error_message) || empty($error_check)) {
264
+ if (current_user_can('administrator')) {
265
+
266
+ if (isset($error_check->error_message)) {
267
+ $error = $error_check->error_message;
268
+ } elseif (isset($error_check->meta->error_message)) {
269
+ $error = $error_check->meta->error_message;
270
+ } else {
271
+ $error = __('Please go to the Instagram Options page of our plugin a double check your Instagram ID matches the one used in your shortcode on this page.', 'feed-them-social');
272
+ }
273
+
274
+ return __('Feed Them Social (Notice visible to Admin only). Instagram returned:', 'feed-them-social').' '.$error;
275
+ } else {
276
+ return;
277
+ }
278
+ }
279
+ else {
280
  $insta_data = json_decode($response['data']);
281
  //if Error DON'T Cache
282
+ if (!isset($error_check->meta->error_message) && !isset($_GET['load_more_ajaxing']) || !isset($error_check->error_message) && !isset($_GET['load_more_ajaxing'])) {
283
  $this->fts_create_feed_cache($cache, $response);
284
+ $note = __('Not Cached', 'feed-them-social');
285
  }
286
  }
287
 
295
  $website = $instagram_user_info->data->website;
296
  }
297
 
298
+ if($debug_userinfo == 'true' && current_user_can('administrator') ) {
299
+ echo '<pre>';
300
+ print_r($instagram_user_info);
301
+ echo '</pre>';
302
+ }
303
 
304
  //->pagination->next_url
305
+ if($debug == 'true' && current_user_can('administrator') ) {
306
+ echo $note.'<br/><pre>';
307
+ print_r($response);
308
+ echo '</pre>';
309
+ }
310
 
311
  //Make sure it's not ajaxing
312
  if (!isset($_GET['load_more_ajaxing'])) {
feeds/js/fts-global-full.js ADDED
@@ -0,0 +1,394 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function() {
2
+
3
+
4
+
5
+ jQuery('.fts-youtube-scrollable, .youtube-comments-wrap-premium, .youtube-comments-thumbs').hover(function() {
6
+ jQuery("body").css("overflow","hidden");
7
+ }, function() {
8
+ jQuery("body").css("overflow","auto");
9
+ });
10
+
11
+
12
+ jQuery( document ).on( 'keydown', function ( e ) {
13
+ if ( e.keyCode === 27 ) { // ESC
14
+ jQuery( ".fts-youtube-scrollable" ).removeClass( "fts-scrollable-function" );
15
+ jQuery('.youtube-comments-thumbs').hide();
16
+ jQuery('.fts-youtube-scrollable, .fts-fb-autoscroll-loader').show();
17
+ jQuery('.fts-youtube-thumbs-gallery-master .youtube-comments-thumbs').html('');
18
+ slickremixImageResizing();
19
+ }
20
+ });
21
+
22
+
23
+
24
+ jQuery.fn.ftsShare = function() {
25
+ jQuery('.fts-share-wrap').each(function() {
26
+ var $self = jQuery(this);
27
+ //Share toolip function
28
+ $self.find('.ft-gallery-link-popup').unbind().bind('click', function() {
29
+ $self.find('.ft-gallery-share-wrap').toggle();
30
+ });
31
+ });
32
+ };
33
+ // return our share function after page has loaded to speed things up. Plus this way we can recall it in the loadmore areas of each feed instead of duplicating all the js.
34
+ if (jQuery.fn.ftsShare) {
35
+ jQuery.fn.ftsShare();
36
+ }
37
+
38
+ if (navigator.userAgent.indexOf("Firefox") > 0) {} else {
39
+ jQuery(".fts-instagram-popup-half video, .fts-simple-fb-wrapper video, .fts-slicker-facebook-posts video, .fts-fluid-videoWrapper-html5 video").click(function() {
40
+ jQuery(this).trigger(this.paused ? this.paused ? "play" : "play" : "pause")
41
+ })
42
+ }
43
+ if (jQuery.fn.masonry) {
44
+ jQuery(".fts-slicker-instagram").masonry({
45
+ itemSelector: ".fts-masonry-option"
46
+ })
47
+ }
48
+ });
49
+ if (!jQuery.trim(jQuery('.fts-jal-fb-group-display').html()).length) {
50
+ jQuery('.fts-jal-fb-group-display').append('<div class="fts-facebook-add-more-posts-notice"><p>Please go to the <strong>Facebook Options</strong> page of our plugin and look for the "<strong>Change Post Limit</strong>" option and add the number <strong>7</strong> or more. You can also hide this notice on the Facebook Options page if you want.</p>If you are trying to add a Personal Facebook feed and you are seeing this message too, please note: <strong>Personal Facebook Accounts generally do not work with our plugin.</strong></div>')
51
+ }
52
+ jQuery(window).load(function() {
53
+ if (jQuery.fn.masonry) {
54
+ setTimeout(function () {
55
+ jQuery(".fts-pinterest-wrapper.masonry").masonry("layout");
56
+ }, 200);
57
+ }
58
+ });
59
+
60
+ // https://www.w3schools.com/js/js_comparisons.asp
61
+ // > greater than x > 8 true
62
+ // < less than x < 8 true
63
+ // https://www.slickremix.com/betablog/2017/09/20200/
64
+
65
+ jQuery(document).ready(slickremixImageResizing);
66
+ jQuery(window).on('resize',slickremixImageResizing);
67
+
68
+ function slickremixImageResizing() {
69
+ // This is the container for our instagram images
70
+ var ftsBlockCenteredAttr = jQuery('.fts-instagram-inline-block-centered');
71
+ // var ftsname = arguments["0"]
72
+ // var ftsBlockCenteredAttr = jQuery(ftsname);
73
+
74
+
75
+ // alert(ftsBlockCenteredAttr);
76
+
77
+ // This is the container for the instagram image post
78
+ var ftsImageSize = jQuery('.slicker-instagram-placeholder');
79
+
80
+ // How many colums do we want to show
81
+ var ftsInstagramColumns = ftsBlockCenteredAttr.attr('data-ftsi-columns');
82
+ // The margin in between photos so we can subtract that from the total %
83
+ var ftsInstagramMargin = ftsBlockCenteredAttr.attr('data-ftsi-margin');
84
+ // The margin without the px and we multiply it by 2 because the margin is on the left and right
85
+ var ftsInstagramMarginfinal = parseFloat(ftsInstagramMargin) * 2;
86
+ // Get the Instagram container .width() so we can keep track of the container size
87
+ var ftsContainerWidth = ftsBlockCenteredAttr.width();
88
+ // Force columns so the images to not scale up from 376px-736px.
89
+ // This keeps the aspect ratio for the columns and is in the if statements below where you will see ftsContainerWidth <= '376' && ftsForceColumns === 'no' and ftsContainerWidth <= '736' && ftsForceColumns === 'no'
90
+ var ftsForceColumns = ftsBlockCenteredAttr.attr('data-ftsi-force-columns');
91
+ // we or each option so if someone tries something other than that it will go to else statement
92
+ if (ftsInstagramColumns === '1' ||
93
+ ftsInstagramColumns === '2' ||
94
+ ftsInstagramColumns === '3' ||
95
+ ftsInstagramColumns === '4' ||
96
+ ftsInstagramColumns === '5' ||
97
+ ftsInstagramColumns === '6' ||
98
+ ftsInstagramColumns === '7' ||
99
+ ftsInstagramColumns === '8') {
100
+ // alert('wtf');
101
+ // if the container is 376px or less we force the image size to be 100%
102
+ if (ftsContainerWidth <= '376' && ftsForceColumns === 'no') {
103
+ var og_size = 'calc(100% - ' + ftsInstagramMarginfinal + 'px)';
104
+ }
105
+ // if the container is 736px or less we force the image size to be 50%
106
+ else if (ftsContainerWidth <= '736' && ftsForceColumns === 'no') {
107
+ var og_size = 'calc(50% - ' + ftsInstagramMarginfinal + 'px)';
108
+ }
109
+ else {
110
+ if (ftsInstagramColumns === '8') {
111
+ var og_size = 'calc(12.5% - ' + ftsInstagramMarginfinal + 'px)';
112
+ }
113
+ else if (ftsInstagramColumns === '7') {
114
+ var og_size = 'calc(14.28571428571429% - ' + ftsInstagramMarginfinal + 'px)';
115
+ }
116
+ else if (ftsInstagramColumns === '6') {
117
+ var og_size = 'calc(16.66666666666667% - ' + ftsInstagramMarginfinal + 'px)';
118
+ }
119
+ else if (ftsInstagramColumns === '5') {
120
+ var og_size = 'calc(20% - ' + ftsInstagramMarginfinal + 'px)';
121
+ }
122
+ else if (ftsInstagramColumns === '4') {
123
+ var og_size = 'calc(25% - ' + ftsInstagramMarginfinal + 'px)';
124
+ }
125
+ else if (ftsInstagramColumns === '3') {
126
+ var og_size = 'calc(33.33333333333333% - ' + ftsInstagramMarginfinal + 'px)';
127
+ }
128
+ else if (ftsInstagramColumns === '2') {
129
+ var og_size = 'calc(50% - ' + ftsInstagramMarginfinal + 'px)';
130
+ }
131
+ else if (ftsInstagramColumns === '1') {
132
+ var og_size = 'calc(100% - ' + ftsInstagramMarginfinal + 'px)';
133
+ }
134
+ }
135
+
136
+ ftsImageSize.css({'width': og_size});
137
+
138
+ var ftsImageHeight = ftsImageSize.width();
139
+ ftsImageSize.css({
140
+ 'width': og_size,
141
+ 'height': ftsImageHeight,
142
+ 'margin': ftsInstagramMargin
143
+ });
144
+ }
145
+ else {
146
+ var ftsImageWidth = ftsBlockCenteredAttr.attr('data-ftsi-width') ? ftsBlockCenteredAttr.attr('data-ftsi-width') : '325px';
147
+ // alert(ftsImageSize.width())
148
+ ftsImageSize.css({
149
+ 'width': ftsImageWidth,
150
+ 'height': ftsImageWidth,
151
+ 'margin': ftsInstagramMargin
152
+ });
153
+ }
154
+
155
+ // If our image square is less than 180px then we hide the date, share option, hearts and comments count and icon and make the whole area clickable.
156
+ if (ftsImageSize.width() < 180) {
157
+ jQuery('.fts-instagram-inline-block-centered .slicker-date, .fts-instagram-inline-block-centered .fts-insta-likes-comments-grab-popup').hide();
158
+ jQuery('.slicker-instagram-placeholder').addClass('fts-smallerthan-180');
159
+
160
+ }
161
+ else {
162
+ jQuery('.fts-instagram-inline-block-centered .slicker-date, .fts-instagram-inline-block-centered .fts-insta-likes-comments-grab-popup').show();
163
+ jQuery('.slicker-instagram-placeholder, .slicker-youtube-placeholder').removeClass('fts-smallerthan-180');
164
+
165
+ }
166
+ }
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+ // https://www.w3schools.com/js/js_comparisons.asp
189
+ // > greater than x > 8 true
190
+ // < less than x < 8 true
191
+ // https://www.slickremix.com/betablog/2017/09/20200/
192
+
193
+ jQuery(document).ready(slickremixImageResizingFacebook);
194
+ jQuery(window).on('resize',slickremixImageResizingFacebook);
195
+
196
+ function slickremixImageResizingFacebook() {
197
+ // This is the container for our instagram images
198
+ var ftsBlockCenteredAttr = jQuery('.fts-facebook-inline-block-centered');
199
+ // var ftsname = arguments["0"]
200
+ // var ftsBlockCenteredAttr = jQuery(ftsname);
201
+
202
+
203
+ // alert(ftsBlockCenteredAttr);
204
+
205
+ // This is the container for the instagram image post
206
+ var ftsImageSize = jQuery('.slicker-facebook-placeholder');
207
+
208
+ // How many colums do we want to show
209
+ var ftsInstagramColumns = ftsBlockCenteredAttr.attr('data-ftsi-columns');
210
+ // The margin in between photos so we can subtract that from the total %
211
+ var ftsInstagramMargin = ftsBlockCenteredAttr.attr('data-ftsi-margin');
212
+ // The margin without the px and we multiply it by 2 because the margin is on the left and right
213
+ var ftsInstagramMarginfinal = parseFloat(ftsInstagramMargin) * 1;
214
+ // Get the Instagram container .width() so we can keep track of the container size
215
+ var ftsContainerWidth = ftsBlockCenteredAttr.width();
216
+ // Force columns so the images to not scale up from 376px-736px.
217
+ // This keeps the aspect ratio for the columns and is in the if statements below where you will see ftsContainerWidth <= '376' && ftsForceColumns === 'no' and ftsContainerWidth <= '736' && ftsForceColumns === 'no'
218
+ var ftsForceColumns = 'yes';
219
+ // we or each option so if someone tries something other than that it will go to else statement
220
+ if (ftsInstagramColumns === '2' ||
221
+ ftsInstagramColumns === '3') {
222
+
223
+ if (ftsInstagramColumns === '3') {
224
+ var og_size = 'calc(33.0777777% - ' + ftsInstagramMarginfinal + 'px)';
225
+ }
226
+ else if (ftsInstagramColumns === '2') {
227
+ var og_size = 'calc(49.777777% - ' + ftsInstagramMarginfinal + 'px)';
228
+ }
229
+
230
+
231
+ ftsImageSize.css({'width': og_size});
232
+
233
+ var ftsImageHeight = ftsImageSize.width();
234
+ ftsImageSize.css({
235
+ 'width': og_size,
236
+ 'height': ftsImageHeight,
237
+ 'margin': ftsInstagramMargin
238
+ });
239
+ }
240
+ else {
241
+ var ftsImageWidth = ftsBlockCenteredAttr.attr('data-ftsi-width') ? ftsBlockCenteredAttr.attr('data-ftsi-width') : '325px';
242
+ // alert(ftsImageSize.width())
243
+ ftsImageSize.css({
244
+ 'width': ftsImageWidth,
245
+ 'height': ftsImageWidth,
246
+ 'margin': ftsInstagramMargin
247
+ });
248
+ }
249
+
250
+ // If our image square is less than 180px then we hide the date, share option, hearts and comments count and icon and make the whole area clickable.
251
+ if (ftsImageSize.width() < 180) {
252
+ jQuery('.fts-facebook-inline-block-centered .slicker-date, .fts-facebook-inline-block-centered .fts-insta-likes-comments-grab-popup').hide();
253
+ jQuery('.slicker-facebook-placeholder').addClass('fts-smallerthan-180');
254
+
255
+ }
256
+ else {
257
+ jQuery('.fts-facebook-inline-block-centered .slicker-date, .fts-facebook-inline-block-centered .fts-insta-likes-comments-grab-popup').show();
258
+ jQuery('.slicker-facebook-placeholder, .slicker-youtube-placeholder').removeClass('fts-smallerthan-180');
259
+
260
+ }
261
+ }
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+ // https://www.w3schools.com/js/js_comparisons.asp
290
+ // > greater than x > 8 true
291
+ // < less than x < 8 true
292
+ // https://www.slickremix.com/betablog/2017/09/20200/
293
+
294
+ jQuery(document).ready(slickremixImageResizingYouTube);
295
+ jQuery(window).on('resize',slickremixImageResizingYouTube);
296
+ function slickremixImageResizingYouTube() {
297
+ // This is the container for our instagram images
298
+ var ftsBlockCenteredAttr = jQuery('.fts-youtube-inline-block-centered');
299
+
300
+ // This is the container for the instagram image post
301
+ var ftsYoutubeImageSize = jQuery('.slicker-youtube-placeholder');
302
+ var ftsYoutubeThumbsContainer = jQuery('.fts-youtube-popup-gallery');
303
+
304
+ var ftsYoutubeLarge = jQuery('.fts-yt-large');
305
+ var ftsYoutubeThumbsWrap = jQuery('.fts-youtube-scrollable.fts-youtube-thumbs-wrap, .fts-youtube-scrollable.fts-youtube-thumbs-wrap-left, .youtube-comments-wrap-premium, .youtube-comments-wrap.fts-youtube-thumbs-wrap-right, .youtube-comments-wrap.fts-youtube-thumbs-wrap-left');
306
+
307
+ // How many colums do we want to show
308
+ var ftsInstagramColumns = ftsBlockCenteredAttr.attr('data-ftsi-columns');
309
+ // The margin in between photos so we can subtract that from the total %
310
+ var ftsInstagramMargin = ftsBlockCenteredAttr.attr('data-ftsi-margin');
311
+ // The margin without the px and we multiply it by 2 because the margin is on the left and right
312
+ var ftsInstagramMarginfinal = parseFloat(ftsInstagramMargin) * 2;
313
+ // Get the Instagram container .width() so we can keep track of the container size
314
+ var ftsContainerWidth = ftsBlockCenteredAttr.width();
315
+ // Force columns so the images to not scale up from 376px-736px.
316
+ // This keeps the aspect ratio for the columns and is in the if statements below where you will see ftsContainerWidth <= '376' && ftsForceColumns === 'no' and ftsContainerWidth <= '736' && ftsForceColumns === 'no'
317
+ var ftsForceColumns = ftsBlockCenteredAttr.attr('data-ftsi-force-columns');
318
+ // we or each option so if someone tries something other than that it will go to else statement
319
+ if (ftsInstagramColumns === '1' ||
320
+ ftsInstagramColumns === '2' ||
321
+ ftsInstagramColumns === '3' ||
322
+ ftsInstagramColumns === '4' ||
323
+ ftsInstagramColumns === '5' ||
324
+ ftsInstagramColumns === '6') {
325
+ // alert('wtf');
326
+ // if the container is 376px or less we force the image size to be 100%
327
+ if (ftsContainerWidth <= '376' && ftsForceColumns === 'no') {
328
+ var og_size = 'calc(100% - ' + ftsInstagramMarginfinal + 'px)';
329
+ }
330
+ // if the container is 736px or less we force the image size to be 50%
331
+ else if (ftsContainerWidth <= '736' && ftsForceColumns === 'no') {
332
+ var og_size = 'calc(50% - ' + ftsInstagramMarginfinal + 'px)';
333
+ }
334
+ else {
335
+ if (ftsInstagramColumns === '6') {
336
+ var og_size = 'calc(16.66666666666667% - ' + ftsInstagramMarginfinal + 'px)';
337
+ }
338
+ else if (ftsInstagramColumns === '5') {
339
+ var og_size = 'calc(20% - ' + ftsInstagramMarginfinal + 'px)';
340
+ }
341
+ else if (ftsInstagramColumns === '4') {
342
+ var og_size = 'calc(25% - ' + ftsInstagramMarginfinal + 'px)';
343
+ }
344
+ else if (ftsInstagramColumns === '3') {
345
+ var og_size = 'calc(33.33333333333333% - ' + ftsInstagramMarginfinal + 'px)';
346
+ }
347
+ else if (ftsInstagramColumns === '2') {
348
+ var og_size = 'calc(50% - ' + ftsInstagramMarginfinal + 'px)';
349
+ }
350
+ else if (ftsInstagramColumns === '1') {
351
+ var og_size = 'calc(100% - ' + ftsInstagramMarginfinal + 'px)';
352
+ }
353
+ }
354
+ var ftsYoutubeLargeHeight = ftsYoutubeLarge.height();
355
+ var ftsYoutubeLargeHeightFinal = 'calc(100% - ' + ftsYoutubeLargeHeight + 'px)';
356
+
357
+ ftsYoutubeThumbsWrap.css({'height': ftsYoutubeLargeHeight + 'px'});
358
+
359
+ ftsYoutubeImageSize.css({'width': og_size});
360
+
361
+ ftsYoutubeThumbsContainer.css({
362
+ 'padding': ftsInstagramMargin
363
+ });
364
+ var ftsImageHeightYoutube = ftsYoutubeImageSize.width() - '150';
365
+ ftsYoutubeImageSize.css({
366
+ 'width': og_size,
367
+ 'height': ftsImageHeightYoutube,
368
+ 'margin': ftsInstagramMargin
369
+ });
370
+ }
371
+
372
+ // If our image square is less than 180px then we hide the play button for the youtube feed
373
+ if (ftsYoutubeImageSize.width() < 180) {
374
+ jQuery('.slicker-youtube-placeholder').addClass('fts-youtube-smallerthan-180');
375
+
376
+ jQuery('.fts-yt-large, .fts-youtube-scrollable').css('width', '100% !important');
377
+
378
+ }
379
+ else {
380
+ jQuery('.slicker-youtube-placeholder').removeClass('fts-youtube-smallerthan-180');
381
+
382
+ }
383
+
384
+ var ftsYoutubeContainer = jQuery('.fts-master-youtube-wrap');
385
+ // If our image square is less than 180px then we hide the play button for the youtube feed
386
+ if (ftsYoutubeContainer.width() < 550) {
387
+ jQuery('.fts-yt-large, .fts-youtube-scrollable, .youtube-comments-wrap').addClass('fts-youtube-smallerthan-550-stack');
388
+
389
+ }
390
+ else {
391
+ jQuery('.fts-yt-large, .fts-youtube-scrollable, .youtube-comments-wrap').removeClass('fts-youtube-smallerthan-550-stack');
392
+
393
+ }
394
+ }
feeds/js/magnific-popup-full.js ADDED
@@ -0,0 +1,607 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! Magnific Popup - v1.1.0 - 2016-02-20
2
+ * http://dimsemenov.com/plugins/magnific-popup/
3
+ * Copyright (c) 2016 Dmitry Semenov; */
4
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),!b.st.showCloseBtn||b.st.closeBtnInside&&b.currTemplate[b.currItem.type]!==!0||b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b.st.autoFocusLast&&b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||!(2===c.which||c.ctrlKey||c.metaKey||c.altKey||c.shiftKey)){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),d||"loading"!==a||(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("<img>").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('<img class="mfp-img" />').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()});
5
+
6
+ //SLICKREMIX START OUR CUSTOM POPUPS
7
+ jQuery(document).ready(function() {
8
+
9
+ // Twitter Posts
10
+ jQuery('.popup-gallery-twitter').each(function() { // the containers for all your galleries
11
+ jQuery(this).magnificPopup({
12
+ delegate: 'a.fts-twitter-link-image',
13
+ type: 'image',
14
+ tLoading: 'Loading image #%curr%...',
15
+ mainClass: 'fts-instagram-img-mobile',
16
+ // Delay in milliseconds before popup is removed
17
+ removalDelay: 100,
18
+
19
+ // Class that is added to popup wrapper and background
20
+ // make it unique to apply your CSS animations just to this exact popup
21
+ mainClass: 'fts-instagram-fade',
22
+ gallery: {
23
+ enabled: true,
24
+ navigateByImgClick: true,
25
+ preload: [0,1] // Will preload 0 - before current, and 1 after the current image
26
+ },
27
+ image: {
28
+ tError: '<a href="%url%">The image #%curr%</a> could not be loaded.',
29
+ titleSrc: function(item) {
30
+ return item.el.parents('.fts-tweeter-wrap, .fts-feed-type-twitter').find('.fts-twitter-text, .fts-mashup-description-wrap').html();
31
+ }
32
+ }
33
+ });
34
+ });
35
+
36
+ // Twitter Posts
37
+ jQuery('.fts-master-youtube-wrap').each(function() { // the containers for all your galleries
38
+ jQuery(this).magnificPopup({
39
+ delegate: 'a.fts-yt-popup-open',
40
+ type: 'image',
41
+ tLoading: 'Loading image #%curr%...',
42
+ mainClass: 'fts-instagram-img-mobile',
43
+ // Delay in milliseconds before popup is removed
44
+ removalDelay: 100,
45
+
46
+ // Class that is added to popup wrapper and background
47
+ // make it unique to apply your CSS animations just to this exact popup
48
+ mainClass: 'fts-instagram-fade',
49
+ gallery: {
50
+ enabled: true,
51
+ navigateByImgClick: true,
52
+ preload: [0,1] // Will preload 0 - before current, and 1 after the current image
53
+ },
54
+ image: {
55
+ tError: '<a href="%url%">The image #%curr%</a> could not be loaded.',
56
+ titleSrc: function(item) {
57
+ return item.el.parents('.fts-master-youtube-wrap .slicker-instagram-placeholder').find('.entriestitle').html();
58
+ }
59
+ }
60
+ });
61
+ });
62
+
63
+ var magnificPopup = jQuery.magnificPopup.instance;
64
+
65
+ // SLICKREMIX: MUST HAVE THIS IN PLACE TO ADJUST THE HEIGHT OF THE POPUP
66
+ // When clicked on, it will only adjust the height of the popup based on if the image is higher than the last, otherwise we just leave it and hoz. and vert. align the image.
67
+
68
+ jQuery('body').on('click', '#fts-photo-prev', function() {
69
+ magnificPopup.prev();
70
+ if(jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).height() < jQuery( ".mfp-img" ).height()){
71
+ jQuery( ".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".mfp-img" ).height());
72
+ // alert('ok don\'t change');
73
+ }
74
+ else {
75
+ jQuery( ".fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".fts-popup-image-position" ).height());
76
+ // alert('change');
77
+ }
78
+ // alert('change');
79
+ });
80
+
81
+ jQuery('body').on('click', '#fts-photo-next', function() {
82
+ magnificPopup.next();
83
+ if(jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).height() < jQuery( ".mfp-img" ).height()){
84
+ jQuery( ".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".mfp-img" ).height());
85
+ // alert('ok don\'t change');
86
+ }
87
+ else {
88
+ jQuery( ".fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".fts-popup-image-position" ).height());
89
+ // alert('change');
90
+ }
91
+ });
92
+
93
+ jQuery('body').on('click', '.fts-facebook-popup .mfp-image-holder .fts-popup-image-position', function() {
94
+ magnificPopup.next();
95
+ if(jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).height() < jQuery( ".mfp-img" ).height()){
96
+ jQuery( ".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".mfp-img" ).height());
97
+ // alert('ok don\'t change');
98
+ }
99
+ else {
100
+ jQuery( ".fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".fts-popup-image-position" ).height());
101
+ // alert('change');
102
+ }
103
+ });
104
+
105
+ // SLICKREMIX: MUST HAVE THIS IN PLACE TO BE ABLE TO CHECK WHAT KIND OF VIDEOS ARE BEING CLICKED ON
106
+ jQuery('body').on('click', '#fts-photo-prev, #fts-photo-next, .fts-facebook-popup .mfp-image-holder .fts-popup-image-position', function(e) {
107
+ // alert('test');
108
+ jQuery("body").addClass("fts-using-arrows");
109
+
110
+ setTimeout(function(){
111
+
112
+ // Reload the share each funcion otherwise you can't open share option.
113
+ jQuery.fn.ftsShare();
114
+
115
+ if (/fbcdn.net/i.test(jQuery(".fts-iframe-popup-element").attr("src")) || /scontent.cdninstagram.com/i.test(jQuery(".fts-iframe-popup-element").attr("src"))) {
116
+
117
+ // alert(jQuery(".fts-iframe-popup-element").attr("src"));
118
+ jQuery("body").addClass("fts-video-iframe-choice");
119
+ jQuery(".fts-video-popup-element").show();
120
+ jQuery(".fts-iframe-popup-element").attr("src", "").hide();
121
+
122
+ }
123
+ else {
124
+ // alert('wtf');
125
+ jQuery("body").removeClass("fts-video-iframe-choice, .fts-using-arrows");
126
+ jQuery(".fts-video-popup-element").attr("src", "").hide();
127
+ jQuery(".fts-iframe-popup-element").show();
128
+ }
129
+ }, 10);
130
+ });
131
+ // CLOSE SLICKREMIX
132
+
133
+
134
+ // Facebook Posts
135
+ jQuery.fn.slickFacebookPopUpFunction = function() {
136
+
137
+ jQuery('.popup-gallery-fb-posts, .popup-gallery-fb, .popup-video-gallery-fb').each(function () {
138
+ var $container = jQuery(this);
139
+ var $imageLinks = $container.find('a.fts-facebook-link-target, a.fts-fb-large-photo, a.fts-view-album-photos-large, a.fts-view-fb-videos-large, a.fts-view-fb-videos-btn');
140
+
141
+ var items = [];
142
+ $imageLinks.each(function () {
143
+ var $item = jQuery(this);
144
+ var type = 'image';
145
+ if ($item.hasClass('fts-jal-fb-vid-image')) {
146
+ type = 'iframe';
147
+ }
148
+ var magItem = {
149
+ src: $item.attr('href'),
150
+ type: type,
151
+ };
152
+
153
+ // SLICKREMIX: THIS ADDS THE LIKES, COMMENTS, DESCRIPTION, DATES ETC TO THE POPUP
154
+ magItem.title = jQuery(this).parents('.fts-fb-photo-post-wrap, .fts-events-list-wrap, .fts-jal-single-fb-post').find('.fts-jal-fb-top-wrap').html() + jQuery(this).parents('.fts-fb-photo-post-wrap, .fts-events-list-wrap, .fts-jal-single-fb-post').find('.fts-likes-shares-etc-wrap').html() + jQuery(this).parents('.fts-fb-photo-post-wrap, .fts-events-list-wrap, .fts-jal-single-fb-post').find('.fts-fb-comments-wrap').html();
155
+
156
+ items.push(magItem);
157
+ });
158
+ $imageLinks.magnificPopup({
159
+ mainClass: 'fts-facebook-popup fts-facebook-styles-popup',
160
+ items: items,
161
+ removalDelay: 150,
162
+ preloader: false,
163
+ closeOnContentClick: false,
164
+ closeOnBgClick: true,
165
+ closeBtnInside: true,
166
+ showCloseBtn: false,
167
+ enableEscapeKey: true,
168
+ autoFocusLast: false,
169
+ gallery:{
170
+ enabled: true,
171
+ navigateByImgClick: false,
172
+ tCounter: '<span class="mfp-counter">%curr% of %total%</span>', // markup of counter
173
+ preload: [0,1], // Will preload 0 - before current, and 1 after the current
174
+ arrowMarkup: '', // markup of an arrow button (slickremix = leave blank so we can show our custom buttons inside the framework)
175
+ },
176
+ type: 'image',
177
+ callbacks: {
178
+ beforeOpen: function() {
179
+ var index = $imageLinks.index(this.st.el);
180
+ if (-1 !== index) {
181
+ this.goTo(index);
182
+ }
183
+ },
184
+ open: function() {
185
+ console.log('Popup is opened');
186
+
187
+ // Reload the share each funcion otherwise you can't open share option.
188
+ jQuery.fn.ftsShare();
189
+
190
+ if(jQuery(".fts-popup-half .mfp-iframe-scaler")[0]){
191
+ jQuery( ".fts-popup-image-position" ).css("height", '591px');
192
+ }
193
+ jQuery(window).resize(function() {
194
+
195
+ jQuery( ".fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".fts-popup-image-position" ).height());
196
+
197
+ jQuery( ".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".mfp-img" ).height());
198
+ });
199
+ jQuery(window).trigger('resize');
200
+
201
+ // slickremix trick to get the poster url from a tag we are clicking and pass it to the video player.
202
+ // We only want to load the poster if the size is mobile because tablets and desktops can/will play video automatically on popup
203
+ if (matchMedia('only screen and (max-device-width: 736px)').matches) {
204
+ var atagvideo = event.target.id;
205
+ var videoposter = jQuery('#'+atagvideo).data('poster');
206
+ var video = jQuery('.fts-fb-vid-popup video');
207
+ video.attr('poster', videoposter);
208
+ // alert(videoposter);
209
+ console.log(videoposter);
210
+ }
211
+ // SLICKREMIX: MUST HAVE THIS IN PLACE TO BE ABLE TO ADD THE CLASS TO BODY SO WE CAN DO ACTIONS ON OUR CUSTOM PREV AND NEXT BUTTONS
212
+ // alert('added fts-using-arrows class on popup open')
213
+ jQuery("body").addClass("fts-using-arrows");
214
+
215
+
216
+ },
217
+ change: function() {
218
+
219
+
220
+ // Reload the share each funcion otherwise you can't open share option.
221
+ jQuery.fn.ftsShare();
222
+
223
+ console.log('Content changed');
224
+ console.log(this.content); // Direct reference to your popup element
225
+ if(jQuery("body").hasClass("fts-using-arrows")) {
226
+
227
+
228
+ if(jQuery(".fts-popup-half .mfp-iframe-scaler")[0]){
229
+ jQuery( ".fts-popup-image-position" ).css("height", '591px');
230
+ // alert('iframe-scaler');
231
+ }
232
+ else{
233
+ if(jQuery(".fts-popup-image-position" ).css("height") == "auto"){
234
+ jQuery( ".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".mfp-img" ).height());
235
+ alert('image');
236
+
237
+ }
238
+ }
239
+
240
+
241
+ }
242
+
243
+ },
244
+
245
+ imageLoadComplete: function() {
246
+ // fires when image in current popup finished loading
247
+ // avaiable since v0.9.0
248
+
249
+
250
+ if(jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).height() < jQuery( ".mfp-img" ).height()){
251
+ jQuery( ".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".mfp-img" ).height());
252
+ // alert('image');
253
+
254
+ }
255
+ else {
256
+ jQuery( ".fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".fts-popup-image-position" ).height());
257
+ // alert('change');
258
+ }
259
+
260
+ },
261
+ markupParse: function(template, values, item) {
262
+ // Triggers each time when content of popup changes

263
+ console.log('Parsing:', template, values, item);
264
+
265
+
266
+
267
+ // SLICKREMIX: MUST HAVE THIS IN PLACE TO BE ABLE TO CHECK WHAT KIND OF VIDEOS ARE BEING CLICKED ON
268
+ if(!jQuery("body").hasClass("fts-using-arrows")) {
269
+
270
+ var ftsLinkCheck = item.src;
271
+
272
+ if (/fbcdn.net/i.test(ftsLinkCheck) && item.type !== 'image') {
273
+ // alert('FB Video Change photo Trigger from MP');
274
+ jQuery("body").addClass("fts-video-iframe-choice");
275
+ }
276
+ else if (!jQuery("body").hasClass("fts-using-arrows")) {
277
+ // alert('Not using arrows open photo Trigger from MP');
278
+ jQuery("body").removeClass("fts-video-iframe-choice");
279
+ }
280
+
281
+ }
282
+ // CLOSE SLICKREMIX
283
+
284
+ },
285
+ afterClose: function() {
286
+ jQuery("body").removeClass("fts-using-arrows");
287
+ console.log('Popup is completely closed');
288
+ },
289
+ },
290
+ image: {
291
+ markup: '' +
292
+ '<div class="mfp-figure"><div class="mfp-close">X</div>'+
293
+ '<div class="fts-popup-wrap">' +
294
+ ' <div class="fts-popup-half ">' +
295
+ ' <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button>' +
296
+ ' <div class="fts-popup-image-position" style="height:591px;">' +
297
+ ' <span class="fts-position-helper"></span><div class="mfp-img"></div>' +
298
+ ' </div>' +
299
+ ' <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button>' +
300
+ ' </div>'+
301
+ '<div class="fts-popup-second-half">' +
302
+ '<div class="mfp-bottom-bar">'+
303
+ '<div class="mfp-title"></div>' +
304
+ '<a class="fts-powered-by-text" href="https://slickremix.com" target="_blank">Powered by Feed Them Social</a>'+
305
+ '<div class="mfp-counter"></div>'+
306
+ '</div>' +
307
+ '</div>' +
308
+ '</div>'+
309
+ '</div>', // Popup HTML markup. `.mfp-img` div will be replaced with img tag, `.mfp-close` by close button
310
+
311
+ tError: '<a href="%url%">The image #%curr%</a> could not be loaded.',
312
+
313
+ },
314
+ iframe: {
315
+ markup: '' +
316
+ '<div class="mfp-figure"><div class="mfp-close">X</div>'+
317
+ '<div class="fts-popup-wrap">' +
318
+ ' <div class="fts-popup-half ">' +
319
+ ' <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button>' +
320
+ ' <div class="fts-popup-image-position">' +
321
+ ' <div class="mfp-iframe-scaler"><iframe class="mfp-iframe fts-iframe-popup-element" frameborder="0" allowfullscreen></iframe><video class="mfp-iframe fts-video-popup-element" allowfullscreen autoplay controls></video>' +
322
+ ' </div>' +
323
+ ' <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button>' +
324
+ '<script>' +
325
+ // SLICKREMIX: MUST HAVE THIS IN PLACE TO BE ABLE TO CHECK WHAT KIND OF VIDEOS ARE BEING CLICKED ON WHEN FIRST LOADED, AFTER THEY ARE LOADED REFER TO THE CLICK FUNCTION FOR THE ERRORS ABOVE
326
+ 'if(jQuery("body").hasClass("fts-video-iframe-choice")){jQuery(".fts-iframe-popup-element").attr("src", "").hide(); } else if(!jQuery("body").hasClass("fts-using-arrows")){jQuery(".fts-video-popup-element").attr("src", "").hide(); }; jQuery(".fts-facebook-popup video").click(function(){jQuery(this).trigger(this.paused ? this.paused ? "play" : "play" : "pause")}); </script>' +
327
+ ' </div>' +
328
+ ' </div>'+
329
+ '<div class="fts-popup-second-half">' +
330
+ '<div class="mfp-bottom-bar">'+
331
+ '<div class="mfp-title"></div>' +
332
+ '<a class="fts-powered-by-text" href="https://slickremix.com" target="_blank">Powered by Feed Them Social</a>'+
333
+ '<div class="mfp-counter"></div>'+
334
+ '</div>' +
335
+ '</div>' +
336
+ '</div>'+
337
+ '</div>', // Popup HTML markup. `.mfp-img` div will be replaced with img tag, `.mfp-close` by close button
338
+
339
+ srcAction: 'iframe_src', // Templating object key. First part defines CSS selector, second attribute. "iframe_src" means: find "iframe" and set attribute "src".


340
+ }
341
+ });
342
+
343
+ });
344
+ }
345
+ //Return the function right away
346
+ jQuery.fn.slickFacebookPopUpFunction();
347
+
348
+ // TEST POPUP WITH ALERTS FOR DEBUGGIN
349
+ // 'if(jQuery("body").hasClass("fts-video-iframe-choice")){alert("fts-video-choice not using arrows"); jQuery(".fts-iframe-popup-element").attr("src", "").hide(); } else if(!jQuery("body").hasClass("fts-using-arrows")){alert("fts-iframe-choice not using arrows"); jQuery(".fts-video-popup-element").attr("src", "").hide(); }; jQuery(".fts-facebook-popup video").click(function(){jQuery(this).trigger(this.paused ? this.paused ? "play" : "play" : "pause")});</script>' +
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
+
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+
385
+
386
+
387
+
388
+ // Facebook Posts
389
+ jQuery.fn.slickInstagramPopUpFunction = function() {
390
+
391
+ jQuery('.popup-gallery').each(function () {
392
+ var $container = jQuery(this);
393
+ var $imageLinks = $container.find('.fts-instagram-link-target');
394
+
395
+ var items = [];
396
+ $imageLinks.each(function () {
397
+ var $item = jQuery(this);
398
+ var type = 'image';
399
+ if ($item.hasClass('fts-instagram-video-link')) {
400
+ type = 'iframe';
401
+ }
402
+ var magItem = {
403
+ src: $item.attr('href'),
404
+ type: type,
405
+ };
406
+ // SLICKREMIX: THIS ADDS THE LIKES, COMMENTS, DESCRIPTION, DATES ETC TO THE POPUP
407
+ magItem.title = jQuery(this).parents('.fts-instagram-wrapper').find('.fts-instagram-popup-profile-wrap').html() + jQuery(this).parents('.fts-instagram-wrapper').find('.slicker-date').html() + jQuery(this).parents('.fts-instagram-wrapper').find('.fts-insta-likes-comments-grab-popup').html() + jQuery(this).parents('.fts-instagram-wrapper').find('.fts-instagram-caption').html();
408
+
409
+ items.push(magItem);
410
+ });
411
+
412
+ $imageLinks.magnificPopup({
413
+ mainClass: 'fts-facebook-popup fts-instagram-styles-popup',
414
+ items: items,
415
+ removalDelay: 150,
416
+ preloader: false,
417
+ closeOnContentClick: false,
418
+ closeOnBgClick: true,
419
+ closeBtnInside: true,
420
+ showCloseBtn: false,
421
+ enableEscapeKey: true,
422
+ autoFocusLast: false,
423
+ gallery:{
424
+ enabled: true,
425
+ navigateByImgClick: false,
426
+ tCounter: '<span class="mfp-counter">%curr% of %total%</span>', // markup of counter
427
+ preload: [0,1], // Will preload 0 - before current, and 1 after the current
428
+ arrowMarkup: '', // markup of an arrow button (slickremix = leave blank so we can show our custom buttons inside the framework)
429
+
430
+ },
431
+ type: 'image',
432
+ callbacks: {
433
+ beforeOpen: function() {
434
+ var index = $imageLinks.index(this.st.el);
435
+ if (-1 !== index) {
436
+ this.goTo(index);
437
+ }
438
+ },
439
+ open: function() {
440
+ console.log('Popup is opened');
441
+
442
+ // Reload the share each funcion otherwise you can't open share option.
443
+ jQuery.fn.ftsShare();
444
+
445
+ // if(jQuery(".fts-popup-half .mfp-iframe-scaler")[0]){
446
+ // jQuery( ".fts-popup-image-position" ).css("height", '471px');
447
+ // }
448
+ jQuery(window).resize(function() {
449
+
450
+ jQuery( ".fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".fts-popup-image-position" ).height());
451
+
452
+ // jQuery( ".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".mfp-img" ).height());
453
+ });
454
+ jQuery(window).trigger('resize');
455
+
456
+
457
+ // slickremix trick to get the poster url from a tag we are clicking and pass it to the video player.
458
+ // We only want to load the poster if the size is mobile because tablets and desktops can/will play video automatically on popup
459
+ if (matchMedia('only screen and (max-device-width: 736px)').matches) {
460
+ var atagvideo = event.target.id;
461
+ var videoposter = jQuery('#'+atagvideo).data('poster');
462
+ var video = jQuery('.fts-fb-vid-popup video');
463
+ video.attr('poster', videoposter);
464
+ // alert(videoposter);
465
+ console.log(videoposter);
466
+ }
467
+ // SLICKREMIX: MUST HAVE THIS IN PLACE TO BE ABLE TO ADD THE CLASS TO BODY SO WE CAN DO ACTIONS ON OUR CUSTOM PREV AND NEXT BUTTONS
468
+ // alert('added fts-using-arrows class on popup open')
469
+ jQuery("body").addClass("fts-using-arrows");
470
+
471
+
472
+ },
473
+ change: function() {
474
+ console.log('Content changed');
475
+ console.log(this.content); // Direct reference to your popup element
476
+
477
+
478
+ // Reload the share each funcion otherwise you can't open share option.
479
+ jQuery.fn.ftsShare();
480
+
481
+
482
+ if(jQuery("body").hasClass("fts-using-arrows")) {
483
+
484
+ }
485
+
486
+ },
487
+
488
+ imageLoadComplete: function() {
489
+ // fires when image in current popup finished loading
490
+ // avaiable since v0.9.0
491
+
492
+ // Reload the share each funcion otherwise you can't open share option.
493
+ jQuery.fn.ftsShare();
494
+
495
+ if(jQuery(".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).height() < jQuery( ".mfp-img" ).height()){
496
+ jQuery( ".fts-popup-image-position, .fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".mfp-img" ).height());
497
+ // alert('image');
498
+
499
+ }
500
+ else {
501
+ jQuery( ".fts-popup-second-half .mfp-bottom-bar" ).css("height", jQuery( ".fts-popup-image-position" ).height());
502
+ // alert('change');
503
+ }
504
+
505
+ },
506
+ markupParse: function(template, values, item) {
507
+ // Triggers each time when content of popup changes

508
+ console.log('Parsing:', template, values, item);
509
+
510
+ // SLICKREMIX: MUST HAVE THIS IN PLACE TO BE ABLE TO CHECK WHAT KIND OF VIDEOS ARE BEING CLICKED ON
511
+ if(!jQuery("body").hasClass("fts-using-arrows")) {
512
+
513
+ var ftsLinkCheck = item.src;
514
+
515
+ if (/fbcdn.net/i.test(ftsLinkCheck) && item.type !== 'image') {
516
+ // alert('FB Video Change photo Trigger from MP');
517
+ jQuery("body").addClass("fts-video-iframe-choice");
518
+ }
519
+ else if (!jQuery("body").hasClass("fts-using-arrows")) {
520
+ // alert('Not using arrows open photo Trigger from MP');
521
+ jQuery("body").removeClass("fts-video-iframe-choice");
522
+ }
523
+
524
+ }
525
+ // CLOSE SLICKREMIX
526
+
527
+ },
528
+ afterClose: function() {
529
+ jQuery("body").removeClass("fts-using-arrows");
530
+ console.log('Popup is completely closed');
531
+ },
532
+ },
533
+ image: {
534
+ markup: '' +
535
+ '<div class="mfp-figure"><div class="mfp-close">X</div>'+
536
+ '<div class="fts-popup-wrap">' +
537
+ ' <div class="fts-popup-half fts-instagram-popup-half">' +
538
+ ' <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button>' +
539
+ ' <div class="fts-popup-image-position">' +
540
+ ' <span class="fts-position-helper"></span><div class="mfp-img"></div>' +
541
+ ' </div>' +
542
+ ' <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button>' +
543
+ ' </div>'+
544
+ '<div class="fts-popup-second-half fts-instagram-popup-second-half">' +
545
+ '<div class="mfp-bottom-bar">'+
546
+ '<div class="mfp-title"></div>' +
547
+ '<a class="fts-powered-by-text" href="http://feedthemsocial.com" target="_blank">Powered by Feed Them Social</a>'+
548
+ '<div class="mfp-counter"></div>'+
549
+ '</div>' +
550
+ '</div>' +
551
+ '</div>'+
552
+ '</div>', // Popup HTML markup. `.mfp-img` div will be replaced with img tag, `.mfp-close` by close button
553
+
554
+ tError: '<a href="%url%">The image #%curr%</a> could not be loaded.',
555
+
556
+ },
557
+ iframe: {
558
+ markup: '' +
559
+ '<div class="mfp-figure"><div class="mfp-close">X</div>'+
560
+ '<div class="fts-popup-wrap">' +
561
+ ' <div class="fts-popup-half fts-instagram-popup-half">' +
562
+ ' <button title="previous" type="button" id="fts-photo-prev" class="mfp-arrow mfp-arrow-left mfp-prevent-close"></button>' +
563
+ ' <div class="fts-popup-image-position">' +
564
+ ' <div class="mfp-iframe-scaler"><iframe class="mfp-iframe fts-iframe-popup-element" frameborder="0" allowfullscreen></iframe><video class="mfp-iframe fts-video-popup-element" allowfullscreen autoplay controls></video>' +
565
+ ' </div>' +
566
+ ' <button title="next" type="button" id="fts-photo-next" class="mfp-arrow mfp-arrow-right mfp-prevent-close"></button>' +
567
+ '<script>' +
568
+ // SLICKREMIX: MUST HAVE THIS IN PLACE TO BE ABLE TO CHECK WHAT KIND OF VIDEOS ARE BEING CLICKED ON WHEN FIRST LOADED, AFTER THEY ARE LOADED REFER TO THE CLICK FUNCTION FOR THE ERRORS ABOVE
569
+ 'if(jQuery("body").hasClass("fts-video-iframe-choice")){jQuery(".fts-iframe-popup-element").attr("src", "").hide(); } else if(!jQuery("body").hasClass("fts-using-arrows")){jQuery(".fts-video-popup-element").attr("src", "").hide(); }; jQuery(".fts-facebook-popup video").click(function(){jQuery(this).trigger(this.paused ? this.paused ? "play" : "play" : "pause")});</script>' +
570
+ ' </div>' +
571
+ ' </div>'+
572
+ '<div class="fts-popup-second-half fts-instagram-popup-second-half">' +
573
+ '<div class="mfp-bottom-bar">'+
574
+ '<div class="mfp-title"></div>' +
575
+ '<a class="fts-powered-by-text" href="http://feedthemsocial.com" target="_blank">Powered by Feed Them Social</a>'+
576
+ '<div class="mfp-counter"></div>'+
577
+ '</div>' +
578
+ '</div>' +
579
+ '</div>'+
580
+ '</div>', // Popup HTML markup. `.mfp-img` div will be replaced with img tag, `.mfp-close` by close button
581
+
582
+ srcAction: 'iframe_src', // Templating object key. First part defines CSS selector, second attribute. "iframe_src" means: find "iframe" and set attribute "src".


583
+ }
584
+ });
585
+
586
+ });
587
+ }
588
+ //Return the function right away
589
+ jQuery.fn.slickInstagramPopUpFunction();
590
+
591
+ // Vine Videos
592
+ jQuery('.fts-vine-wrapper').each(function() { // the containers for all your galleries
593
+ jQuery(this).magnificPopup({
594
+ delegate: 'a.fts-vine-thumbnail',
595
+ tLoading: 'Loading image #%curr%...',
596
+ mainClass: 'fts-vine-vid-popup',
597
+ type:'inline',
598
+ removalDelay: 100,
599
+ midClick: true, // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source.
600
+ gallery: {
601
+ enabled: true,
602
+ navigateByImgClick: true,
603
+ preload: [0,1] // Will preload 0 - before current, and 1 after the current image
604
+ }
605
+ });
606
+ });
607
+ });
includes/error-handler.php CHANGED
@@ -146,11 +146,17 @@ class fts_error_handler
146
  //If just code.
147
  if (isset($feed_data->error_msg)) $output = 'Error: ' . $feed_data->error_msg;
148
  if (isset($feed_data->error_code)) $output .= '<br />Code: ' . $feed_data->error_code;
149
- throw new \Exception('<div style="clear:both; padding:15px 0;">' . $output . '</div>');
150
  }
151
  }
152
  } catch (\Exception $e) {
153
- return array(true, $e->getMessage());
 
 
 
 
 
 
154
  }
155
  }
156
  }
146
  //If just code.
147
  if (isset($feed_data->error_msg)) $output = 'Error: ' . $feed_data->error_msg;
148
  if (isset($feed_data->error_code)) $output .= '<br />Code: ' . $feed_data->error_code;
149
+ throw new \Exception('<div style="clear:both; padding:15px 0;" class="fts-error-m">' . $output . '</div>');
150
  }
151
  }
152
  } catch (\Exception $e) {
153
+ $fb_hide_error_handler_message = get_option('fb_hide_error_handler_message') && get_option('fb_hide_error_handler_message') == 'yes' ? 'yes' : 'no';
154
+ if ($fb_hide_error_handler_message == 'no') {
155
+ return array(true, $e->getMessage());
156
+ }
157
+ else{
158
+ return array(true, '');
159
+ }
160
  }
161
  }
162
  }
includes/feed-metabox-options.php CHANGED
@@ -105,10 +105,10 @@ class Feed_Metabox_Options {
105
  'title' => __('Facebook Page', 'feed-them-social'),
106
  ),
107
  //Facebook Page List of Events
108
- array(
109
- 'value' => 'events',
110
- 'title' => __('Facebook Page List of Events', 'feed-them-social'),
111
- ),
112
  //Facebook Page Single Event Posts
113
  array(
114
  'value' => 'event',
105
  'title' => __('Facebook Page', 'feed-them-social'),
106
  ),
107
  //Facebook Page List of Events
108
+ // array(
109
+ // 'value' => 'events',
110
+ // 'title' => __('Facebook Page List of Events', 'feed-them-social'),
111
+ // ),
112
  //Facebook Page Single Event Posts
113
  array(
114
  'value' => 'event',
includes/feed-them-functions.php CHANGED
@@ -806,6 +806,7 @@ class feed_them_social_functions
806
  'fb_reviews_overall_rating_reviews_text',
807
  'fb_max_image_width',
808
  'fb_hide_images_in_posts',
 
809
  'fb_count_offset',
810
  'fb_hide_no_posts_message',
811
  'fts_facebook_custom_api_token_user_id',
806
  'fb_reviews_overall_rating_reviews_text',
807
  'fb_max_image_width',
808
  'fb_hide_images_in_posts',
809
+ 'fb_hide_error_handler_message',
810
  'fb_count_offset',
811
  'fb_hide_no_posts_message',
812
  'fts_facebook_custom_api_token_user_id',
readme.txt CHANGED
@@ -3,10 +3,10 @@ Contributors: slickremix
3
  Tags: Facebook, Instagram, Twitter, YouTube, Feed
4
  Requires at least: 3.6.0
5
  Tested up to: 4.9.6
6
- Stable tag: 2.4.1
7
  License: GPLv2 or later
8
 
9
- Custom feeds for Facebook Pages, Groups, Events, Album Photos, Videos & Covers, Instagram, Twitter, Pinterest & YouTube on pages, posts or widgets.
10
 
11
  == Description ==
12
  Create Social Feeds of any or all your celebrities, family, friends, yourself, or businesses. Looks great on Desktops, Tablets, and Mobile Devices.
@@ -21,16 +21,16 @@ Create Social Feeds of any or all your celebrities, family, friends, yourself, o
21
 
22
  = Features include the following: =
23
  * Easy to Install and Setup.
24
- * View photos and videos from your Facebook Page, Group, Album Photos, Album Covers or Event in our FREE version.
25
  * Add as many social feeds as you need!
26
  * Display social feeds on any post, page, or sidebar!
27
  * Easily generate all the shortcodes you need for any feed with our SUPER SIMPLE shortcode generator.
28
  * Responsive Social Feeds.
29
  * Customize Font Colors.
30
- * Share options for the Facebook, Instagram and Twitter Feeds.
31
  * Add Like and/or Follow Buttons above or below any feeds.
32
- * With our [Premium Extension](https://www.slickremix.com/product/feed-them-social-premium-extension/) you can set how many posts, pictures, tweets, or videos for each individual social feed! Facebook Groups now has the option to hide the Title or Description too! [See Example Demo](http://feedthemsocial.com/)
33
- * Facebook and Instagram feeds now have Load More Button and Infinite Scroll features available in Premium Version and they are mobile friendly.
34
  * Awesome Support!
35
 
36
  = Demos =
@@ -38,8 +38,6 @@ Create Social Feeds of any or all your celebrities, family, friends, yourself, o
38
  * [Facebook Page Feed Demo](http://feedthemsocial.com/)
39
  * [Facebook Album Photos Feed Demo](http://feedthemsocial.com/facebook-album-photos-demo/)
40
  * [Facebook Album Covers Feed Demo](http://feedthemsocial.com/facebook-album-covers/)
41
- * [Facebook Group Feed Demo](http://feedthemsocial.com/facebook-group-feed-demo/)
42
- * [Facebook Events Feed Demo](http://feedthemsocial.com/facebook-page-events-list/)
43
  * [Instagram Feed Demo](http://feedthemsocial.com/instagram-feed-demo/)
44
  * [Twitter Feed Demo](http://feedthemsocial.com/twitter-feed-demo/)
45
  * [Pinterest Boards Demo](http://feedthemsocial.com/pinterest/)
@@ -78,6 +76,14 @@ Feed Them Social was Developed By SlickRemix --> [https://www.slickremix.com/](h
78
  * Log into WordPress dashboard then click **Plugins** > **Add new** > Then under the title "Install Plugins" click **Upload** > **choose the zip** > **Activate the plugin!**
79
 
80
  == Changelog ==
 
 
 
 
 
 
 
 
81
  = Version 2.4.1 Friday, May 25th, 2018 =
82
  * FIX: Twitter Feed: Twitter cards started displaying because twitters oembed option for displaying twitter videos and removing the tweet info is failing. Now Twitter videos are in a video element instead, which also fixes the issue you may be seeing duplicate images, text, etc.
83
  * FIX: Twitter Options: The option to hide videos
3
  Tags: Facebook, Instagram, Twitter, YouTube, Feed
4
  Requires at least: 3.6.0
5
  Tested up to: 4.9.6
6
+ Stable tag: 2.4.2
7
  License: GPLv2 or later
8
 
9
+ Custom feeds for Facebook Pages, Album Photos, Videos & Covers, Instagram, Twitter, Pinterest & YouTube on pages, posts or widgets.
10
 
11
  == Description ==
12
  Create Social Feeds of any or all your celebrities, family, friends, yourself, or businesses. Looks great on Desktops, Tablets, and Mobile Devices.
21
 
22
  = Features include the following: =
23
  * Easy to Install and Setup.
24
+ * View your Facebook Page, Album Photos or Album Covers in our FREE version.
25
  * Add as many social feeds as you need!
26
  * Display social feeds on any post, page, or sidebar!
27
  * Easily generate all the shortcodes you need for any feed with our SUPER SIMPLE shortcode generator.
28
  * Responsive Social Feeds.
29
  * Customize Font Colors.
30
+ * Share options for the Facebook, Instagram, Twitter, Pinterest and YouTube Feeds.
31
  * Add Like and/or Follow Buttons above or below any feeds.
32
+ * With our [Premium Extension](https://www.slickremix.com/product/feed-them-social-premium-extension/) you can set how many posts, pictures, tweets, or videos for each individual social feed. [See Example Demo](http://feedthemsocial.com/)
33
+ * Facebook, Instagram, Twitter and YouTube feeds have a Load More Button option and Auto Load more posts when you get done scrolling to the end of the feed. These features and much more are available in the Premium Version and they are mobile friendly.
34
  * Awesome Support!
35
 
36
  = Demos =
38
  * [Facebook Page Feed Demo](http://feedthemsocial.com/)
39
  * [Facebook Album Photos Feed Demo](http://feedthemsocial.com/facebook-album-photos-demo/)
40
  * [Facebook Album Covers Feed Demo](http://feedthemsocial.com/facebook-album-covers/)
 
 
41
  * [Instagram Feed Demo](http://feedthemsocial.com/instagram-feed-demo/)
42
  * [Twitter Feed Demo](http://feedthemsocial.com/twitter-feed-demo/)
43
  * [Pinterest Boards Demo](http://feedthemsocial.com/pinterest/)
76
  * Log into WordPress dashboard then click **Plugins** > **Add new** > Then under the title "Install Plugins" click **Upload** > **choose the zip** > **Activate the plugin!**
77
 
78
  == Changelog ==
79
+ = Version 2.4.2 Wednesday, June 13th, 2018 =
80
+ * FIX: Instagram Feed: User data was not getting cached probably cause API usage even if the feed was cached. Additional error check in place should also make sure cached feed is used if error found.
81
+ * FIX: Instagram Options: Message under Access Token will now show if your Access Token has hit an API limit and what the total consuption is. 200 calls per hour is the general limit, Instagram says. This does not mean 200 page loads or visitors, this means how much information is called from Instagram to create your feed. That is why extended cache times are best now.
82
+ * FIX: Facebook Options: Added an option to hide the Facebook error handler.
83
+ * EDIT: Remove all mention of Facebook Group feeds and edited site documentation until further notice.
84
+ * EDIT: Settings > Global Options - Cache Times: Remove all but 1 Day, 2 Days, 1 Week, 2 Weeks and Developer empty cache on reload select options.
85
+ * EDIT: Settings - Remove option to create Events. At this time many people seem to be experiencing more troubles than not, so for the time being we are going to remove the option to create this type of feed.
86
+
87
  = Version 2.4.1 Friday, May 25th, 2018 =
88
  * FIX: Twitter Feed: Twitter cards started displaying because twitters oembed option for displaying twitter videos and removing the tweet info is failing. Now Twitter videos are in a video element instead, which also fixes the issue you may be seeing duplicate images, text, etc.
89
  * FIX: Twitter Options: The option to hide videos