e8801477 by Jeff Balicki

plugin updates

Signed-off-by: Jeff <jeff@gotenzing.com>
1 parent 0cd79ae5
......@@ -5,7 +5,7 @@ Plugin URI: http://www.nsp-code.com
Description: Posts Order and Post Types Objects Order using a Drag and Drop Sortable javascript capability
Author: Nsp Code
Author URI: http://www.nsp-code.com
Version: 2.1
Version: 2.1.1
Text Domain: post-types-order
Domain Path: /languages/
*/
......
......@@ -3,8 +3,8 @@ Contributors: nsp-code, tdgu
Donate link: http://www.nsp-code.com/donate.php
Tags: post order, posts order, sort, post sort, posts sort, post type order, custom order, admin posts order
Requires at least: 2.8
Tested up to: 6.3
Stable tag: 2.1
Tested up to: 6.4.1
Stable tag: 2.1.1
Sort Posts and custom Post Type Objects (custom post types) using a Drag and Drop Sortable JavaScript AJAX interface or default WordPress dashboard.
......@@ -94,6 +94,9 @@ Consider upgrading to our advanced version of this plugin at a very resonable pr
== Change Log ==
= 2.1.1 =
- WordPress 6.4.1 compatibility check and tag
= 2.1 =
- Trigger wp_cache_flush when saving the order to clear the internal caches
- WordPress 6.3 compatibility check and tag
......
......@@ -2,15 +2,15 @@ import MixPanel from "../mixpanel";
class ProductAnalytics {
init() {
this.trackUltraModal();
this.trackUltraLinks();
}
trackUltraModal() {
const ultraModals = document.querySelectorAll( '.wp-smush-ultra-compression-modal' );
if ( ! ultraModals ) {
trackUltraLinks() {
const ultraUpsellLinks = document.querySelectorAll( '.wp-smush-upsell-ultra-compression' );
if ( ! ultraUpsellLinks ) {
return;
}
const getLocation = ( modalId ) => {
const getLocation = ( ultraLink ) => {
const locations = {
'settings': 'bulksmush_settings',
'dashboard': 'dash_summary',
......@@ -20,44 +20,18 @@ class ProductAnalytics {
'cdn': 'cdn_summary',
'webp': 'webp_summary',
};
const locationId = modalId.includes( '__settings' ) ? 'settings' : this.getCurrentPageSlug();
const locationId = ultraLink.classList.contains( 'wp-smush-ultra-compression-link' ) ? 'settings' : this.getCurrentPageSlug();
return locations[locationId] || 'bulksmush_settings';
}
ultraModals.forEach( ( modal ) => {
ultraUpsellLinks.forEach( ( ultraLink ) => {
const eventName = 'ultra_upsell_modal';
let modalAction;
let location;
modal.addEventListener( 'click', (e) => {
if ( 'A' !== e.target?.nodeName ) {
return;
}
const action = e.target.dataset?.action;
const actions = {
'upgrade': 'cta_clicked',
'connect_dash': 'connect_dash',
}
modalAction = actions[action] || 'connect_site';
ultraLink.addEventListener( 'click', (e) => {
MixPanel.getInstance().track( eventName, {
'Location': location,
'Modal Action': modalAction,
'Location': getLocation( e.target ),
'Modal Action': 'direct_cta',
});
});
modal.addEventListener( 'close', (e) => {
setTimeout( () => {
if ( modalAction && 'closed' !== modalAction ) {
return;
}
modalAction = 'closed';
MixPanel.getInstance().track( eventName, {
'Location': location || getLocation( e.target.id ),
'Modal Action': modalAction,
});
}, 1000);
} );
});
}
......
......@@ -6,9 +6,17 @@
.sui-wrap .smush-upsell-link,
.sui-wrap a.smush-upsell-link {
color: $purple;
> span:before {
color: $purple;
}
&:hover:not(.sui-button),
&:focus:not(.sui-button),
&:active:not(.sui-button) { color: #64007e; }
&:active:not(.sui-button) {
color: #64007e;
> span:before {
color: #64007e;
}
}
}
/**
......
......@@ -1139,114 +1139,17 @@
}
}
.wp-smush-ultra-compression-modal {
@media screen and (min-width: 782px) {
max-width: 660px !important;
.wp-smush-ultra-compression-link {
background-color: #F1E7FF!important;
color: $purple!important;
span:before {
color: $purple;
}
.sui-box-body {
.sui-description {
margin-top: 8px!important;
margin-bottom: 30px!important;
}
.smush-footer-link {
font-size: 13px;
line-height: 21px;
}
}
.sui-box-footer {
flex-direction: column;
}
.sui-box-footer {
.sui-box-title {
font-size: 13px;
font-weight: 500;
width:100%;
margin-bottom: 11px;
// padding-left: 7px;
}
.wp-smush-pro-features {
display: flex;
ul {
font-size: 12px;
margin:0;
padding:0;
li {
display: flex;
flex-direction: column;
.wp-smush-pro-features_item {
display: flex;
align-self: stretch;
align-items: flex-start;
width: 100%;
gap: 10px;
margin-bottom: 7px;
// padding-left: 7px;
.sui-icon-box{
display: block;
border-radius: 6px;
padding:3px;
border: 1px solid #ddd;
justify-content: center;
>span{
width:20px;
height: 20px;
justify-content: center;
align-items: center;
display: flex;
}
}
.sui-content-box {
margin:0;
h5 {
line-height: 16px;
margin:0 0 3px 0;
font-weight: 600;
font-size: inherit;
display: flex;
align-self: stretch;
letter-spacing: 0;
}
p {
margin:0;
font-size: 12px;
line-height: 20px;
}
}
}
@media screen and (min-width: 480px) {
flex-direction: row;
.wp-smush-pro-features_item {
width: 50%;
&:last-child{
padding-left: 7px;
}
}
}
}
}
}
> p {
--purple: #8D00B1;
width:100%;
margin-top: 16px;
.sui-button-ghost {
font-size: 13px;
display: block;
color: var( --purple );
background-color: #F8F8F8;
text-align: center;
padding: 7px 12px;
transition: all 0.3s ease;
line-height: 22px;
span {
&:before {
color: var( --purple );
}
}
&:hover{
text-decoration: underline;
}
}
&:hover {
color: #64007e!important;
span:before {
color: #64007e;
}
}
}
......
This diff could not be displayed because it is too large.
.sui-smush-media .sui-tooltip{position:relative}.sui-smush-media .sui-tooltip:before,.sui-smush-media .sui-tooltip:after{content:" ";opacity:0;backface-visibility:hidden;pointer-events:none;position:absolute;z-index:9990;transition:.2s}.sui-smush-media .sui-tooltip:before{left:50%;bottom:100%;border:5px solid rgba(0,0,0,0);border-top-color:#333;transform:translateX(-50%)}.sui-smush-media .sui-tooltip:after{content:attr(data-tooltip);min-width:var(--tooltip-width, 40px);left:50%;bottom:100%;margin-bottom:10px;padding:8px 12px;border-radius:4px;background-color:#333;box-sizing:border-box;transform:translateX(-50%);color:#fff;font:500 12px/18px "Roboto",Arial,sans-serif;letter-spacing:-0.25px;text-transform:none;text-align:var(--tooltip-text-align, center)}@media(min-width: 783px){.sui-smush-media .sui-tooltip:after{white-space:nowrap}}.sui-smush-media .sui-tooltip.sui-tooltip-constrained:after{min-width:var(--tooltip-width, 240px);white-space:normal}.sui-smush-media .sui-tooltip.sui-tooltip-top-left:after{left:0;transform:translateX(0)}.sui-smush-media .sui-tooltip.sui-tooltip-top-right:after{right:0;left:unset;transform:translateX(0)}.sui-smush-media .sui-tooltip.sui-tooltip-bottom:before,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-left:before,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-right:before{top:100%;bottom:unset;border-top-color:rgba(0,0,0,0);border-bottom-color:#333}.sui-smush-media .sui-tooltip.sui-tooltip-bottom:after,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-left:after,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-right:after{top:100%;bottom:unset;margin-top:10px;margin-bottom:0}.sui-smush-media .sui-tooltip.sui-tooltip-bottom-left:after{left:0;transform:translate(0)}.sui-smush-media .sui-tooltip.sui-tooltip-bottom-right:after{left:unset;right:0;transform:translate(0)}.sui-smush-media .sui-tooltip.sui-tooltip-left:before{top:50%;right:100%;bottom:unset;left:unset;border-top-color:rgba(0,0,0,0);border-left-color:#333;transform:translateY(-50%)}.sui-smush-media .sui-tooltip.sui-tooltip-left:after{top:50%;right:100%;bottom:unset;left:unset;margin-right:10px;margin-bottom:0;transform:translateY(-50%)}.sui-smush-media .sui-tooltip.sui-tooltip-right:before{top:50%;bottom:unset;left:100%;border-top-color:rgba(0,0,0,0);border-right-color:#333;transform:translateY(-50%)}.sui-smush-media .sui-tooltip.sui-tooltip-right:after{top:50%;bottom:unset;left:100%;margin-left:10px;margin-bottom:0;transform:translateY(-50%)}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-mobile:after{min-width:var(--tooltip-width-mobile, 120px);white-space:normal}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-top-mobile:before,.sui-smush-media .sui-tooltip.sui-tooltip-top-left-mobile:before,.sui-smush-media .sui-tooltip.sui-tooltip-top-right-mobile:before{top:unset;bottom:100%;left:50%;right:unset;border-top-color:#333;border-right-color:rgba(0,0,0,0);border-bottom-color:rgba(0,0,0,0);border-left-color:rgba(0,0,0,0);transform:translateX(-50%)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-top-mobile:after,.sui-smush-media .sui-tooltip.sui-tooltip-top-left-mobile:after,.sui-smush-media .sui-tooltip.sui-tooltip-top-right-mobile:after{min-width:var(--tooltip-width-mobile, 120px);top:unset;bottom:100%;margin-top:0;margin-right:0;margin-bottom:10px;margin-left:0;white-space:normal}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-top-mobile:after{right:unset;left:50%;transform:translateX(-50%)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-top-left-mobile:after{right:unset;left:0;transform:translateX(0)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-top-right-mobile:after{right:0;left:unset;transform:translateX(0)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-bottom-mobile:before,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-left-mobile:before,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-right-mobile:before{top:100%;bottom:unset;left:50%;right:unset;border-top-color:rgba(0,0,0,0);border-right-color:rgba(0,0,0,0);border-bottom-color:#333;border-left-color:rgba(0,0,0,0);transform:translateX(-50%)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-bottom-mobile:after,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-left-mobile:after,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-right-mobile:after{min-width:var(--tooltip-width-mobile, 120px);top:100%;bottom:unset;margin-top:10px;margin-right:0;margin-bottom:0;margin-left:0;white-space:normal}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-bottom-mobile:after{right:unset;left:50%;transform:translateX(-50%)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-bottom-left-mobile:after{right:unset;left:0;transform:translateX(0)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-bottom-right-mobile:after{right:0;left:unset;transform:translateX(0)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-left-mobile:before{top:50%;right:100%;bottom:unset;left:unset;border-top-color:rgba(0,0,0,0);border-right-color:rgba(0,0,0,0);border-bottom-color:rgba(0,0,0,0);border-left-color:#333;transform:translateY(-50%)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-left-mobile:after{min-width:var(--tooltip-width-mobile, 120px);top:50%;right:100%;bottom:unset;left:unset;margin-top:0;margin-right:10px;margin-bottom:0;margin-left:0;transform:translateY(-50%);white-space:normal}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-right-mobile:before{top:50%;right:unset;bottom:unset;left:100%;border-top-color:rgba(0,0,0,0);border-right-color:#333;border-bottom-color:rgba(0,0,0,0);border-left-color:rgba(0,0,0,0);transform:translateY(-50%)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-right-mobile:after{min-width:var(--tooltip-width-mobile, 120px);top:50%;right:unset;bottom:unset;left:100%;margin-top:0;margin-right:0;margin-bottom:0;margin-left:10px;transform:translateY(-50%);white-space:normal}}.sui-smush-media .sui-tooltip:hover:before,.sui-smush-media .sui-tooltip:hover:after,.sui-smush-media .sui-tooltip:focus:before,.sui-smush-media .sui-tooltip:focus:after{opacity:1;backface-visibility:visible}.manage-column.column-smushit{width:260px}.sui-smush-media .button{margin-right:5px}.sui-smush-media .button:last-of-type{margin-right:0}#ngg-listimages .spinner,.column-smushit .spinner{float:none}#ngg-listimages .spinner.visible,.column-smushit .spinner.visible{visibility:visible}.smush-status-links .smush-upgrade-link{color:#8d00b1;font-size:12px}.smush-status-links .smush-ignore-utm,.smush-status-links .smush-revert-utm{display:block;margin:6px 0 4px}.smush-status-links a{text-decoration:none}.smush-status-links span{float:none !important}.smush-status-links .smush-cdn-notice{color:#50575e}.smush-status-links .smush-cdn-notice a{color:#2271b1}.smush-status-links .smush-cdn-notice a:focus{box-shadow:none;opacity:.7}.smush-status.smush-warning,.smush-status.smush-ignored,.smush-status.smush-success{padding-left:17px;position:relative}.smush-status.smush-warning:before,.smush-status.smush-ignored:before,.smush-status.smush-success:before{content:"";background:url(../images/icon-warning.png) no-repeat 0 0;position:absolute;width:12px;height:12px;background-size:contain;left:0;top:3px}.smush-status.smush-ignored:before{background-image:url(../images/icon-ignored.png) !important}.smush-status.smush-success:before{background-image:url(../images/icon-success.png) !important}.smush-status .sui-icon-warning-media-lib{margin-right:4px;position:relative;top:1px}.column-smushit .smush-status{color:#50575e}.sui-smush-media table.wp-smush-stats-holder{width:100%;border:1px solid #e6e6e6;border-radius:4px;margin-top:6px;border-collapse:collapse;border-spacing:0}.sui-smush-media table.wp-smush-stats-holder thead th.smush-stats-header{padding:8px 10px;border-bottom:1px solid #e6e6e6 !important;color:#32373d;font-size:12px;font-weight:bold;letter-spacing:-0.23px;line-height:16px;text-align:left}.sui-smush-media table.wp-smush-stats-holder tr{border:1px solid #e6e6e6}.sui-smush-media table.wp-smush-stats-holder td{overflow-wrap:break-word;vertical-align:middle;padding:8px 10px;color:#555;font-size:11px;letter-spacing:-0.21px;line-height:16px;border-bottom:1px solid #e6e6e6}.sui-smush-media table.wp-smush-stats-holder td:first-of-type{max-width:110px;font-weight:500}#the-list .sui-smush-media thead th.smush-stats-header{border-bottom:1px solid #e6e6e6 !important}@media screen and (max-width: 1024px){.wp-list-table .smushit table.wp-smush-stats-holder th{display:table-cell;box-sizing:border-box}.wp-list-table .smushit table.wp-smush-stats-holder tr td{word-wrap:break-word;display:table-cell !important}.wp-list-table .smushit table.wp-smush-stats-holder tr td:first-child{border-right:none;box-sizing:border-box}.wp-list-table .smushit table.wp-smush-stats-holder tr td:last-child{box-sizing:border-box;float:none;overflow:visible}}.iedit .wp-smush-action,.iedit .smush-stats-details{font-size:11px}#ngg-listimages table.wp-smush-stats-holder{table-layout:fixed;border:1px solid #d3d3d3;border-collapse:collapse;width:100%}#ngg-listimages table.wp-smush-stats-holder td,#ngg-listimages table.wp-smush-stats-holder th{border:1px solid #cecece}#ngg-listimages .column-7{width:300px}#ngg-listimages .spinner{width:auto;padding-left:30px}.alternate.iedit{height:120px}.wp-smush-nextgen-send{position:relative;z-index:2}.sui-wrap .smush-upsell-link,.sui-wrap a.smush-upsell-link{color:#8d00b1}.sui-wrap .smush-upsell-link:hover:not(.sui-button),.sui-wrap .smush-upsell-link:focus:not(.sui-button),.sui-wrap .smush-upsell-link:active:not(.sui-button),.sui-wrap a.smush-upsell-link:hover:not(.sui-button),.sui-wrap a.smush-upsell-link:focus:not(.sui-button),.sui-wrap a.smush-upsell-link:active:not(.sui-button){color:#64007e}.attachment-info .smush-stats .value{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.attachment-info .smush-stats .value .smush-status{margin:0 0 10px;-ms-flex-preferred-size:100%;flex-basis:100%;font-size:12px;line-height:1.33333}.attachment-info .smush-stats .value .smush-status-links{width:100%}.attachment-info .smush-stats .value span.sui-tooltip{float:none}.attachment-info .smush-stats .value a{margin-left:5px}.attachment-info .smush-stats .value a:first-of-type{margin-left:0;margin-right:5px}.attachment-info .smush-status-links,.column-smushit .smush-status-links{color:#ddd}.column-smushit .smush-status-links>a{box-shadow:none;outline:none}.wp-smush-progress{padding-left:25px;margin:0;background-size:17px 17px;visibility:visible;vertical-align:initial !important;display:inline;color:#32373c;cursor:default}.attachment-details .setting span.wp-smush-progress{width:auto;line-height:0;margin-right:5px}.smush-status.fail{color:#dd3d36}.smush-status.success{color:#0074a2}.smush-status.error{color:red}#wpbody-content .wp-smush-error{color:red}.wp-smush-action[disabled]{opacity:.6}#post-body-content .smush-status{margin:4px 0}.attachment-info .wp-smush-error-message{margin:0 0 1em}.smush-stats-wrapper .row{padding:8px 0}.smush-stats-wrapper .row:first-child{padding-top:0}.smush-stats-wrapper td,.smush-stats-wrapper th{font-size:11px}.smush-skipped .dashicons-editor-help{margin-top:-2px;margin-left:5px}.smush-skipped a:focus{box-shadow:0 0 #000}.smush-skipped .sui-tag.sui-tag-purple{min-height:18px;padding:2px 10px;font-size:10px;line-height:12px;font-weight:700;background-color:#8d00b1;color:#fff;border:2px solid rgba(0,0,0,0);border-radius:13px}.ui-tooltip-content{font-size:12px}.wp-smush-notice{background-color:#d1f1ea;border-radius:5px;color:#333;font-family:"Roboto",sans-serif;font-size:15px;line-height:30px;margin-bottom:30px;padding:15px 30px;letter-spacing:-0.015em}div.smush-notice-cta a.smush-notice-act.button-primary{padding:3px 23px;background-color:#00b0db;box-shadow:none;border-radius:4px;border:none;text-shadow:none;font-weight:normal;-webkit-font-smoothing:antialiased}div.smush-notice-cta a.smush-notice-act.button-primary:hover{border:none}a.wp-smush-resize-enable:hover,a.wp-smush-lossy-enable:hover{color:#0a9bd6}.wp-smush-bulk-wrapper #wp-smush-bulk-image-count{color:#333;font-size:28px;line-height:40px;letter-spacing:-0.5px;font-weight:600}.wp-smush-bulk-wrapper #wp-smush-bulk-image-count-description{color:#333;font-size:13px;margin-top:0;margin-bottom:10px}.wp-smush-bulk-wrapper .sui-tooltip,.wp-smush-bulk-wrapper .sui-tooltip>.sui-icon-info{vertical-align:top}div.wp-smush-remaining,div.wp-smush-dir-limit,div.smush-s3-setup-message{background-color:#fff5d5;border:none;color:#333;line-height:30px;font-size:15px;letter-spacing:-0.015em}div.smush-s3-setup-message{background-color:#dff6fa}div.wp-smush-dir-limit{background-color:#dff6fa}.wp-smush-resmush-wrap .wp-smush-remaining{padding:10px 50px}.wp-smush-count{color:#888;font-size:13px;line-height:1.5;margin-top:15px}a.wp-smush-lossy-enable{cursor:pointer}.wp-smush-settings-changed{background:#dff6fa;border-radius:5px;font-size:13px;line-height:1.7;padding:20px}.compat-item .compat-field-wp_smush{display:table-row}.manage-column.column-smushit{width:260px}.smushit [tooltip],label.setting.smush-stats [tooltip],.compat-field-wp_smush [tooltip]{position:relative;overflow:visible}.smushit [tooltip]:before,label.setting.smush-stats [tooltip]:before,.compat-field-wp_smush [tooltip]:before{content:"";position:absolute;border:5px solid rgba(0,0,0,0);border-top-color:#0b2f3f;bottom:100%;left:50%;margin-left:-5px;margin-bottom:-5px;opacity:0;z-index:-1;transition:margin .2s,opacity .2s,z-index .2s linear .2s;pointer-events:none}.smushit [tooltip]:after,label.setting.smush-stats [tooltip]:after,.compat-field-wp_smush [tooltip]:after{background:#0b2f3f;border-radius:4px;bottom:100%;color:#fff;content:attr(tooltip);font-size:13px;font-weight:400;left:50%;line-height:20px;margin-left:-100px;margin-bottom:5px;opacity:0;padding:5px;pointer-events:none;position:absolute;width:180px;text-align:center;transition:margin .2s,opacity .2s,z-index .2s linear .2s;white-space:pre-wrap;z-index:-1}.smushit .smush-skipped [tooltip]:before,label.setting.smush-stats .smush-skipped [tooltip]:before,.compat-field-wp_smush .smush-skipped [tooltip]:before{border-top-color:rgba(0,0,0,0);border-left-color:#0b2f3f;bottom:0;left:0}.smushit .smush-skipped [tooltip]:after,label.setting.smush-stats .smush-skipped [tooltip]:after,.compat-field-wp_smush .smush-skipped [tooltip]:after{margin-left:0;left:-195px;top:-35px;bottom:inherit;margin-bottom:5px}label.setting.smush-stats .smush-skipped [tooltip]:after{top:-98px}div.media-sidebar label.setting.smush-stats .smush-skipped [tooltip]:after{left:-188px;padding-left:10px;width:170px}div.media-sidebar label.setting.smush-stats .smush-skipped [tooltip]:before{margin-left:-3px}.smushit [tooltip].tooltip-s:after,label.setting.smush-stats [tooltip].tooltip-s:after,.compat-field-wp_smush [tooltip].tooltip-s:after{width:150px;margin-left:-75px}.smushit [tooltip].tooltip-l:after,label.setting.smush-stats [tooltip].tooltip-l:after,.compat-field-wp_smush [tooltip].tooltip-l:after{width:280px;margin-left:-140px}.smushit [tooltip].tooltip-right:after,.compat-field-wp_smush [tooltip].tooltip-right:after{margin-left:-180px}.smushit [tooltip].tooltip-s.tooltip-right:after,.compat-field-wp_smush [tooltip].tooltip-s.tooltip-right:after{margin-left:-130px}.smushit [tooltip].tooltip-l.tooltip-right:after,.compat-field-wp_smush [tooltip].tooltip-l.tooltip-right:after{margin-left:-260px}.smushit [tooltip].tooltip-bottom:before,.compat-field-wp_smush [tooltip].tooltip-bottom:before{border-color:rgba(0,0,0,0);border-bottom-color:#0b2f3f;top:100%;bottom:auto;margin-top:-5px;margin-bottom:0}.smushit [tooltip].tooltip-bottom:after,.compat-field-wp_smush [tooltip].tooltip-bottom:after{bottom:auto;top:100%;margin-top:5px;margin-bottom:0}.smushit [tooltip]:hover:before,label.setting.smush-stats [tooltip]:hover:before,.compat-field-wp_smush [tooltip]:hover:before{z-index:1;margin-bottom:0;opacity:1;transition:margin .2s,opacity .2s}.smushit [tooltip]:hover:after,label.setting.smush-stats [tooltip]:hover:after,.compat-field-wp_smush [tooltip]:hover:after{opacity:1;z-index:1;margin-bottom:10px;transition:margin .2s,opacity .2s}.smushit .disabled[tooltip]:before,.smushit .disabled[tooltip]:after,label.setting.smush-stats .disabled[tooltip]:before,label.setting.smush-stats .disabled[tooltip]:after,.compat-field-wp_smush .disabled[tooltip]:before,.compat-field-wp_smush .disabled[tooltip]:after{display:none}div.wp-smush-scan-result{background:#fff}div.wp-smush-scan-result div.wp-smush-notice{margin-top:14px;padding:15px 30px}div.wp-smush-scan-result div.content{overflow:hidden;width:100%}div.wp-smush-info.notice{font-size:15px;letter-spacing:-0.015em;margin:0 0 30px;padding:15px}@media screen and (max-width: 1024px)and (min-width: 800px){.smush-stats-wrapper h3{padding:6px 0}}@media only screen and (max-width: 800px){.dev-box.bulk-smush-wrapper.wp-smush-container{padding:20px 10px}}.smush-notice.notice{padding:0;margin:5px 0 10px;border:1px solid #e5e5e5;background:#fff;overflow:hidden;border-radius:6px;box-shadow:0 1px 1px 0 rgba(0,0,0,.05);position:relative;z-index:1;min-height:80px;display:table;font:13px "Roboto",sans-serif}.smush-notice.notice.loading:before{content:attr(data-message);position:absolute;left:0;right:0;top:0;bottom:0;background-color:rgba(255,255,255,.7);z-index:5;text-align:center;line-height:80px;font-size:22px;font-weight:bold}.smush-notice>div{display:table-cell;vertical-align:middle;cursor:default;line-height:1.5}.smush-notice.notice.loading>div{-moz-filter:blur(2px);-o-filter:blur(2px);-ms-filter:blur(2px);filter:blur(2px)}.smush-notice-logo{padding-left:30px}.smush-notice-message{color:#23282d;font-size:13px;font-weight:normal;line-height:20px;padding:20px;-webkit-font-smoothing:antialiased;width:100%}.smush-notice-cta{background:#f8f8f8;padding:0 30px;position:relative;white-space:nowrap}.wp-core-ui .smush-notice-cta button,.wp-core-ui .smush-notice-cta .button-primary:active{vertical-align:middle}.wp-core-ui .smush-notice-cta input[type=email]{vertical-align:middle;line-height:20px;margin:0;min-width:50px;max-width:320px;text-align:center;padding-left:0;padding-right:0}#smush-box-cdn-upsell .sui-upsell-list,#smush-box-webp-wizard .sui-upsell-list{max-width:525px;text-align:left;margin:0 auto}@media only all and (max-width: 1000px){.smush-notice.notice{display:block;font-size:13px}.smush-notice>.smush-notice-logo{float:left;display:inline-block;height:80px;margin:10px;border-radius:4px}.smush-notice>.smush-notice-message{width:auto;display:block;min-height:80px}.smush-notice>.smush-notice-cta{display:block;border-top:1px solid #e5e5e5;border-left:0;text-align:center;white-space:normal;line-height:30px;padding:10px 20px}.wp-core-ui .smush-notice>.smush-notice-cta>input[type=email],.smush-notice>.smush-notice-cta>button{font-size:14px}}@media only all and (max-width: 500px){.wp-core-ui .smush-notice>.smush-notice-cta>input[type=email],.smush-notice>.smush-notice-cta>button{display:block;width:100% !important;max-width:none;margin-bottom:4px;font-size:16px;height:34px}}.smush-dismissible-notice{position:relative}
.sui-smush-media .sui-tooltip{position:relative}.sui-smush-media .sui-tooltip:before,.sui-smush-media .sui-tooltip:after{content:" ";opacity:0;backface-visibility:hidden;pointer-events:none;position:absolute;z-index:9990;transition:.2s}.sui-smush-media .sui-tooltip:before{left:50%;bottom:100%;border:5px solid rgba(0,0,0,0);border-top-color:#333;transform:translateX(-50%)}.sui-smush-media .sui-tooltip:after{content:attr(data-tooltip);min-width:var(--tooltip-width, 40px);left:50%;bottom:100%;margin-bottom:10px;padding:8px 12px;border-radius:4px;background-color:#333;box-sizing:border-box;transform:translateX(-50%);color:#fff;font:500 12px/18px "Roboto",Arial,sans-serif;letter-spacing:-0.25px;text-transform:none;text-align:var(--tooltip-text-align, center)}@media(min-width: 783px){.sui-smush-media .sui-tooltip:after{white-space:nowrap}}.sui-smush-media .sui-tooltip.sui-tooltip-constrained:after{min-width:var(--tooltip-width, 240px);white-space:normal}.sui-smush-media .sui-tooltip.sui-tooltip-top-left:after{left:0;transform:translateX(0)}.sui-smush-media .sui-tooltip.sui-tooltip-top-right:after{right:0;left:unset;transform:translateX(0)}.sui-smush-media .sui-tooltip.sui-tooltip-bottom:before,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-left:before,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-right:before{top:100%;bottom:unset;border-top-color:rgba(0,0,0,0);border-bottom-color:#333}.sui-smush-media .sui-tooltip.sui-tooltip-bottom:after,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-left:after,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-right:after{top:100%;bottom:unset;margin-top:10px;margin-bottom:0}.sui-smush-media .sui-tooltip.sui-tooltip-bottom-left:after{left:0;transform:translate(0)}.sui-smush-media .sui-tooltip.sui-tooltip-bottom-right:after{left:unset;right:0;transform:translate(0)}.sui-smush-media .sui-tooltip.sui-tooltip-left:before{top:50%;right:100%;bottom:unset;left:unset;border-top-color:rgba(0,0,0,0);border-left-color:#333;transform:translateY(-50%)}.sui-smush-media .sui-tooltip.sui-tooltip-left:after{top:50%;right:100%;bottom:unset;left:unset;margin-right:10px;margin-bottom:0;transform:translateY(-50%)}.sui-smush-media .sui-tooltip.sui-tooltip-right:before{top:50%;bottom:unset;left:100%;border-top-color:rgba(0,0,0,0);border-right-color:#333;transform:translateY(-50%)}.sui-smush-media .sui-tooltip.sui-tooltip-right:after{top:50%;bottom:unset;left:100%;margin-left:10px;margin-bottom:0;transform:translateY(-50%)}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-mobile:after{min-width:var(--tooltip-width-mobile, 120px);white-space:normal}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-top-mobile:before,.sui-smush-media .sui-tooltip.sui-tooltip-top-left-mobile:before,.sui-smush-media .sui-tooltip.sui-tooltip-top-right-mobile:before{top:unset;bottom:100%;left:50%;right:unset;border-top-color:#333;border-right-color:rgba(0,0,0,0);border-bottom-color:rgba(0,0,0,0);border-left-color:rgba(0,0,0,0);transform:translateX(-50%)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-top-mobile:after,.sui-smush-media .sui-tooltip.sui-tooltip-top-left-mobile:after,.sui-smush-media .sui-tooltip.sui-tooltip-top-right-mobile:after{min-width:var(--tooltip-width-mobile, 120px);top:unset;bottom:100%;margin-top:0;margin-right:0;margin-bottom:10px;margin-left:0;white-space:normal}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-top-mobile:after{right:unset;left:50%;transform:translateX(-50%)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-top-left-mobile:after{right:unset;left:0;transform:translateX(0)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-top-right-mobile:after{right:0;left:unset;transform:translateX(0)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-bottom-mobile:before,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-left-mobile:before,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-right-mobile:before{top:100%;bottom:unset;left:50%;right:unset;border-top-color:rgba(0,0,0,0);border-right-color:rgba(0,0,0,0);border-bottom-color:#333;border-left-color:rgba(0,0,0,0);transform:translateX(-50%)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-bottom-mobile:after,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-left-mobile:after,.sui-smush-media .sui-tooltip.sui-tooltip-bottom-right-mobile:after{min-width:var(--tooltip-width-mobile, 120px);top:100%;bottom:unset;margin-top:10px;margin-right:0;margin-bottom:0;margin-left:0;white-space:normal}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-bottom-mobile:after{right:unset;left:50%;transform:translateX(-50%)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-bottom-left-mobile:after{right:unset;left:0;transform:translateX(0)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-bottom-right-mobile:after{right:0;left:unset;transform:translateX(0)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-left-mobile:before{top:50%;right:100%;bottom:unset;left:unset;border-top-color:rgba(0,0,0,0);border-right-color:rgba(0,0,0,0);border-bottom-color:rgba(0,0,0,0);border-left-color:#333;transform:translateY(-50%)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-left-mobile:after{min-width:var(--tooltip-width-mobile, 120px);top:50%;right:100%;bottom:unset;left:unset;margin-top:0;margin-right:10px;margin-bottom:0;margin-left:0;transform:translateY(-50%);white-space:normal}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-right-mobile:before{top:50%;right:unset;bottom:unset;left:100%;border-top-color:rgba(0,0,0,0);border-right-color:#333;border-bottom-color:rgba(0,0,0,0);border-left-color:rgba(0,0,0,0);transform:translateY(-50%)}}@media(max-width: 782px){.sui-smush-media .sui-tooltip.sui-tooltip-right-mobile:after{min-width:var(--tooltip-width-mobile, 120px);top:50%;right:unset;bottom:unset;left:100%;margin-top:0;margin-right:0;margin-bottom:0;margin-left:10px;transform:translateY(-50%);white-space:normal}}.sui-smush-media .sui-tooltip:hover:before,.sui-smush-media .sui-tooltip:hover:after,.sui-smush-media .sui-tooltip:focus:before,.sui-smush-media .sui-tooltip:focus:after{opacity:1;backface-visibility:visible}.manage-column.column-smushit{width:260px}.sui-smush-media .button{margin-right:5px}.sui-smush-media .button:last-of-type{margin-right:0}#ngg-listimages .spinner,.column-smushit .spinner{float:none}#ngg-listimages .spinner.visible,.column-smushit .spinner.visible{visibility:visible}.smush-status-links .smush-upgrade-link{color:#8d00b1;font-size:12px}.smush-status-links .smush-ignore-utm,.smush-status-links .smush-revert-utm{display:block;margin:6px 0 4px}.smush-status-links a{text-decoration:none}.smush-status-links span{float:none !important}.smush-status-links .smush-cdn-notice{color:#50575e}.smush-status-links .smush-cdn-notice a{color:#2271b1}.smush-status-links .smush-cdn-notice a:focus{box-shadow:none;opacity:.7}.smush-status.smush-warning,.smush-status.smush-ignored,.smush-status.smush-success{padding-left:17px;position:relative}.smush-status.smush-warning:before,.smush-status.smush-ignored:before,.smush-status.smush-success:before{content:"";background:url(../images/icon-warning.png) no-repeat 0 0;position:absolute;width:12px;height:12px;background-size:contain;left:0;top:3px}.smush-status.smush-ignored:before{background-image:url(../images/icon-ignored.png) !important}.smush-status.smush-success:before{background-image:url(../images/icon-success.png) !important}.smush-status .sui-icon-warning-media-lib{margin-right:4px;position:relative;top:1px}.column-smushit .smush-status{color:#50575e}.sui-smush-media table.wp-smush-stats-holder{width:100%;border:1px solid #e6e6e6;border-radius:4px;margin-top:6px;border-collapse:collapse;border-spacing:0}.sui-smush-media table.wp-smush-stats-holder thead th.smush-stats-header{padding:8px 10px;border-bottom:1px solid #e6e6e6 !important;color:#32373d;font-size:12px;font-weight:bold;letter-spacing:-0.23px;line-height:16px;text-align:left}.sui-smush-media table.wp-smush-stats-holder tr{border:1px solid #e6e6e6}.sui-smush-media table.wp-smush-stats-holder td{overflow-wrap:break-word;vertical-align:middle;padding:8px 10px;color:#555;font-size:11px;letter-spacing:-0.21px;line-height:16px;border-bottom:1px solid #e6e6e6}.sui-smush-media table.wp-smush-stats-holder td:first-of-type{max-width:110px;font-weight:500}#the-list .sui-smush-media thead th.smush-stats-header{border-bottom:1px solid #e6e6e6 !important}@media screen and (max-width: 1024px){.wp-list-table .smushit table.wp-smush-stats-holder th{display:table-cell;box-sizing:border-box}.wp-list-table .smushit table.wp-smush-stats-holder tr td{word-wrap:break-word;display:table-cell !important}.wp-list-table .smushit table.wp-smush-stats-holder tr td:first-child{border-right:none;box-sizing:border-box}.wp-list-table .smushit table.wp-smush-stats-holder tr td:last-child{box-sizing:border-box;float:none;overflow:visible}}.iedit .wp-smush-action,.iedit .smush-stats-details{font-size:11px}#ngg-listimages table.wp-smush-stats-holder{table-layout:fixed;border:1px solid #d3d3d3;border-collapse:collapse;width:100%}#ngg-listimages table.wp-smush-stats-holder td,#ngg-listimages table.wp-smush-stats-holder th{border:1px solid #cecece}#ngg-listimages .column-7{width:300px}#ngg-listimages .spinner{width:auto;padding-left:30px}.alternate.iedit{height:120px}.wp-smush-nextgen-send{position:relative;z-index:2}.sui-wrap .smush-upsell-link,.sui-wrap a.smush-upsell-link{color:#8d00b1}.sui-wrap .smush-upsell-link>span:before,.sui-wrap a.smush-upsell-link>span:before{color:#8d00b1}.sui-wrap .smush-upsell-link:hover:not(.sui-button),.sui-wrap .smush-upsell-link:focus:not(.sui-button),.sui-wrap .smush-upsell-link:active:not(.sui-button),.sui-wrap a.smush-upsell-link:hover:not(.sui-button),.sui-wrap a.smush-upsell-link:focus:not(.sui-button),.sui-wrap a.smush-upsell-link:active:not(.sui-button){color:#64007e}.sui-wrap .smush-upsell-link:hover:not(.sui-button)>span:before,.sui-wrap .smush-upsell-link:focus:not(.sui-button)>span:before,.sui-wrap .smush-upsell-link:active:not(.sui-button)>span:before,.sui-wrap a.smush-upsell-link:hover:not(.sui-button)>span:before,.sui-wrap a.smush-upsell-link:focus:not(.sui-button)>span:before,.sui-wrap a.smush-upsell-link:active:not(.sui-button)>span:before{color:#64007e}.attachment-info .smush-stats .value{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.attachment-info .smush-stats .value .smush-status{margin:0 0 10px;-ms-flex-preferred-size:100%;flex-basis:100%;font-size:12px;line-height:1.33333}.attachment-info .smush-stats .value .smush-status-links{width:100%}.attachment-info .smush-stats .value span.sui-tooltip{float:none}.attachment-info .smush-stats .value a{margin-left:5px}.attachment-info .smush-stats .value a:first-of-type{margin-left:0;margin-right:5px}.attachment-info .smush-status-links,.column-smushit .smush-status-links{color:#ddd}.column-smushit .smush-status-links>a{box-shadow:none;outline:none}.wp-smush-progress{padding-left:25px;margin:0;background-size:17px 17px;visibility:visible;vertical-align:initial !important;display:inline;color:#32373c;cursor:default}.attachment-details .setting span.wp-smush-progress{width:auto;line-height:0;margin-right:5px}.smush-status.fail{color:#dd3d36}.smush-status.success{color:#0074a2}.smush-status.error{color:red}#wpbody-content .wp-smush-error{color:red}.wp-smush-action[disabled]{opacity:.6}#post-body-content .smush-status{margin:4px 0}.attachment-info .wp-smush-error-message{margin:0 0 1em}.smush-stats-wrapper .row{padding:8px 0}.smush-stats-wrapper .row:first-child{padding-top:0}.smush-stats-wrapper td,.smush-stats-wrapper th{font-size:11px}.smush-skipped .dashicons-editor-help{margin-top:-2px;margin-left:5px}.smush-skipped a:focus{box-shadow:0 0 #000}.smush-skipped .sui-tag.sui-tag-purple{min-height:18px;padding:2px 10px;font-size:10px;line-height:12px;font-weight:700;background-color:#8d00b1;color:#fff;border:2px solid rgba(0,0,0,0);border-radius:13px}.ui-tooltip-content{font-size:12px}.wp-smush-notice{background-color:#d1f1ea;border-radius:5px;color:#333;font-family:"Roboto",sans-serif;font-size:15px;line-height:30px;margin-bottom:30px;padding:15px 30px;letter-spacing:-0.015em}div.smush-notice-cta a.smush-notice-act.button-primary{padding:3px 23px;background-color:#00b0db;box-shadow:none;border-radius:4px;border:none;text-shadow:none;font-weight:normal;-webkit-font-smoothing:antialiased}div.smush-notice-cta a.smush-notice-act.button-primary:hover{border:none}a.wp-smush-resize-enable:hover,a.wp-smush-lossy-enable:hover{color:#0a9bd6}.wp-smush-bulk-wrapper #wp-smush-bulk-image-count{color:#333;font-size:28px;line-height:40px;letter-spacing:-0.5px;font-weight:600}.wp-smush-bulk-wrapper #wp-smush-bulk-image-count-description{color:#333;font-size:13px;margin-top:0;margin-bottom:10px}.wp-smush-bulk-wrapper .sui-tooltip,.wp-smush-bulk-wrapper .sui-tooltip>.sui-icon-info{vertical-align:top}div.wp-smush-remaining,div.wp-smush-dir-limit,div.smush-s3-setup-message{background-color:#fff5d5;border:none;color:#333;line-height:30px;font-size:15px;letter-spacing:-0.015em}div.smush-s3-setup-message{background-color:#dff6fa}div.wp-smush-dir-limit{background-color:#dff6fa}.wp-smush-resmush-wrap .wp-smush-remaining{padding:10px 50px}.wp-smush-count{color:#888;font-size:13px;line-height:1.5;margin-top:15px}a.wp-smush-lossy-enable{cursor:pointer}.wp-smush-settings-changed{background:#dff6fa;border-radius:5px;font-size:13px;line-height:1.7;padding:20px}.compat-item .compat-field-wp_smush{display:table-row}.manage-column.column-smushit{width:260px}.smushit [tooltip],label.setting.smush-stats [tooltip],.compat-field-wp_smush [tooltip]{position:relative;overflow:visible}.smushit [tooltip]:before,label.setting.smush-stats [tooltip]:before,.compat-field-wp_smush [tooltip]:before{content:"";position:absolute;border:5px solid rgba(0,0,0,0);border-top-color:#0b2f3f;bottom:100%;left:50%;margin-left:-5px;margin-bottom:-5px;opacity:0;z-index:-1;transition:margin .2s,opacity .2s,z-index .2s linear .2s;pointer-events:none}.smushit [tooltip]:after,label.setting.smush-stats [tooltip]:after,.compat-field-wp_smush [tooltip]:after{background:#0b2f3f;border-radius:4px;bottom:100%;color:#fff;content:attr(tooltip);font-size:13px;font-weight:400;left:50%;line-height:20px;margin-left:-100px;margin-bottom:5px;opacity:0;padding:5px;pointer-events:none;position:absolute;width:180px;text-align:center;transition:margin .2s,opacity .2s,z-index .2s linear .2s;white-space:pre-wrap;z-index:-1}.smushit .smush-skipped [tooltip]:before,label.setting.smush-stats .smush-skipped [tooltip]:before,.compat-field-wp_smush .smush-skipped [tooltip]:before{border-top-color:rgba(0,0,0,0);border-left-color:#0b2f3f;bottom:0;left:0}.smushit .smush-skipped [tooltip]:after,label.setting.smush-stats .smush-skipped [tooltip]:after,.compat-field-wp_smush .smush-skipped [tooltip]:after{margin-left:0;left:-195px;top:-35px;bottom:inherit;margin-bottom:5px}label.setting.smush-stats .smush-skipped [tooltip]:after{top:-98px}div.media-sidebar label.setting.smush-stats .smush-skipped [tooltip]:after{left:-188px;padding-left:10px;width:170px}div.media-sidebar label.setting.smush-stats .smush-skipped [tooltip]:before{margin-left:-3px}.smushit [tooltip].tooltip-s:after,label.setting.smush-stats [tooltip].tooltip-s:after,.compat-field-wp_smush [tooltip].tooltip-s:after{width:150px;margin-left:-75px}.smushit [tooltip].tooltip-l:after,label.setting.smush-stats [tooltip].tooltip-l:after,.compat-field-wp_smush [tooltip].tooltip-l:after{width:280px;margin-left:-140px}.smushit [tooltip].tooltip-right:after,.compat-field-wp_smush [tooltip].tooltip-right:after{margin-left:-180px}.smushit [tooltip].tooltip-s.tooltip-right:after,.compat-field-wp_smush [tooltip].tooltip-s.tooltip-right:after{margin-left:-130px}.smushit [tooltip].tooltip-l.tooltip-right:after,.compat-field-wp_smush [tooltip].tooltip-l.tooltip-right:after{margin-left:-260px}.smushit [tooltip].tooltip-bottom:before,.compat-field-wp_smush [tooltip].tooltip-bottom:before{border-color:rgba(0,0,0,0);border-bottom-color:#0b2f3f;top:100%;bottom:auto;margin-top:-5px;margin-bottom:0}.smushit [tooltip].tooltip-bottom:after,.compat-field-wp_smush [tooltip].tooltip-bottom:after{bottom:auto;top:100%;margin-top:5px;margin-bottom:0}.smushit [tooltip]:hover:before,label.setting.smush-stats [tooltip]:hover:before,.compat-field-wp_smush [tooltip]:hover:before{z-index:1;margin-bottom:0;opacity:1;transition:margin .2s,opacity .2s}.smushit [tooltip]:hover:after,label.setting.smush-stats [tooltip]:hover:after,.compat-field-wp_smush [tooltip]:hover:after{opacity:1;z-index:1;margin-bottom:10px;transition:margin .2s,opacity .2s}.smushit .disabled[tooltip]:before,.smushit .disabled[tooltip]:after,label.setting.smush-stats .disabled[tooltip]:before,label.setting.smush-stats .disabled[tooltip]:after,.compat-field-wp_smush .disabled[tooltip]:before,.compat-field-wp_smush .disabled[tooltip]:after{display:none}div.wp-smush-scan-result{background:#fff}div.wp-smush-scan-result div.wp-smush-notice{margin-top:14px;padding:15px 30px}div.wp-smush-scan-result div.content{overflow:hidden;width:100%}div.wp-smush-info.notice{font-size:15px;letter-spacing:-0.015em;margin:0 0 30px;padding:15px}@media screen and (max-width: 1024px)and (min-width: 800px){.smush-stats-wrapper h3{padding:6px 0}}@media only screen and (max-width: 800px){.dev-box.bulk-smush-wrapper.wp-smush-container{padding:20px 10px}}.smush-notice.notice{padding:0;margin:5px 0 10px;border:1px solid #e5e5e5;background:#fff;overflow:hidden;border-radius:6px;box-shadow:0 1px 1px 0 rgba(0,0,0,.05);position:relative;z-index:1;min-height:80px;display:table;font:13px "Roboto",sans-serif}.smush-notice.notice.loading:before{content:attr(data-message);position:absolute;left:0;right:0;top:0;bottom:0;background-color:rgba(255,255,255,.7);z-index:5;text-align:center;line-height:80px;font-size:22px;font-weight:bold}.smush-notice>div{display:table-cell;vertical-align:middle;cursor:default;line-height:1.5}.smush-notice.notice.loading>div{-moz-filter:blur(2px);-o-filter:blur(2px);-ms-filter:blur(2px);filter:blur(2px)}.smush-notice-logo{padding-left:30px}.smush-notice-message{color:#23282d;font-size:13px;font-weight:normal;line-height:20px;padding:20px;-webkit-font-smoothing:antialiased;width:100%}.smush-notice-cta{background:#f8f8f8;padding:0 30px;position:relative;white-space:nowrap}.wp-core-ui .smush-notice-cta button,.wp-core-ui .smush-notice-cta .button-primary:active{vertical-align:middle}.wp-core-ui .smush-notice-cta input[type=email]{vertical-align:middle;line-height:20px;margin:0;min-width:50px;max-width:320px;text-align:center;padding-left:0;padding-right:0}#smush-box-cdn-upsell .sui-upsell-list,#smush-box-webp-wizard .sui-upsell-list{max-width:525px;text-align:left;margin:0 auto}@media only all and (max-width: 1000px){.smush-notice.notice{display:block;font-size:13px}.smush-notice>.smush-notice-logo{float:left;display:inline-block;height:80px;margin:10px;border-radius:4px}.smush-notice>.smush-notice-message{width:auto;display:block;min-height:80px}.smush-notice>.smush-notice-cta{display:block;border-top:1px solid #e5e5e5;border-left:0;text-align:center;white-space:normal;line-height:30px;padding:10px 20px}.wp-core-ui .smush-notice>.smush-notice-cta>input[type=email],.smush-notice>.smush-notice-cta>button{font-size:14px}}@media only all and (max-width: 500px){.wp-core-ui .smush-notice>.smush-notice-cta>input[type=email],.smush-notice>.smush-notice-cta>button{display:block;width:100% !important;max-width:none;margin-bottom:4px;font-size:16px;height:34px}}.smush-dismissible-notice{position:relative}
/*# sourceMappingURL=smush-global.min.css.map*/
\ No newline at end of file
......
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
......@@ -379,7 +379,6 @@ abstract class Abstract_Page {
private function prepare_modals() {
$this->prepare_onboarding_modal();
$this->prepare_upgrade_modal();
$this->prepare_ultra_compression_modal();
}
/**
......@@ -458,17 +457,6 @@ abstract class Abstract_Page {
);
}
private function prepare_ultra_compression_modal() {
if ( WP_Smush::is_pro() ) {
return;
}
$is_dashboard_page = 'smush' === $this->get_slug();
$this->modals['ultra-compression'] = array(
'location' => $is_dashboard_page ? 'dashboard_summary' : 'summary_box',
);
}
/**
* Get the current screen tab
*
......
<?php
/**
* Ultra Compression Modal.
*
* @package WP_Smush
*
* @var string $location Where to tracking ultra compression.
*/
use Smush\Core\Helper;
if ( ! defined( 'WPINC' ) ) {
die;
}
$utm_campain_locations = array(
'settings' => array(
'upgrade_link' => 'smush_ultra_bulksmush_radio',
),
'summary_box' => array(
'upgrade_link' => 'smush_ultra_bulksmush_summary',
),
'dashboard_summary' => array(
'upgrade_link' => 'smush_ultra_dashboard_summary',
),
);
$location = isset( $location ) && isset( $utm_campain_locations[ $location ] ) ? $location : 'settings';
$utm_campains = $utm_campain_locations[ $location ];
$upgrade_utm_link = Helper::get_url( $utm_campains['upgrade_link'] );
$connect_site_url = $this->get_connect_site_link();
$modal_id = "wp-smush-ultra-compression-modal__{$location}";
?>
<div class="sui-modal sui-modal-md">
<div
role="dialog"
id="<?php echo esc_attr( $modal_id ); ?>"
class="sui-modal-content wp-smush-modal-dark-background wp-smush-ultra-compression-modal"
aria-modal="true"
aria-labelledby="smush-title-updated-dialog"
>
<div class="sui-box">
<div class="sui-box-header sui-flatten sui-content-center sui-spacing-sides--20">
<figure class="sui-box-banner" aria-hidden="true">
<img src="<?php echo esc_url( WP_SMUSH_URL . 'app/assets/images/bulk-smush/smush-ultra-compression.jpg' ); ?>"
srcset="<?php echo esc_url( WP_SMUSH_URL . 'app/assets/images/bulk-smush/smush-ultra-compression.jpg' ); ?> 1x, <?php echo esc_url( WP_SMUSH_URL . 'app/assets/images/bulk-smush/smush-ultra-compression' ); ?>@2x.jpg 2x"
alt="<?php esc_attr_e( 'Smush Ultra Compression', 'wp-smushit' ); ?>" class="sui-image sui-image-center">
</figure>
<button type="button" class="sui-button-icon sui-button-float--right sui-button-white" style="box-shadow:none!important" data-esc-close="true" data-modal-close="">
<i class="sui-icon-close sui-md" aria-hidden="true"></i>
</button>
</div>
<div class="sui-box-body sui-content-center sui-spacing-sides--30 sui-spacing-top--50 sui-spacing-bottom--20">
<h3 class="sui-box-title sui-lg" id="smush-title-updated-dialog" style="white-space: normal">
<?php esc_html_e( 'Serve images faster with Ultra Smush', 'wp-smushit' ); ?>
</h3>
<p class="sui-description">
<?php esc_html_e( 'Experience up to 5x better compression than Super Smush. Optimize your images even further and make your pages load faster than ever. Level up your site performance with Ultra Smush now.', 'wp-smushit' ); ?>
</p>
<a target="_blank" data-action="upgrade" href="<?php echo esc_url( $upgrade_utm_link ); ?>" class="sui-button sui-button-blue wp-smush-modal-link-close" >
<?php esc_html_e( 'Find out more', 'wp-smushit' ); ?>
</a>
<?php
if ( $connect_site_url ) :
$to_dash_page = strpos( $connect_site_url, 'page=wpmudev' );
?>
<p class="smush-footer-link"><?php esc_html_e( 'Already a member?', 'wp-smushit' ); ?> <a target="<?php echo $to_dash_page ? '_self' : '_blank'; ?>" data-action="<?php echo $to_dash_page ? 'connect_dash' : 'connect_site'; ?>" class="wp-smush-modal-link-close" href="<?php echo esc_url( $connect_site_url ); ?>"><?php esc_html_e( 'Connect site', 'wp-smushit' ); ?></a></p>
<?php endif; ?>
</div>
<div class="sui-box-footer sui-flatten sui-spacing-bottom--30">
<h4 class="sui-box-title"><?php esc_html_e( 'Get the following Smush Pro features', 'wp-smushit' ); ?></h4>
<div class="wp-smush-pro-features">
<ul>
<li>
<div class="wp-smush-pro-features_item">
<div class="sui-icon-box">
<span class="sui-icon-unlock" aria-hidden="true"></span>
</div>
<div class="sui-content-box">
<h5><?php esc_html_e( 'No Limits, no restrictions', 'wp-smushit' ); ?></h5>
<p><?php esc_html_e( "One-click bulk optimization, it's quick and easy to compress unlimited images.", 'wp-smushit' ); ?></p>
</div>
</div>
<div class="wp-smush-pro-features_item">
<div class="sui-icon-box">
<span class="sui-icon-loader" aria-hidden="true"></span>
</div>
<div class="sui-content-box">
<h5><?php esc_html_e( 'Compress images in the background', 'wp-smushit' ); ?></h5>
<p><?php esc_html_e( 'With background optimization, Smush will keep working even if you leave the page.', 'wp-smushit' ); ?></p>
</div>
</div>
</li>
<li>
<div class="wp-smush-pro-features_item">
<div class="sui-icon-box">
<span class="sui-icon-web-globe-world" aria-hidden="true"></span>
</div>
<div class="sui-content-box">
<h5><?php esc_html_e( 'Streamline your images with Smush CDN', 'wp-smushit' ); ?></h5>
<p><?php esc_html_e( 'Serve images faster and closer than ever from 114 data centers all over the globe.', 'wp-smushit' ); ?></p>
</div>
</div>
<div class="wp-smush-pro-features_item">
<div class="sui-icon-box">
<span class="sui-icon-wand-magic" aria-hidden="true"></span>
</div>
<div class="sui-content-box">
<h5><?php esc_html_e( 'Auto-convert PNGs to JPEGs (lossy)', 'wp-smushit' ); ?></h5>
<p><?php esc_html_e( 'Enjoy more savings and speed by auto-converting to the ideal file format.', 'wp-smushit' ); ?></p>
</div>
</div>
</li>
<li>
<div class="wp-smush-pro-features_item">
<div class="sui-icon-box">
<span class="sui-icon-photo-picture" aria-hidden="true"></span>
</div>
<div class="sui-content-box">
<h5><?php esc_html_e( 'Serve next-gen WebP images', 'wp-smushit' ); ?></h5>
<p><?php esc_html_e( 'Serve lighter and more streamlined WebP images without losing quality.', 'wp-smushit' ); ?></p>
</div>
</div>
<div class="wp-smush-pro-features_item">
<div class="sui-icon-box">
<span class="sui-icon-hummingbird" aria-hidden="true"></span>
</div>
<div class="sui-content-box">
<h5><?php esc_html_e( 'Faster sites with Hummingbird Pro', 'wp-smushit' ); ?></h5>
<p><?php esc_html_e( 'Optimize the performance of your sites further with a full caching suite and automatic asset optimization.', 'wp-smushit' ); ?></p>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
......@@ -102,10 +102,16 @@ $level_notices = array(
aria-describedby="<?php echo esc_attr( $name . '-desc' ); ?>"
value="<?php echo (int) $level_ultra; ?>"
<?php checked( $lossy_level_setting, $level_ultra, true ); ?> />
<?php else : ?>
<a href="#" class="sui-tab-item" data-modal-open="wp-smush-ultra-compression-modal__settings">
<?php echo esc_html( $settings->get_lossy_level_label( $level_ultra ) ); ?>
<span class="sui-tag sui-tag-pro"><?php esc_html_e( 'Pro', 'wp-smushit' ); ?></span>
<?php else :
$utm_link = $this->get_utm_link(
array(
'utm_campaign' => 'smush_ultra_bulksmush_radio',
)
);
?>
<a target="_blank" href="<?php echo esc_url( $utm_link ); ?>" class="sui-tab-item wp-smush-ultra-compression-link wp-smush-upsell-ultra-compression">
<?php esc_html_e( '🚀 Ultra - unlock 5x more compression', 'wp-smushit' ); ?>
<span class="sui-icon-open-new-window" aria-hidden="true"></span>
</a>
<?php endif; ?>
</div>
......@@ -165,7 +171,3 @@ $level_notices = array(
</div>
</div>
</div>
<?php
if ( ! WP_Smush::is_pro() ) {
$this->view( 'ultra-compression', array(), 'modals' );
}
......
......@@ -6,12 +6,16 @@ $lossy_level_setting = Settings::get_instance()->get_lossy_level_setting();
$is_ultra_active = Settings::LEVEL_ULTRA_LOSSY === $lossy_level_setting;
$is_super_active = Settings::LEVEL_SUPER_LOSSY === $lossy_level_setting;
$is_pro = WP_Smush::is_pro();
$is_dashboard_page = 'smush' === $this->get_slug();
$location = $is_dashboard_page ? 'dashboard_summary' : 'summary_box';
$modal_id = "wp-smush-ultra-compression-modal__{$location}";
$class_names = array();
if ( ! $is_pro ) {
$class_names[] = 'smush-upsell-link';
$class_names[] = 'smush-upsell-link wp-smush-upsell-ultra-compression';
$is_dashboard_page = 'smush' === $this->get_slug();
$location = $is_dashboard_page ? 'dashboard_summary' : 'bulksmush_summary';
$utm_link = $this->get_utm_link(
array(
'utm_campaign' => "smush_ultra_{$location}",
)
);
} elseif ( $is_ultra_active ) {
$class_names[] = 'sui-hidden';
}
......@@ -20,8 +24,13 @@ if ( ! $is_pro ) {
<span class="sui-list-label"><?php esc_html_e( 'Smush Mode', 'wp-smushit' ); ?></span>
<span class="sui-list-detail">
<span class="wp-smush-current-compression-level sui-tag sui-tag-green"><?php echo esc_html( Settings::get_instance()->get_current_lossy_level_label() ); ?></span>
<a href="<?php echo esc_url( $this->get_url( 'smush-bulk' ) ); ?>#lossy-settings-row" class="<?php echo esc_attr( join( ' ', $class_names ) ); ?>" <?php echo $is_pro ? '' : ' data-modal-open="' . esc_attr( $modal_id ) . '"'; ?> title="<?php esc_attr_e( 'Choose the level of compression that suits your needs.', 'wp-smushit' ); ?>">
<?php esc_html_e( 'Improve page speed with Ultra', 'wp-smushit' ); ?>
<a target="<?php echo $is_pro ? '_self' : '_blank'; ?>" href="<?php echo isset( $utm_link ) ? esc_url( $utm_link ) : esc_url( $this->get_url( 'smush-bulk' ) ) . '#lossy-settings-row'; ?>" class="<?php echo esc_attr( join( ' ', $class_names ) ); ?>" title="<?php esc_attr_e( 'Choose the level of compression that suits your needs.', 'wp-smushit' ); ?>">
<?php if ( $is_pro ) : ?>
<?php esc_html_e( 'Improve page speed with Ultra', 'wp-smushit' ); ?>
<?php else : ?>
<?php esc_html_e( '5x your compression with Ultra', 'wp-smushit' ); ?>
<span class="sui-icon-open-new-window" aria-hidden="true"></span>
<?php endif; ?>
</a>
</span>
</li>
......
<?php
namespace Smush\Core\Backups;
use Smush\Core\Controller;
use Smush\Core\File_System;
use Smush\Core\Media\Media_Item;
use Smush\Core\Media\Media_Item_Cache;
class Backups_Backward_Compatibility extends Controller {
const ORIGINAL_FILE_META_KEY = 'wp-smush-original_file';
const PNG_PATH_INDEX = 'smush_png_path';
private $media_item_cache;
/**
* @var File_System
*/
private $fs;
public function __construct() {
$this->media_item_cache = Media_Item_Cache::get_instance();
$this->fs = new File_System();
// TODO: deprecate the png2jpg backup hook in favor of the fallback size hook
}
public function init() {
parent::init();
add_action( 'delete_attachment', array( $this, 'delete_old_backup_files' ) );
$this->add_backup_sizes_filter();
}
public function stop() {
$this->remove_backup_sizes_filter();
remove_action( 'delete_attachment', array( $this, 'delete_old_backup_files' ) );
parent::stop();
}
public function maybe_use_deprecated_backup_sizes_meta( $original, $attachment_id, $meta_key ) {
if ( $meta_key !== Media_Item::BACKUP_SIZES_META_KEY ) {
return $original;
}
$media_item = $this->media_item_cache->get( $attachment_id );
if ( ! $media_item->is_image() ) {
return $original;
}
$actual_backup_sizes_meta = $this->get_unfiltered_backup_sizes_meta( $attachment_id );
if ( ! empty( $actual_backup_sizes_meta[ Media_Item::DEFAULT_BACKUP_KEY ] ) ) {
/**
* If {@see Media_Item::DEFAULT_BACKUP_KEY} is already set then we don't want to overwrite it with an older, potentially inaccurate value
*/
return $original;
}
$new_meta = $this->maybe_use_original_file_meta( $media_item, $actual_backup_sizes_meta );
if ( $new_meta ) {
return array( $new_meta );
}
$new_meta = $this->maybe_use_smush_png_path( $media_item, $actual_backup_sizes_meta );
if ( $new_meta ) {
return array( $new_meta );
}
return $original;
}
private function maybe_use_original_file_meta( $media_item, $backup_sizes_meta ) {
$attachment_id = $media_item->get_id();
$meta_key = self::ORIGINAL_FILE_META_KEY;
$original_file_meta = get_post_meta( $attachment_id, $meta_key, true );
if ( empty( $original_file_meta ) ) {
return false;
}
delete_post_meta( $attachment_id, $meta_key );
$original_file_meta_path = $this->get_original_file_path( $original_file_meta );
if ( ! $this->fs->file_exists( $original_file_meta_path ) ) {
return false;
}
$new_backup_meta = $this->make_new_backup_meta(
$backup_sizes_meta,
$original_file_meta_path
);
$this->update_backup_sizes_meta( $attachment_id, $new_backup_meta );
return $new_backup_meta;
}
private function maybe_use_smush_png_path( $media_item, $backup_sizes_meta ) {
$attachment_id = $media_item->get_id();
$png_path_key = self::PNG_PATH_INDEX;
if ( empty( $backup_sizes_meta[ $png_path_key ]['file'] ) ) {
return false;
}
$smush_png_file = $backup_sizes_meta[ $png_path_key ]['file'];
$smush_png_path = $this->file_name_to_path( $media_item, $smush_png_file );
unset( $backup_sizes_meta[ $png_path_key ] );
$backup_sizes_meta = $this->make_new_backup_meta( $backup_sizes_meta, $smush_png_path );
$this->update_backup_sizes_meta( $attachment_id, $backup_sizes_meta );
if ( $this->fs->file_exists( $smush_png_path ) ) {
return $backup_sizes_meta;
} else {
return false;
}
}
private function make_new_backup_meta( $existing_backup_meta, $file_path ) {
list( $width, $height ) = $this->fs->getimagesize( $file_path );
$existing_backup_meta[ Media_Item::DEFAULT_BACKUP_KEY ] = array(
'file' => basename( $file_path ),
'width' => $width,
'height' => $height,
);
return $existing_backup_meta;
}
/**
* @param $attachment_id
*
* @return mixed
*/
private function get_unfiltered_backup_sizes_meta( $attachment_id ) {
$this->remove_backup_sizes_filter();
$post_meta = get_post_meta( $attachment_id, Media_Item::BACKUP_SIZES_META_KEY, true );
$this->add_backup_sizes_filter();
return empty( $post_meta ) ? array() : $post_meta;
}
private function update_backup_sizes_meta( $attachment_id, $meta_value ) {
$this->remove_backup_sizes_filter();
if ( empty( $meta_value ) ) {
delete_post_meta( $attachment_id, Media_Item::BACKUP_SIZES_META_KEY );
} else {
update_post_meta( $attachment_id, Media_Item::BACKUP_SIZES_META_KEY, $meta_value );
}
$this->add_backup_sizes_filter();
}
/**
* @return void
*/
private function add_backup_sizes_filter() {
add_action( 'get_post_metadata', array( $this, 'maybe_use_deprecated_backup_sizes_meta' ), 10, 3 );
}
/**
* @return void
*/
private function remove_backup_sizes_filter() {
remove_filter( 'get_post_metadata', array( $this, 'maybe_use_deprecated_backup_sizes_meta' ) );
}
public function delete_old_backup_files( $attachment_id ) {
$this->remove_backup_sizes_filter();
$this->_delete_old_backup_files( $attachment_id );
$this->add_backup_sizes_filter();
}
private function _delete_old_backup_files( $attachment_id ) {
$media_item = $this->media_item_cache->get( $attachment_id );
if ( $media_item->is_valid() ) {
$this->delete_original_file( $attachment_id, $media_item );
$this->delete_png_meta_value_and_file( $media_item );
$this->delete_backup_files_for_sizes( $media_item );
}
}
/**
* @param $attachment_id
* @param Media_Item $media_item
*
* @return void
*/
private function delete_original_file( $attachment_id, $media_item ) {
$meta_key = self::ORIGINAL_FILE_META_KEY;
$original_file_meta = get_post_meta( $attachment_id, $meta_key, true );
if ( ! empty( $original_file_meta ) ) {
$original_file_meta_path = $this->get_original_file_path( $original_file_meta );
if ( $this->fs->file_exists( $original_file_meta_path ) ) {
$this->fs->unlink( $original_file_meta_path );
}
}
}
private function get_original_file_path( $original_file_meta ) {
$upload_dir = wp_upload_dir();
$basedir = trailingslashit( $upload_dir['basedir'] );
return path_join( $basedir, $original_file_meta );
}
private function delete_png_meta_value_and_file( $media_item ) {
$attachment_id = $media_item->get_id();
$png_path_key = self::PNG_PATH_INDEX;
$backup_sizes_meta = $this->get_unfiltered_backup_sizes_meta( $attachment_id );
if ( empty( $backup_sizes_meta[ $png_path_key ]['file'] ) ) {
return;
}
$smush_png_file = $backup_sizes_meta[ $png_path_key ]['file'];
$smush_png_path = $this->file_name_to_path( $media_item, $smush_png_file );
unset( $backup_sizes_meta[ $png_path_key ] );
$backup_sizes_meta = $this->make_new_backup_meta( $backup_sizes_meta, $smush_png_path );
$this->update_backup_sizes_meta( $attachment_id, $backup_sizes_meta );
if ( $this->fs->file_exists( $smush_png_path ) ) {
$this->fs->unlink( $smush_png_path );
}
}
/**
* @param Media_Item $media_item
* @param $original_file_meta
*
* @return string
*/
private function file_name_to_path( $media_item, $original_file_meta ) {
return path_join( $media_item->get_dir(), $original_file_meta );
}
/**
* @param $media_item Media_Item
*
* @return void
*/
private function delete_backup_files_for_sizes( $media_item ) {
foreach ( $media_item->get_sizes() as $size ) {
$backup_file_path = $size->get_dir() . $size->get_file_name_without_extension() . '.bak.' . $size->get_extension();
if ( $this->fs->file_exists( $backup_file_path ) ) {
$this->fs->unlink( $backup_file_path );
}
}
}
}
......@@ -10,7 +10,6 @@
namespace Smush\Core;
use Smush\Core\Backups\Backups_Backward_Compatibility;
use Smush\Core\Backups\Backups_Controller;
use Smush\Core\Media\Media_Item_Controller;
use Smush\Core\Media_Library\Ajax_Media_Library_Scanner;
......@@ -151,9 +150,6 @@ class Modules {
$s3_controller = new S3_Controller();
$s3_controller->init();
$this->backward_compatibility = new Backups_Backward_Compatibility();
$this->backward_compatibility->init();
$backups_controller = new Backups_Controller();
$backups_controller->init();
......
......@@ -2,14 +2,14 @@
# This file is distributed under the GPLv2.
msgid ""
msgstr ""
"Project-Id-Version: Smush Pro 3.15.0\n"
"Project-Id-Version: Smush Pro 3.15.1\n"
"Report-Msgid-Bugs-To: https://wpmudev.com\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2023-11-02T08:17:53+00:00\n"
"POT-Creation-Date: 2023-11-15T11:57:59+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.9.0\n"
"X-Domain: wp-smushit\n"
......@@ -63,24 +63,24 @@ msgstr ""
msgid "Install Plugin"
msgstr ""
#: app/class-abstract-page.php:685
#: app/class-abstract-page.php:673
msgid "Lets you check if any images can be further optimized. Useful after changing settings."
msgstr ""
#: app/class-abstract-page.php:688
#: app/class-abstract-page.php:676
#: _src/react/bulk/media-library-scanner.js:35
msgid "Re-Check Images"
msgstr ""
#: app/class-abstract-page.php:692
#: app/class-abstract-page.php:680
msgid "Check Complete"
msgstr ""
#: app/class-abstract-page.php:699
#: app/class-abstract-page.php:687
msgid "Documentation"
msgstr ""
#: app/class-abstract-page.php:743
#: app/class-abstract-page.php:731
#: app/class-admin.php:503
#: app/class-admin.php:707
#: app/class-admin.php:751
......@@ -90,36 +90,36 @@ msgstr ""
msgid "Dismiss"
msgstr ""
#: app/class-abstract-page.php:770
#: app/class-abstract-page.php:758
msgid "Your settings have been updated!"
msgstr ""
#: app/class-abstract-page.php:777
#: app/class-abstract-page.php:765
#: app/pages/class-cdn.php:90
msgid "Your settings have been saved and changes are now propagating to the CDN. Changes can take up to 30 minutes to take effect but your images will continue to be served in the meantime, please be patient."
msgstr ""
#. translators: %1$s - <a>, %2$s - </a>
#: app/class-abstract-page.php:790
#: app/class-abstract-page.php:778
msgid "You have images that need smushing. %1$sBulk smush now!%2$s"
msgstr ""
#: app/class-abstract-page.php:922
#: app/class-abstract-page.php:910
#: app/class-admin.php:318
#: app/views/settings/permissions-meta-box.php:92
#: core/class-settings.php:1172
msgid "Tutorials"
msgstr ""
#: app/class-abstract-page.php:926
#: app/class-abstract-page.php:914
msgid "Loading tutorials..."
msgstr ""
#: app/class-abstract-page.php:927
#: app/class-abstract-page.php:915
msgid "min read"
msgstr ""
#: app/class-abstract-page.php:928
#: app/class-abstract-page.php:916
msgid "Read article"
msgstr ""
......@@ -1103,87 +1103,6 @@ msgstr ""
msgid "Background stop scanning modal"
msgstr ""
#: app/modals/ultra-compression.php:49
msgid "Smush Ultra Compression"
msgstr ""
#: app/modals/ultra-compression.php:59
msgid "Serve images faster with Ultra Smush"
msgstr ""
#: app/modals/ultra-compression.php:63
#: app/modals/updated.php:45
msgid "Experience up to 5x better compression than Super Smush. Optimize your images even further and make your pages load faster than ever. Level up your site performance with Ultra Smush now."
msgstr ""
#: app/modals/ultra-compression.php:66
msgid "Find out more"
msgstr ""
#: app/modals/ultra-compression.php:72
msgid "Already a member?"
msgstr ""
#: app/modals/ultra-compression.php:72
msgid "Connect site"
msgstr ""
#: app/modals/ultra-compression.php:77
msgid "Get the following Smush Pro features"
msgstr ""
#: app/modals/ultra-compression.php:86
msgid "No Limits, no restrictions"
msgstr ""
#: app/modals/ultra-compression.php:87
msgid "One-click bulk optimization, it's quick and easy to compress unlimited images."
msgstr ""
#: app/modals/ultra-compression.php:95
#: app/views/smush-upgrade-page.php:129
msgid "Compress images in the background"
msgstr ""
#: app/modals/ultra-compression.php:96
msgid "With background optimization, Smush will keep working even if you leave the page."
msgstr ""
#: app/modals/ultra-compression.php:106
#: app/views/smush-upgrade-page.php:135
msgid "Streamline your images with Smush CDN"
msgstr ""
#: app/modals/ultra-compression.php:107
msgid "Serve images faster and closer than ever from 114 data centers all over the globe."
msgstr ""
#: app/modals/ultra-compression.php:115
#: app/views/smush-upgrade-page.php:145
#: core/class-settings.php:307
msgid "Auto-convert PNGs to JPEGs (lossy)"
msgstr ""
#: app/modals/ultra-compression.php:116
msgid "Enjoy more savings and speed by auto-converting to the ideal file format."
msgstr ""
#: app/modals/ultra-compression.php:126
msgid "Serve next-gen WebP images"
msgstr ""
#: app/modals/ultra-compression.php:127
msgid "Serve lighter and more streamlined WebP images without losing quality."
msgstr ""
#: app/modals/ultra-compression.php:135
msgid "Faster sites with Hummingbird Pro"
msgstr ""
#: app/modals/ultra-compression.php:136
msgid "Optimize the performance of your sites further with a full caching suite and automatic asset optimization."
msgstr ""
#: app/modals/updated.php:31
msgid "Smush Updated Modal"
msgstr ""
......@@ -1192,6 +1111,10 @@ msgstr ""
msgid "New: Serve images faster with Ultra Smush"
msgstr ""
#: app/modals/updated.php:45
msgid "Experience up to 5x better compression than Super Smush. Optimize your images even further and make your pages load faster than ever. Level up your site performance with Ultra Smush now."
msgstr ""
#: app/modals/updated.php:51
msgid "Go to Settings"
msgstr ""
......@@ -1317,7 +1240,6 @@ msgid "New"
msgstr ""
#: app/pages/class-bulk.php:642
#: app/views/bulk/lossy-level.php:108
#: app/views/dashboard/cdn/meta-box-header.php:21
#: app/views/dashboard/summary-meta-box.php:69
#: app/views/dashboard/summary-meta-box.php:105
......@@ -1533,6 +1455,10 @@ msgstr ""
msgid "%1$sUltra:%2$s Unlock unprecedented compression levels up to 5x greater than Super, while preserving remarkable image quality. The ultimate choice for unparalleled performance."
msgstr ""
#: app/views/bulk/lossy-level.php:113
msgid "🚀 Ultra - unlock 5x more compression"
msgstr ""
#: app/views/bulk/media-lib-empty.php:5
#: app/views/nextgen/meta-box.php:25
msgid "No attachments found - Upload some images"
......@@ -2472,10 +2398,18 @@ msgstr ""
msgid "Need a one-click bulk optimization solution to quickly and easily compress your entire image library? Remove the ‘per batch’ bulk smushing restriction and increase the image size limit from 5MB to completely unlimited."
msgstr ""
#: app/views/smush-upgrade-page.php:129
msgid "Compress images in the background"
msgstr ""
#: app/views/smush-upgrade-page.php:130
msgid "Thanks to Background Optimization, you can leave the plugin interface while images are still being compressed. Smush will continue to work its magic in the background, leaving you free to do other things!"
msgstr ""
#: app/views/smush-upgrade-page.php:135
msgid "Streamline your images with Smush CDN"
msgstr ""
#: app/views/smush-upgrade-page.php:136
msgid "Use the blazing-fast Smush image CDN to automatically resize your files to the perfect size and serve WebP files (25% smaller than PNG and JPG) from 114 locations around the globe."
msgstr ""
......@@ -2488,6 +2422,11 @@ msgstr ""
msgid "Prefer not to use Smush CDN? Our standalone WebP feature allows you to serve next-gen images without sacrificing quality. You can also gracefully fall back to the older image formats for browsers that aren't compatible."
msgstr ""
#: app/views/smush-upgrade-page.php:145
#: core/class-settings.php:307
msgid "Auto-convert PNGs to JPEGs (lossy)"
msgstr ""
#: app/views/smush-upgrade-page.php:146
msgid "Smush looks for additional savings and automatically converts PNG files to JPEG if it will further reduce the size without a visible drop in quality. Now that's smart image compression."
msgstr ""
......@@ -2556,19 +2495,23 @@ msgstr ""
msgid "by WPMU DEV"
msgstr ""
#: app/views/summary/lossy-level.php:20
#: app/views/summary/lossy-level.php:24
#: core/class-settings.php:268
msgid "Smush Mode"
msgstr ""
#: app/views/summary/lossy-level.php:23
#: app/views/summary/lossy-level.php:27
msgid "Choose the level of compression that suits your needs."
msgstr ""
#: app/views/summary/lossy-level.php:24
#: app/views/summary/lossy-level.php:29
msgid "Improve page speed with Ultra"
msgstr ""
#: app/views/summary/lossy-level.php:31
msgid "5x your compression with Ultra"
msgstr ""
#: app/views/tabs.php:29
msgid "Navigate"
msgstr ""
......
=== Smush - Optimize, Compress and Lazy Load Images ===
Plugin Name: Smush - Lazy Load Images, Optimize & Compress Images
Version: 3.15.0
Version: 3.15.1
Author: WPMU DEV
Author URI: https://wpmudev.com/
Contributors: WPMUDEV, alexdunae
Tags: image optimization, optimize images, compress images, lazy load, resize images, convert webp, optimize, images, convert, webp, compress, optimization, lossless
Tags: optimize images, convert webp, webp, image optimization, compress images, lazy load, resize images, image optimizer, image compressor, performance, reduce image size
Requires at least: 5.3
Tested up to: 6.4
Stable tag: 3.15.0
Requires PHP: 5.6
Stable tag: 3.15.1
Requires PHP: 7.4
License: GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
Compress images & optimize images with built-in lossless compression, lazy load, WebP conversion, and resize detection to make your site load amazingly fast.
......@@ -55,7 +55,7 @@ Discover the features that set Smush apart from other image optimization plugins
- **Incorrect Image Size Detection** - Quickly locate images that are slowing down your site.
- **Directory Smush** - Optimize images even if they aren't in the default WordPress media library.
- **Automated Optimization** - Asynchronously auto-smush your attachments for super fast compression on upload.
- **No Monthly Limits** - Enjoy free optimization of all your images forever (no daily, monthly, or annual limits).
- **No Monthly Limits** - Optimize all of your images (up to 5 MB in size) free forever (no daily, monthly, or annual limits).
- **Gutenberg Block Integration** - View image compression information directly in image blocks.
- **Multisite Compatible** - Flexible global and subsite settings for multisite installations.
- **Optimize All Media Files, Not Just Images** - Smush supports optimization for PNG, JPEG, and GIF files.
......@@ -232,6 +232,9 @@ It depends what side of the pond you live on... but whether you say optimize, op
== Changelog ==
= 3.15.1 ( 2023-11-15 ) =
- Improvement: Code stability improvements
= 3.15.0 ( 2023-10-11 ) =
- Improvement: Image size limit increased for pro version
- Fix: Query running frequently and causing performance issues on some sites
......
......@@ -4,4 +4,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit1dd71c43a072960b069e698ead0e3a45::getLoader();
return ComposerAutoloaderInitde32100e640aa612e24a9247e5992884::getLoader();
......
......@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit1dd71c43a072960b069e698ead0e3a45
class ComposerAutoloaderInitde32100e640aa612e24a9247e5992884
{
private static $loader;
......@@ -22,15 +22,15 @@ class ComposerAutoloaderInit1dd71c43a072960b069e698ead0e3a45
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit1dd71c43a072960b069e698ead0e3a45', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInitde32100e640aa612e24a9247e5992884', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit1dd71c43a072960b069e698ead0e3a45', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInitde32100e640aa612e24a9247e5992884', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require_once __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit1dd71c43a072960b069e698ead0e3a45::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInitde32100e640aa612e24a9247e5992884::getInitializer($loader));
} else {
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
......@@ -51,19 +51,19 @@ class ComposerAutoloaderInit1dd71c43a072960b069e698ead0e3a45
$loader->register(true);
if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInit1dd71c43a072960b069e698ead0e3a45::$files;
$includeFiles = Composer\Autoload\ComposerStaticInitde32100e640aa612e24a9247e5992884::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequire1dd71c43a072960b069e698ead0e3a45($fileIdentifier, $file);
composerRequirede32100e640aa612e24a9247e5992884($fileIdentifier, $file);
}
return $loader;
}
}
function composerRequire1dd71c43a072960b069e698ead0e3a45($fileIdentifier, $file)
function composerRequirede32100e640aa612e24a9247e5992884($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;
......
......@@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInit1dd71c43a072960b069e698ead0e3a45
class ComposerStaticInitde32100e640aa612e24a9247e5992884
{
public static $files = array (
'1f155afceeab454b94183cdd8d5248a6' => __DIR__ . '/..' . '/mixpanel/mixpanel-php/lib/Mixpanel.php',
......
......@@ -13,7 +13,7 @@
* Plugin Name: Smush
* Plugin URI: http://wordpress.org/plugins/wp-smushit/
* Description: Reduce image file sizes, improve performance and boost your SEO using the free <a href="https://wpmudev.com/">WPMU DEV</a> WordPress Smush API.
* Version: 3.15.0
* Version: 3.15.1
* Author: WPMU DEV
* Author URI: https://profiles.wordpress.org/wpmudev/
* License: GPLv2
......@@ -48,7 +48,7 @@ if ( ! defined( 'WPINC' ) ) {
}
if ( ! defined( 'WP_SMUSH_VERSION' ) ) {
define( 'WP_SMUSH_VERSION', '3.15.0' );
define( 'WP_SMUSH_VERSION', '3.15.1' );
}
// Used to define body class.
if ( ! defined( 'WP_SHARED_UI_VERSION' ) ) {
......