fix
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,921 @@
|
||||
/**
|
||||
* Styles for the Widget to be displayed in the plugin
|
||||
*/
|
||||
|
||||
@positiveColor: #bbd2a1;
|
||||
@webpPositiveColor: #8CC152;
|
||||
@negativeColor: #D2D3D6;
|
||||
@neutralColor: #828282;
|
||||
|
||||
@errorColor: #fb5d49;
|
||||
@waringColor: #ffb635;
|
||||
|
||||
@greyButtonBg: #f3f3f3;
|
||||
@greyButtonColor: #656565;
|
||||
|
||||
@greenButtonBg: #c9deb2;
|
||||
@greenButtonColor: #586549;
|
||||
|
||||
@orangeButtonBg: #fdd599;
|
||||
@orangeButtonColor: #a57b3c;
|
||||
|
||||
#WBCR {
|
||||
.premium-label(@position: relative, @positionTop:-8px, @positionLeft:-10px, @positionRight:auto) {
|
||||
display: inline-block;
|
||||
position: @position;
|
||||
content: 'PRO';
|
||||
background: #ff5722;
|
||||
border-radius: 4px;
|
||||
color: #fff;
|
||||
font-size: 10px;
|
||||
line-height: 1;
|
||||
font-style: normal;
|
||||
padding: 4px 6px;
|
||||
margin-left: 4px;
|
||||
vertical-align: top;
|
||||
top: @positionTop;
|
||||
left: @positionLeft;
|
||||
right: @positionRight;
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
.factory-bootstrap-000 {
|
||||
select.form-control {
|
||||
background: #efefef url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E) no-repeat right 5px top 55% !important;
|
||||
}
|
||||
|
||||
.btn-default.active, .factory-bootstrap-000 .btn-default:active {
|
||||
text-shadow: none;
|
||||
color: #fff;
|
||||
background-color: #33aad5;
|
||||
-webkit-box-shadow: inset 0 1px 1px #0074a2;
|
||||
box-shadow: inset 0 1px 3px #0074a2;
|
||||
border-top: 1px solid #0074a2;
|
||||
border-bottom: 1px solid #0074a2;
|
||||
border-left: 1px solid #0074a2;
|
||||
}
|
||||
|
||||
.btn-group > .btn:last-of-type {
|
||||
border-top-right-radius: 3px;
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.wio-clear {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
// This code hides tabs custom folders and nextgen gallery
|
||||
// -----------------------------------------------
|
||||
#io_folders_statistic-wbcr_clearfy-tab, #io_nextgen_gallery_statistic-wbcr_clearfy-tab {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
// Styling tabs on statistics pages
|
||||
// -----------------------------------------------
|
||||
.wrio-statistic-nav {
|
||||
margin: 0;
|
||||
//box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
||||
background: #efefef;
|
||||
|
||||
ul {
|
||||
margin: 0 0 0 10px;
|
||||
|
||||
li {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
//width: 300px;
|
||||
margin: 0 5px 0 0;
|
||||
background: #ffffff;
|
||||
box-shadow: 0 -2px 0 #eaeaea;
|
||||
|
||||
&:hover {
|
||||
background: #f7f7f7;
|
||||
}
|
||||
|
||||
&.active {
|
||||
//box-shadow: 0 -2px 0 #c9deb2;
|
||||
background: #f7f7f7;
|
||||
border-top: 1px solid #d4d4d4;
|
||||
border-left: 1px solid #d4d4d4;
|
||||
border-right: 1px solid #d4d4d4;
|
||||
border-bottom: 1px solid #f7f7f7;
|
||||
margin-bottom: -1px;
|
||||
|
||||
a {
|
||||
color: #222;
|
||||
|
||||
.wrio-statistic-tab-percent {
|
||||
border: 2px dashed #8bc34a;
|
||||
color: #5e8237;
|
||||
}
|
||||
}
|
||||
|
||||
.dashicons, .dashicons-before:before {
|
||||
color: #ff8b66;
|
||||
}
|
||||
}
|
||||
|
||||
.wrio-statistic-tab {
|
||||
display: block;
|
||||
padding: 10px 20px 10px 20px;
|
||||
text-decoration: none;
|
||||
color: #d4d4d4;
|
||||
font-size: 22px;
|
||||
line-height: 2;
|
||||
|
||||
&:active, &:focus {
|
||||
background: 0;
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.dashicons, .dashicons-before:before {
|
||||
display: inline-block;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
font-size: 30px;
|
||||
line-height: 1.5;
|
||||
margin-right: 15px;
|
||||
color: #d4d4d4;
|
||||
}
|
||||
|
||||
|
||||
.wrio-statistic-tab-percent {
|
||||
display: inline-block;
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
border-radius: 100px;
|
||||
border: 2px dashed #e4e4e4;
|
||||
padding: 5px;
|
||||
margin-left: 30px;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
color: #bdbdbd;
|
||||
}
|
||||
}
|
||||
|
||||
.wrio-statistic-tab-premium-label:after {
|
||||
.premium-label(absolute, 10px, auto, 10px);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Table style. The table is used for optimization log
|
||||
.wrio-table {
|
||||
width: 100%;
|
||||
table-layout: fixed;
|
||||
box-sizing: border-box;
|
||||
border-spacing: 3px;
|
||||
background: #fff;
|
||||
border-top: 2px dashed #cac9c9;
|
||||
|
||||
th, td {
|
||||
padding: 16px 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #f3f3f3;
|
||||
color: #777777;
|
||||
box-shadow: 0 1px 0 rgb(216, 216, 216);
|
||||
|
||||
&:nth-child(2n+1) {
|
||||
background: #f9f9f9
|
||||
}
|
||||
}
|
||||
|
||||
tr.wrio-error {
|
||||
background-color: #ffe9e9 !important;
|
||||
}
|
||||
|
||||
.wrio-table-spinner {
|
||||
background: url("../img/quick-start-loader.gif") center center no-repeat;
|
||||
}
|
||||
|
||||
.wrio-table-highlighter {
|
||||
display: inline-block;
|
||||
padding: 3px 7px;
|
||||
background: @greyButtonBg;
|
||||
}
|
||||
|
||||
.wbcr-rio-server-success {
|
||||
color: @positiveColor;
|
||||
}
|
||||
|
||||
.wbcr-rio-server-error {
|
||||
color: @errorColor;
|
||||
}
|
||||
|
||||
.wbcr-rio-server-warning {
|
||||
color: @waringColor;
|
||||
}
|
||||
|
||||
&.wbcr-rio-folders-table {
|
||||
td:nth-child(3) {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.wrio-servers {
|
||||
padding: 20px 20px;
|
||||
|
||||
label {
|
||||
span {
|
||||
display: block;
|
||||
font-weight: normal;
|
||||
font-size: 12px;
|
||||
color: #b7b2b2;
|
||||
}
|
||||
}
|
||||
|
||||
#wrio-change-optimization-server {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
max-width: 400px;
|
||||
margin-right: 15px;
|
||||
margin-bottom: 0;
|
||||
border: 1px solid #d2d0d0;
|
||||
background-color: #efefef;
|
||||
}
|
||||
|
||||
.wrio-servers-info {
|
||||
margin: 0 0 0;
|
||||
padding: 20px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.wrio-server-status-wrap {
|
||||
display: inline-block;
|
||||
margin-top: 8px;
|
||||
|
||||
.wrio-server-status {
|
||||
background: transparent;
|
||||
color: #fff;
|
||||
padding: 3px 5px;
|
||||
border-radius: 4px;
|
||||
|
||||
&.wrio-down {
|
||||
background: #ff5722;
|
||||
}
|
||||
|
||||
&.wrio-stable {
|
||||
background: #8bc34a;
|
||||
}
|
||||
|
||||
&.wrio-server-check-proccess {
|
||||
display: inline-block;
|
||||
height: 10px;
|
||||
width: 30px;
|
||||
background: url("../img/quick-start-loader.gif") center no-repeat;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.wrio-premium-user-balance-wrap {
|
||||
display: inline-block;
|
||||
margin-top: 8px;
|
||||
margin-left: 10px;
|
||||
|
||||
.wrio-premium-user-balance {
|
||||
color: #fff;
|
||||
padding: 3px 5px;
|
||||
border-radius: 4px;
|
||||
background: #ffc107;
|
||||
}
|
||||
|
||||
.wrio-premium-user-balance-check-proccess {
|
||||
display: inline-block;
|
||||
height: 10px;
|
||||
width: 30px;
|
||||
background: url("../img/quick-start-loader.gif") center no-repeat;
|
||||
}
|
||||
}
|
||||
|
||||
.wrio-premium-user-update-wrap {
|
||||
display: inline-block;
|
||||
margin-top: 8px;
|
||||
margin-left: 10px;
|
||||
|
||||
.wrio-premium-user-update {
|
||||
color: #fff;
|
||||
padding: 3px 5px;
|
||||
border-radius: 4px;
|
||||
background: #ffc107;
|
||||
}
|
||||
|
||||
.wrio-premium-user-update-check-proccess {
|
||||
display: inline-block;
|
||||
height: 10px;
|
||||
width: 30px;
|
||||
background: url("../img/quick-start-loader.gif") center no-repeat;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.wio-columns {
|
||||
overflow: hidden;
|
||||
padding: 15px 0;
|
||||
counter-reset: cols;
|
||||
|
||||
[class^="col-"] {
|
||||
float: left;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.col-1-3 {
|
||||
width: 33.333%;
|
||||
padding-left: 28px;
|
||||
}
|
||||
|
||||
.col-2-3 {
|
||||
width: 66.666%;
|
||||
padding-left: 28px
|
||||
}
|
||||
|
||||
.col-1-2 {
|
||||
width: 50%;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.col-statistics.col-statistics {
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
.col-chart.col-chart {
|
||||
width: 40%;
|
||||
position: relative;
|
||||
padding: 20px;
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
background: #f1f1f1b3;
|
||||
color: #abacaf;
|
||||
font-weight: bold;
|
||||
border-radius: 5px;
|
||||
margin-top: 10px;
|
||||
text-align: left;
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
.wio-col {
|
||||
float: left;
|
||||
width: 50%;
|
||||
box-sizing: border-box;
|
||||
-webkit-flex-basis: 50%;
|
||||
-ms-flex-preferred-size: 50%;
|
||||
flex-basis: 50%;
|
||||
}
|
||||
|
||||
.wio-col {
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.wio-col + .wio-col {
|
||||
padding-right: 0;
|
||||
padding-left: 50px;
|
||||
}
|
||||
|
||||
.wio-col:target {
|
||||
animation: wiohello 1s 3 linear backwards;
|
||||
}
|
||||
|
||||
.wio-number-you-optimized {
|
||||
margin-bottom: 1.35em;
|
||||
overflow: hidden;
|
||||
|
||||
#wio-total-optimized-attachments-pct {
|
||||
color: @neutralColor;
|
||||
}
|
||||
|
||||
.wio-number {
|
||||
display: table-cell;
|
||||
padding-right: 15px;
|
||||
font-size: 48px;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
color: @neutralColor;
|
||||
}
|
||||
|
||||
.wio-text {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
overflow: hidden;
|
||||
font-size: 12px;
|
||||
color: @neutralColor;
|
||||
}
|
||||
|
||||
& > p {
|
||||
display: table;
|
||||
}
|
||||
}
|
||||
|
||||
.wio-bars {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
.wio-bars p {
|
||||
font-size: 12px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.wio-bars + .wio-number-you-optimized {
|
||||
border-bottom: 0;
|
||||
padding-top: 0.85em;
|
||||
}
|
||||
|
||||
.wio-bars + .wio-number-you-optimized p {
|
||||
color: darken(@positiveColor, 10);
|
||||
}
|
||||
|
||||
.wio-bar-negative {
|
||||
.wio-progress {
|
||||
background: @negativeColor;
|
||||
}
|
||||
|
||||
.wio-barnb {
|
||||
color: darken(@negativeColor, 20);
|
||||
}
|
||||
}
|
||||
|
||||
.wio-progress {
|
||||
height: 8px;
|
||||
transition: width .3s;
|
||||
|
||||
/*.wio-bar-negative {
|
||||
width: 92% !important;
|
||||
}*/
|
||||
}
|
||||
|
||||
.wio-bar-positive {
|
||||
.wio-progress {
|
||||
background: @positiveColor;
|
||||
}
|
||||
|
||||
.wio-barnb {
|
||||
color: darken(@positiveColor, 10);
|
||||
}
|
||||
}
|
||||
|
||||
.wio-bar-primary {
|
||||
.wio-progress {
|
||||
background: @positiveColor;
|
||||
}
|
||||
|
||||
.wio-barnb {
|
||||
color: darken(@positiveColor, 10);
|
||||
}
|
||||
}
|
||||
|
||||
.wio-bar-webp {
|
||||
.wio-progress {
|
||||
background: @webpPositiveColor;
|
||||
}
|
||||
|
||||
.wio-barnb {
|
||||
color: darken(@webpPositiveColor, 10);
|
||||
}
|
||||
}
|
||||
|
||||
.wio-right-outside-number .wio-barnb {
|
||||
display: block;
|
||||
margin-right: -5.25em;
|
||||
text-align: right;
|
||||
font-weight: bold;
|
||||
line-height: .8;
|
||||
}
|
||||
|
||||
/* Doughnut */
|
||||
|
||||
.wio-chart {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.wio-chart-container {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.wio-chart-container canvas {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.wio-overview-chart-container {
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.wio-overview-chart-container-webp {
|
||||
float: right;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.wio-chart-wrapper {
|
||||
position: relative;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
.wio-chart-percent {
|
||||
color: #afafaf;
|
||||
position: absolute;
|
||||
font-size: 35px;
|
||||
font-weight: 600;
|
||||
left: 50%;
|
||||
bottom: 167px;
|
||||
z-index: 100;
|
||||
transform: translateX(-45%);
|
||||
-webkit-transform: translateX(-45%);
|
||||
-ms-transform: translateX(-45%);
|
||||
}
|
||||
|
||||
.wio-chart-percent span {
|
||||
font-size: 20px;
|
||||
vertical-align: super;
|
||||
}
|
||||
|
||||
#wio-overview-chart-legend {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.wio-doughnut-legend li {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
margin-bottom: 15px;
|
||||
border-radius: 5px;
|
||||
padding: 3px 8px 2px 31px;
|
||||
font-size: 9px;
|
||||
cursor: default;
|
||||
-webkit-transition: background-color 200ms ease-in-out;
|
||||
-moz-transition: background-color 200ms ease-in-out;
|
||||
-o-transition: background-color 200ms ease-in-out;
|
||||
transition: background-color 200ms ease-in-out;
|
||||
}
|
||||
|
||||
.wio-doughnut-legend li span {
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.wio-optimize-button {
|
||||
min-width: 180px;
|
||||
padding: 12px 30px;
|
||||
background: @greenButtonBg;
|
||||
color: @greenButtonColor;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
font-size: 14px;
|
||||
text-transform: uppercase !important;
|
||||
font-weight: bold;
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
|
||||
&:active {
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
background: lighten(@greenButtonBg, 10%);
|
||||
color: lighten(@greenButtonColor, 30%);
|
||||
}
|
||||
|
||||
&.wio-running {
|
||||
color: @orangeButtonColor;
|
||||
background: @orangeButtonBg url("../img/Spinner-1s-33px.gif") 10px center no-repeat;
|
||||
padding-left: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
.wio-global-optim-phrase {
|
||||
width: 180px;
|
||||
padding-top: 20px;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wio-total-percent, .wio-total-percent-webp {
|
||||
color: darken(@positiveColor, 20);
|
||||
}
|
||||
|
||||
#wio-start-msg-top, #wio-start-msg-right, #wio-start-msg-complete {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wio-text-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
span.wio-num {
|
||||
display: inline !important;
|
||||
position: inherit !important;
|
||||
}
|
||||
|
||||
|
||||
// WIDGETS SPACE
|
||||
// -----------------------------------------------
|
||||
.wio-image-optimize-board {
|
||||
padding-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.wio-page-statistic {
|
||||
padding: 20px;
|
||||
|
||||
|
||||
.wio-optimize-statistic {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.wrio-statistic-buttons-wrap {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
.wio-stat-totals {
|
||||
padding: 20px 20px;
|
||||
background: #efefef;
|
||||
font-weight: bold;
|
||||
vertical-align: middle;
|
||||
|
||||
&__counter {
|
||||
display: inline-block;
|
||||
background: #ffffff;
|
||||
min-width: 30px;
|
||||
height: 25px;
|
||||
padding: 2px 5px;
|
||||
border-radius: 3px;
|
||||
border: 1px dashed #bdb5b5;
|
||||
color: #222;
|
||||
font-weight: normal;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&__loading {
|
||||
color: #fff;
|
||||
background: #fff url("../img/quick-start-loader.gif") center no-repeat !important;
|
||||
background-size: 16px 16px !important;
|
||||
}
|
||||
|
||||
&__totals {
|
||||
|
||||
}
|
||||
|
||||
&__optimized {
|
||||
background: #8bc34a;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
.wrio-optimization-progress {
|
||||
//margin-top: 30px;
|
||||
background: none;
|
||||
padding: 0;
|
||||
|
||||
h4 {
|
||||
font-size: 15px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
/*button {
|
||||
padding: 5px 10px;
|
||||
border: 0;
|
||||
font-size: 11px;
|
||||
text-transform: uppercase !important;
|
||||
font-weight: bold;
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
background: @greyButtonBg;
|
||||
color: @greyButtonColor;
|
||||
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
||||
|
||||
&:active {
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
&.wbcr-rio-loading {
|
||||
width: 56px;
|
||||
font-size: 0;
|
||||
background: @greyButtonBg url("../img/quick-start-loader.gif") center no-repeat;
|
||||
}
|
||||
|
||||
&.wbcr-rio-selected {
|
||||
background: #f3efe2;
|
||||
color: #d8d8d8;
|
||||
|
||||
&:active {
|
||||
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
.wbcr-rio-warning-message {
|
||||
padding: 20px;
|
||||
background: #efefef;
|
||||
font-size: 15px;
|
||||
color: #b7b7b7;
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
|
||||
.wio-widget {
|
||||
padding: 0 !important;
|
||||
|
||||
.wio-chart-percent {
|
||||
font-size: 44px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.wio-bars {
|
||||
width: 60%;
|
||||
margin-left: 155px;
|
||||
}
|
||||
|
||||
.col-chart.col-chart {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.col-controls {
|
||||
width: 45%;
|
||||
padding-left: 5px;
|
||||
padding-top: 110px
|
||||
}
|
||||
|
||||
.wio-doughnut-legend {
|
||||
/*padding-top:30px;*/
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.wio-widget-bottom {
|
||||
display: table;
|
||||
padding-top: 20px !important;
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.wio-widget-bottom li {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.wio-widget-bottom li:first-child {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
// FORMS SPACE
|
||||
// -----------------------------------------------
|
||||
.factory-checkbox {
|
||||
&.wrio-checkbox-premium-label:after {
|
||||
.premium-label();
|
||||
}
|
||||
}
|
||||
|
||||
.factory-checkbox-disabled {
|
||||
input, button {
|
||||
pointer-events: none;
|
||||
cursor: not-allowed;
|
||||
opacity: .65;
|
||||
filter: alpha(opacity=65);
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
#wrio-webp-options, #wrio-error-log-options {
|
||||
h3 {
|
||||
font-size: 14px;
|
||||
margin: 0 0 10px 0;
|
||||
font-weight: 600;
|
||||
color: #565656;
|
||||
}
|
||||
|
||||
.wrio-webp-options-info {
|
||||
color: #8a8787;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding-left: 0;
|
||||
|
||||
li {
|
||||
&:after {
|
||||
content: '';
|
||||
display: block;
|
||||
clear: both;;
|
||||
}
|
||||
|
||||
label {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.wrio-webp-options-radio, .wrio-error-log-options-checkbox {
|
||||
display: block;
|
||||
float: left;
|
||||
margin-top: 2px;
|
||||
margin-right: 8px;
|
||||
|
||||
&:focus {
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
.wrio-webp-options-info, .wrio-error-log-options-info {
|
||||
padding-left: 25px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// MEDIA SPACE
|
||||
// -----------------------------------------------
|
||||
|
||||
@media (max-width: 830px) {
|
||||
.wio [class^="col-"] {
|
||||
float: none;
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
|
||||
.wio .col-1-3,
|
||||
.wio .col-1-2 {
|
||||
width: auto;
|
||||
padding: 0 28px;
|
||||
clear: both;
|
||||
padding-top: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes wiohello {
|
||||
0%, 100% {
|
||||
background: #FFF;
|
||||
}
|
||||
50% {
|
||||
background: #F4F7F9;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1520px) and (min-width: 1381px), (max-width: 1086px) {
|
||||
.wio-columns {
|
||||
.col-statistics.col-statistics, .col-chart.col-chart {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media (max-width: 808px) {
|
||||
.wio-columns {
|
||||
.col-statistics.col-statistics, .col-chart.col-chart {
|
||||
width: auto;
|
||||
float: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.col-chart.col-chart {
|
||||
margin-top: 3em;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*@media (max-width: 1380px) and (min-width: 1246px), (max-width: 380px) {
|
||||
.wio-overview-chart-container {
|
||||
float: none;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1380px) and (min-width: 1246px), (max-width: 380px) {
|
||||
.wio-overview-chart-container {
|
||||
float: none;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.wio-doughnut-legend {
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
.wio-global-optim-phrase {
|
||||
padding-top: 0;
|
||||
width: auto;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
// silence is golden
|
||||
@@ -0,0 +1,235 @@
|
||||
/**
|
||||
* == Custom column & Metabox
|
||||
*/
|
||||
.column-wio_optimized_file.column-wio_optimized_file {
|
||||
width: 300px;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.column-wio_optimized_file > * {
|
||||
max-width: 235px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
@media (min-width: 1151px) and (max-width: 1800px) {
|
||||
.column-wio_optimized_file.column-wio_optimized_file {
|
||||
width: 235px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 783px) and (max-width: 1150px) {
|
||||
.column-wio_optimized_file.column-wio_optimized_file {
|
||||
width: 13em;
|
||||
}
|
||||
table.media .column-title .has-media-icon ~ .row-actions.row-actions {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
@media (max-width: 782px) {
|
||||
table.media .column-wio_optimized_file.column-wio_optimized_file {
|
||||
text-align: left;
|
||||
}
|
||||
table.media .wio-datas-more-action,
|
||||
table.media .wio-datas-actions-links {
|
||||
text-align: center;
|
||||
}
|
||||
table.media .column-wio_optimized_file > *,
|
||||
table.media .column-wio_optimized_file .wio-datas-actions-links a {
|
||||
max-width: 100%;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
@media (min-width: 783px) and (max-width: 1150px), (max-width: 360px) {
|
||||
table.media .wio-hide-if-small {
|
||||
position: absolute;
|
||||
margin: -1px;
|
||||
padding: 0;
|
||||
height: 1px;
|
||||
width: 1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0 0 0 0);
|
||||
border: 0;
|
||||
word-wrap: normal !important; /* Many screen reader and browser combinations announce broken words as they would appear visually. */
|
||||
}
|
||||
}
|
||||
.compat-field-wio .label {
|
||||
vertical-align: top;
|
||||
}
|
||||
.compat-field-wio ul.wio-datas-list {
|
||||
margin-top: 7px;
|
||||
font-size: 11px;
|
||||
}
|
||||
ul.wio-datas-list.wio-datas-list {
|
||||
margin: 0 auto;
|
||||
color: #555;
|
||||
font-size: 10px;
|
||||
}
|
||||
ul.wio-datas-list .big {
|
||||
font-size: 12px;
|
||||
color: #40B1D0;
|
||||
}
|
||||
.wio-data-item {
|
||||
overflow: hidden;
|
||||
}
|
||||
li.wio-data-item {
|
||||
clear: both;
|
||||
margin-bottom: 2px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
}
|
||||
ul.wio-datas-list .wio-data-item span.data,
|
||||
ul.wio-datas-list .wio-data-item strong {
|
||||
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
ul.wio-datas-list .wio-data-item span.data {
|
||||
text-align: left;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.compat-field-wio .wio-datas-list .wio-data-item .data {
|
||||
width: 130px;
|
||||
text-align: left;
|
||||
font-weight: bold;
|
||||
}
|
||||
ul.wio-datas-list .wio-data-item strong {
|
||||
text-align: left;
|
||||
padding-left: 5px;
|
||||
}
|
||||
.media-sidebar .wio-datas-list .wio-data-item .data {
|
||||
width: auto;
|
||||
float: none;
|
||||
}
|
||||
.media-sidebar .wio-datas-list .wio-data-item strong {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
float: none;
|
||||
}
|
||||
.media-sidebar .wio-datas-list .wio-data-item .wio-chart {
|
||||
float: left;
|
||||
}
|
||||
.wio-datas-more-action.wio-datas-more-action {
|
||||
margin: .4em auto;
|
||||
background: linear-gradient(to bottom, transparent, transparent 49%, rgba(0,0,0,.075) 50%, rgba(0,0,0,.075) 58%, transparent 58%, transparent);
|
||||
}
|
||||
.wio-datas-more-action a {
|
||||
display: inline-block;
|
||||
padding: 0 5px;
|
||||
background: #40B1D0;
|
||||
color: #FFF;
|
||||
text-transform: uppercase;
|
||||
font-size: 9px;
|
||||
font-weight: bold;
|
||||
line-height: 1.9;
|
||||
text-decoration: none;
|
||||
}
|
||||
.wio-datas-more-action a.is-open {
|
||||
background: #555;
|
||||
}
|
||||
.wio-datas-more-action a.is-open .dashicons {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
.wio-datas-more-action a .dashicons {
|
||||
font-size: 14px;
|
||||
vertical-align: middle;
|
||||
line-height: .8;
|
||||
}
|
||||
.wio-datas-more-action a .dashicons:before {
|
||||
vertical-align: middle;
|
||||
line-height: 20px;
|
||||
}
|
||||
.wio-datas-more-action .the-text {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
height: auto;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ul.wio-datas-details.wio-datas-details {
|
||||
margin: .7em auto;
|
||||
}
|
||||
.wio-datas-details strong {
|
||||
color: #40B1D0;
|
||||
}
|
||||
.wio-datas-details .original {
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.wio-datas-actions-links {
|
||||
overflow: hidden;
|
||||
border-top: 2px solid transparent;
|
||||
padding-top: 5px;
|
||||
font-size: 8px;
|
||||
}
|
||||
.nggform .wio-datas-actions-links {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
.nggform .row-actions {
|
||||
z-index: 1;
|
||||
}
|
||||
.wio-datas-actions-links a {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
padding-left: 17px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
}
|
||||
.compat-field-wio .wio-datas-actions-links {
|
||||
max-width: 300px;
|
||||
}
|
||||
.misc-pub-wio .wio-datas-actions-links {
|
||||
border-top: 2px solid #f2f2f2;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
/* Library */
|
||||
.column-wio_optimized_file .wio-datas-actions-links a {
|
||||
margin: 0 .7em;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
/* Media edition */
|
||||
.compat-field-wio .wio-datas-actions-links a,
|
||||
.misc-pub-wio .wio-datas-actions-links a {
|
||||
font-size: 10px;
|
||||
float: left;
|
||||
width: 50%;
|
||||
}
|
||||
.media-sidebar .compat-field-wio .wio-datas-actions-links a,
|
||||
.submitbox .misc-pub-wio .wio-datas-actions-links a {
|
||||
display: block;
|
||||
width: auto;
|
||||
float: none;
|
||||
}
|
||||
.wio-datas-actions-links a:only-child {
|
||||
float: none;
|
||||
width: auto;
|
||||
}
|
||||
.wio-datas-details.is-open + .wio-datas-actions-links {
|
||||
border-top-color: rgba(0,0,0,.075);
|
||||
}
|
||||
.wio-datas-actions-links .dashicons {
|
||||
position: absolute;
|
||||
left: 0; top: 4px;
|
||||
width: 12px;
|
||||
margin-right: 2px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
/* Button spacing */
|
||||
td.column-wio_optimized_file {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
.column-wio_optimized_file .wio-datas-actions-links {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
gap: 8px 1em;
|
||||
}
|
||||
.column-wio_optimized_file .wio-datas-actions-links a {
|
||||
margin: 0;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
/* PRO labels for dropdown buttons */
|
||||
button[data-value="googlepage"]:after,
|
||||
button[data-value="background"]:after {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
content: 'PRO';
|
||||
background: #ff5722;
|
||||
border-radius: 4px;
|
||||
color: #fff;
|
||||
font-size: 10px;
|
||||
line-height: 1;
|
||||
font-style: normal;
|
||||
padding: 4px 6px;
|
||||
margin-left: 4px;
|
||||
vertical-align: top;
|
||||
top: -8px;
|
||||
right: 0;
|
||||
z-index: 11;
|
||||
}
|
||||
@@ -0,0 +1,410 @@
|
||||
|
||||
/**
|
||||
* == Columns
|
||||
*/
|
||||
.wio-columns {
|
||||
overflow: hidden;
|
||||
padding: 15px 0;
|
||||
counter-reset: cols;
|
||||
}
|
||||
|
||||
.wio-columns [class^="col-"] {
|
||||
float: left;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.wio-columns .col-1-3 {
|
||||
width: 33.333%;
|
||||
padding-left: 28px;
|
||||
}
|
||||
|
||||
.wio .col-2-3 {
|
||||
width: 66.666%;
|
||||
padding-left: 28px
|
||||
}
|
||||
|
||||
.wio .col-1-2 {
|
||||
width: 50%;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
@media (max-width: 830px) {
|
||||
.wio [class^="col-"] {
|
||||
float: none;
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
|
||||
.wio .col-1-3,
|
||||
.wio .col-1-2 {
|
||||
width: auto;
|
||||
padding: 0 28px;
|
||||
clear: both;
|
||||
padding-top: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
/* Col, behavior depending on parent */
|
||||
.wio-col {
|
||||
float: left;
|
||||
width: 50%;
|
||||
box-sizing: border-box;
|
||||
-webkit-flex-basis: 50%;
|
||||
-ms-flex-preferred-size: 50%;
|
||||
flex-basis: 50%;
|
||||
}
|
||||
|
||||
.wio-col {
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.wio-col + .wio-col {
|
||||
padding-right: 0;
|
||||
padding-left: 50px;
|
||||
}
|
||||
|
||||
.wio-col:target {
|
||||
animation: wiohello 1s 3 linear backwards;
|
||||
}
|
||||
|
||||
@keyframes wiohello {
|
||||
0%, 100% {
|
||||
background: #FFF;
|
||||
}
|
||||
50% {
|
||||
background: #F4F7F9;
|
||||
}
|
||||
}
|
||||
|
||||
.wio-columns .col-statistics.col-statistics {
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
@media (max-width: 1520px) and (min-width: 1381px), (max-width: 1086px) {
|
||||
.wio-columns .col-statistics.col-statistics,
|
||||
.wio-columns .col-chart.col-chart {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 808px) {
|
||||
.wio-columns .col-statistics.col-statistics,
|
||||
.wio-columns .col-chart.col-chart {
|
||||
width: auto;
|
||||
float: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.wio-columns .col-chart.col-chart {
|
||||
margin-top: 3em;
|
||||
}
|
||||
}
|
||||
|
||||
/* Number display */
|
||||
.wio-number-you-optimized {
|
||||
margin-bottom: 1.35em;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.wio-number-you-optimized .number {
|
||||
display: table-cell;
|
||||
padding-right: 15px;
|
||||
font-size: 48px;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.wio-number-you-optimized [id="wio-total-optimized-attachments-pct"] {
|
||||
color: #40B1D0;
|
||||
}
|
||||
|
||||
.wio-number-you-optimized .text {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
overflow: hidden;
|
||||
font-size: 12px;
|
||||
color: #626E7B;
|
||||
}
|
||||
|
||||
.wio-number-you-optimized > p {
|
||||
display: table;
|
||||
}
|
||||
|
||||
/* Number and bars */
|
||||
.wio-bars {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
.wio-bars p {
|
||||
font-size: 12px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.wio-bars + .wio-number-you-optimized {
|
||||
border-bottom: 0;
|
||||
padding-top: 0.85em;
|
||||
}
|
||||
|
||||
.wio-bars + .wio-number-you-optimized p {
|
||||
color: #46b1ce;
|
||||
}
|
||||
|
||||
.wio-bar-negative .wio-progress {
|
||||
background: #D2D3D6;
|
||||
}
|
||||
|
||||
.wio-bar-negative .wio-barnb {
|
||||
color: #7A8996;
|
||||
}
|
||||
|
||||
.wio-bar-neutral .wio-progress {
|
||||
background: #F5A623;
|
||||
}
|
||||
|
||||
.wio-space-left .wio-bar-negative .wio-progress {
|
||||
background: #C51162;
|
||||
}
|
||||
|
||||
.wio-progress {
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
.wio-progress {
|
||||
transition: width .3s;
|
||||
}
|
||||
|
||||
.wio-bar-positive .wio-progress {
|
||||
background: #8CC152;
|
||||
}
|
||||
|
||||
.wio-bar-positive .wio-barnb {
|
||||
color: #8CC152;
|
||||
}
|
||||
|
||||
.wio-bar-primary .wio-progress {
|
||||
background: #8bc34a;
|
||||
}
|
||||
|
||||
.wio-bar-primary .wio-barnb {
|
||||
color: #8bc34a;
|
||||
}
|
||||
|
||||
.right-outside-number .wio-barnb {
|
||||
display: block;
|
||||
margin-right: -5.25em;
|
||||
text-align: right;
|
||||
font-weight: bold;
|
||||
line-height: .8;
|
||||
}
|
||||
|
||||
|
||||
/* Doughnut */
|
||||
.wio-chart {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.wio-chart-container {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.wio-chart-container canvas {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.wio-overview-chart-container {
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
@media (max-width: 1380px) and (min-width: 1246px), (max-width: 380px) {
|
||||
.wio-overview-chart-container {
|
||||
float: none;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.wio-chart-percent {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
margin-top: -.5em;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
font-size: 55px;
|
||||
font-weight: bold;
|
||||
color: #afafaf;
|
||||
}
|
||||
|
||||
.wio-chart-percent span {
|
||||
font-size: 20px;
|
||||
vertical-align: super;
|
||||
}
|
||||
|
||||
#wio-overview-chart-legend {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.imagify-doughnut-legend {
|
||||
margin-top: 38px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.wio-doughnut-legend li {
|
||||
display: inline-block;
|
||||
padding-left: 30px;
|
||||
position: relative;
|
||||
margin-bottom: 15px;
|
||||
border-radius: 5px;
|
||||
padding: 3px 8px 2px 31px;
|
||||
font-size: 13px;
|
||||
cursor: default;
|
||||
-webkit-transition: background-color 200ms ease-in-out;
|
||||
-moz-transition: background-color 200ms ease-in-out;
|
||||
-o-transition: background-color 200ms ease-in-out;
|
||||
transition: background-color 200ms ease-in-out;
|
||||
}
|
||||
|
||||
.wio-doughnut-legend li span {
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
@media (max-width: 1380px) and (min-width: 1246px), (max-width: 380px) {
|
||||
.wio-overview-chart-container {
|
||||
float: none;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.wio-doughnut-legend {
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
.wio-global-optim-phrase {
|
||||
padding-top: 0;
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.wio-global-optim-phrase {
|
||||
width: 180px;
|
||||
padding-top: 20px;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wio-clear {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.wio-total-percent {
|
||||
color: #46b1ce;
|
||||
}
|
||||
|
||||
.wio-columns .col-chart.col-chart {
|
||||
width: 40%;
|
||||
position: relative;
|
||||
padding: 20px;
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
background: #f1f1f1b3;
|
||||
color: #abacaf;
|
||||
font-weight: bold;
|
||||
border-radius: 5px;
|
||||
margin-top: 10px;
|
||||
text-align: left;
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.wio-image-optimize-board {
|
||||
padding-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.wio-optimize-button {
|
||||
width: 180px;
|
||||
padding: 12px 30px;
|
||||
background: #c9deb2;
|
||||
color: #586549;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
font-size: 16px;
|
||||
text-transform: uppercase !important;
|
||||
font-weight: bold;
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.wio-optimize-button:active {
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
.wio-optimize-button.running {
|
||||
color: #a57b3c;
|
||||
background: #fdd599 url("../img/Spinner-1s-33px.gif") 10px center no-repeat;
|
||||
}
|
||||
|
||||
.wio-widget-bottom {
|
||||
display: table;
|
||||
padding-top: 20px !important;
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.wio-widget-bottom li {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.wio-widget-bottom li:first-child {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.wio-imagify-widget {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.wio-imagify-widget .wio-bars {
|
||||
width: 60%;
|
||||
margin-left: 155px;
|
||||
}
|
||||
|
||||
.wio-imagify-widget .col-chart.col-chart {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.wio-imagify-widget .col-controls {
|
||||
width: 45%;
|
||||
padding-left: 5px;
|
||||
padding-top: 110px
|
||||
}
|
||||
|
||||
.wio-imagify-widget .wio-doughnut-legend {
|
||||
/*padding-top:30px;*/
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#wio-start-msg-top, #wio-start-msg-right, #wio-start-msg-complete {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wio-text-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
span.wio-num {
|
||||
display: inline !important;
|
||||
position: inherit !important;
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
/* Sub Layer */
|
||||
body[class*="_rio"] .swal2-container.swal2-shown {
|
||||
background: rgba(16, 17, 21, 0.9);
|
||||
z-index: 100000;
|
||||
}
|
||||
.wrio-modal {
|
||||
padding: 0 !important;
|
||||
}
|
||||
.wrio-modal .swal2-close {
|
||||
color: rgba(0, 0, 0, 0.8);
|
||||
}
|
||||
.wrio-modal .swal2-modal {
|
||||
border-radius: 2px;
|
||||
}
|
||||
.wrio-modal .swal2-icon {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
.wrio-modal .swal2-title {
|
||||
margin: 0;
|
||||
padding: 28px 32px;
|
||||
font-size: 24px;
|
||||
text-align: left;
|
||||
color: #fff !important;
|
||||
background: #3e3e3e !important;
|
||||
}
|
||||
.wrio-modal .swal2-content {
|
||||
font-size: 14px;
|
||||
padding: 28px 32px;
|
||||
background: #efefef;
|
||||
}
|
||||
.wrio-modal .swal2-buttonswrapper {
|
||||
margin-top: 0;
|
||||
padding: 22px;
|
||||
background: #F4F7F9;
|
||||
}
|
||||
.wrio-modal .swal2-buttonswrapper a.button svg {
|
||||
margin-right: 12px;
|
||||
vertical-align: -2px;
|
||||
}
|
||||
.wrio-modal .swal2-buttonswrapper button.loading {
|
||||
border-radius: 100% !important;
|
||||
height: 40px !important;
|
||||
padding: 0 !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
.wrio-modal .swal2-buttonswrapper button.swal2-styled {
|
||||
height: auto;
|
||||
padding: 12px 32px;
|
||||
margin: 10px;
|
||||
font-size: 14px;
|
||||
letter-spacing: 1px;
|
||||
text-transform: uppercase;
|
||||
border-radius: 3px;
|
||||
font-weight: bold;
|
||||
outline: none;
|
||||
}
|
||||
.wrio-modal .swal2-buttonswrapper button.swal2-styled.swal2-confirm {
|
||||
background-color: #fdd599 !important;
|
||||
text-shadow: none !important;
|
||||
box-shadow: 0 3px 0 #ceac7a !important;
|
||||
color: #a57b3c !important;
|
||||
}
|
||||
.wrio-modal .swal2-buttonswrapper button.swal2-styled.swal2-cancel {
|
||||
background-color: #d2d2d2 !important;
|
||||
color: #656464 !important;
|
||||
text-shadow: none !important;
|
||||
box-shadow: 0 3px 0 #a9a9a9;
|
||||
/*background-color: #c9deb2 !important;
|
||||
color: #606956 !important;
|
||||
text-shadow: none !important;
|
||||
box-shadow: 0 3px 0 #a7b994;*/
|
||||
}
|
||||
.wrio-modal .swal2-buttonswrapper button.swal2-styled:focus,
|
||||
.wrio-modal .swal2-buttonswrapper button.swal2-styled:hover {
|
||||
outline: none;
|
||||
text-shadow: none;
|
||||
color: #FFF;
|
||||
}
|
||||
.wrio-modal-warning {
|
||||
background: #FF5722 !important;
|
||||
}
|
||||
.wrio-modal-warning .swal2-title {
|
||||
text-align: center;
|
||||
color: #222 !important;
|
||||
background: #efefef !important;
|
||||
}
|
||||
.wrio-modal-warning .swal2-content {
|
||||
font-size: 16px;
|
||||
padding: 10px 20px 32px;
|
||||
background: #efefef;
|
||||
}
|
||||
.wrio-modal-warning .swal2-buttonswrapper {
|
||||
background: #efefef;
|
||||
}
|
||||
.wrio-modal-error {
|
||||
background: #dec2c0 !important;
|
||||
}
|
||||
.wrio-modal-error .swal2-title {
|
||||
text-align: center;
|
||||
color: #222 !important;
|
||||
background: #efefef !important;
|
||||
}
|
||||
.wrio-modal-error .swal2-content {
|
||||
font-size: 16px;
|
||||
padding: 10px 20px 32px;
|
||||
background: #efefef;
|
||||
}
|
||||
.wrio-modal-error .swal2-buttonswrapper {
|
||||
background: #efefef;
|
||||
}
|
||||
.wrio-modal-optimization-way {
|
||||
background: #1F2332 !important;
|
||||
}
|
||||
.wrio-modal-optimization-way .wrio-swal-subtitle {
|
||||
padding: 0 0 28px;
|
||||
margin-top: 0px;
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
text-align: left;
|
||||
color: #8c8888;
|
||||
background: #efefef;
|
||||
}
|
||||
.wrio-modal-optimization-way .wrio-list-infos {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.wrio-modal-optimization-way .wrio-list-infos li {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 5px 5px;
|
||||
text-align: left;
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
color: #787575;
|
||||
}
|
||||
.wrio-modal-optimization-way .wrio-list-infos li:first-child {
|
||||
padding-top: 5px;
|
||||
}
|
||||
.wrio-modal-optimization-way .wrio-list-infos li:last-child {
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
.wrio-modal-optimization-way .wrio-list-infos li + li {
|
||||
border-top: 1px solid #E9EFF2;
|
||||
}
|
||||
.wrio-modal-optimization-way .wrio-list-infos a:before {
|
||||
content: '';
|
||||
display: block;
|
||||
}
|
||||
.wrio-modal-optimization-way .wrio-info-icon {
|
||||
flex-grow: 0;
|
||||
flex-basis: 50px;
|
||||
}
|
||||
.wrio-modal-optimization-way .wrio-info-icon + span {
|
||||
padding-left: 20px;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["sweetalert-custom.less"],"names":[],"mappings":";AACA,IAAI,eAAgB,iBAAgB;EAClC,iCAAA;EACA,eAAA;;AAGF;EACE,qBAAA;;AADF,WAGE;EACE,yBAAA;;AAJJ,WAOE;EACE,kBAAA;;AARJ,WAWE;EACE,mBAAA;;AAZJ,WAeE;EACE,SAAA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;EACA,WAAA;EACA,mBAAA;;AArBJ,WAwBE;EACE,eAAA;EACA,kBAAA;EACA,mBAAA;;AA3BJ,WA8BE;EACE,aAAA;EACA,aAAA;EACA,mBAAA;;AAjCJ,WA8BE,sBAKE,EAAC,OAAQ;EACP,kBAAA;EACA,oBAAA;;AArCN,WA8BE,sBAUE,OAAM;EACJ,8BAAA;EACA,uBAAA;EACA,qBAAA;EACA,2BAAA;;AA5CN,WA8BE,sBAiBE,OAAM;EACJ,YAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,mBAAA;EACA,yBAAA;EACA,kBAAA;EACA,iBAAA;EACA,aAAA;;AAEA,WA5BJ,sBAiBE,OAAM,aAWH;EACC,yBAAA;EACA,4BAAA;EACA,2BAAA;EACA,cAAA;;AAGF,WAnCJ,sBAiBE,OAAM,aAkBH;EACC,yBAAA;EACA,cAAA;EACA,4BAAA;EACA,2BAAA;;;;;;AAOF,WA9CJ,sBAiBE,OAAM,aA6BH;AAAQ,WA9Cb,sBAiBE,OAAM,aA6BM;EACR,aAAA;EACA,iBAAA;EACA,WAAA;;AAMR;EACE,mBAAA;;AADF,mBAGE;EACE,kBAAA;EACA,WAAA;EACA,mBAAA;;AANJ,mBASE;EACE,eAAA;EACA,uBAAA;EACA,mBAAA;;AAZJ,mBAeE;EACE,mBAAA;;AAIJ;EACE,mBAAA;;AADF,iBAGE;EACE,kBAAA;EACA,WAAA;EACA,mBAAA;;AANJ,iBASE;EACE,eAAA;EACA,uBAAA;EACA,mBAAA;;AAZJ,iBAeE;EACE,mBAAA;;AAIJ;EACE,mBAAA;;AADF,4BAGE;EACE,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,eAAA;EACA,gBAAA;EACA,cAAA;EACA,mBAAA;;AAVJ,4BAaE;EACE,SAAA;EACA,UAAA;;AAfJ,4BAaE,iBAIE;EACE,aAAA;EACA,mBAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;EACA,gBAAA;EACA,cAAA;;AAxBN,4BAaE,iBAcE,GAAE;EACA,gBAAA;;AA5BN,4BAaE,iBAkBE,GAAE;EACA,mBAAA;;AAhCN,4BAaE,iBAsBE,GAAG;EACD,6BAAA;;AApCN,4BAaE,iBA0BE,EAAC;EACC,SAAS,EAAT;EACA,cAAA;;AAzCN,4BA6CE;EACE,YAAA;EACA,gBAAA;;AA/CJ,4BAkDE,gBAAgB;EACd,kBAAA","file":"sweetalert-custom.css"}
|
||||
@@ -0,0 +1,185 @@
|
||||
/* Sub Layer */
|
||||
body[class*="_rio"] .swal2-container.swal2-shown {
|
||||
background: rgba(16, 17, 21, 0.9);
|
||||
z-index: 100000;
|
||||
}
|
||||
|
||||
.wrio-modal {
|
||||
padding: 0 !important;
|
||||
|
||||
.swal2-close {
|
||||
color: rgba(0, 0, 0, .8);
|
||||
}
|
||||
|
||||
.swal2-modal {
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.swal2-icon {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.swal2-title {
|
||||
margin: 0;
|
||||
padding: 28px 32px;
|
||||
font-size: 24px;
|
||||
text-align: left;
|
||||
color: #fff !important;
|
||||
background: #3e3e3e !important;
|
||||
}
|
||||
|
||||
.swal2-content {
|
||||
font-size: 14px;
|
||||
padding: 28px 32px;
|
||||
background: #efefef;
|
||||
}
|
||||
|
||||
.swal2-buttonswrapper {
|
||||
margin-top: 0;
|
||||
padding: 22px;
|
||||
background: #F4F7F9;
|
||||
|
||||
a.button svg {
|
||||
margin-right: 12px;
|
||||
vertical-align: -2px;
|
||||
}
|
||||
|
||||
button.loading {
|
||||
border-radius: 100% !important;
|
||||
height: 40px !important;
|
||||
padding: 0 !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
button.swal2-styled {
|
||||
height: auto;
|
||||
padding: 12px 32px;
|
||||
margin: 10px;
|
||||
font-size: 14px;
|
||||
letter-spacing: 1px;
|
||||
text-transform: uppercase;
|
||||
border-radius: 3px;
|
||||
font-weight: bold;
|
||||
outline: none;
|
||||
|
||||
&.swal2-confirm {
|
||||
background-color: #fdd599 !important;
|
||||
text-shadow: none !important;
|
||||
box-shadow: 0 3px 0 #ceac7a !important;
|
||||
color: #a57b3c !important;
|
||||
}
|
||||
|
||||
&.swal2-cancel {
|
||||
background-color: #d2d2d2 !important;
|
||||
color: #656464 !important;
|
||||
text-shadow: none !important;
|
||||
box-shadow: 0 3px 0 #a9a9a9;
|
||||
/*background-color: #c9deb2 !important;
|
||||
color: #606956 !important;
|
||||
text-shadow: none !important;
|
||||
box-shadow: 0 3px 0 #a7b994;*/
|
||||
}
|
||||
|
||||
&:focus, &:hover {
|
||||
outline: none;
|
||||
text-shadow: none;
|
||||
color: #FFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.wrio-modal-warning {
|
||||
background: #FF5722 !important;
|
||||
|
||||
.swal2-title {
|
||||
text-align: center;
|
||||
color: #222 !important;
|
||||
background: #efefef !important;
|
||||
}
|
||||
|
||||
.swal2-content {
|
||||
font-size: 16px;
|
||||
padding: 10px 20px 32px;
|
||||
background: #efefef;
|
||||
}
|
||||
|
||||
.swal2-buttonswrapper {
|
||||
background: #efefef;
|
||||
}
|
||||
}
|
||||
|
||||
.wrio-modal-error {
|
||||
background: #dec2c0 !important;
|
||||
|
||||
.swal2-title {
|
||||
text-align: center;
|
||||
color: #222 !important;
|
||||
background: #efefef !important;
|
||||
}
|
||||
|
||||
.swal2-content {
|
||||
font-size: 16px;
|
||||
padding: 10px 20px 32px;
|
||||
background: #efefef;
|
||||
}
|
||||
|
||||
.swal2-buttonswrapper {
|
||||
background: #efefef;
|
||||
}
|
||||
}
|
||||
|
||||
.wrio-modal-optimization-way {
|
||||
background: #1F2332 !important;
|
||||
|
||||
.wrio-swal-subtitle {
|
||||
padding: 0 0 28px;
|
||||
margin-top: 0px;
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
text-align: left;
|
||||
color: #8c8888;
|
||||
background: #efefef;
|
||||
}
|
||||
|
||||
.wrio-list-infos {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 15px 5px;
|
||||
text-align: left;
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
color: #8c8888;
|
||||
}
|
||||
|
||||
li:first-child {
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
li:last-child {
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
li + li {
|
||||
border-top: 1px solid #E9EFF2;
|
||||
}
|
||||
|
||||
a:before {
|
||||
content: '';
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.wrio-info-icon {
|
||||
flex-grow: 0;
|
||||
flex-basis: 50px;
|
||||
}
|
||||
|
||||
.wrio-info-icon + span {
|
||||
padding-left: 20px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,716 @@
|
||||
body.swal2-shown {
|
||||
overflow-y: hidden; }
|
||||
|
||||
body.swal2-iosfix {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0; }
|
||||
|
||||
.swal2-container {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
padding: 10px;
|
||||
background-color: transparent;
|
||||
z-index: 1060; }
|
||||
.swal2-container.swal2-fade {
|
||||
-webkit-transition: background-color .1s;
|
||||
transition: background-color .1s; }
|
||||
.swal2-container.swal2-shown {
|
||||
background-color: rgba(0, 0, 0, 0.4); }
|
||||
|
||||
.swal2-modal {
|
||||
background-color: #fff;
|
||||
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
border-radius: 5px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
margin: auto;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
display: none;
|
||||
position: relative;
|
||||
max-width: 100%; }
|
||||
.swal2-modal:focus {
|
||||
outline: none; }
|
||||
.swal2-modal.swal2-loading {
|
||||
overflow-y: hidden; }
|
||||
.swal2-modal .swal2-title {
|
||||
color: #595959;
|
||||
font-size: 30px;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
text-transform: none;
|
||||
position: relative;
|
||||
margin: 0 0 .4em;
|
||||
padding: 0;
|
||||
display: block;
|
||||
word-wrap: break-word; }
|
||||
.swal2-modal .swal2-buttonswrapper {
|
||||
margin-top: 15px; }
|
||||
.swal2-modal .swal2-buttonswrapper:not(.swal2-loading) .swal2-styled[disabled] {
|
||||
opacity: .4;
|
||||
cursor: no-drop; }
|
||||
.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-confirm {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
border: 4px solid transparent;
|
||||
border-color: transparent;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
padding: 0;
|
||||
margin: 7.5px;
|
||||
vertical-align: top;
|
||||
background-color: transparent !important;
|
||||
color: transparent;
|
||||
cursor: default;
|
||||
border-radius: 100%;
|
||||
-webkit-animation: rotate-loading 1.5s linear 0s infinite normal;
|
||||
animation: rotate-loading 1.5s linear 0s infinite normal;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none; }
|
||||
.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-cancel {
|
||||
margin-left: 30px;
|
||||
margin-right: 30px; }
|
||||
.swal2-modal .swal2-buttonswrapper.swal2-loading :not(.swal2-styled).swal2-confirm::after {
|
||||
display: inline-block;
|
||||
content: '';
|
||||
margin-left: 5px 0 15px;
|
||||
vertical-align: -1px;
|
||||
height: 15px;
|
||||
width: 15px;
|
||||
border: 3px solid #999999;
|
||||
-webkit-box-shadow: 1px 1px 1px #fff;
|
||||
box-shadow: 1px 1px 1px #fff;
|
||||
border-right-color: transparent;
|
||||
border-radius: 50%;
|
||||
-webkit-animation: rotate-loading 1.5s linear 0s infinite normal;
|
||||
animation: rotate-loading 1.5s linear 0s infinite normal; }
|
||||
.swal2-modal .swal2-styled {
|
||||
border: 0;
|
||||
border-radius: 3px;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
font-size: 17px;
|
||||
font-weight: 500;
|
||||
margin: 15px 5px 0;
|
||||
padding: 10px 32px; }
|
||||
.swal2-modal .swal2-image {
|
||||
margin: 20px auto;
|
||||
max-width: 100%; }
|
||||
.swal2-modal .swal2-close {
|
||||
background: transparent;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 38px;
|
||||
height: 40px;
|
||||
font-size: 36px;
|
||||
line-height: 40px;
|
||||
font-family: serif;
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 8px;
|
||||
cursor: pointer;
|
||||
color: #cccccc;
|
||||
-webkit-transition: color .1s ease;
|
||||
transition: color .1s ease; }
|
||||
.swal2-modal .swal2-close:hover {
|
||||
color: #d55; }
|
||||
.swal2-modal > .swal2-input,
|
||||
.swal2-modal > .swal2-file,
|
||||
.swal2-modal > .swal2-textarea,
|
||||
.swal2-modal > .swal2-select,
|
||||
.swal2-modal > .swal2-radio,
|
||||
.swal2-modal > .swal2-checkbox {
|
||||
display: none; }
|
||||
.swal2-modal .swal2-content {
|
||||
font-size: 18px;
|
||||
text-align: center;
|
||||
font-weight: 300;
|
||||
position: relative;
|
||||
float: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
line-height: normal;
|
||||
color: #545454;
|
||||
word-wrap: break-word; }
|
||||
.swal2-modal .swal2-input,
|
||||
.swal2-modal .swal2-file,
|
||||
.swal2-modal .swal2-textarea,
|
||||
.swal2-modal .swal2-select,
|
||||
.swal2-modal .swal2-radio,
|
||||
.swal2-modal .swal2-checkbox {
|
||||
margin: 20px auto; }
|
||||
.swal2-modal .swal2-input,
|
||||
.swal2-modal .swal2-file,
|
||||
.swal2-modal .swal2-textarea {
|
||||
width: 100%;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
font-size: 18px;
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d9d9d9;
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06);
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06);
|
||||
-webkit-transition: border-color box-shadow .3s;
|
||||
transition: border-color box-shadow .3s; }
|
||||
.swal2-modal .swal2-input.swal2-inputerror,
|
||||
.swal2-modal .swal2-file.swal2-inputerror,
|
||||
.swal2-modal .swal2-textarea.swal2-inputerror {
|
||||
border-color: #f27474 !important;
|
||||
-webkit-box-shadow: 0 0 2px #f27474 !important;
|
||||
box-shadow: 0 0 2px #f27474 !important; }
|
||||
.swal2-modal .swal2-input:focus,
|
||||
.swal2-modal .swal2-file:focus,
|
||||
.swal2-modal .swal2-textarea:focus {
|
||||
outline: none;
|
||||
border: 1px solid #b4dbed;
|
||||
-webkit-box-shadow: 0 0 3px #c4e6f5;
|
||||
box-shadow: 0 0 3px #c4e6f5; }
|
||||
.swal2-modal .swal2-input:focus::-webkit-input-placeholder,
|
||||
.swal2-modal .swal2-file:focus::-webkit-input-placeholder,
|
||||
.swal2-modal .swal2-textarea:focus::-webkit-input-placeholder {
|
||||
-webkit-transition: opacity .3s .03s ease;
|
||||
transition: opacity .3s .03s ease;
|
||||
opacity: .8; }
|
||||
.swal2-modal .swal2-input:focus:-ms-input-placeholder,
|
||||
.swal2-modal .swal2-file:focus:-ms-input-placeholder,
|
||||
.swal2-modal .swal2-textarea:focus:-ms-input-placeholder {
|
||||
-webkit-transition: opacity .3s .03s ease;
|
||||
transition: opacity .3s .03s ease;
|
||||
opacity: .8; }
|
||||
.swal2-modal .swal2-input:focus::placeholder,
|
||||
.swal2-modal .swal2-file:focus::placeholder,
|
||||
.swal2-modal .swal2-textarea:focus::placeholder {
|
||||
-webkit-transition: opacity .3s .03s ease;
|
||||
transition: opacity .3s .03s ease;
|
||||
opacity: .8; }
|
||||
.swal2-modal .swal2-input::-webkit-input-placeholder,
|
||||
.swal2-modal .swal2-file::-webkit-input-placeholder,
|
||||
.swal2-modal .swal2-textarea::-webkit-input-placeholder {
|
||||
color: #e6e6e6; }
|
||||
.swal2-modal .swal2-input:-ms-input-placeholder,
|
||||
.swal2-modal .swal2-file:-ms-input-placeholder,
|
||||
.swal2-modal .swal2-textarea:-ms-input-placeholder {
|
||||
color: #e6e6e6; }
|
||||
.swal2-modal .swal2-input::placeholder,
|
||||
.swal2-modal .swal2-file::placeholder,
|
||||
.swal2-modal .swal2-textarea::placeholder {
|
||||
color: #e6e6e6; }
|
||||
.swal2-modal .swal2-range input {
|
||||
float: left;
|
||||
width: 80%; }
|
||||
.swal2-modal .swal2-range output {
|
||||
float: right;
|
||||
width: 20%;
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
text-align: center; }
|
||||
.swal2-modal .swal2-range input,
|
||||
.swal2-modal .swal2-range output {
|
||||
height: 43px;
|
||||
line-height: 43px;
|
||||
vertical-align: middle;
|
||||
margin: 20px auto;
|
||||
padding: 0; }
|
||||
.swal2-modal .swal2-input {
|
||||
height: 43px;
|
||||
padding: 0 12px; }
|
||||
.swal2-modal .swal2-input[type='number'] {
|
||||
max-width: 150px; }
|
||||
.swal2-modal .swal2-file {
|
||||
font-size: 20px; }
|
||||
.swal2-modal .swal2-textarea {
|
||||
height: 108px;
|
||||
padding: 12px; }
|
||||
.swal2-modal .swal2-select {
|
||||
color: #545454;
|
||||
font-size: inherit;
|
||||
padding: 5px 10px;
|
||||
min-width: 40%;
|
||||
max-width: 100%; }
|
||||
.swal2-modal .swal2-radio {
|
||||
border: 0; }
|
||||
.swal2-modal .swal2-radio label:not(:first-child) {
|
||||
margin-left: 20px; }
|
||||
.swal2-modal .swal2-radio input,
|
||||
.swal2-modal .swal2-radio span {
|
||||
vertical-align: middle; }
|
||||
.swal2-modal .swal2-radio input {
|
||||
margin: 0 3px 0 0; }
|
||||
.swal2-modal .swal2-checkbox {
|
||||
color: #545454; }
|
||||
.swal2-modal .swal2-checkbox input,
|
||||
.swal2-modal .swal2-checkbox span {
|
||||
vertical-align: middle; }
|
||||
.swal2-modal .swal2-validationerror {
|
||||
background-color: #f0f0f0;
|
||||
margin: 0 -20px;
|
||||
overflow: hidden;
|
||||
padding: 10px;
|
||||
color: gray;
|
||||
font-size: 16px;
|
||||
font-weight: 300;
|
||||
display: none; }
|
||||
.swal2-modal .swal2-validationerror::before {
|
||||
content: '!';
|
||||
display: inline-block;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
border-radius: 50%;
|
||||
background-color: #ea7d7d;
|
||||
color: #fff;
|
||||
line-height: 24px;
|
||||
text-align: center;
|
||||
margin-right: 10px; }
|
||||
|
||||
@supports (-ms-accelerator: true) {
|
||||
.swal2-range input {
|
||||
width: 100% !important; }
|
||||
.swal2-range output {
|
||||
display: none; } }
|
||||
|
||||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
|
||||
.swal2-range input {
|
||||
width: 100% !important; }
|
||||
.swal2-range output {
|
||||
display: none; } }
|
||||
|
||||
.swal2-icon {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border: 4px solid transparent;
|
||||
border-radius: 50%;
|
||||
margin: 20px auto 30px;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
-webkit-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
cursor: default;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none; }
|
||||
.swal2-icon.swal2-error {
|
||||
border-color: #f27474; }
|
||||
.swal2-icon.swal2-error .swal2-x-mark {
|
||||
position: relative;
|
||||
display: block; }
|
||||
.swal2-icon.swal2-error [class^='swal2-x-mark-line'] {
|
||||
position: absolute;
|
||||
height: 5px;
|
||||
width: 47px;
|
||||
background-color: #f27474;
|
||||
display: block;
|
||||
top: 37px;
|
||||
border-radius: 2px; }
|
||||
.swal2-icon.swal2-error [class^='swal2-x-mark-line'][class$='left'] {
|
||||
-webkit-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
left: 17px; }
|
||||
.swal2-icon.swal2-error [class^='swal2-x-mark-line'][class$='right'] {
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg);
|
||||
right: 16px; }
|
||||
.swal2-icon.swal2-warning {
|
||||
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
color: #f8bb86;
|
||||
border-color: #facea8;
|
||||
font-size: 60px;
|
||||
line-height: 80px;
|
||||
text-align: center; }
|
||||
.swal2-icon.swal2-info {
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
color: #3fc3ee;
|
||||
border-color: #9de0f6;
|
||||
font-size: 60px;
|
||||
line-height: 80px;
|
||||
text-align: center; }
|
||||
.swal2-icon.swal2-question {
|
||||
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
color: #87adbd;
|
||||
border-color: #c9dae1;
|
||||
font-size: 60px;
|
||||
line-height: 80px;
|
||||
text-align: center; }
|
||||
.swal2-icon.swal2-success {
|
||||
border-color: #a5dc86; }
|
||||
.swal2-icon.swal2-success [class^='swal2-success-circular-line'] {
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
width: 60px;
|
||||
height: 120px;
|
||||
-webkit-transform: rotate(45deg);
|
||||
transform: rotate(45deg); }
|
||||
.swal2-icon.swal2-success [class^='swal2-success-circular-line'][class$='left'] {
|
||||
border-radius: 120px 0 0 120px;
|
||||
top: -7px;
|
||||
left: -33px;
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg);
|
||||
-webkit-transform-origin: 60px 60px;
|
||||
transform-origin: 60px 60px; }
|
||||
.swal2-icon.swal2-success [class^='swal2-success-circular-line'][class$='right'] {
|
||||
border-radius: 0 120px 120px 0;
|
||||
top: -11px;
|
||||
left: 30px;
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg);
|
||||
-webkit-transform-origin: 0 60px;
|
||||
transform-origin: 0 60px; }
|
||||
.swal2-icon.swal2-success .swal2-success-ring {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border: 4px solid rgba(165, 220, 134, 0.2);
|
||||
border-radius: 50%;
|
||||
-webkit-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
position: absolute;
|
||||
left: -4px;
|
||||
top: -4px;
|
||||
z-index: 2; }
|
||||
.swal2-icon.swal2-success .swal2-success-fix {
|
||||
width: 7px;
|
||||
height: 90px;
|
||||
position: absolute;
|
||||
left: 28px;
|
||||
top: 8px;
|
||||
z-index: 1;
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg); }
|
||||
.swal2-icon.swal2-success [class^='swal2-success-line'] {
|
||||
height: 5px;
|
||||
background-color: #a5dc86;
|
||||
display: block;
|
||||
border-radius: 2px;
|
||||
position: absolute;
|
||||
z-index: 2; }
|
||||
.swal2-icon.swal2-success [class^='swal2-success-line'][class$='tip'] {
|
||||
width: 25px;
|
||||
left: 14px;
|
||||
top: 46px;
|
||||
-webkit-transform: rotate(45deg);
|
||||
transform: rotate(45deg); }
|
||||
.swal2-icon.swal2-success [class^='swal2-success-line'][class$='long'] {
|
||||
width: 47px;
|
||||
right: 8px;
|
||||
top: 38px;
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg); }
|
||||
|
||||
.swal2-progresssteps {
|
||||
font-weight: 600;
|
||||
margin: 0 0 20px;
|
||||
padding: 0; }
|
||||
.swal2-progresssteps li {
|
||||
display: inline-block;
|
||||
position: relative; }
|
||||
.swal2-progresssteps .swal2-progresscircle {
|
||||
background: #3085d6;
|
||||
border-radius: 2em;
|
||||
color: #fff;
|
||||
height: 2em;
|
||||
line-height: 2em;
|
||||
text-align: center;
|
||||
width: 2em;
|
||||
z-index: 20; }
|
||||
.swal2-progresssteps .swal2-progresscircle:first-child {
|
||||
margin-left: 0; }
|
||||
.swal2-progresssteps .swal2-progresscircle:last-child {
|
||||
margin-right: 0; }
|
||||
.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep {
|
||||
background: #3085d6; }
|
||||
.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep ~ .swal2-progresscircle {
|
||||
background: #add8e6; }
|
||||
.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep ~ .swal2-progressline {
|
||||
background: #add8e6; }
|
||||
.swal2-progresssteps .swal2-progressline {
|
||||
background: #3085d6;
|
||||
height: .4em;
|
||||
margin: 0 -1px;
|
||||
z-index: 10; }
|
||||
|
||||
[class^='swal2'] {
|
||||
-webkit-tap-highlight-color: transparent; }
|
||||
|
||||
@-webkit-keyframes showSweetAlert {
|
||||
0% {
|
||||
-webkit-transform: scale(0.7);
|
||||
transform: scale(0.7); }
|
||||
45% {
|
||||
-webkit-transform: scale(1.05);
|
||||
transform: scale(1.05); }
|
||||
80% {
|
||||
-webkit-transform: scale(0.95);
|
||||
transform: scale(0.95); }
|
||||
100% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); } }
|
||||
|
||||
@keyframes showSweetAlert {
|
||||
0% {
|
||||
-webkit-transform: scale(0.7);
|
||||
transform: scale(0.7); }
|
||||
45% {
|
||||
-webkit-transform: scale(1.05);
|
||||
transform: scale(1.05); }
|
||||
80% {
|
||||
-webkit-transform: scale(0.95);
|
||||
transform: scale(0.95); }
|
||||
100% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); } }
|
||||
|
||||
@-webkit-keyframes hideSweetAlert {
|
||||
0% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1);
|
||||
opacity: 1; }
|
||||
100% {
|
||||
-webkit-transform: scale(0.5);
|
||||
transform: scale(0.5);
|
||||
opacity: 0; } }
|
||||
|
||||
@keyframes hideSweetAlert {
|
||||
0% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1);
|
||||
opacity: 1; }
|
||||
100% {
|
||||
-webkit-transform: scale(0.5);
|
||||
transform: scale(0.5);
|
||||
opacity: 0; } }
|
||||
|
||||
.swal2-show {
|
||||
-webkit-animation: showSweetAlert 0.3s;
|
||||
animation: showSweetAlert 0.3s; }
|
||||
.swal2-show.swal2-noanimation {
|
||||
-webkit-animation: none;
|
||||
animation: none; }
|
||||
|
||||
.swal2-hide {
|
||||
-webkit-animation: hideSweetAlert 0.15s forwards;
|
||||
animation: hideSweetAlert 0.15s forwards; }
|
||||
.swal2-hide.swal2-noanimation {
|
||||
-webkit-animation: none;
|
||||
animation: none; }
|
||||
|
||||
@-webkit-keyframes animate-success-tip {
|
||||
0% {
|
||||
width: 0;
|
||||
left: 1px;
|
||||
top: 19px; }
|
||||
54% {
|
||||
width: 0;
|
||||
left: 1px;
|
||||
top: 19px; }
|
||||
70% {
|
||||
width: 50px;
|
||||
left: -8px;
|
||||
top: 37px; }
|
||||
84% {
|
||||
width: 17px;
|
||||
left: 21px;
|
||||
top: 48px; }
|
||||
100% {
|
||||
width: 25px;
|
||||
left: 14px;
|
||||
top: 45px; } }
|
||||
|
||||
@keyframes animate-success-tip {
|
||||
0% {
|
||||
width: 0;
|
||||
left: 1px;
|
||||
top: 19px; }
|
||||
54% {
|
||||
width: 0;
|
||||
left: 1px;
|
||||
top: 19px; }
|
||||
70% {
|
||||
width: 50px;
|
||||
left: -8px;
|
||||
top: 37px; }
|
||||
84% {
|
||||
width: 17px;
|
||||
left: 21px;
|
||||
top: 48px; }
|
||||
100% {
|
||||
width: 25px;
|
||||
left: 14px;
|
||||
top: 45px; } }
|
||||
|
||||
@-webkit-keyframes animate-success-long {
|
||||
0% {
|
||||
width: 0;
|
||||
right: 46px;
|
||||
top: 54px; }
|
||||
65% {
|
||||
width: 0;
|
||||
right: 46px;
|
||||
top: 54px; }
|
||||
84% {
|
||||
width: 55px;
|
||||
right: 0;
|
||||
top: 35px; }
|
||||
100% {
|
||||
width: 47px;
|
||||
right: 8px;
|
||||
top: 38px; } }
|
||||
|
||||
@keyframes animate-success-long {
|
||||
0% {
|
||||
width: 0;
|
||||
right: 46px;
|
||||
top: 54px; }
|
||||
65% {
|
||||
width: 0;
|
||||
right: 46px;
|
||||
top: 54px; }
|
||||
84% {
|
||||
width: 55px;
|
||||
right: 0;
|
||||
top: 35px; }
|
||||
100% {
|
||||
width: 47px;
|
||||
right: 8px;
|
||||
top: 38px; } }
|
||||
|
||||
@-webkit-keyframes rotatePlaceholder {
|
||||
0% {
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg); }
|
||||
5% {
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg); }
|
||||
12% {
|
||||
-webkit-transform: rotate(-405deg);
|
||||
transform: rotate(-405deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(-405deg);
|
||||
transform: rotate(-405deg); } }
|
||||
|
||||
@keyframes rotatePlaceholder {
|
||||
0% {
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg); }
|
||||
5% {
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg); }
|
||||
12% {
|
||||
-webkit-transform: rotate(-405deg);
|
||||
transform: rotate(-405deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(-405deg);
|
||||
transform: rotate(-405deg); } }
|
||||
|
||||
.swal2-animate-success-line-tip {
|
||||
-webkit-animation: animate-success-tip 0.75s;
|
||||
animation: animate-success-tip 0.75s; }
|
||||
|
||||
.swal2-animate-success-line-long {
|
||||
-webkit-animation: animate-success-long 0.75s;
|
||||
animation: animate-success-long 0.75s; }
|
||||
|
||||
.swal2-success.swal2-animate-success-icon .swal2-success-circular-line-right {
|
||||
-webkit-animation: rotatePlaceholder 4.25s ease-in;
|
||||
animation: rotatePlaceholder 4.25s ease-in; }
|
||||
|
||||
@-webkit-keyframes animate-error-icon {
|
||||
0% {
|
||||
-webkit-transform: rotateX(100deg);
|
||||
transform: rotateX(100deg);
|
||||
opacity: 0; }
|
||||
100% {
|
||||
-webkit-transform: rotateX(0deg);
|
||||
transform: rotateX(0deg);
|
||||
opacity: 1; } }
|
||||
|
||||
@keyframes animate-error-icon {
|
||||
0% {
|
||||
-webkit-transform: rotateX(100deg);
|
||||
transform: rotateX(100deg);
|
||||
opacity: 0; }
|
||||
100% {
|
||||
-webkit-transform: rotateX(0deg);
|
||||
transform: rotateX(0deg);
|
||||
opacity: 1; } }
|
||||
|
||||
.swal2-animate-error-icon {
|
||||
-webkit-animation: animate-error-icon 0.5s;
|
||||
animation: animate-error-icon 0.5s; }
|
||||
|
||||
@-webkit-keyframes animate-x-mark {
|
||||
0% {
|
||||
-webkit-transform: scale(0.4);
|
||||
transform: scale(0.4);
|
||||
margin-top: 26px;
|
||||
opacity: 0; }
|
||||
50% {
|
||||
-webkit-transform: scale(0.4);
|
||||
transform: scale(0.4);
|
||||
margin-top: 26px;
|
||||
opacity: 0; }
|
||||
80% {
|
||||
-webkit-transform: scale(1.15);
|
||||
transform: scale(1.15);
|
||||
margin-top: -6px; }
|
||||
100% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1);
|
||||
margin-top: 0;
|
||||
opacity: 1; } }
|
||||
|
||||
@keyframes animate-x-mark {
|
||||
0% {
|
||||
-webkit-transform: scale(0.4);
|
||||
transform: scale(0.4);
|
||||
margin-top: 26px;
|
||||
opacity: 0; }
|
||||
50% {
|
||||
-webkit-transform: scale(0.4);
|
||||
transform: scale(0.4);
|
||||
margin-top: 26px;
|
||||
opacity: 0; }
|
||||
80% {
|
||||
-webkit-transform: scale(1.15);
|
||||
transform: scale(1.15);
|
||||
margin-top: -6px; }
|
||||
100% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1);
|
||||
margin-top: 0;
|
||||
opacity: 1; } }
|
||||
|
||||
.swal2-animate-x-mark {
|
||||
-webkit-animation: animate-x-mark 0.5s;
|
||||
animation: animate-x-mark 0.5s; }
|
||||
|
||||
@-webkit-keyframes rotate-loading {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
@keyframes rotate-loading {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
@@ -0,0 +1,126 @@
|
||||
/**
|
||||
* Subscribe Widget Styles
|
||||
* Matches the onp-container / license-manager styling
|
||||
*
|
||||
* @package Robin_Image_Optimizer
|
||||
*/
|
||||
|
||||
.wrio-subscribe-widget {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
border-radius: 5px;
|
||||
background: rgb(255, 255, 255);
|
||||
background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 63%, rgba(246, 246, 246, 1) 100%);
|
||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
|
||||
box-sizing: border-box;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__header {
|
||||
padding: 20px;
|
||||
padding-bottom: 0;
|
||||
border-top-left-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__header h3 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__body {
|
||||
padding: 20px;
|
||||
padding-top: 15px;
|
||||
border-bottom-right-radius: 5px;
|
||||
border-bottom-left-radius: 5px;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__messages {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__success {
|
||||
background: #f0fdf4;
|
||||
border: 1px solid #bbf7d0;
|
||||
color: #16a34a;
|
||||
padding: 12px 15px;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
line-height: 170%;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__error {
|
||||
background: #fef2f2;
|
||||
border: 1px solid #fecaca;
|
||||
color: #dc2626;
|
||||
padding: 12px 15px;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
line-height: 170%;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__form {
|
||||
/* Form container */
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__form p {
|
||||
margin: 0 0 10px 0;
|
||||
padding: 0;
|
||||
line-height: 170%;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__field-wrap {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 10px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__email {
|
||||
flex: 1;
|
||||
font-size: 18px;
|
||||
line-height: 20px;
|
||||
height: 36px;
|
||||
padding: 6px 12px;
|
||||
border: 1px solid #7e8993;
|
||||
border-radius: 4px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__email:focus {
|
||||
border-color: #007cba;
|
||||
box-shadow: 0 0 0 1px #007cba;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__button {
|
||||
white-space: nowrap;
|
||||
padding: 7px 14px 6px 14px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget .wrio-subscribe-widget__checkbox-label {
|
||||
display: inline-block;
|
||||
gap: 8px;
|
||||
font-size: 13px;
|
||||
color: #333;
|
||||
line-height: 170%;
|
||||
margin-top: 5px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__checkbox-label input[type="checkbox"] {
|
||||
flex-shrink: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__checkbox-label a {
|
||||
color: #0073aa;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.wrio-subscribe-widget__checkbox-label a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 217 KiB |
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
// silence is golden
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
// silence is golden
|
||||
10
wp-content/plugins/robin-image-optimizer/admin/assets/js/Chart.min.js
vendored
Normal file
10
wp-content/plugins/robin-image-optimizer/admin/assets/js/Chart.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,470 @@
|
||||
jQuery(function ($) {
|
||||
/**
|
||||
* Factory function to create a bulk conversion handler for a specific format.
|
||||
*
|
||||
* @param {string} format - The conversion format ('webp' or 'avif')
|
||||
* @param {string} buttonSelector - jQuery selector for the start button
|
||||
* @returns {Object} - Bulk conversion handler object
|
||||
*/
|
||||
function createBulkConversion(format, buttonSelector) {
|
||||
return {
|
||||
format: format,
|
||||
inprogress: false,
|
||||
serverDown: false,
|
||||
i18n: {},
|
||||
settings: {},
|
||||
startConvertButton: $(buttonSelector),
|
||||
startOptButton: $('#wrio-start-optimization'),
|
||||
startWebpButton: $('#wrio-start-conversion'),
|
||||
startAvifButton: $('#wrio-start-avif-conversion'),
|
||||
|
||||
init: function () {
|
||||
this.i18n = wrio_l18n_bulk_page;
|
||||
this.settings = wrio_settings_bulk_page;
|
||||
|
||||
if (this.startConvertButton.length) {
|
||||
this.registerEvents();
|
||||
this.checkInitialRunningState();
|
||||
}
|
||||
},
|
||||
|
||||
checkInitialRunningState: function () {
|
||||
// If this conversion button is already running on page load, disable other buttons
|
||||
if (this.startConvertButton.hasClass('wio-running')) {
|
||||
this.startOptButton.prop('disabled', true);
|
||||
// Disable the other conversion button (not this one)
|
||||
if (this.format === 'webp') {
|
||||
this.startAvifButton.prop('disabled', true);
|
||||
} else {
|
||||
this.startWebpButton.prop('disabled', true);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
registerEvents: function () {
|
||||
var self = this;
|
||||
this.startConvertButton.on('click', function () {
|
||||
|
||||
if ($(this).hasClass('wio-running')) {
|
||||
self.startOptButton.prop('disabled', false);
|
||||
self.startWebpButton.prop('disabled', false);
|
||||
self.startAvifButton.prop('disabled', false);
|
||||
self.stop();
|
||||
return;
|
||||
}
|
||||
|
||||
self.showModal();
|
||||
|
||||
return false;
|
||||
});
|
||||
},
|
||||
|
||||
showModal: function () {
|
||||
var self = this;
|
||||
var infosModal = $('#wrio-tmpl-' + this.format + '-conversion');
|
||||
|
||||
// Fall back to webp template if format-specific one doesn't exist
|
||||
if (!infosModal.length) {
|
||||
infosModal = $('#wrio-tmpl-webp-conversion');
|
||||
}
|
||||
|
||||
if (!infosModal.length) {
|
||||
console.log('[Error]: Html template for modal not found.');
|
||||
return;
|
||||
}
|
||||
|
||||
var modalTitle = this.format === 'avif'
|
||||
? (this.i18n.modal_avif_conversion_title || this.i18n.modal_conversion_title)
|
||||
: this.i18n.modal_conversion_title;
|
||||
|
||||
// Swal Information before loading the optimize process.
|
||||
swal({
|
||||
title: modalTitle,
|
||||
html: infosModal.html(),
|
||||
type: '',
|
||||
customClass: 'wrio-modal wrio-modal-optimization-way',
|
||||
showCancelButton: true,
|
||||
showCloseButton: true,
|
||||
padding: 0,
|
||||
width: 740,
|
||||
confirmButtonText: this.i18n.modal_conversion_manual_button,
|
||||
cancelButtonText: this.i18n.modal_conversion_cron_button,
|
||||
reverseButtons: true,
|
||||
}).then(function (result) {
|
||||
|
||||
self.startOptButton.prop('disabled', true);
|
||||
self.startWebpButton.prop('disabled', true);
|
||||
self.startAvifButton.prop('disabled', true);
|
||||
self.startConvertButton.prop('disabled', false); // Re-enable current button for stop
|
||||
self.process();
|
||||
|
||||
window.onbeforeunload = function () {
|
||||
return self.i18n.leave_page_warning;
|
||||
}
|
||||
|
||||
}, function (dismiss) {
|
||||
if (dismiss === 'cancel') { // you might also handle 'close' or 'timer' if you used those
|
||||
self.startOptButton.prop('disabled', true);
|
||||
self.startWebpButton.prop('disabled', true);
|
||||
self.startAvifButton.prop('disabled', true);
|
||||
self.startConvertButton.prop('disabled', false); // Re-enable current button for stop
|
||||
self.process('cron');
|
||||
} else {
|
||||
throw dismiss;
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* Start conversion
|
||||
* @param {string} type - 'cron' or undefined for manual
|
||||
*/
|
||||
process: function (type) {
|
||||
var self = this;
|
||||
this.inprogress = true;
|
||||
|
||||
var sendData = {
|
||||
'action': 'wrio-bulk-conversion-process',
|
||||
'scope': this.settings.scope,
|
||||
'format': this.format,
|
||||
'multisite': 0,
|
||||
'_wpnonce': this.settings.conversion_nonce,
|
||||
};
|
||||
|
||||
this.setButtonStyleRun(type);
|
||||
|
||||
if ('cron' === type) {
|
||||
this.startConvertButton.addClass('wrio-cron-mode');
|
||||
|
||||
sendData['action'] = 'wrio-' + this.format + '-cron-start';
|
||||
|
||||
$.post(ajaxurl, sendData, function (response) {
|
||||
if (!response || !response.success) {
|
||||
console.log('[Error]: Failed ajax request (Start cron).');
|
||||
console.log(sendData);
|
||||
console.log(response);
|
||||
|
||||
if (response.data && response.data.error_message) {
|
||||
self.throwError(response.data.error_message);
|
||||
}
|
||||
} else {
|
||||
if (response.data && response.data.stop) {
|
||||
self.stop();
|
||||
}
|
||||
}
|
||||
}).fail(function (xhr, status, error) {
|
||||
console.log(xhr);
|
||||
console.log(status);
|
||||
console.log(error);
|
||||
|
||||
self.throwError(error);
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this.showMessage(this.i18n.conversion_inprogress.replace("%s", parseInt($('#wio-unoptimized-num').text())));
|
||||
|
||||
sendData['reset_current_errors'] = 1;
|
||||
|
||||
this.sendRequest(sendData);
|
||||
},
|
||||
|
||||
stop: function () {
|
||||
var self = this;
|
||||
this.inprogress = false;
|
||||
|
||||
window.onbeforeunload = null;
|
||||
self.setButtonStyleStop();
|
||||
self.destroyMessages();
|
||||
|
||||
if (this.startConvertButton.hasClass('wrio-cron-mode')) {
|
||||
this.startConvertButton.removeClass('wrio-cron-mode');
|
||||
|
||||
$.post(ajaxurl, {
|
||||
'action': 'wrio-' + this.format + '-cron-stop',
|
||||
'_wpnonce': self.settings.conversion_nonce,
|
||||
'scope': self.settings.scope
|
||||
}, function (response) {
|
||||
if (!response || !response.success) {
|
||||
console.log('[Error]: Failed ajax request (Stop cron).');
|
||||
console.log(response);
|
||||
|
||||
if (response.data && response.data.error_message) {
|
||||
self.throwError(response.data.error_message);
|
||||
}
|
||||
} else {
|
||||
self.startOptButton.prop('disabled', false);
|
||||
self.startWebpButton.prop('disabled', false);
|
||||
self.startAvifButton.prop('disabled', false);
|
||||
}
|
||||
}).fail(function (xhr, status, error) {
|
||||
console.log(xhr);
|
||||
console.log(status);
|
||||
console.log(error);
|
||||
|
||||
self.throwError(error);
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
complete: function () {
|
||||
this.inprogress = false;
|
||||
window.onbeforeunload = null;
|
||||
this.setButtonStyleComplete();
|
||||
},
|
||||
|
||||
setButtonStyleRun: function (mode) {
|
||||
|
||||
this.startConvertButton.addClass('wio-running');
|
||||
|
||||
if ("cron" === mode) {
|
||||
this.startConvertButton.text(this.i18n.modal_conversion_cron_button_stop);
|
||||
return;
|
||||
}
|
||||
|
||||
this.startConvertButton.text(this.i18n.button_stop);
|
||||
},
|
||||
|
||||
setButtonStyleComplete: function () {
|
||||
this.showMessage(this.i18n.conversion_complete);
|
||||
this.startConvertButton.text(this.i18n.button_completed);
|
||||
this.startConvertButton.removeClass('wio-running');
|
||||
this.startConvertButton.prop('disabled', true);
|
||||
this.startOptButton.prop('disabled', false);
|
||||
this.startWebpButton.prop('disabled', false);
|
||||
this.startAvifButton.prop('disabled', false);
|
||||
},
|
||||
|
||||
setButtonStyleStop: function () {
|
||||
this.startConvertButton.removeClass('wio-running');
|
||||
var buttonText = this.format === 'avif'
|
||||
? (this.i18n.avif_button_start || 'Convert to AVIF')
|
||||
: this.i18n.webp_button_start;
|
||||
this.startConvertButton.text(buttonText);
|
||||
},
|
||||
|
||||
showMessage: function (text) {
|
||||
var contanier = $('.wio-page-statistic'),
|
||||
message;
|
||||
|
||||
if (contanier.find('.wrio-statistic-message').length) {
|
||||
message = contanier.find('.wrio-statistic-message');
|
||||
} else {
|
||||
message = $('<div>');
|
||||
message.addClass('wrio-statistic-message');
|
||||
contanier.append(message);
|
||||
}
|
||||
|
||||
message.html(text);
|
||||
},
|
||||
|
||||
throwError: function (error_message) {
|
||||
this.stop();
|
||||
|
||||
var noticeId = $.wbcr_factory_templates_759.app.showNotice(error_message, 'danger');
|
||||
|
||||
setTimeout(function () {
|
||||
$.wbcr_factory_templates_759.app.hideNotice(noticeId);
|
||||
}, 10000);
|
||||
},
|
||||
|
||||
destroyMessages: function () {
|
||||
$('.wio-page-statistic').find('.wrio-statistic-message').empty();
|
||||
},
|
||||
|
||||
sendRequest: function (data) {
|
||||
var self = this;
|
||||
|
||||
if (!this.inprogress) {
|
||||
return;
|
||||
}
|
||||
|
||||
$.post(ajaxurl, data, function (response) {
|
||||
if (!self.inprogress) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!response || !response.success) {
|
||||
console.log('[Error]: Failed ajax request (Try to optimize images).');
|
||||
console.log(response);
|
||||
|
||||
if (response.data && response.data.error_message) {
|
||||
self.throwError(response.data.error_message);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
data.reset_current_errors = 0;
|
||||
|
||||
if (!response.data.end) {
|
||||
$('#wio-total-unoptimized').text(parseInt(response.data.remain));
|
||||
self.showMessage(self.i18n.conversion_inprogress.replace("%s", parseInt(response.data.remain)));
|
||||
self.sendRequest(data);
|
||||
} else {
|
||||
$('#wio-total-unoptimized').text(response.data.remain);
|
||||
self.complete();
|
||||
}
|
||||
|
||||
redraw_statistics(response.data.statistic);
|
||||
|
||||
if (response.data.last_optimized) {
|
||||
self.updateLog(response.data.last_optimized);
|
||||
}
|
||||
if (response.data.last_converted) {
|
||||
self.updateLog(response.data.last_converted);
|
||||
}
|
||||
}).fail(function (xhr, status, error) {
|
||||
console.log(xhr);
|
||||
console.log(status);
|
||||
console.log(error);
|
||||
|
||||
self.throwError(error);
|
||||
});
|
||||
},
|
||||
|
||||
updateLog: function (new_item_data) {
|
||||
var self = this;
|
||||
|
||||
var limit = 100,
|
||||
tableEl = $('.wrio-optimization-progress .wrio-table');
|
||||
|
||||
if (!tableEl.length || !new_item_data) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Clear empty table state
|
||||
if ($('.wrio-table-container-empty').length) {
|
||||
$('.wrio-table-container-empty').addClass('wrio-table-container').removeClass('wrio-table-container-empty');
|
||||
if (tableEl.find('tbody').length) {
|
||||
tableEl.find('tbody').empty();
|
||||
}
|
||||
}
|
||||
|
||||
$.each(new_item_data, function (index, value) {
|
||||
var trEl = $('<tr>'),
|
||||
tdEl = $('<td>'),
|
||||
webpSize = value.webp_size ? value.webp_size : '-',
|
||||
avifSize = value.avif_size ? value.avif_size : '-';
|
||||
|
||||
if (tableEl.find('.wrio-row-id-' + value.id).length) {
|
||||
tableEl.find('.wrio-row-id-' + value.id).remove();
|
||||
}
|
||||
|
||||
trEl.addClass('flash').addClass('wrio-table-item').addClass('wrio-row-id-' + value.id);
|
||||
|
||||
if ('error' === value.type) {
|
||||
trEl.addClass('wrio-error');
|
||||
}
|
||||
|
||||
var preview = $('<img width="40" height="40" src="' + value.thumbnail_url + '" alt="">'),
|
||||
previewUrl = $('<a href="' + value.url + '" target="_blank">' + value.file_name + '</a>');
|
||||
|
||||
tableEl.prepend(trEl);
|
||||
|
||||
trEl.append(tdEl.clone().append(preview));
|
||||
trEl.append(tdEl.clone().append(previewUrl));
|
||||
|
||||
if ('error' === value.type) {
|
||||
var colspan = value.scope !== 'custom-folders' ? '7' : '6';
|
||||
trEl.append(tdEl.clone().attr('colspan', colspan).text("Error: " + value.error_msg));
|
||||
} else {
|
||||
trEl.append(tdEl.clone().text(value.original_size));
|
||||
trEl.append(tdEl.clone().text(value.optimized_size));
|
||||
trEl.append(tdEl.clone().text(webpSize));
|
||||
trEl.append(tdEl.clone().text(avifSize));
|
||||
trEl.append(tdEl.clone().text(value.original_saving));
|
||||
|
||||
if ("custom-folders" !== self.settings.scope) {
|
||||
trEl.append(tdEl.clone().text(value.thumbnails_count));
|
||||
}
|
||||
|
||||
trEl.append(tdEl.clone().text(value.total_saving));
|
||||
}
|
||||
});
|
||||
|
||||
if (tableEl.find('tr').length > limit) {
|
||||
var diff = tableEl.find('tr').length - limit;
|
||||
|
||||
for (var i = 0; i < diff; i++) {
|
||||
tableEl.find('tr:last').remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Create WebP conversion handler
|
||||
var bulkConversionWebp = createBulkConversion('webp', '#wrio-start-conversion');
|
||||
|
||||
// Create AVIF conversion handler
|
||||
var bulkConversionAvif = createBulkConversion('avif', '#wrio-start-avif-conversion');
|
||||
|
||||
$(document).ready(function () {
|
||||
bulkConversionWebp.init();
|
||||
bulkConversionAvif.init();
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
});
|
||||
|
||||
var ajaxUrl = ajaxurl;
|
||||
var ai_data;
|
||||
|
||||
function redraw_statistics(statistic) {
|
||||
// Update WebP stats - chart data attributes
|
||||
$('#wio-webp-chart').attr('data-unoptimized', statistic.unconverted)
|
||||
.attr('data-optimized', statistic.converted)
|
||||
.attr('data-errors', statistic.webp_error);
|
||||
|
||||
// Update WebP percent display
|
||||
$('#wio-overview-chart-percent-webp').text(statistic.webp_percent_line);
|
||||
|
||||
// Update WebP legend
|
||||
$('#wio-webp-pending').text(statistic.unconverted);
|
||||
$('#wio-webp-converted').text(statistic.converted);
|
||||
$('#wio-webp-error').text(statistic.webp_error);
|
||||
$('#wio-webp-done').text(statistic.converted);
|
||||
|
||||
// Update AVIF stats (if available)
|
||||
if (statistic.avif_unconverted !== undefined) {
|
||||
$('#wio-avif-chart').attr('data-unoptimized', statistic.avif_unconverted)
|
||||
.attr('data-optimized', statistic.avif_converted)
|
||||
.attr('data-errors', statistic.avif_error);
|
||||
|
||||
// Update AVIF percent display
|
||||
$('#wio-overview-chart-percent-avif').text(statistic.avif_percent_line);
|
||||
|
||||
// Update AVIF legend
|
||||
$('#wio-avif-pending').text(statistic.avif_unconverted);
|
||||
$('#wio-avif-converted').text(statistic.avif_converted);
|
||||
$('#wio-avif-error').text(statistic.avif_error);
|
||||
$('#wio-avif-done').text(statistic.avif_converted);
|
||||
}
|
||||
|
||||
var credits = $('.wrio-premium-user-balance');
|
||||
if (credits.attr('data-server') !== "server_5") {
|
||||
credits.text(statistic.credits);
|
||||
}
|
||||
|
||||
if (window.wio_chart_webp) {
|
||||
window.wio_chart_webp.data.datasets[0].data[0] = statistic.webp_error; // errors
|
||||
window.wio_chart_webp.data.datasets[0].data[1] = statistic.converted; // optimized
|
||||
window.wio_chart_webp.data.datasets[0].data[2] = statistic.unconverted; // unoptimized
|
||||
window.wio_chart_webp.update();
|
||||
}
|
||||
|
||||
if (window.wio_chart_avif && statistic.avif_unconverted !== undefined) {
|
||||
window.wio_chart_avif.data.datasets[0].data[0] = statistic.avif_error; // errors
|
||||
window.wio_chart_avif.data.datasets[0].data[1] = statistic.avif_converted; // optimized
|
||||
window.wio_chart_avif.data.datasets[0].data[2] = statistic.avif_unconverted; // unoptimized
|
||||
window.wio_chart_avif.update();
|
||||
}
|
||||
|
||||
if ($('#wio-overview-chart-percent-webp').text() == '100') {
|
||||
window.onbeforeunload = null;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
@@ -0,0 +1,646 @@
|
||||
function bytesToSize(bytes) {
|
||||
var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
|
||||
if (bytes === 0) {
|
||||
return '0 Byte';
|
||||
}
|
||||
var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
|
||||
if (i === 0) {
|
||||
return bytes + ' ' + sizes[i];
|
||||
}
|
||||
return (bytes / Math.pow(1024, i)).toFixed(2) + ' ' + sizes[i];
|
||||
}
|
||||
|
||||
jQuery(function ($) {
|
||||
var bulkOptimization = {
|
||||
inprogress: false,
|
||||
serverDown: false,
|
||||
i18n: {},
|
||||
settings: {},
|
||||
|
||||
init: function () {
|
||||
if (wrio_l18n_bulk_page === undefined || wrio_settings_bulk_page === undefined) {
|
||||
console.log('[Error]: Required global variables are not declared.');
|
||||
return;
|
||||
}
|
||||
|
||||
this.i18n = wrio_l18n_bulk_page;
|
||||
this.settings = wrio_settings_bulk_page;
|
||||
this.startOptButton = $('#wrio-start-optimization');
|
||||
|
||||
this.registerEvents();
|
||||
this.checkServerStatus();
|
||||
//this.calculateTotalImages();
|
||||
this.checkPremiumUserBalance();
|
||||
},
|
||||
|
||||
registerEvents: function () {
|
||||
var self = this;
|
||||
|
||||
this.startOptButton.on('click', function () {
|
||||
self.startOptButton = $(this);
|
||||
|
||||
if ($(this).hasClass('wio-running')) {
|
||||
self.stop();
|
||||
return;
|
||||
}
|
||||
|
||||
if (self.serverDown) {
|
||||
$.wrio_modal.showErrorModal(self.i18n.server_down_warning);
|
||||
return;
|
||||
}
|
||||
|
||||
if ("1" === self.settings.need_migration) {
|
||||
$.wrio_modal.showErrorModal(self.i18n.need_migrations);
|
||||
return;
|
||||
}
|
||||
|
||||
if ("0" === self.settings.images_backup) {
|
||||
$.wrio_modal.showWarningModal(self.i18n.process_without_backup, function () {
|
||||
self.showModal();
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
self.showModal();
|
||||
|
||||
return false;
|
||||
});
|
||||
},
|
||||
|
||||
checkPremiumUserBalance: function () {
|
||||
var self = this,
|
||||
userBalance = $('.wrio-premium-user-balance'),
|
||||
balanceResetAt = $('.wrio-premium-user-update'),
|
||||
data = {
|
||||
'action': 'wbcr-rio-check-user-balance',
|
||||
'_wpnonce': self.settings.optimization_nonce
|
||||
};
|
||||
|
||||
userBalance.addClass('wrio-premium-user-balance-check-proccess');
|
||||
userBalance.text('');
|
||||
|
||||
balanceResetAt.addClass('wrio-premium-user-update-check-proccess');
|
||||
balanceResetAt.text('');
|
||||
|
||||
$.post(ajaxurl, data, function (response) {
|
||||
|
||||
userBalance.removeClass('wrio-premium-user-balance-check-proccess');
|
||||
balanceResetAt.removeClass('wrio-premium-user-update-check-proccess');
|
||||
|
||||
if (!response || !response.data || !response.success) {
|
||||
console.log('[Error]: Response error');
|
||||
response.data && response.data.error && console.log(response.data.error);
|
||||
|
||||
if (!response || !response.data) {
|
||||
console.log(response);
|
||||
}
|
||||
|
||||
userBalance.text('error');
|
||||
balanceResetAt.text('error');
|
||||
} else {
|
||||
userBalance.text(response.data?.balance);
|
||||
balanceResetAt.text(response.data?.reset_at);
|
||||
}
|
||||
}).fail(function (xhr, status, error) {
|
||||
console.log(xhr);
|
||||
console.log(status);
|
||||
console.log(error);
|
||||
|
||||
self.throwError(error);
|
||||
});
|
||||
},
|
||||
|
||||
checkServerStatus: function () {
|
||||
var self = this,
|
||||
serverStatus = $('.wrio-server-status'),
|
||||
data = {
|
||||
'action': 'wbcr-rio-check-servers-status',
|
||||
'_wpnonce': self.settings.optimization_nonce
|
||||
};
|
||||
|
||||
self.serverDown = false;
|
||||
|
||||
serverStatus.addClass('wrio-server-check-proccess');
|
||||
serverStatus.text('');
|
||||
serverStatus.removeClass('wrio-down').removeClass('wrio-stable');
|
||||
|
||||
self.startOptButton.prop('disabled', true);
|
||||
|
||||
$.post(ajaxurl, data, function (response) {
|
||||
serverStatus.removeClass('wrio-server-check-proccess');
|
||||
|
||||
if (!response || !response.data || !response.success) {
|
||||
console.log('[Error]: Response error');
|
||||
response.data && response.data.error && console.log(response.data.error);
|
||||
|
||||
if (!response || !response.data) {
|
||||
console.log(response);
|
||||
}
|
||||
|
||||
serverStatus.addClass('wrio-down');
|
||||
serverStatus.text(self.i18n.server_status_down);
|
||||
self.serverDown = true;
|
||||
|
||||
return;
|
||||
} else {
|
||||
serverStatus.addClass('wrio-stable');
|
||||
serverStatus.text(self.i18n.server_status_stable);
|
||||
}
|
||||
|
||||
self.startOptButton.prop('disabled', false);
|
||||
|
||||
}).fail(function (xhr, status, error) {
|
||||
console.log(xhr);
|
||||
console.log(status);
|
||||
console.log(error);
|
||||
|
||||
self.throwError(error);
|
||||
});
|
||||
},
|
||||
|
||||
calculateTotalImages: function () {
|
||||
var self = this,
|
||||
total_num = $('#wio-total-num'),
|
||||
data = {
|
||||
'action': 'wbcr-rio-calculate-total-images',
|
||||
'_wpnonce': self.settings.optimization_nonce
|
||||
};
|
||||
|
||||
total_num.addClass('wrio-calculate-process');
|
||||
total_num.text('');
|
||||
|
||||
$.post(ajaxurl, data, function (response) {
|
||||
total_num.removeClass('wrio-calculate-process');
|
||||
|
||||
if (!response || !response.data || !response.success) {
|
||||
console.log('[Error]: Response error');
|
||||
response.data && response.data.error && console.log(response.data.error);
|
||||
|
||||
if (!response || !response.data) {
|
||||
console.log(response);
|
||||
}
|
||||
|
||||
total_num.text('');
|
||||
|
||||
return;
|
||||
} else {
|
||||
if (typeof (response.data.total) !== "undefined") {
|
||||
total_num.addClass('wrio-total-images');
|
||||
total_num.text(response.data.total);
|
||||
}
|
||||
}
|
||||
}).fail(function (xhr, status, error) {
|
||||
console.log(xhr);
|
||||
console.log(status);
|
||||
console.log(error);
|
||||
|
||||
self.throwError(error);
|
||||
});
|
||||
},
|
||||
|
||||
showModal: function () {
|
||||
var self = this;
|
||||
var infosModal = $('#wrio-tmpl-bulk-optimization');
|
||||
|
||||
if (!infosModal.length) {
|
||||
console.log('[Error]: Html template for modal not found.');
|
||||
return;
|
||||
}
|
||||
|
||||
// Swal Information before loading the optimize process.
|
||||
swal({
|
||||
title: this.i18n.modal_optimization_title,
|
||||
html: infosModal.html(),
|
||||
type: '',
|
||||
customClass: 'wrio-modal wrio-modal-optimization-way',
|
||||
showCancelButton: true,
|
||||
showCloseButton: true,
|
||||
padding: 0,
|
||||
width: 740,
|
||||
confirmButtonText: this.i18n.modal_optimization_manual_button,
|
||||
cancelButtonText: this.i18n.modal_optimization_cron_button,
|
||||
reverseButtons: true,
|
||||
}).then(function (result) {
|
||||
self.process();
|
||||
|
||||
window.onbeforeunload = function () {
|
||||
return self.i18n.leave_page_warning;
|
||||
}
|
||||
|
||||
}, function (dismiss) {
|
||||
if (dismiss === 'cancel') { // you might also handle 'close' or 'timer' if you used those
|
||||
self.process('cron');
|
||||
} else {
|
||||
throw dismiss;
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* Start optimization
|
||||
* @param {string} type
|
||||
*/
|
||||
process: function (type) {
|
||||
var self = this;
|
||||
|
||||
this.inprogress = true;
|
||||
|
||||
var sendData = {
|
||||
'action': 'wrio-bulk-optimization-process',
|
||||
'scope': this.settings.scope,
|
||||
'multisite': 0,
|
||||
'_wpnonce': this.settings.optimization_nonce,
|
||||
};
|
||||
|
||||
this.setButtonStyleRun(type);
|
||||
|
||||
if ('cron' === type) {
|
||||
this.startOptButton.addClass('wrio-cron-mode');
|
||||
|
||||
sendData['action'] = 'wrio-cron-start';
|
||||
|
||||
$.post(ajaxurl, sendData, function (response) {
|
||||
if (!response || !response.success) {
|
||||
console.log('[Error]: Failed ajax request (Start cron).');
|
||||
console.log(sendData);
|
||||
console.log(response);
|
||||
|
||||
if (response.data && response.data.error_message) {
|
||||
self.throwError(response.data.error_message);
|
||||
}
|
||||
} else {
|
||||
if (response.data && response.data.stop) {
|
||||
self.stop();
|
||||
}
|
||||
}
|
||||
}).fail(function (xhr, status, error) {
|
||||
console.log(xhr);
|
||||
console.log(status);
|
||||
console.log(error);
|
||||
|
||||
self.throwError(error);
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this.showMessage(this.i18n.optimization_inprogress.replace("%s", parseInt($('#wio-unoptimized-num').text())));
|
||||
|
||||
// show message: Optimization remined
|
||||
/*if( "1" === this.settings.is_network_admin ) {
|
||||
sendData['multisite'] = 1;
|
||||
}*/
|
||||
|
||||
sendData['reset_current_errors'] = 1;
|
||||
|
||||
this.sendRequest(sendData);
|
||||
},
|
||||
|
||||
stop: function () {
|
||||
var self = this;
|
||||
|
||||
this.inprogress = false;
|
||||
|
||||
window.onbeforeunload = null;
|
||||
self.setButtonStyleStop();
|
||||
self.destroyMessages();
|
||||
|
||||
if (this.startOptButton.hasClass('wrio-cron-mode')) {
|
||||
this.startOptButton.removeClass('wrio-cron-mode');
|
||||
|
||||
$.post(ajaxurl, {
|
||||
'action': 'wrio-cron-stop',
|
||||
'_wpnonce': self.settings.optimization_nonce,
|
||||
'scope': self.settings.scope
|
||||
}, function (response) {
|
||||
if (!response || !response.success) {
|
||||
console.log('[Error]: Failed ajax request (Stop cron).');
|
||||
console.log(response);
|
||||
|
||||
if (response.data && response.data.error_message) {
|
||||
self.throwError(response.data.error_message);
|
||||
}
|
||||
}
|
||||
}).fail(function (xhr, status, error) {
|
||||
console.log(xhr);
|
||||
console.log(status);
|
||||
console.log(error);
|
||||
|
||||
self.throwError(error);
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
complete: function () {
|
||||
this.inprogress = false;
|
||||
window.onbeforeunload = null;
|
||||
this.setButtonStyleComplete();
|
||||
},
|
||||
|
||||
setButtonStyleRun: function (mode) {
|
||||
|
||||
this.startOptButton.addClass('wio-running');
|
||||
|
||||
if ("cron" === mode) {
|
||||
this.startOptButton.text(this.i18n.modal_optimization_cron_button_stop);
|
||||
return;
|
||||
}
|
||||
|
||||
this.startOptButton.text(this.i18n.button_stop);
|
||||
},
|
||||
|
||||
setButtonStyleComplete: function () {
|
||||
this.showMessage(this.i18n.optimization_complete);
|
||||
this.startOptButton.text(this.i18n.button_completed);
|
||||
this.startOptButton.removeClass('wio-running');
|
||||
this.startOptButton.prop('disabled', true);
|
||||
},
|
||||
|
||||
setButtonStyleStop: function () {
|
||||
this.startOptButton.removeClass('wio-running');
|
||||
this.startOptButton.text(this.i18n.button_start);
|
||||
},
|
||||
|
||||
showMessage: function (text) {
|
||||
var contanier = $('.wio-page-statistic'),
|
||||
message;
|
||||
|
||||
if (contanier.find('.wrio-statistic-message').length) {
|
||||
message = contanier.find('.wrio-statistic-message');
|
||||
} else {
|
||||
message = $('<div>');
|
||||
message.addClass('wrio-statistic-message');
|
||||
contanier.append(message);
|
||||
}
|
||||
|
||||
message.html(text);
|
||||
},
|
||||
|
||||
throwError: function (error_message) {
|
||||
this.stop();
|
||||
|
||||
var noticeId = $.wbcr_factory_templates_759.app.showNotice(error_message, 'danger');
|
||||
|
||||
setTimeout(function () {
|
||||
$.wbcr_factory_templates_759.app.hideNotice(noticeId);
|
||||
}, 10000);
|
||||
},
|
||||
|
||||
destroyMessages: function () {
|
||||
$('.wio-page-statistic').find('.wrio-statistic-message').empty();
|
||||
},
|
||||
|
||||
sendRequest: function (data) {
|
||||
var self = this;
|
||||
|
||||
if (!this.inprogress) {
|
||||
return;
|
||||
}
|
||||
|
||||
$.post(ajaxurl, data, function (response) {
|
||||
if (!self.inprogress) {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(response);
|
||||
|
||||
if (!response || !response.success) {
|
||||
console.log('[Error]: Failed ajax request (Try to optimize images).');
|
||||
console.log(response);
|
||||
|
||||
if (response.data && response.data.error_message) {
|
||||
self.throwError(response.data.error_message);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
data.reset_current_errors = 0;
|
||||
|
||||
if (!response.data.end) {
|
||||
$('#wio-total-unoptimized').text(parseInt(response.data.remain));
|
||||
self.showMessage(self.i18n.optimization_inprogress.replace("%s", parseInt(response.data.remain)));
|
||||
self.sendRequest(data);
|
||||
} else {
|
||||
$('#wio-total-unoptimized').text(response.data.remain);
|
||||
self.complete();
|
||||
|
||||
// если мультисайт режим, то не скрываем кнопку запуска оптимизации
|
||||
/*if( $('#wbcr-rio-current-blog').length ) {
|
||||
$('#wio-start-optimization').toggleClass('wio-running');
|
||||
} else {
|
||||
$('#wio-start-optimization').hide();
|
||||
}*/
|
||||
}
|
||||
|
||||
redraw_statistics(response.data.statistic);
|
||||
|
||||
self.updateLog(response.data.last_optimized);
|
||||
}).fail(function (xhr, status, error) {
|
||||
console.log(xhr);
|
||||
console.log(status);
|
||||
console.log(error);
|
||||
|
||||
self.throwError(error);
|
||||
});
|
||||
},
|
||||
|
||||
updateLog: function (new_item_data) {
|
||||
const self = this;
|
||||
const limit = 100;
|
||||
const tableEl = $('.wrio-optimization-progress .wrio-table');
|
||||
|
||||
if (!tableEl.length || !new_item_data) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Handle empty table state
|
||||
if ($('.wrio-table-container-empty').length) {
|
||||
$('.wrio-table-container-empty').addClass('wrio-table-container').removeClass('wrio-table-container-empty');
|
||||
if (tableEl.find('tbody').length) {
|
||||
tableEl.find('tbody').empty();
|
||||
}
|
||||
}
|
||||
|
||||
$.each(new_item_data, function (index, value) {
|
||||
const attachmentId = value.attachment_id || value.id;
|
||||
const existingRow = tableEl.find('[data-attachment-id="' + attachmentId + '"]');
|
||||
|
||||
if (existingRow.length) {
|
||||
// Update existing row data
|
||||
self.updateRowData(existingRow, value);
|
||||
// Move existing row to top of the table
|
||||
existingRow.detach();
|
||||
tableEl.find('tbody').prepend(existingRow);
|
||||
// Re-trigger flash animation
|
||||
existingRow.removeClass('flash');
|
||||
// Force reflow to restart animation
|
||||
existingRow[0].offsetWidth;
|
||||
existingRow.addClass('flash');
|
||||
} else {
|
||||
// Create new row and add to top
|
||||
const trEl = self.buildLogRow(value);
|
||||
tableEl.find('tbody').prepend(trEl);
|
||||
}
|
||||
});
|
||||
|
||||
// Enforce row limit
|
||||
self.enforceRowLimit(tableEl, limit);
|
||||
},
|
||||
|
||||
updateRowData: function (row, data) {
|
||||
// Update optimized size cell
|
||||
row.find('.wrio-optimized-size').text(data.optimized_size);
|
||||
|
||||
// Update WebP size if present
|
||||
if (data.webp_size) {
|
||||
const webpCell = row.find('.wrio-webp-size');
|
||||
if (webpCell.length) {
|
||||
webpCell.text(data.webp_size);
|
||||
}
|
||||
}
|
||||
|
||||
// Update AVIF size if present
|
||||
if (data.avif_size) {
|
||||
const avifCell = row.find('.wrio-avif-size');
|
||||
if (avifCell.length) {
|
||||
avifCell.text(data.avif_size);
|
||||
}
|
||||
}
|
||||
|
||||
// Update total saving
|
||||
row.find('.wrio-total-saving').text(data.total_saving);
|
||||
|
||||
// Update thumbnails count
|
||||
if (data.thumbnails_count !== undefined) {
|
||||
row.find('.wrio-thumbnails-count').text(data.thumbnails_count);
|
||||
}
|
||||
|
||||
// Update error state if needed
|
||||
if (data.type === 'error') {
|
||||
row.addClass('wrio-error');
|
||||
} else {
|
||||
row.removeClass('wrio-error');
|
||||
}
|
||||
},
|
||||
|
||||
buildLogRow: function (value) {
|
||||
const attachmentId = value.attachment_id || value.id;
|
||||
const trEl = $('<tr>')
|
||||
.addClass('flash wrio-table-item')
|
||||
.addClass('wrio-row-id-' + value.id)
|
||||
.attr('data-attachment-id', attachmentId);
|
||||
|
||||
if (value.type === 'error') {
|
||||
trEl.addClass('wrio-error');
|
||||
}
|
||||
|
||||
// Build cells with classes for easy updates
|
||||
const preview = $('<img width="40" height="40" src="' + value.thumbnail_url + '" alt="">');
|
||||
const previewUrl = $('<a href="' + value.url + '" target="_blank">' + value.file_name + '</a>');
|
||||
|
||||
trEl.append($('<td>').append(preview));
|
||||
trEl.append($('<td>').append(previewUrl));
|
||||
|
||||
if (value.type === 'error') {
|
||||
const colspan = this.settings.scope !== 'custom-folders' ? '4' : '3';
|
||||
trEl.append($('<td>').attr('colspan', colspan).text("Error: " + value.error_msg));
|
||||
} else {
|
||||
trEl.append($('<td class="wrio-original-size">').text(value.original_size));
|
||||
trEl.append($('<td class="wrio-optimized-size">').text(value.optimized_size));
|
||||
|
||||
if ("custom-folders" !== this.settings.scope) {
|
||||
trEl.append($('<td class="wrio-thumbnails-count">').text(value.thumbnails_count));
|
||||
}
|
||||
|
||||
trEl.append($('<td class="wrio-total-saving">').text(value.total_saving));
|
||||
}
|
||||
|
||||
return trEl;
|
||||
},
|
||||
|
||||
enforceRowLimit: function (tableEl, limit) {
|
||||
const rows = tableEl.find('tbody tr');
|
||||
if (rows.length > limit) {
|
||||
rows.slice(limit).remove();
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$(document).ready(function () {
|
||||
bulkOptimization.init();
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
});
|
||||
|
||||
var ajaxUrl = ajaxurl;
|
||||
var ai_data;
|
||||
|
||||
function redraw_statistics(statistic) {
|
||||
$('#wio-main-chart').attr('data-unoptimized', statistic.unoptimized)
|
||||
.attr('data-optimized', statistic.optimized)
|
||||
.attr('data-errors', statistic.error);
|
||||
$('#wio-total-optimized-attachments').text(statistic.optimized); // optimized
|
||||
$('#wio-original-size').text(bytesToSize(statistic.original_size));
|
||||
$('#wio-optimized-size').text(bytesToSize(statistic.optimized_size));
|
||||
$('#wio-total-saved').text(statistic.save_size_percent + '%');
|
||||
$('#wio-overview-chart-percent').text(statistic.optimized_percent);
|
||||
$('.wio-total-percent').text(statistic.optimized_percent + '%');
|
||||
$('#wio-optimized-bar').css('width', statistic.percent_line + '%');
|
||||
|
||||
$('#wio-unoptimized-num').text(statistic.unoptimized);
|
||||
$('#wio-optimized-num').text(statistic.optimized);
|
||||
$('#wio-error-num').text(statistic.error);
|
||||
|
||||
if(statistic.quota_limit) {
|
||||
$('.wrio-premium-user-balance').text(statistic.quota_limit);
|
||||
}
|
||||
|
||||
if ($('.wrio-statistic-nav li.active').length) {
|
||||
$('.wrio-statistic-nav li.active').find('span.wio-statistic-tab-percent').text(statistic.optimized_percent + '%');
|
||||
}
|
||||
|
||||
window.wio_chart.data.datasets[0].data[0] = statistic.error; // errors
|
||||
window.wio_chart.data.datasets[0].data[1] = statistic.optimized; // optimized
|
||||
window.wio_chart.data.datasets[0].data[2] = statistic.unoptimized; // unoptimized
|
||||
window.wio_chart.update();
|
||||
if ($('#wio-overview-chart-percent').text() == '100%') {
|
||||
window.onbeforeunload = null;
|
||||
}
|
||||
}
|
||||
|
||||
/*$('#wbcr-rio-current-blog').on('change', function() {
|
||||
var self = $(this);
|
||||
$('#wio-start-msg-complete').hide();
|
||||
$(this).attr('disabled', true);
|
||||
$('#wio-start-optimization').attr('disabled', true);
|
||||
var ai_data = {
|
||||
'action': 'wbcr_rio_update_current_blog',
|
||||
'wpnonce': $(this).data('nonce'),
|
||||
'current_blog_id': $(this).find('option:selected').val(),
|
||||
'context': $(this).attr('data-context')
|
||||
};
|
||||
$.post(ajaxUrl, ai_data, function(response) {
|
||||
self.removeAttr('disabled');
|
||||
$('#wio-start-optimization').removeAttr('disabled');
|
||||
redraw_statistics(response.data.statistic);
|
||||
});
|
||||
});*/
|
||||
|
||||
// AVIF upsell banner dismiss handler
|
||||
$(document).on('click', '.wrio-avif-banner-dismiss', function () {
|
||||
var $banner = $(this).closest('.wrio-avif-upsell-banner');
|
||||
|
||||
$.post(ajaxurl, {
|
||||
action: 'wrio_dismiss_avif_banner',
|
||||
nonce: $banner.data('nonce')
|
||||
}, function () {
|
||||
$banner.slideUp(300, function () {
|
||||
$(this).remove();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
@@ -0,0 +1,169 @@
|
||||
(function ($) {
|
||||
class BulkOptimization {
|
||||
constructor(ajaxUrl, i18n, settings) {
|
||||
if (!i18n || !settings) {
|
||||
console.error('[Error]: Required global variables are missing.');
|
||||
return;
|
||||
}
|
||||
this.ajaxUrl = ajaxUrl;
|
||||
this.i18n = i18n;
|
||||
this.settings = settings;
|
||||
|
||||
this.totalImages = 0;
|
||||
this.countAttachments = 0;
|
||||
this.countThumbs = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the bulk optimization process by chaining multiple calculations.
|
||||
* If any error occurs during the process, it will be caught and handled.
|
||||
*/
|
||||
init() {
|
||||
this.calculateTotalAttachments()
|
||||
.then(() => this.calculateTotalThumbs())
|
||||
.then(() => this.calculateTotalImages())
|
||||
.catch((error) => this.throwError(error));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends an AJAX POST request to the server.
|
||||
*
|
||||
* @param {string} action - The AJAX action to trigger on the server.
|
||||
* @param {Object} additionalData - Additional data to send with the request.
|
||||
* @returns {Promise<Object>} - A promise that resolves with the response data from the server.
|
||||
* @throws Will throw an error if the response is invalid or the request fails.
|
||||
*/
|
||||
async postAjax(action, additionalData = {}) {
|
||||
const data = {
|
||||
action: action,
|
||||
_wpnonce: this.settings.optimization_nonce,
|
||||
...additionalData,
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await $.post(this.ajaxUrl, data);
|
||||
|
||||
if (!response || !response.success || !response.data) {
|
||||
console.error('[Error]: Invalid AJAX response.', response);
|
||||
if (response?.data?.error) {
|
||||
console.error(response.data.error);
|
||||
}
|
||||
|
||||
throw new Error(this.i18n.ajaxError || 'AJAX Error Occurred');
|
||||
}
|
||||
|
||||
return response.data;
|
||||
} catch (xhr) {
|
||||
console.error('[Error]: AJAX Request Failed.', xhr);
|
||||
throw xhr;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the total number of attachments.
|
||||
*
|
||||
* This method sends an AJAX request to the server to fetch the total
|
||||
* number of media attachments and updates the corresponding UI element with the result.
|
||||
*
|
||||
* @returns {Promise<void>} - A promise that resolves when the calculation is complete.
|
||||
*/
|
||||
async calculateTotalAttachments() {
|
||||
try {
|
||||
const data = await this.postAjax('wbcr-rio-calculate-total-attachments');
|
||||
|
||||
this.countAttachments = data.found_attachments;
|
||||
|
||||
$('#wio-stat-totals__originals')
|
||||
.removeClass('wio-stat-totals__loading')
|
||||
.text(data.found_attachments);
|
||||
} catch (error) {
|
||||
this.throwError(error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the total count of images by summing attachments and thumbnails.
|
||||
*
|
||||
* This method does not send an AJAX request. Instead, it calculates the total
|
||||
* number of found images and updates the corresponding UI element.
|
||||
*/
|
||||
async calculateTotalImages() {
|
||||
this.totalImages = this.countAttachments + this.countThumbs;
|
||||
$('#wio-stat-totals__totals')
|
||||
.removeClass('wio-stat-totals__loading')
|
||||
.text(this.totalImages);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the total number of thumbnails in a paginated manner.
|
||||
*
|
||||
* This method sends multiple AJAX requests based on the `offset` returned
|
||||
* from the server. It stops once the `done` parameter is `true` and accumulates
|
||||
* the total number of thumbnails found during the process.
|
||||
*
|
||||
* @returns {Promise<void>} - A promise that resolves when all requests are complete.
|
||||
* @throws Will throw an error if `next_offset` is missing or undefined in the response.
|
||||
*/
|
||||
async calculateTotalThumbs() {
|
||||
try {
|
||||
let offset = 0;
|
||||
let totalThumbs = 0;
|
||||
|
||||
// Sequentially fetch thumbnail counts in batches
|
||||
while (true) {
|
||||
const data = await this.postAjax('wbcr-rio-calculate-total-thumbs', { offset });
|
||||
|
||||
// Update the total thumbnail counter
|
||||
totalThumbs = data.found_thumbs;
|
||||
|
||||
// Update the thumbnails count in the UI
|
||||
$('#wio-stat-totals__thumbnails')
|
||||
.removeClass('wio-stat-totals__loading')
|
||||
.text(totalThumbs);
|
||||
|
||||
// Break the loop if the server indicates the process is complete
|
||||
if (data.done) {
|
||||
break;
|
||||
}
|
||||
|
||||
// Update the offset for the next request
|
||||
offset = data.next_offset;
|
||||
|
||||
// Validate the offset to avoid infinite loops
|
||||
if (offset === undefined || offset === null) {
|
||||
console.error('[Error]: Missing offset in server response.');
|
||||
throw new Error('Invalid server response: offset is undefined.');
|
||||
}
|
||||
}
|
||||
|
||||
this.countThumbs = totalThumbs;
|
||||
|
||||
} catch (error) {
|
||||
this.throwError(error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles errors by logging them to the console and displaying an alert.
|
||||
*
|
||||
* This method provides a standardized way to handle any unexpected errors
|
||||
* that occur during the execution of the bulk optimization process.
|
||||
*
|
||||
* @param {Error|string} error - The error message or object to handle.
|
||||
*/
|
||||
throwError(error) {
|
||||
console.error('[Error]:', error);
|
||||
alert(this.i18n.generalError || 'An error occurred. Please try again.');
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize the bulk optimization process on document ready
|
||||
$(document).ready(() => {
|
||||
const bulkOptimization = new BulkOptimization(
|
||||
ajaxurl, // The URL for WordPress AJAX requests
|
||||
window.wrio_l18n_bulk_page, // Localization data for the UI
|
||||
window.wrio_settings_bulk_page // Settings data for the optimization
|
||||
);
|
||||
bulkOptimization.init();
|
||||
});
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
// silence is golden
|
||||
@@ -0,0 +1,52 @@
|
||||
jQuery(function($) {
|
||||
$('#wbcr-wio-meta-migration-action').on('click', function() {
|
||||
|
||||
var data = {
|
||||
'action': 'wrio_meta_migrations',
|
||||
'_wpnonce': $(this).data('nonce'),
|
||||
};
|
||||
|
||||
$(this).addClass('disabled').text('Please wait...');
|
||||
|
||||
send_request($(this), data);
|
||||
});
|
||||
|
||||
function send_request(button, data) {
|
||||
$.post(window.ajaxurl, data, function(response) {
|
||||
|
||||
console.log(response);
|
||||
|
||||
if( !response || !response.data ) {
|
||||
console.log('An unknown server error has occurred.');
|
||||
console.log(response);
|
||||
return false;
|
||||
}
|
||||
|
||||
if( !response.data.need_more_time ) {
|
||||
if( button.closest('.notice').length ) {
|
||||
button.closest('.notice').remove();
|
||||
}
|
||||
if( button.closest('.alert').length ) {
|
||||
button.closest('.alert').remove();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
button.text(response.data.message);
|
||||
|
||||
send_request(button, data);
|
||||
}).fail(function(xhr, status, error) {
|
||||
console.log(xhr);
|
||||
console.log(status);
|
||||
console.log(error);
|
||||
|
||||
data.limit = 5;
|
||||
data.error = 1;
|
||||
|
||||
setTimeout(function() {
|
||||
send_request(button, data);
|
||||
}, 2000);
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,57 @@
|
||||
/**
|
||||
* A set of tools for creating pop-ups. You can create a popup
|
||||
* using a global method call.
|
||||
*
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
|
||||
(function($) {
|
||||
'use strict';
|
||||
|
||||
if( !$.wrio_modal ) {
|
||||
$.wrio_modal = {};
|
||||
}
|
||||
|
||||
$.wrio_modal = $.wrio_popup || {
|
||||
|
||||
showErrorModal: function(text) {
|
||||
if( !text ) {
|
||||
console.log('[Error]: Text required.');
|
||||
return;
|
||||
}
|
||||
|
||||
swal({
|
||||
title: 'Error',
|
||||
text: text,
|
||||
type: 'error',
|
||||
customClass: 'wrio-modal wrio-modal-error',
|
||||
width: 500,
|
||||
confirmButtonText: 'OK',
|
||||
});
|
||||
},
|
||||
|
||||
showWarningModal: function(text, callback) {
|
||||
if( !text ) {
|
||||
console.log('[Error]: Text required.');
|
||||
return;
|
||||
}
|
||||
|
||||
swal({
|
||||
title: 'Warning',
|
||||
text: text,
|
||||
type: 'warning',
|
||||
customClass: 'wrio-modal wrio-modal-warning',
|
||||
width: 500,
|
||||
showCancelButton: true,
|
||||
showCloseButton: true,
|
||||
confirmButtonText: 'OK',
|
||||
}).then(function(result) {
|
||||
if( callback ) {
|
||||
callback();
|
||||
}
|
||||
}).catch(swal.noop);
|
||||
},
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,209 @@
|
||||
jQuery(function($){
|
||||
var ajaxUrl = ajaxurl;
|
||||
|
||||
// Delivery Mode Toggle Handler
|
||||
// Handles the visibility of the delivery mode options based on WebP and AVIF conversion toggles
|
||||
var $webpToggle = $('input[name="wbcr_io_convert_webp_format"]');
|
||||
var $avifToggle = $('input[name="wbcr_io_convert_avif_format"]');
|
||||
var $deliveryModeSection = $('.wrio-conversion-delivery-options');
|
||||
|
||||
// Function to check if at least one toggle is enabled
|
||||
function updateDeliveryModeVisibility() {
|
||||
var isWebpEnabled = $webpToggle.val() === '1';
|
||||
var isAvifEnabled = $avifToggle.val() === '1';
|
||||
|
||||
// Show delivery mode section only if at least one format is enabled
|
||||
if (isWebpEnabled || isAvifEnabled) {
|
||||
$deliveryModeSection.slideDown(300);
|
||||
} else {
|
||||
$deliveryModeSection.slideUp(300);
|
||||
}
|
||||
}
|
||||
|
||||
// Attach event listeners to both toggles
|
||||
if ($webpToggle.length && $avifToggle.length && $deliveryModeSection.length) {
|
||||
// Get the button containers for both toggles
|
||||
var $webpButtons = $webpToggle.closest('.factory-checkbox').find('button');
|
||||
var $avifButtons = $avifToggle.closest('.factory-checkbox').find('button');
|
||||
|
||||
// Initial check on page load
|
||||
updateDeliveryModeVisibility();
|
||||
|
||||
// Listen for clicks on the factory buttons
|
||||
$webpButtons.on('click', function() {
|
||||
setTimeout(updateDeliveryModeVisibility, 50);
|
||||
});
|
||||
|
||||
$avifButtons.on('click', function() {
|
||||
setTimeout(updateDeliveryModeVisibility, 50);
|
||||
});
|
||||
|
||||
// Also listen for direct changes on the hidden inputs (fallback)
|
||||
$webpToggle.on('change', function() {
|
||||
updateDeliveryModeVisibility();
|
||||
});
|
||||
|
||||
$avifToggle.on('change', function() {
|
||||
updateDeliveryModeVisibility();
|
||||
});
|
||||
}
|
||||
|
||||
$('#wio-restore-backup-btn').on('click', function() {
|
||||
if ( $('#wio-multisite-mode').length ) {
|
||||
$('#wio-multisite-mode').toggle();
|
||||
$('#wio-multisite-confirm').attr('data-action', 'restore');
|
||||
$('#wio-multisite-restore-progress').empty();
|
||||
return false;
|
||||
}
|
||||
result = confirm( $(this).attr('data-confirm') );
|
||||
if ( ! result ) {
|
||||
return false;
|
||||
}
|
||||
$(this).hide();
|
||||
$('#wio-restore-backup-progress').show();
|
||||
var ai_data = {
|
||||
'total' : '?',
|
||||
'action': 'wio_restore_backup',
|
||||
'_wpnonce': $('#wio-iph-nonce').val()
|
||||
};
|
||||
send_post_data(ai_data);
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#wio-clear-backup-btn').on('click', function() {
|
||||
$('#wio-restore-backup-msg').hide();
|
||||
if ( $('#wio-multisite-mode').length ) {
|
||||
$('#wio-multisite-mode').toggle();
|
||||
$('#wio-multisite-confirm').attr('data-action', 'clear');
|
||||
$('#wio-multisite-restore-progress').empty();
|
||||
return false;
|
||||
}
|
||||
result = confirm( $(this).attr('data-confirm') );
|
||||
if ( ! result ) {
|
||||
return false;
|
||||
}
|
||||
var data = {
|
||||
'action': 'wio_clear_backup',
|
||||
'_wpnonce': $('#wio-iph-nonce').val()
|
||||
};
|
||||
$.post(ajaxUrl, data, function(response) {
|
||||
$('#wio-clear-backup-msg').show();
|
||||
});
|
||||
});
|
||||
|
||||
$('#wio-multisite-confirm').on('click', function() {
|
||||
var action = $(this).attr('data-action');
|
||||
// если запущена очистка резервных копий
|
||||
if ( action == 'clear' ) {
|
||||
result = confirm( $('#wio-clear-backup-btn').attr('data-confirm') ); // берём сообщение из основной кнопки
|
||||
if ( ! result ) {
|
||||
return false;
|
||||
}
|
||||
var blogs = [];
|
||||
$('.wbcr_io_multisite_blogs:checked').each(function() {
|
||||
blogs.push( $(this).val() );
|
||||
});
|
||||
var data = {
|
||||
'action': 'wio_clear_backup',
|
||||
'_wpnonce': $('#wio-iph-nonce').val(),
|
||||
'blogs': blogs
|
||||
};
|
||||
|
||||
$.post(ajaxUrl, data, function(response) {
|
||||
$('#wio-clear-backup-msg').show();
|
||||
$('#wio-multisite-mode').toggle();
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
// если запущено восстановление из резервных копий
|
||||
if ( action == 'restore' ) {
|
||||
result = confirm( $('#wio-restore-backup-btn').attr('data-confirm') ); // берём сообщение из основной кнопки
|
||||
if ( ! result ) {
|
||||
return false;
|
||||
}
|
||||
$('#wio-multisite-mode').toggle();
|
||||
$('#wio-multisite-restore-progress').empty();
|
||||
$('.wbcr_io_multisite_blogs:checked').each(function() {
|
||||
$('#wio-multisite-restore-progress').append('\
|
||||
<label>'+$(this).attr('data-name')+'</label>\
|
||||
<div class="progress">\
|
||||
<div id="wio-restore-backup-progress-'+$(this).val()+'" class="wio-restore-backup-progressbar progress-bar progress-bar-success" data-id="'+$(this).val()+'" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">\
|
||||
</div>\
|
||||
</div>\
|
||||
');
|
||||
});
|
||||
$('#wio-multisite-restore-progress').show();
|
||||
if ( ! $('.wio-restore-backup-progressbar').length ) {
|
||||
$('#wio-restore-backup-msg').show();
|
||||
return false;
|
||||
}
|
||||
var ai_data = {
|
||||
'total' : '?',
|
||||
'action': 'wio_restore_backup',
|
||||
'_wpnonce': $('#wio-iph-nonce').val(),
|
||||
'blog_id': $('.wio-restore-backup-progressbar:eq(0)').attr('data-id')
|
||||
};
|
||||
send_multisite_post_data(ai_data);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
$('#wbcr_io_multisite_blog_all').on('change', function() {
|
||||
if ( $(this).attr('checked') == 'checked' ) {
|
||||
$('.wbcr_io_multisite_blogs').attr('checked', true);
|
||||
} else {
|
||||
$('.wbcr_io_multisite_blogs').removeAttr('checked');
|
||||
}
|
||||
});
|
||||
|
||||
$('.wbcr_io_multisite_blogs').on('change', function() {
|
||||
var all_checked = true;
|
||||
$('.wbcr_io_multisite_blogs').each(function() {
|
||||
if ( $(this).attr('checked') != 'checked' ) {
|
||||
all_checked = false;
|
||||
}
|
||||
});
|
||||
if ( all_checked ) {
|
||||
$('#wbcr_io_multisite_blog_all').attr('checked', true);
|
||||
} else {
|
||||
$('#wbcr_io_multisite_blog_all').removeAttr('checked');
|
||||
}
|
||||
});
|
||||
|
||||
function send_post_data(data){
|
||||
$.post(ajaxUrl, data, function(response) {
|
||||
if ( ! response.end ) {
|
||||
data.total = response.total;
|
||||
send_post_data(data);
|
||||
$('#wio-restore-backup-progress').find('.progress-bar').css( 'width', response.percent + '%' );
|
||||
} else {
|
||||
$('#wio-restore-backup-progress').find('.progress-bar').css( 'width', '100%' );
|
||||
$('#wio-restore-backup-msg').show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function send_multisite_post_data(data){
|
||||
$.post(ajaxUrl, data, function(response) {
|
||||
if ( ! response.end ) {
|
||||
data.total = response.total;
|
||||
send_multisite_post_data(data);
|
||||
$('#wio-restore-backup-progress-' + data.blog_id).css( 'width', response.percent + '%' );
|
||||
} else {
|
||||
$('#wio-restore-backup-progress-' + data.blog_id).css( 'width', '100%' ).removeClass('wio-restore-backup-progressbar');
|
||||
if ( $('.wio-restore-backup-progressbar').length ) {
|
||||
var ai_data = {
|
||||
'total' : '?',
|
||||
'action': 'wio_restore_backup',
|
||||
'_wpnonce': $('#wio-iph-nonce').val(),
|
||||
'blog_id': $('.wio-restore-backup-progressbar:eq(0)').attr('data-id')
|
||||
};
|
||||
send_multisite_post_data(ai_data);
|
||||
} else {
|
||||
$('#wio-restore-backup-msg').show();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,5 @@
|
||||
jQuery(document).ready(function($) {
|
||||
// Disable premium dropdown buttons for non-licensed users
|
||||
$('button[data-value="googlepage"]').attr('disabled', 'disabled');
|
||||
$('button[data-value="background"]').attr('disabled', 'disabled');
|
||||
});
|
||||
@@ -0,0 +1,102 @@
|
||||
jQuery(function($) {
|
||||
var ajaxUrl = ajaxurl;
|
||||
|
||||
$(document).on('click', '.wio-reoptimize', function() {
|
||||
var ai_data = {
|
||||
'action' : $(this).attr('data-action'),
|
||||
'id' : $(this).attr('data-id'),
|
||||
'level' : $(this).attr('data-level'),
|
||||
'_wpnonce' : $(this).attr('data-nonce')
|
||||
};
|
||||
var td = $(this).closest('td');
|
||||
var msg = $(this).attr( 'data-waiting-label' );
|
||||
td.html('<p>'+msg+'</p>');
|
||||
wio_reoptimize( ai_data, td );
|
||||
return false;
|
||||
});
|
||||
|
||||
$(document).on('click', '.wio-convert', function() {
|
||||
var ai_data = {
|
||||
'action' : $(this).attr('data-action'),
|
||||
'id' : $(this).attr('data-id'),
|
||||
'format' : $(this).attr('data-format'),
|
||||
'_wpnonce' : $(this).attr('data-nonce')
|
||||
};
|
||||
var td = $(this).closest('td');
|
||||
var msg = $(this).attr( 'data-waiting-label' );
|
||||
td.html('<p>'+msg+'</p>');
|
||||
wio_convert( ai_data, td );
|
||||
return false;
|
||||
});
|
||||
|
||||
function wio_reoptimize( ai_data, td ) {
|
||||
$.post(ajaxUrl, ai_data, function(response) {
|
||||
if ( response === 'processing' ) {
|
||||
wio_reoptimize( ai_data, td );
|
||||
return false;
|
||||
}
|
||||
td.html(response);
|
||||
var btn = $('.wio-reoptimize').first();
|
||||
|
||||
if ( btn.closest('.media-frame-content').length ) {
|
||||
if ( btn.closest('table').find('.wio-datas-list').length ) {
|
||||
var diminsionName = $('.dimensions').find('strong').clone();
|
||||
var fileSizeName = $('.file-size').find('strong').clone();
|
||||
var diminsionSize = btn.closest('table').find('.wio-datas-list').data('dimensions');
|
||||
var fileSize = btn.closest('table').find('.wio-datas-list').data('size');
|
||||
$('.dimensions').html(diminsionName.get(0).outerHTML + ' ' + diminsionSize);
|
||||
$('.file-size').html(fileSizeName.get(0).outerHTML + ' ' + fileSize);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function wio_convert( ai_data, td ) {
|
||||
$.post(ajaxUrl, ai_data, function(response) {
|
||||
if ( response === 'processing' ) {
|
||||
wio_convert( ai_data, td );
|
||||
return false;
|
||||
}
|
||||
td.html(response);
|
||||
var btn = $('.wio-convert').first();
|
||||
|
||||
if ( btn.closest('.media-frame-content').length ) {
|
||||
if ( btn.closest('table').find('.wio-datas-list').length ) {
|
||||
var diminsionName = $('.dimensions').find('strong').clone();
|
||||
var fileSizeName = $('.file-size').find('strong').clone();
|
||||
var diminsionSize = btn.closest('table').find('.wio-datas-list').data('dimensions');
|
||||
var fileSize = btn.closest('table').find('.wio-datas-list').data('size');
|
||||
$('.dimensions').html(diminsionName.get(0).outerHTML + ' ' + diminsionSize);
|
||||
$('.file-size').html(fileSizeName.get(0).outerHTML + ' ' + fileSize);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('click', '.button-wio-restore', function() {
|
||||
var ai_data = {
|
||||
'action' : $(this).attr('data-action'),
|
||||
'id' : $(this).attr('data-id'),
|
||||
'_wpnonce' : $(this).attr('data-nonce')
|
||||
};
|
||||
var td = $(this).closest('td');
|
||||
var msg = $(this).attr( 'data-waiting-label' );
|
||||
td.html('<p>'+msg+'</p>');
|
||||
$.post(ajaxUrl, ai_data, function(response) {
|
||||
td.html(response);
|
||||
var btn = $('.wio-reoptimize');
|
||||
if ( btn.closest('.media-frame-content').length ) {
|
||||
if ( btn.length ) {
|
||||
btn = btn.first();
|
||||
var diminsionName = $('.dimensions').find('strong').clone();
|
||||
var fileSizeName = $('.file-size').find('strong').clone();
|
||||
var diminsionSize = btn.data('dimensions');
|
||||
var fileSize = btn.data('size');
|
||||
$('.dimensions').html(diminsionName.get(0).outerHTML + ' ' + diminsionSize);
|
||||
$('.file-size').html(fileSizeName.get(0).outerHTML + ' ' + fileSize);
|
||||
}
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,113 @@
|
||||
jQuery(function ($) {
|
||||
|
||||
var chart_html_id = 'wio-main-chart';
|
||||
var webp_chart_html_id = 'wio-webp-chart';
|
||||
var avif_chart_html_id = 'wio-avif-chart';
|
||||
|
||||
var ctx = document.getElementById(chart_html_id);
|
||||
var ctx_webp = document.getElementById(webp_chart_html_id);
|
||||
var ctx_avif = document.getElementById(avif_chart_html_id);
|
||||
|
||||
window.wio_chart = new window.robin.Chart(ctx, {
|
||||
type: 'doughnut',
|
||||
data: {
|
||||
datasets: [
|
||||
{
|
||||
data: [
|
||||
$('#' + chart_html_id).attr('data-errors'),
|
||||
$('#' + chart_html_id).attr('data-optimized'),
|
||||
$('#' + chart_html_id).attr('data-unoptimized'),
|
||||
],
|
||||
backgroundColor: [
|
||||
'#f1b1b6',
|
||||
'#8bc34a',
|
||||
'#d6d6d6',
|
||||
],
|
||||
borderWidth: 0,
|
||||
label: 'Dataset 1'
|
||||
}
|
||||
]
|
||||
},
|
||||
options: {
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
events: [],
|
||||
animation: {
|
||||
easing: 'easeOutBounce'
|
||||
},
|
||||
responsive: false,
|
||||
cutoutPercentage: 80
|
||||
}
|
||||
});
|
||||
|
||||
if (ctx_webp) {
|
||||
window.wio_chart_webp = new window.robin.Chart(ctx_webp, {
|
||||
type: 'doughnut',
|
||||
data: {
|
||||
datasets: [
|
||||
{
|
||||
data: [
|
||||
$('#' + webp_chart_html_id).attr('data-errors'),
|
||||
$('#' + webp_chart_html_id).attr('data-optimized'),
|
||||
$('#' + webp_chart_html_id).attr('data-unoptimized'),
|
||||
],
|
||||
backgroundColor: [
|
||||
'#f1b1b6',
|
||||
'#8bc34a',
|
||||
'#d6d6d6',
|
||||
],
|
||||
borderWidth: 0,
|
||||
label: 'Dataset 1'
|
||||
}
|
||||
]
|
||||
},
|
||||
options: {
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
events: [],
|
||||
animation: {
|
||||
easing: 'easeOutBounce'
|
||||
},
|
||||
responsive: false,
|
||||
cutoutPercentage: 80
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (ctx_avif) {
|
||||
window.wio_chart_avif = new window.robin.Chart(ctx_avif, {
|
||||
type: 'doughnut',
|
||||
data: {
|
||||
datasets: [
|
||||
{
|
||||
data: [
|
||||
$('#' + avif_chart_html_id).attr('data-errors'),
|
||||
$('#' + avif_chart_html_id).attr('data-optimized'),
|
||||
$('#' + avif_chart_html_id).attr('data-unoptimized'),
|
||||
],
|
||||
backgroundColor: [
|
||||
'#f1b1b6',
|
||||
'#8bc34a',
|
||||
'#d6d6d6',
|
||||
],
|
||||
borderWidth: 0,
|
||||
label: 'Dataset 1'
|
||||
}
|
||||
]
|
||||
},
|
||||
options: {
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
events: [],
|
||||
animation: {
|
||||
easing: 'easeOutBounce'
|
||||
},
|
||||
responsive: false,
|
||||
cutoutPercentage: 80
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,148 @@
|
||||
/**
|
||||
* License Manager JavaScript
|
||||
*
|
||||
* Handles license activation, deactivation, sync, and unsubscribe actions.
|
||||
* This is a lightweight replacement for clearfy-license-manager.js
|
||||
*
|
||||
* @package Robin_Image_Optimizer
|
||||
*/
|
||||
|
||||
jQuery(function($) {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Handle license action button clicks
|
||||
*/
|
||||
$(document).on('click', '.wrio-license-btn', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
// Remove any existing notices when user tries again
|
||||
$('.wrio-license-notice').remove();
|
||||
|
||||
var $button = $(this),
|
||||
$wrapper = $('#wrio-license-wrapper'),
|
||||
action = $button.data('action'),
|
||||
nonce = $wrapper.data('nonce'),
|
||||
loaderUrl = $wrapper.data('loader');
|
||||
|
||||
// Disable all buttons and show loader inside the clicked button
|
||||
$('.wrio-license-btn').prop('disabled', true);
|
||||
$button.prepend('<img class="wrio-loader" src="' + loaderUrl + '" alt="Loading..." style="height: 16px; vertical-align: middle; margin-right: 8px;">');
|
||||
|
||||
// Build request data
|
||||
var data = {
|
||||
action: 'wrio_license_action',
|
||||
_wpnonce: nonce,
|
||||
license_action: action,
|
||||
licensekey: ''
|
||||
};
|
||||
|
||||
// Include license key for activation
|
||||
if (action === 'activate') {
|
||||
data.licensekey = $('#license-key').val().trim();
|
||||
|
||||
if (!data.licensekey) {
|
||||
showNotice('Please enter a license key.', 'error');
|
||||
resetButtons();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Send AJAX request
|
||||
$.ajax({
|
||||
url: ajaxurl,
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
data: data,
|
||||
success: function(response) {
|
||||
if (response && response.success) {
|
||||
showNotice(response.data.message, 'success');
|
||||
// Reload page to show updated license state
|
||||
setTimeout(function() {
|
||||
window.location.reload();
|
||||
}, 1000);
|
||||
} else {
|
||||
var errorMsg = response && response.data && response.data.message
|
||||
? response.data.message
|
||||
: 'An error occurred. Please try again.';
|
||||
showNotice(errorMsg, 'error');
|
||||
resetButtons();
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.error('WRIO License AJAX Error:', {
|
||||
status: xhr.status,
|
||||
statusText: xhr.statusText,
|
||||
responseText: xhr.responseText,
|
||||
error: error
|
||||
});
|
||||
|
||||
var errorMsg = 'Connection error. Please check your internet connection and try again.';
|
||||
if (xhr.responseText) {
|
||||
try {
|
||||
var response = JSON.parse(xhr.responseText);
|
||||
if (response.data && response.data.message) {
|
||||
errorMsg = response.data.message;
|
||||
}
|
||||
} catch (e) {
|
||||
// Response wasn't JSON
|
||||
}
|
||||
}
|
||||
|
||||
showNotice(errorMsg, 'error');
|
||||
resetButtons();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* Reset buttons to their original state
|
||||
*/
|
||||
function resetButtons() {
|
||||
$('.wrio-loader').remove();
|
||||
$('.wrio-license-btn').prop('disabled', false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show a notice message
|
||||
*
|
||||
* @param {string} message The message to display
|
||||
* @param {string} type Notice type: 'success' or 'error'
|
||||
*/
|
||||
function showNotice(message, type) {
|
||||
// Remove any existing notices
|
||||
$('.wrio-license-notice').remove();
|
||||
|
||||
var typeClass = type === 'success' ? 'wrio-license-notice--success' : 'wrio-license-notice--error';
|
||||
var $notice = $('<div class="wrio-license-notice ' + typeClass + '"><p>' + escapeHtml(message) + '</p></div>');
|
||||
|
||||
// Insert into the error container
|
||||
$('#license-form-error-container').html($notice);
|
||||
|
||||
// Auto-dismiss after 5 seconds for success messages
|
||||
if (type === 'success') {
|
||||
setTimeout(function() {
|
||||
$notice.fadeOut(function() {
|
||||
$(this).remove();
|
||||
});
|
||||
}, 5000);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Escape HTML entities
|
||||
*
|
||||
* @param {string} text Text to escape
|
||||
* @return {string} Escaped text
|
||||
*/
|
||||
function escapeHtml(text) {
|
||||
var map = {
|
||||
'&': '&',
|
||||
'<': '<',
|
||||
'>': '>',
|
||||
'"': '"',
|
||||
"'": '''
|
||||
};
|
||||
return String(text).replace(/[&<>"']/g, function(m) { return map[m]; });
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user