Version Description
- 06/18/2020 =
- Fixed - Focus Page Words Count
- Fixed - Focus Page SEO Image
- Fixed - Goals tasks for SEO Image, SEO in METAs, Robots and Sitemap
- Fixed - Google charts error Uncaught TypeError: Cannot read property 'arrayToDataTable' of undefined
- Fixed - Load Squirrly.js in body for Live Assistant
Download this release
Release Info
Developer | cifi |
Plugin | SEO SQUIRRLY™ |
Version | 10.0.10 |
Comparing to | |
See all releases |
Code changes from version 10.0.06 to 10.0.10
- classes/RemoteController.php +4 -20
- classes/helpers/Tools.php +26 -3
- controllers/Assistant.php +7 -1
- controllers/Audits.php +7 -2
- controllers/BulkSeo.php +7 -1
- controllers/CheckSeo.php +0 -8
- controllers/Dashboard.php +3 -0
- controllers/FocusPages.php +7 -2
- controllers/Menu.php +9 -2
- controllers/Onboarding.php +7 -1
- controllers/Overview.php +8 -2
- controllers/Patterns.php +6 -1
- controllers/Post.php +3 -1
- controllers/Ranking.php +7 -2
- controllers/Research.php +7 -1
- controllers/SeoSettings.php +7 -1
- controllers/Snippet.php +6 -1
- core/BlockAudits.php +0 -1
- core/BlockFocusPages.php +0 -1
- core/BlockRanks.php +0 -1
- models/CheckSeo.php +42 -1
- models/ImportExport.php +3 -1
- models/bulkseo/Metas.php +7 -3
- models/focuspages/Image.php +5 -2
- models/focuspages/Length.php +6 -9
- models/focuspages/Onpage.php +5 -3
- models/focuspages/Snippet.php +4 -4
- readme.txt +64 -25
- squirrly.php +3 -3
- view/Assistant/Assistant.php +1 -1
- view/Assistant/Settings.php +1 -1
- view/Audits/Addpage.php +1 -1
- view/Audits/Audit.php +1 -1
- view/Audits/AuditPageRow.php +6 -2
- view/Audits/AuditStats.php +9 -5
- view/Audits/Audits.php +8 -1
- view/Audits/Compare.php +3 -3
- view/Audits/Settings.php +1 -1
- view/Blocks/Connect.php +2 -2
- view/Blocks/Dashboard.php +7 -0
- view/Blocks/Features.php +1 -1
- view/Blocks/Jorney.php +1 -1
- view/Blocks/KnowledgeBase.php +30 -30
- view/Blocks/Login.php +2 -2
- view/Blocks/Ranks.php +7 -1
- view/Blocks/SEOIssues.php +2 -2
- view/Blocks/Toolbar.php +7 -2
- view/Blocks/VersionBar.php +1 -1
- view/Connect/GoogleAnalytics.php +1 -1
- view/Connect/GoogleSearchConsole.php +1 -1
- view/FocusPages/Addpage.php +1 -1
- view/FocusPages/FocusPageRow.php +9 -5
- view/FocusPages/FocusPageStats.php +22 -10
- view/FocusPages/Pagelist.php +7 -1
- view/Goals/CheckSeo.php +12 -3
- view/Goals/Goals.php +5 -5
- view/Onboarding/Step1.2.php +1 -1
- view/Onboarding/Step2.2.php +1 -1
- view/Onboarding/Step3.php +1 -1
- view/Ranking/Rankings.php +15 -9
- view/Ranking/Settings.php +1 -1
- view/Research/Briefcase.php +2 -2
- view/Research/Labels.php +2 -2
- view/Research/Research.php +1 -1
- view/SeoSettings/Advanced.php +1 -1
- view/SeoSettings/Automation.php +1 -1
- view/SeoSettings/Backup.php +7 -7
- view/SeoSettings/Favicon.php +1 -1
- view/SeoSettings/Jsonld.php +1 -1
- view/SeoSettings/Metas.php +1 -1
- view/SeoSettings/Robots.php +1 -1
- view/SeoSettings/Sitemap.php +1 -1
- view/SeoSettings/Social.php +1 -1
- view/SeoSettings/Tracking.php +1 -1
- view/SeoSettings/Webmaster.php +1 -1
- view/assets/css/account.css +0 -62
- view/assets/css/assistant.css +0 -116
- view/assets/css/audits.css +0 -1273
- view/assets/css/bootstrap-grid.css +0 -1912
- view/assets/css/bootstrap-grid.min.css +1 -7
- view/assets/css/bootstrap-reboot.css +0 -331
- view/assets/css/bootstrap-reboot.min.css +1 -7
- view/assets/css/bootstrap.css +0 -9023
- view/assets/css/bootstrap.rtl.min.css +2 -0
- view/assets/css/briefcase.css +0 -2029
- view/assets/css/bulkseo.css +0 -5
- view/assets/css/checkseo.css +0 -77
- view/assets/css/dashboard.css +0 -22
- view/assets/css/datatables.css +0 -15
- view/assets/css/datatables.min.css +1 -15
- view/assets/css/focuspages.css +0 -140
- view/assets/css/fontawesome.css +0 -2926
- view/assets/css/frontend.css +0 -152
- view/assets/css/frontend.min.css +1 -1
- view/assets/css/fullwidth.css +0 -33
- view/assets/css/global.css +0 -833
- view/assets/css/global.min.css +1 -1
- view/assets/css/highlight.css +0 -59
- view/assets/css/jorney.css +0 -146
- view/assets/css/labels.css +0 -116
- view/assets/css/login.css +0 -50
- view/assets/css/logo.css +0 -45
- view/assets/css/logo.min.css +1 -1
classes/RemoteController.php
CHANGED
@@ -87,7 +87,7 @@ class SQ_Classes_RemoteController {
|
|
87 |
* @return string
|
88 |
*/
|
89 |
public static function getMySquirrlyLink($path) {
|
90 |
-
if (SQ_Classes_Helpers_Tools::getMenuVisible('show_panel')) {
|
91 |
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;
|
92 |
} else {
|
93 |
return _SQ_DASH_URL_;
|
@@ -1312,28 +1312,12 @@ class SQ_Classes_RemoteController {
|
|
1312 |
__new_post_title: "' . __('Auto Draft') . '",
|
1313 |
__frontend_optimized: "' . __('You’ve already used the Live Assistant to optimize this post when creating it in your Page Builder. Please go back and resume your optimization work there.', _SQ_PLUGIN_NAME_) . '",
|
1314 |
};
|
1315 |
-
|
1316 |
-
|
1317 |
-
if (typeof sq_script === "undefined"){
|
1318 |
-
var sq_script = document.createElement(\'script\');
|
1319 |
-
sq_script.src = "' . _SQ_STATIC_API_URL_ . SQ_URI . '/js/squirrly' . (SQ_DEBUG ? '' : '.min') . '.js?ver=' . SQ_VERSION . '";
|
1320 |
-
var site_head = document.getElementsByTagName ("head")[0] || document.documentElement;
|
1321 |
-
site_head.insertBefore(sq_script, site_head.firstChild);
|
1322 |
-
}
|
1323 |
-
|
1324 |
-
window.onerror = function(){
|
1325 |
-
$.sq_config.sq_windowerror = true;
|
1326 |
-
};
|
1327 |
-
|
1328 |
-
//for older version return
|
1329 |
-
window.params = [];
|
1330 |
-
|
1331 |
-
$(document).ready(function() {
|
1332 |
-
$("#sq_preloading").html("");
|
1333 |
-
});
|
1334 |
})(jQuery);
|
1335 |
</script>';
|
1336 |
|
|
|
|
|
1337 |
}
|
1338 |
|
1339 |
}
|
87 |
* @return string
|
88 |
*/
|
89 |
public static function getMySquirrlyLink($path) {
|
90 |
+
if (SQ_Classes_Helpers_Tools::getMenuVisible('show_panel') && current_user_can('sq_manage_settings')) {
|
91 |
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;
|
92 |
} else {
|
93 |
return _SQ_DASH_URL_;
|
1312 |
__new_post_title: "' . __('Auto Draft') . '",
|
1313 |
__frontend_optimized: "' . __('You’ve already used the Live Assistant to optimize this post when creating it in your Page Builder. Please go back and resume your optimization work there.', _SQ_PLUGIN_NAME_) . '",
|
1314 |
};
|
1315 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1316 |
})(jQuery);
|
1317 |
</script>';
|
1318 |
|
1319 |
+
echo '<script src="' . _SQ_STATIC_API_URL_ . SQ_URI . '/js/squirrly' . (SQ_DEBUG ? '' : '.min') . '.js?ver=' . SQ_VERSION . '"></script>';
|
1320 |
+
|
1321 |
}
|
1322 |
|
1323 |
}
|
classes/helpers/Tools.php
CHANGED
@@ -821,6 +821,29 @@ class SQ_Classes_Helpers_Tools {
|
|
821 |
}
|
822 |
}
|
823 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
824 |
/**
|
825 |
* Get a value from $_POST / $_GET
|
826 |
* if unavailable, take a default value
|
@@ -929,10 +952,10 @@ class SQ_Classes_Helpers_Tools {
|
|
929 |
*/
|
930 |
public static function checkUpgrade($upgrader_object, $options) {
|
931 |
// If an update has taken place and the updated type is plugins and the plugins element exists
|
932 |
-
if(
|
933 |
// Iterate through the plugins being updated and check if ours is there
|
934 |
-
foreach(
|
935 |
-
if(
|
936 |
//Create Qss table if not exists
|
937 |
SQ_Classes_ObjController::getClass('SQ_Models_Qss')->checkTableExists();
|
938 |
}
|
821 |
}
|
822 |
}
|
823 |
|
824 |
+
/**
|
825 |
+
* Set the Nonce action
|
826 |
+
* @param $action
|
827 |
+
* @param string $name
|
828 |
+
* @param bool $referer
|
829 |
+
* @param bool $echo
|
830 |
+
* @return string
|
831 |
+
*/
|
832 |
+
public static function setNonce($action, $name = '_wpnonce', $referer = true, $echo = true) {
|
833 |
+
$name = esc_attr($name);
|
834 |
+
$nonce_field = '<input type="hidden" name="' . $name . '" value="' . wp_create_nonce($action) . '" />';
|
835 |
+
|
836 |
+
if ($referer) {
|
837 |
+
$nonce_field .= wp_referer_field(false);
|
838 |
+
}
|
839 |
+
|
840 |
+
if ($echo) {
|
841 |
+
echo $nonce_field;
|
842 |
+
}
|
843 |
+
|
844 |
+
return $nonce_field;
|
845 |
+
}
|
846 |
+
|
847 |
/**
|
848 |
* Get a value from $_POST / $_GET
|
849 |
* if unavailable, take a default value
|
952 |
*/
|
953 |
public static function checkUpgrade($upgrader_object, $options) {
|
954 |
// If an update has taken place and the updated type is plugins and the plugins element exists
|
955 |
+
if ($options['action'] == 'update' && $options['type'] == 'plugin' && isset($options['plugins'])) {
|
956 |
// Iterate through the plugins being updated and check if ours is there
|
957 |
+
foreach ($options['plugins'] as $plugin) {
|
958 |
+
if ($plugin == _SQ_PLUGIN_NAME_ . '/squirrly.php') {
|
959 |
//Create Qss table if not exists
|
960 |
SQ_Classes_ObjController::getClass('SQ_Models_Qss')->checkTableExists();
|
961 |
}
|
controllers/Assistant.php
CHANGED
@@ -14,7 +14,13 @@ class SQ_Controllers_Assistant extends SQ_Classes_FrontController {
|
|
14 |
}
|
15 |
|
16 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
19 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('datatables');
|
20 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
14 |
}
|
15 |
|
16 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
17 |
+
if(is_rtl()){
|
18 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
|
19 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
|
20 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
21 |
+
}else{
|
22 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
|
23 |
+
}
|
24 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
25 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('datatables');
|
26 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
controllers/Audits.php
CHANGED
@@ -39,7 +39,13 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
|
|
39 |
}
|
40 |
|
41 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
44 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
45 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('global');
|
@@ -189,7 +195,6 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
|
|
189 |
*/
|
190 |
public function getScripts() {
|
191 |
return '<script>
|
192 |
-
google.load("visualization", "1", {packages: ["corechart"]});
|
193 |
function drawScoreChart(id, values, reverse) {
|
194 |
var data = google.visualization.arrayToDataTable(values);
|
195 |
|
39 |
}
|
40 |
|
41 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
42 |
+
if(is_rtl()){
|
43 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
|
44 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
|
45 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
46 |
+
}else{
|
47 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
|
48 |
+
}
|
49 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
50 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
51 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('global');
|
195 |
*/
|
196 |
public function getScripts() {
|
197 |
return '<script>
|
|
|
198 |
function drawScoreChart(id, values, reverse) {
|
199 |
var data = google.visualization.arrayToDataTable(values);
|
200 |
|
controllers/BulkSeo.php
CHANGED
@@ -12,7 +12,13 @@ class SQ_Controllers_BulkSeo extends SQ_Classes_FrontController {
|
|
12 |
$tab = SQ_Classes_Helpers_Tools::getValue('tab', 'bulkseo');
|
13 |
|
14 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
17 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
18 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('global');
|
12 |
$tab = SQ_Classes_Helpers_Tools::getValue('tab', 'bulkseo');
|
13 |
|
14 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
15 |
+
if(is_rtl()){
|
16 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
|
17 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
|
18 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
19 |
+
}else{
|
20 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
|
21 |
+
}
|
22 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
23 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
24 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('global');
|
controllers/CheckSeo.php
CHANGED
@@ -24,13 +24,10 @@ class SQ_Controllers_CheckSeo extends SQ_Classes_FrontController {
|
|
24 |
*/
|
25 |
public function init() {
|
26 |
|
27 |
-
//Get the notifications from database
|
28 |
-
|
29 |
if (!isset($this->congratulations)) {
|
30 |
$this->congratulations = $this->getCongratulations();
|
31 |
}
|
32 |
|
33 |
-
|
34 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('checkseo');
|
35 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('knob');
|
36 |
|
@@ -271,7 +268,6 @@ class SQ_Controllers_CheckSeo extends SQ_Classes_FrontController {
|
|
271 |
$this->model->checkSEO();
|
272 |
|
273 |
break;
|
274 |
-
|
275 |
case 'sq_moretasks':
|
276 |
$this->model->dbtasks['tasks_for_today'] = array();
|
277 |
$this->model->saveDbTasks();
|
@@ -300,16 +296,13 @@ class SQ_Controllers_CheckSeo extends SQ_Classes_FrontController {
|
|
300 |
|
301 |
SQ_Classes_Error::setError(__('Could not fix it. You need to change it manually.', _SQ_PLUGIN_NAME_));
|
302 |
break;
|
303 |
-
|
304 |
case 'sq_donetask':
|
305 |
-
|
306 |
$name = SQ_Classes_Helpers_Tools::getValue('name', false);
|
307 |
|
308 |
$this->model->doneTask($name);
|
309 |
|
310 |
SQ_Classes_Error::setMessage(__('Saved! Task marked as done.', _SQ_PLUGIN_NAME_));
|
311 |
break;
|
312 |
-
|
313 |
case 'sq_resetignored':
|
314 |
//Remove ignored tasks
|
315 |
$this->model->clearIgnoredTasks();
|
@@ -317,7 +310,6 @@ class SQ_Controllers_CheckSeo extends SQ_Classes_FrontController {
|
|
317 |
SQ_Classes_Error::setMessage(__('Saved!', _SQ_PLUGIN_NAME_));
|
318 |
|
319 |
break;
|
320 |
-
|
321 |
case 'sq_ajax_checkseo':
|
322 |
SQ_Classes_Helpers_Tools::setHeader('json');
|
323 |
$json = array();
|
24 |
*/
|
25 |
public function init() {
|
26 |
|
|
|
|
|
27 |
if (!isset($this->congratulations)) {
|
28 |
$this->congratulations = $this->getCongratulations();
|
29 |
}
|
30 |
|
|
|
31 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('checkseo');
|
32 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('knob');
|
33 |
|
268 |
$this->model->checkSEO();
|
269 |
|
270 |
break;
|
|
|
271 |
case 'sq_moretasks':
|
272 |
$this->model->dbtasks['tasks_for_today'] = array();
|
273 |
$this->model->saveDbTasks();
|
296 |
|
297 |
SQ_Classes_Error::setError(__('Could not fix it. You need to change it manually.', _SQ_PLUGIN_NAME_));
|
298 |
break;
|
|
|
299 |
case 'sq_donetask':
|
|
|
300 |
$name = SQ_Classes_Helpers_Tools::getValue('name', false);
|
301 |
|
302 |
$this->model->doneTask($name);
|
303 |
|
304 |
SQ_Classes_Error::setMessage(__('Saved! Task marked as done.', _SQ_PLUGIN_NAME_));
|
305 |
break;
|
|
|
306 |
case 'sq_resetignored':
|
307 |
//Remove ignored tasks
|
308 |
$this->model->clearIgnoredTasks();
|
310 |
SQ_Classes_Error::setMessage(__('Saved!', _SQ_PLUGIN_NAME_));
|
311 |
|
312 |
break;
|
|
|
313 |
case 'sq_ajax_checkseo':
|
314 |
SQ_Classes_Helpers_Tools::setHeader('json');
|
315 |
$json = array();
|
controllers/Dashboard.php
CHANGED
@@ -10,6 +10,9 @@ class SQ_Controllers_Dashboard extends SQ_Classes_FrontController {
|
|
10 |
|
11 |
public function dashboard() {
|
12 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('dashboard');
|
|
|
|
|
|
|
13 |
add_action('sq_form_notices', array($this,'getNotificationBar'));
|
14 |
|
15 |
echo $this->getView('Blocks/Dashboard');
|
10 |
|
11 |
public function dashboard() {
|
12 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('dashboard');
|
13 |
+
if(is_rtl()) {
|
14 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
15 |
+
}
|
16 |
add_action('sq_form_notices', array($this,'getNotificationBar'));
|
17 |
|
18 |
echo $this->getView('Blocks/Dashboard');
|
controllers/FocusPages.php
CHANGED
@@ -36,7 +36,13 @@ class SQ_Controllers_FocusPages extends SQ_Classes_FrontController {
|
|
36 |
$tab = SQ_Classes_Helpers_Tools::getValue('tab', 'pagelist');
|
37 |
|
38 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
41 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
42 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('global');
|
@@ -167,7 +173,6 @@ class SQ_Controllers_FocusPages extends SQ_Classes_FrontController {
|
|
167 |
*/
|
168 |
public function getScripts() {
|
169 |
return '<script>
|
170 |
-
google.load("visualization", "1", {packages: ["corechart"]});
|
171 |
function drawScoreChart(id, values, reverse) {
|
172 |
var data = google.visualization.arrayToDataTable(values);
|
173 |
|
36 |
$tab = SQ_Classes_Helpers_Tools::getValue('tab', 'pagelist');
|
37 |
|
38 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
39 |
+
if(is_rtl()){
|
40 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
|
41 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
|
42 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
43 |
+
}else{
|
44 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
|
45 |
+
}
|
46 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
47 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
48 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('global');
|
173 |
*/
|
174 |
public function getScripts() {
|
175 |
return '<script>
|
|
|
176 |
function drawScoreChart(id, values, reverse) {
|
177 |
var data = google.visualization.arrayToDataTable(values);
|
178 |
|
controllers/Menu.php
CHANGED
@@ -197,7 +197,13 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
|
|
197 |
} elseif ($menuid == 'sq_focuspages' && !SQ_Classes_Helpers_Tools::getMenuVisible('show_focuspages')) {
|
198 |
continue;
|
199 |
} elseif ($menuid == 'sq_dashboard') {
|
200 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
201 |
} elseif (!isset($item['parent'])) {
|
202 |
continue;
|
203 |
}
|
@@ -448,7 +454,8 @@ class SQ_Controllers_Menu extends SQ_Classes_FrontController {
|
|
448 |
$page = apply_filters('sq_page', SQ_Classes_Helpers_Tools::getValue('page', ''));
|
449 |
|
450 |
if (in_array($page, array_keys($menus))) {
|
451 |
-
echo '<script type="text/javascript" src="
|
|
|
452 |
echo '<div id="sq_preloader" class="sq_loading"></div>';
|
453 |
|
454 |
if ($page <> 'sq_dashboard') {
|
197 |
} elseif ($menuid == 'sq_focuspages' && !SQ_Classes_Helpers_Tools::getMenuVisible('show_focuspages')) {
|
198 |
continue;
|
199 |
} elseif ($menuid == 'sq_dashboard') {
|
200 |
+
if(is_rtl()){
|
201 |
+
$item['title'] = (($errors) ? '<span class="sq_errorcount" style="margin: 6px 0 0 0 !important; float: left !important;">' . $errors . '</span>' : '') . $item['title'];
|
202 |
+
|
203 |
+
}else{
|
204 |
+
$item['title'] = $item['title'] . (($errors) ? '<span class="sq_errorcount" style="margin: 6px 54px 0 0 !important;">' . $errors . '</span>' : '');
|
205 |
+
|
206 |
+
}
|
207 |
} elseif (!isset($item['parent'])) {
|
208 |
continue;
|
209 |
}
|
454 |
$page = apply_filters('sq_page', SQ_Classes_Helpers_Tools::getValue('page', ''));
|
455 |
|
456 |
if (in_array($page, array_keys($menus))) {
|
457 |
+
echo '<script type="text/javascript" src="//www.google.com/jsapi"></script>';
|
458 |
+
echo '<script>google.load("visualization", "1.0", {packages: ["corechart"]});</script>';
|
459 |
echo '<div id="sq_preloader" class="sq_loading"></div>';
|
460 |
|
461 |
if ($page <> 'sq_dashboard') {
|
controllers/Onboarding.php
CHANGED
@@ -17,7 +17,13 @@ class SQ_Controllers_Onboarding extends SQ_Classes_FrontController {
|
|
17 |
$tab = SQ_Classes_Helpers_Tools::getValue('tab', 'step1');
|
18 |
|
19 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
22 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
23 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('global');
|
17 |
$tab = SQ_Classes_Helpers_Tools::getValue('tab', 'step1');
|
18 |
|
19 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
20 |
+
if(is_rtl()){
|
21 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
|
22 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
|
23 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
24 |
+
}else{
|
25 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
|
26 |
+
}
|
27 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
28 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
29 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('global');
|
controllers/Overview.php
CHANGED
@@ -13,12 +13,18 @@ class SQ_Controllers_Overview extends SQ_Classes_FrontController {
|
|
13 |
$this->checkin = SQ_Classes_RemoteController::checkin();
|
14 |
|
15 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
16 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
18 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
19 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('global');
|
20 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('research');
|
21 |
-
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('navbar
|
22 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('dashboard');
|
23 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('account');
|
24 |
|
13 |
$this->checkin = SQ_Classes_RemoteController::checkin();
|
14 |
|
15 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
16 |
+
if(is_rtl()){
|
17 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
|
18 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
|
19 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
20 |
+
}else{
|
21 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
|
22 |
+
}
|
23 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
24 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
25 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('global');
|
26 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('research');
|
27 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('navbar');
|
28 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('dashboard');
|
29 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('account');
|
30 |
|
controllers/Patterns.php
CHANGED
@@ -7,7 +7,12 @@ class SQ_Controllers_Patterns extends SQ_Classes_FrontController {
|
|
7 |
public $patterns;
|
8 |
|
9 |
public function init() {
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
11 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('patterns', array('trigger' => true, 'media' => 'all'));
|
12 |
|
13 |
echo '
|
7 |
public $patterns;
|
8 |
|
9 |
public function init() {
|
10 |
+
if(is_rtl()){
|
11 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('sqbootstrap.rtl', array('trigger' => true, 'media' => 'all'));
|
12 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl', array('trigger' => true, 'media' => 'all'));
|
13 |
+
}else{
|
14 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('sqbootstrap', array('trigger' => true, 'media' => 'all'));
|
15 |
+
}
|
16 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('patterns', array('trigger' => true, 'media' => 'all'));
|
17 |
|
18 |
echo '
|
controllers/Post.php
CHANGED
@@ -10,7 +10,9 @@ class SQ_Controllers_Post extends SQ_Classes_FrontController {
|
|
10 |
|
11 |
//Load post style in post edit
|
12 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('post');
|
13 |
-
|
|
|
|
|
14 |
//load the draggable script in post edit for the floating SLA
|
15 |
wp_enqueue_script("jquery-ui-core");
|
16 |
wp_enqueue_script("jquery-ui-draggable");
|
10 |
|
11 |
//Load post style in post edit
|
12 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('post');
|
13 |
+
if(is_rtl()) {
|
14 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
15 |
+
}
|
16 |
//load the draggable script in post edit for the floating SLA
|
17 |
wp_enqueue_script("jquery-ui-core");
|
18 |
wp_enqueue_script("jquery-ui-draggable");
|
controllers/Ranking.php
CHANGED
@@ -34,7 +34,13 @@ class SQ_Controllers_Ranking extends SQ_Classes_FrontController {
|
|
34 |
}
|
35 |
|
36 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
39 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
40 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('datatables');
|
@@ -203,7 +209,6 @@ class SQ_Controllers_Ranking extends SQ_Classes_FrontController {
|
|
203 |
|
204 |
public function getScripts() {
|
205 |
return '<script type="text/javascript">
|
206 |
-
google.load("visualization", "1", {packages: ["corechart"]});
|
207 |
function drawChart(id, values, reverse) {
|
208 |
var data = google.visualization.arrayToDataTable(values);
|
209 |
|
34 |
}
|
35 |
|
36 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
37 |
+
if(is_rtl()){
|
38 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
|
39 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
|
40 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
41 |
+
}else{
|
42 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
|
43 |
+
}
|
44 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
45 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
46 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('datatables');
|
209 |
|
210 |
public function getScripts() {
|
211 |
return '<script type="text/javascript">
|
|
|
212 |
function drawChart(id, values, reverse) {
|
213 |
var data = google.visualization.arrayToDataTable(values);
|
214 |
|
controllers/Research.php
CHANGED
@@ -41,7 +41,13 @@ class SQ_Controllers_Research extends SQ_Classes_FrontController {
|
|
41 |
$tab = SQ_Classes_Helpers_Tools::getValue('tab', 'research');
|
42 |
|
43 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
44 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
46 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('datatables');
|
47 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
41 |
$tab = SQ_Classes_Helpers_Tools::getValue('tab', 'research');
|
42 |
|
43 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
44 |
+
if(is_rtl()){
|
45 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
|
46 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
|
47 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
48 |
+
}else{
|
49 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
|
50 |
+
}
|
51 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
52 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('datatables');
|
53 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
controllers/SeoSettings.php
CHANGED
@@ -12,7 +12,13 @@ class SQ_Controllers_SeoSettings extends SQ_Classes_FrontController {
|
|
12 |
$tab = SQ_Classes_Helpers_Tools::getValue('tab', 'automation');
|
13 |
|
14 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
17 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
18 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('global');
|
12 |
$tab = SQ_Classes_Helpers_Tools::getValue('tab', 'automation');
|
13 |
|
14 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
15 |
+
if(is_rtl()){
|
16 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
|
17 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
|
18 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
19 |
+
}else{
|
20 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
|
21 |
+
}
|
22 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
23 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome');
|
24 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('global');
|
controllers/Snippet.php
CHANGED
@@ -28,7 +28,12 @@ class SQ_Controllers_Snippet extends SQ_Classes_FrontController {
|
|
28 |
* @return mixed
|
29 |
*/
|
30 |
public function init() {
|
31 |
-
|
|
|
|
|
|
|
|
|
|
|
32 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome', array('trigger' => true, 'media' => 'all'));
|
33 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('highlight', array('trigger' => true, 'media' => 'all'));
|
34 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('patterns', array('trigger' => true, 'media' => 'all'));
|
28 |
* @return mixed
|
29 |
*/
|
30 |
public function init() {
|
31 |
+
if(is_rtl()){
|
32 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('sqbootstrap.rtl', array('trigger' => true, 'media' => 'all'));
|
33 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl', array('trigger' => true, 'media' => 'all'));
|
34 |
+
}else{
|
35 |
+
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('sqbootstrap', array('trigger' => true, 'media' => 'all'));
|
36 |
+
}
|
37 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('fontawesome', array('trigger' => true, 'media' => 'all'));
|
38 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('highlight', array('trigger' => true, 'media' => 'all'));
|
39 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('patterns', array('trigger' => true, 'media' => 'all'));
|
core/BlockAudits.php
CHANGED
@@ -14,7 +14,6 @@ class SQ_Core_BlockAudits extends SQ_Classes_BlockController {
|
|
14 |
|
15 |
public function getScripts() {
|
16 |
return '<script>
|
17 |
-
google.load("visualization", "1", {packages: ["corechart"]});
|
18 |
function drawChart(id, values, reverse) {
|
19 |
var data = google.visualization.arrayToDataTable(values);
|
20 |
|
14 |
|
15 |
public function getScripts() {
|
16 |
return '<script>
|
|
|
17 |
function drawChart(id, values, reverse) {
|
18 |
var data = google.visualization.arrayToDataTable(values);
|
19 |
|
core/BlockFocusPages.php
CHANGED
@@ -36,7 +36,6 @@ class SQ_Core_BlockFocusPages extends SQ_Classes_BlockController {
|
|
36 |
|
37 |
public function getScripts() {
|
38 |
return '<script>
|
39 |
-
google.load("visualization", "1", {packages: ["corechart"]});
|
40 |
function drawChart(id, values, reverse) {
|
41 |
var data = google.visualization.arrayToDataTable(values);
|
42 |
|
36 |
|
37 |
public function getScripts() {
|
38 |
return '<script>
|
|
|
39 |
function drawChart(id, values, reverse) {
|
40 |
var data = google.visualization.arrayToDataTable(values);
|
41 |
|
core/BlockRanks.php
CHANGED
@@ -28,7 +28,6 @@ class SQ_Core_BlockRanks extends SQ_Classes_BlockController {
|
|
28 |
|
29 |
public function getScripts() {
|
30 |
return '<script>
|
31 |
-
google.load("visualization", "1", {packages: ["corechart"]});
|
32 |
function drawChart(id, values, reverse) {
|
33 |
var data = google.visualization.arrayToDataTable(values);
|
34 |
|
28 |
|
29 |
public function getScripts() {
|
30 |
return '<script>
|
|
|
31 |
function drawChart(id, values, reverse) {
|
32 |
var data = google.visualization.arrayToDataTable(values);
|
33 |
|
models/CheckSeo.php
CHANGED
@@ -1333,7 +1333,15 @@ class SQ_Models_CheckSeo {
|
|
1333 |
//filter the array
|
1334 |
$remote_tasks[$function] = array_filter($remote_tasks[$function]);
|
1335 |
//make sure the complete param remains
|
1336 |
-
if (!isset($remote_tasks[$function]['completed']))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1337 |
//create the db taks if doesn't exist
|
1338 |
if (!isset($this->dbtasks[$this->category_name][$function])) $this->dbtasks[$this->category_name][$function] = array();
|
1339 |
//merge the local and remote task
|
@@ -1834,6 +1842,39 @@ class SQ_Models_CheckSeo {
|
|
1834 |
);
|
1835 |
}
|
1836 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1837 |
public function getAMPWebsite() {
|
1838 |
$valid = true;
|
1839 |
if (function_exists('is_amp_endpoint') && is_amp_endpoint()) {
|
1333 |
//filter the array
|
1334 |
$remote_tasks[$function] = array_filter($remote_tasks[$function]);
|
1335 |
//make sure the complete param remains
|
1336 |
+
if (!isset($remote_tasks[$function]['completed'])) {
|
1337 |
+
$remote_tasks[$function]['completed'] = false;
|
1338 |
+
|
1339 |
+
if (method_exists($this, $function)){
|
1340 |
+
if ($result = @call_user_func(array($this, $function))) {
|
1341 |
+
$remote_tasks[$function]['completed'] = $result['completed'];
|
1342 |
+
}
|
1343 |
+
}
|
1344 |
+
}
|
1345 |
//create the db taks if doesn't exist
|
1346 |
if (!isset($this->dbtasks[$this->category_name][$function])) $this->dbtasks[$this->category_name][$function] = array();
|
1347 |
//merge the local and remote task
|
1842 |
);
|
1843 |
}
|
1844 |
|
1845 |
+
/**
|
1846 |
+
* Check Local Robots
|
1847 |
+
* @return array
|
1848 |
+
*/
|
1849 |
+
public function getRobots(){
|
1850 |
+
if(SQ_Classes_Helpers_Tools::getOption('sq_auto_robots')) {
|
1851 |
+
return array(
|
1852 |
+
'completed' => 1
|
1853 |
+
);
|
1854 |
+
}
|
1855 |
+
|
1856 |
+
return array();
|
1857 |
+
}
|
1858 |
+
|
1859 |
+
/**
|
1860 |
+
* Check Local Sitemap
|
1861 |
+
* @return array
|
1862 |
+
*/
|
1863 |
+
public function getSitemap(){
|
1864 |
+
if(SQ_Classes_Helpers_Tools::getOption('sq_auto_sitemap')) {
|
1865 |
+
return array(
|
1866 |
+
'completed' => 1
|
1867 |
+
);
|
1868 |
+
}
|
1869 |
+
|
1870 |
+
return array();
|
1871 |
+
}
|
1872 |
+
|
1873 |
+
|
1874 |
+
/**
|
1875 |
+
* Check AMP Website
|
1876 |
+
* @return array
|
1877 |
+
*/
|
1878 |
public function getAMPWebsite() {
|
1879 |
$valid = true;
|
1880 |
if (function_exists('is_amp_endpoint') && is_amp_endpoint()) {
|
models/ImportExport.php
CHANGED
@@ -400,7 +400,9 @@ class SQ_Models_ImportExport {
|
|
400 |
if (function_exists('mb_detect_encoding') && function_exists('iconv')) {
|
401 |
if ($encoding = mb_detect_encoding($value)) {
|
402 |
if ($encoding <> 'UTF-8') {
|
403 |
-
|
|
|
|
|
404 |
if (strpos($value, '%%') !== false) {
|
405 |
$value = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $value);
|
406 |
}
|
400 |
if (function_exists('mb_detect_encoding') && function_exists('iconv')) {
|
401 |
if ($encoding = mb_detect_encoding($value)) {
|
402 |
if ($encoding <> 'UTF-8') {
|
403 |
+
if (function_exists('iconv')) {
|
404 |
+
$value = iconv($encoding, 'UTF-8', $value);
|
405 |
+
}
|
406 |
if (strpos($value, '%%') !== false) {
|
407 |
$value = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $value);
|
408 |
}
|
models/bulkseo/Metas.php
CHANGED
@@ -246,7 +246,9 @@ class SQ_Models_Bulkseo_Metas extends SQ_Models_Abstract_Assistant {
|
|
246 |
$keywords = preg_split('/,/', $this->_keyword);
|
247 |
if (!empty($keywords)) {
|
248 |
foreach ($keywords as $keyword) {
|
249 |
-
|
|
|
|
|
250 |
$task['completed'] = true;
|
251 |
return $task;
|
252 |
}
|
@@ -357,16 +359,18 @@ class SQ_Models_Bulkseo_Metas extends SQ_Models_Abstract_Assistant {
|
|
357 |
|
358 |
if ($this->_loadpatterns && $this->_post->sq->description <> '') {
|
359 |
$keywords = preg_split('/,/', $this->_keyword);
|
|
|
360 |
if (!empty($keywords)) {
|
361 |
foreach ($keywords as $keyword) {
|
362 |
-
|
|
|
|
|
363 |
$task['completed'] = true;
|
364 |
return $task;
|
365 |
}
|
366 |
}
|
367 |
}
|
368 |
}
|
369 |
-
|
370 |
$task['completed'] = false;
|
371 |
|
372 |
return $task;
|
246 |
$keywords = preg_split('/,/', $this->_keyword);
|
247 |
if (!empty($keywords)) {
|
248 |
foreach ($keywords as $keyword) {
|
249 |
+
$title = html_entity_decode(utf8_decode($this->_post->sq->title));
|
250 |
+
$keyword = html_entity_decode(utf8_decode($keyword));
|
251 |
+
if ($keyword <> '' && (SQ_Classes_Helpers_Tools::findStr($title, trim($keyword)) !== false)) {
|
252 |
$task['completed'] = true;
|
253 |
return $task;
|
254 |
}
|
359 |
|
360 |
if ($this->_loadpatterns && $this->_post->sq->description <> '') {
|
361 |
$keywords = preg_split('/,/', $this->_keyword);
|
362 |
+
|
363 |
if (!empty($keywords)) {
|
364 |
foreach ($keywords as $keyword) {
|
365 |
+
$description = html_entity_decode(utf8_decode($this->_post->sq->description));
|
366 |
+
$keyword = html_entity_decode(utf8_decode($keyword));
|
367 |
+
if ($keyword <> '' && (SQ_Classes_Helpers_Tools::findStr($description, trim($keyword)) !== false)) {
|
368 |
$task['completed'] = true;
|
369 |
return $task;
|
370 |
}
|
371 |
}
|
372 |
}
|
373 |
}
|
|
|
374 |
$task['completed'] = false;
|
375 |
|
376 |
return $task;
|
models/focuspages/Image.php
CHANGED
@@ -80,7 +80,7 @@ class SQ_Models_Focuspages_Image extends SQ_Models_Abstract_Assistant {
|
|
80 |
$header .= '<div class="font-weight-bold text-black-50 mb-2 text-center">' . __('Keyword', _SQ_PLUGIN_NAME_) . ': <strong class="text-info">' . $this->_keyword . '</strong></div>';
|
81 |
if (isset($this->_post->ID)) {
|
82 |
if (isset($this->_post->ID)) {
|
83 |
-
$edit_link = SQ_Classes_Helpers_Tools::getAdminUrl('sq_bulkseo', 'bulkseo', array('sid=' . $this->_post->ID, 'stype=' . $this->_post->post_type))
|
84 |
}
|
85 |
$header .= '<a href="' . $edit_link . '" target="_blank" class="btn btn-success text-white col-sm-8 offset-2 mt-3">' . __('Edit your snippet', _SQ_PLUGIN_NAME_) . '</a>';
|
86 |
}
|
@@ -126,7 +126,10 @@ class SQ_Models_Focuspages_Image extends SQ_Models_Abstract_Assistant {
|
|
126 |
$task['error_message'] = __("No image found", _SQ_PLUGIN_NAME_);
|
127 |
$task['completed'] = false;
|
128 |
} elseif (!empty($this->_images)) {
|
129 |
-
$
|
|
|
|
|
|
|
130 |
foreach ($this->_images as $image) {
|
131 |
//Check if all words are present in the image URL
|
132 |
$allwords = true;
|
80 |
$header .= '<div class="font-weight-bold text-black-50 mb-2 text-center">' . __('Keyword', _SQ_PLUGIN_NAME_) . ': <strong class="text-info">' . $this->_keyword . '</strong></div>';
|
81 |
if (isset($this->_post->ID)) {
|
82 |
if (isset($this->_post->ID)) {
|
83 |
+
$edit_link = SQ_Classes_Helpers_Tools::getAdminUrl('sq_bulkseo', 'bulkseo', array('sid=' . $this->_post->ID, 'stype=' . $this->_post->post_type));
|
84 |
}
|
85 |
$header .= '<a href="' . $edit_link . '" target="_blank" class="btn btn-success text-white col-sm-8 offset-2 mt-3">' . __('Edit your snippet', _SQ_PLUGIN_NAME_) . '</a>';
|
86 |
}
|
126 |
$task['error_message'] = __("No image found", _SQ_PLUGIN_NAME_);
|
127 |
$task['completed'] = false;
|
128 |
} elseif (!empty($this->_images)) {
|
129 |
+
$keyword = html_entity_decode(utf8_decode($this->_keyword));
|
130 |
+
$keyword = preg_replace('/[^a-zA-Z0-9\']/', ' ', $keyword);
|
131 |
+
$keyword = preg_replace('/\s{2,}/', ' ', $keyword);
|
132 |
+
$words = explode(' ', $keyword);
|
133 |
foreach ($this->_images as $image) {
|
134 |
//Check if all words are present in the image URL
|
135 |
$allwords = true;
|
models/focuspages/Length.php
CHANGED
@@ -18,10 +18,7 @@ class SQ_Models_Focuspages_Length extends SQ_Models_Abstract_Assistant {
|
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
-
if (isset($this->
|
22 |
-
$content = SQ_Classes_Helpers_Sanitize::clearDescription($this->_post->post_content);
|
23 |
-
$this->_words = str_word_count($content);
|
24 |
-
} elseif (isset($this->_audit->data->sq_seo_meta->words)) {
|
25 |
$this->_words = $this->_audit->data->sq_seo_meta->words;
|
26 |
}
|
27 |
|
@@ -42,7 +39,7 @@ class SQ_Models_Focuspages_Length extends SQ_Models_Abstract_Assistant {
|
|
42 |
),
|
43 |
'avgtime' => array(
|
44 |
'title' => __("Reader's Experience", _SQ_PLUGIN_NAME_),
|
45 |
-
'value' => ($this->_pagetime ? number_format(($this->_pagetime / 60), 0) : 0) . ' ' . __('minutes average', _SQ_PLUGIN_NAME_),
|
46 |
'description' => sprintf(__("Get an average time on page of minimum 2 minutes for this focus page. You can do this by editing the content and making it more appealing to visitors. %s We're looking at the Average Time On Page for this page. %s Why? %s Because, sometimes website owners can be tempted to make the pages longer in order to get many words on a page. They make them longer by increasing wordiness. %s Over 1,500 words / page can give you much better SEO results. However, making it longer does not mean you should make it boring. %s In order to check that the length of the page was increased properly, we also take into account if website visitors love this page.", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
|
47 |
),
|
48 |
);
|
@@ -87,7 +84,7 @@ class SQ_Models_Focuspages_Length extends SQ_Models_Abstract_Assistant {
|
|
87 |
|
88 |
if ($this->_error && !$this->_audit->sq_analytics_google_connected) {
|
89 |
$title = __("Connect to Google Analytics first.", _SQ_PLUGIN_NAME_);
|
90 |
-
}else {
|
91 |
foreach ($this->_tasks[$this->_category] as $task) {
|
92 |
if ($task['completed'] === false) {
|
93 |
return __("Click to open the Assistant in the right sidebar and follow the instructions.", _SQ_PLUGIN_NAME_);
|
@@ -102,7 +99,7 @@ class SQ_Models_Focuspages_Length extends SQ_Models_Abstract_Assistant {
|
|
102 |
* @return bool|WP_Error
|
103 |
*/
|
104 |
public function checkWordcont($task) {
|
105 |
-
if ($this->_words) {
|
106 |
$task['completed'] = ($this->_words >= self::WORDCOUNT_MINVAL);
|
107 |
return $task;
|
108 |
}
|
@@ -116,12 +113,12 @@ class SQ_Models_Focuspages_Length extends SQ_Models_Abstract_Assistant {
|
|
116 |
* @return bool|WP_Error
|
117 |
*/
|
118 |
public function checkAvgtime($task) {
|
119 |
-
if ($this->_pagetime) {
|
120 |
$task['completed'] = ($this->_pagetime >= self::PAGETIME_MINVAL);
|
121 |
return $task;
|
122 |
}
|
123 |
|
124 |
-
if(!$this->_audit->sq_analytics_google_connected){
|
125 |
$task['error_message'] = __("Connect Google Analytics first.", _SQ_PLUGIN_NAME_);
|
126 |
}
|
127 |
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
if (isset($this->_audit->data->sq_seo_meta->words)) {
|
|
|
|
|
|
|
22 |
$this->_words = $this->_audit->data->sq_seo_meta->words;
|
23 |
}
|
24 |
|
39 |
),
|
40 |
'avgtime' => array(
|
41 |
'title' => __("Reader's Experience", _SQ_PLUGIN_NAME_),
|
42 |
+
'value' => ($this->_pagetime !== false ? number_format(($this->_pagetime / 60), 0) : 0) . ' ' . __('minutes average', _SQ_PLUGIN_NAME_),
|
43 |
'description' => sprintf(__("Get an average time on page of minimum 2 minutes for this focus page. You can do this by editing the content and making it more appealing to visitors. %s We're looking at the Average Time On Page for this page. %s Why? %s Because, sometimes website owners can be tempted to make the pages longer in order to get many words on a page. They make them longer by increasing wordiness. %s Over 1,500 words / page can give you much better SEO results. However, making it longer does not mean you should make it boring. %s In order to check that the length of the page was increased properly, we also take into account if website visitors love this page.", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />', '<br /><br />'),
|
44 |
),
|
45 |
);
|
84 |
|
85 |
if ($this->_error && !$this->_audit->sq_analytics_google_connected) {
|
86 |
$title = __("Connect to Google Analytics first.", _SQ_PLUGIN_NAME_);
|
87 |
+
} else {
|
88 |
foreach ($this->_tasks[$this->_category] as $task) {
|
89 |
if ($task['completed'] === false) {
|
90 |
return __("Click to open the Assistant in the right sidebar and follow the instructions.", _SQ_PLUGIN_NAME_);
|
99 |
* @return bool|WP_Error
|
100 |
*/
|
101 |
public function checkWordcont($task) {
|
102 |
+
if ($this->_words !== false) {
|
103 |
$task['completed'] = ($this->_words >= self::WORDCOUNT_MINVAL);
|
104 |
return $task;
|
105 |
}
|
113 |
* @return bool|WP_Error
|
114 |
*/
|
115 |
public function checkAvgtime($task) {
|
116 |
+
if ($this->_pagetime !== false) {
|
117 |
$task['completed'] = ($this->_pagetime >= self::PAGETIME_MINVAL);
|
118 |
return $task;
|
119 |
}
|
120 |
|
121 |
+
if (!$this->_audit->sq_analytics_google_connected) {
|
122 |
$task['error_message'] = __("Connect Google Analytics first.", _SQ_PLUGIN_NAME_);
|
123 |
}
|
124 |
|
models/focuspages/Onpage.php
CHANGED
@@ -18,7 +18,9 @@ class SQ_Models_Focuspages_Onpage extends SQ_Models_Abstract_Assistant {
|
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
-
if (
|
|
|
|
|
22 |
$this->_robots = $this->_audit->data->sq_seo_file_robots->value;
|
23 |
}
|
24 |
|
@@ -49,7 +51,7 @@ class SQ_Models_Focuspages_Onpage extends SQ_Models_Abstract_Assistant {
|
|
49 |
$this->_tasks[$this->_category] = array(
|
50 |
'sitemap' => array(
|
51 |
'title' => __("Enhance your sitemap", _SQ_PLUGIN_NAME_),
|
52 |
-
'description' => sprintf(__("Add images / videos to your sitemap. It's important to have images / videos enabled. %s Squirrly SEO makes it super easy for you to enhance your XML sitemap. %s Just use the settings from %sSquirrly > SEO Settings > Sitemap XML%s. Find the XML sitemap section and use the settings from that panel. ", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />',
|
53 |
),
|
54 |
'posttype' => array(
|
55 |
'title' => __("Post Type settings activated", _SQ_PLUGIN_NAME_),
|
@@ -142,7 +144,7 @@ class SQ_Models_Focuspages_Onpage extends SQ_Models_Abstract_Assistant {
|
|
142 |
*
|
143 |
*/
|
144 |
public function checkRobots($task) {
|
145 |
-
if ($this->_robots) {
|
146 |
$task['completed'] = ($this->_robots <> '');
|
147 |
return $task;
|
148 |
}
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
if (SQ_Classes_Helpers_Tools::getOption('sq_auto_robots')) {
|
22 |
+
$this->_robots = home_url('robots.txt');
|
23 |
+
}elseif (isset($this->_audit->data->sq_seo_file_robots->value)) {
|
24 |
$this->_robots = $this->_audit->data->sq_seo_file_robots->value;
|
25 |
}
|
26 |
|
51 |
$this->_tasks[$this->_category] = array(
|
52 |
'sitemap' => array(
|
53 |
'title' => __("Enhance your sitemap", _SQ_PLUGIN_NAME_),
|
54 |
+
'description' => sprintf(__("Add images / videos to your sitemap. It's important to have images / videos enabled. %s Squirrly SEO makes it super easy for you to enhance your XML sitemap. %s Just use the settings from %sSquirrly > SEO Settings > Sitemap XML%s. Find the XML sitemap section and use the settings from that panel. ", _SQ_PLUGIN_NAME_), '<br /><br />', '<br /><br />', '<a href="' . SQ_Classes_Helpers_Tools::getAdminUrl('sq_seosettings', 'sitemap') . '" target="_blank" >', '</a>'),
|
55 |
),
|
56 |
'posttype' => array(
|
57 |
'title' => __("Post Type settings activated", _SQ_PLUGIN_NAME_),
|
144 |
*
|
145 |
*/
|
146 |
public function checkRobots($task) {
|
147 |
+
if ($this->_robots !== false) {
|
148 |
$task['completed'] = ($this->_robots <> '');
|
149 |
return $task;
|
150 |
}
|
models/focuspages/Snippet.php
CHANGED
@@ -47,12 +47,12 @@ class SQ_Models_Focuspages_Snippet extends SQ_Models_Abstract_Assistant {
|
|
47 |
}
|
48 |
|
49 |
if ($this->_title && $this->_keyword) {
|
50 |
-
if (!$this->_keyword_in_title = (
|
51 |
if ($this->_post->sq->keywords <> '') {
|
52 |
$keywords = explode(',', $this->_post->sq->keywords);
|
53 |
|
54 |
foreach ($keywords as $keyword) {
|
55 |
-
if ($this->_keyword_in_title = (
|
56 |
break;
|
57 |
}
|
58 |
}
|
@@ -61,12 +61,12 @@ class SQ_Models_Focuspages_Snippet extends SQ_Models_Abstract_Assistant {
|
|
61 |
}
|
62 |
|
63 |
if ($this->_description && $this->_keyword) {
|
64 |
-
if (!$this->_keyword_in_description = (
|
65 |
if ($this->_post->sq->keywords <> '') {
|
66 |
$keywords = explode(',', $this->_post->sq->keywords);
|
67 |
|
68 |
foreach ($keywords as $keyword) {
|
69 |
-
if ($this->_keyword_in_description = (
|
70 |
break;
|
71 |
}
|
72 |
}
|
47 |
}
|
48 |
|
49 |
if ($this->_title && $this->_keyword) {
|
50 |
+
if (!$this->_keyword_in_title = (SQ_Classes_Helpers_Tools::findStr($this->_post->sq->title, $this->_keyword) !== false)) {
|
51 |
if ($this->_post->sq->keywords <> '') {
|
52 |
$keywords = explode(',', $this->_post->sq->keywords);
|
53 |
|
54 |
foreach ($keywords as $keyword) {
|
55 |
+
if ($this->_keyword_in_title = (SQ_Classes_Helpers_Tools::findStr($this->_post->sq->title, trim($keyword)) !== false)) {
|
56 |
break;
|
57 |
}
|
58 |
}
|
61 |
}
|
62 |
|
63 |
if ($this->_description && $this->_keyword) {
|
64 |
+
if (!$this->_keyword_in_description = (SQ_Classes_Helpers_Tools::findStr($this->_post->sq->description, $this->_keyword) !== false)) {
|
65 |
if ($this->_post->sq->keywords <> '') {
|
66 |
$keywords = explode(',', $this->_post->sq->keywords);
|
67 |
|
68 |
foreach ($keywords as $keyword) {
|
69 |
+
if ($this->_keyword_in_description = (SQ_Classes_Helpers_Tools::findStr($this->_post->sq->description, trim($keyword)) !== false)) {
|
70 |
break;
|
71 |
}
|
72 |
}
|
readme.txt
CHANGED
@@ -12,25 +12,39 @@ Squirrly 2020 is the First-Ever Non-Human SEO Consultant. In a Plugin. Powered b
|
|
12 |
|
13 |
== Description ==
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
First-Ever Non-Human SEO Consultant Is Coming to WordPress. SEO Technology Meets SEO Marketing. Squirrly handles all tech requirements for rich snippets, social snippets, and more, while helping you get the best SEO Marketing.
|
16 |
|
17 |
How does it do that? By acting as your private SEO Consultant. Watch the video:
|
18 |
|
19 |
https://www.youtube.com/watch?v=m2R2d2Q4Sfk
|
20 |
|
21 |
-
**Your next SEO Plugin is NOT an SEO Plugin.**
|
22 |
It's a Non-Human Private SEO Consultant.
|
23 |
Powered by Machine Learning and Cloud Services.
|
24 |
It's the First of its kind.
|
25 |
It's the new Squirrly 2020: Smart Strategy and it lives and works inside your WordPress.
|
26 |
|
27 |
-
Squirrly 2020 will level the playing field for small and medium-sized businesses when it comes to Wordpress SEO marketing.
|
28 |
-
|
29 |
-
We put advanced digital tools to work for you so that you become highly visible online and therefore can sell your products and services.
|
30 |
-
|
31 |
We've made Expert-Level SEO Advice (the kind you'd pay consultants $2,500 USD / month) very accessible for WordPress site owners, small business owners, professional bloggers, freelancers, agencies.
|
32 |
|
33 |
-
|
|
|
|
|
34 |
|
35 |
Having studied over 600,000 WordPress sites with performance metrics, growth metrics, this new Non-Human consultant has 7 years of experience and "knows" what you need in order to become successful. Just like all the people in our <a title="Squirrly SEO Success for WordPress Users" href="https://www.squirrly.co/successful/">Success Stories Who Followed Squirrly's Advice.</a>
|
36 |
|
@@ -127,7 +141,7 @@ It's time to rethink the old way of doing search engine optimization for WordPre
|
|
127 |
|
128 |
Why? Because the old way of doing things is no longer relevant to how search engines work today. Because Google does NOT perceive your pages as being all the same.
|
129 |
|
130 |
-
There is no
|
131 |
|
132 |
It's like applying a random treatment regardless of the symptoms, just because it had worked once (in another case) for another patient. Would YOU put your faith in that?
|
133 |
|
@@ -392,6 +406,31 @@ Type a keyword to the right of the screen and start using Squirrly Seo. Enjoy!
|
|
392 |
Squirrly SEO 10.0.0 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.
|
393 |
|
394 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
395 |
= 10.0.06 - 06/01/2020 =
|
396 |
* Update - Inspect URL when the Audit can't be made
|
397 |
* Update - Add all the Features Categories in the Overview
|
@@ -643,7 +682,7 @@ Squirrly SEO 10.0.0 it's a big update. We've re-designed the UX and added many n
|
|
643 |
* Update - Platform SEO task description
|
644 |
* Update - Import Keywords from CSV
|
645 |
* Update - Add the option in SEO Settings > Tracking to load the tracking codes only for visitors
|
646 |
-
* Fix - Parse error: syntax error, unexpected
|
647 |
* Fix - Responsive assistant view for pads and tiny desktops
|
648 |
* Fix - Keyword in Bulk SEO
|
649 |
* Fix - Don't inport the Journey Date
|
@@ -856,7 +895,7 @@ Squirrly SEO 10.0.0 it's a big update. We've re-designed the UX and added many n
|
|
856 |
* SEO Update - Facebook Pixel amazing updates to control, tracking, and event-based actions
|
857 |
* SEO Update - Rich Pins updates for WooCommerce based Pinterest profiles and Pinterest posts
|
858 |
* SEO Update - more schema and json-ld updates
|
859 |
-
* SEO Update - Custom Sidebars
|
860 |
|
861 |
= 8.3.14 - 03/19/2018 =
|
862 |
* SEO Update - Add a new pattern {{post_description}} to get only the description from Post Content
|
@@ -907,7 +946,7 @@ Squirrly SEO 10.0.0 it's a big update. We've re-designed the UX and added many n
|
|
907 |
* SEO Update - Link Checker works to improve compatibility
|
908 |
* SEO Update - Open Graph for Facebook, Google+ and Twitter Card Tags
|
909 |
* SEO Update - Open Graph for Facebook, Google+ and Twitter Card Tags plugin works
|
910 |
-
* SEO Update - WordPress Share Buttons Plugin
|
911 |
* SEO Update - Social Media Share Buttons & Social Sharing Icons works
|
912 |
* SEO Update - AddToAny Share Buttons compatibility
|
913 |
|
@@ -919,12 +958,12 @@ Squirrly SEO 10.0.0 it's a big update. We've re-designed the UX and added many n
|
|
919 |
* SEO Update - Contact Widgets works
|
920 |
* SEO Update - Social Icons compatible
|
921 |
* SEO Update - OG
|
922 |
-
* SEO Update - Wordfence Security
|
923 |
* SEO Update - Google Analytics Dashboard for WP (GADWP) compatible
|
924 |
* SEO Update - Jetpack by WordPress.com backups and imports
|
925 |
* SEO Update - Elementor Page Builder compatible
|
926 |
* SEO Update - Elementor Page Builder SEO Live Assistant now checks it better
|
927 |
-
* SEO Update - Ninja Forms
|
928 |
|
929 |
= 8.3.08 - 02/15/2018 =
|
930 |
* SEO Update - Update the article:tag Meta for Facebook Open Graph (SEO update)
|
@@ -944,7 +983,7 @@ Squirrly SEO 10.0.0 it's a big update. We've re-designed the UX and added many n
|
|
944 |
* SEO Update - WooCommerce PayPal Express Checkout Payment Gateway compatible
|
945 |
* SEO Update - All In One SEO Pack backup data and imports
|
946 |
* SEO Update - Nextend Social Login and Register (Facebook, Google, Twitter) compatible
|
947 |
-
* SEO Update - Revive Old Posts
|
948 |
* SEO Update - WP to Twitter
|
949 |
|
950 |
= 8.3.06 - 02/09/2018 =
|
@@ -1040,30 +1079,30 @@ Squirrly SEO 10.0.0 it's a big update. We've re-designed the UX and added many n
|
|
1040 |
* SEO Fix - Fixed the Doublin Core name error on line 29
|
1041 |
* Squirrly SEO is now compatible with WP 4.8.3
|
1042 |
|
1043 |
-
= 8.2.20
|
1044 |
* SEO Fix - Fixed the Excerpt Only patterh
|
1045 |
* SEO Fix - Fixed Squirrly Snippet in case is empty or has special chars
|
1046 |
|
1047 |
-
= 8.2.19
|
1048 |
* SEO Update - Update Squirrly Live Assistant to use less resources and work faster
|
1049 |
* SEO Update - Added the Post Publish option in Squirrly Split Window
|
1050 |
* SEO Fix - Fixed Greeck keywords optimization fixed
|
1051 |
* SEO Fix - Fixed the Keyword Research not to display the error message and to be able to redo the search
|
1052 |
* SEO Fix - Fixed the Squirrly Snippet's Title snd Description when using special chars
|
1053 |
|
1054 |
-
= 8.2.18
|
1055 |
* SEO Update - Update compatibility with Polylang plugin
|
1056 |
* SEO Fix - Increased connection time with out API in case of slow internet access
|
1057 |
* SEO Fix - Fixed the yellow highlight in frontend
|
1058 |
* SEO Fix - Fixed Squirrly SLA loading in post edit
|
1059 |
* SEO Fix - Fixed small bugs with article optimization in my.squirrly.co
|
1060 |
|
1061 |
-
= 8.2.17
|
1062 |
* SEO Fix - Fixed the SLA loading issue for older WP versions
|
1063 |
* SEO Fix - Fixed the Keyword one letter when loading a new post/page
|
1064 |
* SEO Fix - Corrected the Facebook App ID
|
1065 |
|
1066 |
-
= 8.2.15
|
1067 |
* SEO Update - Increased the loading speed for favicon.icon and robots.txt
|
1068 |
* SEO Update - Update the SEO Audit with the latest METAs
|
1069 |
* SEO Update - Register the Subservers for WP Multisite
|
@@ -1071,32 +1110,32 @@ Squirrly SEO 10.0.0 it's a big update. We've re-designed the UX and added many n
|
|
1071 |
* SEO Fix - Fixed the Squirrly Snippet in frontend in case the js and css are not loading
|
1072 |
* SEO Fix - Show error message in case SLA is not loading
|
1073 |
|
1074 |
-
= 8.2.14
|
1075 |
* SEO Fix - Fixed compatibility with Beaver Builder
|
1076 |
* SEO Fix - Increased security on SEO restore in Import SEO section
|
1077 |
|
1078 |
-
= 8.2.13
|
1079 |
* SEO Fix - Fixed the snippet preview in case some features are disabled
|
1080 |
* SEO Fix - Fixed the Title and Description Lenght in Frontend
|
1081 |
* SEO Fix - Added the option to import the old SEO settings from Squirrly SEO
|
1082 |
|
1083 |
-
= 8.2.11
|
1084 |
* SEO Fix - Fixed remove meta from Elementor
|
1085 |
* SEO Fix - Fixed small bugs for Squirrly Split Window
|
1086 |
|
1087 |
-
= 8.2.10
|
1088 |
* SEO Update - Launching Squirrly 2018 Steve
|
1089 |
* See all the new features here: https://howto.squirrly.co/kb/slides/
|
1090 |
|
1091 |
-
= 8.0.5
|
1092 |
* SEO Fix - Fixed HTTPS jquery load in sitemap.xml
|
1093 |
* SEO Squirrly is compatible with WP 4.8.1
|
1094 |
|
1095 |
-
= 8.0.4
|
1096 |
* SEO Fix - Fixed minor bugs
|
1097 |
* SEO Fix - Fixed loading https classes in SSL backend
|
1098 |
|
1099 |
-
= 8.0.2
|
1100 |
* SEO Update - Update the JSON-LD with the last update from google
|
1101 |
* Squirrly SEO is compatible with WP 4.8
|
1102 |
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
+
A.I.-based Private SEO Consultant. In a Plugin. Powered by Machine Learning and Cloud Services.
|
16 |
+
|
17 |
+
Offers the same level of advice as a Human consultant would, yet with greater precision and customization.
|
18 |
+
|
19 |
+
Over 300 functionalities for SEO now available when you need them. (if you're using the Non-SEO expert mode: then our A.I. will tell you when you need to use each of them and in which order; so it's not important for you to learn everything if you don't want to).
|
20 |
+
|
21 |
+
I've been interviewed by Startup Valley and <a title="Squirrly Business Products and Digital Assistants" href="https://www.startupvalley.news/uk/squirrly/">talked at length about how we built this A.I. consultant</a> on top of Squirrly's existing SEO features (the likes of which you can only get from SEMrush, Moz, Ahrefs)
|
22 |
+
|
23 |
+
Checks your traffic, how well people engage with content on your site, sees your positions for all pages inside the Google search engine, tells you how to bring more traffic and how to make more of your pages visible, gives you solid advice for getting more clicks and more.
|
24 |
+
|
25 |
+
Insanely Great Support with Facebook Community, Huge Knowledge base, Multiple Support Channels, Free Academy Access (Education Cloud 2020), Podcast, Youtube videos and more. <a title="Find All Support Options Here" href="https://fourhourseo.com/">See all of them here. (click and scroll down)</a>
|
26 |
+
|
27 |
+
We've built this so that YOU become successful. Learn more about our vision here.
|
28 |
+
|
29 |
+
https://www.youtube.com/watch?v=__PPtpPIcCI
|
30 |
+
|
31 |
First-Ever Non-Human SEO Consultant Is Coming to WordPress. SEO Technology Meets SEO Marketing. Squirrly handles all tech requirements for rich snippets, social snippets, and more, while helping you get the best SEO Marketing.
|
32 |
|
33 |
How does it do that? By acting as your private SEO Consultant. Watch the video:
|
34 |
|
35 |
https://www.youtube.com/watch?v=m2R2d2Q4Sfk
|
36 |
|
37 |
+
**Your next SEO Plugin is NOT just an SEO Plugin.**
|
38 |
It's a Non-Human Private SEO Consultant.
|
39 |
Powered by Machine Learning and Cloud Services.
|
40 |
It's the First of its kind.
|
41 |
It's the new Squirrly 2020: Smart Strategy and it lives and works inside your WordPress.
|
42 |
|
|
|
|
|
|
|
|
|
43 |
We've made Expert-Level SEO Advice (the kind you'd pay consultants $2,500 USD / month) very accessible for WordPress site owners, small business owners, professional bloggers, freelancers, agencies.
|
44 |
|
45 |
+
How can you start getting the advice?
|
46 |
+
|
47 |
+
https://www.youtube.com/watch?v=drRVRBFYUKA
|
48 |
|
49 |
Having studied over 600,000 WordPress sites with performance metrics, growth metrics, this new Non-Human consultant has 7 years of experience and "knows" what you need in order to become successful. Just like all the people in our <a title="Squirrly SEO Success for WordPress Users" href="https://www.squirrly.co/successful/">Success Stories Who Followed Squirrly's Advice.</a>
|
50 |
|
141 |
|
142 |
Why? Because the old way of doing things is no longer relevant to how search engines work today. Because Google does NOT perceive your pages as being all the same.
|
143 |
|
144 |
+
There is no "one size fits all" in SEO, so using an SEO plugin that treats all pages the same way is dangerous for your business.
|
145 |
|
146 |
It's like applying a random treatment regardless of the symptoms, just because it had worked once (in another case) for another patient. Would YOU put your faith in that?
|
147 |
|
406 |
Squirrly SEO 10.0.0 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.
|
407 |
|
408 |
== Changelog ==
|
409 |
+
= 10.0.10 - 06/18/2020 =
|
410 |
+
* Fixed - Focus Page Words Count
|
411 |
+
* Fixed - Focus Page SEO Image
|
412 |
+
* Fixed - Goals tasks for SEO Image, SEO in METAs, Robots and Sitemap
|
413 |
+
* Fixed - Google charts error Uncaught TypeError: Cannot read property 'arrayToDataTable' of undefined
|
414 |
+
* Fixed - Load Squirrly.js in body for Live Assistant
|
415 |
+
|
416 |
+
= 10.0.09 - 06/15/2020 =
|
417 |
+
* Update - SEO compatible with WP 5.4.2
|
418 |
+
* Update - Compatible with Custom Post Slug plugin
|
419 |
+
* Update - Compatible with Hummingbird plugin and Cachify plugin
|
420 |
+
* Update - Added Inspect URL option on each Focus Page and Audit Page
|
421 |
+
* Update - Added help in Focus Page > Add new page
|
422 |
+
* Fixed - Small CSS issues
|
423 |
+
|
424 |
+
= 10.0.08 - 06/08/2020 =
|
425 |
+
* Update - Right To Left (RTL) Support in Squirrly SEO
|
426 |
+
* Update - Reduce the plugin archive size by removing dev files
|
427 |
+
* Fixed - Show the Goals on first load without ajax
|
428 |
+
* Fixed - Remove sq_nonce duplicate ids in HTML
|
429 |
+
* Fixed - Iconv error if the PHP iconv extension is not installed
|
430 |
+
* Fixed - Remove the bootstra map link from js
|
431 |
+
* Fixed - The CSS bor both RTL and LTR support
|
432 |
+
* Fixed CSS for Dashboard when the offer is visible
|
433 |
+
|
434 |
= 10.0.06 - 06/01/2020 =
|
435 |
* Update - Inspect URL when the Audit can't be made
|
436 |
* Update - Add all the Features Categories in the Overview
|
682 |
* Update - Platform SEO task description
|
683 |
* Update - Import Keywords from CSV
|
684 |
* Update - Add the option in SEO Settings > Tracking to load the tracking codes only for visitors
|
685 |
+
* Fix - Parse error: syntax error, unexpected Sitemaps.php on line 476
|
686 |
* Fix - Responsive assistant view for pads and tiny desktops
|
687 |
* Fix - Keyword in Bulk SEO
|
688 |
* Fix - Don't inport the Journey Date
|
895 |
* SEO Update - Facebook Pixel amazing updates to control, tracking, and event-based actions
|
896 |
* SEO Update - Rich Pins updates for WooCommerce based Pinterest profiles and Pinterest posts
|
897 |
* SEO Update - more schema and json-ld updates
|
898 |
+
* SEO Update - Custom Sidebars - Dynamic Widget Area Manager compatibility
|
899 |
|
900 |
= 8.3.14 - 03/19/2018 =
|
901 |
* SEO Update - Add a new pattern {{post_description}} to get only the description from Post Content
|
946 |
* SEO Update - Link Checker works to improve compatibility
|
947 |
* SEO Update - Open Graph for Facebook, Google+ and Twitter Card Tags
|
948 |
* SEO Update - Open Graph for Facebook, Google+ and Twitter Card Tags plugin works
|
949 |
+
* SEO Update - WordPress Share Buttons Plugin - AddThis compatiblity
|
950 |
* SEO Update - Social Media Share Buttons & Social Sharing Icons works
|
951 |
* SEO Update - AddToAny Share Buttons compatibility
|
952 |
|
958 |
* SEO Update - Contact Widgets works
|
959 |
* SEO Update - Social Icons compatible
|
960 |
* SEO Update - OG
|
961 |
+
* SEO Update - Wordfence Security - Firewall & Malware Scan compatible
|
962 |
* SEO Update - Google Analytics Dashboard for WP (GADWP) compatible
|
963 |
* SEO Update - Jetpack by WordPress.com backups and imports
|
964 |
* SEO Update - Elementor Page Builder compatible
|
965 |
* SEO Update - Elementor Page Builder SEO Live Assistant now checks it better
|
966 |
+
* SEO Update - Ninja Forms - The Easy and Powerful Forms Builder compatibility
|
967 |
|
968 |
= 8.3.08 - 02/15/2018 =
|
969 |
* SEO Update - Update the article:tag Meta for Facebook Open Graph (SEO update)
|
983 |
* SEO Update - WooCommerce PayPal Express Checkout Payment Gateway compatible
|
984 |
* SEO Update - All In One SEO Pack backup data and imports
|
985 |
* SEO Update - Nextend Social Login and Register (Facebook, Google, Twitter) compatible
|
986 |
+
* SEO Update - Revive Old Posts - Auto Post to Social Media compatible
|
987 |
* SEO Update - WP to Twitter
|
988 |
|
989 |
= 8.3.06 - 02/09/2018 =
|
1079 |
* SEO Fix - Fixed the Doublin Core name error on line 29
|
1080 |
* Squirrly SEO is now compatible with WP 4.8.3
|
1081 |
|
1082 |
+
= 8.2.20 - 11/02/2017 =
|
1083 |
* SEO Fix - Fixed the Excerpt Only patterh
|
1084 |
* SEO Fix - Fixed Squirrly Snippet in case is empty or has special chars
|
1085 |
|
1086 |
+
= 8.2.19 - 10/30/2017 =
|
1087 |
* SEO Update - Update Squirrly Live Assistant to use less resources and work faster
|
1088 |
* SEO Update - Added the Post Publish option in Squirrly Split Window
|
1089 |
* SEO Fix - Fixed Greeck keywords optimization fixed
|
1090 |
* SEO Fix - Fixed the Keyword Research not to display the error message and to be able to redo the search
|
1091 |
* SEO Fix - Fixed the Squirrly Snippet's Title snd Description when using special chars
|
1092 |
|
1093 |
+
= 8.2.18 - 10/27/2017 =
|
1094 |
* SEO Update - Update compatibility with Polylang plugin
|
1095 |
* SEO Fix - Increased connection time with out API in case of slow internet access
|
1096 |
* SEO Fix - Fixed the yellow highlight in frontend
|
1097 |
* SEO Fix - Fixed Squirrly SLA loading in post edit
|
1098 |
* SEO Fix - Fixed small bugs with article optimization in my.squirrly.co
|
1099 |
|
1100 |
+
= 8.2.17 - 10/24/2017 =
|
1101 |
* SEO Fix - Fixed the SLA loading issue for older WP versions
|
1102 |
* SEO Fix - Fixed the Keyword one letter when loading a new post/page
|
1103 |
* SEO Fix - Corrected the Facebook App ID
|
1104 |
|
1105 |
+
= 8.2.15 - 10/18/2017 =
|
1106 |
* SEO Update - Increased the loading speed for favicon.icon and robots.txt
|
1107 |
* SEO Update - Update the SEO Audit with the latest METAs
|
1108 |
* SEO Update - Register the Subservers for WP Multisite
|
1110 |
* SEO Fix - Fixed the Squirrly Snippet in frontend in case the js and css are not loading
|
1111 |
* SEO Fix - Show error message in case SLA is not loading
|
1112 |
|
1113 |
+
= 8.2.14 - 10/12/2017 =
|
1114 |
* SEO Fix - Fixed compatibility with Beaver Builder
|
1115 |
* SEO Fix - Increased security on SEO restore in Import SEO section
|
1116 |
|
1117 |
+
= 8.2.13 - 10/11/2017 =
|
1118 |
* SEO Fix - Fixed the snippet preview in case some features are disabled
|
1119 |
* SEO Fix - Fixed the Title and Description Lenght in Frontend
|
1120 |
* SEO Fix - Added the option to import the old SEO settings from Squirrly SEO
|
1121 |
|
1122 |
+
= 8.2.11 - 10/10/2017 =
|
1123 |
* SEO Fix - Fixed remove meta from Elementor
|
1124 |
* SEO Fix - Fixed small bugs for Squirrly Split Window
|
1125 |
|
1126 |
+
= 8.2.10 - 10/10/2017 =
|
1127 |
* SEO Update - Launching Squirrly 2018 Steve
|
1128 |
* See all the new features here: https://howto.squirrly.co/kb/slides/
|
1129 |
|
1130 |
+
= 8.0.5 - 08/14/2017 =
|
1131 |
* SEO Fix - Fixed HTTPS jquery load in sitemap.xml
|
1132 |
* SEO Squirrly is compatible with WP 4.8.1
|
1133 |
|
1134 |
+
= 8.0.4 - 07/24/2017 =
|
1135 |
* SEO Fix - Fixed minor bugs
|
1136 |
* SEO Fix - Fixed loading https classes in SSL backend
|
1137 |
|
1138 |
+
= 8.0.2 - 05/20/2017 =
|
1139 |
* SEO Update - Update the JSON-LD with the last update from google
|
1140 |
* Squirrly SEO is compatible with WP 4.8
|
1141 |
|
squirrly.php
CHANGED
@@ -8,7 +8,7 @@
|
|
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://cloud.squirrly.co/user" target="_blank"><strong>Check your profile</strong></a>
|
9 |
* Author: Squirrly SEO
|
10 |
* Author URI: https://plugin.squirrly.co
|
11 |
-
* Version: 10.0.
|
12 |
* License: GPLv2 or later
|
13 |
* License URI: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
14 |
* Text Domain: squirrly-seo
|
@@ -16,9 +16,9 @@
|
|
16 |
*/
|
17 |
if (!defined('SQ_VERSION')) {
|
18 |
/* SET THE CURRENT VERSION ABOVE AND BELOW */
|
19 |
-
define('SQ_VERSION', '10.0.
|
20 |
//The last stable version
|
21 |
-
define('SQ_STABLE_VERSION', '10.0.
|
22 |
// Call config files
|
23 |
try {
|
24 |
require_once(dirname(__FILE__) . '/config/config.php');
|
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://cloud.squirrly.co/user" target="_blank"><strong>Check your profile</strong></a>
|
9 |
* Author: Squirrly SEO
|
10 |
* Author URI: https://plugin.squirrly.co
|
11 |
+
* Version: 10.0.10
|
12 |
* License: GPLv2 or later
|
13 |
* License URI: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
14 |
* Text Domain: squirrly-seo
|
16 |
*/
|
17 |
if (!defined('SQ_VERSION')) {
|
18 |
/* SET THE CURRENT VERSION ABOVE AND BELOW */
|
19 |
+
define('SQ_VERSION', '10.0.10');
|
20 |
//The last stable version
|
21 |
+
define('SQ_STABLE_VERSION', '10.0.06');
|
22 |
// Call config files
|
23 |
try {
|
24 |
require_once(dirname(__FILE__) . '/config/config.php');
|
view/Assistant/Assistant.php
CHANGED
@@ -26,7 +26,7 @@
|
|
26 |
<div class="col-sm-12 my-3 p-0 text-right">
|
27 |
<?php if (current_user_can('sq_manage_snippet')) { ?>
|
28 |
<form method="POST">
|
29 |
-
<?php
|
30 |
<input type="hidden" name="action" value="sq_create_demo"/>
|
31 |
<button type="submit" class="btn rounded-0 btn-green btn-lg px-5 mx-4" style="min-width: 300px"><?php _e('Practice/Test Round', _SQ_PLUGIN_NAME_); ?></button>
|
32 |
</form>
|
26 |
<div class="col-sm-12 my-3 p-0 text-right">
|
27 |
<?php if (current_user_can('sq_manage_snippet')) { ?>
|
28 |
<form method="POST">
|
29 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_create_demo', 'sq_nonce'); ?>
|
30 |
<input type="hidden" name="action" value="sq_create_demo"/>
|
31 |
<button type="submit" class="btn rounded-0 btn-green btn-lg px-5 mx-4" style="min-width: 300px"><?php _e('Practice/Test Round', _SQ_PLUGIN_NAME_); ?></button>
|
32 |
</form>
|
view/Assistant/Settings.php
CHANGED
@@ -13,7 +13,7 @@
|
|
13 |
<div class="flex-grow-1 mr-3 sq_flex">
|
14 |
<?php do_action('sq_form_notices'); ?>
|
15 |
<form method="POST">
|
16 |
-
<?php
|
17 |
<input type="hidden" name="action" value="sq_settings_assistant"/>
|
18 |
|
19 |
<div class="card col-sm-12 p-0">
|
13 |
<div class="flex-grow-1 mr-3 sq_flex">
|
14 |
<?php do_action('sq_form_notices'); ?>
|
15 |
<form method="POST">
|
16 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_settings_assistant', 'sq_nonce'); ?>
|
17 |
<input type="hidden" name="action" value="sq_settings_assistant"/>
|
18 |
|
19 |
<div class="card col-sm-12 p-0">
|
view/Audits/Addpage.php
CHANGED
@@ -161,7 +161,7 @@
|
|
161 |
<td style="width: 140px; text-align: center; vertical-align: middle">
|
162 |
<?php if (!$active) { ?>
|
163 |
<form method="post" class="p-0 m-0">
|
164 |
-
<?php
|
165 |
<input type="hidden" name="action" value="sq_audits_addnew"/>
|
166 |
|
167 |
<input type="hidden" name="url" value="<?php echo $post->url; ?>">
|
161 |
<td style="width: 140px; text-align: center; vertical-align: middle">
|
162 |
<?php if (!$active) { ?>
|
163 |
<form method="post" class="p-0 m-0">
|
164 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_audits_addnew', 'sq_nonce'); ?>
|
165 |
<input type="hidden" name="action" value="sq_audits_addnew"/>
|
166 |
|
167 |
<input type="hidden" name="url" value="<?php echo $post->url; ?>">
|
view/Audits/Audit.php
CHANGED
@@ -124,7 +124,7 @@
|
|
124 |
<td rowspan="2" class="sq_first_header_column text-center">
|
125 |
<span class="<?php echo ((int)$task->complete == 1) ? 'sq_audit_tasks_pass' : 'sq_audit_tasks_fail' ?>"></span>
|
126 |
</td>
|
127 |
-
<td style="vertical-align: middle" class="sq_second_header_column">
|
128 |
<span class="sq_audit_tasks_title"><?php echo $task->title ?></span>
|
129 |
<span class="sq_audit_tasks_value sq_audit_tasks_value<?php echo ((int)$task->complete == 1) ? '_pass' : '_fail' ?>">
|
130 |
<?php echo ($task->complete) ? $task->success : $task->fail ?>
|
124 |
<td rowspan="2" class="sq_first_header_column text-center">
|
125 |
<span class="<?php echo ((int)$task->complete == 1) ? 'sq_audit_tasks_pass' : 'sq_audit_tasks_fail' ?>"></span>
|
126 |
</td>
|
127 |
+
<td style="vertical-align: middle" class="sq_second_header_column text-left">
|
128 |
<span class="sq_audit_tasks_title"><?php echo $task->title ?></span>
|
129 |
<span class="sq_audit_tasks_value sq_audit_tasks_value<?php echo ((int)$task->complete == 1) ? '_pass' : '_fail' ?>">
|
130 |
<?php echo ($task->complete) ? $task->success : $task->fail ?>
|
view/Audits/AuditPageRow.php
CHANGED
@@ -62,8 +62,8 @@ if (strtotime($view->auditpage->audit_datetime)) {
|
|
62 |
<div class="sq_sm_dropdown">
|
63 |
<ul class="p-2 m-0 text-left">
|
64 |
<li class="m-0 p-1 py-2">
|
65 |
-
<form method="post" class="p-0 m-0">
|
66 |
-
<?php
|
67 |
<input type="hidden" name="action" value="sq_audits_delete"/>
|
68 |
<input type="hidden" name="id" value="<?php echo $view->auditpage->user_post_id ?>"/>
|
69 |
<i class="sq_icons_small fa fa-trash-o" style="padding: 2px"></i>
|
@@ -72,6 +72,10 @@ if (strtotime($view->auditpage->audit_datetime)) {
|
|
72 |
</button>
|
73 |
</form>
|
74 |
</li>
|
|
|
|
|
|
|
|
|
75 |
</ul>
|
76 |
</div>
|
77 |
</div>
|
62 |
<div class="sq_sm_dropdown">
|
63 |
<ul class="p-2 m-0 text-left">
|
64 |
<li class="m-0 p-1 py-2">
|
65 |
+
<form method="post" class="p-0 m-0" onSubmit="return confirm('<?php echo __('Do you want to delete the Audit Page?',_SQ_ASSETS_URL_) ?>') ">
|
66 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_audits_delete', 'sq_nonce'); ?>
|
67 |
<input type="hidden" name="action" value="sq_audits_delete"/>
|
68 |
<input type="hidden" name="id" value="<?php echo $view->auditpage->user_post_id ?>"/>
|
69 |
<i class="sq_icons_small fa fa-trash-o" style="padding: 2px"></i>
|
72 |
</button>
|
73 |
</form>
|
74 |
</li>
|
75 |
+
<li class="m-0 p-1 py-2">
|
76 |
+
<i class="sq_icons_small fa fa-info-circle" style="padding: 2px"></i>
|
77 |
+
<button class="btn btn-sm bg-transparent p-0 m-0" onclick="jQuery('#sq_previewurl_modal').attr('data-post_id', '<?php echo $view->auditpage->user_post_id ?>'); jQuery('#sq_previewurl_modal').sq_inspectURL()" data-dismiss="modal"><?php _e('Inspect URL', _SQ_PLUGIN_NAME_); ?></button>
|
78 |
+
</li>
|
79 |
</ul>
|
80 |
</div>
|
81 |
</div>
|
view/Audits/AuditStats.php
CHANGED
@@ -71,7 +71,7 @@
|
|
71 |
<span class="text-danger"><?php echo $audit_timestamp ?></span>
|
72 |
</div>
|
73 |
<form method="post" class="sq_auditpages_request p-0 m-0">
|
74 |
-
<?php
|
75 |
<input type="hidden" name="action" value="sq_audits_update"/>
|
76 |
<button type="submit" class="btn btn-sm bg-warning text-white inline p-0 px-2 m-0" <?php if ($call_timestamp > time() - 3600) {
|
77 |
echo 'disabled="disabled"' . ' title="' . __('You can refresh the audit once every hour', _SQ_PLUGIN_NAME_) . '"';
|
@@ -95,7 +95,7 @@
|
|
95 |
<?php echo __('Audit not ready yet', _SQ_PLUGIN_NAME_) ?>
|
96 |
</div>
|
97 |
<form method="post" class="sq_auditpages_request p-0 m-0">
|
98 |
-
<?php
|
99 |
<input type="hidden" name="action" value="sq_audits_update"/>
|
100 |
<button type="submit" class="btn btn-sm bg-warning text-white inline p-0 px-2 m-0" <?php if ($call_timestamp > time() - 3600) {
|
101 |
echo 'disabled="disabled"' . ' title="' . __('You can refresh the audit once every hour', _SQ_PLUGIN_NAME_) . '"';
|
@@ -171,9 +171,13 @@
|
|
171 |
<div class="media-right py-3 media-middle ">
|
172 |
<div class="col-sm-12 px-0">
|
173 |
<div id="sq_chart_score" class="sq_chart no-p" style="width:95%; height: 90px;"></div>
|
174 |
-
<script>
|
175 |
-
|
176 |
-
|
|
|
|
|
|
|
|
|
177 |
</div>
|
178 |
</div>
|
179 |
</div>
|
71 |
<span class="text-danger"><?php echo $audit_timestamp ?></span>
|
72 |
</div>
|
73 |
<form method="post" class="sq_auditpages_request p-0 m-0">
|
74 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_audits_update', 'sq_nonce'); ?>
|
75 |
<input type="hidden" name="action" value="sq_audits_update"/>
|
76 |
<button type="submit" class="btn btn-sm bg-warning text-white inline p-0 px-2 m-0" <?php if ($call_timestamp > time() - 3600) {
|
77 |
echo 'disabled="disabled"' . ' title="' . __('You can refresh the audit once every hour', _SQ_PLUGIN_NAME_) . '"';
|
95 |
<?php echo __('Audit not ready yet', _SQ_PLUGIN_NAME_) ?>
|
96 |
</div>
|
97 |
<form method="post" class="sq_auditpages_request p-0 m-0">
|
98 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_audits_update', 'sq_nonce'); ?>
|
99 |
<input type="hidden" name="action" value="sq_audits_update"/>
|
100 |
<button type="submit" class="btn btn-sm bg-warning text-white inline p-0 px-2 m-0" <?php if ($call_timestamp > time() - 3600) {
|
101 |
echo 'disabled="disabled"' . ' title="' . __('You can refresh the audit once every hour', _SQ_PLUGIN_NAME_) . '"';
|
171 |
<div class="media-right py-3 media-middle ">
|
172 |
<div class="col-sm-12 px-0">
|
173 |
<div id="sq_chart_score" class="sq_chart no-p" style="width:95%; height: 90px;"></div>
|
174 |
+
<script>
|
175 |
+
if (typeof google !== 'undefined') {
|
176 |
+
google.setOnLoadCallback(function () {
|
177 |
+
drawScoreChart("sq_chart_score", <?php echo json_encode($scores) ?> , false);
|
178 |
+
});
|
179 |
+
}
|
180 |
+
</script>
|
181 |
</div>
|
182 |
</div>
|
183 |
</div>
|
view/Audits/Audits.php
CHANGED
@@ -51,7 +51,14 @@
|
|
51 |
|
52 |
<div class="card col-sm-12 border-0 m-0 p-0">
|
53 |
<div class="sq_auditpages_content">
|
54 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
</div>
|
56 |
|
57 |
<div class="card-body">
|
51 |
|
52 |
<div class="card col-sm-12 border-0 m-0 p-0">
|
53 |
<div class="sq_auditpages_content">
|
54 |
+
<?php
|
55 |
+
$content = $view->getView('Audits/AuditPages');
|
56 |
+
if (function_exists('iconv')) {
|
57 |
+
$content = iconv('UTF-8', 'UTF-8//IGNORE', $content);
|
58 |
+
}
|
59 |
+
echo $content;
|
60 |
+
?>
|
61 |
+
</div>
|
62 |
</div>
|
63 |
|
64 |
<div class="card-body">
|
view/Audits/Compare.php
CHANGED
@@ -50,7 +50,7 @@
|
|
50 |
<table>
|
51 |
<tr>
|
52 |
|
53 |
-
<td style="vertical-align: middle" class="sq_second_header_column px-3">
|
54 |
<span class="sq_audit_tasks_title"><?php echo __('Scores') ?></span>
|
55 |
</td>
|
56 |
|
@@ -122,7 +122,7 @@
|
|
122 |
<table>
|
123 |
<tr>
|
124 |
|
125 |
-
<td style="vertical-align: middle" class="sq_second_header_column px-3">
|
126 |
<span class="sq_audit_tasks_title"><?php echo $task->title ?></span>
|
127 |
</td>
|
128 |
|
@@ -149,7 +149,7 @@
|
|
149 |
<h4 style="display: none"><?php echo $audit_task->title ?></h4>
|
150 |
<div class="description" style="display: none">
|
151 |
<div class="sq_audit_tasks_row">
|
152 |
-
<div class="sq_audit_tasks_title"><?php echo $audit_task->title ?>
|
153 |
<span class="sq_audit_tasks_value sq_audit_tasks_value<?php echo ((int)$audit_task->complete == 1) ? '_pass' : '_fail' ?>">
|
154 |
<?php echo ($audit_task->complete) ? $audit_task->success : $audit_task->fail ?>
|
155 |
</span>
|
50 |
<table>
|
51 |
<tr>
|
52 |
|
53 |
+
<td style="vertical-align: middle" class="sq_second_header_column px-3 text-left">
|
54 |
<span class="sq_audit_tasks_title"><?php echo __('Scores') ?></span>
|
55 |
</td>
|
56 |
|
122 |
<table>
|
123 |
<tr>
|
124 |
|
125 |
+
<td style="vertical-align: middle" class="sq_second_header_column px-3 text-left">
|
126 |
<span class="sq_audit_tasks_title"><?php echo $task->title ?></span>
|
127 |
</td>
|
128 |
|
149 |
<h4 style="display: none"><?php echo $audit_task->title ?></h4>
|
150 |
<div class="description" style="display: none">
|
151 |
<div class="sq_audit_tasks_row">
|
152 |
+
<div class="sq_audit_tasks_title text-left"><?php echo $audit_task->title ?>
|
153 |
<span class="sq_audit_tasks_value sq_audit_tasks_value<?php echo ((int)$audit_task->complete == 1) ? '_pass' : '_fail' ?>">
|
154 |
<?php echo ($audit_task->complete) ? $audit_task->success : $audit_task->fail ?>
|
155 |
</span>
|
view/Audits/Settings.php
CHANGED
@@ -18,7 +18,7 @@
|
|
18 |
|
19 |
<form method="POST">
|
20 |
<?php do_action('sq_form_notices'); ?>
|
21 |
-
<?php
|
22 |
<input type="hidden" name="action" value="sq_audits_settings"/>
|
23 |
|
24 |
<div class="card col-sm-12 p-0">
|
18 |
|
19 |
<form method="POST">
|
20 |
<?php do_action('sq_form_notices'); ?>
|
21 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_audits_settings', 'sq_nonce'); ?>
|
22 |
<input type="hidden" name="action" value="sq_audits_settings"/>
|
23 |
|
24 |
<div class="card col-sm-12 p-0">
|
view/Blocks/Connect.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
<?php if (!SQ_Classes_Helpers_Tools::getOption('sq_cloud_connect')) { ?>
|
8 |
|
9 |
<li class="sq_task row border-0" style="cursor: default">
|
10 |
-
<?php
|
11 |
<input type="hidden" name="action" value="sq_cloud_connect"/>
|
12 |
<i class="fa fa-check" title="ssss" data-original-title=""></i>
|
13 |
<div class="message" style="display: none"></div>
|
@@ -21,7 +21,7 @@
|
|
21 |
<?php } else { ?>
|
22 |
|
23 |
<li class="sq_task row completed border-0" style="cursor: default">
|
24 |
-
<?php
|
25 |
<input type="hidden" name="action" value="sq_cloud_disconnect"/>
|
26 |
<i class="fa fa-check" title="" data-original-title=""></i>
|
27 |
<div class="message" style="display: none"></div>
|
7 |
<?php if (!SQ_Classes_Helpers_Tools::getOption('sq_cloud_connect')) { ?>
|
8 |
|
9 |
<li class="sq_task row border-0" style="cursor: default">
|
10 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_cloud_connect', 'sq_nonce'); ?>
|
11 |
<input type="hidden" name="action" value="sq_cloud_connect"/>
|
12 |
<i class="fa fa-check" title="ssss" data-original-title=""></i>
|
13 |
<div class="message" style="display: none"></div>
|
21 |
<?php } else { ?>
|
22 |
|
23 |
<li class="sq_task row completed border-0" style="cursor: default">
|
24 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_cloud_disconnect', 'sq_nonce'); ?>
|
25 |
<input type="hidden" name="action" value="sq_cloud_disconnect"/>
|
26 |
<i class="fa fa-check" title="" data-original-title=""></i>
|
27 |
<div class="message" style="display: none"></div>
|
view/Blocks/Dashboard.php
CHANGED
@@ -3,6 +3,13 @@ $tasks_completed = SQ_Classes_ObjController::getClass('SQ_Controllers_CheckSeo')
|
|
3 |
$tasks_incompleted = SQ_Classes_ObjController::getClass('SQ_Controllers_CheckSeo')->getNotifications();
|
4 |
?>
|
5 |
<style>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
#sq_dashboard_content {
|
7 |
min-height: 150px;
|
8 |
}
|
3 |
$tasks_incompleted = SQ_Classes_ObjController::getClass('SQ_Controllers_CheckSeo')->getNotifications();
|
4 |
?>
|
5 |
<style>
|
6 |
+
.sq_offer{
|
7 |
+
color: #721c24;
|
8 |
+
background-color: #f8d7da;
|
9 |
+
border-color: #f5c6cb;
|
10 |
+
padding: 7px;
|
11 |
+
margin-bottom: 15px;
|
12 |
+
}
|
13 |
#sq_dashboard_content {
|
14 |
min-height: 150px;
|
15 |
}
|
view/Blocks/Features.php
CHANGED
@@ -286,7 +286,7 @@ $features = array(
|
|
286 |
</div>
|
287 |
<div class="my-2 text-black-50" style="min-height: 70px"><?php echo $feature['description'] ?></div>
|
288 |
<div class="row my-2 px-3">
|
289 |
-
<div class="col-sm-6 p-0">
|
290 |
<a href="<?php echo $feature['link'] ?>" target="_blank">
|
291 |
<?php if ($feature['option'] === 'na') { ?>
|
292 |
<strong class="text-info"><?php echo __('Go to feature', _SQ_PLUGIN_NAME_) ?></strong>
|
286 |
</div>
|
287 |
<div class="my-2 text-black-50" style="min-height: 70px"><?php echo $feature['description'] ?></div>
|
288 |
<div class="row my-2 px-3">
|
289 |
+
<div class="col-sm-6 p-0 text-left">
|
290 |
<a href="<?php echo $feature['link'] ?>" target="_blank">
|
291 |
<?php if ($feature['option'] === 'na') { ?>
|
292 |
<strong class="text-info"><?php echo __('Go to feature', _SQ_PLUGIN_NAME_) ?></strong>
|
view/Blocks/Jorney.php
CHANGED
@@ -49,7 +49,7 @@
|
|
49 |
<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>
|
50 |
<div class="small text-center my-2">
|
51 |
<form method="post" class="p-0 m-0">
|
52 |
-
<?php
|
53 |
<input type="hidden" name="action" value="sq_journey_close"/>
|
54 |
<button type="submit" class="btn btn-sm text-info btn-link bg-transparent p-0 m-0">
|
55 |
<?php echo __("I'm all done. Hide this block.", _SQ_PLUGIN_NAME_) ?>
|
49 |
<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>
|
50 |
<div class="small text-center my-2">
|
51 |
<form method="post" class="p-0 m-0">
|
52 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_journey_close', 'sq_nonce'); ?>
|
53 |
<input type="hidden" name="action" value="sq_journey_close"/>
|
54 |
<button type="submit" class="btn btn-sm text-info btn-link bg-transparent p-0 m-0">
|
55 |
<?php echo __("I'm all done. Hide this block.", _SQ_PLUGIN_NAME_) ?>
|
view/Blocks/KnowledgeBase.php
CHANGED
@@ -12,17 +12,17 @@
|
|
12 |
<?php if ($page == 'sq_dashboard') { ?>
|
13 |
<ul class="list-group list-group-flush">
|
14 |
<?php if (SQ_Classes_Helpers_Tools::getOption('sq_api') == '') { ?>
|
15 |
-
<li class="list-group-item">
|
16 |
<a href="https://howto.squirrly.co/kb/install-squirrly-seo-plugin/#connect_to_cloud" target="_blank">Why do I need to connect to Squirrly Cloud?</a>
|
17 |
</li>
|
18 |
-
<li class="list-group-item">
|
19 |
<a href="https://howto.squirrly.co/kb/install-squirrly-seo-plugin/#connect_to_cloud" target="_blank">How to connect to Squirrly Cloud.</a>
|
20 |
</li>
|
21 |
<?php } ?>
|
22 |
-
<li class="list-group-item">
|
23 |
<a href="https://howto.squirrly.co/kb/install-squirrly-seo-plugin/#import_seo" target="_blank">How to Import SEO from other SEO plugins.</a>
|
24 |
</li>
|
25 |
-
<li class="list-group-item">
|
26 |
<a href="https://howto.squirrly.co/kb/install-squirrly-seo-plugin/#top_10_race" target="_blank">How to get on TOP 10 Google?</a>
|
27 |
</li>
|
28 |
</ul>
|
@@ -31,22 +31,22 @@
|
|
31 |
<?php } ?>
|
32 |
<?php if ($page == 'sq_research') { ?>
|
33 |
<ul class="list-group list-group-flush">
|
34 |
-
<li class="list-group-item">
|
35 |
<a href="https://howto.squirrly.co/kb/keyword-research-and-seo-strategy/#find_new_keywords" target="_blank">How to do a Keyword Research.</a>
|
36 |
</li>
|
37 |
-
<li class="list-group-item">
|
38 |
<a href="https://howto.squirrly.co/kb/keyword-research-and-seo-strategy/#find_new_keywords" target="_blank">How to do a Keyword Research.</a>
|
39 |
</li>
|
40 |
-
<li class="list-group-item">
|
41 |
<a href="https://howto.squirrly.co/kb/keyword-research-and-seo-strategy/#briefcase_add_keyword" target="_blank">How to add Keywords into Briefcase.</a>
|
42 |
</li>
|
43 |
-
<li class="list-group-item">
|
44 |
<a href="https://howto.squirrly.co/kb/keyword-research-and-seo-strategy/#briefcase_label" target="_blank">How to add Labels to Keywords.</a>
|
45 |
</li>
|
46 |
-
<li class="list-group-item">
|
47 |
<a href="https://howto.squirrly.co/kb/keyword-research-and-seo-strategy/#briefcase_optimize_sla" target="_blank">How to optimize a post with Briefcase.</a>
|
48 |
</li>
|
49 |
-
<li class="list-group-item">
|
50 |
<a href="https://howto.squirrly.co/kb/keyword-research-and-seo-strategy/#briefcase_backup_keywords" target="_blank">How to backup/restore Briefcase Keywords.</a>
|
51 |
</li>
|
52 |
</ul>
|
@@ -55,16 +55,16 @@
|
|
55 |
<?php } ?>
|
56 |
<?php if ($page == 'sq_assistant') { ?>
|
57 |
<ul class="list-group list-group-flush">
|
58 |
-
<li class="list-group-item">
|
59 |
<a href="https://howto.squirrly.co/kb/squirrly-live-assistant/#all_tasks_green" target="_blank">How to 100% optimize a post, page or product with Squirrly Live Assistant.</a>
|
60 |
</li>
|
61 |
-
<li class="list-group-item">
|
62 |
<a href="https://howto.squirrly.co/kb/squirrly-live-assistant/#add_keyword" target="_blank">How to add Copyright Free Images.</a>
|
63 |
</li>
|
64 |
-
<li class="list-group-item">
|
65 |
<a href="https://howto.squirrly.co/faq/why-is-the-squirrly-live-assistant-not-loading-in-the-post-editor/" target="_blank">Squirrly Live Assistant not showing.</a>
|
66 |
</li>
|
67 |
-
<li class="list-group-item">
|
68 |
<a href="https://howto.squirrly.co/kb/squirrly-live-assistant/#after_optimization" target="_blank">What to do after I optimize a post.</a>
|
69 |
</li>
|
70 |
</ul>
|
@@ -73,13 +73,13 @@
|
|
73 |
<?php } ?>
|
74 |
<?php if ($page == 'sq_seosettings') { ?>
|
75 |
<ul class="list-group list-group-flush">
|
76 |
-
<li class="list-group-item">
|
77 |
<a href="https://howto.squirrly.co/kb/seo-automation/" target="_blank">How to set the SEO in just 2 minutes.</a>
|
78 |
</li>
|
79 |
-
<li class="list-group-item">
|
80 |
<a href="https://howto.squirrly.co/kb/bulk-seo/#bulk_seo_snippet_og" target="_blank">How to optimize Social Media for each post.</a>
|
81 |
</li>
|
82 |
-
<li class="list-group-item">
|
83 |
<a href="https://howto.squirrly.co/kb/bulk-seo/#bulk_seo_snippet_jsonld" target="_blank">How to activate Rich Snippets for Google.</a>
|
84 |
</li>
|
85 |
</ul>
|
@@ -88,16 +88,16 @@
|
|
88 |
<?php } ?>
|
89 |
<?php if ($page == 'sq_focuspages') { ?>
|
90 |
<ul class="list-group list-group-flush">
|
91 |
-
<li class="list-group-item">
|
92 |
<a href="https://howto.squirrly.co/kb/focus-pages-page-audits/#add_new_focus_page" target="_blank">How to add a New Focus Page.</a>
|
93 |
</li>
|
94 |
-
<li class="list-group-item">
|
95 |
<a href="https://howto.squirrly.co/kb/focus-pages-page-audits/#remove_focus_page" target="_blank">How to remove a Focus Page.</a>
|
96 |
</li>
|
97 |
-
<li class="list-group-item">
|
98 |
<a href="https://howto.squirrly.co/kb/focus-pages-page-audits/#chance_to_rank" target="_blank">What is Chance to Rank.</a>
|
99 |
</li>
|
100 |
-
<li class="list-group-item">
|
101 |
<a href="https://howto.squirrly.co/kb/focus-pages-page-audits/#keyword" target="_blank">How to add a keyword in a Focus Page.</a>
|
102 |
</li>
|
103 |
</ul>
|
@@ -106,19 +106,19 @@
|
|
106 |
<?php } ?>
|
107 |
<?php if ($page == 'sq_audits') { ?>
|
108 |
<ul class="list-group list-group-flush">
|
109 |
-
<li class="list-group-item">
|
110 |
<a href="https://howto.squirrly.co/kb/seo-audit/#how_seo_audit_works" target="_blank">How does the Audit work?</a>
|
111 |
</li>
|
112 |
-
<li class="list-group-item">
|
113 |
<a href="https://howto.squirrly.co/kb/seo-audit/" target="_blank">How to add a Page in Audits.</a>
|
114 |
</li>
|
115 |
-
<li class="list-group-item">
|
116 |
<a href="https://howto.squirrly.co/kb/seo-audit/" target="_blank">How to remove a page from Audits.</a>
|
117 |
</li>
|
118 |
-
<li class="list-group-item">
|
119 |
<a href="https://howto.squirrly.co/kb/seo-audit/#google_search_console" target="_blank">Connect to Google Search Console.</a>
|
120 |
</li>
|
121 |
-
<li class="list-group-item">
|
122 |
<a href="https://howto.squirrly.co/kb/seo-audit/#google_analytics" target="_blank">Connect to Google Analytics.</a>
|
123 |
</li>
|
124 |
</ul>
|
@@ -127,16 +127,16 @@
|
|
127 |
<?php } ?>
|
128 |
<?php if ($page == 'sq_rankings') { ?>
|
129 |
<ul class="list-group list-group-flush">
|
130 |
-
<li class="list-group-item">
|
131 |
<a href="https://howto.squirrly.co/kb/ranking-serp-checker/#add_keyword_ranking" target="_blank">How to add a Keyword in Rankings.</a>
|
132 |
</li>
|
133 |
-
<li class="list-group-item">
|
134 |
<a href="https://howto.squirrly.co/kb/ranking-serp-checker/#remove_keyword_ranking" target="_blank">How to remove a keyword from Rankings.</a>
|
135 |
</li>
|
136 |
-
<li class="list-group-item">
|
137 |
<a href="https://howto.squirrly.co/kb/ranking-serp-checker/#check_keyword_information" target="_blank">Check the Keyword Impressions, Clicks and Optimization.</a>
|
138 |
</li>
|
139 |
-
<li class="list-group-item">
|
140 |
<a href="https://fourhourseo.com/why-does-neil-patel-use-squirrly-seo-for-every-blog-post-that-he-publishes/" target="_blank">Why Does Neil Patel Use Squirrly SEO For Every Blog Post that He Publishes?</a>
|
141 |
</li>
|
142 |
</ul>
|
12 |
<?php if ($page == 'sq_dashboard') { ?>
|
13 |
<ul class="list-group list-group-flush">
|
14 |
<?php if (SQ_Classes_Helpers_Tools::getOption('sq_api') == '') { ?>
|
15 |
+
<li class="list-group-item text-left">
|
16 |
<a href="https://howto.squirrly.co/kb/install-squirrly-seo-plugin/#connect_to_cloud" target="_blank">Why do I need to connect to Squirrly Cloud?</a>
|
17 |
</li>
|
18 |
+
<li class="list-group-item" text-left>
|
19 |
<a href="https://howto.squirrly.co/kb/install-squirrly-seo-plugin/#connect_to_cloud" target="_blank">How to connect to Squirrly Cloud.</a>
|
20 |
</li>
|
21 |
<?php } ?>
|
22 |
+
<li class="list-group-item text-left">
|
23 |
<a href="https://howto.squirrly.co/kb/install-squirrly-seo-plugin/#import_seo" target="_blank">How to Import SEO from other SEO plugins.</a>
|
24 |
</li>
|
25 |
+
<li class="list-group-item text-left">
|
26 |
<a href="https://howto.squirrly.co/kb/install-squirrly-seo-plugin/#top_10_race" target="_blank">How to get on TOP 10 Google?</a>
|
27 |
</li>
|
28 |
</ul>
|
31 |
<?php } ?>
|
32 |
<?php if ($page == 'sq_research') { ?>
|
33 |
<ul class="list-group list-group-flush">
|
34 |
+
<li class="list-group-item text-left">
|
35 |
<a href="https://howto.squirrly.co/kb/keyword-research-and-seo-strategy/#find_new_keywords" target="_blank">How to do a Keyword Research.</a>
|
36 |
</li>
|
37 |
+
<li class="list-group-item text-left">
|
38 |
<a href="https://howto.squirrly.co/kb/keyword-research-and-seo-strategy/#find_new_keywords" target="_blank">How to do a Keyword Research.</a>
|
39 |
</li>
|
40 |
+
<li class="list-group-item text-left">
|
41 |
<a href="https://howto.squirrly.co/kb/keyword-research-and-seo-strategy/#briefcase_add_keyword" target="_blank">How to add Keywords into Briefcase.</a>
|
42 |
</li>
|
43 |
+
<li class="list-group-item text-left">
|
44 |
<a href="https://howto.squirrly.co/kb/keyword-research-and-seo-strategy/#briefcase_label" target="_blank">How to add Labels to Keywords.</a>
|
45 |
</li>
|
46 |
+
<li class="list-group-item text-left">
|
47 |
<a href="https://howto.squirrly.co/kb/keyword-research-and-seo-strategy/#briefcase_optimize_sla" target="_blank">How to optimize a post with Briefcase.</a>
|
48 |
</li>
|
49 |
+
<li class="list-group-item text-left">
|
50 |
<a href="https://howto.squirrly.co/kb/keyword-research-and-seo-strategy/#briefcase_backup_keywords" target="_blank">How to backup/restore Briefcase Keywords.</a>
|
51 |
</li>
|
52 |
</ul>
|
55 |
<?php } ?>
|
56 |
<?php if ($page == 'sq_assistant') { ?>
|
57 |
<ul class="list-group list-group-flush">
|
58 |
+
<li class="list-group-item text-left">
|
59 |
<a href="https://howto.squirrly.co/kb/squirrly-live-assistant/#all_tasks_green" target="_blank">How to 100% optimize a post, page or product with Squirrly Live Assistant.</a>
|
60 |
</li>
|
61 |
+
<li class="list-group-item text-left">
|
62 |
<a href="https://howto.squirrly.co/kb/squirrly-live-assistant/#add_keyword" target="_blank">How to add Copyright Free Images.</a>
|
63 |
</li>
|
64 |
+
<li class="list-group-item text-left">
|
65 |
<a href="https://howto.squirrly.co/faq/why-is-the-squirrly-live-assistant-not-loading-in-the-post-editor/" target="_blank">Squirrly Live Assistant not showing.</a>
|
66 |
</li>
|
67 |
+
<li class="list-group-item text-left">
|
68 |
<a href="https://howto.squirrly.co/kb/squirrly-live-assistant/#after_optimization" target="_blank">What to do after I optimize a post.</a>
|
69 |
</li>
|
70 |
</ul>
|
73 |
<?php } ?>
|
74 |
<?php if ($page == 'sq_seosettings') { ?>
|
75 |
<ul class="list-group list-group-flush">
|
76 |
+
<li class="list-group-item text-left">
|
77 |
<a href="https://howto.squirrly.co/kb/seo-automation/" target="_blank">How to set the SEO in just 2 minutes.</a>
|
78 |
</li>
|
79 |
+
<li class="list-group-item text-left">
|
80 |
<a href="https://howto.squirrly.co/kb/bulk-seo/#bulk_seo_snippet_og" target="_blank">How to optimize Social Media for each post.</a>
|
81 |
</li>
|
82 |
+
<li class="list-group-item text-left">
|
83 |
<a href="https://howto.squirrly.co/kb/bulk-seo/#bulk_seo_snippet_jsonld" target="_blank">How to activate Rich Snippets for Google.</a>
|
84 |
</li>
|
85 |
</ul>
|
88 |
<?php } ?>
|
89 |
<?php if ($page == 'sq_focuspages') { ?>
|
90 |
<ul class="list-group list-group-flush">
|
91 |
+
<li class="list-group-item text-left">
|
92 |
<a href="https://howto.squirrly.co/kb/focus-pages-page-audits/#add_new_focus_page" target="_blank">How to add a New Focus Page.</a>
|
93 |
</li>
|
94 |
+
<li class="list-group-item text-left">
|
95 |
<a href="https://howto.squirrly.co/kb/focus-pages-page-audits/#remove_focus_page" target="_blank">How to remove a Focus Page.</a>
|
96 |
</li>
|
97 |
+
<li class="list-group-item text-left">
|
98 |
<a href="https://howto.squirrly.co/kb/focus-pages-page-audits/#chance_to_rank" target="_blank">What is Chance to Rank.</a>
|
99 |
</li>
|
100 |
+
<li class="list-group-item text-left">
|
101 |
<a href="https://howto.squirrly.co/kb/focus-pages-page-audits/#keyword" target="_blank">How to add a keyword in a Focus Page.</a>
|
102 |
</li>
|
103 |
</ul>
|
106 |
<?php } ?>
|
107 |
<?php if ($page == 'sq_audits') { ?>
|
108 |
<ul class="list-group list-group-flush">
|
109 |
+
<li class="list-group-item text-left">
|
110 |
<a href="https://howto.squirrly.co/kb/seo-audit/#how_seo_audit_works" target="_blank">How does the Audit work?</a>
|
111 |
</li>
|
112 |
+
<li class="list-group-item text-left">
|
113 |
<a href="https://howto.squirrly.co/kb/seo-audit/" target="_blank">How to add a Page in Audits.</a>
|
114 |
</li>
|
115 |
+
<li class="list-group-item text-left">
|
116 |
<a href="https://howto.squirrly.co/kb/seo-audit/" target="_blank">How to remove a page from Audits.</a>
|
117 |
</li>
|
118 |
+
<li class="list-group-item text-left">
|
119 |
<a href="https://howto.squirrly.co/kb/seo-audit/#google_search_console" target="_blank">Connect to Google Search Console.</a>
|
120 |
</li>
|
121 |
+
<li class="list-group-item text-left">
|
122 |
<a href="https://howto.squirrly.co/kb/seo-audit/#google_analytics" target="_blank">Connect to Google Analytics.</a>
|
123 |
</li>
|
124 |
</ul>
|
127 |
<?php } ?>
|
128 |
<?php if ($page == 'sq_rankings') { ?>
|
129 |
<ul class="list-group list-group-flush">
|
130 |
+
<li class="list-group-item text-left">
|
131 |
<a href="https://howto.squirrly.co/kb/ranking-serp-checker/#add_keyword_ranking" target="_blank">How to add a Keyword in Rankings.</a>
|
132 |
</li>
|
133 |
+
<li class="list-group-item text-left">
|
134 |
<a href="https://howto.squirrly.co/kb/ranking-serp-checker/#remove_keyword_ranking" target="_blank">How to remove a keyword from Rankings.</a>
|
135 |
</li>
|
136 |
+
<li class="list-group-item text-left">
|
137 |
<a href="https://howto.squirrly.co/kb/ranking-serp-checker/#check_keyword_information" target="_blank">Check the Keyword Impressions, Clicks and Optimization.</a>
|
138 |
</li>
|
139 |
+
<li class="list-group-item text-left">
|
140 |
<a href="https://fourhourseo.com/why-does-neil-patel-use-squirrly-seo-for-every-blog-post-that-he-publishes/" target="_blank">Why Does Neil Patel Use Squirrly SEO For Every Blog Post that He Publishes?</a>
|
141 |
</li>
|
142 |
</ul>
|
view/Blocks/Login.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
|
6 |
<?php if ($tab == 'login') { ?>
|
7 |
<form method="post" action="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_dashboard', 'login') ?>">
|
8 |
-
<?php
|
9 |
<input type="hidden" name="action" value="sq_login"/>
|
10 |
<div class="form-group">
|
11 |
<label for="email"><?php _e('Email:', _SQ_PLUGIN_NAME_); ?></label>
|
@@ -23,7 +23,7 @@
|
|
23 |
</form>
|
24 |
<?php } elseif ($tab == 'register') { ?>
|
25 |
<form id="sq_register" method="post" action="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_dashboard', 'register') ?>">
|
26 |
-
<?php
|
27 |
<input type="hidden" name="action" value="sq_register"/>
|
28 |
<div class="form-group">
|
29 |
<label for="email"><?php _e('Email:', _SQ_PLUGIN_NAME_); ?></label>
|
5 |
|
6 |
<?php if ($tab == 'login') { ?>
|
7 |
<form method="post" action="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_dashboard', 'login') ?>">
|
8 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_login', 'sq_nonce'); ?>
|
9 |
<input type="hidden" name="action" value="sq_login"/>
|
10 |
<div class="form-group">
|
11 |
<label for="email"><?php _e('Email:', _SQ_PLUGIN_NAME_); ?></label>
|
23 |
</form>
|
24 |
<?php } elseif ($tab == 'register') { ?>
|
25 |
<form id="sq_register" method="post" action="<?php echo SQ_Classes_Helpers_Tools::getAdminUrl('sq_dashboard', 'register') ?>">
|
26 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_register', 'sq_nonce'); ?>
|
27 |
<input type="hidden" name="action" value="sq_register"/>
|
28 |
<div class="form-group">
|
29 |
<label for="email"><?php _e('Email:', _SQ_PLUGIN_NAME_); ?></label>
|
view/Blocks/Ranks.php
CHANGED
@@ -86,7 +86,13 @@
|
|
86 |
<div class="card-text mt-2">
|
87 |
<div class="col-sm-7" style="padding: 2px 0; border-left: 1px solid #eee; border-bottom: 1px solid #eee;">
|
88 |
<div id="sq_chart" class="sq_chart no-p" style="width: 450px; height: 260px;"></div>
|
89 |
-
<script>
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
</div>
|
91 |
</div>
|
92 |
</div>
|
86 |
<div class="card-text mt-2">
|
87 |
<div class="col-sm-7" style="padding: 2px 0; border-left: 1px solid #eee; border-bottom: 1px solid #eee;">
|
88 |
<div id="sq_chart" class="sq_chart no-p" style="width: 450px; height: 260px;"></div>
|
89 |
+
<script>
|
90 |
+
if (typeof google !== 'undefined') {
|
91 |
+
google.setOnLoadCallback(function () {
|
92 |
+
var sq_chart_val = drawChart("sq_chart", [["date", "average"], ["", 0], ["", 0], ["", 0], ["", 0], ["", 0], ["", 0]], true);
|
93 |
+
}
|
94 |
+
}
|
95 |
+
</script>
|
96 |
</div>
|
97 |
</div>
|
98 |
</div>
|
view/Blocks/SEOIssues.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
<div class="sq_icons sq_audit_icon m-2"></div>
|
5 |
<h3 class="card-title"><?php _e('SEO Issues', _SQ_PLUGIN_NAME_); ?>:</h3>
|
6 |
<form method="post" class="p-0 m-0">
|
7 |
-
<?php
|
8 |
<input type="hidden" name="action" value="sq_checkseo"/>
|
9 |
<button type="submit" class="btn btn-warning m-2" style="max-height: 35px;">
|
10 |
<?php echo __('Run new test', _SQ_PLUGIN_NAME_) ?>
|
@@ -59,7 +59,7 @@
|
|
59 |
<td style="width: 100px">
|
60 |
<?php if (isset($row['name']) && isset($row['value'])) { ?>
|
61 |
<form method="post" class="p-0 m-0">
|
62 |
-
<?php
|
63 |
<input type="hidden" name="action" value="sq_fixsettings"/>
|
64 |
<input type="hidden" name="name" value="<?php echo $row['name'] ?>"/>
|
65 |
<input type="hidden" name="value" value="<?php echo $row['value'] ?>"/>
|
4 |
<div class="sq_icons sq_audit_icon m-2"></div>
|
5 |
<h3 class="card-title"><?php _e('SEO Issues', _SQ_PLUGIN_NAME_); ?>:</h3>
|
6 |
<form method="post" class="p-0 m-0">
|
7 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_checkseo', 'sq_nonce'); ?>
|
8 |
<input type="hidden" name="action" value="sq_checkseo"/>
|
9 |
<button type="submit" class="btn btn-warning m-2" style="max-height: 35px;">
|
10 |
<?php echo __('Run new test', _SQ_PLUGIN_NAME_) ?>
|
59 |
<td style="width: 100px">
|
60 |
<?php if (isset($row['name']) && isset($row['value'])) { ?>
|
61 |
<form method="post" class="p-0 m-0">
|
62 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_fixsettings', 'sq_nonce'); ?>
|
63 |
<input type="hidden" name="action" value="sq_fixsettings"/>
|
64 |
<input type="hidden" name="name" value="<?php echo $row['name'] ?>"/>
|
65 |
<input type="hidden" name="value" value="<?php echo $row['value'] ?>"/>
|
view/Blocks/Toolbar.php
CHANGED
@@ -28,8 +28,13 @@
|
|
28 |
?>
|
29 |
<li class="nav-item" style=" padding-top: 8px;">
|
30 |
<svg class="separator" height="40" width="20" xmlns="http://www.w3.org/2000/svg">
|
31 |
-
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
33 |
</svg>
|
34 |
</li>
|
35 |
<?php } ?>
|
28 |
?>
|
29 |
<li class="nav-item" style=" padding-top: 8px;">
|
30 |
<svg class="separator" height="40" width="20" xmlns="http://www.w3.org/2000/svg">
|
31 |
+
<?php if(is_rtl()){ ?>
|
32 |
+
<line stroke="lightgray" stroke-width="1" x1="0" x2="19" y1="40" y2="20"></line>
|
33 |
+
<line stroke="lightgray" stroke-width="1" x1="0" x2="19" y1="0" y2="20"></line>
|
34 |
+
<?php }else{ ?>
|
35 |
+
<line stroke="lightgray" stroke-width="1" x1="0" x2="19" y1="0" y2="20"></line>
|
36 |
+
<line stroke="lightgray" stroke-width="1" x1="0" x2="19" y1="40" y2="20"></line>
|
37 |
+
<?php } ?>
|
38 |
</svg>
|
39 |
</li>
|
40 |
<?php } ?>
|
view/Blocks/VersionBar.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
<?php if ($view->checkin->subscription_serpcheck) { ?>
|
8 |
<div class="alert alert-success text-center m-0 p-1 small">
|
9 |
<?php echo sprintf(__("%sSERP Checker %s:%s We update the best ranks for each keyword, daily. 100%% accurate and objective.", _SQ_PLUGIN_NAME_), '<strong>', $view->checkin->product_type, '</strong>'); ?>
|
10 |
-
<?php if (!$view->checkin->subscription_serps) { ?>
|
11 |
<div class="alert alert-warning text-center m-0 p-1">
|
12 |
<?php echo sprintf(__("%sNo SERP queries remained.%s Please check your %saccount status and limits%s", _SQ_PLUGIN_NAME_), '<strong>', '</strong>', '<a href="' . SQ_Classes_RemoteController::getMySquirrlyLink('account') . '" target="_blank"><strong>', '</strong></a>'); ?>
|
13 |
</div>
|
7 |
<?php if ($view->checkin->subscription_serpcheck) { ?>
|
8 |
<div class="alert alert-success text-center m-0 p-1 small">
|
9 |
<?php echo sprintf(__("%sSERP Checker %s:%s We update the best ranks for each keyword, daily. 100%% accurate and objective.", _SQ_PLUGIN_NAME_), '<strong>', $view->checkin->product_type, '</strong>'); ?>
|
10 |
+
<?php if (!$view->checkin->subscription_serps && !$view->checkin->subscription_devkit) { ?>
|
11 |
<div class="alert alert-warning text-center m-0 p-1">
|
12 |
<?php echo sprintf(__("%sNo SERP queries remained.%s Please check your %saccount status and limits%s", _SQ_PLUGIN_NAME_), '<strong>', '</strong>', '<a href="' . SQ_Classes_RemoteController::getMySquirrlyLink('account') . '" target="_blank"><strong>', '</strong></a>'); ?>
|
13 |
</div>
|
view/Connect/GoogleAnalytics.php
CHANGED
@@ -14,7 +14,7 @@ $connect = json_decode(json_encode(SQ_Classes_Helpers_Tools::getOption('connect'
|
|
14 |
<h6 class="col-sm-7 py-3 m-0 text-black-50"><?php echo __('You are connected to Google Analytics', _SQ_PLUGIN_NAME_) ?></h6>
|
15 |
<div class="col-sm-5">
|
16 |
<form method="post" class="p-0 m-0" onsubmit="if(!confirm('Are you sure?')){return false;}">
|
17 |
-
<?php
|
18 |
<input type="hidden" name="action" value="sq_seosettings_ga_revoke"/>
|
19 |
<button type="submit" class="btn btn-block btn-social btn-google text-info connect-button connect btn-lg">
|
20 |
<?php echo __('Disconnect', _SQ_PLUGIN_NAME_) ?>
|
14 |
<h6 class="col-sm-7 py-3 m-0 text-black-50"><?php echo __('You are connected to Google Analytics', _SQ_PLUGIN_NAME_) ?></h6>
|
15 |
<div class="col-sm-5">
|
16 |
<form method="post" class="p-0 m-0" onsubmit="if(!confirm('Are you sure?')){return false;}">
|
17 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_seosettings_ga_revoke', 'sq_nonce'); ?>
|
18 |
<input type="hidden" name="action" value="sq_seosettings_ga_revoke"/>
|
19 |
<button type="submit" class="btn btn-block btn-social btn-google text-info connect-button connect btn-lg">
|
20 |
<?php echo __('Disconnect', _SQ_PLUGIN_NAME_) ?>
|
view/Connect/GoogleSearchConsole.php
CHANGED
@@ -12,7 +12,7 @@
|
|
12 |
<h6 class="col-sm-7 py-3 m-0 text-black-50"><?php echo __('You are connected to Google Search Console', _SQ_PLUGIN_NAME_) ?></h6>
|
13 |
<div class="col-sm-5">
|
14 |
<form method="post" class="p-0 m-0" onsubmit="if(!confirm('Are you sure?')){return false;}">
|
15 |
-
<?php
|
16 |
<input type="hidden" name="action" value="sq_seosettings_gsc_revoke"/>
|
17 |
<button type="submit" class="btn btn-block btn-social btn-google text-info btn-lg">
|
18 |
<?php echo __('Disconnect', _SQ_PLUGIN_NAME_) ?>
|
12 |
<h6 class="col-sm-7 py-3 m-0 text-black-50"><?php echo __('You are connected to Google Search Console', _SQ_PLUGIN_NAME_) ?></h6>
|
13 |
<div class="col-sm-5">
|
14 |
<form method="post" class="p-0 m-0" onsubmit="if(!confirm('Are you sure?')){return false;}">
|
15 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_seosettings_gsc_revoke', 'sq_nonce'); ?>
|
16 |
<input type="hidden" name="action" value="sq_seosettings_gsc_revoke"/>
|
17 |
<button type="submit" class="btn btn-block btn-social btn-google text-info btn-lg">
|
18 |
<?php echo __('Disconnect', _SQ_PLUGIN_NAME_) ?>
|
view/FocusPages/Addpage.php
CHANGED
@@ -162,7 +162,7 @@
|
|
162 |
if (isset($post->ID) && $post->ID > 0) {
|
163 |
?>
|
164 |
<form method="post" class="p-0 m-0">
|
165 |
-
<?php
|
166 |
<input type="hidden" name="action" value="sq_focuspages_addnew"/>
|
167 |
|
168 |
<input type="hidden" name="url" value="<?php echo $post->url; ?>">
|
162 |
if (isset($post->ID) && $post->ID > 0) {
|
163 |
?>
|
164 |
<form method="post" class="p-0 m-0">
|
165 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_focuspages_addnew', 'sq_nonce'); ?>
|
166 |
<input type="hidden" name="action" value="sq_focuspages_addnew"/>
|
167 |
|
168 |
<input type="hidden" name="url" value="<?php echo $post->url; ?>">
|
view/FocusPages/FocusPageRow.php
CHANGED
@@ -48,7 +48,7 @@ if ($view->focuspage->id <> '') {
|
|
48 |
<?php } ?>
|
49 |
|
50 |
<?php if ($view->post) { ?>
|
51 |
-
<div class="sq_focuspages_title col-sm-12 px-0 mx-0 font-weight-bold">
|
52 |
<?php echo $view->post->sq->title ?> <?php echo(($view->post->post_status <> 'publish' && $view->post->post_status <> 'inherit' && $view->post->post_status <> '') ? ' <spam style="font-weight: normal">(' . $view->post->post_status . ')</spam>' : '') ?>
|
53 |
<?php if ($edit_link) { ?>
|
54 |
<a href="<?php echo $edit_link ?>" target="_blank">
|
@@ -58,12 +58,12 @@ if ($view->focuspage->id <> '') {
|
|
58 |
</div>
|
59 |
<?php } ?>
|
60 |
|
61 |
-
<div class="sq_focuspages_url small"><?php echo '<a href="' . $view->post->url . '" class="text-link" rel="permalink" target="_blank">' . urldecode($view->post->url) . '</a>' ?></div>
|
62 |
<div class="sq_focuspages_lastaudited small my-1"><?php echo __('Audited', _SQ_PLUGIN_NAME_) ?>:
|
63 |
<span class="text-danger"><?php echo $audit_timestamp ?></span>
|
64 |
</div>
|
65 |
<form method="post" class="sq_focuspages_request p-0 m-0">
|
66 |
-
<?php
|
67 |
<input type="hidden" name="action" value="sq_focuspages_update"/>
|
68 |
|
69 |
<input type="hidden" name="post_id" value="<?php echo (int)$view->post->ID; ?>">
|
@@ -156,8 +156,8 @@ if ($view->focuspage->id <> '') {
|
|
156 |
<div class="sq_sm_dropdown">
|
157 |
<ul class="p-2 m-0 text-left">
|
158 |
<li class="m-0 p-1 py-2">
|
159 |
-
<form method="post" class="p-0 m-0">
|
160 |
-
<?php
|
161 |
<input type="hidden" name="action" value="sq_focuspages_delete"/>
|
162 |
<input type="hidden" name="id" value="<?php echo $view->focuspage->user_post_id ?>"/>
|
163 |
<i class="sq_icons_small fa fa-trash-o" style="padding: 2px"></i>
|
@@ -166,6 +166,10 @@ if ($view->focuspage->id <> '') {
|
|
166 |
</button>
|
167 |
</form>
|
168 |
</li>
|
|
|
|
|
|
|
|
|
169 |
</ul>
|
170 |
</div>
|
171 |
</div>
|
48 |
<?php } ?>
|
49 |
|
50 |
<?php if ($view->post) { ?>
|
51 |
+
<div class="sq_focuspages_title col-sm-12 px-0 mx-0 font-weight-bold text-left">
|
52 |
<?php echo $view->post->sq->title ?> <?php echo(($view->post->post_status <> 'publish' && $view->post->post_status <> 'inherit' && $view->post->post_status <> '') ? ' <spam style="font-weight: normal">(' . $view->post->post_status . ')</spam>' : '') ?>
|
53 |
<?php if ($edit_link) { ?>
|
54 |
<a href="<?php echo $edit_link ?>" target="_blank">
|
58 |
</div>
|
59 |
<?php } ?>
|
60 |
|
61 |
+
<div class="sq_focuspages_url small text-left"><?php echo '<a href="' . $view->post->url . '" class="text-link" rel="permalink" target="_blank">' . urldecode($view->post->url) . '</a>' ?></div>
|
62 |
<div class="sq_focuspages_lastaudited small my-1"><?php echo __('Audited', _SQ_PLUGIN_NAME_) ?>:
|
63 |
<span class="text-danger"><?php echo $audit_timestamp ?></span>
|
64 |
</div>
|
65 |
<form method="post" class="sq_focuspages_request p-0 m-0">
|
66 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_focuspages_update', 'sq_nonce'); ?>
|
67 |
<input type="hidden" name="action" value="sq_focuspages_update"/>
|
68 |
|
69 |
<input type="hidden" name="post_id" value="<?php echo (int)$view->post->ID; ?>">
|
156 |
<div class="sq_sm_dropdown">
|
157 |
<ul class="p-2 m-0 text-left">
|
158 |
<li class="m-0 p-1 py-2">
|
159 |
+
<form method="post" class="p-0 m-0" onSubmit="return confirm('<?php echo __('Do you want to delete the Focus Page?',_SQ_ASSETS_URL_) ?>') ">
|
160 |
+
<?php SQ_Classes_Helpers_Tools::setNonce('sq_focuspages_delete', 'sq_nonce'); ?>
|
161 |
<input type="hidden" name="action" value="sq_focuspages_delete"/>
|
162 |
<input type="hidden" name="id" value="<?php echo $view->focuspage->user_post_id ?>"/>
|
163 |
<i class="sq_icons_small fa fa-trash-o" style="padding: 2px"></i>
|
166 |
</button>
|
167 |
</form>
|
168 |
</li>
|
169 |
+
<li class="m-0 p-1 py-2">
|
170 |
+
<i class="sq_icons_small fa fa-info-circle" style="padding: 2px"></i>
|
171 |
+
<button class="btn btn-sm bg-transparent p-0 m-0" onclick="jQuery('#sq_previewurl_modal').attr('data-post_id', '<?php echo$view->focuspage->user_post_id ?>'); jQuery('#sq_previewurl_modal').sq_inspectURL()" data-dismiss="modal"><?php _e('Inspect URL', _SQ_PLUGIN_NAME_); ?></button>
|
172 |
+
</li>
|
173 |
</ul>
|
174 |
</div>
|
175 |
</div>
|
view/FocusPages/FocusPageStats.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
$scores[] = array('date', 'score');
|
6 |
$progress = array();
|
7 |
|
8 |
-
if($stats = $focuspage->stats) {
|
9 |
$stats_progress = $stats->progress;
|
10 |
|
11 |
if (!empty($stats)) {
|
@@ -116,9 +116,13 @@
|
|
116 |
<div class="media-right py-3 media-middle ">
|
117 |
<div class="col-sm-12 px-0">
|
118 |
<div id="sq_chart_score" class="sq_chart no-p" style="width:95%; height: 90px;"></div>
|
119 |
-
<script>
|
120 |
-
|
121 |
-
|
|
|
|
|
|
|
|
|
122 |
</div>
|
123 |
</div>
|
124 |
</div>
|
@@ -168,9 +172,13 @@
|
|
168 |
<div class="media-right py-3 media-middle ">
|
169 |
<div class="col-sm-12 px-0">
|
170 |
<div id="sq_chart_serp" class="sq_chart no-p" style="width:95%; height: 90px;"></div>
|
171 |
-
<script>
|
172 |
-
|
173 |
-
|
|
|
|
|
|
|
|
|
174 |
</div>
|
175 |
</div>
|
176 |
</div>
|
@@ -190,9 +198,13 @@
|
|
190 |
<div class="media-right py-3 media-middle ">
|
191 |
<div class="col-sm-12 px-0">
|
192 |
<div id="sq_chart_views" class="sq_chart no-p" style="width:95%; height: 90px;"></div>
|
193 |
-
<script>
|
194 |
-
|
195 |
-
|
|
|
|
|
|
|
|
|
196 |
</div>
|
197 |
</div>
|
198 |
</div>
|
5 |
$scores[] = array('date', 'score');
|
6 |
$progress = array();
|
7 |
|
8 |
+
if ($stats = $focuspage->stats) {
|
9 |
$stats_progress = $stats->progress;
|
10 |
|
11 |
if (!empty($stats)) {
|
116 |
<div class="media-right py-3 media-middle ">
|
117 |
<div class="col-sm-12 px-0">
|
118 |
<div id="sq_chart_score" class="sq_chart no-p" style="width:95%; height: 90px;"></div>
|
119 |
+
<script>
|
120 |
+
if (typeof google !== 'undefined') {
|
121 |
+
google.setOnLoadCallback(function () {
|
122 |
+
drawScoreChart("sq_chart_score", <?php echo json_encode($scores) ?> , false);
|
123 |
+
});
|
124 |
+
}
|
125 |
+
</script>
|
126 |
</div>
|
127 |
</div>
|
128 |
</div>
|
172 |
<div class="media-right py-3 media-middle ">
|
173 |
<div class="col-sm-12 px-0">
|
174 |
<div id="sq_chart_serp" class="sq_chart no-p" style="width:95%; height: 90px;"></div>
|
175 |
+
<script>
|
176 |
+
if (typeof google !== 'undefined') {
|
177 |
+
google.setOnLoadCallback(function () {
|
178 |
+
drawRankingChart("sq_chart_serp", <?php echo json_encode($serp) ?> , true);
|
179 |
+
});
|
180 |
+
}
|
181 |
+
</script>
|
182 |
</div>
|
183 |
</div>
|
184 |
|