SEO SQUIRRLY™ - Version 9.1.19

Version Description

  • 07/08/2019 =
  • Update - Added refresh button for Squirrly SEO Snippet on ajax error
  • Fix - Canonical link verification on Focus Pages
  • Fix - PHP count() warning when the array is empty
  • Fix - The Inner Links count when the links are not absolute
Download this release

Release Info

Developer cifi
Plugin Icon 128x128 SEO SQUIRRLY™
Version 9.1.19
Comparing to
See all releases

Code changes from version 9.1.10 to 9.1.19

Files changed (98) hide show
  1. classes/FrontController.php +2 -2
  2. classes/RemoteController.php +36 -2
  3. classes/helpers/DevKit.php +7 -4
  4. classes/helpers/Sanitize.php +15 -10
  5. classes/helpers/Tools.php +22 -3
  6. config.json +21 -0
  7. config/paths.php +2 -3
  8. controllers/Audits.php +3 -0
  9. controllers/FocusPages.php +26 -23
  10. controllers/Menu.php +57 -29
  11. controllers/Onboarding.php +3 -0
  12. controllers/Post.php +6 -8
  13. controllers/Ranking.php +3 -0
  14. controllers/Research.php +7 -2
  15. controllers/SeoSettings.php +9 -6
  16. controllers/Snippet.php +1 -1
  17. core/BlockFocusPages.php +15 -13
  18. core/BlockJorney.php +18 -4
  19. core/BlockStats.php +4 -0
  20. core/BlockSupport.php +4 -4
  21. languages/squirrly-seo-en_US.mo +0 -0
  22. languages/squirrly-seo-en_US.po +490 -436
  23. models/Assistant.php +12 -1
  24. models/CheckSeo.php +6 -9
  25. models/Compatibility.php +35 -0
  26. models/FocusPages.php +11 -1
  27. models/Frontend.php +51 -60
  28. models/Ico.php +3 -3
  29. models/ImportExport.php +1 -1
  30. models/Snippet.php +30 -25
  31. models/bulkseo/Metas.php +10 -5
  32. models/bulkseo/Opengraph.php +4 -4
  33. models/bulkseo/Twittercard.php +4 -4
  34. models/domain/FocusPage.php +16 -2
  35. models/focuspages/Accuracy.php +10 -5
  36. models/focuspages/Audit.php +7 -2
  37. models/focuspages/Authority.php +14 -0
  38. models/focuspages/Backlinks.php +13 -0
  39. models/focuspages/Clicks.php +5 -0
  40. models/focuspages/Content.php +6 -2
  41. models/focuspages/Ctr.php +5 -0
  42. models/focuspages/Image.php +5 -1
  43. models/focuspages/Impressions.php +5 -0
  44. models/focuspages/Indexability.php +20 -7
  45. models/focuspages/Innerlinks.php +15 -6
  46. models/focuspages/Keyword.php +8 -3
  47. models/focuspages/Length.php +10 -2
  48. models/focuspages/Nofollow.php +19 -4
  49. models/focuspages/Onpage.php +8 -1
  50. models/focuspages/Ranking.php +12 -0
  51. models/focuspages/Snippet.php +5 -0
  52. models/focuspages/Social.php +8 -1
  53. models/focuspages/Strategy.php +5 -0
  54. models/focuspages/Traffic.php +22 -11
  55. models/services/JsonLD.php +20 -6
  56. models/services/OpenGraph.php +82 -3
  57. readme.txt +77 -2
  58. squirrly.php +2 -2
  59. view/Audits/Audits.php +2 -2
  60. view/Blocks/FocusPages.php +2 -0
  61. view/Blocks/Jorney.php +34 -16
  62. view/Blocks/KRFound.php +46 -41
  63. view/Blocks/KRHistory.php +20 -16
  64. view/Blocks/Ranks.php +1 -1
  65. view/Blocks/Snippet.php +2 -2
  66. view/Blocks/Stats.php +22 -20
  67. view/Blocks/Support.php +9 -11
  68. view/Blocks/Toolbar.php +9 -2
  69. view/Dashboard.php +4 -2
  70. view/FocusPages/FocusPageRow.php +19 -10
  71. view/FocusPages/Pagelist.php +6 -0
  72. view/Onboarding/Step2.php +1 -1
  73. view/Onboarding/Step3.php +9 -2
  74. view/Ranking/Rankings.php +16 -14
  75. view/Research/Briefcase.php +5 -9
  76. view/Research/Research.php +1 -0
  77. view/Research/ResearchDetails.php +3 -3
  78. view/SeoSettings/Automation.php +1 -2
  79. view/SeoSettings/Backup.php +2 -2
  80. view/SeoSettings/Bulkseo.php +1 -0
  81. view/SeoSettings/Jsonld.php +26 -0
  82. view/SeoSettings/Metas.php +1 -1
  83. view/assets/css/global.css +21 -2
  84. view/assets/css/global.min.css +1 -1
  85. view/assets/css/jorney.css +1 -1
  86. view/assets/css/jorney.min.css +1 -1
  87. view/assets/css/rankings.css +4 -0
  88. view/assets/css/rankings.min.css +1 -1
  89. view/assets/css/switchery.css +4 -0
  90. view/assets/css/switchery.min.css +1 -1
  91. view/assets/js/global.js +13 -1
  92. view/assets/js/global.min.js +13 -11
  93. view/assets/js/research.js +26 -2
  94. view/assets/js/research.min.js +9 -9
  95. view/assets/js/snippet.js +51 -32
  96. view/assets/js/snippet.min.js +36 -34
  97. view/assets/js/support.js +12 -41
  98. view/assets/js/support.min.js +5 -6
classes/FrontController.php CHANGED
@@ -25,7 +25,7 @@ class SQ_Classes_FrontController {
25
  /* load the model and hooks here for wordpress actions to take efect */
26
  /* create the model and view instances */
27
  $model_classname = str_replace('Controllers', 'Models', $this->name);
28
- if(SQ_Classes_ObjController::getClassPath($model_classname)) {
29
  $this->model = SQ_Classes_ObjController::getClass($model_classname);
30
  }
31
 
@@ -127,6 +127,6 @@ class SQ_Classes_FrontController {
127
  *
128
  * @return void
129
  */
130
- public function hookHead() {}
131
 
132
  }
25
  /* load the model and hooks here for wordpress actions to take efect */
26
  /* create the model and view instances */
27
  $model_classname = str_replace('Controllers', 'Models', $this->name);
28
+ if (SQ_Classes_ObjController::getClassPath($model_classname)) {
29
  $this->model = SQ_Classes_ObjController::getClass($model_classname);
30
  }
31
 
127
  *
128
  * @return void
129
  */
130
+ public function hookHead() { }
131
 
132
  }
classes/RemoteController.php CHANGED
@@ -100,7 +100,11 @@ class SQ_Classes_RemoteController {
100
  * @return string
101
  */
102
  public static function getMySquirrlyLink($path) {
103
- return _SQ_DASH_URL_ . 'login/?token=' . SQ_Classes_Helpers_Tools::getOption('sq_api') . '&user_url=' . get_bloginfo('url') . '&redirect_to=' . _SQ_DASH_URL_ . 'user/' . $path;
 
 
 
 
104
  }
105
 
106
  /**
@@ -139,7 +143,7 @@ class SQ_Classes_RemoteController {
139
  }
140
 
141
  if (is_wp_error($response)) {
142
- //SQ_Classes_Error::setError($response->get_error_message(), 'sq_error');
143
  return false;
144
  }
145
 
@@ -209,6 +213,10 @@ class SQ_Classes_RemoteController {
209
  $json = json_decode(self::apiCall('api/user/checkin', $args));
210
 
211
  if (isset($json->error) && $json->error <> '') {
 
 
 
 
212
  return (new WP_Error('api_error', $json->error));
213
  }
214
 
@@ -240,6 +248,10 @@ class SQ_Classes_RemoteController {
240
  if ($json = json_decode(self::apiCall('api/user/stats', $args))) {
241
 
242
  if (isset($json->error) && $json->error <> '') {
 
 
 
 
243
  return (new WP_Error('api_error', $json->error));
244
  }
245
 
@@ -377,6 +389,10 @@ class SQ_Classes_RemoteController {
377
  $json = json_decode(self::apiCall('api/briefcase/stats', $args));
378
 
379
  if (isset($json->error) && $json->error <> '') {
 
 
 
 
380
  return (new WP_Error('api_error', $json->error));
381
  }
382
 
@@ -911,6 +927,24 @@ class SQ_Classes_RemoteController {
911
 
912
 
913
  /******************** OTHERS *****************************/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
914
 
915
  public static function saveSettings($args) {
916
  self::$apiversion = 1; //api v1
100
  * @return string
101
  */
102
  public static function getMySquirrlyLink($path) {
103
+ if (SQ_Classes_Helpers_Tools::getMenuVisible('show_panel')) {
104
+ return _SQ_DASH_URL_ . 'login/?token=' . SQ_Classes_Helpers_Tools::getOption('sq_api') . '&user_url=' . get_bloginfo('url') . '&redirect_to=' . _SQ_DASH_URL_ . 'user/' . $path;
105
+ } else {
106
+ return _SQ_DASH_URL_;
107
+ }
108
  }
109
 
110
  /**
143
  }
144
 
145
  if (is_wp_error($response)) {
146
+ SQ_Classes_Error::setError($response->get_error_message(), 'sq_error');
147
  return false;
148
  }
149
 
213
  $json = json_decode(self::apiCall('api/user/checkin', $args));
214
 
215
  if (isset($json->error) && $json->error <> '') {
216
+ if($json->error == 'invalid_token'){
217
+ SQ_Classes_Helpers_Tools::saveOptions('sq_api',false);
218
+ }
219
+
220
  return (new WP_Error('api_error', $json->error));
221
  }
222
 
248
  if ($json = json_decode(self::apiCall('api/user/stats', $args))) {
249
 
250
  if (isset($json->error) && $json->error <> '') {
251
+ if($json->error == 'invalid_token'){
252
+ SQ_Classes_Helpers_Tools::saveOptions('sq_api',false);
253
+ }
254
+
255
  return (new WP_Error('api_error', $json->error));
256
  }
257
 
389
  $json = json_decode(self::apiCall('api/briefcase/stats', $args));
390
 
391
  if (isset($json->error) && $json->error <> '') {
392
+ if($json->error == 'invalid_token'){
393
+ SQ_Classes_Helpers_Tools::saveOptions('sq_api',false);
394
+ }
395
+
396
  return (new WP_Error('api_error', $json->error));
397
  }
398
 
927
 
928
 
929
  /******************** OTHERS *****************************/
930
+ public static function crawlURL($args = array()) {
931
+ self::$apiversion = 2; //api v2
932
+ self::$apimethod = 'get'; //post call
933
+
934
+
935
+ if ($json = json_decode(self::apiCall('api/url/crawl', $args, array('timeout' => 60)))) {
936
+
937
+ if (isset($json->error) && $json->error <> '') {
938
+ return (new WP_Error('api_error', $json->error));
939
+ }
940
+
941
+ if (isset($json->data)) {
942
+ return $json->data;
943
+ }
944
+ }
945
+
946
+ return false;
947
+ }
948
 
949
  public static function saveSettings($args) {
950
  self::$apiversion = 1; //api v1
classes/helpers/DevKit.php CHANGED
@@ -12,7 +12,7 @@ class SQ_Classes_Helpers_DevKit {
12
  $data = get_plugin_data(_SQ_ROOT_DIR_ . 'squirrly.php');
13
  if (isset($data['Name'])) {
14
  self::$plugin['name'] = $data['Name'];
15
- add_filter('pre_kses', array('SQ_Classes_Helpers_Tools', 'changeString'), 1, 1);
16
  }
17
  }
18
  }
@@ -24,8 +24,8 @@ class SQ_Classes_Helpers_DevKit {
24
  *
25
  * @return bool
26
  */
27
- public static function updatePluginData() {
28
- $package_file = _SQ_ROOT_DIR_ . '/package.json';
29
  if (!file_exists($package_file)) {
30
  return false;
31
  }
@@ -36,14 +36,17 @@ class SQ_Classes_Helpers_DevKit {
36
  self::$package = $config['package'];
37
 
38
  if (isset(self::$package['settings']) && !empty(SQ_Classes_Helpers_Tools::$options)) {
39
- SQ_Classes_Helpers_Tools::$options = @array_merge(SQ_Classes_Helpers_Tools::$options, self::$package['settings']);
40
 
41
  if (isset(self::$package['name']) && self::$package['name'] <> '') {
42
  SQ_Classes_Helpers_Tools::$options['sq_name'] = self::$package['name'] . ' - Squirrly Special';
43
  }
44
 
45
  SQ_Classes_Helpers_Tools::saveOptions();
 
 
46
  wp_redirect(SQ_Classes_Helpers_Tools::getAdminUrl('sq_dashboard'));
 
47
  }
48
  }
49
 
12
  $data = get_plugin_data(_SQ_ROOT_DIR_ . 'squirrly.php');
13
  if (isset($data['Name'])) {
14
  self::$plugin['name'] = $data['Name'];
15
+ add_filter('pre_kses', array($this, 'changeString'), 1, 1);
16
  }
17
  }
18
  }
24
  *
25
  * @return bool
26
  */
27
+ public function updatePluginData() {
28
+ $package_file = _SQ_ROOT_DIR_ . 'package.json';
29
  if (!file_exists($package_file)) {
30
  return false;
31
  }
36
  self::$package = $config['package'];
37
 
38
  if (isset(self::$package['settings']) && !empty(SQ_Classes_Helpers_Tools::$options)) {
39
+ SQ_Classes_Helpers_Tools::$options = @array_replace_recursive(SQ_Classes_Helpers_Tools::$options, self::$package['settings']);
40
 
41
  if (isset(self::$package['name']) && self::$package['name'] <> '') {
42
  SQ_Classes_Helpers_Tools::$options['sq_name'] = self::$package['name'] . ' - Squirrly Special';
43
  }
44
 
45
  SQ_Classes_Helpers_Tools::saveOptions();
46
+ @unlink($package_file);
47
+
48
  wp_redirect(SQ_Classes_Helpers_Tools::getAdminUrl('sq_dashboard'));
49
+ exit();
50
  }
51
  }
52
 
classes/helpers/Sanitize.php CHANGED
@@ -72,13 +72,17 @@ class SQ_Classes_Helpers_Sanitize {
72
  * @return bool|mixed|null|string|string[]
73
  */
74
  public static function truncate($text, $min = 100, $max = 110) {
75
- if ($text <> '' && strlen($text) > $max) {
 
 
 
 
76
  if (function_exists('strip_tags')) {
77
  $text = strip_tags($text);
78
  }
 
79
  $text = str_replace(']]>', ']]&gt;', $text);
80
  $text = @preg_replace('/\[(.+?)\]/is', '', $text);
81
- $text = strip_tags($text);
82
 
83
  if ($max < strlen($text)) {
84
  while ($text[$max] != ' ' && $max > $min) {
@@ -91,6 +95,7 @@ class SQ_Classes_Helpers_Sanitize {
91
 
92
  return $text;
93
  }
 
94
  /**
95
  * Check the google code saved at settings
96
  *
@@ -272,7 +277,7 @@ class SQ_Classes_Helpers_Sanitize {
272
  * @return string
273
  */
274
  public static function checkTwitterAccount($account) {
275
- if ($account <> '' && strpos($account, 'twitter.') === false) {
276
  $account = 'https://twitter.com/' . $account;
277
  }
278
 
@@ -286,7 +291,7 @@ class SQ_Classes_Helpers_Sanitize {
286
  * @return string
287
  */
288
  public static function checkTwitterAccountName($account) {
289
- if ($account <> '' && strpos($account, 'twitter.') !== false) {
290
  $account = parse_url($account, PHP_URL_PATH);
291
  if ($account <> '') {
292
  $account = str_replace('/', '', $account);
@@ -306,7 +311,7 @@ class SQ_Classes_Helpers_Sanitize {
306
  * @return string
307
  */
308
  public static function checkGoogleAccount($account) {
309
- if ($account <> '' && strpos($account, 'google.') === false) {
310
  $account = 'https://plus.google.com/' . $account;
311
  }
312
  return str_replace(" ", "+", $account);
@@ -319,7 +324,7 @@ class SQ_Classes_Helpers_Sanitize {
319
  * @return string
320
  */
321
  public static function checkLinkeinAccount($account) {
322
- if ($account <> '' && strpos($account, 'linkedin.') === false) {
323
  $account = 'https://www.linkedin.com/in/' . $account;
324
  }
325
  return $account;
@@ -332,7 +337,7 @@ class SQ_Classes_Helpers_Sanitize {
332
  * @return string
333
  */
334
  public static function checkFacebookAccount($account) {
335
- if ($account <> '' && strpos($account, 'facebook.com') === false) {
336
  $account = 'https://www.facebook.com/' . $account;
337
  }
338
  return $account;
@@ -344,7 +349,7 @@ class SQ_Classes_Helpers_Sanitize {
344
  * @return string
345
  */
346
  public static function checkPinterestAccount($account) {
347
- if ($account <> '' && strpos($account, 'pinterest.com') === false) {
348
  $account = 'https://www.pinterest.com/' . $account;
349
  }
350
  return $account;
@@ -357,7 +362,7 @@ class SQ_Classes_Helpers_Sanitize {
357
  * @return string
358
  */
359
  public static function checkInstagramAccount($account) {
360
- if ($account <> '' && strpos($account, 'instagram.com') === false) {
361
  $account = 'https://www.instagram.com/' . $account;
362
  }
363
  return $account;
@@ -370,7 +375,7 @@ class SQ_Classes_Helpers_Sanitize {
370
  * @return string
371
  */
372
  public static function checkYoutubeAccount($account) {
373
- if ($account <> '' && strpos($account, 'youtube.com') === false) {
374
  if (strpos($account, 'user/') === false && strpos($account, 'channel/') === false) {
375
  $account = 'https://www.youtube.com/channel/' . $account;
376
  }
72
  * @return bool|mixed|null|string|string[]
73
  */
74
  public static function truncate($text, $min = 100, $max = 110) {
75
+ //make sure they are values
76
+ $max = (int)$max;
77
+ $min = (int)$min;
78
+
79
+ if ($max > 0 && $text <> '' && strlen($text) > $max) {
80
  if (function_exists('strip_tags')) {
81
  $text = strip_tags($text);
82
  }
83
+
84
  $text = str_replace(']]>', ']]&gt;', $text);
85
  $text = @preg_replace('/\[(.+?)\]/is', '', $text);
 
86
 
87
  if ($max < strlen($text)) {
88
  while ($text[$max] != ' ' && $max > $min) {
95
 
96
  return $text;
97
  }
98
+
99
  /**
100
  * Check the google code saved at settings
101
  *
277
  * @return string
278
  */
279
  public static function checkTwitterAccount($account) {
280
+ if ($account <> '' && strpos($account, '//') === false) {
281
  $account = 'https://twitter.com/' . $account;
282
  }
283
 
291
  * @return string
292
  */
293
  public static function checkTwitterAccountName($account) {
294
+ if ($account <> '' && strpos($account, '//') !== false) {
295
  $account = parse_url($account, PHP_URL_PATH);
296
  if ($account <> '') {
297
  $account = str_replace('/', '', $account);
311
  * @return string
312
  */
313
  public static function checkGoogleAccount($account) {
314
+ if ($account <> '' && strpos($account, '//') === false) {
315
  $account = 'https://plus.google.com/' . $account;
316
  }
317
  return str_replace(" ", "+", $account);
324
  * @return string
325
  */
326
  public static function checkLinkeinAccount($account) {
327
+ if ($account <> '' && strpos($account, '//') === false) {
328
  $account = 'https://www.linkedin.com/in/' . $account;
329
  }
330
  return $account;
337
  * @return string
338
  */
339
  public static function checkFacebookAccount($account) {
340
+ if ($account <> '' && strpos($account, '//') === false) {
341
  $account = 'https://www.facebook.com/' . $account;
342
  }
343
  return $account;
349
  * @return string
350
  */
351
  public static function checkPinterestAccount($account) {
352
+ if ($account <> '' && strpos($account, '//') === false) {
353
  $account = 'https://www.pinterest.com/' . $account;
354
  }
355
  return $account;
362
  * @return string
363
  */
364
  public static function checkInstagramAccount($account) {
365
+ if ($account <> '' && strpos($account, '//') === false) {
366
  $account = 'https://www.instagram.com/' . $account;
367
  }
368
  return $account;
375
  * @return string
376
  */
377
  public static function checkYoutubeAccount($account) {
378
+ if ($account <> '' && strpos($account, '//') === false) {
379
  if (strpos($account, 'user/') === false && strpos($account, 'channel/') === false) {
380
  $account = 'https://www.youtube.com/channel/' . $account;
381
  }
classes/helpers/Tools.php CHANGED
@@ -66,8 +66,6 @@ class SQ_Classes_Helpers_Tools {
66
  add_filter("plugin_row_meta", array($this, 'hookExtraLinks'), 10, 4);
67
  //add setting link in plugin
68
  add_filter('plugin_action_links', array($this, 'hookActionlink'), 5, 2);
69
- //load the DevKit
70
- SQ_Classes_ObjController::getClass('SQ_Classes_Helpers_DevKit');
71
  }
72
 
73
  /**
@@ -130,6 +128,7 @@ class SQ_Classes_Helpers_Tools {
130
  'sq_support_email' => '',
131
  'sq_audit_email' => '',
132
  'sq_seojourney' => 0,
 
133
  'sq_onboarding' => 0,
134
 
135
  //Settings Assistant
@@ -147,6 +146,8 @@ class SQ_Classes_Helpers_Tools {
147
  //JsonLD
148
  'sq_auto_jsonld' => 1,
149
  'sq_jsonld_type' => 'Organization',
 
 
150
  'sq_jsonld' => array(
151
  'Organization' => array(
152
  'name' => '',
@@ -212,7 +213,6 @@ class SQ_Classes_Helpers_Tools {
212
  'sq_auto_dublincore' => 1,
213
  'sq_auto_feed' => 0,
214
  'sq_auto_noindex' => 1,
215
- 'sq_exclude_post_types' => array(),
216
  'sq_use_frontend' => 1,
217
  'sq_attachment_redirect' => 0,
218
  'sq_metas' => array(
@@ -250,6 +250,8 @@ class SQ_Classes_Helpers_Tools {
250
  'show_panel' => 1,
251
  'show_tutorial' => 1,
252
  'show_audit' => 1,
 
 
253
  'show_ads' => 1,
254
  ),
255
 
@@ -655,6 +657,23 @@ class SQ_Classes_Helpers_Tools {
655
  return apply_filters('sq_option_' . $key, self::$options[$key]);
656
  }
657
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
658
  /**
659
  * Save the Options in user option table in DB
660
  *
66
  add_filter("plugin_row_meta", array($this, 'hookExtraLinks'), 10, 4);
67
  //add setting link in plugin
68
  add_filter('plugin_action_links', array($this, 'hookActionlink'), 5, 2);
 
 
69
  }
70
 
71
  /**
128
  'sq_support_email' => '',
129
  'sq_audit_email' => '',
130
  'sq_seojourney' => 0,
131
+ 'sq_seojourney_congrats' => 1,
132
  'sq_onboarding' => 0,
133
 
134
  //Settings Assistant
146
  //JsonLD
147
  'sq_auto_jsonld' => 1,
148
  'sq_jsonld_type' => 'Organization',
149
+ 'sq_jsonld_breadcrumbs' => 1,
150
+ 'sq_jsonld_clearcode' => 0,
151
  'sq_jsonld' => array(
152
  'Organization' => array(
153
  'name' => '',
213
  'sq_auto_dublincore' => 1,
214
  'sq_auto_feed' => 0,
215
  'sq_auto_noindex' => 1,
 
216
  'sq_use_frontend' => 1,
217
  'sq_attachment_redirect' => 0,
218
  'sq_metas' => array(
250
  'show_panel' => 1,
251
  'show_tutorial' => 1,
252
  'show_audit' => 1,
253
+ 'show_rankings' => 1,
254
+ 'show_focuspages' => 1,
255
  'show_ads' => 1,
256
  ),
257
 
657
  return apply_filters('sq_option_' . $key, self::$options[$key]);
658
  }
659
 
660
+ /**
661
+ * Get the option from database
662
+ * @param $key
663
+ * @return mixed
664
+ */
665
+ public static function getMenuVisible($key) {
666
+ if (!isset(self::$options['menu'][$key])) {
667
+ self::$options = self::getOptions();
668
+
669
+ if (!isset(self::$options['menu'][$key])) {
670
+ self::$options['menu'][$key] = false;
671
+ }
672
+ }
673
+
674
+ return self::$options['menu'][$key];
675
+ }
676
+
677
  /**
678
  * Save the Options in user option table in DB
679
  *
config.json CHANGED
@@ -189,8 +189,29 @@
189
  },
190
  "admin": "1",
191
  "active": "1"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192
  }
193
 
 
194
  ]
195
  }
196
  }
189
  },
190
  "admin": "1",
191
  "active": "1"
192
+ },
193
+ {
194
+ "name": "SQ_Core_BlockJorney",
195
+ "actions": {
196
+ "action": [
197
+ "sq_journey_close"
198
+ ]
199
+ },
200
+ "admin": "1",
201
+ "active": "1"
202
+ },
203
+ {
204
+ "name": "SQ_Core_BlockSupport",
205
+ "actions": {
206
+ "action": [
207
+ "sq_feedback"
208
+ ]
209
+ },
210
+ "admin": "1",
211
+ "active": "1"
212
  }
213
 
214
+
215
  ]
216
  }
217
  }
config/paths.php CHANGED
@@ -7,15 +7,14 @@ define('_SQ_NAMESPACE_', 'SQ');
7
  define('_SQ_DB_', 'QSS');
8
  define('_SQ_PLUGIN_NAME_', 'squirrly-seo'); //THIS LINE WILL BE CHANGED WITH THE USER SETTINGS
9
 
10
- $scheme = (((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") || (defined('FORCE_SSL_ADMIN') && FORCE_SSL_ADMIN)) ? 'https:' : 'http:'); //CHECK IF SCURE
11
  defined('SQ_URI') || define('SQ_URI', 'wp500');
12
  defined('_SQ_DASH_URL_') || define('_SQ_DASH_URL_', 'https://my.squirrly.co/');
13
  defined('_SQ_API_URL_') || define('_SQ_API_URL_', $scheme . '//api.squirrly.co/sq/');
14
- defined('_SQ_APIKR_URL_') || define('_SQ_APIKR_URL_', $scheme . '//kr.squirrly.co/sq/');
15
  defined('_SQ_APIV2_URL_') || define('_SQ_APIV2_URL_', $scheme . '//api.squirrly.co/v2/');
16
  define('_SQ_SITE_HOST_', @parse_url(home_url(), PHP_URL_HOST));
17
 
18
- define('_SQ_SUPPORT_EMAIL_', 'support@squirrly.co');
19
  defined('_SQ_STATIC_API_URL_') || define('_SQ_STATIC_API_URL_', '//storage.googleapis.com/squirrly/');
20
  defined('_SQ_SUPPORT_EMAIL_URL_') || define('_SQ_SUPPORT_EMAIL_URL_', 'http://plugin.squirrly.co/contact/');
21
  defined('_SQ_SUPPORT_FACEBOOK_URL_') || define('_SQ_SUPPORT_FACEBOOK_URL_', 'https://www.facebook.com/Squirrly.co');
7
  define('_SQ_DB_', 'QSS');
8
  define('_SQ_PLUGIN_NAME_', 'squirrly-seo'); //THIS LINE WILL BE CHANGED WITH THE USER SETTINGS
9
 
10
+ $scheme = (((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") || (defined('FORCE_SSL_ADMIN') && FORCE_SSL_ADMIN) || (function_exists('is_ssl') && is_ssl())) ? 'https:' : 'http:'); //CHECK IF SCURE
11
  defined('SQ_URI') || define('SQ_URI', 'wp500');
12
  defined('_SQ_DASH_URL_') || define('_SQ_DASH_URL_', 'https://my.squirrly.co/');
13
  defined('_SQ_API_URL_') || define('_SQ_API_URL_', $scheme . '//api.squirrly.co/sq/');
 
14
  defined('_SQ_APIV2_URL_') || define('_SQ_APIV2_URL_', $scheme . '//api.squirrly.co/v2/');
15
  define('_SQ_SITE_HOST_', @parse_url(home_url(), PHP_URL_HOST));
16
 
17
+ define('_SQ_SUPPORT_EMAIL_', 'https://go.bucketforms.com/ds/fc7b9084');
18
  defined('_SQ_STATIC_API_URL_') || define('_SQ_STATIC_API_URL_', '//storage.googleapis.com/squirrly/');
19
  defined('_SQ_SUPPORT_EMAIL_URL_') || define('_SQ_SUPPORT_EMAIL_URL_', 'http://plugin.squirrly.co/contact/');
20
  defined('_SQ_SUPPORT_FACEBOOK_URL_') || define('_SQ_SUPPORT_FACEBOOK_URL_', 'https://www.facebook.com/Squirrly.co');
controllers/Audits.php CHANGED
@@ -9,6 +9,9 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
9
  public $limit = 10;
10
 
11
  function init() {
 
 
 
12
  //Checkin to API V2
13
  SQ_Classes_RemoteController::checkin();
14
 
9
  public $limit = 10;
10
 
11
  function init() {
12
+ //Clear the Scripts and Styles from other plugins
13
+ SQ_Classes_ObjController::getClass('SQ_Models_Compatibility')->clearStyles();
14
+
15
  //Checkin to API V2
16
  SQ_Classes_RemoteController::checkin();
17
 
controllers/FocusPages.php CHANGED
@@ -16,10 +16,12 @@ class SQ_Controllers_FocusPages extends SQ_Classes_FrontController {
16
  * @return mixed|void
17
  */
18
  function init() {
 
 
 
19
  //Checkin to API V2
20
  $this->checkin = SQ_Classes_RemoteController::checkin();
21
 
22
-
23
  $tab = SQ_Classes_Helpers_Tools::getValue('tab', 'pagelist');
24
 
25
 
@@ -134,37 +136,38 @@ class SQ_Controllers_FocusPages extends SQ_Classes_FrontController {
134
  //Get the audits for the focus pages
135
  $audits = SQ_Classes_RemoteController::getFocusAudits();
136
 
137
- foreach ($focuspages as $focuspage) {
138
- //Add the audit data if exists
139
- if (!empty($audits)) {
140
- foreach ($audits as $audit) {
141
- if ($focuspage->user_post_id == $audit->user_post_id) {
142
- $focuspage->audit = json_decode($audit->audit);
 
 
143
  }
144
  }
145
- }
146
 
147
- /** @var SQ_Models_Domain_FocusPage $focuspage */
148
- $focuspage = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_FocusPage', $focuspage);
149
- //set the connection info with GSC and GA
150
- $focuspage->audit->sq_analytics_gsc_connected = (isset($this->checkin->connection_gsc) ? $this->checkin->connection_gsc : 0);
151
- $focuspage->audit->sq_analytics_google_connected = (isset($this->checkin->connection_ga) ? $this->checkin->connection_ga : 0);
152
 
153
- SQ_Debug::dump($focuspage, $focuspage->audit);
154
 
155
- //If there is a local page, then show focus
156
- if ($focuspage->getWppost()) {
157
- $this->focuspages[] = SQ_Classes_ObjController::getClass('SQ_Models_FocusPages')->parseFocusPage($focuspage, $labels)->getFocusPage();
158
- } elseif ($focuspage->user_post_id) {
159
- SQ_Classes_Error::setError(__('Focus Page does not exist or was deleted from your website.', _SQ_PLUGIN_NAME_));
160
- SQ_Classes_RemoteController::deleteFocusPage(array('user_post_id' => $focuspage->user_post_id));
 
161
  }
162
  }
163
-
164
  }
165
  }
166
  //Get the labels for view use
167
- if (!empty($labels) || count($this->focuspages) > 1) {
168
  $this->labels = SQ_Classes_ObjController::getClass('SQ_Models_FocusPages')->getLabels();
169
  }
170
  }
@@ -188,7 +191,7 @@ class SQ_Controllers_FocusPages extends SQ_Classes_FrontController {
188
  $post_id = SQ_Classes_Helpers_Tools::getValue('id', false);
189
  if ($post_id) {
190
  if ($post = SQ_Classes_ObjController::getClass('SQ_Models_Snippet')->setPostByID($post_id)) {
191
- if ($post->post_status == 'publish') {
192
  $args = array();
193
  $args['post_id'] = $post->ID;
194
  $args['permalink'] = $post->url;
16
  * @return mixed|void
17
  */
18
  function init() {
19
+ //Clear the Scripts and Styles from other plugins
20
+ SQ_Classes_ObjController::getClass('SQ_Models_Compatibility')->clearStyles();
21
+
22
  //Checkin to API V2
23
  $this->checkin = SQ_Classes_RemoteController::checkin();
24
 
 
25
  $tab = SQ_Classes_Helpers_Tools::getValue('tab', 'pagelist');
26
 
27
 
136
  //Get the audits for the focus pages
137
  $audits = SQ_Classes_RemoteController::getFocusAudits();
138
 
139
+ if(!empty($focuspages)) {
140
+ foreach ($focuspages as $focuspage) {
141
+ //Add the audit data if exists
142
+ if (isset($focuspage->user_post_id) && !empty($audits)) {
143
+ foreach ($audits as $audit) {
144
+ if ($focuspage->user_post_id == $audit->user_post_id) {
145
+ $focuspage->audit = json_decode($audit->audit);
146
+ }
147
  }
148
  }
 
149
 
150
+ /** @var SQ_Models_Domain_FocusPage $focuspage */
151
+ $focuspage = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_FocusPage', $focuspage);
152
+ //set the connection info with GSC and GA
153
+ $focuspage->audit->sq_analytics_gsc_connected = (isset($this->checkin->connection_gsc) ? $this->checkin->connection_gsc : 0);
154
+ $focuspage->audit->sq_analytics_google_connected = (isset($this->checkin->connection_ga) ? $this->checkin->connection_ga : 0);
155
 
156
+ SQ_Debug::dump($focuspage, $focuspage->audit);
157
 
158
+ //If there is a local page, then show focus
159
+ if ($focuspage->getWppost()) {
160
+ $this->focuspages[] = SQ_Classes_ObjController::getClass('SQ_Models_FocusPages')->parseFocusPage($focuspage, $labels)->getFocusPage();
161
+ } elseif ($focuspage->user_post_id) {
162
+ SQ_Classes_Error::setError(__('Focus Page does not exist or was deleted from your website.', _SQ_PLUGIN_NAME_));
163
+ SQ_Classes_RemoteController::deleteFocusPage(array('user_post_id' => $focuspage->user_post_id));
164
+ }
165
  }
166
  }
 
167
  }
168
  }
169
  //Get the labels for view use
170
+ if (!empty($labels) || count((array)$this->focuspages) > 1) {
171
  $this->labels = SQ_Classes_ObjController::getClass('SQ_Models_FocusPages')->getLabels();
172
  }
173
  }
191
  $post_id = SQ_Classes_Helpers_Tools::getValue('id', false);
192
  if ($post_id) {
193
  if ($post = SQ_Classes_ObjController::getClass('SQ_Models_Snippet')->setPostByID($post_id)) {
194
+ if ($post->post_status == 'publish' && $post->ID == $post_id) {
195
  $args = array();
196
  $args['post_id'] = $post->ID;
197
  $args['permalink'] = $post->url;
controllers/Menu.php CHANGED
@@ -10,9 +10,19 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
10
 
11
  public function __construct() {
12
  parent::__construct();
13
- add_action('admin_bar_menu', array($this, 'hookTopmenuDashboard'), 10);
14
- add_action('admin_bar_menu', array($this, 'hookTopmenuSquirrly'), 91);
15
- add_action('do_meta_boxes', array($this, 'addMetabox'));
 
 
 
 
 
 
 
 
 
 
16
 
17
  }
18
 
@@ -20,28 +30,31 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
20
  * Hook the Admin load
21
  */
22
  public function hookInit() {
23
-
24
  //in case the token is not set
25
  if (SQ_Classes_Helpers_Tools::getOption('sq_api') == '') {
26
  if (SQ_Classes_Helpers_Tools::getIsset('page')) {
27
  if (in_array(SQ_Classes_Helpers_Tools::getValue('page'), $this->sq_pages)) {
28
-
29
  wp_safe_redirect(SQ_Classes_Helpers_Tools::getAdminUrl('sq_dashboard'));
30
  exit();
31
  }
32
  }
33
  } elseif (SQ_Classes_Helpers_Tools::getIsset('page')) {
34
- if (in_array(SQ_Classes_Helpers_Tools::getValue('page'), $this->sq_pages) || SQ_Classes_Helpers_Tools::getValue('page') === 'sq_dashboard') {
35
- //redirect users to onboarding if necessary
36
- if (!$onboarding = SQ_Classes_Helpers_Tools::getOption('sq_onboarding')) {
37
- if (SQ_Classes_Helpers_Tools::getValue('page') !== 'sq_onboarding') {
38
- wp_safe_redirect(SQ_Classes_Helpers_Tools::getAdminUrl('sq_onboarding', 'step1'));
39
- die();
 
 
 
40
  }
41
  }
42
  }
43
  }
44
 
 
45
  if (SQ_Classes_Helpers_Tools::getIsset('page')) {
46
  if (SQ_Classes_Helpers_Tools::getValue('page') == 'sq_help') {
47
  wp_redirect(_SQ_HOWTO_URL_);
@@ -49,17 +62,18 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
49
  }
50
  }
51
 
 
52
  if (SQ_Classes_Helpers_Tools::getIsset('page')) {
53
- if(current_user_can('sq_manage_settings')) {
54
  if (SQ_Classes_Helpers_Tools::getValue('page') == 'sq_account') {
55
  wp_redirect(SQ_Classes_RemoteController::getMySquirrlyLink('account'));
56
  exit();
57
  }
58
  }
59
  }
 
60
  /* add the plugin menu in admin */
61
  if (current_user_can('manage_options')) {
62
-
63
  try {
64
  //check if activated
65
  if (get_transient('sq_activate') == 1) {
@@ -85,17 +99,16 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
85
  SQ_Classes_Error::setMessage(sprintf(__("An error occurred during activation. If this error persists, please contact us at: %s", _SQ_PLUGIN_NAME_), _SQ_SUPPORT_EMAIL_));
86
  }
87
 
88
- //This option is use for custom Package details
89
- SQ_Classes_Helpers_DevKit::updatePluginData(); //update text in case of devkit
90
 
91
  }
92
 
93
  //activate the cron job if not exists
94
- if (!wp_get_schedule('sq_cron_process')) {
95
  wp_schedule_event(time(), 'hourly', 'sq_cron_process');
96
  }
97
 
98
-
99
  //Add Squirrly SEO in Posts list
100
  SQ_Classes_ObjController::getClass('SQ_Controllers_PostsList')->init();
101
 
@@ -151,6 +164,14 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
151
  $mainmenu = $this->model->getMainMenu();
152
  if (!empty($mainmenu)) {
153
  foreach ($mainmenu as $menuid => $item) {
 
 
 
 
 
 
 
 
154
  //make sure the user has the capabilities
155
  if (current_user_can($item['capability'])) {
156
  $wp_admin_bar->add_node(array(
@@ -163,7 +184,7 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
163
  if (!empty($tabs)) {
164
  foreach ($tabs as $id => $tab) {
165
  $array_id = explode('/', $id);
166
- if (count($array_id) == 2) {
167
  $wp_admin_bar->add_node(array(
168
  'id' => $menuid . str_replace('/', '_', $id),
169
  'title' => $tab['title'],
@@ -233,7 +254,6 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
233
  public function hookMenu() {
234
 
235
  $this->post_type = SQ_Classes_Helpers_Tools::getOption('sq_post_types');
236
- $menu = SQ_Classes_Helpers_Tools::getOption('menu');
237
 
238
  //Push the Analytics Check
239
  if (strpos($_SERVER['REQUEST_URI'], '?page=sq_dashboard') !== false) {
@@ -264,6 +284,14 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
264
 
265
  $mainmenu = $this->model->getMainMenu();
266
  foreach ($mainmenu as $name => $item) {
 
 
 
 
 
 
 
 
267
  $this->model->addSubmenu(array($item['parent'],
268
  $item['description'],
269
  $item['title'],
@@ -275,14 +303,16 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
275
  }
276
 
277
  //show account only for Admins
278
- if(current_user_can('sq_manage_settings')) {
279
- $this->model->addSubmenu(array('sq_dashboard',
280
- __('Squirrly Account Info', _SQ_PLUGIN_NAME_),
281
- __('Account Info', _SQ_PLUGIN_NAME_),
282
- 'edit_posts',
283
- 'sq_account',
284
- array(SQ_Classes_ObjController::getClass('SQ_Controllers_Account'), 'init')
285
- ));
 
 
286
  }
287
 
288
  $this->model->addSubmenu(array('sq_dashboard',
@@ -294,7 +324,6 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
294
  ));
295
 
296
 
297
-
298
  }
299
 
300
  /**
@@ -350,7 +379,6 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
350
  public function hookHead() {
351
  global $sq_fullscreen;
352
 
353
-
354
  if (SQ_Classes_Helpers_Tools::getIsset('page')) {
355
  if (in_array(SQ_Classes_Helpers_Tools::getValue('page', ''), $this->sq_pages)) {
356
  $sq_fullscreen = true;
10
 
11
  public function __construct() {
12
  parent::__construct();
13
+
14
+ if (!is_network_admin()) {
15
+ add_action('admin_bar_menu', array($this, 'hookTopmenuDashboard'), 10);
16
+ add_action('admin_bar_menu', array($this, 'hookTopmenuSquirrly'), 91);
17
+ add_action('do_meta_boxes', array($this, 'addMetabox'));
18
+
19
+ //run compatibility check on Squirrly settings
20
+ if (SQ_Classes_Helpers_Tools::getIsset('page')) {
21
+ if (in_array(SQ_Classes_Helpers_Tools::getValue('page', ''), $this->sq_pages)) {
22
+ add_action('admin_enqueue_scripts', array(SQ_Classes_ObjController::getClass('SQ_Models_Compatibility'), 'fixEnqueueErrors'), PHP_INT_MAX);
23
+ }
24
+ }
25
+ }
26
 
27
  }
28
 
30
  * Hook the Admin load
31
  */
32
  public function hookInit() {
 
33
  //in case the token is not set
34
  if (SQ_Classes_Helpers_Tools::getOption('sq_api') == '') {
35
  if (SQ_Classes_Helpers_Tools::getIsset('page')) {
36
  if (in_array(SQ_Classes_Helpers_Tools::getValue('page'), $this->sq_pages)) {
37
+ //redirect to dashboard to login
38
  wp_safe_redirect(SQ_Classes_Helpers_Tools::getAdminUrl('sq_dashboard'));
39
  exit();
40
  }
41
  }
42
  } elseif (SQ_Classes_Helpers_Tools::getIsset('page')) {
43
+ //check if onboarding should load
44
+ if (SQ_Classes_Helpers_Tools::getMenuVisible('show_tutorial')) {
45
+ if (in_array(SQ_Classes_Helpers_Tools::getValue('page'), $this->sq_pages) || SQ_Classes_Helpers_Tools::getValue('page') === 'sq_dashboard') {
46
+ //redirect users to onboarding if necessary
47
+ if (!$onboarding = SQ_Classes_Helpers_Tools::getOption('sq_onboarding')) {
48
+ if (SQ_Classes_Helpers_Tools::getValue('page') !== 'sq_onboarding') {
49
+ wp_safe_redirect(SQ_Classes_Helpers_Tools::getAdminUrl('sq_onboarding', 'step1'));
50
+ die();
51
+ }
52
  }
53
  }
54
  }
55
  }
56
 
57
+ //Check if help page is selected
58
  if (SQ_Classes_Helpers_Tools::getIsset('page')) {
59
  if (SQ_Classes_Helpers_Tools::getValue('page') == 'sq_help') {
60
  wp_redirect(_SQ_HOWTO_URL_);
62
  }
63
  }
64
 
65
+ //Check if account page is selected
66
  if (SQ_Classes_Helpers_Tools::getIsset('page')) {
67
+ if (current_user_can('sq_manage_settings')) {
68
  if (SQ_Classes_Helpers_Tools::getValue('page') == 'sq_account') {
69
  wp_redirect(SQ_Classes_RemoteController::getMySquirrlyLink('account'));
70
  exit();
71
  }
72
  }
73
  }
74
+
75
  /* add the plugin menu in admin */
76
  if (current_user_can('manage_options')) {
 
77
  try {
78
  //check if activated
79
  if (get_transient('sq_activate') == 1) {
99
  SQ_Classes_Error::setMessage(sprintf(__("An error occurred during activation. If this error persists, please contact us at: %s", _SQ_PLUGIN_NAME_), _SQ_SUPPORT_EMAIL_));
100
  }
101
 
102
+ //This option is use for custom Package installs
103
+ SQ_Classes_ObjController::getClass('SQ_Classes_Helpers_DevKit')->updatePluginData(); //update text in case of devkit
104
 
105
  }
106
 
107
  //activate the cron job if not exists
108
+ if (!wp_next_scheduled('sq_cron_process')) {
109
  wp_schedule_event(time(), 'hourly', 'sq_cron_process');
110
  }
111
 
 
112
  //Add Squirrly SEO in Posts list
113
  SQ_Classes_ObjController::getClass('SQ_Controllers_PostsList')->init();
114
 
164
  $mainmenu = $this->model->getMainMenu();
165
  if (!empty($mainmenu)) {
166
  foreach ($mainmenu as $menuid => $item) {
167
+ if ($menuid == 'sq_audits' && !SQ_Classes_Helpers_Tools::getMenuVisible('show_audit')) {
168
+ continue;
169
+ } elseif ($menuid == 'sq_rankings' && !SQ_Classes_Helpers_Tools::getMenuVisible('show_rankings')) {
170
+ continue;
171
+ } elseif ($menuid == 'sq_focuspages' && !SQ_Classes_Helpers_Tools::getMenuVisible('show_focuspages')) {
172
+ continue;
173
+ }
174
+
175
  //make sure the user has the capabilities
176
  if (current_user_can($item['capability'])) {
177
  $wp_admin_bar->add_node(array(
184
  if (!empty($tabs)) {
185
  foreach ($tabs as $id => $tab) {
186
  $array_id = explode('/', $id);
187
+ if (count((array)$array_id) == 2) {
188
  $wp_admin_bar->add_node(array(
189
  'id' => $menuid . str_replace('/', '_', $id),
190
  'title' => $tab['title'],
254
  public function hookMenu() {
255
 
256
  $this->post_type = SQ_Classes_Helpers_Tools::getOption('sq_post_types');
 
257
 
258
  //Push the Analytics Check
259
  if (strpos($_SERVER['REQUEST_URI'], '?page=sq_dashboard') !== false) {
284
 
285
  $mainmenu = $this->model->getMainMenu();
286
  foreach ($mainmenu as $name => $item) {
287
+ if ($name == 'sq_audits' && !SQ_Classes_Helpers_Tools::getMenuVisible('show_audit')) {
288
+ continue;
289
+ } elseif ($name == 'sq_rankings' && !SQ_Classes_Helpers_Tools::getMenuVisible('show_rankings')) {
290
+ continue;
291
+ } elseif ($name == 'sq_focuspages' && !SQ_Classes_Helpers_Tools::getMenuVisible('show_focuspages')) {
292
+ continue;
293
+ }
294
+
295
  $this->model->addSubmenu(array($item['parent'],
296
  $item['description'],
297
  $item['title'],
303
  }
304
 
305
  //show account only for Admins
306
+ if (current_user_can('sq_manage_settings')) {
307
+ if (SQ_Classes_Helpers_Tools::getMenuVisible('show_account_info')) {
308
+ $this->model->addSubmenu(array('sq_dashboard',
309
+ __('Squirrly Account Info', _SQ_PLUGIN_NAME_),
310
+ __('Account Info', _SQ_PLUGIN_NAME_),
311
+ 'edit_posts',
312
+ 'sq_account',
313
+ array(SQ_Classes_ObjController::getClass('SQ_Controllers_Account'), 'init')
314
+ ));
315
+ }
316
  }
317
 
318
  $this->model->addSubmenu(array('sq_dashboard',
324
  ));
325
 
326
 
 
327
  }
328
 
329
  /**
379
  public function hookHead() {
380
  global $sq_fullscreen;
381
 
 
382
  if (SQ_Classes_Helpers_Tools::getIsset('page')) {
383
  if (in_array(SQ_Classes_Helpers_Tools::getValue('page', ''), $this->sq_pages)) {
384
  $sq_fullscreen = true;
controllers/Onboarding.php CHANGED
@@ -10,6 +10,9 @@ class SQ_Controllers_Onboarding extends SQ_Classes_FrontController {
10
  * @return mixed|void
11
  */
12
  public function init() {
 
 
 
13
  $tab = SQ_Classes_Helpers_Tools::getValue('tab', 'step1');
14
 
15
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
10
  * @return mixed|void
11
  */
12
  public function init() {
13
+ //Clear the Scripts and Styles from other plugins
14
+ SQ_Classes_ObjController::getClass('SQ_Models_Compatibility')->clearStyles();
15
+
16
  $tab = SQ_Classes_Helpers_Tools::getValue('tab', 'step1');
17
 
18
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
controllers/Post.php CHANGED
@@ -83,16 +83,14 @@ class SQ_Controllers_Post extends SQ_Classes_FrontController {
83
  @preg_match_all('/<img[^>]*src=[\'"]([^\'"]+)[\'"][^>]*>/i', stripslashes($post_data['post_content']), $out);
84
 
85
  if (!empty($out)) {
86
- if (!is_array($out[1]) || count($out[1]) == 0)
87
  return $post_data;
88
 
89
  if (get_bloginfo('wpurl') <> '') {
90
- $domain = parse_url(get_bloginfo('wpurl'));
91
 
92
  foreach ($out[1] as $row) {
93
- if (strpos($row, '//') !== false &&
94
- strpos($row, $domain['host']) === false
95
- ) {
96
  if (!in_array($row, $urls)) {
97
  $urls[] = $row;
98
  }
@@ -102,7 +100,7 @@ class SQ_Controllers_Post extends SQ_Classes_FrontController {
102
  }
103
  }
104
 
105
- if (!is_array($urls) || (is_array($urls) && count($urls) == 0)) {
106
  return $post_data;
107
  }
108
 
@@ -161,7 +159,7 @@ class SQ_Controllers_Post extends SQ_Classes_FrontController {
161
 
162
  $seo = SQ_Classes_Helpers_Tools::getValue('sq_seo', '');
163
 
164
- if (is_array($seo) && count($seo) > 0)
165
  $args['seo'] = implode(',', $seo);
166
 
167
  $args['keyword'] = SQ_Classes_Helpers_Tools::getValue('sq_keyword', '');
@@ -187,7 +185,7 @@ class SQ_Controllers_Post extends SQ_Classes_FrontController {
187
  wp_schedule_single_event(time(), 'sq_cron_process_single');
188
 
189
  //If the queue is too big ... means that the cron is not working
190
- if (count($process) > 5) SQ_Classes_Helpers_Tools::saveOptions('sq_force_savepost', 1);
191
  }
192
  }
193
 
83
  @preg_match_all('/<img[^>]*src=[\'"]([^\'"]+)[\'"][^>]*>/i', stripslashes($post_data['post_content']), $out);
84
 
85
  if (!empty($out)) {
86
+ if (!is_array($out[1]) || count((array)$out[1]) == 0)
87
  return $post_data;
88
 
89
  if (get_bloginfo('wpurl') <> '') {
90
+ $domain = parse_url(home_url(), PHP_URL_HOST);
91
 
92
  foreach ($out[1] as $row) {
93
+ if (strpos($row, '//') !== false && strpos($row, $domain) === false) {
 
 
94
  if (!in_array($row, $urls)) {
95
  $urls[] = $row;
96
  }
100
  }
101
  }
102
 
103
+ if (!is_array($urls) || (is_array($urls) && count((array)$urls) == 0)) {
104
  return $post_data;
105
  }
106
 
159
 
160
  $seo = SQ_Classes_Helpers_Tools::getValue('sq_seo', '');
161
 
162
+ if (is_array($seo) && count((array)$seo) > 0)
163
  $args['seo'] = implode(',', $seo);
164
 
165
  $args['keyword'] = SQ_Classes_Helpers_Tools::getValue('sq_keyword', '');
185
  wp_schedule_single_event(time(), 'sq_cron_process_single');
186
 
187
  //If the queue is too big ... means that the cron is not working
188
+ if (count((array)$process) > 5) SQ_Classes_Helpers_Tools::saveOptions('sq_force_savepost', 1);
189
  }
190
  }
191
 
controllers/Ranking.php CHANGED
@@ -9,6 +9,9 @@ class SQ_Controllers_Ranking extends SQ_Classes_FrontController {
9
 
10
 
11
  function init() {
 
 
 
12
  //Checkin to API V2
13
  $this->checkin = SQ_Classes_RemoteController::checkin();
14
 
9
 
10
 
11
  function init() {
12
+ //Clear the Scripts and Styles from other plugins
13
+ SQ_Classes_ObjController::getClass('SQ_Models_Compatibility')->clearStyles();
14
+
15
  //Checkin to API V2
16
  $this->checkin = SQ_Classes_RemoteController::checkin();
17
 
controllers/Research.php CHANGED
@@ -16,6 +16,9 @@ class SQ_Controllers_Research extends SQ_Classes_FrontController {
16
  public $user;
17
 
18
  function init() {
 
 
 
19
  $tab = SQ_Classes_Helpers_Tools::getValue('tab', 'research');
20
 
21
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
@@ -278,7 +281,7 @@ class SQ_Controllers_Research extends SQ_Classes_FrontController {
278
 
279
  SQ_Classes_Helpers_Tools::setHeader('json');
280
 
281
- $name = (string)SQ_Classes_Helpers_Tools::getValue('name', 0);
282
  $color = (string)SQ_Classes_Helpers_Tools::getValue('color', '#ffffff');
283
 
284
  if ($name <> '' && $color <> '') {
@@ -441,7 +444,7 @@ class SQ_Controllers_Research extends SQ_Classes_FrontController {
441
  $num = 0;
442
  $fp = fopen($_FILES['sq_upload_file']['tmp_name'], 'rb');
443
  while (($data = fgetcsv($fp, 1000, ",")) !== FALSE) {
444
- $num = count($data);
445
  for ($c = 0; $c < $num; $c++) {
446
  if (is_string($data[$c]) && $data[$c] <> '') {
447
  $args = array();
@@ -515,6 +518,8 @@ class SQ_Controllers_Research extends SQ_Classes_FrontController {
515
 
516
  exit();
517
  case 'sq_ajax_research_process':
 
 
518
  SQ_Classes_Helpers_Tools::setHeader('json');
519
  $keywords = SQ_Classes_Helpers_Tools::getValue('keywords', false);
520
  $country = SQ_Classes_Helpers_Tools::getValue('country', 'com');
16
  public $user;
17
 
18
  function init() {
19
+ //Clear the Scripts and Styles from other plugins
20
+ SQ_Classes_ObjController::getClass('SQ_Models_Compatibility')->clearStyles();
21
+
22
  $tab = SQ_Classes_Helpers_Tools::getValue('tab', 'research');
23
 
24
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
281
 
282
  SQ_Classes_Helpers_Tools::setHeader('json');
283
 
284
+ $name = (string)SQ_Classes_Helpers_Tools::getValue('name', '');
285
  $color = (string)SQ_Classes_Helpers_Tools::getValue('color', '#ffffff');
286
 
287
  if ($name <> '' && $color <> '') {
444
  $num = 0;
445
  $fp = fopen($_FILES['sq_upload_file']['tmp_name'], 'rb');
446
  while (($data = fgetcsv($fp, 1000, ",")) !== FALSE) {
447
+ $num = count((array)$data);
448
  for ($c = 0; $c < $num; $c++) {
449
  if (is_string($data[$c]) && $data[$c] <> '') {
450
  $args = array();
518
 
519
  exit();
520
  case 'sq_ajax_research_process':
521
+ @ini_set("max_execution_time", 300);
522
+
523
  SQ_Classes_Helpers_Tools::setHeader('json');
524
  $keywords = SQ_Classes_Helpers_Tools::getValue('keywords', false);
525
  $country = SQ_Classes_Helpers_Tools::getValue('country', 'com');
controllers/SeoSettings.php CHANGED
@@ -5,6 +5,9 @@ class SQ_Controllers_SeoSettings extends SQ_Classes_FrontController {
5
  public $pages = array();
6
 
7
  function init() {
 
 
 
8
  $tab = SQ_Classes_Helpers_Tools::getValue('tab', 'bulkseo');
9
 
10
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
@@ -49,11 +52,11 @@ class SQ_Controllers_SeoSettings extends SQ_Classes_FrontController {
49
  $paged = SQ_Classes_Helpers_Tools::getValue('spage', 1);
50
  $post_id = SQ_Classes_Helpers_Tools::getValue('sid', false);
51
  $post_type = SQ_Classes_Helpers_Tools::getValue('stype', 'post');
52
- $post_per_page = SQ_Classes_Helpers_Tools::getValue('cnt', 20);
53
  $post_status = SQ_Classes_Helpers_Tools::getValue('sstatus', '');
54
 
55
  if ($search <> '') {
56
- $post_per_page = -1;
57
  } else {
58
  $patterns = SQ_Classes_Helpers_Tools::getOption('patterns');
59
  if (!isset($patterns[$post_type])) {
@@ -95,7 +98,6 @@ class SQ_Controllers_SeoSettings extends SQ_Classes_FrontController {
95
  'order' => 'DESC',
96
  );
97
 
98
-
99
  //If post id is set in URL
100
  if ($post_id) {
101
  $query['post__in'] = explode(',', $post_id);
@@ -108,6 +110,7 @@ class SQ_Controllers_SeoSettings extends SQ_Classes_FrontController {
108
 
109
  $wp_query = new WP_Query($query);
110
  $posts = $wp_query->get_posts();
 
111
 
112
  if (!empty($posts)) {
113
  foreach ($posts as $post) {
@@ -209,7 +212,7 @@ class SQ_Controllers_SeoSettings extends SQ_Classes_FrontController {
209
  }
210
 
211
 
212
- if (!empty($labels) || count($this->pages) > 1) {
213
  //Get the labels for view use
214
  $this->labels = SQ_Classes_ObjController::getClass('SQ_Models_BulkSeo')->getLabels();
215
  }
@@ -604,7 +607,7 @@ class SQ_Controllers_SeoSettings extends SQ_Classes_FrontController {
604
  maybe_serialize($metas),
605
  gmdate('Y-m-d H:i:s'));
606
  }
607
- SQ_Classes_Error::setMessage(sprintf(__('%s SEO records were imported successfuly! You can now deactivate the %s plugin', _SQ_PLUGIN_NAME_), count($seo), SQ_Classes_ObjController::getClass('SQ_Models_ImportExport')->getName($platform)));
608
  }
609
  }
610
  break;
@@ -642,7 +645,7 @@ class SQ_Controllers_SeoSettings extends SQ_Classes_FrontController {
642
  maybe_serialize($metas),
643
  gmdate('Y-m-d H:i:s'));
644
  }
645
- SQ_Classes_Error::setMessage(sprintf(__('%s SEO records were imported successfuly! You can now deactivate the %s plugin', _SQ_PLUGIN_NAME_), count($seo), SQ_Classes_ObjController::getClass('SQ_Models_ImportExport')->getName($platform)));
646
  } else {
647
  SQ_Classes_Error::setMessage(sprintf(__('There are no SEO records with this plugin. You can now deactivate the %s plugin', _SQ_PLUGIN_NAME_), SQ_Classes_ObjController::getClass('SQ_Models_ImportExport')->getName($platform)));
648
 
5
  public $pages = array();
6
 
7
  function init() {
8
+ //Clear the Scripts and Styles from other plugins
9
+ SQ_Classes_ObjController::getClass('SQ_Models_Compatibility')->clearStyles();
10
+
11
  $tab = SQ_Classes_Helpers_Tools::getValue('tab', 'bulkseo');
12
 
13
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
52
  $paged = SQ_Classes_Helpers_Tools::getValue('spage', 1);
53
  $post_id = SQ_Classes_Helpers_Tools::getValue('sid', false);
54
  $post_type = SQ_Classes_Helpers_Tools::getValue('stype', 'post');
55
+ $post_per_page = SQ_Classes_Helpers_Tools::getValue('cnt', 10);
56
  $post_status = SQ_Classes_Helpers_Tools::getValue('sstatus', '');
57
 
58
  if ($search <> '') {
59
+ $post_per_page = 50;
60
  } else {
61
  $patterns = SQ_Classes_Helpers_Tools::getOption('patterns');
62
  if (!isset($patterns[$post_type])) {
98
  'order' => 'DESC',
99
  );
100
 
 
101
  //If post id is set in URL
102
  if ($post_id) {
103
  $query['post__in'] = explode(',', $post_id);
110
 
111
  $wp_query = new WP_Query($query);
112
  $posts = $wp_query->get_posts();
113
+ $wp_query->is_paged = false; //remove pagination
114
 
115
  if (!empty($posts)) {
116
  foreach ($posts as $post) {
212
  }
213
 
214
 
215
+ if (!empty($labels) || count((array)$this->pages) > 1) {
216
  //Get the labels for view use
217
  $this->labels = SQ_Classes_ObjController::getClass('SQ_Models_BulkSeo')->getLabels();
218
  }
607
  maybe_serialize($metas),
608
  gmdate('Y-m-d H:i:s'));
609
  }
610
+ SQ_Classes_Error::setMessage(sprintf(__('%s SEO records were imported successfuly! You can now deactivate the %s plugin', _SQ_PLUGIN_NAME_), count((array)$seo), SQ_Classes_ObjController::getClass('SQ_Models_ImportExport')->getName($platform)));
611
  }
612
  }
613
  break;
645
  maybe_serialize($metas),
646
  gmdate('Y-m-d H:i:s'));
647
  }
648
+ SQ_Classes_Error::setMessage(sprintf(__('%s SEO records were imported successfuly! You can now deactivate the %s plugin', _SQ_PLUGIN_NAME_), count((array)$seo), SQ_Classes_ObjController::getClass('SQ_Models_ImportExport')->getName($platform)));
649
  } else {
650
  SQ_Classes_Error::setMessage(sprintf(__('There are no SEO records with this plugin. You can now deactivate the %s plugin', _SQ_PLUGIN_NAME_), SQ_Classes_ObjController::getClass('SQ_Models_ImportExport')->getName($platform)));
651
 
controllers/Snippet.php CHANGED
@@ -179,7 +179,6 @@ class SQ_Controllers_Snippet extends SQ_Classes_FrontController {
179
  if ($this->post = $this->model->getCurrentSnippet($post_id, $term_id, $taxonomy, $post_type)) {
180
  $json['html'] = $this->getView('Blocks/Snippet');
181
  }
182
-
183
  if (SQ_Classes_Helpers_Tools::isAjax()) {
184
  SQ_Classes_Helpers_Tools::setHeader('json');
185
 
@@ -201,6 +200,7 @@ class SQ_Controllers_Snippet extends SQ_Classes_FrontController {
201
  $post_type = SQ_Classes_Helpers_Tools::getValue('post_type', 'post');
202
 
203
  if ($this->post = $this->model->getCurrentSnippet($post_id, $term_id, $taxonomy, $post_type)) {
 
204
  $json['html'] = $this->getView('Blocks/Snippet');
205
  }
206
 
179
  if ($this->post = $this->model->getCurrentSnippet($post_id, $term_id, $taxonomy, $post_type)) {
180
  $json['html'] = $this->getView('Blocks/Snippet');
181
  }
 
182
  if (SQ_Classes_Helpers_Tools::isAjax()) {
183
  SQ_Classes_Helpers_Tools::setHeader('json');
184
 
200
  $post_type = SQ_Classes_Helpers_Tools::getValue('post_type', 'post');
201
 
202
  if ($this->post = $this->model->getCurrentSnippet($post_id, $term_id, $taxonomy, $post_type)) {
203
+ SQ_Debug::dump($this->post);
204
  $json['html'] = $this->getView('Blocks/Snippet');
205
  }
206
 
core/BlockFocusPages.php CHANGED
@@ -8,24 +8,26 @@ class SQ_Core_BlockFocusPages extends SQ_Classes_BlockController {
8
  //Get the audits for the focus pages
9
  $audits = SQ_Classes_RemoteController::getFocusAudits();
10
 
11
- foreach ($focuspages as $focuspage) {
12
- //Add the audit data if exists
13
- if (!empty($audits)) {
14
- foreach ($audits as $audit) {
15
- if ($focuspage->user_post_id == $audit->user_post_id) {
16
- $audit = json_decode($audit->audit);
17
- if (isset($audit->properties) && isset($audit->properties->created_at->date)) {
18
- $focuspage->audit_datetime = date(get_option('date_format') . ' ' . get_option('time_format'), strtotime($audit->properties->created_at->date));
19
- } else {
20
- $focuspage->audit_datetime = __('Audit in progress', _SQ_PLUGIN_NAME_);
 
 
21
  }
22
  }
23
  }
24
- }
25
 
26
- /** @var SQ_Models_Domain_FocusPage $focuspage */
27
- $this->focuspages[] = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_FocusPage', $focuspage);
28
 
 
29
  }
30
  }
31
  echo $this->getView('Blocks/FocusPages');
8
  //Get the audits for the focus pages
9
  $audits = SQ_Classes_RemoteController::getFocusAudits();
10
 
11
+ if(!empty($focuspages)) {
12
+ foreach ($focuspages as $focuspage) {
13
+ //Add the audit data if exists
14
+ if (isset($focuspage->user_post_id) && !empty($audits)) {
15
+ foreach ($audits as $audit) {
16
+ if ($focuspage->user_post_id == $audit->user_post_id) {
17
+ $audit = json_decode($audit->audit);
18
+ if (isset($audit->properties) && isset($audit->properties->created_at->date)) {
19
+ $focuspage->audit_datetime = date(get_option('date_format') . ' ' . get_option('time_format'), strtotime($audit->properties->created_at->date));
20
+ } else {
21
+ $focuspage->audit_datetime = __('Audit in progress', _SQ_PLUGIN_NAME_);
22
+ }
23
  }
24
  }
25
  }
 
26
 
27
+ /** @var SQ_Models_Domain_FocusPage $focuspage */
28
+ $this->focuspages[] = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_FocusPage', $focuspage);
29
 
30
+ }
31
  }
32
  }
33
  echo $this->getView('Blocks/FocusPages');
core/BlockJorney.php CHANGED
@@ -16,6 +16,10 @@ class SQ_Core_BlockJorney extends SQ_Classes_BlockController {
16
  return false;
17
  }
18
 
 
 
 
 
19
  $days = 1;
20
  $seconds = strtotime(date('Y-m-d')) - strtotime($seojorney);
21
 
@@ -24,10 +28,6 @@ class SQ_Core_BlockJorney extends SQ_Classes_BlockController {
24
  $days = (int)$days + 1;
25
  }
26
 
27
- if ($days > 14) {
28
- return false;
29
- }
30
-
31
  $this->days = $days;
32
  echo $this->getView('Blocks/Jorney');
33
  }
@@ -35,4 +35,18 @@ class SQ_Core_BlockJorney extends SQ_Classes_BlockController {
35
  public function getJourneyDays() {
36
  return $this->days;
37
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  }
16
  return false;
17
  }
18
 
19
+ if (!SQ_Classes_Helpers_Tools::getOption('sq_seojourney_congrats')) {
20
+ return false;
21
+ }
22
+
23
  $days = 1;
24
  $seconds = strtotime(date('Y-m-d')) - strtotime($seojorney);
25
 
28
  $days = (int)$days + 1;
29
  }
30
 
 
 
 
 
31
  $this->days = $days;
32
  echo $this->getView('Blocks/Jorney');
33
  }
35
  public function getJourneyDays() {
36
  return $this->days;
37
  }
38
+
39
+ /**
40
+ * 14 days journey action
41
+ */
42
+ public function action() {
43
+ parent::action();
44
+ switch (SQ_Classes_Helpers_Tools::getValue('action')) {
45
+ //login action
46
+ case 'sq_journey_close':
47
+ SQ_Classes_Helpers_Tools::saveOptions('sq_seojourney_congrats', 0);
48
+ break;
49
+
50
+ }
51
+ }
52
  }
core/BlockStats.php CHANGED
@@ -14,6 +14,10 @@ class SQ_Core_BlockStats extends SQ_Classes_BlockController {
14
  function hookGetContent() {
15
  //get the stats from Dashboard
16
  $this->stats = SQ_Classes_RemoteController::getStats();
 
 
 
 
17
  }
18
 
19
 
14
  function hookGetContent() {
15
  //get the stats from Dashboard
16
  $this->stats = SQ_Classes_RemoteController::getStats();
17
+
18
+ if(is_wp_error($this->stats)){
19
+ $this->stats = array();
20
+ }
21
  }
22
 
23
 
core/BlockSupport.php CHANGED
@@ -2,11 +2,12 @@
2
 
3
  class SQ_Core_BlockSupport extends SQ_Classes_BlockController {
4
 
5
- public function init(){
6
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('support');
7
 
8
  echo $this->getView('Blocks/Support');
9
  }
 
10
  /**
11
  * Called when Post action is triggered
12
  *
@@ -26,10 +27,9 @@ class SQ_Core_BlockSupport extends SQ_Classes_BlockController {
26
  $from = $current_user->user_email;
27
  }
28
  $subject = __('Plugin Feedback', _SQ_PLUGIN_NAME_);
29
- $face = SQ_Classes_Helpers_Tools::getValue('feedback');
30
- $message = SQ_Classes_Helpers_Tools::getValue('message');
31
 
32
- if ($message <> '' || (int)$face > 0) {
33
  switch ($face) {
34
  case 1:
35
  $face = 'Angry';
2
 
3
  class SQ_Core_BlockSupport extends SQ_Classes_BlockController {
4
 
5
+ public function init() {
6
  SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('support');
7
 
8
  echo $this->getView('Blocks/Support');
9
  }
10
+
11
  /**
12
  * Called when Post action is triggered
13
  *
27
  $from = $current_user->user_email;
28
  }
29
  $subject = __('Plugin Feedback', _SQ_PLUGIN_NAME_);
30
+ $face = SQ_Classes_Helpers_Tools::getValue('feedback', false);
 
31
 
32
+ if ($face) {
33
  switch ($face) {
34
  case 1:
35
  $face = 'Angry';
languages/squirrly-seo-en_US.mo CHANGED
Binary file
languages/squirrly-seo-en_US.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: \n"
4
- "POT-Creation-Date: 2019-04-19 11:02+0300\n"
5
- "PO-Revision-Date: 2019-04-19 11:02+0300\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: en_US\n"
@@ -19,244 +19,244 @@ msgstr ""
19
  msgid "Don't bother me!"
20
  msgstr ""
21
 
22
- #: classes/RemoteController.php:264
23
  msgid "Articles optimized so far"
24
  msgstr ""
25
 
26
- #: classes/RemoteController.php:266 classes/RemoteController.php:273
27
  msgid "add post"
28
  msgstr ""
29
 
30
- #: classes/RemoteController.php:271
31
  msgid "Average optimization"
32
  msgstr ""
33
 
34
- #: classes/RemoteController.php:278
35
  msgid "All Keyword Researches performed for all websites"
36
  msgstr ""
37
 
38
- #: classes/RemoteController.php:280
39
  msgid "do research"
40
  msgstr ""
41
 
42
- #: classes/RemoteController.php:285
43
  msgid "Keywords stored in Squirrly Briefcase"
44
  msgstr ""
45
 
46
- #: classes/RemoteController.php:287
47
  msgid "add keyword"
48
  msgstr ""
49
 
50
- #: classes/RemoteController.php:292
51
  msgid "Pages ranking in top 100 Google"
52
  msgstr ""
53
 
54
- #: classes/RemoteController.php:294
55
  msgid "see rankings"
56
  msgstr ""
57
 
58
- #: classes/RemoteController.php:299
59
  msgid "SEO Audits"
60
  msgstr ""
61
 
62
- #: classes/RemoteController.php:301
63
  msgid "see audits"
64
  msgstr ""
65
 
66
- #: classes/RemoteController.php:948
67
  msgid "Recent discussions:"
68
  msgstr ""
69
 
70
- #: classes/RemoteController.php:948
71
  msgid "SEO Search Volume:"
72
  msgstr ""
73
 
74
- #: classes/RemoteController.php:948
75
  msgid "Competition:"
76
  msgstr ""
77
 
78
- #: classes/RemoteController.php:948
79
  msgid "Trend:"
80
  msgstr ""
81
 
82
- #: classes/RemoteController.php:949
83
  msgid "Keyword:"
84
  msgstr ""
85
 
86
- #: classes/RemoteController.php:950
87
  msgid "date"
88
  msgstr ""
89
 
90
- #: classes/RemoteController.php:951 controllers/CheckSeo.php:105
91
  #: controllers/Patterns.php:15 controllers/Research.php:292
92
  #: controllers/Research.php:324 controllers/Research.php:380
93
  msgid "Saved!"
94
  msgstr ""
95
 
96
- #: classes/RemoteController.php:952
97
  msgid "Read it!"
98
  msgstr ""
99
 
100
- #: classes/RemoteController.php:953
101
  msgid "Insert it!"
102
  msgstr ""
103
 
104
- #: classes/RemoteController.php:954
105
  msgid "Reference"
106
  msgstr ""
107
 
108
- #: classes/RemoteController.php:955
109
  msgid "Insert as box"
110
  msgstr ""
111
 
112
- #: classes/RemoteController.php:956
113
  msgid "Insert Link"
114
  msgstr ""
115
 
116
- #: classes/RemoteController.php:957
117
  msgid "Not relevant?"
118
  msgstr ""
119
 
120
- #: classes/RemoteController.php:958
121
  msgid "Insert in your article"
122
  msgstr ""
123
 
124
- #: classes/RemoteController.php:959
125
  msgid ":( An error occurred while processing your request. Please try again"
126
  msgstr ""
127
 
128
- #: classes/RemoteController.php:960
129
  msgid "Keyword Research takes too long to get the results. Click to try again"
130
  msgstr ""
131
 
132
- #: classes/RemoteController.php:961
133
  msgid "No results found!"
134
  msgstr ""
135
 
136
- #: classes/RemoteController.php:962
137
  msgid "Enter one more word to find relevant results"
138
  msgstr ""
139
 
140
- #: classes/RemoteController.php:963
141
  #, fuzzy
142
  #| msgid "Takes too long to check this keyword ..."
143
  msgid "It's taking too long to check this keyword"
144
  msgstr "It’s taking too long to check this keyword"
145
 
146
- #: classes/RemoteController.php:964
147
  msgid "Do a research!"
148
  msgstr ""
149
 
150
- #: classes/RemoteController.php:965
151
  msgid "Do more research!"
152
  msgstr ""
153
 
154
- #: classes/RemoteController.php:966
155
  #, php-format
156
  msgid "[ ATTRIBUTE: Please check: %s to find out how to attribute this image ]"
157
  msgstr ""
158
 
159
- #: classes/RemoteController.php:967
160
  msgid "Has creative commons attributes"
161
  msgstr ""
162
 
163
- #: classes/RemoteController.php:968
164
  msgid "No known copyright restrictions"
165
  msgstr ""
166
 
167
- #: classes/RemoteController.php:969
168
  msgid ""
169
  "You haven`t used Squirrly SEO to optimize your article. Do you want to "
170
  "optimize for a keyword before publishing?"
171
  msgstr ""
172
 
173
- #: classes/RemoteController.php:970
174
  msgid "Keyword Research limit exceeded"
175
  msgstr ""
176
 
177
- #: classes/RemoteController.php:971
178
  msgid "Your Subscription has Expired"
179
  msgstr ""
180
 
181
- #: classes/RemoteController.php:972
182
  msgid "Add 20 Keyword Researches"
183
  msgstr ""
184
 
185
- #: classes/RemoteController.php:973
186
  msgid "There are no keywords saved in briefcase yet"
187
  msgstr ""
188
 
189
- #: classes/RemoteController.php:974
190
  #, php-format
191
  msgid "Congratulations! Your article is 100% optimized!"
192
  msgstr ""
193
 
194
- #: classes/RemoteController.php:975
195
  #, php-format
196
  msgid "appears too many times. Try to remove %s of them"
197
  msgstr ""
198
 
199
- #: classes/RemoteController.php:976
200
  #, php-format
201
  msgid "write %s more words"
202
  msgstr ""
203
 
204
- #: classes/RemoteController.php:977
205
  #, php-format
206
  msgid "Add the keyword in the %s of your article"
207
  msgstr ""
208
 
209
- #: classes/RemoteController.php:978
210
  msgid "Click to keep the highlight on"
211
  msgstr ""
212
 
213
- #: classes/RemoteController.php:979
214
  msgid "introduction"
215
  msgstr ""
216
 
217
- #: classes/RemoteController.php:980
218
  #, php-format
219
  msgid "Write more words after the %s keyword"
220
  msgstr ""
221
 
222
- #: classes/RemoteController.php:981
223
  msgid "or use synonyms"
224
  msgstr ""
225
 
226
- #: classes/RemoteController.php:982
227
  #, php-format
228
  msgid "add %s more word(s)"
229
  msgstr ""
230
 
231
- #: classes/RemoteController.php:983
232
  #, php-format
233
  msgid "or remove %s word(s)"
234
  msgstr ""
235
 
236
- #: classes/RemoteController.php:984
237
  #, php-format
238
  msgid "add %s more keyword(s)"
239
  msgstr ""
240
 
241
- #: classes/RemoteController.php:985
242
  #, php-format
243
  msgid "write %s more words to start calculating"
244
  msgstr ""
245
 
246
- #: classes/RemoteController.php:986 view/Research/Research.php:42
247
  msgid "Add to Briefcase"
248
  msgstr ""
249
 
250
- #: classes/RemoteController.php:987
251
  msgid "Add Keyword to Briefcase"
252
  msgstr ""
253
 
254
- #: classes/RemoteController.php:988 view/Blocks/KRFound.php:78
255
  msgid "Use Keyword"
256
  msgstr ""
257
 
258
- #: classes/RemoteController.php:989 view/Blocks/Snippet.php:146
259
- #: view/Blocks/Snippet.php:518 view/Blocks/Snippet.php:774
260
  msgid "Auto Draft"
261
  msgstr ""
262
 
@@ -296,59 +296,59 @@ msgstr "The code for Facebook Pixel must only contain numbers."
296
  msgid "The code for Facebook App must only contain numbers."
297
  msgstr "The code for Facebook App must only contain numbers."
298
 
299
- #: classes/helpers/Tools.php:82
300
  msgid "Getting started"
301
  msgstr ""
302
 
303
- #: classes/helpers/Tools.php:107
304
  msgid "Documentation"
305
  msgstr ""
306
 
307
- #: classes/helpers/Tools.php:108
308
  msgid "Leave a review"
309
  msgstr ""
310
 
311
- #: classes/helpers/Tools.php:386
312
  msgid "Format"
313
  msgstr ""
314
 
315
- #: classes/helpers/Tools.php:403 classes/helpers/Tools.php:437
316
  msgid "Category"
317
  msgstr ""
318
 
319
- #: classes/helpers/Tools.php:420 classes/helpers/Tools.php:454
320
  msgid "Tag"
321
  msgstr ""
322
 
323
- #: classes/helpers/Tools.php:471
324
  msgid "Shipping Option"
325
  msgstr ""
326
 
327
- #: classes/helpers/Tools.php:488
328
  msgid "Author at"
329
  msgstr ""
330
 
331
- #: classes/helpers/Tools.php:556
332
  msgid "Are you looking for"
333
  msgstr ""
334
 
335
- #: classes/helpers/Tools.php:557
336
  msgid "These are the results for"
337
  msgstr ""
338
 
339
- #: classes/helpers/Tools.php:557
340
  msgid "that you can find on our website."
341
  msgstr ""
342
 
343
- #: classes/helpers/Tools.php:590
344
  msgid "Page not found"
345
  msgstr ""
346
 
347
- #: classes/helpers/Tools.php:591
348
  msgid "This page could not be found on our website."
349
  msgstr ""
350
 
351
- #: classes/helpers/Tools.php:874 classes/helpers/Tools.php:885
352
  #, fuzzy, php-format
353
  #| msgid ""
354
  #| "Good news, %s is integrated in Squirrly SEO now and you don't have to run "
@@ -484,12 +484,12 @@ msgid "No keyword found."
484
  msgstr ""
485
 
486
  #: controllers/Assistant.php:95 controllers/Assistant.php:122
487
- #: controllers/Audits.php:80 controllers/Ranking.php:113
488
- #: controllers/SeoSettings.php:285 controllers/SeoSettings.php:302
489
- #: controllers/SeoSettings.php:322 controllers/SeoSettings.php:359
490
- #: controllers/SeoSettings.php:385 controllers/SeoSettings.php:413
491
- #: controllers/SeoSettings.php:664 controllers/SeoSettings.php:700
492
- #: controllers/SeoSettings.php:737
493
  msgid "Saved"
494
  msgstr ""
495
 
@@ -500,11 +500,11 @@ msgstr ""
500
  #: controllers/Research.php:213 controllers/Research.php:273
501
  #: controllers/Research.php:304 controllers/Research.php:332
502
  #: controllers/Research.php:357 controllers/Research.php:388
503
- #: controllers/Research.php:411 controllers/Research.php:469
504
- #: controllers/SeoSettings.php:479 controllers/SeoSettings.php:651
505
- #: controllers/SeoSettings.php:677 controllers/SeoSettings.php:715
506
- #: controllers/SeoSettings.php:752 controllers/SeoSettings.php:790
507
- #: controllers/Snippet.php:143
508
  msgid "You do not have permission to perform this action"
509
  msgstr ""
510
 
@@ -512,7 +512,7 @@ msgstr ""
512
  msgid "Error: Could not save the data."
513
  msgstr ""
514
 
515
- #: controllers/Audits.php:82
516
  msgid "Not a valid email address"
517
  msgstr ""
518
 
@@ -532,103 +532,103 @@ msgstr ""
532
  msgid "Saved! This task will be ignored in the future."
533
  msgstr ""
534
 
535
- #: controllers/FocusPages.php:159
536
  #, fuzzy
537
  #| msgid "Focus Page does not exists or was deleted from your website."
538
  msgid "Focus Page does not exist or was deleted from your website."
539
  msgstr "Focus Page does not exist or was deleted from your website."
540
 
541
- #: controllers/FocusPages.php:197
542
  msgid "Focus page is added. The audit may take a while so please be patient."
543
  msgstr ""
544
 
545
- #: controllers/FocusPages.php:200
546
  msgid "You reached the maximum number of focus pages for your account."
547
  msgstr ""
548
 
549
- #: controllers/FocusPages.php:203
550
  msgid "Error! Could not add the focus page."
551
  msgstr ""
552
 
553
- #: controllers/FocusPages.php:206 controllers/FocusPages.php:238
554
  msgid "Error! This focus page is not public."
555
  msgstr ""
556
 
557
- #: controllers/FocusPages.php:209 controllers/FocusPages.php:241
558
  msgid "Error! Could not find the focus page in your website."
559
  msgstr ""
560
 
561
- #: controllers/FocusPages.php:229
562
  msgid "Focus page sent for recheck. It may take a while so please be patient."
563
  msgstr ""
564
 
565
- #: controllers/FocusPages.php:232
566
  #, fuzzy
567
  #| msgid "Too many requests, please wait 5 minutes."
568
  msgid "You've made too many requests, please wait a few minutes."
569
  msgstr "You've made too many requests, please wait a few minutes. "
570
 
571
- #: controllers/FocusPages.php:235
572
  msgid "Error! Could not refresh the focus page."
573
  msgstr ""
574
 
575
- #: controllers/FocusPages.php:252
576
  msgid "The focus page is deleted"
577
  msgstr ""
578
 
579
- #: controllers/FocusPages.php:254 controllers/Ranking.php:151
580
  #: controllers/Research.php:180 controllers/Research.php:183
581
  #: controllers/Research.php:207 controllers/Research.php:326
582
- #: controllers/Research.php:351 controllers/Research.php:514
583
- #: controllers/Research.php:559 controllers/Research.php:583
584
  msgid "Invalid params!"
585
  msgstr ""
586
 
587
- #: controllers/Menu.php:83
588
  #, php-format
589
  msgid ""
590
  "An error occurred during activation. If this error persists, please contact "
591
  "us at: %s"
592
  msgstr ""
593
 
594
- #: controllers/Menu.php:120 models/Menu.php:123
595
  msgid "Dashboard"
596
  msgstr ""
597
 
598
- #: controllers/Menu.php:144 controllers/Menu.php:248
599
  #: view/Blocks/SLASearch.php:7
600
  msgid "Squirrly SEO"
601
  msgstr ""
602
 
603
- #: controllers/Menu.php:200
604
  msgid "SEO Snippet"
605
  msgstr ""
606
 
607
- #: controllers/Menu.php:209 controllers/Snippet.php:114
608
  msgid "Custom SEO"
609
  msgstr ""
610
 
611
- #: controllers/Menu.php:256
612
  msgid "Squirrly Onboarding"
613
  msgstr ""
614
 
615
- #: controllers/Menu.php:257
616
  msgid "Onboarding"
617
  msgstr ""
618
 
619
- #: controllers/Menu.php:276
620
  msgid "Squirrly Account Info"
621
  msgstr ""
622
 
623
- #: controllers/Menu.php:277
624
  msgid "Account Info"
625
  msgstr ""
626
 
627
- #: controllers/Menu.php:284
628
  msgid "Squirrly How To & Support"
629
  msgstr ""
630
 
631
- #: controllers/Menu.php:285
632
  msgid "Help & Support"
633
  msgstr ""
634
 
@@ -720,102 +720,106 @@ msgstr ""
720
  msgid "Invalid Label or Color!"
721
  msgstr ""
722
 
723
- #: controllers/Research.php:432 controllers/Research.php:453
724
- #: controllers/SeoSettings.php:524
725
  msgid "Great! The backup is restored."
726
  msgstr ""
727
 
728
- #: controllers/Research.php:456 controllers/Research.php:460
729
- #: controllers/SeoSettings.php:526 controllers/SeoSettings.php:529
730
- #: controllers/SeoSettings.php:573 controllers/SeoSettings.php:576
731
  msgid "Error! The backup is not valid."
732
  msgstr ""
733
 
734
- #: controllers/Research.php:463 controllers/SeoSettings.php:532
735
- #: controllers/SeoSettings.php:579
736
  #, fuzzy
737
  #| msgid "Error! You have to enter a previous saved backup file."
738
  msgid "Error! You have to enter a previously saved backup file."
739
  msgstr "Error! You have to enter a previously saved backup file."
740
 
741
- #: controllers/Research.php:484
742
  #, fuzzy
743
  #| msgid "Could not add the keyword to Serp Check. Please try again."
744
  msgid "Could not add the keyword to SERP Check. Please try again."
745
  msgstr "Could not add the keyword to SERP Check. Please try again."
746
 
747
- #: controllers/Research.php:486
748
  #, fuzzy
749
  #| msgid "The keyword is added to Serp Check."
750
  msgid "The keyword is added to SERP Check."
751
  msgstr "The keyword is added to SERP Check."
752
 
753
- #: controllers/Research.php:489
754
  msgid "Invalid parameters."
755
  msgstr ""
756
 
757
- #: controllers/SeoSettings.php:457
758
  msgid "Google Analytics account is disconnected."
759
  msgstr ""
760
 
761
- #: controllers/SeoSettings.php:459 controllers/SeoSettings.php:473
762
  msgid "Error! Could not disconnect the account."
763
  msgstr ""
764
 
765
- #: controllers/SeoSettings.php:471
766
  msgid "Google Search Console account is disconnected."
767
  msgstr ""
768
 
769
- #: controllers/SeoSettings.php:570
770
  msgid "Great! The SEO backup is restored."
771
  msgstr ""
772
 
773
- #: controllers/SeoSettings.php:587
774
  msgid "Settings imported successfuly!"
775
  msgstr ""
776
 
777
- #: controllers/SeoSettings.php:600 controllers/SeoSettings.php:638
778
  #, php-format
779
  msgid ""
780
  "%s SEO records were imported successfuly! You can now deactivate the %s "
781
  "plugin"
782
  msgstr ""
783
 
784
- #: controllers/SeoSettings.php:613
785
  msgid "All the Plugin settings were imported successfuly!"
786
  msgstr ""
787
 
788
- #: controllers/SeoSettings.php:615
789
  msgid "No settings found for this plugin/theme."
790
  msgstr ""
791
 
792
- #: controllers/SeoSettings.php:640
793
  #, php-format
794
  msgid ""
795
  "There are no SEO records with this plugin. You can now deactivate the %s "
796
  "plugin"
797
  msgstr ""
798
 
799
- #: controllers/SeoSettings.php:666
800
  msgid "Could not save the changes"
801
  msgstr ""
802
 
803
- #: controllers/SeoSettings.php:708 controllers/SeoSettings.php:745
804
  msgid "Could not add the post type"
805
  msgstr ""
806
 
807
- #: controllers/Snippet.php:66
808
  msgid "Squirrly SEO Snippet"
809
  msgstr ""
810
 
811
- #: controllers/Snippet.php:161
812
  msgid "Could not save the data"
813
  msgstr ""
814
 
815
- #: core/BlockFocusPages.php:20 models/FocusPages.php:102
816
  msgid "Audit in progress"
817
  msgstr ""
818
 
 
 
 
 
819
  #: core/BlockSupport.php:28
820
  msgid "Plugin Feedback"
821
  msgstr ""
@@ -955,8 +959,8 @@ msgid ""
955
  "you'll find out what you need to do to complete the task and turn it Green."
956
  msgstr ""
957
 
958
- #: models/Assistant.php:109 view/Blocks/Jorney.php:29
959
- #: view/Blocks/KRHistory.php:43 view/Research/History.php:55
960
  msgid "Do Keyword Research"
961
  msgstr ""
962
 
@@ -1064,7 +1068,7 @@ msgid ""
1064
  "sure you click on SAVE settings after you switch anything on or off."
1065
  msgstr ""
1066
 
1067
- #: models/Assistant.php:148 view/Blocks/Snippet.php:385
1068
  #: view/SeoSettings/Jsonld.php:28
1069
  #, fuzzy
1070
  #| msgid "Activate Json-LD"
@@ -1104,7 +1108,7 @@ msgstr ""
1104
  "Then, at URL-level you will be able to add custom JSON-LD if you're an "
1105
  "advanced user."
1106
 
1107
- #: models/Assistant.php:153 view/Blocks/Snippet.php:488
1108
  #: view/SeoSettings/Automation.php:323 view/SeoSettings/Social.php:52
1109
  msgid "Activate Open Graph"
1110
  msgstr ""
@@ -1119,7 +1123,7 @@ msgid ""
1119
  "your site."
1120
  msgstr ""
1121
 
1122
- #: models/Assistant.php:158 view/Blocks/Snippet.php:742
1123
  #: view/SeoSettings/Automation.php:350 view/SeoSettings/Social.php:275
1124
  msgid "Activate Twitter Card"
1125
  msgstr ""
@@ -1323,7 +1327,7 @@ msgid ""
1323
  "those tasks and turning elements to green you'll complete this task."
1324
  msgstr ""
1325
 
1326
- #: models/Assistant.php:277
1327
  #, fuzzy
1328
  #| msgid "You choosed to ignore this task. Click to activate it."
1329
  msgid "You chose to ignore this task. Click to activate it."
@@ -1333,15 +1337,15 @@ msgstr "You chose to ignore this task. Click to activate it."
1333
  msgid "METAs"
1334
  msgstr ""
1335
 
1336
- #: models/BulkSeo.php:18 view/Blocks/Snippet.php:98
1337
  msgid "Open Graph"
1338
  msgstr ""
1339
 
1340
- #: models/BulkSeo.php:19 view/Blocks/Snippet.php:101
1341
  msgid "Twitter Card"
1342
  msgstr ""
1343
 
1344
- #: models/BulkSeo.php:20 models/FocusPages.php:20 view/Blocks/Snippet.php:110
1345
  msgid "Visibility"
1346
  msgstr ""
1347
 
@@ -1469,7 +1473,7 @@ msgid ""
1469
  msgstr ""
1470
 
1471
  #: models/CheckSeo.php:56 models/CheckSeo.php:57
1472
- #: models/bulkseo/Visibility.php:104 view/Blocks/Snippet.php:1077
1473
  msgid "Discourage search engines from indexing this site"
1474
  msgstr ""
1475
 
@@ -1517,8 +1521,8 @@ msgstr ""
1517
  msgid "Change the Tagline with your Brand or the Store name from %s"
1518
  msgstr ""
1519
 
1520
- #: models/CheckSeo.php:69 models/Menu.php:229 models/Menu.php:263
1521
- #: models/Menu.php:283
1522
  msgid "Settings"
1523
  msgstr ""
1524
 
@@ -1542,11 +1546,11 @@ msgstr ""
1542
  msgid "Activate AMP tracking in %s Squirrly > SEO Settings > Tracking Tools%s "
1543
  msgstr ""
1544
 
1545
- #: models/CheckSeo.php:143
1546
  msgid "Could not verify the frontend."
1547
  msgstr ""
1548
 
1549
- #: models/CheckSeo.php:447
1550
  msgid "Just another WordPress site"
1551
  msgstr ""
1552
 
@@ -1557,7 +1561,7 @@ msgstr ""
1557
  #: models/focuspages/Keyword.php:82 models/focuspages/Snippet.php:124
1558
  #: models/focuspages/Strategy.php:88 view/Blocks/KRFound.php:15
1559
  #: view/Blocks/KRHistory.php:15 view/Ranking/Gscsync.php:29
1560
- #: view/Ranking/Rankings.php:145 view/Ranking/Rankings.php:174
1561
  #: view/Research/Briefcase.php:66 view/Research/Briefcase.php:106
1562
  #: view/Research/History.php:25 view/Research/HistoryDetails.php:7
1563
  #: view/Research/Research.php:158 view/Research/Suggested.php:24
@@ -1625,12 +1629,12 @@ msgid "CTR"
1625
  msgstr ""
1626
 
1627
  #: models/FocusPages.php:37 view/Ranking/Gscsync.php:31
1628
- #: view/Ranking/Rankings.php:188
1629
  msgid "Impressions"
1630
  msgstr ""
1631
 
1632
  #: models/FocusPages.php:38 view/Ranking/Gscsync.php:30
1633
- #: view/Ranking/Rankings.php:194
1634
  msgid "Clicks"
1635
  msgstr ""
1636
 
@@ -1663,7 +1667,7 @@ msgstr ""
1663
  msgid "The favicon has been updated."
1664
  msgstr ""
1665
 
1666
- #: models/Menu.php:123 models/Menu.php:361
1667
  msgid "First Step"
1668
  msgstr ""
1669
 
@@ -1695,7 +1699,7 @@ msgstr ""
1695
  msgid " SEO Settings"
1696
  msgstr ""
1697
 
1698
- #: models/Menu.php:155 models/Menu.php:237 view/Blocks/FocusPages.php:6
1699
  #: view/FocusPages/Pagelist.php:19
1700
  msgid "Focus Pages"
1701
  msgstr ""
@@ -1712,7 +1716,7 @@ msgstr ""
1712
  msgid " SEO Audit"
1713
  msgstr ""
1714
 
1715
- #: models/Menu.php:171 models/Menu.php:271
1716
  msgid "Rankings"
1717
  msgstr ""
1718
 
@@ -1720,215 +1724,217 @@ msgstr ""
1720
  msgid " Rankings"
1721
  msgstr ""
1722
 
1723
- #: models/Menu.php:191
1724
  msgid "Find Keywords"
1725
  msgstr ""
1726
 
1727
- #: models/Menu.php:192
1728
  msgid "do a keyword research"
1729
  msgstr ""
1730
 
1731
- #: models/Menu.php:197 view/Research/Briefcase.php:14
1732
  msgid "Briefcase"
1733
  msgstr ""
1734
 
1735
- #: models/Menu.php:198
1736
  msgid "save the best Keywords"
1737
  msgstr ""
1738
 
1739
- #: models/Menu.php:203 view/Research/Briefcase.php:24
1740
  msgid "Labels"
1741
  msgstr ""
1742
 
1743
- #: models/Menu.php:204
1744
  msgid "group keywords"
1745
  msgstr ""
1746
 
1747
- #: models/Menu.php:209 view/Research/Suggested.php:13
1748
  msgid "Suggested"
1749
  msgstr ""
1750
 
1751
- #: models/Menu.php:210
1752
  msgid "better keywords found"
1753
  msgstr ""
1754
 
1755
- #: models/Menu.php:215 view/Research/History.php:14
1756
  msgid "History"
1757
  msgstr ""
1758
 
1759
- #: models/Menu.php:216
1760
  msgid "keyword research history"
1761
  msgstr ""
1762
 
1763
- #: models/Menu.php:223
1764
  msgid "Optimize Posts"
1765
  msgstr ""
1766
 
1767
- #: models/Menu.php:224
1768
  #, fuzzy
1769
  #| msgid "use live assistant"
1770
  msgid "use the Live Assistant"
1771
  msgstr "use the Live Assistant"
1772
 
1773
- #: models/Menu.php:230
1774
  msgid "live assistant setup"
1775
  msgstr ""
1776
 
1777
- #: models/Menu.php:238
1778
  msgid "all my focus pages"
1779
  msgstr ""
1780
 
1781
- #: models/Menu.php:249
1782
  msgid "Add New Page"
1783
  msgstr ""
1784
 
1785
- #: models/Menu.php:250
1786
  msgid "add page in focus pages"
1787
  msgstr ""
1788
 
1789
- #: models/Menu.php:257 view/Blocks/Toolbar.php:25
1790
  msgid "Overview"
1791
  msgstr ""
1792
 
1793
- #: models/Menu.php:258
1794
  #, fuzzy
1795
  #| msgid "See all the seo audits"
1796
  msgid "See all the SEO audits"
1797
  msgstr "See all the SEO audits"
1798
 
1799
- #: models/Menu.php:264
1800
  msgid "Audit settings"
1801
  msgstr ""
1802
 
1803
- #: models/Menu.php:272
1804
  msgid "See Google ranking"
1805
  msgstr ""
1806
 
1807
- #: models/Menu.php:277
1808
  msgid "Add Keywords"
1809
  msgstr ""
1810
 
1811
- #: models/Menu.php:278
1812
  msgid "Add briefcase keywords"
1813
  msgstr ""
1814
 
1815
- #: models/Menu.php:284
1816
  msgid "Ranking settings"
1817
  msgstr ""
1818
 
1819
- #: models/Menu.php:293 view/SeoSettings/Bulkseo.php:24
1820
  msgid "Bulk SEO"
1821
  msgstr ""
1822
 
1823
- #: models/Menu.php:294
1824
  msgid "optimize all pages"
1825
  msgstr ""
1826
 
1827
- #: models/Menu.php:299 view/SeoSettings/Metas.php:24
1828
  msgid "SEO Metas"
1829
  msgstr ""
1830
 
1831
- #: models/Menu.php:300
1832
  msgid "required on-page metas"
1833
  msgstr ""
1834
 
1835
- #: models/Menu.php:305
1836
- msgid "Json LD"
1837
- msgstr "JSON LD"
 
 
1838
 
1839
- #: models/Menu.php:306
1840
  msgid "google structured data"
1841
  msgstr ""
1842
 
1843
- #: models/Menu.php:311 view/SeoSettings/Social.php:23
1844
  msgid "Social Media"
1845
  msgstr ""
1846
 
1847
- #: models/Menu.php:312
1848
  msgid "social share options"
1849
  msgstr ""
1850
 
1851
- #: models/Menu.php:317
1852
  msgid "Automation"
1853
  msgstr ""
1854
 
1855
- #: models/Menu.php:318
1856
  msgid "patterns & automation"
1857
  msgstr ""
1858
 
1859
- #: models/Menu.php:323 view/SeoSettings/Tracking.php:23
1860
  msgid "Tracking Tools"
1861
  msgstr ""
1862
 
1863
- #: models/Menu.php:324
1864
  msgid "google analytics, pixel, etc."
1865
  msgstr ""
1866
 
1867
- #: models/Menu.php:329
1868
  msgid "Connection"
1869
  msgstr ""
1870
 
1871
- #: models/Menu.php:330
1872
  msgid "webmaster tools"
1873
  msgstr ""
1874
 
1875
- #: models/Menu.php:335 view/SeoSettings/Sitemap.php:24
1876
  msgid "Sitemap XML"
1877
  msgstr ""
1878
 
1879
- #: models/Menu.php:336
1880
  msgid "setup the sitemap"
1881
  msgstr ""
1882
 
1883
- #: models/Menu.php:341
1884
  msgid "Robots.txt"
1885
  msgstr ""
1886
 
1887
- #: models/Menu.php:342
1888
  msgid "search engine filters"
1889
  msgstr ""
1890
 
1891
- #: models/Menu.php:347
1892
  msgid "Favicon"
1893
  msgstr ""
1894
 
1895
- #: models/Menu.php:348
1896
  msgid "add website icon"
1897
  msgstr ""
1898
 
1899
- #: models/Menu.php:353
1900
  msgid "Import/Export"
1901
  msgstr ""
1902
 
1903
- #: models/Menu.php:354
1904
  msgid "import & export SEO"
1905
  msgstr ""
1906
 
1907
- #: models/Menu.php:362
1908
  msgid "all the SEO features"
1909
  msgstr ""
1910
 
1911
- #: models/Menu.php:367
1912
  msgid "14 days jorney"
1913
  msgstr ""
1914
 
1915
- #: models/Menu.php:368
1916
  msgid "sign up for better ranking"
1917
  msgstr ""
1918
 
1919
- #: models/Menu.php:373 view/Onboarding/Step3.php:51
1920
  msgid "Import"
1921
  msgstr ""
1922
 
1923
- #: models/Menu.php:374
1924
  msgid "import settings and SEO"
1925
  msgstr ""
1926
 
1927
- #: models/Menu.php:379
1928
  msgid "Final Step"
1929
  msgstr ""
1930
 
1931
- #: models/Menu.php:380
1932
  msgid "start using Squirrly SEO"
1933
  msgstr ""
1934
 
@@ -2010,7 +2016,7 @@ msgstr ""
2010
  msgid "Can't get snippet data"
2011
  msgstr ""
2012
 
2013
- #: models/PostsList.php:55 models/PostsList.php:80 view/Blocks/Snippet.php:143
2014
  msgid "Edit Snippet"
2015
  msgstr ""
2016
 
@@ -2026,7 +2032,7 @@ msgstr ""
2026
  msgid "You don't have enough pemission to edit this article"
2027
  msgstr ""
2028
 
2029
- #: models/Snippet.php:117 view/Blocks/Snippet.php:1227
2030
  msgid "Couldn't find the page"
2031
  msgstr ""
2032
 
@@ -2042,20 +2048,16 @@ msgstr ""
2042
  msgid "Not enough data to process this task"
2043
  msgstr ""
2044
 
2045
- #: models/abstract/Assistant.php:164 view/Blocks/Snippet.php:319
2046
  msgid "Current"
2047
  msgstr ""
2048
 
2049
- #: models/abstract/Assistant.php:178
2050
- msgid "You choosed to ignore this task. Click to activate it."
2051
- msgstr "You chose to ignore this task. Click to activate it."
2052
-
2053
  #: models/bulkseo/Metas.php:56
2054
  msgid "Title not empty"
2055
  msgstr ""
2056
 
2057
- #: models/bulkseo/Metas.php:57 view/Blocks/Snippet.php:197
2058
- #: view/Blocks/Snippet.php:595 view/Blocks/Snippet.php:850
2059
  msgid "Current Title"
2060
  msgstr ""
2061
 
@@ -2126,8 +2128,8 @@ msgstr ""
2126
  msgid "Description not empty"
2127
  msgstr ""
2128
 
2129
- #: models/bulkseo/Metas.php:75 view/Blocks/Snippet.php:249
2130
- #: view/Blocks/Snippet.php:639 view/Blocks/Snippet.php:894
2131
  msgid "Current Description"
2132
  msgstr ""
2133
 
@@ -2521,7 +2523,7 @@ msgid ""
2521
  "visibility settings."
2522
  msgstr ""
2523
 
2524
- #: models/bulkseo/Visibility.php:31 view/Blocks/Snippet.php:1146
2525
  msgid "Send Authority to this page"
2526
  msgstr ""
2527
 
@@ -2825,7 +2827,7 @@ msgstr ""
2825
  #: models/focuspages/Ctr.php:71 models/focuspages/Image.php:81
2826
  #: models/focuspages/Impressions.php:60 models/focuspages/Impressions.php:71
2827
  #: models/focuspages/Keyword.php:83 models/focuspages/Keyword.php:95
2828
- #: models/focuspages/Strategy.php:99 view/Research/Briefcase.php:239
2829
  msgid "Do a research"
2830
  msgstr ""
2831
 
@@ -3065,7 +3067,7 @@ msgid ""
3065
  "Search Console API to send Google the request on your behalf."
3066
  msgstr ""
3067
 
3068
- #: models/focuspages/Indexability.php:67 view/Blocks/Snippet.php:308
3069
  msgid "Canonical link"
3070
  msgstr ""
3071
 
@@ -3337,10 +3339,10 @@ msgid "Nofollow on external links"
3337
  msgstr ""
3338
 
3339
  #: models/focuspages/Snippet.php:69 models/focuspages/Snippet.php:180
3340
- #: models/focuspages/Snippet.php:202 view/Blocks/Snippet.php:181
3341
- #: view/Blocks/Snippet.php:579 view/Blocks/Snippet.php:834
3342
  #: view/FocusPages/Addpage.php:50 view/SeoSettings/Automation.php:86
3343
- #: view/SeoSettings/Bulkseo.php:139 view/SeoSettings/Metas.php:159
3344
  msgid "Title"
3345
  msgstr ""
3346
 
@@ -3358,8 +3360,8 @@ msgid ""
3358
  msgstr ""
3359
 
3360
  #: models/focuspages/Snippet.php:75 models/focuspages/Snippet.php:181
3361
- #: models/focuspages/Snippet.php:203 view/Blocks/Snippet.php:622
3362
- #: view/Blocks/Snippet.php:877 view/SeoSettings/Automation.php:95
3363
  #: view/SeoSettings/Metas.php:168
3364
  msgid "Description"
3365
  msgstr ""
@@ -3848,7 +3850,7 @@ msgstr ""
3848
 
3849
  #: view/Audits/Audits.php:115 view/Audits/Audits.php:157
3850
  #: view/Blocks/Audits.php:21 view/Blocks/KRHistory.php:17
3851
- #: view/Ranking/Rankings.php:229 view/Research/History.php:27
3852
  msgid "Date"
3853
  msgstr ""
3854
 
@@ -3970,39 +3972,51 @@ msgstr ""
3970
  msgid "Permalink"
3971
  msgstr ""
3972
 
3973
- #: view/Blocks/FocusPages.php:17 view/FocusPages/FocusPageRow.php:36
3974
  msgid "Last audited"
3975
  msgstr ""
3976
 
3977
- #: view/Blocks/FocusPages.php:52
3978
  msgid "Check Focus Page"
3979
  msgstr ""
3980
 
3981
- #: view/Blocks/FocusPages.php:64 view/FocusPages/Pagelist.php:111
3982
  msgid "To get started with managing the focus pages"
3983
  msgstr ""
3984
 
3985
- #: view/Blocks/FocusPages.php:68 view/FocusPages/Pagelist.php:115
3986
  msgid "Add new page"
3987
  msgstr ""
3988
 
3989
- #: view/Blocks/FocusPages.php:74 view/FocusPages/Pagelist.php:121
3990
  msgid "Then set a page as focus"
3991
  msgstr ""
3992
 
3993
- #: view/Blocks/Jorney.php:9
 
 
 
 
3994
  msgid "Your 14 Days Journey To Better Ranking"
3995
  msgstr ""
3996
 
3997
- #: view/Blocks/Jorney.php:16 view/Blocks/Jorney.php:22
3998
  msgid "Day"
3999
  msgstr ""
4000
 
4001
- #: view/Blocks/Jorney.php:22
 
 
 
 
 
 
 
 
4002
  msgid "Open the SEO recipe for today"
4003
  msgstr ""
4004
 
4005
- #: view/Blocks/Jorney.php:26 view/FocusPages/Addpage.php:19
4006
  msgid "Add a page in Focus Pages"
4007
  msgstr ""
4008
 
@@ -4011,7 +4025,7 @@ msgid "Suggested Keywords"
4011
  msgstr ""
4012
 
4013
  #: view/Blocks/KRFound.php:16 view/Blocks/KRHistory.php:16
4014
- #: view/Ranking/Rankings.php:221 view/Research/Briefcase.php:114
4015
  #: view/Research/History.php:26 view/Research/Research.php:159
4016
  #: view/Research/Suggested.php:25
4017
  msgid "Country"
@@ -4024,7 +4038,7 @@ msgid "Co"
4024
  msgstr ""
4025
 
4026
  #: view/Blocks/KRFound.php:18 view/Blocks/KRFound.php:19
4027
- #: view/Blocks/KRFound.php:59 view/Research/Briefcase.php:119
4028
  #: view/Research/HistoryDetails.php:16 view/Research/HistoryDetails.php:18
4029
  #: view/Research/Research.php:161 view/Research/Research.php:162
4030
  #: view/Research/Suggested.php:27 view/Research/Suggested.php:28
@@ -4032,7 +4046,7 @@ msgstr ""
4032
  msgid "Competition"
4033
  msgstr ""
4034
 
4035
- #: view/Blocks/KRFound.php:22 view/Blocks/KRFound.php:64
4036
  #: view/Research/HistoryDetails.php:12 view/Research/Research.php:165
4037
  #: view/Research/Suggested.php:31 view/Research/Suggested.php:82
4038
  msgid "SEO Search Volume"
@@ -4043,7 +4057,7 @@ msgstr ""
4043
  msgid "SV"
4044
  msgstr ""
4045
 
4046
- #: view/Blocks/KRFound.php:26 view/Blocks/KRFound.php:69
4047
  #: view/Research/Briefcase.php:131 view/Research/HistoryDetails.php:8
4048
  #: view/Research/Research.php:169 view/Research/Suggested.php:35
4049
  #: view/Research/Suggested.php:87
@@ -4056,37 +4070,37 @@ msgid "Discussion"
4056
  msgstr ""
4057
 
4058
  #: view/Blocks/KRFound.php:30 view/Blocks/KRFound.php:31
4059
- #: view/Blocks/KRFound.php:74 view/Research/Briefcase.php:137
4060
  #: view/Research/HistoryDetails.php:20 view/Research/Research.php:173
4061
  #: view/Research/Suggested.php:39
4062
  msgid "Trending"
4063
  msgstr ""
4064
 
4065
- #: view/Blocks/KRFound.php:59 view/Blocks/KRFound.php:64
4066
- #: view/Blocks/KRFound.php:69 view/Blocks/KRFound.php:74
4067
  #: view/Research/Briefcase.php:120 view/Research/Briefcase.php:126
4068
  #: view/Research/Briefcase.php:132 view/Research/Suggested.php:77
4069
  #: view/Research/Suggested.php:82 view/Research/Suggested.php:87
4070
  msgid "-"
4071
  msgstr ""
4072
 
4073
- #: view/Blocks/KRFound.php:91 view/Research/Suggested.php:149
4074
  #, fuzzy
4075
  #| msgid "We check once a week all the keywords from your briefcase"
4076
  msgid "Once a week, Squirrly checks all the keywords from your briefcase."
4077
  msgstr "Once a week, Squirrly checks all the keywords from your briefcase."
4078
 
4079
- #: view/Blocks/KRFound.php:92 view/Research/Suggested.php:150
4080
  #, fuzzy
4081
  #| msgid "If we find better keywords, they will be listed here"
4082
  msgid "If it finds better keywords, they will be listed here"
4083
  msgstr "If it finds better keywords, they will be listed here"
4084
 
4085
- #: view/Blocks/KRFound.php:93 view/Research/Suggested.php:151
4086
  msgid "Until then, add keywords in Briefcase"
4087
  msgstr ""
4088
 
4089
- #: view/Blocks/KRFound.php:97 view/Blocks/SLASearch.php:22
4090
  #: view/Ranking/Gscsync.php:103 view/Research/Suggested.php:155
4091
  msgid "Go to Briefcase"
4092
  msgstr ""
@@ -4099,7 +4113,7 @@ msgstr ""
4099
  msgid "See Research History"
4100
  msgstr ""
4101
 
4102
- #: view/Blocks/KRHistory.php:39 view/Research/History.php:51
4103
  msgid "See your research results and compare them over time"
4104
  msgstr ""
4105
 
@@ -4178,15 +4192,15 @@ msgstr ""
4178
  msgid "keywords found"
4179
  msgstr ""
4180
 
4181
- #: view/Blocks/Ranks.php:121 view/Ranking/Rankings.php:345
4182
  msgid "To see how your website is ranking on Google"
4183
  msgstr ""
4184
 
4185
- #: view/Blocks/Ranks.php:125 view/Ranking/Rankings.php:349
4186
  msgid "Add keywords in Briefcase"
4187
  msgstr ""
4188
 
4189
- #: view/Blocks/Ranks.php:131 view/Ranking/Rankings.php:355
4190
  msgid "Then send keywords to Rank Checker"
4191
  msgstr ""
4192
 
@@ -4316,153 +4330,153 @@ msgstr ""
4316
  msgid "Split Window"
4317
  msgstr ""
4318
 
4319
- #: view/Blocks/Snippet.php:90
4320
  msgid "Meta Tags"
4321
  msgstr ""
4322
 
4323
- #: view/Blocks/Snippet.php:94
4324
  msgid "JSON-LD"
4325
  msgstr ""
4326
 
4327
- #: view/Blocks/Snippet.php:105
4328
  msgid "Tracking"
4329
  msgstr ""
4330
 
4331
- #: view/Blocks/Snippet.php:121 view/Blocks/Snippet.php:480
4332
- #: view/Blocks/Snippet.php:734
4333
  #, php-format
4334
  msgid ""
4335
  "Post Type (%s) was excluded from %sSquirrly > SEO Settings%s. Squirrly SEO "
4336
  "will not load for this post type on the frontend"
4337
  msgstr ""
4338
 
4339
- #: view/Blocks/Snippet.php:129 view/SeoSettings/Automation.php:132
4340
  #: view/SeoSettings/Automation.php:159 view/SeoSettings/Automation.php:221
4341
  msgid "Activate Metas"
4342
  msgstr ""
4343
 
4344
- #: view/Blocks/Snippet.php:138
4345
  msgid "How this page will appear on Search Engines"
4346
  msgstr ""
4347
 
4348
- #: view/Blocks/Snippet.php:142 view/Blocks/Snippet.php:373
4349
- #: view/Blocks/Snippet.php:502 view/Blocks/Snippet.php:756
4350
- #: view/Blocks/Snippet.php:970 view/Blocks/Snippet.php:1085
4351
  msgid "Refresh"
4352
  msgstr ""
4353
 
4354
- #: view/Blocks/Snippet.php:146 view/Blocks/Snippet.php:518
4355
- #: view/Blocks/Snippet.php:774
4356
  msgid "AUTO-DRAFT"
4357
  msgstr ""
4358
 
4359
- #: view/Blocks/Snippet.php:157 view/Blocks/Snippet.php:539
4360
- #: view/Blocks/Snippet.php:794
4361
  msgid "Please save the post first to be able to edit the Squirrly SEO Snippet"
4362
  msgstr ""
4363
 
4364
- #: view/Blocks/Snippet.php:164 view/Blocks/Snippet.php:546
4365
- #: view/Blocks/Snippet.php:801
4366
  msgid "Cancel"
4367
  msgstr ""
4368
 
4369
- #: view/Blocks/Snippet.php:165 view/Blocks/Snippet.php:374
4370
- #: view/Blocks/Snippet.php:547 view/Blocks/Snippet.php:802
4371
- #: view/Blocks/Snippet.php:971 view/Blocks/Snippet.php:1086
4372
  msgid "Save"
4373
  msgstr ""
4374
 
4375
- #: view/Blocks/Snippet.php:175
4376
  msgid "Activate Title"
4377
  msgstr ""
4378
 
4379
- #: view/Blocks/Snippet.php:182 view/Blocks/Snippet.php:233
4380
- #: view/Blocks/Snippet.php:580 view/Blocks/Snippet.php:623
4381
- #: view/Blocks/Snippet.php:835 view/Blocks/Snippet.php:878
4382
  #, php-format
4383
  msgid "Tips: Length %s-%s chars"
4384
  msgstr ""
4385
 
4386
- #: view/Blocks/Snippet.php:185 view/Blocks/Snippet.php:236
4387
- #: view/Blocks/Snippet.php:583 view/Blocks/Snippet.php:626
4388
- #: view/Blocks/Snippet.php:838 view/Blocks/Snippet.php:881
4389
  msgid "Pattern: "
4390
  msgstr ""
4391
 
4392
- #: view/Blocks/Snippet.php:202 view/Blocks/Snippet.php:600
4393
- #: view/Blocks/Snippet.php:855
4394
  msgid "Default Title"
4395
  msgstr ""
4396
 
4397
- #: view/Blocks/Snippet.php:209 view/Blocks/Snippet.php:263
4398
- #: view/Blocks/Snippet.php:607 view/Blocks/Snippet.php:653
4399
- #: view/Blocks/Snippet.php:862 view/Blocks/Snippet.php:908
4400
  msgid "Pattern"
4401
  msgstr ""
4402
 
4403
- #: view/Blocks/Snippet.php:226
4404
  msgid "Activate Description"
4405
  msgstr ""
4406
 
4407
- #: view/Blocks/Snippet.php:232
4408
  msgid "Meta Description"
4409
  msgstr ""
4410
 
4411
- #: view/Blocks/Snippet.php:256 view/Blocks/Snippet.php:646
4412
- #: view/Blocks/Snippet.php:901
4413
  msgid "Default Description"
4414
  msgstr ""
4415
 
4416
- #: view/Blocks/Snippet.php:280
4417
  msgid "Activate Keywords"
4418
  msgstr ""
4419
 
4420
- #: view/Blocks/Snippet.php:286
4421
  msgid "Meta Keywords"
4422
  msgstr ""
4423
 
4424
- #: view/Blocks/Snippet.php:290
4425
  msgid "+ Add keyword"
4426
  msgstr ""
4427
 
4428
- #: view/Blocks/Snippet.php:302
4429
  msgid "Activate Canonical"
4430
  msgstr ""
4431
 
4432
- #: view/Blocks/Snippet.php:309
4433
  msgid "Leave it blank if you don't have an external canonical"
4434
  msgstr ""
4435
 
4436
- #: view/Blocks/Snippet.php:312
4437
  msgid "Found: "
4438
  msgstr ""
4439
 
4440
- #: view/Blocks/Snippet.php:325
4441
  msgid "Default Link"
4442
  msgstr ""
4443
 
4444
- #: view/Blocks/Snippet.php:345 view/Blocks/Snippet.php:468
4445
- #: view/Blocks/Snippet.php:714 view/Blocks/Snippet.php:949
4446
- #: view/Blocks/Snippet.php:1064 view/Blocks/Snippet.php:1190
4447
  msgid ""
4448
  "To edit the snippet, you have to activate Squirrly SEO for this page first"
4449
  msgstr ""
4450
 
4451
- #: view/Blocks/Snippet.php:354
4452
  msgid "Activate Squirrly Snippet for this page"
4453
  msgstr ""
4454
 
4455
- #: view/Blocks/Snippet.php:359 view/Blocks/Snippet.php:719
4456
- #: view/Blocks/Snippet.php:954
4457
  msgid "Post Type"
4458
  msgstr ""
4459
 
4460
- #: view/Blocks/Snippet.php:361 view/Blocks/Snippet.php:683
4461
- #: view/Blocks/Snippet.php:721
4462
  msgid "OG Type"
4463
  msgstr ""
4464
 
4465
- #: view/Blocks/Snippet.php:391
4466
  #, fuzzy, php-format
4467
  #| msgid ""
4468
  #| "Json-LD is disable for this Post Type (%s). See %sSquirrly > SEO Settings "
@@ -4474,56 +4488,56 @@ msgstr ""
4474
  "JSON-LD is disable for this Post Type (%s). See %sSquirrly > SEO Settings > "
4475
  "Automation%s."
4476
 
4477
- #: view/Blocks/Snippet.php:415
4478
  #, fuzzy
4479
  #| msgid "Json-LD Type"
4480
  msgid "JSON-LD Type"
4481
  msgstr "JSON-LD Type"
4482
 
4483
- #: view/Blocks/Snippet.php:420 view/Blocks/Snippet.php:691
4484
- #: view/Blocks/Snippet.php:929 view/Blocks/Snippet.php:1017
4485
  msgid "(Auto)"
4486
  msgstr ""
4487
 
4488
- #: view/Blocks/Snippet.php:421 view/Blocks/Snippet.php:1018
4489
  msgid "Custom Code"
4490
  msgstr ""
4491
 
4492
- #: view/Blocks/Snippet.php:431
4493
  #, fuzzy
4494
  #| msgid "Custom Json-LD Code"
4495
  msgid "Custom JSON-LD Code"
4496
  msgstr "Custom JSON-LD Code"
4497
 
4498
- #: view/Blocks/Snippet.php:432
4499
  #, fuzzy, php-format
4500
  #| msgid "Add Json-LD code from %sSchema Generator Online%s."
4501
  msgid "Add JSON-LD code from %sSchema Generator Online%s."
4502
  msgstr "Add JSON-LD code from %sSchema Generator Online%s."
4503
 
4504
- #: view/Blocks/Snippet.php:441
4505
  #, fuzzy
4506
  #| msgid "Current Json-LD Code"
4507
  msgid "Current JSON-LD Code"
4508
  msgstr "Current JSON-LD Code"
4509
 
4510
- #: view/Blocks/Snippet.php:449
4511
  msgid "Validate"
4512
  msgstr ""
4513
 
4514
- #: view/Blocks/Snippet.php:497
4515
  msgid "How this page appears on Facebook"
4516
  msgstr ""
4517
 
4518
- #: view/Blocks/Snippet.php:503
4519
  msgid "Edit Open Graph"
4520
  msgstr ""
4521
 
4522
- #: view/Blocks/Snippet.php:511 view/Blocks/Snippet.php:766
4523
  msgid "The image size must be at least 500 pixels wide"
4524
  msgstr ""
4525
 
4526
- #: view/Blocks/Snippet.php:527
4527
  #, fuzzy
4528
  #| msgid ""
4529
  #| "This is the Featured Image. You can changin it if you edit the snippet "
@@ -4535,38 +4549,38 @@ msgstr ""
4535
  "This is the Featured Image. You can change it if you edit the snippet and "
4536
  "upload another image."
4537
 
4538
- #: view/Blocks/Snippet.php:556 view/Blocks/Snippet.php:811
4539
  msgid "Media Image"
4540
  msgstr ""
4541
 
4542
- #: view/Blocks/Snippet.php:560 view/Blocks/Snippet.php:815
4543
- #: view/Research/Briefcase.php:362 view/SeoSettings/Favicon.php:72
4544
  msgid "Upload"
4545
  msgstr ""
4546
 
4547
- #: view/Blocks/Snippet.php:561 view/Blocks/Snippet.php:816
4548
  msgid "Image size must be at least 500 pixels wide"
4549
  msgstr ""
4550
 
4551
- #: view/Blocks/Snippet.php:668
4552
  msgid "Author Link"
4553
  msgstr ""
4554
 
4555
- #: view/Blocks/Snippet.php:669
4556
  #, fuzzy
4557
  #| msgid "For mutiple authors, separate their facebook links with commas"
4558
  msgid "For multiple authors, separate their Facebook links with commas"
4559
  msgstr "For multiple authors, separate their Facebook links with commas"
4560
 
4561
- #: view/Blocks/Snippet.php:751
4562
  msgid "How this page appears on Twitter"
4563
  msgstr ""
4564
 
4565
- #: view/Blocks/Snippet.php:757
4566
  msgid "Edit Twitter Card"
4567
  msgstr ""
4568
 
4569
- #: view/Blocks/Snippet.php:783
4570
  #, fuzzy
4571
  #| msgid ""
4572
  #| "This is the Featured Image. You can changin it if you edit the snippet "
@@ -4578,32 +4592,32 @@ msgstr ""
4578
  "This is the Featured Image. You can change it if you edit the snippet and "
4579
  "upload another image."
4580
 
4581
- #: view/Blocks/Snippet.php:924
4582
  msgid "Card Type"
4583
  msgstr ""
4584
 
4585
- #: view/Blocks/Snippet.php:925 view/SeoSettings/Social.php:290
4586
  #, php-format
4587
  msgid "Every change needs %sTwitter Card Validator%s"
4588
  msgstr ""
4589
 
4590
- #: view/Blocks/Snippet.php:930
4591
  msgid "summary"
4592
  msgstr ""
4593
 
4594
- #: view/Blocks/Snippet.php:931
4595
  msgid "summary_large_image"
4596
  msgstr ""
4597
 
4598
- #: view/Blocks/Snippet.php:956
4599
  msgid "Twitter Type"
4600
  msgstr ""
4601
 
4602
- #: view/Blocks/Snippet.php:982
4603
  msgid "Activate Tracking"
4604
  msgstr ""
4605
 
4606
- #: view/Blocks/Snippet.php:988
4607
  #, fuzzy, php-format
4608
  #| msgid ""
4609
  #| "Facebook Pixel is disable for this Post Type. See %sSquirrly > SEO "
@@ -4615,188 +4629,188 @@ msgstr ""
4615
  "Facebook Pixel is disabled for this Post Type. See %sSquirrly > SEO Settings "
4616
  "> Automation%s."
4617
 
4618
- #: view/Blocks/Snippet.php:1012 view/SeoSettings/Tracking.php:85
4619
  msgid "Facebook Pixel"
4620
  msgstr ""
4621
 
4622
- #: view/Blocks/Snippet.php:1028
4623
  msgid "Custom Pixel Code"
4624
  msgstr ""
4625
 
4626
- #: view/Blocks/Snippet.php:1029
4627
  #, php-format
4628
  msgid "Add Facebook Pixel code from %sFacebook Events%s."
4629
  msgstr ""
4630
 
4631
- #: view/Blocks/Snippet.php:1038
4632
  msgid "Current Pixel Code"
4633
  msgstr ""
4634
 
4635
- #: view/Blocks/Snippet.php:1047
4636
  #, php-format
4637
  msgid ""
4638
  "Add a Pixel ID for Facebook Pixel at %sSquirrly > SEO Settings > Tracking "
4639
  "Tools%s."
4640
  msgstr ""
4641
 
4642
- #: view/Blocks/Snippet.php:1077
4643
  #, php-format
4644
  msgid ""
4645
  "You selected '%s' in %sSettings > Reading%s. It's important to uncheck that "
4646
  "option."
4647
  msgstr ""
4648
 
4649
- #: view/Blocks/Snippet.php:1097 view/Blocks/Snippet.php:1128
4650
  #, php-format
4651
  msgid ""
4652
  "This Post Type (%s) has Nofollow set in Automation. See %sSquirrly > SEO "
4653
  "Settings > Automation%s."
4654
  msgstr ""
4655
 
4656
- #: view/Blocks/Snippet.php:1104 view/Blocks/Snippet.php:1135
4657
  #: view/SeoSettings/Automation.php:139 view/SeoSettings/Automation.php:166
4658
  msgid "Activate Robots Meta"
4659
  msgstr ""
4660
 
4661
- #: view/Blocks/Snippet.php:1115
4662
  msgid "Let Google Index This Page"
4663
  msgstr ""
4664
 
4665
- #: view/Blocks/Snippet.php:1158
4666
  #, php-format
4667
  msgid ""
4668
  "Show in sitemap for this Post Type (%s) was excluded from %sSquirrly > SEO "
4669
  "Settings > Automation%s."
4670
  msgstr ""
4671
 
4672
- #: view/Blocks/Snippet.php:1165 view/SeoSettings/Automation.php:185
4673
  #: view/SeoSettings/Sitemap.php:29
4674
  msgid "Activate Sitemap"
4675
  msgstr ""
4676
 
4677
- #: view/Blocks/Snippet.php:1175
4678
  msgid "Show it in Sitemap.xml"
4679
  msgstr ""
4680
 
4681
- #: view/Blocks/Snippet.php:1214
4682
  msgid "Loading Squirrly Snippet ..."
4683
  msgstr ""
4684
 
4685
- #: view/Blocks/Snippet.php:1240
4686
  msgid "Enable Squirrly SEO to load Squirrly Snippet"
4687
  msgstr ""
4688
 
4689
- #: view/Blocks/Snippet.php:1253
4690
  #, fuzzy, php-format
4691
  #| msgid "%sPlease connect to Squirrly Cloud first%s"
4692
  msgid "%sPlease connect to SquirrlyCloud first%s"
4693
  msgstr "%sPlease connect to SquirrlyCloud first%s"
4694
 
4695
- #: view/Blocks/Support.php:6
4696
  msgid "Go to Profile"
4697
  msgstr ""
4698
 
4699
- #: view/Blocks/Support.php:6 view/Blocks/Support.php:7
4700
  msgid "Profile"
4701
  msgstr ""
4702
 
4703
- #: view/Blocks/Support.php:17
4704
  msgid "Support"
4705
  msgstr ""
4706
 
4707
- #: view/Blocks/Support.php:20
4708
  msgid "Need Help with Squirrly SEO?"
4709
  msgstr ""
4710
 
4711
- #: view/Blocks/Support.php:22 view/Blocks/Support.php:78
4712
  #, php-format
4713
  msgid "10 AM to 4 PM (GMT): Mon-Fri %sby email%s."
4714
  msgstr ""
4715
 
4716
- #: view/Blocks/Support.php:23 view/Blocks/Support.php:79
4717
  #, php-format
4718
  msgid "How To Squirrly %swebsite%s."
4719
  msgstr ""
4720
 
4721
- #: view/Blocks/Support.php:24 view/Blocks/Support.php:80
4722
  #, php-format
4723
  msgid "Facebook %sSupport Community%s."
4724
  msgstr ""
4725
 
4726
- #: view/Blocks/Support.php:25 view/Blocks/Support.php:81
4727
  #, php-format
4728
  msgid "Facebook %sMessenger%s."
4729
  msgstr ""
4730
 
4731
- #: view/Blocks/Support.php:26
4732
  #, php-format
4733
  msgid "Twitter %sSupport%s."
4734
  msgstr ""
4735
 
4736
- #: view/Blocks/Support.php:38
4737
  msgid "How was your Squirrly experience today?"
4738
  msgstr ""
4739
 
4740
- #: view/Blocks/Support.php:47
4741
  msgid "How was Squirrly today?"
4742
  msgstr ""
4743
 
4744
- #: view/Blocks/Support.php:52
4745
  msgid "Angry"
4746
  msgstr ""
4747
 
4748
- #: view/Blocks/Support.php:52
4749
  msgid "Annoying"
4750
  msgstr ""
4751
 
4752
- #: view/Blocks/Support.php:55
4753
  msgid "Sad"
4754
  msgstr ""
4755
 
4756
- #: view/Blocks/Support.php:55
4757
  msgid "Bad"
4758
  msgstr ""
4759
 
4760
- #: view/Blocks/Support.php:58
4761
  msgid "Happy"
4762
  msgstr ""
4763
 
4764
- #: view/Blocks/Support.php:58
4765
  msgid "Nice"
4766
  msgstr ""
4767
 
4768
- #: view/Blocks/Support.php:61
4769
  msgid "Excited"
4770
  msgstr ""
4771
 
4772
- #: view/Blocks/Support.php:61
4773
  msgid "Great"
4774
  msgstr ""
4775
 
4776
- #: view/Blocks/Support.php:64
4777
  msgid "Love it"
4778
  msgstr ""
4779
 
4780
- #: view/Blocks/Support.php:70
4781
  #, fuzzy
4782
  #| msgid "Please tell us why?"
4783
  msgid "Please tell us why."
4784
  msgstr "Please tell us why."
4785
 
4786
- #: view/Blocks/Support.php:73
4787
  msgid "Send feedback"
4788
  msgstr ""
4789
 
4790
- #: view/Blocks/Support.php:77
4791
  msgid "For more support:"
4792
  msgstr ""
4793
 
4794
- #: view/Blocks/Support.php:82
4795
  #, php-format
4796
  msgid "New Lessons Mon. and Tue. on %sTwitter%s."
4797
  msgstr ""
4798
 
4799
- #: view/Blocks/Support.php:87
4800
  #, fuzzy
4801
  #| msgid "Thank you! You can send us a happy face tomorow too."
4802
  msgid "Thank you! You can send us a happy face tomorrow too."
@@ -4866,7 +4880,7 @@ msgid ""
4866
  msgstr ""
4867
 
4868
  #: view/FocusPages/Addpage.php:32 view/Research/Research.php:166
4869
- #: view/SeoSettings/Bulkseo.php:116
4870
  msgid "Search"
4871
  msgstr ""
4872
 
@@ -4878,11 +4892,11 @@ msgstr ""
4878
  msgid "Is focus page"
4879
  msgstr ""
4880
 
4881
- #: view/FocusPages/Addpage.php:96 view/SeoSettings/Bulkseo.php:183
4882
  msgid "Prev Page"
4883
  msgstr ""
4884
 
4885
- #: view/FocusPages/Addpage.php:97 view/SeoSettings/Bulkseo.php:184
4886
  msgid "Next Page"
4887
  msgstr ""
4888
 
@@ -4890,15 +4904,30 @@ msgstr ""
4890
  msgid "Best Practices"
4891
  msgstr ""
4892
 
4893
- #: view/FocusPages/FocusPageRow.php:45
4894
  msgid "You can refresh the audit once every 5 minutes"
4895
  msgstr ""
4896
 
4897
- #: view/FocusPages/FocusPageRow.php:47
4898
  msgid "Request new audit"
4899
  msgstr ""
4900
 
4901
- #: view/FocusPages/FocusPageRow.php:77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4902
  msgid "Delete Focus Page"
4903
  msgstr ""
4904
 
@@ -4906,8 +4935,8 @@ msgstr ""
4906
  msgid "Current Ranking Drawbacks."
4907
  msgstr ""
4908
 
4909
- #: view/FocusPages/Pagelist.php:37 view/Ranking/Rankings.php:63
4910
- #: view/Research/Briefcase.php:34 view/SeoSettings/Bulkseo.php:120
4911
  msgid "Show All"
4912
  msgstr ""
4913
 
@@ -4923,6 +4952,14 @@ msgstr ""
4923
  msgid "Welcome to Focus Pages"
4924
  msgstr ""
4925
 
 
 
 
 
 
 
 
 
4926
  #: view/FocusPages/Settings.php:19
4927
  msgid "Focus Pages Settings"
4928
  msgstr ""
@@ -5129,6 +5166,16 @@ msgstr ""
5129
  msgid "Start using Squirrly SEO"
5130
  msgstr ""
5131
 
 
 
 
 
 
 
 
 
 
 
5132
  #: view/Ranking/Gscsync.php:13
5133
  msgid "Google Search Console Keywords Sync"
5134
  msgstr ""
@@ -5194,14 +5241,14 @@ msgid ""
5194
  "organic keywords"
5195
  msgstr ""
5196
 
5197
- #: view/Ranking/Rankings.php:40
5198
  #, php-format
5199
  msgid ""
5200
  "%sSERP Checker Business:%s We update the best ranks for each keyword, daily. "
5201
  "100%% accurate and objective."
5202
  msgstr ""
5203
 
5204
- #: view/Ranking/Rankings.php:44
5205
  #, php-format
5206
  msgid ""
5207
  "%sSERP Checker Lite:%s We show ranks according to what Google shows you in "
@@ -5210,109 +5257,109 @@ msgid ""
5210
  "plan to %sBusiness Plan%s"
5211
  msgstr ""
5212
 
5213
- #: view/Ranking/Rankings.php:86
5214
  #, fuzzy
5215
  #| msgid "Show only the ranked articles"
5216
  msgid "Only show ranked articles"
5217
  msgstr "Only show ranked articles"
5218
 
5219
- #: view/Ranking/Rankings.php:91
5220
  msgid "Today Avg. Ranking"
5221
  msgstr ""
5222
 
5223
- #: view/Ranking/Rankings.php:119
5224
  #, fuzzy
5225
  #| msgid "Show only the SERP changes"
5226
  msgid "Only show SERP changes"
5227
  msgstr "Only show SERP changes"
5228
 
5229
- #: view/Ranking/Rankings.php:133
5230
  msgid "Today SERP Changes"
5231
  msgstr ""
5232
 
5233
- #: view/Ranking/Rankings.php:146
5234
  msgid "Path"
5235
  msgstr ""
5236
 
5237
- #: view/Ranking/Rankings.php:148
5238
  msgid "Rank"
5239
  msgstr ""
5240
 
5241
- #: view/Ranking/Rankings.php:149
5242
  msgid "Best"
5243
  msgstr ""
5244
 
5245
- #: view/Ranking/Rankings.php:151
5246
  msgid "Avg Rank"
5247
  msgstr ""
5248
 
5249
- #: view/Ranking/Rankings.php:153 view/Research/History.php:28
5250
  msgid "Details"
5251
  msgstr ""
5252
 
5253
- #: view/Ranking/Rankings.php:201
5254
  msgid "Optimized with SLA"
5255
  msgstr ""
5256
 
5257
- #: view/Ranking/Rankings.php:209
5258
  msgid "Social Shares"
5259
  msgstr ""
5260
 
5261
- #: view/Ranking/Rankings.php:212
5262
  msgid "Facebook"
5263
  msgstr ""
5264
 
5265
- #: view/Ranking/Rankings.php:213
5266
  msgid "Reddit"
5267
  msgstr ""
5268
 
5269
- #: view/Ranking/Rankings.php:214
5270
  msgid "Pinterest"
5271
  msgstr ""
5272
 
5273
- #: view/Ranking/Rankings.php:236
5274
  msgid ""
5275
  "Note! The clicks and impressions data is taken from Google Search Console "
5276
  "for the last 90 days for the current URL"
5277
  msgstr ""
5278
 
5279
- #: view/Ranking/Rankings.php:249 view/Ranking/Rankings.php:282
5280
  msgid "Google Search Console has no data for this keyword"
5281
  msgstr ""
5282
 
5283
- #: view/Ranking/Rankings.php:258
5284
  msgid "Sync Keywords"
5285
  msgstr ""
5286
 
5287
- #: view/Ranking/Rankings.php:272
5288
  msgid "Not indexed"
5289
  msgstr ""
5290
 
5291
- #: view/Ranking/Rankings.php:283
5292
  msgid "GSC"
5293
  msgstr ""
5294
 
5295
- #: view/Ranking/Rankings.php:287
5296
  msgid "rank details"
5297
  msgstr ""
5298
 
5299
- #: view/Ranking/Rankings.php:307
5300
  msgid "Check Ranking again"
5301
  msgstr ""
5302
 
5303
- #: view/Ranking/Rankings.php:320
5304
  msgid "Remove Keyword"
5305
  msgstr ""
5306
 
5307
- #: view/Ranking/Rankings.php:340
5308
  msgid "No ranking found."
5309
  msgstr ""
5310
 
5311
- #: view/Ranking/Rankings.php:344
5312
  msgid "Welcome to Squirrly Rankings"
5313
  msgstr ""
5314
 
5315
- #: view/Ranking/Rankings.php:367
5316
  msgid "Synchronize Keywords with Google Search Console"
5317
  msgstr ""
5318
 
@@ -5821,78 +5868,78 @@ msgstr ""
5821
  msgid "No research data"
5822
  msgstr ""
5823
 
5824
- #: view/Research/Briefcase.php:233
5825
  msgid "Send to Rank Checker"
5826
  msgstr ""
5827
 
5828
- #: view/Research/Briefcase.php:241
5829
  msgid "Refresh Research"
5830
  msgstr ""
5831
 
5832
- #: view/Research/Briefcase.php:246
5833
  msgid "Assign Label"
5834
  msgstr ""
5835
 
5836
- #: view/Research/Briefcase.php:251
5837
  msgid "Delete Keyword"
5838
  msgstr ""
5839
 
5840
- #: view/Research/Briefcase.php:261
5841
  #, php-format
5842
  msgid "Select Labels for: %s"
5843
  msgstr ""
5844
 
5845
- #: view/Research/Briefcase.php:275 view/Research/Labels.php:17
5846
  msgid "Add new Label"
5847
  msgstr ""
5848
 
5849
- #: view/Research/Briefcase.php:281
5850
  msgid "Save Labels"
5851
  msgstr ""
5852
 
5853
- #: view/Research/Briefcase.php:308
5854
  msgid "Welcome to Briefcase"
5855
  msgstr ""
5856
 
5857
- #: view/Research/Briefcase.php:309
5858
  msgid "To get started with managing keywords for your SEO Strategy"
5859
  msgstr ""
5860
 
5861
- #: view/Research/Briefcase.php:313
5862
  msgid "Go Find Keywords"
5863
  msgstr ""
5864
 
5865
- #: view/Research/Briefcase.php:319 view/Research/History.php:61
5866
  msgid "Then Add them to Briefcase"
5867
  msgstr ""
5868
 
5869
- #: view/Research/Briefcase.php:328
5870
  msgid "Backup/Restore Briefcase Keywords"
5871
  msgstr ""
5872
 
5873
- #: view/Research/Briefcase.php:329
5874
  msgid ""
5875
  "Keep your briefcase keywords safe in case you change your domain or "
5876
  "reinstall the plugin"
5877
  msgstr ""
5878
 
5879
- #: view/Research/Briefcase.php:335
5880
  msgid "Download Keywords"
5881
  msgstr ""
5882
 
5883
- #: view/Research/Briefcase.php:338
5884
  msgid "Import Keywords"
5885
  msgstr ""
5886
 
5887
- #: view/Research/Briefcase.php:344
5888
  msgid "Restore Briefcase Keywords"
5889
  msgstr ""
5890
 
5891
- #: view/Research/Briefcase.php:352
5892
  msgid "Restore Keywords"
5893
  msgstr ""
5894
 
5895
- #: view/Research/Briefcase.php:353
5896
  msgid "Upload the file with the saved Squirrly Briefcase Keywords."
5897
  msgstr ""
5898
 
@@ -5964,23 +6011,23 @@ msgstr ""
5964
  msgid "Color"
5965
  msgstr ""
5966
 
5967
- #: view/Research/Labels.php:107
5968
  msgid "Delete Label"
5969
  msgstr ""
5970
 
5971
- #: view/Research/Labels.php:122
5972
  msgid "Welcome to Briefcase Labels"
5973
  msgstr ""
5974
 
5975
- #: view/Research/Labels.php:123
5976
  msgid "To categorize and filter the keywords from Briefcase"
5977
  msgstr ""
5978
 
5979
- #: view/Research/Labels.php:127
5980
  msgid "Add new label"
5981
  msgstr ""
5982
 
5983
- #: view/Research/Labels.php:134
5984
  msgid "Assign keywords to labels"
5985
  msgstr ""
5986
 
@@ -6474,6 +6521,15 @@ msgstr ""
6474
  msgid "Any status"
6475
  msgstr ""
6476
 
 
 
 
 
 
 
 
 
 
6477
  #: view/SeoSettings/BulkseoRow.php:26
6478
  #, php-format
6479
  msgid "View &#8220;%s&#8221;"
@@ -6575,10 +6631,6 @@ msgstr ""
6575
  msgid "Logo URL"
6576
  msgstr ""
6577
 
6578
- #: view/SeoSettings/Jsonld.php:85 view/SeoSettings/Jsonld.php:155
6579
- msgid "eg. /wp-content/uploads/logo.png"
6580
- msgstr ""
6581
-
6582
  #: view/SeoSettings/Jsonld.php:89 view/SeoSettings/Jsonld.php:159
6583
  #: view/SeoSettings/Metas.php:191
6584
  msgid "Select Image"
@@ -6777,10 +6829,6 @@ msgstr ""
6777
  msgid "Tips: use 2-4 keywords"
6778
  msgstr ""
6779
 
6780
- #: view/SeoSettings/Metas.php:187
6781
- msgid "/wp-content/uploads/logo.png"
6782
- msgstr ""
6783
-
6784
  #: view/SeoSettings/Metas.php:199
6785
  msgid "First Page Preview"
6786
  msgstr ""
@@ -7290,6 +7338,12 @@ msgid ""
7290
  "Pinterest account. Visit the %sRich Pins Validator%s"
7291
  msgstr ""
7292
 
 
 
 
 
 
 
7293
  #~ msgid ""
7294
  #~ "This is the Featured Image. You can changin it if you edit the snippet "
7295
  #~ "and upload anothe image."
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: \n"
4
+ "POT-Creation-Date: 2019-04-24 19:20+0300\n"
5
+ "PO-Revision-Date: 2019-04-24 19:20+0300\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: en_US\n"
19
  msgid "Don't bother me!"
20
  msgstr ""
21
 
22
+ #: classes/RemoteController.php:275
23
  msgid "Articles optimized so far"
24
  msgstr ""
25
 
26
+ #: classes/RemoteController.php:277 classes/RemoteController.php:284
27
  msgid "add post"
28
  msgstr ""
29
 
30
+ #: classes/RemoteController.php:282
31
  msgid "Average optimization"
32
  msgstr ""
33
 
34
+ #: classes/RemoteController.php:289
35
  msgid "All Keyword Researches performed for all websites"
36
  msgstr ""
37
 
38
+ #: classes/RemoteController.php:291
39
  msgid "do research"
40
  msgstr ""
41
 
42
+ #: classes/RemoteController.php:296
43
  msgid "Keywords stored in Squirrly Briefcase"
44
  msgstr ""
45
 
46
+ #: classes/RemoteController.php:298
47
  msgid "add keyword"
48
  msgstr ""
49
 
50
+ #: classes/RemoteController.php:303
51
  msgid "Pages ranking in top 100 Google"
52
  msgstr ""
53
 
54
+ #: classes/RemoteController.php:305
55
  msgid "see rankings"
56
  msgstr ""
57
 
58
+ #: classes/RemoteController.php:310
59
  msgid "SEO Audits"
60
  msgstr ""
61
 
62
+ #: classes/RemoteController.php:312
63
  msgid "see audits"
64
  msgstr ""
65
 
66
+ #: classes/RemoteController.php:981
67
  msgid "Recent discussions:"
68
  msgstr ""
69
 
70
+ #: classes/RemoteController.php:981
71
  msgid "SEO Search Volume:"
72
  msgstr ""
73
 
74
+ #: classes/RemoteController.php:981
75
  msgid "Competition:"
76
  msgstr ""
77
 
78
+ #: classes/RemoteController.php:981
79
  msgid "Trend:"
80
  msgstr ""
81
 
82
+ #: classes/RemoteController.php:982
83
  msgid "Keyword:"
84
  msgstr ""
85
 
86
+ #: classes/RemoteController.php:983
87
  msgid "date"
88
  msgstr ""
89
 
90
+ #: classes/RemoteController.php:984 controllers/CheckSeo.php:105
91
  #: controllers/Patterns.php:15 controllers/Research.php:292
92
  #: controllers/Research.php:324 controllers/Research.php:380
93
  msgid "Saved!"
94
  msgstr ""
95
 
96
+ #: classes/RemoteController.php:985
97
  msgid "Read it!"
98
  msgstr ""
99
 
100
+ #: classes/RemoteController.php:986
101
  msgid "Insert it!"
102
  msgstr ""
103
 
104
+ #: classes/RemoteController.php:987
105
  msgid "Reference"
106
  msgstr ""
107
 
108
+ #: classes/RemoteController.php:988
109
  msgid "Insert as box"
110
  msgstr ""
111
 
112
+ #: classes/RemoteController.php:989
113
  msgid "Insert Link"
114
  msgstr ""
115
 
116
+ #: classes/RemoteController.php:990
117
  msgid "Not relevant?"
118
  msgstr ""
119
 
120
+ #: classes/RemoteController.php:991
121
  msgid "Insert in your article"
122
  msgstr ""
123
 
124
+ #: classes/RemoteController.php:992
125
  msgid ":( An error occurred while processing your request. Please try again"
126
  msgstr ""
127
 
128
+ #: classes/RemoteController.php:993
129
  msgid "Keyword Research takes too long to get the results. Click to try again"
130
  msgstr ""
131
 
132
+ #: classes/RemoteController.php:994
133
  msgid "No results found!"
134
  msgstr ""
135
 
136
+ #: classes/RemoteController.php:995
137
  msgid "Enter one more word to find relevant results"
138
  msgstr ""
139
 
140
+ #: classes/RemoteController.php:996
141
  #, fuzzy
142
  #| msgid "Takes too long to check this keyword ..."
143
  msgid "It's taking too long to check this keyword"
144
  msgstr "It’s taking too long to check this keyword"
145
 
146
+ #: classes/RemoteController.php:997
147
  msgid "Do a research!"
148
  msgstr ""
149
 
150
+ #: classes/RemoteController.php:998
151
  msgid "Do more research!"
152
  msgstr ""
153
 
154
+ #: classes/RemoteController.php:999
155
  #, php-format
156
  msgid "[ ATTRIBUTE: Please check: %s to find out how to attribute this image ]"
157
  msgstr ""
158
 
159
+ #: classes/RemoteController.php:1000
160
  msgid "Has creative commons attributes"
161
  msgstr ""
162
 
163
+ #: classes/RemoteController.php:1001
164
  msgid "No known copyright restrictions"
165
  msgstr ""
166
 
167
+ #: classes/RemoteController.php:1002
168
  msgid ""
169
  "You haven`t used Squirrly SEO to optimize your article. Do you want to "
170
  "optimize for a keyword before publishing?"
171
  msgstr ""
172
 
173
+ #: classes/RemoteController.php:1003
174
  msgid "Keyword Research limit exceeded"
175
  msgstr ""
176
 
177
+ #: classes/RemoteController.php:1004
178
  msgid "Your Subscription has Expired"
179
  msgstr ""
180
 
181
+ #: classes/RemoteController.php:1005
182
  msgid "Add 20 Keyword Researches"
183
  msgstr ""
184
 
185
+ #: classes/RemoteController.php:1006
186
  msgid "There are no keywords saved in briefcase yet"
187
  msgstr ""
188
 
189
+ #: classes/RemoteController.php:1007
190
  #, php-format
191
  msgid "Congratulations! Your article is 100% optimized!"
192
  msgstr ""
193
 
194
+ #: classes/RemoteController.php:1008
195
  #, php-format
196
  msgid "appears too many times. Try to remove %s of them"
197
  msgstr ""
198
 
199
+ #: classes/RemoteController.php:1009
200
  #, php-format
201
  msgid "write %s more words"
202
  msgstr ""
203
 
204
+ #: classes/RemoteController.php:1010
205
  #, php-format
206
  msgid "Add the keyword in the %s of your article"
207
  msgstr ""
208
 
209
+ #: classes/RemoteController.php:1011
210
  msgid "Click to keep the highlight on"
211
  msgstr ""
212
 
213
+ #: classes/RemoteController.php:1012
214
  msgid "introduction"
215
  msgstr ""
216
 
217
+ #: classes/RemoteController.php:1013
218
  #, php-format
219
  msgid "Write more words after the %s keyword"
220
  msgstr ""
221
 
222
+ #: classes/RemoteController.php:1014
223
  msgid "or use synonyms"
224
  msgstr ""
225
 
226
+ #: classes/RemoteController.php:1015
227
  #, php-format
228
  msgid "add %s more word(s)"
229
  msgstr ""
230
 
231
+ #: classes/RemoteController.php:1016
232
  #, php-format
233
  msgid "or remove %s word(s)"
234
  msgstr ""
235
 
236
+ #: classes/RemoteController.php:1017
237
  #, php-format
238
  msgid "add %s more keyword(s)"
239
  msgstr ""
240
 
241
+ #: classes/RemoteController.php:1018
242
  #, php-format
243
  msgid "write %s more words to start calculating"
244
  msgstr ""
245
 
246
+ #: classes/RemoteController.php:1019 view/Research/Research.php:42
247
  msgid "Add to Briefcase"
248
  msgstr ""
249
 
250
+ #: classes/RemoteController.php:1020
251
  msgid "Add Keyword to Briefcase"
252
  msgstr ""
253
 
254
+ #: classes/RemoteController.php:1021 view/Blocks/KRFound.php:83
255
  msgid "Use Keyword"
256
  msgstr ""
257
 
258
+ #: classes/RemoteController.php:1022 view/Blocks/Snippet.php:138
259
+ #: view/Blocks/Snippet.php:511 view/Blocks/Snippet.php:767
260
  msgid "Auto Draft"
261
  msgstr ""
262
 
296
  msgid "The code for Facebook App must only contain numbers."
297
  msgstr "The code for Facebook App must only contain numbers."
298
 
299
+ #: classes/helpers/Tools.php:80
300
  msgid "Getting started"
301
  msgstr ""
302
 
303
+ #: classes/helpers/Tools.php:105
304
  msgid "Documentation"
305
  msgstr ""
306
 
307
+ #: classes/helpers/Tools.php:106
308
  msgid "Leave a review"
309
  msgstr ""
310
 
311
+ #: classes/helpers/Tools.php:387
312
  msgid "Format"
313
  msgstr ""
314
 
315
+ #: classes/helpers/Tools.php:404 classes/helpers/Tools.php:438
316
  msgid "Category"
317
  msgstr ""
318
 
319
+ #: classes/helpers/Tools.php:421 classes/helpers/Tools.php:455
320
  msgid "Tag"
321
  msgstr ""
322
 
323
+ #: classes/helpers/Tools.php:472
324
  msgid "Shipping Option"
325
  msgstr ""
326
 
327
+ #: classes/helpers/Tools.php:489
328
  msgid "Author at"
329
  msgstr ""
330
 
331
+ #: classes/helpers/Tools.php:557
332
  msgid "Are you looking for"
333
  msgstr ""
334
 
335
+ #: classes/helpers/Tools.php:558
336
  msgid "These are the results for"
337
  msgstr ""
338
 
339
+ #: classes/helpers/Tools.php:558
340
  msgid "that you can find on our website."
341
  msgstr ""
342
 
343
+ #: classes/helpers/Tools.php:591
344
  msgid "Page not found"
345
  msgstr ""
346
 
347
+ #: classes/helpers/Tools.php:592
348
  msgid "This page could not be found on our website."
349
  msgstr ""
350
 
351
+ #: classes/helpers/Tools.php:892 classes/helpers/Tools.php:903
352
  #, fuzzy, php-format
353
  #| msgid ""
354
  #| "Good news, %s is integrated in Squirrly SEO now and you don't have to run "
484
  msgstr ""
485
 
486
  #: controllers/Assistant.php:95 controllers/Assistant.php:122
487
+ #: controllers/Audits.php:79 controllers/Ranking.php:113
488
+ #: controllers/SeoSettings.php:292 controllers/SeoSettings.php:309
489
+ #: controllers/SeoSettings.php:329 controllers/SeoSettings.php:366
490
+ #: controllers/SeoSettings.php:392 controllers/SeoSettings.php:420
491
+ #: controllers/SeoSettings.php:671 controllers/SeoSettings.php:707
492
+ #: controllers/SeoSettings.php:744
493
  msgid "Saved"
494
  msgstr ""
495
 
500
  #: controllers/Research.php:213 controllers/Research.php:273
501
  #: controllers/Research.php:304 controllers/Research.php:332
502
  #: controllers/Research.php:357 controllers/Research.php:388
503
+ #: controllers/Research.php:410 controllers/Research.php:467
504
+ #: controllers/SeoSettings.php:486 controllers/SeoSettings.php:658
505
+ #: controllers/SeoSettings.php:684 controllers/SeoSettings.php:722
506
+ #: controllers/SeoSettings.php:759 controllers/SeoSettings.php:797
507
+ #: controllers/Snippet.php:158
508
  msgid "You do not have permission to perform this action"
509
  msgstr ""
510
 
512
  msgid "Error: Could not save the data."
513
  msgstr ""
514
 
515
+ #: controllers/Audits.php:81
516
  msgid "Not a valid email address"
517
  msgstr ""
518
 
532
  msgid "Saved! This task will be ignored in the future."
533
  msgstr ""
534
 
535
+ #: controllers/FocusPages.php:160
536
  #, fuzzy
537
  #| msgid "Focus Page does not exists or was deleted from your website."
538
  msgid "Focus Page does not exist or was deleted from your website."
539
  msgstr "Focus Page does not exist or was deleted from your website."
540
 
541
+ #: controllers/FocusPages.php:198
542
  msgid "Focus page is added. The audit may take a while so please be patient."
543
  msgstr ""
544
 
545
+ #: controllers/FocusPages.php:201
546
  msgid "You reached the maximum number of focus pages for your account."
547
  msgstr ""
548
 
549
+ #: controllers/FocusPages.php:204
550
  msgid "Error! Could not add the focus page."
551
  msgstr ""
552
 
553
+ #: controllers/FocusPages.php:207 controllers/FocusPages.php:239
554
  msgid "Error! This focus page is not public."
555
  msgstr ""
556
 
557
+ #: controllers/FocusPages.php:210 controllers/FocusPages.php:242
558
  msgid "Error! Could not find the focus page in your website."
559
  msgstr ""
560
 
561
+ #: controllers/FocusPages.php:230
562
  msgid "Focus page sent for recheck. It may take a while so please be patient."
563
  msgstr ""
564
 
565
+ #: controllers/FocusPages.php:233
566
  #, fuzzy
567
  #| msgid "Too many requests, please wait 5 minutes."
568
  msgid "You've made too many requests, please wait a few minutes."
569
  msgstr "You've made too many requests, please wait a few minutes. "
570
 
571
+ #: controllers/FocusPages.php:236
572
  msgid "Error! Could not refresh the focus page."
573
  msgstr ""
574
 
575
+ #: controllers/FocusPages.php:253
576
  msgid "The focus page is deleted"
577
  msgstr ""
578
 
579
+ #: controllers/FocusPages.php:255 controllers/Ranking.php:151
580
  #: controllers/Research.php:180 controllers/Research.php:183
581
  #: controllers/Research.php:207 controllers/Research.php:326
582
+ #: controllers/Research.php:351 controllers/Research.php:513
583
+ #: controllers/Research.php:558 controllers/Research.php:581
584
  msgid "Invalid params!"
585
  msgstr ""
586
 
587
+ #: controllers/Menu.php:92
588
  #, php-format
589
  msgid ""
590
  "An error occurred during activation. If this error persists, please contact "
591
  "us at: %s"
592
  msgstr ""
593
 
594
+ #: controllers/Menu.php:129 models/Menu.php:123
595
  msgid "Dashboard"
596
  msgstr ""
597
 
598
+ #: controllers/Menu.php:153 controllers/Menu.php:264
599
  #: view/Blocks/SLASearch.php:7
600
  msgid "Squirrly SEO"
601
  msgstr ""
602
 
603
+ #: controllers/Menu.php:217
604
  msgid "SEO Snippet"
605
  msgstr ""
606
 
607
+ #: controllers/Menu.php:226 controllers/Snippet.php:129
608
  msgid "Custom SEO"
609
  msgstr ""
610
 
611
+ #: controllers/Menu.php:272
612
  msgid "Squirrly Onboarding"
613
  msgstr ""
614
 
615
+ #: controllers/Menu.php:273
616
  msgid "Onboarding"
617
  msgstr ""
618
 
619
+ #: controllers/Menu.php:303
620
  msgid "Squirrly Account Info"
621
  msgstr ""
622
 
623
+ #: controllers/Menu.php:304
624
  msgid "Account Info"
625
  msgstr ""
626
 
627
+ #: controllers/Menu.php:313
628
  msgid "Squirrly How To & Support"
629
  msgstr ""
630
 
631
+ #: controllers/Menu.php:314
632
  msgid "Help & Support"
633
  msgstr ""
634
 
720
  msgid "Invalid Label or Color!"
721
  msgstr ""
722
 
723
+ #: controllers/Research.php:436 controllers/Research.php:454
724
+ #: controllers/SeoSettings.php:531
725
  msgid "Great! The backup is restored."
726
  msgstr ""
727
 
728
+ #: controllers/Research.php:458 controllers/SeoSettings.php:533
729
+ #: controllers/SeoSettings.php:536 controllers/SeoSettings.php:580
730
+ #: controllers/SeoSettings.php:583
731
  msgid "Error! The backup is not valid."
732
  msgstr ""
733
 
734
+ #: controllers/Research.php:461 controllers/SeoSettings.php:539
735
+ #: controllers/SeoSettings.php:586
736
  #, fuzzy
737
  #| msgid "Error! You have to enter a previous saved backup file."
738
  msgid "Error! You have to enter a previously saved backup file."
739
  msgstr "Error! You have to enter a previously saved backup file."
740
 
741
+ #: controllers/Research.php:482
742
  #, fuzzy
743
  #| msgid "Could not add the keyword to Serp Check. Please try again."
744
  msgid "Could not add the keyword to SERP Check. Please try again."
745
  msgstr "Could not add the keyword to SERP Check. Please try again."
746
 
747
+ #: controllers/Research.php:484
748
  #, fuzzy
749
  #| msgid "The keyword is added to Serp Check."
750
  msgid "The keyword is added to SERP Check."
751
  msgstr "The keyword is added to SERP Check."
752
 
753
+ #: controllers/Research.php:487
754
  msgid "Invalid parameters."
755
  msgstr ""
756
 
757
+ #: controllers/SeoSettings.php:464
758
  msgid "Google Analytics account is disconnected."
759
  msgstr ""
760
 
761
+ #: controllers/SeoSettings.php:466 controllers/SeoSettings.php:480
762
  msgid "Error! Could not disconnect the account."
763
  msgstr ""
764
 
765
+ #: controllers/SeoSettings.php:478
766
  msgid "Google Search Console account is disconnected."
767
  msgstr ""
768
 
769
+ #: controllers/SeoSettings.php:577
770
  msgid "Great! The SEO backup is restored."
771
  msgstr ""
772
 
773
+ #: controllers/SeoSettings.php:594
774
  msgid "Settings imported successfuly!"
775
  msgstr ""
776
 
777
+ #: controllers/SeoSettings.php:607 controllers/SeoSettings.php:645
778
  #, php-format
779
  msgid ""
780
  "%s SEO records were imported successfuly! You can now deactivate the %s "
781
  "plugin"
782
  msgstr ""
783
 
784
+ #: controllers/SeoSettings.php:620
785
  msgid "All the Plugin settings were imported successfuly!"
786
  msgstr ""
787
 
788
+ #: controllers/SeoSettings.php:622
789
  msgid "No settings found for this plugin/theme."
790
  msgstr ""
791
 
792
+ #: controllers/SeoSettings.php:647
793
  #, php-format
794
  msgid ""
795
  "There are no SEO records with this plugin. You can now deactivate the %s "
796
  "plugin"
797
  msgstr ""
798
 
799
+ #: controllers/SeoSettings.php:673
800
  msgid "Could not save the changes"
801
  msgstr ""
802
 
803
+ #: controllers/SeoSettings.php:715 controllers/SeoSettings.php:752
804
  msgid "Could not add the post type"
805
  msgstr ""
806
 
807
+ #: controllers/Snippet.php:81
808
  msgid "Squirrly SEO Snippet"
809
  msgstr ""
810
 
811
+ #: controllers/Snippet.php:176
812
  msgid "Could not save the data"
813
  msgstr ""
814
 
815
+ #: core/BlockFocusPages.php:21 models/FocusPages.php:109
816
  msgid "Audit in progress"
817
  msgstr ""
818
 
819
+ #: core/BlockJorney.php:13
820
+ msgid "I'm ready to start the 14 Days Journey To Better Ranking"
821
+ msgstr ""
822
+
823
  #: core/BlockSupport.php:28
824
  msgid "Plugin Feedback"
825
  msgstr ""
959
  "you'll find out what you need to do to complete the task and turn it Green."
960
  msgstr ""
961
 
962
+ #: models/Assistant.php:109 view/Blocks/Jorney.php:47
963
+ #: view/Blocks/KRHistory.php:47 view/Research/History.php:55
964
  msgid "Do Keyword Research"
965
  msgstr ""
966
 
1068
  "sure you click on SAVE settings after you switch anything on or off."
1069
  msgstr ""
1070
 
1071
+ #: models/Assistant.php:148 view/Blocks/Snippet.php:378
1072
  #: view/SeoSettings/Jsonld.php:28
1073
  #, fuzzy
1074
  #| msgid "Activate Json-LD"
1108
  "Then, at URL-level you will be able to add custom JSON-LD if you're an "
1109
  "advanced user."
1110
 
1111
+ #: models/Assistant.php:153 view/Blocks/Snippet.php:481
1112
  #: view/SeoSettings/Automation.php:323 view/SeoSettings/Social.php:52
1113
  msgid "Activate Open Graph"
1114
  msgstr ""
1123
  "your site."
1124
  msgstr ""
1125
 
1126
+ #: models/Assistant.php:158 view/Blocks/Snippet.php:735
1127
  #: view/SeoSettings/Automation.php:350 view/SeoSettings/Social.php:275
1128
  msgid "Activate Twitter Card"
1129
  msgstr ""
1327
  "those tasks and turning elements to green you'll complete this task."
1328
  msgstr ""
1329
 
1330
+ #: models/Assistant.php:277 models/abstract/Assistant.php:178
1331
  #, fuzzy
1332
  #| msgid "You choosed to ignore this task. Click to activate it."
1333
  msgid "You chose to ignore this task. Click to activate it."
1337
  msgid "METAs"
1338
  msgstr ""
1339
 
1340
+ #: models/BulkSeo.php:18 view/Blocks/Snippet.php:90
1341
  msgid "Open Graph"
1342
  msgstr ""
1343
 
1344
+ #: models/BulkSeo.php:19 view/Blocks/Snippet.php:93
1345
  msgid "Twitter Card"
1346
  msgstr ""
1347
 
1348
+ #: models/BulkSeo.php:20 models/FocusPages.php:20 view/Blocks/Snippet.php:102
1349
  msgid "Visibility"
1350
  msgstr ""
1351
 
1473
  msgstr ""
1474
 
1475
  #: models/CheckSeo.php:56 models/CheckSeo.php:57
1476
+ #: models/bulkseo/Visibility.php:104 view/Blocks/Snippet.php:1070
1477
  msgid "Discourage search engines from indexing this site"
1478
  msgstr ""
1479
 
1521
  msgid "Change the Tagline with your Brand or the Store name from %s"
1522
  msgstr ""
1523
 
1524
+ #: models/CheckSeo.php:69 models/Menu.php:234 models/Menu.php:268
1525
+ #: models/Menu.php:288
1526
  msgid "Settings"
1527
  msgstr ""
1528
 
1546
  msgid "Activate AMP tracking in %s Squirrly > SEO Settings > Tracking Tools%s "
1547
  msgstr ""
1548
 
1549
+ #: models/CheckSeo.php:140
1550
  msgid "Could not verify the frontend."
1551
  msgstr ""
1552
 
1553
+ #: models/CheckSeo.php:444
1554
  msgid "Just another WordPress site"
1555
  msgstr ""
1556
 
1561
  #: models/focuspages/Keyword.php:82 models/focuspages/Snippet.php:124
1562
  #: models/focuspages/Strategy.php:88 view/Blocks/KRFound.php:15
1563
  #: view/Blocks/KRHistory.php:15 view/Ranking/Gscsync.php:29
1564
+ #: view/Ranking/Rankings.php:147 view/Ranking/Rankings.php:176
1565
  #: view/Research/Briefcase.php:66 view/Research/Briefcase.php:106
1566
  #: view/Research/History.php:25 view/Research/HistoryDetails.php:7
1567
  #: view/Research/Research.php:158 view/Research/Suggested.php:24
1629
  msgstr ""
1630
 
1631
  #: models/FocusPages.php:37 view/Ranking/Gscsync.php:31
1632
+ #: view/Ranking/Rankings.php:190
1633
  msgid "Impressions"
1634
  msgstr ""
1635
 
1636
  #: models/FocusPages.php:38 view/Ranking/Gscsync.php:30
1637
+ #: view/Ranking/Rankings.php:196
1638
  msgid "Clicks"
1639
  msgstr ""
1640
 
1667
  msgid "The favicon has been updated."
1668
  msgstr ""
1669
 
1670
+ #: models/Menu.php:123 models/Menu.php:366
1671
  msgid "First Step"
1672
  msgstr ""
1673
 
1699
  msgid " SEO Settings"
1700
  msgstr ""
1701
 
1702
+ #: models/Menu.php:155 models/Menu.php:242 view/Blocks/FocusPages.php:6
1703
  #: view/FocusPages/Pagelist.php:19
1704
  msgid "Focus Pages"
1705
  msgstr ""
1716
  msgid " SEO Audit"
1717
  msgstr ""
1718
 
1719
+ #: models/Menu.php:171 models/Menu.php:276
1720
  msgid "Rankings"
1721
  msgstr ""
1722
 
1724
  msgid " Rankings"
1725
  msgstr ""
1726
 
1727
+ #: models/Menu.php:196
1728
  msgid "Find Keywords"
1729
  msgstr ""
1730
 
1731
+ #: models/Menu.php:197
1732
  msgid "do a keyword research"
1733
  msgstr ""
1734
 
1735
+ #: models/Menu.php:202 view/Research/Briefcase.php:14
1736
  msgid "Briefcase"
1737
  msgstr ""
1738
 
1739
+ #: models/Menu.php:203
1740
  msgid "save the best Keywords"
1741
  msgstr ""
1742
 
1743
+ #: models/Menu.php:208 view/Research/Briefcase.php:24
1744
  msgid "Labels"
1745
  msgstr ""
1746
 
1747
+ #: models/Menu.php:209
1748
  msgid "group keywords"
1749
  msgstr ""
1750
 
1751
+ #: models/Menu.php:214 view/Research/Suggested.php:13
1752
  msgid "Suggested"
1753
  msgstr ""
1754
 
1755
+ #: models/Menu.php:215
1756
  msgid "better keywords found"
1757
  msgstr ""
1758
 
1759
+ #: models/Menu.php:220 view/Research/History.php:14
1760
  msgid "History"
1761
  msgstr ""
1762
 
1763
+ #: models/Menu.php:221
1764
  msgid "keyword research history"
1765
  msgstr ""
1766
 
1767
+ #: models/Menu.php:228
1768
  msgid "Optimize Posts"
1769
  msgstr ""
1770
 
1771
+ #: models/Menu.php:229
1772
  #, fuzzy
1773
  #| msgid "use live assistant"
1774
  msgid "use the Live Assistant"
1775
  msgstr "use the Live Assistant"
1776
 
1777
+ #: models/Menu.php:235
1778
  msgid "live assistant setup"
1779
  msgstr ""
1780
 
1781
+ #: models/Menu.php:243
1782
  msgid "all my focus pages"
1783
  msgstr ""
1784
 
1785
+ #: models/Menu.php:254
1786
  msgid "Add New Page"
1787
  msgstr ""
1788
 
1789
+ #: models/Menu.php:255
1790
  msgid "add page in focus pages"
1791
  msgstr ""
1792
 
1793
+ #: models/Menu.php:262 view/Blocks/Toolbar.php:32
1794
  msgid "Overview"
1795
  msgstr ""
1796
 
1797
+ #: models/Menu.php:263
1798
  #, fuzzy
1799
  #| msgid "See all the seo audits"
1800
  msgid "See all the SEO audits"
1801
  msgstr "See all the SEO audits"
1802
 
1803
+ #: models/Menu.php:269
1804
  msgid "Audit settings"
1805
  msgstr ""
1806
 
1807
+ #: models/Menu.php:277
1808
  msgid "See Google ranking"
1809
  msgstr ""
1810
 
1811
+ #: models/Menu.php:282
1812
  msgid "Add Keywords"
1813
  msgstr ""
1814
 
1815
+ #: models/Menu.php:283
1816
  msgid "Add briefcase keywords"
1817
  msgstr ""
1818
 
1819
+ #: models/Menu.php:289
1820
  msgid "Ranking settings"
1821
  msgstr ""
1822
 
1823
+ #: models/Menu.php:298 view/SeoSettings/Bulkseo.php:24
1824
  msgid "Bulk SEO"
1825
  msgstr ""
1826
 
1827
+ #: models/Menu.php:299
1828
  msgid "optimize all pages"
1829
  msgstr ""
1830
 
1831
+ #: models/Menu.php:304 view/SeoSettings/Metas.php:24
1832
  msgid "SEO Metas"
1833
  msgstr ""
1834
 
1835
+ #: models/Menu.php:305
1836
  msgid "required on-page metas"
1837
  msgstr ""
1838
 
1839
+ #: models/Menu.php:310
1840
+ #, fuzzy
1841
+ #| msgid "Json-LD Type"
1842
+ msgid "JSON LD"
1843
+ msgstr "JSON-LD Type"
1844
 
1845
+ #: models/Menu.php:311
1846
  msgid "google structured data"
1847
  msgstr ""
1848
 
1849
+ #: models/Menu.php:316 view/SeoSettings/Social.php:23
1850
  msgid "Social Media"
1851
  msgstr ""
1852
 
1853
+ #: models/Menu.php:317
1854
  msgid "social share options"
1855
  msgstr ""
1856
 
1857
+ #: models/Menu.php:322
1858
  msgid "Automation"
1859
  msgstr ""
1860
 
1861
+ #: models/Menu.php:323
1862
  msgid "patterns & automation"
1863
  msgstr ""
1864
 
1865
+ #: models/Menu.php:328 view/SeoSettings/Tracking.php:23
1866
  msgid "Tracking Tools"
1867
  msgstr ""
1868
 
1869
+ #: models/Menu.php:329
1870
  msgid "google analytics, pixel, etc."
1871
  msgstr ""
1872
 
1873
+ #: models/Menu.php:334
1874
  msgid "Connection"
1875
  msgstr ""
1876
 
1877
+ #: models/Menu.php:335
1878
  msgid "webmaster tools"
1879
  msgstr ""
1880
 
1881
+ #: models/Menu.php:340 view/SeoSettings/Sitemap.php:24
1882
  msgid "Sitemap XML"
1883
  msgstr ""
1884
 
1885
+ #: models/Menu.php:341
1886
  msgid "setup the sitemap"
1887
  msgstr ""
1888
 
1889
+ #: models/Menu.php:346
1890
  msgid "Robots.txt"
1891
  msgstr ""
1892
 
1893
+ #: models/Menu.php:347
1894
  msgid "search engine filters"
1895
  msgstr ""
1896
 
1897
+ #: models/Menu.php:352
1898
  msgid "Favicon"
1899
  msgstr ""
1900
 
1901
+ #: models/Menu.php:353
1902
  msgid "add website icon"
1903
  msgstr ""
1904
 
1905
+ #: models/Menu.php:358
1906
  msgid "Import/Export"
1907
  msgstr ""
1908
 
1909
+ #: models/Menu.php:359
1910
  msgid "import & export SEO"
1911
  msgstr ""
1912
 
1913
+ #: models/Menu.php:367
1914
  msgid "all the SEO features"
1915
  msgstr ""
1916
 
1917
+ #: models/Menu.php:372
1918
  msgid "14 days jorney"
1919
  msgstr ""
1920
 
1921
+ #: models/Menu.php:373
1922
  msgid "sign up for better ranking"
1923
  msgstr ""
1924
 
1925
+ #: models/Menu.php:378 view/Onboarding/Step3.php:51
1926
  msgid "Import"
1927
  msgstr ""
1928
 
1929
+ #: models/Menu.php:379
1930
  msgid "import settings and SEO"
1931
  msgstr ""
1932
 
1933
+ #: models/Menu.php:384
1934
  msgid "Final Step"
1935
  msgstr ""
1936
 
1937
+ #: models/Menu.php:385
1938
  msgid "start using Squirrly SEO"
1939
  msgstr ""
1940
 
2016
  msgid "Can't get snippet data"
2017
  msgstr ""
2018
 
2019
+ #: models/PostsList.php:55 models/PostsList.php:80 view/Blocks/Snippet.php:135
2020
  msgid "Edit Snippet"
2021
  msgstr ""
2022
 
2032
  msgid "You don't have enough pemission to edit this article"
2033
  msgstr ""
2034
 
2035
+ #: models/Snippet.php:117
2036
  msgid "Couldn't find the page"
2037
  msgstr ""
2038
 
2048
  msgid "Not enough data to process this task"
2049
  msgstr ""
2050
 
2051
+ #: models/abstract/Assistant.php:164 view/Blocks/Snippet.php:310
2052
  msgid "Current"
2053
  msgstr ""
2054
 
 
 
 
 
2055
  #: models/bulkseo/Metas.php:56
2056
  msgid "Title not empty"
2057
  msgstr ""
2058
 
2059
+ #: models/bulkseo/Metas.php:57 view/Blocks/Snippet.php:189
2060
+ #: view/Blocks/Snippet.php:588 view/Blocks/Snippet.php:843
2061
  msgid "Current Title"
2062
  msgstr ""
2063
 
2128
  msgid "Description not empty"
2129
  msgstr ""
2130
 
2131
+ #: models/bulkseo/Metas.php:75 view/Blocks/Snippet.php:241
2132
+ #: view/Blocks/Snippet.php:632 view/Blocks/Snippet.php:887
2133
  msgid "Current Description"
2134
  msgstr ""
2135
 
2523
  "visibility settings."
2524
  msgstr ""
2525
 
2526
+ #: models/bulkseo/Visibility.php:31 view/Blocks/Snippet.php:1139
2527
  msgid "Send Authority to this page"
2528
  msgstr ""
2529
 
2827
  #: models/focuspages/Ctr.php:71 models/focuspages/Image.php:81
2828
  #: models/focuspages/Impressions.php:60 models/focuspages/Impressions.php:71
2829
  #: models/focuspages/Keyword.php:83 models/focuspages/Keyword.php:95
2830
+ #: models/focuspages/Strategy.php:99 view/Research/Briefcase.php:241
2831
  msgid "Do a research"
2832
  msgstr ""
2833
 
3067
  "Search Console API to send Google the request on your behalf."
3068
  msgstr ""
3069
 
3070
+ #: models/focuspages/Indexability.php:67 view/Blocks/Snippet.php:300
3071
  msgid "Canonical link"
3072
  msgstr ""
3073
 
3339
  msgstr ""
3340
 
3341
  #: models/focuspages/Snippet.php:69 models/focuspages/Snippet.php:180
3342
+ #: models/focuspages/Snippet.php:202 view/Blocks/Snippet.php:173
3343
+ #: view/Blocks/Snippet.php:572 view/Blocks/Snippet.php:827
3344
  #: view/FocusPages/Addpage.php:50 view/SeoSettings/Automation.php:86
3345
+ #: view/SeoSettings/Bulkseo.php:137 view/SeoSettings/Metas.php:159
3346
  msgid "Title"
3347
  msgstr ""
3348
 
3360
  msgstr ""
3361
 
3362
  #: models/focuspages/Snippet.php:75 models/focuspages/Snippet.php:181
3363
+ #: models/focuspages/Snippet.php:203 view/Blocks/Snippet.php:615
3364
+ #: view/Blocks/Snippet.php:870 view/SeoSettings/Automation.php:95
3365
  #: view/SeoSettings/Metas.php:168
3366
  msgid "Description"
3367
  msgstr ""
3850
 
3851
  #: view/Audits/Audits.php:115 view/Audits/Audits.php:157
3852
  #: view/Blocks/Audits.php:21 view/Blocks/KRHistory.php:17
3853
+ #: view/Ranking/Rankings.php:231 view/Research/History.php:27
3854
  msgid "Date"
3855
  msgstr ""
3856
 
3972
  msgid "Permalink"
3973
  msgstr ""
3974
 
3975
+ #: view/Blocks/FocusPages.php:17 view/FocusPages/FocusPageRow.php:37
3976
  msgid "Last audited"
3977
  msgstr ""
3978
 
3979
+ #: view/Blocks/FocusPages.php:54
3980
  msgid "Check Focus Page"
3981
  msgstr ""
3982
 
3983
+ #: view/Blocks/FocusPages.php:66 view/FocusPages/Pagelist.php:111
3984
  msgid "To get started with managing the focus pages"
3985
  msgstr ""
3986
 
3987
+ #: view/Blocks/FocusPages.php:70 view/FocusPages/Pagelist.php:115
3988
  msgid "Add new page"
3989
  msgstr ""
3990
 
3991
+ #: view/Blocks/FocusPages.php:76 view/FocusPages/Pagelist.php:121
3992
  msgid "Then set a page as focus"
3993
  msgstr ""
3994
 
3995
+ #: view/Blocks/Jorney.php:10
3996
+ msgid "Congratulations! You've completed the 14 Days Journey To Better Ranking"
3997
+ msgstr ""
3998
+
3999
+ #: view/Blocks/Jorney.php:12
4000
  msgid "Your 14 Days Journey To Better Ranking"
4001
  msgstr ""
4002
 
4003
+ #: view/Blocks/Jorney.php:20 view/Blocks/Jorney.php:38
4004
  msgid "Day"
4005
  msgstr ""
4006
 
4007
+ #: view/Blocks/Jorney.php:27
4008
+ msgid "If you missed a day, click on it and read the SEO recipe for it."
4009
+ msgstr ""
4010
+
4011
+ #: view/Blocks/Jorney.php:33
4012
+ msgid "I'm all done. Hide this block."
4013
+ msgstr ""
4014
+
4015
+ #: view/Blocks/Jorney.php:38
4016
  msgid "Open the SEO recipe for today"
4017
  msgstr ""
4018
 
4019
+ #: view/Blocks/Jorney.php:43 view/FocusPages/Addpage.php:19
4020
  msgid "Add a page in Focus Pages"
4021
  msgstr ""
4022
 
4025
  msgstr ""
4026
 
4027
  #: view/Blocks/KRFound.php:16 view/Blocks/KRHistory.php:16
4028
+ #: view/Ranking/Rankings.php:223 view/Research/Briefcase.php:114
4029
  #: view/Research/History.php:26 view/Research/Research.php:159
4030
  #: view/Research/Suggested.php:25
4031
  msgid "Country"
4038
  msgstr ""
4039
 
4040
  #: view/Blocks/KRFound.php:18 view/Blocks/KRFound.php:19
4041
+ #: view/Blocks/KRFound.php:64 view/Research/Briefcase.php:119
4042
  #: view/Research/HistoryDetails.php:16 view/Research/HistoryDetails.php:18
4043
  #: view/Research/Research.php:161 view/Research/Research.php:162
4044
  #: view/Research/Suggested.php:27 view/Research/Suggested.php:28
4046
  msgid "Competition"
4047
  msgstr ""
4048
 
4049
+ #: view/Blocks/KRFound.php:22 view/Blocks/KRFound.php:69
4050
  #: view/Research/HistoryDetails.php:12 view/Research/Research.php:165
4051
  #: view/Research/Suggested.php:31 view/Research/Suggested.php:82
4052
  msgid "SEO Search Volume"
4057
  msgid "SV"
4058
  msgstr ""
4059
 
4060
+ #: view/Blocks/KRFound.php:26 view/Blocks/KRFound.php:74
4061
  #: view/Research/Briefcase.php:131 view/Research/HistoryDetails.php:8
4062
  #: view/Research/Research.php:169 view/Research/Suggested.php:35
4063
  #: view/Research/Suggested.php:87
4070
  msgstr ""
4071
 
4072
  #: view/Blocks/KRFound.php:30 view/Blocks/KRFound.php:31
4073
+ #: view/Blocks/KRFound.php:79 view/Research/Briefcase.php:137
4074
  #: view/Research/HistoryDetails.php:20 view/Research/Research.php:173
4075
  #: view/Research/Suggested.php:39
4076
  msgid "Trending"
4077
  msgstr ""
4078
 
4079
+ #: view/Blocks/KRFound.php:64 view/Blocks/KRFound.php:69
4080
+ #: view/Blocks/KRFound.php:74 view/Blocks/KRFound.php:79
4081
  #: view/Research/Briefcase.php:120 view/Research/Briefcase.php:126
4082
  #: view/Research/Briefcase.php:132 view/Research/Suggested.php:77
4083
  #: view/Research/Suggested.php:82 view/Research/Suggested.php:87
4084
  msgid "-"
4085
  msgstr ""
4086
 
4087
+ #: view/Blocks/KRFound.php:96 view/Research/Suggested.php:149
4088
  #, fuzzy
4089
  #| msgid "We check once a week all the keywords from your briefcase"
4090
  msgid "Once a week, Squirrly checks all the keywords from your briefcase."
4091
  msgstr "Once a week, Squirrly checks all the keywords from your briefcase."
4092
 
4093
+ #: view/Blocks/KRFound.php:97 view/Research/Suggested.php:150
4094
  #, fuzzy
4095
  #| msgid "If we find better keywords, they will be listed here"
4096
  msgid "If it finds better keywords, they will be listed here"
4097
  msgstr "If it finds better keywords, they will be listed here"
4098
 
4099
+ #: view/Blocks/KRFound.php:98 view/Research/Suggested.php:151
4100
  msgid "Until then, add keywords in Briefcase"
4101
  msgstr ""
4102
 
4103
+ #: view/Blocks/KRFound.php:102 view/Blocks/SLASearch.php:22
4104
  #: view/Ranking/Gscsync.php:103 view/Research/Suggested.php:155
4105
  msgid "Go to Briefcase"
4106
  msgstr ""
4113
  msgid "See Research History"
4114
  msgstr ""
4115
 
4116
+ #: view/Blocks/KRHistory.php:43 view/Research/History.php:51
4117
  msgid "See your research results and compare them over time"
4118
  msgstr ""
4119
 
4192
  msgid "keywords found"
4193
  msgstr ""
4194
 
4195
+ #: view/Blocks/Ranks.php:121 view/Ranking/Rankings.php:347
4196
  msgid "To see how your website is ranking on Google"
4197
  msgstr ""
4198
 
4199
+ #: view/Blocks/Ranks.php:125 view/Ranking/Rankings.php:351
4200
  msgid "Add keywords in Briefcase"
4201
  msgstr ""
4202
 
4203
+ #: view/Blocks/Ranks.php:131 view/Ranking/Rankings.php:357
4204
  msgid "Then send keywords to Rank Checker"
4205
  msgstr ""
4206
 
4330
  msgid "Split Window"
4331
  msgstr ""
4332
 
4333
+ #: view/Blocks/Snippet.php:82
4334
  msgid "Meta Tags"
4335
  msgstr ""
4336
 
4337
+ #: view/Blocks/Snippet.php:86
4338
  msgid "JSON-LD"
4339
  msgstr ""
4340
 
4341
+ #: view/Blocks/Snippet.php:97
4342
  msgid "Tracking"
4343
  msgstr ""
4344
 
4345
+ #: view/Blocks/Snippet.php:113 view/Blocks/Snippet.php:473
4346
+ #: view/Blocks/Snippet.php:727
4347
  #, php-format
4348
  msgid ""
4349
  "Post Type (%s) was excluded from %sSquirrly > SEO Settings%s. Squirrly SEO "
4350
  "will not load for this post type on the frontend"
4351
  msgstr ""
4352
 
4353
+ #: view/Blocks/Snippet.php:121 view/SeoSettings/Automation.php:132
4354
  #: view/SeoSettings/Automation.php:159 view/SeoSettings/Automation.php:221
4355
  msgid "Activate Metas"
4356
  msgstr ""
4357
 
4358
+ #: view/Blocks/Snippet.php:130
4359
  msgid "How this page will appear on Search Engines"
4360
  msgstr ""
4361
 
4362
+ #: view/Blocks/Snippet.php:134 view/Blocks/Snippet.php:366
4363
+ #: view/Blocks/Snippet.php:495 view/Blocks/Snippet.php:749
4364
+ #: view/Blocks/Snippet.php:963 view/Blocks/Snippet.php:1078
4365
  msgid "Refresh"
4366
  msgstr ""
4367
 
4368
+ #: view/Blocks/Snippet.php:138 view/Blocks/Snippet.php:511
4369
+ #: view/Blocks/Snippet.php:767
4370
  msgid "AUTO-DRAFT"
4371
  msgstr ""
4372
 
4373
+ #: view/Blocks/Snippet.php:149 view/Blocks/Snippet.php:532
4374
+ #: view/Blocks/Snippet.php:787
4375
  msgid "Please save the post first to be able to edit the Squirrly SEO Snippet"
4376
  msgstr ""
4377
 
4378
+ #: view/Blocks/Snippet.php:156 view/Blocks/Snippet.php:539
4379
+ #: view/Blocks/Snippet.php:794
4380
  msgid "Cancel"
4381
  msgstr ""
4382
 
4383
+ #: view/Blocks/Snippet.php:157 view/Blocks/Snippet.php:367
4384
+ #: view/Blocks/Snippet.php:540 view/Blocks/Snippet.php:795
4385
+ #: view/Blocks/Snippet.php:964 view/Blocks/Snippet.php:1079
4386
  msgid "Save"
4387
  msgstr ""
4388
 
4389
+ #: view/Blocks/Snippet.php:167
4390
  msgid "Activate Title"
4391
  msgstr ""
4392
 
4393
+ #: view/Blocks/Snippet.php:174 view/Blocks/Snippet.php:225
4394
+ #: view/Blocks/Snippet.php:573 view/Blocks/Snippet.php:616
4395
+ #: view/Blocks/Snippet.php:828 view/Blocks/Snippet.php:871
4396
  #, php-format
4397
  msgid "Tips: Length %s-%s chars"
4398
  msgstr ""
4399
 
4400
+ #: view/Blocks/Snippet.php:177 view/Blocks/Snippet.php:228
4401
+ #: view/Blocks/Snippet.php:576 view/Blocks/Snippet.php:619
4402
+ #: view/Blocks/Snippet.php:831 view/Blocks/Snippet.php:874
4403
  msgid "Pattern: "
4404
  msgstr ""
4405
 
4406
+ #: view/Blocks/Snippet.php:194 view/Blocks/Snippet.php:593
4407
+ #: view/Blocks/Snippet.php:848
4408
  msgid "Default Title"
4409
  msgstr ""
4410
 
4411
+ #: view/Blocks/Snippet.php:201 view/Blocks/Snippet.php:255
4412
+ #: view/Blocks/Snippet.php:600 view/Blocks/Snippet.php:646
4413
+ #: view/Blocks/Snippet.php:855 view/Blocks/Snippet.php:901
4414
  msgid "Pattern"
4415
  msgstr ""
4416
 
4417
+ #: view/Blocks/Snippet.php:218
4418
  msgid "Activate Description"
4419
  msgstr ""
4420
 
4421
+ #: view/Blocks/Snippet.php:224
4422
  msgid "Meta Description"
4423
  msgstr ""
4424
 
4425
+ #: view/Blocks/Snippet.php:248 view/Blocks/Snippet.php:639
4426
+ #: view/Blocks/Snippet.php:894
4427
  msgid "Default Description"
4428
  msgstr ""
4429
 
4430
+ #: view/Blocks/Snippet.php:272
4431
  msgid "Activate Keywords"
4432
  msgstr ""
4433
 
4434
+ #: view/Blocks/Snippet.php:278
4435
  msgid "Meta Keywords"
4436
  msgstr ""
4437
 
4438
+ #: view/Blocks/Snippet.php:282
4439
  msgid "+ Add keyword"
4440
  msgstr ""
4441
 
4442
+ #: view/Blocks/Snippet.php:294
4443
  msgid "Activate Canonical"
4444
  msgstr ""
4445
 
4446
+ #: view/Blocks/Snippet.php:301
4447
  msgid "Leave it blank if you don't have an external canonical"
4448
  msgstr ""
4449
 
4450
+ #: view/Blocks/Snippet.php:304
4451
  msgid "Found: "
4452
  msgstr ""
4453
 
4454
+ #: view/Blocks/Snippet.php:316
4455
  msgid "Default Link"
4456
  msgstr ""
4457
 
4458
+ #: view/Blocks/Snippet.php:338 view/Blocks/Snippet.php:461
4459
+ #: view/Blocks/Snippet.php:707 view/Blocks/Snippet.php:942
4460
+ #: view/Blocks/Snippet.php:1057 view/Blocks/Snippet.php:1183
4461
  msgid ""
4462
  "To edit the snippet, you have to activate Squirrly SEO for this page first"
4463
  msgstr ""
4464
 
4465
+ #: view/Blocks/Snippet.php:347
4466
  msgid "Activate Squirrly Snippet for this page"
4467
  msgstr ""
4468
 
4469
+ #: view/Blocks/Snippet.php:352 view/Blocks/Snippet.php:712
4470
+ #: view/Blocks/Snippet.php:947
4471
  msgid "Post Type"
4472
  msgstr ""
4473
 
4474
+ #: view/Blocks/Snippet.php:354 view/Blocks/Snippet.php:676
4475
+ #: view/Blocks/Snippet.php:714
4476
  msgid "OG Type"
4477
  msgstr ""
4478
 
4479
+ #: view/Blocks/Snippet.php:384
4480
  #, fuzzy, php-format
4481
  #| msgid ""
4482
  #| "Json-LD is disable for this Post Type (%s). See %sSquirrly > SEO Settings "
4488
  "JSON-LD is disable for this Post Type (%s). See %sSquirrly > SEO Settings > "
4489
  "Automation%s."
4490
 
4491
+ #: view/Blocks/Snippet.php:408
4492
  #, fuzzy
4493
  #| msgid "Json-LD Type"
4494
  msgid "JSON-LD Type"
4495
  msgstr "JSON-LD Type"
4496
 
4497
+ #: view/Blocks/Snippet.php:413 view/Blocks/Snippet.php:684
4498
+ #: view/Blocks/Snippet.php:922 view/Blocks/Snippet.php:1010
4499
  msgid "(Auto)"
4500
  msgstr ""
4501
 
4502
+ #: view/Blocks/Snippet.php:414 view/Blocks/Snippet.php:1011
4503
  msgid "Custom Code"
4504
  msgstr ""
4505
 
4506
+ #: view/Blocks/Snippet.php:424
4507
  #, fuzzy
4508
  #| msgid "Custom Json-LD Code"
4509
  msgid "Custom JSON-LD Code"
4510
  msgstr "Custom JSON-LD Code"
4511
 
4512
+ #: view/Blocks/Snippet.php:425
4513
  #, fuzzy, php-format
4514
  #| msgid "Add Json-LD code from %sSchema Generator Online%s."
4515
  msgid "Add JSON-LD code from %sSchema Generator Online%s."
4516
  msgstr "Add JSON-LD code from %sSchema Generator Online%s."
4517
 
4518
+ #: view/Blocks/Snippet.php:434
4519
  #, fuzzy
4520
  #| msgid "Current Json-LD Code"
4521
  msgid "Current JSON-LD Code"
4522
  msgstr "Current JSON-LD Code"
4523
 
4524
+ #: view/Blocks/Snippet.php:442
4525
  msgid "Validate"
4526
  msgstr ""
4527
 
4528
+ #: view/Blocks/Snippet.php:490
4529
  msgid "How this page appears on Facebook"
4530
  msgstr ""
4531
 
4532
+ #: view/Blocks/Snippet.php:496
4533
  msgid "Edit Open Graph"
4534
  msgstr ""
4535
 
4536
+ #: view/Blocks/Snippet.php:504 view/Blocks/Snippet.php:759
4537
  msgid "The image size must be at least 500 pixels wide"
4538
  msgstr ""
4539
 
4540
+ #: view/Blocks/Snippet.php:520
4541
  #, fuzzy
4542
  #| msgid ""
4543
  #| "This is the Featured Image. You can changin it if you edit the snippet "
4549
  "This is the Featured Image. You can change it if you edit the snippet and "
4550
  "upload another image."
4551
 
4552
+ #: view/Blocks/Snippet.php:549 view/Blocks/Snippet.php:804
4553
  msgid "Media Image"
4554
  msgstr ""
4555
 
4556
+ #: view/Blocks/Snippet.php:553 view/Blocks/Snippet.php:808
4557
+ #: view/Research/Briefcase.php:366 view/SeoSettings/Favicon.php:72
4558
  msgid "Upload"
4559
  msgstr ""
4560
 
4561
+ #: view/Blocks/Snippet.php:554 view/Blocks/Snippet.php:809
4562
  msgid "Image size must be at least 500 pixels wide"
4563
  msgstr ""
4564
 
4565
+ #: view/Blocks/Snippet.php:661
4566
  msgid "Author Link"
4567
  msgstr ""
4568
 
4569
+ #: view/Blocks/Snippet.php:662
4570
  #, fuzzy
4571
  #| msgid "For mutiple authors, separate their facebook links with commas"
4572
  msgid "For multiple authors, separate their Facebook links with commas"
4573
  msgstr "For multiple authors, separate their Facebook links with commas"
4574
 
4575
+ #: view/Blocks/Snippet.php:744
4576
  msgid "How this page appears on Twitter"
4577
  msgstr ""
4578
 
4579
+ #: view/Blocks/Snippet.php:750
4580
  msgid "Edit Twitter Card"
4581
  msgstr ""
4582
 
4583
+ #: view/Blocks/Snippet.php:776
4584
  #, fuzzy
4585
  #| msgid ""
4586
  #| "This is the Featured Image. You can changin it if you edit the snippet "
4592
  "This is the Featured Image. You can change it if you edit the snippet and "
4593
  "upload another image."
4594
 
4595
+ #: view/Blocks/Snippet.php:917
4596
  msgid "Card Type"
4597
  msgstr ""
4598
 
4599
+ #: view/Blocks/Snippet.php:918 view/SeoSettings/Social.php:290
4600
  #, php-format
4601
  msgid "Every change needs %sTwitter Card Validator%s"
4602
  msgstr ""
4603
 
4604
+ #: view/Blocks/Snippet.php:923
4605
  msgid "summary"
4606
  msgstr ""
4607
 
4608
+ #: view/Blocks/Snippet.php:924
4609
  msgid "summary_large_image"
4610
  msgstr ""
4611
 
4612
+ #: view/Blocks/Snippet.php:949
4613
  msgid "Twitter Type"
4614
  msgstr ""
4615
 
4616
+ #: view/Blocks/Snippet.php:975
4617
  msgid "Activate Tracking"
4618
  msgstr ""
4619
 
4620
+ #: view/Blocks/Snippet.php:981
4621
  #, fuzzy, php-format
4622
  #| msgid ""
4623
  #| "Facebook Pixel is disable for this Post Type. See %sSquirrly > SEO "
4629
  "Facebook Pixel is disabled for this Post Type. See %sSquirrly > SEO Settings "
4630
  "> Automation%s."
4631
 
4632
+ #: view/Blocks/Snippet.php:1005 view/SeoSettings/Tracking.php:85
4633
  msgid "Facebook Pixel"
4634
  msgstr ""
4635
 
4636
+ #: view/Blocks/Snippet.php:1021
4637
  msgid "Custom Pixel Code"
4638
  msgstr ""
4639
 
4640
+ #: view/Blocks/Snippet.php:1022
4641
  #, php-format
4642
  msgid "Add Facebook Pixel code from %sFacebook Events%s."
4643
  msgstr ""
4644
 
4645
+ #: view/Blocks/Snippet.php:1031
4646
  msgid "Current Pixel Code"
4647
  msgstr ""
4648
 
4649
+ #: view/Blocks/Snippet.php:1040
4650
  #, php-format
4651
  msgid ""
4652
  "Add a Pixel ID for Facebook Pixel at %sSquirrly > SEO Settings > Tracking "
4653
  "Tools%s."
4654
  msgstr ""
4655
 
4656
+ #: view/Blocks/Snippet.php:1070
4657
  #, php-format
4658
  msgid ""
4659
  "You selected '%s' in %sSettings > Reading%s. It's important to uncheck that "
4660
  "option."
4661
  msgstr ""
4662
 
4663
+ #: view/Blocks/Snippet.php:1090 view/Blocks/Snippet.php:1121
4664
  #, php-format
4665
  msgid ""
4666
  "This Post Type (%s) has Nofollow set in Automation. See %sSquirrly > SEO "
4667
  "Settings > Automation%s."
4668
  msgstr ""
4669
 
4670
+ #: view/Blocks/Snippet.php:1097 view/Blocks/Snippet.php:1128
4671
  #: view/SeoSettings/Automation.php:139 view/SeoSettings/Automation.php:166
4672
  msgid "Activate Robots Meta"
4673
  msgstr ""
4674
 
4675
+ #: view/Blocks/Snippet.php:1108
4676
  msgid "Let Google Index This Page"
4677
  msgstr ""
4678
 
4679
+ #: view/Blocks/Snippet.php:1151
4680
  #, php-format
4681
  msgid ""
4682
  "Show in sitemap for this Post Type (%s) was excluded from %sSquirrly > SEO "
4683
  "Settings > Automation%s."
4684
  msgstr ""
4685
 
4686
+ #: view/Blocks/Snippet.php:1158 view/SeoSettings/Automation.php:185
4687
  #: view/SeoSettings/Sitemap.php:29
4688
  msgid "Activate Sitemap"
4689
  msgstr ""
4690
 
4691
+ #: view/Blocks/Snippet.php:1168
4692
  msgid "Show it in Sitemap.xml"
4693
  msgstr ""
4694
 
4695
+ #: view/Blocks/Snippet.php:1207
4696
  msgid "Loading Squirrly Snippet ..."
4697
  msgstr ""
4698
 
4699
+ #: view/Blocks/Snippet.php:1233
4700
  msgid "Enable Squirrly SEO to load Squirrly Snippet"
4701
  msgstr ""
4702
 
4703
+ #: view/Blocks/Snippet.php:1246
4704
  #, fuzzy, php-format
4705
  #| msgid "%sPlease connect to Squirrly Cloud first%s"
4706
  msgid "%sPlease connect to SquirrlyCloud first%s"
4707
  msgstr "%sPlease connect to SquirrlyCloud first%s"
4708
 
4709
+ #: view/Blocks/Support.php:7
4710
  msgid "Go to Profile"
4711
  msgstr ""
4712
 
4713
+ #: view/Blocks/Support.php:7 view/Blocks/Support.php:8
4714
  msgid "Profile"
4715
  msgstr ""
4716
 
4717
+ #: view/Blocks/Support.php:18
4718
  msgid "Support"
4719
  msgstr ""
4720
 
4721
+ #: view/Blocks/Support.php:21
4722
  msgid "Need Help with Squirrly SEO?"
4723
  msgstr ""
4724
 
4725
+ #: view/Blocks/Support.php:23 view/Blocks/Support.php:79
4726
  #, php-format
4727
  msgid "10 AM to 4 PM (GMT): Mon-Fri %sby email%s."
4728
  msgstr ""
4729
 
4730
+ #: view/Blocks/Support.php:24 view/Blocks/Support.php:80
4731
  #, php-format
4732
  msgid "How To Squirrly %swebsite%s."
4733
  msgstr ""
4734
 
4735
+ #: view/Blocks/Support.php:25 view/Blocks/Support.php:81
4736
  #, php-format
4737
  msgid "Facebook %sSupport Community%s."
4738
  msgstr ""
4739
 
4740
+ #: view/Blocks/Support.php:26 view/Blocks/Support.php:82
4741
  #, php-format
4742
  msgid "Facebook %sMessenger%s."
4743
  msgstr ""
4744
 
4745
+ #: view/Blocks/Support.php:27
4746
  #, php-format
4747
  msgid "Twitter %sSupport%s."
4748
  msgstr ""
4749
 
4750
+ #: view/Blocks/Support.php:39
4751
  msgid "How was your Squirrly experience today?"
4752
  msgstr ""
4753
 
4754
+ #: view/Blocks/Support.php:48
4755
  msgid "How was Squirrly today?"
4756
  msgstr ""
4757
 
4758
+ #: view/Blocks/Support.php:53
4759
  msgid "Angry"
4760
  msgstr ""
4761
 
4762
+ #: view/Blocks/Support.php:53
4763
  msgid "Annoying"
4764
  msgstr ""
4765
 
4766
+ #: view/Blocks/Support.php:56
4767
  msgid "Sad"
4768
  msgstr ""
4769
 
4770
+ #: view/Blocks/Support.php:56
4771
  msgid "Bad"
4772
  msgstr ""
4773
 
4774
+ #: view/Blocks/Support.php:59
4775
  msgid "Happy"
4776
  msgstr ""
4777
 
4778
+ #: view/Blocks/Support.php:59
4779
  msgid "Nice"
4780
  msgstr ""
4781
 
4782
+ #: view/Blocks/Support.php:62
4783
  msgid "Excited"
4784
  msgstr ""
4785
 
4786
+ #: view/Blocks/Support.php:62
4787
  msgid "Great"
4788
  msgstr ""
4789
 
4790
+ #: view/Blocks/Support.php:65
4791
  msgid "Love it"
4792
  msgstr ""
4793
 
4794
+ #: view/Blocks/Support.php:71
4795
  #, fuzzy
4796
  #| msgid "Please tell us why?"
4797
  msgid "Please tell us why."
4798
  msgstr "Please tell us why."
4799
 
4800
+ #: view/Blocks/Support.php:74
4801
  msgid "Send feedback"
4802
  msgstr ""
4803
 
4804
+ #: view/Blocks/Support.php:78
4805
  msgid "For more support:"
4806
  msgstr ""
4807
 
4808
+ #: view/Blocks/Support.php:83
4809
  #, php-format
4810
  msgid "New Lessons Mon. and Tue. on %sTwitter%s."
4811
  msgstr ""
4812
 
4813
+ #: view/Blocks/Support.php:88
4814
  #, fuzzy
4815
  #| msgid "Thank you! You can send us a happy face tomorow too."
4816
  msgid "Thank you! You can send us a happy face tomorrow too."
4880
  msgstr ""
4881
 
4882
  #: view/FocusPages/Addpage.php:32 view/Research/Research.php:166
4883
+ #: view/SeoSettings/Bulkseo.php:115
4884
  msgid "Search"
4885
  msgstr ""
4886
 
4892
  msgid "Is focus page"
4893
  msgstr ""
4894
 
4895
+ #: view/FocusPages/Addpage.php:96 view/SeoSettings/Bulkseo.php:190
4896
  msgid "Prev Page"
4897
  msgstr ""
4898
 
4899
+ #: view/FocusPages/Addpage.php:97 view/SeoSettings/Bulkseo.php:191
4900
  msgid "Next Page"
4901
  msgstr ""
4902
 
4904
  msgid "Best Practices"
4905
  msgstr ""
4906
 
4907
+ #: view/FocusPages/FocusPageRow.php:46
4908
  msgid "You can refresh the audit once every 5 minutes"
4909
  msgstr ""
4910
 
4911
+ #: view/FocusPages/FocusPageRow.php:48
4912
  msgid "Request new audit"
4913
  msgstr ""
4914
 
4915
+ #: view/FocusPages/FocusPageRow.php:54
4916
+ msgid "Could not create the audit for this URL"
4917
+ msgstr ""
4918
+
4919
+ #: view/FocusPages/FocusPageRow.php:55
4920
+ #, php-format
4921
+ msgid ""
4922
+ "The current way your WordPress site is hosted can cause experience issues to "
4923
+ "the way Squirrly SEO works. %s In order to serve you with the best data, and "
4924
+ "make sure that the Focus Pages audits can be processed, you will need to "
4925
+ "talk to your hosting provider and tell them to make the following settings. "
4926
+ "%s Please add the IP addresses 176.9.59.55 and 176.9.112.210 in the white-"
4927
+ "list for remote access and it should work."
4928
+ msgstr ""
4929
+
4930
+ #: view/FocusPages/FocusPageRow.php:85
4931
  msgid "Delete Focus Page"
4932
  msgstr ""
4933
 
4935
  msgid "Current Ranking Drawbacks."
4936
  msgstr ""
4937
 
4938
+ #: view/FocusPages/Pagelist.php:37 view/Ranking/Rankings.php:65
4939
+ #: view/Research/Briefcase.php:34 view/SeoSettings/Bulkseo.php:117
4940
  msgid "Show All"
4941
  msgstr ""
4942
 
4952
  msgid "Welcome to Focus Pages"
4953
  msgstr ""
4954
 
4955
+ #: view/FocusPages/Pagelist.php:130
4956
+ #, php-format
4957
+ msgid ""
4958
+ "%sNote:%s remember that it takes anywhere between %s1 minute to 5 minutes%s "
4959
+ "to generate the new audit for a focus page. There is a lot of processing "
4960
+ "involved."
4961
+ msgstr ""
4962
+
4963
  #: view/FocusPages/Settings.php:19
4964
  msgid "Focus Pages Settings"
4965
  msgstr ""
5166
  msgid "Start using Squirrly SEO"
5167
  msgstr ""
5168
 
5169
+ #: view/Post.php:5
5170
+ msgid "img/editor/sla.png"
5171
+ msgstr ""
5172
+
5173
+ #: view/Post.php:8
5174
+ msgid ""
5175
+ "To load Squirrly Live Assistant and optimize this page, click to connect to "
5176
+ "Squirrly Data Cloud."
5177
+ msgstr ""
5178
+
5179
  #: view/Ranking/Gscsync.php:13
5180
  msgid "Google Search Console Keywords Sync"
5181
  msgstr ""
5241
  "organic keywords"
5242
  msgstr ""
5243
 
5244
+ #: view/Ranking/Rankings.php:41
5245
  #, php-format
5246
  msgid ""
5247
  "%sSERP Checker Business:%s We update the best ranks for each keyword, daily. "
5248
  "100%% accurate and objective."
5249
  msgstr ""
5250
 
5251
+ #: view/Ranking/Rankings.php:45
5252
  #, php-format
5253
  msgid ""
5254
  "%sSERP Checker Lite:%s We show ranks according to what Google shows you in "
5257
  "plan to %sBusiness Plan%s"
5258
  msgstr ""
5259
 
5260
+ #: view/Ranking/Rankings.php:88
5261
  #, fuzzy
5262
  #| msgid "Show only the ranked articles"
5263
  msgid "Only show ranked articles"
5264
  msgstr "Only show ranked articles"
5265
 
5266
+ #: view/Ranking/Rankings.php:93
5267
  msgid "Today Avg. Ranking"
5268
  msgstr ""
5269
 
5270
+ #: view/Ranking/Rankings.php:121
5271
  #, fuzzy
5272
  #| msgid "Show only the SERP changes"
5273
  msgid "Only show SERP changes"
5274
  msgstr "Only show SERP changes"
5275
 
5276
+ #: view/Ranking/Rankings.php:135
5277
  msgid "Today SERP Changes"
5278
  msgstr ""
5279
 
5280
+ #: view/Ranking/Rankings.php:148
5281
  msgid "Path"
5282
  msgstr ""
5283
 
5284
+ #: view/Ranking/Rankings.php:150
5285
  msgid "Rank"
5286
  msgstr ""
5287
 
5288
+ #: view/Ranking/Rankings.php:151
5289
  msgid "Best"
5290
  msgstr ""
5291
 
5292
+ #: view/Ranking/Rankings.php:153
5293
  msgid "Avg Rank"
5294
  msgstr ""
5295
 
5296
+ #: view/Ranking/Rankings.php:155 view/Research/History.php:28
5297
  msgid "Details"
5298
  msgstr ""
5299
 
5300
+ #: view/Ranking/Rankings.php:203
5301
  msgid "Optimized with SLA"
5302
  msgstr ""
5303
 
5304
+ #: view/Ranking/Rankings.php:211
5305
  msgid "Social Shares"
5306
  msgstr ""
5307
 
5308
+ #: view/Ranking/Rankings.php:214
5309
  msgid "Facebook"
5310
  msgstr ""
5311
 
5312
+ #: view/Ranking/Rankings.php:215
5313
  msgid "Reddit"
5314
  msgstr ""
5315
 
5316
+ #: view/Ranking/Rankings.php:216
5317
  msgid "Pinterest"
5318
  msgstr ""
5319
 
5320
+ #: view/Ranking/Rankings.php:238
5321
  msgid ""
5322
  "Note! The clicks and impressions data is taken from Google Search Console "
5323
  "for the last 90 days for the current URL"
5324
  msgstr ""
5325
 
5326
+ #: view/Ranking/Rankings.php:251 view/Ranking/Rankings.php:284
5327
  msgid "Google Search Console has no data for this keyword"
5328
  msgstr ""
5329
 
5330
+ #: view/Ranking/Rankings.php:260
5331
  msgid "Sync Keywords"
5332
  msgstr ""
5333
 
5334
+ #: view/Ranking/Rankings.php:274
5335
  msgid "Not indexed"
5336
  msgstr ""
5337
 
5338
+ #: view/Ranking/Rankings.php:285
5339
  msgid "GSC"
5340
  msgstr ""
5341
 
5342
+ #: view/Ranking/Rankings.php:289
5343
  msgid "rank details"
5344
  msgstr ""
5345
 
5346
+ #: view/Ranking/Rankings.php:309
5347
  msgid "Check Ranking again"
5348
  msgstr ""
5349
 
5350
+ #: view/Ranking/Rankings.php:322
5351
  msgid "Remove Keyword"
5352
  msgstr ""
5353
 
5354
+ #: view/Ranking/Rankings.php:342
5355
  msgid "No ranking found."
5356
  msgstr ""
5357
 
5358
+ #: view/Ranking/Rankings.php:346
5359
  msgid "Welcome to Squirrly Rankings"
5360
  msgstr ""
5361
 
5362
+ #: view/Ranking/Rankings.php:369
5363
  msgid "Synchronize Keywords with Google Search Console"
5364
  msgstr ""
5365
 
5868
  msgid "No research data"
5869
  msgstr ""
5870
 
5871
+ #: view/Research/Briefcase.php:234
5872
  msgid "Send to Rank Checker"
5873
  msgstr ""
5874
 
5875
+ #: view/Research/Briefcase.php:243
5876
  msgid "Refresh Research"
5877
  msgstr ""
5878
 
5879
+ #: view/Research/Briefcase.php:248
5880
  msgid "Assign Label"
5881
  msgstr ""
5882
 
5883
+ #: view/Research/Briefcase.php:253
5884
  msgid "Delete Keyword"
5885
  msgstr ""
5886
 
5887
+ #: view/Research/Briefcase.php:264
5888
  #, php-format
5889
  msgid "Select Labels for: %s"
5890
  msgstr ""
5891
 
5892
+ #: view/Research/Briefcase.php:278 view/Research/Labels.php:17
5893
  msgid "Add new Label"
5894
  msgstr ""
5895
 
5896
+ #: view/Research/Briefcase.php:284
5897
  msgid "Save Labels"
5898
  msgstr ""
5899
 
5900
+ #: view/Research/Briefcase.php:311
5901
  msgid "Welcome to Briefcase"
5902
  msgstr ""
5903
 
5904
+ #: view/Research/Briefcase.php:312
5905
  msgid "To get started with managing keywords for your SEO Strategy"
5906
  msgstr ""
5907
 
5908
+ #: view/Research/Briefcase.php:316
5909
  msgid "Go Find Keywords"
5910
  msgstr ""
5911
 
5912
+ #: view/Research/Briefcase.php:322 view/Research/History.php:61
5913
  msgid "Then Add them to Briefcase"
5914
  msgstr ""
5915
 
5916
+ #: view/Research/Briefcase.php:332
5917
  msgid "Backup/Restore Briefcase Keywords"
5918
  msgstr ""
5919
 
5920
+ #: view/Research/Briefcase.php:333
5921
  msgid ""
5922
  "Keep your briefcase keywords safe in case you change your domain or "
5923
  "reinstall the plugin"
5924
  msgstr ""
5925
 
5926
+ #: view/Research/Briefcase.php:339
5927
  msgid "Download Keywords"
5928
  msgstr ""
5929
 
5930
+ #: view/Research/Briefcase.php:342
5931
  msgid "Import Keywords"
5932
  msgstr ""
5933
 
5934
+ #: view/Research/Briefcase.php:348
5935
  msgid "Restore Briefcase Keywords"
5936
  msgstr ""
5937
 
5938
+ #: view/Research/Briefcase.php:356
5939
  msgid "Restore Keywords"
5940
  msgstr ""
5941
 
5942
+ #: view/Research/Briefcase.php:357
5943
  msgid "Upload the file with the saved Squirrly Briefcase Keywords."
5944
  msgstr ""
5945
 
6011
  msgid "Color"
6012
  msgstr ""
6013
 
6014
+ #: view/Research/Labels.php:108
6015
  msgid "Delete Label"
6016
  msgstr ""
6017
 
6018
+ #: view/Research/Labels.php:124
6019
  msgid "Welcome to Briefcase Labels"
6020
  msgstr ""
6021
 
6022
+ #: view/Research/Labels.php:125
6023
  msgid "To categorize and filter the keywords from Briefcase"
6024
  msgstr ""
6025
 
6026
+ #: view/Research/Labels.php:129
6027
  msgid "Add new label"
6028
  msgstr ""
6029
 
6030
+ #: view/Research/Labels.php:136
6031
  msgid "Assign keywords to labels"
6032
  msgstr ""
6033
 
6521
  msgid "Any status"
6522
  msgstr ""
6523
 
6524
+ #: view/SeoSettings/Bulkseo.php:177
6525
+ #, php-format
6526
+ msgid "No data for this filter. %sShow All%s records for this post type."
6527
+ msgstr ""
6528
+
6529
+ #: view/SeoSettings/Bulkseo.php:179
6530
+ msgid "No data found for this post type. Try other post types."
6531
+ msgstr ""
6532
+
6533
  #: view/SeoSettings/BulkseoRow.php:26
6534
  #, php-format
6535
  msgid "View &#8220;%s&#8221;"
6631
  msgid "Logo URL"
6632
  msgstr ""
6633
 
 
 
 
 
6634
  #: view/SeoSettings/Jsonld.php:89 view/SeoSettings/Jsonld.php:159
6635
  #: view/SeoSettings/Metas.php:191
6636
  msgid "Select Image"
6829
  msgid "Tips: use 2-4 keywords"
6830
  msgstr ""
6831
 
 
 
 
 
6832
  #: view/SeoSettings/Metas.php:199
6833
  msgid "First Page Preview"
6834
  msgstr ""
7338
  "Pinterest account. Visit the %sRich Pins Validator%s"
7339
  msgstr ""
7340
 
7341
+ #~ msgid "Json LD"
7342
+ #~ msgstr "JSON LD"
7343
+
7344
+ #~ msgid "You choosed to ignore this task. Click to activate it."
7345
+ #~ msgstr "You chose to ignore this task. Click to activate it."
7346
+
7347
  #~ msgid ""
7348
  #~ "This is the Featured Image. You can changin it if you edit the snippet "
7349
  #~ "and upload anothe image."
models/Assistant.php CHANGED
@@ -455,6 +455,17 @@ class SQ_Models_Assistant {
455
 
456
  public function checkSettingsJsonld() {
457
  if (SQ_Classes_Helpers_Tools::getOption('sq_auto_jsonld')) {
 
 
 
 
 
 
 
 
 
 
 
458
  return true;
459
  }
460
 
@@ -588,7 +599,7 @@ class SQ_Models_Assistant {
588
  }
589
  }
590
  }
591
- if (count($this->_ranks) >= 3) {
592
  return true;
593
  }
594
 
455
 
456
  public function checkSettingsJsonld() {
457
  if (SQ_Classes_Helpers_Tools::getOption('sq_auto_jsonld')) {
458
+ $jsonld = SQ_Classes_Helpers_Tools::getOption('sq_jsonld');
459
+ $jsonldtype = SQ_Classes_Helpers_Tools::getOption('sq_jsonld_type');
460
+ if (isset($jsonld[$jsonldtype]) && !empty($jsonld[$jsonldtype])) {
461
+ if ($jsonld[$jsonldtype]['name'] == '' ||
462
+ $jsonld[$jsonldtype]['logo'] == '' ||
463
+ $jsonld[$jsonldtype]['description'] == ''
464
+ ) {
465
+ return false;
466
+
467
+ }
468
+ }
469
  return true;
470
  }
471
 
599
  }
600
  }
601
  }
602
+ if (count((array)$this->_ranks) >= 3) {
603
  return true;
604
  }
605
 
models/CheckSeo.php CHANGED
@@ -125,22 +125,19 @@ class SQ_Models_CheckSeo {
125
  */
126
  public function getSourceCode() {
127
  $url = home_url('?rnd=' . rand());
128
- $response = wp_remote_get($url, array('redirection' => 1));
129
 
130
- if (!is_wp_error($response)) {
131
- if (wp_remote_retrieve_response_code($response) == 200) {
132
- $this->html = wp_remote_retrieve_body($response);
 
 
133
  } else {
134
- $htmlerror = "Empty Body";
135
  $this->html = false;
136
  }
137
- } else {
138
- $htmlerror = $response->get_error_message();
139
- $this->html = false;
140
  }
141
 
142
  return array(
143
- 'warning' => __("Could not verify the frontend.", _SQ_PLUGIN_NAME_) . ' (' . $htmlerror . ')',
144
  'valid' => true
145
  );
146
  }
125
  */
126
  public function getSourceCode() {
127
  $url = home_url('?rnd=' . rand());
 
128
 
129
+ $json = SQ_Classes_ObjController::getClass('SQ_Classes_RemoteController')->crawlURL(array('url' => $url));
130
+
131
+ if (!is_wp_error($json)) {
132
+ if (isset($json->content) && $json->content <> '') {
133
+ $this->html = $json->content;
134
  } else {
 
135
  $this->html = false;
136
  }
 
 
 
137
  }
138
 
139
  return array(
140
+ 'warning' => __("Could not verify the frontend.", _SQ_PLUGIN_NAME_),
141
  'valid' => true
142
  );
143
  }
models/Compatibility.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class SQ_Models_Compatibility {
4
+
5
+ /**
6
+ * Prevent other plugins javascript
7
+ */
8
+ public function fixEnqueueErrors() {
9
+ global $wp_styles, $wp_scripts;
10
+ $corelib = array('admin-bar', 'colors', 'ie', 'common', 'utils', 'wp-auth-check',
11
+ 'media-editor', 'media-audiovideo', 'media-views', 'imgareaselect', 'mce-view', 'image-edit'
12
+ );
13
+
14
+ foreach ($wp_styles->queue as $key => $queue) {
15
+ if (!in_array($queue, $corelib)) {
16
+ unset($wp_styles->queue[$key]);
17
+ }
18
+ }
19
+
20
+ foreach ($wp_scripts->queue as $key => $queue) {
21
+ if (!in_array($queue, $corelib)) {
22
+ unset($wp_scripts->queue[$key]);
23
+ }
24
+ }
25
+ }
26
+
27
+ /**
28
+ * Clear the styles from other plugins
29
+ */
30
+ public function clearStyles() {
31
+ //clear the other plugins js
32
+ global $wp_styles;
33
+ $wp_styles->queue = array();
34
+ }
35
+ }
models/FocusPages.php CHANGED
@@ -96,10 +96,20 @@ class SQ_Models_FocusPages {
96
  }
97
 
98
  $audit = $this->_focuspage->getAudit();
99
- if (isset($audit->properties) && isset($audit->properties->created_at->date) && isset($audit->data->sq_seo_keywords->value) && $audit->data->sq_seo_keywords->value <> '') {
 
 
 
100
  $this->_focuspage->audit_datetime = date(get_option('date_format') . ' ' . get_option('time_format'), strtotime($audit->properties->created_at->date));
 
 
 
 
101
  } else {
102
  $this->_focuspage->audit_datetime = __('Audit in progress', _SQ_PLUGIN_NAME_);
 
 
 
103
  $this->_focuspage->visibility = 'N/A';
104
  }
105
 
96
  }
97
 
98
  $audit = $this->_focuspage->getAudit();
99
+
100
+ //Set the focus page audit as success
101
+ $this->_focuspage->audit_error = false;
102
+ if (isset($audit->properties) && isset($audit->properties->created_at->date)) {
103
  $this->_focuspage->audit_datetime = date(get_option('date_format') . ' ' . get_option('time_format'), strtotime($audit->properties->created_at->date));
104
+ //Set the audit as error in case it was a process error
105
+ if(!$audit->properties->successCrawl){
106
+ $this->_focuspage->audit_error = true;
107
+ }
108
  } else {
109
  $this->_focuspage->audit_datetime = __('Audit in progress', _SQ_PLUGIN_NAME_);
110
+ }
111
+
112
+ if(!isset($audit->properties) || !isset($audit->data->sq_seo_keywords->value) || $audit->data->sq_seo_keywords->value == ''){
113
  $this->_focuspage->visibility = 'N/A';
114
  }
115
 
models/Frontend.php CHANGED
@@ -71,58 +71,58 @@ class SQ_Models_Frontend {
71
  public function setMetaInBuffer($buffer) {
72
  //if is enabled sq for this page
73
  if ($this->runSEOForThisPage()) {
74
- if (strpos($buffer, '</head') !== false) {
75
- if ($header = $this->getHeader()) {
76
 
77
- //set loaded true
78
- $this->_loaded = true;
 
79
 
80
- //clear the existing tags to avoid duplicates
81
- if (SQ_Classes_Helpers_Tools::getOption('sq_auto_metas')) {
82
- if (isset($header['sq_title']) && $header['sq_title'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_title')) {
83
- $buffer = @preg_replace('/<title[^<>]*>([^<>]*)<\/title>/si', '', $buffer, -1);
84
- }
85
- if (isset($header['sq_description']) && $header['sq_description'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_description')) {
86
- $buffer = @preg_replace('/<meta[^>]*(name|property)=["\']description["\'][^>]*content=["\'][^"\'>]*["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
87
- }
88
- if (isset($header['sq_keywords']) && $header['sq_keywords'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_keywords')) {
89
- $buffer = @preg_replace('/<meta[^>]*(name|property)=["\']keywords["\'][^>]*content=["\'][^"\'>]*["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
90
- }
91
- if (isset($header['sq_canonical']) && $header['sq_canonical'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_canonical')) {
92
- $buffer = @preg_replace('/<link[^>]*rel=["\']canonical["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
93
- $buffer = @preg_replace('/<link[^>]*rel=["\'](prev|next)["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
94
- }
95
- if (isset($header['sq_noindex']) && $header['sq_noindex'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_noindex')) {
96
- $buffer = @preg_replace('/<meta[^>]*name=["\']robots["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
97
- }
98
  }
99
-
100
- if (isset($header['sq_sitemap']) && $header['sq_sitemap'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_sitemap')) {
101
- $buffer = @preg_replace('/<link[^>]*rel=["\']alternate["\'][^>]*type="application\/rss+xml"[^>]*>[\n\r]*/si', '', $buffer, -1);
102
  }
103
-
104
- if (isset($header['sq_open_graph']) && $header['sq_open_graph'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_facebook')) {
105
- $buffer = @preg_replace('/<meta[^>]*(name|property)=["\'](og:|article:)[^"\'>]+["\'][^>]*content=["\'][^"\'>]+["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
106
  }
107
- if (isset($header['sq_twitter_card']) && $header['sq_twitter_card'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_twitter')) {
108
- $buffer = @preg_replace('/<meta[^>]*(name|property)=["\'](twitter:)[^"\'>]+["\'][^>]*content=["\'][^"\'>]+["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
 
109
  }
110
- // if (isset($header['sq_json_ld']) && $header['sq_json_ld'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_jsonld')) {
111
- // $buffer = @preg_replace('/<script[^>]*type=["\']application\/ld\+json["\'][^>]*>[^>]*<\/script>[\n\r]*/si', '', $buffer, -1);
112
- // }
113
- if (isset($header['sq_favicon']) && $header['sq_favicon'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_favicon')) {
114
- $buffer = @preg_replace('/<link[^>]*rel=["\']shortcut icon["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
115
- $buffer = @preg_replace('/<link[^>]*rel=["\']icon["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
116
  }
117
- $buffer = @preg_replace('/(<html(\s[^>]*|))/si', sprintf("$1%s", apply_filters('sq_html_prefix', false)), $buffer, 1);
118
-
119
- $header_str = str_replace('$', '\$', join("\n", $header));
120
 
121
- $buffer = @preg_replace('/(<head(\s[^>]*|)>)/si', sprintf("$1\n%s", $header_str) . "\n", $buffer, 1);
 
 
122
 
123
- unset($header);
124
- unset($header_str);
125
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  }
127
  }
128
 
@@ -257,18 +257,7 @@ class SQ_Models_Frontend {
257
  */
258
  public function setPost($curpost = null) {
259
  //Load the post with all the filters applied
260
- if ($this->_post = apply_filters('sq_post', $curpost)) {
261
- //If post type is excluded
262
- $exclude_post_types = SQ_Classes_Helpers_Tools::getOption('sq_exclude_post_types');
263
- if (!empty($exclude_post_types)) {
264
- if (isset($this->_post->post_type) && $this->_post->post_type <> '' && in_array($this->_post->post_type, $exclude_post_types)) {
265
- $this->_post->sq->doseo = false;
266
- }
267
- if (SQ_Classes_Helpers_Tools::getValue('post_type', '') <> '' && in_array(SQ_Classes_Helpers_Tools::getValue('post_type', ''), $exclude_post_types)) {
268
- $this->_post->sq->doseo = false;
269
- }
270
- }
271
- }
272
 
273
  //Load the SEO Library before calling the filters
274
  if ($this->runSEOForThisPage()) {
@@ -305,7 +294,6 @@ class SQ_Models_Frontend {
305
  }
306
 
307
  $current_post = apply_filters('sq_current_post', $current_post);
308
-
309
  //If the current post is not set but there is a request in database
310
  //Set the current post as home page
311
  if (empty($current_post) && isset($wp->request)) {
@@ -348,9 +336,8 @@ class SQ_Models_Frontend {
348
  return $post;
349
  } elseif ($post->ID == get_option('page_for_posts')) { //If it's front post
350
  $post->debug = 'page_for_posts:' . $post->ID;
351
- $post->post_type = 'home';
352
  $post->hash = md5($post->ID);
353
- $post->url = home_url();
354
  return $post;
355
  }
356
 
@@ -774,9 +761,13 @@ class SQ_Models_Frontend {
774
  * @return bool
775
  */
776
  public function runSEOForThisPage() {
777
- // if (SQ_Classes_Helpers_Tools::getValue('sq_use') == 'off') {
778
- // return false;
779
- // }
 
 
 
 
780
 
781
  if (!$this->isHtmlHeader()) {
782
  return false;
71
  public function setMetaInBuffer($buffer) {
72
  //if is enabled sq for this page
73
  if ($this->runSEOForThisPage()) {
 
 
74
 
75
+ if ($header = $this->getHeader()) {
76
+ //set loaded true
77
+ $this->_loaded = true;
78
 
79
+ //clear the existing tags to avoid duplicates
80
+ if (SQ_Classes_Helpers_Tools::getOption('sq_auto_metas')) {
81
+ if (isset($header['sq_title']) && $header['sq_title'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_title')) {
82
+ $buffer = @preg_replace('/<title[^<>]*>([^<>]*)<\/title>/si', '', $buffer, -1);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  }
84
+ if (isset($header['sq_description']) && $header['sq_description'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_description')) {
85
+ $buffer = @preg_replace('/<meta[^>]*(name|property)=["\']description["\'][^>]*content=["\'][^"\'>]*["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
 
86
  }
87
+ if (isset($header['sq_keywords']) && $header['sq_keywords'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_keywords')) {
88
+ $buffer = @preg_replace('/<meta[^>]*(name|property)=["\']keywords["\'][^>]*content=["\'][^"\'>]*["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
 
89
  }
90
+ if (isset($header['sq_canonical']) && $header['sq_canonical'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_canonical')) {
91
+ $buffer = @preg_replace('/<link[^>]*rel=["\']canonical["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
92
+ $buffer = @preg_replace('/<link[^>]*rel=["\'](prev|next)["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
93
  }
94
+ if (isset($header['sq_noindex']) && $header['sq_noindex'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_noindex')) {
95
+ $buffer = @preg_replace('/<meta[^>]*name=["\']robots["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
 
 
 
 
96
  }
97
+ }
 
 
98
 
99
+ if (isset($header['sq_sitemap']) && $header['sq_sitemap'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_sitemap')) {
100
+ $buffer = @preg_replace('/<link[^>]*rel=["\']alternate["\'][^>]*type="application\/rss+xml"[^>]*>[\n\r]*/si', '', $buffer, -1);
101
+ }
102
 
103
+ if (isset($header['sq_open_graph']) && $header['sq_open_graph'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_facebook')) {
104
+ $buffer = @preg_replace('/<meta[^>]*(name|property)=["\'](og:|article:)[^"\'>]+["\'][^>]*content=["\'][^"\'>]+["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
105
  }
106
+ if (isset($header['sq_twitter_card']) && $header['sq_twitter_card'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_twitter')) {
107
+ $buffer = @preg_replace('/<meta[^>]*(name|property)=["\'](twitter:)[^"\'>]+["\'][^>]*content=["\'][^"\'>]+["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
108
+ }
109
+ if (SQ_Classes_Helpers_Tools::getOption('sq_jsonld_clearcode')) {
110
+ if (isset($header['sq_json_ld']) && $header['sq_json_ld'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_jsonld')) {
111
+ $buffer = @preg_replace('/<script[^>]*type=["\']application\/ld\+json["\'][^>]*>[^>]*<\/script>[\n\r]*/si', '', $buffer, -1);
112
+ }
113
+ }
114
+ if (isset($header['sq_favicon']) && $header['sq_favicon'] <> '' && SQ_Classes_Helpers_Tools::getOption('sq_auto_favicon')) {
115
+ $buffer = @preg_replace('/<link[^>]*rel=["\']shortcut icon["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
116
+ $buffer = @preg_replace('/<link[^>]*rel=["\']icon["\'][^>]*>[\n\r]*/si', '', $buffer, -1);
117
+ }
118
+ $buffer = @preg_replace('/(<html(\s[^>]*|))/si', sprintf("$1%s", apply_filters('sq_html_prefix', false)), $buffer, 1);
119
+
120
+ $header_str = str_replace('$', '\$', join("\n", $header));
121
+
122
+ $buffer = @preg_replace('/(<head(\s[^>]*|)>)/si', sprintf("$1\n%s", $header_str) . "\n", $buffer, 1);
123
+
124
+ unset($header);
125
+ unset($header_str);
126
  }
127
  }
128
 
257
  */
258
  public function setPost($curpost = null) {
259
  //Load the post with all the filters applied
260
+ $this->_post = apply_filters('sq_post', $curpost);
 
 
 
 
 
 
 
 
 
 
 
261
 
262
  //Load the SEO Library before calling the filters
263
  if ($this->runSEOForThisPage()) {
294
  }
295
 
296
  $current_post = apply_filters('sq_current_post', $current_post);
 
297
  //If the current post is not set but there is a request in database
298
  //Set the current post as home page
299
  if (empty($current_post) && isset($wp->request)) {
336
  return $post;
337
  } elseif ($post->ID == get_option('page_for_posts')) { //If it's front post
338
  $post->debug = 'page_for_posts:' . $post->ID;
 
339
  $post->hash = md5($post->ID);
340
+ $post->url = get_permalink($post->ID); //get the blog post permalink
341
  return $post;
342
  }
343
 
761
  * @return bool
762
  */
763
  public function runSEOForThisPage() {
764
+ if (SQ_Classes_Helpers_Tools::getValue('sq_seo') == 'on') {
765
+ return true;
766
+ }
767
+
768
+ if (SQ_Classes_Helpers_Tools::getValue('sq_seo') == 'off') {
769
+ return false;
770
+ }
771
 
772
  if (!$this->isHtmlHeader()) {
773
  return false;
models/Ico.php CHANGED
@@ -23,7 +23,7 @@ class SQ_Models_Ico {
23
  /* get the file extension */
24
  $appleSizes = preg_split('/[,]+/', _SQ_MOBILE_ICON_SIZES);
25
  $file_name = explode('.', $file['name']);
26
- $file_type = strtolower($file_name[@count($file_name) - 1]);
27
 
28
  $out = array();
29
  $out['tmp'] = _SQ_CACHE_DIR_ . strtolower(md5($file['name']) . '_tmp.' . $file_type);
@@ -211,12 +211,12 @@ class SQ_Models_Ico {
211
  return false;
212
 
213
 
214
- $data = pack('vvv', 0, 1, @count($this->_images));
215
  $pixel_data = '';
216
 
217
  $icon_dir_entry_size = 16;
218
 
219
- $offset = 6 + ( $icon_dir_entry_size * @count($this->_images) );
220
 
221
  foreach ($this->_images as $image) {
222
  $data .= pack('CCCCvvVV', $image['width'], $image['height'], $image['color_palette_colors'], 0, 1, $image['bits_per_pixel'], $image['size'], $offset);
23
  /* get the file extension */
24
  $appleSizes = preg_split('/[,]+/', _SQ_MOBILE_ICON_SIZES);
25
  $file_name = explode('.', $file['name']);
26
+ $file_type = strtolower($file_name[@count((array)$file_name) - 1]);
27
 
28
  $out = array();
29
  $out['tmp'] = _SQ_CACHE_DIR_ . strtolower(md5($file['name']) . '_tmp.' . $file_type);
211
  return false;
212
 
213
 
214
+ $data = pack('vvv', 0, 1, @count((array)$this->_images));
215
  $pixel_data = '';
216
 
217
  $icon_dir_entry_size = 16;
218
 
219
+ $offset = 6 + ( $icon_dir_entry_size * @count((array)$this->_images) );
220
 
221
  foreach ($this->_images as $image) {
222
  $data .= pack('CCCCvvVV', $image['width'], $image['height'], $image['color_palette_colors'], 0, 1, $image['bits_per_pixel'], $image['size'], $offset);
models/ImportExport.php CHANGED
@@ -518,7 +518,7 @@ class SQ_Models_ImportExport {
518
  $url = home_url();
519
  } elseif ($post_id = get_option('page_for_posts')) {
520
  $hash = md5($post_id);
521
- $url = home_url();
522
  } else {
523
  $hash = md5('wp_homepage');
524
  $url = home_url();
518
  $url = home_url();
519
  } elseif ($post_id = get_option('page_for_posts')) {
520
  $hash = md5($post_id);
521
+ $url = get_permalink($post_id);
522
  } else {
523
  $hash = md5('wp_homepage');
524
  $url = home_url();
models/Snippet.php CHANGED
@@ -43,23 +43,29 @@ class SQ_Models_Snippet {
43
  $sq->tw_media = SQ_Classes_Helpers_Tools::getValue('sq_tw_media', '');
44
  $sq->tw_type = SQ_Classes_Helpers_Tools::getValue('sq_tw_type', '');
45
 
46
-
47
- if (isset($_POST['sq_jsonld'])) {
48
- $allowed_html = array(
49
- 'script' => array('type' => array()),
50
- );
51
- $sq->jsonld = strip_tags(wp_unslash(trim(wp_kses($_POST['sq_jsonld'], $allowed_html))));
 
 
 
52
  }
53
 
54
- if (isset($_POST['sq_fpixel'])) {
55
- $allowed_html = array(
56
- 'script' => array(),
57
- 'noscript' => array(),
58
- );
59
- $sq->fpixel = wp_unslash(trim(wp_kses($_POST['sq_fpixel'], $allowed_html)));
 
 
 
 
60
  }
61
 
62
-
63
  //Prevent broken url in canonical link
64
  if (strpos($sq->canonical, '//') === false) {
65
  $sq->canonical = '';
@@ -89,7 +95,7 @@ class SQ_Models_Snippet {
89
  public function getCurrentSnippet($post_id, $term_id, $taxonomy, $post_type) {
90
 
91
  if ($post_type == 'home') {
92
- return $this->setHomePage($post_type);
93
  } elseif ($post_type == 'profile') {
94
  return $this->setAuthorPage($post_id);
95
  } elseif ($post_id > 0) {
@@ -163,21 +169,19 @@ class SQ_Models_Snippet {
163
  }
164
 
165
  /**
166
- * Set the home page in Shippet
167
- * @param string $post_type
168
  * @return array|null|stdClass|WP_Post
169
  */
170
- public function setHomePage($post_type = 'home') {
171
  global $wp_query;
172
- if (!$post_id = get_option('page_on_front')) {
173
- if (!$post_id = get_option('page_for_posts')) {
174
- $post_id = 'wp_homepage';
175
- }
176
- }
177
 
178
- if ((int)$post_id > 0) {
179
- $post = get_post($post_id);
 
 
 
180
  } else {
 
181
  $post = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Post');
182
 
183
  $wp_query->is_home = true;
@@ -186,9 +190,10 @@ class SQ_Models_Snippet {
186
  $post->post_title = get_bloginfo('name');
187
  $post->post_excerpt = get_bloginfo('description');
188
  $post->url = home_url();
189
-
190
  }
 
191
  $post = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->setPost($post)->getPost();
 
192
  return $post;
193
  }
194
 
43
  $sq->tw_media = SQ_Classes_Helpers_Tools::getValue('sq_tw_media', '');
44
  $sq->tw_type = SQ_Classes_Helpers_Tools::getValue('sq_tw_type', '');
45
 
46
+ if (SQ_Classes_Helpers_Tools::getValue('sq_jsonld_code_type', 'auto') == 'custom') {
47
+ if (isset($_POST['sq_jsonld'])) {
48
+ $allowed_html = array(
49
+ 'script' => array('type' => array()),
50
+ );
51
+ $sq->jsonld = strip_tags(wp_unslash(trim(wp_kses($_POST['sq_jsonld'], $allowed_html))));
52
+ }
53
+ }else{
54
+ $sq->jsonld = '';
55
  }
56
 
57
+ if (SQ_Classes_Helpers_Tools::getValue('sq_fpixel_code_type', 'auto') == 'custom') {
58
+ if (isset($_POST['sq_fpixel'])) {
59
+ $allowed_html = array(
60
+ 'script' => array(),
61
+ 'noscript' => array(),
62
+ );
63
+ $sq->fpixel = wp_unslash(trim(wp_kses($_POST['sq_fpixel'], $allowed_html)));
64
+ }
65
+ }else{
66
+ $sq->fpixel = '';
67
  }
68
 
 
69
  //Prevent broken url in canonical link
70
  if (strpos($sq->canonical, '//') === false) {
71
  $sq->canonical = '';
95
  public function getCurrentSnippet($post_id, $term_id, $taxonomy, $post_type) {
96
 
97
  if ($post_type == 'home') {
98
+ return $this->setHomePage();
99
  } elseif ($post_type == 'profile') {
100
  return $this->setAuthorPage($post_id);
101
  } elseif ($post_id > 0) {
169
  }
170
 
171
  /**
172
+ * Set the home page or blog page in Shippet
 
173
  * @return array|null|stdClass|WP_Post
174
  */
175
+ public function setHomePage() {
176
  global $wp_query;
 
 
 
 
 
177
 
178
+ //If post id set in General Readings for Home Page
179
+ if ($post_id = get_option('page_on_front')) {
180
+ //Get the post for this post ID
181
+ $post = get_post((int)$post_id);
182
+
183
  } else {
184
+ //create the home page domain if no post ID set in Settings > Readings
185
  $post = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Post');
186
 
187
  $wp_query->is_home = true;
190
  $post->post_title = get_bloginfo('name');
191
  $post->post_excerpt = get_bloginfo('description');
192
  $post->url = home_url();
 
193
  }
194
+
195
  $post = SQ_Classes_ObjController::getClass('SQ_Models_Frontend')->setPost($post)->getPost();
196
+
197
  return $post;
198
  }
199
 
models/bulkseo/Metas.php CHANGED
@@ -5,6 +5,8 @@ class SQ_Models_Bulkseo_Metas extends SQ_Models_Abstract_Assistant {
5
  protected $_category = 'metas';
6
  protected $_patterns;
7
 
 
 
8
  protected $_title_maxlength = 75;
9
  protected $_description_maxlength = 255;
10
  protected $_keyword = false;
@@ -42,6 +44,9 @@ class SQ_Models_Bulkseo_Metas extends SQ_Models_Abstract_Assistant {
42
  $this->_loadpatterns = false;
43
  }
44
 
 
 
 
45
  // if ($this->_loadpatterns && ($this->_post->sq_adm->title == '' || $this->_post->sq_adm->description == '')) {
46
  // $this->_pattern = true;
47
  // }
@@ -61,7 +66,7 @@ class SQ_Models_Bulkseo_Metas extends SQ_Models_Abstract_Assistant {
61
  'title_length' => array(
62
  'title' => sprintf(__("Title up to %s chars", _SQ_PLUGIN_NAME_), $this->_title_maxlength),
63
  'value_title' => __('Current Title Length', _SQ_PLUGIN_NAME_) . ': ',
64
- 'value' => strlen($this->_post->sq->title) . ' ' . __('chars', _SQ_PLUGIN_NAME_),
65
  'description' => sprintf(__("Title has to be longer than %s chars and up to %s chars. %s You can change the title max length from %sSEO Settings > Automation%s.", _SQ_PLUGIN_NAME_), self::TITLE_MINLENGTH, $this->_title_maxlength, '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'automation') . '">', '</a>'),
66
  ),
67
  'keyword_title' => array(
@@ -79,7 +84,7 @@ class SQ_Models_Bulkseo_Metas extends SQ_Models_Abstract_Assistant {
79
  'description_length' => array(
80
  'title' => sprintf(__("Description up to %s chars", _SQ_PLUGIN_NAME_), $this->_description_maxlength),
81
  'value_title' => __('Current Description Length', _SQ_PLUGIN_NAME_) . ': ',
82
- 'value' => strlen($this->_post->sq->description) . ' ' . __('chars', _SQ_PLUGIN_NAME_),
83
  'description' => sprintf(__("Description has to be longer than %s chars and up to %s chars. %s You can change the description max length from %sSEO Settings > Automation%s.", _SQ_PLUGIN_NAME_), self::DESCRIPTION_MINLENGTH, $this->_description_maxlength, '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'automation') . '">', '</a>'),
84
  ),
85
  'keyword_description' => array(
@@ -214,7 +219,7 @@ class SQ_Models_Bulkseo_Metas extends SQ_Models_Abstract_Assistant {
214
  $task['pattern'] = true;
215
  }
216
 
217
- $task['completed'] = (strlen($this->_post->sq->title) > self::TITLE_MINLENGTH && strlen($this->_post->sq->title) < ((int)$this->_title_maxlength + self::CHARS_ERROR));
218
 
219
  return $task;
220
 
@@ -328,7 +333,7 @@ class SQ_Models_Bulkseo_Metas extends SQ_Models_Abstract_Assistant {
328
  $task['pattern'] = true;
329
  }
330
 
331
- $task['completed'] = (strlen($this->_post->sq->description) > self::DESCRIPTION_MINLENGTH && strlen($this->_post->sq->description) < ((int)$this->_description_maxlength + self::CHARS_ERROR));
332
 
333
  return $task;
334
  }
@@ -461,7 +466,7 @@ class SQ_Models_Bulkseo_Metas extends SQ_Models_Abstract_Assistant {
461
 
462
  $words = mb_split('[^\x{0600}-\x{06FF}]', $string);
463
 
464
- $count = count($words);
465
  }
466
  return $count;
467
  }
5
  protected $_category = 'metas';
6
  protected $_patterns;
7
 
8
+ protected $_title_length;
9
+ protected $_description_length;
10
  protected $_title_maxlength = 75;
11
  protected $_description_maxlength = 255;
12
  protected $_keyword = false;
44
  $this->_loadpatterns = false;
45
  }
46
 
47
+
48
+ $this->_title_length = strlen(utf8_decode($this->_post->sq->title));
49
+ $this->_description_length = strlen(utf8_decode($this->_post->sq->description));
50
  // if ($this->_loadpatterns && ($this->_post->sq_adm->title == '' || $this->_post->sq_adm->description == '')) {
51
  // $this->_pattern = true;
52
  // }
66
  'title_length' => array(
67
  'title' => sprintf(__("Title up to %s chars", _SQ_PLUGIN_NAME_), $this->_title_maxlength),
68
  'value_title' => __('Current Title Length', _SQ_PLUGIN_NAME_) . ': ',
69
+ 'value' => $this->_title_length . ' ' . __('chars', _SQ_PLUGIN_NAME_),
70
  'description' => sprintf(__("Title has to be longer than %s chars and up to %s chars. %s You can change the title max length from %sSEO Settings > Automation%s.", _SQ_PLUGIN_NAME_), self::TITLE_MINLENGTH, $this->_title_maxlength, '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'automation') . '">', '</a>'),
71
  ),
72
  'keyword_title' => array(
84
  'description_length' => array(
85
  'title' => sprintf(__("Description up to %s chars", _SQ_PLUGIN_NAME_), $this->_description_maxlength),
86
  'value_title' => __('Current Description Length', _SQ_PLUGIN_NAME_) . ': ',
87
+ 'value' => $this->_description_length . ' ' . __('chars', _SQ_PLUGIN_NAME_),
88
  'description' => sprintf(__("Description has to be longer than %s chars and up to %s chars. %s You can change the description max length from %sSEO Settings > Automation%s.", _SQ_PLUGIN_NAME_), self::DESCRIPTION_MINLENGTH, $this->_description_maxlength, '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'automation') . '">', '</a>'),
89
  ),
90
  'keyword_description' => array(
219
  $task['pattern'] = true;
220
  }
221
 
222
+ $task['completed'] = ($this->_title_length > self::TITLE_MINLENGTH && $this->_title_length < ((int)$this->_title_maxlength + self::CHARS_ERROR));
223
 
224
  return $task;
225
 
333
  $task['pattern'] = true;
334
  }
335
 
336
+ $task['completed'] = ($this->_description_length > self::DESCRIPTION_MINLENGTH && $this->_description_length < ((int)$this->_description_maxlength + self::CHARS_ERROR));
337
 
338
  return $task;
339
  }
466
 
467
  $words = mb_split('[^\x{0600}-\x{06FF}]', $string);
468
 
469
+ $count = count((array)$words);
470
  }
471
  return $count;
472
  }
models/bulkseo/Opengraph.php CHANGED
@@ -69,7 +69,7 @@ class SQ_Models_Bulkseo_Opengraph extends SQ_Models_Abstract_Assistant {
69
  ),
70
  'title_length' => array(
71
  'title' => sprintf(__("OG title up to %s chars", _SQ_PLUGIN_NAME_), $this->_title_maxlength),
72
- 'value' => strlen($this->_og_title) . ' ' . __('chars', _SQ_PLUGIN_NAME_),
73
  'description' => sprintf(__("Title has to be longer than %s chars and up to %s chars. %s You can change the title max length from %sSEO Settings > Automation%s.", _SQ_PLUGIN_NAME_), self::TITLE_MINLENGTH, $this->_title_maxlength, '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'automation') . '">', '</a>'),
74
  ),
75
  'description_empty' => array(
@@ -79,7 +79,7 @@ class SQ_Models_Bulkseo_Opengraph extends SQ_Models_Abstract_Assistant {
79
  ),
80
  'description_length' => array(
81
  'title' => sprintf(__("OG description up to %s chars", _SQ_PLUGIN_NAME_), $this->_description_maxlength),
82
- 'value' => strlen($this->_og_description) . ' ' . __('chars', _SQ_PLUGIN_NAME_),
83
  'description' => sprintf(__("Description has to be longer than %s chars and up to %s chars. %s You can change the description max length from %sSEO Settings > Automation%s.", _SQ_PLUGIN_NAME_), self::DESCRIPTION_MINLENGTH, $this->_description_maxlength, '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'automation') . '">', '</a>'),
84
  ),
85
  'image' => array(
@@ -197,7 +197,7 @@ class SQ_Models_Bulkseo_Opengraph extends SQ_Models_Abstract_Assistant {
197
  $task['pattern'] = true;
198
  }
199
 
200
- $task['completed'] = (strlen($this->_og_title) > self::TITLE_MINLENGTH && strlen($this->_og_title) < ((int)$this->_title_maxlength + self::CHARS_ERROR));
201
 
202
  return $task;
203
  }
@@ -265,7 +265,7 @@ class SQ_Models_Bulkseo_Opengraph extends SQ_Models_Abstract_Assistant {
265
  $task['pattern'] = true;
266
  }
267
 
268
- $task['completed'] = (strlen($this->_og_description) > self::DESCRIPTION_MINLENGTH && strlen($this->_og_description) < ((int)$this->_description_maxlength + self::CHARS_ERROR));
269
 
270
  return $task;
271
  }
69
  ),
70
  'title_length' => array(
71
  'title' => sprintf(__("OG title up to %s chars", _SQ_PLUGIN_NAME_), $this->_title_maxlength),
72
+ 'value' => strlen(utf8_decode($this->_og_title)) . ' ' . __('chars', _SQ_PLUGIN_NAME_),
73
  'description' => sprintf(__("Title has to be longer than %s chars and up to %s chars. %s You can change the title max length from %sSEO Settings > Automation%s.", _SQ_PLUGIN_NAME_), self::TITLE_MINLENGTH, $this->_title_maxlength, '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'automation') . '">', '</a>'),
74
  ),
75
  'description_empty' => array(
79
  ),
80
  'description_length' => array(
81
  'title' => sprintf(__("OG description up to %s chars", _SQ_PLUGIN_NAME_), $this->_description_maxlength),
82
+ 'value' => strlen(utf8_decode($this->_og_description)) . ' ' . __('chars', _SQ_PLUGIN_NAME_),
83
  'description' => sprintf(__("Description has to be longer than %s chars and up to %s chars. %s You can change the description max length from %sSEO Settings > Automation%s.", _SQ_PLUGIN_NAME_), self::DESCRIPTION_MINLENGTH, $this->_description_maxlength, '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'automation') . '">', '</a>'),
84
  ),
85
  'image' => array(
197
  $task['pattern'] = true;
198
  }
199
 
200
+ $task['completed'] = (strlen(utf8_decode($this->_og_title)) > self::TITLE_MINLENGTH && strlen(utf8_decode($this->_og_title)) < ((int)$this->_title_maxlength + self::CHARS_ERROR));
201
 
202
  return $task;
203
  }
265
  $task['pattern'] = true;
266
  }
267
 
268
+ $task['completed'] = (strlen(utf8_decode($this->_og_description)) > self::DESCRIPTION_MINLENGTH && strlen(utf8_decode($this->_og_description)) < ((int)$this->_description_maxlength + self::CHARS_ERROR));
269
 
270
  return $task;
271
  }
models/bulkseo/Twittercard.php CHANGED
@@ -66,7 +66,7 @@ class SQ_Models_Bulkseo_Twittercard extends SQ_Models_Abstract_Assistant {
66
  ),
67
  'title_length' => array(
68
  'title' => sprintf(__("TC title up to %s chars", _SQ_PLUGIN_NAME_), $this->_title_maxlength),
69
- 'value' => strlen($this->_tw_title) . ' ' . __('chars', _SQ_PLUGIN_NAME_),
70
  'description' => sprintf(__("Title has to be longer than %s chars and up to %s chars. %s You can change the title max length from %sSEO Settings > Automation%s.", _SQ_PLUGIN_NAME_), self::TITLE_MINLENGTH, $this->_title_maxlength, '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'automation') . '">', '</a>'),
71
  ),
72
  'description_empty' => array(
@@ -76,7 +76,7 @@ class SQ_Models_Bulkseo_Twittercard extends SQ_Models_Abstract_Assistant {
76
  ),
77
  'description_length' => array(
78
  'title' => sprintf(__("TC description up to %s chars", _SQ_PLUGIN_NAME_), $this->_description_maxlength),
79
- 'value' => strlen($this->_tw_description) . ' ' . __('chars', _SQ_PLUGIN_NAME_),
80
  'description' => sprintf(__("Description has to be longer than %s chars and up to %s chars. %s You can change the description max length from %sSEO Settings > Automation%s.", _SQ_PLUGIN_NAME_), self::DESCRIPTION_MINLENGTH, $this->_description_maxlength, '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'automation') . '">', '</a>'),
81
  ),
82
  'image' => array(
@@ -194,7 +194,7 @@ class SQ_Models_Bulkseo_Twittercard extends SQ_Models_Abstract_Assistant {
194
  $task['pattern'] = true;
195
  }
196
 
197
- $task['completed'] = (strlen($this->_tw_title) > self::TITLE_MINLENGTH && strlen($this->_tw_title) < ((int)$this->_title_maxlength + self::CHARS_ERROR));
198
 
199
  return $task;
200
  }
@@ -262,7 +262,7 @@ class SQ_Models_Bulkseo_Twittercard extends SQ_Models_Abstract_Assistant {
262
  $task['pattern'] = true;
263
  }
264
 
265
- $task['completed'] = (strlen($this->_tw_description) > self::DESCRIPTION_MINLENGTH && strlen($this->_tw_description) < ((int)$this->_description_maxlength + self::CHARS_ERROR));
266
 
267
  return $task;
268
  }
66
  ),
67
  'title_length' => array(
68
  'title' => sprintf(__("TC title up to %s chars", _SQ_PLUGIN_NAME_), $this->_title_maxlength),
69
+ 'value' => strlen(utf8_decode($this->_tw_title)) . ' ' . __('chars', _SQ_PLUGIN_NAME_),
70
  'description' => sprintf(__("Title has to be longer than %s chars and up to %s chars. %s You can change the title max length from %sSEO Settings > Automation%s.", _SQ_PLUGIN_NAME_), self::TITLE_MINLENGTH, $this->_title_maxlength, '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'automation') . '">', '</a>'),
71
  ),
72
  'description_empty' => array(
76
  ),
77
  'description_length' => array(
78
  'title' => sprintf(__("TC description up to %s chars", _SQ_PLUGIN_NAME_), $this->_description_maxlength),
79
+ 'value' => strlen(utf8_decode($this->_tw_description)) . ' ' . __('chars', _SQ_PLUGIN_NAME_),
80
  'description' => sprintf(__("Description has to be longer than %s chars and up to %s chars. %s You can change the description max length from %sSEO Settings > Automation%s.", _SQ_PLUGIN_NAME_), self::DESCRIPTION_MINLENGTH, $this->_description_maxlength, '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'automation') . '">', '</a>'),
81
  ),
82
  'image' => array(
194
  $task['pattern'] = true;
195
  }
196
 
197
+ $task['completed'] = (strlen(utf8_decode($this->_tw_title)) > self::TITLE_MINLENGTH && strlen(utf8_decode($this->_tw_title)) < ((int)$this->_title_maxlength + self::CHARS_ERROR));
198
 
199
  return $task;
200
  }
262
  $task['pattern'] = true;
263
  }
264
 
265
+ $task['completed'] = (strlen(utf8_decode($this->_tw_description)) > self::DESCRIPTION_MINLENGTH && strlen(utf8_decode($this->_tw_description)) < ((int)$this->_description_maxlength + self::CHARS_ERROR));
266
 
267
  return $task;
268
  }
models/domain/FocusPage.php CHANGED
@@ -12,6 +12,7 @@ class SQ_Models_Domain_FocusPage extends SQ_Models_Abstract_Domain {
12
  protected $_visibility = 100;
13
  //--
14
  protected $_audit_datetime;
 
15
  protected $_datetime;
16
 
17
  protected $_wppost;
@@ -40,6 +41,14 @@ class SQ_Models_Domain_FocusPage extends SQ_Models_Abstract_Domain {
40
  }
41
 
42
  public function getVisibility() {
 
 
 
 
 
 
 
 
43
  if (isset($this->_visibility)) {
44
  if ((int)$this->_visibility < 0) {
45
  $this->_visibility = 0;
@@ -55,17 +64,22 @@ class SQ_Models_Domain_FocusPage extends SQ_Models_Abstract_Domain {
55
  * @return SQ_Models_Domain_Post|false
56
  */
57
  public function getWppost() {
58
- if (!isset($this->_wppost)) {
59
  if (isset($this->_post_id) && $this->_post_id > 0) {
60
  if ($this->_wppost = SQ_Classes_ObjController::getClass('SQ_Models_Snippet')->setPostByID($this->_post_id)) {
61
  $this->_wppost->sq_adm; //call the sq to populate
62
  }
63
- } elseif (isset($this->_permalink) && $this->_permalink <> '') {
 
 
 
 
64
  if ($this->_wppost = SQ_Classes_ObjController::getClass('SQ_Models_Snippet')->setPostByURL($this->_permalink)) {
65
  $this->_wppost->sq_adm; //call the sq to populate
66
  }
67
  }
68
  }
 
69
  return $this->_wppost;
70
  }
71
  }
12
  protected $_visibility = 100;
13
  //--
14
  protected $_audit_datetime;
15
+ protected $_audit_error;
16
  protected $_datetime;
17
 
18
  protected $_wppost;
41
  }
42
 
43
  public function getVisibility() {
44
+ //if the post is not public
45
+ if (isset($this->_wppost->ID)) {
46
+ if($this->_wppost->post_status <> 'publish'){
47
+ $this->_visibility = 0;
48
+ }
49
+ }
50
+
51
+ //if visibility is
52
  if (isset($this->_visibility)) {
53
  if ((int)$this->_visibility < 0) {
54
  $this->_visibility = 0;
64
  * @return SQ_Models_Domain_Post|false
65
  */
66
  public function getWppost() {
67
+ if (!isset($this->_wppost->ID)) {
68
  if (isset($this->_post_id) && $this->_post_id > 0) {
69
  if ($this->_wppost = SQ_Classes_ObjController::getClass('SQ_Models_Snippet')->setPostByID($this->_post_id)) {
70
  $this->_wppost->sq_adm; //call the sq to populate
71
  }
72
+ }
73
+ }
74
+
75
+ if (!isset($this->_wppost->ID)) {
76
+ if (isset($this->_permalink) && $this->_permalink <> '') {
77
  if ($this->_wppost = SQ_Classes_ObjController::getClass('SQ_Models_Snippet')->setPostByURL($this->_permalink)) {
78
  $this->_wppost->sq_adm; //call the sq to populate
79
  }
80
  }
81
  }
82
+
83
  return $this->_wppost;
84
  }
85
  }
models/focuspages/Accuracy.php CHANGED
@@ -30,18 +30,23 @@ class SQ_Models_Focuspages_Accuracy extends SQ_Models_Abstract_Assistant {
30
  * @return string
31
  */
32
  public function getHeader() {
 
 
 
 
 
33
  if (!$this->_audit->sq_analytics_gsc_connected) {
34
- return '<li class="completed">
35
- <a href="' . SQ_Classes_RemoteController::getApiLink('gscoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Connect Google Search', _SQ_PLUGIN_NAME_) . '</a>
36
  </li>';
37
  }
38
  if (!$this->_audit->sq_analytics_google_connected) {
39
- return '<li class="completed">
40
- <a href="' . SQ_Classes_RemoteController::getApiLink('gaoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Connect Google Analytics', _SQ_PLUGIN_NAME_) . '</a>
41
  </li>';
42
  }
43
 
44
- return '';
45
  }
46
 
47
  /**
30
  * @return string
31
  */
32
  public function getHeader() {
33
+ $header = '<li class="completed">';
34
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
35
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
36
+ $header .= '</li>';
37
+
38
  if (!$this->_audit->sq_analytics_gsc_connected) {
39
+ $header .= '<li class="completed">
40
+ <a href="' . SQ_Classes_RemoteController::getApiLink('gscoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-1">' . __('Connect Google Search', _SQ_PLUGIN_NAME_) . '</a>
41
  </li>';
42
  }
43
  if (!$this->_audit->sq_analytics_google_connected) {
44
+ $header .= '<li class="completed">
45
+ <a href="' . SQ_Classes_RemoteController::getApiLink('gaoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-1">' . __('Connect Google Analytics', _SQ_PLUGIN_NAME_) . '</a>
46
  </li>';
47
  }
48
 
49
+ return $header;
50
  }
51
 
52
  /**
models/focuspages/Audit.php CHANGED
@@ -73,12 +73,17 @@ class SQ_Models_Focuspages_Audit extends SQ_Models_Abstract_Assistant {
73
  * @return string
74
  */
75
  public function getHeader() {
 
 
 
 
 
76
  if ($this->_siteaudit && isset($this->_siteaudit->score)) {
77
- $header = '<li class="completed">
78
  <a href="' . SQ_Classes_RemoteController::getMySquirrlyLink('audits') . '" target="_blank" class="btn bg-primary text-white col-sm-8 offset-2 mt-3">' . __('Go to Audit', _SQ_PLUGIN_NAME_) . '</a>
79
  </li>';
80
  } else {
81
- $header = '<li class="completed">
82
  <div class="font-weight-bold text-warning text-center">' . __('Note! The audit is not ready yet', _SQ_PLUGIN_NAME_) . '</div>
83
  <a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_audits') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Request a new audit', _SQ_PLUGIN_NAME_) . '</a>
84
  </li>';
73
  * @return string
74
  */
75
  public function getHeader() {
76
+ $header = '<li class="completed">';
77
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
78
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
79
+ $header .= '</li>';
80
+
81
  if ($this->_siteaudit && isset($this->_siteaudit->score)) {
82
+ $header .= '<li class="completed">
83
  <a href="' . SQ_Classes_RemoteController::getMySquirrlyLink('audits') . '" target="_blank" class="btn bg-primary text-white col-sm-8 offset-2 mt-3">' . __('Go to Audit', _SQ_PLUGIN_NAME_) . '</a>
84
  </li>';
85
  } else {
86
+ $header .= '<li class="completed">
87
  <div class="font-weight-bold text-warning text-center">' . __('Note! The audit is not ready yet', _SQ_PLUGIN_NAME_) . '</div>
88
  <a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_audits') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Request a new audit', _SQ_PLUGIN_NAME_) . '</a>
89
  </li>';
models/focuspages/Authority.php CHANGED
@@ -24,6 +24,20 @@ class SQ_Models_Focuspages_Authority extends SQ_Models_Abstract_Assistant {
24
 
25
  }
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  public function setTasks($tasks) {
28
  parent::setTasks($tasks);
29
 
24
 
25
  }
26
 
27
+ /**
28
+ * Customize the tasks header
29
+ * @return string
30
+ */
31
+ public function getHeader() {
32
+ $header = '<li class="completed">';
33
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
34
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
35
+ $header .= '</li>';
36
+
37
+ return $header;
38
+ }
39
+
40
+
41
  public function setTasks($tasks) {
42
  parent::setTasks($tasks);
43
 
models/focuspages/Backlinks.php CHANGED
@@ -37,6 +37,19 @@ class SQ_Models_Focuspages_Backlinks extends SQ_Models_Abstract_Assistant {
37
  }
38
  }
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  public function setTasks($tasks) {
41
  parent::setTasks($tasks);
42
 
37
  }
38
  }
39
 
40
+ /**
41
+ * Customize the tasks header
42
+ * @return string
43
+ */
44
+ public function getHeader() {
45
+ $header = '<li class="completed">';
46
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
47
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
48
+ $header .= '</li>';
49
+
50
+ return $header;
51
+ }
52
+
53
  public function setTasks($tasks) {
54
  parent::setTasks($tasks);
55
 
models/focuspages/Clicks.php CHANGED
@@ -53,6 +53,11 @@ class SQ_Models_Focuspages_Clicks extends SQ_Models_Abstract_Assistant {
53
  */
54
  public function getHeader() {
55
  $header = '<li class="completed">';
 
 
 
 
 
56
  if (!$this->_audit->sq_analytics_gsc_connected) {
57
  $header .= '<a href="' . SQ_Classes_RemoteController::getApiLink('gscoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Connect Google Search', _SQ_PLUGIN_NAME_) . '</a>';
58
  } elseif ($this->_keyword) {
53
  */
54
  public function getHeader() {
55
  $header = '<li class="completed">';
56
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
57
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
58
+ $header .= '</li>';
59
+
60
+ $header .= '<li class="completed">';
61
  if (!$this->_audit->sq_analytics_gsc_connected) {
62
  $header .= '<a href="' . SQ_Classes_RemoteController::getApiLink('gscoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Connect Google Search', _SQ_PLUGIN_NAME_) . '</a>';
63
  } elseif ($this->_keyword) {
models/focuspages/Content.php CHANGED
@@ -27,7 +27,7 @@ class SQ_Models_Focuspages_Content extends SQ_Models_Abstract_Assistant {
27
  }
28
  if (isset($this->_audit->data->sq_seo_briefcase) && !empty($this->_audit->data->sq_seo_briefcase)) {
29
  foreach ($this->_audit->data->sq_seo_briefcase as $lsikeyword) {
30
- if ($lsikeyword->keyword == $this->_keyword) {
31
  $this->_optimization = $lsikeyword->optimized;
32
  }
33
  }
@@ -71,7 +71,11 @@ class SQ_Models_Focuspages_Content extends SQ_Models_Abstract_Assistant {
71
  /*********************************************/
72
  public function getHeader() {
73
  $edit_link = '';
74
- $header = '';
 
 
 
 
75
  if (isset($this->_post->ID)) {
76
  $edit_link = SQ_Classes_Helpers_Tools::getAdminUrl('post.php?post=' . (int)$this->_post->ID . '&action=edit');
77
  if ($this->_post->post_type <> 'profile') {
27
  }
28
  if (isset($this->_audit->data->sq_seo_briefcase) && !empty($this->_audit->data->sq_seo_briefcase)) {
29
  foreach ($this->_audit->data->sq_seo_briefcase as $lsikeyword) {
30
+ if (strcasecmp($lsikeyword->keyword, $this->_keyword) == 0) {
31
  $this->_optimization = $lsikeyword->optimized;
32
  }
33
  }
71
  /*********************************************/
72
  public function getHeader() {
73
  $edit_link = '';
74
+ $header = '<li class="completed">';
75
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
76
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
77
+ $header .= '</li>';
78
+
79
  if (isset($this->_post->ID)) {
80
  $edit_link = SQ_Classes_Helpers_Tools::getAdminUrl('post.php?post=' . (int)$this->_post->ID . '&action=edit');
81
  if ($this->_post->post_type <> 'profile') {
models/focuspages/Ctr.php CHANGED
@@ -53,6 +53,11 @@ class SQ_Models_Focuspages_Ctr extends SQ_Models_Abstract_Assistant {
53
  */
54
  public function getHeader() {
55
  $header = '<li class="completed">';
 
 
 
 
 
56
  if (!$this->_audit->sq_analytics_gsc_connected) {
57
  $header .= '<a href="' . SQ_Classes_RemoteController::getApiLink('gscoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Connect Google Search', _SQ_PLUGIN_NAME_) . '</a>';
58
  } elseif ($this->_keyword) {
53
  */
54
  public function getHeader() {
55
  $header = '<li class="completed">';
56
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
57
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
58
+ $header .= '</li>';
59
+
60
+ $header .= '<li class="completed">';
61
  if (!$this->_audit->sq_analytics_gsc_connected) {
62
  $header .= '<a href="' . SQ_Classes_RemoteController::getApiLink('gscoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Connect Google Search', _SQ_PLUGIN_NAME_) . '</a>';
63
  } elseif ($this->_keyword) {
models/focuspages/Image.php CHANGED
@@ -66,8 +66,12 @@ class SQ_Models_Focuspages_Image extends SQ_Models_Abstract_Assistant {
66
  */
67
  public function getHeader() {
68
  $edit_link = '';
69
-
70
  $header = '<li class="completed">';
 
 
 
 
 
71
  if ($this->_keyword) {
72
  $header .= '<div class="font-weight-bold text-black-50 mb-2 text-center">' . __('Keyword', _SQ_PLUGIN_NAME_) . ': ' . $this->_keyword . '</div>';
73
  if (isset($this->_post->ID)) {
66
  */
67
  public function getHeader() {
68
  $edit_link = '';
 
69
  $header = '<li class="completed">';
70
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
71
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
72
+ $header .= '</li>';
73
+
74
+ $header .= '<li class="completed">';
75
  if ($this->_keyword) {
76
  $header .= '<div class="font-weight-bold text-black-50 mb-2 text-center">' . __('Keyword', _SQ_PLUGIN_NAME_) . ': ' . $this->_keyword . '</div>';
77
  if (isset($this->_post->ID)) {
models/focuspages/Impressions.php CHANGED
@@ -53,6 +53,11 @@ class SQ_Models_Focuspages_Impressions extends SQ_Models_Abstract_Assistant {
53
  */
54
  public function getHeader() {
55
  $header = '<li class="completed">';
 
 
 
 
 
56
  if (!$this->_audit->sq_analytics_gsc_connected) {
57
  $header .= '<a href="' . SQ_Classes_RemoteController::getApiLink('gscoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Connect Google Search', _SQ_PLUGIN_NAME_) . '</a>';
58
  } elseif ($this->_keyword) {
53
  */
54
  public function getHeader() {
55
  $header = '<li class="completed">';
56
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
57
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
58
+ $header .= '</li>';
59
+
60
+ $header .= '<li class="completed">';
61
  if (!$this->_audit->sq_analytics_gsc_connected) {
62
  $header .= '<a href="' . SQ_Classes_RemoteController::getApiLink('gscoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Connect Google Search', _SQ_PLUGIN_NAME_) . '</a>';
63
  } elseif ($this->_keyword) {
models/focuspages/Indexability.php CHANGED
@@ -46,13 +46,13 @@ class SQ_Models_Focuspages_Indexability extends SQ_Models_Abstract_Assistant {
46
  'noindex' => array(
47
  'title' => __("Yes, do index", _SQ_PLUGIN_NAME_),
48
  'penalty' => 100,
49
- 'value' => $this->_robots,
50
  'description' => sprintf(__("To turn this task to green, go and look at all the places where you could have added instructions for Google not to index this page from your site. %s Make sure that there is no such instruction added to WordPress -> Settings, or in a theme, or in a plugin, or in Squirrly SEO's Snippet for this page. Also, make sure you don't block this page in your robots.txt file. %s Sometimes, you will want certain pages from your site not to be indexed. Now is not the case, however. %s If this task turns green, then it means that you did not specify to Google that it should NOT index the page. %s Therefore, you allow Google to index the page. %s Since this is a Focus Page, you must allow Google to index it, in order for it to appear in search result pages.", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
51
  ),
52
  'nofollow' => array(
53
  'title' => __("Yes, do follow", _SQ_PLUGIN_NAME_),
54
  'penalty' => 20,
55
- 'value' => $this->_robots,
56
  'description' => sprintf(__("To turn this task to green, make sure that you do NOT have a no-follow attribute for this Focus Page. %s This task gets verified from multiple sources. %s However, if you want to be 100%% certain in the future that everything is perfect, use just Squirrly SEO, because it will ease both your setup and the system check. %s With Squirrly SEO, you could easily check this setting in the Snippet section. %s Many themes and plugins could interfere with settings.", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
57
  ),
58
  'sitemap' => array(
@@ -65,7 +65,7 @@ class SQ_Models_Focuspages_Indexability extends SQ_Models_Abstract_Assistant {
65
  ),
66
  'canonical' => array(
67
  'title' => __("Canonical link", _SQ_PLUGIN_NAME_),
68
- 'value' => ($this->_canonical ? $this->_canonical : $this->_permalink),
69
  'penalty' => 20,
70
  'description' => sprintf(__("This page should have a canonical link to itself, indicating that it is indeed the original content. %s You can not have pages with canonical links to other sites and pages, because you could not rank for them. Why? Because a canonical link to another URL would mean that the other URL is the one worth indexing. (the original one) %s To turn this task to green, go and make sure that this page does not have a canonical link attribute pointing to another page. %s You can easily control this is in the future by using the Snippet feature of Squirrly SEO.", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<br /><br />'),
71
  ),
@@ -80,16 +80,23 @@ class SQ_Models_Focuspages_Indexability extends SQ_Models_Abstract_Assistant {
80
  /*********************************************/
81
  public function getHeader() {
82
  SQ_Debug::dump($this->_post);
 
 
 
 
 
83
  if (!$this->_audit->sq_analytics_gsc_connected && !$this->_audit->sq_analytics_google_connected) {
84
- return '<li class="completed">
85
  <a href="' . SQ_Classes_RemoteController::getApiLink('gscoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Connect Google Search', _SQ_PLUGIN_NAME_) . '</a>
86
  </li>';
87
  } else {
88
- return '<li class="completed sq_save_ajax">
89
  <input type="hidden" id="sq_indexability_completed" value="1"/>
90
- <button type="button" class="btn bg-primary text-white col-sm-10 offset-1 mt-3" data-redirect="https://search.google.com/search-console/inspect" data-input="sq_indexability_completed" data-action="sq_ajax_assistant" data-name="indexability|gscindex|' . $this->_post->ID . '" >' . __('Ask Google to Re-Index', _SQ_PLUGIN_NAME_) . '</button>
91
  </li>';
92
  }
 
 
93
  }
94
 
95
  /*
@@ -131,6 +138,7 @@ class SQ_Models_Focuspages_Indexability extends SQ_Models_Abstract_Assistant {
131
  return $task;
132
  }
133
 
 
134
  return $task;
135
  }
136
 
@@ -139,7 +147,12 @@ class SQ_Models_Focuspages_Indexability extends SQ_Models_Abstract_Assistant {
139
  * @return bool|WP_Error
140
  */
141
  public function checkCanonical($task) {
142
- $task['completed'] = (!$this->_canonical || (rtrim($this->_canonical, '/') == rtrim($this->_permalink, '/')));
 
 
 
 
 
143
  return $task;
144
  }
145
 
46
  'noindex' => array(
47
  'title' => __("Yes, do index", _SQ_PLUGIN_NAME_),
48
  'penalty' => 100,
49
+ 'value' => ($this->_robots ? $this->_robots : __("no restrictions", _SQ_PLUGIN_NAME_)),
50
  'description' => sprintf(__("To turn this task to green, go and look at all the places where you could have added instructions for Google not to index this page from your site. %s Make sure that there is no such instruction added to WordPress -> Settings, or in a theme, or in a plugin, or in Squirrly SEO's Snippet for this page. Also, make sure you don't block this page in your robots.txt file. %s Sometimes, you will want certain pages from your site not to be indexed. Now is not the case, however. %s If this task turns green, then it means that you did not specify to Google that it should NOT index the page. %s Therefore, you allow Google to index the page. %s Since this is a Focus Page, you must allow Google to index it, in order for it to appear in search result pages.", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
51
  ),
52
  'nofollow' => array(
53
  'title' => __("Yes, do follow", _SQ_PLUGIN_NAME_),
54
  'penalty' => 20,
55
+ 'value' => ($this->_robots ? $this->_robots : __("no restrictions", _SQ_PLUGIN_NAME_)),
56
  'description' => sprintf(__("To turn this task to green, make sure that you do NOT have a no-follow attribute for this Focus Page. %s This task gets verified from multiple sources. %s However, if you want to be 100%% certain in the future that everything is perfect, use just Squirrly SEO, because it will ease both your setup and the system check. %s With Squirrly SEO, you could easily check this setting in the Snippet section. %s Many themes and plugins could interfere with settings.", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
57
  ),
58
  'sitemap' => array(
65
  ),
66
  'canonical' => array(
67
  'title' => __("Canonical link", _SQ_PLUGIN_NAME_),
68
+ 'value' => '<br />' . __("Canonical", _SQ_PLUGIN_NAME_) . ': ' . ($this->_canonical && $this->_canonical <> '' ? $this->_canonical : __("No Canonical", _SQ_PLUGIN_NAME_)) . '<br />' . __("Post URL", _SQ_PLUGIN_NAME_) . ': ' . ($this->_permalink && $this->_permalink <> '' ? $this->_permalink : __("No URL", _SQ_PLUGIN_NAME_)),
69
  'penalty' => 20,
70
  'description' => sprintf(__("This page should have a canonical link to itself, indicating that it is indeed the original content. %s You can not have pages with canonical links to other sites and pages, because you could not rank for them. Why? Because a canonical link to another URL would mean that the other URL is the one worth indexing. (the original one) %s To turn this task to green, go and make sure that this page does not have a canonical link attribute pointing to another page. %s You can easily control this is in the future by using the Snippet feature of Squirrly SEO.", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<br /><br />'),
71
  ),
80
  /*********************************************/
81
  public function getHeader() {
82
  SQ_Debug::dump($this->_post);
83
+ $header = '<li class="completed">';
84
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
85
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
86
+ $header .= '</li>';
87
+
88
  if (!$this->_audit->sq_analytics_gsc_connected && !$this->_audit->sq_analytics_google_connected) {
89
+ $header .= '<li class="completed">
90
  <a href="' . SQ_Classes_RemoteController::getApiLink('gscoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Connect Google Search', _SQ_PLUGIN_NAME_) . '</a>
91
  </li>';
92
  } else {
93
+ $header .= '<li class="completed sq_save_ajax">
94
  <input type="hidden" id="sq_indexability_completed" value="1"/>
95
+ <button type="button" class="btn bg-primary text-white col-sm-10 offset-1 mt-1" data-redirect="https://search.google.com/search-console/inspect" data-input="sq_indexability_completed" data-action="sq_ajax_assistant" data-name="indexability|gscindex|' . $this->_post->ID . '" >' . __('Ask Google to Re-Index', _SQ_PLUGIN_NAME_) . '</button>
96
  </li>';
97
  }
98
+
99
+ return $header;
100
  }
101
 
102
  /*
138
  return $task;
139
  }
140
 
141
+ $task['completed'] = false;
142
  return $task;
143
  }
144
 
147
  * @return bool|WP_Error
148
  */
149
  public function checkCanonical($task) {
150
+ if ($this->_canonical && $this->_permalink) {
151
+ $task['completed'] = strcasecmp(rtrim($this->_canonical, '/'), rtrim($this->_permalink, '/') == 0);
152
+ return $task;
153
+ }
154
+
155
+ $task['error'] = true;
156
  return $task;
157
  }
158
 
models/focuspages/Innerlinks.php CHANGED
@@ -20,6 +20,8 @@ class SQ_Models_Focuspages_Innerlinks extends SQ_Models_Abstract_Assistant {
20
  }
21
 
22
  $this->_permalink = (isset($this->_post->url) && $this->_post->url <> '' ? $this->_post->url : $this->_audit->permalink);
 
 
23
 
24
  if ($this->_permalink <> '') {
25
  global $wpdb;
@@ -27,7 +29,7 @@ class SQ_Models_Focuspages_Innerlinks extends SQ_Models_Abstract_Assistant {
27
  if ($row = $wpdb->get_row("SELECT COUNT(`ID`) as count FROM " . $wpdb->posts . " WHERE `post_status` = 'publish'")) {
28
  $this->_total_posts = $row->count;
29
  }
30
- if ($row = $wpdb->get_row("SELECT COUNT(`ID`) as count FROM " . $wpdb->posts . " WHERE `post_content` LIKE '%" . $this->_permalink . "%' AND `post_status` = 'publish'")) {
31
  $this->_inner_links = $row->count;
32
  }
33
 
@@ -42,11 +44,13 @@ class SQ_Models_Focuspages_Innerlinks extends SQ_Models_Abstract_Assistant {
42
 
43
  public function setTasks($tasks) {
44
  parent::setTasks($tasks);
 
 
45
 
46
  $this->_tasks[$this->_category] = array(
47
  'innerlinks' => array(
48
  'title' => sprintf(__("Get %s inner links", _SQ_PLUGIN_NAME_), self::INNERS_MINVAL),
49
- 'value' => (int)$this->_inner_links. ' ' . __('inner links', _SQ_PLUGIN_NAME_),
50
  'penalty' => 5,
51
  'description' => sprintf(__("Get %s Inner Links %s Recommended is: %s %s Inner Links are links that you send from one URL of your site to another URL of your site. %s Since your Focus Pages are the most important pages in your site, you should make sure that you link to them from many pages of your website. %s Follow the best practices for this. (highlighted in the Best Practices section)", _SQ_PLUGIN_NAME_), self::INNERS_MINVAL, '<br /><br />', self::INNERS_RECOMMENDED, '<br /><br />', '<br /><br />', '<br /><br />'),
52
  ),
@@ -55,14 +59,17 @@ class SQ_Models_Focuspages_Innerlinks extends SQ_Models_Abstract_Assistant {
55
 
56
  /*********************************************/
57
  public function getHeader() {
58
- $header = '';
 
 
 
 
59
  if (isset($this->_post->ID)) {
60
  $edit_link = SQ_Classes_Helpers_Tools::getAdminUrl('post.php?post=' . (int)$this->_post->ID . '&action=edit');
61
  if ($this->_post->post_type <> 'profile') {
62
  $edit_link = get_edit_post_link($this->_post->ID, false);
63
  }
64
 
65
- $header = '';
66
  $header .= '<li class="completed">';
67
  $header .= '<a href="' . $edit_link . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Build with Blogging Assistant', _SQ_PLUGIN_NAME_) . '</a>';
68
  $header .= '</li>';
@@ -75,8 +82,10 @@ class SQ_Models_Focuspages_Innerlinks extends SQ_Models_Abstract_Assistant {
75
  * @return bool|WP_Error
76
  */
77
  public function checkInnerlinks($task) {
78
- $task['completed'] = ((int)$this->_inner_links && (int)$this->_inner_links >= self::INNERS_MINVAL);
79
- return $task;
 
 
80
 
81
  $task['error'] = true;
82
  return $task;
20
  }
21
 
22
  $this->_permalink = (isset($this->_post->url) && $this->_post->url <> '' ? $this->_post->url : $this->_audit->permalink);
23
+ $path = parse_url($this->_permalink, PHP_URL_PATH);
24
+ if($path == '') $path = $this->_permalink;
25
 
26
  if ($this->_permalink <> '') {
27
  global $wpdb;
29
  if ($row = $wpdb->get_row("SELECT COUNT(`ID`) as count FROM " . $wpdb->posts . " WHERE `post_status` = 'publish'")) {
30
  $this->_total_posts = $row->count;
31
  }
32
+ if ($row = $wpdb->get_row("SELECT COUNT(`ID`) as count FROM " . $wpdb->posts . " WHERE `post_content` LIKE '%" . $path . "%' AND `post_status` = 'publish'")) {
33
  $this->_inner_links = $row->count;
34
  }
35
 
44
 
45
  public function setTasks($tasks) {
46
  parent::setTasks($tasks);
47
+ $path = parse_url($this->_permalink, PHP_URL_PATH);
48
+ if($path == '') $path = $this->_permalink;
49
 
50
  $this->_tasks[$this->_category] = array(
51
  'innerlinks' => array(
52
  'title' => sprintf(__("Get %s inner links", _SQ_PLUGIN_NAME_), self::INNERS_MINVAL),
53
+ 'value' => (int)$this->_inner_links . ' ' . __('inner links', _SQ_PLUGIN_NAME_) . ' ' .__('to', _SQ_PLUGIN_NAME_) . ': ' . $path,
54
  'penalty' => 5,
55
  'description' => sprintf(__("Get %s Inner Links %s Recommended is: %s %s Inner Links are links that you send from one URL of your site to another URL of your site. %s Since your Focus Pages are the most important pages in your site, you should make sure that you link to them from many pages of your website. %s Follow the best practices for this. (highlighted in the Best Practices section)", _SQ_PLUGIN_NAME_), self::INNERS_MINVAL, '<br /><br />', self::INNERS_RECOMMENDED, '<br /><br />', '<br /><br />', '<br /><br />'),
56
  ),
59
 
60
  /*********************************************/
61
  public function getHeader() {
62
+ $header = '<li class="completed">';
63
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
64
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
65
+ $header .= '</li>';
66
+
67
  if (isset($this->_post->ID)) {
68
  $edit_link = SQ_Classes_Helpers_Tools::getAdminUrl('post.php?post=' . (int)$this->_post->ID . '&action=edit');
69
  if ($this->_post->post_type <> 'profile') {
70
  $edit_link = get_edit_post_link($this->_post->ID, false);
71
  }
72
 
 
73
  $header .= '<li class="completed">';
74
  $header .= '<a href="' . $edit_link . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Build with Blogging Assistant', _SQ_PLUGIN_NAME_) . '</a>';
75
  $header .= '</li>';
82
  * @return bool|WP_Error
83
  */
84
  public function checkInnerlinks($task) {
85
+ if($this->_permalink <> '') {
86
+ $task['completed'] = ((int)$this->_inner_links && (int)$this->_inner_links >= self::INNERS_MINVAL);
87
+ return $task;
88
+ }
89
 
90
  $task['error'] = true;
91
  return $task;
models/focuspages/Keyword.php CHANGED
@@ -45,18 +45,18 @@ class SQ_Models_Focuspages_Keyword extends SQ_Models_Abstract_Assistant {
45
 
46
  $this->_tasks[$this->_category] = array(
47
  'competition' => array(
48
- 'title' => __("Competition is low", _SQ_PLUGIN_NAME_),
49
  'value' => ($this->_competition ? $this->_competition->text : false),
50
  'penalty' => 15,
51
  'description' => sprintf(__('To complete this task you must make sure that the main keyword you\'re optimizing this Focus Page for has low competition. %s The Squirrly SEO software suite uses our proprietary Market Intelligence feature to determine the chance that your site has of outranking the current TOP 10 of Google for the desired keyword you\'re targeting. %s If you really want to have a clear shot at ranking, make sure the competition is low for the keyword you choose.', _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />'),
52
  ),
53
  'impressions' => array(
54
- 'title' => __("Search volume is big enough", _SQ_PLUGIN_NAME_),
55
  'value' => ($this->_volume ? $this->_volume->absolute : false),
56
  'description' => sprintf(__("To turn this task to green, go and find a keyword that has a good search volume. (meaning that many people search on Google for this keyword every single month). %s The Research features from Squirrly SEO will indicate if the volume is big enough. %s Since these are the most important pages on your website, you need to make sure that you get the maximum number of people possible to find this page. %s If you target keyword searches with low volumes, then you'll end up having just 2 or 3 people every month visiting this page. And then all the effort will have been for nothing.", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
57
  ),
58
  'trend' => array(
59
- 'title' => __("Trend is decent", _SQ_PLUGIN_NAME_),
60
  'value' => ($this->_trend ? $this->_trend->text : false),
61
  'description' => sprintf(__("Trend levels required to get the Green Check on this task: %s - Steady %s - Going Up %s - Sky-rocketing %s we take the trend from the previous 3 months. %s If you target a search query with a bad trend you'll end up seeing little traffic to this page in the long run. %s Why ? A declining trend shows that Google Users are losing interest in that topic or keyword and will continue to do so in the future. %s Therefore, even though you could get much traffic right now after you rank this page, in the near future you'll get very little traffic even if you'd end up on Position 1 in Google Search.", _SQ_PLUGIN_NAME_), '<br />', '<br />', '<br />', '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
62
  ),
@@ -74,6 +74,11 @@ class SQ_Models_Focuspages_Keyword extends SQ_Models_Abstract_Assistant {
74
  */
75
  public function getHeader() {
76
  $header = '<li class="completed">';
 
 
 
 
 
77
  if ($this->_keyword) {
78
  if ($this->_competition && $this->_trend) {
79
  $header .= '<div class="font-weight-bold text-black-50 mb-2 text-center">' . __('Keyword', _SQ_PLUGIN_NAME_) . ': ' . $this->_keyword . '</div>';
45
 
46
  $this->_tasks[$this->_category] = array(
47
  'competition' => array(
48
+ 'title' => __("Keyword Competition", _SQ_PLUGIN_NAME_),
49
  'value' => ($this->_competition ? $this->_competition->text : false),
50
  'penalty' => 15,
51
  'description' => sprintf(__('To complete this task you must make sure that the main keyword you\'re optimizing this Focus Page for has low competition. %s The Squirrly SEO software suite uses our proprietary Market Intelligence feature to determine the chance that your site has of outranking the current TOP 10 of Google for the desired keyword you\'re targeting. %s If you really want to have a clear shot at ranking, make sure the competition is low for the keyword you choose.', _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />'),
52
  ),
53
  'impressions' => array(
54
+ 'title' => __("Search volume", _SQ_PLUGIN_NAME_),
55
  'value' => ($this->_volume ? $this->_volume->absolute : false),
56
  'description' => sprintf(__("To turn this task to green, go and find a keyword that has a good search volume. (meaning that many people search on Google for this keyword every single month). %s The Research features from Squirrly SEO will indicate if the volume is big enough. %s Since these are the most important pages on your website, you need to make sure that you get the maximum number of people possible to find this page. %s If you target keyword searches with low volumes, then you'll end up having just 2 or 3 people every month visiting this page. And then all the effort will have been for nothing.", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
57
  ),
58
  'trend' => array(
59
+ 'title' => __("Google Trend", _SQ_PLUGIN_NAME_),
60
  'value' => ($this->_trend ? $this->_trend->text : false),
61
  'description' => sprintf(__("Trend levels required to get the Green Check on this task: %s - Steady %s - Going Up %s - Sky-rocketing %s we take the trend from the previous 3 months. %s If you target a search query with a bad trend you'll end up seeing little traffic to this page in the long run. %s Why ? A declining trend shows that Google Users are losing interest in that topic or keyword and will continue to do so in the future. %s Therefore, even though you could get much traffic right now after you rank this page, in the near future you'll get very little traffic even if you'd end up on Position 1 in Google Search.", _SQ_PLUGIN_NAME_), '<br />', '<br />', '<br />', '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
62
  ),
74
  */
75
  public function getHeader() {
76
  $header = '<li class="completed">';
77
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
78
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
79
+ $header .= '</li>';
80
+
81
+ $header .= '<li class="completed">';
82
  if ($this->_keyword) {
83
  if ($this->_competition && $this->_trend) {
84
  $header .= '<div class="font-weight-bold text-black-50 mb-2 text-center">' . __('Keyword', _SQ_PLUGIN_NAME_) . ': ' . $this->_keyword . '</div>';
models/focuspages/Length.php CHANGED
@@ -51,7 +51,11 @@ class SQ_Models_Focuspages_Length extends SQ_Models_Abstract_Assistant {
51
 
52
  /*********************************************/
53
  public function getHeader() {
54
- $header = '';
 
 
 
 
55
  if (isset($this->_post->ID)) {
56
  $edit_link = SQ_Classes_Helpers_Tools::getAdminUrl('post.php?post=' . (int)$this->_post->ID . '&action=edit');
57
  if ($this->_post->post_type <> 'profile') {
@@ -59,7 +63,7 @@ class SQ_Models_Focuspages_Length extends SQ_Models_Abstract_Assistant {
59
  }
60
 
61
 
62
- $header = '<li class="completed">';
63
  if (isset($this->_post->ID)) {
64
  $header .= '<a href="' . $edit_link . '" target="_blank" class="btn bg-primary text-white col-sm-8 offset-2 my-2">' . __('Edit Page', _SQ_PLUGIN_NAME_) . '</a>';
65
  }
@@ -106,6 +110,10 @@ class SQ_Models_Focuspages_Length extends SQ_Models_Abstract_Assistant {
106
  return $task;
107
  }
108
 
 
 
 
 
109
  $task['error'] = true;
110
  return $task;
111
  }
51
 
52
  /*********************************************/
53
  public function getHeader() {
54
+ $header = '<li class="completed">';
55
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
56
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
57
+ $header .= '</li>';
58
+
59
  if (isset($this->_post->ID)) {
60
  $edit_link = SQ_Classes_Helpers_Tools::getAdminUrl('post.php?post=' . (int)$this->_post->ID . '&action=edit');
61
  if ($this->_post->post_type <> 'profile') {
63
  }
64
 
65
 
66
+ $header .= '<li class="completed">';
67
  if (isset($this->_post->ID)) {
68
  $header .= '<a href="' . $edit_link . '" target="_blank" class="btn bg-primary text-white col-sm-8 offset-2 my-2">' . __('Edit Page', _SQ_PLUGIN_NAME_) . '</a>';
69
  }
110
  return $task;
111
  }
112
 
113
+ if(!$this->_audit->sq_analytics_google_connected){
114
+ $task['error_message'] = __("Connect Google Analytics first", _SQ_PLUGIN_NAME_);
115
+ }
116
+
117
  $task['error'] = true;
118
  return $task;
119
  }
models/focuspages/Nofollow.php CHANGED
@@ -55,7 +55,7 @@ class SQ_Models_Focuspages_Nofollow extends SQ_Models_Abstract_Assistant {
55
  $this->_tasks[$this->_category] = array(
56
  'externallinks' => array(
57
  'title' => __("Maintain authority", _SQ_PLUGIN_NAME_),
58
- 'value' => '<br />' . __("External Links", _SQ_PLUGIN_NAME_) . ':<br />' . ($this->_dofollow_links && !empty($this->_dofollow_links) ? join('<br />', array_unique($this->_dofollow_links)) : ''),
59
  'penalty' => 5,
60
  'description' => sprintf(__("TLDR: All outbound links need to have no-follow attribute. %s You've worked hard on your Focus Page. %s Now make sure that you're not letting that hard work go to waste, by sending out all your authority and Link Juice over to other pages from the web. %s The Focus Page needs to be the final page that Google Follows. It's an \"All Roads Lead to Rome\" kind of scenario. %s If you want your focus pages to get ranked better and have authority make sure that ALL outbound links have a no-follow attribute attached to them.", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
61
  ),
@@ -63,14 +63,29 @@ class SQ_Models_Focuspages_Nofollow extends SQ_Models_Abstract_Assistant {
63
 
64
  }
65
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  /*********************************************/
67
 
68
  public function checkExternallinks($task) {
69
- if ($this->_dofollow_links && !empty($this->_dofollow_links)) {
70
- $task['completed'] = false;
71
- return $task;
 
 
72
  }
73
 
 
74
  return $task;
75
  }
76
 
55
  $this->_tasks[$this->_category] = array(
56
  'externallinks' => array(
57
  'title' => __("Maintain authority", _SQ_PLUGIN_NAME_),
58
+ 'value' => ($this->_dofollow_links && !empty($this->_dofollow_links) ? '<br />' . __("External Links", _SQ_PLUGIN_NAME_) . ':<br />' . join('<br />', array_unique($this->_dofollow_links)) : __("No dofollow external links", _SQ_PLUGIN_NAME_)),
59
  'penalty' => 5,
60
  'description' => sprintf(__("TLDR: All outbound links need to have no-follow attribute. %s You've worked hard on your Focus Page. %s Now make sure that you're not letting that hard work go to waste, by sending out all your authority and Link Juice over to other pages from the web. %s The Focus Page needs to be the final page that Google Follows. It's an \"All Roads Lead to Rome\" kind of scenario. %s If you want your focus pages to get ranked better and have authority make sure that ALL outbound links have a no-follow attribute attached to them.", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
61
  ),
63
 
64
  }
65
 
66
+ /**
67
+ * Customize the tasks header
68
+ * @return string
69
+ */
70
+ public function getHeader() {
71
+ $header = '<li class="completed">';
72
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
73
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
74
+ $header .= '</li>';
75
+
76
+ return $header;
77
+ }
78
  /*********************************************/
79
 
80
  public function checkExternallinks($task) {
81
+ if($this->_permalink <> '') {
82
+ if ($this->_dofollow_links && !empty($this->_dofollow_links)) {
83
+ $task['completed'] = false;
84
+ return $task;
85
+ }
86
  }
87
 
88
+ $task['error'] = true;
89
  return $task;
90
  }
91
 
models/focuspages/Onpage.php CHANGED
@@ -74,9 +74,16 @@ class SQ_Models_Focuspages_Onpage extends SQ_Models_Abstract_Assistant {
74
  * @return string
75
  */
76
  public function getHeader() {
77
- return '<li class="completed">
 
 
 
 
 
78
  <a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings') . '" target="_blank" class="btn bg-primary text-white col-sm-8 offset-2 mt-3">' . __('Go to SEO Settings', _SQ_PLUGIN_NAME_) . '</a>
79
  </li>';
 
 
80
  }
81
 
82
 
74
  * @return string
75
  */
76
  public function getHeader() {
77
+ $header = '<li class="completed">';
78
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
79
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
80
+ $header .= '</li>';
81
+
82
+ $header .= '<li class="completed">
83
  <a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings') . '" target="_blank" class="btn bg-primary text-white col-sm-8 offset-2 mt-3">' . __('Go to SEO Settings', _SQ_PLUGIN_NAME_) . '</a>
84
  </li>';
85
+
86
+ return $header;
87
  }
88
 
89
 
models/focuspages/Ranking.php CHANGED
@@ -26,6 +26,18 @@ class SQ_Models_Focuspages_Ranking extends SQ_Models_Abstract_Assistant {
26
  );
27
  }
28
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  /*********************************************/
30
 
31
  public function checkExternallinks($task) {
26
  );
27
  }
28
 
29
+ /**
30
+ * Customize the tasks header
31
+ * @return string
32
+ */
33
+ public function getHeader() {
34
+ $header = '<li class="completed">';
35
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
36
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
37
+ $header .= '</li>';
38
+
39
+ return $header;
40
+ }
41
  /*********************************************/
42
 
43
  public function checkExternallinks($task) {
models/focuspages/Snippet.php CHANGED
@@ -120,6 +120,11 @@ class SQ_Models_Focuspages_Snippet extends SQ_Models_Abstract_Assistant {
120
  }
121
 
122
  $header = '<li class="completed">';
 
 
 
 
 
123
  if ($this->_keyword) {
124
  $header .= '<div class="font-weight-bold text-black-50 mb-2 text-center">' . __('Keyword', _SQ_PLUGIN_NAME_) . ': ' . $this->_keyword . '</div>';
125
  } else {
120
  }
121
 
122
  $header = '<li class="completed">';
123
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
124
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
125
+ $header .= '</li>';
126
+
127
+ $header .= '<li class="completed">';
128
  if ($this->_keyword) {
129
  $header .= '<div class="font-weight-bold text-black-50 mb-2 text-center">' . __('Keyword', _SQ_PLUGIN_NAME_) . ': ' . $this->_keyword . '</div>';
130
  } else {
models/focuspages/Social.php CHANGED
@@ -52,9 +52,16 @@ class SQ_Models_Focuspages_Social extends SQ_Models_Abstract_Assistant {
52
 
53
  /*********************************************/
54
  public function getHeader() {
55
- return '<li class="completed">
 
 
 
 
 
56
  <a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'social') . '" target="_blank" class="sq_research_selectit btn bg-primary text-white col-sm-10 offset-1">' . __('Go to Social Media Settings', _SQ_PLUGIN_NAME_) . '</a>
57
  </li>';
 
 
58
  }
59
 
60
  public function getValue() {
52
 
53
  /*********************************************/
54
  public function getHeader() {
55
+ $header = '<li class="completed">';
56
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
57
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
58
+ $header .= '</li>';
59
+
60
+ $header .= '<li class="completed">
61
  <a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'social') . '" target="_blank" class="sq_research_selectit btn bg-primary text-white col-sm-10 offset-1">' . __('Go to Social Media Settings', _SQ_PLUGIN_NAME_) . '</a>
62
  </li>';
63
+
64
+ return $header;
65
  }
66
 
67
  public function getValue() {
models/focuspages/Strategy.php CHANGED
@@ -84,6 +84,11 @@ class SQ_Models_Focuspages_Strategy extends SQ_Models_Abstract_Assistant {
84
  */
85
  public function getHeader() {
86
  $header = '<li class="completed">';
 
 
 
 
 
87
  if ($this->_keyword) {
88
  $header .= '<div class="font-weight-bold text-black-50 mb-2 text-center">' . __('Keyword', _SQ_PLUGIN_NAME_) . ': ' . $this->_keyword . '</div>';
89
  $header .= '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_research', 'briefcase') . '" target="_blank" class="btn bg-primary text-white col-sm-8 offset-2 mt-3">' . __('Manage Strategy', _SQ_PLUGIN_NAME_) . '</a>';
84
  */
85
  public function getHeader() {
86
  $header = '<li class="completed">';
87
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
88
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
89
+ $header .= '</li>';
90
+
91
+ $header .= '<li class="completed">';
92
  if ($this->_keyword) {
93
  $header .= '<div class="font-weight-bold text-black-50 mb-2 text-center">' . __('Keyword', _SQ_PLUGIN_NAME_) . ': ' . $this->_keyword . '</div>';
94
  $header .= '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_research', 'briefcase') . '" target="_blank" class="btn bg-primary text-white col-sm-8 offset-2 mt-3">' . __('Manage Strategy', _SQ_PLUGIN_NAME_) . '</a>';
models/focuspages/Traffic.php CHANGED
@@ -53,7 +53,7 @@ class SQ_Models_Focuspages_Traffic extends SQ_Models_Abstract_Assistant {
53
  $this->_tasks[$this->_category] = array(
54
  'bounce' => array(
55
  'title' => sprintf(__("Below %s Bounce Rate", _SQ_PLUGIN_NAME_), self::BOUNCE_MAXVAL . '%'),
56
- 'value' => number_format($this->_bounce_rate, 2) . '%'. ' ' . __('bounce rate', _SQ_PLUGIN_NAME_),
57
  'description' => sprintf(__('Make sure this number is below %s %s Why? %s A high bounce rate means that your users just click on your search listing, visit the page and then decide they\'ve seen enough and bounce off to another page on the web. %s This is, for Google, an indicator of the quality of the search result it displayed. And if many of your users bounce off your pages, it means (to Google) that your page is not worth displaying in search results, because it has low performance with the user groups it sends your way. %s Easy way to complete this task: give users pages to click and send them to other pages from your site.', _SQ_PLUGIN_NAME_), self::BOUNCE_MAXVAL . '%', '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
58
  ),
59
  'avgtime' => array(
@@ -80,17 +80,22 @@ class SQ_Models_Focuspages_Traffic extends SQ_Models_Abstract_Assistant {
80
  * @return string
81
  */
82
  public function getHeader() {
 
 
 
 
 
83
  if (!$this->_audit->sq_analytics_gsc_connected) {
84
- return '<li class="completed">
85
- <a href="' . SQ_Classes_RemoteController::getApiLink('gaoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Connect Google Analytics', _SQ_PLUGIN_NAME_) . '</a>
86
  </li>';
87
  }
88
  if (!$this->_audit->sq_analytics_google_connected) {
89
- return '<li class="completed">
90
- <a href="' . SQ_Classes_RemoteController::getApiLink('gaoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-3">' . __('Connect Google Analytics', _SQ_PLUGIN_NAME_) . '</a>
91
  </li>';
92
  }
93
- return '';
94
  }
95
 
96
  /**
@@ -101,9 +106,9 @@ class SQ_Models_Focuspages_Traffic extends SQ_Models_Abstract_Assistant {
101
  public function getTitle($title) {
102
  parent::getTitle($title);
103
 
104
- if ($this->_error && !$this->_audit->sq_analytics_google_connected) {
105
  $title = __("Connect Google Analytics first", _SQ_PLUGIN_NAME_);
106
- }else{
107
  $title = __("Not enough traffic to show relevant stats", _SQ_PLUGIN_NAME_);
108
  }
109
  return $title;
@@ -118,7 +123,9 @@ class SQ_Models_Focuspages_Traffic extends SQ_Models_Abstract_Assistant {
118
  $task['completed'] = ($this->_bounce_rate <= self::BOUNCE_MAXVAL);
119
  return $task;
120
  }
121
-
 
 
122
  $task['error'] = true;
123
  return $task;
124
  }
@@ -132,7 +139,9 @@ class SQ_Models_Focuspages_Traffic extends SQ_Models_Abstract_Assistant {
132
  $task['completed'] = ($this->_page_time >= self::AVGTIME_MINVAL);
133
  return $task;
134
  }
135
-
 
 
136
  $task['error'] = true;
137
  return $task;
138
  }
@@ -146,7 +155,9 @@ class SQ_Models_Focuspages_Traffic extends SQ_Models_Abstract_Assistant {
146
  $task['completed'] = ($this->_page_sessions >= self::VISITS_MINVAL);
147
  return $task;
148
  }
149
-
 
 
150
  $task['error'] = true;
151
  return $task;
152
  }
53
  $this->_tasks[$this->_category] = array(
54
  'bounce' => array(
55
  'title' => sprintf(__("Below %s Bounce Rate", _SQ_PLUGIN_NAME_), self::BOUNCE_MAXVAL . '%'),
56
+ 'value' => number_format($this->_bounce_rate, 2) . '%' . ' ' . __('bounce rate', _SQ_PLUGIN_NAME_),
57
  'description' => sprintf(__('Make sure this number is below %s %s Why? %s A high bounce rate means that your users just click on your search listing, visit the page and then decide they\'ve seen enough and bounce off to another page on the web. %s This is, for Google, an indicator of the quality of the search result it displayed. And if many of your users bounce off your pages, it means (to Google) that your page is not worth displaying in search results, because it has low performance with the user groups it sends your way. %s Easy way to complete this task: give users pages to click and send them to other pages from your site.', _SQ_PLUGIN_NAME_), self::BOUNCE_MAXVAL . '%', '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
58
  ),
59
  'avgtime' => array(
80
  * @return string
81
  */
82
  public function getHeader() {
83
+ $header = '<li class="completed">';
84
+ $header .= '<div class="font-weight-bold text-black-50 mb-1">' . __('Current URL', _SQ_PLUGIN_NAME_) . ': </div>';
85
+ $header .= '<a href="' . $this->_post->url . '" target="_blank" style="word-break: break-word;">' . $this->_post->url . '</a>';
86
+ $header .= '</li>';
87
+
88
  if (!$this->_audit->sq_analytics_gsc_connected) {
89
+ $header .= '<li class="completed">
90
+ <a href="' . SQ_Classes_RemoteController::getApiLink('gaoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-1">' . __('Connect Google Analytics', _SQ_PLUGIN_NAME_) . '</a>
91
  </li>';
92
  }
93
  if (!$this->_audit->sq_analytics_google_connected) {
94
+ $header .= '<li class="completed">
95
+ <a href="' . SQ_Classes_RemoteController::getApiLink('gaoauth') . '" target="_blank" class="btn bg-primary text-white col-sm-10 offset-1 mt-1">' . __('Connect Google Analytics', _SQ_PLUGIN_NAME_) . '</a>
96
  </li>';
97
  }
98
+ return $header;
99
  }
100
 
101
  /**
106
  public function getTitle($title) {
107
  parent::getTitle($title);
108
 
109
+ if (!$this->_audit->sq_analytics_google_connected) {
110
  $title = __("Connect Google Analytics first", _SQ_PLUGIN_NAME_);
111
+ } elseif ($this->_error) {
112
  $title = __("Not enough traffic to show relevant stats", _SQ_PLUGIN_NAME_);
113
  }
114
  return $title;
123
  $task['completed'] = ($this->_bounce_rate <= self::BOUNCE_MAXVAL);
124
  return $task;
125
  }
126
+ if(!$this->_audit->sq_analytics_google_connected){
127
+ $task['error_message'] = __("Connect Google Analytics first", _SQ_PLUGIN_NAME_);
128
+ }
129
  $task['error'] = true;
130
  return $task;
131
  }
139
  $task['completed'] = ($this->_page_time >= self::AVGTIME_MINVAL);
140
  return $task;
141
  }
142
+ if(!$this->_audit->sq_analytics_google_connected){
143
+ $task['error_message'] = __("Connect Google Analytics first", _SQ_PLUGIN_NAME_);
144
+ }
145
  $task['error'] = true;
146
  return $task;
147
  }
155
  $task['completed'] = ($this->_page_sessions >= self::VISITS_MINVAL);
156
  return $task;
157
  }
158
+ if(!$this->_audit->sq_analytics_google_connected){
159
+ $task['error_message'] = __("Connect Google Analytics first", _SQ_PLUGIN_NAME_);
160
+ }
161
  $task['error'] = true;
162
  return $task;
163
  }
models/services/JsonLD.php CHANGED
@@ -13,6 +13,7 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
13
  add_filter('sq_json_ld', array($this, 'returnFalse'));
14
  return;
15
  }
 
16
  if (class_exists('WooCommerce')) {
17
  // Generate structured data for Woocommerce 3.
18
  if ($this->_post->post_type == 'product') {
@@ -21,7 +22,10 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
21
  add_filter('sq_json_ld', array($this, 'generate_review_data'), 8);
22
  }
23
  }
24
- add_filter('sq_json_ld', array($this, 'generate_breadcrumblist_data'), 9);
 
 
 
25
  add_filter('sq_json_ld', array($this, 'generate_structured_data'), 10);
26
 
27
  add_filter('sq_json_ld', array($this, 'generateJsonLd'));
@@ -48,7 +52,7 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
48
  */
49
  public function packJsonLd($data = array()) {
50
  if (!empty($data)) {
51
- if ($this->_post->sq->jsonld) {
52
  if (strpos($this->_post->sq->jsonld, 'application/ld+json') !== false) {
53
  return $this->_post->sq->jsonld;
54
  } else {
@@ -95,7 +99,7 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
95
  * @return array
96
  */
97
  public function get_data() {
98
- return $this->_data;
99
  }
100
 
101
 
@@ -115,12 +119,15 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
115
  */
116
  public function get_structured_data($types) {
117
  $data = array();
118
-
119
  // Put together the values of same type of structured data.
120
  foreach ($this->get_data() as $value) {
 
121
  $data[strtolower($value['@type'])][] = $value;
122
  }
123
 
 
 
 
124
  // Wrap the multiple values of each type inside a graph... Then add context to each type.
125
  foreach ($data as $type => $value) {
126
  $data[$type] = count((array)$value) > 1 ? array('@graph' => $value) : $value[0];
@@ -242,10 +249,12 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
242
 
243
  if (isset($this->_post->sq->title)) {
244
  $markup['name'] = $this->truncate($this->_post->sq->title, 0, $this->_post->sq->jsonld_title_maxlength);
 
245
  }
246
 
247
  if (isset($this->_post->sq->description)) {
248
  $markup['headline'] = $this->truncate($this->_post->sq->description, 0, $this->_post->sq->jsonld_description_maxlength);
 
249
  }
250
  $markup['mainEntityOfPage'] = array(
251
  '@type' => 'WebPage',
@@ -342,10 +351,12 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
342
 
343
  if (isset($this->_post->sq->title)) {
344
  $markup['name'] = $this->truncate($this->_post->sq->title, 0, $this->_post->sq->jsonld_title_maxlength);
 
345
  }
346
 
347
  if (isset($this->_post->sq->description)) {
348
  $markup['headline'] = $this->truncate($this->_post->sq->description, 0, $this->_post->sq->jsonld_description_maxlength);
 
349
  }
350
  $markup['mainEntityOfPage'] = array(
351
  '@type' => 'WebPage',
@@ -440,6 +451,7 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
440
  $markup['@id'] = $this->getAuthor('user_url');
441
  $markup['url'] = $this->getAuthor('user_url');
442
  $markup['name'] = $this->getAuthor('display_name');
 
443
 
444
  //add current markup
445
  $this->set_data($markup);
@@ -450,10 +462,12 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
450
 
451
  if (isset($this->_post->sq->title)) {
452
  $markup['name'] = $this->truncate($this->_post->sq->title, 0, $this->_post->sq->jsonld_title_maxlength);
 
453
  }
454
 
455
  if (isset($this->_post->sq->description)) {
456
  $markup['headline'] = $this->truncate($this->_post->sq->description, 0, $this->_post->sq->jsonld_description_maxlength);
 
457
  }
458
  $markup['mainEntityOfPage'] = array(
459
  '@type' => 'WebPage',
@@ -618,7 +632,6 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
618
  }
619
  }
620
  }
621
-
622
  if ($this->_post->post_type <> 'home') {
623
  ////////////////////// Current post
624
  $crumbs[] = array(
@@ -635,7 +648,7 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
635
  '@type' => 'ListItem',
636
  'position' => $key + 1,
637
  'item' => array(
638
- 'name' => $crumb[0],
639
  '@id' => $crumb[1]
640
  ),
641
  );
@@ -643,6 +656,7 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
643
  }
644
  }
645
  }
 
646
  $this->set_data($markup);
647
 
648
  }
13
  add_filter('sq_json_ld', array($this, 'returnFalse'));
14
  return;
15
  }
16
+
17
  if (class_exists('WooCommerce')) {
18
  // Generate structured data for Woocommerce 3.
19
  if ($this->_post->post_type == 'product') {
22
  add_filter('sq_json_ld', array($this, 'generate_review_data'), 8);
23
  }
24
  }
25
+
26
+ if (SQ_Classes_Helpers_Tools::getOption('sq_jsonld_breadcrumbs')) {
27
+ add_filter('sq_json_ld', array($this, 'generate_breadcrumblist_data'), 9);
28
+ }
29
  add_filter('sq_json_ld', array($this, 'generate_structured_data'), 10);
30
 
31
  add_filter('sq_json_ld', array($this, 'generateJsonLd'));
52
  */
53
  public function packJsonLd($data = array()) {
54
  if (!empty($data)) {
55
+ if ($this->_post->sq->jsonld && strpos($this->_post->sq->jsonld, '"name":"Auto Draft"') === false) {
56
  if (strpos($this->_post->sq->jsonld, 'application/ld+json') !== false) {
57
  return $this->_post->sq->jsonld;
58
  } else {
99
  * @return array
100
  */
101
  public function get_data() {
102
+ return apply_filters('sq_json_ld_data',$this->_data);
103
  }
104
 
105
 
119
  */
120
  public function get_structured_data($types) {
121
  $data = array();
 
122
  // Put together the values of same type of structured data.
123
  foreach ($this->get_data() as $value) {
124
+ $data[$value['@type']][] = $value;
125
  $data[strtolower($value['@type'])][] = $value;
126
  }
127
 
128
+ //mage array unique
129
+ $types = array_unique($types);
130
+
131
  // Wrap the multiple values of each type inside a graph... Then add context to each type.
132
  foreach ($data as $type => $value) {
133
  $data[$type] = count((array)$value) > 1 ? array('@graph' => $value) : $value[0];
249
 
250
  if (isset($this->_post->sq->title)) {
251
  $markup['name'] = $this->truncate($this->_post->sq->title, 0, $this->_post->sq->jsonld_title_maxlength);
252
+ $markup['name'] = str_replace('&#034;', '"', $markup['name']);
253
  }
254
 
255
  if (isset($this->_post->sq->description)) {
256
  $markup['headline'] = $this->truncate($this->_post->sq->description, 0, $this->_post->sq->jsonld_description_maxlength);
257
+ $markup['headline'] = str_replace('&#034;', '"', $markup['headline']);
258
  }
259
  $markup['mainEntityOfPage'] = array(
260
  '@type' => 'WebPage',
351
 
352
  if (isset($this->_post->sq->title)) {
353
  $markup['name'] = $this->truncate($this->_post->sq->title, 0, $this->_post->sq->jsonld_title_maxlength);
354
+ $markup['name'] = str_replace('"', '\"', $markup['name']);
355
  }
356
 
357
  if (isset($this->_post->sq->description)) {
358
  $markup['headline'] = $this->truncate($this->_post->sq->description, 0, $this->_post->sq->jsonld_description_maxlength);
359
+ $markup['headline'] = str_replace('&#034;', '"', $markup['headline']);
360
  }
361
  $markup['mainEntityOfPage'] = array(
362
  '@type' => 'WebPage',
451
  $markup['@id'] = $this->getAuthor('user_url');
452
  $markup['url'] = $this->getAuthor('user_url');
453
  $markup['name'] = $this->getAuthor('display_name');
454
+ $markup['name'] = str_replace('&#034;', '"', $markup['name']);
455
 
456
  //add current markup
457
  $this->set_data($markup);
462
 
463
  if (isset($this->_post->sq->title)) {
464
  $markup['name'] = $this->truncate($this->_post->sq->title, 0, $this->_post->sq->jsonld_title_maxlength);
465
+ $markup['name'] = str_replace('"', '\"', $markup['name']);
466
  }
467
 
468
  if (isset($this->_post->sq->description)) {
469
  $markup['headline'] = $this->truncate($this->_post->sq->description, 0, $this->_post->sq->jsonld_description_maxlength);
470
+ $markup['headline'] = str_replace('&#034;', '"', $markup['headline']);
471
  }
472
  $markup['mainEntityOfPage'] = array(
473
  '@type' => 'WebPage',
632
  }
633
  }
634
  }
 
635
  if ($this->_post->post_type <> 'home') {
636
  ////////////////////// Current post
637
  $crumbs[] = array(
648
  '@type' => 'ListItem',
649
  'position' => $key + 1,
650
  'item' => array(
651
+ 'name' => str_replace('&#034;', '"', $crumb[0]),
652
  '@id' => $crumb[1]
653
  ),
654
  );
656
  }
657
  }
658
  }
659
+
660
  $this->set_data($markup);
661
 
662
  }
models/services/OpenGraph.php CHANGED
@@ -11,7 +11,7 @@ class SQ_Models_Services_OpenGraph extends SQ_Models_Abstract_Seo {
11
  return;
12
  }
13
 
14
- add_filter('locale', array($this, 'setLocale'));
15
  add_filter('sq_html_prefix', array($this, 'addOGPrefix'));
16
 
17
  add_filter('sq_open_graph', array($this, 'generateOpenGraph'));
@@ -78,7 +78,7 @@ class SQ_Models_Services_OpenGraph extends SQ_Models_Abstract_Seo {
78
  }
79
 
80
  $og['og:site_name'] = get_bloginfo('title');
81
- $og['og:locale'] = get_locale();
82
 
83
  if ($this->_post->socials->fbadminapp <> '') {
84
  $og['fb:app_id'] = $this->_post->socials->fbadminapp;
@@ -235,10 +235,16 @@ class SQ_Models_Services_OpenGraph extends SQ_Models_Abstract_Seo {
235
  }
236
 
237
  public function setLocale($locale) {
 
 
 
 
238
  if (function_exists('wpml_get_language_information') && (int)$this->_post->ID > 0) {
239
  if ($language = wpml_get_language_information((int)$this->_post->ID)) {
240
  if (!is_wp_error($language) && isset($language['locale'])) {
241
- $locale = $language['locale'];
 
 
242
  }
243
  }
244
  }
@@ -246,6 +252,79 @@ class SQ_Models_Services_OpenGraph extends SQ_Models_Abstract_Seo {
246
  return $locale;
247
  }
248
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  public function packOpenGraph($og = array()) {
250
  if (!empty($og)) {
251
  foreach ($og as $key => &$value) {
11
  return;
12
  }
13
 
14
+ add_filter('sq_locale', array($this, 'setLocale'));
15
  add_filter('sq_html_prefix', array($this, 'addOGPrefix'));
16
 
17
  add_filter('sq_open_graph', array($this, 'generateOpenGraph'));
78
  }
79
 
80
  $og['og:site_name'] = get_bloginfo('title');
81
+ $og['og:locale'] = $this->get_locale();
82
 
83
  if ($this->_post->socials->fbadminapp <> '') {
84
  $og['fb:app_id'] = $this->_post->socials->fbadminapp;
235
  }
236
 
237
  public function setLocale($locale) {
238
+ //set locale from Squirrly > Settings > Social Media > Locale
239
+ $locale = SQ_Classes_Helpers_Tools::getOption('sq_og_locale');
240
+
241
+ //if WPML is installed, get the local language
242
  if (function_exists('wpml_get_language_information') && (int)$this->_post->ID > 0) {
243
  if ($language = wpml_get_language_information((int)$this->_post->ID)) {
244
  if (!is_wp_error($language) && isset($language['locale'])) {
245
+ if($locale <> 'en') {
246
+ $locale = $language['locale'];
247
+ }
248
  }
249
  }
250
  }
252
  return $locale;
253
  }
254
 
255
+ /**
256
+ * Retrieves the current locale.
257
+ *
258
+ * If the locale is set, then it will filter the locale in the {@see 'locale'}
259
+ * filter hook and return the value.
260
+ *
261
+ * If the locale is not set already, then the WPLANG constant is used if it is
262
+ * defined. Then it is filtered through the {@see 'locale'} filter hook and
263
+ * the value for the locale global set and the locale is returned.
264
+ *
265
+ * The process to get the locale should only be done once, but the locale will
266
+ * always be filtered using the {@see 'locale'} hook.
267
+ *
268
+ * @since 1.5.0
269
+ *
270
+ * @global string $locale
271
+ * @global string $wp_local_package
272
+ *
273
+ * @return string The locale of the blog or from the {@see 'locale'} hook.
274
+ */
275
+ function get_locale() {
276
+ global $locale, $wp_local_package;
277
+
278
+ if ( isset( $locale ) ) {
279
+ /**
280
+ * Filters the locale ID of the WordPress installation.
281
+ *
282
+ * @since 1.5.0
283
+ *
284
+ * @param string $locale The locale ID.
285
+ */
286
+ return apply_filters( 'sq_locale', $locale );
287
+ }
288
+
289
+ if ( isset( $wp_local_package ) ) {
290
+ $locale = $wp_local_package;
291
+ }
292
+
293
+ // WPLANG was defined in wp-config.
294
+ if ( defined( 'WPLANG' ) ) {
295
+ $locale = WPLANG;
296
+ }
297
+
298
+ // If multisite, check options.
299
+ if ( is_multisite() ) {
300
+ // Don't check blog option when installing.
301
+ if ( wp_installing() || ( false === $ms_locale = get_option( 'WPLANG' ) ) ) {
302
+ $ms_locale = get_site_option( 'WPLANG' );
303
+ }
304
+
305
+ if ( $ms_locale !== false ) {
306
+ $locale = $ms_locale;
307
+ }
308
+ } else {
309
+ $db_locale = get_option( 'WPLANG' );
310
+ if ( $db_locale !== false ) {
311
+ $locale = $db_locale;
312
+ }
313
+ }
314
+
315
+ if ( empty( $locale ) ) {
316
+ $locale = 'en_US';
317
+ }
318
+
319
+ /** This filter is documented in wp-includes/l10n.php */
320
+ return apply_filters( 'sq_locale', $locale );
321
+ }
322
+
323
+ /**
324
+ * Pack the OpenGraph to meta format
325
+ * @param array $og
326
+ * @return bool|string
327
+ */
328
  public function packOpenGraph($og = array()) {
329
  if (!empty($og)) {
330
  foreach ($og as $key => &$value) {
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: cifi, calinvingan, florinmuresan, nagy.sorel
3
  Tags: seo, wordpress seo, seo plugin, seo optimization, seo content, seo meta, open graph, e-commerce, plugins, content, marketing, ecommerce, keyword research, content seo, yoast, all in one seo, search engine optimization, XML sitemap for google, multisite SEO, squirrly, meta title, meta description, favicon, mobile, canonical, seo correction, seo title, twitter, woocommerce, feeds, social media, blogging, google-analytics, tracking, best seo tools audit website, content audit tool, ecommerce seo strategy, marketing research tools, research tools for writers, seo audit tool, SEO keyword research tool,duplicate removal tool, ecommerce SEO, facebook open graph wordpress, google keyword planner alternative, Google ranking, how to install facebook pixel on wordpress, JSON-LD structure, Live Assistant, meta duplicate removal, open graph generator, pinterest rich pin validator, related links
4
  Requires at least: 4.2
5
  Requires PHP: 5.3
6
- Tested up to: 5.1
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  Donate link: https://plugin.squirrly.co/wordpress/seo
@@ -21,7 +21,7 @@ While Assistant Technology like: Intelligent Parking Assist helps you park your
21
 
22
  More than that, some of the Assisted SEO features we have on-board actually help you find spots on search engines, where you’ll easily park your pages and nobody will bother you (because the competition will be low, even though these spots could earn you many organic visits).
23
 
24
- <a title=“WordPress SEO Plugin” href="https://plugin.squirrly.co/wordpress/seo“>Facts and Testimonials for this Plugin for WordPress SEO can be found here</a>.
25
 
26
  Could you ever dream your way to the Top positions on search engines? Let’s see how this WordPress plugin will help:
27
 
@@ -504,6 +504,73 @@ Type a keyword to the right of the screen and start using Squirrly Seo. Enjoy!
504
  Squirrly SEO 9.1.00 it's a big update. We've re-designed the UX and added many new features. If you don't want to change the current experience you have with Squirrly you can remain on the current stable version of Squirrly SEO.
505
 
506
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
507
  = 9.1.10 - 04/19/2019 =
508
  * Update - Ranking details in Squirrly SEO Rankings
509
  * Update - Messages in Focus Pages when the page is not optimized for a keyword
@@ -1269,6 +1336,14 @@ yoast alternative
1269
  yoast seo alternative
1270
  all in one seo alternative
1271
  seo pressor alternative
 
 
 
 
 
 
 
 
1272
 
1273
  * Changelog Archive: <a href="https://plugin.squirrly.co/squirrly-seo-changelog/">https://plugin.squirrly.co/squirrly-seo-changelog/</a>
1274
 
3
  Tags: seo, wordpress seo, seo plugin, seo optimization, seo content, seo meta, open graph, e-commerce, plugins, content, marketing, ecommerce, keyword research, content seo, yoast, all in one seo, search engine optimization, XML sitemap for google, multisite SEO, squirrly, meta title, meta description, favicon, mobile, canonical, seo correction, seo title, twitter, woocommerce, feeds, social media, blogging, google-analytics, tracking, best seo tools audit website, content audit tool, ecommerce seo strategy, marketing research tools, research tools for writers, seo audit tool, SEO keyword research tool,duplicate removal tool, ecommerce SEO, facebook open graph wordpress, google keyword planner alternative, Google ranking, how to install facebook pixel on wordpress, JSON-LD structure, Live Assistant, meta duplicate removal, open graph generator, pinterest rich pin validator, related links
4
  Requires at least: 4.2
5
  Requires PHP: 5.3
6
+ Tested up to: 5.2
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  Donate link: https://plugin.squirrly.co/wordpress/seo
21
 
22
  More than that, some of the Assisted SEO features we have on-board actually help you find spots on search engines, where you’ll easily park your pages and nobody will bother you (because the competition will be low, even though these spots could earn you many organic visits).
23
 
24
+ <a href="https://plugin.squirrly.co/wordpress/seo">Facts and Testimonials for this Plugin for WordPress SEO can be found here</a>.
25
 
26
  Could you ever dream your way to the Top positions on search engines? Let’s see how this WordPress plugin will help:
27
 
504
  Squirrly SEO 9.1.00 it's a big update. We've re-designed the UX and added many new features. If you don't want to change the current experience you have with Squirrly you can remain on the current stable version of Squirrly SEO.
505
 
506
  == Changelog ==
507
+ = 9.1.19 - 07/08/2019 =
508
+ * Update - Added refresh button for Squirrly SEO Snippet on ajax error
509
+ * Fix - Canonical link verification on Focus Pages
510
+ * Fix - PHP count() warning when the array is empty
511
+ * Fix - The Inner Links count when the links are not absolute
512
+
513
+ = 9.1.18 - 06/19/2019 =
514
+ * Update - Live Assistant metrics and learning
515
+ * Fix - Fixed Add to Briefcase in Google Search Console Keywords Sync
516
+ * Fix - Fixed Squirrly Feedback button
517
+ * Fix - Update Visibility score for draft pages
518
+ * Fix - Responsive table in Rankings for smaller devices
519
+
520
+ = 9.1.17 - 06/05/2019 =
521
+ * Update - Added the Focus Page link in the Assistant Tasks side
522
+ * Fix - Fixed the Show All button in Briefcase
523
+ * Fix - Show Indexed in Squirrly Briefcase when a keyword is indexed in Serp Checker
524
+ * SEO Update - Tested and Compatible with WordPress 5.2.1
525
+
526
+
527
+ = 9.1.16 - 05/30/2019 =
528
+ * Update - Added option for BreadCrumbsList in Json-LD
529
+ * Update - Added option to clear the Json-LD code before loading to avoid duplicates
530
+ * Fix - Loading Media Library in Bulk SEO for Open Graph and Twitter Card
531
+ * Fix - Loading Media Library in Json-LD page
532
+
533
+ = 9.1.15 - 05/21/2019 =
534
+ * Update - Limit the results in Bulk SEO to 50 to avoid reaching the Memory Limit
535
+ * Fix - Facebook Local language fix when WPML is installed
536
+ * Fix - Double check if the connection with API is security and call it with HTTPS
537
+
538
+ = 9.1.14 - 05/17/2019 =
539
+ * Update - Increased the timeout for Keyword Research process
540
+ * Update - Compatibility with the latest versions of Autoptimize, W3 Total Cache, WP Super Cache
541
+ * Fix - Json-LD set to auto by default and prevent switching to custom
542
+ * Fix - Remove the javascript error in squirrly.js when wp is undefined
543
+ * Fix - Remove the trail slash in Bulk SEO pagination
544
+ * Fix - Remove the page from post title in Bulk SEO when paginate
545
+ * Fix - Increased the number of posts shown in Bulk SEO on one page
546
+
547
+ = 9.1.13 - 05/14/2019 =
548
+ * Update - Remove the CSS and JS from other plugin when Squirrly SEO Settings are loaded to prevent modal box issues
549
+ * Fix - Keyword Research to show the timeout message and not the error message.
550
+ * Fix - Prevent Breadcrumbs showing Auto Draft title when custom Json-LD is saved
551
+ * Fix - Json-LD to validate the apostrophe in title and description
552
+ * Fix - Stop reloading the Snippet in frontend on relogin or when no data exists for the page
553
+
554
+ = 9.1.12 - 05/07/2019 =
555
+ * Update - Focus Pages Keyword Competition, Search Volume, Trend
556
+ * Fix - Custom SEO for Blog Post Page set in Settings > Readings
557
+ * Fix - Squirrly Live Assistant Gutenberg Blocks identification
558
+
559
+ = 9.1.11 - 04/24/2019 =
560
+ * Update - Added the 14 days journey links to the completed days
561
+ * Update - Check the SEO with API crawler to prevent local SSL errors
562
+ * Update - Set DevKit menu in Squirrly SEO
563
+ * Update - Json-LD task is complete only when the relevant data is added
564
+ * Fix - Don't let to get to second step if the keyword is not set in the Keyword Research Tool
565
+ * Fix - Keyword Research Tool column sort by competition and search volume
566
+ * Fix - Focus Page audit error catch and message
567
+ * Fix - Changed the remote timeout to 5 sec
568
+ * Fix - Removed the error from API access
569
+ * Fix - Show loading icon on the submit button when a form is submitted
570
+ * Fix - Don't show Squirrly in admin toolbar when user is in network panel for wp multisite
571
+ * Fix - Go to login page in case the account is disconnected from API
572
+ * Fix - Remove the Squirrly 2018 exclude post type filter in frontend SEO
573
+
574
  = 9.1.10 - 04/19/2019 =
575
  * Update - Ranking details in Squirrly SEO Rankings
576
  * Update - Messages in Focus Pages when the page is not optimized for a keyword
1336
  yoast seo alternative
1337
  all in one seo alternative
1338
  seo pressor alternative
1339
+ wordpress seo alternative
1340
+ wordpress seo
1341
+ seo optimization
1342
+ seo content
1343
+ nofollow external links
1344
+ nofollow links plugin
1345
+ structured data plugin
1346
+ google structured data
1347
 
1348
  * Changelog Archive: <a href="https://plugin.squirrly.co/squirrly-seo-changelog/">https://plugin.squirrly.co/squirrly-seo-changelog/</a>
1349
 
squirrly.php CHANGED
@@ -7,12 +7,12 @@
7
  Plugin URI: https://www.squirrly.co
8
  Description: SEO By Squirrly is for the NON-SEO experts. Get Excellent Seo with Better Content, Ranking and Analytics. For Both Humans and Search Bots.<BR> <a href="http://my.squirrly.co/user" target="_blank"><strong>Check your profile</strong></a>
9
  Author: Squirrly SEO
10
- Version: 9.1.10
11
  Author URI: https://www.squirrly.co
12
  */
13
  if(!defined('SQ_VERSION')) {
14
  /* SET THE CURRENT VERSION ABOVE AND BELOW */
15
- define('SQ_VERSION', '9.1.10');
16
 
17
  // Call config files
18
  try {
7
  Plugin URI: https://www.squirrly.co
8
  Description: SEO By Squirrly is for the NON-SEO experts. Get Excellent Seo with Better Content, Ranking and Analytics. For Both Humans and Search Bots.<BR> <a href="http://my.squirrly.co/user" target="_blank"><strong>Check your profile</strong></a>
9
  Author: Squirrly SEO
10
+ Version: 9.1.19
11
  Author URI: https://www.squirrly.co
12
  */
13
  if(!defined('SQ_VERSION')) {
14
  /* SET THE CURRENT VERSION ABOVE AND BELOW */
15
+ define('SQ_VERSION', '9.1.19');
16
 
17
  // Call config files
18
  try {
view/Audits/Audits.php CHANGED
@@ -106,7 +106,7 @@
106
  <div class="card col-sm-12 border-0 m-0 px-0">
107
  <div class="card-body">
108
  <h4 class="card-title"><?php _e('Audits Score', _SQ_PLUGIN_NAME_) ?></h4>
109
- <p class="card-subtitle my-1 text-warning"><?php echo sprintf(__('last %s audits', _SQ_PLUGIN_NAME_), count($view->audits)) ?></p>
110
  <div class="card-text mt-2 border">
111
  <?php
112
  if (!empty($view->audits)) {
@@ -178,7 +178,7 @@
178
  </td>
179
  <td><?php echo $audit->datetime ?></td>
180
  <td style="cursor: pointer" title="<?php echo join("\n", $tasks) ?>">
181
- <strong><?php echo count($audit->tasks) ?></strong> <?php _e('tasks found', _SQ_PLUGIN_NAME_) ?>
182
  </td>
183
 
184
  </tr>
106
  <div class="card col-sm-12 border-0 m-0 px-0">
107
  <div class="card-body">
108
  <h4 class="card-title"><?php _e('Audits Score', _SQ_PLUGIN_NAME_) ?></h4>
109
+ <p class="card-subtitle my-1 text-warning"><?php echo sprintf(__('last %s audits', _SQ_PLUGIN_NAME_), count((array)$view->audits)) ?></p>
110
  <div class="card-text mt-2 border">
111
  <?php
112
  if (!empty($view->audits)) {
178
  </td>
179
  <td><?php echo $audit->datetime ?></td>
180
  <td style="cursor: pointer" title="<?php echo join("\n", $tasks) ?>">
181
+ <strong><?php echo count((array)$audit->tasks) ?></strong> <?php _e('tasks found', _SQ_PLUGIN_NAME_) ?>
182
  </td>
183
 
184
  </tr>
view/Blocks/FocusPages.php CHANGED
@@ -24,6 +24,8 @@
24
  foreach ($view->focuspages as $index => $focuspage) {
25
  $view->post = $focuspage->getWppost();
26
 
 
 
27
  if (strtotime($focuspage->audit_datetime)) {
28
  $audit_timestamp = strtotime($focuspage->audit_datetime) + ((int)get_option('gmt_offset') * 3600);
29
  $audit_timestamp = date(get_option('date_format') . ' ' . get_option('time_format'), $audit_timestamp);
24
  foreach ($view->focuspages as $index => $focuspage) {
25
  $view->post = $focuspage->getWppost();
26
 
27
+ if(!isset($view->post->url)) continue;
28
+
29
  if (strtotime($focuspage->audit_datetime)) {
30
  $audit_timestamp = strtotime($focuspage->audit_datetime) + ((int)get_option('gmt_offset') * 3600);
31
  $audit_timestamp = date(get_option('date_format') . ' ' . get_option('time_format'), $audit_timestamp);
view/Blocks/Jorney.php CHANGED
@@ -6,30 +6,49 @@
6
  <div class="card col-sm-12 m-0 p-0 border-0 ">
7
 
8
  <div class="col-sm-12 m-0 p-3 text-center">
9
- <h2 class="col-sm-12 card-title py-3 "><?php _e("Your 14 Days Journey To Better Ranking", _SQ_PLUGIN_NAME_); ?></h2>
 
 
 
 
10
 
11
  <ul class="stepper horizontal horizontal-fix focused" id="horizontal-stepper-fix">
12
  <?php for ($i = 1; $i <= 14; $i++) { ?>
13
  <li class="step <?php echo(($view->days >= $i) ? 'completed' : '') ?>">
14
  <div class="step-title waves-effect waves-dark">
15
- <?php echo(($view->days >= $i) ? '<i class="fa fa-check-circle" style="color: darkcyan;"></i>' : '<i class="fa fa-circle-o" style="color: darkgrey;"></i>') ?>
16
- <div><?php echo __('Day', _SQ_PLUGIN_NAME_) . ' ' . $i ?></div>
17
  </div>
18
  </li>
19
  <?php } ?>
20
  </ul>
21
 
22
- <a href="https://howto.squirrly.co/wordpress-seo/journey-to-better-ranking-day-<?php echo $view->days?>/" target="_blank" class="btn btn-primary m-2 py-2 px-4" style="font-size: 20px;"><?php echo __('Day', _SQ_PLUGIN_NAME_) . ' ' . $view->days . ': ' . __("Open the SEO recipe for today", _SQ_PLUGIN_NAME_); ?></a>
23
- <?php
24
- switch ($view->days){
25
- case 1:
26
- ?><a href="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_focuspages','addpage') ?>" target="_blank" class="btn btn-success m-2 py-2 px-4" style="font-size: 20px;"><?php echo __("Add a page in Focus Pages", _SQ_PLUGIN_NAME_); ?></a><?php
27
- break;
28
- case 2:
29
- ?><a href="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_research','research') ?>" target="_blank" class="btn btn-success m-2 py-2 px-4" style="font-size: 20px;"><?php echo __("Do Keyword Research", _SQ_PLUGIN_NAME_); ?></a><?php
30
- break;
31
- }
32
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  </div>
34
 
35
  </div>
@@ -41,5 +60,4 @@
41
 
42
  </div>
43
 
44
- </div>
45
- <?php return true; ?>
6
  <div class="card col-sm-12 m-0 p-0 border-0 ">
7
 
8
  <div class="col-sm-12 m-0 p-3 text-center">
9
+ <?php if ($view->days > 14) { ?>
10
+ <h5 class="col-sm-12 card-title py-3 "><?php _e("Congratulations! You've completed the 14 Days Journey To Better Ranking", _SQ_PLUGIN_NAME_); ?></h5>
11
+ <?php } else { ?>
12
+ <h2 class="col-sm-12 card-title py-3 "><?php _e("Your 14 Days Journey To Better Ranking", _SQ_PLUGIN_NAME_); ?></h2>
13
+ <?php } ?>
14
 
15
  <ul class="stepper horizontal horizontal-fix focused" id="horizontal-stepper-fix">
16
  <?php for ($i = 1; $i <= 14; $i++) { ?>
17
  <li class="step <?php echo(($view->days >= $i) ? 'completed' : '') ?>">
18
  <div class="step-title waves-effect waves-dark">
19
+ <?php echo(($view->days >= $i) ? '<a href="https://howto.squirrly.co/wordpress-seo/journey-to-better-ranking-day-' . $i . '/" target="_blank"><i class="fa fa-check-circle" style="color: darkcyan;"></i></a>' : '<i class="fa fa-circle-o" style="color: darkgrey;"></i>') ?>
20
+ <div><?php echo(($view->days >= $i) ? '<a href="https://howto.squirrly.co/wordpress-seo/journey-to-better-ranking-day-' . $i . '/" target="_blank">' . __('Day', _SQ_PLUGIN_NAME_) . ' ' . $i . '</a>' : __('Day', _SQ_PLUGIN_NAME_) . ' ' . $i) ?></div>
21
  </div>
22
  </li>
23
  <?php } ?>
24
  </ul>
25
 
26
+ <?php if ($view->days > 14) { ?>
27
+ <em class="text-black-50"><?php echo __("If you missed a day, click on it and read the SEO recipe for it.", _SQ_PLUGIN_NAME_); ?></em>
28
+ <div class="small text-center my-2">
29
+ <form method="post" class="p-0 m-0">
30
+ <?php wp_nonce_field('sq_journey_close', 'sq_nonce'); ?>
31
+ <input type="hidden" name="action" value="sq_journey_close"/>
32
+ <button type="submit" class="btn btn-sm text-info btn-link bg-transparent p-0 m-0">
33
+ <?php echo __("I'm all done. Hide this block.", _SQ_PLUGIN_NAME_) ?>
34
+ </button>
35
+ </form>
36
+ </div>
37
+ <?php } else { ?>
38
+ <a href="https://howto.squirrly.co/wordpress-seo/journey-to-better-ranking-day-<?php echo $view->days ?>/" target="_blank" class="btn btn-primary m-2 py-2 px-4" style="font-size: 20px;"><?php echo __('Day', _SQ_PLUGIN_NAME_) . ' ' . $view->days . ': ' . __("Open the SEO recipe for today", _SQ_PLUGIN_NAME_); ?></a>
39
+ <?php
40
+ switch ($view->days) {
41
+ case 1:
42
+ ?>
43
+ <a href="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_focuspages', 'addpage') ?>" target="_blank" class="btn btn-success m-2 py-2 px-4" style="font-size: 20px;"><?php echo __("Add a page in Focus Pages", _SQ_PLUGIN_NAME_); ?></a><?php
44
+ break;
45
+ case 2:
46
+ ?>
47
+ <a href="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_research', 'research') ?>" target="_blank" class="btn btn-success m-2 py-2 px-4" style="font-size: 20px;"><?php echo __("Do Keyword Research", _SQ_PLUGIN_NAME_); ?></a><?php
48
+ break;
49
+ }
50
+ ?>
51
+ <?php } ?>
52
  </div>
53
 
54
  </div>
60
 
61
  </div>
62
 
63
+ </div>
 
view/Blocks/KRFound.php CHANGED
@@ -35,51 +35,56 @@
35
  </thead>
36
  <tbody>
37
  <?php
38
- foreach ($view->keywords as $key => $row) {
39
- $research = '';
40
- $keyword_labels = array();
 
41
 
42
- if ($row->data <> '') {
43
- $research = json_decode($row->data);
 
 
 
 
44
 
45
- if (isset($research->sv->absolute) && is_numeric($research->sv->absolute)) {
46
- $research->sv->absolute = number_format((int)$research->sv->absolute, 0, '', '.');
 
47
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  }
49
- ?>
50
- <tr id="sq_row_<?php echo $row->id ?>">
51
- <td style="width: 280px;">
52
- <span style="display: block; clear: left; float: left;"><?php echo $row->keyword ?></span>
53
- </td>
54
- <td>
55
- <span style="display: block; clear: left; float: left;"><?php echo $row->country ?></span>
56
- </td>
57
- <td style="width: 150px;">
58
- <?php if (isset($research->sc)) { ?>
59
- <span style="color: <?php echo $research->sc->color ?>" title="<?php echo __('Competition', _SQ_PLUGIN_NAME_) ?>"><?php echo($research->sc->text <> '' ? $research->sc->text : __('-', _SQ_PLUGIN_NAME_)) ?></span>
60
- <?php } ?>
61
- </td>
62
- <td style="width: 80px;">
63
- <?php if (isset($research->sv)) { ?>
64
- <span style="color: <?php echo $research->sv->color ?>" title="<?php echo __('SEO Search Volume', _SQ_PLUGIN_NAME_) ?>"><?php echo($research->sv->absolute <> '' ? $research->sv->absolute : __('-', _SQ_PLUGIN_NAME_)) ?></span>
65
- <?php } ?>
66
- </td>
67
- <td style="width: 130px;">
68
- <?php if (isset($research->tw)) { ?>
69
- <span style="color: <?php echo $research->tw->color ?>" title="<?php echo __('Recent discussions', _SQ_PLUGIN_NAME_) ?>"><?php echo($research->tw->text <> '' ? $research->tw->text : __('-', _SQ_PLUGIN_NAME_)) ?></span>
70
- <?php } ?>
71
- </td>
72
- <td style="width: 120px;">
73
- <?php if (isset($research->td)) { ?>
74
- <span style="color: <?php echo $research->td->color ?>" title="<?php echo __('Trending', _SQ_PLUGIN_NAME_) ?>"><?php echo($research->td->text <> '' ? $research->td->text : __('-', _SQ_PLUGIN_NAME_)) ?></span>
75
- <?php } ?>
76
- </td>
77
- <td>
78
- <button class="btn btn-info btn-sm sq_research_selectit" data-post="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_assistant') ?>" data-keyword="<?php echo htmlspecialchars(addslashes($row->keyword)) ?>"><?php echo __('Use Keyword', _SQ_PLUGIN_NAME_) ?></button>
79
- </td>
80
- </tr>
81
- <?php
82
- }
83
  ?>
84
 
85
  </tbody>
35
  </thead>
36
  <tbody>
37
  <?php
38
+ if (!empty($view->keywords))
39
+ foreach ($view->keywords as $key => $row) {
40
+ $research = '';
41
+ $keyword_labels = array();
42
 
43
+ if(!isset($row->id)){
44
+ continue;
45
+ }
46
+
47
+ if (isset($row->data) && $row->data <> '') {
48
+ $research = json_decode($row->data);
49
 
50
+ if (isset($research->sv->absolute) && is_numeric($research->sv->absolute)) {
51
+ $research->sv->absolute = number_format((int)$research->sv->absolute, 0, '', '.');
52
+ }
53
  }
54
+ ?>
55
+ <tr id="sq_row_<?php echo $row->id ?>">
56
+ <td style="width: 280px;">
57
+ <span style="display: block; clear: left; float: left;"><?php echo $row->keyword ?></span>
58
+ </td>
59
+ <td>
60
+ <span style="display: block; clear: left; float: left;"><?php echo $row->country ?></span>
61
+ </td>
62
+ <td style="width: 150px;">
63
+ <?php if (isset($research->sc)) { ?>
64
+ <span style="color: <?php echo $research->sc->color ?>" title="<?php echo __('Competition', _SQ_PLUGIN_NAME_) ?>"><?php echo($research->sc->text <> '' ? $research->sc->text : __('-', _SQ_PLUGIN_NAME_)) ?></span>
65
+ <?php } ?>
66
+ </td>
67
+ <td style="width: 80px;">
68
+ <?php if (isset($research->sv)) { ?>
69
+ <span style="color: <?php echo $research->sv->color ?>" title="<?php echo __('SEO Search Volume', _SQ_PLUGIN_NAME_) ?>"><?php echo($research->sv->absolute <> '' ? $research->sv->absolute : __('-', _SQ_PLUGIN_NAME_)) ?></span>
70
+ <?php } ?>
71
+ </td>
72
+ <td style="width: 130px;">
73
+ <?php if (isset($research->tw)) { ?>
74
+ <span style="color: <?php echo $research->tw->color ?>" title="<?php echo __('Recent discussions', _SQ_PLUGIN_NAME_) ?>"><?php echo($research->tw->text <> '' ? $research->tw->text : __('-', _SQ_PLUGIN_NAME_)) ?></span>
75
+ <?php } ?>
76
+ </td>
77
+ <td style="width: 120px;">
78
+ <?php if (isset($research->td)) { ?>
79
+ <span style="color: <?php echo $research->td->color ?>" title="<?php echo __('Trending', _SQ_PLUGIN_NAME_) ?>"><?php echo($research->td->text <> '' ? $research->td->text : __('-', _SQ_PLUGIN_NAME_)) ?></span>
80
+ <?php } ?>
81
+ </td>
82
+ <td>
83
+ <button class="btn btn-info btn-sm sq_research_selectit" data-post="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_assistant') ?>" data-keyword="<?php echo htmlspecialchars(addslashes($row->keyword)) ?>"><?php echo __('Use Keyword', _SQ_PLUGIN_NAME_) ?></button>
84
+ </td>
85
+ </tr>
86
+ <?php
87
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  ?>
89
 
90
  </tbody>
view/Blocks/KRHistory.php CHANGED
@@ -1,10 +1,10 @@
1
  <div id="sq_kr" class="mt-5">
2
  <div class="col-sm-12 my-4">
3
- <div class="col-sm-7 row text-left m-0 p-0">
4
- <div class="sq_icons sq_kr_icon m-2"></div>
5
- <h3 class="card-title"><?php _e('Keyword Research', _SQ_PLUGIN_NAME_); ?>:</h3>
6
- <a href="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_research','history') ?>" class="btn btn-primary m-2" style="max-height: 35px;"><?php _e('See Research History', _SQ_PLUGIN_NAME_) ?></a>
7
- </div>
8
  </div>
9
 
10
  <?php if (isset($view->kr) && !empty($view->kr)) { ?>
@@ -20,16 +20,20 @@
20
  </thead>
21
  <tbody>
22
  <?php
23
- foreach ($view->kr as $key => $kr) {
24
- ?>
25
- <tr>
26
- <td class="sq_kr_keyword" title="<?php echo $kr->keyword ?>"><?php echo $kr->keyword ?></td>
27
- <td><?php echo $kr->country ?></td>
28
- <td><?php echo date(get_option('date_format'), strtotime($kr->datetime)) ?></td>
29
- </tr>
30
- <?php
31
- if($key > 20) break;
32
- } ?>
 
 
 
 
33
  </tbody>
34
  </table>
35
  </div>
@@ -39,7 +43,7 @@
39
  <h5 class="text-center"><?php echo __('See your research results and compare them over time'); ?>:</h5>
40
  <div class="row col-sm-12 my-4">
41
  <div class="col-sm-4 my-0 mx-auto justify-content-center text-center">
42
- <h6 onclick="location.href ='<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_research','research') ?>'" class="text-black-50 text-right">
43
  <div style="float: right; cursor: pointer"><?php echo __('Do Keyword Research'); ?></div>
44
  <i class="sq_icons_small sq_kr_icon" style="float: right; width: 20px; cursor: pointer"></i>
45
  </h6>
1
  <div id="sq_kr" class="mt-5">
2
  <div class="col-sm-12 my-4">
3
+ <div class="col-sm-7 row text-left m-0 p-0">
4
+ <div class="sq_icons sq_kr_icon m-2"></div>
5
+ <h3 class="card-title"><?php _e('Keyword Research', _SQ_PLUGIN_NAME_); ?>:</h3>
6
+ <a href="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_research', 'history') ?>" class="btn btn-primary m-2" style="max-height: 35px;"><?php _e('See Research History', _SQ_PLUGIN_NAME_) ?></a>
7
+ </div>
8
  </div>
9
 
10
  <?php if (isset($view->kr) && !empty($view->kr)) { ?>
20
  </thead>
21
  <tbody>
22
  <?php
23
+ if (!empty($view->kr))
24
+ foreach ($view->kr as $key => $kr) {
25
+ if (!isset($kr->keyword)) {
26
+ continue;
27
+ }
28
+ ?>
29
+ <tr>
30
+ <td class="sq_kr_keyword" title="<?php echo $kr->keyword ?>"><?php echo $kr->keyword ?></td>
31
+ <td><?php echo $kr->country ?></td>
32
+ <td><?php echo date(get_option('date_format'), strtotime($kr->datetime)) ?></td>
33
+ </tr>
34
+ <?php
35
+ if ($key > 20) break;
36
+ } ?>
37
  </tbody>
38
  </table>
39
  </div>
43
  <h5 class="text-center"><?php echo __('See your research results and compare them over time'); ?>:</h5>
44
  <div class="row col-sm-12 my-4">
45
  <div class="col-sm-4 my-0 mx-auto justify-content-center text-center">
46
+ <h6 onclick="location.href ='<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_research', 'research') ?>'" class="text-black-50 text-right">
47
  <div style="float: right; cursor: pointer"><?php echo __('Do Keyword Research'); ?></div>
48
  <i class="sq_icons_small sq_kr_icon" style="float: right; width: 20px; cursor: pointer"></i>
49
  </h6>
view/Blocks/Ranks.php CHANGED
@@ -95,7 +95,7 @@
95
  <div class="card ml-0 py-4 px-0 bg-light col-sm-6">
96
  <div class="card-body">
97
  <h4 class="card-title"><?php _e('Keywords', _SQ_PLUGIN_NAME_) ?></h4>
98
- <p class="card-subtitle my-1 text-warning"><?php echo count($view->ranks) . ' ' . __('keywords found', _SQ_PLUGIN_NAME_) ?></p>
99
  <div class="card-text" style="max-height: 290px;overflow: hidden; overflow-y: auto;">
100
  <table class="table mt-2">
101
  <tbody> <?php
95
  <div class="card ml-0 py-4 px-0 bg-light col-sm-6">
96
  <div class="card-body">
97
  <h4 class="card-title"><?php _e('Keywords', _SQ_PLUGIN_NAME_) ?></h4>
98
+ <p class="card-subtitle my-1 text-warning"><?php echo count((array)$view->ranks) . ' ' . __('keywords found', _SQ_PLUGIN_NAME_) ?></p>
99
  <div class="card-text" style="max-height: 290px;overflow: hidden; overflow-y: auto;">
100
  <table class="table mt-2">
101
  <tbody> <?php
view/Blocks/Snippet.php CHANGED
@@ -409,8 +409,8 @@ if (SQ_Classes_Helpers_Tools::getOption('sq_api') <> '') {
409
  <div class="sq-small sq-text-black-50 sq-my-1"></div>
410
  </div>
411
  <div class="sq-col-sm-8 sq-p-0 sq-input-group">
412
- <select class="sq_jsonld_code_type sq-form-control sq-bg-input sq-mb-1">
413
- <option <?php echo(($view->post->sq_adm->jsonld == '') ? 'selected="selected"' : '') ?> value=""><?php echo __('(Auto)', _SQ_PLUGIN_NAME_) ?></option>
414
  <option <?php echo(($view->post->sq_adm->jsonld <> '') ? 'selected="selected"' : '') ?> value="custom"><?php echo __('Custom Code', _SQ_PLUGIN_NAME_) ?></option>
415
  </select>
416
  </div>
409
  <div class="sq-small sq-text-black-50 sq-my-1"></div>
410
  </div>
411
  <div class="sq-col-sm-8 sq-p-0 sq-input-group">
412
+ <select class="sq_jsonld_code_type sq-form-control sq-bg-input sq-mb-1" name="sq_jsonld_code_type">
413
+ <option <?php echo(($view->post->sq_adm->jsonld == '') ? 'selected="selected"' : '') ?> value="auto"><?php echo __('(Auto)', _SQ_PLUGIN_NAME_) ?></option>
414
  <option <?php echo(($view->post->sq_adm->jsonld <> '') ? 'selected="selected"' : '') ?> value="custom"><?php echo __('Custom Code', _SQ_PLUGIN_NAME_) ?></option>
415
  </select>
416
  </div>
view/Blocks/Stats.php CHANGED
@@ -1,26 +1,28 @@
1
  <?php
2
- if (count($view->stats) == 6) { ?>
3
- <?php
4
- $col = 0;
5
- foreach ($view->stats as $name => $stat) {
6
- if ($col % 3 == 0) {
7
- echo '<div id="sq_stats" class="row my-1 py-2">';
8
- }
9
- $col++;
10
- ?>
11
- <div class="col-sm bg-light border rounded m-1 p-4">
12
- <div class="sq_stats_text"><?php echo $stat['text'] ?></div>
13
- <i class="sq_stats_icon sq_stats_<?php echo $name ?>"></i>
14
- <div class="sq_stats_value"><?php echo $stat['value'] ?></div>
15
- <div class="col-sm-12 text-right" style="margin-top: -17px;"><?php echo(isset($stat['link']) ? '<a href="' . $stat['link'] . '" >' . $stat['linktext'] . '</a>' : '') ?></div>
16
- </div>
17
  <?php
18
- if ($col % 3 == 0) {
19
- echo '</div>';
20
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
 
23
- } ?>
24
 
25
- <?php
 
26
  }
1
  <?php
2
+ if(isset($view->stats)) {
3
+ if (count((array)$view->stats) == 6) { ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  <?php
5
+ $col = 0;
6
+ foreach ($view->stats as $name => $stat) {
7
+ if ($col % 3 == 0) {
8
+ echo '<div id="sq_stats" class="row my-1 py-2">';
9
+ }
10
+ $col++;
11
+ ?>
12
+ <div class="col-sm bg-light border rounded m-1 p-4">
13
+ <div class="sq_stats_text"><?php echo $stat['text'] ?></div>
14
+ <i class="sq_stats_icon sq_stats_<?php echo $name ?>"></i>
15
+ <div class="sq_stats_value"><?php echo $stat['value'] ?></div>
16
+ <div class="col-sm-12 text-right" style="margin-top: -17px;"><?php echo(isset($stat['link']) ? '<a href="' . $stat['link'] . '" >' . $stat['linktext'] . '</a>' : '') ?></div>
17
+ </div>
18
+ <?php
19
+ if ($col % 3 == 0) {
20
+ echo '</div>';
21
+ }
22
 
23
 
24
+ } ?>
25
 
26
+ <?php
27
+ }
28
  }
view/Blocks/Support.php CHANGED
@@ -1,7 +1,8 @@
1
  <div id="sq_options" class="card col-sm-12 p-0 m-0 py-2 my-2 border-0">
2
  <ul class="p-0 m-0 mx-3">
3
  <li id="sq_options_dasboard">
4
- <?php if (current_user_can('manage_options')) { ?>
 
5
  <span class="sq_push" style="display:none;">1</span>
6
  <span class="sq_text"><a href="<?php echo SQ_Classes_RemoteController::getMySquirrlyLink('dashboard') ?>" title="<?php _e('Go to Profile', _SQ_PLUGIN_NAME_) ?>" target="_blank"><span><?php _e('Profile', _SQ_PLUGIN_NAME_) ?></span></a></span>
7
  <a href="<?php echo SQ_Classes_RemoteController::getMySquirrlyLink('dashboard') ?>" title="<?php _e('Profile', _SQ_PLUGIN_NAME_) ?>" target="_blank"><span class="sq_icon"></span></a>
@@ -19,7 +20,7 @@
19
  <div id="sq_options_close">x</div>
20
  <li><h6 style="font-weight: bold; font-size: 16px; line-height: 35px"><?php echo __('Need Help with Squirrly SEO?', _SQ_PLUGIN_NAME_) ?></h6></li>
21
 
22
- <li> - <?php echo sprintf(__('10 AM to 4 PM (GMT): Mon-Fri %sby email%s.', _SQ_PLUGIN_NAME_), '<a href="mailto:' . _SQ_SUPPORT_EMAIL_ . '">', '</a>') ?> </li>
23
  <li> - <?php echo sprintf(__('How To Squirrly %swebsite%s.', _SQ_PLUGIN_NAME_), '<a href="' . _SQ_HOWTO_URL_ . '" target="_blank">', '</a>') ?> </li>
24
  <li> - <?php echo sprintf(__('Facebook %sSupport Community%s.', _SQ_PLUGIN_NAME_), '<a href="https://www.facebook.com/groups/SquirrlySEOCustomerService/" target="_blank">', '</a>') ?> </li>
25
  <li> - <?php echo sprintf(__('Facebook %sMessenger%s.', _SQ_PLUGIN_NAME_), '<a href="https://www.facebook.com/Squirrly.co/" target="_blank">', '</a>') ?> </li>
@@ -49,33 +50,30 @@
49
  <table width="100%" cellpadding="2" cellspacing="0" border="0">
50
  <tr>
51
  <td>
52
- <label class="sq_label_feedback_smiley sq_label_feedback_0" for="sq_feedback_0"></label><input class="sq_feedback_smiley" type="radio" name="sq_feedback_face" id="sq_feedback_0" value="1" title="<?php _e('Angry', _SQ_PLUGIN_NAME_) ?>"/><?php _e("Annoying", _SQ_PLUGIN_NAME_) ?>
53
  </td>
54
  <td>
55
- <label class="sq_label_feedback_smiley sq_label_feedback_1" for="sq_feedback_1"></label><input class="sq_feedback_smiley" type="radio" name="sq_feedback_face" id="sq_feedback_1" value="2" title="<?php _e('Sad', _SQ_PLUGIN_NAME_) ?>"/><?php _e("Bad", _SQ_PLUGIN_NAME_) ?>
56
  </td>
57
  <td>
58
- <label class="sq_label_feedback_smiley sq_label_feedback_2" for="sq_feedback_2"></label><input class="sq_feedback_smiley" type="radio" name="sq_feedback_face" id="sq_feedback_2" value="3" title="<?php _e('Happy', _SQ_PLUGIN_NAME_) ?>"/><?php _e("Nice", _SQ_PLUGIN_NAME_) ?>
59
  </td>
60
  <td>
61
- <label class="sq_label_feedback_smiley sq_label_feedback_3" for="sq_feedback_3"></label><input class="sq_feedback_smiley" type="radio" name="sq_feedback_face" id="sq_feedback_3" value="4" title="<?php _e('Excited', _SQ_PLUGIN_NAME_) ?>"/><?php _e("Great", _SQ_PLUGIN_NAME_) ?>
62
  </td>
63
  <td>
64
- <label class="sq_label_feedback_smiley sq_label_feedback_4" for="sq_feedback_4"></label><input class="sq_feedback_smiley" type="radio" name="sq_feedback_face" id="sq_feedback_4" value="5" title="<?php _e('Love it', _SQ_PLUGIN_NAME_) ?>"/><?php _e("Love it", _SQ_PLUGIN_NAME_) ?>
65
  </td>
66
  </tr>
67
  </table>
68
  <div id="sq_options_feedback_error"></div>
69
  <p id="sq_feedback_msg" style="display: none;">
70
- <?php echo __('Please tell us why.', _SQ_PLUGIN_NAME_) ?>
71
- <textarea class="sq_small_input" name="sq_feedback_message" cols="30" rows="2"></textarea>
72
- <br/>
73
  <input id="sq_feedback_submit" type="button" value="<?php _e('Send feedback', _SQ_PLUGIN_NAME_) ?>">
74
  </p>
75
 
76
  </li>
77
  <li style="margin-top: 10px;"><?php _e('For more support:', _SQ_PLUGIN_NAME_) ?> </li>
78
- <li> - <?php echo sprintf(__('10 AM to 4 PM (GMT): Mon-Fri %sby email%s.', _SQ_PLUGIN_NAME_), '<a href="mailto:' . _SQ_SUPPORT_EMAIL_ . '" target="_blank">', '</a>') ?> </li>
79
  <li> - <?php echo sprintf(__('How To Squirrly %swebsite%s.', _SQ_PLUGIN_NAME_), '<a href="' . _SQ_HOWTO_URL_ . '" target="_blank">', '</a>') ?> </li>
80
  <li> - <?php echo sprintf(__('Facebook %sSupport Community%s.', _SQ_PLUGIN_NAME_), '<a href="https://www.facebook.com/groups/SquirrlySEOCustomerService/" target="_blank">', '</a>') ?> </li>
81
  <li> - <?php echo sprintf(__('Facebook %sMessenger%s.', _SQ_PLUGIN_NAME_), '<a href="https://www.facebook.com/Squirrly.co/" target="_blank">', '</a>') ?> </li>
1
  <div id="sq_options" class="card col-sm-12 p-0 m-0 py-2 my-2 border-0">
2
  <ul class="p-0 m-0 mx-3">
3
  <li id="sq_options_dasboard">
4
+ <?php
5
+ if (SQ_Classes_Helpers_Tools::getMenuVisible('show_panel') && current_user_can('manage_options')) { ?>
6
  <span class="sq_push" style="display:none;">1</span>
7
  <span class="sq_text"><a href="<?php echo SQ_Classes_RemoteController::getMySquirrlyLink('dashboard') ?>" title="<?php _e('Go to Profile', _SQ_PLUGIN_NAME_) ?>" target="_blank"><span><?php _e('Profile', _SQ_PLUGIN_NAME_) ?></span></a></span>
8
  <a href="<?php echo SQ_Classes_RemoteController::getMySquirrlyLink('dashboard') ?>" title="<?php _e('Profile', _SQ_PLUGIN_NAME_) ?>" target="_blank"><span class="sq_icon"></span></a>
20
  <div id="sq_options_close">x</div>
21
  <li><h6 style="font-weight: bold; font-size: 16px; line-height: 35px"><?php echo __('Need Help with Squirrly SEO?', _SQ_PLUGIN_NAME_) ?></h6></li>
22
 
23
+ <li> - <?php echo sprintf(__('10 AM to 4 PM (GMT): Mon-Fri %sby email%s.', _SQ_PLUGIN_NAME_), '<a href="' . _SQ_SUPPORT_EMAIL_ . '">', '</a>') ?> </li>
24
  <li> - <?php echo sprintf(__('How To Squirrly %swebsite%s.', _SQ_PLUGIN_NAME_), '<a href="' . _SQ_HOWTO_URL_ . '" target="_blank">', '</a>') ?> </li>
25
  <li> - <?php echo sprintf(__('Facebook %sSupport Community%s.', _SQ_PLUGIN_NAME_), '<a href="https://www.facebook.com/groups/SquirrlySEOCustomerService/" target="_blank">', '</a>') ?> </li>
26
  <li> - <?php echo sprintf(__('Facebook %sMessenger%s.', _SQ_PLUGIN_NAME_), '<a href="https://www.facebook.com/Squirrly.co/" target="_blank">', '</a>') ?> </li>
50
  <table width="100%" cellpadding="2" cellspacing="0" border="0">
51
  <tr>
52
  <td>
53
+ <label class="sq_label_feedback_smiley sq_label_feedback_0" for="sq_label_feedback_0"></label><input class="sq_feedback_smiley" type="radio" name="sq_feedback_face" id="sq_label_feedback_0" value="1" title="<?php _e('Angry', _SQ_PLUGIN_NAME_) ?>"/><?php _e("Annoying", _SQ_PLUGIN_NAME_) ?>
54
  </td>
55
  <td>
56
+ <label class="sq_label_feedback_smiley sq_label_feedback_1" for="sq_label_feedback_1"></label><input class="sq_feedback_smiley" type="radio" name="sq_feedback_face" id="sq_label_feedback_1" value="2" title="<?php _e('Sad', _SQ_PLUGIN_NAME_) ?>"/><?php _e("Bad", _SQ_PLUGIN_NAME_) ?>
57
  </td>
58
  <td>
59
+ <label class="sq_label_feedback_smiley sq_label_feedback_2" for="sq_label_feedback_2"></label><input class="sq_feedback_smiley" type="radio" name="sq_feedback_face" id="sq_label_feedback_2" value="3" title="<?php _e('Happy', _SQ_PLUGIN_NAME_) ?>"/><?php _e("Nice", _SQ_PLUGIN_NAME_) ?>
60
  </td>
61
  <td>
62
+ <label class="sq_label_feedback_smiley sq_label_feedback_3" for="sq_label_feedback_3"></label><input class="sq_feedback_smiley" type="radio" name="sq_feedback_face" id="sq_label_feedback_3" value="4" title="<?php _e('Excited', _SQ_PLUGIN_NAME_) ?>"/><?php _e("Great", _SQ_PLUGIN_NAME_) ?>
63
  </td>
64
  <td>
65
+ <label class="sq_label_feedback_smiley sq_label_feedback_4" for="sq_label_feedback_4"></label><input class="sq_feedback_smiley" type="radio" name="sq_feedback_face" id="sq_label_feedback_4" value="5" title="<?php _e('Love it', _SQ_PLUGIN_NAME_) ?>"/><?php _e("Love it", _SQ_PLUGIN_NAME_) ?>
66
  </td>
67
  </tr>
68
  </table>
69
  <div id="sq_options_feedback_error"></div>
70
  <p id="sq_feedback_msg" style="display: none;">
 
 
 
71
  <input id="sq_feedback_submit" type="button" value="<?php _e('Send feedback', _SQ_PLUGIN_NAME_) ?>">
72
  </p>
73
 
74
  </li>
75
  <li style="margin-top: 10px;"><?php _e('For more support:', _SQ_PLUGIN_NAME_) ?> </li>
76
+ <li> - <?php echo sprintf(__('10 AM to 4 PM (GMT): Mon-Fri %sby email%s.', _SQ_PLUGIN_NAME_), '<a href="' . _SQ_SUPPORT_EMAIL_ . '" target="_blank">', '</a>') ?> </li>
77
  <li> - <?php echo sprintf(__('How To Squirrly %swebsite%s.', _SQ_PLUGIN_NAME_), '<a href="' . _SQ_HOWTO_URL_ . '" target="_blank">', '</a>') ?> </li>
78
  <li> - <?php echo sprintf(__('Facebook %sSupport Community%s.', _SQ_PLUGIN_NAME_), '<a href="https://www.facebook.com/groups/SquirrlySEOCustomerService/" target="_blank">', '</a>') ?> </li>
79
  <li> - <?php echo sprintf(__('Facebook %sMessenger%s.', _SQ_PLUGIN_NAME_), '<a href="https://www.facebook.com/Squirrly.co/" target="_blank">', '</a>') ?> </li>
view/Blocks/Toolbar.php CHANGED
@@ -3,11 +3,18 @@
3
  <div class=" container-fluid ">
4
  <div class="justify-content-start" id="navigation">
5
  <ul class="nav navbar-nav mr-auto">
 
 
6
 
7
-
8
- <?php $mainmenu = SQ_Classes_ObjController::getClass('SQ_Models_Menu')->getMainMenu();
9
  if (!empty($mainmenu)) {
10
  foreach ($mainmenu as $menuid => $item) {
 
 
 
 
 
 
 
11
  //make sure the user has the capabilities
12
  if (current_user_can($item['capability'])) {
13
  if ($menuid <> 'sq_dashboard') {
3
  <div class=" container-fluid ">
4
  <div class="justify-content-start" id="navigation">
5
  <ul class="nav navbar-nav mr-auto">
6
+ <?php
7
+ $mainmenu = SQ_Classes_ObjController::getClass('SQ_Models_Menu')->getMainMenu();
8
 
 
 
9
  if (!empty($mainmenu)) {
10
  foreach ($mainmenu as $menuid => $item) {
11
+ if($menuid == 'sq_audits' && !SQ_Classes_Helpers_Tools::getMenuVisible('show_audit')){
12
+ continue;
13
+ }elseif($menuid == 'sq_rankings' && !SQ_Classes_Helpers_Tools::getMenuVisible('show_rankings')){
14
+ continue;
15
+ }elseif($menuid == 'sq_focuspages' && !SQ_Classes_Helpers_Tools::getMenuVisible('show_focuspages')){
16
+ continue;
17
+ }
18
  //make sure the user has the capabilities
19
  if (current_user_can($item['capability'])) {
20
  if ($menuid <> 'sq_dashboard') {
view/Dashboard.php CHANGED
@@ -24,8 +24,10 @@
24
 
25
  <?php SQ_Classes_ObjController::getClass('SQ_Core_BlockJorney')->init(); ?>
26
  <?php
27
- if (!SQ_Classes_ObjController::getClass('SQ_Core_BlockJorney')->getJourneyDays()) {
28
- SQ_Classes_ObjController::getClass('SQ_Core_BlockStats')->init();
 
 
29
  }
30
  ?>
31
  <?php SQ_Classes_ObjController::getClass('SQ_Controllers_CheckSeo')->init(); ?>
24
 
25
  <?php SQ_Classes_ObjController::getClass('SQ_Core_BlockJorney')->init(); ?>
26
  <?php
27
+ if(SQ_Classes_Helpers_Tools::getMenuVisible('show_account_info')) {
28
+ if (!SQ_Classes_ObjController::getClass('SQ_Core_BlockJorney')->getJourneyDays()) {
29
+ SQ_Classes_ObjController::getClass('SQ_Core_BlockStats')->init();
30
+ }
31
  }
32
  ?>
33
  <?php SQ_Classes_ObjController::getClass('SQ_Controllers_CheckSeo')->init(); ?>
view/FocusPages/FocusPageRow.php CHANGED
@@ -17,6 +17,7 @@ $call_timestamp = 0;
17
  if (get_transient('sq_focuspage_' . $view->post->ID)) {
18
  $call_timestamp = (int)get_transient('sq_focuspage_' . $view->post->ID);
19
  }
 
20
 
21
  if (isset($view->post->ID) && $view->post->ID > 0) {
22
  ?>
@@ -48,18 +49,25 @@ if (isset($view->post->ID) && $view->post->ID > 0) {
48
  </button>
49
  </form>
50
  </td>
51
- <td style="min-width: 100px; "><?php echo $view->focuspage->incomplete ?></td>
52
- <td style="min-width: 150px;"><?php echo $view->focuspage->visibility . ((int)$view->focuspage->visibility > 0 ? '%' : '') ?></td>
53
- <?php
54
- $categories = apply_filters('sq_assistant_categories_page', $view->focuspage->id);
55
- if (!empty($categories)) {
56
- foreach ($categories as $name => $category) { ?>
57
- <td style="min-width: 100px; ">
58
- <div class="sq_show_assistant <?php echo(($category->value === false) ? 'sq_circle_label' : '') ?>" data-id="<?php echo $view->focuspage->id ?>" data-category="<?php echo $name ?>" style="cursor: pointer; <?php echo(($category->value === false) ? 'background-color' : 'color') ?>: <?php echo $category->color ?>;" title="<?php echo $category->title ?>" <?php echo(($category->value === false) ? 'class="sq_circle_label"' : '') ?>><?php echo(($category->value !== false) ? $category->value : '') ?></div>
59
- </td>
60
- <?php
 
 
 
 
 
 
61
  }
62
  } ?>
 
63
  <td class="px-0" style="width: 20px">
64
  <div class="sq_sm_menu">
65
  <div class="sm_icon_button sm_icon_options">
@@ -87,4 +95,5 @@ if (isset($view->post->ID) && $view->post->ID > 0) {
87
 
88
  </tr>
89
  <?php
 
90
  }
17
  if (get_transient('sq_focuspage_' . $view->post->ID)) {
18
  $call_timestamp = (int)get_transient('sq_focuspage_' . $view->post->ID);
19
  }
20
+ $categories = apply_filters('sq_assistant_categories_page', $view->focuspage->id);
21
 
22
  if (isset($view->post->ID) && $view->post->ID > 0) {
23
  ?>
49
  </button>
50
  </form>
51
  </td>
52
+ <?php if ($view->focuspage->audit_error) { ?>
53
+ <td colspan="<?php echo count((array)$categories) ?>">
54
+ <div class="text-danger my-2"><?php echo __('Could not create the audit for this URL', _SQ_PLUGIN_NAME_) ?></div>
55
+ <div class="text-black-50" style="font-size: 11px"><em><?php echo sprintf(__('The current way your WordPress site is hosted can cause experience issues to the way Squirrly SEO works. %s In order to serve you with the best data, and make sure that the Focus Pages audits can be processed, you will need to talk to your hosting provider and tell them to make the following settings. %s Please add the IP addresses 176.9.59.55 and 176.9.112.210 in the white-list for remote access and it should work.', _SQ_PLUGIN_NAME_),'<br />','<br />') ?></em></div>
56
+ </td>
57
+ <?php } else { ?>
58
+ <td style="min-width: 100px; "><?php echo $view->focuspage->incomplete ?></td>
59
+ <td style="min-width: 150px;"><?php echo $view->focuspage->visibility . ((int)$view->focuspage->visibility > 0 ? '%' : '') ?></td>
60
+
61
+ <?php if (!empty($categories)) {
62
+ foreach ($categories as $name => $category) { ?>
63
+ <td style="min-width: 100px; ">
64
+ <div class="sq_show_assistant <?php echo(($category->value === false) ? 'sq_circle_label' : '') ?>" data-id="<?php echo $view->focuspage->id ?>" data-category="<?php echo $name ?>" style="cursor: pointer; <?php echo(($category->value === false) ? 'background-color' : 'color') ?>: <?php echo $category->color ?>;" title="<?php echo $category->title ?>" <?php echo(($category->value === false) ? 'class="sq_circle_label"' : '') ?>><?php echo(($category->value !== false) ? $category->value : '') ?></div>
65
+ </td>
66
+ <?php
67
+ }
68
  }
69
  } ?>
70
+
71
  <td class="px-0" style="width: 20px">
72
  <div class="sq_sm_menu">
73
  <div class="sm_icon_button sm_icon_options">
95
 
96
  </tr>
97
  <?php
98
+
99
  }
view/FocusPages/Pagelist.php CHANGED
@@ -124,6 +124,12 @@
124
  </div>
125
  </div>
126
  <?php } ?>
 
 
 
 
 
 
127
  </div>
128
  </div>
129
  </div>
124
  </div>
125
  </div>
126
  <?php } ?>
127
+
128
+ <div class="card-body">
129
+ <div class="col-sm-12 my-2 text-black-50">
130
+ <em><?php echo sprintf(__('%sNote:%s remember that it takes anywhere between %s1 minute to 5 minutes%s to generate the new audit for a focus page. There is a lot of processing involved.'),'<strong>','</strong>','<strong>','</strong>'); ?></em>
131
+ </div>
132
+ </div>
133
  </div>
134
  </div>
135
  </div>
view/Onboarding/Step2.php CHANGED
@@ -4,7 +4,7 @@ add_filter('sq_plugins', array(SQ_Classes_ObjController::getClass('SQ_Models_Imp
4
  $platforms = apply_filters('sq_importList', false);
5
 
6
  $next_step = 'step4';
7
- if ($platforms && count($platforms) > 0) {
8
  $next_step = 'step3';
9
  }
10
  ?>
4
  $platforms = apply_filters('sq_importList', false);
5
 
6
  $next_step = 'step4';
7
+ if ($platforms && count((array)$platforms) > 0) {
8
  $next_step = 'step3';
9
  }
10
  ?>
view/Onboarding/Step3.php CHANGED
@@ -22,7 +22,7 @@
22
  add_filter('sq_themes', array(SQ_Classes_ObjController::getClass('SQ_Models_ImportExport'), 'getAvailableThemes'));
23
  add_filter('sq_plugins', array(SQ_Classes_ObjController::getClass('SQ_Models_ImportExport'), 'getAvailablePlugins'));
24
  $platforms = apply_filters('sq_importList', false);
25
- if ($platforms && count($platforms) > 0) {
26
  ?>
27
  <div class="col-sm-12 card-title pt-4 text-center" style="font-size: 23px; line-height: 35px"><?php _e("We've detected another SEO Plugin on your site.", _SQ_PLUGIN_NAME_); ?></div>
28
  <div class="col-sm-12 m-0 p-3 px-5"><?php echo sprintf(__("Just as you'd never place two different sets of tires on the wheels of your car, you shouldn't use two different plugins for your WordPress SEO. %sSquirrly SEO loads the fastest in all tests done by 3rd parties%s, and keeps you best connected on the SEO road.", _SQ_PLUGIN_NAME_), '<strong>', '</strong>'); ?></div>
@@ -36,7 +36,7 @@
36
  <div class="col-sm-12 row py-2 mx-0 my-3">
37
  <div class="col-sm-10 offset-1 p-0 input-group">
38
  <?php
39
- if ($platforms && count($platforms) > 0) {
40
  ?>
41
  <select name="sq_import_platform" class="form-control bg-input mb-1">
42
  <?php
@@ -65,6 +65,13 @@
65
  <a href="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_onboarding', 'step4') ?>" class="btn rounded-0 btn-default btn-lg px-5 mx-4 float-sm-right"><?php _e('Skip this step', _SQ_PLUGIN_NAME_); ?></a>
66
  </div>
67
  </div>
 
 
 
 
 
 
 
68
  <?php } ?>
69
  </div>
70
 
22
  add_filter('sq_themes', array(SQ_Classes_ObjController::getClass('SQ_Models_ImportExport'), 'getAvailableThemes'));
23
  add_filter('sq_plugins', array(SQ_Classes_ObjController::getClass('SQ_Models_ImportExport'), 'getAvailablePlugins'));
24
  $platforms = apply_filters('sq_importList', false);
25
+ if ($platforms && count((array)$platforms) > 0) {
26
  ?>
27
  <div class="col-sm-12 card-title pt-4 text-center" style="font-size: 23px; line-height: 35px"><?php _e("We've detected another SEO Plugin on your site.", _SQ_PLUGIN_NAME_); ?></div>
28
  <div class="col-sm-12 m-0 p-3 px-5"><?php echo sprintf(__("Just as you'd never place two different sets of tires on the wheels of your car, you shouldn't use two different plugins for your WordPress SEO. %sSquirrly SEO loads the fastest in all tests done by 3rd parties%s, and keeps you best connected on the SEO road.", _SQ_PLUGIN_NAME_), '<strong>', '</strong>'); ?></div>
36
  <div class="col-sm-12 row py-2 mx-0 my-3">
37
  <div class="col-sm-10 offset-1 p-0 input-group">
38
  <?php
39
+ if ($platforms && count((array)$platforms) > 0) {
40
  ?>
41
  <select name="sq_import_platform" class="form-control bg-input mb-1">
42
  <?php
65
  <a href="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_onboarding', 'step4') ?>" class="btn rounded-0 btn-default btn-lg px-5 mx-4 float-sm-right"><?php _e('Skip this step', _SQ_PLUGIN_NAME_); ?></a>
66
  </div>
67
  </div>
68
+ <?php } else { ?>
69
+ <div class="col-sm-12 card-title pt-4 text-center" style="font-size: 23px; line-height: 35px"><?php _e("We didn't detect other SEO Plugins on your site.", _SQ_PLUGIN_NAME_); ?></div>
70
+ <div id="sq_onboarding">
71
+ <div class="col-sm-12 my-3 p-0 py-3 border-top">
72
+ <a href="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_onboarding', 'step4') ?>" class="btn rounded-0 btn-success btn-lg px-5 mx-4 float-sm-right"><?php _e('Continue >', _SQ_PLUGIN_NAME_); ?></a>
73
+ </div>
74
+ </div>
75
  <?php } ?>
76
  </div>
77
 
view/Ranking/Rankings.php CHANGED
@@ -3,7 +3,7 @@ $date_format = get_option('date_format');
3
  $time_format = get_option('time_format');
4
  $timezone = (int)get_option('gmt_offset');
5
  $connect = json_decode(json_encode(SQ_Classes_Helpers_Tools::getOption('connect')));
6
-
7
  ?>
8
  <div id="sq_wrap">
9
  <?php SQ_Classes_ObjController::getClass('SQ_Core_BlockToolbar')->init(); ?>
@@ -35,17 +35,19 @@ $connect = json_decode(json_encode(SQ_Classes_Helpers_Tools::getOption('connect'
35
 
36
  <div id="sq_ranks" class="card col-sm-12 p-0 tab-panel border-0">
37
  <?php
38
- if ($view->checkin->subscription_serpcheck) {
39
- echo '<div class="alert alert-success text-center">';
40
- echo sprintf(__("%sSERP Checker Business:%s We update the best ranks for each keyword, daily. 100%% accurate and objective.", _SQ_PLUGIN_NAME_), '<strong>', '</strong>');
41
- echo '</div>';
42
- } else {
43
- echo '<div class="alert alert-warning text-center">';
44
- echo sprintf(__("%sSERP Checker Lite:%s We show ranks according to what Google shows you in Google Search Console. Positions shown by GSC are averages, not exact positions in SERPs. To have your rankings checked daily please upgrade your plan to %sBusiness Plan%s", _SQ_PLUGIN_NAME_), '<strong>', '</strong>', '<a href="' . SQ_Classes_RemoteController::getMySquirrlyLink('plans') . '" target="_blank"><strong>', '</strong></a>');
45
- echo '</div>';
46
- } ?>
 
 
47
 
48
- <?php if (!$connect->google_search_console) { ?>
49
  <div class="form-group my-5 col-sm-8 offset-2">
50
  <?php echo $view->getView('Connect/GoogleSearchConsole'); ?>
51
  </div>
@@ -91,7 +93,7 @@ $connect = json_decode(json_encode(SQ_Classes_Helpers_Tools::getOption('connect'
91
  <span class="info-box-title my-2" style="display: block; clear: both; padding: 5px 0 0 0;"><?php _e('Today Avg. Ranking', _SQ_PLUGIN_NAME_); ?></span>
92
  </div>
93
  <?php
94
- if (isset($view->info->average) && count($view->info->average) > 1) {
95
  echo $view->getScripts();
96
  foreach ($view->info->average as $key => $average) {
97
  if ($key > 0 && !empty($view->info->average[$key])) {
@@ -244,7 +246,7 @@ $connect = json_decode(json_encode(SQ_Classes_Helpers_Tools::getOption('connect'
244
  </div>
245
  <tr>
246
  <td><span><?php echo $row->keyword ?></span></td>
247
- <?php if (!$row->permalink) { ?>
248
  <td style="color: #919aa2; font-style: italic">
249
  <?php echo __('Google Search Console has no data for this keyword', _SQ_PLUGIN_NAME_) ?>
250
  <br/>
@@ -269,7 +271,7 @@ $connect = json_decode(json_encode(SQ_Classes_Helpers_Tools::getOption('connect'
269
  <?php if ($view->checkin->subscription_serpcheck) { ?>
270
  <td>
271
  <?php
272
- echo(!$row->rank ? '<span style="font-size: 21px">' . __('Not indexed', _SQ_PLUGIN_NAME_) . '</span>' : (int)$row->rank);
273
  if (isset($row->change)) {
274
  echo(($row->change) ? sprintf('<span class="badge badge-' . ($row->change < 0 ? 'success' : 'danger') . ' mx-2"><i class="fa fa-sort-%s"></i><span> </span><span>%s</span></span>', ($row->change < 0 ? 'up' : 'down'), $row->change) : '');
275
  }
3
  $time_format = get_option('time_format');
4
  $timezone = (int)get_option('gmt_offset');
5
  $connect = json_decode(json_encode(SQ_Classes_Helpers_Tools::getOption('connect')));
6
+ $view->checkin->subscription_serpcheck = (isset($view->checkin->subscription_serpcheck) ? $view->checkin->subscription_serpcheck : 0);
7
  ?>
8
  <div id="sq_wrap">
9
  <?php SQ_Classes_ObjController::getClass('SQ_Core_BlockToolbar')->init(); ?>
35
 
36
  <div id="sq_ranks" class="card col-sm-12 p-0 tab-panel border-0">
37
  <?php
38
+ if (SQ_Classes_Helpers_Tools::getMenuVisible('show_ads')) {
39
+ if ($view->checkin->subscription_serpcheck) {
40
+ echo '<div class="alert alert-success text-center">';
41
+ echo sprintf(__("%sSERP Checker Business:%s We update the best ranks for each keyword, daily. 100%% accurate and objective.", _SQ_PLUGIN_NAME_), '<strong>', '</strong>');
42
+ echo '</div>';
43
+ } else {
44
+ echo '<div class="alert alert-warning text-center">';
45
+ echo sprintf(__("%sSERP Checker Lite:%s We show ranks according to what Google shows you in Google Search Console. Positions shown by GSC are averages, not exact positions in SERPs. To have your rankings checked daily please upgrade your plan to %sBusiness Plan%s", _SQ_PLUGIN_NAME_), '<strong>', '</strong>', '<a href="' . SQ_Classes_RemoteController::getMySquirrlyLink('plans') . '" target="_blank"><strong>', '</strong></a>');
46
+ echo '</div>';
47
+ }
48
+ }
49
 
50
+ if (!$connect->google_search_console) { ?>
51
  <div class="form-group my-5 col-sm-8 offset-2">
52
  <?php echo $view->getView('Connect/GoogleSearchConsole'); ?>
53
  </div>
93
  <span class="info-box-title my-2" style="display: block; clear: both; padding: 5px 0 0 0;"><?php _e('Today Avg. Ranking', _SQ_PLUGIN_NAME_); ?></span>
94
  </div>
95
  <?php
96
+ if (isset($view->info->average) && count((array)$view->info->average) > 1) {
97
  echo $view->getScripts();
98
  foreach ($view->info->average as $key => $average) {
99
  if ($key > 0 && !empty($view->info->average[$key])) {
246
  </div>
247
  <tr>
248
  <td><span><?php echo $row->keyword ?></span></td>
249
+ <?php if (!$row->permalink && !$view->checkin->subscription_serpcheck) { ?>
250
  <td style="color: #919aa2; font-style: italic">
251
  <?php echo __('Google Search Console has no data for this keyword', _SQ_PLUGIN_NAME_) ?>
252
  <br/>
271
  <?php if ($view->checkin->subscription_serpcheck) { ?>
272
  <td>
273
  <?php
274
+ echo(!$row->rank ? '<span style="font-size: 13px">' . __('Not indexed', _SQ_PLUGIN_NAME_) . '</span>' : (int)$row->rank);
275
  if (isset($row->change)) {
276
  echo(($row->change) ? sprintf('<span class="badge badge-' . ($row->change < 0 ? 'success' : 'danger') . ' mx-2"><i class="fa fa-sort-%s"></i><span> </span><span>%s</span></span>', ($row->change < 0 ? 'up' : 'down'), $row->change) : '');
277
  }
view/Research/Briefcase.php CHANGED
@@ -24,15 +24,11 @@
24
  <h3 class="card-title text-dark p-2"><?php _e('Labels', _SQ_PLUGIN_NAME_); ?>:</h3>
25
  </div>
26
  <div class="col-sm-9 p-0 py-2">
27
- <div class="form-group text-right col-sm-12 p-0 m-0">
28
- <div class="flex-column flex-grow-1">
29
- <input type="search" class="d-inline-block align-middle col-sm-7 p-2 mr-2" id="post-search-input" autofocus name="skeyword" value="<?php echo htmlspecialchars(SQ_Classes_Helpers_Tools::getValue('skeyword')) ?>"/>
30
- <input type="submit" class="btn btn-primary" value="<?php echo __('Search Keyword', _SQ_PLUGIN_NAME_) ?>"/>
31
- </div>
32
  <?php if (SQ_Classes_Helpers_Tools::getIsset('skeyword') || SQ_Classes_Helpers_Tools::getIsset('slabel')) { ?>
33
- <div class="sq_serp_settings_button mx-1 my-0">
34
- <button type="button" class="btn btn-info p-v-xs" onclick="location.href = '<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_research', 'briefcase') ?>';" style="cursor: pointer"><?php echo __('Show All') ?></button>
35
- </div>
36
  <?php } ?>
37
  </div>
38
  </div>
@@ -185,7 +181,7 @@
185
  <?php if (!$row->rankcount) { ?>
186
  <?php echo __('N/A', _SQ_PLUGIN_NAME_) ?>
187
  <?php } else { ?>
188
- <a href="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_rankings') . '&skeyword=' . htmlspecialchars($row->keyword) ?>" target="_blank"><?php echo $row->rankcount . ($row->rankcount == 1 ? __(' ranking', _SQ_PLUGIN_NAME_) : __(' rankings', _SQ_PLUGIN_NAME_)) ?></a>
189
  <?php } ?>
190
  </td>
191
  <td>
24
  <h3 class="card-title text-dark p-2"><?php _e('Labels', _SQ_PLUGIN_NAME_); ?>:</h3>
25
  </div>
26
  <div class="col-sm-9 p-0 py-2">
27
+ <div class="d-flex flex-row justify-content-end p-0 m-0">
28
+ <input type="search" class="d-inline-block align-middle col-sm-7 p-2 mr-2" id="post-search-input" autofocus name="skeyword" value="<?php echo htmlspecialchars(SQ_Classes_Helpers_Tools::getValue('skeyword')) ?>"/>
29
+ <input type="submit" class="btn btn-primary" value="<?php echo __('Search Keyword', _SQ_PLUGIN_NAME_) ?>"/>
 
 
30
  <?php if (SQ_Classes_Helpers_Tools::getIsset('skeyword') || SQ_Classes_Helpers_Tools::getIsset('slabel')) { ?>
31
+ <button type="button" class="btn btn-info ml-1 p-v-xs" onclick="location.href = '<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_research', 'briefcase') ?>';" style="cursor: pointer"><?php echo __('Show All') ?></button>
 
 
32
  <?php } ?>
33
  </div>
34
  </div>
181
  <?php if (!$row->rankcount) { ?>
182
  <?php echo __('N/A', _SQ_PLUGIN_NAME_) ?>
183
  <?php } else { ?>
184
+ <a href="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_rankings') . '&skeyword=' . htmlspecialchars($row->keyword) ?>" target="_blank"><?php echo __('Keyword Ranked', _SQ_PLUGIN_NAME_) ?></a>
185
  <?php } ?>
186
  </td>
187
  <td>
view/Research/Research.php CHANGED
@@ -151,6 +151,7 @@
151
  </div>
152
  <div class="sq_step sq_step4 col-sm-12 my-2 px-0" style="display: none">
153
  <h4 class="sq_research_success text-success text-center my-2" style="display: none"><?php echo __('We found some relevant keywords for you', _SQ_PLUGIN_NAME_) ?></h4>
 
154
  <h4 class="sq_research_error text-warning text-center" style="display: none"><?php echo __('We could not find relevant keywords for you', _SQ_PLUGIN_NAME_) ?></h4>
155
  <table class="table table-light table-striped table-hover" style="display: none">
156
  <thead class="thead-dark">
151
  </div>
152
  <div class="sq_step sq_step4 col-sm-12 my-2 px-0" style="display: none">
153
  <h4 class="sq_research_success text-success text-center my-2" style="display: none"><?php echo __('We found some relevant keywords for you', _SQ_PLUGIN_NAME_) ?></h4>
154
+ <h4 class="sq_research_timeout_error text-warning text-center" style="display: none"><?php echo sprintf(__('Process timeout. Please check the results at %sResearch History%s.', _SQ_PLUGIN_NAME_), '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_research', 'history') . '" >', '</a>') ?></h4>
155
  <h4 class="sq_research_error text-warning text-center" style="display: none"><?php echo __('We could not find relevant keywords for you', _SQ_PLUGIN_NAME_) ?></h4>
156
  <table class="table table-light table-striped table-hover" style="display: none">
157
  <thead class="thead-dark">
view/Research/ResearchDetails.php CHANGED
@@ -14,9 +14,9 @@ if (!empty($view->kr)) {
14
  <tr class="<?php echo($in_briefcase ? 'bg-briefcase' : '') ?>">
15
  <td style="width: 280px;"><?php echo(isset($row->keyword) ? $row->keyword : '') ?></td>
16
  <td style="width: 80px;"><?php echo(isset($view->country) ? $view->country : '') ?></td>
17
- <td style="width: 150px; color: <?php echo $row->stats->sc->color ?>"><?php echo(isset($row->stats->sc->text) ? $row->stats->sc->text : '') ?></td>
18
- <td style="width: 100px; color: <?php echo $row->stats->sv->color ?>"><?php echo(isset($row->stats->sv) ? (is_numeric($row->stats->sv->absolute) ? number_format($row->stats->sv->absolute, 0, '','.') : $row->stats->sv->absolute) : '') ?></td>
19
- <td style="width: 130px; color: <?php echo $row->stats->tw->color ?>"><?php echo(isset($row->stats->tw) ? $row->stats->tw->text : '') ?></td>
20
  <td style="width: 100px; color: <?php echo $row->stats->td->color ?>">
21
  <?php if (isset($row->stats->td)) { ?>
22
  <div style="width: 60px; height: 30px;">
14
  <tr class="<?php echo($in_briefcase ? 'bg-briefcase' : '') ?>">
15
  <td style="width: 280px;"><?php echo(isset($row->keyword) ? $row->keyword : '') ?></td>
16
  <td style="width: 80px;"><?php echo(isset($view->country) ? $view->country : '') ?></td>
17
+ <td style="width: 150px; color: <?php echo $row->stats->sc->color ?>"><?php echo(isset($row->stats->sc->text) ? '<span data-value="' . $row->stats->sc->value . '">' . $row->stats->sc->text . '</span>' : '') ?></td>
18
+ <td style="width: 100px; color: <?php echo $row->stats->sv->color ?>"><?php echo(isset($row->stats->sv) ? '<span data-value="' . $row->stats->sv->value . '">' . (is_numeric($row->stats->sv->absolute) ? number_format($row->stats->sv->absolute, 0, '', '.') . '</span>' : $row->stats->sv->absolute) : '') ?></td>
19
+ <td style="width: 130px; color: <?php echo $row->stats->tw->color ?>"><?php echo(isset($row->stats->tw) ? '<span data-value="' . $row->stats->tw->value . '">' . $row->stats->tw->text . '</span>' : '') ?></td>
20
  <td style="width: 100px; color: <?php echo $row->stats->td->color ?>">
21
  <?php if (isset($row->stats->td)) { ?>
22
  <div style="width: 60px; height: 30px;">
view/SeoSettings/Automation.php CHANGED
@@ -76,7 +76,7 @@
76
  <div class="tab-content flex-grow-1 border-top border-right border-bottom">
77
  <?php foreach (SQ_Classes_Helpers_Tools::getOption('patterns') as $pattern => $type) { ?>
78
 
79
- <div class="tab-pane fade <?php if ($pattern == 'home') { ?>show active<?php } ?>" id="nav-<?php echo $pattern ?>" role="tabpanel" aria-labelledby="nav-<?php echo $pattern ?>-tab">
80
  <h4 class="col-sm-12 py-3 text-center text-black"><?php echo ucwords(str_replace(array('-', '_'), ' ', $pattern)); ?></h4>
81
 
82
  <div id="sq_seosettings" class="col-sm-12 pt-0 pb-4 border-bottom tab-panel <?php echo(SQ_Classes_Helpers_Tools::getOption('sq_auto_pattern') ? '' : 'sq_deactivated') ?>">
@@ -122,7 +122,6 @@
122
 
123
  <div class="col-sm-12 row mb-1 ml-1">
124
 
125
-
126
  <div class="checker col-sm-12 row my-2 py-1">
127
 
128
  <?php if (!SQ_Classes_Helpers_Tools::getOption('sq_auto_metas')) { ?>
76
  <div class="tab-content flex-grow-1 border-top border-right border-bottom">
77
  <?php foreach (SQ_Classes_Helpers_Tools::getOption('patterns') as $pattern => $type) { ?>
78
 
79
+ <div class="tab-pane <?php if ($pattern == 'home') { ?>show active<?php } ?>" id="nav-<?php echo $pattern ?>" role="tabpanel" aria-labelledby="nav-<?php echo $pattern ?>-tab">
80
  <h4 class="col-sm-12 py-3 text-center text-black"><?php echo ucwords(str_replace(array('-', '_'), ' ', $pattern)); ?></h4>
81
 
82
  <div id="sq_seosettings" class="col-sm-12 pt-0 pb-4 border-bottom tab-panel <?php echo(SQ_Classes_Helpers_Tools::getOption('sq_auto_pattern') ? '' : 'sq_deactivated') ?>">
122
 
123
  <div class="col-sm-12 row mb-1 ml-1">
124
 
 
125
  <div class="checker col-sm-12 row my-2 py-1">
126
 
127
  <?php if (!SQ_Classes_Helpers_Tools::getOption('sq_auto_metas')) { ?>
view/SeoSettings/Backup.php CHANGED
@@ -42,7 +42,7 @@
42
  </div>
43
  <div class="col-sm-8 p-0 input-group">
44
  <?php
45
- if ($platforms && count($platforms) > 0) {
46
  ?>
47
  <select name="sq_import_platform" class="form-control bg-input mb-1">
48
  <?php
@@ -70,7 +70,7 @@
70
  </div>
71
  <div class="col-sm-8 p-0 input-group">
72
  <?php
73
- if ($platforms && count($platforms) > 0) {
74
  ?>
75
  <select name="sq_import_platform" class="form-control bg-input mb-1">
76
  <?php
42
  </div>
43
  <div class="col-sm-8 p-0 input-group">
44
  <?php
45
+ if ($platforms && count((array)$platforms) > 0) {
46
  ?>
47
  <select name="sq_import_platform" class="form-control bg-input mb-1">
48
  <?php
70
  </div>
71
  <div class="col-sm-8 p-0 input-group">
72
  <?php
73
+ if ($platforms && count((array)$platforms) > 0) {
74
  ?>
75
  <select name="sq_import_platform" class="form-control bg-input mb-1">
76
  <?php
view/SeoSettings/Bulkseo.php CHANGED
@@ -186,6 +186,7 @@
186
  </table>
187
  <div class="nav-previous alignleft"><?php the_posts_pagination(array(
188
  'mid_size' => 3,
 
189
  'format' => '?spage=%#%',
190
  'prev_text' => __('Prev Page', _SQ_PLUGIN_NAME_),
191
  'next_text' => __('Next Page', _SQ_PLUGIN_NAME_),
186
  </table>
187
  <div class="nav-previous alignleft"><?php the_posts_pagination(array(
188
  'mid_size' => 3,
189
+ 'base' => 'admin.php%_%',
190
  'format' => '?spage=%#%',
191
  'prev_text' => __('Prev Page', _SQ_PLUGIN_NAME_),
192
  'next_text' => __('Next Page', _SQ_PLUGIN_NAME_),
view/SeoSettings/Jsonld.php CHANGED
@@ -181,7 +181,33 @@
181
 
182
 
183
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  </div>
186
  </div>
187
 
181
 
182
 
183
  </div>
184
+ <div class="bg-title p-2 sq_advanced">
185
+ <h3 class="card-title"><?php _e('More Json-LD Settings', _SQ_PLUGIN_NAME_); ?>:</h3>
186
+ </div>
187
+ <div class="col-sm-12 py-4 border-bottom tab-panel sq_advanced">
188
+ <div class="col-sm-12 row mb-1 ml-1 sq_advanced">
189
+ <div class="checker col-sm-12 row my-2 py-1">
190
+ <div class="col-sm-12 p-0 sq-switch sq-switch-sm">
191
+ <input type="hidden" name="sq_jsonld_breadcrumbs" value="0"/>
192
+ <input type="checkbox" id="sq_jsonld_breadcrumbs" name="sq_jsonld_breadcrumbs" class="sq-switch" <?php echo(SQ_Classes_Helpers_Tools::getOption('sq_jsonld_breadcrumbs') ? 'checked="checked"' : '') ?> value="1"/>
193
+ <label for="sq_jsonld_breadcrumbs" class="ml-2"><?php _e('Add BreadcrumbsList in Json-LD ', _SQ_PLUGIN_NAME_); ?></label>
194
+ <div class="offset-1 small text-black-50"><?php _e('Add the BreadcrumbsList Schema into Json-LD including all parent categories.', _SQ_PLUGIN_NAME_); ?></div>
195
+ </div>
196
+ </div>
197
+ </div>
198
 
199
+ <div class="col-sm-12 row mb-1 ml-1">
200
+ <div class="checker col-sm-12 row my-2 py-1">
201
+ <div class="col-sm-12 p-0 sq-switch sq-switch-sm">
202
+ <input type="hidden" name="sq_jsonld_clearcode" value="0"/>
203
+ <input type="checkbox" id="sq_jsonld_clearcode" name="sq_jsonld_clearcode" class="sq-switch" <?php echo(SQ_Classes_Helpers_Tools::getOption('sq_jsonld_clearcode') ? 'checked="checked"' : '') ?> value="1"/>
204
+ <label for="sq_jsonld_clearcode" class="ml-2"><?php _e('Remove other Json-LD from page', _SQ_PLUGIN_NAME_); ?></label>
205
+ <div class="offset-1 small text-black-50"><?php _e('Clear the Json-LD from other plugins and theme to avoid duplicate schemas.', _SQ_PLUGIN_NAME_); ?></div>
206
+ </div>
207
+ </div>
208
+ </div>
209
+
210
+ </div>
211
  </div>
212
  </div>
213
 
view/SeoSettings/Metas.php CHANGED
@@ -141,7 +141,7 @@
141
  </div>
142
 
143
 
144
- <?php if (!get_option('page_for_posts') && !get_option('page_on_front')) { ?>
145
 
146
  <div class="bg-title p-2">
147
  <h3 class="card-title"><?php _e('First Page Optimization', _SQ_PLUGIN_NAME_); ?>:</h3>
141
  </div>
142
 
143
 
144
+ <?php if ( !get_option('page_on_front')) { ?>
145
 
146
  <div class="bg-title p-2">
147
  <h3 class="card-title"><?php _e('First Page Optimization', _SQ_PLUGIN_NAME_); ?>:</h3>
view/assets/css/global.css CHANGED
@@ -120,11 +120,11 @@ body {
120
  }
121
 
122
  .sq_error {
123
- background-color: lightyellow;
 
124
  text-align: center;
125
  font-size: 15px;
126
  font-weight: bold;
127
- color: brown;
128
  }
129
 
130
  .sq_success {
@@ -739,3 +739,22 @@ button.btn-success {
739
  content: ""
740
  }
741
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  }
121
 
122
  .sq_error {
123
+ background-color: darkred !important;
124
+ color: white !important;
125
  text-align: center;
126
  font-size: 15px;
127
  font-weight: bold;
 
128
  }
129
 
130
  .sq_success {
739
  content: ""
740
  }
741
 
742
+ /* Bootstrap Modal Workaround */
743
+
744
+ .fade.in {
745
+ opacity: 1;
746
+ }
747
+ .modal.in .modal-dialog {
748
+ -webkit-transform: translate(0, 0);
749
+ -o-transform: translate(0, 0);
750
+ transform: translate(0, 0);
751
+ }
752
+
753
+ .modal-backdrop .fade .in {
754
+ opacity: 0.5 !important;
755
+ }
756
+
757
+
758
+ .modal-backdrop.fade {
759
+ opacity: 0.5 !important;
760
+ }
view/assets/css/global.min.css CHANGED
@@ -1 +1 @@
1
- @import 'logo.css';@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}#update-nag,.notice-error,.update-nag,.updated,.show-settings,.screen-meta-toggle,.notice-warning,div.fs-notice.updated,div.fs-notice.success,div.fs-notice.promotion,div.error,.notice:not(.sq_notice){display:none !important}#wpbody-content{float:none !important}#wpfooter{display:none}#wpwrap{background:white !important}body{font-family:'Open Sans',Arial,Helvetica,sans-serif;font-size:14px;background-color:#fff}#wpcontent{padding:0}#wpcontent .bg-light{background-color:#fdfdfd !important}#wpcontent .bg-briefcase{background-color:#e1f5e3 !important}#wpcontent .content{min-width:600px;max-width:1020px;margin:auto}#wpcontent h3{font-weight:400;line-height:50px}#wpcontent .card .card-title{margin:0;color:#4f1440;font-weight:400}#wpcontent .sq_deactivated{position:relative}#wpcontent .sq_deactivated:before{content:" ";position:absolute;height:calc(100% + 20px);width:100%;background:#f1f1f1;opacity:.7;top:-10px;z-index:1000;cursor:pointer;border-radius:6px}#wpcontent .sq_deactivated_label{position:absolute !important;z-index:1001;right:0}.sq_fixed{position:fixed;z-index:100;top:32px;left:0;margin:0;border-top:2px solid white;border-bottom:2px solid white}.sq_notice{top:28px;text-align:center;width:100%}.sq_notice.sq_notice>div{display:block;margin:0 !important;width:100% !important;line-height:40px;background-color:lightgoldenrodyellow}.sq_notice.sq_notice>div.sq_success{background-color:#20bc49}.sq_notices{font-size:13px;color:#555}.sq_error{background-color:lightyellow;text-align:center;font-size:15px;font-weight:bold;color:brown}.sq_success{background-color:#20bc49 !important;line-height:30px;text-align:center;font-size:16px;font-weight:bold;color:white}.sq_success a{color:#4f47be;text-decoration:none}.sq_deactivated{opacity:.3}#sq_wrap .flex-grow-1{min-width:620px}#sq_wrap .small{font-size:90%;line-height:20px}#sq_wrap .sq_nav{flex:0 0 225px}#sq_wrap .row>div.input-group{display:flex !important}#sq_wrap .row{float:none !important;width:auto !important}#sq_wrap .btn-primary{background-color:#2680b4 !important;border-color:transparent}#sq_wrap .btn{border-radius:0}#sq_wrap .btn-primary:hover{background-color:#256d9c !important}#sq_wrap .input-group>button.btn,#sq_wrap .input-group>input{max-height:47px}#sq_wrap .bg-title{margin:2px;background-color:#f8f9fa !important;color:#505663 !important}#sq_wrap .bg-light{background-color:#fdfdfd !important}#sq_wrap .bg-google{background-color:#e37400 !important;color:white !important}#sq_wrap .bg-googlesc{background-color:#455a64 !important;color:white !important}#sq_wrap .bg-primary{background-color:#2680b4 !important;color:white !important}#sq_wrap .bg-warning{background-color:#f7681a !important;color:white !important}button.btn-green{color:#fff;background-color:#28a745 !important;border-color:#28a745 !important}button.btn-success{color:#fff;background-color:#589ee4;border-color:transparent}#sq_wrap .table .thead-dark th{color:#fff;background-color:#948691;border-color:#897b86;z-index:1;top:0;position:sticky}#sq_wrap .table-striped tbody tr.odd{background-color:rgba(151,147,147,0.05)}#sq_wrap .table-striped tbody tr.even{background-color:#fff}#sq_wrap .table-hover tbody tr:hover{background-color:rgba(230,226,226,0.03)}#sq_wrap .text-link{color:#2680b4 !important}#sq_wrap .sq_row{position:relative;flex:1 1 auto}#sq_wrap .sq_col_side{flex:0 0 300px}#sq_wrap button.btn-success{color:#fff;background-color:#589ee4;border-color:transparent}#sq_wrap button.btn-success:hover{background-color:#4c81bd}#sq_wrap .btn-primary:not(:disabled):not(.disabled).active,#sq_wrap .btn-primary:not(:disabled):not(.disabled):active,#sq_wrap .show>.btn-primary.dropdown-toggle{background-color:#2777aa}#sq_wrap .btn-primary:hover{background-color:#2674a7;border-color:transparent}#sq_wrap .btn-warning{background-color:#f2ca4c;border-color:transparent}#sq_wrap .btn-warning:hover{background-color:#e6be4b;border-color:transparent}#sq_wrap .bg-cta{background-color:#694861 !important}#sq_wrap a:not(.btn):not(.sq-btn):not(.sq-nav-link){color:#f16112;text-decoration:none}#sq_wrap a:not(.btn):not(.sq-btn):not(.sq-nav-link):hover{color:#f14644}#sq_wrap h4 .fa:before{margin-right:3px}.wp-admin #sq_wrap select{padding:.375em .75em;line-height:1.5;height:calc(2.25em + 2px);vertical-align:middle;background-color:#e5f5dd}.wp-admin #sq_seosettings_bulkseo select{height:calc(2.55em + 2px)}.wp-admin #sq_wrap select.bg-input{height:calc(2.875em + 2px);padding:.5em 1em;font-size:1.25em;line-height:1.5;border-radius:.3em;background-color:#e5f5dd}.wp-admin #sq_wrap input[type=text]:not(.wp-color-picker),.wp-admin #sq_wrap textarea{background-color:#e5f5dd;padding:.680em .75em}.sq_icons{float:left;width:35px;height:35px;-webkit-filter:invert(40%) grayscale(100%) brightness(40%) sepia(100%) hue-rotate(-50deg) saturate(400%) contrast(2);filter:grayscale(100%) brightness(40%) sepia(100%) hue-rotate(-50deg) saturate(600%) contrast(0.8)}.sq_icons_small{display:block;float:left;margin:0 10px 0 0;height:30px;width:30px}.sq_icons.sq_icon_package{float:none;display:inline-block;margin:auto;background-repeat:no-repeat;background-position:center;background-size:70%;background-color:#f5922f;background-image:url("../img/logos/package.png")}.sq_kr_icon{background:transparent url('../img/logos/kr_92.png') no-repeat;background-size:100%}.sq_krfound_icon{background:transparent url('../img/logos/briefcase_92.png') no-repeat;background-size:100%}.sq_audits_icon{background:transparent url('../img/logos/audit_92.png') no-repeat;background-size:100%}.sq_briefcase_icon{background:transparent url('../img/logos/briefcase_92.png') no-repeat;background-size:100%}.sq_labels_icon{background:transparent url('../img/logos/labels_92.png') no-repeat;background-size:100%}.sq_suggested_icon{background:transparent url('../img/logos/suggested_92.png') no-repeat;background-size:100%}.sq_history_icon{background:transparent url('../img/logos/history_92.png') no-repeat;background-size:100%}.sq_audit_icon{background:transparent url('../img/logos/audit_92.png') no-repeat;background-size:100%}.sq_ranks_icon{background:transparent url('../img/logos/ranking_92.png') no-repeat;background-size:100%}.sq_rankings_icon{background:transparent url('../img/logos/ranking_92.png') no-repeat;background-size:100%}.sq_sla_icon{background:transparent url('../img/logos/sla_92.png') no-repeat;background-size:100%}.sq_focuspages_icon{background:transparent url('../img/logos/focuspages_92.png') no-repeat;background-size:100%}.sq_bulkseo_icon{background:transparent url('../img/logos/bulkseo_92.png') no-repeat;background-size:100%}.sq_boostpages_icon{background:transparent url('../img/logos/boostpages_92.png') no-repeat;background-size:100%}.sq_addpage_icon{background:transparent url('../img/logos/addpage_92.png') no-repeat;background-size:100%}.sq_settings_icon{background:transparent url('../img/logos/settings_92.png') no-repeat;background-size:100%}.sq_squirrly_icon{background:transparent url(../img/logos/squirrly.png) no-repeat;background-size:100%;height:42px;filter:none;-webkit-filter:none}#sq_wrap .page-item.active .page-link{background-color:#bde2f1;border-color:transparent}#sq_preloader{position:absolute;height:100%;width:100%;z-index:1000;background-color:#fff !important;opacity:.5}.sq_loading{height:60px;background:transparent url('../img/loading.gif') no-repeat center !important}@-webkit-keyframes play{from{background-position:0 0}to{background-position:-400px}}@-moz-keyframes play{from{background-position:0 0}to{background-position:-400px}}@-ms-keyframes play{from{background-position:0 0}to{background-position:-400px}}@-o-keyframes play{from{background-position:0 0}to{background-position:-400px}}@keyframes play{from{background-position:0 0}to{background-position:-400px}}.sq_minloading{position:relative;opacity:.5}.sq_minloading:after{position:absolute !important;right:calc(50% - 10px) !important;top:calc(50% - 8px) !important;display:block !important;float:right !important;line-height:30px !important;content:"" !important;padding:0 0 !important;margin:0 0 0 5px !important;height:16px !important;width:20px !important;background:transparent url('../img/minloading.png') no-repeat !important;-webkit-animation:play 1s steps(10) infinite;-moz-animation:play 1s steps(10) infinite;-o-animation:play 1s steps(10) infinite;animation:play 1s steps(10) infinite}#sq_stats{clear:both;padding:20px 0;margin:0;height:auto}#sq_stats ul{text-align:center;margin-left:25px}#sq_stats li{float:left;width:25%;line-height:30px;margin-left:18px;margin-bottom:18px;padding:26px;min-height:62px;font-size:19px;text-shadow:1px 1px #f9f9f9;list-style:none;list-style-position:inside;text-align:left;background:#f8f9fa !important;box-shadow:1px 1px 3px 0 #ccc}#sq_stats .sq_stats_icon{float:left;width:30px;height:30px;margin:0 10px 0 0;background-size:100%;background-repeat:no-repeat}#sq_stats .sq_stats_value{font-size:16px;font-weight:400}#sq_stats .sq_stats_text{font-size:17px;line-height:27px;min-height:70px;font-weight:500}#sq_stats .sq_stats_link{font-size:12px;float:right;line-height:15px;margin-bottom:-20px;margin-top:15px;margin-right:-13px}#sq_stats .sq_stats_all_blogs{background-image:url("../img/logos/websites_92.png")}#sq_stats .sq_stats_lm_articles,#sq_stats .sq_stats_all_articles,#sq_stats .sq_stats_avg_articles{background-image:url("../img/logos/sla_92.png")}#sq_stats .sq_stats_all_researches{background-image:url("../img/logos/kr_92.png")}#sq_stats .sq_stats_all_briefcase{background-image:url("../img/logos/briefcase_92.png")}#sq_stats .sq_stats_top_ranking{background-image:url("../img/logos/ranking_92.png")}#sq_stats .sq_stats_lm_audit{background-image:url("../img/logos/audit_92.png")}#sq_wrap .sq_sm_menu{width:24px;position:relative}#sq_wrap .sq_sm_menu .fa-ellipsis-v{font-size:18px !important;color:#2680b4}#sq_wrap .sq_sm_menu .sm_icon_button{display:inline-block;position:relative;width:24px;height:24px;box-sizing:border-box;font-size:18px;color:#545454;text-align:center;cursor:pointer}#sq_wrap table tr:hover .sq_sm_menu{display:block}#sq_wrap .sq_sm_menu .sq_sm_dropdown{display:none;background:white;position:absolute;right:20px;top:0;z-index:100;min-width:200px;box-shadow:0 0 10px 1px #999}#sq_wrap .sq_sm_menu .sq_icons_small{display:inline-block;margin:0 5px;height:17px;width:17px;vertical-align:middle;float:none}#sq_wrap .sq_sm_menu .sq_sm_dropdown li,#sq_wrap .sq_sm_menu .sq_sm_dropdown li a,#sq_wrap .sq_sm_menu .sq_sm_dropdown li button{font-size:13px;cursor:pointer}#sq_wrap table tr div.sq_sm_menu:hover .sq_sm_dropdown{display:block}.flexcroll{scrollbar-face-color:#367cd2;scrollbar-shadow-color:#fff;scrollbar-highlight-color:#fff;scrollbar-3dlight-color:#fff;scrollbar-darkshadow-color:#fff;scrollbar-track-color:#fff;scrollbar-arrow-color:#fff}.flexcroll::-webkit-scrollbar{width:12px}.flexcroll::-webkit-scrollbar-track{-webkit-border-radius:2px;border-radius:2px}.flexcroll::-webkit-scrollbar-thumb{-webkit-border-radius:2px;border-radius:2px;background:rgba(171,171,171,0.8)}.form-group input.form-control,.form-group select.form-control,.form-group textarea.form-control{width:100%}.tooltip .arrow{left:auto !important;margin-left:inherit !important;bottom:inherit !important;z-index:inherit !important}.tooltip .arrow:after{content:""}
1
+ @import 'logo.css';@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}#update-nag,.notice-error,.update-nag,.updated,.show-settings,.screen-meta-toggle,.notice-warning,div.fs-notice.updated,div.fs-notice.success,div.fs-notice.promotion,div.error,.notice:not(.sq_notice){display:none !important}#wpbody-content{float:none !important}#wpfooter{display:none}#wpwrap{background:white !important}body{font-family:'Open Sans',Arial,Helvetica,sans-serif;font-size:14px;background-color:#fff}#wpcontent{padding:0}#wpcontent .bg-light{background-color:#fdfdfd !important}#wpcontent .bg-briefcase{background-color:#e1f5e3 !important}#wpcontent .content{min-width:600px;max-width:1020px;margin:auto}#wpcontent h3{font-weight:400;line-height:50px}#wpcontent .card .card-title{margin:0;color:#4f1440;font-weight:400}#wpcontent .sq_deactivated{position:relative}#wpcontent .sq_deactivated:before{content:" ";position:absolute;height:calc(100% + 20px);width:100%;background:#f1f1f1;opacity:.7;top:-10px;z-index:1000;cursor:pointer;border-radius:6px}#wpcontent .sq_deactivated_label{position:absolute !important;z-index:1001;right:0}.sq_fixed{position:fixed;z-index:100;top:32px;left:0;margin:0;border-top:2px solid white;border-bottom:2px solid white}.sq_notice{top:28px;text-align:center;width:100%}.sq_notice.sq_notice>div{display:block;margin:0 !important;width:100% !important;line-height:40px;background-color:lightgoldenrodyellow}.sq_notice.sq_notice>div.sq_success{background-color:#20bc49}.sq_notices{font-size:13px;color:#555}.sq_error{background-color:darkred !important;color:white !important;text-align:center;font-size:15px;font-weight:bold}.sq_success{background-color:#20bc49 !important;line-height:30px;text-align:center;font-size:16px;font-weight:bold;color:white}.sq_success a{color:#4f47be;text-decoration:none}.sq_deactivated{opacity:.3}#sq_wrap .flex-grow-1{min-width:620px}#sq_wrap .small{font-size:90%;line-height:20px}#sq_wrap .sq_nav{flex:0 0 225px}#sq_wrap .row>div.input-group{display:flex !important}#sq_wrap .row{float:none !important;width:auto !important}#sq_wrap .btn-primary{background-color:#2680b4 !important;border-color:transparent}#sq_wrap .btn{border-radius:0}#sq_wrap .btn-primary:hover{background-color:#256d9c !important}#sq_wrap .input-group>button.btn,#sq_wrap .input-group>input{max-height:47px}#sq_wrap .bg-title{margin:2px;background-color:#f8f9fa !important;color:#505663 !important}#sq_wrap .bg-light{background-color:#fdfdfd !important}#sq_wrap .bg-google{background-color:#e37400 !important;color:white !important}#sq_wrap .bg-googlesc{background-color:#455a64 !important;color:white !important}#sq_wrap .bg-primary{background-color:#2680b4 !important;color:white !important}#sq_wrap .bg-warning{background-color:#f7681a !important;color:white !important}button.btn-green{color:#fff;background-color:#28a745 !important;border-color:#28a745 !important}button.btn-success{color:#fff;background-color:#589ee4;border-color:transparent}#sq_wrap .table .thead-dark th{color:#fff;background-color:#948691;border-color:#897b86;z-index:1;top:0;position:sticky}#sq_wrap .table-striped tbody tr.odd{background-color:rgba(151,147,147,0.05)}#sq_wrap .table-striped tbody tr.even{background-color:#fff}#sq_wrap .table-hover tbody tr:hover{background-color:rgba(230,226,226,0.03)}#sq_wrap .text-link{color:#2680b4 !important}#sq_wrap .sq_row{position:relative;flex:1 1 auto}#sq_wrap .sq_col_side{flex:0 0 300px}#sq_wrap button.btn-success{color:#fff;background-color:#589ee4;border-color:transparent}#sq_wrap button.btn-success:hover{background-color:#4c81bd}#sq_wrap .btn-primary:not(:disabled):not(.disabled).active,#sq_wrap .btn-primary:not(:disabled):not(.disabled):active,#sq_wrap .show>.btn-primary.dropdown-toggle{background-color:#2777aa}#sq_wrap .btn-primary:hover{background-color:#2674a7;border-color:transparent}#sq_wrap .btn-warning{background-color:#f2ca4c;border-color:transparent}#sq_wrap .btn-warning:hover{background-color:#e6be4b;border-color:transparent}#sq_wrap .bg-cta{background-color:#694861 !important}#sq_wrap a:not(.btn):not(.sq-btn):not(.sq-nav-link){color:#f16112;text-decoration:none}#sq_wrap a:not(.btn):not(.sq-btn):not(.sq-nav-link):hover{color:#f14644}#sq_wrap h4 .fa:before{margin-right:3px}.wp-admin #sq_wrap select{padding:.375em .75em;line-height:1.5;height:calc(2.25em + 2px);vertical-align:middle;background-color:#e5f5dd}.wp-admin #sq_seosettings_bulkseo select{height:calc(2.55em + 2px)}.wp-admin #sq_wrap select.bg-input{height:calc(2.875em + 2px);padding:.5em 1em;font-size:1.25em;line-height:1.5;border-radius:.3em;background-color:#e5f5dd}.wp-admin #sq_wrap input[type=text]:not(.wp-color-picker),.wp-admin #sq_wrap textarea{background-color:#e5f5dd;padding:.680em .75em}.sq_icons{float:left;width:35px;height:35px;-webkit-filter:invert(40%) grayscale(100%) brightness(40%) sepia(100%) hue-rotate(-50deg) saturate(400%) contrast(2);filter:grayscale(100%) brightness(40%) sepia(100%) hue-rotate(-50deg) saturate(600%) contrast(0.8)}.sq_icons_small{display:block;float:left;margin:0 10px 0 0;height:30px;width:30px}.sq_icons.sq_icon_package{float:none;display:inline-block;margin:auto;background-repeat:no-repeat;background-position:center;background-size:70%;background-color:#f5922f;background-image:url("../img/logos/package.png")}.sq_kr_icon{background:transparent url('../img/logos/kr_92.png') no-repeat;background-size:100%}.sq_krfound_icon{background:transparent url('../img/logos/briefcase_92.png') no-repeat;background-size:100%}.sq_audits_icon{background:transparent url('../img/logos/audit_92.png') no-repeat;background-size:100%}.sq_briefcase_icon{background:transparent url('../img/logos/briefcase_92.png') no-repeat;background-size:100%}.sq_labels_icon{background:transparent url('../img/logos/labels_92.png') no-repeat;background-size:100%}.sq_suggested_icon{background:transparent url('../img/logos/suggested_92.png') no-repeat;background-size:100%}.sq_history_icon{background:transparent url('../img/logos/history_92.png') no-repeat;background-size:100%}.sq_audit_icon{background:transparent url('../img/logos/audit_92.png') no-repeat;background-size:100%}.sq_ranks_icon{background:transparent url('../img/logos/ranking_92.png') no-repeat;background-size:100%}.sq_rankings_icon{background:transparent url('../img/logos/ranking_92.png') no-repeat;background-size:100%}.sq_sla_icon{background:transparent url('../img/logos/sla_92.png') no-repeat;background-size:100%}.sq_focuspages_icon{background:transparent url('../img/logos/focuspages_92.png') no-repeat;background-size:100%}.sq_bulkseo_icon{background:transparent url('../img/logos/bulkseo_92.png') no-repeat;background-size:100%}.sq_boostpages_icon{background:transparent url('../img/logos/boostpages_92.png') no-repeat;background-size:100%}.sq_addpage_icon{background:transparent url('../img/logos/addpage_92.png') no-repeat;background-size:100%}.sq_settings_icon{background:transparent url('../img/logos/settings_92.png') no-repeat;background-size:100%}.sq_squirrly_icon{background:transparent url(../img/logos/squirrly.png) no-repeat;background-size:100%;height:42px;filter:none;-webkit-filter:none}#sq_wrap .page-item.active .page-link{background-color:#bde2f1;border-color:transparent}#sq_preloader{position:absolute;height:100%;width:100%;z-index:1000;background-color:#fff !important;opacity:.5}.sq_loading{height:60px;background:transparent url('../img/loading.gif') no-repeat center !important}@-webkit-keyframes play{from{background-position:0 0}to{background-position:-400px}}@-moz-keyframes play{from{background-position:0 0}to{background-position:-400px}}@-ms-keyframes play{from{background-position:0 0}to{background-position:-400px}}@-o-keyframes play{from{background-position:0 0}to{background-position:-400px}}@keyframes play{from{background-position:0 0}to{background-position:-400px}}.sq_minloading{position:relative;opacity:.5}.sq_minloading:after{position:absolute !important;right:calc(50% - 10px) !important;top:calc(50% - 8px) !important;display:block !important;float:right !important;line-height:30px !important;content:"" !important;padding:0 0 !important;margin:0 0 0 5px !important;height:16px !important;width:20px !important;background:transparent url('../img/minloading.png') no-repeat !important;-webkit-animation:play 1s steps(10) infinite;-moz-animation:play 1s steps(10) infinite;-o-animation:play 1s steps(10) infinite;animation:play 1s steps(10) infinite}#sq_stats{clear:both;padding:20px 0;margin:0;height:auto}#sq_stats ul{text-align:center;margin-left:25px}#sq_stats li{float:left;width:25%;line-height:30px;margin-left:18px;margin-bottom:18px;padding:26px;min-height:62px;font-size:19px;text-shadow:1px 1px #f9f9f9;list-style:none;list-style-position:inside;text-align:left;background:#f8f9fa !important;box-shadow:1px 1px 3px 0 #ccc}#sq_stats .sq_stats_icon{float:left;width:30px;height:30px;margin:0 10px 0 0;background-size:100%;background-repeat:no-repeat}#sq_stats .sq_stats_value{font-size:16px;font-weight:400}#sq_stats .sq_stats_text{font-size:17px;line-height:27px;min-height:70px;font-weight:500}#sq_stats .sq_stats_link{font-size:12px;float:right;line-height:15px;margin-bottom:-20px;margin-top:15px;margin-right:-13px}#sq_stats .sq_stats_all_blogs{background-image:url("../img/logos/websites_92.png")}#sq_stats .sq_stats_lm_articles,#sq_stats .sq_stats_all_articles,#sq_stats .sq_stats_avg_articles{background-image:url("../img/logos/sla_92.png")}#sq_stats .sq_stats_all_researches{background-image:url("../img/logos/kr_92.png")}#sq_stats .sq_stats_all_briefcase{background-image:url("../img/logos/briefcase_92.png")}#sq_stats .sq_stats_top_ranking{background-image:url("../img/logos/ranking_92.png")}#sq_stats .sq_stats_lm_audit{background-image:url("../img/logos/audit_92.png")}#sq_wrap .sq_sm_menu{width:24px;position:relative}#sq_wrap .sq_sm_menu .fa-ellipsis-v{font-size:18px !important;color:#2680b4}#sq_wrap .sq_sm_menu .sm_icon_button{display:inline-block;position:relative;width:24px;height:24px;box-sizing:border-box;font-size:18px;color:#545454;text-align:center;cursor:pointer}#sq_wrap table tr:hover .sq_sm_menu{display:block}#sq_wrap .sq_sm_menu .sq_sm_dropdown{display:none;background:white;position:absolute;right:20px;top:0;z-index:100;min-width:200px;box-shadow:0 0 10px 1px #999}#sq_wrap .sq_sm_menu .sq_icons_small{display:inline-block;margin:0 5px;height:17px;width:17px;vertical-align:middle;float:none}#sq_wrap .sq_sm_menu .sq_sm_dropdown li,#sq_wrap .sq_sm_menu .sq_sm_dropdown li a,#sq_wrap .sq_sm_menu .sq_sm_dropdown li button{font-size:13px;cursor:pointer}#sq_wrap table tr div.sq_sm_menu:hover .sq_sm_dropdown{display:block}.flexcroll{scrollbar-face-color:#367cd2;scrollbar-shadow-color:#fff;scrollbar-highlight-color:#fff;scrollbar-3dlight-color:#fff;scrollbar-darkshadow-color:#fff;scrollbar-track-color:#fff;scrollbar-arrow-color:#fff}.flexcroll::-webkit-scrollbar{width:12px}.flexcroll::-webkit-scrollbar-track{-webkit-border-radius:2px;border-radius:2px}.flexcroll::-webkit-scrollbar-thumb{-webkit-border-radius:2px;border-radius:2px;background:rgba(171,171,171,0.8)}.form-group input.form-control,.form-group select.form-control,.form-group textarea.form-control{width:100%}.tooltip .arrow{left:auto !important;margin-left:inherit !important;bottom:inherit !important;z-index:inherit !important}.tooltip .arrow:after{content:""}.fade.in{opacity:1}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-backdrop .fade .in{opacity:.5 !important}.modal-backdrop.fade{opacity:.5 !important}
view/assets/css/jorney.css CHANGED
@@ -24,7 +24,7 @@ ul.stepper.horizontal:before {
24
 
25
 
26
  ul.stepper.horizontal .step {
27
- position: static;
28
  margin: 0;
29
  width: 100%;
30
  display: -webkit-box;
24
 
25
 
26
  ul.stepper.horizontal .step {
27
+ position: relative;
28
  margin: 0;
29
  width: 100%;
30
  display: -webkit-box;
view/assets/css/jorney.min.css CHANGED
@@ -1 +1 @@
1
- ul.stepper.horizontal{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden}ul.stepper.horizontal:before{content:'';background-color:transparent;width:100%;min-height:5.25rem;position:absolute;left:-3px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px}ul.stepper.horizontal .step{position:static;margin:0;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:5.25rem !important}ul.stepper.horizontal .step:not(:last-of-type):after{content:'';position:static;display:inline-block;width:100%;height:.0625rem}ul.stepper.horizontal>.step:last-of-type,ul.stepper.horizontal>.step[data-last=true]{width:auto !important}ul.stepper.horizontal>.step.active:not(:last-of-type):after{content:'';position:static;display:inline-block;width:100%;height:.0625rem}ul.stepper.horizontal .step.active .step-title:before{background-color:#4285f4}ul.stepper.horizontal .step.done .step-title:before{font-family:'Font Awesome 5 Free';font-weight:900;content:'\f00c';font-size:1rem;background:#00c851}ul.stepper.horizontal .step.wrong .step-title:before{font-family:'Font Awesome 5 Free';font-weight:900;content:'\f071';font-size:1.1rem;background-color:#ff3547}ul.stepper.horizontal .step-title{line-height:25px;margin:0;padding:0 5px;display:inline-block;white-space:nowrap;text-align:center;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;-ms-flex-negative:0;-webkit-flex-shrink:0;flex-shrink:0}ul.stepper.horizontal .step:before{content:none}ul.stepper.horizontal .step-title .fa:before{font-size:25px}ul.stepper.horizontal .step-title:after{top:.9375rem}ul.stepper.horizontal .step-new-content{position:absolute;height:calc(100% - 84px);top:6rem;left:0;width:100%;overflow-y:auto;overflow-x:hidden;margin:0;padding:1.25rem 1.25rem 4.75rem}ul.stepper.horizontal .step-actions{position:absolute;bottom:0;left:0;width:100%;padding:20px;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}ul.stepper.horizontal .step-actions .btn-flat:not(:last-child),ul.stepper.horizontal .step-actions .btn-large:not(:last-child),ul.stepper.horizontal .step-actions .btn:not(:last-child){margin-left:.3125rem;margin-right:0}ul.stepper.horizontal .step-actions,ul.stepper.horizontal .step-new-content{padding-left:2.5rem;padding-right:2.5rem}
1
+ ul.stepper.horizontal{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden}ul.stepper.horizontal:before{content:'';background-color:transparent;width:100%;min-height:5.25rem;position:absolute;left:-3px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px}ul.stepper.horizontal .step{position:relative;margin:0;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:5.25rem !important}ul.stepper.horizontal .step:not(:last-of-type):after{content:'';position:static;display:inline-block;width:100%;height:.0625rem}ul.stepper.horizontal>.step:last-of-type,ul.stepper.horizontal>.step[data-last=true]{width:auto !important}ul.stepper.horizontal>.step.active:not(:last-of-type):after{content:'';position:static;display:inline-block;width:100%;height:.0625rem}ul.stepper.horizontal .step.active .step-title:before{background-color:#4285f4}ul.stepper.horizontal .step.done .step-title:before{font-family:'Font Awesome 5 Free';font-weight:900;content:'\f00c';font-size:1rem;background:#00c851}ul.stepper.horizontal .step.wrong .step-title:before{font-family:'Font Awesome 5 Free';font-weight:900;content:'\f071';font-size:1.1rem;background-color:#ff3547}ul.stepper.horizontal .step-title{line-height:25px;margin:0;padding:0 5px;display:inline-block;white-space:nowrap;text-align:center;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;-ms-flex-negative:0;-webkit-flex-shrink:0;flex-shrink:0}ul.stepper.horizontal .step:before{content:none}ul.stepper.horizontal .step-title .fa:before{font-size:25px}ul.stepper.horizontal .step-title:after{top:.9375rem}ul.stepper.horizontal .step-new-content{position:absolute;height:calc(100% - 84px);top:6rem;left:0;width:100%;overflow-y:auto;overflow-x:hidden;margin:0;padding:1.25rem 1.25rem 4.75rem}ul.stepper.horizontal .step-actions{position:absolute;bottom:0;left:0;width:100%;padding:20px;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}ul.stepper.horizontal .step-actions .btn-flat:not(:last-child),ul.stepper.horizontal .step-actions .btn-large:not(:last-child),ul.stepper.horizontal .step-actions .btn:not(:last-child){margin-left:.3125rem;margin-right:0}ul.stepper.horizontal .step-actions,ul.stepper.horizontal .step-new-content{padding-left:2.5rem;padding-right:2.5rem}
view/assets/css/rankings.css CHANGED
@@ -6,6 +6,10 @@
6
  display: block;
7
  }
8
 
 
 
 
 
9
  #sq_ranks table.table-ranks td:first-child{
10
  width: 25%;
11
  font-weight: bold;
6
  display: block;
7
  }
8
 
9
+ #sq_ranks table.table-ranks td{
10
+ word-break: break-word;
11
+ }
12
+
13
  #sq_ranks table.table-ranks td:first-child{
14
  width: 25%;
15
  font-weight: bold;
view/assets/css/rankings.min.css CHANGED
@@ -1 +1 @@
1
- #sq_ranks table.table-ranks .sq_serp_refresh{display:none}#sq_ranks table.table-ranks tr:hover .sq_serp_refresh{display:block}#sq_ranks table.table-ranks td:first-child{width:25%;font-weight:bold;color:#428ea1}#sq_ranks table.table-ranks td:nth-child(2){width:300px;max-width:400px;font-size:13px}#sq_ranks table.table-ranks td:nth-child(3){width:100px;font-weight:bold;font-size:15px;color:#428ea1}#sq_ranks table.table-ranks td:nth-child(3) .fa:before{margin:0 !important}#sq_ranks table.table-ranks td:nth-child(3) .fa.fa-sort-up:before{vertical-align:middle}#sq_ranks table.table-ranks td:nth-child(4){width:100px}#sq_ranks table.table-ranks td:last-child{width:10px;padding:14px 0 0 0}#sq_ranks button.btn-success{color:#fff;background-color:#589ee4;border-color:transparent}svg>g>g:last-child{pointer-events:none}
1
+ #sq_ranks table.table-ranks .sq_serp_refresh{display:none}#sq_ranks table.table-ranks tr:hover .sq_serp_refresh{display:block}#sq_ranks table.table-ranks td{word-break:break-word}#sq_ranks table.table-ranks td:first-child{width:25%;font-weight:bold;color:#428ea1}#sq_ranks table.table-ranks td:nth-child(2){width:300px;max-width:400px;font-size:13px}#sq_ranks table.table-ranks td:nth-child(3){width:100px;font-weight:bold;font-size:15px;color:#428ea1}#sq_ranks table.table-ranks td:nth-child(3) .fa:before{margin:0 !important}#sq_ranks table.table-ranks td:nth-child(3) .fa.fa-sort-up:before{vertical-align:middle}#sq_ranks table.table-ranks td:nth-child(4){width:100px}#sq_ranks table.table-ranks td:last-child{width:10px;padding:14px 0 0 0}#sq_ranks button.btn-success{color:#fff;background-color:#589ee4;border-color:transparent}svg>g>g:last-child{pointer-events:none}
view/assets/css/switchery.css CHANGED
@@ -172,4 +172,8 @@
172
 
173
  .dropdown-menu {
174
  margin-top: .75em
 
 
 
 
175
  }
172
 
173
  .dropdown-menu {
174
  margin-top: .75em
175
+ }
176
+
177
+ .sq-switch .offset-1{
178
+ margin-left: 70px !important;
179
  }
view/assets/css/switchery.min.css CHANGED
@@ -1 +1 @@
1
- .sq-switch{font-size:1em;position:relative;box-shadow:none;height:auto;background:inherit}.sq-switch input{position:absolute;height:1px;width:1px;background:0;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;padding:0}.sq-switch input + label{position:relative;min-width:calc(calc(2.375em * .8) * 2);border-radius:calc(2.375em * .8);height:calc(2.375em * .8);line-height:calc(2.375em * .8);font-size:16px;font-weight:bold;display:inline-block;cursor:pointer;outline:0;user-select:none;vertical-align:middle;text-indent:calc(calc(calc(2.375em * .8) * 2) + .5em)}.sq-switch input + label::after,.sq-switch input + label::before{content:'';position:absolute;top:0;left:0;width:calc(calc(2.375em * .8) * 2);bottom:0;display:block}.sq-switch input + label::before{right:0;background-color:#dee2e6;border-radius:calc(2.375em * .8);transition:.2s all}.sq-switch.redgreen input + label::before{background-color:#9c2032}.sq-switch input + label::after{top:2px;left:2px;width:calc(calc(2.375em * .8) - calc(2px * 2));height:calc(calc(2.375em * .8) - calc(2px * 2));border-radius:50%;background-color:#fff;transition:.2s all}.sq-switch input:checked + label::before{background-color:#488698}.sq-switch.redgreen input:checked + label::before{background-color:#20bc49}.sq-switch input:checked + label::after{margin-left:calc(2.375em * .8)}.sq-switch input:focus + label::before{outline:0;box-shadow:0 0 0 .2em rgba(0,136,221,.25)}.sq-switch input:disabled + label{color:#868e96;cursor:not-allowed}.sq-switch input:disabled + label::before{background-color:#e9ecef}.sq-switch.sq-switch-sm{font-size:.875em}.sq-switch.sq-switch-sm input + label{min-width:calc(calc(1.9375em * .8) * 2);height:calc(1.9375em * .8);line-height:calc(1.9375em * .8);text-indent:calc(calc(calc(2.1375em * .8) * 2) + .5em)}.sq-switch.sq-switch-sm input + label::before{width:calc(calc(1.9375em * .8) * 2)}.sq-switch.sq-switch-sm input + label::after{width:calc(calc(1.9375em * .8) - calc(2px * 2));height:calc(calc(1.9375em * .8) - calc(2px * 2))}.sq-switch.sq-switch-sm input:checked + label::after{margin-left:calc(1.9375em * .8)}.sq-switch.sq-switch-xxs{font-size:.7em}.sq-switch.sq-switch-xxs input + label{min-width:calc(calc(0.9375em * .8) * 2);height:calc(0.9375em * .8);line-height:calc(0.9375em * .8);text-indent:calc(calc(calc(1.1375em * .8) * 2) + .5em)}.sq-switch.sq-switch-xxs input + label::before{width:calc(calc(0.9375em * .8) * 2)}.sq-switch.sq-switch-xxs input + label::after{width:calc(calc(0.9375em * .8) - calc(2px * 2));height:calc(calc(0.9375em * .8) - calc(2px * 2))}.sq-switch.sq-switch-xxs input:checked + label::after{margin-left:calc(0.9375em * .8)}.sq-switch.sq-switch-lg{font-size:1.25em}.sq-switch.sq-switch-lg input + label{min-width:calc(calc(3em * .8) * 2);height:calc(3em * .8);line-height:calc(3em * .8);text-indent:calc(calc(calc(3em * .8) * 2) + .5em)}.sq-switch.sq-switch-lg input + label::before{width:calc(calc(3em * .8) * 2)}.sq-switch.sq-switch-lg input + label::after{width:calc(calc(3em * .8) - calc(2px * 2));height:calc(calc(3em * .8) - calc(2px * 2))}.sq-switch.sq-switch-lg input:checked + label::after{margin-left:calc(3em * .8)}.sq-switch + .sq-switch{margin-left:1em}.dropdown-menu{margin-top:.75em}
1
+ .sq-switch{font-size:1em;position:relative;box-shadow:none;height:auto;background:inherit}.sq-switch input{position:absolute;height:1px;width:1px;background:0;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;padding:0}.sq-switch input + label{position:relative;min-width:calc(calc(2.375em * .8) * 2);border-radius:calc(2.375em * .8);height:calc(2.375em * .8);line-height:calc(2.375em * .8);font-size:16px;font-weight:bold;display:inline-block;cursor:pointer;outline:0;user-select:none;vertical-align:middle;text-indent:calc(calc(calc(2.375em * .8) * 2) + .5em)}.sq-switch input + label::after,.sq-switch input + label::before{content:'';position:absolute;top:0;left:0;width:calc(calc(2.375em * .8) * 2);bottom:0;display:block}.sq-switch input + label::before{right:0;background-color:#dee2e6;border-radius:calc(2.375em * .8);transition:.2s all}.sq-switch.redgreen input + label::before{background-color:#9c2032}.sq-switch input + label::after{top:2px;left:2px;width:calc(calc(2.375em * .8) - calc(2px * 2));height:calc(calc(2.375em * .8) - calc(2px * 2));border-radius:50%;background-color:#fff;transition:.2s all}.sq-switch input:checked + label::before{background-color:#488698}.sq-switch.redgreen input:checked + label::before{background-color:#20bc49}.sq-switch input:checked + label::after{margin-left:calc(2.375em * .8)}.sq-switch input:focus + label::before{outline:0;box-shadow:0 0 0 .2em rgba(0,136,221,.25)}.sq-switch input:disabled + label{color:#868e96;cursor:not-allowed}.sq-switch input:disabled + label::before{background-color:#e9ecef}.sq-switch.sq-switch-sm{font-size:.875em}.sq-switch.sq-switch-sm input + label{min-width:calc(calc(1.9375em * .8) * 2);height:calc(1.9375em * .8);line-height:calc(1.9375em * .8);text-indent:calc(calc(calc(2.1375em * .8) * 2) + .5em)}.sq-switch.sq-switch-sm input + label::before{width:calc(calc(1.9375em * .8) * 2)}.sq-switch.sq-switch-sm input + label::after{width:calc(calc(1.9375em * .8) - calc(2px * 2));height:calc(calc(1.9375em * .8) - calc(2px * 2))}.sq-switch.sq-switch-sm input:checked + label::after{margin-left:calc(1.9375em * .8)}.sq-switch.sq-switch-xxs{font-size:.7em}.sq-switch.sq-switch-xxs input + label{min-width:calc(calc(0.9375em * .8) * 2);height:calc(0.9375em * .8);line-height:calc(0.9375em * .8);text-indent:calc(calc(calc(1.1375em * .8) * 2) + .5em)}.sq-switch.sq-switch-xxs input + label::before{width:calc(calc(0.9375em * .8) * 2)}.sq-switch.sq-switch-xxs input + label::after{width:calc(calc(0.9375em * .8) - calc(2px * 2));height:calc(calc(0.9375em * .8) - calc(2px * 2))}.sq-switch.sq-switch-xxs input:checked + label::after{margin-left:calc(0.9375em * .8)}.sq-switch.sq-switch-lg{font-size:1.25em}.sq-switch.sq-switch-lg input + label{min-width:calc(calc(3em * .8) * 2);height:calc(3em * .8);line-height:calc(3em * .8);text-indent:calc(calc(calc(3em * .8) * 2) + .5em)}.sq-switch.sq-switch-lg input + label::before{width:calc(calc(3em * .8) * 2)}.sq-switch.sq-switch-lg input + label::after{width:calc(calc(3em * .8) - calc(2px * 2));height:calc(calc(3em * .8) - calc(2px * 2))}.sq-switch.sq-switch-lg input:checked + label::after{margin-left:calc(3em * .8)}.sq-switch + .sq-switch{margin-left:1em}.dropdown-menu{margin-top:.75em}.sq-switch .offset-1{margin-left:70px !important}
view/assets/js/global.js CHANGED
@@ -299,6 +299,9 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
299
 
300
 
301
  $(document).ready(function () {
 
 
 
302
  $('#sq_preloader').remove();
303
 
304
  $('.sq_trend:visible').each(function () {
@@ -332,6 +335,10 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
332
  $('button.show_advanced').show();
333
  });
334
 
 
 
 
 
335
  $(document).on('keyup', function (event) {
336
  var keycode = event.keyCode || event.which;
337
  if (keycode == 27) {
@@ -348,4 +355,9 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
348
 
349
  });
350
 
351
- })(jQuery);
 
 
 
 
 
299
 
300
 
301
  $(document).ready(function () {
302
+ clearTimeout(sq_loading_timeout);
303
+ SQ_DEBUG && console.log('sq_GlobalInit');
304
+
305
  $('#sq_preloader').remove();
306
 
307
  $('.sq_trend:visible').each(function () {
335
  $('button.show_advanced').show();
336
  });
337
 
338
+ $("button[type=submit]").on("click", function () {
339
+ $(this).addClass("sq_minloading");
340
+ });
341
+
342
  $(document).on('keyup', function (event) {
343
  var keycode = event.keyCode || event.which;
344
  if (keycode == 27) {
355
 
356
  });
357
 
358
+ var sq_loading_timeout = setTimeout(function () {
359
+ alert('A javascript error stops Squirrly from loading. Please check the browser console for errors.');
360
+ }, 10000);
361
+
362
+
363
+ })(jQuery);
view/assets/js/global.min.js CHANGED
@@ -1,11 +1,13 @@
1
- if("undefined"===typeof SQ_DEBUG)var SQ_DEBUG=!1;
2
- (function(a){a.sq_setCookie=function(b,c){c=a.sq_utf8Encode(c);c=c.replace(RegExp("\\\\","g"),"");document.cookie=b+"="+c+"; expires=1440; path=/"};a.sq_utf8Encode=function(b){var c=[];b=a.str2utf8ba(b);for(var e=b.length,d=0;d<e;d++)c.push(String.fromCharCode(b[d]));return c.join("")};a.sq_getCookie=function(b){b+="=";for(var a=document.cookie.split(";"),e=0;e<a.length;e++){for(var d=a[e];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(b))return d.substring(b.length,d.length)}return null};
3
- a.sq_getHashParam=function(b){var a=location.href.split("#");return 2<=a.length&&(a.shift(),a=a.join("#"),b=(new RegExp("[\\?&#]*"+b+"=([^&#]*)")).exec(a))?b[1]||0:!1};a.sq_setHashParam=function(a,c){var e=location.href.split("#");if(2<=e.length){for(var d=!0,h=e.shift(),f=e.join("#"),e=encodeURIComponent(a)+"=",f=f.split(/[&;]/g),g=f.length;0<g--;)if(-1!==f[g].lastIndexOf(e,0)||""===f[g]){f[g]=f[g].replace(f[g],e+c);d=!1;break}d&&f.push(e+c);location.href=h+"#"+f.join("&")}else location.href+="#"+
4
- a+"="+c};a.sq_getParam=function(a){var c=window.location.search.substring(1).split("&"),e,d;for(d=0;d<c.length;d++)if(e=c[d].split("="),e[0]===a)return void 0===e[1]?!0:decodeURIComponent(e[1]);return!1};a.sq_loadChart=function(a){new Chart(a,{type:"bar",data:{labels:" ".split(" "),datasets:[{data:a.data("values").split(","),borderWidth:0}]},options:{tooltips:{enabled:!1},legend:{display:!1},layout:{padding:{left:0,right:0,top:0,bottom:0}},title:{display:!1},scales:{yAxes:[{display:!1,ticks:{beginAtZero:!0,
5
- min:0,max:1}}],xAxes:[{display:!1,ticks:{beginAtZero:!0}}]}}})};a.sq_showMessage=function(b,c){console.log("sq_showMessage");a(".sq_alert").remove();-1==b.indexOf("<div>")&&(b=a('<div class="sq_alert position-fixed fixed-top text-center text-white bg-success m-0 p-4 border border-white sq-position-fixed sq-fixed-top sq-text-center sq-text-white sq-bg-success sq-m-0 sq-p-4 sq-border sq-border-white" style="top: 33px !important;">'+b+"</div>"));a("body").prepend(b);"undefined"===typeof c&&(c=2E3);setTimeout(function(){b.remove()},
6
- c);return b};a.fn.sq_addBriefcase=function(){var b=this;b.addClass("sq_minloading");a.post(sqQuery.ajaxurl,{action:"sq_briefcase_addkeyword",keyword:b.data("keyword"),doserp:parseInt(b.data("doserp")),hidden:parseInt(b.data("hidden")),sq_nonce:sqQuery.nonce}).done(function(c){b.removeClass("sq_minloading");"undefined"!==typeof c.message?(a.sq_showMessage(c.message).addClass("sq_success"),b.closest("tr").addClass("bg-briefcase")):"undefined"!==typeof c.error?(a.sq_showMessage(c.error),b.removeClass("sq_minloading")):
7
- (b.removeClass("sq_minloading"),location.reload())}).fail(function(){b.removeClass("sq_minloading")})};a.fn.sq_ajaxCallListen=function(){var b=this,c=a("#"+b.data("input")),e=b.data("confirm"),d=b.data("action"),h=b.data("redirect"),f=b.data("name"),g=0;c.length||(c=b);if("undefined"===typeof e||confirm(e))c.is("input")&&"checkbox"===c.attr("type")?c.is(":checked")&&(g=c.val()):c.is("select")?g=c.find("option:selected").val():c.is("input")&&""!==c.val()&&(g=c.val()),b.addClass("sq_minloading"),""!==
8
- d&&""!==g&&a.post(sqQuery.ajaxurl,{action:d,input:f,value:g,referal:location.href,sq_nonce:sqQuery.nonce}).done(function(c){if("undefined"!==typeof c.data){""===c.data?a("#wpbody-content").prepend("Saved"):a("#wpbody-content").prepend(c.data);if(""!==c.assistant&&c.assistant_dest){var d=a(".sq_assistant").find("ul:visible").attr("id");a(c.assistant_dest).html(c.assistant);d&&a("#"+d).show()}setTimeout(function(){b.removeClass("sq_minloading");"undefined"!==typeof h?window.open(h,"_blank"):location.reload()},
9
- 1E3)}else"undefined"!==typeof c.error?(a.sq_showMessage(c.error),b.removeClass("sq_minloading")):(b.removeClass("sq_minloading"),location.reload())}).fail(function(){b.removeClass("sq_minloading")},"json")};a(document).ready(function(){a("#sq_preloader").remove();a(".sq_trend:visible").each(function(){a.sq_loadChart(a(this))});a(".sq_kr_research").on("show.bs.modal",function(){a.sq_loadChart(a(this).find(".sq_trend"))});0<a(".sq_save_ajax").length&&(a(".sq_save_ajax").find("input").on("change",function(){a(this).sq_ajaxCallListen()}),
10
- a(".sq_save_ajax").find("button").on("click",function(){a(this).sq_ajaxCallListen()}));a("button.show_advanced").on("click",function(){a(this).hide();a(".sq_advanced").show();a("button.hide_advanced").show()});a("button.hide_advanced").on("click",function(){a(this).hide();a(".sq_advanced").hide();a("button.show_advanced").show()});a(document).on("keyup",function(b){27==(b.keyCode||b.which)&&(a(".modal").hasClass("show")?a(".modal").modal("hide"):confirm("Leave Squirrly Settings?")&&(location.href=
11
- a("#sq_btn_toolbar_close").find("a").attr("href")))})})})(jQuery);
 
 
1
+ var SQ_DEBUG,$jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,f,b){a instanceof String&&(a=String(a));for(var c=a.length,e=0;e<c;e++){var d=a[e];if(f.call(b,d,e,a))return{i:e,v:d}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,f,b){a!=Array.prototype&&a!=Object.prototype&&(a[f]=b.value)};
2
+ $jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(a,f,b,c){if(f){b=$jscomp.global;a=a.split(".");for(c=0;c<a.length-1;c++){var e=a[c];e in b||(b[e]={});b=b[e]}a=a[a.length-1];c=b[a];f=f(c);f!=c&&null!=f&&$jscomp.defineProperty(b,a,{configurable:!0,writable:!0,value:f})}};
3
+ $jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,b){return $jscomp.findInternal(this,a,b).v}},"es6","es3");"undefined"===typeof SQ_DEBUG&&(SQ_DEBUG=!1);
4
+ (function(a){a.sq_setCookie=function(b,c){c=a.sq_utf8Encode(c);c=c.replace(/\\/g,"");document.cookie=b+"="+c+"; expires=1440; path=/"};a.sq_utf8Encode=function(b){var c=[];b=a.str2utf8ba(b);for(var e=b.length,d=0;d<e;d++)c.push(String.fromCharCode(b[d]));return c.join("")};a.sq_getCookie=function(a){a+="=";for(var b=document.cookie.split(";"),e=0;e<b.length;e++){for(var d=b[e];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};a.sq_getHashParam=
5
+ function(a){var b=location.href.split("#");return 2<=b.length&&(b.shift(),b=b.join("#"),a=(new RegExp("[\\?&#]*"+a+"=([^&#]*)")).exec(b))?a[1]||0:!1};a.sq_setHashParam=function(a,c){var b=location.href.split("#");if(2<=b.length){var d=!0,f=b.shift();b=b.join("#");a=encodeURIComponent(a)+"=";b=b.split(/[&;]/g);for(var g=b.length;0<g--;)if(-1!==b[g].lastIndexOf(a,0)||""===b[g]){b[g]=b[g].replace(b[g],a+c);d=!1;break}d&&b.push(a+c);location.href=f+"#"+b.join("&")}else location.href+="#"+a+"="+c};a.sq_getParam=
6
+ function(a){var b=window.location.search.substring(1).split("&"),e;for(e=0;e<b.length;e++){var d=b[e].split("=");if(d[0]===a)return void 0===d[1]?!0:decodeURIComponent(d[1])}return!1};a.sq_loadChart=function(a){new Chart(a,{type:"bar",data:{labels:" ".split(" "),datasets:[{data:a.data("values").split(","),borderWidth:0}]},options:{tooltips:{enabled:!1},legend:{display:!1},layout:{padding:{left:0,right:0,top:0,bottom:0}},title:{display:!1},scales:{yAxes:[{display:!1,ticks:{beginAtZero:!0,min:0,
7
+ max:1}}],xAxes:[{display:!1,ticks:{beginAtZero:!0}}]}}})};a.sq_showMessage=function(b,c){a(".sq_alert").remove();-1==b.indexOf("<div>")&&(b=a('<div class="sq_alert position-fixed fixed-top text-center text-white bg-success m-0 p-4 border border-white sq-position-fixed sq-fixed-top sq-text-center sq-text-white sq-bg-success sq-m-0 sq-p-4 sq-border sq-border-white" style="top: 33px !important;">'+b+"</div>"));a("body").prepend(b);"undefined"===typeof c&&(c=2E3);setTimeout(function(){b.remove()},c);
8
+ return b};a.fn.sq_addBriefcase=function(){var b=this;b.addClass("sq_minloading");a.post(sqQuery.ajaxurl,{action:"sq_briefcase_addkeyword",keyword:b.data("keyword"),doserp:parseInt(b.data("doserp")),hidden:parseInt(b.data("hidden")),sq_nonce:sqQuery.nonce}).done(function(c){b.removeClass("sq_minloading");"undefined"!==typeof c.message?(a.sq_showMessage(c.message).addClass("sq_success"),b.closest("tr").addClass("bg-briefcase")):"undefined"!==typeof c.error?(a.sq_showMessage(c.error),b.removeClass("sq_minloading")):
9
+ (b.removeClass("sq_minloading"),location.reload())}).fail(function(){b.removeClass("sq_minloading")})};a.fn.sq_ajaxCallListen=function(){var b=this,c=a("#"+b.data("input")),e=b.data("confirm"),d=b.data("action"),f=b.data("redirect"),g=b.data("name"),h=0;c.length||(c=b);if("undefined"===typeof e||confirm(e))c.is("input")&&"checkbox"===c.attr("type")?c.is(":checked")&&(h=c.val()):c.is("select")?h=c.find("option:selected").val():c.is("input")&&""!==c.val()&&(h=c.val()),b.addClass("sq_minloading"),""!==
10
+ d&&""!==h&&a.post(sqQuery.ajaxurl,{action:d,input:g,value:h,referal:location.href,sq_nonce:sqQuery.nonce}).done(function(c){if("undefined"!==typeof c.data){""===c.data?a("#wpbody-content").prepend("Saved"):a("#wpbody-content").prepend(c.data);if(""!==c.assistant&&c.assistant_dest){var d=a(".sq_assistant").find("ul:visible").attr("id");a(c.assistant_dest).html(c.assistant);d&&a("#"+d).show()}setTimeout(function(){b.removeClass("sq_minloading");"undefined"!==typeof f?window.open(f,"_blank"):location.reload()},
11
+ 1E3)}else"undefined"!==typeof c.error?(a.sq_showMessage(c.error),b.removeClass("sq_minloading")):(b.removeClass("sq_minloading"),location.reload())}).fail(function(){b.removeClass("sq_minloading")},"json")};a(document).ready(function(){clearTimeout(f);SQ_DEBUG&&console.log("sq_GlobalInit");a("#sq_preloader").remove();a(".sq_trend:visible").each(function(){a.sq_loadChart(a(this))});a(".sq_kr_research").on("show.bs.modal",function(){a.sq_loadChart(a(this).find(".sq_trend"))});0<a(".sq_save_ajax").length&&
12
+ (a(".sq_save_ajax").find("input").on("change",function(){a(this).sq_ajaxCallListen()}),a(".sq_save_ajax").find("button").on("click",function(){a(this).sq_ajaxCallListen()}));a("button.show_advanced").on("click",function(){a(this).hide();a(".sq_advanced").show();a("button.hide_advanced").show()});a("button.hide_advanced").on("click",function(){a(this).hide();a(".sq_advanced").hide();a("button.show_advanced").show()});a("button[type=submit]").on("click",function(){a(this).addClass("sq_minloading")});
13
+ a(document).on("keyup",function(b){27==(b.keyCode||b.which)&&(a(".modal").hasClass("show")?a(".modal").modal("hide"):confirm("Leave Squirrly Settings?")&&(location.href=a("#sq_btn_toolbar_close").find("a").attr("href")))})});var f=setTimeout(function(){alert("A javascript error stops Squirrly from loading. Please check the browser console for errors.")},1E4)})(jQuery);
view/assets/js/research.js CHANGED
@@ -10,6 +10,10 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
10
  });
11
 
12
  $.sq_steps = function (step) {
 
 
 
 
13
  $('.sq_step').hide();
14
  $('.sq_step' + step).show();
15
  };
@@ -96,12 +100,32 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
96
 
97
  $table.show();
98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  $table.DataTable(
100
  {
101
  "columnDefs": [
102
  {
103
  "targets": [5, 6],
104
  "sortable": false
 
 
 
 
 
105
  }
106
  ],
107
  "bPaginate": true,
@@ -137,7 +161,7 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
137
  $this.removeClass('sq_loading');
138
  $this.find('.btn').show();
139
 
140
- $('.sq_research_error').show();
141
  }, 'json');
142
 
143
 
@@ -148,7 +172,7 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
148
  $this.removeClass('sq_loading').show();
149
  $this.prepend('<div class="text-center text-warning">Lost connection with the server. Please make sure you whitelisted the IP from https://api.squirrly.co</div>');
150
  }
151
- }, 60000);
152
 
153
 
154
  return $this;
10
  });
11
 
12
  $.sq_steps = function (step) {
13
+ if (step === 2 && $('input[name=sq_input_keyword]').val() === '') {
14
+ $.sq_showMessage('Add a keyword first', 2000);
15
+ return;
16
+ }
17
  $('.sq_step').hide();
18
  $('.sq_step' + step).show();
19
  };
100
 
101
  $table.show();
102
 
103
+ //Set the new sort
104
+ $.extend($.fn.dataTableExt.oSort, {
105
+ "formatted-value-pre": function (a) {
106
+ return $('<div></div>').append(a).find('span').data('value');
107
+ },
108
+
109
+ "formatted-value-asc": function (a, b) {
110
+ return a - b;
111
+ },
112
+
113
+ "formatted-value-desc": function (a, b) {
114
+ return b - a;
115
+ }
116
+ });
117
+
118
  $table.DataTable(
119
  {
120
  "columnDefs": [
121
  {
122
  "targets": [5, 6],
123
  "sortable": false
124
+ },
125
+ {
126
+ "targets": [2,3,4],
127
+ "sortable": true,
128
+ "type": "formatted-value"
129
  }
130
  ],
131
  "bPaginate": true,
161
  $this.removeClass('sq_loading');
162
  $this.find('.btn').show();
163
 
164
+ $('.sq_research_timeout_error').show();
165
  }, 'json');
166
 
167
 
172
  $this.removeClass('sq_loading').show();
173
  $this.prepend('<div class="text-center text-warning">Lost connection with the server. Please make sure you whitelisted the IP from https://api.squirrly.co</div>');
174
  }
175
+ }, 300000);
176
 
177
 
178
  return $this;
view/assets/js/research.min.js CHANGED
@@ -1,12 +1,12 @@
1
  var SQ_DEBUG,$jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e<d;e++){var f=a[e];if(b.call(c,f,e,a))return{i:e,v:f}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};
2
  $jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(a,b,c,d){if(b){c=$jscomp.global;a=a.split(".");for(d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})}};
3
  $jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},"es6","es3");"undefined"===typeof SQ_DEBUG&&(SQ_DEBUG=!1);
4
- (function(a){a(document).keypress(function(b){13==(b.keyCode||b.which)&&a(".sqd-submit:visible").trigger("click")});a.sq_steps=function(b){a(".sq_step").hide();a(".sq_step"+b).show()};a.fn.sq_getSuggested=function(){var b=this;""!==a("input[name=sq_input_keyword]").val()?(a.sq_steps(3),b.addClass("sq_loading"),a.post(sqQuery.ajaxurl,{action:"sq_ajax_research_others",keyword:a("input[name=sq_input_keyword]").val(),country:a("select[name=sq_select_country] option:selected").val(),lang:"en",sq_nonce:sqQuery.nonce}).done(function(c){b.removeClass("sq_loading");
5
- $count=0;"undefined"!==typeof c.keywords&&null!==c.keywords&&0<c.keywords.length?b.find(".sq_suggested").each(function(){"undefined"!==typeof c.keywords[$count]?(a(this).html('<input type="checkbox" id="sq_input_keywords'+$count+'" name="sq_input_keywords[]" class="sq_input_keywords custom-control-input" value="'+c.keywords[$count]+'"><label class="custom-control-label" for="sq_input_keywords'+$count+'">'+c.keywords[$count]+"</label>"),$count++):a(this).hide()}):"undefined"!==typeof c.error&&"limit_exceeded"===
6
- c.error?b.find(".sq_limit_exceeded").show():b.find(".sq_research_error").show()}).fail(function(){b.removeClass("sq_loading").show();b.prepend('<div class="text-center text-warning">Squirrly Library loading error. Please contact us at support@squirrly.co</div>')})):a(".sq_step2").find(".sq_research_error").show()};a.fn.sq_getResearch=function(){var b=this;a.sq_steps(4);b.find(".btn").hide();var c=a("input[name=sq_input_keyword]").val();a("input.sq_input_keywords:checked").each(function(){c+=","+a(this).val()});
7
- var d=!0;b.addClass("sq_loading");a.post(sqQuery.ajaxurl,{action:"sq_ajax_research_process",keywords:c,country:a("select[name=sq_select_country] option:selected").val(),lang:"en",sq_nonce:sqQuery.nonce}).done(function(c){d=!1;b.removeClass("sq_loading");b.find(".btn").show();var e=a("div.sq_step4 table");"undefined"!==typeof c.html&&(e.find("tbody").html(c.html),a(".sq_research_success").show());e.show();e.DataTable({columnDefs:[{targets:[5,6],sortable:!1}],bPaginate:!0,bLengthChange:!1,bFilter:!0,
8
- iDisplayLength:20});e.find(".sq_trend:visible").each(function(){a.sq_loadChart(a(this))});e.find(".sq_research_add_briefcase").each(function(){a(this).on("click",function(){a(this).sq_addBriefcase()})});e.find(".sq_research_selectit").on("click",function(){a(this).addClass("sq_minloading");var b=a(this).data("keyword");a.sq_setCookie("sq_keyword",b);location.href=a(this).data("post")})}).fail(function(){d=!1;b.removeClass("sq_loading");b.find(".btn").show();a(".sq_research_error").show()},"json");
9
- setTimeout(function(){d&&(b.find(".btn").show(),b.removeClass("sq_loading").show(),b.prepend('<div class="text-center text-warning">Lost connection with the server. Please make sure you whitelisted the IP from https://api.squirrly.co</div>'))},6E4);return b};a.fn.sq_getHistory=function(){var b=this,c=b.data("id"),d=a(b.data("destination"));d.length?a(d).remove():(a("#history"+c).length||(d=a('<tr id="history'+c+'"></tr>'),b.parents("tr:last").after(d),d.show()),a(d).is(":visible")&&(b.addClass("sq_minloading"),
10
- a.post(sqQuery.ajaxurl,{action:"sq_ajax_research_history",id:b.data("id"),sq_nonce:sqQuery.nonce}).done(function(c){b.removeClass("sq_minloading");"undefined"!==typeof c.html&&d.html(c.html);d.find(".sq_research_add_briefcase").each(function(){a(this).on("click",function(){a(this).sq_addBriefcase()})});d.find(".sq_research_selectit").on("click",function(){a(this).addClass("sq_minloading");var b=a(this).data("keyword");a.sq_setCookie("sq_keyword",b);location.href=a(this).data("post")})}).fail(function(){b.removeClass("sq_minloading");
11
- d.html('<td colspan="4" class="col-sm-12 text-center my-3 text-danger">Could not find the records</td>')},"json")))};a(document).ready(function(){a(".sq_history_details").on("click",function(){a(this).sq_getHistory()});a(".sq_research_add_briefcase").each(function(){a(this).on("click",function(){a(this).sq_addBriefcase()})});a("#sq_briefcaselabels").length&&a("#sq_briefcaselabels").find("table.table").DataTable({columnDefs:[{targets:[1,2],searchable:!1,sortable:!1}],bPaginate:!0,bLengthChange:!1,
12
- bFilter:!1,iDisplayLength:10})})})(jQuery);
1
  var SQ_DEBUG,$jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e<d;e++){var f=a[e];if(b.call(c,f,e,a))return{i:e,v:f}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};
2
  $jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(a,b,c,d){if(b){c=$jscomp.global;a=a.split(".");for(d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})}};
3
  $jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},"es6","es3");"undefined"===typeof SQ_DEBUG&&(SQ_DEBUG=!1);
4
+ (function(a){a(document).keypress(function(b){13==(b.keyCode||b.which)&&a(".sqd-submit:visible").trigger("click")});a.sq_steps=function(b){2===b&&""===a("input[name=sq_input_keyword]").val()?a.sq_showMessage("Add a keyword first",2E3):(a(".sq_step").hide(),a(".sq_step"+b).show())};a.fn.sq_getSuggested=function(){var b=this;""!==a("input[name=sq_input_keyword]").val()?(a.sq_steps(3),b.addClass("sq_loading"),a.post(sqQuery.ajaxurl,{action:"sq_ajax_research_others",keyword:a("input[name=sq_input_keyword]").val(),
5
+ country:a("select[name=sq_select_country] option:selected").val(),lang:"en",sq_nonce:sqQuery.nonce}).done(function(c){b.removeClass("sq_loading");$count=0;"undefined"!==typeof c.keywords&&null!==c.keywords&&0<c.keywords.length?b.find(".sq_suggested").each(function(){"undefined"!==typeof c.keywords[$count]?(a(this).html('<input type="checkbox" id="sq_input_keywords'+$count+'" name="sq_input_keywords[]" class="sq_input_keywords custom-control-input" value="'+c.keywords[$count]+'"><label class="custom-control-label" for="sq_input_keywords'+
6
+ $count+'">'+c.keywords[$count]+"</label>"),$count++):a(this).hide()}):"undefined"!==typeof c.error&&"limit_exceeded"===c.error?b.find(".sq_limit_exceeded").show():b.find(".sq_research_error").show()}).fail(function(){b.removeClass("sq_loading").show();b.prepend('<div class="text-center text-warning">Squirrly Library loading error. Please contact us at support@squirrly.co</div>')})):a(".sq_step2").find(".sq_research_error").show()};a.fn.sq_getResearch=function(){var b=this;a.sq_steps(4);b.find(".btn").hide();
7
+ var c=a("input[name=sq_input_keyword]").val();a("input.sq_input_keywords:checked").each(function(){c+=","+a(this).val()});var d=!0;b.addClass("sq_loading");a.post(sqQuery.ajaxurl,{action:"sq_ajax_research_process",keywords:c,country:a("select[name=sq_select_country] option:selected").val(),lang:"en",sq_nonce:sqQuery.nonce}).done(function(c){d=!1;b.removeClass("sq_loading");b.find(".btn").show();var e=a("div.sq_step4 table");"undefined"!==typeof c.html&&(e.find("tbody").html(c.html),a(".sq_research_success").show());
8
+ e.show();a.extend(a.fn.dataTableExt.oSort,{"formatted-value-pre":function(b){return a("<div></div>").append(b).find("span").data("value")},"formatted-value-asc":function(a,b){return a-b},"formatted-value-desc":function(a,b){return b-a}});e.DataTable({columnDefs:[{targets:[5,6],sortable:!1},{targets:[2,3,4],sortable:!0,type:"formatted-value"}],bPaginate:!0,bLengthChange:!1,bFilter:!0,iDisplayLength:20});e.find(".sq_trend:visible").each(function(){a.sq_loadChart(a(this))});e.find(".sq_research_add_briefcase").each(function(){a(this).on("click",
9
+ function(){a(this).sq_addBriefcase()})});e.find(".sq_research_selectit").on("click",function(){a(this).addClass("sq_minloading");var b=a(this).data("keyword");a.sq_setCookie("sq_keyword",b);location.href=a(this).data("post")})}).fail(function(){d=!1;b.removeClass("sq_loading");b.find(".btn").show();a(".sq_research_timeout_error").show()},"json");setTimeout(function(){d&&(b.find(".btn").show(),b.removeClass("sq_loading").show(),b.prepend('<div class="text-center text-warning">Lost connection with the server. Please make sure you whitelisted the IP from https://api.squirrly.co</div>'))},
10
+ 3E5);return b};a.fn.sq_getHistory=function(){var b=this,c=b.data("id"),d=a(b.data("destination"));d.length?a(d).remove():(a("#history"+c).length||(d=a('<tr id="history'+c+'"></tr>'),b.parents("tr:last").after(d),d.show()),a(d).is(":visible")&&(b.addClass("sq_minloading"),a.post(sqQuery.ajaxurl,{action:"sq_ajax_research_history",id:b.data("id"),sq_nonce:sqQuery.nonce}).done(function(c){b.removeClass("sq_minloading");"undefined"!==typeof c.html&&d.html(c.html);d.find(".sq_research_add_briefcase").each(function(){a(this).on("click",
11
+ function(){a(this).sq_addBriefcase()})});d.find(".sq_research_selectit").on("click",function(){a(this).addClass("sq_minloading");var b=a(this).data("keyword");a.sq_setCookie("sq_keyword",b);location.href=a(this).data("post")})}).fail(function(){b.removeClass("sq_minloading");d.html('<td colspan="4" class="col-sm-12 text-center my-3 text-danger">Could not find the records</td>')},"json")))};a(document).ready(function(){a(".sq_history_details").on("click",function(){a(this).sq_getHistory()});a(".sq_research_add_briefcase").each(function(){a(this).on("click",
12
+ function(){a(this).sq_addBriefcase()})});a("#sq_briefcaselabels").length&&a("#sq_briefcaselabels").find("table.table").DataTable({columnDefs:[{targets:[1,2],searchable:!1,sortable:!1}],bPaginate:!0,bLengthChange:!1,bFilter:!1,iDisplayLength:10})})})(jQuery);
view/assets/js/snippet.js CHANGED
@@ -2,6 +2,33 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
2
  //Blogs
3
  (function ($) {
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  $.fn.sq_loadSnippet = function () {
6
  var $this = this;
7
 
@@ -202,7 +229,10 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
202
  sq_og_author: settings.sq_og_author.length > 0 ? $this.escapeHtml(settings.sq_og_author.val()) : '',
203
  sq_og_media: settings.sq_og_media.length > 0 ? settings.sq_og_media.val() : '',
204
 
 
 
205
  sq_jsonld: (settings.sq_jsonld.length > 0 && settings.sq_jsonld_code_type.find('option:selected').val() === 'custom') ? settings.sq_jsonld.val() : '',
 
206
  sq_fpixel: (settings.sq_fpixel.length > 0 && settings.sq_fpixel_code_type.find('option:selected').val() === 'custom') ? settings.sq_fpixel.val() : '',
207
 
208
  //
@@ -235,7 +265,7 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
235
  SQ_DEBUG && console.log('sq_snippet_loaded');
236
  SQ_DEBUG && console.log('sq_snippet_saved');
237
  } else {
238
- location.reload();
239
  }
240
 
241
  if (typeof response.error !== 'undefined') {
@@ -245,18 +275,15 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
245
  }
246
  } else {
247
  $.sq_showError(settings.__sq_error_message, 2000);
248
- location.reload();
249
  }
250
  }).fail(function () {
251
  $this.removeClass('sq_minloading');
252
  $.sq_showError(settings.__sq_error_message, 2000);
253
- location.reload();
254
  });
255
  }
256
  };
257
 
258
 
259
-
260
  /**
261
  * Populates all titles and descriptions
262
  */
@@ -315,6 +342,7 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
315
  $this.sq_loadSnippet();
316
  });
317
 
 
318
  $this.keywordsListen();
319
 
320
  //Listen the Edit Button
@@ -412,7 +440,7 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
412
  if (dropdown.data('position') == 'small') {
413
  dropdown.css('top', '35px');
414
  dropdown.css('height', '36px');
415
- }else{
416
  var dropdown_top = (input.height() + 20);
417
  dropdown.css('top', dropdown_top + 'px');
418
  }
@@ -547,6 +575,7 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
547
  });
548
  }
549
 
 
550
  return $this;
551
  };
552
 
@@ -579,19 +608,19 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
579
  words = elementwords.split(' ');
580
  if (words.length > 0) {
581
  for (var i = 0; i < words.length; i++) {
582
- if ($patterns.find('li[data-pattern="' + words[i] + '"]').length) {
583
  //clear the patterns
584
  elementwords = elementwords.replace(words[i], '');
585
  elementwords = elementwords.replace(' ', ' ');
586
  elementwords = elementwords.trim();
587
 
588
  //Get the patterns value length
589
- if ($patterns.find('li[data-pattern="' + words[i] + '"]').data('value')) {
590
- patternslength += $patterns.find('li[data-pattern="' + words[i] + '"]').data('value').length;
591
  }
592
 
593
  //Get the final value without patterns
594
- finalvalue = finalvalue.replace(new RegExp(words[i], "g"), $patterns.find('li[data-pattern="' + words[i] + '"]').data('value'));
595
  }
596
  }
597
  //Set the final length with patterns values
@@ -674,19 +703,22 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
674
  //Snippet is loaded. Let SLA know
675
  $this.trigger('sq_snippet_loaded');
676
  SQ_DEBUG && console.log('sq_snippet_loaded');
 
 
677
  }
 
678
  if (typeof response.error !== 'undefined') {
679
- $.sq_showError(response.error, 2000);
680
  }
681
  } else {
682
- location.reload();
683
  SQ_DEBUG && console.log('no data received');
684
  }
685
 
686
  $this.removeClass('sq_minloading');
687
  }).fail(function () {
688
- location.reload();
689
  SQ_DEBUG && console.log('no data received');
 
690
 
691
  $this.removeClass('sq_minloading');
692
  });
@@ -881,27 +913,14 @@ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
881
  $snippet.find($tab.attr('href')).addClass('active');
882
  });
883
 
 
 
884
 
885
- $.sq_showSaved = function (message, time) {
886
- $blocksnippet.find('.sq_tabcontent').prepend('<div class="sq-alert sq-my-2 sq-alert-success sq-alert-absolute" >' + message + '</div>');
887
-
888
- if (typeof time !== 'undefined') {
889
- setTimeout(function () {
890
- jQuery('.sq-alert').hide();
891
- }, time);
892
- }
893
- };
894
-
895
- $.sq_showError = function (message, time) {
896
- $blocksnippet.find('.sq_tabcontent').prepend('<div class="sq-alert sq-my-2 sq-alert-danger sq-alert-absolute" >' + message + '</div>');
897
-
898
- if (typeof time !== 'undefined') {
899
- setTimeout(function () {
900
- //jQuery('.sq-alert').hide();
901
- }, time);
902
- }
903
- };
904
-
905
  }
906
  }
907
  });
2
  //Blogs
3
  (function ($) {
4
 
5
+
6
+ $.sq_showSaved = function (message, time) {
7
+ if (!$('#sq_blocksnippet').find('.sq_tabcontent').length) {
8
+ $('#sq_blocksnippet').prepend('<div class="sq_tabcontent" ></div>');
9
+ }
10
+ $('#sq_blocksnippet').find('.sq_tabcontent').prepend('<div class="sq-alert sq-my-2 sq-alert-success sq-alert-absolute" >' + message + '</div>');
11
+
12
+ if (typeof time !== 'undefined' && time > 0) {
13
+ setTimeout(function () {
14
+ jQuery('.sq-alert').hide();
15
+ }, time);
16
+ }
17
+ };
18
+
19
+ $.sq_showError = function (message, time) {
20
+ if (!$('#sq_blocksnippet').find('.sq_tabcontent').length) {
21
+ $('#sq_blocksnippet').prepend('<div class="sq_tabcontent" ></div>');
22
+ }
23
+ $('#sq_blocksnippet').find('.sq_tabcontent').prepend('<div class="sq-alert sq-my-2 sq-alert-danger sq-alert-absolute" >' + message + '</div>');
24
+
25
+ if (typeof time !== 'undefined' && time > 0) {
26
+ setTimeout(function () {
27
+ jQuery('.sq-alert').hide();
28
+ }, time);
29
+ }
30
+ };
31
+
32
  $.fn.sq_loadSnippet = function () {
33
  var $this = this;
34
 
229
  sq_og_author: settings.sq_og_author.length > 0 ? $this.escapeHtml(settings.sq_og_author.val()) : '',
230
  sq_og_media: settings.sq_og_media.length > 0 ? settings.sq_og_media.val() : '',
231
 
232
+
233
+ sq_jsonld_code_type: (settings.sq_jsonld_code_type.length > 0) ? settings.sq_jsonld_code_type.find('option:selected').val() : 'auto',
234
  sq_jsonld: (settings.sq_jsonld.length > 0 && settings.sq_jsonld_code_type.find('option:selected').val() === 'custom') ? settings.sq_jsonld.val() : '',
235
+ sq_fpixel_code_type: (settings.sq_fpixel_code_type.length > 0) ? settings.sq_fpixel_code_type.find('option:selected').val() : 'auto',
236
  sq_fpixel: (settings.sq_fpixel.length > 0 && settings.sq_fpixel_code_type.find('option:selected').val() === 'custom') ? settings.sq_fpixel.val() : '',
237
 
238
  //
265
  SQ_DEBUG && console.log('sq_snippet_loaded');
266
  SQ_DEBUG && console.log('sq_snippet_saved');
267
  } else {
268
+ $.sq_showError("Couldn't load the page. Please refresh.", 0);
269
  }
270
 
271
  if (typeof response.error !== 'undefined') {
275
  }
276
  } else {
277
  $.sq_showError(settings.__sq_error_message, 2000);
 
278
  }
279
  }).fail(function () {
280
  $this.removeClass('sq_minloading');
281
  $.sq_showError(settings.__sq_error_message, 2000);
 
282
  });
283
  }
284
  };
285
 
286
 
 
287
  /**
288
  * Populates all titles and descriptions
289
  */
342
  $this.sq_loadSnippet();
343
  });
344
 
345
+
346
  $this.keywordsListen();
347
 
348
  //Listen the Edit Button
440
  if (dropdown.data('position') == 'small') {
441
  dropdown.css('top', '35px');
442
  dropdown.css('height', '36px');
443
+ } else {
444
  var dropdown_top = (input.height() + 20);
445
  dropdown.css('top', dropdown_top + 'px');
446
  }
575
  });
576
  }
577
 
578
+
579
  return $this;
580
  };
581
 
608
  words = elementwords.split(' ');
609
  if (words.length > 0) {
610
  for (var i = 0; i < words.length; i++) {
611
+ if ($patterns.find('li[data-pattern="' + words[i].replace(new RegExp('"', "g"), '') + '"]').length) {
612
  //clear the patterns
613
  elementwords = elementwords.replace(words[i], '');
614
  elementwords = elementwords.replace(' ', ' ');
615
  elementwords = elementwords.trim();
616
 
617
  //Get the patterns value length
618
+ if ($patterns.find('li[data-pattern="' + words[i].replace(new RegExp('"', "g"), '') + '"]').data('value')) {
619
+ patternslength += $patterns.find('li[data-pattern="' + words[i].replace(new RegExp('"', "g"), '') + '"]').data('value').length;
620
  }
621
 
622
  //Get the final value without patterns
623
+ finalvalue = finalvalue.replace(new RegExp(words[i], "g"), $patterns.find('li[data-pattern="' + words[i].replace(new RegExp('"', "g"), '') + '"]').data('value'));
624
  }
625
  }
626
  //Set the final length with patterns values
703
  //Snippet is loaded. Let SLA know
704
  $this.trigger('sq_snippet_loaded');
705
  SQ_DEBUG && console.log('sq_snippet_loaded');
706
+ } else {
707
+ $('#sq_blocksnippet').trigger('error.refresh');
708
  }
709
+
710
  if (typeof response.error !== 'undefined') {
711
+ $.sq_showError(response.error, 10000);
712
  }
713
  } else {
714
+ $('#sq_blocksnippet').trigger('error.refresh');
715
  SQ_DEBUG && console.log('no data received');
716
  }
717
 
718
  $this.removeClass('sq_minloading');
719
  }).fail(function () {
 
720
  SQ_DEBUG && console.log('no data received');
721
+ $('#sq_blocksnippet').trigger('error.refresh');
722
 
723
  $this.removeClass('sq_minloading');
724
  });
913
  $snippet.find($tab.attr('href')).addClass('active');
914
  });
915
 
916
+ $blocksnippet.on('error.refresh', function () {
917
+ $.sq_showError("Couldn't load the page. <span class='sq_snippet_refresh' style='color: #0F75BC; cursor:pointer;'>Please refresh</span>.", 0);
918
 
919
+ $('.sq_snippet_refresh').on('click', function () {
920
+ $blocksnippet.sq_loadSnippet();
921
+ });
922
+ //
923
+ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
924
  }
925
  }
926
  });
view/assets/js/snippet.min.js CHANGED
@@ -1,37 +1,39 @@
1
  var SQ_DEBUG,$jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(c,d,a){c instanceof String&&(c=String(c));for(var b=c.length,e=0;e<b;e++){var h=c[e];if(d.call(a,h,e,c))return{i:e,v:h}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(c,d,a){c!=Array.prototype&&c!=Object.prototype&&(c[d]=a.value)};
2
  $jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global&&null!=global?global:c};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(c,d,a,b){if(d){a=$jscomp.global;c=c.split(".");for(b=0;b<c.length-1;b++){var e=c[b];e in a||(a[e]={});a=a[e]}c=c[c.length-1];b=a[c];d=d(b);d!=b&&null!=d&&$jscomp.defineProperty(a,c,{configurable:!0,writable:!0,value:d})}};
3
  $jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,a){return $jscomp.findInternal(this,c,a).v}},"es6","es3");"undefined"===typeof SQ_DEBUG&&(SQ_DEBUG=!1);
4
- (function(c){c.fn.sq_loadSnippet=function(){c("input[name=sq_post_id]").length||(0<c("input[name=post_ID]").length&&this.prepend('<input type="hidden" name="sq_post_id" value="'+c("input[name=post_ID]").val()+'">'),0<c("input[name=post_type]").length&&this.prepend('<input type="hidden" name="sq_post_type" value="'+c("input[name=post_type]").val()+'">'),0<c("input[name=tag_ID]").length&&this.prepend('<input type="hidden" name="sq_term_id" value="'+c("input[name=tag_ID]").val()+'">'),0<c("input[name=taxonomy]").length&&
5
- this.prepend('<input type="hidden" name="sq_taxonomy" value="'+c("input[name=taxonomy]").val()+'">'));this.each(function(){c(this).sq_getSnippet(c(this).find("input[name=sq_post_id]").val(),c(this).find("input[name=sq_term_id]").val(),c(this).find("input[name=sq_taxonomy]").val(),c(this).find("input[name=sq_post_type]").val())})};c.fn.sq_editSnippet=function(d){var a=this,b=c.extend({called:"normal",sq_snippet_wrap:a.find(".sq_snippet_wrap"),editButton:a.find(".sq_snippet_btn_edit"),saveButton:a.find(".sq_snippet_btn_save"),
6
- cancelButton:a.find(".sq_snippet_btn_cancel"),refreshButton:a.find(".sq_snippet_btn_refresh"),last_tab:null,closeButton:a.find(".sq-close"),sq_url:a.find("input[name=sq_url]"),sq_doseo:a.find("input[name=sq_doseo].sq-switch"),sq_toggle:a.find(".sq-toggle"),sq_title:a.find("textarea[name=sq_title]"),sq_description:a.find("textarea[name=sq_description]"),sq_keywords:a.find("input[name=sq_keywords]"),sq_noindex:a.find("input[name=sq_noindex]"),sq_nofollow:a.find("input[name=sq_nofollow]"),sq_nositemap:a.find("input[name=sq_nositemap]"),
7
- sq_canonical:a.find("input[name=sq_canonical]"),sq_og_media:a.find("input[name=sq_og_media]"),sq_og_media_preview:a.find("img.sq_og_media_preview"),og_image_close:a.find(".sq_og_image_close"),sq_og_title:a.find("textarea[name=sq_og_title]"),sq_og_description:a.find("textarea[name=sq_og_description]"),sq_og_author:a.find("input[name=sq_og_author]"),sq_og_type:a.find("select[name=sq_og_type]"),sq_og_pixel:a.find("#sq_og_pixel_id"),sq_tw_media:a.find("input[name=sq_tw_media]"),sq_tw_media_preview:a.find("img.sq_tw_media_preview"),
8
- tw_image_close:a.find(".sq_tw_image_close"),sq_tw_title:a.find("textarea[name=sq_tw_title]"),sq_tw_description:a.find("textarea[name=sq_tw_description]"),sq_tw_type:a.find("select[name=sq_tw_type]"),sq_jsonld:a.find("textarea[name=sq_jsonld]"),sq_jsonld_code_type:a.find("select.sq_jsonld_code_type"),sq_jsonld_custom_code:a.find("div.sq_jsonld_custom_code"),sq_fpixel:a.find("textarea[name=sq_fpixel]"),sq_fpixel_code_type:a.find("select.sq_fpixel_code_type"),sq_fpixel_custom_code:a.find("div.sq_fpixel_custom_code"),
9
- sq_post_id:0<a.find("input[name=sq_post_id]").length?a.find("input[name=sq_post_id]").val():0,sq_term_id:0<a.find("input[name=sq_term_id]").length?a.find("input[name=sq_term_id]").val():0,sq_taxonomy:0<a.find("input[name=sq_taxonomy]").length?a.find("input[name=sq_taxonomy]").val():"",sq_post_type:0<a.find("input[name=sq_post_type]").length?a.find("input[name=sq_post_type]").val():"",previewTab:a.find(".sq_tab_preview"),editTab:a.find(".sq_tab_edit"),validKeyword:!1,__sq_save_message:"undefined"!==
10
- typeof __sq_save_message?__sq_save_message:"Saved!",__sq_error_message:"undefined"!==typeof __sq_error_message?__sq_error_message:"ERROR! Could not save the data. Please refresh",__sq_save_message_preview:"undefined"!==typeof __sq_save_message_preview?__sq_save_message_preview:"Saved! Reload to see the changes."},d);a.initNav=function(){var c=a.parents(".menupop:last");0<c.length&&"topmenu"===a.data("snippet")?(c.off("hover"),c.find(".ab-item").on("click",function(){c.addClass("open")}),b.closeButton.on("click",
11
- function(){c.removeClass("open");c.removeClass("hover")}),c.find(".sq_snippet_wrap").show()):(a.off("hover"),b.closeButton.on("click",function(){a.hide()}))};a.listenDoSeo=function(){b.sq_doseo.on("change",function(){a.saveSEO()});b.sq_doseo.prop("checked")?(b.previewTab.show(),b.editTab.hide()):(b.previewTab.hide(),b.editTab.hide(),b.cancelButton.hide())};a.tabsListen=function(){a.find("#sq_tabs").find("li").on("click",function(b){b.preventDefault();$li=c(this);a.find("#sq_tabs").find("li").each(function(){c(this).removeClass("active")});
12
- a.find(".sq_tabcontent").each(function(){c(this).hide()});a.find("#sq_tab_"+$li.find("a").text().toString().toLowerCase()).show();$li.addClass("active")})};a.saveSEO=function(){a.preventLeave(!1);a.addClass("sq_minloading");var e=a.find("#sq_hash");""!==e.val()&&c.post(sqQuery.ajaxurl,{action:"sq_saveseo",sq_title:0<b.sq_title.length?a.escapeHtml(b.sq_title.val()):"",sq_description:0<b.sq_description.length?a.escapeHtml(b.sq_description.val()):"",sq_keywords:0<b.sq_keywords.length?a.escapeHtml(b.sq_keywords.val()):
13
- "",sq_canonical:0<b.sq_canonical.length?a.escapeHtml(b.sq_canonical.val()):"",sq_noindex:0<a.find("input[name=sq_noindex]:checked").length?parseInt(a.find("input[name=sq_noindex]:checked").val()):1,sq_nofollow:0<a.find("input[name=sq_nofollow]:checked").length?parseInt(a.find("input[name=sq_nofollow]:checked").val()):1,sq_nositemap:0<a.find("input[name=sq_nositemap]:checked").length?parseInt(a.find("input[name=sq_nositemap]:checked").val()):1,sq_tw_title:0<b.sq_tw_title.length?a.escapeHtml(b.sq_tw_title.val()):
14
- "",sq_tw_description:0<b.sq_tw_description.length?a.escapeHtml(b.sq_tw_description.val()):"",sq_tw_media:0<b.sq_tw_media.length?b.sq_tw_media.val():"",sq_tw_type:0<b.sq_tw_type.length?b.sq_tw_type.find("option:selected").val():"",sq_og_title:0<b.sq_og_title.length?a.escapeHtml(b.sq_og_title.val()):"",sq_og_description:0<b.sq_og_description.length?a.escapeHtml(b.sq_og_description.val()):"",sq_og_type:0<b.sq_og_type.length?b.sq_og_type.find("option:selected").val():"",sq_og_author:0<b.sq_og_author.length?
15
- a.escapeHtml(b.sq_og_author.val()):"",sq_og_media:0<b.sq_og_media.length?b.sq_og_media.val():"",sq_jsonld:0<b.sq_jsonld.length&&"custom"===b.sq_jsonld_code_type.find("option:selected").val()?b.sq_jsonld.val():"",sq_fpixel:0<b.sq_fpixel.length&&"custom"===b.sq_fpixel_code_type.find("option:selected").val()?b.sq_fpixel.val():"",sq_url:0<b.sq_url.length?a.escapeHtml(b.sq_url.val()):"",sq_hash:e.val(),post_id:b.sq_post_id,term_id:b.sq_term_id,taxonomy:b.sq_taxonomy,post_type:b.sq_post_type,sq_doseo:0<
16
- a.find("input[name=sq_doseo]:checked").length?parseInt(a.find("input[name=sq_doseo]:checked").val()):0,sq_nonce:sqQuery.nonce},function(){}).done(function(e){a.removeClass("sq_minloading");if("undefined"!==typeof e.saved){if("undefined"!==typeof e.html){var d=a.find(".sq-nav-item.active");a.html(e.html);a.sq_editSnippet({called:"ajax"});a.find(d).trigger("click");a.trigger("sq_snippet_loaded");a.trigger("sq_snippet_saved");SQ_DEBUG&&console.log("sq_snippet_loaded");SQ_DEBUG&&console.log("sq_snippet_saved")}else location.reload();
17
- "undefined"!==typeof e.error?c.sq_showError(e.error,2E3):c.sq_showSaved(b.__sq_save_message,2E3)}else c.sq_showError(b.__sq_error_message,2E3),location.reload()}).fail(function(){a.removeClass("sq_minloading");c.sq_showError(b.__sq_error_message,2E3);location.reload()})};a.populateInputs=function(){var e=c(document).find("head title").text();e||(e="");(e=a.find('meta[name="description"]').attr("content"))||(e="");0<a.find(".sq_title").length&&a.find(".sq_title").each(function(){c(this).sq_checkMax()});
18
- 0<a.find(".sq_description").length&&a.find(".sq_description").each(function(){c(this).sq_checkMax()});0<a.find(".sq_tab_facebook").find(".sq_deactivated").length&&(a.find(".sq_tab_facebook").find(".sq_snippet_title").text(a.find(".sq_tab_meta").find(".sq_snippet_title").text()),a.find(".sq_tab_facebook").find(".sq_snippet_description").text(a.find(".sq_tab_meta").find(".sq_snippet_description").text()));0<a.find(".sq_tab_twitter").find(".sq_deactivated").length&&(a.find(".sq_tab_twitter").find(".sq_snippet_title").text(a.find(".sq_tab_meta").find(".sq_snippet_title").text()),
19
- a.find(".sq_tab_twitter").find(".sq_snippet_description").text(a.find(".sq_tab_meta").find(".sq_snippet_description").text()));b.sq_og_media_preview&&""!==b.sq_og_media.val()&&(b.sq_og_media_preview.attr("src",b.sq_og_media.val()),b.og_image_close.show());b.og_image_close.on("click",function(){b.sq_og_media_preview.attr("src","");b.sq_og_media.val("");c(this).hide()});b.sq_tw_media_preview&&""!==b.sq_tw_media.val()&&(b.sq_tw_media_preview.attr("src",b.sq_tw_media.val()),b.tw_image_close.show());b.tw_image_close.on("click",
20
- function(){b.sq_tw_media_preview.attr("src","");b.sq_tw_media.val("");c(this).hide()});b.refreshButton.on("click",function(){a.sq_loadSnippet()});a.keywordsListen();b.editButton.on("click",function(){b.previewTab.hide();b.editTab.show();b.cancelButton.on("click",function(){b.previewTab.show();b.editTab.hide()});c.isFunction(c.fn.sq_patterns)&&a.find(".sq_pattern_field").each(function(){c(this).sq_patterns().init()})})};a.mediaListen=function(){a.find(".sq_get_og_media, .sq_get_tw_media").click(function(a){a.preventDefault();
21
- var e=c(this).parents(".sq-row:last").find(".sq_og_media_preview"),d=c(this).parents(".sq-row:last").find(".sq_og_image_close"),g=c(this).parents(".sq-row:last").find(".sq_tw_media_preview"),l=c(this).parents(".sq-row:last").find(".sq_tw_image_close");k&&k.open();var k=wp.media({title:"Select Media",multiple:!1,library:{type:"image"}});k.on("close",function(){var a=null,c=0;k.state().get("selection").each(function(b){a=b.attributes.url;c++});0<e.length&&null!==a&&(b.sq_og_media.val(a),e.attr("src",
22
- a),d.show());0<g.length&&null!==a&&(b.sq_tw_media.val(a),g.attr("src",a),l.show())});k.on("open",function(){k.state().get("selection")});k.open()})};a.dropDownListen=function(){var a,d,f;b.sq_toggle.on("click",function(){f=c(this);f.css("height","auto");d=f.parents(".sq-input-group:last").find(".sq-actions");if("small"==d.data("position"))d.css("top","35px"),d.css("height","36px");else{var b=f.height()+20;d.css("top",b+"px")}a=d.find(".sq-action");d.show();a.on("click",function(){var a=c(this).find(".sq-value");
23
- "undefined"!==typeof a&&""!==a&&(f.val(a.html()),f.trigger("change"),f.sq_checkMax())});f.on("keyup",function(){c(this).parents(".sq-input-group:last").find(".sq-actions").hide()});f.sq_bodyClick("click",function(){c(this).parents(".sq-input-group:last").find(".sq-actions").hide()})});b.sq_jsonld_code_type.on("change",function(){"custom"===b.sq_jsonld_code_type.find("option:selected").val()?b.sq_jsonld_custom_code.show():b.sq_jsonld_custom_code.hide()});b.sq_fpixel_code_type.on("change",function(){"custom"===
24
- b.sq_fpixel_code_type.find("option:selected").val()?b.sq_fpixel_custom_code.show():b.sq_fpixel_custom_code.hide()})};a.keywordsListen=function(){b.sq_keywords.sqtagsinput("items")};a.escapeHtml=function(a){var b={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};return a.toString().replace(/[&<>"']/g,function(a){return b[a]})};a.preventLeave=function(a){if(0==c("form#post").length)if(a)c(window).on("beforeunload",function(){return confirm("You have unsave changes in Squirrly Snippet. Are you sure you want to proceed?")});
25
- else c(window).off("beforeunload")};a.initNav();a.listenDoSeo();a.mediaListen();a.tabsListen();a.populateInputs();a.dropDownListen();a.find('input[type="text"], textarea').on("keyup paste",function(){a.preventLeave(!0);c(this).sq_checkMax()});b.saveButton.on("click",function(b){b.preventDefault();SQ_DEBUG&&console.log("save");a.preventLeave(!1);a.saveSEO()});if("undefined"!==typeof c.sq_blockseo)c.sq_blockseo.on("sq_seo_refresh",function(){b.refreshButton.trigger("click")});c(document).on("after-autosave.update-post-slug",
26
- function(b,c){a.preventLeave(!1)});0<a.find(".sq_save_ajax").length&&(a.find(".sq_save_ajax").find("input").on("change",function(){c(this).sq_ajaxSnippetListen()}),a.find(".sq_save_ajax").find("button").on("click",function(){c(this).sq_ajaxSnippetListen()}));return a};c.fn.sq_checkMax=function(){var d=c(this),a=d.parents(".sq-input-group:last"),b=0,e=300,h;if(!(0< !d.length)){var f=d.is("input, textarea")?h=d.val():h=d.html();var g=f.length;a.find(".sq_length").length&&(e=parseInt(a.find(".sq_length").data("maxlength")));
27
- if(a.hasClass("sq_pattern_field")){var l=a.find(".sq_pattern_list");var k=f.split(" ");if(0<k.length){for(g=0;g<k.length;g++)l.find('li[data-pattern="'+k[g]+'"]').length&&(f=f.replace(k[g],""),f=f.replace(" "," "),f=f.trim(),l.find('li[data-pattern="'+k[g]+'"]').data("value")&&(b+=l.find('li[data-pattern="'+k[g]+'"]').data("value").length),h=h.replace(new RegExp(k[g],"g"),l.find('li[data-pattern="'+k[g]+'"]').data("value")));g=f.length+b}}d.attr("title",h);a.find(".sq_length").text(g+"/"+e);0===
28
- g||g>e?d.attr("style","border: solid 1px red !important"):d.attr("style","border: none !important")}};c.fn.sq_bodyClick=function(d,a){return this.each(function(){var b=c(this),e=this;c(document).on(d,function f(b){b.target===e||c.contains(e,b.target)||(a.apply(e,[b]),c(document).off(d,f))});b.on("keydown blur",function g(c){9===c.which&&(a.apply(e,[c]),b.off("keydown",g))})})};c.fn.toggleSwitch=function(d){var a=c(this);(a.prop("checked")&&0==d||!a.prop("checked")&&1==d)&&a.trigger("click")};c.fn.sq_getSnippet=
29
- function(d,a,b,e){var h=this;h.addClass("sq_minloading");c.post(sqQuery.ajaxurl,{action:"sq_getsnippet",post_id:d,term_id:a,taxonomy:b,post_type:e,sq_nonce:sqQuery.nonce}).done(function(a){"undefined"!==typeof a?("undefined"!==typeof a.html&&(c("div.tooltip").hide(),h.html(a.html),h.sq_editSnippet(),h.trigger("sq_snippet_loaded"),SQ_DEBUG&&console.log("sq_snippet_loaded")),"undefined"!==typeof a.error&&c.sq_showError(a.error,2E3)):(location.reload(),SQ_DEBUG&&console.log("no data received"));h.removeClass("sq_minloading")}).fail(function(){location.reload();
30
- SQ_DEBUG&&console.log("no data received");h.removeClass("sq_minloading")})};c.fn.sq_previewSnippet=function(d,a){var b=this;"undefined"===typeof d&&(d="");"undefined"===typeof a&&(a="");b.find(".sq_snippet_ul").addClass("sq_minloading");b.find(".sq_snippet_title").html("");b.find(".sq_snippet_url").html("");b.find(".sq_snippet_description").html("");b.find(".sq_snippet_keywords").hide();b.find(".sq_snippet").show();b.find(".sq_snippet_update").hide();b.find(".sq_snippet_customize").hide();b.find(".ogimage_preview").hide();
31
- setTimeout(function(){c.post(sqQuery.ajaxurl,{action:"sq_previewsnippet",url:d,sq_nonce:sqQuery.nonce}).done(function(c){b.find(".sq_snippet_ul").removeClass("sq_minloading");b.find(".sq_snippet_update").show();b.find(".sq_snippet_customize").show();b.find(".sq_snippet_keywords").show();b.find(".ogimage_preview").show();c&&(b.find(".sq_snippet_title").html(c.title),""!==a?b.find(".sq_snippet_url").html('<a href="'+d+'" target="_blank">'+a+"</a>"):b.find(".sq_snippet_url").html(c.url),b.find(".sq_snippet_description").html(c.description))}).fail(function(){b.find(".sq_snippet_ul").removeClass("sq_minloading");
32
- b.find(".sq_snippet_update").show()},"json")},500)};c.fn.sq_ajaxSnippetListen=function(){var d=this,a=c("#"+d.data("input")),b=d.data("confirm"),e=d.data("action"),h=d.data("name"),f=0;a.length||(a=d);if("undefined"===typeof b||confirm(b))a.is("checkbox")&&a.is(":checked")?f=a.val():a.is("select")?f=a.find("option:selected").val():a.is("input")&&(f=a.val()),d.addClass("sq_minloading"),""!==e&&""!==f&&c.post(sqQuery.ajaxurl,{action:e,input:h,value:f,sq_nonce:sqQuery.nonce}).done(function(a){"undefined"!==
33
- typeof a.data?(""===a.data?c("#wpbody-content").prepend("Saved"):c("#wpbody-content").prepend(a.data),setTimeout(function(){d.removeClass("sq_minloading");var a=d.closest("div.sq_save_ajax").parent("div");0<a.length?(a.find(".sq_deactivated_label").remove(),a.find(".sq_deactivated").removeClass("sq_deactivated")):location.reload()},1E3)):"undefined"!==typeof a.error&&(c("body").prepend(a.error),d.removeClass("sq_minloading"))}).fail(function(){d.removeClass("sq_minloading");location.reload()},"json")};
34
- c.sq_isGutenberg||(c.sq_isGutenberg=function(d){return"undefined"!==typeof window.wp&&"undefined"!==typeof wp.data&&"undefined"!==typeof wp.data.select("core/editor")&&c.isFunction(wp.data.select("core/editor").getEditedPostAttribute)});c(document).ready(function(){var d=c("#wp-admin-bar-sq_bar_menu"),a=!1,b="metas";0<d.length&&(d.find('#sq_blocksnippet[data-snippet="topmenu"]').length?(a=d.find("#sq_blocksnippet"),a.sq_loadSnippet()):c('#sq_blocksnippet[data-snippet!="topmenu"]').length&&(a=c("#sq_blocksnippet"),
35
- d.find("#wp-admin-bar-sq_bar_submenu").remove(),d.find(".ab-item").on("click",function(){0<c(".edit-post-layout__content").length?c(".edit-post-layout__content").scrollTop(c(".edit-post-layout__content").scrollTop()+a.offset().top-100):c("html,body").scrollTop(a.offset().top-50)}),a.addClass("sq_blocksnippet").addClass("sq-shadow-sm").addClass("sq-border-bottom"),a.find(".inside").show().sq_loadSnippet()),a&&(a.on("sq_snippet_loaded",function(){$snippet=c(this);$snippet.find(".sq-nav-item.sq-nav-link").on("click",
36
- function(){b=c(this).data("category")});$snippet.find(".sq-nav-item").removeClass("active");$snippet.find(".sq-tab-pane").removeClass("active");var a=$snippet.find(".sq_snippet_menu").find("#sq-nav-item_"+b);a.addClass("active");$snippet.find(a.attr("href")).addClass("active")}),c.sq_showSaved=function(b,c){a.find(".sq_tabcontent").prepend('<div class="sq-alert sq-my-2 sq-alert-success sq-alert-absolute" >'+b+"</div>");"undefined"!==typeof c&&setTimeout(function(){jQuery(".sq-alert").hide()},c)},
37
- c.sq_showError=function(b,c){a.find(".sq_tabcontent").prepend('<div class="sq-alert sq-my-2 sq-alert-danger sq-alert-absolute" >'+b+"</div>");"undefined"!==typeof c&&setTimeout(function(){},c)}))})})(jQuery);
 
 
1
  var SQ_DEBUG,$jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(c,d,a){c instanceof String&&(c=String(c));for(var b=c.length,e=0;e<b;e++){var h=c[e];if(d.call(a,h,e,c))return{i:e,v:h}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(c,d,a){c!=Array.prototype&&c!=Object.prototype&&(c[d]=a.value)};
2
  $jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global&&null!=global?global:c};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(c,d,a,b){if(d){a=$jscomp.global;c=c.split(".");for(b=0;b<c.length-1;b++){var e=c[b];e in a||(a[e]={});a=a[e]}c=c[c.length-1];b=a[c];d=d(b);d!=b&&null!=d&&$jscomp.defineProperty(a,c,{configurable:!0,writable:!0,value:d})}};
3
  $jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,a){return $jscomp.findInternal(this,c,a).v}},"es6","es3");"undefined"===typeof SQ_DEBUG&&(SQ_DEBUG=!1);
4
+ (function(c){c.sq_showSaved=function(d,a){c("#sq_blocksnippet").find(".sq_tabcontent").length||c("#sq_blocksnippet").prepend('<div class="sq_tabcontent" ></div>');c("#sq_blocksnippet").find(".sq_tabcontent").prepend('<div class="sq-alert sq-my-2 sq-alert-success sq-alert-absolute" >'+d+"</div>");"undefined"!==typeof a&&0<a&&setTimeout(function(){jQuery(".sq-alert").hide()},a)};c.sq_showError=function(d,a){c("#sq_blocksnippet").find(".sq_tabcontent").length||c("#sq_blocksnippet").prepend('<div class="sq_tabcontent" ></div>');
5
+ c("#sq_blocksnippet").find(".sq_tabcontent").prepend('<div class="sq-alert sq-my-2 sq-alert-danger sq-alert-absolute" >'+d+"</div>");"undefined"!==typeof a&&0<a&&setTimeout(function(){jQuery(".sq-alert").hide()},a)};c.fn.sq_loadSnippet=function(){c("input[name=sq_post_id]").length||(0<c("input[name=post_ID]").length&&this.prepend('<input type="hidden" name="sq_post_id" value="'+c("input[name=post_ID]").val()+'">'),0<c("input[name=post_type]").length&&this.prepend('<input type="hidden" name="sq_post_type" value="'+
6
+ c("input[name=post_type]").val()+'">'),0<c("input[name=tag_ID]").length&&this.prepend('<input type="hidden" name="sq_term_id" value="'+c("input[name=tag_ID]").val()+'">'),0<c("input[name=taxonomy]").length&&this.prepend('<input type="hidden" name="sq_taxonomy" value="'+c("input[name=taxonomy]").val()+'">'));this.each(function(){c(this).sq_getSnippet(c(this).find("input[name=sq_post_id]").val(),c(this).find("input[name=sq_term_id]").val(),c(this).find("input[name=sq_taxonomy]").val(),c(this).find("input[name=sq_post_type]").val())})};
7
+ c.fn.sq_editSnippet=function(d){var a=this,b=c.extend({called:"normal",sq_snippet_wrap:a.find(".sq_snippet_wrap"),editButton:a.find(".sq_snippet_btn_edit"),saveButton:a.find(".sq_snippet_btn_save"),cancelButton:a.find(".sq_snippet_btn_cancel"),refreshButton:a.find(".sq_snippet_btn_refresh"),last_tab:null,closeButton:a.find(".sq-close"),sq_url:a.find("input[name=sq_url]"),sq_doseo:a.find("input[name=sq_doseo].sq-switch"),sq_toggle:a.find(".sq-toggle"),sq_title:a.find("textarea[name=sq_title]"),sq_description:a.find("textarea[name=sq_description]"),
8
+ sq_keywords:a.find("input[name=sq_keywords]"),sq_noindex:a.find("input[name=sq_noindex]"),sq_nofollow:a.find("input[name=sq_nofollow]"),sq_nositemap:a.find("input[name=sq_nositemap]"),sq_canonical:a.find("input[name=sq_canonical]"),sq_og_media:a.find("input[name=sq_og_media]"),sq_og_media_preview:a.find("img.sq_og_media_preview"),og_image_close:a.find(".sq_og_image_close"),sq_og_title:a.find("textarea[name=sq_og_title]"),sq_og_description:a.find("textarea[name=sq_og_description]"),sq_og_author:a.find("input[name=sq_og_author]"),
9
+ sq_og_type:a.find("select[name=sq_og_type]"),sq_og_pixel:a.find("#sq_og_pixel_id"),sq_tw_media:a.find("input[name=sq_tw_media]"),sq_tw_media_preview:a.find("img.sq_tw_media_preview"),tw_image_close:a.find(".sq_tw_image_close"),sq_tw_title:a.find("textarea[name=sq_tw_title]"),sq_tw_description:a.find("textarea[name=sq_tw_description]"),sq_tw_type:a.find("select[name=sq_tw_type]"),sq_jsonld:a.find("textarea[name=sq_jsonld]"),sq_jsonld_code_type:a.find("select.sq_jsonld_code_type"),sq_jsonld_custom_code:a.find("div.sq_jsonld_custom_code"),
10
+ sq_fpixel:a.find("textarea[name=sq_fpixel]"),sq_fpixel_code_type:a.find("select.sq_fpixel_code_type"),sq_fpixel_custom_code:a.find("div.sq_fpixel_custom_code"),sq_post_id:0<a.find("input[name=sq_post_id]").length?a.find("input[name=sq_post_id]").val():0,sq_term_id:0<a.find("input[name=sq_term_id]").length?a.find("input[name=sq_term_id]").val():0,sq_taxonomy:0<a.find("input[name=sq_taxonomy]").length?a.find("input[name=sq_taxonomy]").val():"",sq_post_type:0<a.find("input[name=sq_post_type]").length?
11
+ a.find("input[name=sq_post_type]").val():"",previewTab:a.find(".sq_tab_preview"),editTab:a.find(".sq_tab_edit"),validKeyword:!1,__sq_save_message:"undefined"!==typeof __sq_save_message?__sq_save_message:"Saved!",__sq_error_message:"undefined"!==typeof __sq_error_message?__sq_error_message:"ERROR! Could not save the data. Please refresh",__sq_save_message_preview:"undefined"!==typeof __sq_save_message_preview?__sq_save_message_preview:"Saved! Reload to see the changes."},d);a.initNav=function(){var c=
12
+ a.parents(".menupop:last");0<c.length&&"topmenu"===a.data("snippet")?(c.off("hover"),c.find(".ab-item").on("click",function(){c.addClass("open")}),b.closeButton.on("click",function(){c.removeClass("open");c.removeClass("hover")}),c.find(".sq_snippet_wrap").show()):(a.off("hover"),b.closeButton.on("click",function(){a.hide()}))};a.listenDoSeo=function(){b.sq_doseo.on("change",function(){a.saveSEO()});b.sq_doseo.prop("checked")?(b.previewTab.show(),b.editTab.hide()):(b.previewTab.hide(),b.editTab.hide(),
13
+ b.cancelButton.hide())};a.tabsListen=function(){a.find("#sq_tabs").find("li").on("click",function(b){b.preventDefault();$li=c(this);a.find("#sq_tabs").find("li").each(function(){c(this).removeClass("active")});a.find(".sq_tabcontent").each(function(){c(this).hide()});a.find("#sq_tab_"+$li.find("a").text().toString().toLowerCase()).show();$li.addClass("active")})};a.saveSEO=function(){a.preventLeave(!1);a.addClass("sq_minloading");var d=a.find("#sq_hash");""!==d.val()&&c.post(sqQuery.ajaxurl,{action:"sq_saveseo",
14
+ sq_title:0<b.sq_title.length?a.escapeHtml(b.sq_title.val()):"",sq_description:0<b.sq_description.length?a.escapeHtml(b.sq_description.val()):"",sq_keywords:0<b.sq_keywords.length?a.escapeHtml(b.sq_keywords.val()):"",sq_canonical:0<b.sq_canonical.length?a.escapeHtml(b.sq_canonical.val()):"",sq_noindex:0<a.find("input[name=sq_noindex]:checked").length?parseInt(a.find("input[name=sq_noindex]:checked").val()):1,sq_nofollow:0<a.find("input[name=sq_nofollow]:checked").length?parseInt(a.find("input[name=sq_nofollow]:checked").val()):
15
+ 1,sq_nositemap:0<a.find("input[name=sq_nositemap]:checked").length?parseInt(a.find("input[name=sq_nositemap]:checked").val()):1,sq_tw_title:0<b.sq_tw_title.length?a.escapeHtml(b.sq_tw_title.val()):"",sq_tw_description:0<b.sq_tw_description.length?a.escapeHtml(b.sq_tw_description.val()):"",sq_tw_media:0<b.sq_tw_media.length?b.sq_tw_media.val():"",sq_tw_type:0<b.sq_tw_type.length?b.sq_tw_type.find("option:selected").val():"",sq_og_title:0<b.sq_og_title.length?a.escapeHtml(b.sq_og_title.val()):"",sq_og_description:0<
16
+ b.sq_og_description.length?a.escapeHtml(b.sq_og_description.val()):"",sq_og_type:0<b.sq_og_type.length?b.sq_og_type.find("option:selected").val():"",sq_og_author:0<b.sq_og_author.length?a.escapeHtml(b.sq_og_author.val()):"",sq_og_media:0<b.sq_og_media.length?b.sq_og_media.val():"",sq_jsonld_code_type:0<b.sq_jsonld_code_type.length?b.sq_jsonld_code_type.find("option:selected").val():"auto",sq_jsonld:0<b.sq_jsonld.length&&"custom"===b.sq_jsonld_code_type.find("option:selected").val()?b.sq_jsonld.val():
17
+ "",sq_fpixel_code_type:0<b.sq_fpixel_code_type.length?b.sq_fpixel_code_type.find("option:selected").val():"auto",sq_fpixel:0<b.sq_fpixel.length&&"custom"===b.sq_fpixel_code_type.find("option:selected").val()?b.sq_fpixel.val():"",sq_url:0<b.sq_url.length?a.escapeHtml(b.sq_url.val()):"",sq_hash:d.val(),post_id:b.sq_post_id,term_id:b.sq_term_id,taxonomy:b.sq_taxonomy,post_type:b.sq_post_type,sq_doseo:0<a.find("input[name=sq_doseo]:checked").length?parseInt(a.find("input[name=sq_doseo]:checked").val()):
18
+ 0,sq_nonce:sqQuery.nonce},function(){}).done(function(d){a.removeClass("sq_minloading");if("undefined"!==typeof d.saved){if("undefined"!==typeof d.html){var e=a.find(".sq-nav-item.active");a.html(d.html);a.sq_editSnippet({called:"ajax"});a.find(e).trigger("click");a.trigger("sq_snippet_loaded");a.trigger("sq_snippet_saved");SQ_DEBUG&&console.log("sq_snippet_loaded");SQ_DEBUG&&console.log("sq_snippet_saved")}else c.sq_showError("Couldn't load the page. Please refresh.",0);"undefined"!==typeof d.error?
19
+ c.sq_showError(d.error,2E3):c.sq_showSaved(b.__sq_save_message,2E3)}else c.sq_showError(b.__sq_error_message,2E3)}).fail(function(){a.removeClass("sq_minloading");c.sq_showError(b.__sq_error_message,2E3)})};a.populateInputs=function(){var d=c(document).find("head title").text();d||(d="");(d=a.find('meta[name="description"]').attr("content"))||(d="");0<a.find(".sq_title").length&&a.find(".sq_title").each(function(){c(this).sq_checkMax()});0<a.find(".sq_description").length&&a.find(".sq_description").each(function(){c(this).sq_checkMax()});
20
+ 0<a.find(".sq_tab_facebook").find(".sq_deactivated").length&&(a.find(".sq_tab_facebook").find(".sq_snippet_title").text(a.find(".sq_tab_meta").find(".sq_snippet_title").text()),a.find(".sq_tab_facebook").find(".sq_snippet_description").text(a.find(".sq_tab_meta").find(".sq_snippet_description").text()));0<a.find(".sq_tab_twitter").find(".sq_deactivated").length&&(a.find(".sq_tab_twitter").find(".sq_snippet_title").text(a.find(".sq_tab_meta").find(".sq_snippet_title").text()),a.find(".sq_tab_twitter").find(".sq_snippet_description").text(a.find(".sq_tab_meta").find(".sq_snippet_description").text()));
21
+ b.sq_og_media_preview&&""!==b.sq_og_media.val()&&(b.sq_og_media_preview.attr("src",b.sq_og_media.val()),b.og_image_close.show());b.og_image_close.on("click",function(){b.sq_og_media_preview.attr("src","");b.sq_og_media.val("");c(this).hide()});b.sq_tw_media_preview&&""!==b.sq_tw_media.val()&&(b.sq_tw_media_preview.attr("src",b.sq_tw_media.val()),b.tw_image_close.show());b.tw_image_close.on("click",function(){b.sq_tw_media_preview.attr("src","");b.sq_tw_media.val("");c(this).hide()});b.refreshButton.on("click",
22
+ function(){a.sq_loadSnippet()});a.keywordsListen();b.editButton.on("click",function(){b.previewTab.hide();b.editTab.show();b.cancelButton.on("click",function(){b.previewTab.show();b.editTab.hide()});c.isFunction(c.fn.sq_patterns)&&a.find(".sq_pattern_field").each(function(){c(this).sq_patterns().init()})})};a.mediaListen=function(){a.find(".sq_get_og_media, .sq_get_tw_media").click(function(a){a.preventDefault();var d=c(this).parents(".sq-row:last").find(".sq_og_media_preview"),e=c(this).parents(".sq-row:last").find(".sq_og_image_close"),
23
+ g=c(this).parents(".sq-row:last").find(".sq_tw_media_preview"),l=c(this).parents(".sq-row:last").find(".sq_tw_image_close");k&&k.open();var k=wp.media({title:"Select Media",multiple:!1,library:{type:"image"}});k.on("close",function(){var a=null,c=0;k.state().get("selection").each(function(b){a=b.attributes.url;c++});0<d.length&&null!==a&&(b.sq_og_media.val(a),d.attr("src",a),e.show());0<g.length&&null!==a&&(b.sq_tw_media.val(a),g.attr("src",a),l.show())});k.on("open",function(){k.state().get("selection")});
24
+ k.open()})};a.dropDownListen=function(){var a,d,f;b.sq_toggle.on("click",function(){f=c(this);f.css("height","auto");d=f.parents(".sq-input-group:last").find(".sq-actions");if("small"==d.data("position"))d.css("top","35px"),d.css("height","36px");else{var b=f.height()+20;d.css("top",b+"px")}a=d.find(".sq-action");d.show();a.on("click",function(){var a=c(this).find(".sq-value");"undefined"!==typeof a&&""!==a&&(f.val(a.html()),f.trigger("change"),f.sq_checkMax())});f.on("keyup",function(){c(this).parents(".sq-input-group:last").find(".sq-actions").hide()});
25
+ f.sq_bodyClick("click",function(){c(this).parents(".sq-input-group:last").find(".sq-actions").hide()})});b.sq_jsonld_code_type.on("change",function(){"custom"===b.sq_jsonld_code_type.find("option:selected").val()?b.sq_jsonld_custom_code.show():b.sq_jsonld_custom_code.hide()});b.sq_fpixel_code_type.on("change",function(){"custom"===b.sq_fpixel_code_type.find("option:selected").val()?b.sq_fpixel_custom_code.show():b.sq_fpixel_custom_code.hide()})};a.keywordsListen=function(){b.sq_keywords.sqtagsinput("items")};
26
+ a.escapeHtml=function(a){var b={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};return a.toString().replace(/[&<>"']/g,function(a){return b[a]})};a.preventLeave=function(a){if(0==c("form#post").length)if(a)c(window).on("beforeunload",function(){return confirm("You have unsave changes in Squirrly Snippet. Are you sure you want to proceed?")});else c(window).off("beforeunload")};a.initNav();a.listenDoSeo();a.mediaListen();a.tabsListen();a.populateInputs();a.dropDownListen();a.find('input[type="text"], textarea').on("keyup paste",
27
+ function(){a.preventLeave(!0);c(this).sq_checkMax()});b.saveButton.on("click",function(b){b.preventDefault();SQ_DEBUG&&console.log("save");a.preventLeave(!1);a.saveSEO()});if("undefined"!==typeof c.sq_blockseo)c.sq_blockseo.on("sq_seo_refresh",function(){b.refreshButton.trigger("click")});c(document).on("after-autosave.update-post-slug",function(b,c){a.preventLeave(!1)});0<a.find(".sq_save_ajax").length&&(a.find(".sq_save_ajax").find("input").on("change",function(){c(this).sq_ajaxSnippetListen()}),
28
+ a.find(".sq_save_ajax").find("button").on("click",function(){c(this).sq_ajaxSnippetListen()}));return a};c.fn.sq_checkMax=function(){var d=c(this),a=d.parents(".sq-input-group:last"),b=0,e=300,h;if(!(0< !d.length)){var f=d.is("input, textarea")?h=d.val():h=d.html();var g=f.length;a.find(".sq_length").length&&(e=parseInt(a.find(".sq_length").data("maxlength")));if(a.hasClass("sq_pattern_field")){var l=a.find(".sq_pattern_list");var k=f.split(" ");if(0<k.length){for(g=0;g<k.length;g++)l.find('li[data-pattern="'+
29
+ k[g].replace(/"/g,"")+'"]').length&&(f=f.replace(k[g],""),f=f.replace(" "," "),f=f.trim(),l.find('li[data-pattern="'+k[g].replace(/"/g,"")+'"]').data("value")&&(b+=l.find('li[data-pattern="'+k[g].replace(/"/g,"")+'"]').data("value").length),h=h.replace(new RegExp(k[g],"g"),l.find('li[data-pattern="'+k[g].replace(/"/g,"")+'"]').data("value")));g=f.length+b}}d.attr("title",h);a.find(".sq_length").text(g+"/"+e);0===g||g>e?d.attr("style","border: solid 1px red !important"):d.attr("style","border: none !important")}};
30
+ c.fn.sq_bodyClick=function(d,a){return this.each(function(){var b=c(this),e=this;c(document).on(d,function f(b){b.target===e||c.contains(e,b.target)||(a.apply(e,[b]),c(document).off(d,f))});b.on("keydown blur",function g(c){9===c.which&&(a.apply(e,[c]),b.off("keydown",g))})})};c.fn.toggleSwitch=function(d){var a=c(this);(a.prop("checked")&&0==d||!a.prop("checked")&&1==d)&&a.trigger("click")};c.fn.sq_getSnippet=function(d,a,b,e){var h=this;h.addClass("sq_minloading");c.post(sqQuery.ajaxurl,{action:"sq_getsnippet",
31
+ post_id:d,term_id:a,taxonomy:b,post_type:e,sq_nonce:sqQuery.nonce}).done(function(a){"undefined"!==typeof a?("undefined"!==typeof a.html?(c("div.tooltip").hide(),h.html(a.html),h.sq_editSnippet(),h.trigger("sq_snippet_loaded"),SQ_DEBUG&&console.log("sq_snippet_loaded")):c("#sq_blocksnippet").trigger("error.refresh"),"undefined"!==typeof a.error&&c.sq_showError(a.error,1E4)):(c("#sq_blocksnippet").trigger("error.refresh"),SQ_DEBUG&&console.log("no data received"));h.removeClass("sq_minloading")}).fail(function(){SQ_DEBUG&&
32
+ console.log("no data received");c("#sq_blocksnippet").trigger("error.refresh");h.removeClass("sq_minloading")})};c.fn.sq_previewSnippet=function(d,a){var b=this;"undefined"===typeof d&&(d="");"undefined"===typeof a&&(a="");b.find(".sq_snippet_ul").addClass("sq_minloading");b.find(".sq_snippet_title").html("");b.find(".sq_snippet_url").html("");b.find(".sq_snippet_description").html("");b.find(".sq_snippet_keywords").hide();b.find(".sq_snippet").show();b.find(".sq_snippet_update").hide();b.find(".sq_snippet_customize").hide();
33
+ b.find(".ogimage_preview").hide();setTimeout(function(){c.post(sqQuery.ajaxurl,{action:"sq_previewsnippet",url:d,sq_nonce:sqQuery.nonce}).done(function(c){b.find(".sq_snippet_ul").removeClass("sq_minloading");b.find(".sq_snippet_update").show();b.find(".sq_snippet_customize").show();b.find(".sq_snippet_keywords").show();b.find(".ogimage_preview").show();c&&(b.find(".sq_snippet_title").html(c.title),""!==a?b.find(".sq_snippet_url").html('<a href="'+d+'" target="_blank">'+a+"</a>"):b.find(".sq_snippet_url").html(c.url),
34
+ b.find(".sq_snippet_description").html(c.description))}).fail(function(){b.find(".sq_snippet_ul").removeClass("sq_minloading");b.find(".sq_snippet_update").show()},"json")},500)};c.fn.sq_ajaxSnippetListen=function(){var d=this,a=c("#"+d.data("input")),b=d.data("confirm"),e=d.data("action"),h=d.data("name"),f=0;a.length||(a=d);if("undefined"===typeof b||confirm(b))a.is("checkbox")&&a.is(":checked")?f=a.val():a.is("select")?f=a.find("option:selected").val():a.is("input")&&(f=a.val()),d.addClass("sq_minloading"),
35
+ ""!==e&&""!==f&&c.post(sqQuery.ajaxurl,{action:e,input:h,value:f,sq_nonce:sqQuery.nonce}).done(function(a){"undefined"!==typeof a.data?(""===a.data?c("#wpbody-content").prepend("Saved"):c("#wpbody-content").prepend(a.data),setTimeout(function(){d.removeClass("sq_minloading");var a=d.closest("div.sq_save_ajax").parent("div");0<a.length?(a.find(".sq_deactivated_label").remove(),a.find(".sq_deactivated").removeClass("sq_deactivated")):location.reload()},1E3)):"undefined"!==typeof a.error&&(c("body").prepend(a.error),
36
+ d.removeClass("sq_minloading"))}).fail(function(){d.removeClass("sq_minloading");location.reload()},"json")};c.sq_isGutenberg||(c.sq_isGutenberg=function(d){return"undefined"!==typeof window.wp&&"undefined"!==typeof wp.data&&"undefined"!==typeof wp.data.select("core/editor")&&c.isFunction(wp.data.select("core/editor").getEditedPostAttribute)});c(document).ready(function(){var d=c("#wp-admin-bar-sq_bar_menu"),a=!1,b="metas";0<d.length&&(d.find('#sq_blocksnippet[data-snippet="topmenu"]').length?(a=
37
+ d.find("#sq_blocksnippet"),a.sq_loadSnippet()):c('#sq_blocksnippet[data-snippet!="topmenu"]').length&&(a=c("#sq_blocksnippet"),d.find("#wp-admin-bar-sq_bar_submenu").remove(),d.find(".ab-item").on("click",function(){0<c(".edit-post-layout__content").length?c(".edit-post-layout__content").scrollTop(c(".edit-post-layout__content").scrollTop()+a.offset().top-100):c("html,body").scrollTop(a.offset().top-50)}),a.addClass("sq_blocksnippet").addClass("sq-shadow-sm").addClass("sq-border-bottom"),a.find(".inside").show().sq_loadSnippet()),
38
+ a&&(a.on("sq_snippet_loaded",function(){$snippet=c(this);$snippet.find(".sq-nav-item.sq-nav-link").on("click",function(){b=c(this).data("category")});$snippet.find(".sq-nav-item").removeClass("active");$snippet.find(".sq-tab-pane").removeClass("active");var a=$snippet.find(".sq_snippet_menu").find("#sq-nav-item_"+b);a.addClass("active");$snippet.find(a.attr("href")).addClass("active")}),a.on("error.refresh",function(){c.sq_showError("Couldn't load the page. <span class='sq_snippet_refresh' style='color: #0F75BC; cursor:pointer;'>Please refresh</span>.",
39
+ 0);c(".sq_snippet_refresh").on("click",function(){a.sq_loadSnippet()})})))})})(jQuery);
view/assets/js/support.js CHANGED
@@ -1,4 +1,4 @@
1
- if(typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
2
  (function ($) {
3
 
4
  $.fn.sq_blocksupport = function () {
@@ -22,32 +22,14 @@ if(typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
22
  $this.find('.sq_options_feedback_popup').hide();
23
  });
24
 
25
- $this.find("#sq_feedback_0").on('click', function () {
26
- $this.find('#sq_feedback_msg').show();
27
- });
28
-
29
- $this.find("#sq_feedback_1").on('click', function () {
30
- $this.find('#sq_feedback_msg').show();
31
- });
32
-
33
- $this.find("#sq_feedback_2").on('click', function () {
34
- $this.find("#sq_feedback_submit").trigger('click');
35
- for (i = 0; i < 5; i++) $this.find('#sq_options_feedback').find('.sq_icon').removeClass('sq_label_feedback_' + i);
36
- $this.find('#sq_options_feedback').find('.sq_icon').addClass('sq_label_feedback_2');
37
-
38
- });
39
-
40
- $this.find("#sq_feedback_3").on('click', function () {
41
- $this.find("#sq_feedback_submit").trigger('click');
42
- for (i = 0; i < 5; i++) $this.find('#sq_options_feedback').find('.sq_icon').removeClass('sq_label_feedback_' + i);
43
- $this.find('#sq_options_feedback').find('.sq_icon').addClass('sq_label_feedback_3');
44
- });
45
-
46
- $this.find("#sq_feedback_4").on('click', function () {
47
- $this.find("#sq_feedback_submit").trigger('click');
48
- for (i = 0; i < 5; i++) $this.find('#sq_options_feedback').find('.sq_icon').removeClass('sq_label_feedback_' + i);
49
- $this.find('#sq_options_feedback').find('.sq_icon').addClass('sq_label_feedback_4');
50
-
51
  });
52
 
53
  $this.find("#sq_feedback_submit").on('click', function () {
@@ -63,14 +45,11 @@ if(typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
63
  {
64
  action: 'sq_feedback',
65
  feedback: $this.find("input[name=sq_feedback_face]:radio:checked").val(),
66
- sq_support_email: $this.find("input[name=sq_support_email]").val(),
67
- message: $this.find("textarea[name=sq_feedback_message]").val(),
68
- nonce: sqQuery.nonce
69
  }
70
  ).done(function (response) {
71
  $this.find('#sq_feedback_submit').removeAttr("disabled");
72
  $this.find('#sq_feedback_submit').val('Send feedback');
73
- $this.find("textarea[name=sq_feedback_message]").val('');
74
 
75
  if (typeof response.message !== 'undefined') {
76
  $this.find('#sq_options_feedback_error').removeClass('sq_error').addClass('sq_message').html(response.message);
@@ -104,17 +83,9 @@ if(typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
104
  });
105
 
106
  };
107
-
108
- if ($('#sq_options').length > 0) {
109
  $('#sq_options').sq_blocksupport();
110
- } else {
111
- $(document).ready(function () {
112
- $('#sq_options').sq_blocksupport();
113
-
114
- //For Customer Support Page
115
- $('#sq_customerservice').sq_blocksupport();
116
- });
117
- }
118
 
119
 
120
  })(jQuery);
1
+ if (typeof SQ_DEBUG === 'undefined') var SQ_DEBUG = false;
2
  (function ($) {
3
 
4
  $.fn.sq_blocksupport = function () {
22
  $this.find('.sq_options_feedback_popup').hide();
23
  });
24
 
25
+ $this.find(".sq_label_feedback_smiley").on('click', function () {
26
+ for (i = 0; i < 5; i++) {
27
+ $this.find('#sq_options_feedback').find('.sq_icon').removeClass('sq_label_feedback_' + i);
28
+ }
29
+ $this.find('#sq_options_feedback').find('.sq_icon').addClass($(this).attr('for'));
30
+ setTimeout(function () {
31
+ $this.find("#sq_feedback_submit").trigger('click');
32
+ },500)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  });
34
 
35
  $this.find("#sq_feedback_submit").on('click', function () {
45
  {
46
  action: 'sq_feedback',
47
  feedback: $this.find("input[name=sq_feedback_face]:radio:checked").val(),
48
+ sq_nonce: sqQuery.nonce
 
 
49
  }
50
  ).done(function (response) {
51
  $this.find('#sq_feedback_submit').removeAttr("disabled");
52
  $this.find('#sq_feedback_submit').val('Send feedback');
 
53
 
54
  if (typeof response.message !== 'undefined') {
55
  $this.find('#sq_options_feedback_error').removeClass('sq_error').addClass('sq_message').html(response.message);
83
  });
84
 
85
  };
86
+ $(document).ready(function () {
 
87
  $('#sq_options').sq_blocksupport();
88
+ });
 
 
 
 
 
 
 
89
 
90
 
91
  })(jQuery);
view/assets/js/support.min.js CHANGED
@@ -2,9 +2,8 @@ var SQ_DEBUG,$jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(
2
  $jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(b,a,c,d){if(a){c=$jscomp.global;b=b.split(".");for(d=0;d<b.length-1;d++){var e=b[d];e in c||(c[e]={});c=c[e]}b=b[b.length-1];d=c[b];a=a(d);a!=d&&null!=a&&$jscomp.defineProperty(c,b,{configurable:!0,writable:!0,value:a})}};
3
  $jscomp.polyfill("Array.prototype.find",function(b){return b?b:function(a,b){return $jscomp.findInternal(this,a,b).v}},"es6","es3");"undefined"===typeof SQ_DEBUG&&(SQ_DEBUG=!1);
4
  (function(b){b.fn.sq_blocksupport=function(){var a=this;a.find("#sq_options_support").find("span").on("click",function(){a.find(".sq_options_support_popup").show();a.find(".sq_options_feedback_popup").hide()});a.find("#sq_options_close").on("click",function(){a.find(".sq_options_support_popup").hide()});a.find("#sq_options_feedback").find("span").on("click",function(){a.find(".sq_options_feedback_popup").show();a.find("#sq_options_feedback").find(".sq_push").hide();a.find(".sq_options_support_popup").hide()});
5
- a.find("#sq_options_feedback_close").on("click",function(){a.find(".sq_options_feedback_popup").hide()});a.find("#sq_feedback_0").on("click",function(){a.find("#sq_feedback_msg").show()});a.find("#sq_feedback_1").on("click",function(){a.find("#sq_feedback_msg").show()});a.find("#sq_feedback_2").on("click",function(){a.find("#sq_feedback_submit").trigger("click");for(i=0;5>i;i++)a.find("#sq_options_feedback").find(".sq_icon").removeClass("sq_label_feedback_"+i);a.find("#sq_options_feedback").find(".sq_icon").addClass("sq_label_feedback_2")});
6
- a.find("#sq_feedback_3").on("click",function(){a.find("#sq_feedback_submit").trigger("click");for(i=0;5>i;i++)a.find("#sq_options_feedback").find(".sq_icon").removeClass("sq_label_feedback_"+i);a.find("#sq_options_feedback").find(".sq_icon").addClass("sq_label_feedback_3")});a.find("#sq_feedback_4").on("click",function(){a.find("#sq_feedback_submit").trigger("click");for(i=0;5>i;i++)a.find("#sq_options_feedback").find(".sq_icon").removeClass("sq_label_feedback_"+i);a.find("#sq_options_feedback").find(".sq_icon").addClass("sq_label_feedback_4")});
7
- a.find("#sq_feedback_submit").on("click",function(){a.find("#sq_feedback_msg").hide();a.find("#sq_options_feedback_error").html('<p class="sq_minloading" style="margin:0 auto; padding:2px;"></p>');a.find("#sq_feedback_submit").attr("disabled","disabled");document.cookie="sq_feedback_face="+b("input[name=sq_feedback_face]:radio:checked").val()+"; expires=720; path=/";b.post(sqQuery.ajaxurl,{action:"sq_feedback",feedback:a.find("input[name=sq_feedback_face]:radio:checked").val(),sq_support_email:a.find("input[name=sq_support_email]").val(),
8
- message:a.find("textarea[name=sq_feedback_message]").val(),nonce:sqQuery.nonce}).done(function(b){a.find("#sq_feedback_submit").removeAttr("disabled");a.find("#sq_feedback_submit").val("Send feedback");a.find("textarea[name=sq_feedback_message]").val("");"undefined"!==typeof b.message?a.find("#sq_options_feedback_error").removeClass("sq_error").addClass("sq_message").html(b.message):a.find("#sq_options_feedback_error").removeClass("sq_error").html("")}).fail(function(c){if(200===c.status&&0<c.responseText.indexOf("{")){c.responseText=
9
- c.responseText.substr(c.responseText.indexOf("{"),c.responseText.lastIndexOf("}"));try{c=b.parseJSON(c.responseText),a.find("#sq_feedback_submit").removeAttr("disabled"),a.find("#sq_feedback_submit").val("Send feedback"),a.find("textarea[name=sq_feedback_message]").val(""),"undefined"!==typeof c.message?a.find("#sq_options_feedback_error").removeClass("sq_error").addClass("sq_message").html(c.message):a.find("#sq_options_feedback_error").removeClass("sq_error").html("")}catch(d){}}else a.find("#sq_feedback_submit").removeAttr("disabled"),
10
- a.find("#sq_feedback_submit").val("Send feedback"),a.find("#sq_feedback_submit").removeClass("sq_minloading"),a.find("#sq_options_feedback_error").addClass("sq_error").removeClass("sq_message").html("Could not send the feedback")},"json")})};0<b("#sq_options").length?b("#sq_options").sq_blocksupport():b(document).ready(function(){b("#sq_options").sq_blocksupport();b("#sq_customerservice").sq_blocksupport()})})(jQuery);
2
  $jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(b,a,c,d){if(a){c=$jscomp.global;b=b.split(".");for(d=0;d<b.length-1;d++){var e=b[d];e in c||(c[e]={});c=c[e]}b=b[b.length-1];d=c[b];a=a(d);a!=d&&null!=a&&$jscomp.defineProperty(c,b,{configurable:!0,writable:!0,value:a})}};
3
  $jscomp.polyfill("Array.prototype.find",function(b){return b?b:function(a,b){return $jscomp.findInternal(this,a,b).v}},"es6","es3");"undefined"===typeof SQ_DEBUG&&(SQ_DEBUG=!1);
4
  (function(b){b.fn.sq_blocksupport=function(){var a=this;a.find("#sq_options_support").find("span").on("click",function(){a.find(".sq_options_support_popup").show();a.find(".sq_options_feedback_popup").hide()});a.find("#sq_options_close").on("click",function(){a.find(".sq_options_support_popup").hide()});a.find("#sq_options_feedback").find("span").on("click",function(){a.find(".sq_options_feedback_popup").show();a.find("#sq_options_feedback").find(".sq_push").hide();a.find(".sq_options_support_popup").hide()});
5
+ a.find("#sq_options_feedback_close").on("click",function(){a.find(".sq_options_feedback_popup").hide()});a.find(".sq_label_feedback_smiley").on("click",function(){for(i=0;5>i;i++)a.find("#sq_options_feedback").find(".sq_icon").removeClass("sq_label_feedback_"+i);a.find("#sq_options_feedback").find(".sq_icon").addClass(b(this).attr("for"));setTimeout(function(){a.find("#sq_feedback_submit").trigger("click")},500)});a.find("#sq_feedback_submit").on("click",function(){a.find("#sq_feedback_msg").hide();
6
+ a.find("#sq_options_feedback_error").html('<p class="sq_minloading" style="margin:0 auto; padding:2px;"></p>');a.find("#sq_feedback_submit").attr("disabled","disabled");document.cookie="sq_feedback_face="+b("input[name=sq_feedback_face]:radio:checked").val()+"; expires=720; path=/";b.post(sqQuery.ajaxurl,{action:"sq_feedback",feedback:a.find("input[name=sq_feedback_face]:radio:checked").val(),sq_nonce:sqQuery.nonce}).done(function(b){a.find("#sq_feedback_submit").removeAttr("disabled");a.find("#sq_feedback_submit").val("Send feedback");
7
+ "undefined"!==typeof b.message?a.find("#sq_options_feedback_error").removeClass("sq_error").addClass("sq_message").html(b.message):a.find("#sq_options_feedback_error").removeClass("sq_error").html("")}).fail(function(c){if(200===c.status&&0<c.responseText.indexOf("{")){c.responseText=c.responseText.substr(c.responseText.indexOf("{"),c.responseText.lastIndexOf("}"));try{c=b.parseJSON(c.responseText),a.find("#sq_feedback_submit").removeAttr("disabled"),a.find("#sq_feedback_submit").val("Send feedback"),
8
+ a.find("textarea[name=sq_feedback_message]").val(""),"undefined"!==typeof c.message?a.find("#sq_options_feedback_error").removeClass("sq_error").addClass("sq_message").html(c.message):a.find("#sq_options_feedback_error").removeClass("sq_error").html("")}catch(d){}}else a.find("#sq_feedback_submit").removeAttr("disabled"),a.find("#sq_feedback_submit").val("Send feedback"),a.find("#sq_feedback_submit").removeClass("sq_minloading"),a.find("#sq_options_feedback_error").addClass("sq_error").removeClass("sq_message").html("Could not send the feedback")},
9
+ "json")})};b(document).ready(function(){b("#sq_options").sq_blocksupport()})})(jQuery);