Version Description
Download this release
Release Info
| Developer | cifi |
| Plugin | |
| Version | 11.1.03 |
| Comparing to | |
| See all releases | |
Code changes from version 11.1.02 to 11.1.03
- classes/helpers/Tools.php +2 -1
- controllers/Audits.php +14 -11
- controllers/CheckSeo.php +16 -5
- controllers/FocusPages.php +11 -4
- controllers/Onboarding.php +0 -1
- controllers/Overview.php +0 -1
- controllers/Patterns.php +0 -4
- controllers/Post.php +8 -8
- controllers/Snippet.php +6 -3
- models/Compatibility.php +21 -1
- models/Frontend.php +11 -0
- models/ImportExport.php +14 -4
- models/abstract/Seo.php +5 -5
- models/domain/Post.php +5 -0
- models/services/JsonLD.php +11 -10
- readme.txt +9 -0
- squirrly.php +2 -2
- view/Audits/Audits.php +6 -2
- view/Blocks/Snippet.php +5 -1
- view/FocusPages/Pagelist.php +7 -2
- view/Goals/CheckSeo.php +7 -2
- view/SeoSettings/Advanced.php +15 -0
- view/assets/css/post.min.css +1 -1
classes/helpers/Tools.php
CHANGED
|
@@ -137,6 +137,7 @@ class SQ_Classes_Helpers_Tools {
|
|
| 137 |
//minify Squirrly Metas
|
| 138 |
'sq_load_css' => 1,
|
| 139 |
'sq_minify' => 0,
|
|
|
|
| 140 |
|
| 141 |
//Settings Assistant
|
| 142 |
'sq_assistant' => 1,
|
|
@@ -682,7 +683,7 @@ class SQ_Classes_Helpers_Tools {
|
|
| 682 |
'archive' => array(
|
| 683 |
'protected' => 1,
|
| 684 |
'sep' => '|',
|
| 685 |
-
'title' => '{{date}} {{page}} {{sep}} {{sitename}}',
|
| 686 |
'description' => '{{excerpt}}',
|
| 687 |
'noindex' => 0,
|
| 688 |
'nofollow' => 0,
|
| 137 |
//minify Squirrly Metas
|
| 138 |
'sq_load_css' => 1,
|
| 139 |
'sq_minify' => 0,
|
| 140 |
+
'sq_non_utf8_support' => 1,
|
| 141 |
|
| 142 |
//Settings Assistant
|
| 143 |
'sq_assistant' => 1,
|
| 683 |
'archive' => array(
|
| 684 |
'protected' => 1,
|
| 685 |
'sep' => '|',
|
| 686 |
+
'title' => '{{plural}} {{date}} {{page}} {{sep}} {{sitename}}',
|
| 687 |
'description' => '{{excerpt}}',
|
| 688 |
'noindex' => 0,
|
| 689 |
'nofollow' => 0,
|
controllers/Audits.php
CHANGED
|
@@ -27,10 +27,10 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
|
|
| 27 |
$this->checkin = SQ_Classes_RemoteController::checkin();
|
| 28 |
|
| 29 |
if (is_wp_error($this->checkin)) {
|
| 30 |
-
if($this->checkin->get_error_message() == 'no_data') {
|
| 31 |
echo $this->getView('Errors/Error');
|
| 32 |
return;
|
| 33 |
-
}elseif($this->checkin->get_error_message() == 'maintenance') {
|
| 34 |
echo $this->getView('Errors/Maintenance');
|
| 35 |
return;
|
| 36 |
}
|
|
@@ -43,11 +43,11 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
|
|
| 43 |
}
|
| 44 |
|
| 45 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
| 46 |
-
if(is_rtl()){
|
| 47 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
|
| 48 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
|
| 49 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
| 50 |
-
}else{
|
| 51 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
|
| 52 |
}
|
| 53 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
|
@@ -151,7 +151,7 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
|
|
| 151 |
}
|
| 152 |
|
| 153 |
public function audits() {
|
| 154 |
-
add_action('sq_form_notices', array($this,'getNotificationBar'));
|
| 155 |
|
| 156 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('audits');
|
| 157 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('knob');
|
|
@@ -163,7 +163,7 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
|
|
| 163 |
* Set the audit pages and populate them
|
| 164 |
* @return mixed
|
| 165 |
*/
|
| 166 |
-
public function setAuditPages(){
|
| 167 |
$days_back = (int)SQ_Classes_Helpers_Tools::getValue('days_back', 30);
|
| 168 |
$this->audit = SQ_Classes_RemoteController::getAudit(array('days_back' => $days_back));
|
| 169 |
|
|
@@ -243,8 +243,11 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
|
|
| 243 |
$json['stats'] = $this->getView('Audits/AuditStats');
|
| 244 |
$json['html'] = $this->getView('Audits/AuditPages');
|
| 245 |
|
| 246 |
-
|
| 247 |
-
|
|
|
|
|
|
|
|
|
|
| 248 |
}
|
| 249 |
|
| 250 |
if (SQ_Classes_Helpers_Tools::isAjax()) {
|
|
@@ -302,16 +305,16 @@ class SQ_Controllers_Audits extends SQ_Classes_FrontController {
|
|
| 302 |
|
| 303 |
$post_id = (int)SQ_Classes_Helpers_Tools::getValue('post_id', 0);
|
| 304 |
|
| 305 |
-
if($post_id) {
|
| 306 |
$args = array();
|
| 307 |
$args['post_id'] = $post_id;
|
| 308 |
|
| 309 |
if ($auditpage = SQ_Classes_RemoteController::updateAudit($args)) {
|
| 310 |
if (!is_wp_error($auditpage)) {
|
| 311 |
SQ_Classes_Error::setMessage(esc_html__("Audit page sent for recheck. It may take a while so please be patient.", _SQ_PLUGIN_NAME_) . " <br /> ");
|
| 312 |
-
} elseif($auditpage->get_error_message() == 'too_many_attempts'){
|
| 313 |
SQ_Classes_Error::setError(esc_html__("You've made too many requests, you can request one page audit per hour.", _SQ_PLUGIN_NAME_) . " <br /> ");
|
| 314 |
-
}else{
|
| 315 |
SQ_Classes_Error::setError(esc_html__("The page could not be sent for reaudit.", _SQ_PLUGIN_NAME_) . " <br /> ");
|
| 316 |
}
|
| 317 |
} else {
|
| 27 |
$this->checkin = SQ_Classes_RemoteController::checkin();
|
| 28 |
|
| 29 |
if (is_wp_error($this->checkin)) {
|
| 30 |
+
if ($this->checkin->get_error_message() == 'no_data') {
|
| 31 |
echo $this->getView('Errors/Error');
|
| 32 |
return;
|
| 33 |
+
} elseif ($this->checkin->get_error_message() == 'maintenance') {
|
| 34 |
echo $this->getView('Errors/Maintenance');
|
| 35 |
return;
|
| 36 |
}
|
| 43 |
}
|
| 44 |
|
| 45 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap-reboot');
|
| 46 |
+
if (is_rtl()) {
|
| 47 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('popper');
|
| 48 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap.rtl');
|
| 49 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('rtl');
|
| 50 |
+
} else {
|
| 51 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('bootstrap');
|
| 52 |
}
|
| 53 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('switchery');
|
| 151 |
}
|
| 152 |
|
| 153 |
public function audits() {
|
| 154 |
+
add_action('sq_form_notices', array($this, 'getNotificationBar'));
|
| 155 |
|
| 156 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('audits');
|
| 157 |
SQ_Classes_ObjController::getClass('SQ_Classes_DisplayController')->loadMedia('knob');
|
| 163 |
* Set the audit pages and populate them
|
| 164 |
* @return mixed
|
| 165 |
*/
|
| 166 |
+
public function setAuditPages() {
|
| 167 |
$days_back = (int)SQ_Classes_Helpers_Tools::getValue('days_back', 30);
|
| 168 |
$this->audit = SQ_Classes_RemoteController::getAudit(array('days_back' => $days_back));
|
| 169 |
|
| 243 |
$json['stats'] = $this->getView('Audits/AuditStats');
|
| 244 |
$json['html'] = $this->getView('Audits/AuditPages');
|
| 245 |
|
| 246 |
+
//Support for international languages
|
| 247 |
+
if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
|
| 248 |
+
if (strpos(get_bloginfo("language"), 'en') === false) {
|
| 249 |
+
$json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
|
| 250 |
+
}
|
| 251 |
}
|
| 252 |
|
| 253 |
if (SQ_Classes_Helpers_Tools::isAjax()) {
|
| 305 |
|
| 306 |
$post_id = (int)SQ_Classes_Helpers_Tools::getValue('post_id', 0);
|
| 307 |
|
| 308 |
+
if ($post_id) {
|
| 309 |
$args = array();
|
| 310 |
$args['post_id'] = $post_id;
|
| 311 |
|
| 312 |
if ($auditpage = SQ_Classes_RemoteController::updateAudit($args)) {
|
| 313 |
if (!is_wp_error($auditpage)) {
|
| 314 |
SQ_Classes_Error::setMessage(esc_html__("Audit page sent for recheck. It may take a while so please be patient.", _SQ_PLUGIN_NAME_) . " <br /> ");
|
| 315 |
+
} elseif ($auditpage->get_error_message() == 'too_many_attempts') {
|
| 316 |
SQ_Classes_Error::setError(esc_html__("You've made too many requests, you can request one page audit per hour.", _SQ_PLUGIN_NAME_) . " <br /> ");
|
| 317 |
+
} else {
|
| 318 |
SQ_Classes_Error::setError(esc_html__("The page could not be sent for reaudit.", _SQ_PLUGIN_NAME_) . " <br /> ");
|
| 319 |
}
|
| 320 |
} else {
|
controllers/CheckSeo.php
CHANGED
|
@@ -257,15 +257,22 @@ class SQ_Controllers_CheckSeo extends SQ_Classes_FrontController {
|
|
| 257 |
* @return bool|int
|
| 258 |
*/
|
| 259 |
public function getErrorsCount() {
|
|
|
|
|
|
|
|
|
|
| 260 |
if (!isset($this->report)) {
|
| 261 |
$this->report = $this->getNotifications();
|
| 262 |
}
|
| 263 |
|
| 264 |
-
if
|
| 265 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 266 |
}
|
| 267 |
|
| 268 |
-
return
|
| 269 |
}
|
| 270 |
|
| 271 |
/**
|
|
@@ -352,8 +359,12 @@ class SQ_Controllers_CheckSeo extends SQ_Classes_FrontController {
|
|
| 352 |
}
|
| 353 |
|
| 354 |
$json['html'] = $this->getView('Goals/Goals');
|
| 355 |
-
|
| 356 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 357 |
}
|
| 358 |
|
| 359 |
if (SQ_Classes_Error::isError()) {
|
| 257 |
* @return bool|int
|
| 258 |
*/
|
| 259 |
public function getErrorsCount() {
|
| 260 |
+
|
| 261 |
+
$errors = 0;
|
| 262 |
+
|
| 263 |
if (!isset($this->report)) {
|
| 264 |
$this->report = $this->getNotifications();
|
| 265 |
}
|
| 266 |
|
| 267 |
+
if(!empty($this->report)){
|
| 268 |
+
foreach ($this->report as $row){
|
| 269 |
+
if($row['active'] && !$row['positive'] && !$row['completed'] && !$row['done'] ){
|
| 270 |
+
$errors ++;
|
| 271 |
+
}
|
| 272 |
+
}
|
| 273 |
}
|
| 274 |
|
| 275 |
+
return $errors;
|
| 276 |
}
|
| 277 |
|
| 278 |
/**
|
| 359 |
}
|
| 360 |
|
| 361 |
$json['html'] = $this->getView('Goals/Goals');
|
| 362 |
+
|
| 363 |
+
//Support for international languages
|
| 364 |
+
if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
|
| 365 |
+
if (strpos(get_bloginfo("language"), 'en') === false) {
|
| 366 |
+
$json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
|
| 367 |
+
}
|
| 368 |
}
|
| 369 |
|
| 370 |
if (SQ_Classes_Error::isError()) {
|
controllers/FocusPages.php
CHANGED
|
@@ -291,8 +291,12 @@ class SQ_Controllers_FocusPages extends SQ_Classes_FrontController {
|
|
| 291 |
$args = array();
|
| 292 |
$args['post_id'] = $post_id;
|
| 293 |
if ($json['html'] = SQ_Classes_RemoteController::getInspectURL($args)) {
|
| 294 |
-
|
| 295 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 296 |
}
|
| 297 |
}
|
| 298 |
|
|
@@ -312,8 +316,11 @@ class SQ_Controllers_FocusPages extends SQ_Classes_FrontController {
|
|
| 312 |
|
| 313 |
$json['html'] = $this->getView('FocusPages/FocusPages');
|
| 314 |
|
| 315 |
-
|
| 316 |
-
|
|
|
|
|
|
|
|
|
|
| 317 |
}
|
| 318 |
|
| 319 |
if (SQ_Classes_Error::isError()) {
|
| 291 |
$args = array();
|
| 292 |
$args['post_id'] = $post_id;
|
| 293 |
if ($json['html'] = SQ_Classes_RemoteController::getInspectURL($args)) {
|
| 294 |
+
|
| 295 |
+
//Support for international languages
|
| 296 |
+
if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
|
| 297 |
+
if (strpos(get_bloginfo("language"), 'en') === false) {
|
| 298 |
+
$json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
|
| 299 |
+
}
|
| 300 |
}
|
| 301 |
}
|
| 302 |
|
| 316 |
|
| 317 |
$json['html'] = $this->getView('FocusPages/FocusPages');
|
| 318 |
|
| 319 |
+
//Support for international languages
|
| 320 |
+
if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
|
| 321 |
+
if (strpos(get_bloginfo("language"), 'en') === false) {
|
| 322 |
+
$json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
|
| 323 |
+
}
|
| 324 |
}
|
| 325 |
|
| 326 |
if (SQ_Classes_Error::isError()) {
|
controllers/Onboarding.php
CHANGED
|
@@ -79,7 +79,6 @@ class SQ_Controllers_Onboarding extends SQ_Classes_FrontController {
|
|
| 79 |
SQ_Classes_Helpers_Tools::saveOptions('sq_attachment_redirect', 0);
|
| 80 |
}else{
|
| 81 |
SQ_Classes_Helpers_Tools::saveOptions('sq_attachment_redirect', 1);
|
| 82 |
-
SQ_Classes_Helpers_Tools::saveOptions('sq_auto_links', 1);
|
| 83 |
}
|
| 84 |
SQ_Classes_Helpers_Tools::saveOptions('sq_jsonld_type', ($sq_onboarding_data['website_type'] == 'personal' ? 'Person' : 'Organization'));
|
| 85 |
}
|
| 79 |
SQ_Classes_Helpers_Tools::saveOptions('sq_attachment_redirect', 0);
|
| 80 |
}else{
|
| 81 |
SQ_Classes_Helpers_Tools::saveOptions('sq_attachment_redirect', 1);
|
|
|
|
| 82 |
}
|
| 83 |
SQ_Classes_Helpers_Tools::saveOptions('sq_jsonld_type', ($sq_onboarding_data['website_type'] == 'personal' ? 'Person' : 'Organization'));
|
| 84 |
}
|
controllers/Overview.php
CHANGED
|
@@ -39,7 +39,6 @@ class SQ_Controllers_Overview extends SQ_Classes_FrontController {
|
|
| 39 |
add_action('sq_form_notices', array($this, 'getNotificationBar'));
|
| 40 |
add_action('sq_form_notices', array($this, 'getNotificationCompatibility'));
|
| 41 |
|
| 42 |
-
//@ob_flush();
|
| 43 |
parent::init();
|
| 44 |
|
| 45 |
}
|
| 39 |
add_action('sq_form_notices', array($this, 'getNotificationBar'));
|
| 40 |
add_action('sq_form_notices', array($this, 'getNotificationCompatibility'));
|
| 41 |
|
|
|
|
| 42 |
parent::init();
|
| 43 |
|
| 44 |
}
|
controllers/Patterns.php
CHANGED
|
@@ -67,10 +67,6 @@ class SQ_Controllers_Patterns extends SQ_Classes_FrontController {
|
|
| 67 |
if (!empty($values)) {
|
| 68 |
foreach ($values as $name => $value) {
|
| 69 |
if ($name <> '' && !is_array($value) && $value <> '') {
|
| 70 |
-
// if (strpos($value, '#') !== false) { //in case there are still patterns from AIOS
|
| 71 |
-
// $value = preg_replace('/#([a-z_]+)/s', '{{$1}}', $value);
|
| 72 |
-
// $object->$name = preg_replace('/#([a-z_]+)/s', '{{$1}}', $object->$name);
|
| 73 |
-
// }
|
| 74 |
|
| 75 |
if (strpos($value, '%%') !== false) { //in case there are still patterns from Yoast
|
| 76 |
$value = preg_replace('/%%([^\%]+)%%/s', '{{$1}}', $value);
|
| 67 |
if (!empty($values)) {
|
| 68 |
foreach ($values as $name => $value) {
|
| 69 |
if ($name <> '' && !is_array($value) && $value <> '') {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
|
| 71 |
if (strpos($value, '%%') !== false) { //in case there are still patterns from Yoast
|
| 72 |
$value = preg_replace('/%%([^\%]+)%%/s', '{{$1}}', $value);
|
controllers/Post.php
CHANGED
|
@@ -269,14 +269,6 @@ class SQ_Controllers_Post extends SQ_Classes_FrontController {
|
|
| 269 |
get_post_status($post->ID) <> 'inherit'
|
| 270 |
) {
|
| 271 |
|
| 272 |
-
//Exclude types for SLA
|
| 273 |
-
if (isset($post->post_type) && $post->post_type <> '') {
|
| 274 |
-
$excludes = SQ_Classes_Helpers_Tools::getOption('sq_sla_exclude_post_types');
|
| 275 |
-
if (in_array($post->post_type, $excludes)) {
|
| 276 |
-
return;
|
| 277 |
-
}
|
| 278 |
-
}
|
| 279 |
-
|
| 280 |
//Update the SEO Keywords from Live Assistant and Permalink
|
| 281 |
add_filter('sq_seo_before_save', array($this, 'addSeoKeywords'), 11, 1);
|
| 282 |
//Update the redirect to old slugs
|
|
@@ -285,6 +277,14 @@ class SQ_Controllers_Post extends SQ_Classes_FrontController {
|
|
| 285 |
//Save the SEO
|
| 286 |
SQ_Classes_ObjController::getClass('SQ_Models_Snippet')->saveSEO($post->ID);
|
| 287 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 288 |
//Send the optimization when attachment page
|
| 289 |
$this->sendSeo($post);
|
| 290 |
}
|
| 269 |
get_post_status($post->ID) <> 'inherit'
|
| 270 |
) {
|
| 271 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 272 |
//Update the SEO Keywords from Live Assistant and Permalink
|
| 273 |
add_filter('sq_seo_before_save', array($this, 'addSeoKeywords'), 11, 1);
|
| 274 |
//Update the redirect to old slugs
|
| 277 |
//Save the SEO
|
| 278 |
SQ_Classes_ObjController::getClass('SQ_Models_Snippet')->saveSEO($post->ID);
|
| 279 |
|
| 280 |
+
//Exclude types for SLA
|
| 281 |
+
if (isset($post->post_type) && $post->post_type <> '') {
|
| 282 |
+
$excludes = SQ_Classes_Helpers_Tools::getOption('sq_sla_exclude_post_types');
|
| 283 |
+
if (in_array($post->post_type, $excludes)) {
|
| 284 |
+
return;
|
| 285 |
+
}
|
| 286 |
+
}
|
| 287 |
+
|
| 288 |
//Send the optimization when attachment page
|
| 289 |
$this->sendSeo($post);
|
| 290 |
}
|
controllers/Snippet.php
CHANGED
|
@@ -17,7 +17,7 @@ class SQ_Controllers_Snippet extends SQ_Classes_FrontController {
|
|
| 17 |
$taxonomies = get_taxonomies(array('public' => true));
|
| 18 |
if (!empty($taxonomies)) {
|
| 19 |
foreach ($taxonomies as $taxonomy) {
|
| 20 |
-
if(is_string($taxonomy) && $taxonomy <> '') {
|
| 21 |
add_filter($taxonomy . '_edit_form', array($this, 'hookTermsPage'), 10);
|
| 22 |
}
|
| 23 |
}
|
|
@@ -216,8 +216,11 @@ class SQ_Controllers_Snippet extends SQ_Classes_FrontController {
|
|
| 216 |
if ($this->post = $this->model->getCurrentSnippet($post_id, $term_id, $taxonomy, $post_type)) {
|
| 217 |
$json['html'] = $this->getView('Blocks/Snippet');
|
| 218 |
|
| 219 |
-
|
| 220 |
-
|
|
|
|
|
|
|
|
|
|
| 221 |
}
|
| 222 |
|
| 223 |
if (SQ_Classes_Error::isError()) {
|
| 17 |
$taxonomies = get_taxonomies(array('public' => true));
|
| 18 |
if (!empty($taxonomies)) {
|
| 19 |
foreach ($taxonomies as $taxonomy) {
|
| 20 |
+
if (is_string($taxonomy) && $taxonomy <> '') {
|
| 21 |
add_filter($taxonomy . '_edit_form', array($this, 'hookTermsPage'), 10);
|
| 22 |
}
|
| 23 |
}
|
| 216 |
if ($this->post = $this->model->getCurrentSnippet($post_id, $term_id, $taxonomy, $post_type)) {
|
| 217 |
$json['html'] = $this->getView('Blocks/Snippet');
|
| 218 |
|
| 219 |
+
//Support for international languages
|
| 220 |
+
if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
|
| 221 |
+
if (strpos(get_bloginfo("language"), 'en') === false) {
|
| 222 |
+
$json['html'] = iconv('UTF-8', 'UTF-8//IGNORE', $json['html']);
|
| 223 |
+
}
|
| 224 |
}
|
| 225 |
|
| 226 |
if (SQ_Classes_Error::isError()) {
|
models/Compatibility.php
CHANGED
|
@@ -50,7 +50,10 @@ class SQ_Models_Compatibility {
|
|
| 50 |
add_action('template_redirect', array(SQ_Classes_ObjController::getClass('SQ_Models_Frontend'), 'setPost'), 10);
|
| 51 |
}
|
| 52 |
|
| 53 |
-
|
|
|
|
|
|
|
|
|
|
| 54 |
}
|
| 55 |
|
| 56 |
/**
|
|
@@ -61,6 +64,7 @@ class SQ_Models_Compatibility {
|
|
| 61 |
public function isBuilderEditor() {
|
| 62 |
|
| 63 |
if (function_exists('is_user_logged_in') && is_user_logged_in()) {
|
|
|
|
| 64 |
if (SQ_Classes_Helpers_Tools::isPluginInstalled('oxygen/functions.php')) {
|
| 65 |
if (SQ_Classes_Helpers_Tools::getValue('ct_builder', false) || SQ_Classes_Helpers_Tools::getValue('ct_template', false)) {
|
| 66 |
return true;
|
|
@@ -71,6 +75,22 @@ class SQ_Models_Compatibility {
|
|
| 71 |
return true;
|
| 72 |
}
|
| 73 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
}
|
| 75 |
|
| 76 |
return false;
|
| 50 |
add_action('template_redirect', array(SQ_Classes_ObjController::getClass('SQ_Models_Frontend'), 'setPost'), 10);
|
| 51 |
}
|
| 52 |
|
| 53 |
+
//Compatibility with Weglot Plugin
|
| 54 |
+
if (SQ_Classes_Helpers_Tools::isPluginInstalled('weglot/weglot.php')) {
|
| 55 |
+
add_filter('sq_lateloading', '__return_true');
|
| 56 |
+
}
|
| 57 |
}
|
| 58 |
|
| 59 |
/**
|
| 64 |
public function isBuilderEditor() {
|
| 65 |
|
| 66 |
if (function_exists('is_user_logged_in') && is_user_logged_in()) {
|
| 67 |
+
|
| 68 |
if (SQ_Classes_Helpers_Tools::isPluginInstalled('oxygen/functions.php')) {
|
| 69 |
if (SQ_Classes_Helpers_Tools::getValue('ct_builder', false) || SQ_Classes_Helpers_Tools::getValue('ct_template', false)) {
|
| 70 |
return true;
|
| 75 |
return true;
|
| 76 |
}
|
| 77 |
}
|
| 78 |
+
|
| 79 |
+
$builder_paramas = array(
|
| 80 |
+
'vcv-action',
|
| 81 |
+
'et_fb',
|
| 82 |
+
'ct_builder',
|
| 83 |
+
'ct_template',
|
| 84 |
+
'tve',
|
| 85 |
+
'uxb_iframe',
|
| 86 |
+
);
|
| 87 |
+
|
| 88 |
+
foreach ($builder_paramas as $param) {
|
| 89 |
+
if (SQ_Classes_Helpers_Tools::getValue($param, false)) {
|
| 90 |
+
return true;
|
| 91 |
+
}
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
}
|
| 95 |
|
| 96 |
return false;
|
models/Frontend.php
CHANGED
|
@@ -348,10 +348,20 @@ class SQ_Models_Frontend {
|
|
| 348 |
|
| 349 |
if (get_option('page_for_posts') > 0) {
|
| 350 |
$posts_url = get_permalink(get_option('page_for_posts'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 351 |
if (rtrim($posts_url, '/') == rtrim($current_url, '/')) {
|
| 352 |
$current_post = get_post(get_option('page_for_posts'));
|
| 353 |
}
|
|
|
|
| 354 |
} elseif (get_option('page_on_front') > 0) {
|
|
|
|
| 355 |
$posts_url = get_permalink(get_option('page_on_front'));
|
| 356 |
if (rtrim($posts_url, '/') == rtrim($current_url, '/')) {
|
| 357 |
$current_post = get_post(get_option('page_on_front'));
|
|
@@ -370,6 +380,7 @@ class SQ_Models_Frontend {
|
|
| 370 |
public function getPostDetails($post) {
|
| 371 |
|
| 372 |
if ($post instanceof WP_Post) {
|
|
|
|
| 373 |
/** @var SQ_Models_Domain_Post $post */
|
| 374 |
$post = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Post', $post);
|
| 375 |
|
| 348 |
|
| 349 |
if (get_option('page_for_posts') > 0) {
|
| 350 |
$posts_url = get_permalink(get_option('page_for_posts'));
|
| 351 |
+
|
| 352 |
+
if (is_paged() && $posts_url <> '') {
|
| 353 |
+
$page = (int)get_query_var('paged');
|
| 354 |
+
if ($page && $page > 1) {
|
| 355 |
+
$posts_url = trailingslashit($posts_url) . "page/" . "$page/";
|
| 356 |
+
}
|
| 357 |
+
}
|
| 358 |
+
|
| 359 |
if (rtrim($posts_url, '/') == rtrim($current_url, '/')) {
|
| 360 |
$current_post = get_post(get_option('page_for_posts'));
|
| 361 |
}
|
| 362 |
+
|
| 363 |
} elseif (get_option('page_on_front') > 0) {
|
| 364 |
+
|
| 365 |
$posts_url = get_permalink(get_option('page_on_front'));
|
| 366 |
if (rtrim($posts_url, '/') == rtrim($current_url, '/')) {
|
| 367 |
$current_post = get_post(get_option('page_on_front'));
|
| 380 |
public function getPostDetails($post) {
|
| 381 |
|
| 382 |
if ($post instanceof WP_Post) {
|
| 383 |
+
|
| 384 |
/** @var SQ_Models_Domain_Post $post */
|
| 385 |
$post = SQ_Classes_ObjController::getDomain('SQ_Models_Domain_Post', $post);
|
| 386 |
|
models/ImportExport.php
CHANGED
|
@@ -606,9 +606,14 @@ class SQ_Models_ImportExport {
|
|
| 606 |
if (function_exists('mb_detect_encoding') && function_exists('iconv')) {
|
| 607 |
if ($encoding = mb_detect_encoding($value)) {
|
| 608 |
if ($encoding <> 'UTF-8') {
|
| 609 |
-
|
| 610 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 611 |
}
|
|
|
|
| 612 |
if (strpos($value, '%%') !== false) {
|
| 613 |
$value = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $value);
|
| 614 |
}
|
|
@@ -659,9 +664,14 @@ class SQ_Models_ImportExport {
|
|
| 659 |
if (function_exists('mb_detect_encoding') && function_exists('iconv')) {
|
| 660 |
if ($encoding = mb_detect_encoding($value)) {
|
| 661 |
if ($encoding <> 'UTF-8') {
|
| 662 |
-
|
| 663 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 664 |
}
|
|
|
|
| 665 |
if (strpos($value, '%%') !== false) {
|
| 666 |
$value = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $value);
|
| 667 |
}
|
| 606 |
if (function_exists('mb_detect_encoding') && function_exists('iconv')) {
|
| 607 |
if ($encoding = mb_detect_encoding($value)) {
|
| 608 |
if ($encoding <> 'UTF-8') {
|
| 609 |
+
|
| 610 |
+
//support for international languages
|
| 611 |
+
if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
|
| 612 |
+
if (strpos(get_bloginfo("language"), 'en') === false) {
|
| 613 |
+
$value = iconv($encoding, 'UTF-8', $value);
|
| 614 |
+
}
|
| 615 |
}
|
| 616 |
+
|
| 617 |
if (strpos($value, '%%') !== false) {
|
| 618 |
$value = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $value);
|
| 619 |
}
|
| 664 |
if (function_exists('mb_detect_encoding') && function_exists('iconv')) {
|
| 665 |
if ($encoding = mb_detect_encoding($value)) {
|
| 666 |
if ($encoding <> 'UTF-8') {
|
| 667 |
+
|
| 668 |
+
//support for international languages
|
| 669 |
+
if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
|
| 670 |
+
if (strpos(get_bloginfo("language"), 'en') === false) {
|
| 671 |
+
$value = iconv($encoding, 'UTF-8', $value);
|
| 672 |
+
}
|
| 673 |
}
|
| 674 |
+
|
| 675 |
if (strpos($value, '%%') !== false) {
|
| 676 |
$value = preg_replace('/%%([^\%]+)%%/', '{{$1}}', $value);
|
| 677 |
}
|
models/abstract/Seo.php
CHANGED
|
@@ -196,7 +196,7 @@ abstract class SQ_Models_Abstract_Seo {
|
|
| 196 |
if ($_sq_video = get_post_meta($this->_post->ID, '_sq_video', true)) {
|
| 197 |
|
| 198 |
//get the image from the youtube video
|
| 199 |
-
preg_match('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:watch\?v=))([^&\"\'
|
| 200 |
if (isset($match[1]) && $match[1] <> '') {
|
| 201 |
$thumbnail = 'https://img.youtube.com/vi/' . $match[1] . '/hqdefault.jpg';
|
| 202 |
}
|
|
@@ -214,7 +214,7 @@ abstract class SQ_Models_Abstract_Seo {
|
|
| 214 |
|
| 215 |
if (isset($this->_post->post_content)) {
|
| 216 |
|
| 217 |
-
preg_match('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed)\/)([^\?&\"\'
|
| 218 |
|
| 219 |
if (isset($match[0])) {
|
| 220 |
if (strpos($match[0], '//') !== false && strpos($match[0], 'http') === false) {
|
|
@@ -229,7 +229,7 @@ abstract class SQ_Models_Abstract_Seo {
|
|
| 229 |
//return first video found
|
| 230 |
if (!$all && !empty($videos)) return $videos;
|
| 231 |
|
| 232 |
-
preg_match_all('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:watch\?v=))([^&\"\'
|
| 233 |
|
| 234 |
if(!empty($matches)){
|
| 235 |
foreach ($matches as $match){
|
|
@@ -255,7 +255,7 @@ abstract class SQ_Models_Abstract_Seo {
|
|
| 255 |
//return first video found
|
| 256 |
if (!$all && !empty($videos)) return $videos;
|
| 257 |
|
| 258 |
-
preg_match('/(?:http(?:s)?:\/\/)?(?:fwd4\.wistia\.com\/(?:medias)\/)([^\?&\"\'
|
| 259 |
|
| 260 |
if (isset($match[0])) {
|
| 261 |
$videos[] = array(
|
|
@@ -267,7 +267,7 @@ abstract class SQ_Models_Abstract_Seo {
|
|
| 267 |
//return first video found
|
| 268 |
if (!$all && !empty($videos)) return $videos;
|
| 269 |
|
| 270 |
-
preg_match('/class=["|\']([^"\']*wistia_async_([^\?&\"\'
|
| 271 |
|
| 272 |
if (isset($match[0])) {
|
| 273 |
$videos[] = array(
|
| 196 |
if ($_sq_video = get_post_meta($this->_post->ID, '_sq_video', true)) {
|
| 197 |
|
| 198 |
//get the image from the youtube video
|
| 199 |
+
preg_match('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:watch\?v=))([^&\"\'<>\s]+)/si', $_sq_video, $match);
|
| 200 |
if (isset($match[1]) && $match[1] <> '') {
|
| 201 |
$thumbnail = 'https://img.youtube.com/vi/' . $match[1] . '/hqdefault.jpg';
|
| 202 |
}
|
| 214 |
|
| 215 |
if (isset($this->_post->post_content)) {
|
| 216 |
|
| 217 |
+
preg_match('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed)\/)([^\?&\"\'<>\s]+)/si', $this->_post->post_content, $match);
|
| 218 |
|
| 219 |
if (isset($match[0])) {
|
| 220 |
if (strpos($match[0], '//') !== false && strpos($match[0], 'http') === false) {
|
| 229 |
//return first video found
|
| 230 |
if (!$all && !empty($videos)) return $videos;
|
| 231 |
|
| 232 |
+
preg_match_all('/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:watch\?v=))([^&\"\'\<>\s]+)/si', $this->_post->post_content, $matches, PREG_SET_ORDER );
|
| 233 |
|
| 234 |
if(!empty($matches)){
|
| 235 |
foreach ($matches as $match){
|
| 255 |
//return first video found
|
| 256 |
if (!$all && !empty($videos)) return $videos;
|
| 257 |
|
| 258 |
+
preg_match('/(?:http(?:s)?:\/\/)?(?:fwd4\.wistia\.com\/(?:medias)\/)([^\?&\"\'<>\s]+)/si', $this->_post->post_content, $match);
|
| 259 |
|
| 260 |
if (isset($match[0])) {
|
| 261 |
$videos[] = array(
|
| 267 |
//return first video found
|
| 268 |
if (!$all && !empty($videos)) return $videos;
|
| 269 |
|
| 270 |
+
preg_match('/class=["|\']([^"\']*wistia_async_([^\?&\"\'<>\s]+)[^"\']*["|\'])/si', $this->_post->post_content, $match);
|
| 271 |
|
| 272 |
if (isset($match[0])) {
|
| 273 |
$videos[] = array(
|
models/domain/Post.php
CHANGED
|
@@ -79,6 +79,11 @@ class SQ_Models_Domain_Post extends SQ_Models_Abstract_Domain {
|
|
| 79 |
if (isset($patterns[$this->_post_type][$key])) {
|
| 80 |
$this->_sq->$key = $patterns[$this->_post_type][$key];
|
| 81 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
} else {
|
| 83 |
//get the default automation
|
| 84 |
if (isset($patterns['custom'][$key])) {
|
| 79 |
if (isset($patterns[$this->_post_type][$key])) {
|
| 80 |
$this->_sq->$key = $patterns[$this->_post_type][$key];
|
| 81 |
}
|
| 82 |
+
} elseif (strpos($this->_post_type, 'archive-') !== false) {
|
| 83 |
+
//get the archive automation for custom archive types
|
| 84 |
+
if (isset($patterns['archive'][$key])) {
|
| 85 |
+
$this->_sq->$key = $patterns['archive'][$key];
|
| 86 |
+
}
|
| 87 |
} else {
|
| 88 |
//get the default automation
|
| 89 |
if (isset($patterns['custom'][$key])) {
|
models/services/JsonLD.php
CHANGED
|
@@ -306,7 +306,6 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
|
|
| 306 |
// Generate structured data for Woocommerce 3+.
|
| 307 |
if ($this->_post->post_type == 'product' || in_array('product', $this->_post->sq->jsonld_types)) {
|
| 308 |
$this->_markups[] = $this->getWoocommerceProductMarkup();
|
| 309 |
-
|
| 310 |
}
|
| 311 |
}
|
| 312 |
}
|
|
@@ -1192,8 +1191,8 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
|
|
| 1192 |
//By default, set the price available for 1 year
|
| 1193 |
$price_valid_until = date('Y-m-d', strtotime('+12 Month'));
|
| 1194 |
if (method_exists($product, 'get_date_on_sale_to') && method_exists($product, 'get_date_on_sale_from')) {
|
| 1195 |
-
if (method_exists($product->get_date_on_sale_from(), 'getTimestamp')) {
|
| 1196 |
-
if (date('Y-m-d', $product->get_date_on_sale_from()->getTimestamp()) <= gmdate('Y-m-d')) {
|
| 1197 |
if (method_exists($product->get_date_on_sale_to(), 'getTimestamp')) {
|
| 1198 |
//Set the price available until the offer ends
|
| 1199 |
$price_valid_until = date('Y-m-d', $product->get_date_on_sale_to()->getTimestamp());
|
|
@@ -1224,12 +1223,14 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
|
|
| 1224 |
if ($product->is_type('variable') && method_exists($product, 'get_variation_prices')) {
|
| 1225 |
$prices = $product->get_variation_prices();
|
| 1226 |
|
| 1227 |
-
$
|
| 1228 |
-
'
|
| 1229 |
-
|
| 1230 |
-
|
| 1231 |
-
|
| 1232 |
-
|
|
|
|
|
|
|
| 1233 |
}
|
| 1234 |
|
| 1235 |
$markup['sku'] = (method_exists($product, 'get_sku')) ? ($product->get_sku() <> '' ? $product->get_sku() : '') : '';
|
|
@@ -1323,7 +1324,7 @@ class SQ_Models_Services_JsonLD extends SQ_Models_Abstract_Seo {
|
|
| 1323 |
'name' => '',
|
| 1324 |
),
|
| 1325 |
'reviewBody' => '',
|
| 1326 |
-
'datePublished' => (method_exists($product, 'get_date_created') && method_exists($product->get_date_created(), 'getTimestamp')) ? date('Y-m-d', $product->get_date_created()->getTimestamp()) : '',
|
| 1327 |
);
|
| 1328 |
}
|
| 1329 |
}
|
| 306 |
// Generate structured data for Woocommerce 3+.
|
| 307 |
if ($this->_post->post_type == 'product' || in_array('product', $this->_post->sq->jsonld_types)) {
|
| 308 |
$this->_markups[] = $this->getWoocommerceProductMarkup();
|
|
|
|
| 309 |
}
|
| 310 |
}
|
| 311 |
}
|
| 1191 |
//By default, set the price available for 1 year
|
| 1192 |
$price_valid_until = date('Y-m-d', strtotime('+12 Month'));
|
| 1193 |
if (method_exists($product, 'get_date_on_sale_to') && method_exists($product, 'get_date_on_sale_from')) {
|
| 1194 |
+
if ($product->get_date_on_sale_from() && method_exists($product->get_date_on_sale_from(), 'getTimestamp')) {
|
| 1195 |
+
if ($product->get_date_on_sale_from() && date('Y-m-d', $product->get_date_on_sale_from()->getTimestamp()) <= gmdate('Y-m-d')) {
|
| 1196 |
if (method_exists($product->get_date_on_sale_to(), 'getTimestamp')) {
|
| 1197 |
//Set the price available until the offer ends
|
| 1198 |
$price_valid_until = date('Y-m-d', $product->get_date_on_sale_to()->getTimestamp());
|
| 1223 |
if ($product->is_type('variable') && method_exists($product, 'get_variation_prices')) {
|
| 1224 |
$prices = $product->get_variation_prices();
|
| 1225 |
|
| 1226 |
+
if (isset($prices['price'])) {
|
| 1227 |
+
$markup_offer['priceSpecification'] = array(
|
| 1228 |
+
'price' => wc_format_decimal($product->get_price(), wc_get_price_decimals()),
|
| 1229 |
+
'minPrice' => wc_format_decimal(current($prices['price']), wc_get_price_decimals()),
|
| 1230 |
+
'maxPrice' => wc_format_decimal(end($prices['price']), wc_get_price_decimals()),
|
| 1231 |
+
'priceCurrency' => $currency,
|
| 1232 |
+
);
|
| 1233 |
+
}
|
| 1234 |
}
|
| 1235 |
|
| 1236 |
$markup['sku'] = (method_exists($product, 'get_sku')) ? ($product->get_sku() <> '' ? $product->get_sku() : '') : '';
|
| 1324 |
'name' => '',
|
| 1325 |
),
|
| 1326 |
'reviewBody' => '',
|
| 1327 |
+
'datePublished' => (method_exists($product, 'get_date_created') && $product->get_date_created() && method_exists($product->get_date_created(), 'getTimestamp')) ? date('Y-m-d', $product->get_date_created()->getTimestamp()) : '',
|
| 1328 |
);
|
| 1329 |
}
|
| 1330 |
}
|
readme.txt
CHANGED
|
@@ -400,6 +400,15 @@ Type a keyword to the right of the screen and start using Squirrly Seo. Enjoy!
|
|
| 400 |
9. Squirrly SEO - Progress & Achievements
|
| 401 |
|
| 402 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 403 |
= 11.1.02- 04/30/2021 =
|
| 404 |
Update - Add the option to import the SEO Snippets from SEO Press (Patterns, SEO METAs, Open Graph, Twitter Card, 301 Redirects, Noindex)
|
| 405 |
Update - Add the option to import the Settings from SEO Press (Social Media, JSON-LD, Webmasters)
|
| 400 |
9. Squirrly SEO - Progress & Achievements
|
| 401 |
|
| 402 |
== Changelog ==
|
| 403 |
+
= 11.1.03- 05/06/2021 =
|
| 404 |
+
Update - Do not track the traffic for Squirrly crawlers
|
| 405 |
+
Update - Add in Dev Kit the options to hide the Research, All Snippets, Live Assistant menu items
|
| 406 |
+
Update - Integrate Focus Pages with the SEO Links domain exception in the Outbound nofollow links report
|
| 407 |
+
Update - Compatibility between Live Assistant & Thrive Architect
|
| 408 |
+
Fix - Add a patch for the Oxygen builder to not show 500 error when editing the templates
|
| 409 |
+
Fix - Web Dev Kit to work with the Wp Mutisite for the custom plugin name
|
| 410 |
+
Fix - Fixed JSON-LD compatibility with the lastest version of WooCommerce
|
| 411 |
+
|
| 412 |
= 11.1.02- 04/30/2021 =
|
| 413 |
Update - Add the option to import the SEO Snippets from SEO Press (Patterns, SEO METAs, Open Graph, Twitter Card, 301 Redirects, Noindex)
|
| 414 |
Update - Add the option to import the Settings from SEO Press (Social Media, JSON-LD, Webmasters)
|
squirrly.php
CHANGED
|
@@ -8,7 +8,7 @@
|
|
| 8 |
* Description: A.I.-based Private SEO Consultant. In a Plugin. Powered by Machine Learning and Cloud Services. Over 300 functionalities for SEO available when you need them.
|
| 9 |
* Author: Squirrly SEO
|
| 10 |
* Author URI: https://plugin.squirrly.co
|
| 11 |
-
* Version: 11.1.
|
| 12 |
* License: GPLv2 or later
|
| 13 |
* License URI: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
| 14 |
* Text Domain: squirrly-seo
|
|
@@ -17,7 +17,7 @@
|
|
| 17 |
|
| 18 |
if (!defined('SQ_VERSION')) {
|
| 19 |
/* SET THE CURRENT VERSION ABOVE AND BELOW */
|
| 20 |
-
define('SQ_VERSION', '11.1.
|
| 21 |
//The last stable version
|
| 22 |
define('SQ_STABLE_VERSION', '11.1.00');
|
| 23 |
// Call config files
|
| 8 |
* Description: A.I.-based Private SEO Consultant. In a Plugin. Powered by Machine Learning and Cloud Services. Over 300 functionalities for SEO available when you need them.
|
| 9 |
* Author: Squirrly SEO
|
| 10 |
* Author URI: https://plugin.squirrly.co
|
| 11 |
+
* Version: 11.1.03
|
| 12 |
* License: GPLv2 or later
|
| 13 |
* License URI: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
| 14 |
* Text Domain: squirrly-seo
|
| 17 |
|
| 18 |
if (!defined('SQ_VERSION')) {
|
| 19 |
/* SET THE CURRENT VERSION ABOVE AND BELOW */
|
| 20 |
+
define('SQ_VERSION', '11.1.03');
|
| 21 |
//The last stable version
|
| 22 |
define('SQ_STABLE_VERSION', '11.1.00');
|
| 23 |
// Call config files
|
view/Audits/Audits.php
CHANGED
|
@@ -58,8 +58,12 @@
|
|
| 58 |
<div class="sq_auditpages_content">
|
| 59 |
<?php
|
| 60 |
$content = $view->getView('Audits/AuditPages');
|
| 61 |
-
|
| 62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
}
|
| 64 |
echo (string)$content;
|
| 65 |
?>
|
| 58 |
<div class="sq_auditpages_content">
|
| 59 |
<?php
|
| 60 |
$content = $view->getView('Audits/AuditPages');
|
| 61 |
+
|
| 62 |
+
//support for international languages
|
| 63 |
+
if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
|
| 64 |
+
if (strpos(get_bloginfo("language"), 'en') === false) {
|
| 65 |
+
$content = iconv('UTF-8', 'UTF-8//IGNORE', $content);
|
| 66 |
+
}
|
| 67 |
}
|
| 68 |
echo (string)$content;
|
| 69 |
?>
|
view/Blocks/Snippet.php
CHANGED
|
@@ -356,7 +356,11 @@ if (SQ_Classes_Helpers_Tools::getOption('sq_use')) {
|
|
| 356 |
<?php echo esc_html__("OG", _SQ_PLUGIN_NAME_) ?>:
|
| 357 |
<?php echo (string)$view->post->sq->og_type ?> |
|
| 358 |
<?php echo esc_html__("JSON-LD", _SQ_PLUGIN_NAME_) ?>:
|
| 359 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
| 360 |
</div>
|
| 361 |
</div>
|
| 362 |
</div>
|
| 356 |
<?php echo esc_html__("OG", _SQ_PLUGIN_NAME_) ?>:
|
| 357 |
<?php echo (string)$view->post->sq->og_type ?> |
|
| 358 |
<?php echo esc_html__("JSON-LD", _SQ_PLUGIN_NAME_) ?>:
|
| 359 |
+
<?php
|
| 360 |
+
if(isset($view->post->sq->jsonld_types) && !empty($view->post->sq->jsonld_types)) {
|
| 361 |
+
echo (string)join(',', $view->post->sq->jsonld_types);
|
| 362 |
+
}
|
| 363 |
+
?>
|
| 364 |
</div>
|
| 365 |
</div>
|
| 366 |
</div>
|
view/FocusPages/Pagelist.php
CHANGED
|
@@ -52,9 +52,14 @@
|
|
| 52 |
<div class="sq_focuspages_content" style="min-height: 150px">
|
| 53 |
<?php
|
| 54 |
$content = $view->getView('FocusPages/FocusPages');
|
| 55 |
-
|
| 56 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
}
|
|
|
|
| 58 |
echo (string)$content;
|
| 59 |
?>
|
| 60 |
</div>
|
| 52 |
<div class="sq_focuspages_content" style="min-height: 150px">
|
| 53 |
<?php
|
| 54 |
$content = $view->getView('FocusPages/FocusPages');
|
| 55 |
+
|
| 56 |
+
//support for international languages
|
| 57 |
+
if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
|
| 58 |
+
if (strpos(get_bloginfo("language"), 'en') === false) {
|
| 59 |
+
$content = iconv('UTF-8', 'UTF-8//IGNORE', $content);
|
| 60 |
+
}
|
| 61 |
}
|
| 62 |
+
|
| 63 |
echo (string)$content;
|
| 64 |
?>
|
| 65 |
</div>
|
view/Goals/CheckSeo.php
CHANGED
|
@@ -104,9 +104,14 @@ $category_name = apply_filters('sq_page', SQ_Classes_Helpers_Tools::getValue('pa
|
|
| 104 |
<?php
|
| 105 |
$view->report = $view->getNotifications();
|
| 106 |
$content = $view->getView('Goals/Goals');
|
| 107 |
-
|
| 108 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 109 |
}
|
|
|
|
| 110 |
echo (string)$content;
|
| 111 |
?>
|
| 112 |
</div>
|
| 104 |
<?php
|
| 105 |
$view->report = $view->getNotifications();
|
| 106 |
$content = $view->getView('Goals/Goals');
|
| 107 |
+
|
| 108 |
+
//support for international languages
|
| 109 |
+
if (function_exists('iconv') && SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support')) {
|
| 110 |
+
if (strpos(get_bloginfo("language"), 'en') === false) {
|
| 111 |
+
$content = iconv('UTF-8', 'UTF-8//IGNORE', $content);
|
| 112 |
+
}
|
| 113 |
}
|
| 114 |
+
|
| 115 |
echo (string)$content;
|
| 116 |
?>
|
| 117 |
</div>
|
view/SeoSettings/Advanced.php
CHANGED
|
@@ -78,6 +78,21 @@
|
|
| 78 |
</div>
|
| 79 |
</div>
|
| 80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 81 |
<div class="sq_separator my-3"></div>
|
| 82 |
|
| 83 |
<div class="col-12 row mb-1 ml-1">
|
| 78 |
</div>
|
| 79 |
</div>
|
| 80 |
|
| 81 |
+
<?php if (strpos(get_bloginfo("language"), 'en') === false) { ?>
|
| 82 |
+
<div class="col-12 row mb-1 ml-1">
|
| 83 |
+
<div class="checker col-12 row my-2 py-1">
|
| 84 |
+
<div class="col-12 p-0 sq-switch sq-switch-sm">
|
| 85 |
+
<input type="hidden" name="sq_non_utf8_support" value="0"/>
|
| 86 |
+
<input type="checkbox" id="sq_non_utf8_support" name="sq_non_utf8_support" class="sq-switch" <?php echo(SQ_Classes_Helpers_Tools::getOption('sq_non_utf8_support') ? 'checked="checked"' : '') ?> value="1"/>
|
| 87 |
+
<label for="sq_non_utf8_support" class="ml-2"><?php echo esc_html__("Multilingual Support", _SQ_PLUGIN_NAME_); ?>
|
| 88 |
+
<a href="https://howto.squirrly.co/kb/advanced-seo-settings/#late_loading_buffer" target="_blank"><i class="fa fa-question-circle m-0 px-2" style="display: inline;"></i></a>
|
| 89 |
+
</label>
|
| 90 |
+
<div class="offset-1 small text-black-50"><?php echo esc_html__("Convert the other encodings to UTF8 and avoid ajax errors.", _SQ_PLUGIN_NAME_); ?></div>
|
| 91 |
+
</div>
|
| 92 |
+
</div>
|
| 93 |
+
</div>
|
| 94 |
+
<?php } ?>
|
| 95 |
+
|
| 96 |
<div class="sq_separator my-3"></div>
|
| 97 |
|
| 98 |
<div class="col-12 row mb-1 ml-1">
|
view/assets/css/post.min.css
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
@import url(https://fonts.googleapis.com/css?family=Open+Sans);@-webkit-keyframes play{0%{background-position:0}to{background-position:-400px}}@-moz-keyframes play{0%{background-position:0}to{background-position:-400px}}@-ms-keyframes play{0%{background-position:0}to{background-position:-400px}}@-o-keyframes play{0%{background-position:0}to{background-position:-400px}}@keyframes play{0%{background-position:0}to{background-position:-400px}}.sq_loading{height:60px;background:url(../img/loading.gif) no-repeat center!important}.sq_minloading:after,.sq_minloading:before{position:absolute!important;right:calc(50% - 10px)!important;top:calc(50% - 8px)!important;display:block!important;float:right!important;line-height:30px!important;content:""!important;padding:0!important;margin:0 0 0 5px!important;height:16px!important;width:20px!important;background:url(../img/minloading.png) no-repeat!important;-webkit-animation:play 1s steps(10) infinite;-moz-animation:play 1s steps(10) infinite;-o-animation:play 1s steps(10) infinite;animation:play 1s steps(10) infinite}#sq_preloading{text-align:center;font-size:15px;line-height:24px;color:gray}.sq_sla_connect_notice{font-size:16px;line-height:24px;font-weight:600;margin:0 auto 10px;text-align:center}.sq_push,.sq_sla_connect_notice_content{text-align:center;margin:6px auto}.sq_sla_connect_notice a{text-decoration:none}.sq_sla_connect_notice_content a img{width:277px}#postsquirrly{background:0 0;border:0;margin:0;padding:2px;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}#postsquirrly .postbox-header{display:none}#postsquirrly *,#sq_blocksnippet *{box-sizing:border-box}#postsquirrly.closed .inside{display:block}.sq_push{position:absolute;top:-7px;left:30px;font-size:10px;margin:0;border:1px solid #333;background-color:#8b0000;border-radius:50px;-webkit-border-radius:50px;-moz-border-radius:50px;padding:0 1px;width:14px;text-shadow:1px 1px #333;color:#fff;font-family:'Megalopolis',Arial,Helvetica,sans-serif}#sq_options_dasboard .sq_push{left:36px}#postsquirrly div.inside,#postsquirrly p,#postsquirrly td,#sq_blocksearch ul,#sq_blockseo ul,#sq_options>ul{margin:0;padding:0}.edit-post-sidebar #sq_options{display:none}#postsquirrly .handlediv,#postsquirrly .hndle{background:gray;opacity:0;height:1px;line-height:0}#postsquirrly .sq_header{color:#a0a0a0;font-size:14px;font-weight:400;padding:5px 7px;margin:0;line-height:20px;border-bottom:1px dashed #d1d1d1}#postsquirrly .sq_box{background-color:#fff;margin-bottom:15px;border:1px solid #ccd0d4}#normal-sortables #postsquirrly .sq_box{max-width:490px;margin:auto}#postsquirrly.sq_sticky{position:fixed!important;z-index:90000!important;right:3px;bottom:0;top:auto;height:136px;width:285px!important;padding:1px!important;background:#fff!important;overflow-x:auto!important;box-shadow:0 0 10px 0 #555!important}#postsquirrly.sq_sticky::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#f5f5f5}#postsquirrly.sq_sticky::-webkit-scrollbar{width:7px;background-color:#f5f5f5}#postsquirrly.sq_sticky::-webkit-scrollbar-thumb{background-color:#bdafba;border:0}#postsquirrly.sq_sticky .hndle,#postsquirrly.sq_sticky.minimized #sq_briefcase_list,#postsquirrly.sq_sticky.minimized #sq_briefcase_topcontent{display:none!important}#postsquirrly.sq_sticky .sq_header{cursor:move}#postsquirrly .sq_box_close,#postsquirrly .sq_box_maximize,#postsquirrly .sq_box_minimize{display:block;float:right;margin:0;cursor:pointer;font-family:Arial,sans-serif;font-weight:400;font-size:17px;color:gray;padding:0 0 0 10px;height:22px}#postsquirrly.sq_sticky.minimized{height:95px!important;overflow:hidden!important}#postsquirrly .inside{position:relative;height:100%}#postsquirrly .sq_box.sq_sticky{position:fixed;top:32px;z-index:99999;height:100%;max-width:291px;overflow-x:auto}#postsquirrly.sq_sticky .sq_box.sq_sticky{position:absolute;top:0;bottom:0;height:100%;margin:0}#postsquirrly .sq_box.sq_sticky>div{margin-bottom:25px}#postsquirrly .sq_box:hover:before{opacity:.8}#postsquirrly .sq_box:hover .sq_header{color:#444}#sq_blocklogin{background-color:#ffffe0}#sq_blocklogin input,#sq_blocklogin textarea{font-family:Arial,Helvetica,sans-serif;font-size:14px;height:30px;padding:6px}#postsquirrly .sq_button,#sq_blocklogin #sq_login{cursor:pointer;background-color:#589ee4;color:#fff;border:0}#postsquirrly .sq_button{display:block;text-decoration:none;line-height:30px;font-weight:700;margin:0;padding:0 15px;border-radius:0;vertical-align:top}#sq_blocklogin #sq_login{min-width:100px;min-height:35px;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px}#sq_blocklogin label{margin-top:0;margin-right:2px;width:72px;display:inline-block}#sq_blocklogin ul li{position:relative;font-family:"Lucida Grande",Arial,Helvetica,sans-serif;font-size:12px;padding:4px 0 4px 5px;margin:5px 0;line-height:16px;text-shadow:1px 1px #fff;text-align:center}#postsquirrly .sq_button,#sq_blocklogin .sq_info{font-size:13px;text-align:center}#sq_blocklogin .sq_error{font-size:12px;text-align:center;color:red;margin:5px auto}#sq_blocklogin #sq_register{margin:5px 0;font-size:16px;font-weight:700}#sq_blocklogin #sq_register_wait{display:inline-block;margin-left:2px}#sq_blocklogin #sq_autologin{padding:20px 10px 5px}#sq_blocklogin #sq_autologin #sq_loginimage{display:block;background-color:#589ee4;height:auto;width:100px;font-size:15px;color:#fff;font-weight:700;margin:13px;padding:10px 0;text-decoration:none;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;cursor:pointer}#sq_blocklogin #sq_register_email{text-align:center;width:250px;height:45px;margin:14px auto 11px}#sq_blocklogin #sq_register_email #sq_email{width:160px!important;border:2px solid #589ee4}#sq_blocklogin #sq_signin{color:#11a5c1;margin:5px;cursor:pointer}#sq_options,#sq_options>ul>li{position:relative;float:right;padding:0}#sq_options{height:40px;margin:0;z-index:13}#side-sortables #sq_options{z-index:1003}#postsquirrly #sq_options{float:none;background:0 0;border:0;box-shadow:none}#normal-sortables #postsquirrly #sq_options{display:flex;width:280px;margin:10px auto}#sq_options>ul>li{font-family:"Open Sans",Arial,sans-serif!important;width:102px;color:#444;font-size:14px;margin:0 auto;cursor:pointer}#sq_options li#sq_options_support{margin-left:11px;width:105px}#sq_options_dasboard .sq_text a,#sq_options_support .sq_text{display:block;float:left;font-family:"Open Sans",Arial,sans-serif!important;font-size:12px;color:#333;text-decoration:none;padding:3px 5px;border:1px solid #ccc;border-radius:5px;background:#fff;background:-moz-linear-gradient(top,#fff,#f5f5f5);background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f5f5f5))}#sq_options .sq_icon{display:block;float:left;background:url(../img/sprite.png) no-repeat;margin:-8px 5px 0 3px}#sq_options>ul>li#sq_options_feedback{width:38px;margin-left:2px}#sq_options_feedback .sq_label_feedback_smiley{display:block;height:37px;width:37px;margin:5px auto;background:url(../img/sprite.png) no-repeat;border:0;cursor:pointer}#sq_options_feedback .sq_feedback_smiley{display:none}#sq_options_feedback .sq_label_feedback_0{background-position:-102px -154px!important}#sq_options_feedback .sq_label_feedback_1{background-position:-148px -154px!important}#sq_options_feedback .sq_label_feedback_2{background-position:-194px -154px!important}#sq_options_feedback .sq_label_feedback_3{background-position:-240px -154px!important}#sq_options_feedback .sq_label_feedback_4{background-position:-284px -154px!important}#sq_options_feedback .sq_icon{height:37px;width:35px;background-position:-194px -154px}#sq_options_support .sq_icon{height:37px;width:30px;background-position:-5px -154px}#sq_options_dasboard .sq_icon{height:39px;width:40px;background-position:-40px -154px}#sq_options_feedback .sq_options_feedback_popup,#sq_options_support .sq_options_support_popup{display:table;min-width:345px;position:absolute;z-index:12;background-color:#fff;padding:5px;margin-top:0;top:33px;border:1px solid #ccc;border-radius:0 7px 7px 7px;-moz-border-radius:0 7px 7px 7px;-webkit-border-radius:0 7px 7px 7px;box-shadow:1px 4px 6px -1px #888;-moz-box-shadow:1px 4px 6px -1px #888;-webkit-box-shadow:1px 4px 6px -1px #888;cursor:default}#side-sortables #sq_options_feedback .sq_options_feedback_popup,#side-sortables #sq_options_support .sq_options_support_popup{z-index:1002}#sq_options_support .sq_options_support_popup{right:0}#sq_options_feedback .sq_options_feedback_popup{left:-101px}#sq_options_feedback table td{text-align:center;color:#999;min-width:50px;height:70px}#sq_options_feedback .sq_options_feedback_popup li,#sq_options_support .sq_options_support_popup li{color:#333;line-height:16px;font-size:13px;font-weight:400;margin:0;padding:3px 5px}#sq_options_feedback #sq_options_feedback_error,#sq_options_support #sq_options_support_error{margin:6px 0}#sq_options_feedback .sq_small_input{width:100%;height:70px}#sq_options_support .sq_small_input{width:100%}#sq_options_feedback .sq_options_feedback_popup #sq_feedback_submit,#sq_options_support .sq_options_support_popup #sq_support_submit{background-color:#589ee4;font-size:12px;font-weight:700;color:#fff;width:100px;margin:10px auto 5px;padding:5px;position:relative;text-shadow:1px 1px #555;border:0;cursor:pointer}#sq_options_feedback #sq_options_feedback_close,#sq_options_support #sq_options_close{position:absolute;right:8px;top:3px;font-size:13px;font-weight:700;color:#999;width:8px;line-height:16px;padding:0 5px 3px;border-radius:10px;cursor:pointer;z-index:2}#sq_options_feedback .sq_options_feedback_popup li{clear:both}#sq_facebook_b{padding:6px 50px;clear:both;display:table}#sq_facebook_b>span{display:block;float:left;font-weight:700;color:#006400}#sq_facebook_b .sq_facebook_title{width:100%;font-size:16px;text-align:center;margin:5px auto}#sq_facebook_b .sq_facebook_image{width:100px;margin:3px 7px 5px 24px}#sq_facebook_b .sq_facebook_image img{width:100px}#sq_facebook_b .sq_facebook_frame{margin-top:35px}#postsquirrly.sq_frontend .sq_frontend_noapi{font-size:16px;line-height:24px;font-weight:600;margin:0 auto 10px;text-align:center}#postsquirrly .sq_frontend_noapi_inner{text-align:center;margin:6px auto}#postsquirrly .sq_frontend_noapi_inner img{width:277px}#postsquirrly .sq_frontend_noapi a{text-decoration:none}@media (min-width:1024px){body.admin-bar #sq_modal_overlay{height:calc(100vh - 32px)}}#sq_liveassistant #sq_modal_overlay{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.5);z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#sq_liveassistant #sq_modal{width:550px;left:calc(50% - 250px);top:50px;background-color:#fff;position:fixed;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden;z-index:10000}#sq_liveassistant #sq_modal #sq_modal_header{padding:18px 15px;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);text-align:left}#sq_liveassistant #sq_modal #sq_modal_header_title{font-size:18px;font-weight:700}#sq_liveassistant #sq_modal #sq_modal_header .sq_logo{vertical-align:top!important;margin:2px}#sq_liveassistant #sq_modal #sq_modal_body{padding:30px 30px 0;text-align:left;min-height:150px}#sq_liveassistant #sq_modal #sq_modal_body h4{font-size:16px;padding:0 0 15px;margin:0}#sq_liveassistant #sq_modal .sq_modal_body_buttons_wrapper{border-top:none;text-align:left;padding:20px 30px 10px 0;overflow:hidden}#sq_liveassistant #sq_modal .sq_modal_body_submit{background-color:#1e933d;border:0;color:#fff;line-height:1;padding:12px 20px;font-size:14px;width:200px;height:38px;cursor:pointer}#sq_liveassistant #sq_modal .sq_modal_body_options_wrapper{padding:20px 0}.sq_minloading{position:relative;opacity:.5}#postsquirrly.sq_frontend #sq_options{display:none}#postsquirrly.sq_frontend ul,#postsquirrly.sq_frontend ul li{list-style:none!important}
|
| 1 |
+
@import url(https://fonts.googleapis.com/css?family=Open+Sans);@-webkit-keyframes play{0%{background-position:0}to{background-position:-400px}}@-moz-keyframes play{0%{background-position:0}to{background-position:-400px}}@-ms-keyframes play{0%{background-position:0}to{background-position:-400px}}@-o-keyframes play{0%{background-position:0}to{background-position:-400px}}@keyframes play{0%{background-position:0}to{background-position:-400px}}.sq_loading{height:60px;background:url(../img/loading.gif) no-repeat center!important}.sq_minloading:after,.sq_minloading:before{position:absolute!important;right:calc(50% - 10px)!important;top:calc(50% - 8px)!important;display:block!important;float:right!important;line-height:30px!important;content:""!important;padding:0!important;margin:0 0 0 5px!important;height:16px!important;width:20px!important;background:url(../img/minloading.png) no-repeat!important;-webkit-animation:play 1s steps(10) infinite;-moz-animation:play 1s steps(10) infinite;-o-animation:play 1s steps(10) infinite;animation:play 1s steps(10) infinite}#sq_preloading{text-align:center;font-size:15px;line-height:24px;color:gray}.sq_sla_connect_notice{font-size:16px;line-height:24px;font-weight:600;margin:0 auto 10px;text-align:center}.sq_sla_connect_notice_content{text-align:center;margin:6px auto}.sq_sla_connect_notice a{text-decoration:none}.sq_sla_connect_notice_content a img{width:277px}#postsquirrly{background:0 0;border:0;margin:0;padding:2px;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}#postsquirrly .postbox-header{display:none}#postsquirrly *,#sq_blocksnippet *{box-sizing:border-box}#sq_blocksnippet:not(.closed) .inside{display:block!important}#sq_blocksnippet.closed .inside{display:none!important}#postsquirrly.closed .inside{display:block}.sq_push{position:absolute;top:-7px;left:30px;font-size:10px;margin:0;border:1px solid #333;background-color:#8b0000;border-radius:50px;-webkit-border-radius:50px;-moz-border-radius:50px;padding:0 1px;width:14px;text-shadow:1px 1px #333;color:#fff;font-family:'Megalopolis',Arial,Helvetica,sans-serif;text-align:center}#sq_options_dasboard .sq_push{left:36px}#postsquirrly div.inside,#postsquirrly p,#postsquirrly td,#sq_blocksearch ul,#sq_blockseo ul,#sq_options>ul{margin:0;padding:0}.edit-post-sidebar #sq_options{display:none}#postsquirrly .handlediv,#postsquirrly .hndle{background:gray;opacity:0;height:1px;line-height:0}#postsquirrly .sq_header{color:#a0a0a0;font-size:14px;font-weight:400;padding:5px 7px;margin:0;line-height:20px;border-bottom:1px dashed #d1d1d1}#postsquirrly .sq_box{background-color:#fff;margin-bottom:15px;border:1px solid #ccd0d4}#normal-sortables #postsquirrly .sq_box{max-width:490px;margin:auto}#postsquirrly.sq_sticky{position:fixed!important;z-index:90000!important;right:3px;bottom:0;top:auto;height:136px;width:285px!important;padding:1px!important;background:#fff!important;overflow-x:auto!important;box-shadow:0 0 10px 0 #555!important}#postsquirrly.sq_sticky::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#f5f5f5}#postsquirrly.sq_sticky::-webkit-scrollbar{width:7px;background-color:#f5f5f5}#postsquirrly.sq_sticky::-webkit-scrollbar-thumb{background-color:#bdafba;border:0}#postsquirrly.sq_sticky .hndle,#postsquirrly.sq_sticky.minimized #sq_briefcase_list,#postsquirrly.sq_sticky.minimized #sq_briefcase_topcontent{display:none!important}#postsquirrly.sq_sticky .sq_header{cursor:move}#postsquirrly .sq_box_close,#postsquirrly .sq_box_maximize,#postsquirrly .sq_box_minimize{display:block;float:right;margin:0;cursor:pointer;font-family:Arial,sans-serif;font-weight:400;font-size:17px;color:gray;padding:0 0 0 10px;height:22px}#postsquirrly.sq_sticky.minimized{height:95px!important;overflow:hidden!important}#postsquirrly .inside{position:relative;height:100%}#postsquirrly .sq_box.sq_sticky{position:fixed;top:32px;z-index:99999;height:100%;max-width:291px;overflow-x:auto}#postsquirrly.sq_sticky .sq_box.sq_sticky{position:absolute;top:0;bottom:0;height:100%;margin:0}#postsquirrly .sq_box.sq_sticky>div{margin-bottom:25px}#postsquirrly .sq_box:hover:before{opacity:.8}#postsquirrly .sq_box:hover .sq_header{color:#444}#sq_blocklogin{background-color:#ffffe0}#sq_blocklogin input,#sq_blocklogin textarea{font-family:Arial,Helvetica,sans-serif;font-size:14px;height:30px;padding:6px}#postsquirrly .sq_button,#sq_blocklogin #sq_login{cursor:pointer;background-color:#589ee4;color:#fff;border:0}#postsquirrly .sq_button{display:block;text-decoration:none;line-height:30px;font-weight:700;margin:0;padding:0 15px;border-radius:0;vertical-align:top}#sq_blocklogin #sq_login{min-width:100px;min-height:35px;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px}#sq_blocklogin label{margin-top:0;margin-right:2px;width:72px;display:inline-block}#sq_blocklogin ul li{position:relative;font-family:"Lucida Grande",Arial,Helvetica,sans-serif;font-size:12px;padding:4px 0 4px 5px;margin:5px 0;line-height:16px;text-shadow:1px 1px #fff;text-align:center}#postsquirrly .sq_button,#sq_blocklogin .sq_info{font-size:13px;text-align:center}#sq_blocklogin .sq_error{font-size:12px;text-align:center;color:red;margin:5px auto}#sq_blocklogin #sq_register{margin:5px 0;font-size:16px;font-weight:700}#sq_blocklogin #sq_register_wait{display:inline-block;margin-left:2px}#sq_blocklogin #sq_autologin{padding:20px 10px 5px}#sq_blocklogin #sq_autologin #sq_loginimage{display:block;background-color:#589ee4;height:auto;width:100px;font-size:15px;color:#fff;font-weight:700;margin:13px;padding:10px 0;text-decoration:none;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;cursor:pointer}#sq_blocklogin #sq_register_email{text-align:center;width:250px;height:45px;margin:14px auto 11px}#sq_blocklogin #sq_register_email #sq_email{width:160px!important;border:2px solid #589ee4}#sq_blocklogin #sq_signin{color:#11a5c1;margin:5px;cursor:pointer}#sq_options,#sq_options>ul>li{position:relative;float:right;padding:0}#sq_options{height:40px;margin:0;z-index:13}#side-sortables #sq_options{z-index:1003}#postsquirrly #sq_options{float:none;background:0 0;border:0;box-shadow:none}#normal-sortables #postsquirrly #sq_options{display:flex;width:280px;margin:10px auto}#sq_options>ul>li{font-family:"Open Sans",Arial,sans-serif!important;width:102px;color:#444;font-size:14px;margin:0 auto;cursor:pointer}#sq_options li#sq_options_support{margin-left:11px;width:105px}#sq_options_dasboard .sq_text a,#sq_options_support .sq_text{display:block;float:left;font-family:"Open Sans",Arial,sans-serif!important;font-size:12px;color:#333;text-decoration:none;padding:3px 5px;border:1px solid #ccc;border-radius:5px;background:#fff;background:-moz-linear-gradient(top,#fff,#f5f5f5);background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f5f5f5))}#sq_options .sq_icon{display:block;float:left;background:url(../img/sprite.png) no-repeat;margin:-8px 5px 0 3px}#sq_options>ul>li#sq_options_feedback{width:38px;margin-left:2px}#sq_options_feedback .sq_label_feedback_smiley{display:block;height:37px;width:37px;margin:5px auto;background:url(../img/sprite.png) no-repeat;border:0;cursor:pointer}#sq_options_feedback .sq_feedback_smiley{display:none}#sq_options_feedback .sq_label_feedback_0{background-position:-102px -154px!important}#sq_options_feedback .sq_label_feedback_1{background-position:-148px -154px!important}#sq_options_feedback .sq_label_feedback_2{background-position:-194px -154px!important}#sq_options_feedback .sq_label_feedback_3{background-position:-240px -154px!important}#sq_options_feedback .sq_label_feedback_4{background-position:-284px -154px!important}#sq_options_feedback .sq_icon{height:37px;width:35px;background-position:-194px -154px}#sq_options_support .sq_icon{height:37px;width:30px;background-position:-5px -154px}#sq_options_dasboard .sq_icon{height:39px;width:40px;background-position:-40px -154px}#sq_options_feedback .sq_options_feedback_popup,#sq_options_support .sq_options_support_popup{display:table;min-width:345px;position:absolute;z-index:12;background-color:#fff;padding:5px;margin-top:0;top:33px;border:1px solid #ccc;border-radius:0 7px 7px 7px;-moz-border-radius:0 7px 7px 7px;-webkit-border-radius:0 7px 7px 7px;box-shadow:1px 4px 6px -1px #888;-moz-box-shadow:1px 4px 6px -1px #888;-webkit-box-shadow:1px 4px 6px -1px #888;cursor:default}#side-sortables #sq_options_feedback .sq_options_feedback_popup,#side-sortables #sq_options_support .sq_options_support_popup{z-index:1002}#sq_options_support .sq_options_support_popup{right:0}#sq_options_feedback .sq_options_feedback_popup{left:-101px}#sq_options_feedback table td{text-align:center;color:#999;min-width:50px;height:70px}#sq_options_feedback .sq_options_feedback_popup li,#sq_options_support .sq_options_support_popup li{color:#333;line-height:16px;font-size:13px;font-weight:400;margin:0;padding:3px 5px}#sq_options_feedback #sq_options_feedback_error,#sq_options_support #sq_options_support_error{margin:6px 0}#sq_options_feedback .sq_small_input{width:100%;height:70px}#sq_options_support .sq_small_input{width:100%}#sq_options_feedback .sq_options_feedback_popup #sq_feedback_submit,#sq_options_support .sq_options_support_popup #sq_support_submit{background-color:#589ee4;font-size:12px;font-weight:700;color:#fff;width:100px;margin:10px auto 5px;padding:5px;position:relative;text-shadow:1px 1px #555;border:0;cursor:pointer}#sq_options_feedback #sq_options_feedback_close,#sq_options_support #sq_options_close{position:absolute;right:8px;top:3px;font-size:13px;font-weight:700;color:#999;width:8px;line-height:16px;padding:0 5px 3px;border-radius:10px;cursor:pointer;z-index:2}#sq_options_feedback .sq_options_feedback_popup li{clear:both}#sq_facebook_b{padding:6px 50px;clear:both;display:table}#sq_facebook_b>span{display:block;float:left;font-weight:700;color:#006400}#sq_facebook_b .sq_facebook_title{width:100%;font-size:16px;text-align:center;margin:5px auto}#sq_facebook_b .sq_facebook_image{width:100px;margin:3px 7px 5px 24px}#sq_facebook_b .sq_facebook_image img{width:100px}#sq_facebook_b .sq_facebook_frame{margin-top:35px}#postsquirrly.sq_frontend .sq_frontend_noapi{font-size:16px;line-height:24px;font-weight:600;margin:0 auto 10px;text-align:center}#postsquirrly .sq_frontend_noapi_inner{text-align:center;margin:6px auto}#postsquirrly .sq_frontend_noapi_inner img{width:277px}#postsquirrly .sq_frontend_noapi a{text-decoration:none}@media (min-width:1024px){body.admin-bar #sq_modal_overlay{height:calc(100vh - 32px)}}#sq_liveassistant #sq_modal_overlay{position:fixed;height:100%;width:100%;bottom:0;left:0;background-color:rgba(0,0,0,.5);z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#sq_liveassistant #sq_modal{width:550px;left:calc(50% - 250px);top:50px;background-color:#fff;position:fixed;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);box-shadow:2px 8px 23px 3px rgba(0,0,0,.2);overflow:hidden;z-index:10000}#sq_liveassistant #sq_modal #sq_modal_header{padding:18px 15px;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);text-align:left}#sq_liveassistant #sq_modal #sq_modal_header_title{font-size:18px;font-weight:700}#sq_liveassistant #sq_modal #sq_modal_header .sq_logo{vertical-align:top!important;margin:2px}#sq_liveassistant #sq_modal #sq_modal_body{padding:30px 30px 0;text-align:left;min-height:150px}#sq_liveassistant #sq_modal #sq_modal_body h4{font-size:16px;padding:0 0 15px;margin:0}#sq_liveassistant #sq_modal .sq_modal_body_buttons_wrapper{border-top:none;text-align:left;padding:20px 30px 10px 0;overflow:hidden}#sq_liveassistant #sq_modal .sq_modal_body_submit{background-color:#1e933d;border:0;color:#fff;line-height:1;padding:12px 20px;font-size:14px;width:200px;height:38px;cursor:pointer}#sq_liveassistant #sq_modal .sq_modal_body_options_wrapper{padding:20px 0}.sq_minloading{position:relative;opacity:.5}#postsquirrly.sq_frontend #sq_options{display:none}#postsquirrly.sq_frontend ul,#postsquirrly.sq_frontend ul li{list-style:none!important}
|
