Version Description
- Fix: Some connection error notices not clearing automatically.
Download this release
Release Info
Developer | smashballoon |
Plugin | Custom Facebook Feed |
Version | 2.14.1 |
Comparing to | |
See all releases |
Code changes from version 2.14 to 2.14.1
- README.txt +111 -563
- admin/PluginSilentUpgrader.php +576 -576
- admin/PluginSilentUpgraderSkin.php +57 -57
- admin/addon-functions.php +174 -174
- admin/class-cff-about.php +1351 -1351
- admin/class-install-skin.php +27 -27
- blocks/class-cff-blocks.php +153 -150
- changelog.txt +603 -0
- class-cff-education.php +135 -135
- class-cff-error-reporter.php +443 -443
- class-cff-sitehealth.php +81 -81
- css/cff-blocks.css +2 -2
- custom-facebook-feed-admin.php +47 -33
- custom-facebook-feed.php +12 -7
- email.php +102 -102
- img/about/icon-full.svg +0 -0
- img/about/icon-none.svg +0 -0
- img/about/icon-partial.svg +0 -0
- img/about/plugin-mi.png +0 -0
- img/about/plugin-om.png +0 -0
- img/about/plugin-rp.png +0 -0
- img/about/plugin-smtp.png +0 -0
- img/about/plugin-wpforms.png +0 -0
- js/cff-blocks.js +116 -113
- js/cff-scripts.min.js +62 -62
- js/jquery.matchHeight-min.js +12 -12
- languages/custom-facebook-feed.po +2300 -2300
README.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== Smash Balloon Social Post Feed ===
|
2 |
Contributors: smashballoon
|
3 |
-
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.14
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -12,82 +12,80 @@ Formerly "Custom Facebook Feed". Display completely customizable Facebook feeds
|
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
-
Display Facebook posts on your website. **Completely customizable**, **responsive** and **search engine crawlable
|
16 |
|
17 |
*"The perfect Facebook plugin with amazing support! What else do you want? Get it!"* - [JoeJeffries](http://wordpress.org/support/topic/you-dont-already-have-this?facebook)
|
18 |
|
19 |
-
*"I honestly cannot recommend this plugin enough. The plugin itself is gorgeous and super customizable, and if you run into trouble...support will get you out of it. Five Stars across the board."* - [pamsavoybarnett](http://wordpress.org/support/topic/love-this-plugin-w-awesome-support?facebook)
|
20 |
|
21 |
-
**Please note:** This free plugin allows you to display text and links from Facebook posts. To display **photos, videos, comments,** and more, we offer a Pro version of the plugin. See the Pro Version section below for more information.
|
22 |
|
23 |
### Facebook Feed Features
|
24 |
|
25 |
* **Super simple to set up** - 1 minute quick setup with no Facebook Developer App required
|
26 |
-
* **Display feeds from ANY Facebook page** - even
|
27 |
-
* **Completely Customizable** - By default the Facebook feed will adopt the style of your website, but can be completely customized to look however you like - with tons of styling and customization options!
|
28 |
* Facebook feed content is **crawlable by search engines** adding SEO value to your site - other Facebook plugins embed the feed using iframes which are not crawlable
|
29 |
-
* Completely **responsive** and mobile optimized - layout looks great on any screen size and in any container width
|
30 |
-
* Display **feeds from multiple different Facebook pages** and use the shortcode to embed
|
31 |
-
* Add your own **custom CSS**
|
32 |
* **Caching** means that your Facebook posts load lightning fast. Set your own caching time - check for new posts on Facebook every few seconds, minutes, hours or days. You decide.
|
33 |
* Show and hide certain parts of each Facebook post
|
34 |
-
* Show or hide the Facebook profile picture and name of the author above each post
|
35 |
* Display Facebook posts by just the page owner, everyone who posts on your Facebook page, or only other people
|
36 |
* Control the width, height, padding and background color of your Facebook feed
|
37 |
-
* Customize the size, weight and color of text
|
38 |
* Choose to set a background color and rounded corners on your Facebook posts
|
39 |
* Supports Facebook tags - creates links when using the @ symbol to tag people in your Facebook posts
|
40 |
* Automatically links hashtags used in posts to the hashtag page on Facebook
|
41 |
-
* Select the number of Facebook posts to display
|
42 |
-
* Select from a range of date formats or enter your own
|
43 |
-
* Use your own custom link text in place of the defaults
|
44 |
* Use the shortcode options to style multiple Facebook feeds in completely different ways
|
45 |
* Set a maximum character length for both the text and descriptions of your Facebook posts
|
46 |
-
* Create a customizable header with a range of icons for your Custom Facebook Feed
|
47 |
-
* Localization/i18n support to allow every part of the feed to be displayed in your language
|
|
|
48 |
|
49 |
### Pro Version (Custom Facebook Feed Pro)
|
50 |
|
51 |
-
In order to maintain the free version of the plugin on an ongoing basis, and to provide quick and effective support for free, we offer a Pro version of the plugin.
|
52 |
|
53 |
-
* [Find out more about
|
54 |
-
* [Try out the Pro demo](https://smashballoon.com/custom-facebook-feed/demo "Custom Facebook Feed Pro Demo").
|
55 |
|
56 |
### Benefits
|
57 |
|
58 |
* **Increase social engagement** between you and your users, customers, or fans
|
59 |
* **Save time** by using the Custom Facebook Feed to generate dynamic, search engine crawlable content on your website
|
60 |
* **Get more likes** by displaying your Facebook content directly on your site
|
61 |
-
* **Improve your SEO** as all of that quality keyword-rich Facebook content from posts and comments is directly embedded into your website
|
62 |
* Display your Facebook content your way to perfectly match your website's style
|
63 |
* **No Coding Required** - choose from tons of built-in customization options to create a truly unique feed of your Facebook content.
|
64 |
-
* The plugin is **updated regularly** with new features, bug-fixes and Facebook API changes
|
65 |
* Support is quick and effective
|
66 |
* We're dedicated to providing the **most customizable**, **robust** and **well supported** Facebook feed plugin in the world!
|
67 |
|
68 |
-
### How to use the plugin
|
69 |
|
70 |
-
One of our main priorities has always been to make our
|
71 |
|
72 |
-
* 1) Click the
|
73 |
-
* 2) Once you've connected your account, save the plugin settings.
|
74 |
-
* 3) Then simply copy and paste the `[custom-facebook-feed]` shortcode onto any page, post, or widget where you want the feed to be displayed.
|
75 |
|
76 |
-
That's it! You can then customize the feed as needed using the settings on the
|
77 |
|
78 |
-
For full step-by-step setup directions with screenshots, see [here](https://smashballoon.com/custom-facebook-feed/docs/free
|
79 |
|
80 |
### Requesting support
|
81 |
|
82 |
-
Customer support is a huge deal to us. We pride ourselves on always providing quick, effective, and courteous support to all of our users. If you're having an issue then just let us know and we'll be there to help as soon as possible. You can either open a ticket on the support forum on [WordPress.org](https://wordpress.org/support/plugin/custom-facebook-feed/ "Custom Facebook Feed Free support forum"), or directly on [our website](https://smashballoon.com/custom-facebook-feed/support/ "Custom Facebook Feed website support form"). We also have a large collection of help documentation and FAQs [on our website](https://smashballoon.com/custom-facebook-feed/faq/ "Custom Facebook Feed support FAQs") for all common issues.
|
83 |
|
84 |
### Who's behind this plugin?
|
85 |
|
86 |
-
We're Smash Balloon; 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 free 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.
|
87 |
|
88 |
-
To find out more about the team, see [here](https://smashballoon.com/about
|
89 |
|
90 |
-
Check out our other free plugins for
|
91 |
|
92 |
== Installation ==
|
93 |
|
@@ -105,9 +103,9 @@ For a full list of FAQs and help with troubleshooting please visit the **[FAQ &
|
|
105 |
|
106 |
If you have a Facebook **page** with a URL like this: `https://www.facebook.com/smashballoon` then the Page ID is just `smashballoon`. If your page URL is structured like this: `https://www.facebook.com/pages/smashballoon/123654123654123` then the Page ID is actually the number at the end, so in this case `123654123654123`.
|
107 |
|
108 |
-
Due to [recent changes](https://smashballoon.com/facebook-api-changes-april-4-2018
|
109 |
|
110 |
-
Copy and paste the ID into the [Pro demo](https://smashballoon.com/custom-facebook-feed/demo
|
111 |
|
112 |
= Are there any limitations on which Facebook page or group feeds I can display? =
|
113 |
|
@@ -131,11 +129,11 @@ Once you've done so, the plugin will be able to retrieve and display all of your
|
|
131 |
|
132 |
= Can I show photos and videos in my Custom Facebook feed? =
|
133 |
|
134 |
-
This free plugin only allows you to display text from your Facebook posts. To display photos and videos in your feed you would need to upgrade to the Pro version of the plugin. Try out a demo of the Pro version on the [Custom Facebook Feed website](https://smashballoon.com/custom-facebook-feed/demo "Custom Facebook Feed Demo"), and find out more about the Pro version [here](https://smashballoon.com/custom-facebook-feed
|
135 |
|
136 |
= Can I show the comments, shares and likes associated with each Facebook post? =
|
137 |
|
138 |
-
This is a feature of the [Pro version of the plugin](https://smashballoon.com/custom-facebook-feed
|
139 |
|
140 |
= Is the content of my Custom Facebook Feed crawlable by search engines? =
|
141 |
|
@@ -147,7 +145,7 @@ You can embed your Facebook feed directly into a template file by using the Word
|
|
147 |
|
148 |
= My Facebook feed posts are not showing up, or all I can see is the Facebook Like box but no posts =
|
149 |
|
150 |
-
Please refer to [this FAQ](https://smashballoon.com/facebook-feed-doesnt-show-can-see-like-box-posts-gives
|
151 |
|
152 |
= Create a basic slideshow from your Facebook posts =
|
153 |
|
@@ -183,11 +181,11 @@ setInterval(function(){
|
|
183 |
|
184 |
= Changing the font in your Facebook feed and using Google Fonts =
|
185 |
|
186 |
-
Please refer to [this FAQ](https://smashballoon.com/changing-the-font-in-your-facebook-feed-using-google-fonts
|
187 |
|
188 |
= Can I display my Facebook posts horizontally or in multiple columns? =
|
189 |
|
190 |
-
Please refer to [this FAQ](https://smashballoon.com/can-display-facebook-post-horizontally-multiple-columns
|
191 |
|
192 |
= My Facebook feed appears to have stopped updating / working =
|
193 |
|
@@ -203,11 +201,11 @@ Please note, this isn't a limitation of our plugin, it's a restriction which Fac
|
|
203 |
|
204 |
= I'm receiving an error message when trying to display my Facebook posts =
|
205 |
|
206 |
-
Please refer to our [Error Message Reference page](https://smashballoon.com/custom-facebook-feed/docs/errors
|
207 |
|
208 |
= Creating a Masonry grid layout from your Facebook posts =
|
209 |
|
210 |
-
Please refer to [this FAQ](https://smashballoon.com/creating-a-masonry-grid-layout-from-your-facebook-posts
|
211 |
|
212 |
= How do I customize my Facebook feed? =
|
213 |
|
@@ -229,7 +227,7 @@ If your shortcode includes single quotes then check that they are the standard s
|
|
229 |
|
230 |
3) Typo in the shortcode option
|
231 |
|
232 |
-
Ensure that there aren't any spelling errors in the shortcode options that you're using and that the format is consistent with that demonstrated on the [Shortcode Options reference page](https://smashballoon.com/custom-facebook-feed/docs/shortcodes
|
233 |
|
234 |
= Facebook avatar pictures aren't showing up in my Facebook feed =
|
235 |
|
@@ -244,25 +242,28 @@ The most common reason for this is that an add-on or extension you have installe
|
|
244 |
|
245 |
== Screenshots ==
|
246 |
|
247 |
-
1. By default the Facebook feed inherits your theme's default styles and is completely responsive
|
248 |
2. Completely customize the way your Facebook feed looks to perfectly match your site
|
249 |
3. Use custom CSS to customize every part of the Facebook feed
|
250 |
-
4. Display Facebook events
|
251 |
5. Configuring the Custom Facebook Feed plugin
|
252 |
-
6. General options - Custom Facebook Feed Layout
|
253 |
-
7. Typography options - Custom Facebook Feed Layout
|
254 |
-
8. Misc options - Custom Facebook
|
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
|
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
|
266 |
* New: Added support for translations.
|
267 |
|
268 |
= 2.12.4 =
|
@@ -271,78 +272,78 @@ The most common reason for this is that an add-on or extension you have installe
|
|
271 |
* Fix: Minor bug fixes
|
272 |
|
273 |
= 2.12.3 =
|
274 |
-
* Tweak: Added a text link in the settings page footer to our new free [YouTube plugin](https://wordpress.org/plugins/feeds-for-youtube/)
|
275 |
-
* Tweak: When reconnecting
|
276 |
* Tweak: Added 'rel="noopener"' to all external links and added 'rel="noreferrer"' to all non-Facebook links. Thanks to Dev VIP for the suggestion.
|
277 |
-
* Fix: Fixed an issue with some call-to-action link URLs when a link protocol wasn't included
|
278 |
* Fix: Fixed a JavaScript conflict with the [Forminator](https://wordpress.org/plugins/forminator/) plugin
|
279 |
-
* Fix: Fixed duplicate post message displaying due to ellipsis HTML character
|
280 |
-
* Fix: If a shared link post had no post text then the link title was used causing it to be displayed twice in the post
|
281 |
|
282 |
= 2.12.2 =
|
283 |
* Fix: Fixed a JavaScript error in the admin caused by the previous update. Apologies for any inconvenience.
|
284 |
|
285 |
= 2.12.1 =
|
286 |
-
* Fix: Fixed an issue with post date timezones due to changes in the WordPress 5.3 update
|
287 |
-
* Fix: Fixed a rare issue where a JavaScript error would occur in the WordPress admin if a Facebook account was manually connected and the Page ID used was the full URL
|
288 |
* Fix: Fixed a JavaScript error in the admin when using older web browsers
|
289 |
* Tweak: Improved the manual account connection process
|
290 |
* Tweak: Some minor UI tweaks to match the new WordPress 5.3 UI style
|
291 |
|
292 |
= 2.12 =
|
293 |
-
* New: Added a backup cache so the feed will still display even if there's an error from the Facebook API.
|
294 |
-
* New: You can now easily manage multiple page or group accounts on the plugin settings page allowing you to easily add them to other feeds on your site. When you connect a page or group you will now see it listed in the "Connected Accounts" section. You can add it to the primary feed or to another feed by using the new `account` shortcode option.
|
295 |
-
* Tweak: Added a filter which can be used to filter the API data when returned; `cff_filter_api_data`.
|
296 |
-
* Tweak: Updated API error messages
|
297 |
-
* Fix: Fixed an issue with some @tag links in post text due to a Facebook API change
|
298 |
-
* Fix: Fixed a rare issue with ellipsis chracter symbols in shared link descriptions causing the entire link description not to be displayed
|
299 |
|
300 |
= 2.11.1 =
|
301 |
-
* Tweak: Added the link source URL below the title for shared link posts
|
302 |
-
* Fix: Some themes would prevent the "Share" link from working successfully
|
303 |
-
* Fix: Fixed an issue with the "Feed Columns" setting not working if the minified versions of the plugin CSS/JavaScript files were being used
|
304 |
|
305 |
= 2.11 =
|
306 |
-
* New: Added a "Feed Columns" setting to allow you to display your feed in multiple columns. This can be found under the "General" tab on the "Customize" page, or by using the `cols` and `colsmobile` shortcode settings.
|
307 |
* New: Updated to use v4.0 of the Facebook API
|
308 |
|
309 |
= 2.10 =
|
310 |
-
* New: Facebook Groups are making their long-awaited return to the plugin! Just click the 'Log in and get my Access Token' button on the
|
311 |
-
* Fix: Fixed an issue where a lists of groups or pages wouldn't be displayed when retrieving
|
312 |
-
* Fix: Photo icons weren't showing for album posts
|
313 |
-
* Tweak: Now uses the `visitor_posts` endpoint to display visitor post feeds
|
314 |
|
315 |
= 2.9.1 =
|
316 |
* New: Added support for v3.3 of the Facebook API.
|
317 |
-
* Fix: The Access Token selection area was being cut off on small screens when a lot of Facebook pages were listed.
|
318 |
|
319 |
= 2.9 =
|
320 |
-
* New: You can now select between a "Regular" or "Boxed" post style. Settings for this can be found at: `Facebook Feed > Customize > Style Posts > Post Item`. A Box Shadow setting has been added to the "Boxed" post style.
|
321 |
* New: Added some settings to control the size and color of the Facebook shared link URLs and descriptions. These can be found at: `Facebook Feed > Customize > Style Posts > Shared Link Boxes`.
|
322 |
* New: Improved the Facebook Access Token retrieval process to make it more intuitive.
|
323 |
-
* Tweak:
|
324 |
-
* Tweak: Animated the social media icons when the "Share" button is clicked.
|
325 |
* Tweak: Changed the way the Facebook Like Box loads to avoid a conflict with the Facebook Messenger widget. It no longer uses the Facebook JavaScript SDK.
|
326 |
* Tweak: Changed the elements used for icons from `<i>` to `<span>` to aid accessibility.
|
327 |
* Tweak: Removed the Google+ share option as the platform has been deprecated.
|
328 |
-
* Tweak: Removed the share widgets from the footer of the admin so that they're only loaded when the "Share the plugin" button is clicked.
|
329 |
-
* Fix: The plugin now uses the built-in WordPress HTTP API to get data from Facebook instead of making it's own cURL requests to the Facebook API.
|
330 |
-
* Fix: Fixed an issue where the avatars of people posting to the Facebook page weren't being displayed. Individual Facebook API requests for avatars have now been removed and bundled into the main Facebook API request.
|
331 |
-
* Fix: If the link to the Facebook profile of a visitor posting to your page is not available then remove the link from the avatar and author name.
|
332 |
-
* Fix: Fixed an accessibility error caused by the share icons being empty links.
|
333 |
* Fix: Removed the use of the ENT_HTML5 constant as it isn't supported in PHP 5.4.
|
334 |
-
* Fix: Fixed a rare issue with tags in Facebook post stories when the locale was set to be Greek.
|
335 |
|
336 |
= 2.8 =
|
337 |
-
* New: Added support for Facebook Notes in timeline feeds. If your Facebook timeline feed contains a note then the plugin will now get the content from the note and display it within the Facebook post.
|
338 |
-
* New: Facebook call-to-action buttons - such as "Learn More", "Shop Now", and "Message Page" - are now supported in your Facebook posts. These text strings can be translated using the settings at: Facebook Feed > Customize > Custom Text/Translate
|
339 |
* New: Added a setting that you can enable if you are displaying Facebook posts from a restricted (non-public) Facebook page. This will allow the Facebook page avatar to be displayed, and is located at: Facebook Feed > Customize > Misc > Misc Settings > Is Facebook Page restricted?
|
340 |
-
* New: If a visitor posts to your Facebook page then their avatar will now be displayed and cached for 6 months. To clear the cache of these avatar images use the button located at: Facebook Feed > Customize > Misc > Misc Settings > Clear Avatar Cache
|
341 |
-
* Tweak: The Timezone setting can now be set in the shortcode. Eg: `timezone="America/Los_Angeles"`
|
342 |
-
* Tweak: Minor UI changes to the admin pages
|
343 |
* Tweak: Reduced some of the Facebook data in the System Info
|
344 |
* Fix: If you backdate a Facebook post it will now be ordered correctly in your Facebook feed
|
345 |
-
* Fix: Fixed a theme conflict related to the Color Picker in the
|
346 |
* Verified compatibility with WordPress 5.0 and Gutenburg
|
347 |
|
348 |
= 2.7.2 =
|
@@ -353,507 +354,54 @@ The most common reason for this is that an add-on or extension you have installe
|
|
353 |
* Tweak: Made some adjustments to the Facebook Access Token login process
|
354 |
|
355 |
= 2.7 =
|
356 |
-
* New: Now easily get your own Facebook Access Token to avoid any Facebook connection issues. Simply click the blue Facebook "Log in and get my Access Token" button on the Custom Facebook Feed settings page and connect your Facebook account to get your token. The Facebook Access Token will work to get Facebook posts from ANY Facebook page. Thanks to our friends at SlickRemix for powering our new login and getting the plugin back up and running again!
|
357 |
* Tweak: Removed the minimum caching time if you're using your own Facebook Page Access Token
|
358 |
|
359 |
= 2.6.4 =
|
360 |
-
* **Important:** If you are displaying Facebook posts from a Facebook page that **you are an admin of** then it is now highly recommended that you retrieve your own Facebook Access Token for that Facebook page to avoid any Facebook API rate limit errors. Simply follow these [step-by-step](https://smashballoon.com/custom-facebook-feed/page-token
|
361 |
|
362 |
= 2.6.3 =
|
363 |
* Fix: Fixed an issue where Facebook API errors were being cached
|
364 |
|
365 |
= 2.6.2 =
|
366 |
-
* Fix: Replaced all HTTP links with HTTPS
|
367 |
* Fix: Fixed a rare issue which affected the layout of other Facebook widgets
|
368 |
* Fix: Automatically remove slashes at the end of the Facebook Page ID as it caused an error
|
369 |
-
* Fix: The API response test in the System Info now only tests with your Facebook token if you have the "Use my own Access Token" setting enabled
|
370 |
* Fix: Fixed an issue which caused an occasional Facebook API rate limit error
|
371 |
|
372 |
= 2.6.1 =
|
373 |
* Fix: Removed an unnecessary Facebook API call
|
374 |
* Fix: Removed a PHP notice which was displayed under rare circumstances
|
375 |
-
* Fix: Minor bug fixes
|
376 |
|
377 |
= 2.6 =
|
378 |
* Fix: Fixed an issue connecting to the Facebook API caused by a recent Facebook platform change
|
379 |
* Tweak: Increased the minimum caching time to be 15 minutes to reduce Facebook API requests
|
380 |
|
381 |
= 2.5.2 =
|
382 |
-
* Important: Due to sudden changes in the Facebook API it is no longer possible to display posts from a Facebook Group. Please [see here](https://smashballoon.com/facebook-api-changes-april-4-2018/) for more information. We apologize for any frustration or inconvenience this has caused.
|
383 |
-
* Removed: Due to Facebook API restrictions, it is no longer possible to display information about
|
384 |
|
385 |
= 2.5.1 =
|
386 |
-
* Fix: Prevented a PHP notice which would be displayed under rare circumstances
|
387 |
* Fix: Replaced a function due to a deprecation in PHP 7.2
|
388 |
|
389 |
= 2.5 =
|
390 |
-
* New: Added the post story as part of the page/author name at the top of the post
|
391 |
* New: Added an option to use minified versions of the plugin CSS and JavaScript files: `Facebook Feed > Customize > Misc > Misc Settings > Minify CSS and JavaScript files`
|
392 |
* New: Added support for clearing the cache of major caching plugins when the Facebook feed cache is cleared. You can enable this by setting the following setting to be "Yes": `Facebook Feed > Customize > Misc > Misc Settings > Force cache to clear on interval`
|
393 |
-
* Tweak: Improved the text truncation so that it applies to both the post text and description as one block of text and accounts for HTML link tags
|
394 |
-
* Tweak: Added an "Auto" option to the Post Limit setting where it will automatically adjust the post limit based on the number of posts you choose to display
|
395 |
-
* Tweak: Reorganized the settings pages to be more intuitive
|
396 |
* Tweak: Added aria-hidden=true to icons to help improve accessibility
|
397 |
-
* Tweak: The icon font stylesheet handle has been renamed so it will only be loaded once if another of our plugins is installed
|
398 |
-
* Tweak:
|
399 |
-
* Tweak: Added a setting to workaround a theme issue that affects the shortening of the post text. If you're experiencing an issue with the shortening of post text then you can enable the following setting: `Facebook Feed > Customize > Misc > Misc Settings > Fix text shortening issue`
|
400 |
-
* Fix: Included a fallback in case the author name and avatar aren't available in visitor posts
|
401 |
-
* Fix: Fixed an issue with apostrophes in the header not being escaped correctly
|
402 |
-
* Fix: Fixed an issue with the
|
403 |
-
* Fix: Added support for the @[ID:page-name] tagging format
|
404 |
-
* Fix: The post description is now able to be displayed even if the post text is hidden
|
405 |
-
|
406 |
-
|
407 |
-
* Compatible with WordPress 4.8
|
408 |
-
|
409 |
-
= 2.4.5 =
|
410 |
-
* Tweak: Updated plugin links for new WordPress.org repo
|
411 |
-
* Fix: Minor bug fixes
|
412 |
-
|
413 |
-
= 2.4.4 =
|
414 |
-
* New: If your Facebook posts have been created in more than one language on Facebook then it's now possible to display each language by using the `locale` setting in the shortcode. Eg: English: `[custom-facebook-feed locale=en_EN]`, German: `[custom-facebook-feed locale=de_DE]`
|
415 |
-
* Fix: Fixed an issue with the order of group posts in some feeds
|
416 |
-
|
417 |
-
= 2.4.3 =
|
418 |
-
* Fix: Fixed a potential security vulnerability
|
419 |
-
* Tested with upcoming WordPress 4.6 update
|
420 |
-
|
421 |
-
= 2.4.2 =
|
422 |
-
* Tweak: Group wall feed posts are now ordered based on recent activity, rather than by the date they were created, to better reflect the order on the Facebook Group wall.
|
423 |
-
* Tweak: The "5 hours ago" date text strings can now be translated directly in the shortcode if you're displaying different feeds in different languages. See the bottom of the [Shortcode Options table](https://smashballoon.com/custom-facebook-feed/docs/shortcodes/) for more information.
|
424 |
-
* Tweak: Created some specific [setup directions](https://smashballoon.com/custom-facebook-feed/docs/free/) for the free version.
|
425 |
-
* Fix: Minor bug fixes
|
426 |
-
|
427 |
-
= 2.4.1.2 =
|
428 |
-
* Updated to be compatible with Facebook API version 2.6
|
429 |
-
|
430 |
-
= 2.4.1.1 =
|
431 |
-
* Fix: Fixed a JavaScript error in the admin area when using WordPress 4.5
|
432 |
-
|
433 |
-
= 2.4.1 =
|
434 |
-
* New: If a post contains either a photo or video then an icon and link are now added to view it on Facebook. You can disable this by unchecking the "Media Link" option in the following location: Customize > Post Layout > Show/Hide. You can also remove it by using the "exclude" shortcode option: exclude="medialink". You can translate or change the text for this link on the "Custom Text / Translate" settings page.
|
435 |
-
* Tweak: Tested with WordPress 4.5
|
436 |
-
* Fix: Fixed an issue where the "Share" button in the plugin Like Box wasn't working correctly
|
437 |
-
* Fix: Added support for wp-config proxy settings. Credit to [@usrlocaldick](https://wordpress.org/support/topic/proxy-support-1) for the patch.
|
438 |
-
|
439 |
-
= 2.4 =
|
440 |
-
* New: Added a setting to allow you to use a fixed pixel width for the Facebook feed on desktop but switch to a 100% width responsive layout on mobile
|
441 |
-
* New: You can now click on the name of a setting on the admin pages to reveal the corresponding shortcode for that setting
|
442 |
-
* New: Added quick links to the top of the Customize settings pages to make it easier to find certain settings
|
443 |
-
* New: Added a setting to allow you to disable the default plugin text and link styles (Customize > Misc > Disable default styles)
|
444 |
-
* New: Added a setting which allows you to manually change the request method used to fetch Facebook posts which is necessary for some server setups
|
445 |
-
* Tweak: Updated the Font Awesome icon font to version 4.5
|
446 |
-
* Tweak: Moved the 'Show Header' setting to the 'General' tab on the Customize page
|
447 |
-
* Fix: Hashtag linking now works with all languages and character sets
|
448 |
-
* Fix: Fixed an error that occurred when trying to activate the Pro version with the free version still activated
|
449 |
-
* Fix: Fixed a rare error which occurred when the Facebook post contained no text and no story
|
450 |
-
* Fix: Fixed an issue when trying to display Facebook posts by only visitors to your Facebook page caused by a recent Facebook API update
|
451 |
-
|
452 |
-
= 2.3.10 =
|
453 |
-
* Fix: If you're experiencing an issue with your Facebook feed not automatically updating successfully then please update the plugin and enable the following setting: Custom Facebook Feed > Customize > Misc > Misc Settings > Force cache to clear on interval. If you set this setting to 'Yes' then it should force your plugin cache to clear either every hour, 12 hours, or 24 hours, depending on how often you have the plugin set to check Facebook for new posts.
|
454 |
-
|
455 |
-
= 2.3.9 =
|
456 |
-
* Fix: Fixed an issue caused by the recent Facebook API 2.5 update where the posts wouldn't display when using a brand new Access Token
|
457 |
-
|
458 |
-
= 2.3.8 =
|
459 |
-
* Fix: Fixed a positioning issue with the Facebook "Like Box / Page Plugin" widget caused by a recent Facebook update which was causing it to overlap on top of other content
|
460 |
-
* Fix: Hashtags containing Chinese characters are now linked
|
461 |
-
* Fix: Fixed a minor issue in shared link posts where the post text linked to the shared link URL instead of the post on Facebook
|
462 |
-
* Tweak: Added a timezone for Sydney, Australia
|
463 |
-
|
464 |
-
= 2.3.7 =
|
465 |
-
* Fix: Fixed an issue caused by the WordPress 4.3 update where feeds from very long page IDs wouldn't update correctly due to the cache not clearing when expired
|
466 |
-
* Fix: Removed specific encoding parameters from the cURL request method to prevent encoding issues on some servers
|
467 |
-
|
468 |
-
= 2.3.6 =
|
469 |
-
* New: Added a couple of new customization options for the Facebook Like Box/Page Plugin which allow you to select a small/slim header for the Like Box and hide the call-to-action button (if available)
|
470 |
-
* Fix: The plugin now works with Access Tokens which use the new recently-released version 2.4 of the Facebook API
|
471 |
-
|
472 |
-
= 2.3.5 =
|
473 |
-
* New: Replace the Facebook 'Like Box' with the new Facebook 'Page Plugin' as the Facebook Like Box will be deprecated on June 23rd, 2015. Settings can be found under the Misc tab on the plugin's Customize page.
|
474 |
-
* Fix: Hashtags which contain foreign characters are now correctly linked to the hashtag on Facebook
|
475 |
-
* Fix: Links within Facebook post descriptions weren't opening in a new tab
|
476 |
-
* Fix: Removed empty style tags from some elements
|
477 |
-
* Fix: The URLs used for the 'Share' icons are now encoded to prevent any HTML validation errors
|
478 |
-
* Fix: Shared Facebook posts now link to the new shared post and not to the original post that was shared on Facebook
|
479 |
-
* Fix: Corrected a minor issue with the plugin caching string
|
480 |
-
* Fix: Fixed a minor issue with tags in the Facebook post text when creating/sharing an event
|
481 |
-
* Tweak: Add some stricter CSS to some parts of the feed to prevent theme conflicts
|
482 |
-
* Tweak: Automatically link the Facebook event name to the event now rather than it having to be enabled on the plugin's 'Typography' settings page
|
483 |
-
|
484 |
-
= 2.3.4 =
|
485 |
-
* Fix: The Facebook event description is no longer shown twice in event posts. It was previously shown in the post text itself and in the Facebook event details.
|
486 |
-
* Fix: Fixed a rare bug which would occur if your Facebook page or Facebook group name contained a number
|
487 |
-
|
488 |
-
= 2.3.3 =
|
489 |
-
* Fix: Removed a PHP notice which was missed in the last update. Apologies for the two updates in quick succession.
|
490 |
-
|
491 |
-
= 2.3.2 =
|
492 |
-
* Fix: Fixed some stray PHP notices which were inadvertently introduced in a recent update
|
493 |
-
* Tweak: Added an option to not load the icon font included in the plugin
|
494 |
-
|
495 |
-
= 2.3.1 =
|
496 |
-
* New: Added a shortcode option to allow you to offset the number of posts to be shown. Eg: offset=2
|
497 |
-
* New: Added an email link to the sharing icons
|
498 |
-
* New: Added a setting to load a local copy of the icon font instead of the CDN version. This can be found at the bottom of the 'Misc' settings page.
|
499 |
-
* Tweak: Added a prefix to the IDs on all Facebook posts so that they can now be targeted via CSS
|
500 |
-
* Tweak: Added "nofollow" to all links by default. This can be disabled by using `nofollow=false` in the shortcode.
|
501 |
-
* Tweak: Added some missing settings to the System Info section
|
502 |
-
* Tweak: Added the 'Timezone' setting to the main Settings page so that it's easier to find
|
503 |
-
* Fix: Added a workaround for Facebook changing the event URLs in their API from absolute to relative URLs
|
504 |
-
* Fix: Facebook removed the 'relevant_count' parameter from their API so added a workaround to get the number of photos attached to a Facebook post
|
505 |
-
* Fix: Fixed a minor bug in the WP_Http fallback method
|
506 |
-
* Fix: Removed duplicate IDs on the share icons and replaced with classes
|
507 |
-
* Fix: Added a check to the file_get_contents data retrieval method to check whether the Open SSL wrapper is enabled
|
508 |
-
* Fix: The `eventtitlelink` shortcode option now works correctly
|
509 |
-
* Fix: Added a workaround for 'story_tags' which Facebook deprecated from their API
|
510 |
-
* Fix: Removed query string from the end of CSS and JavaScript file references and replaced it with the wp_enqueue_script 'ver' parameter instead
|
511 |
-
|
512 |
-
= 2.3 =
|
513 |
-
* Happy New Year!
|
514 |
-
* New: Added a share link which allows you to share posts to Facebook, Twitter, Google+ or LinkedIn. This can be disabled at the very bottom of the Typography tab, or by using `showsharelink=false` in the [custom-facebook-feed] shortcode.
|
515 |
-
* Tweak: Using your own Facebook Access Token in the plugin is still optional but is now recommended in order to protect yourself against future Access Token related issues
|
516 |
-
* Tweak: Increased the accuracy of the character count when links are included in the Facebook text
|
517 |
-
* Tweak: Improved the efficiency of the Facebook post caching
|
518 |
-
* Tweak: Replaced the rel attribute with the HTML5 data attribute when storing data on an element
|
519 |
-
* Tweak: Added HTTPS stream wrapper check to the System Info to aid in troubleshooting
|
520 |
-
* Tweak: Updated the plugin's icon font to the latest version
|
521 |
-
* Tweak: Added the Smash Balloon logo to the credit link which can be optionally displayed at the bottom of your feed. The setting for this is at the bottom of the Misc tab on the Customize page.
|
522 |
-
* Tweak: Added a shortcode option to only show the Smash Balloon credit link on certain feeds: `[custom-facebook-feed credit=true]`
|
523 |
-
* Fix: Fixed an issue with quotes being escaped in custom/translated text
|
524 |
-
* Fix: Display an error message if WPHTTP function isn't working correctly
|
525 |
-
* Fix: The `postbgcolor` shortcode option is now working correctly
|
526 |
-
|
527 |
-
= 2.2.1 =
|
528 |
-
* Fix: Fixed a minor JavaScript error which occurs if a Facebook post doesn't contain any text
|
529 |
-
|
530 |
-
= 2.2 =
|
531 |
-
* New: Added a text area to the Support tab which contains all of the plugin settings and site info for easier troubleshooting
|
532 |
-
* New: You can now set the number of Facebook posts to '0' if you just want to show the Facebook Like box widget and no posts
|
533 |
-
* Tweak: If the user doesn't add a unit to the width, height or padding then automatically add 'px'
|
534 |
-
* Tweak: Added social media sharing links to the bottom of the settings page and an option to add a credit link to the bottom of the feed
|
535 |
-
* Fix: Fixed an issue with Facebook hashtags not being linked when followed immediately by punctuation
|
536 |
-
* Fix: When displaying a shared link if the caption is the same as the link URL then don't display it
|
537 |
-
* Fix: Added a space before the feed header's style attribute to remove HTML validation error
|
538 |
-
* Fix: Prefixed the 'top' and 'bottom' classes used on the Facebook Like box to prevent CSS conflicts
|
539 |
-
* Fix: Fixed an issue with the link color not being applied to Facebook hashtag links
|
540 |
-
|
541 |
-
= 2.1.3 =
|
542 |
-
* Fix: Fixed an issue with the Facebook Access Token used in the plugin hitting its request limit
|
543 |
-
|
544 |
-
= 2.1.2 =
|
545 |
-
* Fix: Added in a missing closing div tag to the Facebook feed when an error is being displayed
|
546 |
-
|
547 |
-
= 2.1.1 =
|
548 |
-
* Fix: Fixed an issue with the date not being hidden when unchecked in the Show/Hide section
|
549 |
-
* Fix: Fixed an issue with the date not being displayed below event posts when the date position was set to 'At the bottom of the post'
|
550 |
-
|
551 |
-
= 2.1 =
|
552 |
-
* New: Added an option to preserve/save your plugin options after uninstalling the plugin. This makes manually updating the plugin much easier.
|
553 |
-
* New: Added a 'Settings' link to the plugin on the Plugins page
|
554 |
-
* New: Added a field to the Misc settings page which allows users to enter their Facebook App ID in order to remove a couple of browser console warnings caused by the Facebook Like box widget
|
555 |
-
* Tweak: Reduced the size of the author's Facebook profile picture from 50px to 40px to match Facebook
|
556 |
-
* Tweak: The link description text is now 12px in size by default
|
557 |
-
* Tweak: Added some default character limits to the post text and descriptions
|
558 |
-
* Tweak: If the post author is being hidden then change the default date position to be the bottom of the post
|
559 |
-
* Fix: The post author link is no longer the full width of the post and is only wrapped around the author image and name which helps prevent inadvertently clicking on the post author
|
560 |
-
* Fix: Added a fb-root element to the Like box to prevent a browser console warning
|
561 |
-
* Fix: Renamed the ShowError function to prevent conflicts
|
562 |
-
* Fix: Fixed an issue with the 'seconds' custom text string not being saved correctly
|
563 |
-
* Fix: When linking the post text to the Facebook post the correct text color is now applied
|
564 |
-
|
565 |
-
= 2.0.1 =
|
566 |
-
* Tweak: Improved error handling and added an [Error Message reference](https://smashballoon.com/custom-facebook-feed/docs/errors/) to the website
|
567 |
-
|
568 |
-
= 2.0 =
|
569 |
-
* New: Added an option to display the post date immediately below the author name - as it is on Facebook. This is now the default date position.
|
570 |
-
* New: Added options to add a background color and rounded corners to your posts
|
571 |
-
* New: If your Facebook event has an end date then it will now be displayed after the start date
|
572 |
-
* New: Hashtags in the post descriptions are now also linked
|
573 |
-
* New: Tested and approved for the upcoming WordPress 4.0 release
|
574 |
-
* Tweak: Moved the 'View on Facebook' link to the left side
|
575 |
-
* Tweak: Added error handling to improve user experience
|
576 |
-
* Tweak: If the Facebook API can't be reached by the plugin for some reason then it no longer caches the empty response and instead keeps trying to retrieve the posts from Facebook until it is successful
|
577 |
-
* Fix: Removed some redundant inline CSS used on the posts
|
578 |
-
* Fix: If there is a token in the 'Access Token' field but the 'Enter my own Access Token' box is unchecked then the plugin will no longer use it
|
579 |
-
* Fix: Added the trim() function to the 'Test connection to Facebook API' function to improve reliability
|
580 |
-
* Fix: Fixed an occasional JavaScript error which occurred when the post text was hidden
|
581 |
-
|
582 |
-
= 1.9.9.3 =
|
583 |
-
* New: Hashtags in link, photo and video descriptions are now also linked
|
584 |
-
* Fix: Fixed an issue with hashtags being linked when the post text is also linked, which interfered with the text formatting
|
585 |
-
|
586 |
-
= 1.9.9.2 =
|
587 |
-
* Fix: Removed a couple of stray PHP notices
|
588 |
-
|
589 |
-
= 1.9.9.1 =
|
590 |
-
* Fix: Fixed an occasional issue with hashtags in inline CSS inadvertently being linked
|
591 |
-
|
592 |
-
= 1.9.9 =
|
593 |
-
* New: Hashtags in your posts are now linked to the hashtag search on Facebook. This can be disabled in the 'Post Text' section on the Typography settings page.
|
594 |
-
* New: Added a Facebook icon to the Custom Facebook Feed admin menu
|
595 |
-
* Fix: Corrected the left side margin on the "Like" box so that it aligns correctly with posts
|
596 |
-
|
597 |
-
= 1.9.8.1 =
|
598 |
-
* Fix: Fixed an admin JavaScript error introduced by the last update
|
599 |
-
|
600 |
-
= 1.9.8 =
|
601 |
-
* Tweak: The Access Token field is now hidden by default and is revealed by a checkbox
|
602 |
-
* Fix: Fixed an issue with link colors not being applied to all links
|
603 |
-
* Fix: Removed the link box container from posts which contain non-youtube/vimeo links
|
604 |
-
* Fix: Links which don't contain a 'http://' protocol are now linked correctly
|
605 |
-
|
606 |
-
= 1.9.7 =
|
607 |
-
* Fix: Fixed an issue with a generic function name which was occasionally causing an error
|
608 |
-
|
609 |
-
= 1.9.6 =
|
610 |
-
* Tweak: Added an HTML wrapper element around the feed
|
611 |
-
|
612 |
-
= 1.9.5 =
|
613 |
-
* New: Added an option to set a height on the Like box. This allows you to display more faces of your fans if you have that option selected.
|
614 |
-
* Tweak: Added a few stricter CSS styles to help minimize the chance of theme stylesheets distorting post formatting
|
615 |
-
* Tweak: Added a span to the header text to allow CSS to be applied
|
616 |
-
* Fix: Fixed a bug with the post author text bumping down below the author image in the Firefox browser
|
617 |
-
* Fix: Corrected a bug which caused some links not to have the color applied
|
618 |
-
* Fix: Fixed a float issue in Firefox which sometimes caused the feed to be pushed off the page
|
619 |
-
|
620 |
-
= 1.9.4 =
|
621 |
-
* New: Added background and border styling options to shared links
|
622 |
-
* Tweak: Reduced the clickable area of the post author
|
623 |
-
* Tweak: Added a 'Customize' tab to the Settings page
|
624 |
-
* Fix: Fixed an issue with post tag linking not working correctly in some languages
|
625 |
-
* Fix: Fixed an issue with line breaks not being respected in IE8
|
626 |
-
|
627 |
-
= 1.9.2 =
|
628 |
-
* Fix: Added title and alt attributes to the post author's Facebook profile picture
|
629 |
-
* Fix: Improved the reliability of the post tag linking
|
630 |
-
* Fix: Fixed an issue with HTML characters not rendering correctly when linking the post text
|
631 |
-
* Fix: Improved the reliability of the CSS clearing method used on the feed container
|
632 |
-
* Compatible with WordPress 3.9
|
633 |
-
|
634 |
-
= 1.9.1 =
|
635 |
-
* Fix: Fixed an issue with the 'textlink' shortcode option
|
636 |
-
* Fix: Fixed an bug with post text sometimes being duplicated when linked
|
637 |
-
* Fix: Removed error_reporting(0);
|
638 |
-
|
639 |
-
= 1.9.0 =
|
640 |
-
* New: Added the ability to change the text size and color of the post author
|
641 |
-
* New: Define the format, size and color of shared link titles
|
642 |
-
* New: You can now define the color of the links in your post text, descriptions and Facebook events
|
643 |
-
* Tweak: Moved the Feed Header options to the Typography page
|
644 |
-
* Tweak: Moved the Ajax setting to the Misc page
|
645 |
-
* Tweak: Now removes any query strings attached to the Facebook Page ID
|
646 |
-
* Fix: Fixed an issue with some themes causing the clear element to prevent links being clickable
|
647 |
-
* Fix: Some minor bug fixes
|
648 |
-
|
649 |
-
= 1.8.2.3 =
|
650 |
-
* New: Now supports Facebook tags - creates links when using the @ symbol to tag other people or Facebook pages in your posts
|
651 |
-
* Tweak: Changed the method used for link replacement in posts
|
652 |
-
* Fix: Fixed issue with php include
|
653 |
-
|
654 |
-
= 1.8.1 =
|
655 |
-
* New: Added an 'exclude' shortcode option to allow you to easily exclude specific parts of the post
|
656 |
-
* New: Timeline events are now cached to help reduce page load time
|
657 |
-
* New: Added an option for when the WordPress theme is loading the feed via AJAX so that the JavaScript runs after the feed has been loaded into the page
|
658 |
-
* Tweak: Changed author images back to loading via PHP rather than JavaScript due to issues with certain WordPress themes
|
659 |
-
* Fix: Reset the timezone after the shortcode has run
|
660 |
-
* Fix: Fixed an issue with the shared link descriptions not being hidden when specified
|
661 |
-
* Fix: Fixed a rare issue with the 'textlink' shortcode option
|
662 |
-
* Fix: Use a fallback JSON string if unable to find the cached version in the database
|
663 |
-
|
664 |
-
= 1.8.0 =
|
665 |
-
* New: Added a built-in color picker
|
666 |
-
* New: Added class to posts based on the author to allow for independent styling
|
667 |
-
* Tweak: Now loads the author's Facebook profile picture in using JavaScript to help speed up load times
|
668 |
-
* Tweak: Now automatically set the Facebook post limit based on the number of Facebook posts to be displayed
|
669 |
-
* Tweak: Core improvements to the way Facebook posts are output
|
670 |
-
* Tweak: Changed 'Layout & Style' page name to 'Customize'
|
671 |
-
* Tweak: Moved the Support information to a tab on the Settings page
|
672 |
-
* Tweak: Improved the 'Test connection to Facebook API' function
|
673 |
-
* Fix: Encode Facebook URLs so that they pass HTML validation
|
674 |
-
* Fix: Fixed an issue with Facebook post captions not displaying under some circumstances
|
675 |
-
* Fix: More robust method for stripping the URL when a user enters Facebook page URL instead of their Facebook Page ID
|
676 |
-
|
677 |
-
= 1.7.2 =
|
678 |
-
* Tweak: Moved the 'Show post author' option from the General settings tab to the Post Layout tab
|
679 |
-
* Tweak: Added the ability to show or hide the author to the 'include' shortcode option
|
680 |
-
* Fix: Added CSS box-sizing property to feed header so that padding doesn't increase its width
|
681 |
-
* Fix: Fixed showheader=false and headeroutside=false shortcode options
|
682 |
-
* Fix: Now allows users to enter their Facebook page URL as their Facebook Page ID
|
683 |
-
|
684 |
-
= 1.7.0 =
|
685 |
-
* New: Added ability to add a customizable header to your feed
|
686 |
-
* New: Added a Custom JavaScript section to allow you to add your own JS or jQuery functionality to the feed
|
687 |
-
* New: Added a 'Custom Text / Translate' tab to house all customizable text
|
688 |
-
* New: You can now choose to show posts only by other people on your Facebook page
|
689 |
-
* New: Set your timezone so that dates/times are displayed in your local time
|
690 |
-
* New: When a Facebook post contains a link to multiple images it now states the number of photos after the post text and links to the Facebook album
|
691 |
-
* Tweak: Plugin now detects whether the page is using SSL and pulls https resources
|
692 |
-
* Tweak: Added a button to test the connection to Facebook's API for easier troubleshooting
|
693 |
-
* Fix: Now using HTML encoding to parse any raw HTML tags in the Facebook post text or descriptions
|
694 |
-
* Fix: Added a protocol to the beginning of links which don't include one
|
695 |
-
* Fix: Fixed date width issue in IE7
|
696 |
-
* Fix: Removed stray PHP notices
|
697 |
-
* Fix: Added a space between the Like Box attributes
|
698 |
-
|
699 |
-
= 1.6.8.2 =
|
700 |
-
* Fix: Fixed a CSS bug in Firefox which was causing the page author name to bump down below the avatar
|
701 |
-
|
702 |
-
= 1.6.8.1 =
|
703 |
-
* Tweak: Moved 'View on Facebook' link up to be level with the date rather than on the line below it
|
704 |
-
* Fix: Don't show the caption when it is the same as the Facebook post text
|
705 |
-
* Fix: Fixed issue with enqueueing JavaScript file
|
706 |
-
|
707 |
-
= 1.6.8 =
|
708 |
-
* New: Added option to remove border from the Facebook Like box when showing faces
|
709 |
-
* New: Set Facebook "Like" box text color to either blue or white
|
710 |
-
* Tweak: Moved descripion below video or link title and added link source
|
711 |
-
* Tweak: Added ability to manually translate the '2 weeks ago' text
|
712 |
-
* Tweak: Replaced 'View Link' with 'View on Facebook' so that shared links now link to the Facebook post
|
713 |
-
* Tweak: Facebook "Like" box is now responsive
|
714 |
-
* Tweak: Displays Facebook post caption if no description is available
|
715 |
-
* Tweak: Vertically center multi-line author names rather than bumping them down below the Facebook profile picture
|
716 |
-
* Tweak: Checks whether the Access Token is inputted in the correct format
|
717 |
-
* Fix: Fixed bug in the 'Show posts on my page by others' option
|
718 |
-
* Fix: If displaying a Facebook group then automatically hides the Facebook "Like" box
|
719 |
-
* Fix: 'others=false' shortcode option now working correctly
|
720 |
-
* Fix: Strip any white space characters from beginning or end of Access Token and Facebook Page ID
|
721 |
-
|
722 |
-
= 1.6.7.1 =
|
723 |
-
* Fix: Fixed a bug in 1.6.7 which was causing an issue displaying the Facebook feed in some circumstances
|
724 |
-
|
725 |
-
= 1.6.7 =
|
726 |
-
* New: Your Facebook feed can now be completely displayed in any language - added i18n support for date translation
|
727 |
-
* Tweak: Improved documentation within the plugin
|
728 |
-
* Tweak: Changed order of methods used to retrieve Facebook feed data
|
729 |
-
|
730 |
-
= 1.6.6.3 =
|
731 |
-
* New: Added support for Facebook group events
|
732 |
-
|
733 |
-
= 1.6.6.1 =
|
734 |
-
* Fix: Resolved jQuery UI draggable bug which was causing issues with drag and drop
|
735 |
-
|
736 |
-
= 1.6.6 =
|
737 |
-
* New: Now works with Facebook groups
|
738 |
-
* Fix: Fixed an issue with the 'Show posts by others' option not working correctly in the previous version
|
739 |
-
|
740 |
-
= 1.6.4 =
|
741 |
-
* New: Added localization support. Full support for various languages coming soon
|
742 |
-
* New: Added CSS classes to different Facebook post types to allow for different styling based on post type
|
743 |
-
* New: Option to link statuses to either the status post itself or the directly to the Facebook page/timeline
|
744 |
-
* New: Added option to add thumbnail faces of fans to the Facebook Like box and define a width
|
745 |
-
* Tweak: Added separate classes to 'View on Facebook' and 'View Link' links so that they can be targeted with CSS
|
746 |
-
* Tweak: Prefixed every CSS class to prevent styling conflicts with theme stylesheets. Please note that if you used custom CSS to style parts of the feed that the CSS classes are now prefixed with 'cff-' to prevent theme conflicts. Eg. '.more' is now '.cff-more'.
|
747 |
-
|
748 |
-
= 1.6.3 =
|
749 |
-
* New: Added support for Facebook 'Offers'
|
750 |
-
* Fix: Fixed an issue with the 'others' shortcode option not working correctly
|
751 |
-
* Fix: Prefixed the 'clear' class to prevent conflicts
|
752 |
-
|
753 |
-
= 1.6.2 =
|
754 |
-
* New: Post caching now temporarily stores your Facebook post data in your WordPress database to allow for super quick load times
|
755 |
-
* New: Define your own caching time. Check for new Facebook posts every few seconds, minutes, hours or days. You decide.
|
756 |
-
* New: Define your own custom text for the 'See More' and 'See Less' buttons
|
757 |
-
* New: Add your own CSS class to your Custom Facebook Feeds
|
758 |
-
* New: Define a Facebook post limit which is higher or lower than the default 25
|
759 |
-
* New: Include the Facebook Like box inside or outside of the Facebook feed's container
|
760 |
-
* New: Customize the Facebook event date independently
|
761 |
-
* New: Improved layout of admin pages for easier navigation and customization
|
762 |
-
* Fix: Provided a fix for the Facebook API duplicate post bug
|
763 |
-
* Fix: Fixed bug which ocurred when multiple Facebook feeds are displayed on the same page with different text lengths defined
|
764 |
-
|
765 |
-
= 1.5.2 =
|
766 |
-
* Fix: Fixed JavaScript error in previous update
|
767 |
-
|
768 |
-
= 1.5.1 =
|
769 |
-
* New: Added a 'See More' link to expand any text which is longer than the character limit defined
|
770 |
-
* New: Choose to show Facebook posts by other people in your feed
|
771 |
-
* New: Option to show the post author's Facebook profile picture and name above each post
|
772 |
-
* New: Added options to customize and format the Facebook post date
|
773 |
-
* New: Add your own text before and after the date and in place of the 'View on Facebook' and 'View Link' text links
|
774 |
-
* New: Specify the format of the Facebook Event date
|
775 |
-
* Tweak: Default date format is less specific and better mimics Facebook's - credit Mark Bebbington
|
776 |
-
* Tweak: Changed the layout of the Typography section to allow for the additional options
|
777 |
-
* Fix: When a Facebook photo album is shared it now links to the album itself on Facebook and not just the cover photo
|
778 |
-
* Fix: Fixed issue with hyperlinks in post text which don't have a space before them not being converted to links
|
779 |
-
|
780 |
-
= 1.4.8 =
|
781 |
-
* Minor fixes
|
782 |
-
|
783 |
-
= 1.4.7 =
|
784 |
-
* Tweak: Added links to statuses which link to the Facebook page
|
785 |
-
* Tweak: Added classes to Facebook event date, location and description to allow custom styling
|
786 |
-
* Tweak: Removed 'Where' and 'When' text from Facebook events and made bold instead
|
787 |
-
|
788 |
-
= 1.4.6 =
|
789 |
-
* Fix: Fixed 'num' option in shortcode
|
790 |
-
|
791 |
-
= 1.4.4 =
|
792 |
-
* New: Added more shortcode options
|
793 |
-
* Minor tweaks
|
794 |
-
|
795 |
-
= 1.4.2 =
|
796 |
-
* New: Add your own custom CSS to allow for even deeper customization
|
797 |
-
* New: Optionally link your post text to the Facebook post
|
798 |
-
* New: Optionally link your event title to the Facebook event page
|
799 |
-
* Some minor modifications
|
800 |
-
|
801 |
-
= 1.4.1 =
|
802 |
-
* Fix: Set all parts of the Facebook feed to display by default on activation
|
803 |
-
|
804 |
-
= 1.4.0 =
|
805 |
-
* Major Update!
|
806 |
-
* New: Loads of new customization options for your Custom Facebook Feed
|
807 |
-
* New: Define Facebook feed width, height, padding and background color
|
808 |
-
* New: Change the font-size, font-weight and color of the Facebook post text, description, date, links and event details
|
809 |
-
* New: Choose whether to show or hide certain parts of the Facebook posts
|
810 |
-
* New: Select whether the Facebook Like box is shown at the top of bottom of the Facebook feed
|
811 |
-
* New: Choose Facebook Like box background color
|
812 |
-
|
813 |
-
= 1.3.6 =
|
814 |
-
* Minor modifications
|
815 |
-
|
816 |
-
= 1.3.5 =
|
817 |
-
* New: Shared Facebook events now display event details (name, location, date/time, description) directly in the Facebook feed
|
818 |
-
|
819 |
-
= 1.3.4 =
|
820 |
-
* New: Email addresses within the Facebook post text are now hyperlinked
|
821 |
-
* Fix: Links beginning with 'www' are now also hyperlinked
|
822 |
-
|
823 |
-
= 1.3.3 =
|
824 |
-
* New: Added support for Facebook events - display the Facebook event details (name, location, date/time, description) directly in the Facebook feed
|
825 |
-
* Fix: Links within the Facebook post text are now hyperlinked
|
826 |
-
* Tweak: Added additional methods for retrieving Facebook feed data
|
827 |
-
|
828 |
-
= 1.3.2 =
|
829 |
-
* Fix: Now using the built-in WordPress HTTP API to get retrieve the Facebook data
|
830 |
-
|
831 |
-
= 1.3.1 =
|
832 |
-
* Fix: Fixed issue with certain Facebook statuses not displaying correctly
|
833 |
-
|
834 |
-
= 1.3.0 =
|
835 |
-
* Tweak: If 'Number of Posts to show' is not set then default to 10 Facebook posts
|
836 |
-
|
837 |
-
= 1.2.9 =
|
838 |
-
* Fix: Now using cURL instead of file_get_contents to prevent issues with php.ini configuration on some web servers
|
839 |
-
|
840 |
-
= 1.2.8 =
|
841 |
-
* Fix: Fixed bug in specifying the number of Facebook posts to display
|
842 |
-
|
843 |
-
= 1.2.7 =
|
844 |
-
* Tweak: Prevented likes and comments by the page author showing up in the Facebook feed
|
845 |
-
|
846 |
-
= 1.2.6 =
|
847 |
-
* Tweak: Added help link to Custom Facebook Feed settings page
|
848 |
-
|
849 |
-
= 1.2.5 =
|
850 |
-
* Fix: Added clear fix
|
851 |
-
|
852 |
-
= 1.2.1 =
|
853 |
-
* Fix: Minor bug fixes
|
854 |
-
|
855 |
-
= 1.2 =
|
856 |
-
* New: Added the ability to define a maximum length for both the Facebook post text and description
|
857 |
-
|
858 |
-
= 1.0 =
|
859 |
-
* Launch!
|
1 |
=== Smash Balloon Social Post Feed ===
|
2 |
Contributors: smashballoon
|
3 |
+
Tags: Facebook, Facebook feed, Facebook posts, Facebook wall, Facebook page, Custom Facebook Feed, Facebook group, Facebook social feed, Facebook post, Facebook like box
|
4 |
Requires at least: 3.0
|
5 |
Requires PHP: 5.2
|
6 |
Tested up to: 5.4
|
7 |
+
Stable tag: 2.14.1
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
+
Display Facebook posts on your website. **Completely customizable**, **responsive** and **search engine crawlable** Facebook feeds. Display **multiple Facebook feeds** from **any public Facebook page**, and completely match the look and feel of the site with tons of Facebook feed customization options!
|
16 |
|
17 |
*"The perfect Facebook plugin with amazing support! What else do you want? Get it!"* - [JoeJeffries](http://wordpress.org/support/topic/you-dont-already-have-this?facebook)
|
18 |
|
19 |
+
*"I honestly cannot recommend this Facebook plugin enough. The plugin itself is gorgeous and super customizable, and if you run into trouble...support will get you out of it. Five Stars across the board."* - [pamsavoybarnett](http://wordpress.org/support/topic/love-this-plugin-w-awesome-support?facebook)
|
20 |
|
21 |
+
**Please note:** This free Facebook plugin allows you to display text and links from Facebook posts. To display **photos, videos, comments,** and more, we offer a Pro version of the plugin. See the Pro Version section below for more information.
|
22 |
|
23 |
### Facebook Feed Features
|
24 |
|
25 |
* **Super simple to set up** - 1 minute quick setup with no Facebook Developer App required
|
26 |
+
* **Display feeds from ANY Facebook page** - even Facebook pages you aren't an admin of
|
27 |
+
* **Completely Customizable** - By default the Facebook feed will adopt the style of your website, but your Facebook feeds can be completely customized to look however you like - with tons of styling and customization options!
|
28 |
* Facebook feed content is **crawlable by search engines** adding SEO value to your site - other Facebook plugins embed the feed using iframes which are not crawlable
|
29 |
+
* Completely **responsive** and mobile optimized Facebook feeds - layout looks great on any screen size and in any container width
|
30 |
+
* Display **feeds from multiple different Facebook pages** and use the shortcode to embed your Facebook feeds into a page, post or widget anywhere on your site
|
|
|
31 |
* **Caching** means that your Facebook posts load lightning fast. Set your own caching time - check for new posts on Facebook every few seconds, minutes, hours or days. You decide.
|
32 |
* Show and hide certain parts of each Facebook post
|
33 |
+
* Show or hide the Facebook profile picture and name of the author above each Facebook post
|
34 |
* Display Facebook posts by just the page owner, everyone who posts on your Facebook page, or only other people
|
35 |
* Control the width, height, padding and background color of your Facebook feed
|
36 |
+
* Customize the size, weight and color of text in your Facebook posts
|
37 |
* Choose to set a background color and rounded corners on your Facebook posts
|
38 |
* Supports Facebook tags - creates links when using the @ symbol to tag people in your Facebook posts
|
39 |
* Automatically links hashtags used in posts to the hashtag page on Facebook
|
40 |
+
* Select the number of Facebook posts to display in your Facebook feed
|
|
|
|
|
41 |
* Use the shortcode options to style multiple Facebook feeds in completely different ways
|
42 |
* Set a maximum character length for both the text and descriptions of your Facebook posts
|
43 |
+
* Create a customizable Facebook header with a range of icons for your Custom Facebook Feed
|
44 |
+
* Localization/i18n support to allow every part of the Facebook feed to be displayed in your language
|
45 |
+
* Add your own **custom CSS**
|
46 |
|
47 |
### Pro Version (Custom Facebook Feed Pro)
|
48 |
|
49 |
+
In order to maintain the free version of the Custom Facebook Feed plugin on an ongoing basis, and to provide quick and effective support for free, we offer a Pro version of the plugin. Custom Facebook Feed Pro allows you to display photos, videos, the number of likes, shares, reactions and comments for each Facebook post, choose from multiple layout options, filter Facebook posts by type or #hashtag/string, load more Facebook posts into your feed, and more. [Click here](https://smashballoon.com/differences-between-the-free-version-and-pro-version-of-the-custom-facebook-feed-plugin/ "Differences between free and Pro version of Custom Facebook Feed plugin") for a full list of all differences between the Custom Facebook Feed free and Pro versions.
|
50 |
|
51 |
+
* [Find out more about Custom Facebook Feed Pro](https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free-readme&utm_source=proversion&utm_medium=findout "Custom Facebook Feed Pro")
|
52 |
+
* [Try out the Custom Facebook Feed Pro demo](https://smashballoon.com/custom-facebook-feed/demo/?utm_campaign=facebook-free-readme&utm_source=proversion&utm_medium=demo "Custom Facebook Feed Pro Demo").
|
53 |
|
54 |
### Benefits
|
55 |
|
56 |
* **Increase social engagement** between you and your users, customers, or fans
|
57 |
* **Save time** by using the Custom Facebook Feed to generate dynamic, search engine crawlable content on your website
|
58 |
* **Get more likes** by displaying your Facebook content directly on your site
|
59 |
+
* **Improve your SEO** as all of that quality keyword-rich Facebook content from posts and Facebook comments is directly embedded into your website
|
60 |
* Display your Facebook content your way to perfectly match your website's style
|
61 |
* **No Coding Required** - choose from tons of built-in customization options to create a truly unique feed of your Facebook content.
|
62 |
+
* The Custom Facebook Feed plugin is **updated regularly** with new features, bug-fixes and Facebook API changes
|
63 |
* Support is quick and effective
|
64 |
* We're dedicated to providing the **most customizable**, **robust** and **well supported** Facebook feed plugin in the world!
|
65 |
|
66 |
+
### How to use the Custom Facebook Feed plugin
|
67 |
|
68 |
+
One of our main priorities has always been to make our Custom Facebook Feed plugin as easy as possible to setup and use. Once you've installed the plugin there are only a few steps to get up and running:
|
69 |
|
70 |
+
* 1) Click the big blue Facebook button on the plugin settings page. This will prompt you to log into your Facebook account to authorize the plugin.
|
71 |
+
* 2) Once you've connected your Facebook account, save the plugin settings.
|
72 |
+
* 3) Then simply copy and paste the `[custom-facebook-feed]` shortcode onto any page, post, or widget where you want the Facebook feed to be displayed.
|
73 |
|
74 |
+
That's it! You can then customize the Facebook feed as needed using the settings on the Facebook Feed > Customize page.
|
75 |
|
76 |
+
For full step-by-step setup directions with screenshots, see [here](https://smashballoon.com/custom-facebook-feed/docs/free/?utm_campaign=facebook-free-readme&utm_source=howto&utm_medium=setup "Custom Facebook Feed Free Setup Doc").
|
77 |
|
78 |
### Requesting support
|
79 |
|
80 |
+
Customer support is a huge deal to us. We pride ourselves on always providing quick, effective, and courteous support to all of our users. If you're having an issue using the Custom Facebook Feed plugin then just let us know and we'll be there to help as soon as possible. You can either open a ticket on the support forum on [WordPress.org](https://wordpress.org/support/plugin/custom-facebook-feed/ "Custom Facebook Feed Free support forum"), or directly on the Custom Facebook Feed section of [our website](https://smashballoon.com/custom-facebook-feed/support/ "Custom Facebook Feed website support form"). We also have a large collection of help documentation and FAQs [on our website](https://smashballoon.com/custom-facebook-feed/faq/ "Custom Facebook Feed support FAQs") for all common issues related to the Custom Facebook Feed plugin.
|
81 |
|
82 |
### Who's behind this plugin?
|
83 |
|
84 |
+
We're Smash Balloon; a fun-loving WordPress plugin development company birthed into existence in early 2013. We specialize in creating social media 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 free 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.
|
85 |
|
86 |
+
To find out more about the team, see [here](https://smashballoon.com/about/?utm_campaign=facebook-free-readme&utm_source=who&utm_medium=about "Team Smash Balloon").
|
87 |
|
88 |
+
Check out our other free plugins for [Instagram](https://wordpress.org/plugins/instagram-feed "Instagram Feed free plugin"), [Twitter](https://wordpress.org/plugins/custom-twitter-feeds/ "Custom Twitter Feeds free plugin"), and [YouTube](https://wordpress.org/plugins/feeds-for-youtube/ "Feeds for YouTube free plugin").
|
89 |
|
90 |
== Installation ==
|
91 |
|
103 |
|
104 |
If you have a Facebook **page** with a URL like this: `https://www.facebook.com/smashballoon` then the Page ID is just `smashballoon`. If your page URL is structured like this: `https://www.facebook.com/pages/smashballoon/123654123654123` then the Page ID is actually the number at the end, so in this case `123654123654123`.
|
105 |
|
106 |
+
Due to [recent changes](https://smashballoon.com/facebook-api-changes-april-4-2018/?utm_campaign=facebook-free-readme&utm_source=faq&utm_medium=id) to the Facebook API it is unfortunately no longer possible to display a feed from a Facebook Group.
|
107 |
|
108 |
+
Copy and paste the ID into the [Pro demo](https://smashballoon.com/custom-facebook-feed/demo/?utm_campaign=facebook-free-readme&utm_source=faq&utm_medium=demoid) to test it.
|
109 |
|
110 |
= Are there any limitations on which Facebook page or group feeds I can display? =
|
111 |
|
129 |
|
130 |
= Can I show photos and videos in my Custom Facebook feed? =
|
131 |
|
132 |
+
This free plugin only allows you to display text from your Facebook posts. To display photos and videos in your feed you would need to upgrade to the Pro version of the plugin. Try out a demo of the Pro version on the [Custom Facebook Feed website](https://smashballoon.com/custom-facebook-feed/demo/?utm_campaign=facebook-free-readme&utm_source=faq&utm_medium=media "Custom Facebook Feed Demo"), and find out more about the Pro version [here](https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free-readme&utm_source=faq&utm_medium=pro "Custom Facebook Feed Pro"). [Click here](https://smashballoon.com/differences-between-the-free-version-and-pro-version-of-the-custom-facebook-feed-plugin/ "Differences between free and Pro version of Custom Facebook Feed plugin") for a full list of all differences between the free version and Pro version.
|
133 |
|
134 |
= Can I show the comments, shares and likes associated with each Facebook post? =
|
135 |
|
136 |
+
This is a feature of the [Pro version of the plugin](https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free-readme&utm_source=faq&utm_medium=comments "Custom Facebook Feed Pro"). To display comments, shares and likes you would need to upgrade from the free version to the Pro version.
|
137 |
|
138 |
= Is the content of my Custom Facebook Feed crawlable by search engines? =
|
139 |
|
145 |
|
146 |
= My Facebook feed posts are not showing up, or all I can see is the Facebook Like box but no posts =
|
147 |
|
148 |
+
Please refer to [this FAQ](https://smashballoon.com/facebook-feed-doesnt-show-can-see-like-box-posts-gives/?utm_campaign=facebook-free-readme&utm_source=faq&utm_medium=errors "My Facebook feed posts are not showing up, or all I can see is the Facebook Like box but no posts") for potential solutions on how to resolve this issue.
|
149 |
|
150 |
= Create a basic slideshow from your Facebook posts =
|
151 |
|
181 |
|
182 |
= Changing the font in your Facebook feed and using Google Fonts =
|
183 |
|
184 |
+
Please refer to [this FAQ](https://smashballoon.com/changing-the-font-in-your-facebook-feed-using-google-fonts/?utm_campaign=facebook-free-readme&utm_source=faq&utm_medium=fonts "Changing the font in your Facebook feed and using Google Fonts") for directions on how to use Google fonts in your Facebook posts.
|
185 |
|
186 |
= Can I display my Facebook posts horizontally or in multiple columns? =
|
187 |
|
188 |
+
Please refer to [this FAQ](https://smashballoon.com/can-display-facebook-post-horizontally-multiple-columns/?utm_campaign=facebook-free-readme&utm_source=faq&utm_medium=horizontal "Can I display my Facebook posts horizontally or in multiple columns?") for directions on how to display your Facebook posts in multiple columns.
|
189 |
|
190 |
= My Facebook feed appears to have stopped updating / working =
|
191 |
|
201 |
|
202 |
= I'm receiving an error message when trying to display my Facebook posts =
|
203 |
|
204 |
+
Please refer to our [Error Message Reference page](https://smashballoon.com/custom-facebook-feed/docs/errors/?utm_campaign=facebook-free-readme&utm_source=faq&utm_medium=errors "I'm receiving an error message when trying to display my Facebook posts") for information on how to resolve common error messages.
|
205 |
|
206 |
= Creating a Masonry grid layout from your Facebook posts =
|
207 |
|
208 |
+
Please refer to [this FAQ](https://smashballoon.com/creating-a-masonry-grid-layout-from-your-facebook-posts/?utm_campaign=facebook-free-readme&utm_source=faq&utm_medium=masonry "Creating a Masonry grid layout from your Facebook posts") for directions on how to create a Masonry grid layout from your Facebook feed posts.
|
209 |
|
210 |
= How do I customize my Facebook feed? =
|
211 |
|
227 |
|
228 |
3) Typo in the shortcode option
|
229 |
|
230 |
+
Ensure that there aren't any spelling errors in the shortcode options that you're using and that the format is consistent with that demonstrated on the [Shortcode Options reference page](https://smashballoon.com/custom-facebook-feed/docs/shortcodes/?utm_campaign=facebook-free-readme&utm_source=faq&utm_medium=shortcode "The shortcode options aren't working").
|
231 |
|
232 |
= Facebook avatar pictures aren't showing up in my Facebook feed =
|
233 |
|
242 |
|
243 |
== Screenshots ==
|
244 |
|
245 |
+
1. By default the Facebook feed inherits your theme's default styles and the Facebook feed is completely responsive
|
246 |
2. Completely customize the way your Facebook feed looks to perfectly match your site
|
247 |
3. Use custom CSS to customize every part of the Facebook feed
|
248 |
+
4. Display Facebook events in your Facebook feed
|
249 |
5. Configuring the Custom Facebook Feed plugin
|
250 |
+
6. General Facebook Feed options - Custom Facebook Feed Layout and Style page
|
251 |
+
7. Facebook Feed Typography options - Custom Facebook Feed Layout and Style page
|
252 |
+
8. Misc Facebook Feed options - Custom Facebook Feed Layout and Style page
|
253 |
9. It's super easy to display your Facebook feed in any page or post
|
254 |
|
255 |
== Changelog ==
|
256 |
+
= 2.14.1 =
|
257 |
+
* Fix: Some connection error notices not clearing automatically.
|
258 |
+
|
259 |
= 2.14 =
|
260 |
+
* New: Email alerts for critical Facebook feed 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.
|
261 |
+
* New: Admin notifications for critical Facebook feed issues. If there is an error with a Facebook 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.
|
262 |
* 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.
|
263 |
* 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.
|
264 |
|
265 |
= 2.13 =
|
266 |
+
* New: Added a "Custom Facebook Feed" Gutenberg block to use in the block editor, allowing you to easily add a Facebook feed to posts and pages.
|
267 |
* New: Added support for translations.
|
268 |
|
269 |
= 2.12.4 =
|
272 |
* Fix: Minor bug fixes
|
273 |
|
274 |
= 2.12.3 =
|
275 |
+
* Tweak: Added a text link in the Facebook Feed settings page footer to our new free [YouTube plugin](https://wordpress.org/plugins/feeds-for-youtube/)
|
276 |
+
* Tweak: When reconnecting a Facebook account on the settings page, if there's an issue with the existing Facebook access token then it'll be automatically replaced.
|
277 |
* Tweak: Added 'rel="noopener"' to all external links and added 'rel="noreferrer"' to all non-Facebook links. Thanks to Dev VIP for the suggestion.
|
278 |
+
* Fix: Fixed an issue with some Facebook call-to-action link URLs when a link protocol wasn't included
|
279 |
* Fix: Fixed a JavaScript conflict with the [Forminator](https://wordpress.org/plugins/forminator/) plugin
|
280 |
+
* Fix: Fixed duplicate Facebook post message displaying due to ellipsis HTML character
|
281 |
+
* Fix: If a shared Facebook link post had no post text then the link title was used causing it to be displayed twice in the Facebook post
|
282 |
|
283 |
= 2.12.2 =
|
284 |
* Fix: Fixed a JavaScript error in the admin caused by the previous update. Apologies for any inconvenience.
|
285 |
|
286 |
= 2.12.1 =
|
287 |
+
* Fix: Fixed an issue with Facebook post date timezones due to changes in the WordPress 5.3 update
|
288 |
+
* Fix: Fixed a rare issue where a JavaScript error would occur in the WordPress admin if a Facebook account was manually connected and the Facebook Page ID used was the full URL
|
289 |
* Fix: Fixed a JavaScript error in the admin when using older web browsers
|
290 |
* Tweak: Improved the manual account connection process
|
291 |
* Tweak: Some minor UI tweaks to match the new WordPress 5.3 UI style
|
292 |
|
293 |
= 2.12 =
|
294 |
+
* New: Added a backup cache so the Facebook feed will still display even if there's an error from the Facebook API.
|
295 |
+
* New: You can now easily manage multiple Facebook page or group accounts on the Facebook Feed plugin settings page allowing you to easily add them to other Facebook feeds on your site. When you connect a Facebook page or group you will now see it listed in the "Connected Accounts" section. You can add it to the primary Facebook feed or to another Facebook feed by using the new `account` shortcode option.
|
296 |
+
* Tweak: Added a filter which can be used to filter the Facebook API data when returned; `cff_filter_api_data`.
|
297 |
+
* Tweak: Updated Facebook API error messages
|
298 |
+
* Fix: Fixed an issue with some @tag links in Facebook post text due to a Facebook API change
|
299 |
+
* Fix: Fixed a rare issue with ellipsis chracter symbols in Facebook shared link descriptions causing the entire link description not to be displayed
|
300 |
|
301 |
= 2.11.1 =
|
302 |
+
* Tweak: Added the link source URL below the title for Facebook shared link posts
|
303 |
+
* Fix: Some themes would prevent the Facebook "Share" link from working successfully
|
304 |
+
* Fix: Fixed an issue with the "Feed Columns" setting not working if the minified versions of the Custom Facebook Feed plugin CSS/JavaScript files were being used
|
305 |
|
306 |
= 2.11 =
|
307 |
+
* New: Added a "Feed Columns" setting to allow you to display your Facebook feed in multiple columns. This can be found under the "General" tab on the "Customize" page, or by using the `cols` and `colsmobile` shortcode settings.
|
308 |
* New: Updated to use v4.0 of the Facebook API
|
309 |
|
310 |
= 2.10 =
|
311 |
+
* New: Facebook Groups are making their long-awaited return to the Custom Facebook Feed plugin! Just click the 'Log in and get my Facebook Access Token' button on the Facebook Feed Settings page and select 'Facebook Group'. Follow the prompts to connect your Facebook Group and display your feed.
|
312 |
+
* Fix: Fixed an issue where a lists of Facebook groups or pages wouldn't be displayed when retrieving a Facebook Access Token due to a server configuration issue
|
313 |
+
* Fix: Photo icons weren't showing for Facebook album posts
|
314 |
+
* Tweak: Now uses the Facebook `visitor_posts` endpoint to display visitor Facebook post feeds
|
315 |
|
316 |
= 2.9.1 =
|
317 |
* New: Added support for v3.3 of the Facebook API.
|
318 |
+
* Fix: The Facebook Access Token selection area was being cut off on small screens when a lot of Facebook pages were listed.
|
319 |
|
320 |
= 2.9 =
|
321 |
+
* New: You can now select between a "Regular" or "Boxed" Facebook post style. Settings for this can be found at: `Facebook Feed > Customize > Style Posts > Post Item`. A Box Shadow setting has been added to the "Boxed" Facebook post style.
|
322 |
* New: Added some settings to control the size and color of the Facebook shared link URLs and descriptions. These can be found at: `Facebook Feed > Customize > Style Posts > Shared Link Boxes`.
|
323 |
* New: Improved the Facebook Access Token retrieval process to make it more intuitive.
|
324 |
+
* Tweak: Facebook avatar images are now circular to match Facebook.
|
325 |
+
* Tweak: Animated the social media icons when the Facebook "Share" button is clicked.
|
326 |
* Tweak: Changed the way the Facebook Like Box loads to avoid a conflict with the Facebook Messenger widget. It no longer uses the Facebook JavaScript SDK.
|
327 |
* Tweak: Changed the elements used for icons from `<i>` to `<span>` to aid accessibility.
|
328 |
* Tweak: Removed the Google+ share option as the platform has been deprecated.
|
329 |
+
* Tweak: Removed the social media share widgets from the footer of the admin so that they're only loaded when the "Share the plugin" button is clicked.
|
330 |
+
* Fix: The Custom Facebook Feed plugin now uses the built-in WordPress HTTP API to get data from Facebook instead of making it's own cURL requests to the Facebook API.
|
331 |
+
* Fix: Fixed an issue where the Facebook avatars of people posting to the Facebook page weren't being displayed. Individual Facebook API requests for avatars have now been removed and bundled into the main Facebook API request.
|
332 |
+
* Fix: If the link to the Facebook profile of a visitor posting to your page is not available then remove the link from the Facebook avatar and author name.
|
333 |
+
* Fix: Fixed an accessibility error caused by the Facebook share icons being empty links.
|
334 |
* Fix: Removed the use of the ENT_HTML5 constant as it isn't supported in PHP 5.4.
|
335 |
+
* Fix: Fixed a rare issue with Facebook tags in Facebook post stories when the locale was set to be Greek.
|
336 |
|
337 |
= 2.8 =
|
338 |
+
* New: Added support for Facebook Notes in timeline feeds. If your Facebook timeline feed contains a note then the Custom Facebook Feed plugin will now get the content from the note and display it within the Facebook post.
|
339 |
+
* New: Facebook call-to-action buttons - such as "Learn More", "Shop Now", and "Message Facebook Page" - are now supported in your Facebook posts. These text strings can be translated using the settings at: Facebook Feed > Customize > Custom Text/Translate
|
340 |
* New: Added a setting that you can enable if you are displaying Facebook posts from a restricted (non-public) Facebook page. This will allow the Facebook page avatar to be displayed, and is located at: Facebook Feed > Customize > Misc > Misc Settings > Is Facebook Page restricted?
|
341 |
+
* New: If a Facebook visitor posts to your Facebook page then their avatar will now be displayed and cached for 6 months. To clear the cache of these Facebook avatar images use the button located at: Facebook Feed > Customize > Misc > Misc Settings > Clear Avatar Cache
|
342 |
+
* Tweak: The Timezone setting can now be set in the Custom Facebook Feed shortcode. Eg: `timezone="America/Los_Angeles"`
|
343 |
+
* Tweak: Minor UI changes to the Facebook Feed admin pages
|
344 |
* Tweak: Reduced some of the Facebook data in the System Info
|
345 |
* Fix: If you backdate a Facebook post it will now be ordered correctly in your Facebook feed
|
346 |
+
* Fix: Fixed a theme conflict related to the Color Picker in the Facebook Feed admin section
|
347 |
* Verified compatibility with WordPress 5.0 and Gutenburg
|
348 |
|
349 |
= 2.7.2 =
|
354 |
* Tweak: Made some adjustments to the Facebook Access Token login process
|
355 |
|
356 |
= 2.7 =
|
357 |
+
* New: Now easily get your own Facebook Access Token to avoid any Facebook connection issues. Simply click the blue Facebook "Log in and get my Facebook Access Token" button on the Custom Facebook Feed settings page and connect your Facebook account to get your token. The Facebook Access Token will work to get Facebook posts from ANY Facebook page. Thanks to our friends at SlickRemix for powering our new login and getting the Custom Facebook Feed plugin back up and running again!
|
358 |
* Tweak: Removed the minimum caching time if you're using your own Facebook Page Access Token
|
359 |
|
360 |
= 2.6.4 =
|
361 |
+
* **Important:** If you are displaying Facebook posts from a Facebook page that **you are an admin of** then it is now highly recommended that you retrieve your own Facebook Access Token for that Facebook page to avoid any Facebook API rate limit errors. Simply follow these [step-by-step](https://smashballoon.com/custom-facebook-feed/page-token/?utm_campaign=facebook-free-readme&utm_source=changelog&utm_medium=limits) instructions to obtain one.
|
362 |
|
363 |
= 2.6.3 =
|
364 |
* Fix: Fixed an issue where Facebook API errors were being cached
|
365 |
|
366 |
= 2.6.2 =
|
367 |
+
* Fix: Replaced all HTTP links in the Facebook feed with HTTPS
|
368 |
* Fix: Fixed a rare issue which affected the layout of other Facebook widgets
|
369 |
* Fix: Automatically remove slashes at the end of the Facebook Page ID as it caused an error
|
370 |
+
* Fix: The API response test in the System Info now only tests with your Facebook token if you have the "Use my own Facebook Access Token" setting enabled
|
371 |
* Fix: Fixed an issue which caused an occasional Facebook API rate limit error
|
372 |
|
373 |
= 2.6.1 =
|
374 |
* Fix: Removed an unnecessary Facebook API call
|
375 |
* Fix: Removed a PHP notice which was displayed under rare circumstances
|
376 |
+
* Fix: Minor Facebook bug fixes
|
377 |
|
378 |
= 2.6 =
|
379 |
* Fix: Fixed an issue connecting to the Facebook API caused by a recent Facebook platform change
|
380 |
* Tweak: Increased the minimum caching time to be 15 minutes to reduce Facebook API requests
|
381 |
|
382 |
= 2.5.2 =
|
383 |
+
* Important: Due to sudden changes in the Facebook API it is no longer possible to display Facebook posts from a Facebook Group. Please [see here](https://smashballoon.com/facebook-api-changes-april-4-2018/) for more information. We apologize for any frustration or inconvenience this has caused.
|
384 |
+
* Removed: Due to Facebook API restrictions, it is no longer possible to display information about a Facebook event when it is posted or shared to your Facebook Page timeline.
|
385 |
|
386 |
= 2.5.1 =
|
387 |
+
* Fix: Prevented a PHP notice which would be displayed under rare circumstances in the Facebook feed
|
388 |
* Fix: Replaced a function due to a deprecation in PHP 7.2
|
389 |
|
390 |
= 2.5 =
|
391 |
+
* New: Added the Facebook post story as part of the page/author name at the top of the Facebook post
|
392 |
* New: Added an option to use minified versions of the plugin CSS and JavaScript files: `Facebook Feed > Customize > Misc > Misc Settings > Minify CSS and JavaScript files`
|
393 |
* New: Added support for clearing the cache of major caching plugins when the Facebook feed cache is cleared. You can enable this by setting the following setting to be "Yes": `Facebook Feed > Customize > Misc > Misc Settings > Force cache to clear on interval`
|
394 |
+
* Tweak: Improved the text truncation so that it applies to both the Facebook post text and Facebook description as one block of text and accounts for HTML link tags
|
395 |
+
* Tweak: Added an "Auto" option to the Facebook Post Limit setting where it will automatically adjust the post limit based on the number of Facebook posts you choose to display in your Facebook feed
|
396 |
+
* Tweak: Reorganized the Custom Facebook Feed settings pages to be more intuitive
|
397 |
* Tweak: Added aria-hidden=true to icons to help improve accessibility
|
398 |
+
* Tweak: The icon font stylesheet handle has been renamed so it will only be loaded once if another of our social media plugins is installed
|
399 |
+
* Tweak: Facebook error messages are now only shown to admins
|
400 |
+
* Tweak: Added a setting to workaround a theme issue that affects the shortening of the Facebook post text. If you're experiencing an issue with the shortening of Facebook post text then you can enable the following setting: `Facebook Feed > Customize > Misc > Misc Settings > Fix Facebook text shortening issue`
|
401 |
+
* Fix: Included a fallback in case the Facebook author name and avatar aren't available in visitor Facebook posts
|
402 |
+
* Fix: Fixed an issue with apostrophes in the Facebook feed header not being escaped correctly
|
403 |
+
* Fix: Fixed an issue with the Facebook icons when Font Awesome 5 was added to a site
|
404 |
+
* Fix: Added support for the @[ID:page-name] Facebook tagging format
|
405 |
+
* Fix: The Facebook post description is now able to be displayed even if the Facebook post text is hidden
|
406 |
+
|
407 |
+
[See changelog for all versions](https://plugins.svn.wordpress.org/custom-facebook-feed/trunk/changelog.txt).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/PluginSilentUpgrader.php
CHANGED
@@ -1,576 +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 |
-
}
|
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
CHANGED
@@ -1,57 +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 |
-
}
|
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
CHANGED
@@ -1,175 +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' );
|
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
CHANGED
@@ -1,1351 +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=
|
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=
|
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=
|
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/?
|
577 |
-
} else {
|
578 |
-
echo '<a href="https://smashballoon.com/custom-facebook-feed/pricing/?utm_source=
|
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=
|
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=
|
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=
|
757 |
-
} else {
|
758 |
-
echo '<a href="https://smashballoon.com/custom-facebook-feed/pricing/?utm_source=
|
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=
|
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=
|
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=
|
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();
|
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_campaign=facebook-free&utm_source=gettingstarted&utm_medium=multiplefeeds" 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_campaign=facebook-free&utm_source=gettingstarted&utm_medium=shortcode" 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_campaign=facebook-free&utm_source=gettingstarted&utm_medium=pageid" 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_campaign=facebook-free&utm_source=gettingstarted&utm_medium=profeaturescompare" target="_blank" rel="noopener noreferrer">';
|
577 |
+
} else {
|
578 |
+
echo '<a href="https://smashballoon.com/custom-facebook-feed/pricing/?utm_campaign=facebook-pro&utm_source=gettingstarted&utm_medium=profeaturescompare" 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_campaign=facebook-free&utm_source=gettingstarted&utm_medium=readsetup" 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_campaign=facebook-free&utm_source=gettingstarted&utm_medium=readerrordoc" 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_campaign=facebook-free&utm_source=gettingstarted&utm_medium=profeaturescompare" target="_blank" rel="noopener noreferrer">';
|
757 |
+
} else {
|
758 |
+
echo '<a href="https://smashballoon.com/custom-facebook-feed/pricing/?utm_campaign=facebook-pro&utm_source=gettingstarted&utm_medium=profeaturescompare" 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_campaign=facebook-free&utm_source=cross&utm_medium=sbiinstaller',
|
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_campaign=facebook-free&utm_source=cross&utm_medium=ctfinstaller',
|
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_campaign=facebook-free&utm_source=cross&utm_medium=sbyinstaller',
|
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
CHANGED
@@ -1,27 +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 |
-
}
|
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,153 @@
|
|
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 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
'
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
'
|
109 |
-
'
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
*
|
119 |
-
*
|
120 |
-
*
|
121 |
-
*
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
*
|
142 |
-
*
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
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 |
+
'executed' => array(
|
61 |
+
'type' => 'boolean',
|
62 |
+
)
|
63 |
+
);
|
64 |
+
|
65 |
+
register_block_type(
|
66 |
+
'cff/cff-feed-block',
|
67 |
+
array(
|
68 |
+
'attributes' => $attributes,
|
69 |
+
'render_callback' => array( $this, 'get_feed_html' ),
|
70 |
+
)
|
71 |
+
);
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Load Custom Facebook Feed Gutenberg block scripts.
|
76 |
+
*
|
77 |
+
* @since 2.3
|
78 |
+
*/
|
79 |
+
public function enqueue_block_editor_assets() {
|
80 |
+
$access_token = get_option('cff_access_token');
|
81 |
+
|
82 |
+
cff_add_my_stylesheet();
|
83 |
+
cff_scripts_method();
|
84 |
+
|
85 |
+
wp_enqueue_style( 'cff-blocks-styles' );
|
86 |
+
wp_enqueue_script(
|
87 |
+
'cff-feed-block',
|
88 |
+
trailingslashit( CFF_PLUGIN_URL ) . 'js/cff-blocks.js',
|
89 |
+
array( 'wp-blocks', 'wp-i18n', 'wp-element' ),
|
90 |
+
CFFVER,
|
91 |
+
true
|
92 |
+
);
|
93 |
+
|
94 |
+
$shortcodeSettings = '';
|
95 |
+
|
96 |
+
$i18n = array(
|
97 |
+
'addSettings' => esc_html__( 'Add Settings', 'instagram-feed' ),
|
98 |
+
'shortcodeSettings' => esc_html__( 'Shortcode Settings', 'instagram-feed' ),
|
99 |
+
'example' => esc_html__( 'Example', 'instagram-feed' ),
|
100 |
+
'preview' => esc_html__( 'Apply Changes', 'instagram-feed' ),
|
101 |
+
|
102 |
+
);
|
103 |
+
|
104 |
+
wp_localize_script(
|
105 |
+
'cff-feed-block',
|
106 |
+
'cff_block_editor',
|
107 |
+
array(
|
108 |
+
'wpnonce' => wp_create_nonce( 'facebook-blocks' ),
|
109 |
+
'canShowFeed' => ! empty( $access_token ),
|
110 |
+
'configureLink' => get_admin_url() . '?page=cff-top',
|
111 |
+
'shortcodeSettings' => $shortcodeSettings,
|
112 |
+
'i18n' => $i18n,
|
113 |
+
)
|
114 |
+
);
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
* Get form HTML to display in a Custom Facebook Feed Gutenberg block.
|
119 |
+
*
|
120 |
+
* @param array $attr Attributes passed by Custom Facebook Feed Gutenberg block.
|
121 |
+
*
|
122 |
+
* @since 2.3
|
123 |
+
*
|
124 |
+
* @return string
|
125 |
+
*/
|
126 |
+
public function get_feed_html( $attr ) {
|
127 |
+
|
128 |
+
$return = '';
|
129 |
+
|
130 |
+
$shortcode_settings = isset( $attr['shortcodeSettings'] ) ? $attr['shortcodeSettings'] : '';
|
131 |
+
|
132 |
+
$shortcode_settings = str_replace(array( '[custom-facebook-feed', ']' ), '', $shortcode_settings);
|
133 |
+
|
134 |
+
$return .= do_shortcode( '[custom-facebook-feed '.$shortcode_settings.']' );
|
135 |
+
|
136 |
+
return $return;
|
137 |
+
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* Checking if is Gutenberg REST API call.
|
142 |
+
*
|
143 |
+
* @since 2.3
|
144 |
+
*
|
145 |
+
* @return bool True if is Gutenberg REST API call.
|
146 |
+
*/
|
147 |
+
public static function is_gb_editor() {
|
148 |
+
|
149 |
+
// TODO: Find a better way to check if is GB editor API call.
|
150 |
+
return defined( 'REST_REQUEST' ) && REST_REQUEST && ! empty( $_REQUEST['context'] ) && 'edit' === $_REQUEST['context']; // phpcs:ignore
|
151 |
+
}
|
152 |
+
|
153 |
+
}
|
changelog.txt
ADDED
@@ -0,0 +1,603 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
== Changelog ==
|
2 |
+
= 2.14 =
|
3 |
+
* 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.
|
4 |
+
* 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.
|
5 |
+
* 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.
|
6 |
+
* 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.
|
7 |
+
|
8 |
+
= 2.13 =
|
9 |
+
* 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.
|
10 |
+
* New: Added support for translations.
|
11 |
+
|
12 |
+
= 2.12.4 =
|
13 |
+
* Tested with upcoming WordPress 5.4 update.
|
14 |
+
* Tweak: Updated Facebook API calls
|
15 |
+
* Fix: Minor bug fixes
|
16 |
+
|
17 |
+
= 2.12.3 =
|
18 |
+
* Tweak: Added a text link in the settings page footer to our new free [YouTube plugin](https://wordpress.org/plugins/feeds-for-youtube/)
|
19 |
+
* Tweak: When reconnecting an account on the settings page, if there's an issue with the existing access token then it'll be automatically replaced.
|
20 |
+
* Tweak: Added 'rel="noopener"' to all external links and added 'rel="noreferrer"' to all non-Facebook links. Thanks to Dev VIP for the suggestion.
|
21 |
+
* Fix: Fixed an issue with some call-to-action link URLs when a link protocol wasn't included
|
22 |
+
* Fix: Fixed a JavaScript conflict with the [Forminator](https://wordpress.org/plugins/forminator/) plugin
|
23 |
+
* Fix: Fixed duplicate post message displaying due to ellipsis HTML character
|
24 |
+
* Fix: If a shared link post had no post text then the link title was used causing it to be displayed twice in the post
|
25 |
+
|
26 |
+
= 2.12.2 =
|
27 |
+
* Fix: Fixed a JavaScript error in the admin caused by the previous update. Apologies for any inconvenience.
|
28 |
+
|
29 |
+
= 2.12.1 =
|
30 |
+
* Fix: Fixed an issue with post date timezones due to changes in the WordPress 5.3 update
|
31 |
+
* Fix: Fixed a rare issue where a JavaScript error would occur in the WordPress admin if a Facebook account was manually connected and the Page ID used was the full URL
|
32 |
+
* Fix: Fixed a JavaScript error in the admin when using older web browsers
|
33 |
+
* Tweak: Improved the manual account connection process
|
34 |
+
* Tweak: Some minor UI tweaks to match the new WordPress 5.3 UI style
|
35 |
+
|
36 |
+
= 2.12 =
|
37 |
+
* New: Added a backup cache so the feed will still display even if there's an error from the Facebook API.
|
38 |
+
* New: You can now easily manage multiple page or group accounts on the plugin settings page allowing you to easily add them to other feeds on your site. When you connect a page or group you will now see it listed in the "Connected Accounts" section. You can add it to the primary feed or to another feed by using the new `account` shortcode option.
|
39 |
+
* Tweak: Added a filter which can be used to filter the API data when returned; `cff_filter_api_data`.
|
40 |
+
* Tweak: Updated API error messages
|
41 |
+
* Fix: Fixed an issue with some @tag links in post text due to a Facebook API change
|
42 |
+
* Fix: Fixed a rare issue with ellipsis chracter symbols in shared link descriptions causing the entire link description not to be displayed
|
43 |
+
|
44 |
+
= 2.11.1 =
|
45 |
+
* Tweak: Added the link source URL below the title for shared link posts
|
46 |
+
* Fix: Some themes would prevent the "Share" link from working successfully
|
47 |
+
* Fix: Fixed an issue with the "Feed Columns" setting not working if the minified versions of the plugin CSS/JavaScript files were being used
|
48 |
+
|
49 |
+
= 2.11 =
|
50 |
+
* New: Added a "Feed Columns" setting to allow you to display your feed in multiple columns. This can be found under the "General" tab on the "Customize" page, or by using the `cols` and `colsmobile` shortcode settings.
|
51 |
+
* New: Updated to use v4.0 of the Facebook API
|
52 |
+
|
53 |
+
= 2.10 =
|
54 |
+
* New: Facebook Groups are making their long-awaited return to the plugin! Just click the 'Log in and get my Access Token' button on the plugin's Settings page and select 'Facebook Group'. Follow the prompts to connect your Group and display your feed.
|
55 |
+
* Fix: Fixed an issue where a lists of groups or pages wouldn't be displayed when retrieving an Access Token due to a server configuration issue
|
56 |
+
* Fix: Photo icons weren't showing for album posts
|
57 |
+
* Tweak: Now uses the `visitor_posts` endpoint to display visitor post feeds
|
58 |
+
|
59 |
+
= 2.9.1 =
|
60 |
+
* New: Added support for v3.3 of the Facebook API.
|
61 |
+
* Fix: The Access Token selection area was being cut off on small screens when a lot of Facebook pages were listed.
|
62 |
+
|
63 |
+
= 2.9 =
|
64 |
+
* New: You can now select between a "Regular" or "Boxed" post style. Settings for this can be found at: `Facebook Feed > Customize > Style Posts > Post Item`. A Box Shadow setting has been added to the "Boxed" post style.
|
65 |
+
* New: Added some settings to control the size and color of the Facebook shared link URLs and descriptions. These can be found at: `Facebook Feed > Customize > Style Posts > Shared Link Boxes`.
|
66 |
+
* New: Improved the Facebook Access Token retrieval process to make it more intuitive.
|
67 |
+
* Tweak: Avatar images are now circular to match Facebook.
|
68 |
+
* Tweak: Animated the social media icons when the "Share" button is clicked.
|
69 |
+
* Tweak: Changed the way the Facebook Like Box loads to avoid a conflict with the Facebook Messenger widget. It no longer uses the Facebook JavaScript SDK.
|
70 |
+
* Tweak: Changed the elements used for icons from `<i>` to `<span>` to aid accessibility.
|
71 |
+
* Tweak: Removed the Google+ share option as the platform has been deprecated.
|
72 |
+
* Tweak: Removed the share widgets from the footer of the admin so that they're only loaded when the "Share the plugin" button is clicked.
|
73 |
+
* Fix: The plugin now uses the built-in WordPress HTTP API to get data from Facebook instead of making it's own cURL requests to the Facebook API.
|
74 |
+
* Fix: Fixed an issue where the avatars of people posting to the Facebook page weren't being displayed. Individual Facebook API requests for avatars have now been removed and bundled into the main Facebook API request.
|
75 |
+
* Fix: If the link to the Facebook profile of a visitor posting to your page is not available then remove the link from the avatar and author name.
|
76 |
+
* Fix: Fixed an accessibility error caused by the share icons being empty links.
|
77 |
+
* Fix: Removed the use of the ENT_HTML5 constant as it isn't supported in PHP 5.4.
|
78 |
+
* Fix: Fixed a rare issue with tags in Facebook post stories when the locale was set to be Greek.
|
79 |
+
|
80 |
+
= 2.8 =
|
81 |
+
* New: Added support for Facebook Notes in timeline feeds. If your Facebook timeline feed contains a note then the plugin will now get the content from the note and display it within the Facebook post.
|
82 |
+
* New: Facebook call-to-action buttons - such as "Learn More", "Shop Now", and "Message Page" - are now supported in your Facebook posts. These text strings can be translated using the settings at: Facebook Feed > Customize > Custom Text/Translate
|
83 |
+
* New: Added a setting that you can enable if you are displaying Facebook posts from a restricted (non-public) Facebook page. This will allow the Facebook page avatar to be displayed, and is located at: Facebook Feed > Customize > Misc > Misc Settings > Is Facebook Page restricted?
|
84 |
+
* New: If a visitor posts to your Facebook page then their avatar will now be displayed and cached for 6 months. To clear the cache of these avatar images use the button located at: Facebook Feed > Customize > Misc > Misc Settings > Clear Avatar Cache
|
85 |
+
* Tweak: The Timezone setting can now be set in the shortcode. Eg: `timezone="America/Los_Angeles"`
|
86 |
+
* Tweak: Minor UI changes to the admin pages
|
87 |
+
* Tweak: Reduced some of the Facebook data in the System Info
|
88 |
+
* Fix: If you backdate a Facebook post it will now be ordered correctly in your Facebook feed
|
89 |
+
* Fix: Fixed a theme conflict related to the Color Picker in the admins section
|
90 |
+
* Verified compatibility with WordPress 5.0 and Gutenburg
|
91 |
+
|
92 |
+
= 2.7.2 =
|
93 |
+
* **Important:** If you are displaying a Facebook feed from a Facebook page which you are *not* an admin of then it is advised that you obtain a new Facebook Access Token in the plugin using the "Log in and get my Access Token" button. This will switch you from using the "SlickRemix" app to using our own "Smash Balloon" Facebook app which was recently approved by Facebook, and will prevent you from experiencing any potential interuptions in your Facebook feeds going forward. This will be the final time this is required.
|
94 |
+
* Fix: Fixed a rare issue caused by some themes including the JavaScript file incorrectly
|
95 |
+
|
96 |
+
= 2.7.1 =
|
97 |
+
* Tweak: Made some adjustments to the Facebook Access Token login process
|
98 |
+
|
99 |
+
= 2.7 =
|
100 |
+
* New: Now easily get your own Facebook Access Token to avoid any Facebook connection issues. Simply click the blue Facebook "Log in and get my Access Token" button on the Custom Facebook Feed settings page and connect your Facebook account to get your token. The Facebook Access Token will work to get Facebook posts from ANY Facebook page. Thanks to our friends at SlickRemix for powering our new login and getting the plugin back up and running again!
|
101 |
+
* Tweak: Removed the minimum caching time if you're using your own Facebook Page Access Token
|
102 |
+
|
103 |
+
= 2.6.4 =
|
104 |
+
* **Important:** If you are displaying Facebook posts from a Facebook page that **you are an admin of** then it is now highly recommended that you retrieve your own Facebook Access Token for that Facebook page to avoid any Facebook API rate limit errors. Simply follow these [step-by-step](https://smashballoon.com/custom-facebook-feed/page-token/) instructions to obtain one.
|
105 |
+
|
106 |
+
= 2.6.3 =
|
107 |
+
* Fix: Fixed an issue where Facebook API errors were being cached
|
108 |
+
|
109 |
+
= 2.6.2 =
|
110 |
+
* Fix: Replaced all HTTP links with HTTPS
|
111 |
+
* Fix: Fixed a rare issue which affected the layout of other Facebook widgets
|
112 |
+
* Fix: Automatically remove slashes at the end of the Facebook Page ID as it caused an error
|
113 |
+
* Fix: The API response test in the System Info now only tests with your Facebook token if you have the "Use my own Access Token" setting enabled
|
114 |
+
* Fix: Fixed an issue which caused an occasional Facebook API rate limit error
|
115 |
+
|
116 |
+
= 2.6.1 =
|
117 |
+
* Fix: Removed an unnecessary Facebook API call
|
118 |
+
* Fix: Removed a PHP notice which was displayed under rare circumstances
|
119 |
+
* Fix: Minor bug fixes
|
120 |
+
|
121 |
+
= 2.6 =
|
122 |
+
* Fix: Fixed an issue connecting to the Facebook API caused by a recent Facebook platform change
|
123 |
+
* Tweak: Increased the minimum caching time to be 15 minutes to reduce Facebook API requests
|
124 |
+
|
125 |
+
= 2.5.2 =
|
126 |
+
* Important: Due to sudden changes in the Facebook API it is no longer possible to display posts from a Facebook Group. Please [see here](https://smashballoon.com/facebook-api-changes-april-4-2018/) for more information. We apologize for any frustration or inconvenience this has caused.
|
127 |
+
* Removed: Due to Facebook API restrictions, it is no longer possible to display information about an event when it is posted or shared to your Facebook Page timeline.
|
128 |
+
|
129 |
+
= 2.5.1 =
|
130 |
+
* Fix: Prevented a PHP notice which would be displayed under rare circumstances
|
131 |
+
* Fix: Replaced a function due to a deprecation in PHP 7.2
|
132 |
+
|
133 |
+
= 2.5 =
|
134 |
+
* New: Added the post story as part of the page/author name at the top of the post
|
135 |
+
* New: Added an option to use minified versions of the plugin CSS and JavaScript files: `Facebook Feed > Customize > Misc > Misc Settings > Minify CSS and JavaScript files`
|
136 |
+
* New: Added support for clearing the cache of major caching plugins when the Facebook feed cache is cleared. You can enable this by setting the following setting to be "Yes": `Facebook Feed > Customize > Misc > Misc Settings > Force cache to clear on interval`
|
137 |
+
* Tweak: Improved the text truncation so that it applies to both the post text and description as one block of text and accounts for HTML link tags
|
138 |
+
* Tweak: Added an "Auto" option to the Post Limit setting where it will automatically adjust the post limit based on the number of posts you choose to display
|
139 |
+
* Tweak: Reorganized the settings pages to be more intuitive
|
140 |
+
* Tweak: Added aria-hidden=true to icons to help improve accessibility
|
141 |
+
* Tweak: The icon font stylesheet handle has been renamed so it will only be loaded once if another of our plugins is installed
|
142 |
+
* Tweak: Error messages are now only shown to admins
|
143 |
+
* Tweak: Added a setting to workaround a theme issue that affects the shortening of the post text. If you're experiencing an issue with the shortening of post text then you can enable the following setting: `Facebook Feed > Customize > Misc > Misc Settings > Fix text shortening issue`
|
144 |
+
* Fix: Included a fallback in case the author name and avatar aren't available in visitor posts
|
145 |
+
* Fix: Fixed an issue with apostrophes in the header not being escaped correctly
|
146 |
+
* Fix: Fixed an issue with the icon font when Font Awesome 5 was added to a site
|
147 |
+
* Fix: Added support for the @[ID:page-name] tagging format
|
148 |
+
* Fix: The post description is now able to be displayed even if the post text is hidden
|
149 |
+
|
150 |
+
= 2.4.6 =
|
151 |
+
* Compatible with WordPress 4.8
|
152 |
+
|
153 |
+
= 2.4.5 =
|
154 |
+
* Tweak: Updated plugin links for new WordPress.org repo
|
155 |
+
* Fix: Minor bug fixes
|
156 |
+
|
157 |
+
= 2.4.4 =
|
158 |
+
* New: If your Facebook posts have been created in more than one language on Facebook then it's now possible to display each language by using the `locale` setting in the shortcode. Eg: English: `[custom-facebook-feed locale=en_EN]`, German: `[custom-facebook-feed locale=de_DE]`
|
159 |
+
* Fix: Fixed an issue with the order of group posts in some feeds
|
160 |
+
|
161 |
+
= 2.4.3 =
|
162 |
+
* Fix: Fixed a potential security vulnerability
|
163 |
+
* Tested with upcoming WordPress 4.6 update
|
164 |
+
|
165 |
+
= 2.4.2 =
|
166 |
+
* Tweak: Group wall feed posts are now ordered based on recent activity, rather than by the date they were created, to better reflect the order on the Facebook Group wall.
|
167 |
+
* Tweak: The "5 hours ago" date text strings can now be translated directly in the shortcode if you're displaying different feeds in different languages. See the bottom of the [Shortcode Options table](https://smashballoon.com/custom-facebook-feed/docs/shortcodes/) for more information.
|
168 |
+
* Tweak: Created some specific [setup directions](https://smashballoon.com/custom-facebook-feed/docs/free/) for the free version.
|
169 |
+
* Fix: Minor bug fixes
|
170 |
+
|
171 |
+
= 2.4.1.2 =
|
172 |
+
* Updated to be compatible with Facebook API version 2.6
|
173 |
+
|
174 |
+
= 2.4.1.1 =
|
175 |
+
* Fix: Fixed a JavaScript error in the admin area when using WordPress 4.5
|
176 |
+
|
177 |
+
= 2.4.1 =
|
178 |
+
* New: If a post contains either a photo or video then an icon and link are now added to view it on Facebook. You can disable this by unchecking the "Media Link" option in the following location: Customize > Post Layout > Show/Hide. You can also remove it by using the "exclude" shortcode option: exclude="medialink". You can translate or change the text for this link on the "Custom Text / Translate" settings page.
|
179 |
+
* Tweak: Tested with WordPress 4.5
|
180 |
+
* Fix: Fixed an issue where the "Share" button in the plugin Like Box wasn't working correctly
|
181 |
+
* Fix: Added support for wp-config proxy settings. Credit to [@usrlocaldick](https://wordpress.org/support/topic/proxy-support-1) for the patch.
|
182 |
+
|
183 |
+
= 2.4 =
|
184 |
+
* New: Added a setting to allow you to use a fixed pixel width for the Facebook feed on desktop but switch to a 100% width responsive layout on mobile
|
185 |
+
* New: You can now click on the name of a setting on the admin pages to reveal the corresponding shortcode for that setting
|
186 |
+
* New: Added quick links to the top of the Customize settings pages to make it easier to find certain settings
|
187 |
+
* New: Added a setting to allow you to disable the default plugin text and link styles (Customize > Misc > Disable default styles)
|
188 |
+
* New: Added a setting which allows you to manually change the request method used to fetch Facebook posts which is necessary for some server setups
|
189 |
+
* Tweak: Updated the Font Awesome icon font to version 4.5
|
190 |
+
* Tweak: Moved the 'Show Header' setting to the 'General' tab on the Customize page
|
191 |
+
* Fix: Hashtag linking now works with all languages and character sets
|
192 |
+
* Fix: Fixed an error that occurred when trying to activate the Pro version with the free version still activated
|
193 |
+
* Fix: Fixed a rare error which occurred when the Facebook post contained no text and no story
|
194 |
+
* Fix: Fixed an issue when trying to display Facebook posts by only visitors to your Facebook page caused by a recent Facebook API update
|
195 |
+
|
196 |
+
= 2.3.10 =
|
197 |
+
* Fix: If you're experiencing an issue with your Facebook feed not automatically updating successfully then please update the plugin and enable the following setting: Custom Facebook Feed > Customize > Misc > Misc Settings > Force cache to clear on interval. If you set this setting to 'Yes' then it should force your plugin cache to clear either every hour, 12 hours, or 24 hours, depending on how often you have the plugin set to check Facebook for new posts.
|
198 |
+
|
199 |
+
= 2.3.9 =
|
200 |
+
* Fix: Fixed an issue caused by the recent Facebook API 2.5 update where the posts wouldn't display when using a brand new Access Token
|
201 |
+
|
202 |
+
= 2.3.8 =
|
203 |
+
* Fix: Fixed a positioning issue with the Facebook "Like Box / Page Plugin" widget caused by a recent Facebook update which was causing it to overlap on top of other content
|
204 |
+
* Fix: Hashtags containing Chinese characters are now linked
|
205 |
+
* Fix: Fixed a minor issue in shared link posts where the post text linked to the shared link URL instead of the post on Facebook
|
206 |
+
* Tweak: Added a timezone for Sydney, Australia
|
207 |
+
|
208 |
+
= 2.3.7 =
|
209 |
+
* Fix: Fixed an issue caused by the WordPress 4.3 update where feeds from very long page IDs wouldn't update correctly due to the cache not clearing when expired
|
210 |
+
* Fix: Removed specific encoding parameters from the cURL request method to prevent encoding issues on some servers
|
211 |
+
|
212 |
+
= 2.3.6 =
|
213 |
+
* New: Added a couple of new customization options for the Facebook Like Box/Page Plugin which allow you to select a small/slim header for the Like Box and hide the call-to-action button (if available)
|
214 |
+
* Fix: The plugin now works with Access Tokens which use the new recently-released version 2.4 of the Facebook API
|
215 |
+
|
216 |
+
= 2.3.5 =
|
217 |
+
* New: Replace the Facebook 'Like Box' with the new Facebook 'Page Plugin' as the Facebook Like Box will be deprecated on June 23rd, 2015. Settings can be found under the Misc tab on the plugin's Customize page.
|
218 |
+
* Fix: Hashtags which contain foreign characters are now correctly linked to the hashtag on Facebook
|
219 |
+
* Fix: Links within Facebook post descriptions weren't opening in a new tab
|
220 |
+
* Fix: Removed empty style tags from some elements
|
221 |
+
* Fix: The URLs used for the 'Share' icons are now encoded to prevent any HTML validation errors
|
222 |
+
* Fix: Shared Facebook posts now link to the new shared post and not to the original post that was shared on Facebook
|
223 |
+
* Fix: Corrected a minor issue with the plugin caching string
|
224 |
+
* Fix: Fixed a minor issue with tags in the Facebook post text when creating/sharing an event
|
225 |
+
* Tweak: Add some stricter CSS to some parts of the feed to prevent theme conflicts
|
226 |
+
* Tweak: Automatically link the Facebook event name to the event now rather than it having to be enabled on the plugin's 'Typography' settings page
|
227 |
+
|
228 |
+
= 2.3.4 =
|
229 |
+
* Fix: The Facebook event description is no longer shown twice in event posts. It was previously shown in the post text itself and in the Facebook event details.
|
230 |
+
* Fix: Fixed a rare bug which would occur if your Facebook page or Facebook group name contained a number
|
231 |
+
|
232 |
+
= 2.3.3 =
|
233 |
+
* Fix: Removed a PHP notice which was missed in the last update. Apologies for the two updates in quick succession.
|
234 |
+
|
235 |
+
= 2.3.2 =
|
236 |
+
* Fix: Fixed some stray PHP notices which were inadvertently introduced in a recent update
|
237 |
+
* Tweak: Added an option to not load the icon font included in the plugin
|
238 |
+
|
239 |
+
= 2.3.1 =
|
240 |
+
* New: Added a shortcode option to allow you to offset the number of posts to be shown. Eg: offset=2
|
241 |
+
* New: Added an email link to the sharing icons
|
242 |
+
* New: Added a setting to load a local copy of the icon font instead of the CDN version. This can be found at the bottom of the 'Misc' settings page.
|
243 |
+
* Tweak: Added a prefix to the IDs on all Facebook posts so that they can now be targeted via CSS
|
244 |
+
* Tweak: Added "nofollow" to all links by default. This can be disabled by using `nofollow=false` in the shortcode.
|
245 |
+
* Tweak: Added some missing settings to the System Info section
|
246 |
+
* Tweak: Added the 'Timezone' setting to the main Settings page so that it's easier to find
|
247 |
+
* Fix: Added a workaround for Facebook changing the event URLs in their API from absolute to relative URLs
|
248 |
+
* Fix: Facebook removed the 'relevant_count' parameter from their API so added a workaround to get the number of photos attached to a Facebook post
|
249 |
+
* Fix: Fixed a minor bug in the WP_Http fallback method
|
250 |
+
* Fix: Removed duplicate IDs on the share icons and replaced with classes
|
251 |
+
* Fix: Added a check to the file_get_contents data retrieval method to check whether the Open SSL wrapper is enabled
|
252 |
+
* Fix: The `eventtitlelink` shortcode option now works correctly
|
253 |
+
* Fix: Added a workaround for 'story_tags' which Facebook deprecated from their API
|
254 |
+
* Fix: Removed query string from the end of CSS and JavaScript file references and replaced it with the wp_enqueue_script 'ver' parameter instead
|
255 |
+
|
256 |
+
= 2.3 =
|
257 |
+
* Happy New Year!
|
258 |
+
* New: Added a share link which allows you to share posts to Facebook, Twitter, Google+ or LinkedIn. This can be disabled at the very bottom of the Typography tab, or by using `showsharelink=false` in the [custom-facebook-feed] shortcode.
|
259 |
+
* Tweak: Using your own Facebook Access Token in the plugin is still optional but is now recommended in order to protect yourself against future Access Token related issues
|
260 |
+
* Tweak: Increased the accuracy of the character count when links are included in the Facebook text
|
261 |
+
* Tweak: Improved the efficiency of the Facebook post caching
|
262 |
+
* Tweak: Replaced the rel attribute with the HTML5 data attribute when storing data on an element
|
263 |
+
* Tweak: Added HTTPS stream wrapper check to the System Info to aid in troubleshooting
|
264 |
+
* Tweak: Updated the plugin's icon font to the latest version
|
265 |
+
* Tweak: Added the Smash Balloon logo to the credit link which can be optionally displayed at the bottom of your feed. The setting for this is at the bottom of the Misc tab on the Customize page.
|
266 |
+
* Tweak: Added a shortcode option to only show the Smash Balloon credit link on certain feeds: `[custom-facebook-feed credit=true]`
|
267 |
+
* Fix: Fixed an issue with quotes being escaped in custom/translated text
|
268 |
+
* Fix: Display an error message if WPHTTP function isn't working correctly
|
269 |
+
* Fix: The `postbgcolor` shortcode option is now working correctly
|
270 |
+
|
271 |
+
= 2.2.1 =
|
272 |
+
* Fix: Fixed a minor JavaScript error which occurs if a Facebook post doesn't contain any text
|
273 |
+
|
274 |
+
= 2.2 =
|
275 |
+
* New: Added a text area to the Support tab which contains all of the plugin settings and site info for easier troubleshooting
|
276 |
+
* New: You can now set the number of Facebook posts to '0' if you just want to show the Facebook Like box widget and no posts
|
277 |
+
* Tweak: If the user doesn't add a unit to the width, height or padding then automatically add 'px'
|
278 |
+
* Tweak: Added social media sharing links to the bottom of the settings page and an option to add a credit link to the bottom of the feed
|
279 |
+
* Fix: Fixed an issue with Facebook hashtags not being linked when followed immediately by punctuation
|
280 |
+
* Fix: When displaying a shared link if the caption is the same as the link URL then don't display it
|
281 |
+
* Fix: Added a space before the feed header's style attribute to remove HTML validation error
|
282 |
+
* Fix: Prefixed the 'top' and 'bottom' classes used on the Facebook Like box to prevent CSS conflicts
|
283 |
+
* Fix: Fixed an issue with the link color not being applied to Facebook hashtag links
|
284 |
+
|
285 |
+
= 2.1.3 =
|
286 |
+
* Fix: Fixed an issue with the Facebook Access Token used in the plugin hitting its request limit
|
287 |
+
|
288 |
+
= 2.1.2 =
|
289 |
+
* Fix: Added in a missing closing div tag to the Facebook feed when an error is being displayed
|
290 |
+
|
291 |
+
= 2.1.1 =
|
292 |
+
* Fix: Fixed an issue with the date not being hidden when unchecked in the Show/Hide section
|
293 |
+
* Fix: Fixed an issue with the date not being displayed below event posts when the date position was set to 'At the bottom of the post'
|
294 |
+
|
295 |
+
= 2.1 =
|
296 |
+
* New: Added an option to preserve/save your plugin options after uninstalling the plugin. This makes manually updating the plugin much easier.
|
297 |
+
* New: Added a 'Settings' link to the plugin on the Plugins page
|
298 |
+
* New: Added a field to the Misc settings page which allows users to enter their Facebook App ID in order to remove a couple of browser console warnings caused by the Facebook Like box widget
|
299 |
+
* Tweak: Reduced the size of the author's Facebook profile picture from 50px to 40px to match Facebook
|
300 |
+
* Tweak: The link description text is now 12px in size by default
|
301 |
+
* Tweak: Added some default character limits to the post text and descriptions
|
302 |
+
* Tweak: If the post author is being hidden then change the default date position to be the bottom of the post
|
303 |
+
* Fix: The post author link is no longer the full width of the post and is only wrapped around the author image and name which helps prevent inadvertently clicking on the post author
|
304 |
+
* Fix: Added a fb-root element to the Like box to prevent a browser console warning
|
305 |
+
* Fix: Renamed the ShowError function to prevent conflicts
|
306 |
+
* Fix: Fixed an issue with the 'seconds' custom text string not being saved correctly
|
307 |
+
* Fix: When linking the post text to the Facebook post the correct text color is now applied
|
308 |
+
|
309 |
+
= 2.0.1 =
|
310 |
+
* Tweak: Improved error handling and added an [Error Message reference](https://smashballoon.com/custom-facebook-feed/docs/errors/) to the website
|
311 |
+
|
312 |
+
= 2.0 =
|
313 |
+
* New: Added an option to display the post date immediately below the author name - as it is on Facebook. This is now the default date position.
|
314 |
+
* New: Added options to add a background color and rounded corners to your posts
|
315 |
+
* New: If your Facebook event has an end date then it will now be displayed after the start date
|
316 |
+
* New: Hashtags in the post descriptions are now also linked
|
317 |
+
* New: Tested and approved for the upcoming WordPress 4.0 release
|
318 |
+
* Tweak: Moved the 'View on Facebook' link to the left side
|
319 |
+
* Tweak: Added error handling to improve user experience
|
320 |
+
* Tweak: If the Facebook API can't be reached by the plugin for some reason then it no longer caches the empty response and instead keeps trying to retrieve the posts from Facebook until it is successful
|
321 |
+
* Fix: Removed some redundant inline CSS used on the posts
|
322 |
+
* Fix: If there is a token in the 'Access Token' field but the 'Enter my own Access Token' box is unchecked then the plugin will no longer use it
|
323 |
+
* Fix: Added the trim() function to the 'Test connection to Facebook API' function to improve reliability
|
324 |
+
* Fix: Fixed an occasional JavaScript error which occurred when the post text was hidden
|
325 |
+
|
326 |
+
= 1.9.9.3 =
|
327 |
+
* New: Hashtags in link, photo and video descriptions are now also linked
|
328 |
+
* Fix: Fixed an issue with hashtags being linked when the post text is also linked, which interfered with the text formatting
|
329 |
+
|
330 |
+
= 1.9.9.2 =
|
331 |
+
* Fix: Removed a couple of stray PHP notices
|
332 |
+
|
333 |
+
= 1.9.9.1 =
|
334 |
+
* Fix: Fixed an occasional issue with hashtags in inline CSS inadvertently being linked
|
335 |
+
|
336 |
+
= 1.9.9 =
|
337 |
+
* New: Hashtags in your posts are now linked to the hashtag search on Facebook. This can be disabled in the 'Post Text' section on the Typography settings page.
|
338 |
+
* New: Added a Facebook icon to the Custom Facebook Feed admin menu
|
339 |
+
* Fix: Corrected the left side margin on the "Like" box so that it aligns correctly with posts
|
340 |
+
|
341 |
+
= 1.9.8.1 =
|
342 |
+
* Fix: Fixed an admin JavaScript error introduced by the last update
|
343 |
+
|
344 |
+
= 1.9.8 =
|
345 |
+
* Tweak: The Access Token field is now hidden by default and is revealed by a checkbox
|
346 |
+
* Fix: Fixed an issue with link colors not being applied to all links
|
347 |
+
* Fix: Removed the link box container from posts which contain non-youtube/vimeo links
|
348 |
+
* Fix: Links which don't contain a 'http://' protocol are now linked correctly
|
349 |
+
|
350 |
+
= 1.9.7 =
|
351 |
+
* Fix: Fixed an issue with a generic function name which was occasionally causing an error
|
352 |
+
|
353 |
+
= 1.9.6 =
|
354 |
+
* Tweak: Added an HTML wrapper element around the feed
|
355 |
+
|
356 |
+
= 1.9.5 =
|
357 |
+
* New: Added an option to set a height on the Like box. This allows you to display more faces of your fans if you have that option selected.
|
358 |
+
* Tweak: Added a few stricter CSS styles to help minimize the chance of theme stylesheets distorting post formatting
|
359 |
+
* Tweak: Added a span to the header text to allow CSS to be applied
|
360 |
+
* Fix: Fixed a bug with the post author text bumping down below the author image in the Firefox browser
|
361 |
+
* Fix: Corrected a bug which caused some links not to have the color applied
|
362 |
+
* Fix: Fixed a float issue in Firefox which sometimes caused the feed to be pushed off the page
|
363 |
+
|
364 |
+
= 1.9.4 =
|
365 |
+
* New: Added background and border styling options to shared links
|
366 |
+
* Tweak: Reduced the clickable area of the post author
|
367 |
+
* Tweak: Added a 'Customize' tab to the Settings page
|
368 |
+
* Fix: Fixed an issue with post tag linking not working correctly in some languages
|
369 |
+
* Fix: Fixed an issue with line breaks not being respected in IE8
|
370 |
+
|
371 |
+
= 1.9.2 =
|
372 |
+
* Fix: Added title and alt attributes to the post author's Facebook profile picture
|
373 |
+
* Fix: Improved the reliability of the post tag linking
|
374 |
+
* Fix: Fixed an issue with HTML characters not rendering correctly when linking the post text
|
375 |
+
* Fix: Improved the reliability of the CSS clearing method used on the feed container
|
376 |
+
* Compatible with WordPress 3.9
|
377 |
+
|
378 |
+
= 1.9.1 =
|
379 |
+
* Fix: Fixed an issue with the 'textlink' shortcode option
|
380 |
+
* Fix: Fixed an bug with post text sometimes being duplicated when linked
|
381 |
+
* Fix: Removed error_reporting(0);
|
382 |
+
|
383 |
+
= 1.9.0 =
|
384 |
+
* New: Added the ability to change the text size and color of the post author
|
385 |
+
* New: Define the format, size and color of shared link titles
|
386 |
+
* New: You can now define the color of the links in your post text, descriptions and Facebook events
|
387 |
+
* Tweak: Moved the Feed Header options to the Typography page
|
388 |
+
* Tweak: Moved the Ajax setting to the Misc page
|
389 |
+
* Tweak: Now removes any query strings attached to the Facebook Page ID
|
390 |
+
* Fix: Fixed an issue with some themes causing the clear element to prevent links being clickable
|
391 |
+
* Fix: Some minor bug fixes
|
392 |
+
|
393 |
+
= 1.8.2.3 =
|
394 |
+
* New: Now supports Facebook tags - creates links when using the @ symbol to tag other people or Facebook pages in your posts
|
395 |
+
* Tweak: Changed the method used for link replacement in posts
|
396 |
+
* Fix: Fixed issue with php include
|
397 |
+
|
398 |
+
= 1.8.1 =
|
399 |
+
* New: Added an 'exclude' shortcode option to allow you to easily exclude specific parts of the post
|
400 |
+
* New: Timeline events are now cached to help reduce page load time
|
401 |
+
* New: Added an option for when the WordPress theme is loading the feed via AJAX so that the JavaScript runs after the feed has been loaded into the page
|
402 |
+
* Tweak: Changed author images back to loading via PHP rather than JavaScript due to issues with certain WordPress themes
|
403 |
+
* Fix: Reset the timezone after the shortcode has run
|
404 |
+
* Fix: Fixed an issue with the shared link descriptions not being hidden when specified
|
405 |
+
* Fix: Fixed a rare issue with the 'textlink' shortcode option
|
406 |
+
* Fix: Use a fallback JSON string if unable to find the cached version in the database
|
407 |
+
|
408 |
+
= 1.8.0 =
|
409 |
+
* New: Added a built-in color picker
|
410 |
+
* New: Added class to posts based on the author to allow for independent styling
|
411 |
+
* Tweak: Now loads the author's Facebook profile picture in using JavaScript to help speed up load times
|
412 |
+
* Tweak: Now automatically set the Facebook post limit based on the number of Facebook posts to be displayed
|
413 |
+
* Tweak: Core improvements to the way Facebook posts are output
|
414 |
+
* Tweak: Changed 'Layout & Style' page name to 'Customize'
|
415 |
+
* Tweak: Moved the Support information to a tab on the Settings page
|
416 |
+
* Tweak: Improved the 'Test connection to Facebook API' function
|
417 |
+
* Fix: Encode Facebook URLs so that they pass HTML validation
|
418 |
+
* Fix: Fixed an issue with Facebook post captions not displaying under some circumstances
|
419 |
+
* Fix: More robust method for stripping the URL when a user enters Facebook page URL instead of their Facebook Page ID
|
420 |
+
|
421 |
+
= 1.7.2 =
|
422 |
+
* Tweak: Moved the 'Show post author' option from the General settings tab to the Post Layout tab
|
423 |
+
* Tweak: Added the ability to show or hide the author to the 'include' shortcode option
|
424 |
+
* Fix: Added CSS box-sizing property to feed header so that padding doesn't increase its width
|
425 |
+
* Fix: Fixed showheader=false and headeroutside=false shortcode options
|
426 |
+
* Fix: Now allows users to enter their Facebook page URL as their Facebook Page ID
|
427 |
+
|
428 |
+
= 1.7.0 =
|
429 |
+
* New: Added ability to add a customizable header to your feed
|
430 |
+
* New: Added a Custom JavaScript section to allow you to add your own JS or jQuery functionality to the feed
|
431 |
+
* New: Added a 'Custom Text / Translate' tab to house all customizable text
|
432 |
+
* New: You can now choose to show posts only by other people on your Facebook page
|
433 |
+
* New: Set your timezone so that dates/times are displayed in your local time
|
434 |
+
* New: When a Facebook post contains a link to multiple images it now states the number of photos after the post text and links to the Facebook album
|
435 |
+
* Tweak: Plugin now detects whether the page is using SSL and pulls https resources
|
436 |
+
* Tweak: Added a button to test the connection to Facebook's API for easier troubleshooting
|
437 |
+
* Fix: Now using HTML encoding to parse any raw HTML tags in the Facebook post text or descriptions
|
438 |
+
* Fix: Added a protocol to the beginning of links which don't include one
|
439 |
+
* Fix: Fixed date width issue in IE7
|
440 |
+
* Fix: Removed stray PHP notices
|
441 |
+
* Fix: Added a space between the Like Box attributes
|
442 |
+
|
443 |
+
= 1.6.8.2 =
|
444 |
+
* Fix: Fixed a CSS bug in Firefox which was causing the page author name to bump down below the avatar
|
445 |
+
|
446 |
+
= 1.6.8.1 =
|
447 |
+
* Tweak: Moved 'View on Facebook' link up to be level with the date rather than on the line below it
|
448 |
+
* Fix: Don't show the caption when it is the same as the Facebook post text
|
449 |
+
* Fix: Fixed issue with enqueueing JavaScript file
|
450 |
+
|
451 |
+
= 1.6.8 =
|
452 |
+
* New: Added option to remove border from the Facebook Like box when showing faces
|
453 |
+
* New: Set Facebook "Like" box text color to either blue or white
|
454 |
+
* Tweak: Moved descripion below video or link title and added link source
|
455 |
+
* Tweak: Added ability to manually translate the '2 weeks ago' text
|
456 |
+
* Tweak: Replaced 'View Link' with 'View on Facebook' so that shared links now link to the Facebook post
|
457 |
+
* Tweak: Facebook "Like" box is now responsive
|
458 |
+
* Tweak: Displays Facebook post caption if no description is available
|
459 |
+
* Tweak: Vertically center multi-line author names rather than bumping them down below the Facebook profile picture
|
460 |
+
* Tweak: Checks whether the Access Token is inputted in the correct format
|
461 |
+
* Fix: Fixed bug in the 'Show posts on my page by others' option
|
462 |
+
* Fix: If displaying a Facebook group then automatically hides the Facebook "Like" box
|
463 |
+
* Fix: 'others=false' shortcode option now working correctly
|
464 |
+
* Fix: Strip any white space characters from beginning or end of Access Token and Facebook Page ID
|
465 |
+
|
466 |
+
= 1.6.7.1 =
|
467 |
+
* Fix: Fixed a bug in 1.6.7 which was causing an issue displaying the Facebook feed in some circumstances
|
468 |
+
|
469 |
+
= 1.6.7 =
|
470 |
+
* New: Your Facebook feed can now be completely displayed in any language - added i18n support for date translation
|
471 |
+
* Tweak: Improved documentation within the plugin
|
472 |
+
* Tweak: Changed order of methods used to retrieve Facebook feed data
|
473 |
+
|
474 |
+
= 1.6.6.3 =
|
475 |
+
* New: Added support for Facebook group events
|
476 |
+
|
477 |
+
= 1.6.6.1 =
|
478 |
+
* Fix: Resolved jQuery UI draggable bug which was causing issues with drag and drop
|
479 |
+
|
480 |
+
= 1.6.6 =
|
481 |
+
* New: Now works with Facebook groups
|
482 |
+
* Fix: Fixed an issue with the 'Show posts by others' option not working correctly in the previous version
|
483 |
+
|
484 |
+
= 1.6.4 =
|
485 |
+
* New: Added localization support. Full support for various languages coming soon
|
486 |
+
* New: Added CSS classes to different Facebook post types to allow for different styling based on post type
|
487 |
+
* New: Option to link statuses to either the status post itself or the directly to the Facebook page/timeline
|
488 |
+
* New: Added option to add thumbnail faces of fans to the Facebook Like box and define a width
|
489 |
+
* Tweak: Added separate classes to 'View on Facebook' and 'View Link' links so that they can be targeted with CSS
|
490 |
+
* Tweak: Prefixed every CSS class to prevent styling conflicts with theme stylesheets. Please note that if you used custom CSS to style parts of the feed that the CSS classes are now prefixed with 'cff-' to prevent theme conflicts. Eg. '.more' is now '.cff-more'.
|
491 |
+
|
492 |
+
= 1.6.3 =
|
493 |
+
* New: Added support for Facebook 'Offers'
|
494 |
+
* Fix: Fixed an issue with the 'others' shortcode option not working correctly
|
495 |
+
* Fix: Prefixed the 'clear' class to prevent conflicts
|
496 |
+
|
497 |
+
= 1.6.2 =
|
498 |
+
* New: Post caching now temporarily stores your Facebook post data in your WordPress database to allow for super quick load times
|
499 |
+
* New: Define your own caching time. Check for new Facebook posts every few seconds, minutes, hours or days. You decide.
|
500 |
+
* New: Define your own custom text for the 'See More' and 'See Less' buttons
|
501 |
+
* New: Add your own CSS class to your Custom Facebook Feeds
|
502 |
+
* New: Define a Facebook post limit which is higher or lower than the default 25
|
503 |
+
* New: Include the Facebook Like box inside or outside of the Facebook feed's container
|
504 |
+
* New: Customize the Facebook event date independently
|
505 |
+
* New: Improved layout of admin pages for easier navigation and customization
|
506 |
+
* Fix: Provided a fix for the Facebook API duplicate post bug
|
507 |
+
* Fix: Fixed bug which ocurred when multiple Facebook feeds are displayed on the same page with different text lengths defined
|
508 |
+
|
509 |
+
= 1.5.2 =
|
510 |
+
* Fix: Fixed JavaScript error in previous update
|
511 |
+
|
512 |
+
= 1.5.1 =
|
513 |
+
* New: Added a 'See More' link to expand any text which is longer than the character limit defined
|
514 |
+
* New: Choose to show Facebook posts by other people in your feed
|
515 |
+
* New: Option to show the post author's Facebook profile picture and name above each post
|
516 |
+
* New: Added options to customize and format the Facebook post date
|
517 |
+
* New: Add your own text before and after the date and in place of the 'View on Facebook' and 'View Link' text links
|
518 |
+
* New: Specify the format of the Facebook Event date
|
519 |
+
* Tweak: Default date format is less specific and better mimics Facebook's - credit Mark Bebbington
|
520 |
+
* Tweak: Changed the layout of the Typography section to allow for the additional options
|
521 |
+
* Fix: When a Facebook photo album is shared it now links to the album itself on Facebook and not just the cover photo
|
522 |
+
* Fix: Fixed issue with hyperlinks in post text which don't have a space before them not being converted to links
|
523 |
+
|
524 |
+
= 1.4.8 =
|
525 |
+
* Minor fixes
|
526 |
+
|
527 |
+
= 1.4.7 =
|
528 |
+
* Tweak: Added links to statuses which link to the Facebook page
|
529 |
+
* Tweak: Added classes to Facebook event date, location and description to allow custom styling
|
530 |
+
* Tweak: Removed 'Where' and 'When' text from Facebook events and made bold instead
|
531 |
+
|
532 |
+
= 1.4.6 =
|
533 |
+
* Fix: Fixed 'num' option in shortcode
|
534 |
+
|
535 |
+
= 1.4.4 =
|
536 |
+
* New: Added more shortcode options
|
537 |
+
* Minor tweaks
|
538 |
+
|
539 |
+
= 1.4.2 =
|
540 |
+
* New: Add your own custom CSS to allow for even deeper customization
|
541 |
+
* New: Optionally link your post text to the Facebook post
|
542 |
+
* New: Optionally link your event title to the Facebook event page
|
543 |
+
* Some minor modifications
|
544 |
+
|
545 |
+
= 1.4.1 =
|
546 |
+
* Fix: Set all parts of the Facebook feed to display by default on activation
|
547 |
+
|
548 |
+
= 1.4.0 =
|
549 |
+
* Major Update!
|
550 |
+
* New: Loads of new customization options for your Custom Facebook Feed
|
551 |
+
* New: Define Facebook feed width, height, padding and background color
|
552 |
+
* New: Change the font-size, font-weight and color of the Facebook post text, description, date, links and event details
|
553 |
+
* New: Choose whether to show or hide certain parts of the Facebook posts
|
554 |
+
* New: Select whether the Facebook Like box is shown at the top of bottom of the Facebook feed
|
555 |
+
* New: Choose Facebook Like box background color
|
556 |
+
|
557 |
+
= 1.3.6 =
|
558 |
+
* Minor modifications
|
559 |
+
|
560 |
+
= 1.3.5 =
|
561 |
+
* New: Shared Facebook events now display event details (name, location, date/time, description) directly in the Facebook feed
|
562 |
+
|
563 |
+
= 1.3.4 =
|
564 |
+
* New: Email addresses within the Facebook post text are now hyperlinked
|
565 |
+
* Fix: Links beginning with 'www' are now also hyperlinked
|
566 |
+
|
567 |
+
= 1.3.3 =
|
568 |
+
* New: Added support for Facebook events - display the Facebook event details (name, location, date/time, description) directly in the Facebook feed
|
569 |
+
* Fix: Links within the Facebook post text are now hyperlinked
|
570 |
+
* Tweak: Added additional methods for retrieving Facebook feed data
|
571 |
+
|
572 |
+
= 1.3.2 =
|
573 |
+
* Fix: Now using the built-in WordPress HTTP API to get retrieve the Facebook data
|
574 |
+
|
575 |
+
= 1.3.1 =
|
576 |
+
* Fix: Fixed issue with certain Facebook statuses not displaying correctly
|
577 |
+
|
578 |
+
= 1.3.0 =
|
579 |
+
* Tweak: If 'Number of Posts to show' is not set then default to 10 Facebook posts
|
580 |
+
|
581 |
+
= 1.2.9 =
|
582 |
+
* Fix: Now using cURL instead of file_get_contents to prevent issues with php.ini configuration on some web servers
|
583 |
+
|
584 |
+
= 1.2.8 =
|
585 |
+
* Fix: Fixed bug in specifying the number of Facebook posts to display
|
586 |
+
|
587 |
+
= 1.2.7 =
|
588 |
+
* Tweak: Prevented likes and comments by the page author showing up in the Facebook feed
|
589 |
+
|
590 |
+
= 1.2.6 =
|
591 |
+
* Tweak: Added help link to Custom Facebook Feed settings page
|
592 |
+
|
593 |
+
= 1.2.5 =
|
594 |
+
* Fix: Added clear fix
|
595 |
+
|
596 |
+
= 1.2.1 =
|
597 |
+
* Fix: Minor bug fixes
|
598 |
+
|
599 |
+
= 1.2 =
|
600 |
+
* New: Added the ability to define a maximum length for both the Facebook post text and description
|
601 |
+
|
602 |
+
= 1.0 =
|
603 |
+
* Launch!
|
class-cff-education.php
CHANGED
@@ -1,135 +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 |
-
'
|
126 |
-
'
|
127 |
-
'utm_content' => $dyk_message['item'],
|
128 |
-
),
|
129 |
-
$dyk_message['more']
|
130 |
-
);
|
131 |
-
}
|
132 |
-
|
133 |
-
return $dyk_message;
|
134 |
-
}
|
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_campaign' => 'facebook-'.$this->plugin_version,
|
126 |
+
'utm_source' => 'issueemail',
|
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
CHANGED
@@ -1,444 +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">×</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 |
}
|
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">×</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
CHANGED
@@ -1,82 +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 |
}
|
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-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
@@ -140,7 +140,7 @@ function cff_settings_page() {
|
|
140 |
if ( ! $lite_notice_dismissed ) :
|
141 |
?>
|
142 |
<div id="cff-notice-bar" style="display:none">
|
143 |
-
<span class="cff-notice-bar-message"><?php _e( 'You\'re using Custom Facebook Feed Lite. To unlock more features consider <a href="https://smashballoon.com/custom-facebook-feed/?
|
144 |
<button type="button" class="dismiss" title="<?php _e( 'Dismiss this message.', 'custom-facebook-feed'); ?>" data-page="overview">
|
145 |
</button>
|
146 |
</div>
|
@@ -790,10 +790,10 @@ function cff_settings_page() {
|
|
790 |
<div class="cff_quickstart">
|
791 |
<h3><i class="fa fa-rocket" aria-hidden="true"></i> Display your feed</h3>
|
792 |
<p>Copy and paste this shortcode directly into the page, post or widget where you'd like to display the feed: <input type="text" value="[custom-facebook-feed]" size="22" readonly="readonly" style="text-align: center;" onclick="this.focus();this.select()" title="To copy, click the field then press Ctrl + C (PC) or Cmd + C (Mac)."></p>
|
793 |
-
<p>Find out how to display <a href="https://smashballoon.com/using-shortcode-options-customize-facebook-feeds/?
|
794 |
</div>
|
795 |
|
796 |
-
<a href="https://smashballoon.com/custom-facebook-feed/demo/?
|
797 |
|
798 |
<p class="cff_plugins_promo dashicons-before dashicons-admin-plugins"> <?php _e('Check out our other free plugins for <a href="https://wordpress.org/plugins/instagram-feed/" target="_blank">Instagram</a>, <a href="https://wordpress.org/plugins/custom-twitter-feeds/" target="_blank">Twitter</a>, and <a href="https://wordpress.org/plugins/feeds-for-youtube/" target="_blank">YouTube</a>.', 'custom-facebook-feed' ); ?></p>
|
799 |
|
@@ -814,12 +814,12 @@ function cff_settings_page() {
|
|
814 |
<h3 style="padding-bottom: 10px;">Need help?</h3>
|
815 |
|
816 |
<p>
|
817 |
-
<span class="cff-support-title"><i class="fa fa-life-ring" aria-hidden="true"></i> <a href="https://smashballoon.com/custom-facebook-feed/docs/free/?
|
818 |
<?php _e('A step-by-step guide on how to setup and use the plugin.'); ?>
|
819 |
</p>
|
820 |
|
821 |
<p>
|
822 |
-
<span class="cff-support-title"><i class="fa fa-question-circle" aria-hidden="true"></i> <a href="https://smashballoon.com/custom-facebook-feed/faq/?
|
823 |
<?php _e('View our expansive library of FAQs and documentation to help solve your problem as quickly as possible.'); ?>
|
824 |
</p>
|
825 |
|
@@ -827,23 +827,24 @@ function cff_settings_page() {
|
|
827 |
|
828 |
<ul class="cff-faq-col-1">
|
829 |
<li><b>FAQs</b></li>
|
830 |
-
<li>• <?php _e('<a href="https://smashballoon.com/category/custom-facebook-feed/faq
|
831 |
-
<li>• <?php _e('<a href="https://smashballoon.com/category/custom-facebook-feed/getting-started
|
832 |
-
<li>• <?php _e('<a href="https://smashballoon.com/category/custom-facebook-feed/troubleshooting
|
833 |
-
<li style="margin-top: 8px; font-size: 12px;"><a href="https://smashballoon.com/custom-facebook-feed/faq/?
|
|
|
834 |
</ul>
|
835 |
|
836 |
<ul>
|
837 |
<li><b>Documentation</b></li>
|
838 |
-
<li>• <?php _e('<a href="http://smashballoon.com/custom-facebook-feed/docs/free
|
839 |
-
<li>• <?php _e('<a href="https://smashballoon.com/custom-facebook-feed/docs/shortcodes
|
840 |
-
<li>• <?php _e('<a href=https://smashballoon.com/
|
841 |
-
<li style="margin-top: 8px; font-size: 12px;"><a href="https://smashballoon.com/custom-facebook-feed/docs/?
|
842 |
</ul>
|
843 |
</div>
|
844 |
|
845 |
<p>
|
846 |
-
<span class="cff-support-title"><i class="fa fa-envelope" aria-hidden="true"></i> <a href="http://smashballoon.com/custom-facebook-feed/support
|
847 |
<?php _e('Still need help? Submit a ticket and one of our support experts will get back to you as soon as possible.<br /><b>Important:</b> Please include your <b>System Info</b> below with all support requests.'); ?>
|
848 |
</p>
|
849 |
</div>
|
@@ -1097,7 +1098,7 @@ if( isset( $api_response_json->data ) ){
|
|
1097 |
} ?>
|
1098 |
|
1099 |
|
1100 |
-
##
|
1101 |
<?php
|
1102 |
$cron = _get_cron_array();
|
1103 |
foreach ( $cron as $key => $data ) {
|
@@ -1116,6 +1117,19 @@ foreach ( $cron as $key => $data ) {
|
|
1116 |
echo "\n\n";
|
1117 |
}
|
1118 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1119 |
|
1120 |
?>
|
1121 |
</textarea>
|
@@ -2035,7 +2049,7 @@ function cff_style_page() {
|
|
2035 |
if ( ! $lite_notice_dismissed ) :
|
2036 |
?>
|
2037 |
<div id="cff-notice-bar" style="display:none">
|
2038 |
-
<span class="cff-notice-bar-message"><?php _e( 'You\'re using Custom Facebook Feed Lite. To unlock more features consider <a href="https://smashballoon.com/custom-facebook-feed/?
|
2039 |
<button type="button" class="dismiss" title="<?php _e( 'Dismiss this message.', 'custom-facebook-feed'); ?>" data-page="overview">
|
2040 |
</button>
|
2041 |
</div>
|
@@ -2169,7 +2183,7 @@ function cff_style_page() {
|
|
2169 |
<h3><?php _e('Post Types', 'custom-facebook-feed'); ?></h3>
|
2170 |
<tr valign="top">
|
2171 |
<th scope="row"><?php _e('Only show these types of posts:', 'custom-facebook-feed'); ?><br />
|
2172 |
-
<i style="color: #666; font-size: 11px;"><a href="https://smashballoon.com/custom-facebook-feed/?
|
2173 |
<td>
|
2174 |
<div>
|
2175 |
<input name="cff_show_status_type" type="checkbox" id="cff_show_status_type" disabled checked />
|
@@ -2441,7 +2455,7 @@ function cff_style_page() {
|
|
2441 |
<hr />
|
2442 |
|
2443 |
<h3><?php _e('"Load More" button'); ?></h3>
|
2444 |
-
<a href="https://smashballoon.com/custom-facebook-feed/?
|
2445 |
<p class="submit cff-expand-button">
|
2446 |
<a href="javascript:void(0);" class="button"><b>+</b> Show Pro Options</a>
|
2447 |
</p>
|
@@ -2485,7 +2499,7 @@ function cff_style_page() {
|
|
2485 |
<hr />
|
2486 |
|
2487 |
<h3><?php _e('Lightbox'); ?></h3>
|
2488 |
-
<a href="https://smashballoon.com/custom-facebook-feed/?
|
2489 |
<p class="submit cff-expand-button">
|
2490 |
<a href="javascript:void(0);" class="button"><b>+</b> Show Pro Options</a>
|
2491 |
</p>
|
@@ -2531,7 +2545,7 @@ function cff_style_page() {
|
|
2531 |
<hr />
|
2532 |
|
2533 |
<h3><?php _e('Filter Content by String'); ?></h3>
|
2534 |
-
<a href="https://smashballoon.com/custom-facebook-feed/?
|
2535 |
<p class="submit cff-expand-button">
|
2536 |
<a href="javascript:void(0);" class="button"><b>+</b> Show Pro Options</a>
|
2537 |
</p>
|
@@ -2570,7 +2584,7 @@ function cff_style_page() {
|
|
2570 |
</div>
|
2571 |
|
2572 |
|
2573 |
-
<a href="https://smashballoon.com/custom-facebook-feed/demo/?
|
2574 |
|
2575 |
<?php } //End General tab ?>
|
2576 |
<?php if( $cff_active_tab == 'post_layout' ) { //Start Post Layout tab ?>
|
@@ -2583,7 +2597,7 @@ function cff_style_page() {
|
|
2583 |
<input type="hidden" name="<?php echo $style_post_layout_hidden_field_name; ?>" value="Y">
|
2584 |
<br />
|
2585 |
<h3><?php _e('Post Layouts', 'custom-facebook-feed'); ?></h3>
|
2586 |
-
<a href="https://smashballoon.com/custom-facebook-feed/?
|
2587 |
<p class="submit cff-expand-button">
|
2588 |
<a href="javascript:void(0);" class="button"><b>+</b> Show Pro Options</a>
|
2589 |
</p>
|
@@ -2750,7 +2764,7 @@ function cff_style_page() {
|
|
2750 |
</table>
|
2751 |
|
2752 |
<?php submit_button(); ?>
|
2753 |
-
<a href="https://smashballoon.com/custom-facebook-feed/demo/?
|
2754 |
<?php } //End Post Layout tab ?>
|
2755 |
<?php if( $cff_active_tab == 'typography' ) { //Start Typography tab ?>
|
2756 |
|
@@ -3746,7 +3760,7 @@ function cff_style_page() {
|
|
3746 |
<hr />
|
3747 |
|
3748 |
<h3><?php _e('Likes, Shares and Comments Box'); ?></h3>
|
3749 |
-
<a href="https://smashballoon.com/custom-facebook-feed/?
|
3750 |
<p class="submit cff-expand-button">
|
3751 |
<a href="javascript:void(0);" class="button"><b>+</b> Show Pro Options</a>
|
3752 |
</p>
|
@@ -3825,7 +3839,7 @@ function cff_style_page() {
|
|
3825 |
<?php submit_button(); ?>
|
3826 |
</div>
|
3827 |
|
3828 |
-
<a href="https://smashballoon.com/custom-facebook-feed/demo/?
|
3829 |
|
3830 |
<?php } //End Typography tab ?>
|
3831 |
<?php if( $cff_active_tab == 'misc' ) { //Start Misc tab ?>
|
@@ -3847,7 +3861,7 @@ function cff_style_page() {
|
|
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/
|
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,7 +3872,7 @@ function cff_style_page() {
|
|
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/
|
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>
|
@@ -3869,7 +3883,7 @@ function cff_style_page() {
|
|
3869 |
|
3870 |
<hr />
|
3871 |
<h3><?php _e('Media'); ?></h3>
|
3872 |
-
<a href="https://smashballoon.com/custom-facebook-feed/?
|
3873 |
<p class="submit cff-expand-button">
|
3874 |
<a href="javascript:void(0);" class="button"><b>+</b> Show Pro Options</a>
|
3875 |
</p>
|
@@ -4098,7 +4112,7 @@ function cff_style_page() {
|
|
4098 |
</table>
|
4099 |
|
4100 |
<?php submit_button(); ?>
|
4101 |
-
<a href="https://smashballoon.com/custom-facebook-feed/demo/?
|
4102 |
<?php } //End Misc tab ?>
|
4103 |
|
4104 |
|
@@ -4244,7 +4258,7 @@ function cff_style_page() {
|
|
4244 |
</table>
|
4245 |
|
4246 |
<?php submit_button(); ?>
|
4247 |
-
<a href="https://smashballoon.com/custom-facebook-feed/demo/?
|
4248 |
<?php } //End Custom Text tab ?>
|
4249 |
|
4250 |
</form>
|
@@ -4504,7 +4518,7 @@ function cff_notices_html() {
|
|
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/?
|
4508 |
|
4509 |
$dismiss_url = add_query_arg( array(
|
4510 |
'cff_ignore_rating_notice_nag' => '1',
|
@@ -4551,7 +4565,7 @@ function cff_notices_html() {
|
|
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/?
|
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>
|
4556 |
|
4557 |
</p>
|
@@ -4569,7 +4583,7 @@ function cff_notices_html() {
|
|
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/?
|
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>
|
4574 |
</p>
|
4575 |
</div>
|
140 |
if ( ! $lite_notice_dismissed ) :
|
141 |
?>
|
142 |
<div id="cff-notice-bar" style="display:none">
|
143 |
+
<span class="cff-notice-bar-message"><?php _e( 'You\'re using Custom Facebook Feed Lite. To unlock more features consider <a href="https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free&utm_source=notices&utm_medium=lite" target="_blank" rel="noopener noreferrer">upgrading to Pro</a>.', 'custom-facebook-feed'); ?></span>
|
144 |
<button type="button" class="dismiss" title="<?php _e( 'Dismiss this message.', 'custom-facebook-feed'); ?>" data-page="overview">
|
145 |
</button>
|
146 |
</div>
|
790 |
<div class="cff_quickstart">
|
791 |
<h3><i class="fa fa-rocket" aria-hidden="true"></i> Display your feed</h3>
|
792 |
<p>Copy and paste this shortcode directly into the page, post or widget where you'd like to display the feed: <input type="text" value="[custom-facebook-feed]" size="22" readonly="readonly" style="text-align: center;" onclick="this.focus();this.select()" title="To copy, click the field then press Ctrl + C (PC) or Cmd + C (Mac)."></p>
|
793 |
+
<p>Find out how to display <a href="https://smashballoon.com/using-shortcode-options-customize-facebook-feeds/?utm_campaign=facebook-free&utm_source=settings&utm_medium=multiple" target="_blank"><b>multiple feeds</b></a>.</p>
|
794 |
</div>
|
795 |
|
796 |
+
<a href="https://smashballoon.com/custom-facebook-feed/demo/?utm_campaign=facebook-free&utm_source=footer&utm_medium=ad" target="_blank" class="cff-pro-notice"><img src="<?php echo plugins_url( 'img/pro.png?2019' , __FILE__ ) ?>" /></a>
|
797 |
|
798 |
<p class="cff_plugins_promo dashicons-before dashicons-admin-plugins"> <?php _e('Check out our other free plugins for <a href="https://wordpress.org/plugins/instagram-feed/" target="_blank">Instagram</a>, <a href="https://wordpress.org/plugins/custom-twitter-feeds/" target="_blank">Twitter</a>, and <a href="https://wordpress.org/plugins/feeds-for-youtube/" target="_blank">YouTube</a>.', 'custom-facebook-feed' ); ?></p>
|
799 |
|
814 |
<h3 style="padding-bottom: 10px;">Need help?</h3>
|
815 |
|
816 |
<p>
|
817 |
+
<span class="cff-support-title"><i class="fa fa-life-ring" aria-hidden="true"></i> <a href="https://smashballoon.com/custom-facebook-feed/docs/free/?utm_campaign=facebook-free&utm_source=support&utm_medium=setup" target="_blank"><?php _e('Setup Directions'); ?></a></span>
|
818 |
<?php _e('A step-by-step guide on how to setup and use the plugin.'); ?>
|
819 |
</p>
|
820 |
|
821 |
<p>
|
822 |
+
<span class="cff-support-title"><i class="fa fa-question-circle" aria-hidden="true"></i> <a href="https://smashballoon.com/custom-facebook-feed/faq/?utm_campaign=facebook-free&utm_source=support&utm_medium=faqs" target="_blank"><?php _e('FAQs and Docs'); ?></a></span>
|
823 |
<?php _e('View our expansive library of FAQs and documentation to help solve your problem as quickly as possible.'); ?>
|
824 |
</p>
|
825 |
|
827 |
|
828 |
<ul class="cff-faq-col-1">
|
829 |
<li><b>FAQs</b></li>
|
830 |
+
<li>• <?php _e('<a href="https://smashballoon.com/category/custom-facebook-feed/faq/?utm_campaign=facebook-free&utm_source=support&utm_medium=general" target="_blank">General Questions</a>'); ?></li>
|
831 |
+
<li>• <?php _e('<a href="https://smashballoon.com/category/custom-facebook-feed/getting-started/?utm_campaign=facebook-free&utm_source=support&utm_medium=setup" target="_blank">Getting Started</a>'); ?></li>
|
832 |
+
<li>• <?php _e('<a href="https://smashballoon.com/category/custom-facebook-feed/troubleshooting/?utm_campaign=facebook-free&utm_source=support&utm_medium=issues" 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_campaign=facebook-free&utm_source=support&utm_medium=faqs" target="_blank">See all<i class="fa fa-chevron-right" aria-hidden="true"></i></a></li>
|
834 |
+
|
835 |
</ul>
|
836 |
|
837 |
<ul>
|
838 |
<li><b>Documentation</b></li>
|
839 |
+
<li>• <?php _e('<a href="http://smashballoon.com/custom-facebook-feed/docs/free/?utm_campaign=facebook-free&utm_source=support&utm_medium=setup" target="_blank">Installation and Configuration</a>'); ?></li>
|
840 |
+
<li>• <?php _e('<a href="https://smashballoon.com/custom-facebook-feed/docs/shortcodes/?utm_campaign=facebook-free&utm_source=support&utm_medium=shortcode" target="_blank">Shortcode Reference</a>', 'custom-facebook-feed'); ?></li>
|
841 |
+
<li>• <?php _e('<a href="https://smashballoon.com/snippets/?utm_campaign=facebook-free&utm_source=support&utm_medium=snippets" target="_blank">Custom CSS and JavaScript Snippets</a>'); ?></li>
|
842 |
+
<li style="margin-top: 8px; font-size: 12px;"><a href="https://smashballoon.com/custom-facebook-feed/docs/?utm_campaign=facebook-free&utm_source=support&utm_medium=docs" target="_blank">See all<i class="fa fa-chevron-right" aria-hidden="true"></i></a></li>
|
843 |
</ul>
|
844 |
</div>
|
845 |
|
846 |
<p>
|
847 |
+
<span class="cff-support-title"><i class="fa fa-envelope" aria-hidden="true"></i> <a href="http://smashballoon.com/custom-facebook-feed/support/?utm_campaign=facebook-free&utm_source=support&utm_medium=support" target="_blank"><?php _e('Request Support'); ?></a></span>
|
848 |
<?php _e('Still need help? Submit a ticket and one of our support experts will get back to you as soon as possible.<br /><b>Important:</b> Please include your <b>System Info</b> below with all support requests.'); ?>
|
849 |
</p>
|
850 |
</div>
|
1098 |
} ?>
|
1099 |
|
1100 |
|
1101 |
+
## CRON EVENTS: ##
|
1102 |
<?php
|
1103 |
$cron = _get_cron_array();
|
1104 |
foreach ( $cron as $key => $data ) {
|
1117 |
echo "\n\n";
|
1118 |
}
|
1119 |
}
|
1120 |
+
?>
|
1121 |
+
|
1122 |
+
## Error Log: ##
|
1123 |
+
<?php
|
1124 |
+
global $cff_error_reporter;
|
1125 |
+
$errors = $cff_error_reporter->get_errors();
|
1126 |
+
if ( ! empty( $errors ) ) :
|
1127 |
+
foreach ( $errors as $error ) :
|
1128 |
+
echo $error['admin_message']."\n";
|
1129 |
+
echo 'Feed with error: ' . esc_url( get_the_permalink( $error['post_id'] ) )."\n";
|
1130 |
+
|
1131 |
+
endforeach;
|
1132 |
+
endif;
|
1133 |
|
1134 |
?>
|
1135 |
</textarea>
|
2049 |
if ( ! $lite_notice_dismissed ) :
|
2050 |
?>
|
2051 |
<div id="cff-notice-bar" style="display:none">
|
2052 |
+
<span class="cff-notice-bar-message"><?php _e( 'You\'re using Custom Facebook Feed Lite. To unlock more features consider <a href="https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free&utm_source=notices&utm_medium=lite" target="_blank" rel="noopener noreferrer">upgrading to Pro</a>.', 'custom-facebook-feed'); ?></span>
|
2053 |
<button type="button" class="dismiss" title="<?php _e( 'Dismiss this message.', 'custom-facebook-feed'); ?>" data-page="overview">
|
2054 |
</button>
|
2055 |
</div>
|
2183 |
<h3><?php _e('Post Types', 'custom-facebook-feed'); ?></h3>
|
2184 |
<tr valign="top">
|
2185 |
<th scope="row"><?php _e('Only show these types of posts:', 'custom-facebook-feed'); ?><br />
|
2186 |
+
<i style="color: #666; font-size: 11px;"><a href="https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free&utm_source=settings&utm_medium=types" target="_blank"><?php _e('Upgrade to Pro to enable post types, photos, videos and more', 'custom-facebook-feed'); ?></a></i></th>
|
2187 |
<td>
|
2188 |
<div>
|
2189 |
<input name="cff_show_status_type" type="checkbox" id="cff_show_status_type" disabled checked />
|
2455 |
<hr />
|
2456 |
|
2457 |
<h3><?php _e('"Load More" button'); ?></h3>
|
2458 |
+
<a href="https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free&utm_source=settings&utm_medium=loadmore" target="_blank">Upgrade to Pro to enable the Load More button</a>
|
2459 |
<p class="submit cff-expand-button">
|
2460 |
<a href="javascript:void(0);" class="button"><b>+</b> Show Pro Options</a>
|
2461 |
</p>
|
2499 |
<hr />
|
2500 |
|
2501 |
<h3><?php _e('Lightbox'); ?></h3>
|
2502 |
+
<a href="https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free&utm_source=settings&utm_medium=lightbox" target="_blank">Upgrade to Pro to enable the Lightbox</a>
|
2503 |
<p class="submit cff-expand-button">
|
2504 |
<a href="javascript:void(0);" class="button"><b>+</b> Show Pro Options</a>
|
2505 |
</p>
|
2545 |
<hr />
|
2546 |
|
2547 |
<h3><?php _e('Filter Content by String'); ?></h3>
|
2548 |
+
<a href="https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free&utm_source=settings&utm_medium=filtering" target="_blank">Upgrade to Pro to enable Filtering</a>
|
2549 |
<p class="submit cff-expand-button">
|
2550 |
<a href="javascript:void(0);" class="button"><b>+</b> Show Pro Options</a>
|
2551 |
</p>
|
2584 |
</div>
|
2585 |
|
2586 |
|
2587 |
+
<a href="https://smashballoon.com/custom-facebook-feed/demo/?utm_campaign=facebook-free&utm_source=footer&utm_medium=ad" target="_blank" class="cff-pro-notice"><img src="<?php echo plugins_url( 'img/pro.png?2019' , __FILE__ ) ?>" /></a>
|
2588 |
|
2589 |
<?php } //End General tab ?>
|
2590 |
<?php if( $cff_active_tab == 'post_layout' ) { //Start Post Layout tab ?>
|
2597 |
<input type="hidden" name="<?php echo $style_post_layout_hidden_field_name; ?>" value="Y">
|
2598 |
<br />
|
2599 |
<h3><?php _e('Post Layouts', 'custom-facebook-feed'); ?></h3>
|
2600 |
+
<a href="https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free&utm_source=settings&utm_medium=layouts" target="_blank"><?php _e('Upgrade to Pro to enable layouts', 'custom-facebook-feed'); ?></a>
|
2601 |
<p class="submit cff-expand-button">
|
2602 |
<a href="javascript:void(0);" class="button"><b>+</b> Show Pro Options</a>
|
2603 |
</p>
|
2764 |
</table>
|
2765 |
|
2766 |
<?php submit_button(); ?>
|
2767 |
+
<a href="https://smashballoon.com/custom-facebook-feed/demo/?utm_campaign=facebook-free&utm_source=footer&utm_medium=ad" target="_blank" class="cff-pro-notice"><img src="<?php echo plugins_url( 'img/pro.png' , __FILE__ ) ?>" /></a>
|
2768 |
<?php } //End Post Layout tab ?>
|
2769 |
<?php if( $cff_active_tab == 'typography' ) { //Start Typography tab ?>
|
2770 |
|
3760 |
<hr />
|
3761 |
|
3762 |
<h3><?php _e('Likes, Shares and Comments Box'); ?></h3>
|
3763 |
+
<a href="https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free&utm_source=settings&utm_medium=likesharescom" target="_blank">Upgrade to Pro to enable likes, shares and comments</a>
|
3764 |
<p class="submit cff-expand-button">
|
3765 |
<a href="javascript:void(0);" class="button"><b>+</b> Show Pro Options</a>
|
3766 |
</p>
|
3839 |
<?php submit_button(); ?>
|
3840 |
</div>
|
3841 |
|
3842 |
+
<a href="https://smashballoon.com/custom-facebook-feed/demo/?utm_campaign=facebook-free&utm_source=footer&utm_medium=ad" target="_blank" class="cff-pro-notice"><img src="<?php echo plugins_url( 'img/pro.png' , __FILE__ ) ?>" /></a>
|
3843 |
|
3844 |
<?php } //End Typography tab ?>
|
3845 |
<?php if( $cff_active_tab == 'misc' ) { //Start Misc tab ?>
|
3861 |
<tbody>
|
3862 |
<tr valign="top">
|
3863 |
<td style="padding-top: 0;">
|
3864 |
+
<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/snippets/" target="_blank"><?php _e('See some examples', 'custom-facebook-feed'); ?></a></i></p>
|
3865 |
<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>
|
3866 |
</td>
|
3867 |
</tr>
|
3872 |
<tbody>
|
3873 |
<tr valign="top">
|
3874 |
<td style="padding-top: 0;">
|
3875 |
+
<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/snippets/" target="_blank"><?php _e('See some examples', 'custom-facebook-feed'); ?></a></i></p>
|
3876 |
<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>
|
3877 |
</td>
|
3878 |
</tr>
|
3883 |
|
3884 |
<hr />
|
3885 |
<h3><?php _e('Media'); ?></h3>
|
3886 |
+
<a href="https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free&utm_source=settings&utm_medium=media" target="_blank">Upgrade to Pro to enable Media options</a>
|
3887 |
<p class="submit cff-expand-button">
|
3888 |
<a href="javascript:void(0);" class="button"><b>+</b> Show Pro Options</a>
|
3889 |
</p>
|
4112 |
</table>
|
4113 |
|
4114 |
<?php submit_button(); ?>
|
4115 |
+
<a href="https://smashballoon.com/custom-facebook-feed/demo/?utm_campaign=facebook-free&utm_source=footer&utm_medium=ad" target="_blank" class="cff-pro-notice"><img src="<?php echo plugins_url( 'img/pro.png' , __FILE__ ) ?>" /></a>
|
4116 |
<?php } //End Misc tab ?>
|
4117 |
|
4118 |
|
4258 |
</table>
|
4259 |
|
4260 |
<?php submit_button(); ?>
|
4261 |
+
<a href="https://smashballoon.com/custom-facebook-feed/demo/?utm_campaign=facebook-free&utm_source=footer&utm_medium=ad" target="_blank" class="cff-pro-notice"><img src="<?php echo plugins_url( 'img/pro.png' , __FILE__ ) ?>" /></a>
|
4262 |
<?php } //End Custom Text tab ?>
|
4263 |
|
4264 |
</form>
|
4518 |
$dismiss_url = add_query_arg( 'cff_ignore_rating_notice_nag', '1' );
|
4519 |
$later_url = add_query_arg( 'cff_ignore_rating_notice_nag', 'later' );
|
4520 |
if ( $should_show_bfcm_discount ) {
|
4521 |
+
$other_notice_html = '<p class="cff_other_notice">' . __( 'PS. We currently have a <a href="https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free&utm_source=notices&utm_medium=rating&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>';
|
4522 |
|
4523 |
$dismiss_url = add_query_arg( array(
|
4524 |
'cff_ignore_rating_notice_nag' => '1',
|
4565 |
<div class='cff-notice-text'>
|
4566 |
<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>
|
4567 |
<p class='cff-links'>
|
4568 |
+
<a class='cff_notice_dismiss cff_offer_btn' href='https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free&utm_source=notices&utm_medium=newuser&discount=facebookthankyou' target='_blank'><b>" . __( 'Get this offer', 'custom-facebook-feed' ) . "</b></a>
|
4569 |
<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>
|
4570 |
|
4571 |
</p>
|
4583 |
<div class='cff-notice-text'>
|
4584 |
<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>
|
4585 |
<p class='cff-links'>
|
4586 |
+
<a class='cff_notice_dismiss cff_offer_btn' href='https://smashballoon.com/custom-facebook-feed/?utm_campaign=facebook-free&utm_source=notices&utm_medium=bfcm&discount=".$cff_bfcm_discount_code."' target='_blank'><b>" . __( 'Get this offer', 'custom-facebook-feed' ) . "</b></a>
|
4587 |
<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>
|
4588 |
</p>
|
4589 |
</div>
|
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.14
|
7 |
Author: Smash Balloon
|
8 |
Author URI: http://smashballoon.com/
|
9 |
License: GPLv2 or later
|
@@ -24,7 +24,7 @@ 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.14');
|
28 |
|
29 |
// Db version.
|
30 |
if ( ! defined( 'CFF_DBVERSION' ) ) {
|
@@ -2199,7 +2199,15 @@ 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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>';
|
@@ -2272,9 +2280,6 @@ function cff_log_fb_error( $response, $url ) {
|
|
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 ) ) {
|
@@ -2284,7 +2289,7 @@ function cff_fetchUrl($url){
|
|
2284 |
global $cff_error_reporter;
|
2285 |
|
2286 |
$cff_error_reporter->remove_error( 'api' );
|
2287 |
-
$cff_error_reporter->remove_error( '
|
2288 |
|
2289 |
$feedData = apply_filters( 'cff_filter_api_data', $feedData );
|
2290 |
|
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.1
|
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.1');
|
28 |
|
29 |
// Db version.
|
30 |
if ( ! defined( 'CFF_DBVERSION' ) ) {
|
2199 |
if ( is_wp_error( $response ) ) {
|
2200 |
global $cff_error_reporter;
|
2201 |
delete_option( 'cff_dismiss_critical_notice' );
|
2202 |
+
|
2203 |
+
$admin_message_error = '';
|
2204 |
+
if ( isset( $response ) && isset( $response->errors ) ) {
|
2205 |
+
foreach ( $response->errors as $key => $item ) {
|
2206 |
+
$admin_message_error .= ' '.$key . ' - ' . $item[0];
|
2207 |
+
}
|
2208 |
+
}
|
2209 |
+
|
2210 |
+
$admin_message = __( 'Error connecting to the Facebook API:', 'custom-facebook-feed' ) . ' ' . $admin_message_error;
|
2211 |
$public_message =__( 'Unable to make remote requests to the Facebook API. Log in as an admin to view more details.', 'custom-facebook-feed' );
|
2212 |
$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>';
|
2213 |
$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>';
|
2280 |
}
|
2281 |
//Get JSON object of feed data
|
2282 |
function cff_fetchUrl($url){
|
|
|
|
|
|
|
2283 |
$response = wp_remote_get( $url );
|
2284 |
|
2285 |
if ( !cff_is_wp_error( $response ) ) {
|
2289 |
global $cff_error_reporter;
|
2290 |
|
2291 |
$cff_error_reporter->remove_error( 'api' );
|
2292 |
+
$cff_error_reporter->remove_error( 'wp_remote_get' );
|
2293 |
|
2294 |
$feedData = apply_filters( 'cff_filter_api_data', $feedData );
|
2295 |
|
email.php
CHANGED
@@ -1,102 +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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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>•</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>
|
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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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>•</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/icon-full.svg
CHANGED
File without changes
|
img/about/icon-none.svg
CHANGED
File without changes
|
img/about/icon-partial.svg
CHANGED
File without changes
|
img/about/plugin-mi.png
CHANGED
File without changes
|
img/about/plugin-om.png
CHANGED
File without changes
|
img/about/plugin-rp.png
CHANGED
File without changes
|
img/about/plugin-smtp.png
CHANGED
File without changes
|
img/about/plugin-wpforms.png
CHANGED
File without changes
|
js/cff-blocks.js
CHANGED
@@ -1,114 +1,117 @@
|
|
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 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
_props$attributes
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},
|
67 |
-
setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
key: "cff-gutenberg-
|
102 |
-
className: "cff-gutenberg-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
return
|
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 |
+
executed: {
|
39 |
+
type: 'boolean'
|
40 |
+
}
|
41 |
+
},
|
42 |
+
edit: function edit(props) {
|
43 |
+
var _props = props,
|
44 |
+
setAttributes = _props.setAttributes,
|
45 |
+
_props$attributes = _props.attributes,
|
46 |
+
_props$attributes$sho = _props$attributes.shortcodeSettings,
|
47 |
+
shortcodeSettings = _props$attributes$sho === void 0 ? cff_block_editor.shortcodeSettings : _props$attributes$sho,
|
48 |
+
_props$attributes$cli = _props$attributes.noNewChanges,
|
49 |
+
noNewChanges = _props$attributes$cli === void 0 ? true : _props$attributes$cli;
|
50 |
+
|
51 |
+
function setState(shortcodeSettingsContent) {
|
52 |
+
setAttributes({
|
53 |
+
noNewChanges: false,
|
54 |
+
shortcodeSettings: shortcodeSettingsContent
|
55 |
+
})
|
56 |
+
}
|
57 |
+
|
58 |
+
function previewClick(content) {
|
59 |
+
setAttributes({
|
60 |
+
noNewChanges: true,
|
61 |
+
})
|
62 |
+
}
|
63 |
+
function afterRender() {
|
64 |
+
var executed = false;
|
65 |
+
// no way to run a script after AJAX call to get feed so we just try to execute it on a few intervals
|
66 |
+
setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},1000);
|
67 |
+
setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},2000);
|
68 |
+
setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},3000);
|
69 |
+
setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},5000);
|
70 |
+
setTimeout(function() { if (typeof cff_init !== 'undefined' && !executed) {executed = true;cff_init();}},10000);
|
71 |
+
}
|
72 |
+
|
73 |
+
var jsx = [React.createElement(InspectorControls, {
|
74 |
+
key: "cff-gutenberg-setting-selector-inspector-controls"
|
75 |
+
}, React.createElement(PanelBody, {
|
76 |
+
title: cff_block_editor.i18n.addSettings
|
77 |
+
}, React.createElement(TextareaControl, {
|
78 |
+
key: "cff-gutenberg-settings",
|
79 |
+
className: "cff-gutenberg-settings",
|
80 |
+
label: cff_block_editor.i18n.shortcodeSettings,
|
81 |
+
help: cff_block_editor.i18n.example + ": 'id=\"smashballoon\" showheader=\"true\"'",
|
82 |
+
value: shortcodeSettings,
|
83 |
+
onChange: setState
|
84 |
+
}), React.createElement(Button, {
|
85 |
+
key: "cff-gutenberg-preview",
|
86 |
+
className: "cff-gutenberg-preview",
|
87 |
+
onClick: previewClick,
|
88 |
+
isDefault: true
|
89 |
+
}, cff_block_editor.i18n.preview)))];
|
90 |
+
|
91 |
+
if (noNewChanges) {
|
92 |
+
afterRender();
|
93 |
+
jsx.push(React.createElement(ServerSideRender, {
|
94 |
+
key: "custom-facebook-feeds/custom-facebook-feeds",
|
95 |
+
block: "cff/cff-feed-block",
|
96 |
+
attributes: props.attributes,
|
97 |
+
}));
|
98 |
+
} else {
|
99 |
+
props.attributes.noNewChanges = false;
|
100 |
+
jsx.push(React.createElement(Placeholder, {
|
101 |
+
key: "cff-gutenberg-setting-selector-select-wrap",
|
102 |
+
className: "cff-gutenberg-setting-selector-select-wrap"
|
103 |
+
}, React.createElement(Button, {
|
104 |
+
key: "cff-gutenberg-preview",
|
105 |
+
className: "cff-gutenberg-preview",
|
106 |
+
onClick: previewClick,
|
107 |
+
isDefault: true
|
108 |
+
}, cff_block_editor.i18n.preview)));
|
109 |
+
}
|
110 |
+
|
111 |
+
return jsx;
|
112 |
+
},
|
113 |
+
save: function save() {
|
114 |
+
return null;
|
115 |
+
}
|
116 |
+
});
|
117 |
})();
|
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
CHANGED
@@ -1,12 +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)})});
|
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 <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 <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 ""
|