Custom Facebook Feed - Version 2.14

Version Description

  • New: Email alerts for critical issues. If there's an issue with a Facebook feed on your website which hasn't been resolved yet then you'll receive an email notification to let you know. This is sent once per week until the issue is resolved. These emails can be disabled by using the following setting: Facebook Feed > Customize > Misc > Feed Issue Email Report.
  • New: Admin notifications for critical issues. If there is an error with the feed, admins will see notices in the dashboard and on the front-end of the site along with instructions on how to resolve the issue. Front-end admin notifications can be disabled by using the following setting: Facebook Feed > Customize > Misc > Disable Admin Error Notice.
  • New: Added a WordPress 'Site Health' integration. If there is a critical error with your feeds, it will now be flagged in the site health page.
  • New: Added "About Us" page for those who would like to learn more about Smash Balloon and our other products. Go to Facebook Feed -> About Us in the dashboard.
Download this release

Release Info

Developer smashballoon
Plugin Icon 128x128 Custom Facebook Feed
Version 2.14
Comparing to
See all releases

Code changes from version 2.13 to 2.14

README.txt CHANGED
@@ -4,7 +4,7 @@ Tags: Facebook, Facebook feed, Facebook posts, Facebook wall, Facebook page
4
  Requires at least: 3.0
5
  Requires PHP: 5.2
6
  Tested up to: 5.4
7
- Stable tag: 2.13
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -255,6 +255,12 @@ The most common reason for this is that an add-on or extension you have installe
255
  9. It's super easy to display your Facebook feed in any page or post
256
 
257
  == Changelog ==
 
 
 
 
 
 
258
  = 2.13 =
259
  * New: Added a “Custom Facebook Feed” Gutenberg block to use in the block editor, allowing you to easily add a feed to posts and pages.
260
  * New: Added support for translations.
4
  Requires at least: 3.0
5
  Requires PHP: 5.2
6
  Tested up to: 5.4
7
+ Stable tag: 2.14
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
255
  9. It's super easy to display your Facebook feed in any page or post
256
 
257
  == Changelog ==
258
+ = 2.14 =
259
+ * New: Email alerts for critical issues. If there's an issue with a Facebook feed on your website which hasn't been resolved yet then you'll receive an email notification to let you know. This is sent once per week until the issue is resolved. These emails can be disabled by using the following setting: Facebook Feed > Customize > Misc > Feed Issue Email Report.
260
+ * New: Admin notifications for critical issues. If there is an error with the feed, admins will see notices in the dashboard and on the front-end of the site along with instructions on how to resolve the issue. Front-end admin notifications can be disabled by using the following setting: Facebook Feed > Customize > Misc > Disable Admin Error Notice.
261
+ * New: Added a WordPress 'Site Health' integration. If there is a critical error with your feeds, it will now be flagged in the site health page.
262
+ * New: Added "About Us" page for those who would like to learn more about Smash Balloon and our other products. Go to Facebook Feed -> About Us in the dashboard.
263
+
264
  = 2.13 =
265
  * New: Added a “Custom Facebook Feed” Gutenberg block to use in the block editor, allowing you to easily add a feed to posts and pages.
266
  * New: Added support for translations.
admin/PluginSilentUpgrader.php ADDED
@@ -0,0 +1,576 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CFF\Helpers;
4
+
5
+ use WP_Error;
6
+ use WP_Upgrader;
7
+ use WP_Filesystem_Base;
8
+
9
+ /** \WP_Upgrader class */
10
+ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
11
+
12
+ /** \Plugin_Upgrader class */
13
+ require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php';
14
+
15
+ /**
16
+ * In WP 5.3 a PHP 5.6 splat operator (...$args) was added to \WP_Upgrader_Skin::feedback().
17
+ * We need to remove all calls to *Skin::feedback() method, as we can't override it in own Skins
18
+ * without breaking support for PHP 5.3-5.5.
19
+ *
20
+ * @internal Please do not use this class outside of core WPForms development. May be removed at any time.
21
+ *
22
+ * @since 1.5.6.1
23
+ */
24
+ class PluginSilentUpgrader extends \Plugin_Upgrader {
25
+
26
+ /**
27
+ * Run an upgrade/installation.
28
+ *
29
+ * Attempts to download the package (if it is not a local file), unpack it, and
30
+ * install it in the destination folder.
31
+ *
32
+ * @since 1.5.6.1
33
+ *
34
+ * @param array $options {
35
+ * Array or string of arguments for upgrading/installing a package.
36
+ *
37
+ * @type string $package The full path or URI of the package to install.
38
+ * Default empty.
39
+ * @type string $destination The full path to the destination folder.
40
+ * Default empty.
41
+ * @type bool $clear_destination Whether to delete any files already in the
42
+ * destination folder. Default false.
43
+ * @type bool $clear_working Whether to delete the files form the working
44
+ * directory after copying to the destination.
45
+ * Default false.
46
+ * @type bool $abort_if_destination_exists Whether to abort the installation if the destination
47
+ * folder already exists. When true, `$clear_destination`
48
+ * should be false. Default true.
49
+ * @type bool $is_multi Whether this run is one of multiple upgrade/installation
50
+ * actions being performed in bulk. When true, the skin
51
+ * WP_Upgrader::header() and WP_Upgrader::footer()
52
+ * aren't called. Default false.
53
+ * @type array $hook_extra Extra arguments to pass to the filter hooks called by
54
+ * WP_Upgrader::run().
55
+ * }
56
+ * @return array|false|WP_error The result from self::install_package() on success, otherwise a WP_Error,
57
+ * or false if unable to connect to the filesystem.
58
+ */
59
+ public function run( $options ) {
60
+
61
+ $defaults = array(
62
+ 'package' => '', // Please always pass this.
63
+ 'destination' => '', // And this
64
+ 'clear_destination' => false,
65
+ 'abort_if_destination_exists' => true, // Abort if the Destination directory exists, Pass clear_destination as false please
66
+ 'clear_working' => true,
67
+ 'is_multi' => false,
68
+ 'hook_extra' => array(), // Pass any extra $hook_extra args here, this will be passed to any hooked filters.
69
+ );
70
+
71
+ $options = wp_parse_args( $options, $defaults );
72
+
73
+ /**
74
+ * Filters the package options before running an update.
75
+ *
76
+ * See also {@see 'upgrader_process_complete'}.
77
+ *
78
+ * @since 4.3.0
79
+ *
80
+ * @param array $options {
81
+ * Options used by the upgrader.
82
+ *
83
+ * @type string $package Package for update.
84
+ * @type string $destination Update location.
85
+ * @type bool $clear_destination Clear the destination resource.
86
+ * @type bool $clear_working Clear the working resource.
87
+ * @type bool $abort_if_destination_exists Abort if the Destination directory exists.
88
+ * @type bool $is_multi Whether the upgrader is running multiple times.
89
+ * @type array $hook_extra {
90
+ * Extra hook arguments.
91
+ *
92
+ * @type string $action Type of action. Default 'update'.
93
+ * @type string $type Type of update process. Accepts 'plugin', 'theme', or 'core'.
94
+ * @type bool $bulk Whether the update process is a bulk update. Default true.
95
+ * @type string $plugin Path to the plugin file relative to the plugins directory.
96
+ * @type string $theme The stylesheet or template name of the theme.
97
+ * @type string $language_update_type The language pack update type. Accepts 'plugin', 'theme',
98
+ * or 'core'.
99
+ * @type object $language_update The language pack update offer.
100
+ * }
101
+ * }
102
+ */
103
+ $options = apply_filters( 'upgrader_package_options', $options );
104
+
105
+ if ( ! $options['is_multi'] ) { // call $this->header separately if running multiple times
106
+ $this->skin->header();
107
+ }
108
+
109
+ // Connect to the Filesystem first.
110
+ $res = $this->fs_connect( array( WP_CONTENT_DIR, $options['destination'] ) );
111
+ // Mainly for non-connected filesystem.
112
+ if ( ! $res ) {
113
+ if ( ! $options['is_multi'] ) {
114
+ $this->skin->footer();
115
+ }
116
+ return false;
117
+ }
118
+
119
+ $this->skin->before();
120
+
121
+ if ( is_wp_error( $res ) ) {
122
+ $this->skin->error( $res );
123
+ $this->skin->after();
124
+ if ( ! $options['is_multi'] ) {
125
+ $this->skin->footer();
126
+ }
127
+ return $res;
128
+ }
129
+
130
+ /*
131
+ * Download the package (Note, This just returns the filename
132
+ * of the file if the package is a local file)
133
+ */
134
+ $download = $this->download_package( $options['package'], true );
135
+
136
+ // Allow for signature soft-fail.
137
+ // WARNING: This may be removed in the future.
138
+ if ( is_wp_error( $download ) && $download->get_error_data( 'softfail-filename' ) ) {
139
+
140
+ // Don't output the 'no signature could be found' failure message for now.
141
+ if ( 'signature_verification_no_signature' != $download->get_error_code() || WP_DEBUG ) {
142
+ // Outout the failure error as a normal feedback, and not as an error:
143
+ //$this->skin->feedback( $download->get_error_message() );
144
+
145
+ // Report this failure back to WordPress.org for debugging purposes.
146
+ wp_version_check(
147
+ array(
148
+ 'signature_failure_code' => $download->get_error_code(),
149
+ 'signature_failure_data' => $download->get_error_data(),
150
+ )
151
+ );
152
+ }
153
+
154
+ // Pretend this error didn't happen.
155
+ $download = $download->get_error_data( 'softfail-filename' );
156
+ }
157
+
158
+ if ( is_wp_error( $download ) ) {
159
+ $this->skin->error( $download );
160
+ $this->skin->after();
161
+ if ( ! $options['is_multi'] ) {
162
+ $this->skin->footer();
163
+ }
164
+ return $download;
165
+ }
166
+
167
+ $delete_package = ( $download != $options['package'] ); // Do not delete a "local" file
168
+
169
+ // Unzips the file into a temporary directory.
170
+ $working_dir = $this->unpack_package( $download, $delete_package );
171
+ if ( is_wp_error( $working_dir ) ) {
172
+ $this->skin->error( $working_dir );
173
+ $this->skin->after();
174
+ if ( ! $options['is_multi'] ) {
175
+ $this->skin->footer();
176
+ }
177
+ return $working_dir;
178
+ }
179
+
180
+ // With the given options, this installs it to the destination directory.
181
+ $result = $this->install_package(
182
+ array(
183
+ 'source' => $working_dir,
184
+ 'destination' => $options['destination'],
185
+ 'clear_destination' => $options['clear_destination'],
186
+ 'abort_if_destination_exists' => $options['abort_if_destination_exists'],
187
+ 'clear_working' => $options['clear_working'],
188
+ 'hook_extra' => $options['hook_extra'],
189
+ )
190
+ );
191
+
192
+ $this->skin->set_result( $result );
193
+ if ( is_wp_error( $result ) ) {
194
+ $this->skin->error( $result );
195
+ //$this->skin->feedback( 'process_failed' );
196
+ } else {
197
+ // Installation succeeded.
198
+ //$this->skin->feedback( 'process_success' );
199
+ }
200
+
201
+ $this->skin->after();
202
+
203
+ if ( ! $options['is_multi'] ) {
204
+
205
+ /**
206
+ * Fires when the upgrader process is complete.
207
+ *
208
+ * See also {@see 'upgrader_package_options'}.
209
+ *
210
+ * @since 3.6.0
211
+ * @since 3.7.0 Added to WP_Upgrader::run().
212
+ * @since 4.6.0 `$translations` was added as a possible argument to `$hook_extra`.
213
+ *
214
+ * @param WP_Upgrader $this WP_Upgrader instance. In other contexts, $this, might be a
215
+ * Theme_Upgrader, Plugin_Upgrader, Core_Upgrade, or Language_Pack_Upgrader instance.
216
+ * @param array $hook_extra {
217
+ * Array of bulk item update data.
218
+ *
219
+ * @type string $action Type of action. Default 'update'.
220
+ * @type string $type Type of update process. Accepts 'plugin', 'theme', 'translation', or 'core'.
221
+ * @type bool $bulk Whether the update process is a bulk update. Default true.
222
+ * @type array $plugins Array of the basename paths of the plugins' main files.
223
+ * @type array $themes The theme slugs.
224
+ * @type array $translations {
225
+ * Array of translations update data.
226
+ *
227
+ * @type string $language The locale the translation is for.
228
+ * @type string $type Type of translation. Accepts 'plugin', 'theme', or 'core'.
229
+ * @type string $slug Text domain the translation is for. The slug of a theme/plugin or
230
+ * 'default' for core translations.
231
+ * @type string $version The version of a theme, plugin, or core.
232
+ * }
233
+ * }
234
+ */
235
+ do_action( 'upgrader_process_complete', $this, $options['hook_extra'] );
236
+
237
+ $this->skin->footer();
238
+ }
239
+
240
+ return $result;
241
+ }
242
+
243
+ /**
244
+ * Toggle maintenance mode for the site.
245
+ *
246
+ * Create/delete the maintenance file to enable/disable maintenance mode.
247
+ *
248
+ * @since 2.8.0
249
+ *
250
+ * @global WP_Filesystem_Base $wp_filesystem Subclass
251
+ *
252
+ * @param bool $enable True to enable maintenance mode, false to disable.
253
+ */
254
+ public function maintenance_mode( $enable = false ) {
255
+ global $wp_filesystem;
256
+ $file = $wp_filesystem->abspath() . '.maintenance';
257
+ if ( $enable ) {
258
+ //$this->skin->feedback( 'maintenance_start' );
259
+ // Create maintenance file to signal that we are upgrading
260
+ $maintenance_string = '<?php $upgrading = ' . time() . '; ?>';
261
+ $wp_filesystem->delete( $file );
262
+ $wp_filesystem->put_contents( $file, $maintenance_string, FS_CHMOD_FILE );
263
+ } elseif ( ! $enable && $wp_filesystem->exists( $file ) ) {
264
+ //$this->skin->feedback( 'maintenance_end' );
265
+ $wp_filesystem->delete( $file );
266
+ }
267
+ }
268
+
269
+ /**
270
+ * Download a package.
271
+ *
272
+ * @since 2.8.0
273
+ *
274
+ * @param string $package The URI of the package. If this is the full path to an
275
+ * existing local file, it will be returned untouched.
276
+ * @param bool $check_signatures Whether to validate file signatures. Default false.
277
+ * @return string|WP_Error The full path to the downloaded package file, or a WP_Error object.
278
+ */
279
+ public function download_package( $package, $check_signatures = false ) {
280
+
281
+ /**
282
+ * Filters whether to return the package.
283
+ *
284
+ * @since 3.7.0
285
+ *
286
+ * @param bool $reply Whether to bail without returning the package.
287
+ * Default false.
288
+ * @param string $package The package file name.
289
+ * @param WP_Upgrader $this The WP_Upgrader instance.
290
+ */
291
+ $reply = apply_filters( 'upgrader_pre_download', false, $package, $this );
292
+ if ( false !== $reply ) {
293
+ return $reply;
294
+ }
295
+
296
+ if ( ! preg_match( '!^(http|https|ftp)://!i', $package ) && file_exists( $package ) ) { //Local file or remote?
297
+ return $package; //must be a local file..
298
+ }
299
+
300
+ if ( empty( $package ) ) {
301
+ return new WP_Error( 'no_package', $this->strings['no_package'] );
302
+ }
303
+
304
+ //$this->skin->feedback( 'downloading_package', $package );
305
+
306
+ $download_file = download_url( $package, 300, $check_signatures );
307
+
308
+ if ( is_wp_error( $download_file ) && ! $download_file->get_error_data( 'softfail-filename' ) ) {
309
+ return new WP_Error( 'download_failed', $this->strings['download_failed'], $download_file->get_error_message() );
310
+ }
311
+
312
+ return $download_file;
313
+ }
314
+
315
+ /**
316
+ * Unpack a compressed package file.
317
+ *
318
+ * @since 2.8.0
319
+ *
320
+ * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
321
+ *
322
+ * @param string $package Full path to the package file.
323
+ * @param bool $delete_package Optional. Whether to delete the package file after attempting
324
+ * to unpack it. Default true.
325
+ * @return string|WP_Error The path to the unpacked contents, or a WP_Error on failure.
326
+ */
327
+ public function unpack_package( $package, $delete_package = true ) {
328
+ global $wp_filesystem;
329
+
330
+ //$this->skin->feedback( 'unpack_package' );
331
+
332
+ $upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade/';
333
+
334
+ //Clean up contents of upgrade directory beforehand.
335
+ $upgrade_files = $wp_filesystem->dirlist( $upgrade_folder );
336
+ if ( ! empty( $upgrade_files ) ) {
337
+ foreach ( $upgrade_files as $file ) {
338
+ $wp_filesystem->delete( $upgrade_folder . $file['name'], true );
339
+ }
340
+ }
341
+
342
+ // We need a working directory - Strip off any .tmp or .zip suffixes
343
+ $working_dir = $upgrade_folder . basename( basename( $package, '.tmp' ), '.zip' );
344
+
345
+ // Clean up working directory
346
+ if ( $wp_filesystem->is_dir( $working_dir ) ) {
347
+ $wp_filesystem->delete( $working_dir, true );
348
+ }
349
+
350
+ // Unzip package to working directory
351
+ $result = unzip_file( $package, $working_dir );
352
+
353
+ // Once extracted, delete the package if required.
354
+ if ( $delete_package ) {
355
+ unlink( $package );
356
+ }
357
+
358
+ if ( is_wp_error( $result ) ) {
359
+ $wp_filesystem->delete( $working_dir, true );
360
+ if ( 'incompatible_archive' == $result->get_error_code() ) {
361
+ return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], $result->get_error_data() );
362
+ }
363
+ return $result;
364
+ }
365
+
366
+ return $working_dir;
367
+ }
368
+
369
+ /**
370
+ * Install a package.
371
+ *
372
+ * Copies the contents of a package form a source directory, and installs them in
373
+ * a destination directory. Optionally removes the source. It can also optionally
374
+ * clear out the destination folder if it already exists.
375
+ *
376
+ * @since 2.8.0
377
+ *
378
+ * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
379
+ * @global array $wp_theme_directories
380
+ *
381
+ * @param array|string $args {
382
+ * Optional. Array or string of arguments for installing a package. Default empty array.
383
+ *
384
+ * @type string $source Required path to the package source. Default empty.
385
+ * @type string $destination Required path to a folder to install the package in.
386
+ * Default empty.
387
+ * @type bool $clear_destination Whether to delete any files already in the destination
388
+ * folder. Default false.
389
+ * @type bool $clear_working Whether to delete the files form the working directory
390
+ * after copying to the destination. Default false.
391
+ * @type bool $abort_if_destination_exists Whether to abort the installation if
392
+ * the destination folder already exists. Default true.
393
+ * @type array $hook_extra Extra arguments to pass to the filter hooks called by
394
+ * WP_Upgrader::install_package(). Default empty array.
395
+ * }
396
+ *
397
+ * @return array|WP_Error The result (also stored in `WP_Upgrader::$result`), or a WP_Error on failure.
398
+ */
399
+ public function install_package( $args = array() ) {
400
+ global $wp_filesystem, $wp_theme_directories;
401
+
402
+ $defaults = array(
403
+ 'source' => '', // Please always pass this
404
+ 'destination' => '', // and this
405
+ 'clear_destination' => false,
406
+ 'clear_working' => false,
407
+ 'abort_if_destination_exists' => true,
408
+ 'hook_extra' => array(),
409
+ );
410
+
411
+ $args = wp_parse_args( $args, $defaults );
412
+
413
+ // These were previously extract()'d.
414
+ $source = $args['source'];
415
+ $destination = $args['destination'];
416
+ $clear_destination = $args['clear_destination'];
417
+
418
+ set_time_limit( 300 );
419
+
420
+ if ( empty( $source ) || empty( $destination ) ) {
421
+ return new WP_Error( 'bad_request', $this->strings['bad_request'] );
422
+ }
423
+ //$this->skin->feedback( 'installing_package' );
424
+
425
+ /**
426
+ * Filters the install response before the installation has started.
427
+ *
428
+ * Returning a truthy value, or one that could be evaluated as a WP_Error
429
+ * will effectively short-circuit the installation, returning that value
430
+ * instead.
431
+ *
432
+ * @since 2.8.0
433
+ *
434
+ * @param bool|WP_Error $response Response.
435
+ * @param array $hook_extra Extra arguments passed to hooked filters.
436
+ */
437
+ $res = apply_filters( 'upgrader_pre_install', true, $args['hook_extra'] );
438
+
439
+ if ( is_wp_error( $res ) ) {
440
+ return $res;
441
+ }
442
+
443
+ //Retain the Original source and destinations
444
+ $remote_source = $args['source'];
445
+ $local_destination = $destination;
446
+
447
+ $source_files = array_keys( $wp_filesystem->dirlist( $remote_source ) );
448
+ $remote_destination = $wp_filesystem->find_folder( $local_destination );
449
+
450
+ //Locate which directory to copy to the new folder, This is based on the actual folder holding the files.
451
+ if ( 1 == count( $source_files ) && $wp_filesystem->is_dir( trailingslashit( $args['source'] ) . $source_files[0] . '/' ) ) { //Only one folder? Then we want its contents.
452
+ $source = trailingslashit( $args['source'] ) . trailingslashit( $source_files[0] );
453
+ } elseif ( count( $source_files ) == 0 ) {
454
+ return new WP_Error( 'incompatible_archive_empty', $this->strings['incompatible_archive'], $this->strings['no_files'] ); // There are no files?
455
+ } else { // It's only a single file, the upgrader will use the folder name of this file as the destination folder. Folder name is based on zip filename.
456
+ $source = trailingslashit( $args['source'] );
457
+ }
458
+
459
+ /**
460
+ * Filters the source file location for the upgrade package.
461
+ *
462
+ * @since 2.8.0
463
+ * @since 4.4.0 The $hook_extra parameter became available.
464
+ *
465
+ * @param string $source File source location.
466
+ * @param string $remote_source Remote file source location.
467
+ * @param WP_Upgrader $this WP_Upgrader instance.
468
+ * @param array $hook_extra Extra arguments passed to hooked filters.
469
+ */
470
+ $source = apply_filters( 'upgrader_source_selection', $source, $remote_source, $this, $args['hook_extra'] );
471
+
472
+ if ( is_wp_error( $source ) ) {
473
+ return $source;
474
+ }
475
+
476
+ // Has the source location changed? If so, we need a new source_files list.
477
+ if ( $source !== $remote_source ) {
478
+ $source_files = array_keys( $wp_filesystem->dirlist( $source ) );
479
+ }
480
+
481
+ /*
482
+ * Protection against deleting files in any important base directories.
483
+ * Theme_Upgrader & Plugin_Upgrader also trigger this, as they pass the
484
+ * destination directory (WP_PLUGIN_DIR / wp-content/themes) intending
485
+ * to copy the directory into the directory, whilst they pass the source
486
+ * as the actual files to copy.
487
+ */
488
+ $protected_directories = array( ABSPATH, WP_CONTENT_DIR, WP_PLUGIN_DIR, WP_CONTENT_DIR . '/themes' );
489
+
490
+ if ( is_array( $wp_theme_directories ) ) {
491
+ $protected_directories = array_merge( $protected_directories, $wp_theme_directories );
492
+ }
493
+
494
+ if ( in_array( $destination, $protected_directories ) ) {
495
+ $remote_destination = trailingslashit( $remote_destination ) . trailingslashit( basename( $source ) );
496
+ $destination = trailingslashit( $destination ) . trailingslashit( basename( $source ) );
497
+ }
498
+
499
+ if ( $clear_destination ) {
500
+ // We're going to clear the destination if there's something there.
501
+ //$this->skin->feedback( 'remove_old' );
502
+
503
+ $removed = $this->clear_destination( $remote_destination );
504
+
505
+ /**
506
+ * Filters whether the upgrader cleared the destination.
507
+ *
508
+ * @since 2.8.0
509
+ *
510
+ * @param mixed $removed Whether the destination was cleared. true on success, WP_Error on failure
511
+ * @param string $local_destination The local package destination.
512
+ * @param string $remote_destination The remote package destination.
513
+ * @param array $hook_extra Extra arguments passed to hooked filters.
514
+ */
515
+ $removed = apply_filters( 'upgrader_clear_destination', $removed, $local_destination, $remote_destination, $args['hook_extra'] );
516
+
517
+ if ( is_wp_error( $removed ) ) {
518
+ return $removed;
519
+ }
520
+ } elseif ( $args['abort_if_destination_exists'] && $wp_filesystem->exists( $remote_destination ) ) {
521
+ //If we're not clearing the destination folder and something exists there already, Bail.
522
+ //But first check to see if there are actually any files in the folder.
523
+ $_files = $wp_filesystem->dirlist( $remote_destination );
524
+ if ( ! empty( $_files ) ) {
525
+ $wp_filesystem->delete( $remote_source, true ); //Clear out the source files.
526
+ return new WP_Error( 'folder_exists', $this->strings['folder_exists'], $remote_destination );
527
+ }
528
+ }
529
+
530
+ //Create destination if needed
531
+ if ( ! $wp_filesystem->exists( $remote_destination ) ) {
532
+ if ( ! $wp_filesystem->mkdir( $remote_destination, FS_CHMOD_DIR ) ) {
533
+ return new WP_Error( 'mkdir_failed_destination', $this->strings['mkdir_failed'], $remote_destination );
534
+ }
535
+ }
536
+ // Copy new version of item into place.
537
+ $result = copy_dir( $source, $remote_destination );
538
+ if ( is_wp_error( $result ) ) {
539
+ if ( $args['clear_working'] ) {
540
+ $wp_filesystem->delete( $remote_source, true );
541
+ }
542
+ return $result;
543
+ }
544
+
545
+ //Clear the Working folder?
546
+ if ( $args['clear_working'] ) {
547
+ $wp_filesystem->delete( $remote_source, true );
548
+ }
549
+
550
+ $destination_name = basename( str_replace( $local_destination, '', $destination ) );
551
+ if ( '.' == $destination_name ) {
552
+ $destination_name = '';
553
+ }
554
+
555
+ $this->result = compact( 'source', 'source_files', 'destination', 'destination_name', 'local_destination', 'remote_destination', 'clear_destination' );
556
+
557
+ /**
558
+ * Filters the installation response after the installation has finished.
559
+ *
560
+ * @since 2.8.0
561
+ *
562
+ * @param bool $response Installation response.
563
+ * @param array $hook_extra Extra arguments passed to hooked filters.
564
+ * @param array $result Installation result data.
565
+ */
566
+ $res = apply_filters( 'upgrader_post_install', true, $args['hook_extra'], $this->result );
567
+
568
+ if ( is_wp_error( $res ) ) {
569
+ $this->result = $res;
570
+ return $res;
571
+ }
572
+
573
+ //Bombard the calling function will all the info which we've just used.
574
+ return $this->result;
575
+ }
576
+ }
admin/PluginSilentUpgraderSkin.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CFF\Helpers;
4
+
5
+ /** \WP_Upgrader_Skin class */
6
+ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader-skin.php';
7
+
8
+ /**
9
+ * Class PluginSilentUpgraderSkin.
10
+ *
11
+ * @internal Please do not use this class outside of core WPForms development. May be removed at any time.
12
+ *
13
+ * @since 1.5.6.1
14
+ */
15
+ class PluginSilentUpgraderSkin extends \WP_Upgrader_Skin {
16
+
17
+ /**
18
+ * Empty out the header of its HTML content and only check to see if it has
19
+ * been performed or not.
20
+ *
21
+ * @since 1.5.6.1
22
+ */
23
+ public function header() {
24
+ }
25
+
26
+ /**
27
+ * Empty out the footer of its HTML contents.
28
+ *
29
+ * @since 1.5.6.1
30
+ */
31
+ public function footer() {
32
+ }
33
+
34
+ /**
35
+ * Instead of outputting HTML for errors, just return them.
36
+ * Ajax request will just ignore it.
37
+ *
38
+ * @since 1.5.6.1
39
+ *
40
+ * @param array $errors Array of errors with the install process.
41
+ *
42
+ * @return array
43
+ */
44
+ public function error( $errors ) {
45
+ return $errors;
46
+ }
47
+
48
+ /**
49
+ * Empty out JavaScript output that calls function to decrement the update counts.
50
+ *
51
+ * @since 1.5.6.1
52
+ *
53
+ * @param string $type Type of update count to decrement.
54
+ */
55
+ public function decrement_update_count( $type ) {
56
+ }
57
+ }
admin/addon-functions.php ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
+
4
+ /**
5
+ * Deactivate addon.
6
+ *
7
+ * @since 1.0.0
8
+ */
9
+ function cff_deactivate_addon() {
10
+
11
+ // Run a security check.
12
+ check_ajax_referer( 'cff-admin', 'nonce' );
13
+
14
+ // Check for permissions.
15
+ if ( ! current_user_can( 'manage_instagram_feed_options' ) ) {
16
+ wp_send_json_error();
17
+ }
18
+
19
+ $type = 'addon';
20
+ if ( ! empty( $_POST['type'] ) ) {
21
+ $type = sanitize_key( $_POST['type'] );
22
+ }
23
+
24
+ if ( isset( $_POST['plugin'] ) ) {
25
+ deactivate_plugins( $_POST['plugin'] );
26
+
27
+ if ( 'plugin' === $type ) {
28
+ wp_send_json_success( esc_html__( 'Plugin deactivated.', 'custom-facebook-feed' ) );
29
+ } else {
30
+ wp_send_json_success( esc_html__( 'Addon deactivated.', 'custom-facebook-feed' ) );
31
+ }
32
+ }
33
+
34
+ wp_send_json_error( esc_html__( 'Could not deactivate the addon. Please deactivate from the Plugins page.', 'custom-facebook-feed' ) );
35
+ }
36
+ add_action( 'wp_ajax_cff_deactivate_addon', 'cff_deactivate_addon' );
37
+
38
+ /**
39
+ * Activate addon.
40
+ *
41
+ * @since 1.0.0
42
+ */
43
+ function cff_activate_addon() {
44
+
45
+ // Run a security check.
46
+ check_ajax_referer( 'cff-admin', 'nonce' );
47
+
48
+ // Check for permissions.
49
+ if ( ! current_user_can( 'manage_options' ) ) {
50
+ wp_send_json_error();
51
+ }
52
+
53
+ if ( isset( $_POST['plugin'] ) ) {
54
+
55
+ $type = 'addon';
56
+ if ( ! empty( $_POST['type'] ) ) {
57
+ $type = sanitize_key( $_POST['type'] );
58
+ }
59
+
60
+ $activate = activate_plugins( $_POST['plugin'] );
61
+
62
+ if ( ! is_wp_error( $activate ) ) {
63
+ if ( 'plugin' === $type ) {
64
+ wp_send_json_success( esc_html__( 'Plugin activated.', 'custom-facebook-feed' ) );
65
+ } else {
66
+ wp_send_json_success( esc_html__( 'Addon activated.', 'custom-facebook-feed' ) );
67
+ }
68
+ }
69
+ }
70
+
71
+ wp_send_json_error( esc_html__( 'Could not activate addon. Please activate from the Plugins page.', 'custom-facebook-feed' ) );
72
+ }
73
+ add_action( 'wp_ajax_cff_activate_addon', 'cff_activate_addon' );
74
+
75
+ /**
76
+ * Install addon.
77
+ *
78
+ * @since 1.0.0
79
+ */
80
+ function cff_install_addon() {
81
+
82
+ // Run a security check.
83
+ check_ajax_referer( 'cff-admin', 'nonce' );
84
+
85
+ // Check for permissions.
86
+ if ( ! current_user_can( 'manage_options' ) ) {
87
+ wp_send_json_error();
88
+ }
89
+
90
+ $error = esc_html__( 'Could not install addon. Please download from smashballoon.com and install manually.', 'custom-facebook-feed' );
91
+
92
+ if ( empty( $_POST['plugin'] ) ) {
93
+ wp_send_json_error( $error );
94
+ }
95
+
96
+ // Set the current screen to avoid undefined notices.
97
+ set_current_screen( 'cff-about' );
98
+
99
+ // Prepare variables.
100
+ $url = esc_url_raw(
101
+ add_query_arg(
102
+ array(
103
+ 'page' => 'cff-about',
104
+ ),
105
+ admin_url( 'admin.php' )
106
+ )
107
+ );
108
+
109
+ $creds = request_filesystem_credentials( $url, '', false, false, null );
110
+
111
+ // Check for file system permissions.
112
+ if ( false === $creds ) {
113
+ wp_send_json_error( $error );
114
+ }
115
+
116
+ if ( ! WP_Filesystem( $creds ) ) {
117
+ wp_send_json_error( $error );
118
+ }
119
+
120
+ /*
121
+ * We do not need any extra credentials if we have gotten this far, so let's install the plugin.
122
+ */
123
+
124
+ require_once CFF_PLUGIN_DIR . 'admin/class-install-skin.php';
125
+
126
+ // Do not allow WordPress to search/download translations, as this will break JS output.
127
+ remove_action( 'upgrader_process_complete', array( 'Language_Pack_Upgrader', 'async_upgrade' ), 20 );
128
+
129
+ // Create the plugin upgrader with our custom skin.
130
+ $installer = new CFF\Helpers\PluginSilentUpgrader( new CFF_Install_Skin() );
131
+
132
+ // Error check.
133
+ if ( ! method_exists( $installer, 'install' ) || empty( $_POST['plugin'] ) ) {
134
+ wp_send_json_error( $error );
135
+ }
136
+
137
+ $installer->install( $_POST['plugin'] ); // phpcs:ignore
138
+
139
+ // Flush the cache and return the newly installed plugin basename.
140
+ wp_cache_flush();
141
+
142
+ $plugin_basename = $installer->plugin_info();
143
+
144
+ if ( $plugin_basename ) {
145
+
146
+ $type = 'addon';
147
+ if ( ! empty( $_POST['type'] ) ) {
148
+ $type = sanitize_key( $_POST['type'] );
149
+ }
150
+
151
+ // Activate the plugin silently.
152
+ $activated = activate_plugin( $plugin_basename );
153
+
154
+ if ( ! is_wp_error( $activated ) ) {
155
+ wp_send_json_success(
156
+ array(
157
+ 'msg' => 'plugin' === $type ? esc_html__( 'Plugin installed & activated.', 'custom-facebook-feed' ) : esc_html__( 'Addon installed & activated.', 'custom-facebook-feed' ),
158
+ 'is_activated' => true,
159
+ 'basename' => $plugin_basename,
160
+ )
161
+ );
162
+ } else {
163
+ wp_send_json_success(
164
+ array(
165
+ 'msg' => 'plugin' === $type ? esc_html__( 'Plugin installed.', 'custom-facebook-feed' ) : esc_html__( 'Addon installed.', 'custom-facebook-feed' ),
166
+ 'is_activated' => false,
167
+ 'basename' => $plugin_basename,
168
+ )
169
+ );
170
+ }
171
+ }
172
+
173
+ wp_send_json_error( $error );
174
+ }
175
+ add_action( 'wp_ajax_cff_install_addon', 'cff_install_addon' );
admin/class-cff-about.php ADDED
@@ -0,0 +1,1351 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * About Sbi admin page class.
5
+ *
6
+ * @since 2.4/5.5
7
+ */
8
+ class CFF_About {
9
+
10
+ /**
11
+ * Admin menu page slug.
12
+ *
13
+ * @since 2.4/5.5
14
+ *
15
+ * @var string
16
+ */
17
+ const SLUG = 'cff-about';
18
+
19
+ /**
20
+ * Default view for a page.
21
+ *
22
+ * @since 2.4/5.5
23
+ *
24
+ * @var string
25
+ */
26
+ const DEFAULT_TAB = 'about';
27
+
28
+ /**
29
+ * Array of license types, that are considered being top level and has no features difference.
30
+ *
31
+ * @since 2.4/5.5
32
+ *
33
+ * @var array
34
+ */
35
+ public static $licenses_top = array( 'pro', 'agency', 'ultimate', 'elite' );
36
+
37
+ /**
38
+ * List of features that licenses are different with.
39
+ *
40
+ * @since 2.4/5.5
41
+ *
42
+ * @var array
43
+ */
44
+ public static $licenses_features = array();
45
+
46
+ /**
47
+ * The current active tab.
48
+ *
49
+ * @since 2.4/5.5
50
+ *
51
+ * @var string
52
+ */
53
+ public $view;
54
+
55
+ /**
56
+ * The core views.
57
+ *
58
+ * @since 2.4/5.5
59
+ *
60
+ * @var array
61
+ */
62
+ public $views = array();
63
+
64
+ /**
65
+ * Primary class constructor.
66
+ *
67
+ * @since 2.4/5.5
68
+ */
69
+ public function __construct() {
70
+
71
+ // In old PHP we can't define this elsewhere.
72
+ self::$licenses_features = array(
73
+ 'entries' => esc_html__( 'Media Display', 'custom-facebook-feed' ),
74
+ //'fields' => esc_html__( 'Layouts', 'custom-facebook-feed' ),
75
+ // 'templates' => esc_html__( 'Post Display', 'custom-facebook-feed' ),
76
+ //'conditionals' => esc_html__( 'Image and Video Display', 'custom-facebook-feed' ),
77
+ 'addons' => esc_html__( 'Post Source', 'custom-facebook-feed' ),
78
+ 'addons1' => esc_html__( 'Number of Posts', 'custom-facebook-feed' ),
79
+ 'addons2' => esc_html__( 'Filtering', 'custom-facebook-feed' ),
80
+
81
+ //'marketing' => esc_html__( 'Filtering', 'custom-facebook-feed' ),
82
+ //'marketing' => esc_html__( 'Instagram Stories', 'custom-facebook-feed' ),
83
+ 'payments' => esc_html__( 'Feed Layout', 'custom-facebook-feed' ),
84
+ 'surveys' => esc_html__( 'Post Information', 'custom-facebook-feed' ),
85
+ 'advanced' => esc_html__( 'Comments', 'custom-facebook-feed' ),
86
+ 'extensions' => esc_html__( 'Extensions', 'custom-facebook-feed' ),
87
+ 'support' => esc_html__( 'Customer Support', 'custom-facebook-feed' ),
88
+ );
89
+
90
+ // Maybe load tools page.
91
+ add_action( 'admin_init', array( $this, 'init' ) );
92
+ }
93
+
94
+ /**
95
+ * Determining if the user is viewing the our page, if so, party on.
96
+ *
97
+ * @since 2.4/5.5
98
+ */
99
+ public function init() {
100
+
101
+ // Check what page we are on.
102
+ $page = isset( $_GET['page'] ) ? $_GET['page'] : '';
103
+
104
+ // Only load if we are actually on the settings page.
105
+ if ( self::SLUG !== $page ) {
106
+ return;
107
+ }
108
+
109
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueues' ) );
110
+
111
+ /*
112
+ * Define the core views for the our tab.
113
+ */
114
+ $this->views = apply_filters(
115
+ 'cff_admin_about_views',
116
+ array(
117
+ esc_html__( 'About Us', 'custom-facebook-feed' ) => array( 'about' ),
118
+ esc_html__( 'Getting Started', 'custom-facebook-feed' ) => array( 'getting-started' ),
119
+ )
120
+ );
121
+
122
+ $license = $this->get_license_type();
123
+
124
+ if (
125
+ (
126
+ $license === 'pro' ||
127
+ ! in_array( $license, self::$licenses_top, true )
128
+ )
129
+ //cff_debug()
130
+ ) {
131
+ $vs_tab_name = sprintf( /* translators: %1$s - current license type, %2$s - suggested license type. */
132
+ esc_html__( '%1$s vs %2$s', 'custom-facebook-feed' ),
133
+ ucfirst( $license ),
134
+ $this->get_next_license( $license )
135
+ );
136
+
137
+ $this->views[ $vs_tab_name ] = array( 'versus' );
138
+ }
139
+
140
+ // Determine the current active settings tab.
141
+ $this->view = ! empty( $_GET['view'] ) ? esc_html( $_GET['view'] ) : self::DEFAULT_TAB;
142
+
143
+ // If the user tries to load an invalid view - fallback to About Us.
144
+ if (
145
+ ! in_array( $this->view, call_user_func_array( 'array_merge', $this->views ), true ) &&
146
+ ! has_action( 'cff_admin_about_display_tab_' . sanitize_key( $this->view ) )
147
+ ) {
148
+ $this->view = self::DEFAULT_TAB;
149
+ }
150
+
151
+ add_action( 'cff_admin_page', array( $this, 'output' ) );
152
+
153
+ // Hook for addons.
154
+ do_action( 'cff_admin_about_init' );
155
+ }
156
+
157
+ /**
158
+ * Enqueue assets for the the page.
159
+ *
160
+ * @since 2.4/5.5
161
+ */
162
+ public function enqueues() {
163
+
164
+ wp_enqueue_script(
165
+ 'jquery-matchheight',
166
+ CFF_PLUGIN_URL . 'js/jquery.matchHeight-min.js',
167
+ array( 'jquery' ),
168
+ '0.7.0',
169
+ false
170
+ );
171
+ }
172
+
173
+ /**
174
+ * Output the basic page structure.
175
+ *
176
+ * @since 2.4/5.5
177
+ */
178
+ public function output() {
179
+
180
+ $show_nav = false;
181
+ foreach ( $this->views as $view ) {
182
+ if ( in_array( $this->view, (array) $view, true ) ) {
183
+ $show_nav = true;
184
+ break;
185
+ }
186
+ }
187
+ ?>
188
+
189
+ <div id="cff-admin-about" class="wrap cff-admin-wrap">
190
+
191
+ <?php
192
+ if ( $show_nav ) {
193
+ $license = $this->get_license_type();
194
+ $next_license = $this->get_next_license( $license );
195
+ echo '<ul class="cff-admin-tabs">';
196
+ foreach ( $this->views as $label => $view ) {
197
+ $class = in_array( $this->view, $view, true ) ? 'active' : '';
198
+ echo '<li>';
199
+ printf(
200
+ '<a href="%s" class="%s">%s</a>',
201
+ esc_url( admin_url( 'admin.php?page=' . self::SLUG . '&view=' . sanitize_key( $view[0] ) ) ),
202
+ esc_attr( $class ),
203
+ esc_html( $label )
204
+ );
205
+ echo '</li>';
206
+ }
207
+ echo '</ul>';
208
+ }
209
+ ?>
210
+
211
+ <h1 class="cff-h1-placeholder"></h1>
212
+
213
+ <?php
214
+ switch ( $this->view ) {
215
+ case 'about':
216
+ $this->output_about();
217
+ break;
218
+ case 'getting-started':
219
+ $this->output_getting_started();
220
+ break;
221
+ case 'versus':
222
+ $this->output_versus();
223
+ break;
224
+ default:
225
+ do_action( 'cff_admin_about_display_tab_' . sanitize_key( $this->view ) );
226
+ break;
227
+ }
228
+ ?>
229
+
230
+ </div>
231
+
232
+ <?php
233
+ }
234
+
235
+ /**
236
+ * Display the About tab content.
237
+ *
238
+ * @since 2.4/5.5
239
+ */
240
+ protected function output_about() {
241
+
242
+ $this->output_about_info();
243
+ $this->output_about_addons();
244
+ }
245
+
246
+ /**
247
+ * Display the General Info section of About tab.
248
+ *
249
+ * @since 1.5.8
250
+ */
251
+ protected function output_about_info() {
252
+
253
+ ?>
254
+
255
+ <div class="cff-admin-about-section cff-admin-columns">
256
+
257
+ <div class="cff-admin-about-text" style="min-height: 340px;">
258
+ <h3>
259
+ <?php esc_html_e( 'Hello and welcome to the Custom Facebook Feed plugin, the most customizable, clean, and simple Facebook feed plugin in the world. At Smash Balloon, we build software that helps you create beautiful responsive social media feeds for your website in minutes.', 'custom-facebook-feed' ); ?>
260
+ </h3>
261
+
262
+ <p>
263
+ <?php esc_html_e( 'Smash Balloon is a fun-loving WordPress plugin development company birthed into existence in early 2013. We specialize in creating plugins that are not only intuitive and simple to use, but also designed to integrate seamlessly into your website and allow you to display your social media content in powerful and unique ways. Over 1 million awesome people have decided to actively use our plugins, which is an incredible honor that we don’t take lightly. This compels us to try to provide the quickest and most effective customer support that we can, blowing users away with the best customer service they’ve ever experienced.', 'custom-facebook-feed' ); ?>
264
+ </p>
265
+ <p>
266
+ <?php esc_html_e( 'We’re a small, but dedicated, team based in Minnesota in the USA.', 'custom-facebook-feed' ); ?>
267
+ </p>
268
+
269
+ </div>
270
+
271
+ <div class="cff-admin-about-image cff-admin-column-last">
272
+ <figure>
273
+ <img src="<?php echo CFF_PLUGIN_URL; ?>img/about/team.jpg" alt="<?php esc_attr_e( 'The Sbi Team photo', 'custom-facebook-feed' ); ?>">
274
+ <figcaption>
275
+ <?php esc_html_e( 'The Smash Balloon Team', 'custom-facebook-feed' ); ?><br>
276
+ </figcaption>
277
+ </figure>
278
+ </div>
279
+
280
+ </div>
281
+ <?php
282
+ }
283
+
284
+ /**
285
+ * Display the Addons section of About tab.
286
+ *
287
+ * @since 1.5.8
288
+ */
289
+ protected function output_about_addons() {
290
+
291
+ if ( ! current_user_can( 'manage_custom_facebook_feed_options' ) || version_compare( PHP_VERSION, '5.3.0' ) <= 0 ) {
292
+ return;
293
+ }
294
+
295
+ $all_plugins = get_plugins();
296
+ $am_plugins = $this->get_am_plugins();
297
+
298
+ ?>
299
+ <div id="cff-admin-addons">
300
+ <div class="addons-container">
301
+ <h3><?php echo __( 'Our Other Plugins', 'custom-facebook-feed' ); ?></h3>
302
+ <?php
303
+ foreach ( $am_plugins as $plugin => $details ) :
304
+
305
+ $plugin_data = $this->get_plugin_data( $plugin, $details, $all_plugins );
306
+
307
+ if ( $plugin === 'wpforms-lite/wpforms.php' ) {
308
+ echo '<h3>' .__( 'Plugins We Recommend', 'custom-facebook-feed' ). '</h3>';
309
+ }
310
+
311
+ ?>
312
+ <div class="addon-container">
313
+ <div class="addon-item">
314
+ <div class="details cff-clear">
315
+ <img src="<?php echo esc_url( $plugin_data['details']['icon'] ); ?>">
316
+ <h5 class="addon-name">
317
+ <?php echo esc_html( $plugin_data['details']['name'] ); ?>
318
+ </h5>
319
+ <p class="addon-desc">
320
+ <?php echo wp_kses_post( $plugin_data['details']['desc'] ); ?>
321
+ </p>
322
+ </div>
323
+ <div class="actions cff-clear">
324
+ <div class="status">
325
+ <strong>
326
+ <?php
327
+ printf(
328
+ /* translators: %s - addon status label. */
329
+ esc_html__( 'Status: %s', 'custom-facebook-feed' ),
330
+ '<span class="status-label ' . esc_attr( $plugin_data['status_class'] ) . '">' . wp_kses_post( $plugin_data['status_text'] ) . '</span>'
331
+ );
332
+ ?>
333
+ </strong>
334
+ </div>
335
+ <div class="action-button">
336
+ <button class="<?php echo esc_attr( $plugin_data['action_class'] ); ?>" data-plugin="<?php echo esc_attr( $plugin_data['plugin_src'] ); ?>" data-type="plugin">
337
+ <?php echo wp_kses_post( $plugin_data['action_text'] ); ?>
338
+ </button>
339
+ </div>
340
+ </div>
341
+ </div>
342
+ </div>
343
+ <?php endforeach; ?>
344
+ </div>
345
+ </div>
346
+ <?php
347
+ }
348
+
349
+ /**
350
+ * Get AM plugin data to display in the Addons section of About tab.
351
+ *
352
+ * @since 1.5.8
353
+ *
354
+ * @param string $plugin Plugin slug.
355
+ * @param array $details Plugin details.
356
+ * @param array $all_plugins List of all plugins.
357
+ *
358
+ * @return array
359
+ */
360
+ protected function get_plugin_data( $plugin, $details, $all_plugins ) {
361
+
362
+ $have_pro = ( ! empty( $details['pro'] ) && ! empty( $details['pro']['plug'] ) );
363
+ $show_pro = false;
364
+
365
+ $plugin_data = array();
366
+
367
+ if ( $have_pro ) {
368
+ if ( array_key_exists( $plugin, $all_plugins ) ) {
369
+ if ( is_plugin_active( $plugin ) ) {
370
+ $show_pro = true;
371
+ }
372
+ }
373
+ if ( array_key_exists( $details['pro']['plug'], $all_plugins ) ) {
374
+ $show_pro = true;
375
+ }
376
+ if ( $show_pro ) {
377
+ $plugin = $details['pro']['plug'];
378
+ $details = $details['pro'];
379
+ }
380
+ }
381
+
382
+ if ( array_key_exists( $plugin, $all_plugins ) ) {
383
+ if ( is_plugin_active( $plugin ) ) {
384
+ // Status text/status.
385
+ $plugin_data['status_class'] = 'status-active';
386
+ $plugin_data['status_text'] = esc_html__( 'Active', 'custom-facebook-feed' );
387
+ // Button text/status.
388
+ $plugin_data['action_class'] = $plugin_data['status_class'] . ' button button-secondary disabled';
389
+ $plugin_data['action_text'] = esc_html__( 'Activated', 'custom-facebook-feed' );
390
+ $plugin_data['plugin_src'] = esc_attr( $plugin );
391
+ } else {
392
+ // Status text/status.
393
+ $plugin_data['status_class'] = 'status-inactive';
394
+ $plugin_data['status_text'] = esc_html__( 'Inactive', 'custom-facebook-feed' );
395
+ // Button text/status.
396
+ $plugin_data['action_class'] = $plugin_data['status_class'] . ' button button-secondary';
397
+ $plugin_data['action_text'] = esc_html__( 'Activate', 'custom-facebook-feed' );
398
+ $plugin_data['plugin_src'] = esc_attr( $plugin );
399
+ }
400
+ } else {
401
+ // Doesn't exist, install.
402
+ // Status text/status.
403
+ $plugin_data['status_class'] = 'status-download';
404
+ if ( isset( $details['act'] ) && 'go-to-url' === $details['act'] ) {
405
+ $plugin_data['status_class'] = 'status-go-to-url';
406
+ }
407
+ $plugin_data['status_text'] = esc_html__( 'Not Installed', 'custom-facebook-feed' );
408
+ // Button text/status.
409
+ $plugin_data['action_class'] = $plugin_data['status_class'] . ' button button-primary';
410
+ $plugin_data['action_text'] = esc_html__( 'Install Plugin', 'custom-facebook-feed' );
411
+ $plugin_data['plugin_src'] = esc_url( $details['url'] );
412
+ }
413
+
414
+ $plugin_data['details'] = $details;
415
+
416
+ return $plugin_data;
417
+ }
418
+
419
+ /**
420
+ * Display the Getting Started tab content.
421
+ *
422
+ * @since 2.4/5.5
423
+ */
424
+ protected function output_getting_started() {
425
+
426
+ $license = $this->get_license_type();
427
+ ?>
428
+
429
+ <div class="cff-admin-about-section cff-admin-about-section-first-form" style="display:flex;">
430
+
431
+ <div class="cff-admin-about-section-first-form-text">
432
+
433
+ <h2>
434
+ <?php esc_html_e( 'Creating Your First Feed', 'custom-facebook-feed' ); ?>
435
+ </h2>
436
+
437
+ <p>
438
+ <?php esc_html_e( 'Want to get started creating your first feed with Custom Facebook Feed? By following the step by step instructions in this walkthrough, you can easily publish your first feed on your site.', 'custom-facebook-feed' ); ?>
439
+ </p>
440
+
441
+ <p>
442
+ <?php esc_html_e( 'Navigate to Facebook Feed in the admin sidebar to go the Configure page.', 'custom-facebook-feed' ); ?>
443
+ </p>
444
+
445
+ <p>
446
+ <?php esc_html_e( 'Click on the large blue button to connect your Facebook account.', 'custom-facebook-feed' ); ?>
447
+ </p>
448
+
449
+ <p>
450
+ <?php esc_html_e( 'Once you connect a Facebook account, you can display your feed on any post, page or widget using the shortcode [custom-facebook-feed]. You can also use the Custom Facebook Feed Gutenberg block if your site has the WordPress block editor enabled.', 'custom-facebook-feed' ); ?>
451
+ </p>
452
+
453
+ <ul class="list-plain">
454
+ <li>
455
+ <a href="https://smashballoon.com/can-display-feeds-multiple-facebook-pages/?utm_source=WordPress&utm_medium=cff-about-page&utm_campaign=gettingstarted#multiple-feeds" target="_blank" rel="noopener noreferrer">
456
+ <?php esc_html_e( 'Display Multiple Feeds', 'custom-facebook-feed' ); ?>
457
+ </a>
458
+ </li>
459
+ <li>
460
+ <a href="https://smashballoon.com/using-shortcode-options-customize-facebook-feeds/?utm_source=WordPress&utm_medium=cff-about-page&utm_campaign=gettingstarted#differentaccount" target="_blank" rel="noopener noreferrer">
461
+ <?php esc_html_e( 'Shortcode Settings Guide', 'custom-facebook-feed' ); ?>
462
+ </a>
463
+ </li>
464
+ <li>
465
+ <a href="https://smashballoon.com/find-facebook-page-group-id/?utm_source=WordPress&utm_medium=cff-about-page&utm_campaign=gettingstarted#display-form" target="_blank" rel="noopener noreferrer">
466
+ <?php esc_html_e( 'Find My Page ID', 'custom-facebook-feed' ); ?>
467
+ </a>
468
+ </li>
469
+ </ul>
470
+
471
+ </div>
472
+
473
+ <div class="cff-admin-about-section-first-form-video">
474
+ <iframe src="https://www.youtube-nocookie.com/embed/0gykYq3JSrY?rel=0" width="540" height="304" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
475
+ </div>
476
+
477
+ </div>
478
+
479
+ <?php if ( ! in_array( $license, self::$licenses_top, true ) ) { ?>
480
+ <div class="cff-admin-about-section cff-admin-about-section-hero">
481
+
482
+ <div class="cff-admin-about-section-hero-main">
483
+ <h2>
484
+ <?php esc_html_e( 'Get Custom Facebook Feed Pro and Unlock all the Powerful Features', 'custom-facebook-feed' ); ?>
485
+ </h2>
486
+
487
+ <p class="bigger">
488
+ <?php
489
+ echo wp_kses(
490
+ __( 'Thanks for being a loyal Custom Facebook Feed Lite user. <strong>Upgrade to Custom Facebook Feed Pro</strong> to unlock all the awesome features and experience<br>why Custom Facebook Feed is the most popular Facebook feed plugin.', 'custom-facebook-feed' ),
491
+ array(
492
+ 'br' => array(),
493
+ 'strong' => array(),
494
+ )
495
+ );
496
+ ?>
497
+ </p>
498
+
499
+ <p>
500
+ <?php
501
+ printf(
502
+ wp_kses(
503
+ /* translators: %s - stars. */
504
+ __( 'We know that you will truly love Custom Facebook Feed. It has over <strong>1000+ five star ratings</strong> (%s) and is active on over 200,000 websites.', 'custom-facebook-feed' ),
505
+ array(
506
+ 'strong' => array(),
507
+ )
508
+ ),
509
+ '<i class="fa fa-star" aria-hidden="true"></i>' .
510
+ '<i class="fa fa-star" aria-hidden="true"></i>' .
511
+ '<i class="fa fa-star" aria-hidden="true"></i>' .
512
+ '<i class="fa fa-star" aria-hidden="true"></i>' .
513
+ '<i class="fa fa-star" aria-hidden="true"></i>'
514
+ );
515
+ ?>
516
+ </p>
517
+ </div>
518
+
519
+ <div class="cff-admin-about-section-hero-extra">
520
+ <div class="cff-admin-columns">
521
+ <div class="cff-admin-column-50">
522
+ <ul class="list-features list-plain">
523
+ <li>
524
+ <i class="fa fa-check" aria-hidden="true"></i>
525
+ <?php esc_html_e( 'Display photos, videos, and albums in your posts.', 'custom-facebook-feed' ); ?>
526
+ </li>
527
+ <li>
528
+ <i class="fa fa-check" aria-hidden="true"></i>
529
+ <?php esc_html_e( 'Choose which content type to display; posts, photos, albums, videos, links, or events.', 'custom-facebook-feed' ); ?>
530
+ </li>
531
+ <li>
532
+ <i class="fa fa-check" aria-hidden="true"></i>
533
+ <?php esc_html_e( 'Pop-up lightbox to view images and watch videos.', 'custom-facebook-feed' ); ?>
534
+ </li>
535
+ <li>
536
+ <i class="fa fa-check" aria-hidden="true"></i>
537
+ <?php esc_html_e( 'Show comments, likes, shares, reactions and comment replies.', 'custom-facebook-feed' ); ?>
538
+ </li>
539
+ <li>
540
+ <i class="fa fa-check" aria-hidden="true"></i>
541
+ <?php esc_html_e( 'Filter posts by hashtag or words.', 'custom-facebook-feed' ); ?>
542
+ </li>
543
+ </ul>
544
+ </div>
545
+ <div class="cff-admin-column-50 cff-admin-column-last">
546
+ <ul class="list-features list-plain">
547
+ <li>
548
+ <i class="fa fa-check" aria-hidden="true"></i>
549
+ <?php esc_html_e( 'Infinitely load more posts.', 'custom-facebook-feed' ); ?>
550
+ </li>
551
+ <li>
552
+ <i class="fa fa-check" aria-hidden="true"></i>
553
+ <?php esc_html_e( 'HD, 360 degree, and Live video support.', 'custom-facebook-feed' ); ?>
554
+ </li>
555
+ <li>
556
+ <i class="fa fa-check" aria-hidden="true"></i>
557
+ <?php esc_html_e( 'Support for Facebook Groups.', 'custom-facebook-feed' ); ?>
558
+ </li>
559
+ <li>
560
+ <i class="fa fa-check" aria-hidden="true"></i>
561
+ <?php esc_html_e( 'Multiple post layout options.', 'custom-facebook-feed' ); ?>
562
+ </li>
563
+ <li>
564
+ <i class="fa fa-check" aria-hidden="true"></i>
565
+ <?php esc_html_e( 'Priority Pro support from our team of experts.', 'custom-facebook-feed' ); ?>
566
+ </li>
567
+ </ul>
568
+ </div>
569
+ </div>
570
+
571
+ <hr />
572
+
573
+ <h3 class="call-to-action">
574
+ <?php
575
+ if ( 'lite' === $license ) {
576
+ echo '<a href="https://smashballoon.com/custom-facebook-feed/pricing/?utm_source=plugin-free&utm_campaign=cff" target="_blank" rel="noopener noreferrer">';
577
+ } else {
578
+ echo '<a href="https://smashballoon.com/custom-facebook-feed/pricing/?utm_source=WordPress&utm_medium=cff-about-page&utm_campaign=gettingstarted" target="_blank" rel="noopener noreferrer">';
579
+ }
580
+ esc_html_e( 'Get Custom Facebook Feed Pro Today and Unlock all the Powerful Features', 'custom-facebook-feed' );
581
+ ?>
582
+ </a>
583
+ </h3>
584
+
585
+ <?php if ( 'lite' === $license ) { ?>
586
+ <p>
587
+ <?php
588
+ echo wp_kses(
589
+ __( 'Bonus: Custom Facebook Feed Lite users get <span class="price-20-off">50% off regular price</span>, automatically applied at checkout.', 'custom-facebook-feed' ),
590
+ array(
591
+ 'span' => array(
592
+ 'class' => array(),
593
+ ),
594
+ )
595
+ );
596
+ ?>
597
+ </p>
598
+ <?php } ?>
599
+ </div>
600
+
601
+ </div>
602
+ <?php } ?>
603
+
604
+
605
+ <div class="cff-admin-about-section cff-admin-about-section-squashed cff-admin-about-section-post cff-admin-columns">
606
+ <div class="cff-admin-column-20">
607
+ <img src="<?php echo CFF_PLUGIN_URL; ?>img/about/steps.png" alt="">
608
+ </div>
609
+ <div class="cff-admin-column-80">
610
+ <h2>
611
+ <?php esc_html_e( 'Detailed Step-By-Step Guide', 'custom-facebook-feed' ); ?>
612
+ </h2>
613
+
614
+ <p>
615
+ <?php esc_html_e( 'View detailed steps with related images on our website. We have a comprehensive guide to getting up and running with Custom Facebook Feed.', 'custom-facebook-feed' ); ?>
616
+ </p>
617
+
618
+ <a href="https://smashballoon.com/custom-facebook-feed/docs/free/?utm_source=WordPress&utm_medium=cff-about-page&utm_campaign=gettingstarted" target="_blank" rel="noopener noreferrer" class="cff-admin-about-section-post-link">
619
+ <?php esc_html_e( 'Read Documentation', 'custom-facebook-feed' ); ?><i class="fa fa-external-link" aria-hidden="true"></i>
620
+ </a>
621
+ </div>
622
+ </div>
623
+
624
+ <div class="cff-admin-about-section cff-admin-about-section-squashed cff-admin-about-section-post cff-admin-columns">
625
+ <div class="cff-admin-column-20">
626
+ <img src="<?php echo CFF_PLUGIN_URL; ?>img/about/api-error.png" alt="">
627
+ </div>
628
+ <div class="cff-admin-column-80">
629
+ <h2>
630
+ <?php esc_html_e( 'Troubleshoot Connection and API Errors', 'custom-facebook-feed' ); ?>
631
+ </h2>
632
+
633
+ <p>
634
+ <?php esc_html_e( 'Are you having trouble displaying your feed due to an error connecting an account or a Facebook API error? We have several articles to help you troubleshoot issues and help you solve them.', 'custom-facebook-feed' ); ?>
635
+ </p>
636
+
637
+ <a href="https://smashballoon.com/custom-facebook-feed/docs/errors/?utm_source=WordPress&utm_medium=cff-about-page&utm_campaign=gettingstarted" target="_blank" rel="noopener noreferrer" class="cff-admin-about-section-post-link">
638
+ <?php esc_html_e( 'Read Documentation', 'custom-facebook-feed' ); ?><i class="fa fa-external-link" aria-hidden="true"></i>
639
+ </a>
640
+ </div>
641
+ </div>
642
+
643
+ <?php
644
+ }
645
+
646
+ /**
647
+ * Get the next license type. Helper for Versus tab content.
648
+ *
649
+ * @since 1.5.5
650
+ *
651
+ * @param string $current Current license type slug.
652
+ *
653
+ * @return string Next license type slug.
654
+ */
655
+ protected function get_next_license( $current ) {
656
+
657
+ return 'Pro';
658
+ $current = ucfirst( $current );
659
+ $license_pairs = array(
660
+ 'Lite' => 'Pro',
661
+ 'Basic' => 'Pro',
662
+ 'Plus' => 'Pro',
663
+ 'Pro' => 'Elite',
664
+ );
665
+
666
+ return ! empty( $license_pairs[ $current ] ) ? $license_pairs[ $current ] : 'Elite';
667
+ }
668
+
669
+ /**
670
+ * Display the Versus tab content.
671
+ *
672
+ * @since 2.4/5.5
673
+ */
674
+ protected function output_versus() {
675
+
676
+ //$license = $this->get_license_type();
677
+ //$next_license = $this->get_next_license( $license );
678
+ $license = 'lite';
679
+ $next_license = 'pro';
680
+ ?>
681
+
682
+ <div class="cff-admin-about-section cff-admin-about-section-squashed">
683
+ <h1 class="centered">
684
+ <strong><?php echo esc_html( ucfirst( $license ) ); ?></strong> vs <strong><?php echo esc_html( ucfirst( $next_license ) ); ?></strong>
685
+ </h1>
686
+
687
+ <p class="centered">
688
+ <?php esc_html_e( 'Get the most out of your Custom Facebook Feeds by upgrading to Pro and unlocking all of the powerful features.', 'custom-facebook-feed' ); ?>
689
+ </p>
690
+ </div>
691
+
692
+ <div class="cff-admin-about-section cff-admin-about-section-squashed cff-admin-about-section-hero cff-admin-about-section-table">
693
+
694
+ <div class="cff-admin-about-section-hero-main cff-admin-columns">
695
+ <div class="cff-admin-column-33">
696
+ <h3 class="no-margin">
697
+ <?php esc_html_e( 'Feature', 'custom-facebook-feed' ); ?>
698
+ </h3>
699
+ </div>
700
+ <div class="cff-admin-column-33">
701
+ <h3 class="no-margin">
702
+ <?php echo esc_html( ucfirst( $license ) ); ?>
703
+ </h3>
704
+ </div>
705
+ <div class="cff-admin-column-33">
706
+ <h3 class="no-margin">
707
+ <?php echo esc_html( ucfirst( $next_license ) ); ?>
708
+ </h3>
709
+ </div>
710
+ </div>
711
+ <div class="cff-admin-about-section-hero-extra no-padding cff-admin-columns">
712
+
713
+ <table>
714
+ <?php
715
+ foreach ( self::$licenses_features as $slug => $name ) {
716
+ $current = $this->get_license_data( $slug, $license );
717
+ $next = $this->get_license_data( $slug, strtolower( $next_license ) );
718
+
719
+ if ( empty( $current ) || empty( $next ) ) {
720
+ continue;
721
+ }
722
+ ?>
723
+ <tr class="cff-admin-columns">
724
+ <td class="cff-admin-column-33">
725
+ <p><?php echo esc_html( $name ); ?></p>
726
+ </td>
727
+ <td class="cff-admin-column-33">
728
+ <?php if ( is_array( $current ) ) : ?>
729
+ <p class="features-<?php echo esc_attr( $current['status'] ); ?>">
730
+ <?php echo wp_kses_post( implode( '<br>', $current['text'] ) ); ?>
731
+ </p>
732
+ <?php endif; ?>
733
+ </td>
734
+ <td class="cff-admin-column-33">
735
+ <?php if ( is_array( $current ) ) : ?>
736
+ <p class="features-full">
737
+ <?php echo wp_kses_post( implode( '<br>', $next['text'] ) ); ?>
738
+ </p>
739
+ <?php endif; ?>
740
+ </td>
741
+ </tr>
742
+ <?php
743
+ }
744
+ ?>
745
+ </table>
746
+
747
+ </div>
748
+
749
+ </div>
750
+
751
+ <div class="cff-admin-about-section cff-admin-about-section-hero">
752
+ <div class="cff-admin-about-section-hero-main no-border">
753
+ <h3 class="call-to-action centered">
754
+ <?php
755
+ if ( 'lite' === $license ) {
756
+ echo '<a href="https://smashballoon.com/custom-facebook-feed/pricing/?utm_source=WordPress&utm_medium=cff-about-page&utm_campaign=gettingstarted" target="_blank" rel="noopener noreferrer">';
757
+ } else {
758
+ echo '<a href="https://smashballoon.com/custom-facebook-feed/pricing/?utm_source=WordPress&utm_medium=cff-about-page&utm_campaign=gettingstarted" target="_blank" rel="noopener noreferrer">';
759
+ }
760
+ printf( /* translators: %s - next license level. */
761
+ esc_html__( 'Get Custom Facebook Feed Pro Today and Unlock all the Powerful Features', 'custom-facebook-feed' ),
762
+ esc_html( $next_license )
763
+ );
764
+ ?>
765
+ </a>
766
+ </h3>
767
+
768
+ <?php if ( 'lite' === $license ) { ?>
769
+ <p class="centered">
770
+ <?php
771
+ echo wp_kses(
772
+ __( 'Bonus: Custom Facebook Feed Lite users get <span class="price-20-off">50% off regular price</span>, automatically applied at checkout.', 'custom-facebook-feed' ),
773
+ array(
774
+ 'span' => array(
775
+ 'class' => array(),
776
+ ),
777
+ )
778
+ );
779
+ ?>
780
+ </p>
781
+ <?php } ?>
782
+ </div>
783
+ </div>
784
+
785
+ <?php
786
+ }
787
+
788
+ /**
789
+ * List of AM plugins that we propose to install.
790
+ *
791
+ * @since 2.4/5.5
792
+ *
793
+ * @return array
794
+ */
795
+ protected function get_am_plugins() {
796
+
797
+ $images_url = CFF_PLUGIN_URL . 'img/about/';
798
+
799
+ return array(
800
+ 'instagram-feed/instagram-feed.php' => array(
801
+ 'icon' => $images_url . 'plugin-if.png',
802
+ 'name' => esc_html__( 'Instagram Feed', 'custom-facebook-feed' ),
803
+ 'desc' => esc_html__( 'Instagram Feed is a clean and beautiful way to add your Instagram posts to your website. Grab your visitors attention and keep them engaged with your site longer.', 'custom-facebook-feed' ),
804
+ 'url' => 'https://downloads.wordpress.org/plugin/instagram-feed.zip',
805
+ 'pro' => array(
806
+ 'plug' => 'instagram-feed-pro/instagram-feed.php',
807
+ 'icon' => $images_url . 'plugin-if.png',
808
+ 'name' => esc_html__( 'Instagram Feed Pro', 'custom-facebook-feed' ),
809
+ 'desc' => esc_html__( 'Instagram Feed is a clean and beautiful way to add your Instagram posts to your website. Grab your visitors attention and keep them engaged with your site longer.', 'custom-facebook-feed' ),
810
+ 'url' => 'https://smashballoon.com/instagram-feed/?utm_source=WordPress&utm_campaign=facebook'.$this->get_license_type().'about',
811
+ 'act' => 'go-to-url',
812
+ ),
813
+ ),
814
+
815
+ 'custom-twitter-feeds/custom-twitter-feed.php' => array(
816
+ 'icon' => $images_url . 'plugin-tw.jpg',
817
+ 'name' => esc_html__( 'Custom Twitter Feeds', 'custom-facebook-feed' ),
818
+ 'desc' => esc_html__( 'Custom Twitter Feeds is a highly customizable way to display tweets from your Twitter account. Promote your latest content and update your site content automatically.', 'custom-facebook-feed' ),
819
+ 'url' => 'https://downloads.wordpress.org/plugin/custom-twitter-feeds.zip',
820
+ 'pro' => array(
821
+ 'plug' => 'custom-twitter-feeds-pro/custom-twitter-feed.php',
822
+ 'icon' => $images_url . 'plugin-tw.jpg',
823
+ 'name' => esc_html__( 'Custom Twitter Feeds Pro', 'custom-facebook-feed' ),
824
+ 'desc' => esc_html__( 'Custom Twitter Feeds is a highly customizable way to display tweets from your Twitter account. Promote your latest content and update your site content automatically.', 'custom-facebook-feed' ),
825
+ 'url' => 'https://smashballoon.com/custom-twitter-feeds/?utm_source=WordPress&utm_campaign=facebook'.$this->get_license_type().'about',
826
+ 'act' => 'go-to-url',
827
+ ),
828
+ ),
829
+
830
+ 'feeds-for-youtube/youtube-feed.php' => array(
831
+ 'icon' => $images_url . 'plugin-yt.png',
832
+ 'name' => esc_html__( 'Feeds for YouTube', 'custom-facebook-feed' ),
833
+ 'desc' => esc_html__( 'Feeds for YouTube is a simple yet powerful way to display videos from YouTube on your website. Increase engagement with your channel while keeping visitors on your website.', 'custom-facebook-feed' ),
834
+ 'url' => 'https://downloads.wordpress.org/plugin/feeds-for-youtube.zip',
835
+ 'pro' => array(
836
+ 'plug' => 'youtube-feed-pro/youtube-feed.php',
837
+ 'icon' => $images_url . 'plugin-yt.png',
838
+ 'name' => esc_html__( 'Feeds for YouTube Pro', 'custom-facebook-feed' ),
839
+ 'desc' => esc_html__( 'Feeds for YouTube is a simple yet powerful way to display videos from YouTube on your website. Increase engagement with your channel while keeping visitors on your website.', 'custom-facebook-feed' ),
840
+ 'url' => 'https://smashballoon.com/youtube-feed/?utm_source=WordPress&utm_campaign=facebook'.$this->get_license_type().'about',
841
+ 'act' => 'go-to-url',
842
+ ),
843
+ ),
844
+
845
+ 'wpforms-lite/wpforms.php' => array(
846
+ 'icon' => $images_url . 'plugin-wpforms.png',
847
+ 'name' => esc_html__( 'WPForms', 'custom-facebook-feed' ),
848
+ 'desc' => esc_html__( 'The most beginner friendly drag & drop WordPress forms plugin allowing you to create beautiful contact forms, subscription forms, payment forms, and more in minutes, not hours!', 'custom-facebook-feed' ),
849
+ 'url' => 'https://downloads.wordpress.org/plugin/wpforms-lite.zip',
850
+ 'pro' => array(
851
+ 'plug' => 'wpforms/wpforms.php',
852
+ 'icon' => $images_url . 'plugin-wpforms.png',
853
+ 'name' => esc_html__( 'WPForms', 'custom-facebook-feed' ),
854
+ 'desc' => esc_html__( 'The most beginner friendly drag & drop WordPress forms plugin allowing you to create beautiful contact forms, subscription forms, payment forms, and more in minutes, not hours!', 'custom-facebook-feed' ),
855
+ 'url' => 'https://wpforms.com/lite-upgrade/?utm_source=WordPress&utm_campaign=liteplugin&utm_medium=cff-about-page',
856
+ 'act' => 'go-to-url',
857
+ ),
858
+ ),
859
+
860
+ 'google-analytics-for-wordpress/googleanalytics.php' => array(
861
+ 'icon' => $images_url . 'plugin-mi.png',
862
+ 'name' => esc_html__( 'MonsterInsights', 'custom-facebook-feed' ),
863
+ 'desc' => esc_html__( 'MonsterInsights makes it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.', 'custom-facebook-feed' ),
864
+ 'url' => 'https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.zip',
865
+ 'pro' => array(
866
+ 'plug' => 'google-analytics-premium/googleanalytics-premium.php',
867
+ 'icon' => $images_url . 'plugin-mi.png',
868
+ 'name' => esc_html__( 'MonsterInsights Pro', 'custom-facebook-feed' ),
869
+ 'desc' => esc_html__( 'MonsterInsights makes it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.', 'custom-facebook-feed' ),
870
+ 'url' => 'https://www.monsterinsights.com/?utm_source=proplugin&utm_medium=cff-about-page&utm_campaign=pluginurl&utm_content=7%2E0%2E0',
871
+ 'act' => 'go-to-url',
872
+ ),
873
+ ),
874
+
875
+ 'optinmonster/optin-monster-wp-api.php' => array(
876
+ 'icon' => $images_url . 'plugin-om.png',
877
+ 'name' => esc_html__( 'OptinMonster', 'custom-facebook-feed' ),
878
+ 'desc' => esc_html__( 'Our high-converting optin forms like Exit-Intent® popups, Fullscreen Welcome Mats, and Scroll boxes help you dramatically boost conversions and get more email subscribers.', 'custom-facebook-feed' ),
879
+ 'url' => 'https://downloads.wordpress.org/plugin/optinmonster.zip',
880
+ ),
881
+
882
+ 'wp-mail-smtp/wp_mail_smtp.php' => array(
883
+ 'icon' => $images_url . 'plugin-smtp.png',
884
+ 'name' => esc_html__( 'WP Mail SMTP', 'custom-facebook-feed' ),
885
+ 'desc' => esc_html__( 'Make sure your website\'s emails reach the inbox. Our goal is to make email deliverability easy and reliable. Trusted by over 1 million websites.', 'custom-facebook-feed' ),
886
+ 'url' => 'https://downloads.wordpress.org/plugin/wp-mail-smtp.zip',
887
+ 'pro' => array(
888
+ 'plug' => 'wp-mail-smtp-pro/wp_mail_smtp.php',
889
+ 'icon' => $images_url . 'plugin-smtp.png',
890
+ 'name' => esc_html__( 'WP Mail SMTP Pro', 'custom-facebook-feed' ),
891
+ 'desc' => esc_html__( 'Make sure your website\'s emails reach the inbox. Our goal is to make email deliverability easy and reliable. Trusted by over 1 million websites.', 'custom-facebook-feed' ),
892
+ 'url' => 'https://wpmailsmtp.com/pricing/',
893
+ 'act' => 'go-to-url',
894
+ ),
895
+ ),
896
+
897
+ 'rafflepress/rafflepress.php' => array(
898
+ 'icon' => $images_url . 'plugin-rp.png',
899
+ 'name' => esc_html__( 'RafflePress', 'custom-facebook-feed' ),
900
+ 'desc' => esc_html__( 'Turn your visitors into brand ambassadors! Easily grow your email list, website traffic, and social media followers with powerful viral giveaways & contests.', 'custom-facebook-feed' ),
901
+ 'url' => 'https://downloads.wordpress.org/plugin/rafflepress.zip',
902
+ 'pro' => array(
903
+ 'plug' => 'rafflepress-pro/rafflepress-pro.php',
904
+ 'icon' => $images_url . 'plugin-rp.png',
905
+ 'name' => esc_html__( 'RafflePress Pro', 'custom-facebook-feed' ),
906
+ 'desc' => esc_html__( 'Turn your visitors into brand ambassadors! Easily grow your email list, website traffic, and social media followers with powerful viral giveaways & contests.', 'custom-facebook-feed' ),
907
+ 'url' => 'https://rafflepress.com/pricing/',
908
+ 'act' => 'go-to-url',
909
+ ),
910
+ ),
911
+
912
+ 'all-in-one-seo-pack/all_in_one_seo_pack.php' => array(
913
+ 'icon' => $images_url . 'plugin-seo.png',
914
+ 'name' => esc_html__( 'All In One SEO Pack', 'custom-facebook-feed' ),
915
+ 'desc' => esc_html__( 'Out-of-the-box SEO for WordPress. Features like XML Sitemaps, SEO for custom post types, SEO for blogs or business sites, SEO for ecommerce sites, and much more. More than 50 million downloads since 2007.', 'custom-facebook-feed' ),
916
+ 'url' => 'https://downloads.wordpress.org/plugin/all-in-one-seo-pack.zip',
917
+ ),
918
+ );
919
+ }
920
+
921
+ /**
922
+ * Get the array of data that compared the license data.
923
+ *
924
+ * @since 2.4/5.5
925
+ *
926
+ * @param string $feature Feature name.
927
+ * @param string $license License type to get data for.
928
+ *
929
+ * @return array|false
930
+ */
931
+ protected function get_license_data( $feature, $license ) {
932
+
933
+ $data = array(
934
+ 'entries' => array(
935
+ 'lite' => array(
936
+ 'status' => 'none',
937
+ 'text' => array(
938
+ '<strong>' . esc_html__( 'Not available', 'custom-facebook-feed' ) . '</strong>',
939
+ ),
940
+ ),
941
+ 'basic' => array(
942
+ 'status' => 'full',
943
+ 'text' => array(
944
+ '<strong>' . esc_html__( 'User, Hashtag, and Tagged Feeds', 'custom-facebook-feed' ) . '</strong>',
945
+ ),
946
+ ),
947
+ 'plus' => array(
948
+ 'status' => 'full',
949
+ 'text' => array(
950
+ '<strong>' . esc_html__( 'Complete Entry Management inside WordPress', 'custom-facebook-feed' ) . '</strong>',
951
+ ),
952
+ ),
953
+ 'pro' => array(
954
+ 'status' => 'full',
955
+ 'text' => array(
956
+ '<strong>' . esc_html__( 'Display photos and videos in your posts', 'custom-facebook-feed' ) . '</strong>',
957
+ ),
958
+ ),
959
+ ),
960
+ 'fields' => array(
961
+ 'lite' => array(
962
+ 'status' => 'none',
963
+ 'text' => array(
964
+ '<strong>' . esc_html__( 'Not available', 'custom-facebook-feed' ) . '</strong>',
965
+ ),
966
+ ),
967
+ 'basic' => array(
968
+ 'status' => 'full',
969
+ 'text' => array(
970
+ '<strong>' . esc_html__( 'Access to all Standard and Fancy Fields', 'custom-facebook-feed' ) . '</strong>',
971
+ esc_html__( 'Address, Phone, Website URL, Date/Time, Password, File Upload, HTML, Pagebreaks, Section Dividers, Ratings, and Hidden Field', 'custom-facebook-feed' ),
972
+ ),
973
+ ),
974
+ 'plus' => array(
975
+ 'status' => 'full',
976
+ 'text' => array(
977
+ '<strong>' . esc_html__( 'Access to all Standard and Fancy Fields', 'custom-facebook-feed' ) . '</strong>',
978
+ esc_html__( 'Address, Phone, Website URL, Date/Time, Password, File Upload, HTML, Pagebreaks, Section Dividers, Ratings, and Hidden Field', 'custom-facebook-feed' ),
979
+ ),
980
+ ),
981
+ 'pro' => array(
982
+ 'status' => 'full',
983
+ 'text' => array(
984
+ '<strong>' . esc_html__( 'Grid, highlight, masonry, and carousel layouts', 'custom-facebook-feed' ) . '</strong>',
985
+ ),
986
+ ),
987
+ ),
988
+ 'conditionals' => array(
989
+ 'lite' => array(
990
+ 'status' => 'partial',
991
+ 'text' => array(
992
+ '<strong>' . esc_html__( 'Image, carousel, and video thumbnails', 'custom-facebook-feed' ) . '</strong>',
993
+ ),
994
+ ),
995
+ 'basic' => array(
996
+ 'status' => 'full',
997
+ 'text' => array(
998
+ '<strong>' . esc_html__( 'Powerful Form Logic for Building Smart Forms', 'custom-facebook-feed' ) . '</strong>',
999
+ ),
1000
+ ),
1001
+ 'plus' => array(
1002
+ 'status' => 'full',
1003
+ 'text' => array(
1004
+ '<strong>' . esc_html__( 'Powerful Form Logic for Building Smart Forms', 'custom-facebook-feed' ) . '</strong>',
1005
+ ),
1006
+ ),
1007
+ 'pro' => array(
1008
+ 'status' => 'full',
1009
+ 'text' => array(
1010
+ '<strong>' . esc_html__( 'Display images, swipe through carousel posts, and play videos in a pop-up lightbox', 'custom-facebook-feed' ) . '</strong>',
1011
+ ),
1012
+ ),
1013
+ ),
1014
+ 'marketing' => array(
1015
+ 'lite' => array(
1016
+ 'status' => 'none',
1017
+ 'text' => array(
1018
+ '<strong>' . esc_html__( 'Not available', 'custom-facebook-feed' ) . '</strong>',
1019
+ ),
1020
+ ),
1021
+ 'basic' => array(
1022
+ 'status' => 'partial',
1023
+ 'text' => array(
1024
+ '<strong>' . esc_html__( 'Limited Marketing Integration', 'custom-facebook-feed' ) . '</strong>',
1025
+ esc_html__( 'Constant Contact only', 'custom-facebook-feed' ),
1026
+ ),
1027
+ ),
1028
+ 'plus' => array(
1029
+ 'status' => 'partial',
1030
+ 'text' => array(
1031
+ '<strong>' . esc_html__( '6 Email Marketing Integrations', 'custom-facebook-feed' ) . '</strong>',
1032
+ esc_html__( 'Constant Contact, Mailchimp, AWeber, GetResponse, Campaign Monitor, and Drip', 'custom-facebook-feed' ),
1033
+ ),
1034
+ ),
1035
+ 'pro' => array(
1036
+ 'status' => 'full',
1037
+ 'text' => array(
1038
+ '<strong>' . esc_html__( 'Display images and play videos in a pop-up lightbox', 'custom-facebook-feed' ) . '</strong>',
1039
+ ),
1040
+ ),
1041
+ ),
1042
+ 'payments' => array(
1043
+ 'lite' => array(
1044
+ 'status' => 'partial',
1045
+ 'text' => array(
1046
+ '<strong>' . esc_html__( 'Default post layout', 'custom-facebook-feed' ) . '</strong>',
1047
+ ),
1048
+ ),
1049
+ 'basic' => array(
1050
+ 'status' => 'none',
1051
+ 'text' => array(
1052
+ '<strong>' . esc_html__( 'Not available', 'custom-facebook-feed' ) . '</strong>',
1053
+ ),
1054
+ ),
1055
+ 'plus' => array(
1056
+ 'status' => 'none',
1057
+ 'text' => array(
1058
+ '<strong>' . esc_html__( 'Not available', 'custom-facebook-feed' ) . '</strong>',
1059
+ ),
1060
+ ),
1061
+ 'pro' => array(
1062
+ 'status' => 'full',
1063
+ 'text' => array(
1064
+ '<strong>' . esc_html__( 'Choose from thumbnail, half-width or full-width post layouts, and grid layout for photo, album, and video feeds.', 'custom-facebook-feed' ) . '</strong>',
1065
+ ),
1066
+ ),
1067
+ ),
1068
+ 'surveys' => array(
1069
+ 'lite' => array(
1070
+ 'status' => 'partial',
1071
+ 'text' => array(
1072
+ '<strong>' . esc_html__( 'Basic post information', 'custom-facebook-feed' ) . '</strong>',
1073
+ ),
1074
+ ),
1075
+ 'basic' => array(
1076
+ 'status' => 'none',
1077
+ 'text' => array(
1078
+ '<strong>' . esc_html__( 'Not available', 'custom-facebook-feed' ) . '</strong>',
1079
+ ),
1080
+ ),
1081
+ 'plus' => array(
1082
+ 'status' => 'none',
1083
+ 'text' => array(
1084
+ '<strong>' . esc_html__( 'Not available', 'custom-facebook-feed' ) . '</strong>',
1085
+ ),
1086
+ ),
1087
+ 'pro' => array(
1088
+ 'status' => 'full',
1089
+ 'text' => array(
1090
+ '<strong>' . esc_html__( 'Display the number of likes, shares, comments, and reactions below each post', 'custom-facebook-feed' ) . '</strong>',
1091
+ ),
1092
+ ),
1093
+ ),
1094
+ 'advanced' => array(
1095
+ 'lite' => array(
1096
+ 'status' => 'none',
1097
+ 'text' => array(
1098
+ '<strong>' . esc_html__( 'Not available', 'custom-facebook-feed' ) . '</strong>',
1099
+ ),
1100
+ ),
1101
+ 'basic' => array(
1102
+ 'status' => 'partial',
1103
+ 'text' => array(
1104
+ '<strong>' . esc_html__( 'Limited Advanced Features', 'custom-facebook-feed' ) . '</strong>',
1105
+ esc_html__( 'Multi-page Forms, File Upload Forms, Multiple Form Notifications, Conditional Form Confirmation', 'custom-facebook-feed' ),
1106
+ ),
1107
+ ),
1108
+ 'plus' => array(
1109
+ 'status' => 'partial',
1110
+ 'text' => array(
1111
+ '<strong>' . esc_html__( 'Limited Advanced Features', 'custom-facebook-feed' ) . '</strong>',
1112
+ esc_html__( 'Multi-page Forms, File Upload Forms, Multiple Form Notifications, Conditional Form Confirmation', 'custom-facebook-feed' ),
1113
+ ),
1114
+ ),
1115
+ 'pro' => array(
1116
+ 'status' => 'full',
1117
+ 'text' => array(
1118
+ '<strong>' . esc_html__( 'Display comments below each post and in the pop-up lightbox', 'custom-facebook-feed' ) . '</strong>',
1119
+ ),
1120
+ ),
1121
+ ),
1122
+ 'addons' => array(
1123
+ 'lite' => array(
1124
+ 'status' => 'partial',
1125
+ 'text' => array(
1126
+ '<strong>' . esc_html__( 'Show feeds from a timeline', 'custom-facebook-feed' ) . '</strong>',
1127
+ ),
1128
+ ),
1129
+ 'basic' => array(
1130
+ 'status' => 'partial',
1131
+ 'text' => array(
1132
+ '<strong>' . esc_html__( 'Custom Captcha Addon included', 'custom-facebook-feed' ) . '</strong>',
1133
+ ),
1134
+ ),
1135
+ 'plus' => array(
1136
+ 'status' => 'partial',
1137
+ 'text' => array(
1138
+ '<strong>' . esc_html__( 'Email Marketing Addons included', 'custom-facebook-feed' ) . '</strong>',
1139
+ ),
1140
+ ),
1141
+ 'pro' => array(
1142
+ 'status' => 'full',
1143
+ 'text' => array(
1144
+ '<strong>' . esc_html__( 'Timeline feeds, Photo Grids, Album feeds, Video feeds, Event feeds', 'custom-facebook-feed' ) . '</strong>',
1145
+ ),
1146
+ ),
1147
+ ),
1148
+ 'addons1' => array(
1149
+ 'lite' => array(
1150
+ 'status' => 'partial',
1151
+ 'text' => array(
1152
+ '<strong>' . esc_html__( 'Choose how many posts to display', 'custom-facebook-feed' ) . '</strong>',
1153
+ ),
1154
+ ),
1155
+ 'basic' => array(
1156
+ 'status' => 'partial',
1157
+ 'text' => array(
1158
+ '<strong>' . esc_html__( 'Custom Captcha Addon included', 'custom-facebook-feed' ) . '</strong>',
1159
+ ),
1160
+ ),
1161
+ 'plus' => array(
1162
+ 'status' => 'partial',
1163
+ 'text' => array(
1164
+ '<strong>' . esc_html__( 'Email Marketing Addons included', 'custom-facebook-feed' ) . '</strong>',
1165
+ ),
1166
+ ),
1167
+ 'pro' => array(
1168
+ 'status' => 'full',
1169
+ 'text' => array(
1170
+ '<strong>' . esc_html__( 'Choose to dynamically load more posts using the Load More button', 'custom-facebook-feed' ) . '</strong>',
1171
+ ),
1172
+ ),
1173
+ ),
1174
+ 'addons2' => array(
1175
+ 'lite' => array(
1176
+ 'status' => 'none',
1177
+ 'text' => array(
1178
+ '<strong>' . esc_html__( 'Not available', 'custom-facebook-feed' ) . '</strong>',
1179
+ ),
1180
+ ),
1181
+ 'basic' => array(
1182
+ 'status' => 'partial',
1183
+ 'text' => array(
1184
+ '<strong>' . esc_html__( 'Custom Captcha Addon included', 'custom-facebook-feed' ) . '</strong>',
1185
+ ),
1186
+ ),
1187
+ 'plus' => array(
1188
+ 'status' => 'partial',
1189
+ 'text' => array(
1190
+ '<strong>' . esc_html__( 'Email Marketing Addons included', 'custom-facebook-feed' ) . '</strong>',
1191
+ ),
1192
+ ),
1193
+ 'pro' => array(
1194
+ 'status' => 'full',
1195
+ 'text' => array(
1196
+ '<strong>' . esc_html__( 'Filter posts in your feed based on a particular hashtag, word, or phrase', 'custom-facebook-feed' ) . '</strong>',
1197
+ ),
1198
+ ),
1199
+ ),
1200
+ 'extensions' => array(
1201
+ 'lite' => array(
1202
+ 'status' => 'none',
1203
+ 'text' => array(
1204
+ '<strong>' . esc_html__( 'Not available', 'custom-facebook-feed' ) . '</strong>',
1205
+ ),
1206
+ ),
1207
+ 'basic' => array(
1208
+ 'status' => 'partial',
1209
+ 'text' => array(
1210
+ '<strong>' . esc_html__( 'Custom Captcha Addon included', 'custom-facebook-feed' ) . '</strong>',
1211
+ ),
1212
+ ),
1213
+ 'plus' => array(
1214
+ 'status' => 'partial',
1215
+ 'text' => array(
1216
+ '<strong>' . esc_html__( 'Email Marketing Addons included', 'custom-facebook-feed' ) . '</strong>',
1217
+ ),
1218
+ ),
1219
+ 'pro' => array(
1220
+ 'status' => 'full',
1221
+ 'text' => array(
1222
+ '<strong>' . esc_html__( 'Supports all add-on extensions; Reviews, Multifeed, Date Range, Album Embed, Featured Post, and Carousel.', 'custom-facebook-feed' ) . '</strong>',
1223
+ ),
1224
+ ),
1225
+ ),
1226
+ 'support' => array(
1227
+ 'lite' => array(
1228
+ 'status' => 'partial',
1229
+ 'text' => array(
1230
+ '<strong>' . esc_html__( 'Limited support', 'custom-facebook-feed' ) . '</strong>',
1231
+ ),
1232
+ ),
1233
+ 'basic' => array(
1234
+ 'status' => 'partial',
1235
+ 'text' => array(
1236
+ '<strong>' . esc_html__( 'Standard Support', 'custom-facebook-feed' ) . '</strong>',
1237
+ ),
1238
+ ),
1239
+ 'plus' => array(
1240
+ 'status' => 'partial',
1241
+ 'text' => array(
1242
+ '<strong>' . esc_html__( 'Standard Support', 'custom-facebook-feed' ) . '</strong>',
1243
+ ),
1244
+ ),
1245
+ 'pro' => array(
1246
+ 'status' => 'full',
1247
+ 'text' => array(
1248
+ '<strong>' . esc_html__( 'Priority support', 'custom-facebook-feed' ) . '</strong>',
1249
+ ),
1250
+ ),
1251
+ 'elite' => array(
1252
+ 'status' => 'full',
1253
+ 'text' => array(
1254
+ '<strong>' . esc_html__( 'Premium Support', 'custom-facebook-feed' ) . '</strong>',
1255
+ ),
1256
+ ),
1257
+ 'ultimate' => array(
1258
+ 'status' => 'full',
1259
+ 'text' => array(
1260
+ '<strong>' . esc_html__( 'Premium Support', 'custom-facebook-feed' ) . '</strong>',
1261
+ ),
1262
+ ),
1263
+ 'agency' => array(
1264
+ 'status' => 'full',
1265
+ 'text' => array(
1266
+ '<strong>' . esc_html__( 'Premium Support', 'custom-facebook-feed' ) . '</strong>',
1267
+ ),
1268
+ ),
1269
+ ),
1270
+ 'sites' => array(
1271
+ 'basic' => array(
1272
+ 'status' => 'partial',
1273
+ 'text' => array(
1274
+ '<strong>' . esc_html__( '1 Site', 'custom-facebook-feed' ) . '</strong>',
1275
+ ),
1276
+ ),
1277
+ 'plus' => array(
1278
+ 'status' => 'partial',
1279
+ 'text' => array(
1280
+ '<strong>' . esc_html__( '3 Sites', 'custom-facebook-feed' ) . '</strong>',
1281
+ ),
1282
+ ),
1283
+ 'pro' => array(
1284
+ 'status' => 'full',
1285
+ 'text' => array(
1286
+ '<strong>' . esc_html__( '5 Sites', 'custom-facebook-feed' ) . '</strong>',
1287
+ ),
1288
+ ),
1289
+ 'elite' => array(
1290
+ 'status' => 'full',
1291
+ 'text' => array(
1292
+ '<strong>' . esc_html__( 'Unlimited Sites', 'custom-facebook-feed' ) . '</strong>',
1293
+ ),
1294
+ ),
1295
+ 'ultimate' => array(
1296
+ 'status' => 'full',
1297
+ 'text' => array(
1298
+ '<strong>' . esc_html__( 'Unlimited Sites', 'custom-facebook-feed' ) . '</strong>',
1299
+ ),
1300
+ ),
1301
+ 'agency' => array(
1302
+ 'status' => 'full',
1303
+ 'text' => array(
1304
+ '<strong>' . esc_html__( 'Unlimited Sites', 'custom-facebook-feed' ) . '</strong>',
1305
+ ),
1306
+ ),
1307
+ ),
1308
+ );
1309
+
1310
+ // Wrong feature?
1311
+ if ( ! isset( $data[ $feature ] ) ) {
1312
+ return false;
1313
+ }
1314
+
1315
+ // Is a top level license?
1316
+ $is_licenses_top = in_array( $license, self::$licenses_top, true );
1317
+
1318
+ // Wrong license type?
1319
+ if ( ! isset( $data[ $feature ][ $license ] ) && ! $is_licenses_top ) {
1320
+ return false;
1321
+ }
1322
+
1323
+ // Some licenses have partial data.
1324
+ if ( isset( $data[ $feature ][ $license ] ) ) {
1325
+ return $data[ $feature ][ $license ];
1326
+ }
1327
+
1328
+ // Top level plans has no feature difference with `pro` plan in most cases.
1329
+ return $is_licenses_top ? $data[ $feature ]['pro'] : $data[ $feature ][ $license ];
1330
+ }
1331
+
1332
+ /**
1333
+ * Get the current installation license type (always lowercase).
1334
+ *
1335
+ * @since 2.4/5.5
1336
+ *
1337
+ * @return string
1338
+ */
1339
+ protected function get_license_type() {
1340
+
1341
+ //$type = cff_setting( 'type', '', 'cff_license' );
1342
+
1343
+ //if ( empty( $type ) || ! cff()->pro ) {
1344
+ $type = 'free';
1345
+ //}
1346
+
1347
+ return strtolower( $type );
1348
+ }
1349
+ }
1350
+
1351
+ new CFF_About();
admin/class-install-skin.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use CFF\Helpers\PluginSilentUpgraderSkin;
4
+
5
+ /**
6
+ * Skin for on-the-fly addon installations.
7
+ *
8
+ * @since 1.0.0
9
+ * @since 1.5.6.1 Extend PluginSilentUpgraderSkin and clean up the class.
10
+ */
11
+ class CFF_Install_Skin extends PluginSilentUpgraderSkin {
12
+
13
+ /**
14
+ * Instead of outputting HTML for errors, json_encode the errors and send them
15
+ * back to the Ajax script for processing.
16
+ *
17
+ * @since 1.0.0
18
+ *
19
+ * @param array $errors Array of errors with the install process.
20
+ */
21
+ public function error( $errors ) {
22
+
23
+ if ( ! empty( $errors ) ) {
24
+ wp_send_json_error( $errors );
25
+ }
26
+ }
27
+ }
blocks/class-cff-blocks.php CHANGED
@@ -1,150 +1,150 @@
1
- <?php
2
- /**
3
- * Custom Facebook Feed block with live preview.
4
- *
5
- * @since 2.3
6
- */
7
- class CFF_Blocks {
8
-
9
- /**
10
- * Indicates if current integration is allowed to load.
11
- *
12
- * @since 1.8
13
- *
14
- * @return bool
15
- */
16
- public function allow_load() {
17
- return function_exists( 'register_block_type' );
18
- }
19
-
20
- /**
21
- * Loads an integration.
22
- *
23
- * @since 2.3
24
- */
25
- public function load() {
26
- $this->hooks();
27
- }
28
-
29
- /**
30
- * Integration hooks.
31
- *
32
- * @since 2.3
33
- */
34
- protected function hooks() {
35
- add_action( 'init', array( $this, 'register_block' ) );
36
- add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_block_editor_assets' ) );
37
- }
38
-
39
- /**
40
- * Register Custom Facebook Feed Gutenberg block on the backend.
41
- *
42
- * @since 2.3
43
- */
44
- public function register_block() {
45
-
46
- wp_register_style(
47
- 'cff-blocks-styles',
48
- trailingslashit( CFF_PLUGIN_URL ) . 'css/cff-blocks.css',
49
- array( 'wp-edit-blocks' ),
50
- CFFVER
51
- );
52
-
53
- $attributes = array(
54
- 'shortcodeSettings' => array(
55
- 'type' => 'string',
56
- ),
57
- 'noNewChanges' => array(
58
- 'type' => 'boolean',
59
- )
60
- );
61
-
62
- register_block_type(
63
- 'cff/cff-feed-block',
64
- array(
65
- 'attributes' => $attributes,
66
- 'render_callback' => array( $this, 'get_feed_html' ),
67
- )
68
- );
69
- }
70
-
71
- /**
72
- * Load Custom Facebook Feed Gutenberg block scripts.
73
- *
74
- * @since 2.3
75
- */
76
- public function enqueue_block_editor_assets() {
77
- $access_token = get_option('cff_access_token');
78
-
79
- cff_add_my_stylesheet();
80
- cff_scripts_method();
81
-
82
- wp_enqueue_style( 'cff-blocks-styles' );
83
- wp_enqueue_script(
84
- 'cff-feed-block',
85
- trailingslashit( CFF_PLUGIN_URL ) . 'js/cff-blocks.js',
86
- array( 'wp-blocks', 'wp-i18n', 'wp-element' ),
87
- CFFVER,
88
- true
89
- );
90
-
91
- $shortcodeSettings = '';
92
-
93
- $i18n = array(
94
- 'addSettings' => esc_html__( 'Add Settings', 'instagram-feed' ),
95
- 'shortcodeSettings' => esc_html__( 'Shortcode Settings', 'instagram-feed' ),
96
- 'example' => esc_html__( 'Example', 'instagram-feed' ),
97
- 'preview' => esc_html__( 'Apply Changes', 'instagram-feed' ),
98
-
99
- );
100
-
101
- wp_localize_script(
102
- 'cff-feed-block',
103
- 'cff_block_editor',
104
- array(
105
- 'wpnonce' => wp_create_nonce( 'facebook-blocks' ),
106
- 'canShowFeed' => ! empty( $access_token ),
107
- 'configureLink' => get_admin_url() . '?page=cff-top',
108
- 'shortcodeSettings' => $shortcodeSettings,
109
- 'i18n' => $i18n,
110
- )
111
- );
112
- }
113
-
114
- /**
115
- * Get form HTML to display in a Custom Facebook Feed Gutenberg block.
116
- *
117
- * @param array $attr Attributes passed by Custom Facebook Feed Gutenberg block.
118
- *
119
- * @since 2.3
120
- *
121
- * @return string
122
- */
123
- public function get_feed_html( $attr ) {
124
-
125
- $return = '';
126
-
127
- $shortcode_settings = isset( $attr['shortcodeSettings'] ) ? $attr['shortcodeSettings'] : '';
128
-
129
- $shortcode_settings = str_replace(array( '[custom-facebook-feed', ']' ), '', $shortcode_settings);
130
-
131
- $return .= do_shortcode( '[custom-facebook-feed '.$shortcode_settings.']' );
132
-
133
- return $return;
134
-
135
- }
136
-
137
- /**
138
- * Checking if is Gutenberg REST API call.
139
- *
140
- * @since 2.3
141
- *
142
- * @return bool True if is Gutenberg REST API call.
143
- */
144
- public static function is_gb_editor() {
145
-
146
- // TODO: Find a better way to check if is GB editor API call.
147
- return defined( 'REST_REQUEST' ) && REST_REQUEST && ! empty( $_REQUEST['context'] ) && 'edit' === $_REQUEST['context']; // phpcs:ignore
148
- }
149
-
150
- }
1
+ <?php
2
+ /**
3
+ * Custom Facebook Feed block with live preview.
4
+ *
5
+ * @since 2.3
6
+ */
7
+ class CFF_Blocks {
8
+
9
+ /**
10
+ * Indicates if current integration is allowed to load.
11
+ *
12
+ * @since 1.8
13
+ *
14
+ * @return bool
15
+ */
16
+ public function allow_load() {
17
+ return function_exists( 'register_block_type' );
18
+ }
19
+
20
+ /**
21
+ * Loads an integration.
22
+ *
23
+ * @since 2.3
24
+ */
25
+ public function load() {
26
+ $this->hooks();
27
+ }
28
+
29
+ /**
30
+ * Integration hooks.
31
+ *
32
+ * @since 2.3
33
+ */
34
+ protected function hooks() {
35
+ add_action( 'init', array( $this, 'register_block' ) );
36
+ add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_block_editor_assets' ) );
37
+ }
38
+
39
+ /**
40
+ * Register Custom Facebook Feed Gutenberg block on the backend.
41
+ *
42
+ * @since 2.3
43
+ */
44
+ public function register_block() {
45
+
46
+ wp_register_style(
47
+ 'cff-blocks-styles',
48
+ trailingslashit( CFF_PLUGIN_URL ) . 'css/cff-blocks.css',
49
+ array( 'wp-edit-blocks' ),
50
+ CFFVER
51
+ );
52
+
53
+ $attributes = array(
54
+ 'shortcodeSettings' => array(
55
+ 'type' => 'string',
56
+ ),
57
+ 'noNewChanges' => array(
58
+ 'type' => 'boolean',
59
+ )
60
+ );
61
+
62
+ register_block_type(
63
+ 'cff/cff-feed-block',
64
+ array(
65
+ 'attributes' => $attributes,
66
+ 'render_callback' => array( $this, 'get_feed_html' ),
67
+ )
68
+ );
69
+ }
70
+
71
+ /**
72
+ * Load Custom Facebook Feed Gutenberg block scripts.
73
+ *
74
+ * @since 2.3
75
+ */
76
+ public function enqueue_block_editor_assets() {
77
+ $access_token = get_option('cff_access_token');
78
+
79
+ cff_add_my_stylesheet();
80
+ cff_scripts_method();
81
+
82
+ wp_enqueue_style( 'cff-blocks-styles' );
83
+ wp_enqueue_script(
84
+ 'cff-feed-block',
85
+ trailingslashit( CFF_PLUGIN_URL ) . 'js/cff-blocks.js',
86
+ array( 'wp-blocks', 'wp-i18n', 'wp-element' ),
87
+ CFFVER,
88
+ true
89
+ );
90
+
91
+ $shortcodeSettings = '';
92
+
93
+ $i18n = array(
94
+ 'addSettings' => esc_html__( 'Add Settings', 'instagram-feed' ),
95
+ 'shortcodeSettings' => esc_html__( 'Shortcode Settings', 'instagram-feed' ),
96
+ 'example' => esc_html__( 'Example', 'instagram-feed' ),
97
+ 'preview' => esc_html__( 'Apply Changes', 'instagram-feed' ),
98
+
99
+ );
100
+
101
+ wp_localize_script(
102
+ 'cff-feed-block',
103
+ 'cff_block_editor',
104
+ array(
105
+ 'wpnonce' => wp_create_nonce( 'facebook-blocks' ),
106
+ 'canShowFeed' => ! empty( $access_token ),
107
+ 'configureLink' => get_admin_url() . '?page=cff-top',
108
+ 'shortcodeSettings' => $shortcodeSettings,
109
+ 'i18n' => $i18n,
110
+ )
111
+ );
112
+ }
113
+
114
+ /**
115
+ * Get form HTML to display in a Custom Facebook Feed Gutenberg block.
116
+ *
117
+ * @param array $attr Attributes passed by Custom Facebook Feed Gutenberg block.
118
+ *
119
+ * @since 2.3
120
+ *
121
+ * @return string
122
+ */
123
+ public function get_feed_html( $attr ) {
124
+
125
+ $return = '';
126
+
127
+ $shortcode_settings = isset( $attr['shortcodeSettings'] ) ? $attr['shortcodeSettings'] : '';
128
+
129
+ $shortcode_settings = str_replace(array( '[custom-facebook-feed', ']' ), '', $shortcode_settings);
130
+
131
+ $return .= do_shortcode( '[custom-facebook-feed '.$shortcode_settings.']' );
132
+
133
+ return $return;
134
+
135
+ }
136
+
137
+ /**
138
+ * Checking if is Gutenberg REST API call.
139
+ *
140
+ * @since 2.3
141
+ *
142
+ * @return bool True if is Gutenberg REST API call.
143
+ */
144
+ public static function is_gb_editor() {
145
+
146
+ // TODO: Find a better way to check if is GB editor API call.
147
+ return defined( 'REST_REQUEST' ) && REST_REQUEST && ! empty( $_REQUEST['context'] ) && 'edit' === $_REQUEST['context']; // phpcs:ignore
148
+ }
149
+
150
+ }
class-cff-education.php ADDED
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ *
5
+ * @since 5.5
6
+ */
7
+ class CFF_Education {
8
+
9
+ var $plugin_version;
10
+
11
+ /**
12
+ * Constructor.
13
+ *
14
+ * @since 5.5
15
+ */
16
+ public function __construct() {
17
+
18
+ $this->hooks();
19
+ }
20
+
21
+ /**
22
+ * Hooks.
23
+ *
24
+ * @since 5.5
25
+ */
26
+ public function hooks() {
27
+ $this->plugin_version = defined( 'WPW_SL_STORE_URL' ) ? 'pro' : 'free';
28
+ }
29
+
30
+ /**
31
+ * "Did You Know?" messages.
32
+ *
33
+ * @since 5.5
34
+ */
35
+ public function dyk_messages() {
36
+
37
+ $free_messages = array(
38
+ array(
39
+ 'title' => esc_html__( 'Bring Your Feeds to Life with Media Content', 'custom-facebook-feeds' ),
40
+ 'content' => esc_html__( 'You\'ve done the hard work of getting a visitor onto your site, now keep them there by displaying your Facebook photos and videos directly on your site, rather than sending your visitors away to Facebook.', 'custom-facebook-feeds' ),
41
+ 'more' => 'https://smashballoon.com/custom-facebook-feed/',
42
+ 'item' => 1,
43
+ ),
44
+ array(
45
+ 'title' => esc_html__( 'Use Facebook Reviews to Boost Conversions', 'custom-facebook-feeds' ),
46
+ 'content' => esc_html__( 'Reviews for your product or service are the best way to give users the confidence to take action. With the Reviews extension, easily add 5 star reviews and recommendations from Facebook to your website help increase conversions.', 'custom-facebook-feeds' ),
47
+ 'more' => 'https://smashballoon.com/extensions/reviews/',
48
+ 'item' => 2,
49
+ ),
50
+ array(
51
+ 'title' => esc_html__( 'Bring the Conversation to Your Website', 'custom-facebook-feeds' ),
52
+ 'content' => esc_html__( 'Include the Facebook comments with each of your posts to engage your website viewers, keep them on your site for longer, and encourage them to interact with your content.', 'custom-facebook-feeds' ),
53
+ 'more' => 'https://smashballoon.com/custom-facebook-feed/wordpress-plugin/#comments',
54
+ 'item' => 3,
55
+ ),
56
+ array(
57
+ 'title' => esc_html__( 'Automatically Feed Facebook Events to Your Website', 'custom-facebook-feeds' ),
58
+ 'content' => esc_html__( 'Save yourself the time and effort of posting events both to Facebook and your website by using the Custom Facebook Feed Pro plugin to automatically feeds events right to your site.', 'custom-facebook-feeds' ),
59
+ 'more' => 'https://smashballoon.com/custom-facebook-feed/docs/displaying-facebook-events-using-wordpress-plugin/',
60
+ 'item' => 4,
61
+ ),
62
+ );
63
+
64
+ $pro_messages = array(
65
+ array(
66
+ 'title' => esc_html__( 'Automated YouTube Live Streaming', 'custom-facebook-feeds' ),
67
+ 'content' => esc_html__( 'You can automatically feed live YouTube videos to your website using our Feeds For YouTube Pro plugin. It takes all the hassle out of publishing live videos to your site by automating the process.', 'custom-facebook-feeds' ),
68
+ 'more' => 'https://smashballoon.com/youtube-feed/',
69
+ 'item' => 1,
70
+ ),
71
+ array(
72
+ 'title' => esc_html__( 'Use Facebook Reviews to Boost Conversions', 'custom-facebook-feeds' ),
73
+ 'content' => esc_html__( 'Reviews for your product or service are the best way to give users the confidence to take action. With the Reviews extension, easily add 5 star reviews and recommendations from Facebook to your website help increase conversions.', 'custom-facebook-feeds' ),
74
+ 'more' => 'https://smashballoon.com/extensions/reviews/',
75
+ 'item' => 2,
76
+ ),
77
+ array(
78
+ 'title' => esc_html__( 'Adding Social Proof with Twitter Feeds', 'custom-facebook-feeds' ),
79
+ 'content' => esc_html__( 'Twitter testimonials are one of the best ways to add verifiable social proof to your website. They add credibility to your brand, product, or service by displaying reviews from real people to your site, helping to convert more visitors into customers. Our free Custom Twitter Feeds plugin makes displaying Tweets on your website a breeze.', 'custom-facebook-feeds' ),
80
+ 'more' => 'https://wordpress.org/plugins/custom-twitter-feeds/',
81
+ 'item' => 3,
82
+ ),
83
+ array(
84
+ 'title' => esc_html__( 'Run Promotions with Instagram Hashtags', 'custom-facebook-feeds' ),
85
+ 'content' => esc_html__( 'You can use hashtags on Instagram for so many things; but one of the most effective is for targeted promotions or competitions which engage with your audience and boost your exposure. Our Instagram Feed Pro plugin allows you to bring your hashtagged content into your website and display it in one centralized location.', 'custom-facebook-feeds' ),
86
+ 'more' => 'https://smashballoon.com/instagram-feed/features/#hashtag',
87
+ 'item' => 4,
88
+ ),
89
+ );
90
+
91
+ if ( $this->plugin_version === 'pro' ) {
92
+ return $pro_messages;
93
+ }
94
+ return $free_messages;
95
+
96
+ }
97
+
98
+ /**
99
+ * "Did You Know?" random message.
100
+ *
101
+ * @since 5.5
102
+ */
103
+ public function dyk_message_rnd() {
104
+
105
+ $messages = $this->dyk_messages();
106
+
107
+ $index = array_rand( $messages );
108
+
109
+ return $messages[ $index ];
110
+ }
111
+
112
+ /**
113
+ * "Did You Know?" display message.
114
+ *
115
+ * @since 5.5
116
+ *
117
+ */
118
+ public function dyk_display() {
119
+
120
+ $dyk_message = $this->dyk_message_rnd();
121
+
122
+ if ( ! empty( $dyk_message['more'] ) ) {
123
+ $dyk_message['more'] = add_query_arg(
124
+ array(
125
+ 'utm_source' => 'plugin-'.$this->plugin_version,
126
+ 'utm_campaign' => 'cff-issue-email',
127
+ 'utm_content' => $dyk_message['item'],
128
+ ),
129
+ $dyk_message['more']
130
+ );
131
+ }
132
+
133
+ return $dyk_message;
134
+ }
135
+ }
class-cff-error-reporter.php ADDED
@@ -0,0 +1,444 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Class CFF_Error_Reporter
4
+ *
5
+ * Set as a global object to record and report errors
6
+ *
7
+ * @since
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) {
11
+ die( '-1' );
12
+ }
13
+
14
+ class CFF_Error_Reporter
15
+ {
16
+ /**
17
+ * @var array
18
+ */
19
+ var $errors;
20
+
21
+ /**
22
+ * @var array
23
+ */
24
+ var $frontend_error;
25
+
26
+ var $reporter_key;
27
+
28
+ /**
29
+ * CFF_Error_Reporter constructor.
30
+ */
31
+ public function __construct() {
32
+ $this->reporter_key = 'cff_error_reporter';
33
+ $this->errors = get_option( $this->reporter_key, array() );
34
+ $this->frontend_error = '';
35
+ add_action( 'cff_feed_issue_email', array( $this, 'maybe_trigger_report_email_send' ) );
36
+ add_action( 'wp_ajax_cff_dismiss_critical_notice', array( $this, 'dismiss_critical_notice' ) );
37
+ add_action( 'wp_footer', array( $this, 'critical_error_notice' ), 300 );
38
+ add_action( 'admin_notices', array( $this, 'admin_error_notices' ) );
39
+ }
40
+
41
+ /**
42
+ * @return array
43
+ *
44
+ * @since 2.0/4.0
45
+ */
46
+ public function get_errors() {
47
+ return $this->errors;
48
+ }
49
+
50
+ /**
51
+ * @param $type
52
+ * @param $message_array
53
+ *
54
+ * @since 2.0/4.0
55
+ */
56
+ public function add_error( $type, $args ) {
57
+ if ( $type === 'accesstoken' ) {
58
+ $accesstoken_error_exists = false;
59
+ if ( isset( $this->errors['accesstoken'] ) ) {
60
+ foreach ($this->errors['accesstoken'] as $accesstoken ) {
61
+ if ( $args['accesstoken'] === $accesstoken['accesstoken'] ) {
62
+ $accesstoken_error_exists = true;
63
+ }
64
+ }
65
+ }
66
+
67
+ if ( !$accesstoken_error_exists ) {
68
+ $this->errors['accesstoken'][] = array(
69
+ 'accesstoken' => $args['accesstoken'],
70
+ 'post_id' => $args['post_id'],
71
+ 'errorno' => $args['errorno']
72
+ );
73
+ }
74
+
75
+ } else {
76
+ $this->errors[ $type ] = array(
77
+ 'accesstoken' => $args['accesstoken'],
78
+ 'public_message' => $args['public_message'],
79
+ 'admin_message' => $args['admin_message'],
80
+ 'frontend_directions' => $args['frontend_directions'],
81
+ 'backend_directions' => $args['backend_directions'],
82
+ 'post_id' => $args['post_id'],
83
+ 'errorno' => $args['errorno']
84
+ );
85
+ }
86
+
87
+ update_option( $this->reporter_key, $this->errors, false );
88
+ }
89
+
90
+ /**
91
+ * @param $type
92
+ *
93
+ * @since 2.0/4.0
94
+ */
95
+ public function remove_error( $type ) {
96
+ $errors = $this->errors;
97
+
98
+ if ( isset( $errors[ $type ] ) ) {
99
+ unset( $errors[ $type ] );
100
+ }
101
+
102
+ if ( empty( $errors ) ) {
103
+ delete_option( $this->reporter_key );
104
+ $this->errors = array();
105
+ } else {
106
+ update_option( $this->reporter_key, $errors, false );
107
+ $this->errors = $errors;
108
+ }
109
+ }
110
+
111
+ public function remove_all_errors() {
112
+ delete_option( $this->reporter_key );
113
+ $this->errors = array();
114
+ }
115
+
116
+ /**
117
+ * @param $type
118
+ * @param $message
119
+ *
120
+ * @since 2.0/5.0
121
+ */
122
+ public function add_frontend_error( $message, $directions ) {
123
+ $this->frontend_error = $message . $directions;
124
+ }
125
+
126
+ public function remove_frontend_error() {
127
+ $this->frontend_error = '';
128
+ }
129
+
130
+ /**
131
+ * @return string
132
+ *
133
+ * @since 2.0/5.0
134
+ */
135
+ public function get_frontend_error() {
136
+ return $this->frontend_error;
137
+ }
138
+
139
+ public function get_critical_errors() {
140
+ $errors = $this->get_errors();
141
+
142
+ return $errors;
143
+ }
144
+
145
+ public function are_critical_errors() {
146
+ $are_errors = false;
147
+
148
+ $errors = $this->get_errors();
149
+
150
+ foreach ( $errors as $error ) {
151
+ $are_errors = true;
152
+ }
153
+
154
+ return $are_errors;
155
+ }
156
+
157
+
158
+ /**
159
+ * Load the critical notice for logged in users.
160
+ */
161
+ function critical_error_notice() {
162
+ // Don't do anything for guests.
163
+ if ( ! is_user_logged_in() ) {
164
+ return;
165
+ }
166
+
167
+ // Only show this to users who are not tracked.
168
+ if ( ! current_user_can( 'edit_posts' ) ) {
169
+ return;
170
+ }
171
+
172
+ if ( ! $this->are_critical_errors() ) {
173
+ return;
174
+ }
175
+
176
+
177
+ // Don't show if already dismissed.
178
+ if ( get_option( 'cff_dismiss_critical_notice', false ) ) {
179
+ return;
180
+ }
181
+
182
+ $options = get_option('cff_style_settings');
183
+ if ( isset( $options['disable_admin_notice'] ) && $options['disable_admin_notice'] === 'on' ) {
184
+ return;
185
+ }
186
+
187
+ ?>
188
+ <div class="cff-critical-notice cff-critical-notice-hide">
189
+ <div class="cff-critical-notice-icon">
190
+ <img src="<?php echo CFF_PLUGIN_URL . 'img/cff-icon.png'; ?>" width="45" alt="Custom Facebook Feed icon" />
191
+ </div>
192
+ <div class="cff-critical-notice-text">
193
+ <h3><?php esc_html_e( 'Custom Facebook Feed Critical Issue', 'custom-facebook-feed' ); ?></h3>
194
+ <p>
195
+ <?php
196
+ $doc_url = admin_url() . 'admin.php?page=cff-top';
197
+ // Translators: %s is the link to the article where more details about critical are listed.
198
+ printf( esc_html__( 'An issue is preventing your Custom Facebook Feeds from updating. %1$sResolve this issue%2$s.', 'custom-facebook-feed' ), '<a href="' . esc_url( $doc_url ) . '" target="_blank">', '</a>' );
199
+ ?>
200
+ </p>
201
+ </div>
202
+ <div class="cff-critical-notice-close">&times;</div>
203
+ </div>
204
+ <style type="text/css">
205
+ .cff-critical-notice {
206
+ position: fixed;
207
+ bottom: 20px;
208
+ right: 15px;
209
+ font-family: Arial, Helvetica, "Trebuchet MS", sans-serif;
210
+ background: #fff;
211
+ box-shadow: 0 0 10px 0 #dedede;
212
+ padding: 10px 10px;
213
+ display: flex;
214
+ align-items: center;
215
+ justify-content: center;
216
+ width: 325px;
217
+ max-width: calc( 100% - 30px );
218
+ border-radius: 6px;
219
+ transition: bottom 700ms ease;
220
+ z-index: 10000;
221
+ }
222
+
223
+ .cff-critical-notice h3 {
224
+ font-size: 13px;
225
+ color: #222;
226
+ font-weight: 700;
227
+ margin: 0 0 4px;
228
+ padding: 0;
229
+ line-height: 1;
230
+ border: none;
231
+ }
232
+
233
+ .cff-critical-notice p {
234
+ font-size: 12px;
235
+ color: #7f7f7f;
236
+ font-weight: 400;
237
+ margin: 0;
238
+ padding: 0;
239
+ line-height: 1.2;
240
+ border: none;
241
+ }
242
+
243
+ .cff-critical-notice p a {
244
+ color: #7f7f7f;
245
+ font-size: 12px;
246
+ line-height: 1.2;
247
+ margin: 0;
248
+ padding: 0;
249
+ text-decoration: underline;
250
+ font-weight: 400;
251
+ }
252
+
253
+ .cff-critical-notice p a:hover {
254
+ color: #666;
255
+ }
256
+
257
+ .cff-critical-notice-icon img {
258
+ height: auto;
259
+ display: block;
260
+ margin: 0;
261
+ }
262
+
263
+ .cff-critical-notice-icon {
264
+ padding: 0;
265
+ border-radius: 4px;
266
+ flex-grow: 0;
267
+ flex-shrink: 0;
268
+ margin-right: 12px;
269
+ overflow: hidden;
270
+ }
271
+
272
+ .cff-critical-notice-close {
273
+ padding: 10px;
274
+ margin: -12px -9px 0 0;
275
+ border: none;
276
+ box-shadow: none;
277
+ border-radius: 0;
278
+ color: #7f7f7f;
279
+ background: transparent;
280
+ line-height: 1;
281
+ align-self: flex-start;
282
+ cursor: pointer;
283
+ font-weight: 400;
284
+ }
285
+ .cff-critical-notice-close:hover,
286
+ .cff-critical-notice-close:focus{
287
+ color: #111;
288
+ }
289
+
290
+ .cff-critical-notice.cff-critical-notice-hide {
291
+ bottom: -200px;
292
+ }
293
+ </style>
294
+ <?php
295
+
296
+ if ( ! wp_script_is( 'jquery', 'queue' ) ) {
297
+ wp_enqueue_script( 'jquery' );
298
+ }
299
+ ?>
300
+ <script>
301
+ if ( 'undefined' !== typeof jQuery ) {
302
+ jQuery( document ).ready( function ( $ ) {
303
+ /* Don't show the notice if we don't have a way to hide it (no js, no jQuery). */
304
+ $( document.querySelector( '.cff-critical-notice' ) ).removeClass( 'cff-critical-notice-hide' );
305
+ $( document.querySelector( '.cff-critical-notice-close' ) ).on( 'click', function ( e ) {
306
+ e.preventDefault();
307
+ $( this ).closest( '.cff-critical-notice' ).addClass( 'cff-critical-notice-hide' );
308
+ $.ajax( {
309
+ url: '<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>',
310
+ method: 'POST',
311
+ data: {
312
+ action: 'cff_dismiss_critical_notice',
313
+ nonce: '<?php echo esc_js( wp_create_nonce( 'cff-critical-notice' ) ); ?>',
314
+ }
315
+ } );
316
+ } );
317
+ } );
318
+ }
319
+ </script>
320
+ <?php
321
+ }
322
+
323
+ /**
324
+ * Ajax handler to hide the critical notice.
325
+ */
326
+ public function dismiss_critical_notice() {
327
+
328
+ check_ajax_referer( 'cff-critical-notice', 'nonce' );
329
+
330
+ update_option( 'cff_dismiss_critical_notice', 1, false );
331
+
332
+ wp_die();
333
+
334
+ }
335
+
336
+ public function send_report_email() {
337
+ $options = get_option( 'cff_style_settings', array() );
338
+
339
+ $to_string = ! empty( $options['email_notification_addresses'] ) ? str_replace( ' ', '', $options['email_notification_addresses'] ) : get_option( 'admin_email', '' );
340
+
341
+ $to_array_raw = explode( ',', $to_string );
342
+ $to_array = array();
343
+
344
+ foreach ( $to_array_raw as $email ) {
345
+ if ( is_email( $email ) ) {
346
+ $to_array[] = $email;
347
+ }
348
+ }
349
+
350
+ if ( empty( $to_array ) ) {
351
+ return false;
352
+ }
353
+ $from_name = esc_html( wp_specialchars_decode( get_bloginfo( 'name' ) ) );
354
+ $email_from = $from_name . ' <' . get_option( 'admin_email', $to_array[0] ) . '>';
355
+ $header_from = "From: " . $email_from;
356
+
357
+ $headers = array( 'Content-Type: text/html; charset=utf-8', $header_from );
358
+
359
+ $header_image = CFF_PLUGIN_URL . 'img/balloon-120.png';
360
+ $title = __( 'Custom Facebook Feed Report for ' . home_url() );
361
+ $link = admin_url( 'admin.php?page=cff-top');
362
+ //&tab=customize-advanced
363
+ $footer_link = admin_url('admin.php?page=cff-style&tab=misc&flag=emails');
364
+ $bold = __( 'There\'s an Issue with a Facebook Feed on Your Website', 'custom-facebook-feed' );
365
+ $details = '<p>' . __( 'A Custom Facebook Feed on your website is currently unable to connect to Facebook to retrieve new posts. Don\'t worry, your feed is still being displayed using a cached version, but is no longer able to display new posts.', 'custom-facebook-feed' ) . '</p>';
366
+ $details .= '<p>' . sprintf( __( 'This is caused by an issue with your Facebook account connecting to the Facebook API. For information on the exact issue and directions on how to resolve it, please visit the %sCustom Facebook Feed settings page%s on your website.', 'custom-facebook-feed' ), '<a href="' . esc_url( $link ) . '">', '</a>' ). '</p>';
367
+ $message_content = '<h6 style="padding:0;word-wrap:normal;font-family:\'Helvetica Neue\',Helvetica,Arial,sans-serif;font-weight:bold;line-height:130%;font-size: 16px;color:#444444;text-align:inherit;margin:0 0 20px 0;Margin:0 0 20px 0;">' . $bold . '</h6>' . $details;
368
+ include_once CFF_PLUGIN_DIR . 'class-cff-education.php';
369
+ $educator = new CFF_Education();
370
+ $dyk_message = $educator->dyk_display();
371
+ ob_start();
372
+ include CFF_PLUGIN_DIR . 'email.php';
373
+ $email_body = ob_get_contents();
374
+ ob_get_clean();
375
+ $sent = wp_mail( $to_array, $title, $email_body, $headers );
376
+
377
+ return $sent;
378
+ }
379
+
380
+ public function maybe_trigger_report_email_send() {
381
+ if ( ! $this->are_critical_errors() ) {
382
+ return;
383
+ }
384
+ $options = get_option('cff_style_settings');
385
+
386
+ if ( isset( $options['enable_email_report'] ) && empty( $options['enable_email_report'] ) ) {
387
+ return;
388
+ }
389
+
390
+ $this->send_report_email();
391
+ }
392
+
393
+ public function admin_error_notices() {
394
+ if ( isset( $_GET['page'] ) && in_array( $_GET['page'], array( 'cff-top', 'cff-style' )) ) {
395
+
396
+ $errors = $this->get_critical_errors();
397
+ if ( $this->are_critical_errors() && ! empty( $errors ) ) :
398
+ if ( isset( $errors['wp_remote_get'] ) ) {
399
+ $error = $errors['wp_remote_get'];
400
+ $error_message = $error['admin_message'];
401
+ $button = $error['backend_directions'];
402
+ $post_id = $error['post_id'];
403
+ $directions = '<p class="cff-error-directions">';
404
+ $directions .= $button;
405
+ $directions .= '<button data-url="'.get_the_permalink( $post_id ).'" class="cff-clear-errors-visit-page cff-space-left button button-secondary">' . __( 'View Feed and Retry', 'custom-facebook-feed' ) . '</button>';
406
+ $directions .= '</p>';
407
+ } elseif ( isset( $errors['api'] ) ) {
408
+ $error = $errors['api'];
409
+ $error_message = $error['admin_message'];
410
+ $button = $error['backend_directions'];
411
+ $post_id = $error['post_id'];
412
+ $directions = '<p class="cff-error-directions">';
413
+ $directions .= $button;
414
+ $directions .= '<button data-url="'.get_the_permalink( $post_id ).'" class="cff-clear-errors-visit-page cff-space-left button button-secondary">' . __( 'View Feed and Retry', 'custom-facebook-feed' ) . '</button>';
415
+ $directions .= '</p>';
416
+ } else {
417
+ $error = $errors['accesstoken'];
418
+
419
+ $tokens = array();
420
+ $post_id = false;
421
+ foreach ( $error as $token ) {
422
+ $tokens[] = $token['accesstoken'];
423
+ $post_id = $token['post_id'];
424
+ }
425
+ $error_message = sprintf( __( 'The access token %s is invalid or has expired.', 'custom-facebook-feed' ), implode( $tokens, ', ' ) );
426
+ $directions = '<p class="cff-error-directions">';
427
+ $directions .= '<button class="button button-primary cff-reconnect">' . __( 'Reconnect Your Account', 'custom-facebook-feed' ) . '</button>';
428
+ $directions .= '<button data-url="'.get_the_permalink( $post_id ).'" class="cff-clear-errors-visit-page cff-space-left button button-secondary">' . __( 'View Feed and Retry', 'custom-facebook-feed' ) . '</button>';
429
+ $directions .= '</p>';
430
+ }
431
+ ?>
432
+ <div class="notice notice-warning is-dismissible cff-admin-notice">
433
+ <p><strong><?php echo esc_html__( 'Custom Facebook Feed is encountering an error and your feeds may not be updating due to the following reasons:', 'custom-facebook-feed') ; ?></strong></p>
434
+
435
+ <?php echo $error_message; ?>
436
+
437
+ <?php echo $directions; ?>
438
+ </div>
439
+ <?php endif;
440
+ }
441
+
442
+ }
443
+
444
+ }
class-cff-sitehealth.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class CFF_SiteHealth {
4
+
5
+ /**
6
+ * Indicates if current integration is allowed to load.
7
+ *
8
+ * @since 1.5.5
9
+ *
10
+ * @return bool
11
+ */
12
+ public function allow_load() {
13
+
14
+ global $wp_version;
15
+
16
+ return version_compare( $wp_version, '5.2', '>=' );
17
+ }
18
+
19
+ /**
20
+ * Loads an integration.
21
+ *
22
+ * @since 1.5.5
23
+ */
24
+ public function load() {
25
+
26
+ $this->hooks();
27
+ }
28
+
29
+ /**
30
+ * Integration hooks.
31
+ *
32
+ * @since 1.5.5
33
+ */
34
+ protected function hooks() {
35
+ add_filter( 'site_status_tests', array( $this, 'add_tests' ) );
36
+ }
37
+
38
+ /**
39
+ * Add MonsterInsights WP Site Health tests.
40
+ *
41
+ * @param array $tests The current filters array.
42
+ *
43
+ * @return array
44
+ */
45
+ public function add_tests( $tests ) {
46
+ $tests['direct']['cff_test_check_errors'] = array(
47
+ 'label' => __( 'Custom Facebook Feed Errors', 'custom-facebook-feed' ),
48
+ 'test' => array( $this, 'test_check_errors' )
49
+ );
50
+
51
+ return $tests;
52
+ }
53
+
54
+ /**
55
+ * Checks if there are Instagram API Errors
56
+ */
57
+ public function test_check_errors() {
58
+ $result = array(
59
+ 'label' => __( 'Custom Facebook Feed has no critical errors', 'custom-facebook-feed' ),
60
+ 'status' => 'good',
61
+ 'badge' => array(
62
+ 'label' => __( 'Custom Facebook Feed', 'custom-facebook-feed' ),
63
+ 'color' => 'blue',
64
+ ),
65
+ 'description' => __( 'No critical errors have been detected.', 'custom-facebook-feed' ),
66
+ 'test' => 'cff_test_check_errors',
67
+ );
68
+
69
+ global $cff_error_reporter;
70
+
71
+
72
+ if ( $cff_error_reporter->are_critical_errors() ) {
73
+ $link = admin_url( 'admin.php?page=cff-top' );
74
+ $result['status'] = 'critical';
75
+ $result['label'] = __( 'Your Custom Facebook Feed is experiencing an error.', 'custom-facebook-feed' );
76
+ $result['description'] = sprintf( __( 'A critical issue has been detected with your Custom Facebook Feed. Visit the %sCustom Facebook Feed settings page%s to fix the issue.', 'custom-facebook-feed' ), '<a href="' . esc_url( $link ) . '">', '</a>' );
77
+ }
78
+
79
+
80
+ return $result;
81
+ }
82
+ }
css/cff-admin-style.css CHANGED
@@ -1748,4 +1748,756 @@
1748
  text-align: center;
1749
  width: 20px;
1750
  -webkit-font-smoothing: antialiased
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1751
  }
1748
  text-align: center;
1749
  width: 20px;
1750
  -webkit-font-smoothing: antialiased
1751
+ }
1752
+
1753
+ /* Error Reporting */
1754
+ #cff-admin .cff-space-left {
1755
+ margin-left: 10px;
1756
+ }
1757
+ #cff-admin .cff-goto {
1758
+ border: 1px solid #e89a2e;
1759
+ background-color: rgba(232, 154, 46, .2);
1760
+ }
1761
+
1762
+ #cff-admin .cff_box {
1763
+ float: left;
1764
+ clear: both;
1765
+ width: 96%;
1766
+
1767
+ padding: 10px 2%;
1768
+ margin: 10px 0;
1769
+ font-size: 13px;
1770
+ background: #f9f9f9;
1771
+ background: rgba(255,255,255,0.8);
1772
+
1773
+ -moz-border-radius: 8px;
1774
+ -webkit-border-radius: 8px;
1775
+ border-radius: 8px;
1776
+ }
1777
+ #cff-admin .cff_box_setting{
1778
+ margin-bottom: 20px;
1779
+ }
1780
+ #cff-admin .cff_box_setting:last-child {
1781
+ margin-bottom: 0;
1782
+ }
1783
+ #cff-admin .cff_box_setting label {
1784
+ display: inline-block;
1785
+ font-weight: bold;
1786
+ font-size: 14px;
1787
+ padding-bottom: 5px;
1788
+ padding-right: 5px;
1789
+ }
1790
+ #cff-admin .cff_box_setting textarea {
1791
+ width: 100%;
1792
+ }
1793
+
1794
+
1795
+ /* About */
1796
+ #cff-admin-about *,#cff-admin-about *::before,#cff-admin-about *::after {
1797
+ -webkit-box-sizing: border-box;
1798
+ -moz-box-sizing: border-box;
1799
+ box-sizing: border-box
1800
+ }
1801
+
1802
+ #cff-admin-about .cff-admin-about-section {
1803
+ position: relative;
1804
+ margin: 0 20px 20px;
1805
+ padding: 30px;
1806
+ background: #fff;
1807
+ border: 1px solid #DDDDDD;
1808
+ line-height: 2;
1809
+ }
1810
+
1811
+ #cff-admin-about .cff-admin-about-section h1,#cff-admin-about .cff-admin-about-section h2,#cff-admin-about .cff-admin-about-section h3,#cff-admin-about .cff-admin-about-section h4,#cff-admin-about .cff-admin-about-section h5 {
1812
+ margin-top: 0;
1813
+ padding-top: 0;
1814
+ line-height: 1.6
1815
+ }
1816
+
1817
+ #cff-admin-about .cff-admin-about-section h2 {
1818
+ font-size: 24px
1819
+ }
1820
+
1821
+ #cff-admin-about .cff-admin-about-section h3 {
1822
+ font-size: 18px;
1823
+ margin-bottom: 30px;
1824
+ color: #23282C
1825
+ }
1826
+
1827
+ #cff-admin-about .cff-admin-about-section ul,#cff-admin-about .cff-admin-about-section p {
1828
+ font-size: 16px
1829
+ }
1830
+
1831
+ #cff-admin-about .cff-admin-about-section p {
1832
+ margin-bottom: 20px
1833
+ }
1834
+
1835
+ #cff-admin-about .cff-admin-about-section p.bigger {
1836
+ font-size: 18px
1837
+ }
1838
+
1839
+ #cff-admin-about .cff-admin-about-section p.smaller {
1840
+ font-size: 14px
1841
+ }
1842
+
1843
+ #cff-admin-about .cff-admin-about-section p:last-child {
1844
+ margin-bottom: 0
1845
+ }
1846
+
1847
+ #cff-admin-about .cff-admin-about-section hr {
1848
+ margin: 30px 0
1849
+ }
1850
+
1851
+ #cff-admin-about .cff-admin-about-section figure {
1852
+ margin: 0
1853
+ }
1854
+
1855
+ #cff-admin-about .cff-admin-about-section figure img {
1856
+ width: 100%
1857
+ }
1858
+
1859
+ #cff-admin-about .cff-admin-about-section figure figcaption {
1860
+ font-size: 13px;
1861
+ color: #888888;
1862
+ margin-top: -10px;
1863
+ text-align: center;
1864
+ line-height: initial
1865
+ }
1866
+
1867
+ #cff-admin-about .cff-admin-about-section .cff-admin-column-40 {
1868
+ padding-left: 15px
1869
+ }
1870
+
1871
+ @media (max-width: 767px) {
1872
+ #cff-admin-about .cff-admin-about-section .cff-admin-column-40 {
1873
+ width:100%;
1874
+ padding-left: 0;
1875
+ padding-top: 20px
1876
+ }
1877
+ }
1878
+
1879
+ #cff-admin-about .cff-admin-about-section .cff-admin-column-60 {
1880
+ padding-right: 15px
1881
+ }
1882
+ #cff-admin-about .cff-admin-about-section .cff-admin-about-text{
1883
+ padding-right: 400px;
1884
+ }
1885
+ #cff-admin-about .cff-admin-about-section .cff-admin-about-image{
1886
+ position: absolute;
1887
+ width: 340px;
1888
+ top: 20px;
1889
+ right: 20px;
1890
+ }
1891
+
1892
+ @media (max-width: 767px) {
1893
+ #cff-admin-about .cff-admin-about-section .cff-admin-column-60,
1894
+ #cff-admin-about .cff-admin-about-section .cff-admin-about-text,
1895
+ #cff-admin-about .cff-admin-about-section .cff-admin-about-image {
1896
+ position: relative;
1897
+ width:100%;
1898
+ padding-right: 0
1899
+ }
1900
+ }
1901
+
1902
+ #cff-admin-about .cff-admin-about-section ul.list-plain {
1903
+ margin-top: 0;
1904
+ margin-bottom: 0
1905
+ }
1906
+
1907
+ #cff-admin-about .cff-admin-about-section ul.list-plain li {
1908
+ margin-bottom: 0
1909
+ }
1910
+
1911
+ #cff-admin-about .cff-admin-about-section ul.list-features li .fa {
1912
+ color: #2a9b39;
1913
+ margin: 0 8px 0 0
1914
+ }
1915
+
1916
+ #cff-admin-about .cff-admin-about-section .fa-star {
1917
+ color: gold
1918
+ }
1919
+
1920
+ #cff-admin-about .cff-admin-about-section .no-margin {
1921
+ margin: 0 !important
1922
+ }
1923
+
1924
+ #cff-admin-about .cff-admin-about-section .no-padding {
1925
+ padding: 0 !important
1926
+ }
1927
+
1928
+ #cff-admin-about .cff-admin-about-section .centered {
1929
+ text-align: center !important
1930
+ }
1931
+
1932
+ #cff-admin-about .cff-admin-about-section-first-form {
1933
+ display: flex
1934
+ }
1935
+
1936
+ @media (max-width: 767px) {
1937
+ #cff-admin-about .cff-admin-about-section-first-form {
1938
+ display:block !important
1939
+ }
1940
+ }
1941
+
1942
+ #cff-admin-about .cff-admin-about-section-first-form .cff-admin-about-section-first-form-text {
1943
+ flex: 1;
1944
+ padding-right: 30px
1945
+ }
1946
+
1947
+ @media (max-width: 767px) {
1948
+ #cff-admin-about .cff-admin-about-section-first-form .cff-admin-about-section-first-form-text {
1949
+ flex:none
1950
+ }
1951
+ }
1952
+
1953
+ #cff-admin-about .cff-admin-about-section-first-form .cff-admin-about-section-first-form-video iframe {
1954
+ border: 1px solid #DDDDDD
1955
+ }
1956
+
1957
+ @media (max-width: 767px) {
1958
+ #cff-admin-about .cff-admin-about-section-first-form .cff-admin-about-section-first-form-video {
1959
+ padding-top:20px
1960
+ }
1961
+ }
1962
+
1963
+ #cff-admin-about .cff-admin-about-section-hero {
1964
+ padding: 0
1965
+ }
1966
+
1967
+ #cff-admin-about .cff-admin-about-section-hero .cff-admin-about-section-hero-main,#cff-admin-about .cff-admin-about-section-hero .cff-admin-about-section-hero-extra {
1968
+ padding: 30px
1969
+ }
1970
+
1971
+ @media (max-width: 767px) {
1972
+ #cff-admin-about .cff-admin-about-section-hero .cff-admin-about-section-hero-extra .cff-admin-column-50 {
1973
+ float:none;
1974
+ width: 100%
1975
+ }
1976
+ }
1977
+
1978
+ #cff-admin-about .cff-admin-about-section-hero .cff-admin-about-section-hero-main {
1979
+ background-color: #FAFAFA;
1980
+ border-bottom: 1px solid #DDDDDD
1981
+ }
1982
+
1983
+ #cff-admin-about .cff-admin-about-section-hero .cff-admin-about-section-hero-main.no-border {
1984
+ border-bottom: 0
1985
+ }
1986
+
1987
+ #cff-admin-about .cff-admin-about-section-hero .cff-admin-about-section-hero-main p {
1988
+ color: #666
1989
+ }
1990
+
1991
+ #cff-admin-about .cff-admin-about-section-hero h3.call-to-action {
1992
+ margin-bottom: -10px
1993
+ }
1994
+
1995
+ #cff-admin-about .cff-admin-about-section-hero span.price-20-off {
1996
+ color: #6AB255
1997
+ }
1998
+
1999
+ #cff-admin-about .cff-admin-about-section-squashed {
2000
+ margin-bottom: 0
2001
+ }
2002
+
2003
+ #cff-admin-about .cff-admin-about-section-squashed:not(:last-of-type) {
2004
+ border-bottom: 0
2005
+ }
2006
+
2007
+ #cff-admin-about .cff-admin-about-section-post h2 {
2008
+ margin-bottom: -10px
2009
+ }
2010
+
2011
+ #cff-admin-about .cff-admin-about-section-post h3 {
2012
+ margin-bottom: 15px
2013
+ }
2014
+
2015
+ #cff-admin-about .cff-admin-about-section-post p:last-of-type {
2016
+ margin-bottom: 30px
2017
+ }
2018
+
2019
+ #cff-admin-about .cff-admin-about-section-post .cff-admin-column-20 {
2020
+ padding-right: 20px;
2021
+ width: auto
2022
+ }
2023
+
2024
+ #cff-admin-about .cff-admin-about-section-post .cff-admin-column-20 img {
2025
+ width: 270px
2026
+ }
2027
+
2028
+ @media (max-width: 767px) {
2029
+ #cff-admin-about .cff-admin-about-section-post .cff-admin-column-20 {
2030
+ width:20%
2031
+ }
2032
+
2033
+ #cff-admin-about .cff-admin-about-section-post .cff-admin-column-20 img {
2034
+ width: auto;
2035
+ max-width: 100%
2036
+ }
2037
+ }
2038
+
2039
+ #cff-admin-about .cff-admin-about-section-post .cff-admin-column-80 {
2040
+ padding-left: 20px;
2041
+ width: calc(100% - 20px - 270px)
2042
+ }
2043
+
2044
+ @media (max-width: 767px) {
2045
+ #cff-admin-about .cff-admin-about-section-post .cff-admin-column-80 {
2046
+ width:80%
2047
+ }
2048
+ }
2049
+
2050
+ #cff-admin-about .cff-admin-about-section-post .cff-admin-about-section-post-link {
2051
+ padding: 10px 15px;
2052
+ background-color: #DF7739;
2053
+ color: #fff;
2054
+ border-radius: 3px;
2055
+ text-decoration: none;
2056
+ margin-top: 15px;
2057
+ font-size: 14px
2058
+ }
2059
+
2060
+ #cff-admin-about .cff-admin-about-section-post .cff-admin-about-section-post-link:hover {
2061
+ background-color: #B85A1B
2062
+ }
2063
+
2064
+ #cff-admin-about .cff-admin-about-section-post .cff-admin-about-section-post-link .fa {
2065
+ color: #EDBA9E;
2066
+ vertical-align: middle;
2067
+ margin-left: 8px
2068
+ }
2069
+
2070
+ #cff-admin-about .cff-admin-about-section-table table {
2071
+ border-collapse: collapse
2072
+ }
2073
+
2074
+ #cff-admin-about .cff-admin-about-section-table table tr td {
2075
+ border-bottom: 1px solid #DDDDDD;
2076
+ border-right: 1px solid #DDDDDD;
2077
+ padding: 30px;
2078
+ vertical-align: top
2079
+ }
2080
+
2081
+ #cff-admin-about .cff-admin-about-section-table table tr td:last-of-type {
2082
+ border-right: 0
2083
+ }
2084
+
2085
+ #cff-admin-about .cff-admin-about-section-table table tr:last-child td {
2086
+ border-bottom: none
2087
+ }
2088
+
2089
+ #cff-admin-about .cff-admin-about-section-table table p {
2090
+ background-repeat: no-repeat;
2091
+ background-size: 15px auto;
2092
+ background-position: 0 6px;
2093
+ margin: 0
2094
+ }
2095
+
2096
+ #cff-admin-about .cff-admin-about-section-table table p.features-full {
2097
+ padding-left: 30px;
2098
+ background-image: url(../img/about/icon-full.svg)
2099
+ }
2100
+
2101
+ #cff-admin-about .cff-admin-about-section-table table p.features-none {
2102
+ padding-left: 30px;
2103
+ background-image: url(../img/about/icon-none.svg)
2104
+ }
2105
+
2106
+ #cff-admin-about .cff-admin-about-section-table table p.features-partial {
2107
+ padding-left: 30px;
2108
+ background-position: -3px 0;
2109
+ background-size: 23px auto;
2110
+ background-image: url(../img/about/icon-partial.svg)
2111
+ }
2112
+
2113
+ #cff-admin-about .cff-admin-about-section-table .cff-admin-about-section-hero-main {
2114
+ padding: 0
2115
+ }
2116
+
2117
+ #cff-admin-about .cff-admin-about-section-table .cff-admin-about-section-hero-main h3 {
2118
+ padding: 30px 30px 30px 60px
2119
+ }
2120
+
2121
+ #cff-admin-about .cff-admin-about-section-table .cff-admin-about-section-hero-main .cff-admin-column-33:first-child h3 {
2122
+ padding: 30px
2123
+ }
2124
+
2125
+ #cff-admin-about #cff-admin-addons {
2126
+ padding: 0 30px
2127
+ }
2128
+
2129
+ #cff-admin-about #cff-admin-addons .addon-container {
2130
+ padding: 0 10px
2131
+ }
2132
+
2133
+ #cff-admin-about #cff-admin-addons .addon-item .details {
2134
+ padding: 20px
2135
+ }
2136
+
2137
+ #cff-admin-about #cff-admin-addons .addon-item img {
2138
+ padding: 10px
2139
+ }
2140
+
2141
+ #cff-admin-about #cff-admin-addons .addon-item img[src*="-mi"] {
2142
+ padding: 13px
2143
+ }
2144
+
2145
+ #cff-admin-about #cff-admin-addons .addon-item .action-button .button {
2146
+ display: inline-block;
2147
+ text-decoration: none;
2148
+ font-size: 13px;
2149
+ line-height: 26px;
2150
+ height: 28px;
2151
+ margin: 0;
2152
+ padding: 0 10px 1px;
2153
+ cursor: pointer;
2154
+ -webkit-appearance: none;
2155
+ border-radius: 3px;
2156
+ border: 1px solid #cccccc;
2157
+ background: #f7f7f7;
2158
+ box-shadow: 0 1px 0 #cccccc;
2159
+ font-weight: normal
2160
+ }
2161
+
2162
+ #cff-admin-about #cff-admin-addons .addon-item .action-button .button:hover,#cff-admin-about #cff-admin-addons .addon-item .action-button .button:focus {
2163
+ background: #fafafa;
2164
+ border-color: #999;
2165
+ color: #23282d
2166
+ }
2167
+
2168
+ #cff-admin-about #cff-admin-addons .addon-item .action-button .button.button-primary {
2169
+ background: #0085ba;
2170
+ border-color: #0073aa #006799 #006799;
2171
+ box-shadow: 0 1px 0 #006799;
2172
+ color: #fff;
2173
+ text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799
2174
+ }
2175
+
2176
+ #cff-admin-about #cff-admin-addons .addon-item .action-button .button.button-primary:hover,#cff-admin-about #cff-admin-addons .addon-item .action-button .button.button-primary:focus {
2177
+ background: #008ec2;
2178
+ border-color: #006799;
2179
+ color: #fff
2180
+ }
2181
+
2182
+ #cff-admin-about #cff-admin-addons .addon-item .action-button .button.button-primary .fa-spinner {
2183
+ color: #fff
2184
+ }
2185
+
2186
+ #cff-admin-about #cff-admin-addons .addon-item .action-button .button.button-secondary {
2187
+ color: #555;
2188
+ border-color: #cccccc;
2189
+ background: #f7f7f7;
2190
+ box-shadow: 0 1px 0 #cccccc
2191
+ }
2192
+
2193
+ #cff-admin-about #cff-admin-addons .addon-item .action-button .button.button-secondary:hover,#cff-admin-about #cff-admin-addons .addon-item .action-button .button.button-secondary:focus {
2194
+ background: #fafafa;
2195
+ border-color: #999;
2196
+ color: #23282d
2197
+ }
2198
+
2199
+ #cff-admin-about #cff-admin-addons .addon-item .action-button .button.disabled {
2200
+ cursor: default
2201
+ }
2202
+
2203
+ /* AW columns */
2204
+ .cff-admin-columns>div[class*="-column-"] {
2205
+ float: left
2206
+ }
2207
+
2208
+ .cff-admin-columns .cff-admin-column-20 {
2209
+ width: 20%
2210
+ }
2211
+
2212
+ .cff-admin-columns .cff-admin-column-33 {
2213
+ width: 33.33333%
2214
+ }
2215
+
2216
+ .cff-admin-columns .cff-admin-column-40 {
2217
+ width: 40%
2218
+ }
2219
+
2220
+ .cff-admin-columns .cff-admin-column-50 {
2221
+ width: 50%
2222
+ }
2223
+
2224
+ .cff-admin-columns .cff-admin-column-60 {
2225
+ width: 60%
2226
+ }
2227
+
2228
+ .cff-admin-columns .cff-admin-column-80 {
2229
+ width: 80%
2230
+ }
2231
+
2232
+ .cff-admin-columns .cff-admin-column-last {
2233
+ float: right !important
2234
+ }
2235
+
2236
+ .cff-admin-columns:after {
2237
+ content: "";
2238
+ display: table;
2239
+ clear: both
2240
+ }
2241
+
2242
+ /* AW Addons */
2243
+ #cff-admin-addons h3 {
2244
+ padding: 10px 10px 0 10px;
2245
+ clear: left;
2246
+ }
2247
+ #cff-admin-addons *,#cff-admin-addons *::before,#cff-admin-addons *::after {
2248
+ -webkit-box-sizing: border-box;
2249
+ -moz-box-sizing: border-box;
2250
+ box-sizing: border-box
2251
+ }
2252
+
2253
+ #cff-admin-addons .addons-container {
2254
+ margin-left: -20px;
2255
+ margin-right: -20px
2256
+ }
2257
+
2258
+ #cff-admin-addons .unlock-msg {
2259
+ padding: 0 20px;
2260
+ margin-top: -20px;
2261
+ clear: both
2262
+ }
2263
+
2264
+ #cff-admin-addons #cff-admin-addons-search {
2265
+ background-color: #fff;
2266
+ border: 1px solid #ddd;
2267
+ border-radius: 3px;
2268
+ box-shadow: none;
2269
+ color: #333;
2270
+ vertical-align: middle;
2271
+ padding: 7px 12px;
2272
+ margin: -3px 10px 0 0;
2273
+ width: 200px;
2274
+ min-height: 35px;
2275
+ float: right
2276
+ }
2277
+
2278
+ #cff-admin-addons #cff-admin-addons-search:focus {
2279
+ border-color: #bbb
2280
+ }
2281
+
2282
+ #cff-admin-addons .addon-container {
2283
+ padding: 0 20px;
2284
+ float: left;
2285
+ width: 33.333333%;
2286
+ margin-bottom: 20px
2287
+ }
2288
+
2289
+ @media (max-width: 1249px) {
2290
+ #cff-admin-addons .addon-container {
2291
+ width:50%
2292
+ }
2293
+ }
2294
+
2295
+ @media (max-width: 767px) {
2296
+ #cff-admin-addons .addon-container {
2297
+ width:100%;
2298
+ margin-bottom: 20px
2299
+ }
2300
+ }
2301
+
2302
+ #cff-admin-addons h4 {
2303
+ font-size: 17px;
2304
+ font-weight: 700
2305
+ }
2306
+
2307
+ #cff-admin-addons .addon-item {
2308
+ background-color: #fff;
2309
+ border: 1px solid #ddd;
2310
+ border-radius: 3px;
2311
+ margin: 0
2312
+ }
2313
+
2314
+ @media (max-width: 767px) {
2315
+ #cff-admin-addons .addon-item {
2316
+ margin:0 0
2317
+ }
2318
+ }
2319
+
2320
+ #cff-admin-addons .addon-item img {
2321
+ border: 1px solid #eee;
2322
+ float: left;
2323
+ max-width: 75px
2324
+ }
2325
+
2326
+ #cff-admin-addons .addon-item h5 {
2327
+ margin: 0 0 10px 100px;
2328
+ font-size: 16px
2329
+ }
2330
+
2331
+ #cff-admin-addons .addon-item p {
2332
+ margin: 0 0 0 100px
2333
+ }
2334
+
2335
+ #cff-admin-addons .addon-item .details {
2336
+ padding: 30px 20px
2337
+ }
2338
+
2339
+ #cff-admin-addons .addon-item .actions {
2340
+ background-color: #f7f7f7;
2341
+ border-top: 1px solid #ddd;
2342
+ padding: 20px;
2343
+ position: relative
2344
+ }
2345
+
2346
+ #cff-admin-addons .addon-item .actions .msg {
2347
+ background-color: #f7f7f7;
2348
+ position: absolute;
2349
+ text-align: center;
2350
+ font-weight: 600;
2351
+ top: 0;
2352
+ left: 0;
2353
+ height: 100%;
2354
+ width: 100%;
2355
+ z-index: 99;
2356
+ padding: 20px;
2357
+ display: -webkit-box;
2358
+ display: -moz-box;
2359
+ display: -ms-flexbox;
2360
+ display: -webkit-flex;
2361
+ display: flex;
2362
+ -webkit-align-items: center;
2363
+ -ms-align-items: center;
2364
+ align-items: center;
2365
+ justify-content: center
2366
+ }
2367
+
2368
+ #cff-admin-addons .addon-item .actions .msg.success {
2369
+ color: #2a9b39
2370
+ }
2371
+
2372
+ #cff-admin-addons .addon-item .actions .msg.error {
2373
+ color: red
2374
+ }
2375
+
2376
+ #cff-admin-addons .addon-item .status {
2377
+ float: left;
2378
+ padding-top: 8px
2379
+ }
2380
+
2381
+ #cff-admin-addons .addon-item .status .status-inactive {
2382
+ color: red
2383
+ }
2384
+
2385
+ #cff-admin-addons .addon-item .status .status-download {
2386
+ color: #666
2387
+ }
2388
+
2389
+ #cff-admin-addons .addon-item .status .status-active {
2390
+ color: #2a9b39
2391
+ }
2392
+
2393
+ #cff-admin-addons .addon-item .upgrade-button {
2394
+ text-align: center
2395
+ }
2396
+
2397
+ #cff-admin-addons .addon-item .upgrade-button a {
2398
+ font-weight: 600;
2399
+ width: 140px;
2400
+ text-align: center;
2401
+ padding: 8px 5px
2402
+ }
2403
+
2404
+ #cff-admin-addons .addon-item .action-button {
2405
+ float: right
2406
+ }
2407
+
2408
+ #cff-admin-addons .addon-item .action-button button {
2409
+ background: none;
2410
+ border: 1px solid #ddd;
2411
+ border-radius: 3px;
2412
+ box-shadow: none;
2413
+ cursor: pointer;
2414
+ font-weight: 600;
2415
+ width: 140px;
2416
+ text-align: center;
2417
+ padding: 8px 5px
2418
+ }
2419
+
2420
+ #cff-admin-addons .addon-item .action-button button:hover,#cff-admin-addons .addon-item .action-button button.loading {
2421
+ background-color: #e9e9e9
2422
+ }
2423
+
2424
+ #cff-admin-addons .addon-item .action-button button .fa {
2425
+ margin-right: 8px
2426
+ }
2427
+
2428
+ #cff-admin-addons .addon-item .action-button button .fa.fa-spinner {
2429
+ margin-right: 0
2430
+ }
2431
+
2432
+ #cff-admin-addons .addon-item .action-button button.status-active .fa {
2433
+ color: #2a9b39
2434
+ }
2435
+
2436
+ #cff-admin-addons .addon-item .action-button button.status-inactive .fa {
2437
+ color: red
2438
+ }
2439
+
2440
+ #cff-admin-addons .addon-item .action-button button.status-download .fa {
2441
+ color: #999
2442
+ }
2443
+
2444
+ #cff-admin-addons .addon-item .action-button button.disabled {
2445
+ cursor: default
2446
+ }
2447
+
2448
+ #cff-admin-addons .addon-item .action-button button.loading .fa {
2449
+ color: #666
2450
+ }
2451
+
2452
+ /* Tabs */
2453
+ .cff-admin-tabs {
2454
+ background-color: #fff;
2455
+ margin: 0 0 20px 0;
2456
+ padding: 0 20px;
2457
+ list-style: none;
2458
+ overflow: auto;
2459
+ font-size: 14px
2460
+ }
2461
+
2462
+ .cff-admin-tabs li {
2463
+ margin: 0 30px 0 0;
2464
+ padding: 0;
2465
+ float: left
2466
+ }
2467
+
2468
+ .cff-admin-tabs li:last-of-type {
2469
+ margin: 0
2470
+ }
2471
+
2472
+ .cff-admin-tabs li a {
2473
+ color: #666;
2474
+ display: block;
2475
+ padding: 20px 0 18px 0;
2476
+ text-decoration: none;
2477
+ border-bottom: 2px solid #fff;
2478
+ box-shadow: none
2479
+ }
2480
+
2481
+ .cff-admin-tabs li a:hover {
2482
+ border-color: #999
2483
+ }
2484
+
2485
+ .cff-admin-tabs li a.active {
2486
+ border-color: #e27730
2487
+ }
2488
+
2489
+ .cff-admin-tabs li a:focus {
2490
+ box-shadow: none
2491
+ }
2492
+
2493
+ /* Clear */
2494
+ .cff-clear:before {
2495
+ content: " ";
2496
+ display: table
2497
+ }
2498
+
2499
+ .cff-clear:after {
2500
+ clear: both;
2501
+ content: " ";
2502
+ display: table
2503
  }
css/cff-blocks.css CHANGED
@@ -1,3 +1,3 @@
1
- .cff-wrapper {
2
- pointer-events: none !important;
3
  }
1
+ .cff-wrapper {
2
+ pointer-events: none !important;
3
  }
custom-facebook-feed-admin.php CHANGED
@@ -2,9 +2,14 @@
2
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
 
4
  function cff_menu() {
 
 
 
 
 
5
  add_menu_page(
6
  '',
7
- 'Facebook Feed',
8
  'manage_options',
9
  'cff-top',
10
  'cff_settings_page'
@@ -12,7 +17,7 @@ function cff_menu() {
12
  add_submenu_page(
13
  'cff-top',
14
  'Settings',
15
- 'Settings',
16
  'manage_options',
17
  'cff-top',
18
  'cff_settings_page'
@@ -29,9 +34,21 @@ function cff_styling_menu() {
29
  'cff-style',
30
  'cff_style_page'
31
  );
 
 
 
 
 
 
 
 
32
  }
33
  add_action('admin_menu', 'cff_styling_menu');
34
 
 
 
 
 
35
  //Create Settings page
36
  function cff_settings_page() {
37
  //Declare variables for fields
@@ -194,6 +211,9 @@ function cff_settings_page() {
194
  if( isset($_GET['access_token']) && isset($_GET['final_response']) ){
195
 
196
  if( $_GET['final_response'] == 'true' ){
 
 
 
197
 
198
  $access_token = $_GET['access_token'];
199
  $cff_is_groups = false;
@@ -275,7 +295,9 @@ function cff_settings_page() {
275
  echo "<p>Facebook has not returned any groups for your user. It is only possible to display a feed from a group which you are either an admin or a member. Please note, if you are not an admin of the group then it is required that an admin add our app in the group settings in order to display a feed.</p><p>Please either create or join a Facebook group and then follow the directions when connecting your account on this page.</p>";
276
  echo '<a href="JavaScript:void(0);" class="button button-primary" id="cff-close-modal-primary-button">Close</a>';
277
  } else {
 
278
 
 
279
  echo '<div class="cff-groups-list">';
280
  echo '<p style="margin-top: 0;"><i class="fa fa-check-circle" aria-hidden="true" style="font-size: 15px; margin: 0 8px 0 2px;"></i>Select a Facebook group below to get an Access Token.</p>';
281
 
@@ -334,7 +356,9 @@ function cff_settings_page() {
334
 
335
  } else {
336
  //PAGES
 
337
 
 
338
  echo '<p style="margin-top: 0;"><i class="fa fa-check-circle" aria-hidden="true" style="font-size: 15px; margin: 0 8px 0 2px;"></i>Select a Facebook page below to get an Access Token.</p>';
339
  echo '<p class="cff-tokens-note">Note: This Access Token will allow you to display posts from <b style="font-weight: 900;">any</b> public Facebook page, not just the one selected.</p>';
340
 
@@ -803,9 +827,9 @@ function cff_settings_page() {
803
 
804
  <ul class="cff-faq-col-1">
805
  <li><b>FAQs</b></li>
806
- <li>&bull;&nbsp; <?php _e('<a href="https://smashballoon.com/category/custom-facebook-feed/faq/?cat=18" target="_blank">General Questions</a>'); ?></li>
807
- <li>&bull;&nbsp; <?php _e('<a href="https://smashballoon.com/category/custom-facebook-feed/getting-started/?cat=18" target="_blank">Getting Started</a>'); ?></li>
808
- <li>&bull;&nbsp; <?php _e('<a href="https://smashballoon.com/category/custom-facebook-feed/troubleshooting/?cat=18" target="_blank">Common Issues</a>'); ?></li>
809
  <li style="margin-top: 8px; font-size: 12px;"><a href="https://smashballoon.com/custom-facebook-feed/faq/?utm_source=plugin-free&utm_campaign=cff" target="_blank">See all<i class="fa fa-chevron-right" aria-hidden="true"></i></a></li>
810
  </ul>
811
 
@@ -813,7 +837,7 @@ function cff_settings_page() {
813
  <li><b>Documentation</b></li>
814
  <li>&bull;&nbsp; <?php _e('<a href="http://smashballoon.com/custom-facebook-feed/docs/free/" target="_blank">Installation and Configuration</a>'); ?></li>
815
  <li>&bull;&nbsp; <?php _e('<a href="https://smashballoon.com/custom-facebook-feed/docs/shortcodes/" target="_blank">Shortcode Reference</a>', 'custom-facebook-feed'); ?></li>
816
- <li>&bull;&nbsp; <?php _e('<a href=https://smashballoon.com/category/custom-facebook-feed/customizations/snippets/?cat=18" target="_blank">Custom CSS and JavaScript Snippets</a>'); ?></li>
817
  <li style="margin-top: 8px; font-size: 12px;"><a href="https://smashballoon.com/custom-facebook-feed/docs/?utm_source=plugin-free&utm_campaign=cff" target="_blank">See all<i class="fa fa-chevron-right" aria-hidden="true"></i></a></li>
818
  </ul>
819
  </div>
@@ -1025,6 +1049,9 @@ Force Cache To Clear => <?php echo $options['cff_cron'] ."\n"; ?>
1025
  Request Method => <?php echo $options['cff_request_method'] ."\n"; ?>
1026
  Fix Text Shortening => <?php echo $options['cff_format_issue'] ."\n"; ?>
1027
  Disable Default Styles => <?php echo $options['cff_disable_styles'] ."\n"; ?>
 
 
 
1028
 
1029
  ## CUSTOM TEXT/TRANSLATE: ##
1030
  Modified text strings:
@@ -1067,7 +1094,29 @@ if( isset( $api_response_json->error ) ) echo $posts_json;
1067
  if( isset( $api_response_json->data ) ){
1068
  $posts_json_split = explode(',"paging":{', $posts_json);
1069
  echo $posts_json_split[0];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1070
  }
 
1071
  ?>
1072
  </textarea>
1073
 
@@ -1215,6 +1264,7 @@ function cff_style_page() {
1215
  'cff_show_credit' => '',
1216
  'cff_font_source' => '',
1217
  'cff_minify' => false,
 
1218
  'cff_sep_color' => '',
1219
  'cff_sep_size' => '1',
1220
 
@@ -1266,7 +1316,12 @@ function cff_style_page() {
1266
  'cff_translate_months' => 'months',
1267
  'cff_translate_year' => 'year',
1268
  'cff_translate_years' => 'years',
1269
- 'cff_translate_ago' => 'ago'
 
 
 
 
 
1270
  );
1271
  //Save layout option in an array
1272
  $options = wp_parse_args(get_option('cff_style_settings'), $defaults);
@@ -1427,6 +1482,10 @@ function cff_style_page() {
1427
  $cff_minify = $options[ 'cff_minify' ];
1428
  $cff_cols = $options[ 'cff_cols' ];
1429
  $cff_cols_mobile = $options[ 'cff_cols_mobile' ];
 
 
 
 
1430
 
1431
  //Page Header
1432
  $cff_show_header = $options[ 'cff_show_header' ];
@@ -1827,6 +1886,7 @@ function cff_style_page() {
1827
  (isset($_POST[ 'cff_format_issue' ])) ? $cff_format_issue = sanitize_text_field( $_POST[ 'cff_format_issue' ] ) : $cff_format_issue = '';
1828
  (isset($_POST[ 'cff_restricted_page' ])) ? $cff_restricted_page = sanitize_text_field( $_POST[ 'cff_restricted_page' ] ) : $cff_restricted_page = '';
1829
  (isset($_POST[ 'cff_minify' ])) ? $cff_minify = sanitize_text_field( $_POST[ 'cff_minify' ] ) : $cff_minify = '';
 
1830
 
1831
  //Custom CSS
1832
  $options[ 'cff_custom_css' ] = $cff_custom_css;
@@ -1848,6 +1908,7 @@ function cff_style_page() {
1848
  $options[ 'cff_format_issue' ] = $cff_format_issue;
1849
  $options[ 'cff_restricted_page' ] = $cff_restricted_page;
1850
  $options[ 'cff_minify' ] = $cff_minify;
 
1851
 
1852
  if( $cff_cron == 'no' ) wp_clear_scheduled_hook('cff_cron_job');
1853
 
@@ -1867,6 +1928,29 @@ function cff_style_page() {
1867
  wp_schedule_event(time(), $cff_cron_schedule, 'cff_cron_job');
1868
  }
1869
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1870
  }
1871
  //Update the Custom Text / Translate options
1872
  if( isset($_POST[ $style_custom_text_hidden_field_name ]) && $_POST[ $style_custom_text_hidden_field_name ] == 'Y' ) {
@@ -3763,7 +3847,7 @@ function cff_style_page() {
3763
  <tbody>
3764
  <tr valign="top">
3765
  <td style="padding-top: 0;">
3766
- <p style="padding-bottom: 10px;"><?php _e('Enter your own custom CSS in the box below', 'custom-facebook-feed'); ?> <i style="margin-left: 5px; font-size: 11px;"><a href="https://smashballoon.com/category/custom-facebook-feed/customizations/snippets/?cat=18" target="_blank"><?php _e('See some examples', 'custom-facebook-feed'); ?></a></i></p>
3767
  <textarea name="cff_custom_css" id="cff_custom_css" style="width: 70%;" rows="7"><?php echo esc_textarea( stripslashes($cff_custom_css), 'custom-facebook-feed' ); ?></textarea>
3768
  </td>
3769
  </tr>
@@ -3774,7 +3858,7 @@ function cff_style_page() {
3774
  <tbody>
3775
  <tr valign="top">
3776
  <td style="padding-top: 0;">
3777
- <p style="padding-bottom: 10px;"><?php _e('Enter your own custom JavaScript/jQuery in the box below', 'custom-facebook-feed'); ?> <i style="margin-left: 5px; font-size: 11px;"><a href="https://smashballoon.com/category/custom-facebook-feed/customizations/snippets/?cat=18" target="_blank"><?php _e('See some examples', 'custom-facebook-feed'); ?></a></i></p>
3778
  <textarea name="cff_custom_js" id="cff_custom_js" style="width: 70%;" rows="7"><?php echo esc_textarea( stripslashes($cff_custom_js), 'custom-facebook-feed' ); ?></textarea>
3779
  </td>
3780
  </tr>
@@ -3937,6 +4021,79 @@ function cff_style_page() {
3937
  <p class="cff-tooltip cff-more-info"><?php _e("The plugin includes some basic text and link styles which can be disabled by enabling this setting. Note that the styles used for the layout of the posts will still be applied.", 'custom-facebook-feed'); ?></p>
3938
  </td>
3939
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3940
  </tbody>
3941
  </table>
3942
 
@@ -4149,6 +4306,17 @@ function cff_lite_dismiss() {
4149
  }
4150
  add_action( 'wp_ajax_cff_lite_dismiss', 'cff_lite_dismiss' );
4151
 
 
 
 
 
 
 
 
 
 
 
 
4152
  // Add a Settings link to the plugin on the Plugins page
4153
  $cff_plugin_file = 'custom-facebook-feed/custom-facebook-feed.php';
4154
  add_filter( "plugin_action_links_{$cff_plugin_file}", 'cff_add_settings_link', 10, 2 );
@@ -4336,7 +4504,7 @@ function cff_notices_html() {
4336
  $dismiss_url = add_query_arg( 'cff_ignore_rating_notice_nag', '1' );
4337
  $later_url = add_query_arg( 'cff_ignore_rating_notice_nag', 'later' );
4338
  if ( $should_show_bfcm_discount ) {
4339
- $other_notice_html = '<p class="cff_other_notice">' . __( 'PS. We currently have a <a href="https://smashballoon.com/custom-facebook-feed/?utm_source=plugin-free&utm_campaign=cff&discount='.$cff_bfcm_discount_code.'" target="_blank"><b style="font-weight: 700;">Black Friday deal</b></a> for 20% off the Pro version!', 'custom-facebook-feed' ) . '</p>';
4340
 
4341
  $dismiss_url = add_query_arg( array(
4342
  'cff_ignore_rating_notice_nag' => '1',
@@ -4381,7 +4549,7 @@ function cff_notices_html() {
4381
  <div class='cff_notice cff_review_notice cff_new_user_sale_notice'>
4382
  <img src='" . plugins_url( 'img/cff-icon-offer.png?74px' , __FILE__ ) . "' alt='Facebook Feed'>
4383
  <div class='cff-notice-text'>
4384
- <p>" . __( '<b style="font-weight: 700;">Exclusive offer!</b> We don\'t run promotions very often, but for a limited time we\'re offering <b style="font-weight: 700;">20% off</b> our Pro version to all users of our free Smash Balloon Custom Facebook Feed plugin.', 'custom-facebook-feed' ) . "</p>
4385
  <p class='cff-links'>
4386
  <a class='cff_notice_dismiss cff_offer_btn' href='https://smashballoon.com/custom-facebook-feed/?utm_source=plugin-free&utm_campaign=cff&discount=facebookthankyou' target='_blank'><b>" . __( 'Get this offer', 'custom-facebook-feed' ) . "</b></a>
4387
  <a class='cff_notice_dismiss' style='margin-left: 5px;' href='" . esc_url( add_query_arg( 'cff_ignore_new_user_sale_notice', 'always' ) ) . "'>" . __( 'I\'m not interested', 'custom-facebook-feed' ) . "</a>
@@ -4399,7 +4567,7 @@ function cff_notices_html() {
4399
  <div class='cff_notice cff_review_notice cff_bfcm_sale_notice'>
4400
  <img src='". plugins_url( 'img/cff-icon-offer.png?74px' , __FILE__ ) ."' alt='Facebook Feed'>
4401
  <div class='cff-notice-text'>
4402
- <p>" . __( '<b style="font-weight: 700;">Black Friday/Cyber Monday Deal!</b> Thank you for using the free Smash Balloon Custom Facebook Feed plugin. For a limited time, we\'re offering <b style="font-weight: 700;">20% off</b> the Pro version for all of our users.', 'custom-facebook-feed' ) . "</p>
4403
  <p class='cff-links'>
4404
  <a class='cff_notice_dismiss cff_offer_btn' href='https://smashballoon.com/custom-facebook-feed/?utm_source=plugin-free&utm_campaign=cff&discount=".$cff_bfcm_discount_code."' target='_blank'><b>" . __( 'Get this offer', 'custom-facebook-feed' ) . "</b></a>
4405
  <a class='cff_notice_dismiss' style='margin-left: 5px;' href='" .esc_url( add_query_arg( 'cff_ignore_bfcm_sale_notice', date( 'Y', $current_time ) ) ). "'>" . __( 'I\'m not interested', 'custom-facebook-feed' ) . "</a>
@@ -4479,7 +4647,55 @@ function cff_get_future_date( $month, $year, $week, $day, $direction ) {
4479
  return mktime( 0, 0, 0, $month, $startday + $offset, $year );
4480
  }
4481
 
 
4482
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4483
 
4484
 
4485
  ?>
2
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
 
4
  function cff_menu() {
5
+ global $cff_error_reporter;
6
+ $notice = '';
7
+ if ( $cff_error_reporter->are_critical_errors() ) {
8
+ $notice = ' <span class="update-plugins cff-error-alert"><span>!</span></span>';
9
+ }
10
  add_menu_page(
11
  '',
12
+ 'Facebook Feed'. $notice,
13
  'manage_options',
14
  'cff-top',
15
  'cff_settings_page'
17
  add_submenu_page(
18
  'cff-top',
19
  'Settings',
20
+ 'Settings'. $notice,
21
  'manage_options',
22
  'cff-top',
23
  'cff_settings_page'
34
  'cff-style',
35
  'cff_style_page'
36
  );
37
+ add_submenu_page(
38
+ 'cff-top',
39
+ __( 'About Us', 'custom-facebook-feed' ),
40
+ __( 'About Us', 'custom-facebook-feed' ),
41
+ 'manage_options',
42
+ 'cff-about',
43
+ 'cff_about_page'
44
+ );
45
  }
46
  add_action('admin_menu', 'cff_styling_menu');
47
 
48
+ function cff_about_page() {
49
+ do_action('cff_admin_page' );
50
+ }
51
+
52
  //Create Settings page
53
  function cff_settings_page() {
54
  //Declare variables for fields
211
  if( isset($_GET['access_token']) && isset($_GET['final_response']) ){
212
 
213
  if( $_GET['final_response'] == 'true' ){
214
+ global $cff_error_reporter;
215
+
216
+ $cff_error_reporter->remove_error( 'accesstoken' );
217
 
218
  $access_token = $_GET['access_token'];
219
  $cff_is_groups = false;
295
  echo "<p>Facebook has not returned any groups for your user. It is only possible to display a feed from a group which you are either an admin or a member. Please note, if you are not an admin of the group then it is required that an admin add our app in the group settings in order to display a feed.</p><p>Please either create or join a Facebook group and then follow the directions when connecting your account on this page.</p>";
296
  echo '<a href="JavaScript:void(0);" class="button button-primary" id="cff-close-modal-primary-button">Close</a>';
297
  } else {
298
+ global $cff_error_reporter;
299
 
300
+ $cff_error_reporter->remove_error( 'accesstoken' );
301
  echo '<div class="cff-groups-list">';
302
  echo '<p style="margin-top: 0;"><i class="fa fa-check-circle" aria-hidden="true" style="font-size: 15px; margin: 0 8px 0 2px;"></i>Select a Facebook group below to get an Access Token.</p>';
303
 
356
 
357
  } else {
358
  //PAGES
359
+ global $cff_error_reporter;
360
 
361
+ $cff_error_reporter->remove_error( 'accesstoken' );
362
  echo '<p style="margin-top: 0;"><i class="fa fa-check-circle" aria-hidden="true" style="font-size: 15px; margin: 0 8px 0 2px;"></i>Select a Facebook page below to get an Access Token.</p>';
363
  echo '<p class="cff-tokens-note">Note: This Access Token will allow you to display posts from <b style="font-weight: 900;">any</b> public Facebook page, not just the one selected.</p>';
364
 
827
 
828
  <ul class="cff-faq-col-1">
829
  <li><b>FAQs</b></li>
830
+ <li>&bull;&nbsp; <?php _e('<a href="https://smashballoon.com/category/custom-facebook-feed/faq/" target="_blank">General Questions</a>'); ?></li>
831
+ <li>&bull;&nbsp; <?php _e('<a href="https://smashballoon.com/category/custom-facebook-feed/getting-started/" target="_blank">Getting Started</a>'); ?></li>
832
+ <li>&bull;&nbsp; <?php _e('<a href="https://smashballoon.com/category/custom-facebook-feed/troubleshooting/" target="_blank">Common Issues</a>'); ?></li>
833
  <li style="margin-top: 8px; font-size: 12px;"><a href="https://smashballoon.com/custom-facebook-feed/faq/?utm_source=plugin-free&utm_campaign=cff" target="_blank">See all<i class="fa fa-chevron-right" aria-hidden="true"></i></a></li>
834
  </ul>
835
 
837
  <li><b>Documentation</b></li>
838
  <li>&bull;&nbsp; <?php _e('<a href="http://smashballoon.com/custom-facebook-feed/docs/free/" target="_blank">Installation and Configuration</a>'); ?></li>
839
  <li>&bull;&nbsp; <?php _e('<a href="https://smashballoon.com/custom-facebook-feed/docs/shortcodes/" target="_blank">Shortcode Reference</a>', 'custom-facebook-feed'); ?></li>
840
+ <li>&bull;&nbsp; <?php _e('<a href=https://smashballoon.com/category/custom-facebook-feed/customizations/snippets/" target="_blank">Custom CSS and JavaScript Snippets</a>'); ?></li>
841
  <li style="margin-top: 8px; font-size: 12px;"><a href="https://smashballoon.com/custom-facebook-feed/docs/?utm_source=plugin-free&utm_campaign=cff" target="_blank">See all<i class="fa fa-chevron-right" aria-hidden="true"></i></a></li>
842
  </ul>
843
  </div>
1049
  Request Method => <?php echo $options['cff_request_method'] ."\n"; ?>
1050
  Fix Text Shortening => <?php echo $options['cff_format_issue'] ."\n"; ?>
1051
  Disable Default Styles => <?php echo $options['cff_disable_styles'] ."\n"; ?>
1052
+ Disable Frontend Error Notice => <?php if ( isset( $options['disable_admin_notice'] ) ) echo $options['disable_admin_notice']; echo "\n"; ?>
1053
+ Enable Email => <?php if ( isset( $options['enable_email_report'] ) ) echo $options['enable_email_report']; echo "\n" ?>
1054
+ Email Addresses => <?php if ( isset( $options['enable_email_report'] ) ) echo $options['email_notification_addresses']; echo "\n"; ?>
1055
 
1056
  ## CUSTOM TEXT/TRANSLATE: ##
1057
  Modified text strings:
1094
  if( isset( $api_response_json->data ) ){
1095
  $posts_json_split = explode(',"paging":{', $posts_json);
1096
  echo $posts_json_split[0];
1097
+ } ?>
1098
+
1099
+
1100
+ ## Cron Events: ##
1101
+ <?php
1102
+ $cron = _get_cron_array();
1103
+ foreach ( $cron as $key => $data ) {
1104
+ $is_target = false;
1105
+ foreach ( $data as $key2 => $val ) {
1106
+ if ( strpos( $key2, 'cff' ) !== false ) {
1107
+ $is_target = true;
1108
+ echo $key2;
1109
+ echo "\n";
1110
+ }
1111
+ }
1112
+ if ( $is_target) {
1113
+ echo date( "Y-m-d H:i:s", $key );
1114
+ echo "\n";
1115
+ echo 'Next Scheduled: ' . ((int)$key - time())/60 . ' minutes';
1116
+ echo "\n\n";
1117
+ }
1118
  }
1119
+
1120
  ?>
1121
  </textarea>
1122
 
1264
  'cff_show_credit' => '',
1265
  'cff_font_source' => '',
1266
  'cff_minify' => false,
1267
+ 'disable_admin_notice' => false,
1268
  'cff_sep_color' => '',
1269
  'cff_sep_size' => '1',
1270
 
1316
  'cff_translate_months' => 'months',
1317
  'cff_translate_year' => 'year',
1318
  'cff_translate_years' => 'years',
1319
+ 'cff_translate_ago' => 'ago',
1320
+
1321
+ // email
1322
+ 'enable_email_report' => 'on',
1323
+ 'email_notification' => 'monday',
1324
+ 'email_notification_addresses' => get_option( 'admin_email' )
1325
  );
1326
  //Save layout option in an array
1327
  $options = wp_parse_args(get_option('cff_style_settings'), $defaults);
1482
  $cff_minify = $options[ 'cff_minify' ];
1483
  $cff_cols = $options[ 'cff_cols' ];
1484
  $cff_cols_mobile = $options[ 'cff_cols_mobile' ];
1485
+ $cff_disable_admin_notice = $options[ 'disable_admin_notice' ];
1486
+ $cff_enable_email_report = $options[ 'enable_email_report' ];
1487
+ $cff_email_notification = $options[ 'email_notification' ];
1488
+ $cff_email_notification_addresses = $options[ 'email_notification_addresses' ];
1489
 
1490
  //Page Header
1491
  $cff_show_header = $options[ 'cff_show_header' ];
1886
  (isset($_POST[ 'cff_format_issue' ])) ? $cff_format_issue = sanitize_text_field( $_POST[ 'cff_format_issue' ] ) : $cff_format_issue = '';
1887
  (isset($_POST[ 'cff_restricted_page' ])) ? $cff_restricted_page = sanitize_text_field( $_POST[ 'cff_restricted_page' ] ) : $cff_restricted_page = '';
1888
  (isset($_POST[ 'cff_minify' ])) ? $cff_minify = sanitize_text_field( $_POST[ 'cff_minify' ] ) : $cff_minify = '';
1889
+ (isset($_POST[ 'cff_disable_admin_notice' ])) ? $cff_disable_admin_notice = sanitize_text_field( $_POST[ 'cff_disable_admin_notice' ] ) : $cff_disable_admin_notice = '';
1890
 
1891
  //Custom CSS
1892
  $options[ 'cff_custom_css' ] = $cff_custom_css;
1908
  $options[ 'cff_format_issue' ] = $cff_format_issue;
1909
  $options[ 'cff_restricted_page' ] = $cff_restricted_page;
1910
  $options[ 'cff_minify' ] = $cff_minify;
1911
+ $options[ 'disable_admin_notice' ] = $cff_disable_admin_notice;
1912
 
1913
  if( $cff_cron == 'no' ) wp_clear_scheduled_hook('cff_cron_job');
1914
 
1928
  wp_schedule_event(time(), $cff_cron_schedule, 'cff_cron_job');
1929
  }
1930
 
1931
+ isset($_POST[ 'cff_enable_email_report' ]) ? $cff_enable_email_report = $_POST[ 'cff_enable_email_report' ] : $cff_enable_email_report = '';
1932
+ $options['enable_email_report'] = $cff_enable_email_report;
1933
+ isset($_POST[ 'cff_email_notification' ]) ? $cff_email_notification = $_POST[ 'cff_email_notification' ] : $cff_email_notification = '';
1934
+ $original = $options['email_notification'];
1935
+ $options['email_notification'] = $cff_email_notification;
1936
+ isset($_POST[ 'cff_email_notification_addresses' ]) ? $cff_email_notification_addresses = $_POST[ 'cff_email_notification_addresses' ] : $cff_email_notification_addresses = get_option( 'admin_email' );
1937
+ $options['email_notification_addresses'] = $cff_email_notification_addresses;
1938
+
1939
+ if ( $original !== $cff_email_notification && $cff_enable_email_report === 'on' ){
1940
+ //Clear the existing cron event
1941
+ wp_clear_scheduled_hook('cff_feed_issue_email');
1942
+
1943
+ $input = sanitize_text_field($_POST[ 'cff_email_notification' ] );
1944
+ $timestamp = strtotime( 'next ' . $input );
1945
+
1946
+ if ( $timestamp - (3600 * 1) < time() ) {
1947
+ $timestamp = $timestamp + (3600 * 24 * 7);
1948
+ }
1949
+ $six_am_local = $timestamp + cff_get_utc_offset() + (6*60*60);
1950
+
1951
+ wp_schedule_event( $six_am_local, 'cffweekly', 'cff_feed_issue_email' );
1952
+ }
1953
+
1954
  }
1955
  //Update the Custom Text / Translate options
1956
  if( isset($_POST[ $style_custom_text_hidden_field_name ]) && $_POST[ $style_custom_text_hidden_field_name ] == 'Y' ) {
3847
  <tbody>
3848
  <tr valign="top">
3849
  <td style="padding-top: 0;">
3850
+ <p style="padding-bottom: 10px;"><?php _e('Enter your own custom CSS in the box below', 'custom-facebook-feed'); ?> <i style="margin-left: 5px; font-size: 11px;"><a href="https://smashballoon.com/category/custom-facebook-feed/customizations/snippets/" target="_blank"><?php _e('See some examples', 'custom-facebook-feed'); ?></a></i></p>
3851
  <textarea name="cff_custom_css" id="cff_custom_css" style="width: 70%;" rows="7"><?php echo esc_textarea( stripslashes($cff_custom_css), 'custom-facebook-feed' ); ?></textarea>
3852
  </td>
3853
  </tr>
3858
  <tbody>
3859
  <tr valign="top">
3860
  <td style="padding-top: 0;">
3861
+ <p style="padding-bottom: 10px;"><?php _e('Enter your own custom JavaScript/jQuery in the box below', 'custom-facebook-feed'); ?> <i style="margin-left: 5px; font-size: 11px;"><a href="https://smashballoon.com/category/custom-facebook-feed/customizations/snippets/" target="_blank"><?php _e('See some examples', 'custom-facebook-feed'); ?></a></i></p>
3862
  <textarea name="cff_custom_js" id="cff_custom_js" style="width: 70%;" rows="7"><?php echo esc_textarea( stripslashes($cff_custom_js), 'custom-facebook-feed' ); ?></textarea>
3863
  </td>
3864
  </tr>
4021
  <p class="cff-tooltip cff-more-info"><?php _e("The plugin includes some basic text and link styles which can be disabled by enabling this setting. Note that the styles used for the layout of the posts will still be applied.", 'custom-facebook-feed'); ?></p>
4022
  </td>
4023
  </tr>
4024
+
4025
+ <tr>
4026
+ <th class="bump-left"><label for="cff_disable_admin_notice" class="bump-left"><?php _e("Disable admin error notice", 'custom-facebook-feed'); ?></label></th>
4027
+ <td>
4028
+ <input name="cff_disable_admin_notice" type="checkbox" id="cff_disable_admin_notice" <?php if($cff_disable_admin_notice == true) echo "checked"; ?> />
4029
+ <label for="cff_disable_admin_notice"><?php _e('Yes', 'custom-facebook-feed'); ?></label>
4030
+ <a class="cff-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
4031
+ <p class="cff-tooltip cff-more-info"><?php _e("This will permanently disable the feed error notice that displays in the bottom right corner for admins on the front end of your site.", 'custom-facebook-feed'); ?></p>
4032
+ </td>
4033
+ </tr>
4034
+
4035
+ <tr>
4036
+ <th class="bump-left"><label for="cff_enable_email_report" class="bump-left"><?php _e("Feed issue email report", 'instagram-feed'); ?></label></th>
4037
+ <td>
4038
+ <input name="cff_enable_email_report" type="checkbox" id="cff_enable_email_report" <?php if($cff_enable_email_report == 'on') echo "checked"; ?> />
4039
+ <label for="cff_enable_email_report"><?php _e('Yes', 'custom-facebook-feed'); ?></label>
4040
+ <a class="cff-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
4041
+ <p class="cff-tooltip cff-more-info"><?php _e("Custom Facebook Feed will send a weekly notification email using your site's wp_mail() function if one or more of your feeds is not updating or is not displaying. If you're not receiving the emails in your inbox, you may need to configure an SMTP service using another plugin like WP Mail SMTP.", 'custom-facebook-feed'); ?></p>
4042
+
4043
+ <div class="cff_box" style="display: block;">
4044
+ <div class="cff_box_setting">
4045
+ <label><?php _e('Schedule Weekly on', 'custom-facebook-feed'); ?></label><br>
4046
+ <?php
4047
+ $schedule_options = array(
4048
+ array(
4049
+ 'val' => 'monday',
4050
+ 'label' => __( 'Monday', 'custom-facebook-feed' )
4051
+ ),
4052
+ array(
4053
+ 'val' => 'tuesday',
4054
+ 'label' => __( 'Tuesday', 'custom-facebook-feed' )
4055
+ ),
4056
+ array(
4057
+ 'val' => 'wednesday',
4058
+ 'label' => __( 'Wednesday', 'custom-facebook-feed' )
4059
+ ),
4060
+ array(
4061
+ 'val' => 'thursday',
4062
+ 'label' => __( 'Thursday', 'custom-facebook-feed' )
4063
+ ),
4064
+ array(
4065
+ 'val' => 'friday',
4066
+ 'label' => __( 'Friday', 'custom-facebook-feed' )
4067
+ ),
4068
+ array(
4069
+ 'val' => 'saturday',
4070
+ 'label' => __( 'Saturday', 'custom-facebook-feed' )
4071
+ ),
4072
+ array(
4073
+ 'val' => 'sunday',
4074
+ 'label' => __( 'Sunday', 'custom-facebook-feed' )
4075
+ ),
4076
+ );
4077
+
4078
+ if ( isset( $_GET['flag'] ) ){
4079
+ echo '<span id="cff-goto"></span>';
4080
+ }
4081
+ ?>
4082
+ <select name="cff_email_notification" id="cff_email_notification">
4083
+ <?php foreach ( $schedule_options as $schedule_option ) : ?>
4084
+ <option value="<?php echo esc_attr( $schedule_option['val'] ) ; ?>" <?php if ( $schedule_option['val'] === $cff_email_notification ) { echo 'selected';} ?>><?php echo esc_html( $schedule_option['label'] ) ; ?></option>
4085
+ <?php endforeach; ?>
4086
+ </select>
4087
+ </div>
4088
+ <div class="cff_box_setting">
4089
+ <label><?php _e('Email Recipients', 'custom-facebook-feed'); ?></label><br><input class="regular-text" type="text" name="cff_email_notification_addresses" value="<?php echo esc_attr( $cff_email_notification_addresses ); ?>"><span class="sbi_note"><?php _e('separate multiple emails with commas', 'custom-facebook-feed'); ?></span>
4090
+ <br><br><?php _e( 'Emails not working?', 'custom-facebook-feed' ) ?> <a href="https://smashballoon.com/email-report-is-not-in-my-inbox/" target="_blank"><?php _e( 'See our related FAQ', 'custom-facebook-feed' ) ?></a>
4091
+ </div>
4092
+ </div>
4093
+
4094
+ </td>
4095
+ </tr>
4096
+
4097
  </tbody>
4098
  </table>
4099
 
4306
  }
4307
  add_action( 'wp_ajax_cff_lite_dismiss', 'cff_lite_dismiss' );
4308
 
4309
+ function cff_reset_log() {
4310
+ global $cff_error_reporter;
4311
+
4312
+ $cff_error_reporter->remove_all_errors();
4313
+ cff_delete_cache();
4314
+
4315
+ die();
4316
+ }
4317
+ add_action( 'wp_ajax_cff_reset_log', 'cff_reset_log' );
4318
+
4319
+
4320
  // Add a Settings link to the plugin on the Plugins page
4321
  $cff_plugin_file = 'custom-facebook-feed/custom-facebook-feed.php';
4322
  add_filter( "plugin_action_links_{$cff_plugin_file}", 'cff_add_settings_link', 10, 2 );
4504
  $dismiss_url = add_query_arg( 'cff_ignore_rating_notice_nag', '1' );
4505
  $later_url = add_query_arg( 'cff_ignore_rating_notice_nag', 'later' );
4506
  if ( $should_show_bfcm_discount ) {
4507
+ $other_notice_html = '<p class="cff_other_notice">' . __( 'PS. We currently have a <a href="https://smashballoon.com/custom-facebook-feed/?utm_source=plugin-free&utm_campaign=cff&discount='.$cff_bfcm_discount_code.'" target="_blank"><b style="font-weight: 700;">Black Friday deal</b></a> for 60% off the Pro version!', 'custom-facebook-feed' ) . '</p>';
4508
 
4509
  $dismiss_url = add_query_arg( array(
4510
  'cff_ignore_rating_notice_nag' => '1',
4549
  <div class='cff_notice cff_review_notice cff_new_user_sale_notice'>
4550
  <img src='" . plugins_url( 'img/cff-icon-offer.png?74px' , __FILE__ ) . "' alt='Facebook Feed'>
4551
  <div class='cff-notice-text'>
4552
+ <p>" . __( '<b style="font-weight: 700;">Exclusive offer!</b> We don\'t run promotions very often, but for a limited time we\'re offering <b style="font-weight: 700;">60% off</b> our Pro version to all users of our free Smash Balloon Custom Facebook Feed plugin.', 'custom-facebook-feed' ) . "</p>
4553
  <p class='cff-links'>
4554
  <a class='cff_notice_dismiss cff_offer_btn' href='https://smashballoon.com/custom-facebook-feed/?utm_source=plugin-free&utm_campaign=cff&discount=facebookthankyou' target='_blank'><b>" . __( 'Get this offer', 'custom-facebook-feed' ) . "</b></a>
4555
  <a class='cff_notice_dismiss' style='margin-left: 5px;' href='" . esc_url( add_query_arg( 'cff_ignore_new_user_sale_notice', 'always' ) ) . "'>" . __( 'I\'m not interested', 'custom-facebook-feed' ) . "</a>
4567
  <div class='cff_notice cff_review_notice cff_bfcm_sale_notice'>
4568
  <img src='". plugins_url( 'img/cff-icon-offer.png?74px' , __FILE__ ) ."' alt='Facebook Feed'>
4569
  <div class='cff-notice-text'>
4570
+ <p>" . __( '<b style="font-weight: 700;">Black Friday/Cyber Monday Deal!</b> Thank you for using the free Smash Balloon Custom Facebook Feed plugin. For a limited time, we\'re offering <b style="font-weight: 700;">60% off</b> the Pro version for all of our users.', 'custom-facebook-feed' ) . "</p>
4571
  <p class='cff-links'>
4572
  <a class='cff_notice_dismiss cff_offer_btn' href='https://smashballoon.com/custom-facebook-feed/?utm_source=plugin-free&utm_campaign=cff&discount=".$cff_bfcm_discount_code."' target='_blank'><b>" . __( 'Get this offer', 'custom-facebook-feed' ) . "</b></a>
4573
  <a class='cff_notice_dismiss' style='margin-left: 5px;' href='" .esc_url( add_query_arg( 'cff_ignore_bfcm_sale_notice', date( 'Y', $current_time ) ) ). "'>" . __( 'I\'m not interested', 'custom-facebook-feed' ) . "</a>
4647
  return mktime( 0, 0, 0, $month, $startday + $offset, $year );
4648
  }
4649
 
4650
+ function cff_admin_hide_unrelated_notices() {
4651
 
4652
+ // Bail if we're not on a sbi screen or page.
4653
+ if ( ! isset( $_GET['page'] ) || strpos( $_GET['page'], 'cff') === false ) {
4654
+ return;
4655
+ }
4656
+
4657
+ // Extra banned classes and callbacks from third-party plugins.
4658
+ $blacklist = array(
4659
+ 'classes' => array(),
4660
+ 'callbacks' => array(
4661
+ 'cffdb_admin_notice', // 'Database for sbi' plugin.
4662
+ ),
4663
+ );
4664
+
4665
+ global $wp_filter;
4666
+
4667
+ foreach ( array( 'user_admin_notices', 'admin_notices', 'all_admin_notices' ) as $notices_type ) {
4668
+ if ( empty( $wp_filter[ $notices_type ]->callbacks ) || ! is_array( $wp_filter[ $notices_type ]->callbacks ) ) {
4669
+ continue;
4670
+ }
4671
+ foreach ( $wp_filter[ $notices_type ]->callbacks as $priority => $hooks ) {
4672
+ foreach ( $hooks as $name => $arr ) {
4673
+ if ( is_object( $arr['function'] ) && $arr['function'] instanceof Closure ) {
4674
+ unset( $wp_filter[ $notices_type ]->callbacks[ $priority ][ $name ] );
4675
+ continue;
4676
+ }
4677
+ $class = ! empty( $arr['function'][0] ) && is_object( $arr['function'][0] ) ? strtolower( get_class( $arr['function'][0] ) ) : '';
4678
+ if (
4679
+ ! empty( $class ) &&
4680
+ strpos( $class, 'cff' ) !== false &&
4681
+ ! in_array( $class, $blacklist['classes'], true )
4682
+ ) {
4683
+ continue;
4684
+ }
4685
+ if (
4686
+ ! empty( $name ) && (
4687
+ strpos( $name, 'cff' ) === false ||
4688
+ in_array( $class, $blacklist['classes'], true ) ||
4689
+ in_array( $name, $blacklist['callbacks'], true )
4690
+ )
4691
+ ) {
4692
+ unset( $wp_filter[ $notices_type ]->callbacks[ $priority ][ $name ] );
4693
+ }
4694
+ }
4695
+ }
4696
+ }
4697
+ }
4698
+ add_action( 'admin_print_scripts', 'cff_admin_hide_unrelated_notices' );
4699
 
4700
 
4701
  ?>
custom-facebook-feed.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Smash Balloon Custom Facebook Feed
4
  Plugin URI: https://smashballoon.com/custom-facebook-feed
5
  Description: Add completely customizable Facebook feeds to your WordPress site
6
- Version: 2.13
7
  Author: Smash Balloon
8
  Author URI: http://smashballoon.com/
9
  License: GPLv2 or later
@@ -24,11 +24,20 @@ along with this program; if not, write to the Free Software
24
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
  */
26
 
27
- define('CFFVER', '2.13');
28
 
29
  // Db version.
30
  if ( ! defined( 'CFF_DBVERSION' ) ) {
31
- define( 'CFF_DBVERSION', '1.0' );
 
 
 
 
 
 
 
 
 
32
  }
33
 
34
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
@@ -63,29 +72,69 @@ function cff_check_for_db_updates() {
63
  }
64
  update_option( 'cff_db_version', CFF_DBVERSION );
65
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  }
67
  add_action( 'wp_loaded', 'cff_check_for_db_updates' );
68
 
69
  function cff_plugin_init() {
70
- // Plugin Folder Path.
71
- if ( ! defined( 'CFF_PLUGIN_DIR' ) ) {
72
- define( 'CFF_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
73
- }
74
- // Plugin Folder URL.
75
- if ( ! defined( 'CFF_PLUGIN_URL' ) ) {
76
- define( 'CFF_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
77
- }
78
- require_once trailingslashit( CFF_PLUGIN_DIR ) . 'blocks/class-cff-blocks.php';
79
 
 
80
  $cff_blocks = new CFF_Blocks();
81
-
82
  if ( $cff_blocks->allow_load() ) {
83
  $cff_blocks->load();
84
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  }
86
 
87
  add_action( 'plugins_loaded', 'cff_plugin_init' );
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  function cff_text_domain() {
90
  load_plugin_textdomain( 'custom-facebook-feed', false, basename( dirname(__FILE__) ) . '/languages' );
91
  }
@@ -2143,14 +2192,115 @@ function cffSortTags($a, $b) {
2143
  return $a['offset'] - $b['offset'];
2144
  }
2145
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2146
  //Get JSON object of feed data
2147
  function cff_fetchUrl($url){
2148
- $response = wp_remote_get($url);
2149
- $feedData = wp_remote_retrieve_body( $response );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2150
 
2151
- $feedData = apply_filters( 'cff_filter_api_data', $feedData );
 
 
 
 
2152
 
2153
- return $feedData;
2154
  }
2155
 
2156
  //Make links into span instead when the post text is made clickable
@@ -2492,10 +2642,25 @@ function cff_activate() {
2492
  update_option( 'cff_show_access_token', true );
2493
 
2494
  //Run cron twice daily when plugin is first activated for new users
2495
- wp_schedule_event(time(), 'twicedaily', 'cff_cron_job');
 
 
 
 
 
2496
  }
2497
  register_activation_hook( __FILE__, 'cff_activate' );
2498
 
 
 
 
 
 
 
 
 
 
 
2499
  function cff_deactivate() {
2500
  wp_clear_scheduled_hook('cff_cron_job');
2501
  }
@@ -2527,6 +2692,8 @@ function cff_uninstall()
2527
  delete_option( 'cff_title_length' );
2528
  delete_option( 'cff_body_length' );
2529
  delete_option('cff_style_settings');
 
 
2530
  }
2531
  register_uninstall_hook( __FILE__, 'cff_uninstall' );
2532
  add_action( 'wp_head', 'cff_custom_css' );
@@ -2895,7 +3062,4 @@ function cff_autolink_email($text, $tagfill=''){
2895
  return $buffer;
2896
  }
2897
 
2898
- ####################################################################
2899
-
2900
-
2901
- ?>
3
  Plugin Name: Smash Balloon Custom Facebook Feed
4
  Plugin URI: https://smashballoon.com/custom-facebook-feed
5
  Description: Add completely customizable Facebook feeds to your WordPress site
6
+ Version: 2.14
7
  Author: Smash Balloon
8
  Author URI: http://smashballoon.com/
9
  License: GPLv2 or later
24
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
  */
26
 
27
+ define('CFFVER', '2.14');
28
 
29
  // Db version.
30
  if ( ! defined( 'CFF_DBVERSION' ) ) {
31
+ define( 'CFF_DBVERSION', '1.1' );
32
+ }
33
+
34
+ // Plugin Folder Path.
35
+ if ( ! defined( 'CFF_PLUGIN_DIR' ) ) {
36
+ define( 'CFF_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
37
+ }
38
+ // Plugin Folder URL.
39
+ if ( ! defined( 'CFF_PLUGIN_URL' ) ) {
40
+ define( 'CFF_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
41
  }
42
 
43
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
72
  }
73
  update_option( 'cff_db_version', CFF_DBVERSION );
74
  }
75
+
76
+ if ( (float) $db_ver < 1.1 ) {
77
+ if ( ! wp_next_scheduled( 'cff_feed_issue_email' ) ) {
78
+ $timestamp = strtotime( 'next monday' );
79
+ $timestamp = $timestamp + (3600 * 24 * 7);
80
+ $six_am_local = $timestamp + cff_get_utc_offset() + (6*60*60);
81
+
82
+ wp_schedule_event( $six_am_local, 'cffweekly', 'cff_feed_issue_email' );
83
+ }
84
+
85
+
86
+ update_option( 'sbi_db_version', CFF_DBVERSION );
87
+ }
88
  }
89
  add_action( 'wp_loaded', 'cff_check_for_db_updates' );
90
 
91
  function cff_plugin_init() {
92
+ require_once trailingslashit( CFF_PLUGIN_DIR ) . 'class-cff-error-reporter.php';
93
+ global $cff_error_reporter;
94
+ $cff_error_reporter = new CFF_Error_Reporter();
 
 
 
 
 
 
95
 
96
+ require_once trailingslashit( CFF_PLUGIN_DIR ) . 'blocks/class-cff-blocks.php';
97
  $cff_blocks = new CFF_Blocks();
 
98
  if ( $cff_blocks->allow_load() ) {
99
  $cff_blocks->load();
100
  }
101
+
102
+ if ( is_admin() ) {
103
+ require_once trailingslashit( CFF_PLUGIN_DIR ) . 'admin/class-cff-about.php';
104
+
105
+ if ( version_compare( PHP_VERSION, '5.3.0' ) >= 0 ) {
106
+ require_once trailingslashit( CFF_PLUGIN_DIR ) . 'admin/addon-functions.php';
107
+ require_once trailingslashit( CFF_PLUGIN_DIR ) . 'admin/PluginSilentUpgrader.php';
108
+ require_once trailingslashit( CFF_PLUGIN_DIR ) . 'admin/PluginSilentUpgraderSkin.php';
109
+ require_once trailingslashit( CFF_PLUGIN_DIR ) . 'admin/class-install-skin.php';
110
+ }
111
+
112
+ require_once trailingslashit( CFF_PLUGIN_DIR ) . 'class-cff-sitehealth.php';
113
+ $cff_sitehealth = new CFF_SiteHealth();
114
+ if ( $cff_sitehealth->allow_load() ) {
115
+ $cff_sitehealth->load();
116
+ }
117
+ }
118
  }
119
 
120
  add_action( 'plugins_loaded', 'cff_plugin_init' );
121
 
122
+ function cff_get_utc_offset() {
123
+ return get_option( 'gmt_offset', 0 ) * HOUR_IN_SECONDS;
124
+ }
125
+
126
+ function cff_schedule_report_email() {
127
+ $options = get_option('cff_style_settings');
128
+
129
+ $input = isset( $options[ 'email_notification' ] ) ? $options[ 'email_notification' ] : 'monday';
130
+ $timestamp = strtotime( 'next ' . $input );
131
+ $timestamp = $timestamp + (3600 * 24 * 7);
132
+
133
+ $six_am_local = $timestamp + cff_get_utc_offset() + (6*60*60);
134
+
135
+ wp_schedule_event( $six_am_local, 'cffweekly', 'cff_feed_issue_email' );
136
+ }
137
+
138
  function cff_text_domain() {
139
  load_plugin_textdomain( 'custom-facebook-feed', false, basename( dirname(__FILE__) ) . '/languages' );
140
  }
2192
  return $a['offset'] - $b['offset'];
2193
  }
2194
 
2195
+ function cff_is_wp_error( $response ) {
2196
+ return is_wp_error( $response );
2197
+ }
2198
+ function cff_log_wp_error( $response, $url ) {
2199
+ if ( is_wp_error( $response ) ) {
2200
+ global $cff_error_reporter;
2201
+ delete_option( 'cff_dismiss_critical_notice' );
2202
+ $admin_message = sprintf( __( 'Error connecting to %s.', 'custom-facebook-feed' ), $url );
2203
+ $public_message =__( 'Unable to make remote requests to the Facebook API. Log in as an admin to view more details.', 'custom-facebook-feed' );
2204
+ $frontend_directions = '<p class="cff-error-directions"><a href="https://smashballoon.com/custom-facebook-feed/docs/errors/" target="_blank" rel="noopener">' . __( 'Directions on How to Resolve This Issue', 'custom-facebook-feed' ) . '</a></p>';
2205
+ $backend_directions = '<a class="button button-primary" href="https://smashballoon.com/custom-facebook-feed/docs/errors/" target="_blank" rel="noopener">' . __( 'Directions on How to Resolve This Issue', 'custom-facebook-feed' ) . '</a>';
2206
+ $error = array(
2207
+ 'accesstoken' => 'none',
2208
+ 'public_message' => $public_message,
2209
+ 'admin_message' => $admin_message,
2210
+ 'frontend_directions' => $frontend_directions,
2211
+ 'backend_directions' => $backend_directions,
2212
+ 'post_id' => get_the_ID(),
2213
+ 'errorno' => 'wp_remote_get'
2214
+ );
2215
+
2216
+
2217
+ $cff_error_reporter->add_error( 'wp_remote_get', $error );
2218
+ }
2219
+ }
2220
+ function cff_is_fb_error( $response ) {
2221
+ return (strpos( $response, '{"error":' ) === 0);
2222
+ }
2223
+ function cff_log_fb_error( $response, $url ) {
2224
+ if ( is_admin() ) {
2225
+ return;
2226
+ }
2227
+ global $cff_error_reporter;
2228
+ delete_option( 'cff_dismiss_critical_notice' );
2229
+
2230
+ $access_token_refresh_errors = array( 10, 4, 200 );
2231
+
2232
+ $response = json_decode( $response, true );
2233
+ $api_error_code = $response['error']['code'];
2234
+
2235
+ if ( in_array( (int)$api_error_code, $access_token_refresh_errors, true ) ) {
2236
+ $pieces = explode( 'access_token=', $url );
2237
+ $accesstoken_parts = isset( $pieces[1] ) ? explode( '&', $pieces[1] ) : 'none';
2238
+ $accesstoken = $accesstoken_parts[0];
2239
+
2240
+ $api_error_number_message = sprintf( __( 'API Error %s:', 'custom-facebook-feed' ), $api_error_code );
2241
+ $admin_message = '<strong>' . $api_error_number_message . '</strong><br>' . $response['error']['message'];
2242
+ $public_message = __( 'There is a problem with your access token.', 'custom-facebook-feed' ) . ' ' . $api_error_number_message;
2243
+ $link = admin_url( 'admin.php?page=cff-top' );
2244
+ $frontend_directions = '<p class="cff-error-directions cff-reconnect"><a href="'. esc_url( $link ).'" target="_blank" rel="noopener">' . __( 'Reconnect Your Account in the Admin Area', 'custom-facebook-feed') . '</a></p>';
2245
+ $backend_directions = '<button class="cff-reconnect button button-primary" >' . __( 'Reconnect Your Account', 'custom-facebook-feed') . '</button>';
2246
+ $error = array(
2247
+ 'accesstoken' => $accesstoken,
2248
+ 'post_id' => get_the_ID(),
2249
+ 'errorno' => $api_error_code
2250
+ );
2251
+
2252
+ $cff_error_reporter->add_error( 'accesstoken', $error );
2253
+ } else {
2254
+ $api_error_number_message = sprintf( __( 'API Error %s:', 'custom-facebook-feed' ), $api_error_code );
2255
+ $admin_message = '<strong>' . $api_error_number_message . '</strong><br>' . $response['error']['message'];
2256
+ $public_message = __( 'Error connecting to the Facebook API.', 'custom-facebook-feed' ) . ' ' . $api_error_number_message;
2257
+ $frontend_directions = '<p class="cff-error-directions"><a href="https://smashballoon.com/custom-facebook-feed/docs/errors/" target="_blank" rel="noopener">' . __( 'Directions on How to Resolve This Issue', 'custom-facebook-feed' ) . '</a></p>';
2258
+ $backend_directions = '<a class="button button-primary" href="https://smashballoon.com/custom-facebook-feed/docs/errors/" target="_blank" rel="noopener">' . __( 'Directions on How to Resolve This Issue', 'custom-facebook-feed' ) . '</a>';
2259
+ $error = array(
2260
+ 'accesstoken' => 'none',
2261
+ 'public_message' => $public_message,
2262
+ 'admin_message' => $admin_message,
2263
+ 'frontend_directions' => $frontend_directions,
2264
+ 'backend_directions' => $backend_directions,
2265
+ 'post_id' => get_the_ID(),
2266
+ 'errorno' => $api_error_code
2267
+ );
2268
+
2269
+ $cff_error_reporter->add_error( 'api', $error );
2270
+ }
2271
+
2272
+ }
2273
  //Get JSON object of feed data
2274
  function cff_fetchUrl($url){
2275
+ //return '{}';
2276
+ //$response = wp_remote_get('fff'.$url);
2277
+ //$url = str_replace( '100178597731', '200178597732', $url );
2278
+ $response = wp_remote_get( $url );
2279
+
2280
+ if ( !cff_is_wp_error( $response ) ) {
2281
+ $feedData = wp_remote_retrieve_body( $response );
2282
+
2283
+ if ( ! cff_is_fb_error( $feedData ) ) {
2284
+ global $cff_error_reporter;
2285
+
2286
+ $cff_error_reporter->remove_error( 'api' );
2287
+ $cff_error_reporter->remove_error( 'connection' );
2288
+
2289
+ $feedData = apply_filters( 'cff_filter_api_data', $feedData );
2290
+
2291
+ return $feedData;
2292
+ } else {
2293
+ cff_log_fb_error( $feedData, $url );
2294
+
2295
+ return $feedData;
2296
+ }
2297
 
2298
+ } else {
2299
+ cff_log_wp_error( $response, $url );
2300
+
2301
+ return '{}';
2302
+ }
2303
 
 
2304
  }
2305
 
2306
  //Make links into span instead when the post text is made clickable
2642
  update_option( 'cff_show_access_token', true );
2643
 
2644
  //Run cron twice daily when plugin is first activated for new users
2645
+ if ( ! wp_next_scheduled( 'cff_cron_job' ) ) {
2646
+ wp_schedule_event( time(), 'twicedaily', 'cff_cron_job' );
2647
+ }
2648
+ if ( ! wp_next_scheduled( 'cff_feed_issue_email' ) ) {
2649
+ cff_schedule_report_email();
2650
+ }
2651
  }
2652
  register_activation_hook( __FILE__, 'cff_activate' );
2653
 
2654
+ function cff_cron_custom_interval( $schedules ) {
2655
+ $schedules['cffweekly'] = array(
2656
+ 'interval' => 3600 * 24 * 7,
2657
+ 'display' => __( 'Weekly' )
2658
+ );
2659
+
2660
+ return $schedules;
2661
+ }
2662
+ add_filter( 'cron_schedules', 'cff_cron_custom_interval' );
2663
+
2664
  function cff_deactivate() {
2665
  wp_clear_scheduled_hook('cff_cron_job');
2666
  }
2692
  delete_option( 'cff_title_length' );
2693
  delete_option( 'cff_body_length' );
2694
  delete_option('cff_style_settings');
2695
+
2696
+ wp_clear_scheduled_hook( 'cff_feed_issue_email' );
2697
  }
2698
  register_uninstall_hook( __FILE__, 'cff_uninstall' );
2699
  add_action( 'wp_head', 'cff_custom_css' );
3062
  return $buffer;
3063
  }
3064
 
3065
+ ###################################################################
 
 
 
email.php ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Email header template.
4
+ */
5
+
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit;
8
+ }
9
+
10
+ ?>
11
+
12
+ <!DOCTYPE html>
13
+ <html lang="en">
14
+ <head>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
16
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
17
+ <meta name="viewport" content="width=device-width">
18
+ <title><?php echo esc_html( $title ); ?></title>
19
+ </head>
20
+ <body>
21
+ <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" style="border-collapse:collapse;border-spacing:0px;vertical-align:top;min-width:100%;box-sizing:border-box;background-color:rgb(233,234,236);color:rgb(68,68,68);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-weight:normal;padding:0px;margin:0px;text-align:left;font-size:14px;line-height:140%;height:100%;width:100%"><tbody><tr style="padding:0px;vertical-align:top;text-align:left">
22
+ <td align="center" valign="top" style="vertical-align:top;color:rgb(68,68,68);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-weight:normal;padding:0px;margin:0px;font-size:14px;line-height:140%;text-align:center;border-collapse:collapse">
23
+ <table border="0" cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0px;padding:0px;vertical-align:top;width:600px;margin:0px auto;text-align:inherit">
24
+ <tbody><tr style="padding:0px;vertical-align:top;text-align:left">
25
+ <td align="center" valign="middle" style="vertical-align:top;color:rgb(68,68,68);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-weight:normal;margin:0px;font-size:14px;line-height:140%;text-align:center;padding:30px 30px 22px;border-collapse:collapse">
26
+ <?php if ( ! empty( $header_image ) ) : ?>
27
+ <img src="<?php echo esc_url( $header_image ); ?>" alt="<?php echo esc_attr( get_bloginfo( 'name' ) ); ?>" />
28
+ <?php endif; ?>
29
+ </td>
30
+ </tr>
31
+ <tr style="padding:0px;vertical-align:top;text-align:left">
32
+ <td align="left" valign="top" style="vertical-align:top;color:rgb(68,68,68);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-weight:normal;margin:0px;text-align:left;font-size:14px;line-height:140%;background-color:rgb(255,255,255);padding:60px 75px 45px;border-width:3px 1px 1px;border-style:solid;border-color:rgb(227, 71, 22) rgb(221,221,221) rgb(221,221,221);border-collapse:collapse">
33
+
34
+ <table style="border-collapse:collapse;border-spacing:0px;padding:0px;vertical-align:top;text-align:left;width:100%"><tbody><tr style="padding:0px;vertical-align:top;text-align:left">
35
+ <td style="vertical-align:top;font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-weight:normal;padding:0px;margin:0px;text-align:left;font-size:14px;line-height:140%;color:rgb(119,119,119);border-collapse:collapse">
36
+ <?php echo $message_content; ?>
37
+
38
+ <table class="summary-info-table" style="border-collapse: collapse; border-spacing: 0; padding: 0; vertical-align: top; text-align: left; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; margin: 38px 0 0 0; Margin: 38px 0 0 0; font-size: 15px; border: 1px solid #dddddd; border-radius: 6px; display: block;">
39
+ <tbody><tr style="padding: 0; vertical-align: top; text-align: left;">
40
+ <td class="summary-info-content" style="word-wrap: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; border-collapse: collapse !important; vertical-align: top; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: normal; margin: 0; Margin: 0; text-align: left; font-size: 14px; mso-line-height-rule: exactly; line-height: 140%; color: #777777; padding: 25px 30px 30px 30px;">
41
+ <table style="border-collapse: collapse; border-spacing: 0; padding: 0; vertical-align: top; text-align: left; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;">
42
+ <tbody><tr style="padding: 0; vertical-align: top; text-align: left;">
43
+ <td class="text-center" style="word-wrap: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; border-collapse: collapse !important; vertical-align: top; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: normal; padding: 0; margin: 0; Margin: 0; font-size: 14px; mso-line-height-rule: exactly; line-height: 140%; text-align: center; color: #777777;">
44
+ <h6 style="padding: 0; word-wrap: normal; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: bold; mso-line-height-rule: exactly; line-height: 130%; font-size: 18px; color: #444444; text-align: inherit; margin: 0 0 20px 0; Margin: 0 0 20px 0;"><?php echo esc_html( $dyk_message['title'] ); ?></h6>
45
+ </td>
46
+ </tr>
47
+ <tr style="padding: 0; vertical-align: top; text-align: left;">
48
+ <td class="text-center" style="word-wrap: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; border-collapse: collapse !important; vertical-align: top; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: normal; padding: 0; margin: 0; Margin: 0; font-size: 14px; mso-line-height-rule: exactly; line-height: 140%; text-align: center; color: #777777;">
49
+ <?php echo esc_html( $dyk_message['content'] ); ?>
50
+ </td>
51
+ </tr>
52
+ </tbody></table>
53
+ </td>
54
+ </tr>
55
+ <tr style="padding: 0; vertical-align: top; text-align: left;">
56
+ <td class="summary-info-content button-container" style="word-wrap: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; border-collapse: collapse !important; vertical-align: top; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: normal; margin: 0; Margin: 0; text-align: left; font-size: 14px; mso-line-height-rule: exactly; line-height: 140%; color: #777777; padding: 0 30px 30px 30px;">
57
+ <center style="width: 100%;">
58
+ <table class="button rounded-button" style="border-collapse: collapse; border-spacing: 0; padding: 0; vertical-align: top; text-align: left; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; width: auto; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; overflow: hidden;margin: auto;Margin: auto;"><tbody><tr style="padding: 0; vertical-align: top; text-align: left;">
59
+ <td style="word-wrap: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; border-collapse: collapse !important; vertical-align: top; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: normal; padding: 0; margin: 0; Margin: 0; text-align: left; font-size: 14px; mso-line-height-rule: exactly; line-height: 100%; color: #777777;">
60
+ <table style="border-collapse: collapse; border-spacing: 0; padding: 0; vertical-align: top; text-align: left; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;"><tbody><tr style="padding: 0; vertical-align: top; text-align: left;">
61
+ <td style="word-wrap: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; border-collapse: collapse !important; vertical-align: top; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: normal; padding: 0; margin: 0; Margin: 0; font-size: 14px; text-align: center; color: #ffffff; background: rgb(227, 71, 22); border: 1px solid #c45e1b; border-bottom: 3px solid #c45e1b; mso-line-height-rule: exactly; line-height: 100%;">
62
+ <a href="<?php echo esc_url( $dyk_message['more'] ); ?>" rel="noopener noreferrer" target="_blank" style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; margin: 0; Margin: 0; font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-weight: bold; color: #ffffff; text-decoration: none; text-align: center; display: inline-block; border: 0 solid #c45e1b; mso-line-height-rule: exactly; line-height: 100%; padding: 17px 30px 15px 30px;">
63
+ <?php echo esc_html( __( 'Learn More', 'custom-facebook-feeds' ) ); ?>
64
+ </a>
65
+ </td>
66
+ </tr></tbody></table>
67
+ </td>
68
+ </tr></tbody></table>
69
+ </center>
70
+ </td>
71
+ </tr>
72
+ </tbody>
73
+ </table>
74
+ </td>
75
+ </tr></tbody></table>
76
+ </td>
77
+ </tr>
78
+ <tr style="padding:0px;vertical-align:top;text-align:left">
79
+ <td align="center" valign="top" style="vertical-align:top;font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-weight:normal;margin:0px;line-height:140%;padding:30px;color:rgb(114,119,124);font-size:12px;text-align:center;border-collapse:collapse">
80
+ <?php
81
+ /* translators: %s - link to a site. */
82
+ esc_html_e( 'This is a courtesy email sent from the Smash Balloon Custom Facebook Feed plugin on your website to alert you when there is an issue with one of your Facebook feeds.', 'custom-facebook-feeds' );
83
+ ?>
84
+ </td>
85
+ </tr>
86
+ <tr style="padding:0px;vertical-align:top;text-align:left">
87
+ <td align="center" valign="top" style="vertical-align:top;font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-weight:normal;margin:0px;line-height:140%;padding:30px;color:rgb(114,119,124);font-size:12px;text-align:center;border-collapse:collapse">
88
+ <?php
89
+ printf( esc_html__( 'Sent from %s', 'custom-facebook-feeds' ), '<a href="' . esc_url( home_url() ) . '">' . esc_html( wp_specialchars_decode( get_bloginfo( 'name' ) ) ) . '</a>' );
90
+ ?>
91
+ <span>&#8226;</span>
92
+ <?php
93
+ printf( esc_html__( '%sLog in and disable these emails%s', 'custom-facebook-feeds' ), '<a href="' . esc_url( $footer_link ) . '">', '</a>' );
94
+ ?>
95
+ </td>
96
+ </tr>
97
+ </tbody>
98
+ </table>
99
+ </td>
100
+ </tr></tbody></table>
101
+ </body>
102
+ </html>
img/about/api-error.png ADDED
Binary file
img/about/icon-full.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg viewBox="0 0 37 28" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M12.29 26.462c.328.375.75.562 1.266.562s.937-.187 1.266-.562L35.563 5.79c.329-.328.493-.75.493-1.265 0-.516-.164-.938-.493-1.266L32.962.728a1.567 1.567 0 00-1.23-.563c-.493 0-.926.188-1.301.563L13.556 17.603 5.681 9.728c-.375-.375-.808-.563-1.301-.563-.492 0-.902.188-1.23.563L.548 12.259c-.328.328-.492.75-.492 1.265 0 .516.164.938.492 1.266L12.29 26.462z" fill="#6ab255" fill-rule="nonzero"/></svg>
img/about/icon-none.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg viewBox="0 0 33 33" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M27.592 32.359a1.928 1.928 0 01-1.417.583 1.928 1.928 0 01-1.416-.583l-8.084-8.084-8.083 8.084a1.928 1.928 0 01-1.417.583 1.93 1.93 0 01-1.417-.583l-4.5-4.5a1.932 1.932 0 01-.583-1.417c0-.555.195-1.028.583-1.417l8.084-8.083-8.084-8.084a1.931 1.931 0 01-.583-1.416c0-.556.195-1.028.583-1.417l4.5-4.5A1.93 1.93 0 017.175.942c.556 0 1.028.194 1.417.583l8.083 8.083 8.084-8.083a1.928 1.928 0 011.416-.583c.556 0 1.028.194 1.417.583l4.5 4.5c.389.389.583.861.583 1.417 0 .555-.194 1.027-.583 1.416l-8.083 8.084 8.083 8.083c.389.389.583.862.583 1.417 0 .556-.194 1.028-.583 1.417l-4.5 4.5z" fill="#d83638" fill-rule="nonzero"/></svg>
img/about/icon-partial.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg viewBox="0 0 53 53" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-miterlimit="10"><path d="M37.592 42.359a1.928 1.928 0 01-1.417.583 1.928 1.928 0 01-1.416-.583l-8.084-8.084-8.083 8.084a1.928 1.928 0 01-1.417.583 1.93 1.93 0 01-1.417-.583l-4.5-4.5a1.932 1.932 0 01-.583-1.417c0-.556.195-1.028.583-1.417l8.084-8.083-8.084-8.084a1.93 1.93 0 01-.583-1.416c0-.556.195-1.028.583-1.417l4.5-4.5a1.93 1.93 0 011.417-.584 1.93 1.93 0 011.417.584l8.083 8.083 8.084-8.083a1.928 1.928 0 011.416-.584 1.93 1.93 0 011.417.584l4.5 4.5c.389.389.583.861.583 1.417 0 .555-.194 1.028-.583 1.416l-8.083 8.084 8.083 8.083c.389.389.583.861.583 1.417s-.194 1.028-.583 1.417l-4.5 4.5z" fill="none" stroke="#d83638" stroke-width="2" stroke-dasharray="4,2"/></svg>
img/about/plugin-if.png ADDED
Binary file
img/about/plugin-mi.png ADDED
Binary file
img/about/plugin-om.png ADDED
Binary file
img/about/plugin-rp.png ADDED
Binary file
img/about/plugin-seo.png ADDED
Binary file
img/about/plugin-smtp.png ADDED
Binary file
img/about/plugin-tw.jpg ADDED
Binary file
img/about/plugin-wpforms.png ADDED
Binary file
img/about/plugin-yt.png ADDED
Binary file
img/about/steps.png ADDED
Binary file
img/about/team.jpg ADDED
Binary file
img/balloon-120.png ADDED
Binary file
img/cff-icon-offer.png CHANGED
Binary file
js/cff-admin-scripts.js CHANGED
@@ -733,4 +733,296 @@ jQuery(document).ready(function($) {
733
  });
734
  });
735
 
736
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
733
  });
734
  });
735
 
736
+ //sb_instagram_enable_email_report
737
+ function cffToggleEmail() {
738
+ if (jQuery('#cff_enable_email_report').is(':checked')) {
739
+ jQuery('#cff_enable_email_report').closest('td').find('.cff_box').slideDown();
740
+ } else {
741
+ jQuery('#cff_enable_email_report').closest('td').find('.cff_box').slideUp();
742
+ }
743
+ }cffToggleEmail();
744
+ jQuery('#cff_enable_email_report').change(cffToggleEmail);
745
+ if (jQuery('#cff-goto').length) {
746
+ jQuery('#cff-goto').closest('tr').addClass('cff-goto');
747
+ $('html, body').animate({
748
+ scrollTop: $('#cff-goto').offset().top - 200
749
+ }, 500);
750
+ }
751
+
752
+ jQuery('.cff-error-directions .cff-reconnect').click(function(){
753
+ event.preventDefault();
754
+ jQuery('.cff_admin_btn').trigger('click');
755
+ });
756
+ jQuery('.cff-clear-errors-visit-page').click(function(event) {
757
+ event.preventDefault();
758
+ var $btn = jQuery(this);
759
+ $btn.prop( 'disabled', true ).addClass( 'loading' ).html('<i class="fa fa-spinner fa-spin" aria-hidden="true"></i>');
760
+ $.ajax({
761
+ url : cffA.ajax_url,
762
+ type : 'post',
763
+ data : {
764
+ action : 'cff_reset_log'
765
+ },
766
+ success : function(data) {
767
+ window.location.href = $btn.attr('data-url');
768
+ },
769
+ error : function(data) {
770
+ window.location.href = $btn.attr('data-url');
771
+ }
772
+ }); // ajax call
773
+ });
774
+
775
+ /* removing padding */
776
+ if (jQuery('#cff-admin-about').length) {
777
+ jQuery('#wpcontent').css('padding', 0);
778
+ }
779
+
780
+ });
781
+
782
+
783
+
784
+ /* global smash_admin, jconfirm, wpCookies, Choices, List */
785
+
786
+ (function($) {
787
+
788
+ 'use strict';
789
+
790
+ // Global settings access.
791
+ var s;
792
+
793
+ // Admin object.
794
+ var SmashCFFAdmin = {
795
+
796
+ // Settings.
797
+ settings: {
798
+ iconActivate: '<i class="fa fa-toggle-on fa-flip-horizontal" aria-hidden="true"></i>',
799
+ iconDeactivate: '<i class="fa fa-toggle-on" aria-hidden="true"></i>',
800
+ iconInstall: '<i class="fa fa-cloud-download" aria-hidden="true"></i>',
801
+ iconSpinner: '<i class="fa fa-spinner fa-spin" aria-hidden="true"></i>',
802
+ mediaFrame: false
803
+ },
804
+
805
+ /**
806
+ * Start the engine.
807
+ *
808
+ * @since 1.3.9
809
+ */
810
+ init: function() {
811
+
812
+ // Settings shortcut.
813
+ s = this.settings;
814
+
815
+ // Document ready.
816
+ $( document ).ready( SmashCFFAdmin.ready );
817
+
818
+ // Addons List.
819
+ SmashCFFAdmin.initAddons();
820
+ },
821
+
822
+ /**
823
+ * Document ready.
824
+ *
825
+ * @since 1.3.9
826
+ */
827
+ ready: function() {
828
+
829
+ // Action available for each binding.
830
+ $( document ).trigger( 'smashReady' );
831
+ },
832
+
833
+ //--------------------------------------------------------------------//
834
+ // Addons List.
835
+ //--------------------------------------------------------------------//
836
+
837
+ /**
838
+ * Element bindings for Addons List page.
839
+ *
840
+ * @since 1.3.9
841
+ */
842
+ initAddons: function() {
843
+
844
+ // Some actions have to be delayed to document.ready.
845
+ $( document ).on( 'smashReady', function() {
846
+
847
+ // Only run on the addons page.
848
+ if ( ! $( '#cff-admin-addons' ).length ) {
849
+ return;
850
+ }
851
+
852
+ // Display all addon boxes as the same height.
853
+ $( '.addon-item .details' ).matchHeight( { byrow: false, property: 'height' } );
854
+
855
+ // Addons searching.
856
+ if ( $('#cff-admin-addons-list').length ) {
857
+ var addonSearch = new List( 'cff-admin-addons-list', {
858
+ valueNames: [ 'addon-name' ]
859
+ } );
860
+
861
+ $( '#cff-admin-addons-search' ).on( 'keyup', function () {
862
+ var searchTerm = $( this ).val(),
863
+ $heading = $( '#addons-heading' );
864
+
865
+ if ( searchTerm ) {
866
+ $heading.text( cff_admin.addon_search );
867
+ }
868
+ else {
869
+ $heading.text( $heading.data( 'text' ) );
870
+ }
871
+
872
+ addonSearch.search( searchTerm );
873
+ } );
874
+ }
875
+ });
876
+
877
+ // Toggle an addon state.
878
+ $( document ).on( 'click', '#cff-admin-addons .addon-item button', function( event ) {
879
+
880
+ event.preventDefault();
881
+
882
+ if ( $( this ).hasClass( 'disabled' ) ) {
883
+ return false;
884
+ }
885
+
886
+ SmashCFFAdmin.addonToggle( $( this ) );
887
+ });
888
+ },
889
+
890
+ /**
891
+ * Toggle addon state.
892
+ *
893
+ * @since 1.3.9
894
+ */
895
+ addonToggle: function( $btn ) {
896
+
897
+ var $addon = $btn.closest( '.addon-item' ),
898
+ plugin = $btn.attr( 'data-plugin' ),
899
+ plugin_type = $btn.attr( 'data-type' ),
900
+ action,
901
+ cssClass,
902
+ statusText,
903
+ buttonText,
904
+ errorText,
905
+ successText;
906
+
907
+ if ( $btn.hasClass( 'status-go-to-url' ) ) {
908
+ // Open url in new tab.
909
+ window.open( $btn.attr('data-plugin'), '_blank' );
910
+ return;
911
+ }
912
+
913
+ $btn.prop( 'disabled', true ).addClass( 'loading' );
914
+ $btn.html( s.iconSpinner );
915
+
916
+ if ( $btn.hasClass( 'status-active' ) ) {
917
+ // Deactivate.
918
+ action = 'cff_deactivate_addon';
919
+ cssClass = 'status-inactive';
920
+ if ( plugin_type === 'plugin' ) {
921
+ cssClass += ' button button-secondary';
922
+ }
923
+ statusText = cff_admin.addon_inactive;
924
+ buttonText = cff_admin.addon_activate;
925
+ if ( plugin_type === 'addon' ) {
926
+ buttonText = s.iconActivate + buttonText;
927
+ }
928
+ errorText = s.iconDeactivate + cff_admin.addon_deactivate;
929
+
930
+ } else if ( $btn.hasClass( 'status-inactive' ) ) {
931
+ // Activate.
932
+ action = 'cff_activate_addon';
933
+ cssClass = 'status-active';
934
+ if ( plugin_type === 'plugin' ) {
935
+ cssClass += ' button button-secondary disabled';
936
+ }
937
+ statusText = cff_admin.addon_active;
938
+ buttonText = cff_admin.addon_deactivate;
939
+ if ( plugin_type === 'addon' ) {
940
+ buttonText = s.iconDeactivate + buttonText;
941
+ } else if ( plugin_type === 'plugin' ) {
942
+ buttonText = cff_admin.addon_activated;
943
+ }
944
+ errorText = s.iconActivate + cff_admin.addon_activate;
945
+
946
+ } else if ( $btn.hasClass( 'status-download' ) ) {
947
+ // Install & Activate.
948
+ action = 'cff_install_addon';
949
+ cssClass = 'status-active';
950
+ if ( plugin_type === 'plugin' ) {
951
+ cssClass += ' button disabled';
952
+ }
953
+ statusText = cff_admin.addon_active;
954
+ buttonText = cff_admin.addon_activated;
955
+ if ( plugin_type === 'addon' ) {
956
+ buttonText = s.iconActivate + cff_admin.addon_deactivate;
957
+ }
958
+ errorText = s.iconInstall + cff_admin.addon_activate;
959
+
960
+ } else {
961
+ return;
962
+ }
963
+
964
+ var data = {
965
+ action: action,
966
+ nonce : cff_admin.nonce,
967
+ plugin: plugin,
968
+ type : plugin_type
969
+ };
970
+ $.post( cff_admin.ajax_url, data, function( res ) {
971
+
972
+ if ( res.success ) {
973
+ if ( 'cff_install_addon' === action ) {
974
+ $btn.attr( 'data-plugin', res.data.basename );
975
+ successText = res.data.msg;
976
+ if ( ! res.data.is_activated ) {
977
+ cssClass = 'status-inactive';
978
+ if ( plugin_type === 'plugin' ) {
979
+ cssClass = 'button';
980
+ }
981
+ statusText = cff_admin.addon_inactive;
982
+ buttonText = s.iconActivate + cff_admin.addon_activate;
983
+ }
984
+ } else {
985
+ successText = res.data;
986
+ }
987
+ $addon.find( '.actions' ).append( '<div class="msg success">'+successText+'</div>' );
988
+ $addon.find( 'span.status-label' )
989
+ .removeClass( 'status-active status-inactive status-download' )
990
+ .addClass( cssClass )
991
+ .removeClass( 'button button-primary button-secondary disabled' )
992
+ .text( statusText );
993
+ $btn
994
+ .removeClass( 'status-active status-inactive status-download' )
995
+ .removeClass( 'button button-primary button-secondary disabled' )
996
+ .addClass( cssClass ).html( buttonText );
997
+ } else {
998
+ if ( 'download_failed' === res.data[0].code ) {
999
+ if ( plugin_type === 'addon' ) {
1000
+ $addon.find( '.actions' ).append( '<div class="msg error">'+cff_admin.addon_error+'</div>' );
1001
+ } else {
1002
+ $addon.find( '.actions' ).append( '<div class="msg error">'+cff_admin.plugin_error+'</div>' );
1003
+ }
1004
+ } else {
1005
+ $addon.find( '.actions' ).append( '<div class="msg error">'+res.data+'</div>' );
1006
+ }
1007
+ $btn.html( errorText );
1008
+ }
1009
+
1010
+ $btn.prop( 'disabled', false ).removeClass( 'loading' );
1011
+
1012
+ // Automatically clear addon messages after 3 seconds.
1013
+ setTimeout( function() {
1014
+ $( '.addon-item .msg' ).remove();
1015
+ }, 3000 );
1016
+
1017
+ }).fail( function( xhr ) {
1018
+ console.log( xhr.responseText );
1019
+ });
1020
+ },
1021
+
1022
+ };
1023
+
1024
+ SmashCFFAdmin.init();
1025
+
1026
+ window.SmashCFFAdmin = SmashCFFAdmin;
1027
+
1028
+ })( jQuery );
js/cff-blocks.js CHANGED
@@ -1,114 +1,114 @@
1
- "use strict";
2
- window.cffmetatrans = false;
3
- (function () {
4
- var _wp = wp,
5
- _wp$serverSideRender = _wp.serverSideRender,
6
- createElement = wp.element.createElement,
7
- ServerSideRender = _wp$serverSideRender === void 0 ? wp.components.ServerSideRender : _wp$serverSideRender,
8
- _ref = wp.blockEditor || wp.editor,
9
- InspectorControls = _ref.InspectorControls,
10
- _wp$components = wp.components,
11
- TextareaControl = _wp$components.TextareaControl,
12
- Button = _wp$components.Button,
13
- PanelBody = _wp$components.PanelBody,
14
- Placeholder = _wp$components.Placeholder,
15
- registerBlockType = wp.blocks.registerBlockType;
16
-
17
- var cffIcon = createElement('svg', {
18
- width: 20,
19
- height: 20,
20
- viewBox: '0 0 448 512',
21
- className: 'dashicon'
22
- }, createElement('path', {
23
- fill: 'currentColor',
24
- d: 'M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z'
25
- }));
26
-
27
- registerBlockType('cff/cff-feed-block', {
28
- title: 'Custom Facebook Feed',
29
- icon: cffIcon,
30
- category: 'widgets',
31
- attributes: {
32
- noNewChanges: {
33
- type: 'boolean',
34
- },
35
- shortcodeSettings: {
36
- type: 'string',
37
- }
38
- },
39
- edit: function edit(props) {
40
- var _props = props,
41
- setAttributes = _props.setAttributes,
42
- _props$attributes = _props.attributes,
43
- _props$attributes$sho = _props$attributes.shortcodeSettings,
44
- shortcodeSettings = _props$attributes$sho === void 0 ? cff_block_editor.shortcodeSettings : _props$attributes$sho,
45
- _props$attributes$cli = _props$attributes.noNewChanges,
46
- noNewChanges = _props$attributes$cli === void 0 ? true : _props$attributes$cli;
47
-
48
- function setState(shortcodeSettingsContent) {
49
- setAttributes({
50
- noNewChanges: false,
51
- shortcodeSettings: shortcodeSettingsContent
52
- })
53
- }
54
-
55
- function previewClick(content) {
56
- setAttributes({
57
- noNewChanges: true,
58
- })
59
- }
60
- function afterRender() {
61
- var executed = false;
62
- // no way to run a script after AJAX call to get feed so we just try to execute it on a few intervals
63
- setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},1000);
64
- setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},2000);
65
- setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},3000);
66
- setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},5000);
67
- setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},10000);
68
- }
69
-
70
- var jsx = [React.createElement(InspectorControls, {
71
- key: "cff-gutenberg-setting-selector-inspector-controls"
72
- }, React.createElement(PanelBody, {
73
- title: cff_block_editor.i18n.addSettings
74
- }, React.createElement(TextareaControl, {
75
- key: "cff-gutenberg-settings",
76
- className: "cff-gutenberg-settings",
77
- label: cff_block_editor.i18n.shortcodeSettings,
78
- help: cff_block_editor.i18n.example + ": 'id=\"smashballoon\" showheader=\"true\"'",
79
- value: shortcodeSettings,
80
- onChange: setState
81
- }), React.createElement(Button, {
82
- key: "cff-gutenberg-preview",
83
- className: "cff-gutenberg-preview",
84
- onClick: previewClick,
85
- isDefault: true
86
- }, cff_block_editor.i18n.preview)))];
87
-
88
- if (noNewChanges) {
89
- afterRender();
90
- jsx.push(React.createElement(ServerSideRender, {
91
- key: "custom-facebook-feeds/custom-facebook-feeds",
92
- block: "cff/cff-feed-block",
93
- attributes: props.attributes,
94
- }));
95
- } else {
96
- props.attributes.noNewChanges = false;
97
- jsx.push(React.createElement(Placeholder, {
98
- key: "cff-gutenberg-setting-selector-select-wrap",
99
- className: "cff-gutenberg-setting-selector-select-wrap"
100
- }, React.createElement(Button, {
101
- key: "cff-gutenberg-preview",
102
- className: "cff-gutenberg-preview",
103
- onClick: previewClick,
104
- isDefault: true
105
- }, cff_block_editor.i18n.preview)));
106
- }
107
-
108
- return jsx;
109
- },
110
- save: function save() {
111
- return null;
112
- }
113
- });
114
  })();
1
+ "use strict";
2
+ window.cffmetatrans = false;
3
+ (function () {
4
+ var _wp = wp,
5
+ _wp$serverSideRender = _wp.serverSideRender,
6
+ createElement = wp.element.createElement,
7
+ ServerSideRender = _wp$serverSideRender === void 0 ? wp.components.ServerSideRender : _wp$serverSideRender,
8
+ _ref = wp.blockEditor || wp.editor,
9
+ InspectorControls = _ref.InspectorControls,
10
+ _wp$components = wp.components,
11
+ TextareaControl = _wp$components.TextareaControl,
12
+ Button = _wp$components.Button,
13
+ PanelBody = _wp$components.PanelBody,
14
+ Placeholder = _wp$components.Placeholder,
15
+ registerBlockType = wp.blocks.registerBlockType;
16
+
17
+ var cffIcon = createElement('svg', {
18
+ width: 20,
19
+ height: 20,
20
+ viewBox: '0 0 448 512',
21
+ className: 'dashicon'
22
+ }, createElement('path', {
23
+ fill: 'currentColor',
24
+ d: 'M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z'
25
+ }));
26
+
27
+ registerBlockType('cff/cff-feed-block', {
28
+ title: 'Custom Facebook Feed',
29
+ icon: cffIcon,
30
+ category: 'widgets',
31
+ attributes: {
32
+ noNewChanges: {
33
+ type: 'boolean',
34
+ },
35
+ shortcodeSettings: {
36
+ type: 'string',
37
+ }
38
+ },
39
+ edit: function edit(props) {
40
+ var _props = props,
41
+ setAttributes = _props.setAttributes,
42
+ _props$attributes = _props.attributes,
43
+ _props$attributes$sho = _props$attributes.shortcodeSettings,
44
+ shortcodeSettings = _props$attributes$sho === void 0 ? cff_block_editor.shortcodeSettings : _props$attributes$sho,
45
+ _props$attributes$cli = _props$attributes.noNewChanges,
46
+ noNewChanges = _props$attributes$cli === void 0 ? true : _props$attributes$cli;
47
+
48
+ function setState(shortcodeSettingsContent) {
49
+ setAttributes({
50
+ noNewChanges: false,
51
+ shortcodeSettings: shortcodeSettingsContent
52
+ })
53
+ }
54
+
55
+ function previewClick(content) {
56
+ setAttributes({
57
+ noNewChanges: true,
58
+ })
59
+ }
60
+ function afterRender() {
61
+ var executed = false;
62
+ // no way to run a script after AJAX call to get feed so we just try to execute it on a few intervals
63
+ setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},1000);
64
+ setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},2000);
65
+ setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},3000);
66
+ setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},5000);
67
+ setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},10000);
68
+ }
69
+
70
+ var jsx = [React.createElement(InspectorControls, {
71
+ key: "cff-gutenberg-setting-selector-inspector-controls"
72
+ }, React.createElement(PanelBody, {
73
+ title: cff_block_editor.i18n.addSettings
74
+ }, React.createElement(TextareaControl, {
75
+ key: "cff-gutenberg-settings",
76
+ className: "cff-gutenberg-settings",
77
+ label: cff_block_editor.i18n.shortcodeSettings,
78
+ help: cff_block_editor.i18n.example + ": 'id=\"smashballoon\" showheader=\"true\"'",
79
+ value: shortcodeSettings,
80
+ onChange: setState
81
+ }), React.createElement(Button, {
82
+ key: "cff-gutenberg-preview",
83
+ className: "cff-gutenberg-preview",
84
+ onClick: previewClick,
85
+ isDefault: true
86
+ }, cff_block_editor.i18n.preview)))];
87
+
88
+ if (noNewChanges) {
89
+ afterRender();
90
+ jsx.push(React.createElement(ServerSideRender, {
91
+ key: "custom-facebook-feeds/custom-facebook-feeds",
92
+ block: "cff/cff-feed-block",
93
+ attributes: props.attributes,
94
+ }));
95
+ } else {
96
+ props.attributes.noNewChanges = false;
97
+ jsx.push(React.createElement(Placeholder, {
98
+ key: "cff-gutenberg-setting-selector-select-wrap",
99
+ className: "cff-gutenberg-setting-selector-select-wrap"
100
+ }, React.createElement(Button, {
101
+ key: "cff-gutenberg-preview",
102
+ className: "cff-gutenberg-preview",
103
+ onClick: previewClick,
104
+ isDefault: true
105
+ }, cff_block_editor.i18n.preview)));
106
+ }
107
+
108
+ return jsx;
109
+ },
110
+ save: function save() {
111
+ return null;
112
+ }
113
+ });
114
  })();
js/cff-scripts.min.js CHANGED
@@ -1,63 +1,63 @@
1
- var cff_js_exists=(typeof cff_js_exists!=='undefined')?!0:!1;if(!cff_js_exists){if(jQuery('#cff.cff-masonry-js').length){!function(a){function b(){}
2
- function c(a){function c(b){b.prototype.option||(b.prototype.option=function(b){a.isPlainObject(b)&&(this.options=a.extend(!0,this.options,b))})}
3
- function e(b,c){a.fn[b]=function(e){if("string"==typeof e){for(var g=d.call(arguments,1),h=0,i=this.length;i>h;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}
4
- return this}
5
- return this.each(function(){var d=a.data(this,b);d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d))})}}
6
- if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}
7
- var d=Array.prototype.slice;"function"==typeof define&&define.amd?define("jquery-bridget/jquery.bridget",["jquery"],c):c("object"==typeof exports?require("jquery"):a.jQuery)}(window),function(a){function b(b){var c=a.event;return c.target=c.target||c.srcElement||b,c}
8
- var c=document.documentElement,d=function(){};c.addEventListener?d=function(a,b,c){a.addEventListener(b,c,!1)}:c.attachEvent&&(d=function(a,c,d){a[c+d]=d.handleEvent?function(){var c=b(a);d.handleEvent.call(d,c)}:function(){var c=b(a);d.call(a,c)},a.attachEvent("on"+c,a[c+d])});var e=function(){};c.removeEventListener?e=function(a,b,c){a.removeEventListener(b,c,!1)}:c.detachEvent&&(e=function(a,b,c){a.detachEvent("on"+b,a[b+c]);try{delete a[b+c]}catch(d){a[b+c]=void 0}});var f={bind:d,unbind:e};"function"==typeof define&&define.amd?define("eventie/eventie",f):"object"==typeof exports?module.exports=f:a.eventie=f}(window),function(){function a(){}
9
- function b(a,b){for(var c=a.length;c--;)if(a[c].listener===b)return c;return-1}
10
- function c(a){return function(){return this[a].apply(this,arguments)}}
11
- var d=a.prototype,e=this,f=e.EventEmitter;d.getListeners=function(a){var b,c,d=this._getEvents();if(a instanceof RegExp){b={};for(c in d)d.hasOwnProperty(c)&&a.test(c)&&(b[c]=d[c])}else b=d[a]||(d[a]=[]);return b},d.flattenListeners=function(a){var b,c=[];for(b=0;b<a.length;b+=1)c.push(a[b].listener);return c},d.getListenersAsObject=function(a){var b,c=this.getListeners(a);return c instanceof Array&&(b={},b[a]=c),b||c},d.addListener=function(a,c){var d,e=this.getListenersAsObject(a),f="object"==typeof c;for(d in e)e.hasOwnProperty(d)&&-1===b(e[d],c)&&e[d].push(f?c:{listener:c,once:!1});return this},d.on=c("addListener"),d.addOnceListener=function(a,b){return this.addListener(a,{listener:b,once:!0})},d.once=c("addOnceListener"),d.defineEvent=function(a){return this.getListeners(a),this},d.defineEvents=function(a){for(var b=0;b<a.length;b+=1)this.defineEvent(a[b]);return this},d.removeListener=function(a,c){var d,e,f=this.getListenersAsObject(a);for(e in f)f.hasOwnProperty(e)&&(d=b(f[e],c),-1!==d&&f[e].splice(d,1));return this},d.off=c("removeListener"),d.addListeners=function(a,b){return this.manipulateListeners(!1,a,b)},d.removeListeners=function(a,b){return this.manipulateListeners(!0,a,b)},d.manipulateListeners=function(a,b,c){var d,e,f=a?this.removeListener:this.addListener,g=a?this.removeListeners:this.addListeners;if("object"!=typeof b||b instanceof RegExp)for(d=c.length;d--;)f.call(this,b,c[d]);else for(d in b)b.hasOwnProperty(d)&&(e=b[d])&&("function"==typeof e?f.call(this,d,e):g.call(this,d,e));return this},d.removeEvent=function(a){var b,c=typeof a,d=this._getEvents();if("string"===c)delete d[a];else if(a instanceof RegExp)for(b in d)d.hasOwnProperty(b)&&a.test(b)&&delete d[b];else delete this._events;return this},d.removeAllListeners=c("removeEvent"),d.emitEvent=function(a,b){var c,d,e,f,g=this.getListenersAsObject(a);for(e in g)if(g.hasOwnProperty(e))for(d=g[e].length;d--;)c=g[e][d],c.once===!0&&this.removeListener(a,c.listener),f=c.listener.apply(this,b||[]),f===this._getOnceReturnValue()&&this.removeListener(a,c.listener);return this},d.trigger=c("emitEvent"),d.emit=function(a){var b=Array.prototype.slice.call(arguments,1);return this.emitEvent(a,b)},d.setOnceReturnValue=function(a){return this._onceReturnValue=a,this},d._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},d._getEvents=function(){return this._events||(this._events={})},a.noConflict=function(){return e.EventEmitter=f,a},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return a}):"object"==typeof module&&module.exports?module.exports=a:e.EventEmitter=a}.call(this),function(a){function b(a){if(a){if("string"==typeof d[a])return a;a=a.charAt(0).toUpperCase()+a.slice(1);for(var b,e=0,f=c.length;f>e;e++)if(b=c[e]+a,"string"==typeof d[b])return b}}
12
- var c="Webkit Moz ms Ms O".split(" "),d=document.documentElement.style;"function"==typeof define&&define.amd?define("get-style-property/get-style-property",[],function(){return b}):"object"==typeof exports?module.exports=b:a.getStyleProperty=b}(window),function(a){function b(a){var b=parseFloat(a),c=-1===a.indexOf("%")&&!isNaN(b);return c&&b}
13
- function c(){}
14
- function d(){for(var a={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},b=0,c=g.length;c>b;b++){var d=g[b];a[d]=0}
15
- return a}
16
- function e(c){function e(){if(!m){m=!0;var d=a.getComputedStyle;if(j=function(){var a=d?function(a){return d(a,null)}:function(a){return a.currentStyle};return function(b){var c=a(b);return c||f("Style returned "+c+". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"),c}}(),k=c("boxSizing")){var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style[k]="border-box";var g=document.body||document.documentElement;g.appendChild(e);var h=j(e);l=200===b(h.width),g.removeChild(e)}}}
17
- function h(a){if(e(),"string"==typeof a&&(a=document.querySelector(a)),a&&"object"==typeof a&&a.nodeType){var c=j(a);if("none"===c.display)return d();var f={};f.width=a.offsetWidth,f.height=a.offsetHeight;for(var h=f.isBorderBox=!(!k||!c[k]||"border-box"!==c[k]),m=0,n=g.length;n>m;m++){var o=g[m],p=c[o];p=i(a,p);var q=parseFloat(p);f[o]=isNaN(q)?0:q}
18
- var r=f.paddingLeft+f.paddingRight,s=f.paddingTop+f.paddingBottom,t=f.marginLeft+f.marginRight,u=f.marginTop+f.marginBottom,v=f.borderLeftWidth+f.borderRightWidth,w=f.borderTopWidth+f.borderBottomWidth,x=h&&l,y=b(c.width);y!==!1&&(f.width=y+(x?0:r+v));var z=b(c.height);return z!==!1&&(f.height=z+(x?0:s+w)),f.innerWidth=f.width-(r+v),f.innerHeight=f.height-(s+w),f.outerWidth=f.width+t,f.outerHeight=f.height+u,f}}
19
- function i(b,c){if(a.getComputedStyle||-1===c.indexOf("%"))return c;var d=b.style,e=d.left,f=b.runtimeStyle,g=f&&f.left;return g&&(f.left=b.currentStyle.left),d.left=c,c=d.pixelLeft,d.left=e,g&&(f.left=g),c}
20
- var j,k,l,m=!1;return h}
21
- var f="undefined"==typeof console?c:function(a){console.error(a)},g=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];"function"==typeof define&&define.amd?define("get-size/get-size",["get-style-property/get-style-property"],e):"object"==typeof exports?module.exports=e(require("desandro-get-style-property")):a.getSize=e(a.getStyleProperty)}(window),function(a){function b(a){"function"==typeof a&&(b.isReady?a():g.push(a))}
22
- function c(a){var c="readystatechange"===a.type&&"complete"!==f.readyState;b.isReady||c||d()}
23
- function d(){b.isReady=!0;for(var a=0,c=g.length;c>a;a++){var d=g[a];d()}}
24
- function e(e){return"complete"===f.readyState?d():(e.bind(f,"DOMContentLoaded",c),e.bind(f,"readystatechange",c),e.bind(a,"load",c)),b}
25
- var f=a.document,g=[];b.isReady=!1,"function"==typeof define&&define.amd?define("doc-ready/doc-ready",["eventie/eventie"],e):"object"==typeof exports?module.exports=e(require("eventie")):a.docReady=e(a.eventie)}(window),function(a){function b(a,b){return a[g](b)}
26
- function c(a){if(!a.parentNode){var b=document.createDocumentFragment();b.appendChild(a)}}
27
- function d(a,b){c(a);for(var d=a.parentNode.querySelectorAll(b),e=0,f=d.length;f>e;e++)if(d[e]===a)return!0;return!1}
28
- function e(a,d){return c(a),b(a,d)}
29
- var f,g=function(){if(a.matches)return"matches";if(a.matchesSelector)return"matchesSelector";for(var b=["webkit","moz","ms","o"],c=0,d=b.length;d>c;c++){var e=b[c],f=e+"MatchesSelector";if(a[f])return f}}();if(g){var h=document.createElement("div"),i=b(h,"div");f=i?b:e}else f=d;"function"==typeof define&&define.amd?define("matches-selector/matches-selector",[],function(){return f}):"object"==typeof exports?module.exports=f:window.matchesSelector=f}(Element.prototype),function(a,b){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["doc-ready/doc-ready","matches-selector/matches-selector"],function(c,d){return b(a,c,d)}):"object"==typeof exports?module.exports=b(a,require("doc-ready"),require("desandro-matches-selector")):a.fizzyUIUtils=b(a,a.docReady,a.matchesSelector)}(window,function(a,b,c){var d={};d.extend=function(a,b){for(var c in b)a[c]=b[c];return a},d.modulo=function(a,b){return(a%b+b)%b};var e=Object.prototype.toString;d.isArray=function(a){return"[object Array]"==e.call(a)},d.makeArray=function(a){var b=[];if(d.isArray(a))b=a;else if(a&&"number"==typeof a.length)for(var c=0,e=a.length;e>c;c++)b.push(a[c]);else b.push(a);return b},d.indexOf=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},d.removeFrom=function(a,b){var c=d.indexOf(a,b);-1!=c&&a.splice(c,1)},d.isElement="function"==typeof HTMLElement||"object"==typeof HTMLElement?function(a){return a instanceof HTMLElement}:function(a){return a&&"object"==typeof a&&1==a.nodeType&&"string"==typeof a.nodeName},d.setText=function(){function a(a,c){b=b||(void 0!==document.documentElement.textContent?"textContent":"innerText"),a[b]=c}
30
- var b;return a}(),d.getParent=function(a,b){for(;a!=document.body;)if(a=a.parentNode,c(a,b))return a},d.getQueryElement=function(a){return"string"==typeof a?document.querySelector(a):a},d.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},d.filterFindElements=function(a,b){a=d.makeArray(a);for(var e=[],f=0,g=a.length;g>f;f++){var h=a[f];if(d.isElement(h))if(b){c(h,b)&&e.push(h);for(var i=h.querySelectorAll(b),j=0,k=i.length;k>j;j++)e.push(i[j])}else e.push(h)}
31
- return e},d.debounceMethod=function(a,b,c){var d=a.prototype[b],e=b+"Timeout";a.prototype[b]=function(){var a=this[e];a&&clearTimeout(a);var b=arguments,f=this;this[e]=setTimeout(function(){d.apply(f,b),delete f[e]},c||100)}},d.toDashed=function(a){return a.replace(/(.)([A-Z])/g,function(a,b,c){return b+"-"+c}).toLowerCase()};var f=a.console;return d.htmlInit=function(c,e){b(function(){for(var b=d.toDashed(e),g=document.querySelectorAll(".js-"+b),h="data-"+b+"-options",i=0,j=g.length;j>i;i++){var k,l=g[i],m=l.getAttribute(h);try{k=m&&JSON.parse(m)}catch(n){f&&f.error("Error parsing "+h+" on "+l.nodeName.toLowerCase()+(l.id?"#"+l.id:"")+": "+n);continue}
32
- var o=new c(l,k),p=a.jQuery;p&&p.data(l,e,o)}})},d}),function(a,b){"function"==typeof define&&define.amd?define("outlayer/item",["eventEmitter/EventEmitter","get-size/get-size","get-style-property/get-style-property","fizzy-ui-utils/utils"],function(c,d,e,f){return b(a,c,d,e,f)}):"object"==typeof exports?module.exports=b(a,require("wolfy87-eventemitter"),require("get-size"),require("desandro-get-style-property"),require("fizzy-ui-utils")):(a.Outlayer={},a.Outlayer.Item=b(a,a.EventEmitter,a.getSize,a.getStyleProperty,a.fizzyUIUtils))}(window,function(a,b,c,d,e){function f(a){for(var b in a)return!1;return b=null,!0}
33
- function g(a,b){a&&(this.element=a,this.layout=b,this.position={x:0,y:0},this._create())}
34
- var h=a.getComputedStyle,i=h?function(a){return h(a,null)}:function(a){return a.currentStyle},j=d("transition"),k=d("transform"),l=j&&k,m=!!d("perspective"),n={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"}[j],o=["transform","transition","transitionDuration","transitionProperty"],p=function(){for(var a={},b=0,c=o.length;c>b;b++){var e=o[b],f=d(e);f&&f!==e&&(a[e]=f)}
35
- return a}();e.extend(g.prototype,b.prototype),g.prototype._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},g.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},g.prototype.getSize=function(){this.size=c(this.element)},g.prototype.css=function(a){var b=this.element.style;for(var c in a){var d=p[c]||c;b[d]=a[c]}},g.prototype.getPosition=function(){var a=i(this.element),b=this.layout.options,c=b.isOriginLeft,d=b.isOriginTop,e=parseInt(a[c?"left":"right"],10),f=parseInt(a[d?"top":"bottom"],10);e=isNaN(e)?0:e,f=isNaN(f)?0:f;var g=this.layout.size;e-=c?g.paddingLeft:g.paddingRight,f-=d?g.paddingTop:g.paddingBottom,this.position.x=e,this.position.y=f},g.prototype.layoutPosition=function(){var a=this.layout.size,b=this.layout.options,c={},d=b.isOriginLeft?"paddingLeft":"paddingRight",e=b.isOriginLeft?"left":"right",f=b.isOriginLeft?"right":"left",g=this.position.x+a[d];g=b.percentPosition&&!b.isHorizontal?g/a.width*100+"%":g+"px",c[e]=g,c[f]="";var h=b.isOriginTop?"paddingTop":"paddingBottom",i=b.isOriginTop?"top":"bottom",j=b.isOriginTop?"bottom":"top",k=this.position.y+a[h];k=b.percentPosition&&b.isHorizontal?k/a.height*100+"%":k+"px",c[i]=k,c[j]="",this.css(c),this.emitEvent("layout",[this])};var q=m?function(a,b){return"translate3d("+a+"px, "+b+"px, 0)"}:function(a,b){return"translate("+a+"px, "+b+"px)"};g.prototype._transitionTo=function(a,b){this.getPosition();var c=this.position.x,d=this.position.y,e=parseInt(a,10),f=parseInt(b,10),g=e===this.position.x&&f===this.position.y;if(this.setPosition(a,b),g&&!this.isTransitioning)return void this.layoutPosition();var h=a-c,i=b-d,j={},k=this.layout.options;h=k.isOriginLeft?h:-h,i=k.isOriginTop?i:-i,j.transform=q(h,i),this.transition({to:j,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},g.prototype.goTo=function(a,b){this.setPosition(a,b),this.layoutPosition()},g.prototype.moveTo=l?g.prototype._transitionTo:g.prototype.goTo,g.prototype.setPosition=function(a,b){this.position.x=parseInt(a,10),this.position.y=parseInt(b,10)},g.prototype._nonTransition=function(a){this.css(a.to),a.isCleaning&&this._removeStyles(a.to);for(var b in a.onTransitionEnd)a.onTransitionEnd[b].call(this)},g.prototype._transition=function(a){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(a);var b=this._transn;for(var c in a.onTransitionEnd)b.onEnd[c]=a.onTransitionEnd[c];for(c in a.to)b.ingProperties[c]=!0,a.isCleaning&&(b.clean[c]=!0);if(a.from){this.css(a.from);var d=this.element.offsetHeight;d=null}
36
- this.enableTransition(a.to),this.css(a.to),this.isTransitioning=!0};var r=k&&e.toDashed(k)+",opacity";g.prototype.enableTransition=function(){this.isTransitioning||(this.css({transitionProperty:r,transitionDuration:this.layout.options.transitionDuration}),this.element.addEventListener(n,this,!1))},g.prototype.transition=g.prototype[j?"_transition":"_nonTransition"],g.prototype.onwebkitTransitionEnd=function(a){this.ontransitionend(a)},g.prototype.onotransitionend=function(a){this.ontransitionend(a)};var s={"-webkit-transform":"transform","-moz-transform":"transform","-o-transform":"transform"};g.prototype.ontransitionend=function(a){if(a.target===this.element){var b=this._transn,c=s[a.propertyName]||a.propertyName;if(delete b.ingProperties[c],f(b.ingProperties)&&this.disableTransition(),c in b.clean&&(this.element.style[a.propertyName]="",delete b.clean[c]),c in b.onEnd){var d=b.onEnd[c];d.call(this),delete b.onEnd[c]}
37
- this.emitEvent("transitionEnd",[this])}},g.prototype.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(n,this,!1),this.isTransitioning=!1},g.prototype._removeStyles=function(a){var b={};for(var c in a)b[c]="";this.css(b)};var t={transitionProperty:"",transitionDuration:""};return g.prototype.removeTransitionStyles=function(){this.css(t)},g.prototype.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},g.prototype.remove=function(){if(!j||!parseFloat(this.layout.options.transitionDuration))return void this.removeElem();var a=this;this.once("transitionEnd",function(){a.removeElem()}),this.hide()},g.prototype.reveal=function(){delete this.isHidden,this.css({display:""});var a=this.layout.options,b={},c=this.getHideRevealTransitionEndProperty("visibleStyle");b[c]=this.onRevealTransitionEnd,this.transition({from:a.hiddenStyle,to:a.visibleStyle,isCleaning:!0,onTransitionEnd:b})},g.prototype.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},g.prototype.getHideRevealTransitionEndProperty=function(a){var b=this.layout.options[a];if(b.opacity)return"opacity";for(var c in b)return c},g.prototype.hide=function(){this.isHidden=!0,this.css({display:""});var a=this.layout.options,b={},c=this.getHideRevealTransitionEndProperty("hiddenStyle");b[c]=this.onHideTransitionEnd,this.transition({from:a.visibleStyle,to:a.hiddenStyle,isCleaning:!0,onTransitionEnd:b})},g.prototype.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},g.prototype.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},g}),function(a,b){"function"==typeof define&&define.amd?define("outlayer/outlayer",["eventie/eventie","eventEmitter/EventEmitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(c,d,e,f,g){return b(a,c,d,e,f,g)}):"object"==typeof exports?module.exports=b(a,require("eventie"),require("wolfy87-eventemitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):a.Outlayer=b(a,a.eventie,a.EventEmitter,a.getSize,a.fizzyUIUtils,a.Outlayer.Item)}(window,function(a,b,c,d,e,f){function g(a,b){var c=e.getQueryElement(a);if(!c)return void(h&&h.error("Bad element for "+this.constructor.namespace+": "+(c||a)));this.element=c,i&&(this.$element=i(this.element)),this.options=e.extend({},this.constructor.defaults),this.option(b);var d=++k;this.element.outlayerGUID=d,l[d]=this,this._create(),this.options.isInitLayout&&this.layout()}
38
- var h=a.console,i=a.jQuery,j=function(){},k=0,l={};return g.namespace="outlayer",g.Item=f,g.defaults={containerStyle:{position:"relative"},isInitLayout:!0,isOriginLeft:!0,isOriginTop:!0,isResizeBound:!0,isResizingContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}},e.extend(g.prototype,c.prototype),g.prototype.option=function(a){e.extend(this.options,a)},g.prototype._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),e.extend(this.element.style,this.options.containerStyle),this.options.isResizeBound&&this.bindResize()},g.prototype.reloadItems=function(){this.items=this._itemize(this.element.children)},g.prototype._itemize=function(a){for(var b=this._filterFindItemElements(a),c=this.constructor.Item,d=[],e=0,f=b.length;f>e;e++){var g=b[e],h=new c(g,this);d.push(h)}
39
- return d},g.prototype._filterFindItemElements=function(a){return e.filterFindElements(a,this.options.itemSelector)},g.prototype.getItemElements=function(){for(var a=[],b=0,c=this.items.length;c>b;b++)a.push(this.items[b].element);return a},g.prototype.layout=function(){this._resetLayout(),this._manageStamps();var a=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;this.layoutItems(this.items,a),this._isLayoutInited=!0},g.prototype._init=g.prototype.layout,g.prototype._resetLayout=function(){this.getSize()},g.prototype.getSize=function(){this.size=d(this.element)},g.prototype._getMeasurement=function(a,b){var c,f=this.options[a];f?("string"==typeof f?c=this.element.querySelector(f):e.isElement(f)&&(c=f),this[a]=c?d(c)[b]:f):this[a]=0},g.prototype.layoutItems=function(a,b){a=this._getItemsForLayout(a),this._layoutItems(a,b),this._postLayout()},g.prototype._getItemsForLayout=function(a){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c];e.isIgnored||b.push(e)}
40
- return b},g.prototype._layoutItems=function(a,b){if(this._emitCompleteOnItems("layout",a),a&&a.length){for(var c=[],d=0,e=a.length;e>d;d++){var f=a[d],g=this._getItemLayoutPosition(f);g.item=f,g.isInstant=b||f.isLayoutInstant,c.push(g)}
41
- this._processLayoutQueue(c)}},g.prototype._getItemLayoutPosition=function(){return{x:0,y:0}},g.prototype._processLayoutQueue=function(a){for(var b=0,c=a.length;c>b;b++){var d=a[b];this._positionItem(d.item,d.x,d.y,d.isInstant)}},g.prototype._positionItem=function(a,b,c,d){d?a.goTo(b,c):a.moveTo(b,c)},g.prototype._postLayout=function(){this.resizeContainer()},g.prototype.resizeContainer=function(){if(this.options.isResizingContainer){var a=this._getContainerSize();a&&(this._setContainerMeasure(a.width,!0),this._setContainerMeasure(a.height,!1))}},g.prototype._getContainerSize=j,g.prototype._setContainerMeasure=function(a,b){if(void 0!==a){var c=this.size;c.isBorderBox&&(a+=b?c.paddingLeft+c.paddingRight+c.borderLeftWidth+c.borderRightWidth:c.paddingBottom+c.paddingTop+c.borderTopWidth+c.borderBottomWidth),a=Math.max(a,0),this.element.style[b?"width":"height"]=a+"px"}},g.prototype._emitCompleteOnItems=function(a,b){function c(){e.emitEvent(a+"Complete",[b])}
42
- function d(){g++,g===f&&c()}
43
- var e=this,f=b.length;if(!b||!f)return void c();for(var g=0,h=0,i=b.length;i>h;h++){var j=b[h];j.once(a,d)}},g.prototype.ignore=function(a){var b=this.getItem(a);b&&(b.isIgnored=!0)},g.prototype.unignore=function(a){var b=this.getItem(a);b&&delete b.isIgnored},g.prototype.stamp=function(a){if(a=this._find(a)){this.stamps=this.stamps.concat(a);for(var b=0,c=a.length;c>b;b++){var d=a[b];this.ignore(d)}}},g.prototype.unstamp=function(a){if(a=this._find(a))for(var b=0,c=a.length;c>b;b++){var d=a[b];e.removeFrom(this.stamps,d),this.unignore(d)}},g.prototype._find=function(a){return a?("string"==typeof a&&(a=this.element.querySelectorAll(a)),a=e.makeArray(a)):void 0},g.prototype._manageStamps=function(){if(this.stamps&&this.stamps.length){this._getBoundingRect();for(var a=0,b=this.stamps.length;b>a;a++){var c=this.stamps[a];this._manageStamp(c)}}},g.prototype._getBoundingRect=function(){var a=this.element.getBoundingClientRect(),b=this.size;this._boundingRect={left:a.left+b.paddingLeft+b.borderLeftWidth,top:a.top+b.paddingTop+b.borderTopWidth,right:a.right-(b.paddingRight+b.borderRightWidth),bottom:a.bottom-(b.paddingBottom+b.borderBottomWidth)}},g.prototype._manageStamp=j,g.prototype._getElementOffset=function(a){var b=a.getBoundingClientRect(),c=this._boundingRect,e=d(a),f={left:b.left-c.left-e.marginLeft,top:b.top-c.top-e.marginTop,right:c.right-b.right-e.marginRight,bottom:c.bottom-b.bottom-e.marginBottom};return f},g.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},g.prototype.bindResize=function(){this.isResizeBound||(b.bind(a,"resize",this),this.isResizeBound=!0)},g.prototype.unbindResize=function(){this.isResizeBound&&b.unbind(a,"resize",this),this.isResizeBound=!1},g.prototype.onresize=function(){function a(){b.resize(),delete b.resizeTimeout}
44
- this.resizeTimeout&&clearTimeout(this.resizeTimeout);var b=this;this.resizeTimeout=setTimeout(a,100)},g.prototype.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},g.prototype.needsResizeLayout=function(){var a=d(this.element),b=this.size&&a;return b&&a.innerWidth!==this.size.innerWidth},g.prototype.addItems=function(a){var b=this._itemize(a);return b.length&&(this.items=this.items.concat(b)),b},g.prototype.appended=function(a){var b=this.addItems(a);b.length&&(this.layoutItems(b,!0),this.reveal(b))},g.prototype.prepended=function(a){var b=this._itemize(a);if(b.length){var c=this.items.slice(0);this.items=b.concat(c),this._resetLayout(),this._manageStamps(),this.layoutItems(b,!0),this.reveal(b),this.layoutItems(c)}},g.prototype.reveal=function(a){this._emitCompleteOnItems("reveal",a);for(var b=a&&a.length,c=0;b&&b>c;c++){var d=a[c];d.reveal()}},g.prototype.hide=function(a){this._emitCompleteOnItems("hide",a);for(var b=a&&a.length,c=0;b&&b>c;c++){var d=a[c];d.hide()}},g.prototype.revealItemElements=function(a){var b=this.getItems(a);this.reveal(b)},g.prototype.hideItemElements=function(a){var b=this.getItems(a);this.hide(b)},g.prototype.getItem=function(a){for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];if(d.element===a)return d}},g.prototype.getItems=function(a){a=e.makeArray(a);for(var b=[],c=0,d=a.length;d>c;c++){var f=a[c],g=this.getItem(f);g&&b.push(g)}
45
- return b},g.prototype.remove=function(a){var b=this.getItems(a);if(this._emitCompleteOnItems("remove",b),b&&b.length)for(var c=0,d=b.length;d>c;c++){var f=b[c];f.remove(),e.removeFrom(this.items,f)}},g.prototype.destroy=function(){var a=this.element.style;a.height="",a.position="",a.width="";for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];d.destroy()}
46
- this.unbindResize();var e=this.element.outlayerGUID;delete l[e],delete this.element.outlayerGUID,i&&i.removeData(this.element,this.constructor.namespace)},g.data=function(a){a=e.getQueryElement(a);var b=a&&a.outlayerGUID;return b&&l[b]},g.create=function(a,b){function c(){g.apply(this,arguments)}
47
- return Object.create?c.prototype=Object.create(g.prototype):e.extend(c.prototype,g.prototype),c.prototype.constructor=c,c.defaults=e.extend({},g.defaults),e.extend(c.defaults,b),c.prototype.settings={},c.namespace=a,c.data=g.data,c.Item=function(){f.apply(this,arguments)},c.Item.prototype=new f,e.htmlInit(c,a),i&&i.bridget&&i.bridget(a,c),c},g.Item=f,g}),function(a,b){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size","fizzy-ui-utils/utils"],b):"object"==typeof exports?module.exports=b(require("outlayer"),require("get-size"),require("fizzy-ui-utils")):a.Masonry=b(a.Outlayer,a.getSize,a.fizzyUIUtils)}(window,function(a,b,c){var d=a.create("masonry");return d.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns();var a=this.cols;for(this.colYs=[];a--;)this.colYs.push(0);this.maxY=0},d.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var a=this.items[0],c=a&&a.element;this.columnWidth=c&&b(c).outerWidth||this.containerWidth}
48
- var d=this.columnWidth+=this.gutter,e=this.containerWidth+this.gutter,f=e/d,g=d-e%d,h=g&&1>g?"round":"floor";f=Math[h](f),this.cols=Math.max(f,1)},d.prototype.getContainerWidth=function(){var a=this.options.isFitWidth?this.element.parentNode:this.element,c=b(a);this.containerWidth=c&&c.innerWidth},d.prototype._getItemLayoutPosition=function(a){a.getSize();var b=a.size.outerWidth%this.columnWidth,d=b&&1>b?"round":"ceil",e=Math[d](a.size.outerWidth/this.columnWidth);e=Math.min(e,this.cols);for(var f=this._getColGroup(e),g=Math.min.apply(Math,f),h=c.indexOf(f,g),i={x:this.columnWidth*h,y:g},j=g+a.size.outerHeight,k=this.cols+1-f.length,l=0;k>l;l++)this.colYs[h+l]=j;return i},d.prototype._getColGroup=function(a){if(2>a)return this.colYs;for(var b=[],c=this.cols+1-a,d=0;c>d;d++){var e=this.colYs.slice(d,d+a);b[d]=Math.max.apply(Math,e)}
49
- return b},d.prototype._manageStamp=function(a){var c=b(a),d=this._getElementOffset(a),e=this.options.isOriginLeft?d.left:d.right,f=e+c.outerWidth,g=Math.floor(e/this.columnWidth);g=Math.max(0,g);var h=Math.floor(f/this.columnWidth);h-=f%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var i=(this.options.isOriginTop?d.top:d.bottom)+c.outerHeight,j=g;h>=j;j++)this.colYs[j]=Math.max(i,this.colYs[j])},d.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var a={height:this.maxY};return this.options.isFitWidth&&(a.width=this._getContainerFitWidth()),a},d.prototype._getContainerFitWidth=function(){for(var a=0,b=this.cols;--b&&0===this.colYs[b];)a++;return(this.cols-a)*this.columnWidth-this.gutter},d.prototype.needsResizeLayout=function(){var a=this.containerWidth;return this.getContainerWidth(),a!==this.containerWidth},d})
50
- function cffAddMasonry($self){if(jQuery(window).width()>780||$self.hasClass('masonry-2-mobile')){$self.addClass('cff-masonry cff-masonry-js').removeClass('cff-disable-masonry');if($self.find('.cff-item').length){$self.masonry({itemSelector:'.cff-new, .cff-item, .cff-likebox'});$self.find('.cff-item').each(function(){jQuery(this).css('margin-bottom','15px')})}else if($self.find('.cff-album-item').length){$self.masonry({itemSelector:'.cff-album-item'})}}else{$self.addClass('cff-disable-masonry')}}}
51
- function cff_init(){jQuery('.cff-likebox iframe').each(function(){var $likebox=jQuery(this),likeboxWidth=$likebox.attr('data-likebox-width'),cffFeedWidth=$likebox.parent().width();if(likeboxWidth=='')likeboxWidth=340;if(cffFeedWidth<likeboxWidth)likeboxWidth=cffFeedWidth;$likebox.attr('src','https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2F'+$likebox.attr('data-likebox-id')+'%2F&tabs&width='+likeboxWidth+'&small_header='+$likebox.attr('data-likebox-header')+'&adapt_container_width=true&hide_cover='+$likebox.attr('data-hide-cover')+'&hide_cta='+$likebox.attr('data-hide-cta')+'&show_facepile='+$likebox.attr('data-likebox-faces')+'&locale='+$likebox.attr('data-locale'))});jQuery('#cff .cff-item').each(function(){var $self=jQuery(this);if($self.find('.cff-viewpost-facebook').parent('p').length){$self.find('.cff-viewpost-facebook').unwrap('p')}
52
- if($self.find('.cff-author').parent('p').length){$self.find('.cff-author').eq(1).unwrap('p');$self.find('.cff-author').eq(1).remove()}
53
- if($self.find('#cff .cff-link').parent('p').length){$self.find('#cff .cff-link').unwrap('p')}
54
- var expanded=!1,$post_text=$self.find('.cff-post-text .cff-text'),text_limit=$self.closest('#cff').attr('data-char');if(typeof text_limit==='undefined'||text_limit=='')text_limit=99999;if($post_text.find('a.cff-post-text-link').length)$post_text=$self.find('.cff-post-text .cff-text a');var full_text=$post_text.html();if(full_text==undefined)full_text='';var cff_trunc_regx=new RegExp(/(<[^>]*>)/g);var cff_trunc_counter=0;full_text_arr=full_text.split(cff_trunc_regx);for(var i=0,len=full_text_arr.length;i<len;i++){if(!(cff_trunc_regx.test(full_text_arr[i]))){if(cff_trunc_counter==text_limit){full_text_arr.splice(i,1);continue}
55
- cff_trunc_counter=cff_trunc_counter+full_text_arr[i].length;if(cff_trunc_counter>text_limit){var diff=cff_trunc_counter-text_limit;full_text_arr[i]=full_text_arr[i].slice(0,-diff);cff_trunc_counter=text_limit;if(full_text.length>text_limit)$self.find('.cff-expand').show()}}}
56
- var short_text=full_text_arr.join('');short_text=short_text.replace(/(<(?!\/)[^>]+>)+(<\/[^>]+>)/g,"");var lastChar=short_text.substr(short_text.length-1);if(lastChar=='<')short_text=short_text.substring(0,short_text.length-1);short_text=short_text.replace(/(<br>\s*)+$/,'');short_text=short_text.replace(/(<img class="cff-linebreak">\s*)+$/,'');$post_text.html(short_text);$self.find('.cff-expand a').unbind('click').bind('click',function(e){e.preventDefault();var $expand=jQuery(this),$more=$expand.find('.cff-more'),$less=$expand.find('.cff-less');if(expanded==!1){$post_text.html(full_text);expanded=!0;$more.hide();$less.show()}else{$post_text.html(short_text);expanded=!1;$more.show();$less.hide()}
57
- cffLinkHashtags();$post_text.find('a').attr('target','_blank')});$post_text.find('a').add($self.find('.cff-post-desc a')).attr({'target':'_blank','rel':'nofollow'});$sharedLink=$self.find('.cff-shared-link');if($sharedLink.text()==''){$sharedLink.remove()}
58
- function cffLinkHashtags(){var cffTextStr=$self.find('.cff-text').html(),cffDescStr=$self.find('.cff-post-desc').html(),regex=/(^|\s)#(\w*[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]+\w*)/gi,linkcolor=$self.find('.cff-text').attr('data-color');function replacer(hash){var replacementString=jQuery.trim(hash);if(/^#[0-9A-F]{6}$/i.test(replacementString)){return replacementString}else{return' <a href="https://www.facebook.com/hashtag/'+replacementString.substring(1)+'" target="_blank" rel="nofollow" style="color:#'+linkcolor+'">'+replacementString+'</a>'}}
59
- if(typeof cfflinkhashtags=='undefined')cfflinkhashtags='true';if(cfflinkhashtags=='true'){var $cffText=$self.find('.cff-text');if($cffText.length>0){cffTextStr=cffTextStr.replace(/<br>/g,"<br> ");$cffText.html(cffTextStr.replace(regex,replacer))}}
60
- if($self.find('.cff-post-desc').length>0)$self.find('.cff-post-desc').html(cffDescStr.replace(regex,replacer))}
61
- cffLinkHashtags();$self.find('.cff-text a').add($self.find('.cff-post-desc a')).attr({'target':'_blank','rel':'nofollow noopener noreferrer'});$self.find('.cff-share-link').unbind().bind('click',function(e){e.preventDefault();var $cffShareTooltip=$self.find('.cff-share-tooltip')
62
- if($cffShareTooltip.is(':visible')){$cffShareTooltip.hide().find('a').removeClass('cff-show')}else{$cffShareTooltip.show();var time=0;$cffShareTooltip.find('a').each(function(){var $cffShareIcon=jQuery(this);setTimeout(function(){$cffShareIcon.addClass('cff-show')},time);time+=20})}})});jQuery('.cff-wrapper').each(function(){var $cff=jQuery(this).find('#cff');if($cff.hasClass('cff-masonry-js')){cffAddMasonry($cff);setTimeout(function(){cffAddMasonry($cff)},500);jQuery(window).resize(function(){setTimeout(function(){cffAddMasonry($cff)},500)});if($cff.find('.cff-credit').length)$cff.css('padding-bottom',30)}})}
63
  cff_init()}
1
+ var cff_js_exists=(typeof cff_js_exists!=='undefined')?!0:!1;if(!cff_js_exists){if(jQuery('#cff.cff-masonry-js').length){!function(a){function b(){}
2
+ function c(a){function c(b){b.prototype.option||(b.prototype.option=function(b){a.isPlainObject(b)&&(this.options=a.extend(!0,this.options,b))})}
3
+ function e(b,c){a.fn[b]=function(e){if("string"==typeof e){for(var g=d.call(arguments,1),h=0,i=this.length;i>h;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}
4
+ return this}
5
+ return this.each(function(){var d=a.data(this,b);d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d))})}}
6
+ if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}
7
+ var d=Array.prototype.slice;"function"==typeof define&&define.amd?define("jquery-bridget/jquery.bridget",["jquery"],c):c("object"==typeof exports?require("jquery"):a.jQuery)}(window),function(a){function b(b){var c=a.event;return c.target=c.target||c.srcElement||b,c}
8
+ var c=document.documentElement,d=function(){};c.addEventListener?d=function(a,b,c){a.addEventListener(b,c,!1)}:c.attachEvent&&(d=function(a,c,d){a[c+d]=d.handleEvent?function(){var c=b(a);d.handleEvent.call(d,c)}:function(){var c=b(a);d.call(a,c)},a.attachEvent("on"+c,a[c+d])});var e=function(){};c.removeEventListener?e=function(a,b,c){a.removeEventListener(b,c,!1)}:c.detachEvent&&(e=function(a,b,c){a.detachEvent("on"+b,a[b+c]);try{delete a[b+c]}catch(d){a[b+c]=void 0}});var f={bind:d,unbind:e};"function"==typeof define&&define.amd?define("eventie/eventie",f):"object"==typeof exports?module.exports=f:a.eventie=f}(window),function(){function a(){}
9
+ function b(a,b){for(var c=a.length;c--;)if(a[c].listener===b)return c;return-1}
10
+ function c(a){return function(){return this[a].apply(this,arguments)}}
11
+ var d=a.prototype,e=this,f=e.EventEmitter;d.getListeners=function(a){var b,c,d=this._getEvents();if(a instanceof RegExp){b={};for(c in d)d.hasOwnProperty(c)&&a.test(c)&&(b[c]=d[c])}else b=d[a]||(d[a]=[]);return b},d.flattenListeners=function(a){var b,c=[];for(b=0;b<a.length;b+=1)c.push(a[b].listener);return c},d.getListenersAsObject=function(a){var b,c=this.getListeners(a);return c instanceof Array&&(b={},b[a]=c),b||c},d.addListener=function(a,c){var d,e=this.getListenersAsObject(a),f="object"==typeof c;for(d in e)e.hasOwnProperty(d)&&-1===b(e[d],c)&&e[d].push(f?c:{listener:c,once:!1});return this},d.on=c("addListener"),d.addOnceListener=function(a,b){return this.addListener(a,{listener:b,once:!0})},d.once=c("addOnceListener"),d.defineEvent=function(a){return this.getListeners(a),this},d.defineEvents=function(a){for(var b=0;b<a.length;b+=1)this.defineEvent(a[b]);return this},d.removeListener=function(a,c){var d,e,f=this.getListenersAsObject(a);for(e in f)f.hasOwnProperty(e)&&(d=b(f[e],c),-1!==d&&f[e].splice(d,1));return this},d.off=c("removeListener"),d.addListeners=function(a,b){return this.manipulateListeners(!1,a,b)},d.removeListeners=function(a,b){return this.manipulateListeners(!0,a,b)},d.manipulateListeners=function(a,b,c){var d,e,f=a?this.removeListener:this.addListener,g=a?this.removeListeners:this.addListeners;if("object"!=typeof b||b instanceof RegExp)for(d=c.length;d--;)f.call(this,b,c[d]);else for(d in b)b.hasOwnProperty(d)&&(e=b[d])&&("function"==typeof e?f.call(this,d,e):g.call(this,d,e));return this},d.removeEvent=function(a){var b,c=typeof a,d=this._getEvents();if("string"===c)delete d[a];else if(a instanceof RegExp)for(b in d)d.hasOwnProperty(b)&&a.test(b)&&delete d[b];else delete this._events;return this},d.removeAllListeners=c("removeEvent"),d.emitEvent=function(a,b){var c,d,e,f,g=this.getListenersAsObject(a);for(e in g)if(g.hasOwnProperty(e))for(d=g[e].length;d--;)c=g[e][d],c.once===!0&&this.removeListener(a,c.listener),f=c.listener.apply(this,b||[]),f===this._getOnceReturnValue()&&this.removeListener(a,c.listener);return this},d.trigger=c("emitEvent"),d.emit=function(a){var b=Array.prototype.slice.call(arguments,1);return this.emitEvent(a,b)},d.setOnceReturnValue=function(a){return this._onceReturnValue=a,this},d._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},d._getEvents=function(){return this._events||(this._events={})},a.noConflict=function(){return e.EventEmitter=f,a},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return a}):"object"==typeof module&&module.exports?module.exports=a:e.EventEmitter=a}.call(this),function(a){function b(a){if(a){if("string"==typeof d[a])return a;a=a.charAt(0).toUpperCase()+a.slice(1);for(var b,e=0,f=c.length;f>e;e++)if(b=c[e]+a,"string"==typeof d[b])return b}}
12
+ var c="Webkit Moz ms Ms O".split(" "),d=document.documentElement.style;"function"==typeof define&&define.amd?define("get-style-property/get-style-property",[],function(){return b}):"object"==typeof exports?module.exports=b:a.getStyleProperty=b}(window),function(a){function b(a){var b=parseFloat(a),c=-1===a.indexOf("%")&&!isNaN(b);return c&&b}
13
+ function c(){}
14
+ function d(){for(var a={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},b=0,c=g.length;c>b;b++){var d=g[b];a[d]=0}
15
+ return a}
16
+ function e(c){function e(){if(!m){m=!0;var d=a.getComputedStyle;if(j=function(){var a=d?function(a){return d(a,null)}:function(a){return a.currentStyle};return function(b){var c=a(b);return c||f("Style returned "+c+". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"),c}}(),k=c("boxSizing")){var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style[k]="border-box";var g=document.body||document.documentElement;g.appendChild(e);var h=j(e);l=200===b(h.width),g.removeChild(e)}}}
17
+ function h(a){if(e(),"string"==typeof a&&(a=document.querySelector(a)),a&&"object"==typeof a&&a.nodeType){var c=j(a);if("none"===c.display)return d();var f={};f.width=a.offsetWidth,f.height=a.offsetHeight;for(var h=f.isBorderBox=!(!k||!c[k]||"border-box"!==c[k]),m=0,n=g.length;n>m;m++){var o=g[m],p=c[o];p=i(a,p);var q=parseFloat(p);f[o]=isNaN(q)?0:q}
18
+ var r=f.paddingLeft+f.paddingRight,s=f.paddingTop+f.paddingBottom,t=f.marginLeft+f.marginRight,u=f.marginTop+f.marginBottom,v=f.borderLeftWidth+f.borderRightWidth,w=f.borderTopWidth+f.borderBottomWidth,x=h&&l,y=b(c.width);y!==!1&&(f.width=y+(x?0:r+v));var z=b(c.height);return z!==!1&&(f.height=z+(x?0:s+w)),f.innerWidth=f.width-(r+v),f.innerHeight=f.height-(s+w),f.outerWidth=f.width+t,f.outerHeight=f.height+u,f}}
19
+ function i(b,c){if(a.getComputedStyle||-1===c.indexOf("%"))return c;var d=b.style,e=d.left,f=b.runtimeStyle,g=f&&f.left;return g&&(f.left=b.currentStyle.left),d.left=c,c=d.pixelLeft,d.left=e,g&&(f.left=g),c}
20
+ var j,k,l,m=!1;return h}
21
+ var f="undefined"==typeof console?c:function(a){console.error(a)},g=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];"function"==typeof define&&define.amd?define("get-size/get-size",["get-style-property/get-style-property"],e):"object"==typeof exports?module.exports=e(require("desandro-get-style-property")):a.getSize=e(a.getStyleProperty)}(window),function(a){function b(a){"function"==typeof a&&(b.isReady?a():g.push(a))}
22
+ function c(a){var c="readystatechange"===a.type&&"complete"!==f.readyState;b.isReady||c||d()}
23
+ function d(){b.isReady=!0;for(var a=0,c=g.length;c>a;a++){var d=g[a];d()}}
24
+ function e(e){return"complete"===f.readyState?d():(e.bind(f,"DOMContentLoaded",c),e.bind(f,"readystatechange",c),e.bind(a,"load",c)),b}
25
+ var f=a.document,g=[];b.isReady=!1,"function"==typeof define&&define.amd?define("doc-ready/doc-ready",["eventie/eventie"],e):"object"==typeof exports?module.exports=e(require("eventie")):a.docReady=e(a.eventie)}(window),function(a){function b(a,b){return a[g](b)}
26
+ function c(a){if(!a.parentNode){var b=document.createDocumentFragment();b.appendChild(a)}}
27
+ function d(a,b){c(a);for(var d=a.parentNode.querySelectorAll(b),e=0,f=d.length;f>e;e++)if(d[e]===a)return!0;return!1}
28
+ function e(a,d){return c(a),b(a,d)}
29
+ var f,g=function(){if(a.matches)return"matches";if(a.matchesSelector)return"matchesSelector";for(var b=["webkit","moz","ms","o"],c=0,d=b.length;d>c;c++){var e=b[c],f=e+"MatchesSelector";if(a[f])return f}}();if(g){var h=document.createElement("div"),i=b(h,"div");f=i?b:e}else f=d;"function"==typeof define&&define.amd?define("matches-selector/matches-selector",[],function(){return f}):"object"==typeof exports?module.exports=f:window.matchesSelector=f}(Element.prototype),function(a,b){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["doc-ready/doc-ready","matches-selector/matches-selector"],function(c,d){return b(a,c,d)}):"object"==typeof exports?module.exports=b(a,require("doc-ready"),require("desandro-matches-selector")):a.fizzyUIUtils=b(a,a.docReady,a.matchesSelector)}(window,function(a,b,c){var d={};d.extend=function(a,b){for(var c in b)a[c]=b[c];return a},d.modulo=function(a,b){return(a%b+b)%b};var e=Object.prototype.toString;d.isArray=function(a){return"[object Array]"==e.call(a)},d.makeArray=function(a){var b=[];if(d.isArray(a))b=a;else if(a&&"number"==typeof a.length)for(var c=0,e=a.length;e>c;c++)b.push(a[c]);else b.push(a);return b},d.indexOf=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},d.removeFrom=function(a,b){var c=d.indexOf(a,b);-1!=c&&a.splice(c,1)},d.isElement="function"==typeof HTMLElement||"object"==typeof HTMLElement?function(a){return a instanceof HTMLElement}:function(a){return a&&"object"==typeof a&&1==a.nodeType&&"string"==typeof a.nodeName},d.setText=function(){function a(a,c){b=b||(void 0!==document.documentElement.textContent?"textContent":"innerText"),a[b]=c}
30
+ var b;return a}(),d.getParent=function(a,b){for(;a!=document.body;)if(a=a.parentNode,c(a,b))return a},d.getQueryElement=function(a){return"string"==typeof a?document.querySelector(a):a},d.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},d.filterFindElements=function(a,b){a=d.makeArray(a);for(var e=[],f=0,g=a.length;g>f;f++){var h=a[f];if(d.isElement(h))if(b){c(h,b)&&e.push(h);for(var i=h.querySelectorAll(b),j=0,k=i.length;k>j;j++)e.push(i[j])}else e.push(h)}
31
+ return e},d.debounceMethod=function(a,b,c){var d=a.prototype[b],e=b+"Timeout";a.prototype[b]=function(){var a=this[e];a&&clearTimeout(a);var b=arguments,f=this;this[e]=setTimeout(function(){d.apply(f,b),delete f[e]},c||100)}},d.toDashed=function(a){return a.replace(/(.)([A-Z])/g,function(a,b,c){return b+"-"+c}).toLowerCase()};var f=a.console;return d.htmlInit=function(c,e){b(function(){for(var b=d.toDashed(e),g=document.querySelectorAll(".js-"+b),h="data-"+b+"-options",i=0,j=g.length;j>i;i++){var k,l=g[i],m=l.getAttribute(h);try{k=m&&JSON.parse(m)}catch(n){f&&f.error("Error parsing "+h+" on "+l.nodeName.toLowerCase()+(l.id?"#"+l.id:"")+": "+n);continue}
32
+ var o=new c(l,k),p=a.jQuery;p&&p.data(l,e,o)}})},d}),function(a,b){"function"==typeof define&&define.amd?define("outlayer/item",["eventEmitter/EventEmitter","get-size/get-size","get-style-property/get-style-property","fizzy-ui-utils/utils"],function(c,d,e,f){return b(a,c,d,e,f)}):"object"==typeof exports?module.exports=b(a,require("wolfy87-eventemitter"),require("get-size"),require("desandro-get-style-property"),require("fizzy-ui-utils")):(a.Outlayer={},a.Outlayer.Item=b(a,a.EventEmitter,a.getSize,a.getStyleProperty,a.fizzyUIUtils))}(window,function(a,b,c,d,e){function f(a){for(var b in a)return!1;return b=null,!0}
33
+ function g(a,b){a&&(this.element=a,this.layout=b,this.position={x:0,y:0},this._create())}
34
+ var h=a.getComputedStyle,i=h?function(a){return h(a,null)}:function(a){return a.currentStyle},j=d("transition"),k=d("transform"),l=j&&k,m=!!d("perspective"),n={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"}[j],o=["transform","transition","transitionDuration","transitionProperty"],p=function(){for(var a={},b=0,c=o.length;c>b;b++){var e=o[b],f=d(e);f&&f!==e&&(a[e]=f)}
35
+ return a}();e.extend(g.prototype,b.prototype),g.prototype._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},g.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},g.prototype.getSize=function(){this.size=c(this.element)},g.prototype.css=function(a){var b=this.element.style;for(var c in a){var d=p[c]||c;b[d]=a[c]}},g.prototype.getPosition=function(){var a=i(this.element),b=this.layout.options,c=b.isOriginLeft,d=b.isOriginTop,e=parseInt(a[c?"left":"right"],10),f=parseInt(a[d?"top":"bottom"],10);e=isNaN(e)?0:e,f=isNaN(f)?0:f;var g=this.layout.size;e-=c?g.paddingLeft:g.paddingRight,f-=d?g.paddingTop:g.paddingBottom,this.position.x=e,this.position.y=f},g.prototype.layoutPosition=function(){var a=this.layout.size,b=this.layout.options,c={},d=b.isOriginLeft?"paddingLeft":"paddingRight",e=b.isOriginLeft?"left":"right",f=b.isOriginLeft?"right":"left",g=this.position.x+a[d];g=b.percentPosition&&!b.isHorizontal?g/a.width*100+"%":g+"px",c[e]=g,c[f]="";var h=b.isOriginTop?"paddingTop":"paddingBottom",i=b.isOriginTop?"top":"bottom",j=b.isOriginTop?"bottom":"top",k=this.position.y+a[h];k=b.percentPosition&&b.isHorizontal?k/a.height*100+"%":k+"px",c[i]=k,c[j]="",this.css(c),this.emitEvent("layout",[this])};var q=m?function(a,b){return"translate3d("+a+"px, "+b+"px, 0)"}:function(a,b){return"translate("+a+"px, "+b+"px)"};g.prototype._transitionTo=function(a,b){this.getPosition();var c=this.position.x,d=this.position.y,e=parseInt(a,10),f=parseInt(b,10),g=e===this.position.x&&f===this.position.y;if(this.setPosition(a,b),g&&!this.isTransitioning)return void this.layoutPosition();var h=a-c,i=b-d,j={},k=this.layout.options;h=k.isOriginLeft?h:-h,i=k.isOriginTop?i:-i,j.transform=q(h,i),this.transition({to:j,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},g.prototype.goTo=function(a,b){this.setPosition(a,b),this.layoutPosition()},g.prototype.moveTo=l?g.prototype._transitionTo:g.prototype.goTo,g.prototype.setPosition=function(a,b){this.position.x=parseInt(a,10),this.position.y=parseInt(b,10)},g.prototype._nonTransition=function(a){this.css(a.to),a.isCleaning&&this._removeStyles(a.to);for(var b in a.onTransitionEnd)a.onTransitionEnd[b].call(this)},g.prototype._transition=function(a){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(a);var b=this._transn;for(var c in a.onTransitionEnd)b.onEnd[c]=a.onTransitionEnd[c];for(c in a.to)b.ingProperties[c]=!0,a.isCleaning&&(b.clean[c]=!0);if(a.from){this.css(a.from);var d=this.element.offsetHeight;d=null}
36
+ this.enableTransition(a.to),this.css(a.to),this.isTransitioning=!0};var r=k&&e.toDashed(k)+",opacity";g.prototype.enableTransition=function(){this.isTransitioning||(this.css({transitionProperty:r,transitionDuration:this.layout.options.transitionDuration}),this.element.addEventListener(n,this,!1))},g.prototype.transition=g.prototype[j?"_transition":"_nonTransition"],g.prototype.onwebkitTransitionEnd=function(a){this.ontransitionend(a)},g.prototype.onotransitionend=function(a){this.ontransitionend(a)};var s={"-webkit-transform":"transform","-moz-transform":"transform","-o-transform":"transform"};g.prototype.ontransitionend=function(a){if(a.target===this.element){var b=this._transn,c=s[a.propertyName]||a.propertyName;if(delete b.ingProperties[c],f(b.ingProperties)&&this.disableTransition(),c in b.clean&&(this.element.style[a.propertyName]="",delete b.clean[c]),c in b.onEnd){var d=b.onEnd[c];d.call(this),delete b.onEnd[c]}
37
+ this.emitEvent("transitionEnd",[this])}},g.prototype.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(n,this,!1),this.isTransitioning=!1},g.prototype._removeStyles=function(a){var b={};for(var c in a)b[c]="";this.css(b)};var t={transitionProperty:"",transitionDuration:""};return g.prototype.removeTransitionStyles=function(){this.css(t)},g.prototype.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},g.prototype.remove=function(){if(!j||!parseFloat(this.layout.options.transitionDuration))return void this.removeElem();var a=this;this.once("transitionEnd",function(){a.removeElem()}),this.hide()},g.prototype.reveal=function(){delete this.isHidden,this.css({display:""});var a=this.layout.options,b={},c=this.getHideRevealTransitionEndProperty("visibleStyle");b[c]=this.onRevealTransitionEnd,this.transition({from:a.hiddenStyle,to:a.visibleStyle,isCleaning:!0,onTransitionEnd:b})},g.prototype.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},g.prototype.getHideRevealTransitionEndProperty=function(a){var b=this.layout.options[a];if(b.opacity)return"opacity";for(var c in b)return c},g.prototype.hide=function(){this.isHidden=!0,this.css({display:""});var a=this.layout.options,b={},c=this.getHideRevealTransitionEndProperty("hiddenStyle");b[c]=this.onHideTransitionEnd,this.transition({from:a.visibleStyle,to:a.hiddenStyle,isCleaning:!0,onTransitionEnd:b})},g.prototype.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},g.prototype.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},g}),function(a,b){"function"==typeof define&&define.amd?define("outlayer/outlayer",["eventie/eventie","eventEmitter/EventEmitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(c,d,e,f,g){return b(a,c,d,e,f,g)}):"object"==typeof exports?module.exports=b(a,require("eventie"),require("wolfy87-eventemitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):a.Outlayer=b(a,a.eventie,a.EventEmitter,a.getSize,a.fizzyUIUtils,a.Outlayer.Item)}(window,function(a,b,c,d,e,f){function g(a,b){var c=e.getQueryElement(a);if(!c)return void(h&&h.error("Bad element for "+this.constructor.namespace+": "+(c||a)));this.element=c,i&&(this.$element=i(this.element)),this.options=e.extend({},this.constructor.defaults),this.option(b);var d=++k;this.element.outlayerGUID=d,l[d]=this,this._create(),this.options.isInitLayout&&this.layout()}
38
+ var h=a.console,i=a.jQuery,j=function(){},k=0,l={};return g.namespace="outlayer",g.Item=f,g.defaults={containerStyle:{position:"relative"},isInitLayout:!0,isOriginLeft:!0,isOriginTop:!0,isResizeBound:!0,isResizingContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}},e.extend(g.prototype,c.prototype),g.prototype.option=function(a){e.extend(this.options,a)},g.prototype._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),e.extend(this.element.style,this.options.containerStyle),this.options.isResizeBound&&this.bindResize()},g.prototype.reloadItems=function(){this.items=this._itemize(this.element.children)},g.prototype._itemize=function(a){for(var b=this._filterFindItemElements(a),c=this.constructor.Item,d=[],e=0,f=b.length;f>e;e++){var g=b[e],h=new c(g,this);d.push(h)}
39
+ return d},g.prototype._filterFindItemElements=function(a){return e.filterFindElements(a,this.options.itemSelector)},g.prototype.getItemElements=function(){for(var a=[],b=0,c=this.items.length;c>b;b++)a.push(this.items[b].element);return a},g.prototype.layout=function(){this._resetLayout(),this._manageStamps();var a=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;this.layoutItems(this.items,a),this._isLayoutInited=!0},g.prototype._init=g.prototype.layout,g.prototype._resetLayout=function(){this.getSize()},g.prototype.getSize=function(){this.size=d(this.element)},g.prototype._getMeasurement=function(a,b){var c,f=this.options[a];f?("string"==typeof f?c=this.element.querySelector(f):e.isElement(f)&&(c=f),this[a]=c?d(c)[b]:f):this[a]=0},g.prototype.layoutItems=function(a,b){a=this._getItemsForLayout(a),this._layoutItems(a,b),this._postLayout()},g.prototype._getItemsForLayout=function(a){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c];e.isIgnored||b.push(e)}
40
+ return b},g.prototype._layoutItems=function(a,b){if(this._emitCompleteOnItems("layout",a),a&&a.length){for(var c=[],d=0,e=a.length;e>d;d++){var f=a[d],g=this._getItemLayoutPosition(f);g.item=f,g.isInstant=b||f.isLayoutInstant,c.push(g)}
41
+ this._processLayoutQueue(c)}},g.prototype._getItemLayoutPosition=function(){return{x:0,y:0}},g.prototype._processLayoutQueue=function(a){for(var b=0,c=a.length;c>b;b++){var d=a[b];this._positionItem(d.item,d.x,d.y,d.isInstant)}},g.prototype._positionItem=function(a,b,c,d){d?a.goTo(b,c):a.moveTo(b,c)},g.prototype._postLayout=function(){this.resizeContainer()},g.prototype.resizeContainer=function(){if(this.options.isResizingContainer){var a=this._getContainerSize();a&&(this._setContainerMeasure(a.width,!0),this._setContainerMeasure(a.height,!1))}},g.prototype._getContainerSize=j,g.prototype._setContainerMeasure=function(a,b){if(void 0!==a){var c=this.size;c.isBorderBox&&(a+=b?c.paddingLeft+c.paddingRight+c.borderLeftWidth+c.borderRightWidth:c.paddingBottom+c.paddingTop+c.borderTopWidth+c.borderBottomWidth),a=Math.max(a,0),this.element.style[b?"width":"height"]=a+"px"}},g.prototype._emitCompleteOnItems=function(a,b){function c(){e.emitEvent(a+"Complete",[b])}
42
+ function d(){g++,g===f&&c()}
43
+ var e=this,f=b.length;if(!b||!f)return void c();for(var g=0,h=0,i=b.length;i>h;h++){var j=b[h];j.once(a,d)}},g.prototype.ignore=function(a){var b=this.getItem(a);b&&(b.isIgnored=!0)},g.prototype.unignore=function(a){var b=this.getItem(a);b&&delete b.isIgnored},g.prototype.stamp=function(a){if(a=this._find(a)){this.stamps=this.stamps.concat(a);for(var b=0,c=a.length;c>b;b++){var d=a[b];this.ignore(d)}}},g.prototype.unstamp=function(a){if(a=this._find(a))for(var b=0,c=a.length;c>b;b++){var d=a[b];e.removeFrom(this.stamps,d),this.unignore(d)}},g.prototype._find=function(a){return a?("string"==typeof a&&(a=this.element.querySelectorAll(a)),a=e.makeArray(a)):void 0},g.prototype._manageStamps=function(){if(this.stamps&&this.stamps.length){this._getBoundingRect();for(var a=0,b=this.stamps.length;b>a;a++){var c=this.stamps[a];this._manageStamp(c)}}},g.prototype._getBoundingRect=function(){var a=this.element.getBoundingClientRect(),b=this.size;this._boundingRect={left:a.left+b.paddingLeft+b.borderLeftWidth,top:a.top+b.paddingTop+b.borderTopWidth,right:a.right-(b.paddingRight+b.borderRightWidth),bottom:a.bottom-(b.paddingBottom+b.borderBottomWidth)}},g.prototype._manageStamp=j,g.prototype._getElementOffset=function(a){var b=a.getBoundingClientRect(),c=this._boundingRect,e=d(a),f={left:b.left-c.left-e.marginLeft,top:b.top-c.top-e.marginTop,right:c.right-b.right-e.marginRight,bottom:c.bottom-b.bottom-e.marginBottom};return f},g.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},g.prototype.bindResize=function(){this.isResizeBound||(b.bind(a,"resize",this),this.isResizeBound=!0)},g.prototype.unbindResize=function(){this.isResizeBound&&b.unbind(a,"resize",this),this.isResizeBound=!1},g.prototype.onresize=function(){function a(){b.resize(),delete b.resizeTimeout}
44
+ this.resizeTimeout&&clearTimeout(this.resizeTimeout);var b=this;this.resizeTimeout=setTimeout(a,100)},g.prototype.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},g.prototype.needsResizeLayout=function(){var a=d(this.element),b=this.size&&a;return b&&a.innerWidth!==this.size.innerWidth},g.prototype.addItems=function(a){var b=this._itemize(a);return b.length&&(this.items=this.items.concat(b)),b},g.prototype.appended=function(a){var b=this.addItems(a);b.length&&(this.layoutItems(b,!0),this.reveal(b))},g.prototype.prepended=function(a){var b=this._itemize(a);if(b.length){var c=this.items.slice(0);this.items=b.concat(c),this._resetLayout(),this._manageStamps(),this.layoutItems(b,!0),this.reveal(b),this.layoutItems(c)}},g.prototype.reveal=function(a){this._emitCompleteOnItems("reveal",a);for(var b=a&&a.length,c=0;b&&b>c;c++){var d=a[c];d.reveal()}},g.prototype.hide=function(a){this._emitCompleteOnItems("hide",a);for(var b=a&&a.length,c=0;b&&b>c;c++){var d=a[c];d.hide()}},g.prototype.revealItemElements=function(a){var b=this.getItems(a);this.reveal(b)},g.prototype.hideItemElements=function(a){var b=this.getItems(a);this.hide(b)},g.prototype.getItem=function(a){for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];if(d.element===a)return d}},g.prototype.getItems=function(a){a=e.makeArray(a);for(var b=[],c=0,d=a.length;d>c;c++){var f=a[c],g=this.getItem(f);g&&b.push(g)}
45
+ return b},g.prototype.remove=function(a){var b=this.getItems(a);if(this._emitCompleteOnItems("remove",b),b&&b.length)for(var c=0,d=b.length;d>c;c++){var f=b[c];f.remove(),e.removeFrom(this.items,f)}},g.prototype.destroy=function(){var a=this.element.style;a.height="",a.position="",a.width="";for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];d.destroy()}
46
+ this.unbindResize();var e=this.element.outlayerGUID;delete l[e],delete this.element.outlayerGUID,i&&i.removeData(this.element,this.constructor.namespace)},g.data=function(a){a=e.getQueryElement(a);var b=a&&a.outlayerGUID;return b&&l[b]},g.create=function(a,b){function c(){g.apply(this,arguments)}
47
+ return Object.create?c.prototype=Object.create(g.prototype):e.extend(c.prototype,g.prototype),c.prototype.constructor=c,c.defaults=e.extend({},g.defaults),e.extend(c.defaults,b),c.prototype.settings={},c.namespace=a,c.data=g.data,c.Item=function(){f.apply(this,arguments)},c.Item.prototype=new f,e.htmlInit(c,a),i&&i.bridget&&i.bridget(a,c),c},g.Item=f,g}),function(a,b){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size","fizzy-ui-utils/utils"],b):"object"==typeof exports?module.exports=b(require("outlayer"),require("get-size"),require("fizzy-ui-utils")):a.Masonry=b(a.Outlayer,a.getSize,a.fizzyUIUtils)}(window,function(a,b,c){var d=a.create("masonry");return d.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns();var a=this.cols;for(this.colYs=[];a--;)this.colYs.push(0);this.maxY=0},d.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var a=this.items[0],c=a&&a.element;this.columnWidth=c&&b(c).outerWidth||this.containerWidth}
48
+ var d=this.columnWidth+=this.gutter,e=this.containerWidth+this.gutter,f=e/d,g=d-e%d,h=g&&1>g?"round":"floor";f=Math[h](f),this.cols=Math.max(f,1)},d.prototype.getContainerWidth=function(){var a=this.options.isFitWidth?this.element.parentNode:this.element,c=b(a);this.containerWidth=c&&c.innerWidth},d.prototype._getItemLayoutPosition=function(a){a.getSize();var b=a.size.outerWidth%this.columnWidth,d=b&&1>b?"round":"ceil",e=Math[d](a.size.outerWidth/this.columnWidth);e=Math.min(e,this.cols);for(var f=this._getColGroup(e),g=Math.min.apply(Math,f),h=c.indexOf(f,g),i={x:this.columnWidth*h,y:g},j=g+a.size.outerHeight,k=this.cols+1-f.length,l=0;k>l;l++)this.colYs[h+l]=j;return i},d.prototype._getColGroup=function(a){if(2>a)return this.colYs;for(var b=[],c=this.cols+1-a,d=0;c>d;d++){var e=this.colYs.slice(d,d+a);b[d]=Math.max.apply(Math,e)}
49
+ return b},d.prototype._manageStamp=function(a){var c=b(a),d=this._getElementOffset(a),e=this.options.isOriginLeft?d.left:d.right,f=e+c.outerWidth,g=Math.floor(e/this.columnWidth);g=Math.max(0,g);var h=Math.floor(f/this.columnWidth);h-=f%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var i=(this.options.isOriginTop?d.top:d.bottom)+c.outerHeight,j=g;h>=j;j++)this.colYs[j]=Math.max(i,this.colYs[j])},d.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var a={height:this.maxY};return this.options.isFitWidth&&(a.width=this._getContainerFitWidth()),a},d.prototype._getContainerFitWidth=function(){for(var a=0,b=this.cols;--b&&0===this.colYs[b];)a++;return(this.cols-a)*this.columnWidth-this.gutter},d.prototype.needsResizeLayout=function(){var a=this.containerWidth;return this.getContainerWidth(),a!==this.containerWidth},d})
50
+ function cffAddMasonry($self){if(jQuery(window).width()>780||$self.hasClass('masonry-2-mobile')){$self.addClass('cff-masonry cff-masonry-js').removeClass('cff-disable-masonry');if($self.find('.cff-item').length){$self.masonry({itemSelector:'.cff-new, .cff-item, .cff-likebox'});$self.find('.cff-item').each(function(){jQuery(this).css('margin-bottom','15px')})}else if($self.find('.cff-album-item').length){$self.masonry({itemSelector:'.cff-album-item'})}}else{$self.addClass('cff-disable-masonry')}}}
51
+ function cff_init(){jQuery('.cff-likebox iframe').each(function(){var $likebox=jQuery(this),likeboxWidth=$likebox.attr('data-likebox-width'),cffFeedWidth=$likebox.parent().width();if(likeboxWidth=='')likeboxWidth=340;if(cffFeedWidth<likeboxWidth)likeboxWidth=cffFeedWidth;$likebox.attr('src','https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2F'+$likebox.attr('data-likebox-id')+'%2F&tabs&width='+likeboxWidth+'&small_header='+$likebox.attr('data-likebox-header')+'&adapt_container_width=true&hide_cover='+$likebox.attr('data-hide-cover')+'&hide_cta='+$likebox.attr('data-hide-cta')+'&show_facepile='+$likebox.attr('data-likebox-faces')+'&locale='+$likebox.attr('data-locale'))});jQuery('#cff .cff-item').each(function(){var $self=jQuery(this);if($self.find('.cff-viewpost-facebook').parent('p').length){$self.find('.cff-viewpost-facebook').unwrap('p')}
52
+ if($self.find('.cff-author').parent('p').length){$self.find('.cff-author').eq(1).unwrap('p');$self.find('.cff-author').eq(1).remove()}
53
+ if($self.find('#cff .cff-link').parent('p').length){$self.find('#cff .cff-link').unwrap('p')}
54
+ var expanded=!1,$post_text=$self.find('.cff-post-text .cff-text'),text_limit=$self.closest('#cff').attr('data-char');if(typeof text_limit==='undefined'||text_limit=='')text_limit=99999;if($post_text.find('a.cff-post-text-link').length)$post_text=$self.find('.cff-post-text .cff-text a');var full_text=$post_text.html();if(full_text==undefined)full_text='';var cff_trunc_regx=new RegExp(/(<[^>]*>)/g);var cff_trunc_counter=0;full_text_arr=full_text.split(cff_trunc_regx);for(var i=0,len=full_text_arr.length;i<len;i++){if(!(cff_trunc_regx.test(full_text_arr[i]))){if(cff_trunc_counter==text_limit){full_text_arr.splice(i,1);continue}
55
+ cff_trunc_counter=cff_trunc_counter+full_text_arr[i].length;if(cff_trunc_counter>text_limit){var diff=cff_trunc_counter-text_limit;full_text_arr[i]=full_text_arr[i].slice(0,-diff);cff_trunc_counter=text_limit;if(full_text.length>text_limit)$self.find('.cff-expand').show()}}}
56
+ var short_text=full_text_arr.join('');short_text=short_text.replace(/(<(?!\/)[^>]+>)+(<\/[^>]+>)/g,"");var lastChar=short_text.substr(short_text.length-1);if(lastChar=='<')short_text=short_text.substring(0,short_text.length-1);short_text=short_text.replace(/(<br>\s*)+$/,'');short_text=short_text.replace(/(<img class="cff-linebreak">\s*)+$/,'');$post_text.html(short_text);$self.find('.cff-expand a').unbind('click').bind('click',function(e){e.preventDefault();var $expand=jQuery(this),$more=$expand.find('.cff-more'),$less=$expand.find('.cff-less');if(expanded==!1){$post_text.html(full_text);expanded=!0;$more.hide();$less.show()}else{$post_text.html(short_text);expanded=!1;$more.show();$less.hide()}
57
+ cffLinkHashtags();$post_text.find('a').attr('target','_blank')});$post_text.find('a').add($self.find('.cff-post-desc a')).attr({'target':'_blank','rel':'nofollow'});$sharedLink=$self.find('.cff-shared-link');if($sharedLink.text()==''){$sharedLink.remove()}
58
+ function cffLinkHashtags(){var cffTextStr=$self.find('.cff-text').html(),cffDescStr=$self.find('.cff-post-desc').html(),regex=/(^|\s)#(\w*[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]+\w*)/gi,linkcolor=$self.find('.cff-text').attr('data-color');function replacer(hash){var replacementString=jQuery.trim(hash);if(/^#[0-9A-F]{6}$/i.test(replacementString)){return replacementString}else{return' <a href="https://www.facebook.com/hashtag/'+replacementString.substring(1)+'" target="_blank" rel="nofollow" style="color:#'+linkcolor+'">'+replacementString+'</a>'}}
59
+ if(typeof cfflinkhashtags=='undefined')cfflinkhashtags='true';if(cfflinkhashtags=='true'){var $cffText=$self.find('.cff-text');if($cffText.length>0){cffTextStr=cffTextStr.replace(/<br>/g,"<br> ");$cffText.html(cffTextStr.replace(regex,replacer))}}
60
+ if($self.find('.cff-post-desc').length>0)$self.find('.cff-post-desc').html(cffDescStr.replace(regex,replacer))}
61
+ cffLinkHashtags();$self.find('.cff-text a').add($self.find('.cff-post-desc a')).attr({'target':'_blank','rel':'nofollow noopener noreferrer'});$self.find('.cff-share-link').unbind().bind('click',function(e){e.preventDefault();var $cffShareTooltip=$self.find('.cff-share-tooltip')
62
+ if($cffShareTooltip.is(':visible')){$cffShareTooltip.hide().find('a').removeClass('cff-show')}else{$cffShareTooltip.show();var time=0;$cffShareTooltip.find('a').each(function(){var $cffShareIcon=jQuery(this);setTimeout(function(){$cffShareIcon.addClass('cff-show')},time);time+=20})}})});jQuery('.cff-wrapper').each(function(){var $cff=jQuery(this).find('#cff');if($cff.hasClass('cff-masonry-js')){cffAddMasonry($cff);setTimeout(function(){cffAddMasonry($cff)},500);jQuery(window).resize(function(){setTimeout(function(){cffAddMasonry($cff)},500)});if($cff.find('.cff-credit').length)$cff.css('padding-bottom',30)}})}
63
  cff_init()}
js/jquery.matchHeight-min.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jquery-match-height 0.7.2 by @liabru
3
+ * http://brm.io/jquery-match-height/
4
+ * License MIT
5
+ */
6
+ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):t(jQuery)}(function(t){var e=-1,o=-1,n=function(t){return parseFloat(t)||0},a=function(e){var o=1,a=t(e),i=null,r=[];return a.each(function(){var e=t(this),a=e.offset().top-n(e.css("margin-top")),s=r.length>0?r[r.length-1]:null;null===s?r.push(e):Math.floor(Math.abs(i-a))<=o?r[r.length-1]=s.add(e):r.push(e),i=a}),r},i=function(e){var o={
7
+ byRow:!0,property:"height",target:null,remove:!1};return"object"==typeof e?t.extend(o,e):("boolean"==typeof e?o.byRow=e:"remove"===e&&(o.remove=!0),o)},r=t.fn.matchHeight=function(e){var o=i(e);if(o.remove){var n=this;return this.css(o.property,""),t.each(r._groups,function(t,e){e.elements=e.elements.not(n)}),this}return this.length<=1&&!o.target?this:(r._groups.push({elements:this,options:o}),r._apply(this,o),this)};r.version="0.7.2",r._groups=[],r._throttle=80,r._maintainScroll=!1,r._beforeUpdate=null,
8
+ r._afterUpdate=null,r._rows=a,r._parse=n,r._parseOptions=i,r._apply=function(e,o){var s=i(o),h=t(e),l=[h],c=t(window).scrollTop(),p=t("html").outerHeight(!0),u=h.parents().filter(":hidden");return u.each(function(){var e=t(this);e.data("style-cache",e.attr("style"))}),u.css("display","block"),s.byRow&&!s.target&&(h.each(function(){var e=t(this),o=e.css("display");"inline-block"!==o&&"flex"!==o&&"inline-flex"!==o&&(o="block"),e.data("style-cache",e.attr("style")),e.css({display:o,"padding-top":"0",
9
+ "padding-bottom":"0","margin-top":"0","margin-bottom":"0","border-top-width":"0","border-bottom-width":"0",height:"100px",overflow:"hidden"})}),l=a(h),h.each(function(){var e=t(this);e.attr("style",e.data("style-cache")||"")})),t.each(l,function(e,o){var a=t(o),i=0;if(s.target)i=s.target.outerHeight(!1);else{if(s.byRow&&a.length<=1)return void a.css(s.property,"");a.each(function(){var e=t(this),o=e.attr("style"),n=e.css("display");"inline-block"!==n&&"flex"!==n&&"inline-flex"!==n&&(n="block");var a={
10
+ display:n};a[s.property]="",e.css(a),e.outerHeight(!1)>i&&(i=e.outerHeight(!1)),o?e.attr("style",o):e.css("display","")})}a.each(function(){var e=t(this),o=0;s.target&&e.is(s.target)||("border-box"!==e.css("box-sizing")&&(o+=n(e.css("border-top-width"))+n(e.css("border-bottom-width")),o+=n(e.css("padding-top"))+n(e.css("padding-bottom"))),e.css(s.property,i-o+"px"))})}),u.each(function(){var e=t(this);e.attr("style",e.data("style-cache")||null)}),r._maintainScroll&&t(window).scrollTop(c/p*t("html").outerHeight(!0)),
11
+ this},r._applyDataApi=function(){var e={};t("[data-match-height], [data-mh]").each(function(){var o=t(this),n=o.attr("data-mh")||o.attr("data-match-height");n in e?e[n]=e[n].add(o):e[n]=o}),t.each(e,function(){this.matchHeight(!0)})};var s=function(e){r._beforeUpdate&&r._beforeUpdate(e,r._groups),t.each(r._groups,function(){r._apply(this.elements,this.options)}),r._afterUpdate&&r._afterUpdate(e,r._groups)};r._update=function(n,a){if(a&&"resize"===a.type){var i=t(window).width();if(i===e)return;e=i;
12
+ }n?o===-1&&(o=setTimeout(function(){s(a),o=-1},r._throttle)):s(a)},t(r._applyDataApi);var h=t.fn.on?"on":"bind";t(window)[h]("load",function(t){r._update(!1,t)}),t(window)[h]("resize orientationchange",function(t){r._update(!0,t)})});
languages/custom-facebook-feed.po CHANGED
@@ -1,2300 +1,2300 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: \n"
4
- "POT-Creation-Date: 2020-03-26 13:28-0500\n"
5
- "PO-Revision-Date: 2020-03-26 13:29-0500\n"
6
- "Last-Translator: \n"
7
- "Language-Team: \n"
8
- "Language: en_US\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 2.3\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Poedit-KeywordsList: __;_e;esc_html_e;esc_attr_e\n"
16
- "X-Poedit-SearchPath-0: .\n"
17
-
18
- #: custom-facebook-feed-admin.php:113 custom-facebook-feed-admin.php:1943
19
- msgid "Settings saved."
20
- msgstr ""
21
-
22
- #: custom-facebook-feed-admin.php:126 custom-facebook-feed-admin.php:1954
23
- msgid ""
24
- "You're using Custom Facebook Feed Lite. To unlock more features consider <a "
25
- "href=\"https://smashballoon.com/custom-facebook-feed/?"
26
- "utm_source=WordPress&utm_campaign=facebookliteplugin&utm_medium=notice-bar\" "
27
- "target=\"_blank\" rel=\"noopener noreferrer\">upgrading to Pro</a>."
28
- msgstr ""
29
-
30
- #: custom-facebook-feed-admin.php:127 custom-facebook-feed-admin.php:1955
31
- msgid "Dismiss this message."
32
- msgstr ""
33
-
34
- #: custom-facebook-feed-admin.php:133 custom-facebook-feed-admin.php:1962
35
- #: custom-facebook-feed-admin.php:4355
36
- msgid "Custom Facebook Feed"
37
- msgstr ""
38
-
39
- #: custom-facebook-feed-admin.php:140 custom-facebook-feed-admin.php:152
40
- #: custom-facebook-feed-admin.php:1974
41
- msgid "Configuration"
42
- msgstr ""
43
-
44
- #: custom-facebook-feed-admin.php:141 custom-facebook-feed-admin.php:1975
45
- msgid "Customize"
46
- msgstr ""
47
-
48
- #: custom-facebook-feed-admin.php:142 custom-facebook-feed-admin.php:763
49
- #: custom-facebook-feed-admin.php:1976 custom-facebook-feed-admin.php:2480
50
- msgid "Support"
51
- msgstr ""
52
-
53
- #: custom-facebook-feed-admin.php:178 custom-facebook-feed-admin.php:180
54
- msgid "Continue"
55
- msgstr ""
56
-
57
- #: custom-facebook-feed-admin.php:190
58
- msgid "Log in and get my Access Token"
59
- msgstr ""
60
-
61
- #: custom-facebook-feed-admin.php:363
62
- msgid "Show Available Groups"
63
- msgstr ""
64
-
65
- #: custom-facebook-feed-admin.php:363
66
- msgid "Show Available Pages"
67
- msgstr ""
68
-
69
- #: custom-facebook-feed-admin.php:375
70
- msgid ""
71
- "Facebook Page ID<br /><i style=\"font-weight: normal; font-size: 12px;\">ID "
72
- "of your Facebook Page or Group</i>"
73
- msgstr ""
74
-
75
- #: custom-facebook-feed-admin.php:380
76
- msgid "What's my Page ID?"
77
- msgstr ""
78
-
79
- #: custom-facebook-feed-admin.php:384
80
- msgid ""
81
- "<b>Facebook Page</b><br />\r\n"
82
- " You can find the ID of your Facebook "
83
- "<b>Page</b> from the URL. In each URL format, the ID is highlighted below:"
84
- "<br /><br />\r\n"
85
- " URL Format 1: <code>https://www.facebook."
86
- "com/<span class=\"cff-highlight\">your_page_name</span></code>\r\n"
87
- " <br />\r\n"
88
- " URL Format 2: <code>https://www.facebook."
89
- "com/your_page_name-<span class=\"cff-highlight\">1234567890</span></code>\r\n"
90
- " <br />\r\n"
91
- " URL Format 3: <code>https://www.facebook."
92
- "com/pages/your_page_name/<span class=\"cff-highlight\">1234567890</span></"
93
- "code>\r\n"
94
- " "
95
- msgstr ""
96
-
97
- #: custom-facebook-feed-admin.php:393
98
- msgid ""
99
- "<b>Facebook Group</b><br />You can find the ID of your Facebook <b>Group</b> "
100
- "from the URL, like so: <code>https://www.facebook.com/groups/<span class="
101
- "\"cff-highlight\">1234567890</span></code>"
102
- msgstr ""
103
-
104
- #: custom-facebook-feed-admin.php:417
105
- msgid "Facebook Access Token"
106
- msgstr ""
107
-
108
- #: custom-facebook-feed-admin.php:417
109
- msgid "Required"
110
- msgstr ""
111
-
112
- #: custom-facebook-feed-admin.php:419 custom-facebook-feed-admin.php:3580
113
- msgid "What is this?"
114
- msgstr ""
115
-
116
- #: custom-facebook-feed-admin.php:420
117
- msgid ""
118
- "In order to connect to Facebook and get a feed, you need to use an Access "
119
- "Token. To get one, simply use the blue button above to log into your "
120
- "Facebook account. You will then receive a token that will be used to connect "
121
- "to Facebook's API. If you already have an Access Token then you can enter it "
122
- "here."
123
- msgstr ""
124
-
125
- #: custom-facebook-feed-admin.php:423
126
- msgid ""
127
- "<p>This doesn't appear to be an Access Token. Please be sure that you didn't "
128
- "enter your App Secret instead of your Access Token.<br />Your App ID and App "
129
- "Secret are used to obtain your Access Token; simply paste them into the "
130
- "fields in the last step of the <a href='https://smashballoon.com/custom-"
131
- "facebook-feed/access-token/' target='_blank'>Access Token instructions</a> "
132
- "and click '<b>Get my Access Token</b>'.</p>"
133
- msgstr ""
134
-
135
- #: custom-facebook-feed-admin.php:435
136
- msgid "Is it a Facebook page or group?"
137
- msgstr ""
138
-
139
- #: custom-facebook-feed-admin.php:437
140
- msgid "- Select one -"
141
- msgstr ""
142
-
143
- #: custom-facebook-feed-admin.php:438 custom-facebook-feed-admin.php:446
144
- #: custom-facebook-feed-admin.php:453 custom-facebook-feed-admin.php:456
145
- #: custom-facebook-feed-admin.php:463 custom-facebook-feed-admin.php:499
146
- msgid "Page"
147
- msgstr ""
148
-
149
- #: custom-facebook-feed-admin.php:439 custom-facebook-feed-admin.php:446
150
- #: custom-facebook-feed-admin.php:453 custom-facebook-feed-admin.php:456
151
- #: custom-facebook-feed-admin.php:463 custom-facebook-feed-admin.php:500
152
- msgid "Group"
153
- msgstr ""
154
-
155
- #: custom-facebook-feed-admin.php:446
156
- msgid "Name"
157
- msgstr ""
158
-
159
- #: custom-facebook-feed-admin.php:446
160
- msgid "(optional)"
161
- msgstr ""
162
-
163
- #: custom-facebook-feed-admin.php:449
164
- msgid "This is just for labeling the account here on this settings page"
165
- msgstr ""
166
-
167
- #: custom-facebook-feed-admin.php:453
168
- msgid "ID"
169
- msgstr ""
170
-
171
- #: custom-facebook-feed-admin.php:456
172
- msgid "The ID of the Facebook"
173
- msgstr ""
174
-
175
- #: custom-facebook-feed-admin.php:456
176
- msgid "you want to add."
177
- msgstr ""
178
-
179
- #: custom-facebook-feed-admin.php:456
180
- msgid "How do I find my Page ID?"
181
- msgstr ""
182
-
183
- #: custom-facebook-feed-admin.php:460
184
- msgid "Access Token"
185
- msgstr ""
186
-
187
- #: custom-facebook-feed-admin.php:463
188
- msgid "The Access Token of the Facebook"
189
- msgstr ""
190
-
191
- #: custom-facebook-feed-admin.php:463
192
- msgid "you want to add"
193
- msgstr ""
194
-
195
- #: custom-facebook-feed-admin.php:492 custom-facebook-feed-admin.php:4158
196
- msgid "Settings"
197
- msgstr ""
198
-
199
- #: custom-facebook-feed-admin.php:495
200
- msgid "Is it a page or group?"
201
- msgstr ""
202
-
203
- #: custom-facebook-feed-admin.php:501
204
- msgid "Profile"
205
- msgstr ""
206
-
207
- #: custom-facebook-feed-admin.php:504
208
- msgid ""
209
- "<p>Due to Facebook's privacy policy you're not able to display posts from a "
210
- "personal profile, only from a public Facebook Page.</p><p>If you're using a "
211
- "profile to represent a business, organization, product, public figure or the "
212
- "like, then Facebook recommends <a href='http://www.facebook.com/"
213
- "help/175644189234902/' target='_blank'>converting your profile to a page</"
214
- "a>. There are many advantages to using pages over profiles, and once you've "
215
- "converted then the plugin will be able to successfully retrieve and display "
216
- "all of your posts.</p>"
217
- msgstr ""
218
-
219
- #: custom-facebook-feed-admin.php:510
220
- msgid "Show posts on my page by:"
221
- msgstr ""
222
-
223
- #: custom-facebook-feed-admin.php:514
224
- msgid "Only the page owner (me)"
225
- msgstr ""
226
-
227
- #: custom-facebook-feed-admin.php:515
228
- msgid "Page owner + other people"
229
- msgstr ""
230
-
231
- #: custom-facebook-feed-admin.php:516
232
- msgid "Only other people"
233
- msgstr ""
234
-
235
- #: custom-facebook-feed-admin.php:522
236
- msgid "Number of posts to display"
237
- msgstr ""
238
-
239
- #: custom-facebook-feed-admin.php:530
240
- msgid "Facebook API post limit"
241
- msgstr ""
242
-
243
- #: custom-facebook-feed-admin.php:534 custom-facebook-feed-admin.php:544
244
- #: custom-facebook-feed-admin.php:3917
245
- msgid "Auto"
246
- msgstr ""
247
-
248
- #: custom-facebook-feed-admin.php:535 custom-facebook-feed-admin.php:547
249
- msgid "Manual"
250
- msgstr ""
251
-
252
- #: custom-facebook-feed-admin.php:542
253
- msgid ""
254
- "The post 'limit' is the number of posts retrieved from the Facebook API. "
255
- "Most users won't need to manually adjust this setting as by default the "
256
- "plugin automatically retrieves a few more posts from the Facebook API than "
257
- "you need, as some posts may be filtered out."
258
- msgstr ""
259
-
260
- #: custom-facebook-feed-admin.php:544
261
- msgid "Recommended"
262
- msgstr ""
263
-
264
- #: custom-facebook-feed-admin.php:545
265
- msgid ""
266
- "Allow the plugin to automatically decide how many posts to retrieve from "
267
- "Facebook's API."
268
- msgstr ""
269
-
270
- #: custom-facebook-feed-admin.php:548
271
- msgid ""
272
- "Manually set how many posts to retrieve from Facebook's API.<br /><b>Note:</"
273
- "b> If you choose to retrieve a high number of posts then it will take longer "
274
- "for Facebook to return the posts when the plugin checks for new ones."
275
- msgstr ""
276
-
277
- #: custom-facebook-feed-admin.php:552
278
- msgid "Check for new posts every"
279
- msgstr ""
280
-
281
- #: custom-facebook-feed-admin.php:556
282
- msgid "Minutes"
283
- msgstr ""
284
-
285
- #: custom-facebook-feed-admin.php:557
286
- msgid "Hours"
287
- msgstr ""
288
-
289
- #: custom-facebook-feed-admin.php:558
290
- msgid "Days"
291
- msgstr ""
292
-
293
- #: custom-facebook-feed-admin.php:561
294
- msgid ""
295
- "Your Facebook posts and comments data is temporarily cached by the plugin in "
296
- "your WordPress database. You can choose how long this data should be cached "
297
- "for. If you set the time to 60 minutes then the plugin will clear the cached "
298
- "data after that length of time, and the next time the page is viewed it will "
299
- "check for new data."
300
- msgstr ""
301
-
302
- #: custom-facebook-feed-admin.php:566
303
- msgid "Localization"
304
- msgstr ""
305
-
306
- #: custom-facebook-feed-admin.php:570
307
- msgid "Afrikaans"
308
- msgstr ""
309
-
310
- #: custom-facebook-feed-admin.php:571
311
- msgid "Arabic"
312
- msgstr ""
313
-
314
- #: custom-facebook-feed-admin.php:572
315
- msgid "Azerbaijani"
316
- msgstr ""
317
-
318
- #: custom-facebook-feed-admin.php:573
319
- msgid "Belarusian"
320
- msgstr ""
321
-
322
- #: custom-facebook-feed-admin.php:574
323
- msgid "Bulgarian"
324
- msgstr ""
325
-
326
- #: custom-facebook-feed-admin.php:575
327
- msgid "Bengali"
328
- msgstr ""
329
-
330
- #: custom-facebook-feed-admin.php:576
331
- msgid "Bosnian"
332
- msgstr ""
333
-
334
- #: custom-facebook-feed-admin.php:577
335
- msgid "Catalan"
336
- msgstr ""
337
-
338
- #: custom-facebook-feed-admin.php:578
339
- msgid "Czech"
340
- msgstr ""
341
-
342
- #: custom-facebook-feed-admin.php:579
343
- msgid "Welsh"
344
- msgstr ""
345
-
346
- #: custom-facebook-feed-admin.php:580
347
- msgid "Danish"
348
- msgstr ""
349
-
350
- #: custom-facebook-feed-admin.php:581
351
- msgid "German"
352
- msgstr ""
353
-
354
- #: custom-facebook-feed-admin.php:582
355
- msgid "Greek"
356
- msgstr ""
357
-
358
- #: custom-facebook-feed-admin.php:583
359
- msgid "English (UK)"
360
- msgstr ""
361
-
362
- #: custom-facebook-feed-admin.php:584
363
- msgid "English (Pirate)"
364
- msgstr ""
365
-
366
- #: custom-facebook-feed-admin.php:585
367
- msgid "English (Upside Down)"
368
- msgstr ""
369
-
370
- #: custom-facebook-feed-admin.php:586
371
- msgid "English (US)"
372
- msgstr ""
373
-
374
- #: custom-facebook-feed-admin.php:587
375
- msgid "Esperanto"
376
- msgstr ""
377
-
378
- #: custom-facebook-feed-admin.php:588
379
- msgid "Spanish (Spain)"
380
- msgstr ""
381
-
382
- #: custom-facebook-feed-admin.php:589
383
- msgid "Spanish"
384
- msgstr ""
385
-
386
- #: custom-facebook-feed-admin.php:590
387
- msgid "Estonian"
388
- msgstr ""
389
-
390
- #: custom-facebook-feed-admin.php:591
391
- msgid "Basque"
392
- msgstr ""
393
-
394
- #: custom-facebook-feed-admin.php:592
395
- msgid "Persian"
396
- msgstr ""
397
-
398
- #: custom-facebook-feed-admin.php:593
399
- msgid "Leet Speak"
400
- msgstr ""
401
-
402
- #: custom-facebook-feed-admin.php:594
403
- msgid "Finnish"
404
- msgstr ""
405
-
406
- #: custom-facebook-feed-admin.php:595
407
- msgid "Faroese"
408
- msgstr ""
409
-
410
- #: custom-facebook-feed-admin.php:596
411
- msgid "French (Canada)"
412
- msgstr ""
413
-
414
- #: custom-facebook-feed-admin.php:597
415
- msgid "French (France)"
416
- msgstr ""
417
-
418
- #: custom-facebook-feed-admin.php:598
419
- msgid "Frisian"
420
- msgstr ""
421
-
422
- #: custom-facebook-feed-admin.php:599
423
- msgid "Irish"
424
- msgstr ""
425
-
426
- #: custom-facebook-feed-admin.php:600
427
- msgid "Galician"
428
- msgstr ""
429
-
430
- #: custom-facebook-feed-admin.php:601
431
- msgid "Hebrew"
432
- msgstr ""
433
-
434
- #: custom-facebook-feed-admin.php:602
435
- msgid "Hindi"
436
- msgstr ""
437
-
438
- #: custom-facebook-feed-admin.php:603
439
- msgid "Croatian"
440
- msgstr ""
441
-
442
- #: custom-facebook-feed-admin.php:604
443
- msgid "Hungarian"
444
- msgstr ""
445
-
446
- #: custom-facebook-feed-admin.php:605
447
- msgid "Armenian"
448
- msgstr ""
449
-
450
- #: custom-facebook-feed-admin.php:606
451
- msgid "Indonesian"
452
- msgstr ""
453
-
454
- #: custom-facebook-feed-admin.php:607
455
- msgid "Icelandic"
456
- msgstr ""
457
-
458
- #: custom-facebook-feed-admin.php:608
459
- msgid "Italian"
460
- msgstr ""
461
-
462
- #: custom-facebook-feed-admin.php:609
463
- msgid "Japanese"
464
- msgstr ""
465
-
466
- #: custom-facebook-feed-admin.php:610
467
- msgid "Georgian"
468
- msgstr ""
469
-
470
- #: custom-facebook-feed-admin.php:611
471
- msgid "Khmer"
472
- msgstr ""
473
-
474
- #: custom-facebook-feed-admin.php:612
475
- msgid "Korean"
476
- msgstr ""
477
-
478
- #: custom-facebook-feed-admin.php:613
479
- msgid "Kurdish"
480
- msgstr ""
481
-
482
- #: custom-facebook-feed-admin.php:614
483
- msgid "Latin"
484
- msgstr ""
485
-
486
- #: custom-facebook-feed-admin.php:615
487
- msgid "Lithuanian"
488
- msgstr ""
489
-
490
- #: custom-facebook-feed-admin.php:616
491
- msgid "Latvian"
492
- msgstr ""
493
-
494
- #: custom-facebook-feed-admin.php:617
495
- msgid "Macedonian"
496
- msgstr ""
497
-
498
- #: custom-facebook-feed-admin.php:618
499
- msgid "Malayalam"
500
- msgstr ""
501
-
502
- #: custom-facebook-feed-admin.php:619
503
- msgid "Malay"
504
- msgstr ""
505
-
506
- #: custom-facebook-feed-admin.php:620
507
- msgid "Norwegian (bokmal)"
508
- msgstr ""
509
-
510
- #: custom-facebook-feed-admin.php:621
511
- msgid "Nepali"
512
- msgstr ""
513
-
514
- #: custom-facebook-feed-admin.php:622
515
- msgid "Dutch"
516
- msgstr ""
517
-
518
- #: custom-facebook-feed-admin.php:623
519
- msgid "Norwegian (nynorsk)"
520
- msgstr ""
521
-
522
- #: custom-facebook-feed-admin.php:624
523
- msgid "Punjabi"
524
- msgstr ""
525
-
526
- #: custom-facebook-feed-admin.php:625
527
- msgid "Polish"
528
- msgstr ""
529
-
530
- #: custom-facebook-feed-admin.php:626
531
- msgid "Pashto"
532
- msgstr ""
533
-
534
- #: custom-facebook-feed-admin.php:627
535
- msgid "Portuguese (Brazil)"
536
- msgstr ""
537
-
538
- #: custom-facebook-feed-admin.php:628
539
- msgid "Portuguese (Portugal)"
540
- msgstr ""
541
-
542
- #: custom-facebook-feed-admin.php:629
543
- msgid "Romanian"
544
- msgstr ""
545
-
546
- #: custom-facebook-feed-admin.php:630
547
- msgid "Russian"
548
- msgstr ""
549
-
550
- #: custom-facebook-feed-admin.php:631
551
- msgid "Slovak"
552
- msgstr ""
553
-
554
- #: custom-facebook-feed-admin.php:632
555
- msgid "Slovenian"
556
- msgstr ""
557
-
558
- #: custom-facebook-feed-admin.php:633
559
- msgid "Albanian"
560
- msgstr ""
561
-
562
- #: custom-facebook-feed-admin.php:634
563
- msgid "Serbian"
564
- msgstr ""
565
-
566
- #: custom-facebook-feed-admin.php:635
567
- msgid "Swedish"
568
- msgstr ""
569
-
570
- #: custom-facebook-feed-admin.php:636
571
- msgid "Swahili"
572
- msgstr ""
573
-
574
- #: custom-facebook-feed-admin.php:637
575
- msgid "Tamil"
576
- msgstr ""
577
-
578
- #: custom-facebook-feed-admin.php:638
579
- msgid "Telugu"
580
- msgstr ""
581
-
582
- #: custom-facebook-feed-admin.php:639
583
- msgid "Thai"
584
- msgstr ""
585
-
586
- #: custom-facebook-feed-admin.php:640
587
- msgid "Filipino"
588
- msgstr ""
589
-
590
- #: custom-facebook-feed-admin.php:641
591
- msgid "Turkish"
592
- msgstr ""
593
-
594
- #: custom-facebook-feed-admin.php:642
595
- msgid "Ukrainian"
596
- msgstr ""
597
-
598
- #: custom-facebook-feed-admin.php:643
599
- msgid "Vietnamese"
600
- msgstr ""
601
-
602
- #: custom-facebook-feed-admin.php:644
603
- msgid "Simplified Chinese (China)"
604
- msgstr ""
605
-
606
- #: custom-facebook-feed-admin.php:645
607
- msgid "Traditional Chinese (Hong Kong)"
608
- msgstr ""
609
-
610
- #: custom-facebook-feed-admin.php:646
611
- msgid "Traditional Chinese (Taiwan)"
612
- msgstr ""
613
-
614
- #: custom-facebook-feed-admin.php:649
615
- msgid ""
616
- "This translates some of the text sent by Facebook, specifically, the "
617
- "descriptive post text (eg: Smash Balloon shared a link) and the text in the "
618
- "'Like Box' widget. To find out how to translate the other text in the plugin "
619
- "see <a href='https://smashballoon.com/cff-how-does-the-plugin-handle-text-"
620
- "and-language-translation/' target='_blank'>this FAQ</a>."
621
- msgstr ""
622
-
623
- #: custom-facebook-feed-admin.php:654 custom-facebook-feed-admin.php:3056
624
- msgid "Timezone"
625
- msgstr ""
626
-
627
- #: custom-facebook-feed-admin.php:659 custom-facebook-feed-admin.php:3061
628
- msgid "(GMT-11:00) Midway Island, Samoa"
629
- msgstr ""
630
-
631
- #: custom-facebook-feed-admin.php:660 custom-facebook-feed-admin.php:3062
632
- msgid "(GMT-10:00) Hawaii-Aleutian"
633
- msgstr ""
634
-
635
- #: custom-facebook-feed-admin.php:661 custom-facebook-feed-admin.php:3063
636
- msgid "(GMT-10:00) Hawaii"
637
- msgstr ""
638
-
639
- #: custom-facebook-feed-admin.php:662 custom-facebook-feed-admin.php:3064
640
- msgid "(GMT-09:30) Marquesas Islands"
641
- msgstr ""
642
-
643
- #: custom-facebook-feed-admin.php:663 custom-facebook-feed-admin.php:3065
644
- msgid "(GMT-09:00) Gambier Islands"
645
- msgstr ""
646
-
647
- #: custom-facebook-feed-admin.php:664 custom-facebook-feed-admin.php:3066
648
- msgid "(GMT-09:00) Alaska"
649
- msgstr ""
650
-
651
- #: custom-facebook-feed-admin.php:665 custom-facebook-feed-admin.php:3067
652
- msgid "(GMT-08:00) Tijuana, Baja California"
653
- msgstr ""
654
-
655
- #: custom-facebook-feed-admin.php:666 custom-facebook-feed-admin.php:3068
656
- msgid "(GMT-08:00) Pitcairn Islands"
657
- msgstr ""
658
-
659
- #: custom-facebook-feed-admin.php:667 custom-facebook-feed-admin.php:3069
660
- msgid "(GMT-08:00) Pacific Time (US & Canada)"
661
- msgstr ""
662
-
663
- #: custom-facebook-feed-admin.php:668 custom-facebook-feed-admin.php:3070
664
- msgid "(GMT-07:00) Mountain Time (US & Canada)"
665
- msgstr ""
666
-
667
- #: custom-facebook-feed-admin.php:669 custom-facebook-feed-admin.php:3071
668
- msgid "(GMT-07:00) Chihuahua, La Paz, Mazatlan"
669
- msgstr ""
670
-
671
- #: custom-facebook-feed-admin.php:670 custom-facebook-feed-admin.php:3072
672
- msgid "(GMT-07:00) Arizona"
673
- msgstr ""
674
-
675
- #: custom-facebook-feed-admin.php:671 custom-facebook-feed-admin.php:3073
676
- msgid "(GMT-06:00) Saskatchewan, Central America"
677
- msgstr ""
678
-
679
- #: custom-facebook-feed-admin.php:672 custom-facebook-feed-admin.php:3074
680
- msgid "(GMT-06:00) Guadalajara, Mexico City, Monterrey"
681
- msgstr ""
682
-
683
- #: custom-facebook-feed-admin.php:673 custom-facebook-feed-admin.php:3075
684
- msgid "(GMT-06:00) Easter Island"
685
- msgstr ""
686
-
687
- #: custom-facebook-feed-admin.php:674 custom-facebook-feed-admin.php:3076
688
- msgid "(GMT-06:00) Central Time (US & Canada)"
689
- msgstr ""
690
-
691
- #: custom-facebook-feed-admin.php:675 custom-facebook-feed-admin.php:3077
692
- msgid "(GMT-05:00) Eastern Time (US & Canada)"
693
- msgstr ""
694
-
695
- #: custom-facebook-feed-admin.php:676 custom-facebook-feed-admin.php:3078
696
- msgid "(GMT-05:00) Cuba"
697
- msgstr ""
698
-
699
- #: custom-facebook-feed-admin.php:677 custom-facebook-feed-admin.php:3079
700
- msgid "(GMT-05:00) Bogota, Lima, Quito, Rio Branco"
701
- msgstr ""
702
-
703
- #: custom-facebook-feed-admin.php:678 custom-facebook-feed-admin.php:3080
704
- msgid "(GMT-04:30) Caracas"
705
- msgstr ""
706
-
707
- #: custom-facebook-feed-admin.php:679 custom-facebook-feed-admin.php:3081
708
- msgid "(GMT-04:00) Santiago"
709
- msgstr ""
710
-
711
- #: custom-facebook-feed-admin.php:680 custom-facebook-feed-admin.php:3082
712
- msgid "(GMT-04:00) La Paz"
713
- msgstr ""
714
-
715
- #: custom-facebook-feed-admin.php:681 custom-facebook-feed-admin.php:3083
716
- msgid "(GMT-04:00) Faukland Islands"
717
- msgstr ""
718
-
719
- #: custom-facebook-feed-admin.php:682 custom-facebook-feed-admin.php:3084
720
- msgid "(GMT-04:00) Brazil"
721
- msgstr ""
722
-
723
- #: custom-facebook-feed-admin.php:683 custom-facebook-feed-admin.php:3085
724
- msgid "(GMT-04:00) Atlantic Time (Goose Bay)"
725
- msgstr ""
726
-
727
- #: custom-facebook-feed-admin.php:684 custom-facebook-feed-admin.php:3086
728
- msgid "(GMT-04:00) Atlantic Time (Canada)"
729
- msgstr ""
730
-
731
- #: custom-facebook-feed-admin.php:685 custom-facebook-feed-admin.php:3087
732
- msgid "(GMT-03:30) Newfoundland"
733
- msgstr ""
734
-
735
- #: custom-facebook-feed-admin.php:686 custom-facebook-feed-admin.php:3088
736
- msgid "(GMT-03:00) UTC-3"
737
- msgstr ""
738
-
739
- #: custom-facebook-feed-admin.php:687 custom-facebook-feed-admin.php:3089
740
- msgid "(GMT-03:00) Montevideo"
741
- msgstr ""
742
-
743
- #: custom-facebook-feed-admin.php:688 custom-facebook-feed-admin.php:3090
744
- msgid "(GMT-03:00) Miquelon, St. Pierre"
745
- msgstr ""
746
-
747
- #: custom-facebook-feed-admin.php:689 custom-facebook-feed-admin.php:3091
748
- msgid "(GMT-03:00) Greenland"
749
- msgstr ""
750
-
751
- #: custom-facebook-feed-admin.php:690 custom-facebook-feed-admin.php:3092
752
- msgid "(GMT-03:00) Buenos Aires"
753
- msgstr ""
754
-
755
- #: custom-facebook-feed-admin.php:691 custom-facebook-feed-admin.php:3093
756
- msgid "(GMT-03:00) Brasilia"
757
- msgstr ""
758
-
759
- #: custom-facebook-feed-admin.php:692 custom-facebook-feed-admin.php:3094
760
- msgid "(GMT-02:00) Mid-Atlantic"
761
- msgstr ""
762
-
763
- #: custom-facebook-feed-admin.php:693 custom-facebook-feed-admin.php:3095
764
- msgid "(GMT-01:00) Cape Verde Is."
765
- msgstr ""
766
-
767
- #: custom-facebook-feed-admin.php:694 custom-facebook-feed-admin.php:3096
768
- msgid "(GMT-01:00) Azores"
769
- msgstr ""
770
-
771
- #: custom-facebook-feed-admin.php:695 custom-facebook-feed-admin.php:3097
772
- msgid "(GMT) Greenwich Mean Time : Belfast"
773
- msgstr ""
774
-
775
- #: custom-facebook-feed-admin.php:696 custom-facebook-feed-admin.php:3098
776
- msgid "(GMT) Greenwich Mean Time : Dublin"
777
- msgstr ""
778
-
779
- #: custom-facebook-feed-admin.php:697 custom-facebook-feed-admin.php:3099
780
- msgid "(GMT) Greenwich Mean Time : Lisbon"
781
- msgstr ""
782
-
783
- #: custom-facebook-feed-admin.php:698 custom-facebook-feed-admin.php:3100
784
- msgid "(GMT) Greenwich Mean Time : London"
785
- msgstr ""
786
-
787
- #: custom-facebook-feed-admin.php:699 custom-facebook-feed-admin.php:3101
788
- msgid "(GMT) Monrovia, Reykjavik"
789
- msgstr ""
790
-
791
- #: custom-facebook-feed-admin.php:700 custom-facebook-feed-admin.php:3102
792
- msgid "(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna"
793
- msgstr ""
794
-
795
- #: custom-facebook-feed-admin.php:701 custom-facebook-feed-admin.php:3103
796
- msgid "(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague"
797
- msgstr ""
798
-
799
- #: custom-facebook-feed-admin.php:702 custom-facebook-feed-admin.php:3104
800
- msgid "(GMT+01:00) Brussels, Copenhagen, Madrid, Paris"
801
- msgstr ""
802
-
803
- #: custom-facebook-feed-admin.php:703 custom-facebook-feed-admin.php:3105
804
- msgid "(GMT+01:00) West Central Africa"
805
- msgstr ""
806
-
807
- #: custom-facebook-feed-admin.php:704 custom-facebook-feed-admin.php:3106
808
- msgid "(GMT+01:00) Windhoek"
809
- msgstr ""
810
-
811
- #: custom-facebook-feed-admin.php:705 custom-facebook-feed-admin.php:3107
812
- msgid "(GMT+02:00) Beirut"
813
- msgstr ""
814
-
815
- #: custom-facebook-feed-admin.php:706 custom-facebook-feed-admin.php:3108
816
- msgid "(GMT+02:00) Cairo"
817
- msgstr ""
818
-
819
- #: custom-facebook-feed-admin.php:707 custom-facebook-feed-admin.php:3109
820
- msgid "(GMT+02:00) Gaza"
821
- msgstr ""
822
-
823
- #: custom-facebook-feed-admin.php:708 custom-facebook-feed-admin.php:3110
824
- msgid "(GMT+02:00) Harare, Pretoria"
825
- msgstr ""
826
-
827
- #: custom-facebook-feed-admin.php:709 custom-facebook-feed-admin.php:3111
828
- msgid "(GMT+02:00) Jerusalem"
829
- msgstr ""
830
-
831
- #: custom-facebook-feed-admin.php:710 custom-facebook-feed-admin.php:3113
832
- msgid "(GMT+02:00) Minsk"
833
- msgstr ""
834
-
835
- #: custom-facebook-feed-admin.php:711 custom-facebook-feed-admin.php:3114
836
- msgid "(GMT+02:00) Syria"
837
- msgstr ""
838
-
839
- #: custom-facebook-feed-admin.php:712 custom-facebook-feed-admin.php:3115
840
- msgid "(GMT+03:00) Moscow, St. Petersburg, Volgograd"
841
- msgstr ""
842
-
843
- #: custom-facebook-feed-admin.php:713 custom-facebook-feed-admin.php:3116
844
- msgid "(GMT+03:00) Nairobi"
845
- msgstr ""
846
-
847
- #: custom-facebook-feed-admin.php:714 custom-facebook-feed-admin.php:3117
848
- msgid "(GMT+03:30) Tehran"
849
- msgstr ""
850
-
851
- #: custom-facebook-feed-admin.php:715 custom-facebook-feed-admin.php:3118
852
- msgid "(GMT+04:00) Abu Dhabi, Muscat"
853
- msgstr ""
854
-
855
- #: custom-facebook-feed-admin.php:716 custom-facebook-feed-admin.php:3119
856
- msgid "(GMT+04:00) Yerevan"
857
- msgstr ""
858
-
859
- #: custom-facebook-feed-admin.php:717 custom-facebook-feed-admin.php:3120
860
- msgid "(GMT+04:30) Kabul"
861
- msgstr ""
862
-
863
- #: custom-facebook-feed-admin.php:718 custom-facebook-feed-admin.php:3121
864
- msgid "(GMT+05:00) Ekaterinburg"
865
- msgstr ""
866
-
867
- #: custom-facebook-feed-admin.php:719 custom-facebook-feed-admin.php:3122
868
- msgid "(GMT+05:00) Tashkent"
869
- msgstr ""
870
-
871
- #: custom-facebook-feed-admin.php:720 custom-facebook-feed-admin.php:3123
872
- msgid "(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi"
873
- msgstr ""
874
-
875
- #: custom-facebook-feed-admin.php:721 custom-facebook-feed-admin.php:3124
876
- msgid "(GMT+05:45) Kathmandu"
877
- msgstr ""
878
-
879
- #: custom-facebook-feed-admin.php:722 custom-facebook-feed-admin.php:3125
880
- msgid "(GMT+06:00) Astana, Dhaka"
881
- msgstr ""
882
-
883
- #: custom-facebook-feed-admin.php:723 custom-facebook-feed-admin.php:3126
884
- msgid "(GMT+06:00) Novosibirsk"
885
- msgstr ""
886
-
887
- #: custom-facebook-feed-admin.php:724 custom-facebook-feed-admin.php:3127
888
- msgid "(GMT+06:30) Yangon (Rangoon)"
889
- msgstr ""
890
-
891
- #: custom-facebook-feed-admin.php:725 custom-facebook-feed-admin.php:3128
892
- msgid "(GMT+07:00) Bangkok, Hanoi, Jakarta"
893
- msgstr ""
894
-
895
- #: custom-facebook-feed-admin.php:726 custom-facebook-feed-admin.php:3129
896
- msgid "(GMT+07:00) Krasnoyarsk"
897
- msgstr ""
898
-
899
- #: custom-facebook-feed-admin.php:727 custom-facebook-feed-admin.php:3130
900
- msgid "(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi"
901
- msgstr ""
902
-
903
- #: custom-facebook-feed-admin.php:728 custom-facebook-feed-admin.php:3131
904
- msgid "(GMT+08:00) Irkutsk, Ulaan Bataar"
905
- msgstr ""
906
-
907
- #: custom-facebook-feed-admin.php:729 custom-facebook-feed-admin.php:3132
908
- msgid "(GMT+08:00) Perth"
909
- msgstr ""
910
-
911
- #: custom-facebook-feed-admin.php:730 custom-facebook-feed-admin.php:3133
912
- msgid "(GMT+08:45) Eucla"
913
- msgstr ""
914
-
915
- #: custom-facebook-feed-admin.php:731 custom-facebook-feed-admin.php:3134
916
- msgid "(GMT+09:00) Osaka, Sapporo, Tokyo"
917
- msgstr ""
918
-
919
- #: custom-facebook-feed-admin.php:732 custom-facebook-feed-admin.php:3135
920
- msgid "(GMT+09:00) Seoul"
921
- msgstr ""
922
-
923
- #: custom-facebook-feed-admin.php:733 custom-facebook-feed-admin.php:3136
924
- msgid "(GMT+09:00) Yakutsk"
925
- msgstr ""
926
-
927
- #: custom-facebook-feed-admin.php:734 custom-facebook-feed-admin.php:3137
928
- msgid "(GMT+09:30) Adelaide"
929
- msgstr ""
930
-
931
- #: custom-facebook-feed-admin.php:735 custom-facebook-feed-admin.php:3138
932
- msgid "(GMT+09:30) Darwin"
933
- msgstr ""
934
-
935
- #: custom-facebook-feed-admin.php:736 custom-facebook-feed-admin.php:3139
936
- msgid "(GMT+10:00) Brisbane"
937
- msgstr ""
938
-
939
- #: custom-facebook-feed-admin.php:737
940
- msgid "(GMT+10:00) Sydney"
941
- msgstr ""
942
-
943
- #: custom-facebook-feed-admin.php:738 custom-facebook-feed-admin.php:3141
944
- msgid "(GMT+10:00) Vladivostok"
945
- msgstr ""
946
-
947
- #: custom-facebook-feed-admin.php:739 custom-facebook-feed-admin.php:3142
948
- msgid "(GMT+10:30) Lord Howe Island"
949
- msgstr ""
950
-
951
- #: custom-facebook-feed-admin.php:740 custom-facebook-feed-admin.php:3143
952
- msgid "(GMT+11:00) Solomon Is., New Caledonia"
953
- msgstr ""
954
-
955
- #: custom-facebook-feed-admin.php:741 custom-facebook-feed-admin.php:3144
956
- msgid "(GMT+11:00) Magadan"
957
- msgstr ""
958
-
959
- #: custom-facebook-feed-admin.php:742 custom-facebook-feed-admin.php:3145
960
- msgid "(GMT+11:30) Norfolk Island"
961
- msgstr ""
962
-
963
- #: custom-facebook-feed-admin.php:743 custom-facebook-feed-admin.php:3146
964
- msgid "(GMT+12:00) Anadyr, Kamchatka"
965
- msgstr ""
966
-
967
- #: custom-facebook-feed-admin.php:744 custom-facebook-feed-admin.php:3147
968
- msgid "(GMT+12:00) Auckland, Wellington"
969
- msgstr ""
970
-
971
- #: custom-facebook-feed-admin.php:745 custom-facebook-feed-admin.php:3148
972
- msgid "(GMT+12:00) Fiji, Kamchatka, Marshall Is."
973
- msgstr ""
974
-
975
- #: custom-facebook-feed-admin.php:746 custom-facebook-feed-admin.php:3149
976
- msgid "(GMT+12:45) Chatham Islands"
977
- msgstr ""
978
-
979
- #: custom-facebook-feed-admin.php:747 custom-facebook-feed-admin.php:3150
980
- msgid "(GMT+13:00) Nuku'alofa"
981
- msgstr ""
982
-
983
- #: custom-facebook-feed-admin.php:748 custom-facebook-feed-admin.php:3151
984
- msgid "(GMT+14:00) Kiritimati"
985
- msgstr ""
986
-
987
- #: custom-facebook-feed-admin.php:760
988
- msgid ""
989
- "As the settings on this page directly affect the request made to Facebook to "
990
- "get data, then when these settings are changed the plugin cache is cleared "
991
- "in order for the plugin to check Facebook for data again using these new "
992
- "settings. The plugin will check Facebook for data the next time the page "
993
- "that the feed is on is loaded."
994
- msgstr ""
995
-
996
- #: custom-facebook-feed-admin.php:763 custom-facebook-feed-admin.php:2480
997
- msgid "Having trouble using the plugin? Check out the"
998
- msgstr ""
999
-
1000
- #: custom-facebook-feed-admin.php:763 custom-facebook-feed-admin.php:2480
1001
- msgid "tab"
1002
- msgstr ""
1003
-
1004
- #: custom-facebook-feed-admin.php:774
1005
- msgid ""
1006
- "Check out our other free plugins for <a href=\"https://wordpress.org/plugins/"
1007
- "instagram-feed/\" target=\"_blank\">Instagram</a>, <a href=\"https://"
1008
- "wordpress.org/plugins/custom-twitter-feeds/\" target=\"_blank\">Twitter</a>, "
1009
- "and <a href=\"https://wordpress.org/plugins/feeds-for-youtube/\" target="
1010
- "\"_blank\">YouTube</a>."
1011
- msgstr ""
1012
-
1013
- #: custom-facebook-feed-admin.php:777 custom-facebook-feed-admin.php:4096
1014
- msgid "Like the plugin? Help spread the word!"
1015
- msgstr ""
1016
-
1017
- #: custom-facebook-feed-admin.php:793
1018
- msgid "Setup Directions"
1019
- msgstr ""
1020
-
1021
- #: custom-facebook-feed-admin.php:794
1022
- msgid "A step-by-step guide on how to setup and use the plugin."
1023
- msgstr ""
1024
-
1025
- #: custom-facebook-feed-admin.php:798
1026
- msgid "FAQs and Docs"
1027
- msgstr ""
1028
-
1029
- #: custom-facebook-feed-admin.php:799
1030
- msgid ""
1031
- "View our expansive library of FAQs and documentation to help solve your "
1032
- "problem as quickly as possible."
1033
- msgstr ""
1034
-
1035
- #: custom-facebook-feed-admin.php:806
1036
- msgid ""
1037
- "<a href=\"https://smashballoon.com/category/custom-facebook-feed/faq/?"
1038
- "cat=18\" target=\"_blank\">General Questions</a>"
1039
- msgstr ""
1040
-
1041
- #: custom-facebook-feed-admin.php:807
1042
- msgid ""
1043
- "<a href=\"https://smashballoon.com/category/custom-facebook-feed/getting-"
1044
- "started/?cat=18\" target=\"_blank\">Getting Started</a>"
1045
- msgstr ""
1046
-
1047
- #: custom-facebook-feed-admin.php:808
1048
- msgid ""
1049
- "<a href=\"https://smashballoon.com/category/custom-facebook-feed/"
1050
- "troubleshooting/?cat=18\" target=\"_blank\">Common Issues</a>"
1051
- msgstr ""
1052
-
1053
- #: custom-facebook-feed-admin.php:814
1054
- msgid ""
1055
- "<a href=\"http://smashballoon.com/custom-facebook-feed/docs/free/\" target="
1056
- "\"_blank\">Installation and Configuration</a>"
1057
- msgstr ""
1058
-
1059
- #: custom-facebook-feed-admin.php:815
1060
- msgid ""
1061
- "<a href=\"https://smashballoon.com/custom-facebook-feed/docs/shortcodes/\" "
1062
- "target=\"_blank\">Shortcode Reference</a>"
1063
- msgstr ""
1064
-
1065
- #: custom-facebook-feed-admin.php:816
1066
- msgid ""
1067
- "<a href=https://smashballoon.com/category/custom-facebook-feed/"
1068
- "customizations/snippets/?cat=18\" target=\"_blank\">Custom CSS and "
1069
- "JavaScript Snippets</a>"
1070
- msgstr ""
1071
-
1072
- #: custom-facebook-feed-admin.php:822
1073
- msgid "Request Support"
1074
- msgstr ""
1075
-
1076
- #: custom-facebook-feed-admin.php:823
1077
- msgid ""
1078
- "Still need help? Submit a ticket and one of our support experts will get "
1079
- "back to you as soon as possible.<br /><b>Important:</b> Please include your "
1080
- "<b>System Info</b> below with all support requests."
1081
- msgstr ""
1082
-
1083
- #: custom-facebook-feed-admin.php:829
1084
- msgid ""
1085
- "System Info &nbsp; <i style=\"color: #666; font-size: 11px; font-weight: "
1086
- "normal;\">Click the text below to select all</i>"
1087
- msgstr ""
1088
-
1089
- #: custom-facebook-feed-admin.php:1980 custom-facebook-feed-admin.php:1990
1090
- #: custom-facebook-feed-admin.php:1999
1091
- msgid "General"
1092
- msgstr ""
1093
-
1094
- #: custom-facebook-feed-admin.php:1981
1095
- msgid "Post Layout"
1096
- msgstr ""
1097
-
1098
- #: custom-facebook-feed-admin.php:1982
1099
- msgid "Style Posts"
1100
- msgstr ""
1101
-
1102
- #: custom-facebook-feed-admin.php:1983
1103
- msgid "Misc"
1104
- msgstr ""
1105
-
1106
- #: custom-facebook-feed-admin.php:1984 custom-facebook-feed-admin.php:3960
1107
- msgid "Custom Text / Translate"
1108
- msgstr ""
1109
-
1110
- #: custom-facebook-feed-admin.php:1991 custom-facebook-feed-admin.php:2123
1111
- msgid "Header"
1112
- msgstr ""
1113
-
1114
- #: custom-facebook-feed-admin.php:1992
1115
- msgid "Like Box"
1116
- msgstr ""
1117
-
1118
- #: custom-facebook-feed-admin.php:2001
1119
- msgid "Feed Width"
1120
- msgstr ""
1121
-
1122
- #: custom-facebook-feed-admin.php:2007
1123
- msgid "Set to be 100% width on mobile?"
1124
- msgstr ""
1125
-
1126
- #: custom-facebook-feed-admin.php:2008
1127
- msgid "What does this mean?"
1128
- msgstr ""
1129
-
1130
- #: custom-facebook-feed-admin.php:2009
1131
- #, php-format
1132
- msgid ""
1133
- "If you set a width on the feed then this will be used on mobile as well as "
1134
- "desktop. Check this setting to set the feed width to be 100% on mobile so "
1135
- "that it is responsive."
1136
- msgstr ""
1137
-
1138
- #: custom-facebook-feed-admin.php:2014
1139
- msgid "Feed Height"
1140
- msgstr ""
1141
-
1142
- #: custom-facebook-feed-admin.php:2020
1143
- msgid ""
1144
- "Use this to set a fixed height on the feed. If the feed exceeds this height "
1145
- "then a scroll bar will be used. Leave it empty to set no maximum height."
1146
- msgstr ""
1147
-
1148
- #: custom-facebook-feed-admin.php:2023
1149
- msgid "Feed Padding"
1150
- msgstr ""
1151
-
1152
- #: custom-facebook-feed-admin.php:2029
1153
- msgid ""
1154
- "This is the amount of padding/spacing that goes around the feed. This is "
1155
- "particularly useful if you intend to set a background color on the feed."
1156
- msgstr ""
1157
-
1158
- #: custom-facebook-feed-admin.php:2033
1159
- msgid "Feed Background Color"
1160
- msgstr ""
1161
-
1162
- #: custom-facebook-feed-admin.php:2040
1163
- msgid "Add CSS class to feed"
1164
- msgstr ""
1165
-
1166
- #: custom-facebook-feed-admin.php:2045
1167
- msgid ""
1168
- "You can add your own CSS classes to the feed here. To add multiple classes "
1169
- "separate each with a space, Eg. classone classtwo classthree"
1170
- msgstr ""
1171
-
1172
- #: custom-facebook-feed-admin.php:2085
1173
- msgid "Post Types"
1174
- msgstr ""
1175
-
1176
- #: custom-facebook-feed-admin.php:2087
1177
- msgid "Only show these types of posts:"
1178
- msgstr ""
1179
-
1180
- #: custom-facebook-feed-admin.php:2088
1181
- msgid "Upgrade to Pro to enable post types, photos, videos and more"
1182
- msgstr ""
1183
-
1184
- #: custom-facebook-feed-admin.php:2092
1185
- msgid "Statuses"
1186
- msgstr ""
1187
-
1188
- #: custom-facebook-feed-admin.php:2096
1189
- msgid "Events"
1190
- msgstr ""
1191
-
1192
- #: custom-facebook-feed-admin.php:2100
1193
- msgid "Photos"
1194
- msgstr ""
1195
-
1196
- #: custom-facebook-feed-admin.php:2104
1197
- msgid "Videos"
1198
- msgstr ""
1199
-
1200
- #: custom-facebook-feed-admin.php:2108
1201
- msgid "Links"
1202
- msgstr ""
1203
-
1204
- #: custom-facebook-feed-admin.php:2112
1205
- msgid "Albums"
1206
- msgstr ""
1207
-
1208
- #: custom-facebook-feed-admin.php:2125
1209
- msgid "Show Feed Header"
1210
- msgstr ""
1211
-
1212
- #: custom-facebook-feed-admin.php:2129
1213
- msgid "What is the header?"
1214
- msgstr ""
1215
-
1216
- #: custom-facebook-feed-admin.php:2130
1217
- msgid ""
1218
- "The header allows you to display text and an icon at the top of your feed. "
1219
- "Customize the text, style, and layout of the header using the settings below."
1220
- msgstr ""
1221
-
1222
- #: custom-facebook-feed-admin.php:2135
1223
- msgid "Header Text"
1224
- msgstr ""
1225
-
1226
- #: custom-facebook-feed-admin.php:2143 custom-facebook-feed-admin.php:2301
1227
- msgid "Display outside the scrollable area"
1228
- msgstr ""
1229
-
1230
- #: custom-facebook-feed-admin.php:2146 custom-facebook-feed-admin.php:2285
1231
- #: custom-facebook-feed-admin.php:3844 custom-facebook-feed-admin.php:3853
1232
- #: custom-facebook-feed-admin.php:3863 custom-facebook-feed-admin.php:3880
1233
- #: custom-facebook-feed-admin.php:3904 custom-facebook-feed-admin.php:3935
1234
- msgid "Yes"
1235
- msgstr ""
1236
-
1237
- #: custom-facebook-feed-admin.php:2148
1238
- msgid ""
1239
- "This positions the Header outside of the feed container. It is useful if "
1240
- "your feed has a vertical scrollbar as it places it outside of the scrollable "
1241
- "area and fixes it at the top."
1242
- msgstr ""
1243
-
1244
- #: custom-facebook-feed-admin.php:2153 custom-facebook-feed-admin.php:2419
1245
- #: custom-facebook-feed-admin.php:2737 custom-facebook-feed-admin.php:3696
1246
- msgid "Background Color"
1247
- msgstr ""
1248
-
1249
- #: custom-facebook-feed-admin.php:2160
1250
- msgid "Padding"
1251
- msgstr ""
1252
-
1253
- #: custom-facebook-feed-admin.php:2168 custom-facebook-feed-admin.php:2767
1254
- #: custom-facebook-feed-admin.php:2834 custom-facebook-feed-admin.php:2916
1255
- #: custom-facebook-feed-admin.php:2983 custom-facebook-feed-admin.php:3367
1256
- #: custom-facebook-feed-admin.php:3423 custom-facebook-feed-admin.php:3523
1257
- #: custom-facebook-feed-admin.php:3585
1258
- msgid "Text Size"
1259
- msgstr ""
1260
-
1261
- #: custom-facebook-feed-admin.php:2193 custom-facebook-feed-admin.php:2859
1262
- #: custom-facebook-feed-admin.php:2941 custom-facebook-feed-admin.php:3008
1263
- #: custom-facebook-feed-admin.php:3392 custom-facebook-feed-admin.php:3448
1264
- #: custom-facebook-feed-admin.php:3548 custom-facebook-feed-admin.php:3610
1265
- msgid "Text Weight"
1266
- msgstr ""
1267
-
1268
- #: custom-facebook-feed-admin.php:2204 custom-facebook-feed-admin.php:2425
1269
- #: custom-facebook-feed-admin.php:2792 custom-facebook-feed-admin.php:2870
1270
- #: custom-facebook-feed-admin.php:2952 custom-facebook-feed-admin.php:3019
1271
- #: custom-facebook-feed-admin.php:3403 custom-facebook-feed-admin.php:3459
1272
- #: custom-facebook-feed-admin.php:3559 custom-facebook-feed-admin.php:3621
1273
- #: custom-facebook-feed-admin.php:3682
1274
- msgid "Text Color"
1275
- msgstr ""
1276
-
1277
- #: custom-facebook-feed-admin.php:2211
1278
- msgid "Icon Type"
1279
- msgstr ""
1280
-
1281
- #: custom-facebook-feed-admin.php:2240
1282
- msgid "Icon Color"
1283
- msgstr ""
1284
-
1285
- #: custom-facebook-feed-admin.php:2247
1286
- msgid "Icon Size"
1287
- msgstr ""
1288
-
1289
- #: custom-facebook-feed-admin.php:2278
1290
- msgid "Like Box / Page Plugin"
1291
- msgstr ""
1292
-
1293
- #: custom-facebook-feed-admin.php:2282
1294
- msgid "Show the Like Box"
1295
- msgstr ""
1296
-
1297
- #: custom-facebook-feed-admin.php:2286
1298
- msgid "What is the Like Box?"
1299
- msgstr ""
1300
-
1301
- #: custom-facebook-feed-admin.php:2287
1302
- msgid ""
1303
- "The Like Box is an official Facebook widget that we include at the bottom or "
1304
- "top of the feed. It contains information about your Facebook Page and allows "
1305
- "users to 'like' it directly on your site."
1306
- msgstr ""
1307
-
1308
- #: custom-facebook-feed-admin.php:2291 custom-facebook-feed-admin.php:2972
1309
- msgid "Position"
1310
- msgstr ""
1311
-
1312
- #: custom-facebook-feed-admin.php:2295
1313
- msgid "Bottom of feed"
1314
- msgstr ""
1315
-
1316
- #: custom-facebook-feed-admin.php:2296
1317
- msgid "Top of feed"
1318
- msgstr ""
1319
-
1320
- #: custom-facebook-feed-admin.php:2306
1321
- msgid ""
1322
- "This positions the Like Box widget outside of the feed container. It is "
1323
- "useful if your feed has a vertical scrollbar as it places it outside of the "
1324
- "scrollable area and fixes it at the top or bottom."
1325
- msgstr ""
1326
-
1327
- #: custom-facebook-feed-admin.php:2311
1328
- msgid "Show faces of fans"
1329
- msgstr ""
1330
-
1331
- #: custom-facebook-feed-admin.php:2316
1332
- msgid ""
1333
- "This will display thumbnail photos within the Like Box of some of the people "
1334
- "who like your page."
1335
- msgstr ""
1336
-
1337
- #: custom-facebook-feed-admin.php:2320
1338
- msgid "Include the Cover Photo"
1339
- msgstr ""
1340
-
1341
- #: custom-facebook-feed-admin.php:2327
1342
- msgid "Use a small header"
1343
- msgstr ""
1344
-
1345
- #: custom-facebook-feed-admin.php:2332
1346
- msgid ""
1347
- "This will display a shorter version of the Like Box with a slimmer cover "
1348
- "photo and less information."
1349
- msgstr ""
1350
-
1351
- #: custom-facebook-feed-admin.php:2336
1352
- msgid "Hide custom call to action button"
1353
- msgstr ""
1354
-
1355
- #: custom-facebook-feed-admin.php:2341
1356
- msgid ""
1357
- "If you have a custom 'Call To Action' button for your Facebook Page then "
1358
- "this will hide it and display the default Like Box button."
1359
- msgstr ""
1360
-
1361
- #: custom-facebook-feed-admin.php:2345
1362
- msgid "Custom Like Box Width"
1363
- msgstr ""
1364
-
1365
- #: custom-facebook-feed-admin.php:2349
1366
- msgid "Default: 340, Min: 180, Max: 500"
1367
- msgstr ""
1368
-
1369
- #: custom-facebook-feed-admin.php:2359
1370
- msgid "\"Load More\" button"
1371
- msgstr ""
1372
-
1373
- #: custom-facebook-feed-admin.php:2367
1374
- msgid "Show \"Load More\" Button"
1375
- msgstr ""
1376
-
1377
- #: custom-facebook-feed-admin.php:2371
1378
- msgid ""
1379
- "The Load More button is added to the bottom of your feed and allows you to "
1380
- "dynamically load more posts into your feed. Use the button below to reveal "
1381
- "customization settings for the button."
1382
- msgstr ""
1383
-
1384
- #: custom-facebook-feed-admin.php:2375
1385
- msgid "Button Background Color"
1386
- msgstr ""
1387
-
1388
- #: custom-facebook-feed-admin.php:2381
1389
- msgid "Button Hover Color"
1390
- msgstr ""
1391
-
1392
- #: custom-facebook-feed-admin.php:2387
1393
- msgid "Button Text Color"
1394
- msgstr ""
1395
-
1396
- #: custom-facebook-feed-admin.php:2393
1397
- msgid "Button Text"
1398
- msgstr ""
1399
-
1400
- #: custom-facebook-feed-admin.php:2403
1401
- msgid "Lightbox"
1402
- msgstr ""
1403
-
1404
- #: custom-facebook-feed-admin.php:2411 custom-facebook-feed-admin.php:3795
1405
- msgid "Disable Popup Lightbox"
1406
- msgstr ""
1407
-
1408
- #: custom-facebook-feed-admin.php:2415 custom-facebook-feed-admin.php:3799
1409
- msgid "Disable"
1410
- msgstr ""
1411
-
1412
- #: custom-facebook-feed-admin.php:2431 custom-facebook-feed-admin.php:2877
1413
- #: custom-facebook-feed-admin.php:3566 custom-facebook-feed-admin.php:3689
1414
- msgid "Link Color"
1415
- msgstr ""
1416
-
1417
- #: custom-facebook-feed-admin.php:2437 custom-facebook-feed-admin.php:3729
1418
- msgid "Show Comments in Lightbox"
1419
- msgstr ""
1420
-
1421
- #: custom-facebook-feed-admin.php:2441 custom-facebook-feed-admin.php:3732
1422
- msgid "For timeline posts only"
1423
- msgstr ""
1424
-
1425
- #: custom-facebook-feed-admin.php:2449
1426
- msgid "Filter Content by String"
1427
- msgstr ""
1428
-
1429
- #: custom-facebook-feed-admin.php:2457
1430
- msgid "Only show posts containing:"
1431
- msgstr ""
1432
-
1433
- #: custom-facebook-feed-admin.php:2462
1434
- msgid ""
1435
- "You can use this setting to only display posts containing these text "
1436
- "strings. Separate multiple strings using commas. If only a few posts, or "
1437
- "none at all, are displayed then you may need to increase the plugin's 'Post "
1438
- "Limit' settings. See <a href='https://smashballoon.com/filtering-your-"
1439
- "facebook-posts/' target='_blank'>this FAQ</a> to learn more about how "
1440
- "filtering works."
1441
- msgstr ""
1442
-
1443
- #: custom-facebook-feed-admin.php:2466
1444
- msgid "Don't show posts containing:"
1445
- msgstr ""
1446
-
1447
- #: custom-facebook-feed-admin.php:2470
1448
- msgid ""
1449
- "You can use this setting to remove any posts containing these text strings. "
1450
- "Separate multiple strings using commas."
1451
- msgstr ""
1452
-
1453
- #: custom-facebook-feed-admin.php:2501
1454
- msgid "Post Layouts"
1455
- msgstr ""
1456
-
1457
- #: custom-facebook-feed-admin.php:2502
1458
- msgid "Upgrade to Pro to enable layouts"
1459
- msgstr ""
1460
-
1461
- #: custom-facebook-feed-admin.php:2508
1462
- msgid "Choose a layout from the 3 below."
1463
- msgstr ""
1464
-
1465
- #: custom-facebook-feed-admin.php:2512
1466
- msgid "Thumbnail"
1467
- msgstr ""
1468
-
1469
- #: custom-facebook-feed-admin.php:2517
1470
- msgid "Half-width"
1471
- msgstr ""
1472
-
1473
- #: custom-facebook-feed-admin.php:2522
1474
- msgid "Full-width"
1475
- msgstr ""
1476
-
1477
- #: custom-facebook-feed-admin.php:2531 custom-facebook-feed-admin.php:2540
1478
- msgid "Photo/Video Position"
1479
- msgstr ""
1480
-
1481
- #: custom-facebook-feed-admin.php:2550
1482
- msgid "Always use the Full-width layout when feed is narrow?"
1483
- msgstr ""
1484
-
1485
- #: custom-facebook-feed-admin.php:2554
1486
- msgid ""
1487
- "When displaying posts in either a narrow column or on a mobile device the "
1488
- "plugin will automatically default to using the 'Full-width' layout as it's "
1489
- "better suited to narrow sizes."
1490
- msgstr ""
1491
-
1492
- #: custom-facebook-feed-admin.php:2558
1493
- msgid "Only show one image per post"
1494
- msgstr ""
1495
-
1496
- #: custom-facebook-feed-admin.php:2562
1497
- msgid ""
1498
- "If a Facebook post contains more than photo then enabling this setting means "
1499
- "that only the first photo in the post is displayed."
1500
- msgstr ""
1501
-
1502
- #: custom-facebook-feed-admin.php:2574
1503
- msgid "Show/Hide"
1504
- msgstr ""
1505
-
1506
- #: custom-facebook-feed-admin.php:2578
1507
- msgid ""
1508
- "Include the following in posts: <i style=\"font-size: 11px;\">(when "
1509
- "applicable)</i>"
1510
- msgstr ""
1511
-
1512
- #: custom-facebook-feed-admin.php:2587
1513
- msgid "Author Name and Avatar"
1514
- msgstr ""
1515
-
1516
- #: custom-facebook-feed-admin.php:2588
1517
- msgid ""
1518
- "The author name and avatar image that's shown at the top of each timeline "
1519
- "post"
1520
- msgstr ""
1521
-
1522
- #: custom-facebook-feed-admin.php:2595 custom-facebook-feed-admin.php:2808
1523
- #: custom-facebook-feed-admin.php:3973
1524
- msgid "Post Text"
1525
- msgstr ""
1526
-
1527
- #: custom-facebook-feed-admin.php:2596
1528
- msgid "The main text of the Facebook post"
1529
- msgstr ""
1530
-
1531
- #: custom-facebook-feed-admin.php:2602
1532
- msgid "Description Text"
1533
- msgstr ""
1534
-
1535
- #: custom-facebook-feed-admin.php:2603
1536
- msgid "The description text associated with shared photos, videos, or links"
1537
- msgstr ""
1538
-
1539
- #: custom-facebook-feed-admin.php:2609
1540
- msgid "Shared Link Box"
1541
- msgstr ""
1542
-
1543
- #: custom-facebook-feed-admin.php:2610
1544
- msgid ""
1545
- "The link info box that's created when a link is shared in a Facebook post"
1546
- msgstr ""
1547
-
1548
- #: custom-facebook-feed-admin.php:2616 custom-facebook-feed-admin.php:4033
1549
- msgid "Date"
1550
- msgstr ""
1551
-
1552
- #: custom-facebook-feed-admin.php:2617
1553
- msgid "The date of the post"
1554
- msgstr ""
1555
-
1556
- #: custom-facebook-feed-admin.php:2623
1557
- msgid "Photos and Videos"
1558
- msgstr ""
1559
-
1560
- #: custom-facebook-feed-admin.php:2624
1561
- msgid "Any photos or videos in your posts"
1562
- msgstr ""
1563
-
1564
- #: custom-facebook-feed-admin.php:2630
1565
- msgid "Media link"
1566
- msgstr ""
1567
-
1568
- #: custom-facebook-feed-admin.php:2631
1569
- msgid ""
1570
- "Display an icon and link to Facebook if the post contains either a photo or "
1571
- "video"
1572
- msgstr ""
1573
-
1574
- #: custom-facebook-feed-admin.php:2637 custom-facebook-feed-admin.php:3349
1575
- msgid "Event Title"
1576
- msgstr ""
1577
-
1578
- #: custom-facebook-feed-admin.php:2638
1579
- msgid "The title of an event"
1580
- msgstr ""
1581
-
1582
- #: custom-facebook-feed-admin.php:2644 custom-facebook-feed-admin.php:3519
1583
- msgid "Event Details"
1584
- msgstr ""
1585
-
1586
- #: custom-facebook-feed-admin.php:2645
1587
- msgid "The information associated with an event"
1588
- msgstr ""
1589
-
1590
- #: custom-facebook-feed-admin.php:2651
1591
- msgid "Like, Shares, and Comments"
1592
- msgstr ""
1593
-
1594
- #: custom-facebook-feed-admin.php:2652
1595
- msgid "The comments box displayed at the bottom of each timeline post"
1596
- msgstr ""
1597
-
1598
- #: custom-facebook-feed-admin.php:2658 custom-facebook-feed-admin.php:3580
1599
- #: custom-facebook-feed-admin.php:3986
1600
- msgid "Post Action Links"
1601
- msgstr ""
1602
-
1603
- #: custom-facebook-feed-admin.php:2659
1604
- msgid "The \"View on Facebook\" and \"Share\" links at the bottom of each post"
1605
- msgstr ""
1606
-
1607
- #: custom-facebook-feed-admin.php:2691
1608
- msgid "Post Item"
1609
- msgstr ""
1610
-
1611
- #: custom-facebook-feed-admin.php:2695
1612
- msgid "Post Style"
1613
- msgstr ""
1614
-
1615
- #: custom-facebook-feed-admin.php:2708
1616
- msgid "Regular"
1617
- msgstr ""
1618
-
1619
- #: custom-facebook-feed-admin.php:2714
1620
- msgid "Boxed"
1621
- msgstr ""
1622
-
1623
- #: custom-facebook-feed-admin.php:2722
1624
- msgid "Separating Line Color"
1625
- msgstr ""
1626
-
1627
- #: custom-facebook-feed-admin.php:2728
1628
- msgid "Separating Line Thickness"
1629
- msgstr ""
1630
-
1631
- #: custom-facebook-feed-admin.php:2731
1632
- msgid "Leave empty to hide"
1633
- msgstr ""
1634
-
1635
- #: custom-facebook-feed-admin.php:2743
1636
- msgid "Rounded Corner Size"
1637
- msgstr ""
1638
-
1639
- #: custom-facebook-feed-admin.php:2749
1640
- msgid "Box Shadow"
1641
- msgstr ""
1642
-
1643
- #: custom-facebook-feed-admin.php:2752
1644
- msgid "Adds a subtle shadow around the post"
1645
- msgstr ""
1646
-
1647
- #: custom-facebook-feed-admin.php:2763
1648
- msgid "Post Author"
1649
- msgstr ""
1650
-
1651
- #: custom-facebook-feed-admin.php:2812
1652
- msgid "Maximum Post Text Length"
1653
- msgstr ""
1654
-
1655
- #: custom-facebook-feed-admin.php:2815 custom-facebook-feed-admin.php:3335
1656
- msgid "Characters"
1657
- msgstr ""
1658
-
1659
- #: custom-facebook-feed-admin.php:2815 custom-facebook-feed-admin.php:3335
1660
- msgid "Eg. 200"
1661
- msgstr ""
1662
-
1663
- #: custom-facebook-feed-admin.php:2817
1664
- msgid ""
1665
- "If the post text exceeds this length then a 'See More' link will be added. "
1666
- "Leave empty to set no maximum length."
1667
- msgstr ""
1668
-
1669
- #: custom-facebook-feed-admin.php:2821 custom-facebook-feed-admin.php:3353
1670
- msgid "Format"
1671
- msgstr ""
1672
-
1673
- #: custom-facebook-feed-admin.php:2884
1674
- msgid "Link Text to Facebook Post"
1675
- msgstr ""
1676
-
1677
- #: custom-facebook-feed-admin.php:2890
1678
- msgid "Link Post Tags"
1679
- msgstr ""
1680
-
1681
- #: custom-facebook-feed-admin.php:2894
1682
- msgid "What are Post Tags?"
1683
- msgstr ""
1684
-
1685
- #: custom-facebook-feed-admin.php:2895
1686
- msgid ""
1687
- "When you tag another Facebook page or user in your post using the @ symbol "
1688
- "it creates a post tag, which is a link to either that Facebook page or user "
1689
- "profile."
1690
- msgstr ""
1691
-
1692
- #: custom-facebook-feed-admin.php:2900
1693
- msgid "Link Hashtags"
1694
- msgstr ""
1695
-
1696
- #: custom-facebook-feed-admin.php:2912
1697
- msgid "Shared Post Description"
1698
- msgstr ""
1699
-
1700
- #: custom-facebook-feed-admin.php:2968
1701
- msgid "Post Date"
1702
- msgstr ""
1703
-
1704
- #: custom-facebook-feed-admin.php:3027
1705
- msgid "Date Formatting"
1706
- msgstr ""
1707
-
1708
- #: custom-facebook-feed-admin.php:3032
1709
- msgid "2 days ago"
1710
- msgstr ""
1711
-
1712
- #: custom-facebook-feed-admin.php:3112
1713
- msgid "(GMT+02:00) Helsinki"
1714
- msgstr ""
1715
-
1716
- #: custom-facebook-feed-admin.php:3140
1717
- msgid "(GMT+10:00) Hobart"
1718
- msgstr ""
1719
-
1720
- #: custom-facebook-feed-admin.php:3157
1721
- msgid "Custom Format"
1722
- msgstr ""
1723
-
1724
- #: custom-facebook-feed-admin.php:3161 custom-facebook-feed-admin.php:3511
1725
- msgid "Examples"
1726
- msgstr ""
1727
-
1728
- #: custom-facebook-feed-admin.php:3165
1729
- msgid "Text Before Date"
1730
- msgstr ""
1731
-
1732
- #: custom-facebook-feed-admin.php:3169
1733
- msgid ""
1734
- "You can add custom text here to display immediately <b>before</b> the date "
1735
- "text"
1736
- msgstr ""
1737
-
1738
- #: custom-facebook-feed-admin.php:3173
1739
- msgid "Text After Date"
1740
- msgstr ""
1741
-
1742
- #: custom-facebook-feed-admin.php:3177
1743
- msgid ""
1744
- "You can add custom text here to display immediately <b>after</b> the date "
1745
- "text"
1746
- msgstr ""
1747
-
1748
- #: custom-facebook-feed-admin.php:3187
1749
- msgid "Shared Link Boxes"
1750
- msgstr ""
1751
-
1752
- #: custom-facebook-feed-admin.php:3193
1753
- msgid "Link Box Background Color"
1754
- msgstr ""
1755
-
1756
- #: custom-facebook-feed-admin.php:3201
1757
- msgid "Link Box Border Color"
1758
- msgstr ""
1759
-
1760
- #: custom-facebook-feed-admin.php:3209
1761
- msgid "Remove Background/Border"
1762
- msgstr ""
1763
-
1764
- #: custom-facebook-feed-admin.php:3216
1765
- msgid "Link Title Format"
1766
- msgstr ""
1767
-
1768
- #: custom-facebook-feed-admin.php:3229
1769
- msgid "Link Title Size"
1770
- msgstr ""
1771
-
1772
- #: custom-facebook-feed-admin.php:3254
1773
- msgid "Link Title Color"
1774
- msgstr ""
1775
-
1776
- #: custom-facebook-feed-admin.php:3263
1777
- msgid "Link URL Size"
1778
- msgstr ""
1779
-
1780
- #: custom-facebook-feed-admin.php:3288
1781
- msgid "Link URL Color"
1782
- msgstr ""
1783
-
1784
- #: custom-facebook-feed-admin.php:3298
1785
- msgid "Link Description Size"
1786
- msgstr ""
1787
-
1788
- #: custom-facebook-feed-admin.php:3324
1789
- msgid "Link Description Color"
1790
- msgstr ""
1791
-
1792
- #: custom-facebook-feed-admin.php:3332
1793
- msgid "Maximum Link Description Length"
1794
- msgstr ""
1795
-
1796
- #: custom-facebook-feed-admin.php:3337
1797
- msgid ""
1798
- "If the link description text exceeds this length then it will be truncated "
1799
- "with an ellipsis. Leave empty to set no maximum length."
1800
- msgstr ""
1801
-
1802
- #: custom-facebook-feed-admin.php:3410
1803
- msgid "Link Title to Event on Facebook"
1804
- msgstr ""
1805
-
1806
- #: custom-facebook-feed-admin.php:3419
1807
- msgid "Event Date"
1808
- msgstr ""
1809
-
1810
- #: custom-facebook-feed-admin.php:3466
1811
- msgid "Date Position"
1812
- msgstr ""
1813
-
1814
- #: custom-facebook-feed-admin.php:3470
1815
- msgid "Below event title"
1816
- msgstr ""
1817
-
1818
- #: custom-facebook-feed-admin.php:3471
1819
- msgid "Above event title"
1820
- msgstr ""
1821
-
1822
- #: custom-facebook-feed-admin.php:3476
1823
- msgid "Event Date Formatting"
1824
- msgstr ""
1825
-
1826
- #: custom-facebook-feed-admin.php:3507
1827
- msgid "Custom Event Date Format"
1828
- msgstr ""
1829
-
1830
- #: custom-facebook-feed-admin.php:3581
1831
- msgid ""
1832
- "Post action links refer to the \"View on Facebook\" and \"Share\" links at "
1833
- "the bottom of each post"
1834
- msgstr ""
1835
-
1836
- #: custom-facebook-feed-admin.php:3628
1837
- msgid "\"View on Facebook\" Text"
1838
- msgstr ""
1839
-
1840
- #: custom-facebook-feed-admin.php:3636
1841
- msgid "\"Share\" Text"
1842
- msgstr ""
1843
-
1844
- #: custom-facebook-feed-admin.php:3644
1845
- msgid "Show \"View on Facebook\" link"
1846
- msgstr ""
1847
-
1848
- #: custom-facebook-feed-admin.php:3652
1849
- msgid "Show \"Share\" link"
1850
- msgstr ""
1851
-
1852
- #: custom-facebook-feed-admin.php:3664
1853
- msgid "Likes, Shares and Comments Box"
1854
- msgstr ""
1855
-
1856
- #: custom-facebook-feed-admin.php:3672
1857
- msgid "Icon Style"
1858
- msgstr ""
1859
-
1860
- #: custom-facebook-feed-admin.php:3676
1861
- msgid "Light (for light backgrounds)"
1862
- msgstr ""
1863
-
1864
- #: custom-facebook-feed-admin.php:3677
1865
- msgid "Dark (for dark backgrounds)"
1866
- msgstr ""
1867
-
1868
- #: custom-facebook-feed-admin.php:3703
1869
- msgid "Expand Comments Box Initially"
1870
- msgstr ""
1871
-
1872
- #: custom-facebook-feed-admin.php:3708
1873
- msgid ""
1874
- "Checking this box will automatically expand the comments box beneath each "
1875
- "post. Unchecking this box will mean that users will need to click the number "
1876
- "of comments below each post in order to expand the comments box."
1877
- msgstr ""
1878
-
1879
- #: custom-facebook-feed-admin.php:3712
1880
- msgid "Number of Comments to Show Initially"
1881
- msgstr ""
1882
-
1883
- #: custom-facebook-feed-admin.php:3716
1884
- msgid "25 max"
1885
- msgstr ""
1886
-
1887
- #: custom-facebook-feed-admin.php:3718
1888
- msgid ""
1889
- "The number of comments to show initially when the comments box is expanded."
1890
- msgstr ""
1891
-
1892
- #: custom-facebook-feed-admin.php:3722
1893
- msgid "Hide Comment Avatars"
1894
- msgstr ""
1895
-
1896
- #: custom-facebook-feed-admin.php:3761
1897
- msgid "Custom CSS"
1898
- msgstr ""
1899
-
1900
- #: custom-facebook-feed-admin.php:3766
1901
- msgid "Enter your own custom CSS in the box below"
1902
- msgstr ""
1903
-
1904
- #: custom-facebook-feed-admin.php:3766 custom-facebook-feed-admin.php:3777
1905
- msgid "See some examples"
1906
- msgstr ""
1907
-
1908
- #: custom-facebook-feed-admin.php:3772
1909
- msgid "Custom JavaScript"
1910
- msgstr ""
1911
-
1912
- #: custom-facebook-feed-admin.php:3777
1913
- msgid "Enter your own custom JavaScript/jQuery in the box below"
1914
- msgstr ""
1915
-
1916
- #: custom-facebook-feed-admin.php:3787
1917
- msgid "Media"
1918
- msgstr ""
1919
-
1920
- #: custom-facebook-feed-admin.php:3803
1921
- msgid "Use full-size shared link images"
1922
- msgstr ""
1923
-
1924
- #: custom-facebook-feed-admin.php:3808
1925
- msgid ""
1926
- "By default the shared link boxes in your posts use the same layout selected "
1927
- "on the 'Post Layout' page, however, but you can disable this by unchecking "
1928
- "this setting to force all shared links to use the smaller image thumbnails "
1929
- "instead."
1930
- msgstr ""
1931
-
1932
- #: custom-facebook-feed-admin.php:3812
1933
- msgid "Lightbox video player"
1934
- msgstr ""
1935
-
1936
- #: custom-facebook-feed-admin.php:3816
1937
- msgid "Facebook Video Player"
1938
- msgstr ""
1939
-
1940
- #: custom-facebook-feed-admin.php:3817
1941
- msgid "Standard HTML5 Video"
1942
- msgstr ""
1943
-
1944
- #: custom-facebook-feed-admin.php:3822
1945
- msgid "Play video action"
1946
- msgstr ""
1947
-
1948
- #: custom-facebook-feed-admin.php:3826
1949
- msgid "Play videos directly in the feed"
1950
- msgstr ""
1951
-
1952
- #: custom-facebook-feed-admin.php:3828
1953
- msgid "Link to the video on Facebook"
1954
- msgstr ""
1955
-
1956
- #: custom-facebook-feed-admin.php:3836
1957
- msgid "Misc Settings"
1958
- msgstr ""
1959
-
1960
- #: custom-facebook-feed-admin.php:3840
1961
- msgid "Is your theme loading the feed via Ajax?"
1962
- msgstr ""
1963
-
1964
- #: custom-facebook-feed-admin.php:3846
1965
- msgid ""
1966
- "Some modern WordPress themes use Ajax to load content into the page after it "
1967
- "has loaded. If your theme uses Ajax to load the Custom Facebook Feed content "
1968
- "into the page then check this box. If you are not sure then please check "
1969
- "with the theme author."
1970
- msgstr ""
1971
-
1972
- #: custom-facebook-feed-admin.php:3850
1973
- msgid "Preserve settings when plugin is removed"
1974
- msgstr ""
1975
-
1976
- #: custom-facebook-feed-admin.php:3855
1977
- msgid ""
1978
- "When removing the plugin your settings are automatically deleted from your "
1979
- "database. Checking this box will prevent any settings from being deleted. "
1980
- "This means that you can uninstall and reinstall the plugin without losing "
1981
- "your settings."
1982
- msgstr ""
1983
-
1984
- #: custom-facebook-feed-admin.php:3859
1985
- msgid "Display credit link"
1986
- msgstr ""
1987
-
1988
- #: custom-facebook-feed-admin.php:3864
1989
- msgid "Display a link at the bottom of the feed to help promote the plugin"
1990
- msgstr ""
1991
-
1992
- #: custom-facebook-feed-admin.php:3869
1993
- msgid "Minify CSS and JavaScript files"
1994
- msgstr ""
1995
-
1996
- #: custom-facebook-feed-admin.php:3876
1997
- msgid "Is Facebook Page restricted?"
1998
- msgstr ""
1999
-
2000
- #: custom-facebook-feed-admin.php:3882
2001
- msgid ""
2002
- "If you want to display your Facebook feed on your website then ideally your "
2003
- "Facebook page should not have any age or location restrictions on it as that "
2004
- "restricts the plugin from being able to fully access the content. If it is "
2005
- "not possible for you to remove all restrictions then you can enable this "
2006
- "setting."
2007
- msgstr ""
2008
-
2009
- #: custom-facebook-feed-admin.php:3887
2010
- msgid "Icon font source"
2011
- msgstr ""
2012
-
2013
- #: custom-facebook-feed-admin.php:3890
2014
- msgid "CDN"
2015
- msgstr ""
2016
-
2017
- #: custom-facebook-feed-admin.php:3891
2018
- msgid "Local copy"
2019
- msgstr ""
2020
-
2021
- #: custom-facebook-feed-admin.php:3892
2022
- msgid "Don't load"
2023
- msgstr ""
2024
-
2025
- #: custom-facebook-feed-admin.php:3899
2026
- msgid "Force cache to clear on interval"
2027
- msgstr ""
2028
-
2029
- #: custom-facebook-feed-admin.php:3903
2030
- msgid " - "
2031
- msgstr ""
2032
-
2033
- #: custom-facebook-feed-admin.php:3905
2034
- msgid "No"
2035
- msgstr ""
2036
-
2037
- #: custom-facebook-feed-admin.php:3909
2038
- msgid ""
2039
- "If you're experiencing an issue with the plugin not auto-updating then you "
2040
- "can set this to 'Yes' to run a scheduled event behind the scenes which "
2041
- "forces the plugin cache to clear on a regular basis and retrieve new data "
2042
- "from Facebook."
2043
- msgstr ""
2044
-
2045
- #: custom-facebook-feed-admin.php:3914
2046
- msgid "Request method"
2047
- msgstr ""
2048
-
2049
- #: custom-facebook-feed-admin.php:3918
2050
- msgid "cURL"
2051
- msgstr ""
2052
-
2053
- #: custom-facebook-feed-admin.php:3919
2054
- msgid "file_get_contents"
2055
- msgstr ""
2056
-
2057
- #: custom-facebook-feed-admin.php:3920
2058
- msgid "WP_Http"
2059
- msgstr ""
2060
-
2061
- #: custom-facebook-feed-admin.php:3925
2062
- msgid "Fix text shortening issue"
2063
- msgstr ""
2064
-
2065
- #: custom-facebook-feed-admin.php:3932
2066
- msgid "Disable default styles"
2067
- msgstr ""
2068
-
2069
- #: custom-facebook-feed-admin.php:3937
2070
- msgid ""
2071
- "The plugin includes some basic text and link styles which can be disabled by "
2072
- "enabling this setting. Note that the styles used for the layout of the posts "
2073
- "will still be applied."
2074
- msgstr ""
2075
-
2076
- #: custom-facebook-feed-admin.php:3961
2077
- msgid ""
2078
- "Enter custom text for the words below, or translate it into the language you "
2079
- "would like to use."
2080
- msgstr ""
2081
-
2082
- #: custom-facebook-feed-admin.php:3967
2083
- msgid "Original Text"
2084
- msgstr ""
2085
-
2086
- #: custom-facebook-feed-admin.php:3968
2087
- msgid "Custom Text / Translation"
2088
- msgstr ""
2089
-
2090
- #: custom-facebook-feed-admin.php:3969
2091
- msgid "Context"
2092
- msgstr ""
2093
-
2094
- #: custom-facebook-feed-admin.php:3975
2095
- msgid "See More"
2096
- msgstr ""
2097
-
2098
- #: custom-facebook-feed-admin.php:3977 custom-facebook-feed-admin.php:3983
2099
- msgid "Used when truncating the post text"
2100
- msgstr ""
2101
-
2102
- #: custom-facebook-feed-admin.php:3981
2103
- msgid "See Less"
2104
- msgstr ""
2105
-
2106
- #: custom-facebook-feed-admin.php:3988
2107
- msgid "View on Facebook"
2108
- msgstr ""
2109
-
2110
- #: custom-facebook-feed-admin.php:3990
2111
- msgid "Used for the link to the post on Facebook"
2112
- msgstr ""
2113
-
2114
- #: custom-facebook-feed-admin.php:3993
2115
- msgid "Share"
2116
- msgstr ""
2117
-
2118
- #: custom-facebook-feed-admin.php:3995
2119
- msgid "Used for sharing the Facebook post via Social Media"
2120
- msgstr ""
2121
-
2122
- #: custom-facebook-feed-admin.php:3999
2123
- msgid "photos"
2124
- msgstr ""
2125
-
2126
- #: custom-facebook-feed-admin.php:4001
2127
- msgid "Added to the end of an album name. Eg. (6 photos)"
2128
- msgstr ""
2129
-
2130
- #: custom-facebook-feed-admin.php:4004
2131
- msgid "Media Links"
2132
- msgstr ""
2133
-
2134
- #: custom-facebook-feed-admin.php:4006
2135
- msgid "Photo"
2136
- msgstr ""
2137
-
2138
- #: custom-facebook-feed-admin.php:4008
2139
- msgid "Used to link to photos on Facebook"
2140
- msgstr ""
2141
-
2142
- #: custom-facebook-feed-admin.php:4011
2143
- msgid "Video"
2144
- msgstr ""
2145
-
2146
- #: custom-facebook-feed-admin.php:4013
2147
- msgid "Used to link to videos on Facebook"
2148
- msgstr ""
2149
-
2150
- #: custom-facebook-feed-admin.php:4016
2151
- msgid "Call-to-action Buttons"
2152
- msgstr ""
2153
-
2154
- #: custom-facebook-feed-admin.php:4018
2155
- msgid "Learn More"
2156
- msgstr ""
2157
-
2158
- #: custom-facebook-feed-admin.php:4020
2159
- msgid "Used for the 'Learn More' button"
2160
- msgstr ""
2161
-
2162
- #: custom-facebook-feed-admin.php:4023
2163
- msgid "Shop Now"
2164
- msgstr ""
2165
-
2166
- #: custom-facebook-feed-admin.php:4025
2167
- msgid "Used for the 'Shop Now' button"
2168
- msgstr ""
2169
-
2170
- #: custom-facebook-feed-admin.php:4028
2171
- msgid "Message Page"
2172
- msgstr ""
2173
-
2174
- #: custom-facebook-feed-admin.php:4030
2175
- msgid "Used for the 'Message Page' button"
2176
- msgstr ""
2177
-
2178
- #: custom-facebook-feed-admin.php:4035
2179
- msgid "\"Posted _ hours ago\" text"
2180
- msgstr ""
2181
-
2182
- #: custom-facebook-feed-admin.php:4038
2183
- msgid "second"
2184
- msgstr ""
2185
-
2186
- #: custom-facebook-feed-admin.php:4041
2187
- msgid "seconds"
2188
- msgstr ""
2189
-
2190
- #: custom-facebook-feed-admin.php:4044
2191
- msgid "minute"
2192
- msgstr ""
2193
-
2194
- #: custom-facebook-feed-admin.php:4047
2195
- msgid "minutes"
2196
- msgstr ""
2197
-
2198
- #: custom-facebook-feed-admin.php:4050
2199
- msgid "hour"
2200
- msgstr ""
2201
-
2202
- #: custom-facebook-feed-admin.php:4053
2203
- msgid "hours"
2204
- msgstr ""
2205
-
2206
- #: custom-facebook-feed-admin.php:4056
2207
- msgid "day"
2208
- msgstr ""
2209
-
2210
- #: custom-facebook-feed-admin.php:4059
2211
- msgid "days"
2212
- msgstr ""
2213
-
2214
- #: custom-facebook-feed-admin.php:4062
2215
- msgid "week"
2216
- msgstr ""
2217
-
2218
- #: custom-facebook-feed-admin.php:4065
2219
- msgid "weeks"
2220
- msgstr ""
2221
-
2222
- #: custom-facebook-feed-admin.php:4068
2223
- msgid "month"
2224
- msgstr ""
2225
-
2226
- #: custom-facebook-feed-admin.php:4071
2227
- msgid "months"
2228
- msgstr ""
2229
-
2230
- #: custom-facebook-feed-admin.php:4074
2231
- msgid "year"
2232
- msgstr ""
2233
-
2234
- #: custom-facebook-feed-admin.php:4077
2235
- msgid "years"
2236
- msgstr ""
2237
-
2238
- #: custom-facebook-feed-admin.php:4080
2239
- msgid "ago"
2240
- msgstr ""
2241
-
2242
- #: custom-facebook-feed-admin.php:4083
2243
- msgid "Used to translate the \"__ days ago\" date text"
2244
- msgstr ""
2245
-
2246
- #: custom-facebook-feed-admin.php:4339
2247
- msgid ""
2248
- "PS. We currently have a <a href=\"https://smashballoon.com/custom-facebook-"
2249
- "feed/?utm_source=plugin-free&utm_campaign=cff&discount="
2250
- msgstr ""
2251
-
2252
- #: custom-facebook-feed-admin.php:4357
2253
- msgid ""
2254
- "It's great to see that you've been using the <strong style='font-weight: "
2255
- "700;'>Smash Balloon Custom Facebook Feed</strong> plugin for a while now. "
2256
- "Hopefully you like it! If so, would you consider leaving a positive review? "
2257
- "It really helps support the plugin and helps others to discover it too!"
2258
- msgstr ""
2259
-
2260
- #: custom-facebook-feed-admin.php:4361
2261
- msgid "Sure, I'd love to!"
2262
- msgstr ""
2263
-
2264
- #: custom-facebook-feed-admin.php:4363
2265
- msgid "No thanks"
2266
- msgstr ""
2267
-
2268
- #: custom-facebook-feed-admin.php:4365
2269
- msgid "I've already given a review"
2270
- msgstr ""
2271
-
2272
- #: custom-facebook-feed-admin.php:4367
2273
- msgid "Ask Me Later"
2274
- msgstr ""
2275
-
2276
- #: custom-facebook-feed-admin.php:4384
2277
- #, php-format
2278
- msgid ""
2279
- "<b style=\"font-weight: 700;\">Exclusive offer!</b> We don't run promotions "
2280
- "very often, but for a limited time we're offering <b style=\"font-weight: "
2281
- "700;\">20% off</b> our Pro version to all users of our free Smash Balloon "
2282
- "Custom Facebook Feed plugin."
2283
- msgstr ""
2284
-
2285
- #: custom-facebook-feed-admin.php:4386 custom-facebook-feed-admin.php:4404
2286
- msgid "Get this offer"
2287
- msgstr ""
2288
-
2289
- #: custom-facebook-feed-admin.php:4387 custom-facebook-feed-admin.php:4405
2290
- msgid "I'm not interested"
2291
- msgstr ""
2292
-
2293
- #: custom-facebook-feed-admin.php:4402
2294
- #, php-format
2295
- msgid ""
2296
- "<b style=\"font-weight: 700;\">Black Friday/Cyber Monday Deal!</b> Thank you "
2297
- "for using the free Smash Balloon Custom Facebook Feed plugin. For a limited "
2298
- "time, we're offering <b style=\"font-weight: 700;\">20% off</b> the Pro "
2299
- "version for all of our users."
2300
- msgstr ""
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "POT-Creation-Date: 2020-03-26 13:28-0500\n"
5
+ "PO-Revision-Date: 2020-03-26 13:29-0500\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: \n"
8
+ "Language: en_US\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 2.3\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Poedit-KeywordsList: __;_e;esc_html_e;esc_attr_e\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ #: custom-facebook-feed-admin.php:113 custom-facebook-feed-admin.php:1943
19
+ msgid "Settings saved."
20
+ msgstr ""
21
+
22
+ #: custom-facebook-feed-admin.php:126 custom-facebook-feed-admin.php:1954
23
+ msgid ""
24
+ "You're using Custom Facebook Feed Lite. To unlock more features consider <a "
25
+ "href=\"https://smashballoon.com/custom-facebook-feed/?"
26
+ "utm_source=WordPress&utm_campaign=facebookliteplugin&utm_medium=notice-bar\" "
27
+ "target=\"_blank\" rel=\"noopener noreferrer\">upgrading to Pro</a>."
28
+ msgstr ""
29
+
30
+ #: custom-facebook-feed-admin.php:127 custom-facebook-feed-admin.php:1955
31
+ msgid "Dismiss this message."
32
+ msgstr ""
33
+
34
+ #: custom-facebook-feed-admin.php:133 custom-facebook-feed-admin.php:1962
35
+ #: custom-facebook-feed-admin.php:4355
36
+ msgid "Custom Facebook Feed"
37
+ msgstr ""
38
+
39
+ #: custom-facebook-feed-admin.php:140 custom-facebook-feed-admin.php:152
40
+ #: custom-facebook-feed-admin.php:1974
41
+ msgid "Configuration"
42
+ msgstr ""
43
+
44
+ #: custom-facebook-feed-admin.php:141 custom-facebook-feed-admin.php:1975
45
+ msgid "Customize"
46
+ msgstr ""
47
+
48
+ #: custom-facebook-feed-admin.php:142 custom-facebook-feed-admin.php:763
49
+ #: custom-facebook-feed-admin.php:1976 custom-facebook-feed-admin.php:2480
50
+ msgid "Support"
51
+ msgstr ""
52
+
53
+ #: custom-facebook-feed-admin.php:178 custom-facebook-feed-admin.php:180
54
+ msgid "Continue"
55
+ msgstr ""
56
+
57
+ #: custom-facebook-feed-admin.php:190
58
+ msgid "Log in and get my Access Token"
59
+ msgstr ""
60
+
61
+ #: custom-facebook-feed-admin.php:363
62
+ msgid "Show Available Groups"
63
+ msgstr ""
64
+
65
+ #: custom-facebook-feed-admin.php:363
66
+ msgid "Show Available Pages"
67
+ msgstr ""
68
+
69
+ #: custom-facebook-feed-admin.php:375
70
+ msgid ""
71
+ "Facebook Page ID<br /><i style=\"font-weight: normal; font-size: 12px;\">ID "
72
+ "of your Facebook Page or Group</i>"
73
+ msgstr ""
74
+
75
+ #: custom-facebook-feed-admin.php:380
76
+ msgid "What's my Page ID?"
77
+ msgstr ""
78
+
79
+ #: custom-facebook-feed-admin.php:384
80
+ msgid ""
81
+ "<b>Facebook Page</b><br />\r\n"
82
+ " You can find the ID of your Facebook "
83
+ "<b>Page</b> from the URL. In each URL format, the ID is highlighted below:"
84
+ "<br /><br />\r\n"
85
+ " URL Format 1: <code>https://www.facebook."
86
+ "com/<span class=\"cff-highlight\">your_page_name</span></code>\r\n"
87
+ " <br />\r\n"
88
+ " URL Format 2: <code>https://www.facebook."
89
+ "com/your_page_name-<span class=\"cff-highlight\">1234567890</span></code>\r\n"
90
+ " <br />\r\n"
91
+ " URL Format 3: <code>https://www.facebook."
92
+ "com/pages/your_page_name/<span class=\"cff-highlight\">1234567890</span></"
93
+ "code>\r\n"
94
+ " "
95
+ msgstr ""
96
+
97
+ #: custom-facebook-feed-admin.php:393
98
+ msgid ""
99
+ "<b>Facebook Group</b><br />You can find the ID of your Facebook <b>Group</b> "
100
+ "from the URL, like so: <code>https://www.facebook.com/groups/<span class="
101
+ "\"cff-highlight\">1234567890</span></code>"
102
+ msgstr ""
103
+
104
+ #: custom-facebook-feed-admin.php:417
105
+ msgid "Facebook Access Token"
106
+ msgstr ""
107
+
108
+ #: custom-facebook-feed-admin.php:417
109
+ msgid "Required"
110
+ msgstr ""
111
+
112
+ #: custom-facebook-feed-admin.php:419 custom-facebook-feed-admin.php:3580
113
+ msgid "What is this?"
114
+ msgstr ""
115
+
116
+ #: custom-facebook-feed-admin.php:420
117
+ msgid ""
118
+ "In order to connect to Facebook and get a feed, you need to use an Access "
119
+ "Token. To get one, simply use the blue button above to log into your "
120
+ "Facebook account. You will then receive a token that will be used to connect "
121
+ "to Facebook's API. If you already have an Access Token then you can enter it "
122
+ "here."
123
+ msgstr ""
124
+
125
+ #: custom-facebook-feed-admin.php:423
126
+ msgid ""
127
+ "<p>This doesn't appear to be an Access Token. Please be sure that you didn't "
128
+ "enter your App Secret instead of your Access Token.<br />Your App ID and App "
129
+ "Secret are used to obtain your Access Token; simply paste them into the "
130
+ "fields in the last step of the <a href='https://smashballoon.com/custom-"
131
+ "facebook-feed/access-token/' target='_blank'>Access Token instructions</a> "
132
+ "and click '<b>Get my Access Token</b>'.</p>"
133
+ msgstr ""
134
+
135
+ #: custom-facebook-feed-admin.php:435
136
+ msgid "Is it a Facebook page or group?"
137
+ msgstr ""
138
+
139
+ #: custom-facebook-feed-admin.php:437
140
+ msgid "- Select one -"
141
+ msgstr ""
142
+
143
+ #: custom-facebook-feed-admin.php:438 custom-facebook-feed-admin.php:446
144
+ #: custom-facebook-feed-admin.php:453 custom-facebook-feed-admin.php:456
145
+ #: custom-facebook-feed-admin.php:463 custom-facebook-feed-admin.php:499
146
+ msgid "Page"
147
+ msgstr ""
148
+
149
+ #: custom-facebook-feed-admin.php:439 custom-facebook-feed-admin.php:446
150
+ #: custom-facebook-feed-admin.php:453 custom-facebook-feed-admin.php:456
151
+ #: custom-facebook-feed-admin.php:463 custom-facebook-feed-admin.php:500
152
+ msgid "Group"
153
+ msgstr ""
154
+
155
+ #: custom-facebook-feed-admin.php:446
156
+ msgid "Name"
157
+ msgstr ""
158
+
159
+ #: custom-facebook-feed-admin.php:446
160
+ msgid "(optional)"
161
+ msgstr ""
162
+
163
+ #: custom-facebook-feed-admin.php:449
164
+ msgid "This is just for labeling the account here on this settings page"
165
+ msgstr ""
166
+
167
+ #: custom-facebook-feed-admin.php:453
168
+ msgid "ID"
169
+ msgstr ""
170
+
171
+ #: custom-facebook-feed-admin.php:456
172
+ msgid "The ID of the Facebook"
173
+ msgstr ""
174
+
175
+ #: custom-facebook-feed-admin.php:456
176
+ msgid "you want to add."
177
+ msgstr ""
178
+
179
+ #: custom-facebook-feed-admin.php:456
180
+ msgid "How do I find my Page ID?"
181
+ msgstr ""
182
+
183
+ #: custom-facebook-feed-admin.php:460
184
+ msgid "Access Token"
185
+ msgstr ""
186
+
187
+ #: custom-facebook-feed-admin.php:463
188
+ msgid "The Access Token of the Facebook"
189
+ msgstr ""
190
+
191
+ #: custom-facebook-feed-admin.php:463
192
+ msgid "you want to add"
193
+ msgstr ""
194
+
195
+ #: custom-facebook-feed-admin.php:492 custom-facebook-feed-admin.php:4158
196
+ msgid "Settings"
197
+ msgstr ""
198
+
199
+ #: custom-facebook-feed-admin.php:495
200
+ msgid "Is it a page or group?"
201
+ msgstr ""
202
+
203
+ #: custom-facebook-feed-admin.php:501
204
+ msgid "Profile"
205
+ msgstr ""
206
+
207
+ #: custom-facebook-feed-admin.php:504
208
+ msgid ""
209
+ "<p>Due to Facebook's privacy policy you're not able to display posts from a "
210
+ "personal profile, only from a public Facebook Page.</p><p>If you're using a "
211
+ "profile to represent a business, organization, product, public figure or the "
212
+ "like, then Facebook recommends <a href='http://www.facebook.com/"
213
+ "help/175644189234902/' target='_blank'>converting your profile to a page</"
214
+ "a>. There are many advantages to using pages over profiles, and once you've "
215
+ "converted then the plugin will be able to successfully retrieve and display "
216
+ "all of your posts.</p>"
217
+ msgstr ""
218
+
219
+ #: custom-facebook-feed-admin.php:510
220
+ msgid "Show posts on my page by:"
221
+ msgstr ""
222
+
223
+ #: custom-facebook-feed-admin.php:514
224
+ msgid "Only the page owner (me)"
225
+ msgstr ""
226
+
227
+ #: custom-facebook-feed-admin.php:515
228
+ msgid "Page owner + other people"
229
+ msgstr ""
230
+
231
+ #: custom-facebook-feed-admin.php:516
232
+ msgid "Only other people"
233
+ msgstr ""
234
+
235
+ #: custom-facebook-feed-admin.php:522
236
+ msgid "Number of posts to display"
237
+ msgstr ""
238
+
239
+ #: custom-facebook-feed-admin.php:530
240
+ msgid "Facebook API post limit"
241
+ msgstr ""
242
+
243
+ #: custom-facebook-feed-admin.php:534 custom-facebook-feed-admin.php:544
244
+ #: custom-facebook-feed-admin.php:3917
245
+ msgid "Auto"
246
+ msgstr ""
247
+
248
+ #: custom-facebook-feed-admin.php:535 custom-facebook-feed-admin.php:547
249
+ msgid "Manual"
250
+ msgstr ""
251
+
252
+ #: custom-facebook-feed-admin.php:542
253
+ msgid ""
254
+ "The post 'limit' is the number of posts retrieved from the Facebook API. "
255
+ "Most users won't need to manually adjust this setting as by default the "
256
+ "plugin automatically retrieves a few more posts from the Facebook API than "
257
+ "you need, as some posts may be filtered out."
258
+ msgstr ""
259
+
260
+ #: custom-facebook-feed-admin.php:544
261
+ msgid "Recommended"
262
+ msgstr ""
263
+
264
+ #: custom-facebook-feed-admin.php:545
265
+ msgid ""
266
+ "Allow the plugin to automatically decide how many posts to retrieve from "
267
+ "Facebook's API."
268
+ msgstr ""
269
+
270
+ #: custom-facebook-feed-admin.php:548
271
+ msgid ""
272
+ "Manually set how many posts to retrieve from Facebook's API.<br /><b>Note:</"
273
+ "b> If you choose to retrieve a high number of posts then it will take longer "
274
+ "for Facebook to return the posts when the plugin checks for new ones."
275
+ msgstr ""
276
+
277
+ #: custom-facebook-feed-admin.php:552
278
+ msgid "Check for new posts every"
279
+ msgstr ""
280
+
281
+ #: custom-facebook-feed-admin.php:556
282
+ msgid "Minutes"
283
+ msgstr ""
284
+
285
+ #: custom-facebook-feed-admin.php:557
286
+ msgid "Hours"
287
+ msgstr ""
288
+
289
+ #: custom-facebook-feed-admin.php:558
290
+ msgid "Days"
291
+ msgstr ""
292
+
293
+ #: custom-facebook-feed-admin.php:561
294
+ msgid ""
295
+ "Your Facebook posts and comments data is temporarily cached by the plugin in "
296
+ "your WordPress database. You can choose how long this data should be cached "
297
+ "for. If you set the time to 60 minutes then the plugin will clear the cached "
298
+ "data after that length of time, and the next time the page is viewed it will "
299
+ "check for new data."
300
+ msgstr ""
301
+
302
+ #: custom-facebook-feed-admin.php:566
303
+ msgid "Localization"
304
+ msgstr ""
305
+
306
+ #: custom-facebook-feed-admin.php:570
307
+ msgid "Afrikaans"
308
+ msgstr ""
309
+
310
+ #: custom-facebook-feed-admin.php:571
311
+ msgid "Arabic"
312
+ msgstr ""
313
+
314
+ #: custom-facebook-feed-admin.php:572
315
+ msgid "Azerbaijani"
316
+ msgstr ""
317
+
318
+ #: custom-facebook-feed-admin.php:573
319
+ msgid "Belarusian"
320
+ msgstr ""
321
+
322
+ #: custom-facebook-feed-admin.php:574
323
+ msgid "Bulgarian"
324
+ msgstr ""
325
+
326
+ #: custom-facebook-feed-admin.php:575
327
+ msgid "Bengali"
328
+ msgstr ""
329
+
330
+ #: custom-facebook-feed-admin.php:576
331
+ msgid "Bosnian"
332
+ msgstr ""
333
+
334
+ #: custom-facebook-feed-admin.php:577
335
+ msgid "Catalan"
336
+ msgstr ""
337
+
338
+ #: custom-facebook-feed-admin.php:578
339
+ msgid "Czech"
340
+ msgstr ""
341
+
342
+ #: custom-facebook-feed-admin.php:579
343
+ msgid "Welsh"
344
+ msgstr ""
345
+
346
+ #: custom-facebook-feed-admin.php:580
347
+ msgid "Danish"
348
+ msgstr ""
349
+
350
+ #: custom-facebook-feed-admin.php:581
351
+ msgid "German"
352
+ msgstr ""
353
+
354
+ #: custom-facebook-feed-admin.php:582
355
+ msgid "Greek"
356
+ msgstr ""
357
+
358
+ #: custom-facebook-feed-admin.php:583
359
+ msgid "English (UK)"
360
+ msgstr ""
361
+
362
+ #: custom-facebook-feed-admin.php:584
363
+ msgid "English (Pirate)"
364
+ msgstr ""
365
+
366
+ #: custom-facebook-feed-admin.php:585
367
+ msgid "English (Upside Down)"
368
+ msgstr ""
369
+
370
+ #: custom-facebook-feed-admin.php:586
371
+ msgid "English (US)"
372
+ msgstr ""
373
+
374
+ #: custom-facebook-feed-admin.php:587
375
+ msgid "Esperanto"
376
+ msgstr ""
377
+
378
+ #: custom-facebook-feed-admin.php:588
379
+ msgid "Spanish (Spain)"
380
+ msgstr ""
381
+
382
+ #: custom-facebook-feed-admin.php:589
383
+ msgid "Spanish"
384
+ msgstr ""
385
+
386
+ #: custom-facebook-feed-admin.php:590
387
+ msgid "Estonian"
388
+ msgstr ""
389
+
390
+ #: custom-facebook-feed-admin.php:591
391
+ msgid "Basque"
392
+ msgstr ""
393
+
394
+ #: custom-facebook-feed-admin.php:592
395
+ msgid "Persian"
396
+ msgstr ""
397
+
398
+ #: custom-facebook-feed-admin.php:593
399
+ msgid "Leet Speak"
400
+ msgstr ""
401
+
402
+ #: custom-facebook-feed-admin.php:594
403
+ msgid "Finnish"
404
+ msgstr ""
405
+
406
+ #: custom-facebook-feed-admin.php:595
407
+ msgid "Faroese"
408
+ msgstr ""
409
+
410
+ #: custom-facebook-feed-admin.php:596
411
+ msgid "French (Canada)"
412
+ msgstr ""
413
+
414
+ #: custom-facebook-feed-admin.php:597
415
+ msgid "French (France)"
416
+ msgstr ""
417
+
418
+ #: custom-facebook-feed-admin.php:598
419
+ msgid "Frisian"
420
+ msgstr ""
421
+
422
+ #: custom-facebook-feed-admin.php:599
423
+ msgid "Irish"
424
+ msgstr ""
425
+
426
+ #: custom-facebook-feed-admin.php:600
427
+ msgid "Galician"
428
+ msgstr ""
429
+
430
+ #: custom-facebook-feed-admin.php:601
431
+ msgid "Hebrew"
432
+ msgstr ""
433
+
434
+ #: custom-facebook-feed-admin.php:602
435
+ msgid "Hindi"
436
+ msgstr ""
437
+
438
+ #: custom-facebook-feed-admin.php:603
439
+ msgid "Croatian"
440
+ msgstr ""
441
+
442
+ #: custom-facebook-feed-admin.php:604
443
+ msgid "Hungarian"
444
+ msgstr ""
445
+
446
+ #: custom-facebook-feed-admin.php:605
447
+ msgid "Armenian"
448
+ msgstr ""
449
+
450
+ #: custom-facebook-feed-admin.php:606
451
+ msgid "Indonesian"
452
+ msgstr ""
453
+
454
+ #: custom-facebook-feed-admin.php:607
455
+ msgid "Icelandic"
456
+ msgstr ""
457
+
458
+ #: custom-facebook-feed-admin.php:608
459
+ msgid "Italian"
460
+ msgstr ""
461
+
462
+ #: custom-facebook-feed-admin.php:609
463
+ msgid "Japanese"
464
+ msgstr ""
465
+
466
+ #: custom-facebook-feed-admin.php:610
467
+ msgid "Georgian"
468
+ msgstr ""
469
+
470
+ #: custom-facebook-feed-admin.php:611
471
+ msgid "Khmer"
472
+ msgstr ""
473
+
474
+ #: custom-facebook-feed-admin.php:612
475
+ msgid "Korean"
476
+ msgstr ""
477
+
478
+ #: custom-facebook-feed-admin.php:613
479
+ msgid "Kurdish"
480
+ msgstr ""
481
+
482
+ #: custom-facebook-feed-admin.php:614
483
+ msgid "Latin"
484
+ msgstr ""
485
+
486
+ #: custom-facebook-feed-admin.php:615
487
+ msgid "Lithuanian"
488
+ msgstr ""
489
+
490
+ #: custom-facebook-feed-admin.php:616
491
+ msgid "Latvian"
492
+ msgstr ""
493
+
494
+ #: custom-facebook-feed-admin.php:617
495
+ msgid "Macedonian"
496
+ msgstr ""
497
+
498
+ #: custom-facebook-feed-admin.php:618
499
+ msgid "Malayalam"
500
+ msgstr ""
501
+
502
+ #: custom-facebook-feed-admin.php:619
503
+ msgid "Malay"
504
+ msgstr ""
505
+
506
+ #: custom-facebook-feed-admin.php:620
507
+ msgid "Norwegian (bokmal)"
508
+ msgstr ""
509
+
510
+ #: custom-facebook-feed-admin.php:621
511
+ msgid "Nepali"
512
+ msgstr ""
513
+
514
+ #: custom-facebook-feed-admin.php:622
515
+ msgid "Dutch"
516
+ msgstr ""
517
+
518
+ #: custom-facebook-feed-admin.php:623
519
+ msgid "Norwegian (nynorsk)"
520
+ msgstr ""
521
+
522
+ #: custom-facebook-feed-admin.php:624
523
+ msgid "Punjabi"
524
+ msgstr ""
525
+
526
+ #: custom-facebook-feed-admin.php:625
527
+ msgid "Polish"
528
+ msgstr ""
529
+
530
+ #: custom-facebook-feed-admin.php:626
531
+ msgid "Pashto"
532
+ msgstr ""
533
+
534
+ #: custom-facebook-feed-admin.php:627
535
+ msgid "Portuguese (Brazil)"
536
+ msgstr ""
537
+
538
+ #: custom-facebook-feed-admin.php:628
539
+ msgid "Portuguese (Portugal)"
540
+ msgstr ""
541
+
542
+ #: custom-facebook-feed-admin.php:629
543
+ msgid "Romanian"
544
+ msgstr ""
545
+
546
+ #: custom-facebook-feed-admin.php:630
547
+ msgid "Russian"
548
+ msgstr ""
549
+
550
+ #: custom-facebook-feed-admin.php:631
551
+ msgid "Slovak"
552
+ msgstr ""
553
+
554
+ #: custom-facebook-feed-admin.php:632
555
+ msgid "Slovenian"
556
+ msgstr ""
557
+
558
+ #: custom-facebook-feed-admin.php:633
559
+ msgid "Albanian"
560
+ msgstr ""
561
+
562
+ #: custom-facebook-feed-admin.php:634
563
+ msgid "Serbian"
564
+ msgstr ""
565
+
566
+ #: custom-facebook-feed-admin.php:635
567
+ msgid "Swedish"
568
+ msgstr ""
569
+
570
+ #: custom-facebook-feed-admin.php:636
571
+ msgid "Swahili"
572
+ msgstr ""
573
+
574
+ #: custom-facebook-feed-admin.php:637
575
+ msgid "Tamil"
576
+ msgstr ""
577
+
578
+ #: custom-facebook-feed-admin.php:638
579
+ msgid "Telugu"
580
+ msgstr ""
581
+
582
+ #: custom-facebook-feed-admin.php:639
583
+ msgid "Thai"
584
+ msgstr ""
585
+
586
+ #: custom-facebook-feed-admin.php:640
587
+ msgid "Filipino"
588
+ msgstr ""
589
+
590
+ #: custom-facebook-feed-admin.php:641
591
+ msgid "Turkish"
592
+ msgstr ""
593
+
594
+ #: custom-facebook-feed-admin.php:642
595
+ msgid "Ukrainian"
596
+ msgstr ""
597
+
598
+ #: custom-facebook-feed-admin.php:643
599
+ msgid "Vietnamese"
600
+ msgstr ""
601
+
602
+ #: custom-facebook-feed-admin.php:644
603
+ msgid "Simplified Chinese (China)"
604
+ msgstr ""
605
+
606
+ #: custom-facebook-feed-admin.php:645
607
+ msgid "Traditional Chinese (Hong Kong)"
608
+ msgstr ""
609
+
610
+ #: custom-facebook-feed-admin.php:646
611
+ msgid "Traditional Chinese (Taiwan)"
612
+ msgstr ""
613
+
614
+ #: custom-facebook-feed-admin.php:649
615
+ msgid ""
616
+ "This translates some of the text sent by Facebook, specifically, the "
617
+ "descriptive post text (eg: Smash Balloon shared a link) and the text in the "
618
+ "'Like Box' widget. To find out how to translate the other text in the plugin "
619
+ "see <a href='https://smashballoon.com/cff-how-does-the-plugin-handle-text-"
620
+ "and-language-translation/' target='_blank'>this FAQ</a>."
621
+ msgstr ""
622
+
623
+ #: custom-facebook-feed-admin.php:654 custom-facebook-feed-admin.php:3056
624
+ msgid "Timezone"
625
+ msgstr ""
626
+
627
+ #: custom-facebook-feed-admin.php:659 custom-facebook-feed-admin.php:3061
628
+ msgid "(GMT-11:00) Midway Island, Samoa"
629
+ msgstr ""
630
+
631
+ #: custom-facebook-feed-admin.php:660 custom-facebook-feed-admin.php:3062
632
+ msgid "(GMT-10:00) Hawaii-Aleutian"
633
+ msgstr ""
634
+
635
+ #: custom-facebook-feed-admin.php:661 custom-facebook-feed-admin.php:3063
636
+ msgid "(GMT-10:00) Hawaii"
637
+ msgstr ""
638
+
639
+ #: custom-facebook-feed-admin.php:662 custom-facebook-feed-admin.php:3064
640
+ msgid "(GMT-09:30) Marquesas Islands"
641
+ msgstr ""
642
+
643
+ #: custom-facebook-feed-admin.php:663 custom-facebook-feed-admin.php:3065
644
+ msgid "(GMT-09:00) Gambier Islands"
645
+ msgstr ""
646
+
647
+ #: custom-facebook-feed-admin.php:664 custom-facebook-feed-admin.php:3066
648
+ msgid "(GMT-09:00) Alaska"
649
+ msgstr ""
650
+
651
+ #: custom-facebook-feed-admin.php:665 custom-facebook-feed-admin.php:3067
652
+ msgid "(GMT-08:00) Tijuana, Baja California"
653
+ msgstr ""
654
+
655
+ #: custom-facebook-feed-admin.php:666 custom-facebook-feed-admin.php:3068
656
+ msgid "(GMT-08:00) Pitcairn Islands"
657
+ msgstr ""
658
+
659
+ #: custom-facebook-feed-admin.php:667 custom-facebook-feed-admin.php:3069
660
+ msgid "(GMT-08:00) Pacific Time (US & Canada)"
661
+ msgstr ""
662
+
663
+ #: custom-facebook-feed-admin.php:668 custom-facebook-feed-admin.php:3070
664
+ msgid "(GMT-07:00) Mountain Time (US & Canada)"
665
+ msgstr ""
666
+
667
+ #: custom-facebook-feed-admin.php:669 custom-facebook-feed-admin.php:3071
668
+ msgid "(GMT-07:00) Chihuahua, La Paz, Mazatlan"
669
+ msgstr ""
670
+
671
+ #: custom-facebook-feed-admin.php:670 custom-facebook-feed-admin.php:3072
672
+ msgid "(GMT-07:00) Arizona"
673
+ msgstr ""
674
+
675
+ #: custom-facebook-feed-admin.php:671 custom-facebook-feed-admin.php:3073
676
+ msgid "(GMT-06:00) Saskatchewan, Central America"
677
+ msgstr ""
678
+
679
+ #: custom-facebook-feed-admin.php:672 custom-facebook-feed-admin.php:3074
680
+ msgid "(GMT-06:00) Guadalajara, Mexico City, Monterrey"
681
+ msgstr ""
682
+
683
+ #: custom-facebook-feed-admin.php:673 custom-facebook-feed-admin.php:3075
684
+ msgid "(GMT-06:00) Easter Island"
685
+ msgstr ""
686
+
687
+ #: custom-facebook-feed-admin.php:674 custom-facebook-feed-admin.php:3076
688
+ msgid "(GMT-06:00) Central Time (US & Canada)"
689
+ msgstr ""
690
+
691
+ #: custom-facebook-feed-admin.php:675 custom-facebook-feed-admin.php:3077
692
+ msgid "(GMT-05:00) Eastern Time (US & Canada)"
693
+ msgstr ""
694
+
695
+ #: custom-facebook-feed-admin.php:676 custom-facebook-feed-admin.php:3078
696
+ msgid "(GMT-05:00) Cuba"
697
+ msgstr ""
698
+
699
+ #: custom-facebook-feed-admin.php:677 custom-facebook-feed-admin.php:3079
700
+ msgid "(GMT-05:00) Bogota, Lima, Quito, Rio Branco"
701
+ msgstr ""
702
+
703
+ #: custom-facebook-feed-admin.php:678 custom-facebook-feed-admin.php:3080
704
+ msgid "(GMT-04:30) Caracas"
705
+ msgstr ""
706
+
707
+ #: custom-facebook-feed-admin.php:679 custom-facebook-feed-admin.php:3081
708
+ msgid "(GMT-04:00) Santiago"
709
+ msgstr ""
710
+
711
+ #: custom-facebook-feed-admin.php:680 custom-facebook-feed-admin.php:3082
712
+ msgid "(GMT-04:00) La Paz"
713
+ msgstr ""
714
+
715
+ #: custom-facebook-feed-admin.php:681 custom-facebook-feed-admin.php:3083
716
+ msgid "(GMT-04:00) Faukland Islands"
717
+ msgstr ""
718
+
719
+ #: custom-facebook-feed-admin.php:682 custom-facebook-feed-admin.php:3084
720
+ msgid "(GMT-04:00) Brazil"
721
+ msgstr ""
722
+
723
+ #: custom-facebook-feed-admin.php:683 custom-facebook-feed-admin.php:3085
724
+ msgid "(GMT-04:00) Atlantic Time (Goose Bay)"
725
+ msgstr ""
726
+
727
+ #: custom-facebook-feed-admin.php:684 custom-facebook-feed-admin.php:3086
728
+ msgid "(GMT-04:00) Atlantic Time (Canada)"
729
+ msgstr ""
730
+
731
+ #: custom-facebook-feed-admin.php:685 custom-facebook-feed-admin.php:3087
732
+ msgid "(GMT-03:30) Newfoundland"
733
+ msgstr ""
734
+
735
+ #: custom-facebook-feed-admin.php:686 custom-facebook-feed-admin.php:3088
736
+ msgid "(GMT-03:00) UTC-3"
737
+ msgstr ""
738
+
739
+ #: custom-facebook-feed-admin.php:687 custom-facebook-feed-admin.php:3089
740
+ msgid "(GMT-03:00) Montevideo"
741
+ msgstr ""
742
+
743
+ #: custom-facebook-feed-admin.php:688 custom-facebook-feed-admin.php:3090
744
+ msgid "(GMT-03:00) Miquelon, St. Pierre"
745
+ msgstr ""
746
+
747
+ #: custom-facebook-feed-admin.php:689 custom-facebook-feed-admin.php:3091
748
+ msgid "(GMT-03:00) Greenland"
749
+ msgstr ""
750
+
751
+ #: custom-facebook-feed-admin.php:690 custom-facebook-feed-admin.php:3092
752
+ msgid "(GMT-03:00) Buenos Aires"
753
+ msgstr ""
754
+
755
+ #: custom-facebook-feed-admin.php:691 custom-facebook-feed-admin.php:3093
756
+ msgid "(GMT-03:00) Brasilia"
757
+ msgstr ""
758
+
759
+ #: custom-facebook-feed-admin.php:692 custom-facebook-feed-admin.php:3094
760
+ msgid "(GMT-02:00) Mid-Atlantic"
761
+ msgstr ""
762
+
763
+ #: custom-facebook-feed-admin.php:693 custom-facebook-feed-admin.php:3095
764
+ msgid "(GMT-01:00) Cape Verde Is."
765
+ msgstr ""
766
+
767
+ #: custom-facebook-feed-admin.php:694 custom-facebook-feed-admin.php:3096
768
+ msgid "(GMT-01:00) Azores"
769
+ msgstr ""
770
+
771
+ #: custom-facebook-feed-admin.php:695 custom-facebook-feed-admin.php:3097
772
+ msgid "(GMT) Greenwich Mean Time : Belfast"
773
+ msgstr ""
774
+
775
+ #: custom-facebook-feed-admin.php:696 custom-facebook-feed-admin.php:3098
776
+ msgid "(GMT) Greenwich Mean Time : Dublin"
777
+ msgstr ""
778
+
779
+ #: custom-facebook-feed-admin.php:697 custom-facebook-feed-admin.php:3099
780
+ msgid "(GMT) Greenwich Mean Time : Lisbon"
781
+ msgstr ""
782
+
783
+ #: custom-facebook-feed-admin.php:698 custom-facebook-feed-admin.php:3100
784
+ msgid "(GMT) Greenwich Mean Time : London"
785
+ msgstr ""
786
+
787
+ #: custom-facebook-feed-admin.php:699 custom-facebook-feed-admin.php:3101
788
+ msgid "(GMT) Monrovia, Reykjavik"
789
+ msgstr ""
790
+
791
+ #: custom-facebook-feed-admin.php:700 custom-facebook-feed-admin.php:3102
792
+ msgid "(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna"
793
+ msgstr ""
794
+
795
+ #: custom-facebook-feed-admin.php:701 custom-facebook-feed-admin.php:3103
796
+ msgid "(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague"
797
+ msgstr ""
798
+
799
+ #: custom-facebook-feed-admin.php:702 custom-facebook-feed-admin.php:3104
800
+ msgid "(GMT+01:00) Brussels, Copenhagen, Madrid, Paris"
801
+ msgstr ""
802
+
803
+ #: custom-facebook-feed-admin.php:703 custom-facebook-feed-admin.php:3105
804
+ msgid "(GMT+01:00) West Central Africa"
805
+ msgstr ""
806
+
807
+ #: custom-facebook-feed-admin.php:704 custom-facebook-feed-admin.php:3106
808
+ msgid "(GMT+01:00) Windhoek"
809
+ msgstr ""
810
+
811
+ #: custom-facebook-feed-admin.php:705 custom-facebook-feed-admin.php:3107
812
+ msgid "(GMT+02:00) Beirut"
813
+ msgstr ""
814
+
815
+ #: custom-facebook-feed-admin.php:706 custom-facebook-feed-admin.php:3108
816
+ msgid "(GMT+02:00) Cairo"
817
+ msgstr ""
818
+
819
+ #: custom-facebook-feed-admin.php:707 custom-facebook-feed-admin.php:3109
820
+ msgid "(GMT+02:00) Gaza"
821
+ msgstr ""
822
+
823
+ #: custom-facebook-feed-admin.php:708 custom-facebook-feed-admin.php:3110
824
+ msgid "(GMT+02:00) Harare, Pretoria"
825
+ msgstr ""
826
+
827
+ #: custom-facebook-feed-admin.php:709 custom-facebook-feed-admin.php:3111
828
+ msgid "(GMT+02:00) Jerusalem"
829
+ msgstr ""
830
+
831
+ #: custom-facebook-feed-admin.php:710 custom-facebook-feed-admin.php:3113
832
+ msgid "(GMT+02:00) Minsk"
833
+ msgstr ""
834
+
835
+ #: custom-facebook-feed-admin.php:711 custom-facebook-feed-admin.php:3114
836
+ msgid "(GMT+02:00) Syria"
837
+ msgstr ""
838
+
839
+ #: custom-facebook-feed-admin.php:712 custom-facebook-feed-admin.php:3115
840
+ msgid "(GMT+03:00) Moscow, St. Petersburg, Volgograd"
841
+ msgstr ""
842
+
843
+ #: custom-facebook-feed-admin.php:713 custom-facebook-feed-admin.php:3116
844
+ msgid "(GMT+03:00) Nairobi"
845
+ msgstr ""
846
+
847
+ #: custom-facebook-feed-admin.php:714 custom-facebook-feed-admin.php:3117
848
+ msgid "(GMT+03:30) Tehran"
849
+ msgstr ""
850
+
851
+ #: custom-facebook-feed-admin.php:715 custom-facebook-feed-admin.php:3118
852
+ msgid "(GMT+04:00) Abu Dhabi, Muscat"
853
+ msgstr ""
854
+
855
+ #: custom-facebook-feed-admin.php:716 custom-facebook-feed-admin.php:3119
856
+ msgid "(GMT+04:00) Yerevan"
857
+ msgstr ""
858
+
859
+ #: custom-facebook-feed-admin.php:717 custom-facebook-feed-admin.php:3120
860
+ msgid "(GMT+04:30) Kabul"
861
+ msgstr ""
862
+
863
+ #: custom-facebook-feed-admin.php:718 custom-facebook-feed-admin.php:3121
864
+ msgid "(GMT+05:00) Ekaterinburg"
865
+ msgstr ""
866
+
867
+ #: custom-facebook-feed-admin.php:719 custom-facebook-feed-admin.php:3122
868
+ msgid "(GMT+05:00) Tashkent"
869
+ msgstr ""
870
+
871
+ #: custom-facebook-feed-admin.php:720 custom-facebook-feed-admin.php:3123
872
+ msgid "(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi"
873
+ msgstr ""
874
+
875
+ #: custom-facebook-feed-admin.php:721 custom-facebook-feed-admin.php:3124
876
+ msgid "(GMT+05:45) Kathmandu"
877
+ msgstr ""
878
+
879
+ #: custom-facebook-feed-admin.php:722 custom-facebook-feed-admin.php:3125
880
+ msgid "(GMT+06:00) Astana, Dhaka"
881
+ msgstr ""
882
+
883
+ #: custom-facebook-feed-admin.php:723 custom-facebook-feed-admin.php:3126
884
+ msgid "(GMT+06:00) Novosibirsk"
885
+ msgstr ""
886
+
887
+ #: custom-facebook-feed-admin.php:724 custom-facebook-feed-admin.php:3127
888
+ msgid "(GMT+06:30) Yangon (Rangoon)"
889
+ msgstr ""
890
+
891
+ #: custom-facebook-feed-admin.php:725 custom-facebook-feed-admin.php:3128
892
+ msgid "(GMT+07:00) Bangkok, Hanoi, Jakarta"
893
+ msgstr ""
894
+
895
+ #: custom-facebook-feed-admin.php:726 custom-facebook-feed-admin.php:3129
896
+ msgid "(GMT+07:00) Krasnoyarsk"
897
+ msgstr ""
898
+
899
+ #: custom-facebook-feed-admin.php:727 custom-facebook-feed-admin.php:3130
900
+ msgid "(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi"
901
+ msgstr ""
902
+
903
+ #: custom-facebook-feed-admin.php:728 custom-facebook-feed-admin.php:3131
904
+ msgid "(GMT+08:00) Irkutsk, Ulaan Bataar"
905
+ msgstr ""
906
+
907
+ #: custom-facebook-feed-admin.php:729 custom-facebook-feed-admin.php:3132
908
+ msgid "(GMT+08:00) Perth"
909
+ msgstr ""
910
+
911
+ #: custom-facebook-feed-admin.php:730 custom-facebook-feed-admin.php:3133
912
+ msgid "(GMT+08:45) Eucla"
913
+ msgstr ""
914
+
915
+ #: custom-facebook-feed-admin.php:731 custom-facebook-feed-admin.php:3134
916
+ msgid "(GMT+09:00) Osaka, Sapporo, Tokyo"
917
+ msgstr ""
918
+
919
+ #: custom-facebook-feed-admin.php:732 custom-facebook-feed-admin.php:3135
920
+ msgid "(GMT+09:00) Seoul"
921
+ msgstr ""
922
+
923
+ #: custom-facebook-feed-admin.php:733 custom-facebook-feed-admin.php:3136
924
+ msgid "(GMT+09:00) Yakutsk"
925
+ msgstr ""
926
+
927
+ #: custom-facebook-feed-admin.php:734 custom-facebook-feed-admin.php:3137
928
+ msgid "(GMT+09:30) Adelaide"
929
+ msgstr ""
930
+
931
+ #: custom-facebook-feed-admin.php:735 custom-facebook-feed-admin.php:3138
932
+ msgid "(GMT+09:30) Darwin"
933
+ msgstr ""
934
+
935
+ #: custom-facebook-feed-admin.php:736 custom-facebook-feed-admin.php:3139
936
+ msgid "(GMT+10:00) Brisbane"
937
+ msgstr ""
938
+
939
+ #: custom-facebook-feed-admin.php:737
940
+ msgid "(GMT+10:00) Sydney"
941
+ msgstr ""
942
+
943
+ #: custom-facebook-feed-admin.php:738 custom-facebook-feed-admin.php:3141
944
+ msgid "(GMT+10:00) Vladivostok"
945
+ msgstr ""
946
+
947
+ #: custom-facebook-feed-admin.php:739 custom-facebook-feed-admin.php:3142
948
+ msgid "(GMT+10:30) Lord Howe Island"
949
+ msgstr ""
950
+
951
+ #: custom-facebook-feed-admin.php:740 custom-facebook-feed-admin.php:3143
952
+ msgid "(GMT+11:00) Solomon Is., New Caledonia"
953
+ msgstr ""
954
+
955
+ #: custom-facebook-feed-admin.php:741 custom-facebook-feed-admin.php:3144
956
+ msgid "(GMT+11:00) Magadan"
957
+ msgstr ""
958
+
959
+ #: custom-facebook-feed-admin.php:742 custom-facebook-feed-admin.php:3145
960
+ msgid "(GMT+11:30) Norfolk Island"
961
+ msgstr ""
962
+
963
+ #: custom-facebook-feed-admin.php:743 custom-facebook-feed-admin.php:3146
964
+ msgid "(GMT+12:00) Anadyr, Kamchatka"
965
+ msgstr ""
966
+
967
+ #: custom-facebook-feed-admin.php:744 custom-facebook-feed-admin.php:3147
968
+ msgid "(GMT+12:00) Auckland, Wellington"
969
+ msgstr ""
970
+
971
+ #: custom-facebook-feed-admin.php:745 custom-facebook-feed-admin.php:3148
972
+ msgid "(GMT+12:00) Fiji, Kamchatka, Marshall Is."
973
+ msgstr ""
974
+
975
+ #: custom-facebook-feed-admin.php:746 custom-facebook-feed-admin.php:3149
976
+ msgid "(GMT+12:45) Chatham Islands"
977
+ msgstr ""
978
+
979
+ #: custom-facebook-feed-admin.php:747 custom-facebook-feed-admin.php:3150
980
+ msgid "(GMT+13:00) Nuku'alofa"
981
+ msgstr ""
982
+
983
+ #: custom-facebook-feed-admin.php:748 custom-facebook-feed-admin.php:3151
984
+ msgid "(GMT+14:00) Kiritimati"
985
+ msgstr ""
986
+
987
+ #: custom-facebook-feed-admin.php:760
988
+ msgid ""
989
+ "As the settings on this page directly affect the request made to Facebook to "
990
+ "get data, then when these settings are changed the plugin cache is cleared "
991
+ "in order for the plugin to check Facebook for data again using these new "
992
+ "settings. The plugin will check Facebook for data the next time the page "
993
+ "that the feed is on is loaded."
994
+ msgstr ""
995
+
996
+ #: custom-facebook-feed-admin.php:763 custom-facebook-feed-admin.php:2480
997
+ msgid "Having trouble using the plugin? Check out the"
998
+ msgstr ""
999
+
1000
+ #: custom-facebook-feed-admin.php:763 custom-facebook-feed-admin.php:2480
1001
+ msgid "tab"
1002
+ msgstr ""
1003
+
1004
+ #: custom-facebook-feed-admin.php:774
1005
+ msgid ""
1006
+ "Check out our other free plugins for <a href=\"https://wordpress.org/plugins/"
1007
+ "instagram-feed/\" target=\"_blank\">Instagram</a>, <a href=\"https://"
1008
+ "wordpress.org/plugins/custom-twitter-feeds/\" target=\"_blank\">Twitter</a>, "
1009
+ "and <a href=\"https://wordpress.org/plugins/feeds-for-youtube/\" target="
1010
+ "\"_blank\">YouTube</a>."
1011
+ msgstr ""
1012
+
1013
+ #: custom-facebook-feed-admin.php:777 custom-facebook-feed-admin.php:4096
1014
+ msgid "Like the plugin? Help spread the word!"
1015
+ msgstr ""
1016
+
1017
+ #: custom-facebook-feed-admin.php:793
1018
+ msgid "Setup Directions"
1019
+ msgstr ""
1020
+
1021
+ #: custom-facebook-feed-admin.php:794
1022
+ msgid "A step-by-step guide on how to setup and use the plugin."
1023
+ msgstr ""
1024
+
1025
+ #: custom-facebook-feed-admin.php:798
1026
+ msgid "FAQs and Docs"
1027
+ msgstr ""
1028
+
1029
+ #: custom-facebook-feed-admin.php:799
1030
+ msgid ""
1031
+ "View our expansive library of FAQs and documentation to help solve your "
1032
+ "problem as quickly as possible."
1033
+ msgstr ""
1034
+
1035
+ #: custom-facebook-feed-admin.php:806
1036
+ msgid ""
1037
+ "<a href=\"https://smashballoon.com/category/custom-facebook-feed/faq/?"
1038
+ "cat=18\" target=\"_blank\">General Questions</a>"
1039
+ msgstr ""
1040
+
1041
+ #: custom-facebook-feed-admin.php:807
1042
+ msgid ""
1043
+ "<a href=\"https://smashballoon.com/category/custom-facebook-feed/getting-"
1044
+ "started/?cat=18\" target=\"_blank\">Getting Started</a>"
1045
+ msgstr ""
1046
+
1047
+ #: custom-facebook-feed-admin.php:808
1048
+ msgid ""
1049
+ "<a href=\"https://smashballoon.com/category/custom-facebook-feed/"
1050
+ "troubleshooting/?cat=18\" target=\"_blank\">Common Issues</a>"
1051
+ msgstr ""
1052
+
1053
+ #: custom-facebook-feed-admin.php:814
1054
+ msgid ""
1055
+ "<a href=\"http://smashballoon.com/custom-facebook-feed/docs/free/\" target="
1056
+ "\"_blank\">Installation and Configuration</a>"
1057
+ msgstr ""
1058
+
1059
+ #: custom-facebook-feed-admin.php:815
1060
+ msgid ""
1061
+ "<a href=\"https://smashballoon.com/custom-facebook-feed/docs/shortcodes/\" "
1062
+ "target=\"_blank\">Shortcode Reference</a>"
1063
+ msgstr ""
1064
+
1065
+ #: custom-facebook-feed-admin.php:816
1066
+ msgid ""
1067
+ "<a href=https://smashballoon.com/category/custom-facebook-feed/"
1068
+ "customizations/snippets/?cat=18\" target=\"_blank\">Custom CSS and "
1069
+ "JavaScript Snippets</a>"
1070
+ msgstr ""
1071
+
1072
+ #: custom-facebook-feed-admin.php:822
1073
+ msgid "Request Support"
1074
+ msgstr ""
1075
+
1076
+ #: custom-facebook-feed-admin.php:823
1077
+ msgid ""
1078
+ "Still need help? Submit a ticket and one of our support experts will get "
1079
+ "back to you as soon as possible.<br /><b>Important:</b> Please include your "
1080
+ "<b>System Info</b> below with all support requests."
1081
+ msgstr ""
1082
+
1083
+ #: custom-facebook-feed-admin.php:829
1084
+ msgid ""
1085
+ "System Info &nbsp; <i style=\"color: #666; font-size: 11px; font-weight: "
1086
+ "normal;\">Click the text below to select all</i>"
1087
+ msgstr ""
1088
+
1089
+ #: custom-facebook-feed-admin.php:1980 custom-facebook-feed-admin.php:1990
1090
+ #: custom-facebook-feed-admin.php:1999
1091
+ msgid "General"
1092
+ msgstr ""
1093
+
1094
+ #: custom-facebook-feed-admin.php:1981
1095
+ msgid "Post Layout"
1096
+ msgstr ""
1097
+
1098
+ #: custom-facebook-feed-admin.php:1982
1099
+ msgid "Style Posts"
1100
+ msgstr ""
1101
+
1102
+ #: custom-facebook-feed-admin.php:1983
1103
+ msgid "Misc"
1104
+ msgstr ""
1105
+
1106
+ #: custom-facebook-feed-admin.php:1984 custom-facebook-feed-admin.php:3960
1107
+ msgid "Custom Text / Translate"
1108
+ msgstr ""
1109
+
1110
+ #: custom-facebook-feed-admin.php:1991 custom-facebook-feed-admin.php:2123
1111
+ msgid "Header"
1112
+ msgstr ""
1113
+
1114
+ #: custom-facebook-feed-admin.php:1992
1115
+ msgid "Like Box"
1116
+ msgstr ""
1117
+
1118
+ #: custom-facebook-feed-admin.php:2001
1119
+ msgid "Feed Width"
1120
+ msgstr ""
1121
+
1122
+ #: custom-facebook-feed-admin.php:2007
1123
+ msgid "Set to be 100% width on mobile?"
1124
+ msgstr ""
1125
+
1126
+ #: custom-facebook-feed-admin.php:2008
1127
+ msgid "What does this mean?"
1128
+ msgstr ""
1129
+
1130
+ #: custom-facebook-feed-admin.php:2009
1131
+ #, php-format
1132
+ msgid ""
1133
+ "If you set a width on the feed then this will be used on mobile as well as "
1134
+ "desktop. Check this setting to set the feed width to be 100% on mobile so "
1135
+ "that it is responsive."
1136
+ msgstr ""
1137
+
1138
+ #: custom-facebook-feed-admin.php:2014
1139
+ msgid "Feed Height"
1140
+ msgstr ""
1141
+
1142
+ #: custom-facebook-feed-admin.php:2020
1143
+ msgid ""
1144
+ "Use this to set a fixed height on the feed. If the feed exceeds this height "
1145
+ "then a scroll bar will be used. Leave it empty to set no maximum height."
1146
+ msgstr ""
1147
+
1148
+ #: custom-facebook-feed-admin.php:2023
1149
+ msgid "Feed Padding"
1150
+ msgstr ""
1151
+
1152
+ #: custom-facebook-feed-admin.php:2029
1153
+ msgid ""
1154
+ "This is the amount of padding/spacing that goes around the feed. This is "
1155
+ "particularly useful if you intend to set a background color on the feed."
1156
+ msgstr ""
1157
+
1158
+ #: custom-facebook-feed-admin.php:2033
1159
+ msgid "Feed Background Color"
1160
+ msgstr ""
1161
+
1162
+ #: custom-facebook-feed-admin.php:2040
1163
+ msgid "Add CSS class to feed"
1164
+ msgstr ""
1165
+
1166
+ #: custom-facebook-feed-admin.php:2045
1167
+ msgid ""
1168
+ "You can add your own CSS classes to the feed here. To add multiple classes "
1169
+ "separate each with a space, Eg. classone classtwo classthree"
1170
+ msgstr ""
1171
+
1172
+ #: custom-facebook-feed-admin.php:2085
1173
+ msgid "Post Types"
1174
+ msgstr ""
1175
+
1176
+ #: custom-facebook-feed-admin.php:2087
1177
+ msgid "Only show these types of posts:"
1178
+ msgstr ""
1179
+
1180
+ #: custom-facebook-feed-admin.php:2088
1181
+ msgid "Upgrade to Pro to enable post types, photos, videos and more"
1182
+ msgstr ""
1183
+
1184
+ #: custom-facebook-feed-admin.php:2092
1185
+ msgid "Statuses"
1186
+ msgstr ""
1187
+
1188
+ #: custom-facebook-feed-admin.php:2096
1189
+ msgid "Events"
1190
+ msgstr ""
1191
+
1192
+ #: custom-facebook-feed-admin.php:2100
1193
+ msgid "Photos"
1194
+ msgstr ""
1195
+
1196
+ #: custom-facebook-feed-admin.php:2104
1197
+ msgid "Videos"
1198
+ msgstr ""
1199
+
1200
+ #: custom-facebook-feed-admin.php:2108
1201
+ msgid "Links"
1202
+ msgstr ""
1203
+
1204
+ #: custom-facebook-feed-admin.php:2112
1205
+ msgid "Albums"
1206
+ msgstr ""
1207
+
1208
+ #: custom-facebook-feed-admin.php:2125
1209
+ msgid "Show Feed Header"
1210
+ msgstr ""
1211
+
1212
+ #: custom-facebook-feed-admin.php:2129
1213
+ msgid "What is the header?"
1214
+ msgstr ""
1215
+
1216
+ #: custom-facebook-feed-admin.php:2130
1217
+ msgid ""
1218
+ "The header allows you to display text and an icon at the top of your feed. "
1219
+ "Customize the text, style, and layout of the header using the settings below."
1220
+ msgstr ""
1221
+
1222
+ #: custom-facebook-feed-admin.php:2135
1223
+ msgid "Header Text"
1224
+ msgstr ""
1225
+
1226
+ #: custom-facebook-feed-admin.php:2143 custom-facebook-feed-admin.php:2301
1227
+ msgid "Display outside the scrollable area"
1228
+ msgstr ""
1229
+
1230
+ #: custom-facebook-feed-admin.php:2146 custom-facebook-feed-admin.php:2285
1231
+ #: custom-facebook-feed-admin.php:3844 custom-facebook-feed-admin.php:3853
1232
+ #: custom-facebook-feed-admin.php:3863 custom-facebook-feed-admin.php:3880
1233
+ #: custom-facebook-feed-admin.php:3904 custom-facebook-feed-admin.php:3935
1234
+ msgid "Yes"
1235
+ msgstr ""
1236
+
1237
+ #: custom-facebook-feed-admin.php:2148
1238
+ msgid ""
1239
+ "This positions the Header outside of the feed container. It is useful if "
1240
+ "your feed has a vertical scrollbar as it places it outside of the scrollable "
1241
+ "area and fixes it at the top."
1242
+ msgstr ""
1243
+
1244
+ #: custom-facebook-feed-admin.php:2153 custom-facebook-feed-admin.php:2419
1245
+ #: custom-facebook-feed-admin.php:2737 custom-facebook-feed-admin.php:3696
1246
+ msgid "Background Color"
1247
+ msgstr ""
1248
+
1249
+ #: custom-facebook-feed-admin.php:2160
1250
+ msgid "Padding"
1251
+ msgstr ""
1252
+
1253
+ #: custom-facebook-feed-admin.php:2168 custom-facebook-feed-admin.php:2767
1254
+ #: custom-facebook-feed-admin.php:2834 custom-facebook-feed-admin.php:2916
1255
+ #: custom-facebook-feed-admin.php:2983 custom-facebook-feed-admin.php:3367
1256
+ #: custom-facebook-feed-admin.php:3423 custom-facebook-feed-admin.php:3523
1257
+ #: custom-facebook-feed-admin.php:3585
1258
+ msgid "Text Size"
1259
+ msgstr ""
1260
+
1261
+ #: custom-facebook-feed-admin.php:2193 custom-facebook-feed-admin.php:2859
1262
+ #: custom-facebook-feed-admin.php:2941 custom-facebook-feed-admin.php:3008
1263
+ #: custom-facebook-feed-admin.php:3392 custom-facebook-feed-admin.php:3448
1264
+ #: custom-facebook-feed-admin.php:3548 custom-facebook-feed-admin.php:3610
1265
+ msgid "Text Weight"
1266
+ msgstr ""
1267
+
1268
+ #: custom-facebook-feed-admin.php:2204 custom-facebook-feed-admin.php:2425
1269
+ #: custom-facebook-feed-admin.php:2792 custom-facebook-feed-admin.php:2870
1270
+ #: custom-facebook-feed-admin.php:2952 custom-facebook-feed-admin.php:3019
1271
+ #: custom-facebook-feed-admin.php:3403 custom-facebook-feed-admin.php:3459
1272
+ #: custom-facebook-feed-admin.php:3559 custom-facebook-feed-admin.php:3621
1273
+ #: custom-facebook-feed-admin.php:3682
1274
+ msgid "Text Color"
1275
+ msgstr ""
1276
+
1277
+ #: custom-facebook-feed-admin.php:2211
1278
+ msgid "Icon Type"
1279
+ msgstr ""
1280
+
1281
+ #: custom-facebook-feed-admin.php:2240
1282
+ msgid "Icon Color"
1283
+ msgstr ""
1284
+
1285
+ #: custom-facebook-feed-admin.php:2247
1286
+ msgid "Icon Size"
1287
+ msgstr ""
1288
+
1289
+ #: custom-facebook-feed-admin.php:2278
1290
+ msgid "Like Box / Page Plugin"
1291
+ msgstr ""
1292
+
1293
+ #: custom-facebook-feed-admin.php:2282
1294
+ msgid "Show the Like Box"
1295
+ msgstr ""
1296
+
1297
+ #: custom-facebook-feed-admin.php:2286
1298
+ msgid "What is the Like Box?"
1299
+ msgstr ""
1300
+
1301
+ #: custom-facebook-feed-admin.php:2287
1302
+ msgid ""
1303
+ "The Like Box is an official Facebook widget that we include at the bottom or "
1304
+ "top of the feed. It contains information about your Facebook Page and allows "
1305
+ "users to 'like' it directly on your site."
1306
+ msgstr ""
1307
+
1308
+ #: custom-facebook-feed-admin.php:2291 custom-facebook-feed-admin.php:2972
1309
+ msgid "Position"
1310
+ msgstr ""
1311
+
1312
+ #: custom-facebook-feed-admin.php:2295
1313
+ msgid "Bottom of feed"
1314
+ msgstr ""
1315
+
1316
+ #: custom-facebook-feed-admin.php:2296
1317
+ msgid "Top of feed"
1318
+ msgstr ""
1319
+
1320
+ #: custom-facebook-feed-admin.php:2306
1321
+ msgid ""
1322
+ "This positions the Like Box widget outside of the feed container. It is "
1323
+ "useful if your feed has a vertical scrollbar as it places it outside of the "
1324
+ "scrollable area and fixes it at the top or bottom."
1325
+ msgstr ""
1326
+
1327
+ #: custom-facebook-feed-admin.php:2311
1328
+ msgid "Show faces of fans"
1329
+ msgstr ""
1330
+
1331
+ #: custom-facebook-feed-admin.php:2316
1332
+ msgid ""
1333
+ "This will display thumbnail photos within the Like Box of some of the people "
1334
+ "who like your page."
1335
+ msgstr ""
1336
+
1337
+ #: custom-facebook-feed-admin.php:2320
1338
+ msgid "Include the Cover Photo"
1339
+ msgstr ""
1340
+
1341
+ #: custom-facebook-feed-admin.php:2327
1342
+ msgid "Use a small header"
1343
+ msgstr ""
1344
+
1345
+ #: custom-facebook-feed-admin.php:2332
1346
+ msgid ""
1347
+ "This will display a shorter version of the Like Box with a slimmer cover "
1348
+ "photo and less information."
1349
+ msgstr ""
1350
+
1351
+ #: custom-facebook-feed-admin.php:2336
1352
+ msgid "Hide custom call to action button"
1353
+ msgstr ""
1354
+
1355
+ #: custom-facebook-feed-admin.php:2341
1356
+ msgid ""
1357
+ "If you have a custom 'Call To Action' button for your Facebook Page then "
1358
+ "this will hide it and display the default Like Box button."
1359
+ msgstr ""
1360
+
1361
+ #: custom-facebook-feed-admin.php:2345
1362
+ msgid "Custom Like Box Width"
1363
+ msgstr ""
1364
+
1365
+ #: custom-facebook-feed-admin.php:2349
1366
+ msgid "Default: 340, Min: 180, Max: 500"
1367
+ msgstr ""
1368
+
1369
+ #: custom-facebook-feed-admin.php:2359
1370
+ msgid "\"Load More\" button"
1371
+ msgstr ""
1372
+
1373
+ #: custom-facebook-feed-admin.php:2367
1374
+ msgid "Show \"Load More\" Button"
1375
+ msgstr ""
1376
+
1377
+ #: custom-facebook-feed-admin.php:2371
1378
+ msgid ""
1379
+ "The Load More button is added to the bottom of your feed and allows you to "
1380
+ "dynamically load more posts into your feed. Use the button below to reveal "
1381
+ "customization settings for the button."
1382
+ msgstr ""
1383
+
1384
+ #: custom-facebook-feed-admin.php:2375
1385
+ msgid "Button Background Color"
1386
+ msgstr ""
1387
+
1388
+ #: custom-facebook-feed-admin.php:2381
1389
+ msgid "Button Hover Color"
1390
+ msgstr ""
1391
+
1392
+ #: custom-facebook-feed-admin.php:2387
1393
+ msgid "Button Text Color"
1394
+ msgstr ""
1395
+
1396
+ #: custom-facebook-feed-admin.php:2393
1397
+ msgid "Button Text"
1398
+ msgstr ""
1399
+
1400
+ #: custom-facebook-feed-admin.php:2403
1401
+ msgid "Lightbox"
1402
+ msgstr ""
1403
+
1404
+ #: custom-facebook-feed-admin.php:2411 custom-facebook-feed-admin.php:3795
1405
+ msgid "Disable Popup Lightbox"
1406
+ msgstr ""
1407
+
1408
+ #: custom-facebook-feed-admin.php:2415 custom-facebook-feed-admin.php:3799
1409
+ msgid "Disable"
1410
+ msgstr ""
1411
+
1412
+ #: custom-facebook-feed-admin.php:2431 custom-facebook-feed-admin.php:2877
1413
+ #: custom-facebook-feed-admin.php:3566 custom-facebook-feed-admin.php:3689
1414
+ msgid "Link Color"
1415
+ msgstr ""
1416
+
1417
+ #: custom-facebook-feed-admin.php:2437 custom-facebook-feed-admin.php:3729
1418
+ msgid "Show Comments in Lightbox"
1419
+ msgstr ""
1420
+
1421
+ #: custom-facebook-feed-admin.php:2441 custom-facebook-feed-admin.php:3732
1422
+ msgid "For timeline posts only"
1423
+ msgstr ""
1424
+
1425
+ #: custom-facebook-feed-admin.php:2449
1426
+ msgid "Filter Content by String"
1427
+ msgstr ""
1428
+
1429
+ #: custom-facebook-feed-admin.php:2457
1430
+ msgid "Only show posts containing:"
1431
+ msgstr ""
1432
+
1433
+ #: custom-facebook-feed-admin.php:2462
1434
+ msgid ""
1435
+ "You can use this setting to only display posts containing these text "
1436
+ "strings. Separate multiple strings using commas. If only a few posts, or "
1437
+ "none at all, are displayed then you may need to increase the plugin's 'Post "
1438
+ "Limit' settings. See <a href='https://smashballoon.com/filtering-your-"
1439
+ "facebook-posts/' target='_blank'>this FAQ</a> to learn more about how "
1440
+ "filtering works."
1441
+ msgstr ""
1442
+
1443
+ #: custom-facebook-feed-admin.php:2466
1444
+ msgid "Don't show posts containing:"
1445
+ msgstr ""
1446
+
1447
+ #: custom-facebook-feed-admin.php:2470
1448
+ msgid ""
1449
+ "You can use this setting to remove any posts containing these text strings. "
1450
+ "Separate multiple strings using commas."
1451
+ msgstr ""
1452
+
1453
+ #: custom-facebook-feed-admin.php:2501
1454
+ msgid "Post Layouts"
1455
+ msgstr ""
1456
+
1457
+ #: custom-facebook-feed-admin.php:2502
1458
+ msgid "Upgrade to Pro to enable layouts"
1459
+ msgstr ""
1460
+
1461
+ #: custom-facebook-feed-admin.php:2508
1462
+ msgid "Choose a layout from the 3 below."
1463
+ msgstr ""
1464
+
1465
+ #: custom-facebook-feed-admin.php:2512
1466
+ msgid "Thumbnail"
1467
+ msgstr ""
1468
+
1469
+ #: custom-facebook-feed-admin.php:2517
1470
+ msgid "Half-width"
1471
+ msgstr ""
1472
+
1473
+ #: custom-facebook-feed-admin.php:2522
1474
+ msgid "Full-width"
1475
+ msgstr ""
1476
+
1477
+ #: custom-facebook-feed-admin.php:2531 custom-facebook-feed-admin.php:2540
1478
+ msgid "Photo/Video Position"
1479
+ msgstr ""
1480
+
1481
+ #: custom-facebook-feed-admin.php:2550
1482
+ msgid "Always use the Full-width layout when feed is narrow?"
1483
+ msgstr ""
1484
+
1485
+ #: custom-facebook-feed-admin.php:2554
1486
+ msgid ""
1487
+ "When displaying posts in either a narrow column or on a mobile device the "
1488
+ "plugin will automatically default to using the 'Full-width' layout as it's "
1489
+ "better suited to narrow sizes."
1490
+ msgstr ""
1491
+
1492
+ #: custom-facebook-feed-admin.php:2558
1493
+ msgid "Only show one image per post"
1494
+ msgstr ""
1495
+
1496
+ #: custom-facebook-feed-admin.php:2562
1497
+ msgid ""
1498
+ "If a Facebook post contains more than photo then enabling this setting means "
1499
+ "that only the first photo in the post is displayed."
1500
+ msgstr ""
1501
+
1502
+ #: custom-facebook-feed-admin.php:2574
1503
+ msgid "Show/Hide"
1504
+ msgstr ""
1505
+
1506
+ #: custom-facebook-feed-admin.php:2578
1507
+ msgid ""
1508
+ "Include the following in posts: <i style=\"font-size: 11px;\">(when "
1509
+ "applicable)</i>"
1510
+ msgstr ""
1511
+
1512
+ #: custom-facebook-feed-admin.php:2587
1513
+ msgid "Author Name and Avatar"
1514
+ msgstr ""
1515
+
1516
+ #: custom-facebook-feed-admin.php:2588
1517
+ msgid ""
1518
+ "The author name and avatar image that's shown at the top of each timeline "
1519
+ "post"
1520
+ msgstr ""
1521
+
1522
+ #: custom-facebook-feed-admin.php:2595 custom-facebook-feed-admin.php:2808
1523
+ #: custom-facebook-feed-admin.php:3973
1524
+ msgid "Post Text"
1525
+ msgstr ""
1526
+
1527
+ #: custom-facebook-feed-admin.php:2596
1528
+ msgid "The main text of the Facebook post"
1529
+ msgstr ""
1530
+
1531
+ #: custom-facebook-feed-admin.php:2602
1532
+ msgid "Description Text"
1533
+ msgstr ""
1534
+
1535
+ #: custom-facebook-feed-admin.php:2603
1536
+ msgid "The description text associated with shared photos, videos, or links"
1537
+ msgstr ""
1538
+
1539
+ #: custom-facebook-feed-admin.php:2609
1540
+ msgid "Shared Link Box"
1541
+ msgstr ""
1542
+
1543
+ #: custom-facebook-feed-admin.php:2610
1544
+ msgid ""
1545
+ "The link info box that's created when a link is shared in a Facebook post"
1546
+ msgstr ""
1547
+
1548
+ #: custom-facebook-feed-admin.php:2616 custom-facebook-feed-admin.php:4033
1549
+ msgid "Date"
1550
+ msgstr ""
1551
+
1552
+ #: custom-facebook-feed-admin.php:2617
1553
+ msgid "The date of the post"
1554
+ msgstr ""
1555
+
1556
+ #: custom-facebook-feed-admin.php:2623
1557
+ msgid "Photos and Videos"
1558
+ msgstr ""
1559
+
1560
+ #: custom-facebook-feed-admin.php:2624
1561
+ msgid "Any photos or videos in your posts"
1562
+ msgstr ""
1563
+
1564
+ #: custom-facebook-feed-admin.php:2630
1565
+ msgid "Media link"
1566
+ msgstr ""
1567
+
1568
+ #: custom-facebook-feed-admin.php:2631
1569
+ msgid ""
1570
+ "Display an icon and link to Facebook if the post contains either a photo or "
1571
+ "video"
1572
+ msgstr ""
1573
+
1574
+ #: custom-facebook-feed-admin.php:2637 custom-facebook-feed-admin.php:3349
1575
+ msgid "Event Title"
1576
+ msgstr ""
1577
+
1578
+ #: custom-facebook-feed-admin.php:2638
1579
+ msgid "The title of an event"
1580
+ msgstr ""
1581
+
1582
+ #: custom-facebook-feed-admin.php:2644 custom-facebook-feed-admin.php:3519
1583
+ msgid "Event Details"
1584
+ msgstr ""
1585
+
1586
+ #: custom-facebook-feed-admin.php:2645
1587
+ msgid "The information associated with an event"
1588
+ msgstr ""
1589
+
1590
+ #: custom-facebook-feed-admin.php:2651
1591
+ msgid "Like, Shares, and Comments"
1592
+ msgstr ""
1593
+
1594
+ #: custom-facebook-feed-admin.php:2652
1595
+ msgid "The comments box displayed at the bottom of each timeline post"
1596
+ msgstr ""
1597
+
1598
+ #: custom-facebook-feed-admin.php:2658 custom-facebook-feed-admin.php:3580
1599
+ #: custom-facebook-feed-admin.php:3986
1600
+ msgid "Post Action Links"
1601
+ msgstr ""
1602
+
1603
+ #: custom-facebook-feed-admin.php:2659
1604
+ msgid "The \"View on Facebook\" and \"Share\" links at the bottom of each post"
1605
+ msgstr ""
1606
+
1607
+ #: custom-facebook-feed-admin.php:2691
1608
+ msgid "Post Item"
1609
+ msgstr ""
1610
+
1611
+ #: custom-facebook-feed-admin.php:2695
1612
+ msgid "Post Style"
1613
+ msgstr ""
1614
+
1615
+ #: custom-facebook-feed-admin.php:2708
1616
+ msgid "Regular"
1617
+ msgstr ""
1618
+
1619
+ #: custom-facebook-feed-admin.php:2714
1620
+ msgid "Boxed"
1621
+ msgstr ""
1622
+
1623
+ #: custom-facebook-feed-admin.php:2722
1624
+ msgid "Separating Line Color"
1625
+ msgstr ""
1626
+
1627
+ #: custom-facebook-feed-admin.php:2728
1628
+ msgid "Separating Line Thickness"
1629
+ msgstr ""
1630
+
1631
+ #: custom-facebook-feed-admin.php:2731
1632
+ msgid "Leave empty to hide"
1633
+ msgstr ""
1634
+
1635
+ #: custom-facebook-feed-admin.php:2743
1636
+ msgid "Rounded Corner Size"
1637
+ msgstr ""
1638
+
1639
+ #: custom-facebook-feed-admin.php:2749
1640
+ msgid "Box Shadow"
1641
+ msgstr ""
1642
+
1643
+ #: custom-facebook-feed-admin.php:2752
1644
+ msgid "Adds a subtle shadow around the post"
1645
+ msgstr ""
1646
+
1647
+ #: custom-facebook-feed-admin.php:2763
1648
+ msgid "Post Author"
1649
+ msgstr ""
1650
+
1651
+ #: custom-facebook-feed-admin.php:2812
1652
+ msgid "Maximum Post Text Length"
1653
+ msgstr ""
1654
+
1655
+ #: custom-facebook-feed-admin.php:2815 custom-facebook-feed-admin.php:3335
1656
+ msgid "Characters"
1657
+ msgstr ""
1658
+
1659
+ #: custom-facebook-feed-admin.php:2815 custom-facebook-feed-admin.php:3335
1660
+ msgid "Eg. 200"
1661
+ msgstr ""
1662
+
1663
+ #: custom-facebook-feed-admin.php:2817
1664
+ msgid ""
1665
+ "If the post text exceeds this length then a 'See More' link will be added. "
1666
+ "Leave empty to set no maximum length."
1667
+ msgstr ""
1668
+
1669
+ #: custom-facebook-feed-admin.php:2821 custom-facebook-feed-admin.php:3353
1670
+ msgid "Format"
1671
+ msgstr ""
1672
+
1673
+ #: custom-facebook-feed-admin.php:2884
1674
+ msgid "Link Text to Facebook Post"
1675
+ msgstr ""
1676
+
1677
+ #: custom-facebook-feed-admin.php:2890
1678
+ msgid "Link Post Tags"
1679
+ msgstr ""
1680
+
1681
+ #: custom-facebook-feed-admin.php:2894
1682
+ msgid "What are Post Tags?"
1683
+ msgstr ""
1684
+
1685
+ #: custom-facebook-feed-admin.php:2895
1686
+ msgid ""
1687
+ "When you tag another Facebook page or user in your post using the @ symbol "
1688
+ "it creates a post tag, which is a link to either that Facebook page or user "
1689
+ "profile."
1690
+ msgstr ""
1691
+
1692
+ #: custom-facebook-feed-admin.php:2900
1693
+ msgid "Link Hashtags"
1694
+ msgstr ""
1695
+
1696
+ #: custom-facebook-feed-admin.php:2912
1697
+ msgid "Shared Post Description"
1698
+ msgstr ""
1699
+
1700
+ #: custom-facebook-feed-admin.php:2968
1701
+ msgid "Post Date"
1702
+ msgstr ""
1703
+
1704
+ #: custom-facebook-feed-admin.php:3027
1705
+ msgid "Date Formatting"
1706
+ msgstr ""
1707
+
1708
+ #: custom-facebook-feed-admin.php:3032
1709
+ msgid "2 days ago"
1710
+ msgstr ""
1711
+
1712
+ #: custom-facebook-feed-admin.php:3112
1713
+ msgid "(GMT+02:00) Helsinki"
1714
+ msgstr ""
1715
+
1716
+ #: custom-facebook-feed-admin.php:3140
1717
+ msgid "(GMT+10:00) Hobart"
1718
+ msgstr ""
1719
+
1720
+ #: custom-facebook-feed-admin.php:3157
1721
+ msgid "Custom Format"
1722
+ msgstr ""
1723
+
1724
+ #: custom-facebook-feed-admin.php:3161 custom-facebook-feed-admin.php:3511
1725
+ msgid "Examples"
1726
+ msgstr ""
1727
+
1728
+ #: custom-facebook-feed-admin.php:3165
1729
+ msgid "Text Before Date"
1730
+ msgstr ""
1731
+
1732
+ #: custom-facebook-feed-admin.php:3169
1733
+ msgid ""
1734
+ "You can add custom text here to display immediately <b>before</b> the date "
1735
+ "text"
1736
+ msgstr ""
1737
+
1738
+ #: custom-facebook-feed-admin.php:3173
1739
+ msgid "Text After Date"
1740
+ msgstr ""
1741
+
1742
+ #: custom-facebook-feed-admin.php:3177
1743
+ msgid ""
1744
+ "You can add custom text here to display immediately <b>after</b> the date "
1745
+ "text"
1746
+ msgstr ""
1747
+
1748
+ #: custom-facebook-feed-admin.php:3187
1749
+ msgid "Shared Link Boxes"
1750
+ msgstr ""
1751
+
1752
+ #: custom-facebook-feed-admin.php:3193
1753
+ msgid "Link Box Background Color"
1754
+ msgstr ""
1755
+
1756
+ #: custom-facebook-feed-admin.php:3201
1757
+ msgid "Link Box Border Color"
1758
+ msgstr ""
1759
+
1760
+ #: custom-facebook-feed-admin.php:3209
1761
+ msgid "Remove Background/Border"
1762
+ msgstr ""
1763
+
1764
+ #: custom-facebook-feed-admin.php:3216
1765
+ msgid "Link Title Format"
1766
+ msgstr ""
1767
+
1768
+ #: custom-facebook-feed-admin.php:3229
1769
+ msgid "Link Title Size"
1770
+ msgstr ""
1771
+
1772
+ #: custom-facebook-feed-admin.php:3254
1773
+ msgid "Link Title Color"
1774
+ msgstr ""
1775
+
1776
+ #: custom-facebook-feed-admin.php:3263
1777
+ msgid "Link URL Size"
1778
+ msgstr ""
1779
+
1780
+ #: custom-facebook-feed-admin.php:3288
1781
+ msgid "Link URL Color"
1782
+ msgstr ""
1783
+
1784
+ #: custom-facebook-feed-admin.php:3298
1785
+ msgid "Link Description Size"
1786
+ msgstr ""
1787
+
1788
+ #: custom-facebook-feed-admin.php:3324
1789
+ msgid "Link Description Color"
1790
+ msgstr ""
1791
+
1792
+ #: custom-facebook-feed-admin.php:3332
1793
+ msgid "Maximum Link Description Length"
1794
+ msgstr ""
1795
+
1796
+ #: custom-facebook-feed-admin.php:3337
1797
+ msgid ""
1798
+ "If the link description text exceeds this length then it will be truncated "
1799
+ "with an ellipsis. Leave empty to set no maximum length."
1800
+ msgstr ""
1801
+
1802
+ #: custom-facebook-feed-admin.php:3410
1803
+ msgid "Link Title to Event on Facebook"
1804
+ msgstr ""
1805
+
1806
+ #: custom-facebook-feed-admin.php:3419
1807
+ msgid "Event Date"
1808
+ msgstr ""
1809
+
1810
+ #: custom-facebook-feed-admin.php:3466
1811
+ msgid "Date Position"
1812
+ msgstr ""
1813
+
1814
+ #: custom-facebook-feed-admin.php:3470
1815
+ msgid "Below event title"
1816
+ msgstr ""
1817
+
1818
+ #: custom-facebook-feed-admin.php:3471
1819
+ msgid "Above event title"
1820
+ msgstr ""
1821
+
1822
+ #: custom-facebook-feed-admin.php:3476
1823
+ msgid "Event Date Formatting"
1824
+ msgstr ""
1825
+
1826
+ #: custom-facebook-feed-admin.php:3507
1827
+ msgid "Custom Event Date Format"
1828
+ msgstr ""
1829
+
1830
+ #: custom-facebook-feed-admin.php:3581
1831
+ msgid ""
1832
+ "Post action links refer to the \"View on Facebook\" and \"Share\" links at "
1833
+ "the bottom of each post"
1834
+ msgstr ""
1835
+
1836
+ #: custom-facebook-feed-admin.php:3628
1837
+ msgid "\"View on Facebook\" Text"
1838
+ msgstr ""
1839
+
1840
+ #: custom-facebook-feed-admin.php:3636
1841
+ msgid "\"Share\" Text"
1842
+ msgstr ""
1843
+
1844
+ #: custom-facebook-feed-admin.php:3644
1845
+ msgid "Show \"View on Facebook\" link"
1846
+ msgstr ""
1847
+
1848
+ #: custom-facebook-feed-admin.php:3652
1849
+ msgid "Show \"Share\" link"
1850
+ msgstr ""
1851
+
1852
+ #: custom-facebook-feed-admin.php:3664
1853
+ msgid "Likes, Shares and Comments Box"
1854
+ msgstr ""
1855
+
1856
+ #: custom-facebook-feed-admin.php:3672
1857
+ msgid "Icon Style"
1858
+ msgstr ""
1859
+
1860
+ #: custom-facebook-feed-admin.php:3676
1861
+ msgid "Light (for light backgrounds)"
1862
+ msgstr ""
1863
+
1864
+ #: custom-facebook-feed-admin.php:3677
1865
+ msgid "Dark (for dark backgrounds)"
1866
+ msgstr ""
1867
+
1868
+ #: custom-facebook-feed-admin.php:3703
1869
+ msgid "Expand Comments Box Initially"
1870
+ msgstr ""
1871
+
1872
+ #: custom-facebook-feed-admin.php:3708
1873
+ msgid ""
1874
+ "Checking this box will automatically expand the comments box beneath each "
1875
+ "post. Unchecking this box will mean that users will need to click the number "
1876
+ "of comments below each post in order to expand the comments box."
1877
+ msgstr ""
1878
+
1879
+ #: custom-facebook-feed-admin.php:3712
1880
+ msgid "Number of Comments to Show Initially"
1881
+ msgstr ""
1882
+
1883
+ #: custom-facebook-feed-admin.php:3716
1884
+ msgid "25 max"
1885
+ msgstr ""
1886
+
1887
+ #: custom-facebook-feed-admin.php:3718
1888
+ msgid ""
1889
+ "The number of comments to show initially when the comments box is expanded."
1890
+ msgstr ""
1891
+
1892
+ #: custom-facebook-feed-admin.php:3722
1893
+ msgid "Hide Comment Avatars"
1894
+ msgstr ""
1895
+
1896
+ #: custom-facebook-feed-admin.php:3761
1897
+ msgid "Custom CSS"
1898
+ msgstr ""
1899
+
1900
+ #: custom-facebook-feed-admin.php:3766
1901
+ msgid "Enter your own custom CSS in the box below"
1902
+ msgstr ""
1903
+
1904
+ #: custom-facebook-feed-admin.php:3766 custom-facebook-feed-admin.php:3777
1905
+ msgid "See some examples"
1906
+ msgstr ""
1907
+
1908
+ #: custom-facebook-feed-admin.php:3772
1909
+ msgid "Custom JavaScript"
1910
+ msgstr ""
1911
+
1912
+ #: custom-facebook-feed-admin.php:3777
1913
+ msgid "Enter your own custom JavaScript/jQuery in the box below"
1914
+ msgstr ""
1915
+
1916
+ #: custom-facebook-feed-admin.php:3787
1917
+ msgid "Media"
1918
+ msgstr ""
1919
+
1920
+ #: custom-facebook-feed-admin.php:3803
1921
+ msgid "Use full-size shared link images"
1922
+ msgstr ""
1923
+
1924
+ #: custom-facebook-feed-admin.php:3808
1925
+ msgid ""
1926
+ "By default the shared link boxes in your posts use the same layout selected "
1927
+ "on the 'Post Layout' page, however, but you can disable this by unchecking "
1928
+ "this setting to force all shared links to use the smaller image thumbnails "
1929
+ "instead."
1930
+ msgstr ""
1931
+
1932
+ #: custom-facebook-feed-admin.php:3812
1933
+ msgid "Lightbox video player"
1934
+ msgstr ""
1935
+
1936
+ #: custom-facebook-feed-admin.php:3816
1937
+ msgid "Facebook Video Player"
1938
+ msgstr ""
1939
+
1940
+ #: custom-facebook-feed-admin.php:3817
1941
+ msgid "Standard HTML5 Video"
1942
+ msgstr ""
1943
+
1944
+ #: custom-facebook-feed-admin.php:3822
1945
+ msgid "Play video action"
1946
+ msgstr ""
1947
+
1948
+ #: custom-facebook-feed-admin.php:3826
1949
+ msgid "Play videos directly in the feed"
1950
+ msgstr ""
1951
+
1952
+ #: custom-facebook-feed-admin.php:3828
1953
+ msgid "Link to the video on Facebook"
1954
+ msgstr ""
1955
+
1956
+ #: custom-facebook-feed-admin.php:3836
1957
+ msgid "Misc Settings"
1958
+ msgstr ""
1959
+
1960
+ #: custom-facebook-feed-admin.php:3840
1961
+ msgid "Is your theme loading the feed via Ajax?"
1962
+ msgstr ""
1963
+
1964
+ #: custom-facebook-feed-admin.php:3846
1965
+ msgid ""
1966
+ "Some modern WordPress themes use Ajax to load content into the page after it "
1967
+ "has loaded. If your theme uses Ajax to load the Custom Facebook Feed content "
1968
+ "into the page then check this box. If you are not sure then please check "
1969
+ "with the theme author."
1970
+ msgstr ""
1971
+
1972
+ #: custom-facebook-feed-admin.php:3850
1973
+ msgid "Preserve settings when plugin is removed"
1974
+ msgstr ""
1975
+
1976
+ #: custom-facebook-feed-admin.php:3855
1977
+ msgid ""
1978
+ "When removing the plugin your settings are automatically deleted from your "
1979
+ "database. Checking this box will prevent any settings from being deleted. "
1980
+ "This means that you can uninstall and reinstall the plugin without losing "
1981
+ "your settings."
1982
+ msgstr ""
1983
+
1984
+ #: custom-facebook-feed-admin.php:3859
1985
+ msgid "Display credit link"
1986
+ msgstr ""
1987
+
1988
+ #: custom-facebook-feed-admin.php:3864
1989
+ msgid "Display a link at the bottom of the feed to help promote the plugin"
1990
+ msgstr ""
1991
+
1992
+ #: custom-facebook-feed-admin.php:3869
1993
+ msgid "Minify CSS and JavaScript files"
1994
+ msgstr ""
1995
+
1996
+ #: custom-facebook-feed-admin.php:3876
1997
+ msgid "Is Facebook Page restricted?"
1998
+ msgstr ""
1999
+
2000
+ #: custom-facebook-feed-admin.php:3882
2001
+ msgid ""
2002
+ "If you want to display your Facebook feed on your website then ideally your "
2003
+ "Facebook page should not have any age or location restrictions on it as that "
2004
+ "restricts the plugin from being able to fully access the content. If it is "
2005
+ "not possible for you to remove all restrictions then you can enable this "
2006
+ "setting."
2007
+ msgstr ""
2008
+
2009
+ #: custom-facebook-feed-admin.php:3887
2010
+ msgid "Icon font source"
2011
+ msgstr ""
2012
+
2013
+ #: custom-facebook-feed-admin.php:3890
2014
+ msgid "CDN"
2015
+ msgstr ""
2016
+
2017
+ #: custom-facebook-feed-admin.php:3891
2018
+ msgid "Local copy"
2019
+ msgstr ""
2020
+
2021
+ #: custom-facebook-feed-admin.php:3892
2022
+ msgid "Don't load"
2023
+ msgstr ""
2024
+
2025
+ #: custom-facebook-feed-admin.php:3899
2026
+ msgid "Force cache to clear on interval"
2027
+ msgstr ""
2028
+
2029
+ #: custom-facebook-feed-admin.php:3903
2030
+ msgid " - "
2031
+ msgstr ""
2032
+
2033
+ #: custom-facebook-feed-admin.php:3905
2034
+ msgid "No"
2035
+ msgstr ""
2036
+
2037
+ #: custom-facebook-feed-admin.php:3909
2038
+ msgid ""
2039
+ "If you're experiencing an issue with the plugin not auto-updating then you "
2040
+ "can set this to 'Yes' to run a scheduled event behind the scenes which "
2041
+ "forces the plugin cache to clear on a regular basis and retrieve new data "
2042
+ "from Facebook."
2043
+ msgstr ""
2044
+
2045
+ #: custom-facebook-feed-admin.php:3914
2046
+ msgid "Request method"
2047
+ msgstr ""
2048
+
2049
+ #: custom-facebook-feed-admin.php:3918
2050
+ msgid "cURL"
2051
+ msgstr ""
2052
+
2053
+ #: custom-facebook-feed-admin.php:3919
2054
+ msgid "file_get_contents"
2055
+ msgstr ""
2056
+
2057
+ #: custom-facebook-feed-admin.php:3920
2058
+ msgid "WP_Http"
2059
+ msgstr ""
2060
+
2061
+ #: custom-facebook-feed-admin.php:3925
2062
+ msgid "Fix text shortening issue"
2063
+ msgstr ""
2064
+
2065
+ #: custom-facebook-feed-admin.php:3932
2066
+ msgid "Disable default styles"
2067
+ msgstr ""
2068
+
2069
+ #: custom-facebook-feed-admin.php:3937
2070
+ msgid ""
2071
+ "The plugin includes some basic text and link styles which can be disabled by "
2072
+ "enabling this setting. Note that the styles used for the layout of the posts "
2073
+ "will still be applied."
2074
+ msgstr ""
2075
+
2076
+ #: custom-facebook-feed-admin.php:3961
2077
+ msgid ""
2078
+ "Enter custom text for the words below, or translate it into the language you "
2079
+ "would like to use."
2080
+ msgstr ""
2081
+
2082
+ #: custom-facebook-feed-admin.php:3967
2083
+ msgid "Original Text"
2084
+ msgstr ""
2085
+
2086
+ #: custom-facebook-feed-admin.php:3968
2087
+ msgid "Custom Text / Translation"
2088
+ msgstr ""
2089
+
2090
+ #: custom-facebook-feed-admin.php:3969
2091
+ msgid "Context"
2092
+ msgstr ""
2093
+
2094
+ #: custom-facebook-feed-admin.php:3975
2095
+ msgid "See More"
2096
+ msgstr ""
2097
+
2098
+ #: custom-facebook-feed-admin.php:3977 custom-facebook-feed-admin.php:3983
2099
+ msgid "Used when truncating the post text"
2100
+ msgstr ""
2101
+
2102
+ #: custom-facebook-feed-admin.php:3981
2103
+ msgid "See Less"
2104
+ msgstr ""
2105
+
2106
+ #: custom-facebook-feed-admin.php:3988
2107
+ msgid "View on Facebook"
2108
+ msgstr ""
2109
+
2110
+ #: custom-facebook-feed-admin.php:3990
2111
+ msgid "Used for the link to the post on Facebook"
2112
+ msgstr ""
2113
+
2114
+ #: custom-facebook-feed-admin.php:3993
2115
+ msgid "Share"
2116
+ msgstr ""
2117
+
2118
+ #: custom-facebook-feed-admin.php:3995
2119
+ msgid "Used for sharing the Facebook post via Social Media"
2120
+ msgstr ""
2121
+
2122
+ #: custom-facebook-feed-admin.php:3999
2123
+ msgid "photos"
2124
+ msgstr ""
2125
+
2126
+ #: custom-facebook-feed-admin.php:4001
2127
+ msgid "Added to the end of an album name. Eg. (6 photos)"
2128
+ msgstr ""
2129
+
2130
+ #: custom-facebook-feed-admin.php:4004
2131
+ msgid "Media Links"
2132
+ msgstr ""
2133
+
2134
+ #: custom-facebook-feed-admin.php:4006
2135
+ msgid "Photo"
2136
+ msgstr ""
2137
+
2138
+ #: custom-facebook-feed-admin.php:4008
2139
+ msgid "Used to link to photos on Facebook"
2140
+ msgstr ""
2141
+
2142
+ #: custom-facebook-feed-admin.php:4011
2143
+ msgid "Video"
2144
+ msgstr ""
2145
+
2146
+ #: custom-facebook-feed-admin.php:4013
2147
+ msgid "Used to link to videos on Facebook"
2148
+ msgstr ""
2149
+
2150
+ #: custom-facebook-feed-admin.php:4016
2151
+ msgid "Call-to-action Buttons"
2152
+ msgstr ""
2153
+
2154
+ #: custom-facebook-feed-admin.php:4018
2155
+ msgid "Learn More"
2156
+ msgstr ""
2157
+
2158
+ #: custom-facebook-feed-admin.php:4020
2159
+ msgid "Used for the 'Learn More' button"
2160
+ msgstr ""
2161
+
2162
+ #: custom-facebook-feed-admin.php:4023
2163
+ msgid "Shop Now"
2164
+ msgstr ""
2165
+
2166
+ #: custom-facebook-feed-admin.php:4025
2167
+ msgid "Used for the 'Shop Now' button"
2168
+ msgstr ""
2169
+
2170
+ #: custom-facebook-feed-admin.php:4028
2171
+ msgid "Message Page"
2172
+ msgstr ""
2173
+
2174
+ #: custom-facebook-feed-admin.php:4030
2175
+ msgid "Used for the 'Message Page' button"
2176
+ msgstr ""
2177
+
2178
+ #: custom-facebook-feed-admin.php:4035
2179
+ msgid "\"Posted _ hours ago\" text"
2180
+ msgstr ""
2181
+
2182
+ #: custom-facebook-feed-admin.php:4038
2183
+ msgid "second"
2184
+ msgstr ""
2185
+
2186
+ #: custom-facebook-feed-admin.php:4041
2187
+ msgid "seconds"
2188
+ msgstr ""
2189
+
2190
+ #: custom-facebook-feed-admin.php:4044
2191
+ msgid "minute"
2192
+ msgstr ""
2193
+
2194
+ #: custom-facebook-feed-admin.php:4047
2195
+ msgid "minutes"
2196
+ msgstr ""
2197
+
2198
+ #: custom-facebook-feed-admin.php:4050
2199
+ msgid "hour"
2200
+ msgstr ""
2201
+
2202
+ #: custom-facebook-feed-admin.php:4053
2203
+ msgid "hours"
2204
+ msgstr ""
2205
+
2206
+ #: custom-facebook-feed-admin.php:4056
2207
+ msgid "day"
2208
+ msgstr ""
2209
+
2210
+ #: custom-facebook-feed-admin.php:4059
2211
+ msgid "days"
2212
+ msgstr ""
2213
+
2214
+ #: custom-facebook-feed-admin.php:4062
2215
+ msgid "week"
2216
+ msgstr ""
2217
+
2218
+ #: custom-facebook-feed-admin.php:4065
2219
+ msgid "weeks"
2220
+ msgstr ""
2221
+
2222
+ #: custom-facebook-feed-admin.php:4068
2223
+ msgid "month"
2224
+ msgstr ""
2225
+
2226
+ #: custom-facebook-feed-admin.php:4071
2227
+ msgid "months"
2228
+ msgstr ""
2229
+
2230
+ #: custom-facebook-feed-admin.php:4074
2231
+ msgid "year"
2232
+ msgstr ""
2233
+
2234
+ #: custom-facebook-feed-admin.php:4077
2235
+ msgid "years"
2236
+ msgstr ""
2237
+
2238
+ #: custom-facebook-feed-admin.php:4080
2239
+ msgid "ago"
2240
+ msgstr ""
2241
+
2242
+ #: custom-facebook-feed-admin.php:4083
2243
+ msgid "Used to translate the \"__ days ago\" date text"
2244
+ msgstr ""
2245
+
2246
+ #: custom-facebook-feed-admin.php:4339
2247
+ msgid ""
2248
+ "PS. We currently have a <a href=\"https://smashballoon.com/custom-facebook-"
2249
+ "feed/?utm_source=plugin-free&utm_campaign=cff&discount="
2250
+ msgstr ""
2251
+
2252
+ #: custom-facebook-feed-admin.php:4357
2253
+ msgid ""
2254
+ "It's great to see that you've been using the <strong style='font-weight: "
2255
+ "700;'>Smash Balloon Custom Facebook Feed</strong> plugin for a while now. "
2256
+ "Hopefully you like it! If so, would you consider leaving a positive review? "
2257
+ "It really helps support the plugin and helps others to discover it too!"
2258
+ msgstr ""
2259
+
2260
+ #: custom-facebook-feed-admin.php:4361
2261
+ msgid "Sure, I'd love to!"
2262
+ msgstr ""
2263
+
2264
+ #: custom-facebook-feed-admin.php:4363
2265
+ msgid "No thanks"
2266
+ msgstr ""
2267
+
2268
+ #: custom-facebook-feed-admin.php:4365
2269
+ msgid "I've already given a review"
2270
+ msgstr ""
2271
+
2272
+ #: custom-facebook-feed-admin.php:4367
2273
+ msgid "Ask Me Later"
2274
+ msgstr ""
2275
+
2276
+ #: custom-facebook-feed-admin.php:4384
2277
+ #, php-format
2278
+ msgid ""
2279
+ "<b style=\"font-weight: 700;\">Exclusive offer!</b> We don't run promotions "
2280
+ "very often, but for a limited time we're offering <b style=\"font-weight: "
2281
+ "700;\">20% off</b> our Pro version to all users of our free Smash Balloon "
2282
+ "Custom Facebook Feed plugin."
2283
+ msgstr ""
2284
+
2285
+ #: custom-facebook-feed-admin.php:4386 custom-facebook-feed-admin.php:4404
2286
+ msgid "Get this offer"
2287
+ msgstr ""
2288
+
2289
+ #: custom-facebook-feed-admin.php:4387 custom-facebook-feed-admin.php:4405
2290
+ msgid "I'm not interested"
2291
+ msgstr ""
2292
+
2293
+ #: custom-facebook-feed-admin.php:4402
2294
+ #, php-format
2295
+ msgid ""
2296
+ "<b style=\"font-weight: 700;\">Black Friday/Cyber Monday Deal!</b> Thank you "
2297
+ "for using the free Smash Balloon Custom Facebook Feed plugin. For a limited "
2298
+ "time, we're offering <b style=\"font-weight: 700;\">20% off</b> the Pro "
2299
+ "version for all of our users."
2300
+ msgstr ""