Custom Twitter Feeds - Version 1.2.8

Version Description

  • Fix: "Preserve settings on uninstall" setting not working correctly
  • Fix: Clear cache button would not clear all caches in some situations
Download this release

Release Info

Developer smashballoon
Plugin Icon 128x128 Custom Twitter Feeds
Version 1.2.8
Comparing to
See all releases

Code changes from version 1.2.7 to 1.2.8

README.txt CHANGED
@@ -5,27 +5,27 @@ Support Website: http://smashballoon/custom-twitter-feeds/
5
  Tags: Twitter, Twitter feed, Tweets, Twitter widget, Custom Twitter Feed
6
  Requires at least: 3.0
7
  Tested up to: 4.9
8
- Stable tag: 1.2.7
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
12
- Custom Twitter Feeds allows you to display completely customizable Twitter feeds of your user timeline, home timeline, or hashtag on your website.
13
 
14
  == Description ==
15
- Display **completely customizable**, **responsive** and **search engine crawlable** versions of your Twitter feed on your website. Completely match the look and feel of the site with tons of customization options!
16
 
17
  = Features =
18
  * **Completely Customizable** - by default inherits your theme's styles
19
  * Twitter feed content is **crawlable by search engines** adding SEO value to your site
20
  * **Completely responsive and mobile optimized** - works on any screen size
21
  * Display tweets from any user, your own Twitter account and those you follow, or from a specific hashtag
22
- * Display multiple feeds from different Twitter users on multiple pages or widgets
23
- * Post caching means that your Twitter feed loads lightning fast and minimizes Twitter API requests
24
  * **Infinitely load more** of your Tweets with the 'Load More' button
25
  * Built-in easy to use "Custom Twitter Feeds" Widget
26
  * Fully internationalized and translatable into any language
27
  * Display a beautiful header at the top of your Twitter feed
28
- * Enter your own custom CSS for even deeper customization
29
 
30
  For simple step-by-step directions on how to set up the Custom Twitter Feeds plugin please refer to our [setup guide](http://smashballoon.com/custom-twitter-feeds/free/ 'Custom Twitter Feeds setup guide').
31
 
@@ -43,7 +43,7 @@ For simple step-by-step directions on how to set up the Custom Twitter Feeds plu
43
  [View the reviews](https://wordpress.org/support/plugin/custom-twitter-feeds/reviews/) to see what other users are saying about the Custom Twitter Feeds plugin.
44
 
45
  = Feedback or Support =
46
- We're dedicated to providing the most customizable, robust and well supported Twitter feed plugin in the world, so if you have an issue or any feedback on how to improve the plugin then please [let us know](https://smashballoon.com/custom-twitter-feeds/support/ 'Twitter Feed Support').
47
 
48
  If you like the plugin then please consider leaving a review, as it really helps to support the plugin. If you have an issue then please allow us to help you fix it before leaving a review. Just [let us know](https://smashballoon.com/custom-twitter-feeds/support/ 'Twitter Feed Support') what the problem is and we'll get back to you right away.
49
 
@@ -58,6 +58,12 @@ If you like the plugin then please consider leaving a review, as it really helps
58
 
59
  *Thanks again, Craig!*" - [@kcwebguy](https://wordpress.org/support/topic/amazing-support-and-a-great-twitter-plugin/)
60
 
 
 
 
 
 
 
61
  = Pro Version =
62
  We recently released a [Pro version](http://smashballoon.com/custom-twitter-feeds/ 'Custom Twitter Feeds Pro') which includes some awesome additional features:
63
 
@@ -65,11 +71,14 @@ We recently released a [Pro version](http://smashballoon.com/custom-twitter-feed
65
  * Display **photos**, **videos**, and **gifs** and view them in a **popup lightbox** directly on your site
66
  * Multi-column **Masonry layout** [demo](http://smashballoon.com/custom-twitter-feeds/demo/masonry 'Custom Twitter Feeds Pro Masonry Demo')
67
  * Allow **filtering** of user timelines include/exclude any/all keywords/hashtags
 
68
  * Fully functional **search endpoint**
69
  * Display Tweets you're mentioned in
70
  * Tweet-specific **moderation system**
71
- * **Twitter cards** displayed with links which support them
72
  * Include **Tweet replies** (in reply to tweets)
 
 
73
 
74
  Try the Pro version [demo here](http://smashballoon.com/custom-twitter-feeds/demo 'Custom Twitter Feeds Pro Demo')
75
 
@@ -86,7 +95,7 @@ For simple step-by-step directions on how to set up the Custom Twitter Feeds plu
86
 
87
  The Custom Twitter Feeds plugin is brand new and so we're currently working on improving our documentation for it. If you have an issue or question please submit a support ticket and we'll get back to you as soon as we can.
88
 
89
- 1) Once you've installed the Custom Twitter Feeds plugin click on the Twitter Feed item in your WordPress menu
90
 
91
  2) Click on the large blue Twitter login button to get your Twitter Access Token and Twitter Secret. Note; if you have your own Twitter Developer App set up then you can enter your Twitter information manually by enabling the checkbox below the Twitter login button.
92
 
@@ -156,44 +165,42 @@ The main differences between the free version and Pro version of the Custom Twit
156
 
157
  You can see the demo of the Custom Twitter Feeds Pro version [here](https://smashballoon.com/custom-twitter-feeds/demo/), and a video screencast [here](https://smashballoon.com/custom-twitter-feeds/#watch-video).
158
 
159
- == Other Notes ==
160
-
161
- = Twitter API Error Message Reference =
162
 
163
  If you receive an error message when trying to display your Twitter Feed then you can use the error reference below to diagnose the issue and find the relevant solution.
164
 
165
- **Error:**
166
  Could not authenticate you
167
 
168
  **Causes:**
169
  - You may be using Twitter access tokens that are not valid - See #1 below
170
  - You checked the box to enter your own Twitter app information, but one or more of the fields are incorrect - See #2 below
171
 
172
- **Error:**
173
  Invalid or expired token
174
 
175
  **Causes:**
176
  - You may not have entered your Twitter access tokens or they are not valid - See #1 below
177
 
178
- **Error:**
179
  Unable to load tweets (with no other explanation)
180
 
181
  **Causes:**
182
  - You may need to raise the number of tweets to retrieve and display in your Twitter feed - See #3 below
183
 
184
- **Error:**
185
- Sorry, that page does not exist
186
 
187
  **Causes:**
188
  - There may be a typo in the Twitter screen name or hashtag you are attempting to use
189
 
190
- **Error:**
191
  Over capacity
192
 
193
  **Causes:**
194
- - Twitters servers are over capacity so the API is unusable. This will correct itself after some time
195
 
196
- **Error:**
197
  Connection timed out after 10000 milliseconds
198
 
199
  **Causes:**
@@ -203,7 +210,7 @@ Connection timed out after 10000 milliseconds
203
 
204
  **#1 - Your Twitter access tokens might not be valid**
205
 
206
- The easiest way to verify this is by going back to the Settings page for the Custom Twitter Feeds plugin and clicking the big blue button on the "Configure" tab to get new Twitter access tokens. If you haven't set up your own Twitter App, the only way to use the Custom Twitter Feeds plugin is to click the big blue button to get a Twitter access token and Twitter access token secret that is compatible with the default Twitter client used by Smash Balloon.
207
 
208
  **#2 - You have checked the box to use your own Twitter app information but one or more of the fields are incorrect**
209
 
@@ -211,22 +218,35 @@ All four fields, consumer token, consumer secret, access token, and access token
211
 
212
  **#3 - You may need to raise the number of tweets to retrieve**
213
 
214
- Navigate to the type of Twitter feed you are trying to display on twitter.com. For example, if you are displaying a feed from the screenname "smashballoon", go to https://twitter.com/smashballoon. Make sure there are tweets visible. Then click on the link "Tweets & replies". If there are a more recent replies than original tweets, there may be too many tweets being filtered out to display any. Replies are removed by default. You can raise the number of tweets to retrieve initially by going to the Custom Twitter Feed Settings page, "Customize" tab, and navigating to the "Advanced" area. Then raise the "Tweet Multiplier" and test to see if your Twitter feed now displays tweets.
215
 
216
  If you're still having trouble displaying your Tweets after trying the common issues above then please [contact support](https://smashballoon.com/custom-twitter-feeds/support/) for assistance.
217
 
 
 
 
 
218
  == Screenshots ==
219
 
220
- 1. Default Custom Twitter Feeds plugin styling
221
- 2. Custom Twitter Feeds plugin Settings pages
 
 
 
 
 
222
 
223
  == Changelog ==
 
 
 
 
224
  = 1.2.7 =
225
  * New: Added screen reader labels for improved accessibility
226
  * Fix: Bug with "persistent" cache duplicating tweets
227
 
228
  = 1.2.6 =
229
- * Fix: Hashtag feeds now work for hashtags beginning with a number e.g. #1august
230
  * Fix: Added a workaround for a minor formatting issue caused by some themes
231
 
232
  = 1.2.5 =
@@ -236,13 +256,13 @@ If you're still having trouble displaying your Tweets after trying the common is
236
 
237
  = 1.2.4 =
238
  * Fix: Custom date format not working in settings area
239
- * Fix: Avatars would disappear from the feed in Firefox for certain accounts
240
  * Fix: Changed http: links to https:
241
- * Fix: Fixed retweets always being included in persistent caches during the initial tweet retrieval.
242
 
243
  = 1.2.3 =
244
  * Fix: Fix php warning when no media in tweets under certain circumstances
245
- * Fix: Missing "alt" attributes for avatars
246
 
247
  = 1.2.2 =
248
  * Fix: Fixed an issue with include/exclude string to array conversion warning
@@ -252,16 +272,16 @@ If you're still having trouble displaying your Tweets after trying the common is
252
  * Fix: Fixed an issue where a small line was added to quoted tweets in retweets that have no media
253
 
254
  = 1.2 =
255
- * New: The plugin now uses persistent tweet caching for hashtag feeds. By default, when displaying hashtag feed Twitter only returns Tweets from the last 7 days, but the persistent cache now allows you to display these Tweets indefinitely.
256
  * New: Tweets with media will have an icon and label that links to the tweet on twitter.com
257
- * Fix: Fixed an issue with checkbox settings being changed unintentionally after obtaining a new access token
258
 
259
  = 1.1.8 =
260
- * Tweak: Updated plugin links for new WordPress.org repo
261
  * Fix: Minor bug fixes
262
 
263
  = 1.1.7 =
264
- * Fix: Fixed an issue with the Twitter Access Token and Secrets not automatically being saved when initially obtaining them
265
  * Fix: Fixed an issue with some customization settings not saving occasionally
266
 
267
  = 1.1.6 =
@@ -270,7 +290,7 @@ If you're still having trouble displaying your Tweets after trying the common is
270
 
271
  = 1.1.5 =
272
  * Fix: Fixed a rare issue when loading more Tweets
273
- * Fix: When there is no bio text in the header then the screenname text is now automatically centered vertically
274
 
275
  = 1.1.4 =
276
  * Fix: Fixed an issue with some setting checkboxes
@@ -278,7 +298,7 @@ If you're still having trouble displaying your Tweets after trying the common is
278
  * Tested with the upcoming WordPress 4.6 update
279
 
280
  = 1.1.3 =
281
- * Fix: Prevented any duplicate Tweets from being shown
282
  * Fix: Fixed a rare issue where a couple of settings weren't being saved successfully
283
 
284
  = 1.1.2 =
@@ -286,7 +306,7 @@ If you're still having trouble displaying your Tweets after trying the common is
286
  * Fix: Minor bug fixes
287
 
288
  = 1.1.1 =
289
- * Fix: Added SSL support for avatar images so https version is used
290
  * Fix: Fixed an issue with the "hours" custom text string displaying the "minutes" text instead
291
 
292
  = 1.1 =
5
  Tags: Twitter, Twitter feed, Tweets, Twitter widget, Custom Twitter Feed
6
  Requires at least: 3.0
7
  Tested up to: 4.9
8
+ Stable tag: 1.2.8
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
12
+ Custom Twitter Feeds allows you to display completely customizable Twitter feeds of a user timeline, home timeline, or hashtag on your website.
13
 
14
  == Description ==
15
+ Display **completely customizable**, **responsive** and **search engine crawlable** versions of your Twitter feed on your website. Completely match the look and feel of your site with tons of customization options!
16
 
17
  = Features =
18
  * **Completely Customizable** - by default inherits your theme's styles
19
  * Twitter feed content is **crawlable by search engines** adding SEO value to your site
20
  * **Completely responsive and mobile optimized** - works on any screen size
21
  * Display tweets from any user, your own Twitter account and those you follow, or from a specific hashtag
22
+ * Display **multiple feeds** from different Twitter users on multiple pages or widgets
23
+ * Post caching means that your Twitter feed loads **lightning fast** and minimizes Twitter API requests
24
  * **Infinitely load more** of your Tweets with the 'Load More' button
25
  * Built-in easy to use "Custom Twitter Feeds" Widget
26
  * Fully internationalized and translatable into any language
27
  * Display a beautiful header at the top of your Twitter feed
28
+ * Enter your own custom CSS or JavaScript for even deeper customization
29
 
30
  For simple step-by-step directions on how to set up the Custom Twitter Feeds plugin please refer to our [setup guide](http://smashballoon.com/custom-twitter-feeds/free/ 'Custom Twitter Feeds setup guide').
31
 
43
  [View the reviews](https://wordpress.org/support/plugin/custom-twitter-feeds/reviews/) to see what other users are saying about the Custom Twitter Feeds plugin.
44
 
45
  = Feedback or Support =
46
+ We're dedicated to providing the most robust and well supported Twitter feed plugin in the world, so if you have an issue or any feedback on how to improve the plugin then please [let us know](https://smashballoon.com/custom-twitter-feeds/support/ 'Twitter Feed Support').
47
 
48
  If you like the plugin then please consider leaving a review, as it really helps to support the plugin. If you have an issue then please allow us to help you fix it before leaving a review. Just [let us know](https://smashballoon.com/custom-twitter-feeds/support/ 'Twitter Feed Support') what the problem is and we'll get back to you right away.
49
 
58
 
59
  *Thanks again, Craig!*" - [@kcwebguy](https://wordpress.org/support/topic/amazing-support-and-a-great-twitter-plugin/)
60
 
61
+ "***At last a configurable Feed that WORKS!** - I have messed with Twitter feeds on sites so many times only to be frustrated. This Plugin is the best I have tried. Stable, configurable and not too hefty a drag on performance. Well done!* - [@mikemac67](https://wordpress.org/support/topic/at-last-a-configurable-feed-that-works/)
62
+
63
+ "***Everything you'll need in a Twitter feed plugin** - We've tried a few Twitter feed plugins across a bunch of our sites, and this one is now our go-to favorite. Most of the others we've tried have either styling or performance issues, but we've been using this plugin for a few months now, and it's been perfect. There are tons of customization options, the feed looks great, and... it works!*
64
+
65
+ *Kudos to the SmashBalloon team on a well supported, tightly developed, feature-packed WordPress Plugin.* - [@laymanlab](https://wordpress.org/support/topic/everything-youll-need-in-a-twitter-feed-plugin/)
66
+
67
  = Pro Version =
68
  We recently released a [Pro version](http://smashballoon.com/custom-twitter-feeds/ 'Custom Twitter Feeds Pro') which includes some awesome additional features:
69
 
71
  * Display **photos**, **videos**, and **gifs** and view them in a **popup lightbox** directly on your site
72
  * Multi-column **Masonry layout** [demo](http://smashballoon.com/custom-twitter-feeds/demo/masonry 'Custom Twitter Feeds Pro Masonry Demo')
73
  * Allow **filtering** of user timelines include/exclude any/all keywords/hashtags
74
+ * Customizable **Carousels** and **Slideshows**
75
  * Fully functional **search endpoint**
76
  * Display Tweets you're mentioned in
77
  * Tweet-specific **moderation system**
78
+ * Visual **Twitter cards** displayed with links which support them
79
  * Include **Tweet replies** (in reply to tweets)
80
+ * **Combine multiple feeds** into one
81
+ * **Autoload more Tweets** when scrolling
82
 
83
  Try the Pro version [demo here](http://smashballoon.com/custom-twitter-feeds/demo 'Custom Twitter Feeds Pro Demo')
84
 
95
 
96
  The Custom Twitter Feeds plugin is brand new and so we're currently working on improving our documentation for it. If you have an issue or question please submit a support ticket and we'll get back to you as soon as we can.
97
 
98
+ 1) Once you've installed the Custom Twitter Feeds plugin click on the "Twitter Feeds" item in your WordPress menu
99
 
100
  2) Click on the large blue Twitter login button to get your Twitter Access Token and Twitter Secret. Note; if you have your own Twitter Developer App set up then you can enter your Twitter information manually by enabling the checkbox below the Twitter login button.
101
 
165
 
166
  You can see the demo of the Custom Twitter Feeds Pro version [here](https://smashballoon.com/custom-twitter-feeds/demo/), and a video screencast [here](https://smashballoon.com/custom-twitter-feeds/#watch-video).
167
 
168
+ = I'm receiving an error message when trying to display my Twitter feed =
 
 
169
 
170
  If you receive an error message when trying to display your Twitter Feed then you can use the error reference below to diagnose the issue and find the relevant solution.
171
 
172
+ **Twitter Error:**
173
  Could not authenticate you
174
 
175
  **Causes:**
176
  - You may be using Twitter access tokens that are not valid - See #1 below
177
  - You checked the box to enter your own Twitter app information, but one or more of the fields are incorrect - See #2 below
178
 
179
+ **Twitter Error:**
180
  Invalid or expired token
181
 
182
  **Causes:**
183
  - You may not have entered your Twitter access tokens or they are not valid - See #1 below
184
 
185
+ **Twitter Error:**
186
  Unable to load tweets (with no other explanation)
187
 
188
  **Causes:**
189
  - You may need to raise the number of tweets to retrieve and display in your Twitter feed - See #3 below
190
 
191
+ **Twitter Error:**
192
+ Sorry, that Twitter page does not exist
193
 
194
  **Causes:**
195
  - There may be a typo in the Twitter screen name or hashtag you are attempting to use
196
 
197
+ **Twitter Error:**
198
  Over capacity
199
 
200
  **Causes:**
201
+ - Twitter's servers are over capacity so the API is unusable. This will correct itself after some time.
202
 
203
+ **Twitter Error:**
204
  Connection timed out after 10000 milliseconds
205
 
206
  **Causes:**
210
 
211
  **#1 - Your Twitter access tokens might not be valid**
212
 
213
+ The easiest way to verify this is by going back to the Settings page for the Custom Twitter Feeds plugin and clicking the big blue Twitter login button on the "Configure" tab to get new Twitter access tokens. If you haven't set up your own Twitter App, the only way to use the Custom Twitter Feeds plugin is to click the big blue button to get a Twitter access token and Twitter access token secret that is compatible with the default Twitter client used by Smash Balloon.
214
 
215
  **#2 - You have checked the box to use your own Twitter app information but one or more of the fields are incorrect**
216
 
218
 
219
  **#3 - You may need to raise the number of tweets to retrieve**
220
 
221
+ Navigate to the type of Twitter feed you are trying to display on twitter.com. For example, if you are displaying a Twitter feed from the screenname "smashballoon", go to https://twitter.com/smashballoon. Make sure there are tweets visible. Then click on the link "Tweets & replies". If there are a more recent replies than original tweets, there may be too many tweets being filtered out to display any. Twitter replies are removed by default. You can raise the number of tweets to retrieve initially by going to the Custom Twitter Feed Settings page, "Customize" tab, and navigating to the "Advanced" area. Then raise the "Tweet Multiplier" and test to see if your Twitter feed now displays tweets.
222
 
223
  If you're still having trouble displaying your Tweets after trying the common issues above then please [contact support](https://smashballoon.com/custom-twitter-feeds/support/) for assistance.
224
 
225
+ = Why do you guys love providing support so much? =
226
+
227
+ Not many developers love providing support, but we're a rare breed here at Smash Balloon. We take pride in the fact that you've chosen to use our plugin and want to help you with any issues you might have using it. It brings us joy to see our plugins out there in the wild making a difference on people's websites and we love interacting with any and all of our users! If you have a question or issue just let us know, we'll get back to you in no time to help!
228
+
229
  == Screenshots ==
230
 
231
+ 1. By default the plugin inherits styles from your theme
232
+ 2. Display multiple Twitter feeds and customize each one
233
+ 3. Custom Twitter Feeds Settings pages
234
+ 4. Built in customization settings make customizing your feed easy
235
+ 5. Additional styling options are built into the plugin
236
+ 6. Use handy shortcode options to customize individual feeds
237
+ 7. To display a feed just copy and paste the shortcode into a widget or page
238
 
239
  == Changelog ==
240
+ = 1.2.8 =
241
+ * Fix: "Preserve settings on uninstall" setting not working correctly
242
+ * Fix: Clear cache button would not clear all caches in some situations
243
+
244
  = 1.2.7 =
245
  * New: Added screen reader labels for improved accessibility
246
  * Fix: Bug with "persistent" cache duplicating tweets
247
 
248
  = 1.2.6 =
249
+ * Fix: Twitter hashtag feeds now work for hashtags beginning with a number e.g. #1august
250
  * Fix: Added a workaround for a minor formatting issue caused by some themes
251
 
252
  = 1.2.5 =
256
 
257
  = 1.2.4 =
258
  * Fix: Custom date format not working in settings area
259
+ * Fix: Twitter avatars would disappear from the feed in Firefox for certain accounts
260
  * Fix: Changed http: links to https:
261
+ * Fix: Fixed retweets always being included in persistent caches during the initial tweet retrieval
262
 
263
  = 1.2.3 =
264
  * Fix: Fix php warning when no media in tweets under certain circumstances
265
+ * Fix: Missing "alt" attributes for Twitter avatars
266
 
267
  = 1.2.2 =
268
  * Fix: Fixed an issue with include/exclude string to array conversion warning
272
  * Fix: Fixed an issue where a small line was added to quoted tweets in retweets that have no media
273
 
274
  = 1.2 =
275
+ * New: The plugin now uses persistent tweet caching for Twitter hashtag feeds. By default, when displaying hashtag feed Twitter only returns Tweets from the last 7 days, but the persistent cache now allows you to display these Tweets indefinitely.
276
  * New: Tweets with media will have an icon and label that links to the tweet on twitter.com
277
+ * Fix: Fixed an issue with checkbox settings being changed unintentionally after obtaining a new Twitter access token
278
 
279
  = 1.1.8 =
280
+ * Tweak: Updated Custom Twitter Feed plugin links for new WordPress.org repo
281
  * Fix: Minor bug fixes
282
 
283
  = 1.1.7 =
284
+ * Fix: Fixed an issue with the Twitter Access Token and Twitter Secrets not automatically being saved when initially obtaining them
285
  * Fix: Fixed an issue with some customization settings not saving occasionally
286
 
287
  = 1.1.6 =
290
 
291
  = 1.1.5 =
292
  * Fix: Fixed a rare issue when loading more Tweets
293
+ * Fix: When there is no bio text in the header then the Twitter screenname text is now automatically centered vertically
294
 
295
  = 1.1.4 =
296
  * Fix: Fixed an issue with some setting checkboxes
298
  * Tested with the upcoming WordPress 4.6 update
299
 
300
  = 1.1.3 =
301
+ * Fix: Prevented any duplicate Twitter Tweets from being shown
302
  * Fix: Fixed a rare issue where a couple of settings weren't being saved successfully
303
 
304
  = 1.1.2 =
306
  * Fix: Minor bug fixes
307
 
308
  = 1.1.1 =
309
+ * Fix: Added SSL support for Twitter avatar images so https version is used
310
  * Fix: Fixed an issue with the "hours" custom text string displaying the "minutes" text instead
311
 
312
  = 1.1 =
css/ctf-admin-styles.css CHANGED
@@ -297,7 +297,6 @@
297
  }
298
  #ctf-admin .ctf_pro,
299
  #ctf-admin .ctf_pro label,
300
- #ctf-admin .ctf_pro .ctf-tooltip-link,
301
  #ctf_admin .ctf_pro input{
302
  color: #999 !important;
303
  }
@@ -375,6 +374,21 @@
375
  -o-transition: all 0.1s ease-in-out;
376
  transition: all 0.1s ease-in-out;
377
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
378
  #ctf-admin .ctf-success{
379
  font-size: 14px;
380
  }
297
  }
298
  #ctf-admin .ctf_pro,
299
  #ctf-admin .ctf_pro label,
 
300
  #ctf_admin .ctf_pro input{
301
  color: #999 !important;
302
  }
374
  -o-transition: all 0.1s ease-in-out;
375
  transition: all 0.1s ease-in-out;
376
  }
377
+ #ctf-admin .ctf-pro-options,
378
+ #ctf-admin .ctf-pro-options label{
379
+ color: #999 !important;
380
+ }
381
+ #ctf-admin .ctf-shortcode_table tr.ctf-pro-options{
382
+ background: #eacccc;
383
+ }
384
+ #ctf-admin .ctf-pro-options label,
385
+ #ctf-admin .ctf-pro-options .ctf_shortcode {
386
+ color: #999 !important;
387
+ }
388
+ #ctf-admin .ctf_pro .ctf-tooltip-link,
389
+ #ctf-admin .ctf-pro-options .ctf-tooltip-link {
390
+ color: #aaa !important;
391
+ }
392
  #ctf-admin .ctf-success{
393
  font-size: 14px;
394
  }
css/ctf-styles.css CHANGED
@@ -429,8 +429,8 @@
429
  -o-transition: background 0.1s ease-in-out;
430
  transition: background 0.1s ease-in-out;
431
  }
432
- #ctf .ctf-tweet-text-media-wrap i,
433
- #ctf .ctf-quoted-tweet-text-media-wrap i{
434
  padding-left: 3px;
435
  }
436
  #ctf .ctf-tweet-text-media-wrap:hover,
429
  -o-transition: background 0.1s ease-in-out;
430
  transition: background 0.1s ease-in-out;
431
  }
432
+ #ctf .ctf-tweet-text-media-wrap .fa,
433
+ #ctf .ctf-quoted-tweet-text-media-wrap .fa{
434
  padding-left: 3px;
435
  }
436
  #ctf .ctf-tweet-text-media-wrap:hover,
custom-twitter-feed.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Custom Twitter Feeds
4
  Plugin URI: http://smashballoon.com/custom-twitter-feeds
5
  Description: Customizable Twitter feeds for your website
6
- Version: 1.2.7
7
  Author: Smash Balloon
8
  Author URI: http://smashballoon.com/
9
  Text Domain: custom-twitter-feeds
@@ -24,7 +24,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24
  */
25
 
26
  define( 'CTF_URL', plugin_dir_path( __FILE__ ) );
27
- define( 'CTF_VERSION', '1.2.7' );
28
  define( 'CTF_TITLE', 'Custom Twitter Feeds' );
29
  define( 'CTF_JS_URL', plugins_url( '/js/ctf-scripts.js?ver=' . CTF_VERSION , __FILE__ ) );
30
  define( 'OAUTH_PROCESSOR_URL', 'https://smashballoon.com/ctf-at-retriever/?return_uri=' );
@@ -124,6 +124,12 @@ function ctf_get_more_posts() {
124
  add_action( 'wp_ajax_nopriv_ctf_get_more_posts', 'ctf_get_more_posts' );
125
  add_action( 'wp_ajax_ctf_get_more_posts', 'ctf_get_more_posts' );
126
 
 
 
 
 
 
 
127
  /**
128
  * the html output is controlled by the user selecting which portions of tweets to show
129
  *
@@ -246,27 +252,42 @@ add_action( 'wp_ajax_ctf_auto_save_tokens', 'ctf_auto_save_tokens' );
246
  * @return mixed bool whether or not it was successful
247
  */
248
  function ctf_clear_cache() {
249
- if ( current_user_can( 'edit_posts' ) ) {
250
- //Delete all transients
251
- global $wpdb;
252
- $table_name = $wpdb->prefix . "options";
253
- $result = $wpdb->query("
254
- DELETE
255
- FROM $table_name
256
- WHERE `option_name` LIKE ('%\_transient\_ctf\_%')
257
- ");
258
- $wpdb->query("
259
- DELETE
260
- FROM $table_name
261
- WHERE `option_name` LIKE ('%\_transient\_timeout\_ctf\_%')
262
- ");
263
- return $result;
264
- } else {
265
- return false;
266
- }
267
  }
268
  add_action( 'ctf_cron_job', 'ctf_clear_cache' );
269
- add_action( 'wp_ajax_ctf_clear_cache', 'ctf_clear_cache' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
270
 
271
  /**
272
  * manually clears the persistent cached tweets
@@ -366,7 +387,7 @@ function ctf_admin_scripts_and_styles() {
366
  )
367
  );
368
  wp_enqueue_style( 'wp-color-picker' );
369
- wp_enqueue_script(array('wp-color-picker'));
370
  }
371
  add_action( 'admin_enqueue_scripts', 'ctf_admin_scripts_and_styles' );
372
 
3
  Plugin Name: Custom Twitter Feeds
4
  Plugin URI: http://smashballoon.com/custom-twitter-feeds
5
  Description: Customizable Twitter feeds for your website
6
+ Version: 1.2.8
7
  Author: Smash Balloon
8
  Author URI: http://smashballoon.com/
9
  Text Domain: custom-twitter-feeds
24
  */
25
 
26
  define( 'CTF_URL', plugin_dir_path( __FILE__ ) );
27
+ define( 'CTF_VERSION', '1.2.8' );
28
  define( 'CTF_TITLE', 'Custom Twitter Feeds' );
29
  define( 'CTF_JS_URL', plugins_url( '/js/ctf-scripts.js?ver=' . CTF_VERSION , __FILE__ ) );
30
  define( 'OAUTH_PROCESSOR_URL', 'https://smashballoon.com/ctf-at-retriever/?return_uri=' );
124
  add_action( 'wp_ajax_nopriv_ctf_get_more_posts', 'ctf_get_more_posts' );
125
  add_action( 'wp_ajax_ctf_get_more_posts', 'ctf_get_more_posts' );
126
 
127
+ function ctf_plugin_action_links( $links ) {
128
+ $links[] = '<a href="'. esc_url( get_admin_url( null, 'admin.php?page=custom-twitter-feeds' ) ) .'">' . __( 'Settings' ) . '</a>';
129
+ return $links;
130
+ }
131
+ add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'ctf_plugin_action_links' );
132
+
133
  /**
134
  * the html output is controlled by the user selecting which portions of tweets to show
135
  *
252
  * @return mixed bool whether or not it was successful
253
  */
254
  function ctf_clear_cache() {
255
+
256
+ //Delete all transients
257
+ global $wpdb;
258
+ $table_name = $wpdb->prefix . "options";
259
+ $result = $wpdb->query("
260
+ DELETE
261
+ FROM $table_name
262
+ WHERE `option_name` LIKE ('%\_transient\_ctf\_%')
263
+ ");
264
+ $wpdb->query("
265
+ DELETE
266
+ FROM $table_name
267
+ WHERE `option_name` LIKE ('%\_transient\_timeout\_ctf\_%')
268
+ ");
269
+
 
 
 
270
  }
271
  add_action( 'ctf_cron_job', 'ctf_clear_cache' );
272
+
273
+ function ctf_clear_cache_admin() {
274
+
275
+ //Delete all transients
276
+ global $wpdb;
277
+ $table_name = $wpdb->prefix . "options";
278
+ $result = $wpdb->query("
279
+ DELETE
280
+ FROM $table_name
281
+ WHERE `option_name` LIKE ('%\_transient\_ctf\_%')
282
+ ");
283
+ $wpdb->query("
284
+ DELETE
285
+ FROM $table_name
286
+ WHERE `option_name` LIKE ('%\_transient\_timeout\_ctf\_%')
287
+ ");
288
+
289
+ }
290
+ add_action( 'wp_ajax_ctf_clear_cache_admin', 'ctf_clear_cache_admin' );
291
 
292
  /**
293
  * manually clears the persistent cached tweets
387
  )
388
  );
389
  wp_enqueue_style( 'wp-color-picker' );
390
+ wp_enqueue_script( 'wp-color-picker' );
391
  }
392
  add_action( 'admin_enqueue_scripts', 'ctf_admin_scripts_and_styles' );
393
 
inc/CtfAdmin.php CHANGED
@@ -576,7 +576,7 @@ class CtfAdmin
576
  'section' => 'ctf_options_advanced', // matches the section name
577
  'option' => 'ctf_options', // matches the options name
578
  'class' => '',
579
- 'whatis' => "Checking this box will make all Search and Hashtag feeds have a permanent cache saved in the database by default of up to 150 tweets. Tweets will be available for the feed even after the 7 day limit though numbers of retweets and likes will not update."
580
  ));
581
 
582
  /**
576
  'section' => 'ctf_options_advanced', // matches the section name
577
  'option' => 'ctf_options', // matches the options name
578
  'class' => '',
579
+ 'whatis' => "Checking this box will make all Search and Hashtag feeds have a permanent cache saved in the database by default of up to 150 tweets. Tweets will be available for the feed even after the 7 day limit though numbers of retweets and likes will not update"
580
  ));
581
 
582
  /**
inc/CtfFeed.php CHANGED
@@ -1178,7 +1178,7 @@ class CtfFeed
1178
  $ctf_header_html .= '</span>';
1179
 
1180
  if ( $tweet_set[0]['user']['verified'] == 1 ) {
1181
- $ctf_header_html .= '<span class="ctf-verified"><i class="fa fa-check-circle"></i></span>';
1182
  }
1183
 
1184
  $ctf_header_html .= '<span class="ctf-header-follow"><i class="fa fa-twitter" aria-hidden="true"></i>Follow</span>';
@@ -1190,7 +1190,7 @@ class CtfFeed
1190
 
1191
  $ctf_header_html .= '</div>';
1192
  $ctf_header_html .= '<div class="ctf-header-img">';
1193
- $ctf_header_html .= '<div class="ctf-header-img-hover"><i class="fa fa-twitter"></i></div>';
1194
  $ctf_header_html .= '<img src="' . $tweet_set[0]['user']['profile_image_url_https'] . '" alt="' . $tweet_set[0]['user']['name'] . '" width="48" height="48">';
1195
  $ctf_header_html .= '</div>';
1196
  $ctf_header_html .= '</a>';
@@ -1212,7 +1212,7 @@ class CtfFeed
1212
  $ctf_header_html .= '</div>';
1213
  $ctf_header_html .= '<div class="ctf-header-img">';
1214
  $ctf_header_html .= '<div class="ctf-header-generic-icon">';
1215
- $ctf_header_html .= '<i class="fa fa-twitter"></i>';
1216
  $ctf_header_html .= '</div>';
1217
  $ctf_header_html .= '</div>';
1218
  $ctf_header_html .= '</a>';
@@ -1286,13 +1286,13 @@ class CtfFeed
1286
  switch ( $quoted_media[0]['type'] ) {
1287
  case 'video':
1288
  case 'animated_gif':
1289
- $quoted_media_text .= '<i style="padding-right: 5px;" class="fa fa-file-video-o ctf-tweet-text-media"></i>';
1290
  break;
1291
  default:
1292
  if ( $quoted_media_count > 1 ) {
1293
- $quoted_media_text .= '<span class="ctf-quoted-tweet-text-media-wrap">' . $quoted_media_count . '<i style="padding-right: 5px;" class="fa fa-picture-o ctf-tweet-text-media"></i></span>';
1294
  } else {
1295
- $quoted_media_text .= '<span class="ctf-quoted-tweet-text-media-wrap"><i style="padding-right: 5px;" class="fa fa-picture-o ctf-tweet-text-media"></i></span>';
1296
  }
1297
  break;
1298
  }
@@ -1313,13 +1313,13 @@ class CtfFeed
1313
  switch ( $post_media[0]['type'] ) {
1314
  case 'video':
1315
  case 'animated_gif':
1316
- $post_media_text .= '<i style="padding-right: 5px;" class="fa fa-file-video-o ctf-tweet-text-media"></i>';
1317
  break;
1318
  default:
1319
  if ( $post_media_count > 1 ) {
1320
- $post_media_text .= $post_media_count . '<i style="padding-right: 5px;" class="fa fa-picture-o ctf-tweet-text-media"></i>';
1321
  } else {
1322
- $post_media_text .= '<i style="padding-right: 5px;" class="fa fa-picture-o ctf-tweet-text-media"></i>';
1323
  }
1324
  break;
1325
  }
@@ -1332,7 +1332,7 @@ class CtfFeed
1332
 
1333
  if ( isset( $retweeter ) && ctf_show( 'retweeter', $feed_options ) ) {
1334
  $tweet_html .= '<div class="ctf-context">';
1335
- $tweet_html .= '<a href="https://twitter.com/intent/user?screen_name=' . $retweeter['screen_name'] . '" target="_blank" class="ctf-retweet-icon"><i class="fa fa-retweet"></i><span class="ctf-screenreader">Retweet on Twitter</span></a>';
1336
  $tweet_html .= '<a href="https://twitter.com/' . $retweeter['screen_name'] . '" target="_blank" class="ctf-retweet-text" style="' . $feed_options['authortextsize'] . $feed_options['authortextweight'] . $feed_options['textcolor'] . '">' . $retweeter['name'] . ' ' . $feed_options['retweetedtext'] . '</a>';
1337
  $tweet_html .= '</div>';
1338
  }
@@ -1350,7 +1350,7 @@ class CtfFeed
1350
  if ( ctf_show( 'author', $feed_options ) ) {
1351
  $tweet_html .= '<a href="https://twitter.com/' . $post['user']['screen_name'] . '" target="_blank" class="ctf-author-name" style="' . $feed_options['authortextsize'] . $feed_options['authortextweight'] . $feed_options['textcolor'] . '">' . $post['user']['name'] . '</a>';
1352
  if ( $post['user']['verified'] == 1 ) {
1353
- $tweet_html .= '<span class="ctf-verified" ><i class="fa fa-check-circle" ></i ></span>';
1354
  }
1355
  $tweet_html .= '<a href="https://twitter.com/' . $post['user']['screen_name'] . '" class="ctf-author-screenname" target="_blank" style="' . $feed_options['authortextsize'] . $feed_options['authortextweight'] . $feed_options['textcolor'] . '">@' . $post['user']['screen_name'] . '</a>';
1356
  $tweet_html .= '<span class="ctf-screename-sep">&middot;</span>';
@@ -1394,7 +1394,7 @@ class CtfFeed
1394
  $tweet_html .= '<span class="ctf-quoted-author-name">' . $quoted['user']['name'] . '</span>';
1395
 
1396
  if ($quoted['user']['verified'] == 1) {
1397
- $tweet_html .= '<span class="ctf-quoted-verified"><i class="fa fa-check-circle" ></i></span>';
1398
  } // user is verified
1399
 
1400
  $tweet_html .= '<span class="ctf-quoted-author-screenname">@' . $quoted['user']['screen_name'] . '</span>';
@@ -1405,13 +1405,13 @@ class CtfFeed
1405
 
1406
  $tweet_html .= '<div class="ctf-tweet-actions">';
1407
  if ( ctf_show( 'actions', $feed_options ) ) {
1408
- $tweet_html .= '<a href="https://twitter.com/intent/tweet?in_reply_to=' . $post['id_str'] . '&related=' . $post['user']['screen_name'] . '" class="ctf-reply" target="_blank" style="' . $feed_options['iconsize'] . $feed_options['iconcolor'] . '"><i class="fa fa-reply"></i><span class="ctf-screenreader">Reply on Twitter</span></a>';
1409
- $tweet_html .= '<a href="https://twitter.com/intent/retweet?tweet_id=' . $post['id_str'] . '&related=' . $post['user']['screen_name'] . '" class="ctf-retweet" target="_blank" style="' . $feed_options['iconsize'] . $feed_options['iconcolor'] . '"><i class="fa fa-retweet"></i><span class="ctf-screenreader">Retweet on Twitter</span><span class="ctf-action-count ctf-retweet-count">';
1410
  if ( $post['retweet_count'] > 0 ) {
1411
  $tweet_html .= $post['retweet_count'];
1412
  }
1413
  $tweet_html .= '</span></a>';
1414
- $tweet_html .= '<a href="https://twitter.com/intent/like?tweet_id=' . $post['id_str'] . '&related=' . $post['user']['screen_name'] . '" class="ctf-like" target="_blank" style="' . $feed_options['iconsize'] . $feed_options['iconcolor'] . '"><i class="fa fa-heart"></i><span class="ctf-screenreader">Like on Twitter</span><span class="ctf-action-count ctf-favorite-count">';
1415
  if ( $post['favorite_count'] > 0 ) {
1416
  $tweet_html .= $post['favorite_count'];
1417
  }
1178
  $ctf_header_html .= '</span>';
1179
 
1180
  if ( $tweet_set[0]['user']['verified'] == 1 ) {
1181
+ $ctf_header_html .= '<span class="ctf-verified"><i class="fa fa-check-circle" aria-hidden="true"></i></span>';
1182
  }
1183
 
1184
  $ctf_header_html .= '<span class="ctf-header-follow"><i class="fa fa-twitter" aria-hidden="true"></i>Follow</span>';
1190
 
1191
  $ctf_header_html .= '</div>';
1192
  $ctf_header_html .= '<div class="ctf-header-img">';
1193
+ $ctf_header_html .= '<div class="ctf-header-img-hover"><i class="fa fa-twitter" aria-hidden="true"></i></div>';
1194
  $ctf_header_html .= '<img src="' . $tweet_set[0]['user']['profile_image_url_https'] . '" alt="' . $tweet_set[0]['user']['name'] . '" width="48" height="48">';
1195
  $ctf_header_html .= '</div>';
1196
  $ctf_header_html .= '</a>';
1212
  $ctf_header_html .= '</div>';
1213
  $ctf_header_html .= '<div class="ctf-header-img">';
1214
  $ctf_header_html .= '<div class="ctf-header-generic-icon">';
1215
+ $ctf_header_html .= '<i class="fa fa-twitter" aria-hidden="true"></i>';
1216
  $ctf_header_html .= '</div>';
1217
  $ctf_header_html .= '</div>';
1218
  $ctf_header_html .= '</a>';
1286
  switch ( $quoted_media[0]['type'] ) {
1287
  case 'video':
1288
  case 'animated_gif':
1289
+ $quoted_media_text .= '<i style="padding-right: 5px;" class="fa fa-file-video-o ctf-tweet-text-media" aria-hidden="true"></i>';
1290
  break;
1291
  default:
1292
  if ( $quoted_media_count > 1 ) {
1293
+ $quoted_media_text .= '<span class="ctf-quoted-tweet-text-media-wrap">' . $quoted_media_count . '<i style="padding-right: 5px;" class="fa fa-picture-o ctf-tweet-text-media" aria-hidden="true"></i></span>';
1294
  } else {
1295
+ $quoted_media_text .= '<span class="ctf-quoted-tweet-text-media-wrap"><i style="padding-right: 5px;" class="fa fa-picture-o ctf-tweet-text-media" aria-hidden="true"></i></span>';
1296
  }
1297
  break;
1298
  }
1313
  switch ( $post_media[0]['type'] ) {
1314
  case 'video':
1315
  case 'animated_gif':
1316
+ $post_media_text .= '<i style="padding-right: 5px;" class="fa fa-file-video-o ctf-tweet-text-media" aria-hidden="true"></i>';
1317
  break;
1318
  default:
1319
  if ( $post_media_count > 1 ) {
1320
+ $post_media_text .= $post_media_count . '<i style="padding-right: 5px;" class="fa fa-picture-o ctf-tweet-text-media" aria-hidden="true"></i>';
1321
  } else {
1322
+ $post_media_text .= '<i style="padding-right: 5px;" class="fa fa-picture-o ctf-tweet-text-media" aria-hidden="true"></i>';
1323
  }
1324
  break;
1325
  }
1332
 
1333
  if ( isset( $retweeter ) && ctf_show( 'retweeter', $feed_options ) ) {
1334
  $tweet_html .= '<div class="ctf-context">';
1335
+ $tweet_html .= '<a href="https://twitter.com/intent/user?screen_name=' . $retweeter['screen_name'] . '" target="_blank" class="ctf-retweet-icon"><i class="fa fa-retweet" aria-hidden="true"></i><span class="ctf-screenreader">Retweet on Twitter</span></a>';
1336
  $tweet_html .= '<a href="https://twitter.com/' . $retweeter['screen_name'] . '" target="_blank" class="ctf-retweet-text" style="' . $feed_options['authortextsize'] . $feed_options['authortextweight'] . $feed_options['textcolor'] . '">' . $retweeter['name'] . ' ' . $feed_options['retweetedtext'] . '</a>';
1337
  $tweet_html .= '</div>';
1338
  }
1350
  if ( ctf_show( 'author', $feed_options ) ) {
1351
  $tweet_html .= '<a href="https://twitter.com/' . $post['user']['screen_name'] . '" target="_blank" class="ctf-author-name" style="' . $feed_options['authortextsize'] . $feed_options['authortextweight'] . $feed_options['textcolor'] . '">' . $post['user']['name'] . '</a>';
1352
  if ( $post['user']['verified'] == 1 ) {
1353
+ $tweet_html .= '<span class="ctf-verified" ><i class="fa fa-check-circle" aria-hidden="true"></i></span>';
1354
  }
1355
  $tweet_html .= '<a href="https://twitter.com/' . $post['user']['screen_name'] . '" class="ctf-author-screenname" target="_blank" style="' . $feed_options['authortextsize'] . $feed_options['authortextweight'] . $feed_options['textcolor'] . '">@' . $post['user']['screen_name'] . '</a>';
1356
  $tweet_html .= '<span class="ctf-screename-sep">&middot;</span>';
1394
  $tweet_html .= '<span class="ctf-quoted-author-name">' . $quoted['user']['name'] . '</span>';
1395
 
1396
  if ($quoted['user']['verified'] == 1) {
1397
+ $tweet_html .= '<span class="ctf-quoted-verified"><i class="fa fa-check-circle" aria-hidden="true"></i></span>';
1398
  } // user is verified
1399
 
1400
  $tweet_html .= '<span class="ctf-quoted-author-screenname">@' . $quoted['user']['screen_name'] . '</span>';
1405
 
1406
  $tweet_html .= '<div class="ctf-tweet-actions">';
1407
  if ( ctf_show( 'actions', $feed_options ) ) {
1408
+ $tweet_html .= '<a href="https://twitter.com/intent/tweet?in_reply_to=' . $post['id_str'] . '&related=' . $post['user']['screen_name'] . '" class="ctf-reply" target="_blank" style="' . $feed_options['iconsize'] . $feed_options['iconcolor'] . '"><i class="fa fa-reply" aria-hidden="true"></i><span class="ctf-screenreader">Reply on Twitter</span></a>';
1409
+ $tweet_html .= '<a href="https://twitter.com/intent/retweet?tweet_id=' . $post['id_str'] . '&related=' . $post['user']['screen_name'] . '" class="ctf-retweet" target="_blank" style="' . $feed_options['iconsize'] . $feed_options['iconcolor'] . '"><i class="fa fa-retweet" aria-hidden="true"></i><span class="ctf-screenreader">Retweet on Twitter</span><span class="ctf-action-count ctf-retweet-count">';
1410
  if ( $post['retweet_count'] > 0 ) {
1411
  $tweet_html .= $post['retweet_count'];
1412
  }
1413
  $tweet_html .= '</span></a>';
1414
+ $tweet_html .= '<a href="https://twitter.com/intent/like?tweet_id=' . $post['id_str'] . '&related=' . $post['user']['screen_name'] . '" class="ctf-like" target="_blank" style="' . $feed_options['iconsize'] . $feed_options['iconcolor'] . '"><i class="fa fa-heart" aria-hidden="true"></i><span class="ctf-screenreader">Like on Twitter</span><span class="ctf-action-count ctf-favorite-count">';
1415
  if ( $post['favorite_count'] > 0 ) {
1416
  $tweet_html .= $post['favorite_count'];
1417
  }
inc/admin-hooks.php CHANGED
@@ -105,6 +105,19 @@ function ctf_return_style_quick_links() {
105
 
106
  add_action( 'ctf_admin_endpoints', 'ctf_add_mentionstimeline_options', 10, 1 );
107
  function ctf_add_mentionstimeline_options( $admin ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  $admin->create_settings_field( array(
109
  'name' => 'mentionstimeline',
110
  'title' => '<label></label>', // label for the input field
@@ -118,6 +131,19 @@ function ctf_add_mentionstimeline_options( $admin ) {
118
  'has_input' => false,
119
  'has_replies' => false
120
  ));
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  }
122
 
123
  add_filter( 'ctf_admin_show_hide_list', 'ctf_show_hide_list', 10, 1 );
@@ -128,112 +154,200 @@ function ctf_show_hide_list( $show_hide_list ) {
128
  return $show_hide_list;
129
  }
130
 
131
- add_action( 'ctf_admin_style_option', 'ctf_add_masonry_autoscroll_options', 5, 1 );
132
- function ctf_add_masonry_autoscroll_options( $admin )
133
- {
134
- // custom in reply to text
135
- $admin->create_settings_field( array(
136
- 'name' => 'inreplytotext',
137
- 'title' => '<label for="ctf_inreplytotext">Translation for "In reply to"</label><code class="ctf_shortcode">inreplytotext
138
- Eg: inreplytotext="Als Antwort an"</code>', // label for the input field
139
- 'callback' => 'default_text', // name of the function that outputs the html
140
- 'page' => 'ctf_options_text', // matches the section name
141
- 'section' => 'ctf_options_text', // matches the section name
142
- 'option' => 'ctf_options', // matches the options name
143
- 'class' => 'default-text ctf_pro', // class for the wrapper and input field
144
- 'whatis' => 'This will replace the default text displayed for "In reply to"',
145
- 'default' => 'In reply to'// "what is this?" text
146
- ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
 
148
- add_settings_section(
149
- 'ctf_options_masonry', // matches the section name
150
- '<span class="ctf_pro_header">Masonry Columns</span><p class="ctf_pro_section_note"><a href="https://smashballoon.com/custom-twitter-feeds/" target="_blank">Upgrade to Pro to enable Masonry layouts</a></p>',
151
- array( $admin, 'general_section_text' ), // callback function to explain the section
152
- 'ctf_options_masonry' // matches the section name
153
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
 
155
- // masonry default
156
- // $admin->create_settings_field( array(
157
- // 'name' => 'masonry',
158
- // 'title' => '<label for="ctf_masonry">Set Masonry Columns as Default</label><code class="ctf_shortcode">masonry
159
- // Eg: masonry=true</code>', // label for the input field
160
- // 'callback' => 'default_checkbox', // name of the function that outputs the html
161
- // 'page' => 'ctf_options_masonry', // matches the section name
162
- // 'section' => 'ctf_options_masonry', // matches the section name
163
- // 'option' => 'ctf_options', // matches the options name
164
- // 'class' => 'ctf_pro',
165
- // 'whatis' => "This will make every Twitter feed show as masonry style columns by default"
166
- // ));
167
-
168
- // // masonry desktop columns
169
- // $admin->create_settings_field( array(
170
- // 'name' => 'masonrycols',
171
- // 'title' => '<label for="ctf_masonrycols">Desktop Columns</label><code class="ctf_shortcode">masonrycols
172
- // Eg: masonrycols=5</code>', // label for the input field
173
- // 'callback' => 'default_select', // name of the function that outputs the html
174
- // 'page' => 'ctf_options_masonry', // matches the section name
175
- // 'section' => 'ctf_options_masonry', // matches the section name
176
- // 'option' => 'ctf_options', // matches the options name
177
- // 'class' => 'ctf_pro', // class for the wrapper and input field
178
- // 'fields' => array(
179
- // 0 => array( '3', 3 ),
180
- // 1 => array( '4', 4 ),
181
- // 2 => array( '5', 5 ),
182
- // 3 => array( '6', 6 )
183
- // ),
184
- // 'whatis' => "Number of vertical columns the masonry feed will use when the screen is viewed on wide screens" // what is this? text
185
- // ) );
186
-
187
- // // masonry mobile columns
188
- // $admin->create_settings_field( array(
189
- // 'name' => 'masonrymobilecols',
190
- // 'title' => '<label for="ctf_masonrymobilecols">Mobile Columns</label><code class="ctf_shortcode">masonrymobilecols
191
- // Eg: masonrymobilecols=2</code>', // label for the input field
192
- // 'callback' => 'default_select', // name of the function that outputs the html
193
- // 'page' => 'ctf_options_masonry', // matches the section name
194
- // 'section' => 'ctf_options_masonry', // matches the section name
195
- // 'option' => 'ctf_options', // matches the options name
196
- // 'class' => 'ctf_pro', // class for the wrapper and input field
197
- // 'fields' => array(
198
- // 0 => array( '1', 1 ),
199
- // 1 => array( '2', 2 )
200
- // ),
201
- // 'whatis' => "Number of vertical columns the masonry feed will use when the screen is viewed on small screens" // what is this? text
202
- // ) );
203
-
204
- add_settings_section(
205
- 'ctf_options_autoscroll', // matches the section name
206
- '<span class="ctf_pro_header">Autoscroll Loading</span><p class="ctf_pro_section_note"><a href="https://smashballoon.com/custom-twitter-feeds/" target="_blank">Upgrade to Pro to enable Autoscroll loading</a></p>',
207
- array( $admin, 'general_section_text' ), // callback function to explain the section
208
- 'ctf_options_autoscroll' // matches the section name
209
- );
 
 
210
 
211
- // // autoscroll default
212
- // $admin->create_settings_field( array(
213
- // 'name' => 'autoscroll',
214
- // 'title' => '<label for="ctf_autoscroll">Set Load More on Scroll as Default</label><code class="ctf_shortcode">autoscroll
215
- // Eg: autoscroll=true</code>', // label for the input field
216
- // 'callback' => 'default_checkbox', // name of the function that outputs the html
217
- // 'page' => 'ctf_options_autoscroll', // matches the section name
218
- // 'section' => 'ctf_options_autoscroll', // matches the section name
219
- // 'option' => 'ctf_options', // matches the options name
220
- // 'class' => 'ctf_pro',
221
- // 'whatis' => "This will make every Twitter feed load more Tweets as the user gets to the bottom of the feed"
222
- // ));
223
-
224
- // // masonry mobile columns
225
- // $admin->create_settings_field( array(
226
- // 'name' => 'autoscrolldistance',
227
- // 'title' => '<label for="ctf_masonrymobilecols">Auto Scroll Trigger Distance</label><code class="ctf_shortcode">autoscrolldistance
228
- // Eg: autoscrolldistance=2</code>', // label for the input field
229
- // 'callback' => 'default_text', // name of the function that outputs the html
230
- // 'page' => 'ctf_options_autoscroll', // matches the section name
231
- // 'section' => 'ctf_options_autoscroll', // matches the section name
232
- // 'option' => 'ctf_options', // matches the options name
233
- // 'class' => 'default-text ctf_pro', // class for the wrapper and input field
234
- // 'whatis' => 'This is the distance in pixels from the bottom of the page the user must scroll to to trigger the loading of more tweets',
235
- // 'default' => '200',// "what is this?" text
236
- // ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
  }
238
 
239
  add_action( 'ctf_admin_customize_option', 'ctf_add_customize_general_options', 20, 1 );
@@ -257,79 +371,6 @@ function ctf_add_customize_general_options( $admin ) {
257
  add_action( 'ctf_admin_customize_option', 'ctf_add_filter_options', 10, 1 );
258
  function ctf_add_filter_options( $admin ) {
259
 
260
- add_settings_section(
261
- 'ctf_options_filter', // matches the section name
262
- '<span class="ctf_pro_header">Moderation</span><p class="ctf_pro_section_note"><a href="https://smashballoon.com/custom-twitter-feeds/" target="_blank">Upgrade to Pro to enable Tweet Moderation</a></p>',
263
- array( $admin, 'general_section_text' ), // callback function to explain the section
264
- 'ctf_options_filter' // matches the section name
265
- );
266
-
267
- // includewords
268
- // $admin->create_settings_field( array(
269
- // 'name' => 'includewords',
270
- // 'title' => '<label for="ctf_includewords">Show Tweets containing these words or hashtags</label><code class="ctf_shortcode">includewords
271
- // Eg: includewords="#puppy,#cute"</code>', // label for the input field
272
- // 'callback' => 'default_text', // name of the function that outputs the html
273
- // 'page' => 'ctf_options_filter', // matches the section name
274
- // 'section' => 'ctf_options_filter', // matches the section name
275
- // 'option' => 'ctf_options', // matches the options name
276
- // 'class' => 'large-text ctf_pro', // class for the wrapper and input field
277
- // 'default' => '',
278
- // 'example' => '"includewords" separate words by comma'
279
- // ));
280
-
281
- // // excludewords
282
- // $admin->create_settings_field( array(
283
- // 'name' => 'excludewords',
284
- // 'title' => '<label for="ctf_excludewords">Remove Tweets containing these words or hashtags</label><code class="ctf_shortcode">excludewords
285
- // Eg: excludewords="#ugly,#bad"</code>', // label for the input field
286
- // 'callback' => 'default_text', // name of the function that outputs the html
287
- // 'page' => 'ctf_options_filter', // matches the section name
288
- // 'section' => 'ctf_options_filter', // matches the section name
289
- // 'option' => 'ctf_options', // matches the options name
290
- // 'class' => 'large-text ctf_pro', // class for the wrapper and input field
291
- // 'default' => '',
292
- // 'example' => '"excludewords" separate words by comma'
293
- // ));
294
-
295
- // // operator
296
- // $admin->create_settings_field( array(
297
- // 'name' => 'filteroperator',
298
- // 'title' => '', // label for the input field
299
- // 'callback' => 'ctf_filter_operator', // name of the function that outputs the html
300
- // 'page' => 'ctf_options_filter', // matches the section name
301
- // 'section' => 'ctf_options_filter', // matches the section name
302
- // 'option' => 'ctf_options', // matches the options name
303
- // 'class' => 'ctf_pro', // class for the wrapper and input field
304
- // ));
305
-
306
- // add_settings_field(
307
- // 'filteroperator',
308
- // '',
309
- // 'ctf_filter_operator',
310
- // 'ctf_options_filter',
311
- // 'ctf_options_filter',
312
- // array(
313
- // 'option' => 'ctf_options',
314
- // 'class' => 'ctf_pro'
315
- // )
316
- // );
317
-
318
- // add_settings_field(
319
- // 'remove_by_id',
320
- // '<label for="ctf_remove_by_id">Hide Specific Tweets</label>',
321
- // 'ctf_remove_by_id',
322
- // 'ctf_options_filter',
323
- // 'ctf_options_filter',
324
- // array(
325
- // 'option' => 'ctf_options',
326
- // 'extra' => 'separate IDs by comma',
327
- // 'name' => 'remove_by_id',
328
- // 'whatis' => 'These are the specific ID numbers associated with a tweet. (link to example)',
329
- // 'class' => 'ctf_pro'
330
- // )
331
- // );
332
-
333
  add_settings_field(
334
  'clear_tc_cache_button',
335
  '<label for="ctf_clear_tc_cache_button">Clear Twitter Card Cache</label>',
@@ -346,7 +387,7 @@ function ctf_remove_by_id( $args ) {
346
  ?>
347
  <textarea name="<?php echo $args['option'].'['.$args['name'].']'; ?>" id="ctf_<?php echo $args['name']; ?>" style="width: 70%;" rows="3"><?php esc_attr_e( stripslashes( $option_string ) ); ?></textarea>
348
  <?php if ( isset( $args['extra'] ) ) : ?><p><?php _e( $args['extra'], 'custom-twitter-feeds' ); ?>
349
- <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
350
  <span class="ctf-tooltip ctf-more-info"><?php _e( $args['whatis'], 'custom-twitter-feeds' ); ?>.</span>
351
  </p> <?php endif; ?>
352
  <?php
@@ -355,7 +396,7 @@ function ctf_remove_by_id( $args ) {
355
  function ctf_clear_tc_cache_button() {
356
  ?>
357
  <input id="ctf-clear-tc-cache" class="button-secondary" style="margin-top: 1px;" type="submit" value="<?php esc_attr_e( 'Clear Twitter Cards' ); ?>" />
358
- <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
359
  <p class="ctf-tooltip ctf-more-info"><?php _e( 'Clicking this button will clear all cached data for your links that have Twitter Cards', 'custom-twitter-feeds' ); ?>.</p>
360
  <?php
361
  }
@@ -385,7 +426,7 @@ function ctf_filter_operator( $args ) {
385
  of the "excludewords"
386
  </p>
387
  <?php if ( isset( $args['whatis'] ) ) : ?>
388
- <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
389
  <p class="ctf-tooltip ctf-more-info"><?php _e( $args['whatis'], 'custom-twitter-feeds' ); ?>.</p>
390
  <?php endif; ?>
391
  <?php
@@ -394,6 +435,9 @@ function ctf_filter_operator( $args ) {
394
  add_action( 'ctf_admin_add_settings_sections_to_customize', 'ctf_add_masonry_autoload_section_to_customize' );
395
  function ctf_add_masonry_autoload_section_to_customize() {
396
  ?>
 
 
 
397
  <a id="masonry"></a>
398
  <?php do_settings_sections( 'ctf_options_masonry' ); ?>
399
  <hr>
105
 
106
  add_action( 'ctf_admin_endpoints', 'ctf_add_mentionstimeline_options', 10, 1 );
107
  function ctf_add_mentionstimeline_options( $admin ) {
108
+ $admin->create_settings_field( array(
109
+ 'name' => 'search_pro',
110
+ 'title' => '<label></label>', // label for the input field
111
+ 'callback' => 'feed_settings_radio', // name of the function that outputs the html
112
+ 'page' => 'ctf_options_feed_settings', // matches the section name
113
+ 'section' => 'ctf_options_feed_settings', // matches the section name
114
+ 'option' => 'ctf_options', // matches the options name
115
+ 'class' => 'ctf-radio ctf_pro', // class for the wrapper and input field
116
+ 'whatis' => 'You can create search feeds which contain a large variety of different terms and operators, such as a combination of #hashtags, @mentions, words, or "phrases"', // what is this? text
117
+ 'label' => "Search",
118
+ 'has_input' => false,
119
+ 'has_replies' => false
120
+ ));
121
  $admin->create_settings_field( array(
122
  'name' => 'mentionstimeline',
123
  'title' => '<label></label>', // label for the input field
131
  'has_input' => false,
132
  'has_replies' => false
133
  ));
134
+ $admin->create_settings_field( array(
135
+ 'name' => 'lists',
136
+ 'title' => '<label></label>', // label for the input field
137
+ 'callback' => 'feed_settings_radio', // name of the function that outputs the html
138
+ 'page' => 'ctf_options_feed_settings', // matches the section name
139
+ 'section' => 'ctf_options_feed_settings', // matches the section name
140
+ 'option' => 'ctf_options', // matches the options name
141
+ 'class' => 'ctf-radio ctf_pro', // class for the wrapper and input field
142
+ 'whatis' => 'Enter the list ID of the list(s) you want to display. Use this FAQ to create a list on Twitter. Use the helper to find IDs', // what is this? text
143
+ 'label' => "Lists",
144
+ 'has_input' => false,
145
+ 'has_replies' => false
146
+ ));
147
  }
148
 
149
  add_filter( 'ctf_admin_show_hide_list', 'ctf_show_hide_list', 10, 1 );
154
  return $show_hide_list;
155
  }
156
 
157
+ function ctf_pro_masonry_section() {
158
+ ?>
159
+ <p class="ctf_pro_section_note"><a href="https://smashballoon.com/custom-twitter-feeds/" target="_blank">Upgrade to Pro to enable Masonry layouts</a></p>
160
+ <span><a href="javascript:void(0);" class="button button-secondary ctf-show-pro"><b>+</b> Show Pro Options</a></span>
161
+
162
+ <div class="ctf-pro-options">
163
+ <table class="form-table"><tbody><tr><th scope="row"><label for="ctf_masonry" title="Click for shortcode option">Set Masonry Columns as Default</label><code class="ctf_shortcode">masonry
164
+ Eg: masonry=true</code></th><td> <input name="ctf_options[masonry]" id="ctf_masonry" type="checkbox" disabled>
165
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
166
+ <p class="ctf-tooltip ctf-more-info">This will make every Twitter feed show as masonry style columns by default.</p>
167
+ </td></tr><tr><th scope="row"><label for="ctf_masonrycols">Desktop Columns</label><code class="ctf_shortcode">masonrycols
168
+ Eg: masonrycols=5</code></th><td> <select name="ctf_options[masonrycols]" id="ctf_masonrycols" class="" disabled>
169
+ <option value="2" id="ctf-masonrycols" class="">2</option>
170
+ <option value="3" id="ctf-masonrycols" class="">3</option>
171
+ <option value="4" id="ctf-masonrycols" class="">4</option>
172
+ <option value="5" id="ctf-masonrycols" class="">5</option>
173
+ <option value="6" id="ctf-masonrycols" class="">6</option>
174
+ </select>
175
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
176
+ <p class="ctf-tooltip ctf-more-info">Number of vertical columns the masonry feed will use when the screen is viewed on wide screens.</p>
177
+ </td></tr><tr><th scope="row"><label for="ctf_masonrymobilecols">Mobile Columns</label><code class="ctf_shortcode">masonrymobilecols
178
+ Eg: masonrymobilecols=2</code></th><td> <select name="ctf_options[masonrymobilecols]" id="ctf_masonrymobilecols" class="" disabled>
179
+ <option value="1" id="ctf-masonrymobilecols" class="">1</option>
180
+ <option value="2" id="ctf-masonrymobilecols" class="">2</option>
181
+ </select>
182
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
183
+ <p class="ctf-tooltip ctf-more-info">Number of vertical columns the masonry feed will use when the screen is viewed on small screens.</p>
184
+ </td></tr></tbody></table>
185
+ </div>
186
+ <div style="height: 18px;"></div>
187
+ <?php
188
+ }
189
 
190
+ function ctf_pro_carousel_section() {
191
+ ?>
192
+ <p class="ctf_pro_section_note"><a href="https://smashballoon.com/custom-twitter-feeds/" target="_blank">Upgrade to Pro to enable Carousel</a></p>
193
+ <span><a href="javascript:void(0);" class="button button-secondary ctf-show-pro"><b>+</b> Show Pro Options</a></span>
194
+
195
+ <div class="ctf-pro-options">
196
+ <table class="form-table"><tbody><tr><th scope="row"><label for="ctf_carousel" title="Click for shortcode option">Set Carousel as Default<code class="ctf_shortcode_symbol">[]</code></label><code class="ctf_shortcode">carousel
197
+ Eg: carousel=true</code></th><td> <input name="ctf_options[carousel]" id="ctf_carousel" type="checkbox">
198
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
199
+ <p class="ctf-tooltip ctf-more-info">This will make every Twitter feed display in a carousel by default.</p>
200
+ </td></tr><tr><th scope="row"><label for="ctf_carouselcols">Desktop Columns</label><code class="ctf_shortcode">carouselcols
201
+ Eg: carouselcols=5</code></th><td> <select name="ctf_options[carouselcols]" id="ctf_carouselcols" class="" disabled>
202
+ <option value="1" id="ctf-carouselcols" class="">1</option>
203
+ <option value="2" id="ctf-carouselcols" class="">2</option>
204
+ <option value="3" id="ctf-carouselcols" class="">3</option>
205
+ <option value="4" id="ctf-carouselcols" class="">4</option>
206
+ <option value="5" id="ctf-carouselcols" class="">5</option>
207
+ <option value="6" id="ctf-carouselcols" class="">6</option>
208
+ </select>
209
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
210
+ <p class="ctf-tooltip ctf-more-info">Number of vertical columns the carousel feed will use when the screen is viewed on wide screens.</p>
211
+ </td></tr><tr><th scope="row"><label for="ctf_carouselmobilecols">Mobile Columns</label><code class="ctf_shortcode">carouselmobilecols
212
+ Eg: carouselmobilecols=2</code></th><td> <select name="ctf_options[carouselmobilecols]" id="ctf_carouselmobilecols" class="" disabled>
213
+ <option value="1" id="ctf-carouselmobilecols" class="">1</option>
214
+ <option value="2" id="ctf-carouselmobilecols" class="">2</option>
215
+ </select>
216
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
217
+ <p class="ctf-tooltip ctf-more-info">Number of vertical columns the carousel feed will use when the screen is viewed on small screens.</p>
218
+ </td></tr><tr><th scope="row"><label for="ctf_carouselarrows">Navigation Arrows</label><code class="ctf_shortcode">carouselarrows
219
+ Eg: carouselarrows=below</code></th><td> <select name="ctf_options[carouselarrows]" id="ctf_carouselarrows" class="" disabled>
220
+ <option value="onhover" id="ctf-carouselarrows" class="">Show on Hover</option>
221
+ <option value="below" id="ctf-carouselarrows" class="">Show below feed</option>
222
+ <option value="hide" id="ctf-carouselarrows" class="">Hide arrows</option>
223
+ </select>
224
+ </td></tr><tr><th scope="row"><label for="ctf_carouselpag">Show Pagination</label><code class="ctf_shortcode">carouselpag
225
+ Eg: carouselpag=true</code></th><td> <input name="ctf_options[carouselpag]" id="ctf_carouselpag" type="checkbox">
226
+ </td></tr><tr><th scope="row"><label for="ctf_carouselheight">Height of Carousel</label><code class="ctf_shortcode">carouselheight
227
+ Eg: carouselheight="auto"</code></th><td> <select name="ctf_options[carouselheight]" id="ctf_carouselheight" class="" disabled>
228
+ <option value="tallest" id="ctf-carouselheight" class="">Always set to tallest post</option>
229
+ <option value="clickexpand" id="ctf-carouselheight" class="">Set to shortest post, button to expand</option>
230
+ <option value="auto" id="ctf-carouselheight" class="">Automatically set to post height (forces single column)</option>
231
+ </select>
232
+ </td></tr><tr><th scope="row"><label for="ctf_carouselautoplay">Enable Autoplay</label><code class="ctf_shortcode">carouselautoplay
233
+ Eg: carouselautoplay=true</code></th><td> <input name="ctf_options[carouselautoplay]" id="ctf_carouselautoplay" type="checkbox" disabled>
234
+ </td></tr><tr class="default-text"><th scope="row"><label for="ctf_carouseltime">Autoplay interval Time</label><code class="ctf_shortcode">carouseltime
235
+ Eg: carouseltime=8000</code></th><td> <input name="ctf_options[carouseltime]" id="ctf_carouseltime" class="default-text" type="text" value="5000" disabled>
236
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
237
+ <p class="ctf-tooltip ctf-more-info">Time it takes for the carousel to change in milliseconds.</p>
238
+ </td></tr><tr class="default-text"><th scope="row"><label for="ctf_carouselloop">Loop Type</label><code class="ctf_shortcode">carouselloop
239
+ Eg: carouselloop=none</code></th><td> <select name="ctf_options[carouselloop]" id="ctf_carouselloop" class="default-text" disabled>
240
+ <option value="none" id="ctf-carouselloop" class="default-text">None</option>
241
+ <option value="infinite" id="ctf-carouselloop" class="default-text">Infinite</option>
242
+ <option value="rewind" id="ctf-carouselloop" class="default-text">Rewind</option>
243
+ </select>
244
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
245
+ <p class="ctf-tooltip ctf-more-info">This is where you can set what happens when the carousel reaches the last item.</p>
246
+ </td></tr></tbody></table>
247
+ </div>
248
+ <div style="height: 18px;"></div>
249
+ <?php
250
+ }
251
 
252
+ function ctf_pro_autoscroll_section() {
253
+ ?>
254
+ <p class="ctf_pro_section_note"><a href="https://smashballoon.com/custom-twitter-feeds/" target="_blank">Upgrade to Pro to enable Autoscroll loading</a></p>
255
+ <span><a href="javascript:void(0);" class="button button-secondary ctf-show-pro"><b>+</b> Show Pro Options</a></span>
256
+
257
+ <div class="ctf-pro-options">
258
+ <table class="form-table"><tbody><tr><th scope="row"><label for="ctf_autoscroll" title="Click for shortcode option">Set Load More on Scroll as Default</label><code class="ctf_shortcode">autoscroll
259
+ Eg: autoscroll=true</code></th><td> <input name="ctf_options[autoscroll]" id="ctf_autoscroll" type="checkbox" disabled>
260
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
261
+ <p class="ctf-tooltip ctf-more-info">This will make every Twitter feed load more Tweets as the user gets to the bottom of the feed.</p>
262
+ </td></tr><tr class="default-text"><th scope="row"><label for="ctf_autoscrolldistance">Auto Scroll Trigger Distance</label><code class="ctf_shortcode">autoscrolldistance
263
+ Eg: autoscrolldistance=2</code></th><td> <input name="ctf_options[autoscrolldistance]" id="ctf_autoscrolldistance" class="default-text" type="text" value="200" disabled>
264
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
265
+ <p class="ctf-tooltip ctf-more-info">This is the distance in pixels from the bottom of the page the user must scroll to to trigger the loading of more tweets.</p>
266
+ </td></tr></tbody></table>
267
+ </div>
268
+ <div style="height: 18px;"></div>
269
+ <?php
270
+ }
271
+
272
+ function ctf_pro_moderation_section() {
273
+ ?>
274
+ <p class="ctf_pro_section_note"><a href="https://smashballoon.com/custom-twitter-feeds/" target="_blank">Upgrade to Pro to enable Tweet moderation</a></p>
275
+ <span><a href="javascript:void(0);" class="button button-secondary ctf-show-pro"><b>+</b> Show Pro Options</a></span>
276
+
277
+ <div class="ctf-pro-options">
278
+ <table class="form-table"><tbody><tr class="large-text"><th scope="row"><label for="ctf_includewords" title="Click for shortcode option">Show Tweets containing these words or hashtags</label><code class="ctf_shortcode">includewords
279
+ Eg: includewords="#puppy,#cute"</code></th><td> <input name="ctf_options[includewords]" id="ctf_includewords" class="large-text" type="text" value="" disabled>
280
+ <span>"includewords" separate words by comma</span>
281
+ </td></tr><tr class="large-text"><th scope="row"><label for="ctf_excludewords">Remove Tweets containing these words or hashtags</label><code class="ctf_shortcode">excludewords
282
+ Eg: excludewords="#ugly,#bad"</code></th><td> <input name="ctf_options[excludewords]" id="ctf_excludewords" class="large-text" type="text" value="" disabled>
283
+ <span>"excludewords" separate words by comma</span>
284
+ </td></tr><tr><th scope="row"></th><td> <p>Show Tweets that contain
285
+ <select name="ctf_options[includeanyall]" id="ctf_includeanyall" disabled>
286
+ <option value="any" selected="selected">any</option>
287
+ <option value="all">all</option>
288
+ </select>
289
+ of the "includewords"
290
+ <select name="ctf_options[filterandor]" id="ctf_filterandor" disabled>
291
+ <option value="and" selected="selected">and</option>
292
+ <option value="or">or</option>
293
+ </select>
294
+ do not contain
295
+ <select name="ctf_options[excludeanyall]" id="ctf_excludeanyall" disabled>
296
+ <option value="any" selected="selected">any</option>
297
+ <option value="all">all</option>
298
+ </select>
299
+ of the "excludewords"
300
+ </p>
301
+ </td></tr><tr><th scope="row"><label for="ctf_remove_by_id">Hide Specific Tweets</label></th><td> <textarea name="ctf_options[remove_by_id]" id="ctf_remove_by_id" style="width: 70%;" rows="3" disabled></textarea>
302
+ <p>separate IDs by comma <a class="ctf-tooltip-link" href="JavaScript:void(0);"><i class="fa fa-question-circle" aria-hidden="true"></i></a>
303
+ <span class="ctf-tooltip ctf-more-info">These are the specific ID numbers associated with a tweet. You can find the ID of a Tweet by viewing the Tweet on Twitter and copy/pasting the ID number from the end of the URL.</span>
304
+ </p> </td></tr></tbody></table>
305
+ </div>
306
+ <div style="height: 18px;"></div>
307
+ <?php
308
+ }
309
 
310
+ add_action( 'ctf_admin_style_option', 'ctf_add_masonry_autoscroll_options', 5, 1 );
311
+ function ctf_add_masonry_autoscroll_options( $admin ) {
312
+ // custom in reply to text
313
+ $admin->create_settings_field( array(
314
+ 'name' => 'inreplytotext',
315
+ 'title' => '<label for="ctf_inreplytotext">Translation for "In reply to"</label><code class="ctf_shortcode">inreplytotext
316
+ Eg: inreplytotext="Als Antwort an"</code>', // label for the input field
317
+ 'callback' => 'default_text', // name of the function that outputs the html
318
+ 'page' => 'ctf_options_text', // matches the section name
319
+ 'section' => 'ctf_options_text', // matches the section name
320
+ 'option' => 'ctf_options', // matches the options name
321
+ 'class' => 'default-text ctf_pro', // class for the wrapper and input field
322
+ 'whatis' => 'This will replace the default text displayed for "In reply to"',
323
+ 'default' => 'In reply to'// "what is this?" text
324
+ ) );
325
+ add_settings_section(
326
+ 'ctf_options_carousel', // matches the section name
327
+ '<span class="ctf_pro_header">Carousel</span>',
328
+ 'ctf_pro_carousel_section', // callback function to explain the section
329
+ 'ctf_options_carousel' // matches the section name
330
+ );
331
+ add_settings_section(
332
+ 'ctf_options_masonry', // matches the section name
333
+ '<span class="ctf_pro_header">Masonry Columns</span>',
334
+ 'ctf_pro_masonry_section', // callback function to explain the section
335
+ 'ctf_options_masonry' // matches the section name
336
+ );
337
+
338
+ add_settings_section(
339
+ 'ctf_options_autoscroll', // matches the section name
340
+ '<span class="ctf_pro_header">Autoscroll Loading</span>',
341
+ 'ctf_pro_autoscroll_section', // callback function to explain the section
342
+ 'ctf_options_autoscroll' // matches the section name
343
+ );
344
+
345
+ add_settings_section(
346
+ 'ctf_options_filter', // matches the section name
347
+ '<span class="ctf_pro_header">Moderation</span>',
348
+ 'ctf_pro_moderation_section', // callback function to explain the section
349
+ 'ctf_options_filter' // matches the section name
350
+ );
351
  }
352
 
353
  add_action( 'ctf_admin_customize_option', 'ctf_add_customize_general_options', 20, 1 );
371
  add_action( 'ctf_admin_customize_option', 'ctf_add_filter_options', 10, 1 );
372
  function ctf_add_filter_options( $admin ) {
373
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
374
  add_settings_field(
375
  'clear_tc_cache_button',
376
  '<label for="ctf_clear_tc_cache_button">Clear Twitter Card Cache</label>',
387
  ?>
388
  <textarea name="<?php echo $args['option'].'['.$args['name'].']'; ?>" id="ctf_<?php echo $args['name']; ?>" style="width: 70%;" rows="3"><?php esc_attr_e( stripslashes( $option_string ) ); ?></textarea>
389
  <?php if ( isset( $args['extra'] ) ) : ?><p><?php _e( $args['extra'], 'custom-twitter-feeds' ); ?>
390
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><span class="fa fa-question-circle" aria-hidden="true"></span></a>
391
  <span class="ctf-tooltip ctf-more-info"><?php _e( $args['whatis'], 'custom-twitter-feeds' ); ?>.</span>
392
  </p> <?php endif; ?>
393
  <?php
396
  function ctf_clear_tc_cache_button() {
397
  ?>
398
  <input id="ctf-clear-tc-cache" class="button-secondary" style="margin-top: 1px;" type="submit" value="<?php esc_attr_e( 'Clear Twitter Cards' ); ?>" />
399
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><span class="fa fa-question-circle" aria-hidden="true"></span></a>
400
  <p class="ctf-tooltip ctf-more-info"><?php _e( 'Clicking this button will clear all cached data for your links that have Twitter Cards', 'custom-twitter-feeds' ); ?>.</p>
401
  <?php
402
  }
426
  of the "excludewords"
427
  </p>
428
  <?php if ( isset( $args['whatis'] ) ) : ?>
429
+ <a class="ctf-tooltip-link" href="JavaScript:void(0);"><span class="fa fa-question-circle" aria-hidden="true"></span></a>
430
  <p class="ctf-tooltip ctf-more-info"><?php _e( $args['whatis'], 'custom-twitter-feeds' ); ?>.</p>
431
  <?php endif; ?>
432
  <?php
435
  add_action( 'ctf_admin_add_settings_sections_to_customize', 'ctf_add_masonry_autoload_section_to_customize' );
436
  function ctf_add_masonry_autoload_section_to_customize() {
437
  ?>
438
+ <a id="carousel"></a>
439
+ <?php do_settings_sections( 'ctf_options_carousel' ); ?>
440
+ <hr>
441
  <a id="masonry"></a>
442
  <?php do_settings_sections( 'ctf_options_masonry' ); ?>
443
  <hr>
inc/notices.php CHANGED
@@ -50,7 +50,7 @@ function ctf_rating_notice_html() {
50
  <a class='ctf_notice_dismiss' href='" .esc_url( add_query_arg( 'ctf_ignore_rating_notice_nag', 'later' ) ). "'>Ask Me Later</a>
51
  </p>
52
  </div>
53
- <a class='ctf_notice_close' href='" .esc_url( add_query_arg( 'ctf_ignore_rating_notice_nag', '1' ) ). "'><i class='fa fa-close'></i></a>
54
  </div>
55
  ");
56
 
50
  <a class='ctf_notice_dismiss' href='" .esc_url( add_query_arg( 'ctf_ignore_rating_notice_nag', 'later' ) ). "'>Ask Me Later</a>
51
  </p>
52
  </div>
53
+ <a class='ctf_notice_close' href='" .esc_url( add_query_arg( 'ctf_ignore_rating_notice_nag', '1' ) ). "'><span class='fa fa-close'></span></a>
54
  </div>
55
  ");
56
 
js/ctf-admin-scripts.js CHANGED
@@ -29,8 +29,8 @@ jQuery(document).ready(function($){
29
  just_tokens: true
30
  },
31
  success: function (data) {
32
- $('#ctf_access_token').after('<span class="ctf-success"><i class="fa fa-check-circle"></i> saved</span>');
33
- $('#ctf_access_token_secret').after('<span class="ctf-success"><i class="fa fa-check-circle"></i> saved</span>');
34
  }
35
  });
36
  }
@@ -224,12 +224,12 @@ jQuery(document).ready(function($){
224
  url : ctf.ajax_url,
225
  type : 'post',
226
  data : {
227
- action : 'ctf_clear_cache'
228
  },
229
  success : function(data) {
230
  $ctfClearCacheButton.prop('disabled',false);
231
  if(!data===false) {
232
- $ctfClearCacheButton.after('<i id="ctf-clear-cache-success" class="fa fa-check-circle ctf-success"></i>');
233
  } else {
234
  $ctfClearCacheButton.after('<span>error</span>');
235
  }
@@ -255,7 +255,7 @@ jQuery(document).ready(function($){
255
  success : function(data) {
256
  $ctfClearPersistentCacheButton.prop('disabled',false);
257
  if(!data===false) {
258
- $ctfClearPersistentCacheButton.after('<i id="ctf-clear-cache-success" class="fa fa-check-circle ctf-success"></i>');
259
  } else {
260
  $ctfClearPersistentCacheButton.after('<span>error</span>');
261
  }
@@ -272,4 +272,12 @@ jQuery(document).ready(function($){
272
  });
273
  $('#ctf_include_twittercards, #ctf_include_media, #ctf_include_replied_to').attr('disabled', 'true').removeAttr('checked').next('label').css('color', '#999').after(ctfUpgradeNote);
274
 
 
 
 
 
 
 
 
 
275
  });
29
  just_tokens: true
30
  },
31
  success: function (data) {
32
+ $('#ctf_access_token').after('<span class="ctf-success"><span class="fa fa-check-circle"></span> saved</span>');
33
+ $('#ctf_access_token_secret').after('<span class="ctf-success"><span class="fa fa-check-circle"></span> saved</span>');
34
  }
35
  });
36
  }
224
  url : ctf.ajax_url,
225
  type : 'post',
226
  data : {
227
+ action : 'ctf_clear_cache_admin'
228
  },
229
  success : function(data) {
230
  $ctfClearCacheButton.prop('disabled',false);
231
  if(!data===false) {
232
+ $ctfClearCacheButton.after('<span id="ctf-clear-cache-success" class="fa fa-check-circle ctf-success"></span>');
233
  } else {
234
  $ctfClearCacheButton.after('<span>error</span>');
235
  }
255
  success : function(data) {
256
  $ctfClearPersistentCacheButton.prop('disabled',false);
257
  if(!data===false) {
258
+ $ctfClearPersistentCacheButton.after('<span id="ctf-clear-cache-success" class="fa fa-check-circle ctf-success"></span>');
259
  } else {
260
  $ctfClearPersistentCacheButton.after('<span>error</span>');
261
  }
272
  });
273
  $('#ctf_include_twittercards, #ctf_include_media, #ctf_include_replied_to').attr('disabled', 'true').removeAttr('checked').next('label').css('color', '#999').after(ctfUpgradeNote);
274
 
275
+ $('#ctf-admin .ctf-show-pro').closest('span').next('.ctf-pro-options').hide();
276
+ $('#ctf-admin .ctf-show-pro').click(function() {
277
+ if ($(this).closest('span').next('.ctf-pro-options').is(':visible')) {
278
+ $(this).closest('span').next('.ctf-pro-options').hide();
279
+ } else {
280
+ $(this).closest('span').next('.ctf-pro-options').show();
281
+ }
282
+ });
283
  });
uninstall.php CHANGED
@@ -4,8 +4,8 @@ if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
4
  }
5
 
6
  //If the user is preserving the settings then don't delete them
7
- $options = get_option( 'ctf_configure' );
8
- $ctf_preserve_settings = $options[ 'preserve_settings' ];
9
 
10
  // allow the user to preserve their settings in case they are upgrading
11
  if ( ! $ctf_preserve_settings ) {
4
  }
5
 
6
  //If the user is preserving the settings then don't delete them
7
+ $options = get_option( 'ctf_options' );
8
+ $ctf_preserve_settings = isset( $options[ 'preserve_settings' ] ) ? $options[ 'preserve_settings' ] : false;
9
 
10
  // allow the user to preserve their settings in case they are upgrading
11
  if ( ! $ctf_preserve_settings ) {
views/admin/configure.php CHANGED
@@ -9,4 +9,4 @@ settings_errors(); ?>
9
  <?php do_settings_sections('ctf_options_feed_settings'); // matches the section name ?>
10
  <p class="submit"><input class="button-primary" type="submit" name="save" value="<?php esc_attr_e( 'Save Changes' ); ?>" /></p>
11
  </form>
12
- <p><i class="fa fa-chevron-circle-right" aria-hidden="true"></i>&nbsp; <?php _e('Next Step: <a href="?page=custom-twitter-feeds&tab=customize">Customize your Feed</a>'); ?></p>
9
  <?php do_settings_sections('ctf_options_feed_settings'); // matches the section name ?>
10
  <p class="submit"><input class="button-primary" type="submit" name="save" value="<?php esc_attr_e( 'Save Changes' ); ?>" /></p>
11
  </form>
12
+ <p><span class="fa fa-chevron-circle-right" aria-hidden="true"></span>&nbsp; <?php _e('Next Step: <a href="?page=custom-twitter-feeds&tab=customize">Customize your Feed</a>'); ?></p>
views/admin/customize.php CHANGED
@@ -31,4 +31,4 @@ settings_errors(); ?>
31
  <?php do_settings_sections('ctf_options_advanced'); // matches the section name ?>
32
  <p class="submit"><input class="button-primary" type="submit" name="save" value="<?php esc_attr_e( 'Save Changes' ); ?>" /></p>
33
  </form>
34
- <p><i class="fa fa-chevron-circle-right" aria-hidden="true"></i>&nbsp; <?php _e('<b>Next Step:</b> <a href="?page=custom-twitter-feeds&tab=style">Style your Feed</a>'); ?></p>
31
  <?php do_settings_sections('ctf_options_advanced'); // matches the section name ?>
32
  <p class="submit"><input class="button-primary" type="submit" name="save" value="<?php esc_attr_e( 'Save Changes' ); ?>" /></p>
33
  </form>
34
+ <p><span class="fa fa-chevron-circle-right" aria-hidden="true"></span>&nbsp; <?php _e('<b>Next Step:</b> <a href="?page=custom-twitter-feeds&tab=style">Style your Feed</a>'); ?></p>
views/admin/display.php CHANGED
@@ -243,4 +243,4 @@
243
 
244
  </tbody>
245
  </table>
246
- <p><i class="fa fa-question-circle" aria-hidden="true"></i>&nbsp; <?php _e('Need help? <a href="?page=custom-twitter-feeds&tab=support">Get Support</a>.'); ?></p>
243
 
244
  </tbody>
245
  </table>
246
+ <p><span class="fa fa-question-circle" aria-hidden="true"></span>&nbsp; <?php _e('Need help? <a href="?page=custom-twitter-feeds&tab=support">Get Support</a>.'); ?></p>
views/admin/main.php CHANGED
@@ -33,10 +33,10 @@
33
  }
34
  ?>
35
 
36
- <p><i class="fa fa-life-ring" aria-hidden="true"></i>&nbsp; <?php _e('Need help setting up the plugin? Check out our <a href="https://smashballoon.com/custom-twitter-feeds/free/" target="_blank">setup directions</a>', 'custom-twitter-feeds'); ?></p>
37
 
38
  <div class="ctf-quick-start">
39
- <h3><i class="fa fa-rocket" aria-hidden="true"></i>&nbsp; <?php _e( 'Display your feed', 'custom-twitter-feeds'); ?></h3>
40
  <p><?php _e( "Copy and paste this shortcode directly into the page, post or widget where you'd like to display the feed:", "custom-twitter-feeds" ); ?>
41
  <input type="text" value="[custom-twitter-feeds]" size="18" readonly="readonly" style="text-align: center;" onclick="this.focus();this.select()" title="<?php _e( 'To copy, click the field then press Ctrl + C (PC) or Cmd + C (Mac).', 'custom-twitter-feeds' ); ?>" /></p>
42
  <p><?php _e( "Find out how to display <a href='?page=custom-twitter-feeds&tab=display'>multiple feeds</a>.", "custom-twitter-feeds" ); ?></p>
33
  }
34
  ?>
35
 
36
+ <p><span class="fa fa-life-ring" aria-hidden="true"></span>&nbsp; <?php _e('Need help setting up the plugin? Check out our <a href="https://smashballoon.com/custom-twitter-feeds/free/" target="_blank">setup directions</a>', 'custom-twitter-feeds'); ?></p>
37
 
38
  <div class="ctf-quick-start">
39
+ <h3><span class="fa fa-rocket" aria-hidden="true"></span>&nbsp; <?php _e( 'Display your feed', 'custom-twitter-feeds'); ?></h3>
40
  <p><?php _e( "Copy and paste this shortcode directly into the page, post or widget where you'd like to display the feed:", "custom-twitter-feeds" ); ?>
41
  <input type="text" value="[custom-twitter-feeds]" size="18" readonly="readonly" style="text-align: center;" onclick="this.focus();this.select()" title="<?php _e( 'To copy, click the field then press Ctrl + C (PC) or Cmd + C (Mac).', 'custom-twitter-feeds' ); ?>" /></p>
42
  <p><?php _e( "Find out how to display <a href='?page=custom-twitter-feeds&tab=display'>multiple feeds</a>.", "custom-twitter-feeds" ); ?></p>
views/admin/style.php CHANGED
@@ -47,4 +47,4 @@ settings_errors(); ?>
47
  <?php do_action( 'ctf_admin_add_settings_sections_to_style' ); ?>
48
  <p class="submit"><input class="button-primary" type="submit" name="save" value="<?php esc_attr_e( 'Save Changes' ); ?>" /></p>
49
  </form>
50
- <p><i class="fa fa-chevron-circle-right" aria-hidden="true"></i>&nbsp; <?php _e('Next Step: <a href="?page=custom-twitter-feeds&tab=display">Display your Feed</a>'); ?></p>
47
  <?php do_action( 'ctf_admin_add_settings_sections_to_style' ); ?>
48
  <p class="submit"><input class="button-primary" type="submit" name="save" value="<?php esc_attr_e( 'Save Changes' ); ?>" /></p>
49
  </form>
50
+ <p><span class="fa fa-chevron-circle-right" aria-hidden="true"></span>&nbsp; <?php _e('Next Step: <a href="?page=custom-twitter-feeds&tab=display">Display your Feed</a>'); ?></p>
views/admin/support.php CHANGED
@@ -1,11 +1,11 @@
1
  <h3><?php _e( 'Need help?', 'custom-twitter-feeds' ); ?></h3>
2
 
3
- <p><i class="fa fa-life-ring" aria-hidden="true"></i>&nbsp; <?php _e( 'Check out our ', 'custom-twitter-feeds'); ?><a href="https://smashballoon.com/custom-twitter-feeds/docs/" target="_blank"><?php _e( 'setup directions', 'custom-twitter-feeds' ); ?></a> <?php _e( 'for a step-by-step guide on how to setup and use the plugin', 'custom-twitter-feeds' ); ?>.</p>
4
 
5
- <p><i class="fa fa-envelope" aria-hidden="true"></i>&nbsp; <?php _e( 'Have a problem? Submit a ', 'custom-twitter-feeds' ); ?><a href="https://smashballoon.com/custom-twitter-feeds/support/" target="_blank"><?php _e( 'support ticket', 'custom-twitter-feeds' ); ?></a> <?php _e( 'on our website', 'custom-twitter-feeds' ); ?>. <?php _e( 'Please include your <b>System Info</b> below with all support requests.', 'custom-twitter-feeds' ); ?></p>
6
 
7
  <br />
8
- <h3><?php _e('System Info', 'custom-twitter-feeds' ); ?> &nbsp; <i style="color: #666; font-size: 11px; font-weight: normal;"><?php _e( 'Click the text below to select all', 'custom-twitter-feeds' ); ?></i></h3>
9
 
10
  <textarea readonly="readonly" onclick="this.focus();this.select()" title="To copy, click the field then press Ctrl + C (PC) or Cmd + C (Mac)." style="width: 70%; height: 500px; white-space: pre; font-family: Menlo,Monaco,monospace;">
11
  ## SITE/SERVER INFO: ##
1
  <h3><?php _e( 'Need help?', 'custom-twitter-feeds' ); ?></h3>
2
 
3
+ <p><span class="fa fa-life-ring" aria-hidden="true"></span>&nbsp; <?php _e( 'Check out our ', 'custom-twitter-feeds'); ?><a href="https://smashballoon.com/custom-twitter-feeds/docs/" target="_blank"><?php _e( 'setup directions', 'custom-twitter-feeds' ); ?></a> <?php _e( 'for a step-by-step guide on how to setup and use the plugin', 'custom-twitter-feeds' ); ?>.</p>
4
 
5
+ <p><span class="fa fa-envelope" aria-hidden="true"></span>&nbsp; <?php _e( 'Have a problem? Submit a ', 'custom-twitter-feeds' ); ?><a href="https://smashballoon.com/custom-twitter-feeds/support/" target="_blank"><?php _e( 'support ticket', 'custom-twitter-feeds' ); ?></a> <?php _e( 'on our website', 'custom-twitter-feeds' ); ?>. <?php _e( 'Please include your <b>System Info</b> below with all support requests.', 'custom-twitter-feeds' ); ?></p>
6
 
7
  <br />
8
+ <h3><?php _e('System Info', 'custom-twitter-feeds' ); ?> &nbsp; <span style="color: #666; font-size: 11px; font-weight: normal;"><?php _e( 'Click the text below to select all', 'custom-twitter-feeds' ); ?></span></h3>
9
 
10
  <textarea readonly="readonly" onclick="this.focus();this.select()" title="To copy, click the field then press Ctrl + C (PC) or Cmd + C (Mac)." style="width: 70%; height: 500px; white-space: pre; font-family: Menlo,Monaco,monospace;">
11
  ## SITE/SERVER INFO: ##