Version Description
Download this release
Release Info
Developer | slickremix |
Plugin | 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 +44 -17
- admin/feed-them-instagram-style-options-page.php +7 -6
- admin/feed-them-settings-page.php +10 -15
- admin/feed-them-system-info.php +5 -0
- feed-them.php +4 -4
- feeds/facebook/facebook-feed.php +29 -32
- feeds/instagram/instagram-feed.php +54 -14
- feeds/js/fts-global-full.js +394 -0
- feeds/js/magnific-popup-full.js +607 -0
- includes/error-handler.php +8 -2
- includes/feed-metabox-options.php +4 -4
- includes/feed-them-functions.php +1 -0
- readme.txt +14 -8
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
|
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="
|
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-
|
144 |
}
|
145 |
?>
|
146 |
<div class="clear"></div>
|
@@ -174,7 +175,7 @@ class FTS_facebook_options_page
|
|
174 |
|
175 |
</div>
|
176 |
|
177 |
-
<a href="
|
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 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
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 |
-
|
62 |
-
|
63 |
-
|
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 |
-
|
|
|
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 |
-
|
1166 |
-
|
1167 |
-
|
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="
|
4864 |
-
<option value="
|
4865 |
-
<option value="
|
4866 |
-
<option value="
|
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
|
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:
|
11 |
-
* Version: 2.4.
|
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.
|
19 |
* License: GPLv2 or later
|
20 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
21 |
*
|
22 |
-
* @version 2.4.
|
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 |
-
|
1239 |
-
|
1240 |
$access_token = get_option('fts_facebook_custom_api_token');
|
1241 |
-
|
1242 |
-
|
1243 |
//Randomizer
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
|
1256 |
-
|
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 |
-
|
1514 |
-
|
1515 |
-
|
1516 |
-
|
1517 |
-
|
1518 |
-
|
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 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
233 |
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
263 |
-
|
264 |
-
|
|
|
265 |
|
266 |
//->pagination->next_url
|
267 |
-
|
268 |
-
|
269 |
-
|
|
|
|
|
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">×</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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
109 |
-
|
110 |
-
|
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.
|
7 |
License: GPLv2 or later
|
8 |
|
9 |
-
Custom feeds for Facebook Pages,
|
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
|
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
|
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
|
33 |
-
* Facebook and
|
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
|