Version Description
(2022-09-10) =
* [Fixed]
Re-conversion of images modified after previous conversion
* [Added]
Optimization statistics in Media Upload Popup
* [Added]
Filter webpc_source_directories
to add support for custom directories
Download this release
Release Info
Developer | mateuszgbiorczyk |
Plugin | Converter for Media – Optimize images | Convert WebP & AVIF |
Version | 5.2.0 |
Comparing to | |
See all releases |
Code changes from version 5.1.0 to 5.2.0
- assets/build/css/styles.css +1 -1
- changelog.txt +5 -0
- readme.txt +54 -33
- src/Conversion/Cron/CronInitiator.php +4 -3
- src/Conversion/Directory/DirectoryFactory.php +18 -4
- src/Conversion/Directory/DirectoryIntegration.php +3 -3
- src/Conversion/Directory/GalleryDirectory.php +0 -33
- src/Conversion/Directory/PluginsDirectory.php +0 -33
- src/Conversion/Directory/SourceDirectory.php +61 -0
- src/Conversion/Directory/ThemesDirectory.php +0 -33
- src/Conversion/Directory/UploadsDirectory.php +0 -40
- src/Conversion/Endpoint/CronConversionEndpoint.php +7 -0
- src/Conversion/Endpoint/EndpointIntegration.php +1 -1
- src/Conversion/Endpoint/EndpointInterface.php +7 -0
- src/Conversion/Endpoint/ImagesCounterEndpoint.php +7 -0
- src/Conversion/Endpoint/PathsEndpoint.php +9 -0
- src/Conversion/Endpoint/RegenerateEndpoint.php +7 -0
- src/Conversion/Format/AvifFormat.php +1 -2
- src/Conversion/Media/Attachment.php +1 -1
- src/Conversion/Media/Upload.php +1 -1
- src/Conversion/Method/RemoteMethod.php +1 -1
- src/Conversion/PathsFinder.php +22 -14
- src/Error/Notice/LibsNotInstalledNotice.php +2 -4
- src/Error/Notice/LibsWithoutWebpSupportNotice.php +2 -4
- src/Error/Notice/PathUploadsUnavailableNotice.php +1 -1
- src/Error/Notice/PathWebpNotWritableNotice.php +1 -1
- src/Error/Notice/RewritesNotExecutedNotice.php +1 -1
- src/Error/Notice/RewritesNotWorkingNotice.php +1 -1
- src/Exception/FilesizeOversizeException.php +2 -1
- src/Plugin/Links.php +2 -4
- src/Service/DeactivationModalGenerator.php +1 -1
- src/Service/MediaStatusViewer.php +71 -14
- src/Settings/AdminAssets.php +4 -4
- src/Settings/Option/AccessTokenOption.php +3 -4
- src/Settings/Option/ConversionMethodOption.php +1 -2
- src/Settings/Option/ImageResizeOption.php +2 -3
- src/Settings/Option/OutputFormatsOption.php +1 -2
- src/Settings/Page/GeneralSettingsPage.php +1 -2
- src/WebpConverterConstants.php +0 -7
- templates/components/notices/thanks.php +1 -1
- templates/components/notices/welcome.php +1 -0
- templates/components/server/filters.php +6 -0
- templates/components/widgets/about.php +1 -1
- templates/components/widgets/regenerate.php +1 -1
- templates/components/widgets/server.php +3 -3
- templates/views/settings-debug.php +2 -2
- templates/views/settings.php +2 -2
- vendor/autoload.php +1 -1
- vendor/composer/autoload_classmap.php +1 -4
- vendor/composer/autoload_real.php +4 -4
- vendor/composer/autoload_static.php +5 -8
- vendor/composer/installed.php +2 -2
- webp-converter-for-media.php +3 -3
assets/build/css/styles.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
@charset "UTF-8";@keyframes dotsLoading{0%,to{content:"..."}25%{content:" .."}50%{content:". ."}75%{content:".. "}}@font-face{font-family:webpc-icomoon;font-style:normal;font-weight:400;src:url(../../fonts/icons/icomoon.eot?ver=16285166);src:url(../../fonts/icons/icomoon.woff?ver=16285166) format("woff"),url(../../fonts/icons/icomoon.eot?ver=16285166#iefix) format("embedded-opentype"),url(../../fonts/icons/icomoon.ttf?ver=16285166) format("truetype"),url(../../fonts/icons/icomoon.svg?ver=16285166#icomoon) format("svg")}.webpcPage{color:#101517;margin:0;overflow:hidden;padding:0 20px 0 0}.webpcPage *,.webpcPage :after,.webpcPage :before{box-sizing:border-box;margin:0;padding:0}.webpcPage [hidden]{display:none!important}.webpcPage__headline{background-color:#11f3af;line-height:0;margin-bottom:30px;margin-top:10px;padding:20px 30px;position:relative;width:100%;z-index:1}.webpcPage__headline img{max-width:100%}.webpcPage__headline:before{background-image:url(../../img/logo-bg.png);background-position:0 0;background-repeat:repeat;content:"";height:100%;left:0;opacity:.05;position:absolute;top:0;width:100%;z-index:-1}.webpcPage__alert{background-color:#00a32a;color:#fff;font-size:14px;line-height:1.5714285714;margin-bottom:30px;padding:15px 20px}.webpcPage__columns{margin:0 -30px;overflow:hidden}.webpcPage__column{float:left;padding:0 30px}.webpcPage__column--large{width:66.666%}.webpcPage__column--small{width:33.333%}.webpcPage__widget{background-color:#fff}.webpcPage__widget+.webpcPage__widget{margin-top:60px}.webpcPage__widget--border{border:1px solid #11f3af;border-top:0}.webpcPage__widgetTitle{border-bottom:1px solid #dcdcde;font-size:16px;font-weight:600;line-height:1.5;padding:13px 30px;position:relative;z-index:1}.webpcMenu+.webpcPage__widget .webpcPage__widgetTitle{display:none}.webpcPage__widgetTitle--error{background-color:#d63638;border-color:transparent;color:#fff;font-weight:400}.webpcPage__widgetTitle--logo{background-color:#11f3af;border-color:transparent}.webpcPage__widgetTitle--logo:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e902"!important;font-family:webpc-icomoon!important;font-size:30px;font-style:normal;font-variant:normal;font-weight:400;line-height:1;position:absolute;right:30px;text-transform:none;top:10px}.webpcPage__widgetTitle--logo:after{background-image:url(../../img/logo-bg.png);background-position:0 0;background-repeat:repeat;content:"";height:100%;left:0;opacity:.05;position:absolute;top:0;width:100%;z-index:-1}.webpcPage__widgetRow{padding-bottom:10px}.webpcPage__widgetRow:last-child{padding-bottom:0}.webpcPage__widgetRow .webpcButton{margin:10px 0}.webpcPage__widgetColumns{display:flex;flex-wrap:wrap;margin:0 -10px}.webpcPage__widgetColumn{padding:0 10px;width:50%}.webpcPage__widgetColumn:first-child:last-child{flex:1}.webpcPage__widgetNotice{background-color:#2271b1;margin:10px 0;padding:10px 20px}.webpcPage__widgetNotice p{color:#fff;font-size:1.2rem}.webpcPage__widgetNotice p+p{margin-top:0}.webpcPage__widgetNotice p a{color:inherit;font-weight:600;letter-spacing:1px;text-decoration:none;text-transform:uppercase}.webpcPage__footer{margin-top:30px}.webpcPage__footerLogo{text-align:center}.webpcPage__footerLogo:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#dcdcde;content:"\e902"!important;font-family:webpc-icomoon!important;font-size:50px;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.webpcPage__footerContent{font-size:14px;line-height:1.5714285714;padding:14px 20px;text-align:center}.webpcPage__footerIcon{display:inline-block;padding:0 3px}.webpcPage__footerIcon--heart{color:#d63638}.webpcPage__footerIcon--heart:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e901"!important;font-family:webpc-icomoon!important;font-style:normal;font-variant:normal;font-weight:400;text-transform:none}.webpcPage__footerIcon--stars{color:#f0c33c}.webpcPage__footerIcon--stars:before{content:"\e903"!important}#wp-admin-bar-webpc-menu .ab-icon:before,.webpcPage__footerIcon--stars:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:webpc-icomoon!important;font-style:normal;font-variant:normal;font-weight:400;text-transform:none}#wp-admin-bar-webpc-menu .ab-icon:before{content:"\e900"!important}.notice[data-notice=webp-converter-for-media]{padding:0}.notice[data-notice=webp-converter-for-media]~.notice[data-notice=webp-converter-for-media]{display:none}.webpcButton{background-color:#fff;border:1px solid transparent;box-shadow:none!important;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:14px;line-height:1.5714285714;min-width:180px;opacity:1!important;outline:none!important;padding:9px 30px;position:relative;text-align:center;text-decoration:none!important;transition:color .3s!important;z-index:10}p>.webpcButton{margin:6px 0}.webpcButton:before{float:left;font-family:dashicons;font-size:20px;line-height:1.1;margin-right:10px}.webpcButton:after{content:"";height:100%;left:0;position:absolute;top:0;transition:width .3s;width:0;z-index:-1}.webpcButton:hover:after{width:100%}.webpcButton[disabled]{opacity:.5!important;pointer-events:none}.webpcButton--blue:hover,.webpcButton--gray:hover,.webpcButton--red:hover{color:#fff!important}.webpcButton--blue{border-color:#2271b1;color:#2271b1!important}.webpcButton--blue.webpcButton--bg,.webpcButton--blue:after{background-color:#2271b1}.webpcButton--blue.webpcButton--bg:after{background-color:#135e96}.webpcButton--red{border-color:#d63638;color:#d63638!important}.webpcButton--red.webpcButton--bg,.webpcButton--red:after{background-color:#d63638}.webpcButton--red.webpcButton--bg:after{background-color:#b32d2e}.webpcButton--gray{border-color:#c3c4c7;color:#c3c4c7!important}.webpcButton--gray.webpcButton--bg,.webpcButton--gray:after{background-color:#c3c4c7}.webpcButton--gray.webpcButton--bg:after{background-color:#a7aaad}.webpcButton--bg{color:#fff!important}.webpcContent{padding:20px 30px}.webpcContent--author{background-image:url(../../img/author.png);background-position:left calc(100% - 30px);background-repeat:no-repeat;background-size:152px 152px;margin-left:20px;padding-left:172px}.webpcContent p{font-size:14px;line-height:1.5714285714;max-width:800px}.webpcContent p.center{text-align:center}.webpcContent--wide p{max-width:100%}.webpcContent a{box-shadow:none;color:#2271b1;outline:none;text-decoration:underline;transition:opacity .3s}.webpcContent a:hover{opacity:.5}.webpcContent h1,.webpcContent h2,.webpcContent h3,.webpcContent h4,.webpcContent h5,.webpcContent h6{font-size:16px;font-weight:600;line-height:1.5}.webpcContent h1,.webpcContent h2,.webpcContent h3,.webpcContent h4,.webpcContent h5,.webpcContent h6,.webpcContent p{margin:10px 0 0;padding:4px 0}.webpcContent h1:first-child,.webpcContent h2:first-child,.webpcContent h3:first-child,.webpcContent h4:first-child,.webpcContent h5:first-child,.webpcContent h6:first-child,.webpcContent p:first-child,.webpcContent p>p{margin-top:0}.webpcInput+p{background-color:#f0f0f1;margin:0 0 10px;max-width:none;padding:14px 20px}.webpcContent h1+p,.webpcContent h2+p,.webpcContent h3+p,.webpcContent h4+p,.webpcContent h5+p,.webpcContent h6+p{font-size:12px;line-height:1.75;margin-top:0}.webpcContent--notice h1+p,.webpcContent--notice h2+p,.webpcContent--notice h3+p,.webpcContent--notice h4+p,.webpcContent--notice h5+p,.webpcContent--notice h6+p{font-size:14px;line-height:1.5714285714}.webpcContent__buttons{margin-top:-10px;overflow:hidden;padding:10px 0}.webpcContent__button{float:left;margin:20px 20px 0 0}.webpcContent__button:last-child{margin-right:0}.webpcField{display:flex;padding:10px 0}.webpcField--center{align-items:center}.webpcField+.webpcField{margin-top:-12px}.webpcField__input{display:none!important}.webpcField__input+label{display:inline-block;position:relative}.webpcField__input[disabled]+label{pointer-events:none}.webpcField__input[disabled]+label:after,.webpcField__input[disabled]+label:before{opacity:.25}.webpcField__input--checkbox+label,.webpcField__input--radio+label{height:22px;width:22px}.webpcField__input--checkbox+label:after,.webpcField__input--checkbox+label:before,.webpcField__input--radio+label:after,.webpcField__input--radio+label:before{align-items:center;content:"";display:flex;height:22px;justify-content:center;left:0;position:absolute;top:0;width:22px}.webpcField__input--checkbox+label:before,.webpcField__input--radio+label:before{border:1px solid #c3c4c7}.webpcField__input--checkbox+label:after,.webpcField__input--radio+label:after{position:absolute;transform:scale(0);transition:transform .3s}.webpcField__input--checkbox:checked+label:after,.webpcField__input--radio:checked+label:after{transform:scale(1)}.webpcField__input--checkbox+label:after{color:#00a32a;content:"\f147";font-family:dashicons;font-size:20px;line-height:1}.webpcField__input--radio+label:before{border-radius:50%}.webpcField__input--radio+label:after{background-color:#00a32a;border-radius:50%;content:"";height:8px;left:7px;top:7px;width:8px}.webpcField__input--toggle+label{height:22px;width:44px}.webpcField__input--toggle+label:after,.webpcField__input--toggle+label:before{content:"";position:absolute}.webpcField__input--toggle+label:before{background-color:#dcdcde;border:1px solid #c3c4c7;border-radius:11px;height:22px;left:0;top:0;transition:background-color .3s;width:44px}.webpcField__input--toggle+label:after{background-color:#fff;border-radius:50%;height:16px;left:3px;position:absolute;top:3px;transition:transform .3s;width:16px}.webpcField__input--toggle:checked+label:before{background-color:#00a32a}.webpcField__input--toggle:checked+label:after{transform:translateX(22px)}.webpcField__label{display:block;font-size:14px;line-height:1.5714285714;max-width:650px;position:relative}.webpcField__input~.webpcField__label{margin-left:20px}.webpcInput{align-items:center;display:flex;padding:10px 0}.webpcInput__field{border:1px solid #c3c4c7!important;border-radius:0!important;box-shadow:none!important;flex:1;font-size:14px!important;line-height:1.5714285714!important;padding:9px 15px!important}.webpcInput__field--small{margin:0 10px;padding:4px 10px!important;width:80px}.webpcInput__field[readonly]{background-color:#f0f0f1}.webpcInput__button{margin:0 0 0 10px!important}.webpcLoader__columns{display:flex;justify-content:center;margin:-30px -30px 0;padding:10px 0;text-align:center}.webpcLoader__column{line-height:0;margin-top:30px;padding:0 30px}.webpcLoader__columnInner{display:inline-block;position:relative}.webpcLoader__columnInner:before{background-color:#f0f0f1;border-radius:50%;content:"";height:calc(100% - 10px);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:calc(100% - 10px)}.webpcLoader__columnCircle{fill:none;stroke:#00a32a;stroke-width:10px;stroke-dasharray:596.90248;stroke-dashoffset:596.90248;height:200px;transform:rotate(-90deg);transition:stroke-dashoffset 2.5s;width:200px}.webpcLoader__column[data-percent="1"] .webpcLoader__columnCircle{stroke-dashoffset:590.9334552}.webpcLoader__column[data-percent="2"] .webpcLoader__columnCircle{stroke-dashoffset:584.9644304}.webpcLoader__column[data-percent="3"] .webpcLoader__columnCircle{stroke-dashoffset:578.9954056}.webpcLoader__column[data-percent="4"] .webpcLoader__columnCircle{stroke-dashoffset:573.0263808}.webpcLoader__column[data-percent="5"] .webpcLoader__columnCircle{stroke-dashoffset:567.057356}.webpcLoader__column[data-percent="6"] .webpcLoader__columnCircle{stroke-dashoffset:561.0883312}.webpcLoader__column[data-percent="7"] .webpcLoader__columnCircle{stroke-dashoffset:555.1193064}.webpcLoader__column[data-percent="8"] .webpcLoader__columnCircle{stroke-dashoffset:549.1502816}.webpcLoader__column[data-percent="9"] .webpcLoader__columnCircle{stroke-dashoffset:543.1812568}.webpcLoader__column[data-percent="10"] .webpcLoader__columnCircle{stroke-dashoffset:537.212232}.webpcLoader__column[data-percent="11"] .webpcLoader__columnCircle{stroke-dashoffset:531.2432072}.webpcLoader__column[data-percent="12"] .webpcLoader__columnCircle{stroke-dashoffset:525.2741824}.webpcLoader__column[data-percent="13"] .webpcLoader__columnCircle{stroke-dashoffset:519.3051576}.webpcLoader__column[data-percent="14"] .webpcLoader__columnCircle{stroke-dashoffset:513.3361328}.webpcLoader__column[data-percent="15"] .webpcLoader__columnCircle{stroke-dashoffset:507.367108}.webpcLoader__column[data-percent="16"] .webpcLoader__columnCircle{stroke-dashoffset:501.3980832}.webpcLoader__column[data-percent="17"] .webpcLoader__columnCircle{stroke-dashoffset:495.4290584}.webpcLoader__column[data-percent="18"] .webpcLoader__columnCircle{stroke-dashoffset:489.4600336}.webpcLoader__column[data-percent="19"] .webpcLoader__columnCircle{stroke-dashoffset:483.4910088}.webpcLoader__column[data-percent="20"] .webpcLoader__columnCircle{stroke-dashoffset:477.521984}.webpcLoader__column[data-percent="21"] .webpcLoader__columnCircle{stroke-dashoffset:471.5529592}.webpcLoader__column[data-percent="22"] .webpcLoader__columnCircle{stroke-dashoffset:465.5839344}.webpcLoader__column[data-percent="23"] .webpcLoader__columnCircle{stroke-dashoffset:459.6149096}.webpcLoader__column[data-percent="24"] .webpcLoader__columnCircle{stroke-dashoffset:453.6458848}.webpcLoader__column[data-percent="25"] .webpcLoader__columnCircle{stroke-dashoffset:447.67686}.webpcLoader__column[data-percent="26"] .webpcLoader__columnCircle{stroke-dashoffset:441.7078352}.webpcLoader__column[data-percent="27"] .webpcLoader__columnCircle{stroke-dashoffset:435.7388104}.webpcLoader__column[data-percent="28"] .webpcLoader__columnCircle{stroke-dashoffset:429.7697856}.webpcLoader__column[data-percent="29"] .webpcLoader__columnCircle{stroke-dashoffset:423.8007608}.webpcLoader__column[data-percent="30"] .webpcLoader__columnCircle{stroke-dashoffset:417.831736}.webpcLoader__column[data-percent="31"] .webpcLoader__columnCircle{stroke-dashoffset:411.8627112}.webpcLoader__column[data-percent="32"] .webpcLoader__columnCircle{stroke-dashoffset:405.8936864}.webpcLoader__column[data-percent="33"] .webpcLoader__columnCircle{stroke-dashoffset:399.9246616}.webpcLoader__column[data-percent="34"] .webpcLoader__columnCircle{stroke-dashoffset:393.9556368}.webpcLoader__column[data-percent="35"] .webpcLoader__columnCircle{stroke-dashoffset:387.986612}.webpcLoader__column[data-percent="36"] .webpcLoader__columnCircle{stroke-dashoffset:382.0175872}.webpcLoader__column[data-percent="37"] .webpcLoader__columnCircle{stroke-dashoffset:376.0485624}.webpcLoader__column[data-percent="38"] .webpcLoader__columnCircle{stroke-dashoffset:370.0795376}.webpcLoader__column[data-percent="39"] .webpcLoader__columnCircle{stroke-dashoffset:364.1105128}.webpcLoader__column[data-percent="40"] .webpcLoader__columnCircle{stroke-dashoffset:358.141488}.webpcLoader__column[data-percent="41"] .webpcLoader__columnCircle{stroke-dashoffset:352.1724632}.webpcLoader__column[data-percent="42"] .webpcLoader__columnCircle{stroke-dashoffset:346.2034384}.webpcLoader__column[data-percent="43"] .webpcLoader__columnCircle{stroke-dashoffset:340.2344136}.webpcLoader__column[data-percent="44"] .webpcLoader__columnCircle{stroke-dashoffset:334.2653888}.webpcLoader__column[data-percent="45"] .webpcLoader__columnCircle{stroke-dashoffset:328.296364}.webpcLoader__column[data-percent="46"] .webpcLoader__columnCircle{stroke-dashoffset:322.3273392}.webpcLoader__column[data-percent="47"] .webpcLoader__columnCircle{stroke-dashoffset:316.3583144}.webpcLoader__column[data-percent="48"] .webpcLoader__columnCircle{stroke-dashoffset:310.3892896}.webpcLoader__column[data-percent="49"] .webpcLoader__columnCircle{stroke-dashoffset:304.4202648}.webpcLoader__column[data-percent="50"] .webpcLoader__columnCircle{stroke-dashoffset:298.45124}.webpcLoader__column[data-percent="51"] .webpcLoader__columnCircle{stroke-dashoffset:292.4822152}.webpcLoader__column[data-percent="52"] .webpcLoader__columnCircle{stroke-dashoffset:286.5131904}.webpcLoader__column[data-percent="53"] .webpcLoader__columnCircle{stroke-dashoffset:280.5441656}.webpcLoader__column[data-percent="54"] .webpcLoader__columnCircle{stroke-dashoffset:274.5751408}.webpcLoader__column[data-percent="55"] .webpcLoader__columnCircle{stroke-dashoffset:268.606116}.webpcLoader__column[data-percent="56"] .webpcLoader__columnCircle{stroke-dashoffset:262.6370912}.webpcLoader__column[data-percent="57"] .webpcLoader__columnCircle{stroke-dashoffset:256.6680664}.webpcLoader__column[data-percent="58"] .webpcLoader__columnCircle{stroke-dashoffset:250.6990416}.webpcLoader__column[data-percent="59"] .webpcLoader__columnCircle{stroke-dashoffset:244.7300168}.webpcLoader__column[data-percent="60"] .webpcLoader__columnCircle{stroke-dashoffset:238.760992}.webpcLoader__column[data-percent="61"] .webpcLoader__columnCircle{stroke-dashoffset:232.7919672}.webpcLoader__column[data-percent="62"] .webpcLoader__columnCircle{stroke-dashoffset:226.8229424}.webpcLoader__column[data-percent="63"] .webpcLoader__columnCircle{stroke-dashoffset:220.8539176}.webpcLoader__column[data-percent="64"] .webpcLoader__columnCircle{stroke-dashoffset:214.8848928}.webpcLoader__column[data-percent="65"] .webpcLoader__columnCircle{stroke-dashoffset:208.915868}.webpcLoader__column[data-percent="66"] .webpcLoader__columnCircle{stroke-dashoffset:202.9468432}.webpcLoader__column[data-percent="67"] .webpcLoader__columnCircle{stroke-dashoffset:196.9778184}.webpcLoader__column[data-percent="68"] .webpcLoader__columnCircle{stroke-dashoffset:191.0087936}.webpcLoader__column[data-percent="69"] .webpcLoader__columnCircle{stroke-dashoffset:185.0397688}.webpcLoader__column[data-percent="70"] .webpcLoader__columnCircle{stroke-dashoffset:179.070744}.webpcLoader__column[data-percent="71"] .webpcLoader__columnCircle{stroke-dashoffset:173.1017192}.webpcLoader__column[data-percent="72"] .webpcLoader__columnCircle{stroke-dashoffset:167.1326944}.webpcLoader__column[data-percent="73"] .webpcLoader__columnCircle{stroke-dashoffset:161.1636696}.webpcLoader__column[data-percent="74"] .webpcLoader__columnCircle{stroke-dashoffset:155.1946448}.webpcLoader__column[data-percent="75"] .webpcLoader__columnCircle{stroke-dashoffset:149.22562}.webpcLoader__column[data-percent="76"] .webpcLoader__columnCircle{stroke-dashoffset:143.2565952}.webpcLoader__column[data-percent="77"] .webpcLoader__columnCircle{stroke-dashoffset:137.2875704}.webpcLoader__column[data-percent="78"] .webpcLoader__columnCircle{stroke-dashoffset:131.3185456}.webpcLoader__column[data-percent="79"] .webpcLoader__columnCircle{stroke-dashoffset:125.3495208}.webpcLoader__column[data-percent="80"] .webpcLoader__columnCircle{stroke-dashoffset:119.380496}.webpcLoader__column[data-percent="81"] .webpcLoader__columnCircle{stroke-dashoffset:113.4114712}.webpcLoader__column[data-percent="82"] .webpcLoader__columnCircle{stroke-dashoffset:107.4424464}.webpcLoader__column[data-percent="83"] .webpcLoader__columnCircle{stroke-dashoffset:101.4734216}.webpcLoader__column[data-percent="84"] .webpcLoader__columnCircle{stroke-dashoffset:95.5043968}.webpcLoader__column[data-percent="85"] .webpcLoader__columnCircle{stroke-dashoffset:89.535372}.webpcLoader__column[data-percent="86"] .webpcLoader__columnCircle{stroke-dashoffset:83.5663472}.webpcLoader__column[data-percent="87"] .webpcLoader__columnCircle{stroke-dashoffset:77.5973224}.webpcLoader__column[data-percent="88"] .webpcLoader__columnCircle{stroke-dashoffset:71.6282976}.webpcLoader__column[data-percent="89"] .webpcLoader__columnCircle{stroke-dashoffset:65.6592728}.webpcLoader__column[data-percent="90"] .webpcLoader__columnCircle{stroke-dashoffset:59.690248}.webpcLoader__column[data-percent="91"] .webpcLoader__columnCircle{stroke-dashoffset:53.7212232}.webpcLoader__column[data-percent="92"] .webpcLoader__columnCircle{stroke-dashoffset:47.7521984}.webpcLoader__column[data-percent="93"] .webpcLoader__columnCircle{stroke-dashoffset:41.7831736}.webpcLoader__column[data-percent="94"] .webpcLoader__columnCircle{stroke-dashoffset:35.8141488}.webpcLoader__column[data-percent="95"] .webpcLoader__columnCircle{stroke-dashoffset:29.845124}.webpcLoader__column[data-percent="96"] .webpcLoader__columnCircle{stroke-dashoffset:23.8760992}.webpcLoader__column[data-percent="97"] .webpcLoader__columnCircle{stroke-dashoffset:17.9070744}.webpcLoader__column[data-percent="98"] .webpcLoader__columnCircle{stroke-dashoffset:11.9380496}.webpcLoader__column[data-percent="99"] .webpcLoader__columnCircle{stroke-dashoffset:5.9690248}.webpcLoader__column[data-percent="100"] .webpcLoader__columnCircle{stroke-dashoffset:0}.webpcLoader__columnOverlay{left:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.webpcLoader__columnOverlayTitle{font-size:14px;font-weight:600;line-height:1.5714285714;padding:4px 20px}.webpcLoader__columnOverlayTitle strong{display:block;font-size:24px;line-height:1.2083333333}.webpcLoader__columnOverlayDesc{font-size:14px;line-height:1.5714285714;min-height:52px;padding:4px 20px}.webpcLoader__columnOverlayDesc--active{display:none}.webpcLoader__column[data-percent] .webpcLoader__columnOverlayDesc--active{display:block}.webpcLoader__column[data-percent] .webpcLoader__columnOverlayDesc--loading{display:none}.webpcLoader__columnOverlayDesc--loading:after{animation:dotsLoading 1s linear infinite;content:"...";font-family:monospace}.webpcLoader__statusProgress--error .webpcLoader__columnOverlayDesc--loading:after,.webpcLoader__statusProgress[data-percent="100"] .webpcLoader__columnOverlayDesc--loading:after{display:none}.webpcLoader__columnDesc{font-size:14px;line-height:1.5714285714;margin-bottom:-10px;margin-top:10px;padding:4px 0;text-align:center}.webpcLoader__status{margin-top:10px;padding-top:10px}.webpcLoader__statusProgress{font-size:0;height:31px;line-height:0;margin:10px 0;position:relative}.webpcLoader__statusProgress:before{background-color:#00a32a;content:"";height:100%;left:0;position:absolute;top:0;transition:width .3s;width:0}.webpcLoader__statusProgress--error:before{background-color:#d63638}.webpcLoader__statusProgress[data-percent="0"]:before{width:0}.webpcLoader__statusProgress[data-percent="1"]:before{width:1%}.webpcLoader__statusProgress[data-percent="2"]:before{width:2%}.webpcLoader__statusProgress[data-percent="3"]:before{width:3%}.webpcLoader__statusProgress[data-percent="4"]:before{width:4%}.webpcLoader__statusProgress[data-percent="5"]:before{width:5%}.webpcLoader__statusProgress[data-percent="6"]:before{width:6%}.webpcLoader__statusProgress[data-percent="7"]:before{width:7%}.webpcLoader__statusProgress[data-percent="8"]:before{width:8%}.webpcLoader__statusProgress[data-percent="9"]:before{width:9%}.webpcLoader__statusProgress[data-percent="10"]:before{width:10%}.webpcLoader__statusProgress[data-percent="11"]:before{width:11%}.webpcLoader__statusProgress[data-percent="12"]:before{width:12%}.webpcLoader__statusProgress[data-percent="13"]:before{width:13%}.webpcLoader__statusProgress[data-percent="14"]:before{width:14%}.webpcLoader__statusProgress[data-percent="15"]:before{width:15%}.webpcLoader__statusProgress[data-percent="16"]:before{width:16%}.webpcLoader__statusProgress[data-percent="17"]:before{width:17%}.webpcLoader__statusProgress[data-percent="18"]:before{width:18%}.webpcLoader__statusProgress[data-percent="19"]:before{width:19%}.webpcLoader__statusProgress[data-percent="20"]:before{width:20%}.webpcLoader__statusProgress[data-percent="21"]:before{width:21%}.webpcLoader__statusProgress[data-percent="22"]:before{width:22%}.webpcLoader__statusProgress[data-percent="23"]:before{width:23%}.webpcLoader__statusProgress[data-percent="24"]:before{width:24%}.webpcLoader__statusProgress[data-percent="25"]:before{width:25%}.webpcLoader__statusProgress[data-percent="26"]:before{width:26%}.webpcLoader__statusProgress[data-percent="27"]:before{width:27%}.webpcLoader__statusProgress[data-percent="28"]:before{width:28%}.webpcLoader__statusProgress[data-percent="29"]:before{width:29%}.webpcLoader__statusProgress[data-percent="30"]:before{width:30%}.webpcLoader__statusProgress[data-percent="31"]:before{width:31%}.webpcLoader__statusProgress[data-percent="32"]:before{width:32%}.webpcLoader__statusProgress[data-percent="33"]:before{width:33%}.webpcLoader__statusProgress[data-percent="34"]:before{width:34%}.webpcLoader__statusProgress[data-percent="35"]:before{width:35%}.webpcLoader__statusProgress[data-percent="36"]:before{width:36%}.webpcLoader__statusProgress[data-percent="37"]:before{width:37%}.webpcLoader__statusProgress[data-percent="38"]:before{width:38%}.webpcLoader__statusProgress[data-percent="39"]:before{width:39%}.webpcLoader__statusProgress[data-percent="40"]:before{width:40%}.webpcLoader__statusProgress[data-percent="41"]:before{width:41%}.webpcLoader__statusProgress[data-percent="42"]:before{width:42%}.webpcLoader__statusProgress[data-percent="43"]:before{width:43%}.webpcLoader__statusProgress[data-percent="44"]:before{width:44%}.webpcLoader__statusProgress[data-percent="45"]:before{width:45%}.webpcLoader__statusProgress[data-percent="46"]:before{width:46%}.webpcLoader__statusProgress[data-percent="47"]:before{width:47%}.webpcLoader__statusProgress[data-percent="48"]:before{width:48%}.webpcLoader__statusProgress[data-percent="49"]:before{width:49%}.webpcLoader__statusProgress[data-percent="50"]:before{width:50%}.webpcLoader__statusProgress[data-percent="51"]:before{width:51%}.webpcLoader__statusProgress[data-percent="52"]:before{width:52%}.webpcLoader__statusProgress[data-percent="53"]:before{width:53%}.webpcLoader__statusProgress[data-percent="54"]:before{width:54%}.webpcLoader__statusProgress[data-percent="55"]:before{width:55%}.webpcLoader__statusProgress[data-percent="56"]:before{width:56%}.webpcLoader__statusProgress[data-percent="57"]:before{width:57%}.webpcLoader__statusProgress[data-percent="58"]:before{width:58%}.webpcLoader__statusProgress[data-percent="59"]:before{width:59%}.webpcLoader__statusProgress[data-percent="60"]:before{width:60%}.webpcLoader__statusProgress[data-percent="61"]:before{width:61%}.webpcLoader__statusProgress[data-percent="62"]:before{width:62%}.webpcLoader__statusProgress[data-percent="63"]:before{width:63%}.webpcLoader__statusProgress[data-percent="64"]:before{width:64%}.webpcLoader__statusProgress[data-percent="65"]:before{width:65%}.webpcLoader__statusProgress[data-percent="66"]:before{width:66%}.webpcLoader__statusProgress[data-percent="67"]:before{width:67%}.webpcLoader__statusProgress[data-percent="68"]:before{width:68%}.webpcLoader__statusProgress[data-percent="69"]:before{width:69%}.webpcLoader__statusProgress[data-percent="70"]:before{width:70%}.webpcLoader__statusProgress[data-percent="71"]:before{width:71%}.webpcLoader__statusProgress[data-percent="72"]:before{width:72%}.webpcLoader__statusProgress[data-percent="73"]:before{width:73%}.webpcLoader__statusProgress[data-percent="74"]:before{width:74%}.webpcLoader__statusProgress[data-percent="75"]:before{width:75%}.webpcLoader__statusProgress[data-percent="76"]:before{width:76%}.webpcLoader__statusProgress[data-percent="77"]:before{width:77%}.webpcLoader__statusProgress[data-percent="78"]:before{width:78%}.webpcLoader__statusProgress[data-percent="79"]:before{width:79%}.webpcLoader__statusProgress[data-percent="80"]:before{width:80%}.webpcLoader__statusProgress[data-percent="81"]:before{width:81%}.webpcLoader__statusProgress[data-percent="82"]:before{width:82%}.webpcLoader__statusProgress[data-percent="83"]:before{width:83%}.webpcLoader__statusProgress[data-percent="84"]:before{width:84%}.webpcLoader__statusProgress[data-percent="85"]:before{width:85%}.webpcLoader__statusProgress[data-percent="86"]:before{width:86%}.webpcLoader__statusProgress[data-percent="87"]:before{width:87%}.webpcLoader__statusProgress[data-percent="88"]:before{width:88%}.webpcLoader__statusProgress[data-percent="89"]:before{width:89%}.webpcLoader__statusProgress[data-percent="90"]:before{width:90%}.webpcLoader__statusProgress[data-percent="91"]:before{width:91%}.webpcLoader__statusProgress[data-percent="92"]:before{width:92%}.webpcLoader__statusProgress[data-percent="93"]:before{width:93%}.webpcLoader__statusProgress[data-percent="94"]:before{width:94%}.webpcLoader__statusProgress[data-percent="95"]:before{width:95%}.webpcLoader__statusProgress[data-percent="96"]:before{width:96%}.webpcLoader__statusProgress[data-percent="97"]:before{width:97%}.webpcLoader__statusProgress[data-percent="98"]:before{width:98%}.webpcLoader__statusProgress[data-percent="99"]:before{width:99%}.webpcLoader__statusProgress[data-percent="100"]:before{width:100%}.webpcLoader__statusProgressCount{background-color:#00a32a;color:#fff;display:inline-block;font-family:monospace;font-size:12px;line-height:1.75;padding:5px 10px;position:relative}.webpcLoader__statusProgress--error .webpcLoader__statusProgressCount{background-color:#d63638}.webpcLoader__statusProgressCount:after{animation:dotsLoading 1s linear infinite;content:"...";margin-left:5px}.webpcLoader__statusProgress--error .webpcLoader__statusProgressCount:after,.webpcLoader__statusProgress[data-percent="100"] .webpcLoader__statusProgressCount:after{display:none}.webpcLoader__statusProgress[data-percent="0"] .webpcLoader__statusProgressCount:before{content:"0%"}.webpcLoader__statusProgress[data-percent="1"] .webpcLoader__statusProgressCount:before{content:"1%"}.webpcLoader__statusProgress[data-percent="2"] .webpcLoader__statusProgressCount:before{content:"2%"}.webpcLoader__statusProgress[data-percent="3"] .webpcLoader__statusProgressCount:before{content:"3%"}.webpcLoader__statusProgress[data-percent="4"] .webpcLoader__statusProgressCount:before{content:"4%"}.webpcLoader__statusProgress[data-percent="5"] .webpcLoader__statusProgressCount:before{content:"5%"}.webpcLoader__statusProgress[data-percent="6"] .webpcLoader__statusProgressCount:before{content:"6%"}.webpcLoader__statusProgress[data-percent="7"] .webpcLoader__statusProgressCount:before{content:"7%"}.webpcLoader__statusProgress[data-percent="8"] .webpcLoader__statusProgressCount:before{content:"8%"}.webpcLoader__statusProgress[data-percent="9"] .webpcLoader__statusProgressCount:before{content:"9%"}.webpcLoader__statusProgress[data-percent="10"] .webpcLoader__statusProgressCount:before{content:"10%"}.webpcLoader__statusProgress[data-percent="11"] .webpcLoader__statusProgressCount:before{content:"11%"}.webpcLoader__statusProgress[data-percent="12"] .webpcLoader__statusProgressCount:before{content:"12%"}.webpcLoader__statusProgress[data-percent="13"] .webpcLoader__statusProgressCount:before{content:"13%"}.webpcLoader__statusProgress[data-percent="14"] .webpcLoader__statusProgressCount:before{content:"14%"}.webpcLoader__statusProgress[data-percent="15"] .webpcLoader__statusProgressCount:before{content:"15%"}.webpcLoader__statusProgress[data-percent="16"] .webpcLoader__statusProgressCount:before{content:"16%"}.webpcLoader__statusProgress[data-percent="17"] .webpcLoader__statusProgressCount:before{content:"17%"}.webpcLoader__statusProgress[data-percent="18"] .webpcLoader__statusProgressCount:before{content:"18%"}.webpcLoader__statusProgress[data-percent="19"] .webpcLoader__statusProgressCount:before{content:"19%"}.webpcLoader__statusProgress[data-percent="20"] .webpcLoader__statusProgressCount:before{content:"20%"}.webpcLoader__statusProgress[data-percent="21"] .webpcLoader__statusProgressCount:before{content:"21%"}.webpcLoader__statusProgress[data-percent="22"] .webpcLoader__statusProgressCount:before{content:"22%"}.webpcLoader__statusProgress[data-percent="23"] .webpcLoader__statusProgressCount:before{content:"23%"}.webpcLoader__statusProgress[data-percent="24"] .webpcLoader__statusProgressCount:before{content:"24%"}.webpcLoader__statusProgress[data-percent="25"] .webpcLoader__statusProgressCount:before{content:"25%"}.webpcLoader__statusProgress[data-percent="26"] .webpcLoader__statusProgressCount:before{content:"26%"}.webpcLoader__statusProgress[data-percent="27"] .webpcLoader__statusProgressCount:before{content:"27%"}.webpcLoader__statusProgress[data-percent="28"] .webpcLoader__statusProgressCount:before{content:"28%"}.webpcLoader__statusProgress[data-percent="29"] .webpcLoader__statusProgressCount:before{content:"29%"}.webpcLoader__statusProgress[data-percent="30"] .webpcLoader__statusProgressCount:before{content:"30%"}.webpcLoader__statusProgress[data-percent="31"] .webpcLoader__statusProgressCount:before{content:"31%"}.webpcLoader__statusProgress[data-percent="32"] .webpcLoader__statusProgressCount:before{content:"32%"}.webpcLoader__statusProgress[data-percent="33"] .webpcLoader__statusProgressCount:before{content:"33%"}.webpcLoader__statusProgress[data-percent="34"] .webpcLoader__statusProgressCount:before{content:"34%"}.webpcLoader__statusProgress[data-percent="35"] .webpcLoader__statusProgressCount:before{content:"35%"}.webpcLoader__statusProgress[data-percent="36"] .webpcLoader__statusProgressCount:before{content:"36%"}.webpcLoader__statusProgress[data-percent="37"] .webpcLoader__statusProgressCount:before{content:"37%"}.webpcLoader__statusProgress[data-percent="38"] .webpcLoader__statusProgressCount:before{content:"38%"}.webpcLoader__statusProgress[data-percent="39"] .webpcLoader__statusProgressCount:before{content:"39%"}.webpcLoader__statusProgress[data-percent="40"] .webpcLoader__statusProgressCount:before{content:"40%"}.webpcLoader__statusProgress[data-percent="41"] .webpcLoader__statusProgressCount:before{content:"41%"}.webpcLoader__statusProgress[data-percent="42"] .webpcLoader__statusProgressCount:before{content:"42%"}.webpcLoader__statusProgress[data-percent="43"] .webpcLoader__statusProgressCount:before{content:"43%"}.webpcLoader__statusProgress[data-percent="44"] .webpcLoader__statusProgressCount:before{content:"44%"}.webpcLoader__statusProgress[data-percent="45"] .webpcLoader__statusProgressCount:before{content:"45%"}.webpcLoader__statusProgress[data-percent="46"] .webpcLoader__statusProgressCount:before{content:"46%"}.webpcLoader__statusProgress[data-percent="47"] .webpcLoader__statusProgressCount:before{content:"47%"}.webpcLoader__statusProgress[data-percent="48"] .webpcLoader__statusProgressCount:before{content:"48%"}.webpcLoader__statusProgress[data-percent="49"] .webpcLoader__statusProgressCount:before{content:"49%"}.webpcLoader__statusProgress[data-percent="50"] .webpcLoader__statusProgressCount:before{content:"50%"}.webpcLoader__statusProgress[data-percent="51"] .webpcLoader__statusProgressCount:before{content:"51%"}.webpcLoader__statusProgress[data-percent="52"] .webpcLoader__statusProgressCount:before{content:"52%"}.webpcLoader__statusProgress[data-percent="53"] .webpcLoader__statusProgressCount:before{content:"53%"}.webpcLoader__statusProgress[data-percent="54"] .webpcLoader__statusProgressCount:before{content:"54%"}.webpcLoader__statusProgress[data-percent="55"] .webpcLoader__statusProgressCount:before{content:"55%"}.webpcLoader__statusProgress[data-percent="56"] .webpcLoader__statusProgressCount:before{content:"56%"}.webpcLoader__statusProgress[data-percent="57"] .webpcLoader__statusProgressCount:before{content:"57%"}.webpcLoader__statusProgress[data-percent="58"] .webpcLoader__statusProgressCount:before{content:"58%"}.webpcLoader__statusProgress[data-percent="59"] .webpcLoader__statusProgressCount:before{content:"59%"}.webpcLoader__statusProgress[data-percent="60"] .webpcLoader__statusProgressCount:before{content:"60%"}.webpcLoader__statusProgress[data-percent="61"] .webpcLoader__statusProgressCount:before{content:"61%"}.webpcLoader__statusProgress[data-percent="62"] .webpcLoader__statusProgressCount:before{content:"62%"}.webpcLoader__statusProgress[data-percent="63"] .webpcLoader__statusProgressCount:before{content:"63%"}.webpcLoader__statusProgress[data-percent="64"] .webpcLoader__statusProgressCount:before{content:"64%"}.webpcLoader__statusProgress[data-percent="65"] .webpcLoader__statusProgressCount:before{content:"65%"}.webpcLoader__statusProgress[data-percent="66"] .webpcLoader__statusProgressCount:before{content:"66%"}.webpcLoader__statusProgress[data-percent="67"] .webpcLoader__statusProgressCount:before{content:"67%"}.webpcLoader__statusProgress[data-percent="68"] .webpcLoader__statusProgressCount:before{content:"68%"}.webpcLoader__statusProgress[data-percent="69"] .webpcLoader__statusProgressCount:before{content:"69%"}.webpcLoader__statusProgress[data-percent="70"] .webpcLoader__statusProgressCount:before{content:"70%"}.webpcLoader__statusProgress[data-percent="71"] .webpcLoader__statusProgressCount:before{content:"71%"}.webpcLoader__statusProgress[data-percent="72"] .webpcLoader__statusProgressCount:before{content:"72%"}.webpcLoader__statusProgress[data-percent="73"] .webpcLoader__statusProgressCount:before{content:"73%"}.webpcLoader__statusProgress[data-percent="74"] .webpcLoader__statusProgressCount:before{content:"74%"}.webpcLoader__statusProgress[data-percent="75"] .webpcLoader__statusProgressCount:before{content:"75%"}.webpcLoader__statusProgress[data-percent="76"] .webpcLoader__statusProgressCount:before{content:"76%"}.webpcLoader__statusProgress[data-percent="77"] .webpcLoader__statusProgressCount:before{content:"77%"}.webpcLoader__statusProgress[data-percent="78"] .webpcLoader__statusProgressCount:before{content:"78%"}.webpcLoader__statusProgress[data-percent="79"] .webpcLoader__statusProgressCount:before{content:"79%"}.webpcLoader__statusProgress[data-percent="80"] .webpcLoader__statusProgressCount:before{content:"80%"}.webpcLoader__statusProgress[data-percent="81"] .webpcLoader__statusProgressCount:before{content:"81%"}.webpcLoader__statusProgress[data-percent="82"] .webpcLoader__statusProgressCount:before{content:"82%"}.webpcLoader__statusProgress[data-percent="83"] .webpcLoader__statusProgressCount:before{content:"83%"}.webpcLoader__statusProgress[data-percent="84"] .webpcLoader__statusProgressCount:before{content:"84%"}.webpcLoader__statusProgress[data-percent="85"] .webpcLoader__statusProgressCount:before{content:"85%"}.webpcLoader__statusProgress[data-percent="86"] .webpcLoader__statusProgressCount:before{content:"86%"}.webpcLoader__statusProgress[data-percent="87"] .webpcLoader__statusProgressCount:before{content:"87%"}.webpcLoader__statusProgress[data-percent="88"] .webpcLoader__statusProgressCount:before{content:"88%"}.webpcLoader__statusProgress[data-percent="89"] .webpcLoader__statusProgressCount:before{content:"89%"}.webpcLoader__statusProgress[data-percent="90"] .webpcLoader__statusProgressCount:before{content:"90%"}.webpcLoader__statusProgress[data-percent="91"] .webpcLoader__statusProgressCount:before{content:"91%"}.webpcLoader__statusProgress[data-percent="92"] .webpcLoader__statusProgressCount:before{content:"92%"}.webpcLoader__statusProgress[data-percent="93"] .webpcLoader__statusProgressCount:before{content:"93%"}.webpcLoader__statusProgress[data-percent="94"] .webpcLoader__statusProgressCount:before{content:"94%"}.webpcLoader__statusProgress[data-percent="95"] .webpcLoader__statusProgressCount:before{content:"95%"}.webpcLoader__statusProgress[data-percent="96"] .webpcLoader__statusProgressCount:before{content:"96%"}.webpcLoader__statusProgress[data-percent="97"] .webpcLoader__statusProgressCount:before{content:"97%"}.webpcLoader__statusProgress[data-percent="98"] .webpcLoader__statusProgressCount:before{content:"98%"}.webpcLoader__statusProgress[data-percent="99"] .webpcLoader__statusProgressCount:before{content:"99%"}.webpcLoader__statusProgress[data-percent="100"] .webpcLoader__statusProgressCount:before{content:"100%"}.webpcLoader__statusContent{font-size:14px;line-height:1.5714285714;max-width:800px;padding:4px 0}.webpcLoader__statusContent--small{font-size:12px;line-height:1.75}.webpcLoader__statusContent strong{font-weight:600}.webpcLoader__success{padding:10px 0}.webpcLoader__successInner{border-left:2px solid #00a32a;padding:0 20px}.webpcLoader__successContent{color:#00a32a;font-size:14px;font-weight:600;line-height:1.5714285714;padding:4px 0}.webpcLoader__successContent a{color:inherit}.webpcLoader__errors{margin-top:10px;padding:10px 0}.webpcLoader__errorsInner{border-left:2px solid #c3c4c7}.webpcLoader__errorsTitle{background-color:#c3c4c7;color:#fff;display:inline-block;font-size:14px;line-height:1.5714285714;padding:4px 20px}.webpcLoader__errorsContent{padding:10px 0 10px 20px}.webpcLoader__errorsContent>p{font-size:12px;line-height:1.75;margin:0;max-width:100%}.webpcLoader__errorsContent>p.webpcLoader__errorsContentError{color:#d63638;font-size:14px;font-weight:600;line-height:1.5714285714}.webpcLoader__errorsContent pre{font-size:12px;line-height:1.75;white-space:normal}.webpcLoader__button--disabled{opacity:.25!important;pointer-events:none}.webpcMenu{margin-top:30px}.webpcMenu:first-child{margin-top:0}.webpcMenu__wrapper{border-bottom:1px solid #dcdcde}.webpcMenu__items{display:flex;font-size:0}.webpcMenu__itemLink{box-shadow:none!important;display:block;font-size:16px;line-height:1.5;outline:none!important;padding:13px 30px;text-align:center;text-decoration:none!important;transition:color .3s}.webpcMenu__itemLink:focus,.webpcMenu__itemLink:hover{color:rgba(34,113,177,.5)}.webpcMenu__itemLink--active{background-color:#fff;color:#101517;font-weight:600}.webpcMenu__itemLink--active:focus,.webpcMenu__itemLink--active:hover{color:inherit}.webpcPopup{margin-top:20px}.webpcPopup__inner{background-color:#fff;border:1px solid #c3c4c7;display:flex;flex-wrap:wrap}.webpcPopup__image{background-image:url(../../img/author.png);background-position:50%;background-repeat:no-repeat;background-size:cover;width:152px}.webpcPopup__content{border-left:1px solid #c3c4c7;flex:1;padding:10px 20px}.webpcQuality__items{display:flex;flex-wrap:wrap;justify-content:space-between}.webpcQuality__item{display:flex;flex:1;justify-content:center;position:relative}.webpcQuality__item:before{background-color:#c3c4c7;content:"";height:1px;left:0;position:absolute;top:50%;width:100%}.webpcQuality__item:first-child:before{left:50%}.webpcQuality__item:last-child:before{width:50%}.webpcQuality__itemInput{display:none!important}.webpcQuality__itemLabel{display:block;height:42px;position:relative;width:42px}.webpcQuality__itemLabel:after,.webpcQuality__itemLabel:before{border-radius:50%;content:"";height:22px;position:absolute;width:22px}.webpcQuality__itemLabel:before{background-color:#fff;border:1px solid #c3c4c7;left:10px;top:10px}.webpcQuality__itemLabel:after{background-color:#00a32a;height:8px;left:17px;top:17px;transform:scale(0);transition:transform .3s;width:8px}.webpcQuality__itemInput:checked+.webpcQuality__itemLabel:after{transform:scale(1)}.webpcQuality__texts{display:flex;flex-wrap:wrap}.webpcQuality__text{flex:1;font-size:12px;line-height:1.75;padding:4px 0;text-align:center}.webpcQuality__text strong{font-size:14px;line-height:1.5714285714}.webpcServerInfo{color:#222;text-align:center}.webpcServerInfo pre{font-family:monospace;margin:0}.webpcServerInfo h1,.webpcServerInfo h2{display:none}.webpcServerInfo p{max-width:100%}.webpcServerInfo table{border:0;border-collapse:collapse;margin:10px auto;width:100%}.webpcServerInfo td,.webpcServerInfo th{border:1px solid #666;font-family:monospace;font-size:12px;line-height:1.75;padding:4px 5px;text-align:center;vertical-align:baseline}.webpcServerInfo .p{text-align:left}.webpcServerInfo .e{background-color:#ccf;font-weight:700;width:300px}.webpcServerInfo .h{background-color:#99c;font-weight:700}.webpcServerInfo .v{word-wrap:break-word;background-color:#ddd;max-width:300px;overflow-x:auto}.webpcServerInfo .v i{color:#999}.webpcServerInfo img{border:0;float:right}@media screen and (max-width:1600px){.webpcPage__columns{margin:0 -15px}.webpcPage__column{padding:0 15px}.webpcPage__widget+.webpcPage__widget{margin-top:30px}}@media screen and (max-width:1279px){.webpcPage__column--large{width:100%}.webpcPage__column--small{margin-top:30px;width:100%}}@media screen and (max-width:1024px){.webpcPage__widgetColumns{display:block}.webpcPage__widgetColumn{width:100%}}@media screen and (max-width:782px){.webpcPage{padding-right:0}.webpcContent--author{background:none;margin-left:0;padding-left:30px}.webpcInput{display:block}.webpcInput__field{width:100%}.webpcInput__field--small{width:calc(100% - 20px)}.webpcInput__button{margin:10px 0 0!important}.webpcLoader__columns,.webpcMenu__items{display:block}.webpcPopup__inner{border:1px solid #c3c4c7;display:block}.webpcPopup__image{height:152px;margin:20px auto 0}.webpcPopup__content{border-left:0}}
|
1 |
+
@charset "UTF-8";@keyframes dotsLoading{0%,to{content:"..."}25%{content:" .."}50%{content:". ."}75%{content:".. "}}@font-face{font-family:webpc-icomoon;font-style:normal;font-weight:400;src:url(../../fonts/icons/icomoon.eot?ver=17376431);src:url(../../fonts/icons/icomoon.woff?ver=17376431) format("woff"),url(../../fonts/icons/icomoon.eot?ver=17376431#iefix) format("embedded-opentype"),url(../../fonts/icons/icomoon.ttf?ver=17376431) format("truetype"),url(../../fonts/icons/icomoon.svg?ver=17376431#icomoon) format("svg")}.webpcPage{color:#101517;margin:0;overflow:hidden;padding:0 20px 0 0}.webpcPage *,.webpcPage :after,.webpcPage :before{box-sizing:border-box;margin:0;padding:0}.webpcPage [hidden]{display:none!important}.webpcPage__headline{background-color:#11f3af;line-height:0;margin-bottom:30px;margin-top:10px;padding:20px 30px;position:relative;width:100%;z-index:1}.webpcPage__headline img{max-width:100%}.webpcPage__headline:before{background-image:url(../../img/logo-bg.png);background-position:0 0;background-repeat:repeat;content:"";height:100%;left:0;opacity:.05;position:absolute;top:0;width:100%;z-index:-1}.webpcPage__alert{background-color:#00a32a;color:#fff;font-size:14px;line-height:1.5714285714;margin-bottom:30px;padding:15px 20px}.webpcPage__columns{margin:0 -30px;overflow:hidden}.webpcPage__column{float:left;padding:0 30px}.webpcPage__column--large{width:66.666%}.webpcPage__column--small{width:33.333%}.webpcPage__widget{background-color:#fff}.webpcPage__widget+.webpcPage__widget{margin-top:60px}.webpcPage__widget--border{border:1px solid #11f3af;border-top:0}.webpcPage__widgetTitle{border-bottom:1px solid #dcdcde;font-size:16px;font-weight:600;line-height:1.5;padding:13px 30px;position:relative;z-index:1}.webpcMenu+.webpcPage__widget .webpcPage__widgetTitle{display:none}.webpcPage__widgetTitle--error{background-color:#d63638;border-color:transparent;color:#fff;font-weight:400}.webpcPage__widgetTitle--logo{background-color:#11f3af;border-color:transparent}.webpcPage__widgetTitle--logo:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e902"!important;font-family:webpc-icomoon!important;font-size:30px;font-style:normal;font-variant:normal;font-weight:400;line-height:1;position:absolute;right:30px;text-transform:none;top:10px}.webpcPage__widgetTitle--logo:after{background-image:url(../../img/logo-bg.png);background-position:0 0;background-repeat:repeat;content:"";height:100%;left:0;opacity:.05;position:absolute;top:0;width:100%;z-index:-1}.webpcPage__widgetRow{padding-bottom:10px}.webpcPage__widgetRow:last-child{padding-bottom:0}.webpcPage__widgetRow .webpcButton{margin:10px 0}.webpcPage__widgetColumns{display:flex;flex-wrap:wrap;margin:0 -10px}.webpcPage__widgetColumn{padding:0 10px;width:50%}.webpcPage__widgetColumn:first-child:last-child{flex:1}.webpcPage__widgetNotice{background-color:#2271b1;margin:10px 0;padding:10px 20px}.webpcPage__widgetNotice p{color:#fff;font-size:1.2rem}.webpcPage__widgetNotice p+p{margin-top:0}.webpcPage__widgetNotice p a{color:inherit;font-weight:600;letter-spacing:1px;text-decoration:none;text-transform:uppercase}.webpcPage__footer{margin-top:30px}.webpcPage__footerLogo{text-align:center}.webpcPage__footerLogo:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#dcdcde;content:"\e902"!important;font-family:webpc-icomoon!important;font-size:50px;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.webpcPage__footerContent{font-size:14px;line-height:1.5714285714;padding:14px 20px;text-align:center}.webpcPage__footerIcon{display:inline-block;padding:0 3px}.webpcPage__footerIcon--heart{color:#d63638}.webpcPage__footerIcon--heart:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e901"!important;font-family:webpc-icomoon!important;font-style:normal;font-variant:normal;font-weight:400;text-transform:none}.webpcPage__footerIcon--stars{color:#f0c33c}.webpcPage__footerIcon--stars:before{content:"\e903"!important}#wp-admin-bar-webpc-menu .ab-icon:before,.webpcPage__footerIcon--stars:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:webpc-icomoon!important;font-style:normal;font-variant:normal;font-weight:400;text-transform:none}#wp-admin-bar-webpc-menu .ab-icon:before{content:"\e900"!important}.notice[data-notice=webp-converter-for-media]{padding:0}.notice[data-notice=webp-converter-for-media]~.notice[data-notice=webp-converter-for-media]{display:none}.webpcButton{background-color:#fff;border:1px solid transparent;box-shadow:none!important;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:14px;line-height:1.5714285714;min-width:180px;opacity:1!important;outline:none!important;padding:9px 30px;position:relative;text-align:center;text-decoration:none!important;transition:color .3s!important;z-index:10}p>.webpcButton{margin:6px 0}.webpcButton:before{float:left;font-family:dashicons;font-size:20px;line-height:1.1;margin-right:10px}.webpcButton:after{content:"";height:100%;left:0;position:absolute;top:0;transition:width .3s;width:0;z-index:-1}.webpcButton:hover:after{width:100%}.webpcButton[disabled]{opacity:.5!important;pointer-events:none}.webpcButton--blue:hover,.webpcButton--gray:hover,.webpcButton--red:hover{color:#fff!important}.webpcButton--blue{border-color:#2271b1;color:#2271b1!important}.webpcButton--blue.webpcButton--bg,.webpcButton--blue:after{background-color:#2271b1}.webpcButton--blue.webpcButton--bg:after{background-color:#135e96}.webpcButton--red{border-color:#d63638;color:#d63638!important}.webpcButton--red.webpcButton--bg,.webpcButton--red:after{background-color:#d63638}.webpcButton--red.webpcButton--bg:after{background-color:#b32d2e}.webpcButton--gray{border-color:#c3c4c7;color:#c3c4c7!important}.webpcButton--gray.webpcButton--bg,.webpcButton--gray:after{background-color:#c3c4c7}.webpcButton--gray.webpcButton--bg:after{background-color:#a7aaad}.webpcButton--bg{color:#fff!important}.webpcContent{padding:20px 30px}.webpcContent--author{background-image:url(../../img/author.png);background-position:left calc(100% - 30px);background-repeat:no-repeat;background-size:152px 152px;margin-left:20px;padding-left:172px}.webpcContent p{font-size:14px;line-height:1.5714285714;max-width:800px}.webpcContent p.center{text-align:center}.webpcContent--wide p{max-width:100%}.webpcContent a{box-shadow:none;color:#2271b1;outline:none;text-decoration:underline;transition:opacity .3s}.webpcContent a:hover{opacity:.5}.webpcContent h1,.webpcContent h2,.webpcContent h3,.webpcContent h4,.webpcContent h5,.webpcContent h6{font-size:16px;font-weight:600;line-height:1.5}.webpcContent h1,.webpcContent h2,.webpcContent h3,.webpcContent h4,.webpcContent h5,.webpcContent h6,.webpcContent p{margin:10px 0 0;padding:4px 0}.webpcContent h1:first-child,.webpcContent h2:first-child,.webpcContent h3:first-child,.webpcContent h4:first-child,.webpcContent h5:first-child,.webpcContent h6:first-child,.webpcContent p:first-child,.webpcContent p>p{margin-top:0}.webpcInput+p{background-color:#f0f0f1;margin:0 0 10px;max-width:none;padding:14px 20px}.webpcContent h1+p,.webpcContent h2+p,.webpcContent h3+p,.webpcContent h4+p,.webpcContent h5+p,.webpcContent h6+p{font-size:12px;line-height:1.75;margin-top:0}.webpcContent--notice{position:relative;z-index:1}.webpcContent--notice h1+p,.webpcContent--notice h2+p,.webpcContent--notice h3+p,.webpcContent--notice h4+p,.webpcContent--notice h5+p,.webpcContent--notice h6+p{font-size:14px;line-height:1.5714285714}.webpcContent--notice img{bottom:30px;display:block;position:absolute;right:30px;z-index:-1}.webpcContent__buttons{margin-top:-10px;overflow:hidden;padding:10px 0}.webpcContent__button{float:left;margin:20px 20px 0 0}.webpcContent__button:last-child{margin-right:0}.webpcField{display:flex;padding:10px 0}.webpcField--center{align-items:center}.webpcField+.webpcField{margin-top:-12px}.webpcField__input{display:none!important}.webpcField__input+label{display:inline-block;position:relative}.webpcField__input[disabled]+label{pointer-events:none}.webpcField__input[disabled]+label:after,.webpcField__input[disabled]+label:before{opacity:.25}.webpcField__input--checkbox+label,.webpcField__input--radio+label{height:22px;width:22px}.webpcField__input--checkbox+label:after,.webpcField__input--checkbox+label:before,.webpcField__input--radio+label:after,.webpcField__input--radio+label:before{align-items:center;content:"";display:flex;height:22px;justify-content:center;left:0;position:absolute;top:0;width:22px}.webpcField__input--checkbox+label:before,.webpcField__input--radio+label:before{border:1px solid #c3c4c7}.webpcField__input--checkbox+label:after,.webpcField__input--radio+label:after{position:absolute;transform:scale(0);transition:transform .3s}.webpcField__input--checkbox:checked+label:after,.webpcField__input--radio:checked+label:after{transform:scale(1)}.webpcField__input--checkbox+label:after{color:#00a32a;content:"\f147";font-family:dashicons;font-size:20px;line-height:1}.webpcField__input--radio+label:before{border-radius:50%}.webpcField__input--radio+label:after{background-color:#00a32a;border-radius:50%;content:"";height:8px;left:7px;top:7px;width:8px}.webpcField__input--toggle+label{height:22px;width:44px}.webpcField__input--toggle+label:after,.webpcField__input--toggle+label:before{content:"";position:absolute}.webpcField__input--toggle+label:before{background-color:#dcdcde;border:1px solid #c3c4c7;border-radius:11px;height:22px;left:0;top:0;transition:background-color .3s;width:44px}.webpcField__input--toggle+label:after{background-color:#fff;border-radius:50%;height:16px;left:3px;position:absolute;top:3px;transition:transform .3s;width:16px}.webpcField__input--toggle:checked+label:before{background-color:#00a32a}.webpcField__input--toggle:checked+label:after{transform:translateX(22px)}.webpcField__label{display:block;font-size:14px;line-height:1.5714285714;max-width:650px;position:relative}.webpcField__input~.webpcField__label{margin-left:20px}.webpcInput{align-items:center;display:flex;padding:10px 0}.webpcInput__field{border:1px solid #c3c4c7!important;border-radius:0!important;box-shadow:none!important;flex:1;font-size:14px!important;line-height:1.5714285714!important;padding:9px 15px!important}.webpcInput__field--small{margin:0 10px;padding:4px 10px!important;width:80px}.webpcInput__field[readonly]{background-color:#f0f0f1}.webpcInput__button{margin:0 0 0 10px!important}.webpcLoader__columns{display:flex;justify-content:center;margin:-30px -30px 0;padding:10px 0;text-align:center}.webpcLoader__column{line-height:0;margin-top:30px;padding:0 30px}.webpcLoader__columnInner{display:inline-block;position:relative}.webpcLoader__columnInner:before{background-color:#f0f0f1;border-radius:50%;content:"";height:calc(100% - 10px);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:calc(100% - 10px)}.webpcLoader__columnCircle{fill:none;stroke:#00a32a;stroke-width:10px;stroke-dasharray:596.90248;stroke-dashoffset:596.90248;height:200px;transform:rotate(-90deg);transition:stroke-dashoffset 2.5s;width:200px}.webpcLoader__column[data-percent="1"] .webpcLoader__columnCircle{stroke-dashoffset:590.9334552}.webpcLoader__column[data-percent="2"] .webpcLoader__columnCircle{stroke-dashoffset:584.9644304}.webpcLoader__column[data-percent="3"] .webpcLoader__columnCircle{stroke-dashoffset:578.9954056}.webpcLoader__column[data-percent="4"] .webpcLoader__columnCircle{stroke-dashoffset:573.0263808}.webpcLoader__column[data-percent="5"] .webpcLoader__columnCircle{stroke-dashoffset:567.057356}.webpcLoader__column[data-percent="6"] .webpcLoader__columnCircle{stroke-dashoffset:561.0883312}.webpcLoader__column[data-percent="7"] .webpcLoader__columnCircle{stroke-dashoffset:555.1193064}.webpcLoader__column[data-percent="8"] .webpcLoader__columnCircle{stroke-dashoffset:549.1502816}.webpcLoader__column[data-percent="9"] .webpcLoader__columnCircle{stroke-dashoffset:543.1812568}.webpcLoader__column[data-percent="10"] .webpcLoader__columnCircle{stroke-dashoffset:537.212232}.webpcLoader__column[data-percent="11"] .webpcLoader__columnCircle{stroke-dashoffset:531.2432072}.webpcLoader__column[data-percent="12"] .webpcLoader__columnCircle{stroke-dashoffset:525.2741824}.webpcLoader__column[data-percent="13"] .webpcLoader__columnCircle{stroke-dashoffset:519.3051576}.webpcLoader__column[data-percent="14"] .webpcLoader__columnCircle{stroke-dashoffset:513.3361328}.webpcLoader__column[data-percent="15"] .webpcLoader__columnCircle{stroke-dashoffset:507.367108}.webpcLoader__column[data-percent="16"] .webpcLoader__columnCircle{stroke-dashoffset:501.3980832}.webpcLoader__column[data-percent="17"] .webpcLoader__columnCircle{stroke-dashoffset:495.4290584}.webpcLoader__column[data-percent="18"] .webpcLoader__columnCircle{stroke-dashoffset:489.4600336}.webpcLoader__column[data-percent="19"] .webpcLoader__columnCircle{stroke-dashoffset:483.4910088}.webpcLoader__column[data-percent="20"] .webpcLoader__columnCircle{stroke-dashoffset:477.521984}.webpcLoader__column[data-percent="21"] .webpcLoader__columnCircle{stroke-dashoffset:471.5529592}.webpcLoader__column[data-percent="22"] .webpcLoader__columnCircle{stroke-dashoffset:465.5839344}.webpcLoader__column[data-percent="23"] .webpcLoader__columnCircle{stroke-dashoffset:459.6149096}.webpcLoader__column[data-percent="24"] .webpcLoader__columnCircle{stroke-dashoffset:453.6458848}.webpcLoader__column[data-percent="25"] .webpcLoader__columnCircle{stroke-dashoffset:447.67686}.webpcLoader__column[data-percent="26"] .webpcLoader__columnCircle{stroke-dashoffset:441.7078352}.webpcLoader__column[data-percent="27"] .webpcLoader__columnCircle{stroke-dashoffset:435.7388104}.webpcLoader__column[data-percent="28"] .webpcLoader__columnCircle{stroke-dashoffset:429.7697856}.webpcLoader__column[data-percent="29"] .webpcLoader__columnCircle{stroke-dashoffset:423.8007608}.webpcLoader__column[data-percent="30"] .webpcLoader__columnCircle{stroke-dashoffset:417.831736}.webpcLoader__column[data-percent="31"] .webpcLoader__columnCircle{stroke-dashoffset:411.8627112}.webpcLoader__column[data-percent="32"] .webpcLoader__columnCircle{stroke-dashoffset:405.8936864}.webpcLoader__column[data-percent="33"] .webpcLoader__columnCircle{stroke-dashoffset:399.9246616}.webpcLoader__column[data-percent="34"] .webpcLoader__columnCircle{stroke-dashoffset:393.9556368}.webpcLoader__column[data-percent="35"] .webpcLoader__columnCircle{stroke-dashoffset:387.986612}.webpcLoader__column[data-percent="36"] .webpcLoader__columnCircle{stroke-dashoffset:382.0175872}.webpcLoader__column[data-percent="37"] .webpcLoader__columnCircle{stroke-dashoffset:376.0485624}.webpcLoader__column[data-percent="38"] .webpcLoader__columnCircle{stroke-dashoffset:370.0795376}.webpcLoader__column[data-percent="39"] .webpcLoader__columnCircle{stroke-dashoffset:364.1105128}.webpcLoader__column[data-percent="40"] .webpcLoader__columnCircle{stroke-dashoffset:358.141488}.webpcLoader__column[data-percent="41"] .webpcLoader__columnCircle{stroke-dashoffset:352.1724632}.webpcLoader__column[data-percent="42"] .webpcLoader__columnCircle{stroke-dashoffset:346.2034384}.webpcLoader__column[data-percent="43"] .webpcLoader__columnCircle{stroke-dashoffset:340.2344136}.webpcLoader__column[data-percent="44"] .webpcLoader__columnCircle{stroke-dashoffset:334.2653888}.webpcLoader__column[data-percent="45"] .webpcLoader__columnCircle{stroke-dashoffset:328.296364}.webpcLoader__column[data-percent="46"] .webpcLoader__columnCircle{stroke-dashoffset:322.3273392}.webpcLoader__column[data-percent="47"] .webpcLoader__columnCircle{stroke-dashoffset:316.3583144}.webpcLoader__column[data-percent="48"] .webpcLoader__columnCircle{stroke-dashoffset:310.3892896}.webpcLoader__column[data-percent="49"] .webpcLoader__columnCircle{stroke-dashoffset:304.4202648}.webpcLoader__column[data-percent="50"] .webpcLoader__columnCircle{stroke-dashoffset:298.45124}.webpcLoader__column[data-percent="51"] .webpcLoader__columnCircle{stroke-dashoffset:292.4822152}.webpcLoader__column[data-percent="52"] .webpcLoader__columnCircle{stroke-dashoffset:286.5131904}.webpcLoader__column[data-percent="53"] .webpcLoader__columnCircle{stroke-dashoffset:280.5441656}.webpcLoader__column[data-percent="54"] .webpcLoader__columnCircle{stroke-dashoffset:274.5751408}.webpcLoader__column[data-percent="55"] .webpcLoader__columnCircle{stroke-dashoffset:268.606116}.webpcLoader__column[data-percent="56"] .webpcLoader__columnCircle{stroke-dashoffset:262.6370912}.webpcLoader__column[data-percent="57"] .webpcLoader__columnCircle{stroke-dashoffset:256.6680664}.webpcLoader__column[data-percent="58"] .webpcLoader__columnCircle{stroke-dashoffset:250.6990416}.webpcLoader__column[data-percent="59"] .webpcLoader__columnCircle{stroke-dashoffset:244.7300168}.webpcLoader__column[data-percent="60"] .webpcLoader__columnCircle{stroke-dashoffset:238.760992}.webpcLoader__column[data-percent="61"] .webpcLoader__columnCircle{stroke-dashoffset:232.7919672}.webpcLoader__column[data-percent="62"] .webpcLoader__columnCircle{stroke-dashoffset:226.8229424}.webpcLoader__column[data-percent="63"] .webpcLoader__columnCircle{stroke-dashoffset:220.8539176}.webpcLoader__column[data-percent="64"] .webpcLoader__columnCircle{stroke-dashoffset:214.8848928}.webpcLoader__column[data-percent="65"] .webpcLoader__columnCircle{stroke-dashoffset:208.915868}.webpcLoader__column[data-percent="66"] .webpcLoader__columnCircle{stroke-dashoffset:202.9468432}.webpcLoader__column[data-percent="67"] .webpcLoader__columnCircle{stroke-dashoffset:196.9778184}.webpcLoader__column[data-percent="68"] .webpcLoader__columnCircle{stroke-dashoffset:191.0087936}.webpcLoader__column[data-percent="69"] .webpcLoader__columnCircle{stroke-dashoffset:185.0397688}.webpcLoader__column[data-percent="70"] .webpcLoader__columnCircle{stroke-dashoffset:179.070744}.webpcLoader__column[data-percent="71"] .webpcLoader__columnCircle{stroke-dashoffset:173.1017192}.webpcLoader__column[data-percent="72"] .webpcLoader__columnCircle{stroke-dashoffset:167.1326944}.webpcLoader__column[data-percent="73"] .webpcLoader__columnCircle{stroke-dashoffset:161.1636696}.webpcLoader__column[data-percent="74"] .webpcLoader__columnCircle{stroke-dashoffset:155.1946448}.webpcLoader__column[data-percent="75"] .webpcLoader__columnCircle{stroke-dashoffset:149.22562}.webpcLoader__column[data-percent="76"] .webpcLoader__columnCircle{stroke-dashoffset:143.2565952}.webpcLoader__column[data-percent="77"] .webpcLoader__columnCircle{stroke-dashoffset:137.2875704}.webpcLoader__column[data-percent="78"] .webpcLoader__columnCircle{stroke-dashoffset:131.3185456}.webpcLoader__column[data-percent="79"] .webpcLoader__columnCircle{stroke-dashoffset:125.3495208}.webpcLoader__column[data-percent="80"] .webpcLoader__columnCircle{stroke-dashoffset:119.380496}.webpcLoader__column[data-percent="81"] .webpcLoader__columnCircle{stroke-dashoffset:113.4114712}.webpcLoader__column[data-percent="82"] .webpcLoader__columnCircle{stroke-dashoffset:107.4424464}.webpcLoader__column[data-percent="83"] .webpcLoader__columnCircle{stroke-dashoffset:101.4734216}.webpcLoader__column[data-percent="84"] .webpcLoader__columnCircle{stroke-dashoffset:95.5043968}.webpcLoader__column[data-percent="85"] .webpcLoader__columnCircle{stroke-dashoffset:89.535372}.webpcLoader__column[data-percent="86"] .webpcLoader__columnCircle{stroke-dashoffset:83.5663472}.webpcLoader__column[data-percent="87"] .webpcLoader__columnCircle{stroke-dashoffset:77.5973224}.webpcLoader__column[data-percent="88"] .webpcLoader__columnCircle{stroke-dashoffset:71.6282976}.webpcLoader__column[data-percent="89"] .webpcLoader__columnCircle{stroke-dashoffset:65.6592728}.webpcLoader__column[data-percent="90"] .webpcLoader__columnCircle{stroke-dashoffset:59.690248}.webpcLoader__column[data-percent="91"] .webpcLoader__columnCircle{stroke-dashoffset:53.7212232}.webpcLoader__column[data-percent="92"] .webpcLoader__columnCircle{stroke-dashoffset:47.7521984}.webpcLoader__column[data-percent="93"] .webpcLoader__columnCircle{stroke-dashoffset:41.7831736}.webpcLoader__column[data-percent="94"] .webpcLoader__columnCircle{stroke-dashoffset:35.8141488}.webpcLoader__column[data-percent="95"] .webpcLoader__columnCircle{stroke-dashoffset:29.845124}.webpcLoader__column[data-percent="96"] .webpcLoader__columnCircle{stroke-dashoffset:23.8760992}.webpcLoader__column[data-percent="97"] .webpcLoader__columnCircle{stroke-dashoffset:17.9070744}.webpcLoader__column[data-percent="98"] .webpcLoader__columnCircle{stroke-dashoffset:11.9380496}.webpcLoader__column[data-percent="99"] .webpcLoader__columnCircle{stroke-dashoffset:5.9690248}.webpcLoader__column[data-percent="100"] .webpcLoader__columnCircle{stroke-dashoffset:0}.webpcLoader__columnOverlay{left:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.webpcLoader__columnOverlayTitle{font-size:14px;font-weight:600;line-height:1.5714285714;padding:4px 20px}.webpcLoader__columnOverlayTitle strong{display:block;font-size:24px;line-height:1.2083333333}.webpcLoader__columnOverlayDesc{font-size:14px;line-height:1.5714285714;min-height:52px;padding:4px 20px}.webpcLoader__columnOverlayDesc--active{display:none}.webpcLoader__column[data-percent] .webpcLoader__columnOverlayDesc--active{display:block}.webpcLoader__column[data-percent] .webpcLoader__columnOverlayDesc--loading{display:none}.webpcLoader__columnOverlayDesc--loading:after{animation:dotsLoading 1s linear infinite;content:"...";font-family:monospace}.webpcLoader__statusProgress--error .webpcLoader__columnOverlayDesc--loading:after,.webpcLoader__statusProgress[data-percent="100"] .webpcLoader__columnOverlayDesc--loading:after{display:none}.webpcLoader__columnDesc{font-size:14px;line-height:1.5714285714;margin-bottom:-10px;margin-top:10px;padding:4px 0;text-align:center}.webpcLoader__status{margin-top:10px;padding-top:10px}.webpcLoader__statusProgress{font-size:0;height:31px;line-height:0;margin:10px 0;position:relative}.webpcLoader__statusProgress:before{background-color:#00a32a;content:"";height:100%;left:0;position:absolute;top:0;transition:width .3s;width:0}.webpcLoader__statusProgress--error:before{background-color:#d63638}.webpcLoader__statusProgress[data-percent="0"]:before{width:0}.webpcLoader__statusProgress[data-percent="1"]:before{width:1%}.webpcLoader__statusProgress[data-percent="2"]:before{width:2%}.webpcLoader__statusProgress[data-percent="3"]:before{width:3%}.webpcLoader__statusProgress[data-percent="4"]:before{width:4%}.webpcLoader__statusProgress[data-percent="5"]:before{width:5%}.webpcLoader__statusProgress[data-percent="6"]:before{width:6%}.webpcLoader__statusProgress[data-percent="7"]:before{width:7%}.webpcLoader__statusProgress[data-percent="8"]:before{width:8%}.webpcLoader__statusProgress[data-percent="9"]:before{width:9%}.webpcLoader__statusProgress[data-percent="10"]:before{width:10%}.webpcLoader__statusProgress[data-percent="11"]:before{width:11%}.webpcLoader__statusProgress[data-percent="12"]:before{width:12%}.webpcLoader__statusProgress[data-percent="13"]:before{width:13%}.webpcLoader__statusProgress[data-percent="14"]:before{width:14%}.webpcLoader__statusProgress[data-percent="15"]:before{width:15%}.webpcLoader__statusProgress[data-percent="16"]:before{width:16%}.webpcLoader__statusProgress[data-percent="17"]:before{width:17%}.webpcLoader__statusProgress[data-percent="18"]:before{width:18%}.webpcLoader__statusProgress[data-percent="19"]:before{width:19%}.webpcLoader__statusProgress[data-percent="20"]:before{width:20%}.webpcLoader__statusProgress[data-percent="21"]:before{width:21%}.webpcLoader__statusProgress[data-percent="22"]:before{width:22%}.webpcLoader__statusProgress[data-percent="23"]:before{width:23%}.webpcLoader__statusProgress[data-percent="24"]:before{width:24%}.webpcLoader__statusProgress[data-percent="25"]:before{width:25%}.webpcLoader__statusProgress[data-percent="26"]:before{width:26%}.webpcLoader__statusProgress[data-percent="27"]:before{width:27%}.webpcLoader__statusProgress[data-percent="28"]:before{width:28%}.webpcLoader__statusProgress[data-percent="29"]:before{width:29%}.webpcLoader__statusProgress[data-percent="30"]:before{width:30%}.webpcLoader__statusProgress[data-percent="31"]:before{width:31%}.webpcLoader__statusProgress[data-percent="32"]:before{width:32%}.webpcLoader__statusProgress[data-percent="33"]:before{width:33%}.webpcLoader__statusProgress[data-percent="34"]:before{width:34%}.webpcLoader__statusProgress[data-percent="35"]:before{width:35%}.webpcLoader__statusProgress[data-percent="36"]:before{width:36%}.webpcLoader__statusProgress[data-percent="37"]:before{width:37%}.webpcLoader__statusProgress[data-percent="38"]:before{width:38%}.webpcLoader__statusProgress[data-percent="39"]:before{width:39%}.webpcLoader__statusProgress[data-percent="40"]:before{width:40%}.webpcLoader__statusProgress[data-percent="41"]:before{width:41%}.webpcLoader__statusProgress[data-percent="42"]:before{width:42%}.webpcLoader__statusProgress[data-percent="43"]:before{width:43%}.webpcLoader__statusProgress[data-percent="44"]:before{width:44%}.webpcLoader__statusProgress[data-percent="45"]:before{width:45%}.webpcLoader__statusProgress[data-percent="46"]:before{width:46%}.webpcLoader__statusProgress[data-percent="47"]:before{width:47%}.webpcLoader__statusProgress[data-percent="48"]:before{width:48%}.webpcLoader__statusProgress[data-percent="49"]:before{width:49%}.webpcLoader__statusProgress[data-percent="50"]:before{width:50%}.webpcLoader__statusProgress[data-percent="51"]:before{width:51%}.webpcLoader__statusProgress[data-percent="52"]:before{width:52%}.webpcLoader__statusProgress[data-percent="53"]:before{width:53%}.webpcLoader__statusProgress[data-percent="54"]:before{width:54%}.webpcLoader__statusProgress[data-percent="55"]:before{width:55%}.webpcLoader__statusProgress[data-percent="56"]:before{width:56%}.webpcLoader__statusProgress[data-percent="57"]:before{width:57%}.webpcLoader__statusProgress[data-percent="58"]:before{width:58%}.webpcLoader__statusProgress[data-percent="59"]:before{width:59%}.webpcLoader__statusProgress[data-percent="60"]:before{width:60%}.webpcLoader__statusProgress[data-percent="61"]:before{width:61%}.webpcLoader__statusProgress[data-percent="62"]:before{width:62%}.webpcLoader__statusProgress[data-percent="63"]:before{width:63%}.webpcLoader__statusProgress[data-percent="64"]:before{width:64%}.webpcLoader__statusProgress[data-percent="65"]:before{width:65%}.webpcLoader__statusProgress[data-percent="66"]:before{width:66%}.webpcLoader__statusProgress[data-percent="67"]:before{width:67%}.webpcLoader__statusProgress[data-percent="68"]:before{width:68%}.webpcLoader__statusProgress[data-percent="69"]:before{width:69%}.webpcLoader__statusProgress[data-percent="70"]:before{width:70%}.webpcLoader__statusProgress[data-percent="71"]:before{width:71%}.webpcLoader__statusProgress[data-percent="72"]:before{width:72%}.webpcLoader__statusProgress[data-percent="73"]:before{width:73%}.webpcLoader__statusProgress[data-percent="74"]:before{width:74%}.webpcLoader__statusProgress[data-percent="75"]:before{width:75%}.webpcLoader__statusProgress[data-percent="76"]:before{width:76%}.webpcLoader__statusProgress[data-percent="77"]:before{width:77%}.webpcLoader__statusProgress[data-percent="78"]:before{width:78%}.webpcLoader__statusProgress[data-percent="79"]:before{width:79%}.webpcLoader__statusProgress[data-percent="80"]:before{width:80%}.webpcLoader__statusProgress[data-percent="81"]:before{width:81%}.webpcLoader__statusProgress[data-percent="82"]:before{width:82%}.webpcLoader__statusProgress[data-percent="83"]:before{width:83%}.webpcLoader__statusProgress[data-percent="84"]:before{width:84%}.webpcLoader__statusProgress[data-percent="85"]:before{width:85%}.webpcLoader__statusProgress[data-percent="86"]:before{width:86%}.webpcLoader__statusProgress[data-percent="87"]:before{width:87%}.webpcLoader__statusProgress[data-percent="88"]:before{width:88%}.webpcLoader__statusProgress[data-percent="89"]:before{width:89%}.webpcLoader__statusProgress[data-percent="90"]:before{width:90%}.webpcLoader__statusProgress[data-percent="91"]:before{width:91%}.webpcLoader__statusProgress[data-percent="92"]:before{width:92%}.webpcLoader__statusProgress[data-percent="93"]:before{width:93%}.webpcLoader__statusProgress[data-percent="94"]:before{width:94%}.webpcLoader__statusProgress[data-percent="95"]:before{width:95%}.webpcLoader__statusProgress[data-percent="96"]:before{width:96%}.webpcLoader__statusProgress[data-percent="97"]:before{width:97%}.webpcLoader__statusProgress[data-percent="98"]:before{width:98%}.webpcLoader__statusProgress[data-percent="99"]:before{width:99%}.webpcLoader__statusProgress[data-percent="100"]:before{width:100%}.webpcLoader__statusProgressCount{background-color:#00a32a;color:#fff;display:inline-block;font-family:monospace;font-size:12px;line-height:1.75;padding:5px 10px;position:relative}.webpcLoader__statusProgress--error .webpcLoader__statusProgressCount{background-color:#d63638}.webpcLoader__statusProgressCount:after{animation:dotsLoading 1s linear infinite;content:"...";margin-left:5px}.webpcLoader__statusProgress--error .webpcLoader__statusProgressCount:after,.webpcLoader__statusProgress[data-percent="100"] .webpcLoader__statusProgressCount:after{display:none}.webpcLoader__statusProgress[data-percent="0"] .webpcLoader__statusProgressCount:before{content:"0%"}.webpcLoader__statusProgress[data-percent="1"] .webpcLoader__statusProgressCount:before{content:"1%"}.webpcLoader__statusProgress[data-percent="2"] .webpcLoader__statusProgressCount:before{content:"2%"}.webpcLoader__statusProgress[data-percent="3"] .webpcLoader__statusProgressCount:before{content:"3%"}.webpcLoader__statusProgress[data-percent="4"] .webpcLoader__statusProgressCount:before{content:"4%"}.webpcLoader__statusProgress[data-percent="5"] .webpcLoader__statusProgressCount:before{content:"5%"}.webpcLoader__statusProgress[data-percent="6"] .webpcLoader__statusProgressCount:before{content:"6%"}.webpcLoader__statusProgress[data-percent="7"] .webpcLoader__statusProgressCount:before{content:"7%"}.webpcLoader__statusProgress[data-percent="8"] .webpcLoader__statusProgressCount:before{content:"8%"}.webpcLoader__statusProgress[data-percent="9"] .webpcLoader__statusProgressCount:before{content:"9%"}.webpcLoader__statusProgress[data-percent="10"] .webpcLoader__statusProgressCount:before{content:"10%"}.webpcLoader__statusProgress[data-percent="11"] .webpcLoader__statusProgressCount:before{content:"11%"}.webpcLoader__statusProgress[data-percent="12"] .webpcLoader__statusProgressCount:before{content:"12%"}.webpcLoader__statusProgress[data-percent="13"] .webpcLoader__statusProgressCount:before{content:"13%"}.webpcLoader__statusProgress[data-percent="14"] .webpcLoader__statusProgressCount:before{content:"14%"}.webpcLoader__statusProgress[data-percent="15"] .webpcLoader__statusProgressCount:before{content:"15%"}.webpcLoader__statusProgress[data-percent="16"] .webpcLoader__statusProgressCount:before{content:"16%"}.webpcLoader__statusProgress[data-percent="17"] .webpcLoader__statusProgressCount:before{content:"17%"}.webpcLoader__statusProgress[data-percent="18"] .webpcLoader__statusProgressCount:before{content:"18%"}.webpcLoader__statusProgress[data-percent="19"] .webpcLoader__statusProgressCount:before{content:"19%"}.webpcLoader__statusProgress[data-percent="20"] .webpcLoader__statusProgressCount:before{content:"20%"}.webpcLoader__statusProgress[data-percent="21"] .webpcLoader__statusProgressCount:before{content:"21%"}.webpcLoader__statusProgress[data-percent="22"] .webpcLoader__statusProgressCount:before{content:"22%"}.webpcLoader__statusProgress[data-percent="23"] .webpcLoader__statusProgressCount:before{content:"23%"}.webpcLoader__statusProgress[data-percent="24"] .webpcLoader__statusProgressCount:before{content:"24%"}.webpcLoader__statusProgress[data-percent="25"] .webpcLoader__statusProgressCount:before{content:"25%"}.webpcLoader__statusProgress[data-percent="26"] .webpcLoader__statusProgressCount:before{content:"26%"}.webpcLoader__statusProgress[data-percent="27"] .webpcLoader__statusProgressCount:before{content:"27%"}.webpcLoader__statusProgress[data-percent="28"] .webpcLoader__statusProgressCount:before{content:"28%"}.webpcLoader__statusProgress[data-percent="29"] .webpcLoader__statusProgressCount:before{content:"29%"}.webpcLoader__statusProgress[data-percent="30"] .webpcLoader__statusProgressCount:before{content:"30%"}.webpcLoader__statusProgress[data-percent="31"] .webpcLoader__statusProgressCount:before{content:"31%"}.webpcLoader__statusProgress[data-percent="32"] .webpcLoader__statusProgressCount:before{content:"32%"}.webpcLoader__statusProgress[data-percent="33"] .webpcLoader__statusProgressCount:before{content:"33%"}.webpcLoader__statusProgress[data-percent="34"] .webpcLoader__statusProgressCount:before{content:"34%"}.webpcLoader__statusProgress[data-percent="35"] .webpcLoader__statusProgressCount:before{content:"35%"}.webpcLoader__statusProgress[data-percent="36"] .webpcLoader__statusProgressCount:before{content:"36%"}.webpcLoader__statusProgress[data-percent="37"] .webpcLoader__statusProgressCount:before{content:"37%"}.webpcLoader__statusProgress[data-percent="38"] .webpcLoader__statusProgressCount:before{content:"38%"}.webpcLoader__statusProgress[data-percent="39"] .webpcLoader__statusProgressCount:before{content:"39%"}.webpcLoader__statusProgress[data-percent="40"] .webpcLoader__statusProgressCount:before{content:"40%"}.webpcLoader__statusProgress[data-percent="41"] .webpcLoader__statusProgressCount:before{content:"41%"}.webpcLoader__statusProgress[data-percent="42"] .webpcLoader__statusProgressCount:before{content:"42%"}.webpcLoader__statusProgress[data-percent="43"] .webpcLoader__statusProgressCount:before{content:"43%"}.webpcLoader__statusProgress[data-percent="44"] .webpcLoader__statusProgressCount:before{content:"44%"}.webpcLoader__statusProgress[data-percent="45"] .webpcLoader__statusProgressCount:before{content:"45%"}.webpcLoader__statusProgress[data-percent="46"] .webpcLoader__statusProgressCount:before{content:"46%"}.webpcLoader__statusProgress[data-percent="47"] .webpcLoader__statusProgressCount:before{content:"47%"}.webpcLoader__statusProgress[data-percent="48"] .webpcLoader__statusProgressCount:before{content:"48%"}.webpcLoader__statusProgress[data-percent="49"] .webpcLoader__statusProgressCount:before{content:"49%"}.webpcLoader__statusProgress[data-percent="50"] .webpcLoader__statusProgressCount:before{content:"50%"}.webpcLoader__statusProgress[data-percent="51"] .webpcLoader__statusProgressCount:before{content:"51%"}.webpcLoader__statusProgress[data-percent="52"] .webpcLoader__statusProgressCount:before{content:"52%"}.webpcLoader__statusProgress[data-percent="53"] .webpcLoader__statusProgressCount:before{content:"53%"}.webpcLoader__statusProgress[data-percent="54"] .webpcLoader__statusProgressCount:before{content:"54%"}.webpcLoader__statusProgress[data-percent="55"] .webpcLoader__statusProgressCount:before{content:"55%"}.webpcLoader__statusProgress[data-percent="56"] .webpcLoader__statusProgressCount:before{content:"56%"}.webpcLoader__statusProgress[data-percent="57"] .webpcLoader__statusProgressCount:before{content:"57%"}.webpcLoader__statusProgress[data-percent="58"] .webpcLoader__statusProgressCount:before{content:"58%"}.webpcLoader__statusProgress[data-percent="59"] .webpcLoader__statusProgressCount:before{content:"59%"}.webpcLoader__statusProgress[data-percent="60"] .webpcLoader__statusProgressCount:before{content:"60%"}.webpcLoader__statusProgress[data-percent="61"] .webpcLoader__statusProgressCount:before{content:"61%"}.webpcLoader__statusProgress[data-percent="62"] .webpcLoader__statusProgressCount:before{content:"62%"}.webpcLoader__statusProgress[data-percent="63"] .webpcLoader__statusProgressCount:before{content:"63%"}.webpcLoader__statusProgress[data-percent="64"] .webpcLoader__statusProgressCount:before{content:"64%"}.webpcLoader__statusProgress[data-percent="65"] .webpcLoader__statusProgressCount:before{content:"65%"}.webpcLoader__statusProgress[data-percent="66"] .webpcLoader__statusProgressCount:before{content:"66%"}.webpcLoader__statusProgress[data-percent="67"] .webpcLoader__statusProgressCount:before{content:"67%"}.webpcLoader__statusProgress[data-percent="68"] .webpcLoader__statusProgressCount:before{content:"68%"}.webpcLoader__statusProgress[data-percent="69"] .webpcLoader__statusProgressCount:before{content:"69%"}.webpcLoader__statusProgress[data-percent="70"] .webpcLoader__statusProgressCount:before{content:"70%"}.webpcLoader__statusProgress[data-percent="71"] .webpcLoader__statusProgressCount:before{content:"71%"}.webpcLoader__statusProgress[data-percent="72"] .webpcLoader__statusProgressCount:before{content:"72%"}.webpcLoader__statusProgress[data-percent="73"] .webpcLoader__statusProgressCount:before{content:"73%"}.webpcLoader__statusProgress[data-percent="74"] .webpcLoader__statusProgressCount:before{content:"74%"}.webpcLoader__statusProgress[data-percent="75"] .webpcLoader__statusProgressCount:before{content:"75%"}.webpcLoader__statusProgress[data-percent="76"] .webpcLoader__statusProgressCount:before{content:"76%"}.webpcLoader__statusProgress[data-percent="77"] .webpcLoader__statusProgressCount:before{content:"77%"}.webpcLoader__statusProgress[data-percent="78"] .webpcLoader__statusProgressCount:before{content:"78%"}.webpcLoader__statusProgress[data-percent="79"] .webpcLoader__statusProgressCount:before{content:"79%"}.webpcLoader__statusProgress[data-percent="80"] .webpcLoader__statusProgressCount:before{content:"80%"}.webpcLoader__statusProgress[data-percent="81"] .webpcLoader__statusProgressCount:before{content:"81%"}.webpcLoader__statusProgress[data-percent="82"] .webpcLoader__statusProgressCount:before{content:"82%"}.webpcLoader__statusProgress[data-percent="83"] .webpcLoader__statusProgressCount:before{content:"83%"}.webpcLoader__statusProgress[data-percent="84"] .webpcLoader__statusProgressCount:before{content:"84%"}.webpcLoader__statusProgress[data-percent="85"] .webpcLoader__statusProgressCount:before{content:"85%"}.webpcLoader__statusProgress[data-percent="86"] .webpcLoader__statusProgressCount:before{content:"86%"}.webpcLoader__statusProgress[data-percent="87"] .webpcLoader__statusProgressCount:before{content:"87%"}.webpcLoader__statusProgress[data-percent="88"] .webpcLoader__statusProgressCount:before{content:"88%"}.webpcLoader__statusProgress[data-percent="89"] .webpcLoader__statusProgressCount:before{content:"89%"}.webpcLoader__statusProgress[data-percent="90"] .webpcLoader__statusProgressCount:before{content:"90%"}.webpcLoader__statusProgress[data-percent="91"] .webpcLoader__statusProgressCount:before{content:"91%"}.webpcLoader__statusProgress[data-percent="92"] .webpcLoader__statusProgressCount:before{content:"92%"}.webpcLoader__statusProgress[data-percent="93"] .webpcLoader__statusProgressCount:before{content:"93%"}.webpcLoader__statusProgress[data-percent="94"] .webpcLoader__statusProgressCount:before{content:"94%"}.webpcLoader__statusProgress[data-percent="95"] .webpcLoader__statusProgressCount:before{content:"95%"}.webpcLoader__statusProgress[data-percent="96"] .webpcLoader__statusProgressCount:before{content:"96%"}.webpcLoader__statusProgress[data-percent="97"] .webpcLoader__statusProgressCount:before{content:"97%"}.webpcLoader__statusProgress[data-percent="98"] .webpcLoader__statusProgressCount:before{content:"98%"}.webpcLoader__statusProgress[data-percent="99"] .webpcLoader__statusProgressCount:before{content:"99%"}.webpcLoader__statusProgress[data-percent="100"] .webpcLoader__statusProgressCount:before{content:"100%"}.webpcLoader__statusContent{font-size:14px;line-height:1.5714285714;max-width:800px;padding:4px 0}.webpcLoader__statusContent--small{font-size:12px;line-height:1.75}.webpcLoader__statusContent strong{font-weight:600}.webpcLoader__success{padding:10px 0}.webpcLoader__successInner{border-left:2px solid #00a32a;padding:0 20px}.webpcLoader__successContent{color:#00a32a;font-size:14px;font-weight:600;line-height:1.5714285714;padding:4px 0}.webpcLoader__successContent a{color:inherit}.webpcLoader__errors{margin-top:10px;padding:10px 0}.webpcLoader__errorsInner{border-left:2px solid #c3c4c7}.webpcLoader__errorsTitle{background-color:#c3c4c7;color:#fff;display:inline-block;font-size:14px;line-height:1.5714285714;padding:4px 20px}.webpcLoader__errorsContent{padding:10px 0 10px 20px}.webpcLoader__errorsContent>p{font-size:12px;line-height:1.75;margin:0;max-width:100%}.webpcLoader__errorsContent>p.webpcLoader__errorsContentError{color:#d63638;font-size:14px;font-weight:600;line-height:1.5714285714}.webpcLoader__errorsContent pre{font-size:12px;line-height:1.75;white-space:normal}.webpcLoader__button--disabled{opacity:.25!important;pointer-events:none}.webpcMenu{margin-top:30px}.webpcMenu:first-child{margin-top:0}.webpcMenu__wrapper{border-bottom:1px solid #dcdcde}.webpcMenu__items{display:flex;font-size:0}.webpcMenu__itemLink{box-shadow:none!important;display:block;font-size:16px;line-height:1.5;outline:none!important;padding:13px 30px;text-align:center;text-decoration:none!important;transition:color .3s}.webpcMenu__itemLink:focus,.webpcMenu__itemLink:hover{color:rgba(34,113,177,.5)}.webpcMenu__itemLink--active{background-color:#fff;color:#101517;font-weight:600}.webpcMenu__itemLink--active:focus,.webpcMenu__itemLink--active:hover{color:inherit}.webpcPopup{margin-top:20px}.webpcPopup__inner{background-color:#fff;border:1px solid #c3c4c7;display:flex;flex-wrap:wrap}.webpcPopup__image{background-image:url(../../img/author.png);background-position:50%;background-repeat:no-repeat;background-size:cover;width:152px}.webpcPopup__content{border-left:1px solid #c3c4c7;flex:1;padding:10px 20px}.webpcQuality__items{display:flex;flex-wrap:wrap;justify-content:space-between}.webpcQuality__item{display:flex;flex:1;justify-content:center;position:relative}.webpcQuality__item:before{background-color:#c3c4c7;content:"";height:1px;left:0;position:absolute;top:50%;width:100%}.webpcQuality__item:first-child:before{left:50%}.webpcQuality__item:last-child:before{width:50%}.webpcQuality__itemInput{display:none!important}.webpcQuality__itemLabel{display:block;height:42px;position:relative;width:42px}.webpcQuality__itemLabel:after,.webpcQuality__itemLabel:before{border-radius:50%;content:"";height:22px;position:absolute;width:22px}.webpcQuality__itemLabel:before{background-color:#fff;border:1px solid #c3c4c7;left:10px;top:10px}.webpcQuality__itemLabel:after{background-color:#00a32a;height:8px;left:17px;top:17px;transform:scale(0);transition:transform .3s;width:8px}.webpcQuality__itemInput:checked+.webpcQuality__itemLabel:after{transform:scale(1)}.webpcQuality__texts{display:flex;flex-wrap:wrap}.webpcQuality__text{flex:1;font-size:12px;line-height:1.75;padding:4px 0;text-align:center}.webpcQuality__text strong{font-size:14px;line-height:1.5714285714}.webpcServerInfo{color:#222;text-align:center}.webpcServerInfo pre{font-family:monospace;margin:0}.webpcServerInfo h1,.webpcServerInfo h2{display:none}.webpcServerInfo p{max-width:100%}.webpcServerInfo table{border:0;border-collapse:collapse;margin:10px auto;width:100%}.webpcServerInfo td,.webpcServerInfo th{border:1px solid #666;font-family:monospace;font-size:12px;line-height:1.75;padding:4px 5px;text-align:center;vertical-align:baseline}.webpcServerInfo .p{text-align:left}.webpcServerInfo .e{background-color:#ccf;font-weight:700;width:300px}.webpcServerInfo .h{background-color:#99c;font-weight:700}.webpcServerInfo .v{word-wrap:break-word;background-color:#ddd;max-width:300px;overflow-x:auto}.webpcServerInfo .v i{color:#999}.webpcServerInfo img{border:0;float:right}@media screen and (max-width:1600px){.webpcPage__columns{margin:0 -15px}.webpcPage__column{padding:0 15px}.webpcPage__widget+.webpcPage__widget{margin-top:30px}}@media screen and (max-width:1279px){.webpcPage__column--large{width:100%}.webpcPage__column--small{margin-top:30px;width:100%}}@media screen and (max-width:1024px){.webpcPage__widgetColumns{display:block}.webpcPage__widgetColumn{width:100%}}@media screen and (max-width:782px){.webpcPage{padding-right:0}.webpcContent--author{background:none;margin-left:0;padding-left:30px}.webpcContent--notice img{bottom:auto;margin:20px 0 10px;position:relative;right:auto}.webpcInput{display:block}.webpcInput__field{width:100%}.webpcInput__field--small{width:calc(100% - 20px)}.webpcInput__button{margin:10px 0 0!important}.webpcLoader__columns,.webpcMenu__items{display:block}.webpcPopup__inner{border:1px solid #c3c4c7;display:block}.webpcPopup__image{height:152px;margin:20px auto 0}.webpcPopup__content{border-left:0}}
|
changelog.txt
CHANGED
@@ -1,5 +1,10 @@
|
|
1 |
== Changelog ==
|
2 |
|
|
|
|
|
|
|
|
|
|
|
3 |
= 5.1.0 (2022-08-28) =
|
4 |
* `[Fixed]` Exclusion of converted files from backup generated by UpdraftPlus plugin
|
5 |
* `[Added]` Optimization statistics in Media Library
|
1 |
== Changelog ==
|
2 |
|
3 |
+
= 5.2.0 (2022-09-10) =
|
4 |
+
* `[Fixed]` Re-conversion of images modified after previous conversion
|
5 |
+
* `[Added]` Optimization statistics in Media Upload Popup
|
6 |
+
* `[Added]` Filter `webpc_source_directories` to add support for custom directories
|
7 |
+
|
8 |
= 5.1.0 (2022-08-28) =
|
9 |
* `[Fixed]` Exclusion of converted files from backup generated by UpdraftPlus plugin
|
10 |
* `[Added]` Optimization statistics in Media Library
|
readme.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
=== Converter for Media - One-click image optimization | Convert WebP and AVIF & Optimize Images ===
|
2 |
Contributors: mateuszgbiorczyk
|
3 |
-
Donate link: https://mattplugins.com/
|
4 |
Tags: convert webp, webp, optimize images, image optimization, compress images
|
5 |
Requires at least: 4.9
|
6 |
Tested up to: 6.0
|
@@ -23,7 +23,7 @@ This will be a profit both for your users who will not have to download so much
|
|
23 |
|
24 |
#### AVIF support
|
25 |
|
26 |
-
Now in [the PRO version](https://mattplugins.com/
|
27 |
|
28 |
#### How does this work?
|
29 |
|
@@ -50,7 +50,7 @@ You can convert WebP and optimize images not only from `/uploads` directory but
|
|
50 |
|
51 |
We spend hours working on the development of this plugin. Technical support also requires a lot of time, but we do it because we want to offer you the best plugin. We enjoy every new plugin installation.
|
52 |
|
53 |
-
If you would like to appreciate it, you can try [the PRO version](https://mattplugins.com/
|
54 |
|
55 |
#### Please also read the FAQ below. Thank you for being with us!
|
56 |
|
@@ -60,7 +60,7 @@ If you would like to appreciate it, you can try [the PRO version](https://mattpl
|
|
60 |
2. Activate the plugin through `Plugins` screen in WordPress Admin Panel.
|
61 |
3. Use `Settings -> Settings -> Converter for Media` screen to configure the plugin.
|
62 |
4. Click on the button `Start Bulk Optimization` and wait.
|
63 |
-
5. Check if everything works fine using [this tutorial](https://
|
64 |
|
65 |
That's all! Your website is already loading faster!
|
66 |
|
@@ -68,11 +68,11 @@ That's all! Your website is already loading faster!
|
|
68 |
|
69 |
= How to get technical support? (before you ask for help) =
|
70 |
|
71 |
-
Before you add a new thread, **read all other questions in this FAQ and other threads in [the support forum](https://
|
72 |
|
73 |
When adding a thread, follow these steps and reply to each of them:
|
74 |
|
75 |
-
**1.** Do you have any errors on the plugin settings page? Please read [this thread](https://
|
76 |
|
77 |
**2.** URL of your website.
|
78 |
|
@@ -86,7 +86,7 @@ Please remember to include the answers to all questions by adding a thread. It i
|
|
86 |
|
87 |
If you have an error on the plugin settings screen, first of all, please read it carefully. They are displayed when there is a problem with the configuration of your server or website.
|
88 |
|
89 |
-
The messages are designed to reduce the number of support requests that are repeated. It saves your and our time. Please read [this thread](https://
|
90 |
|
91 |
= Error while converting? =
|
92 |
|
@@ -106,7 +106,7 @@ Practically every hosting meets these requirements. You must use PHP at least 7.
|
|
106 |
|
107 |
They are required native PHP extensions, used among others by WordPress to generate thumbnails. Your server must also have the modules `mod_mime`, `mod_rewrite` and `mod_expires` enabled.
|
108 |
|
109 |
-
An example of the correct server configuration can be found [here](https://mattplugins.com/
|
110 |
|
111 |
**Note the items marked in red.** If the values marked in red do not appear in your case, it means that your server does not meet the technical requirements. Pay attention to the **WebP Support** value for the GD library and **WEBP in the list of supported extensions** for the Imagick library.
|
112 |
|
@@ -116,7 +116,7 @@ Also, REST API must be enabled and work without additional restrictions. If you
|
|
116 |
|
117 |
= How to check if the plugin works? =
|
118 |
|
119 |
-
You can find more information on how the plugin works in [our manual](https://
|
120 |
|
121 |
= How to change the path to uploads? =
|
122 |
|
@@ -128,22 +128,20 @@ Path to the root installation directory of WordPress *(`ABSPATH` by default)*:
|
|
128 |
return ABSPATH;
|
129 |
} );`
|
130 |
|
131 |
-
|
132 |
|
133 |
`add_filter( 'webpc_dir_name', function( $path, $directory ) {
|
134 |
-
|
135 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
}
|
137 |
-
return
|
138 |
-
}, 10, 2 );`
|
139 |
-
|
140 |
-
Directory path with converted WebP files *(relative to the root directory)*:
|
141 |
-
|
142 |
-
`add_filter( 'webpc_dir_name', function( $path, $directory ) {
|
143 |
-
if ( $directory !== 'webp' ) {
|
144 |
-
return $path;
|
145 |
-
}
|
146 |
-
return 'wp-content/uploads-webpc';
|
147 |
}, 10, 2 );`
|
148 |
|
149 |
**Note that the `/uploads-webpc` directory must be at the same nesting level as the `/uploads`, `/plugins` and `/themes` directories.**
|
@@ -176,16 +174,17 @@ add_filter( 'webpc_htaccess_rewrite_path', function( $prefix ) {
|
|
176 |
return '/';
|
177 |
} );
|
178 |
add_filter( 'webpc_dir_name', function( $path, $directory ) {
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
|
|
187 |
}
|
188 |
-
return
|
189 |
}, 10, 2 );`
|
190 |
|
191 |
After setting the filters go to `Settings -> Converter for Media` in the admin panel and click the `Save Changes` button. `.htaccess` files with appropriate rules should be created in the directories `/uploads` and `/uploads-webpc`.
|
@@ -216,6 +215,23 @@ Argument `$server_path` is the absolute server path to a directory or file. Insi
|
|
216 |
|
217 |
Filters run before images are converted - they no longer support converted images. You have to delete them manually if they should not be converted.
|
218 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
219 |
= How to run manually conversion? =
|
220 |
|
221 |
By default, all images are converted when you click on the `Start Bulk Optimization ` button. In addition, conversion is automatic when you add new files to your Media Library.
|
@@ -313,7 +329,7 @@ After making changes, remember to restart the machine:
|
|
313 |
|
314 |
`systemctl restart nginx`
|
315 |
|
316 |
-
In case of problems, please contact us in [the support forum](https://
|
317 |
|
318 |
== Screenshots ==
|
319 |
|
@@ -324,6 +340,11 @@ In case of problems, please contact us in [the support forum](https://wordpress.
|
|
324 |
|
325 |
== Changelog ==
|
326 |
|
|
|
|
|
|
|
|
|
|
|
327 |
= 5.1.0 (2022-08-28) =
|
328 |
* `[Fixed]` Exclusion of converted files from backup generated by UpdraftPlus plugin
|
329 |
* `[Added]` Optimization statistics in Media Library
|
@@ -346,7 +367,7 @@ In case of problems, please contact us in [the support forum](https://wordpress.
|
|
346 |
* `[Added]` Statistics on number of converted images
|
347 |
* `[Added]` Tabs for plugin settings
|
348 |
|
349 |
-
See [changelog.txt](https://
|
350 |
|
351 |
== Upgrade Notice ==
|
352 |
|
1 |
=== Converter for Media - One-click image optimization | Convert WebP and AVIF & Optimize Images ===
|
2 |
Contributors: mateuszgbiorczyk
|
3 |
+
Donate link: https://url.mattplugins.com/converter-readme-donate-link
|
4 |
Tags: convert webp, webp, optimize images, image optimization, compress images
|
5 |
Requires at least: 4.9
|
6 |
Tested up to: 6.0
|
23 |
|
24 |
#### AVIF support
|
25 |
|
26 |
+
Now in [the PRO version](https://url.mattplugins.com/converter-readme-avif-support-upgrade) you can use AVIF as the output format for your images. The AVIF format is a new extension - is the successor to WebP. **AVIF allows you to achieve even higher levels of image compression**, and the quality of the converted images after image optimization is better than in WebP.
|
27 |
|
28 |
#### How does this work?
|
29 |
|
50 |
|
51 |
We spend hours working on the development of this plugin. Technical support also requires a lot of time, but we do it because we want to offer you the best plugin. We enjoy every new plugin installation.
|
52 |
|
53 |
+
If you would like to appreciate it, you can try [the PRO version](https://url.mattplugins.com/converter-readme-development-support-upgrade). In addition, you will gain access to extra functionalities that will allow you to achieve **even better image optimization results**.
|
54 |
|
55 |
#### Please also read the FAQ below. Thank you for being with us!
|
56 |
|
60 |
2. Activate the plugin through `Plugins` screen in WordPress Admin Panel.
|
61 |
3. Use `Settings -> Settings -> Converter for Media` screen to configure the plugin.
|
62 |
4. Click on the button `Start Bulk Optimization` and wait.
|
63 |
+
5. Check if everything works fine using [this tutorial](https://url.mattplugins.com/converter-readme-installation-instruction).
|
64 |
|
65 |
That's all! Your website is already loading faster!
|
66 |
|
68 |
|
69 |
= How to get technical support? (before you ask for help) =
|
70 |
|
71 |
+
Before you add a new thread, **read all other questions in this FAQ and other threads in [the support forum](https://url.mattplugins.com/converter-plugin-faq-technical-support-forum) first**. Perhaps someone had a similar problem and it has been resolved.
|
72 |
|
73 |
When adding a thread, follow these steps and reply to each of them:
|
74 |
|
75 |
+
**1.** Do you have any errors on the plugin settings page? Please read [this thread](https://url.mattplugins.com/converter-plugin-faq-technical-support-error-instruction) if you have any errors.
|
76 |
|
77 |
**2.** URL of your website.
|
78 |
|
86 |
|
87 |
If you have an error on the plugin settings screen, first of all, please read it carefully. They are displayed when there is a problem with the configuration of your server or website.
|
88 |
|
89 |
+
The messages are designed to reduce the number of support requests that are repeated. It saves your and our time. Please read [this thread](https://url.mattplugins.com/converter-plugin-faq-configuration-error-instruction) for more information.
|
90 |
|
91 |
= Error while converting? =
|
92 |
|
106 |
|
107 |
They are required native PHP extensions, used among others by WordPress to generate thumbnails. Your server must also have the modules `mod_mime`, `mod_rewrite` and `mod_expires` enabled.
|
108 |
|
109 |
+
An example of the correct server configuration can be found [here](https://url.mattplugins.com/converter-plugin-faq-plugin-requirements-configuration-image). The link to your current configuration can be found in the Help Center tab on plugin settings screen.
|
110 |
|
111 |
**Note the items marked in red.** If the values marked in red do not appear in your case, it means that your server does not meet the technical requirements. Pay attention to the **WebP Support** value for the GD library and **WEBP in the list of supported extensions** for the Imagick library.
|
112 |
|
116 |
|
117 |
= How to check if the plugin works? =
|
118 |
|
119 |
+
You can find more information on how the plugin works in [our manual](https://url.mattplugins.com/converter-plugin-faq-plugin-check-instruction).
|
120 |
|
121 |
= How to change the path to uploads? =
|
122 |
|
128 |
return ABSPATH;
|
129 |
} );`
|
130 |
|
131 |
+
Paths to directories *(relative to the root directory)*:
|
132 |
|
133 |
`add_filter( 'webpc_dir_name', function( $path, $directory ) {
|
134 |
+
switch ( $directory ) {
|
135 |
+
case 'uploads':
|
136 |
+
return 'wp-content/uploads';
|
137 |
+
case 'webp':
|
138 |
+
return 'wp-content/uploads-webpc';
|
139 |
+
case 'plugins':
|
140 |
+
return 'wp-content/plugins';
|
141 |
+
case 'themes':
|
142 |
+
return 'wp-content/themes';
|
143 |
}
|
144 |
+
return $path;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
}, 10, 2 );`
|
146 |
|
147 |
**Note that the `/uploads-webpc` directory must be at the same nesting level as the `/uploads`, `/plugins` and `/themes` directories.**
|
174 |
return '/';
|
175 |
} );
|
176 |
add_filter( 'webpc_dir_name', function( $path, $directory ) {
|
177 |
+
switch ( $directory ) {
|
178 |
+
case 'uploads':
|
179 |
+
return 'app/uploads';
|
180 |
+
case 'webp':
|
181 |
+
return 'app/uploads-webpc';
|
182 |
+
case 'plugins':
|
183 |
+
return 'app/plugins';
|
184 |
+
case 'themes':
|
185 |
+
return 'app/themes';
|
186 |
}
|
187 |
+
return $path;
|
188 |
}, 10, 2 );`
|
189 |
|
190 |
After setting the filters go to `Settings -> Converter for Media` in the admin panel and click the `Save Changes` button. `.htaccess` files with appropriate rules should be created in the directories `/uploads` and `/uploads-webpc`.
|
215 |
|
216 |
Filters run before images are converted - they no longer support converted images. You have to delete them manually if they should not be converted.
|
217 |
|
218 |
+
= Support for custom directories =
|
219 |
+
|
220 |
+
The plugin supports the following directories by default:
|
221 |
+
- `/gallery`
|
222 |
+
- `/plugins`
|
223 |
+
- `/themes`
|
224 |
+
- `/uploads`
|
225 |
+
|
226 |
+
If you want to add support for a custom directory, add the following code to the functions.php file in your theme directory *(use a correct directory name instead of `custom-directory`)*:
|
227 |
+
|
228 |
+
`add_filter( 'webpc_source_directories', function ( $directories ) {
|
229 |
+
$directories[] = 'custom-directory';
|
230 |
+
return $directories;
|
231 |
+
} );`
|
232 |
+
|
233 |
+
Remember that this directory must be located in the `/wp-content` directory.
|
234 |
+
|
235 |
= How to run manually conversion? =
|
236 |
|
237 |
By default, all images are converted when you click on the `Start Bulk Optimization ` button. In addition, conversion is automatic when you add new files to your Media Library.
|
329 |
|
330 |
`systemctl restart nginx`
|
331 |
|
332 |
+
In case of problems, please contact us in [the support forum](https://url.mattplugins.com/converter-plugin-faq-nginx-configuration-contact). We will try to help.
|
333 |
|
334 |
== Screenshots ==
|
335 |
|
340 |
|
341 |
== Changelog ==
|
342 |
|
343 |
+
= 5.2.0 (2022-09-10) =
|
344 |
+
* `[Fixed]` Re-conversion of images modified after previous conversion
|
345 |
+
* `[Added]` Optimization statistics in Media Upload Popup
|
346 |
+
* `[Added]` Filter `webpc_source_directories` to add support for custom directories
|
347 |
+
|
348 |
= 5.1.0 (2022-08-28) =
|
349 |
* `[Fixed]` Exclusion of converted files from backup generated by UpdraftPlus plugin
|
350 |
* `[Added]` Optimization statistics in Media Library
|
367 |
* `[Added]` Statistics on number of converted images
|
368 |
* `[Added]` Tabs for plugin settings
|
369 |
|
370 |
+
See [changelog.txt](https://url.mattplugins.com/converter-readme-changelog) for previous versions.
|
371 |
|
372 |
== Upgrade Notice ==
|
373 |
|
src/Conversion/Cron/CronInitiator.php
CHANGED
@@ -67,13 +67,14 @@ class CronInitiator {
|
|
67 |
}
|
68 |
|
69 |
/**
|
70 |
-
* @param string[] $new_paths
|
|
|
71 |
*
|
72 |
* @return void
|
73 |
*/
|
74 |
-
public function add_paths_to_conversion( array $new_paths ) {
|
75 |
$paths = $this->cron_status_manager->get_paths_to_conversion();
|
76 |
-
$valid_new_paths = $this->paths_finder->skip_converted_paths( $new_paths );
|
77 |
|
78 |
$this->cron_status_manager->set_paths_to_conversion( array_merge( $valid_new_paths, $paths ) );
|
79 |
}
|
67 |
}
|
68 |
|
69 |
/**
|
70 |
+
* @param string[] $new_paths .
|
71 |
+
* @param bool $force_convert_modified .
|
72 |
*
|
73 |
* @return void
|
74 |
*/
|
75 |
+
public function add_paths_to_conversion( array $new_paths, bool $force_convert_modified = false ) {
|
76 |
$paths = $this->cron_status_manager->get_paths_to_conversion();
|
77 |
+
$valid_new_paths = $this->paths_finder->skip_converted_paths( $new_paths, null, $force_convert_modified );
|
78 |
|
79 |
$this->cron_status_manager->set_paths_to_conversion( array_merge( $valid_new_paths, $paths ) );
|
80 |
}
|
src/Conversion/Directory/DirectoryFactory.php
CHANGED
@@ -18,10 +18,13 @@ class DirectoryFactory implements HookableInterface {
|
|
18 |
private $directories_integration;
|
19 |
|
20 |
public function __construct() {
|
21 |
-
$this->set_integration( new
|
22 |
-
$this->set_integration( new
|
23 |
-
$this->set_integration( new
|
24 |
-
$this->set_integration( new
|
|
|
|
|
|
|
25 |
$this->set_integration( new UploadsWebpcDirectory() );
|
26 |
}
|
27 |
|
@@ -43,6 +46,17 @@ class DirectoryFactory implements HookableInterface {
|
|
43 |
* {@inheritdoc}
|
44 |
*/
|
45 |
public function init_hooks() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
$this->directories_integration->init_hooks();
|
47 |
}
|
48 |
|
18 |
private $directories_integration;
|
19 |
|
20 |
public function __construct() {
|
21 |
+
$this->set_integration( new SourceDirectory( 'gallery' ) );
|
22 |
+
$this->set_integration( new SourceDirectory( 'plugins' ) );
|
23 |
+
$this->set_integration( new SourceDirectory( 'themes' ) );
|
24 |
+
$this->set_integration( new SourceDirectory( 'uploads', true ) );
|
25 |
+
foreach ( apply_filters( 'webpc_source_directories', [] ) as $directory_name ) {
|
26 |
+
$this->set_integration( new SourceDirectory( $directory_name ) );
|
27 |
+
}
|
28 |
$this->set_integration( new UploadsWebpcDirectory() );
|
29 |
}
|
30 |
|
46 |
* {@inheritdoc}
|
47 |
*/
|
48 |
public function init_hooks() {
|
49 |
+
add_action( 'init', [ $this, 'init_hooks_after_setup' ] );
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @return void
|
54 |
+
* @internal
|
55 |
+
*/
|
56 |
+
public function init_hooks_after_setup() {
|
57 |
+
foreach ( apply_filters( 'webpc_source_directories', [] ) as $directory_name ) {
|
58 |
+
$this->set_integration( new SourceDirectory( $directory_name ) );
|
59 |
+
}
|
60 |
$this->directories_integration->init_hooks();
|
61 |
}
|
62 |
|
src/Conversion/Directory/DirectoryIntegration.php
CHANGED
@@ -83,7 +83,7 @@ class DirectoryIntegration implements HookableInterface {
|
|
83 |
/**
|
84 |
* Returns server path of directory relative to WordPress root directory.
|
85 |
*
|
86 |
-
* @param
|
87 |
* @param string $directory_type Type of directory.
|
88 |
*
|
89 |
* @return string Relative server path of directory.
|
@@ -99,7 +99,7 @@ class DirectoryIntegration implements HookableInterface {
|
|
99 |
/**
|
100 |
* Returns server path of directory.
|
101 |
*
|
102 |
-
* @param
|
103 |
* @param string $directory_type Type of directory.
|
104 |
*
|
105 |
* @return string Server path of directory.
|
@@ -125,7 +125,7 @@ class DirectoryIntegration implements HookableInterface {
|
|
125 |
/**
|
126 |
* Returns URL of directory.
|
127 |
*
|
128 |
-
* @param
|
129 |
* @param string $directory_type Type of directory.
|
130 |
*
|
131 |
* @return string URL of directory.
|
83 |
/**
|
84 |
* Returns server path of directory relative to WordPress root directory.
|
85 |
*
|
86 |
+
* @param string $value Default value.
|
87 |
* @param string $directory_type Type of directory.
|
88 |
*
|
89 |
* @return string Relative server path of directory.
|
99 |
/**
|
100 |
* Returns server path of directory.
|
101 |
*
|
102 |
+
* @param string $value Default value.
|
103 |
* @param string $directory_type Type of directory.
|
104 |
*
|
105 |
* @return string Server path of directory.
|
125 |
/**
|
126 |
* Returns URL of directory.
|
127 |
*
|
128 |
+
* @param string $value Default value.
|
129 |
* @param string $directory_type Type of directory.
|
130 |
*
|
131 |
* @return string URL of directory.
|
src/Conversion/Directory/GalleryDirectory.php
DELETED
@@ -1,33 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WebpConverter\Conversion\Directory;
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Supports data about /gallery directory.
|
7 |
-
*/
|
8 |
-
class GalleryDirectory extends DirectoryAbstract {
|
9 |
-
|
10 |
-
const DIRECTORY_TYPE = 'gallery';
|
11 |
-
const DIRECTORY_PATH = '%s/gallery';
|
12 |
-
|
13 |
-
/**
|
14 |
-
* {@inheritdoc}
|
15 |
-
*/
|
16 |
-
public function get_type(): string {
|
17 |
-
return self::DIRECTORY_TYPE;
|
18 |
-
}
|
19 |
-
|
20 |
-
/**
|
21 |
-
* {@inheritdoc}
|
22 |
-
*/
|
23 |
-
public function get_label(): string {
|
24 |
-
return '/' . self::DIRECTORY_TYPE;
|
25 |
-
}
|
26 |
-
|
27 |
-
/**
|
28 |
-
* {@inheritdoc}
|
29 |
-
*/
|
30 |
-
public function get_relative_path(): string {
|
31 |
-
return sprintf( self::DIRECTORY_PATH, basename( WP_CONTENT_DIR ) );
|
32 |
-
}
|
33 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/Conversion/Directory/PluginsDirectory.php
DELETED
@@ -1,33 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WebpConverter\Conversion\Directory;
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Supports data about /plugins directory.
|
7 |
-
*/
|
8 |
-
class PluginsDirectory extends DirectoryAbstract {
|
9 |
-
|
10 |
-
const DIRECTORY_TYPE = 'plugins';
|
11 |
-
const DIRECTORY_PATH = '%s/plugins';
|
12 |
-
|
13 |
-
/**
|
14 |
-
* {@inheritdoc}
|
15 |
-
*/
|
16 |
-
public function get_type(): string {
|
17 |
-
return self::DIRECTORY_TYPE;
|
18 |
-
}
|
19 |
-
|
20 |
-
/**
|
21 |
-
* {@inheritdoc}
|
22 |
-
*/
|
23 |
-
public function get_label(): string {
|
24 |
-
return '/' . self::DIRECTORY_TYPE;
|
25 |
-
}
|
26 |
-
|
27 |
-
/**
|
28 |
-
* {@inheritdoc}
|
29 |
-
*/
|
30 |
-
public function get_relative_path(): string {
|
31 |
-
return sprintf( self::DIRECTORY_PATH, basename( WP_CONTENT_DIR ) );
|
32 |
-
}
|
33 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/Conversion/Directory/SourceDirectory.php
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WebpConverter\Conversion\Directory;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Supports data about source directory.
|
7 |
+
*/
|
8 |
+
class SourceDirectory extends DirectoryAbstract {
|
9 |
+
|
10 |
+
/**
|
11 |
+
* @var string
|
12 |
+
*/
|
13 |
+
private $directory_type;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @var string
|
17 |
+
*/
|
18 |
+
private $directory_path;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @var bool
|
22 |
+
*/
|
23 |
+
private $is_always_available;
|
24 |
+
|
25 |
+
public function __construct( string $directory_name, bool $is_always_available = false ) {
|
26 |
+
$this->directory_type = trim( $directory_name, '/\\' );
|
27 |
+
$this->directory_path = '%s/' . $this->directory_type;
|
28 |
+
$this->is_always_available = $is_always_available;
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* {@inheritdoc}
|
33 |
+
*/
|
34 |
+
public function get_type(): string {
|
35 |
+
return $this->directory_type;
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* {@inheritdoc}
|
40 |
+
*/
|
41 |
+
public function get_label(): string {
|
42 |
+
return '/' . $this->directory_type;
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* {@inheritdoc}
|
47 |
+
*/
|
48 |
+
public function get_relative_path(): string {
|
49 |
+
return sprintf( $this->directory_path, basename( WP_CONTENT_DIR ) );
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* {@inheritdoc}
|
54 |
+
*/
|
55 |
+
public function is_available(): bool {
|
56 |
+
if ( $this->is_always_available ) {
|
57 |
+
return true;
|
58 |
+
}
|
59 |
+
return parent::is_available();
|
60 |
+
}
|
61 |
+
}
|
src/Conversion/Directory/ThemesDirectory.php
DELETED
@@ -1,33 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WebpConverter\Conversion\Directory;
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Supports data about /themes directory.
|
7 |
-
*/
|
8 |
-
class ThemesDirectory extends DirectoryAbstract {
|
9 |
-
|
10 |
-
const DIRECTORY_TYPE = 'themes';
|
11 |
-
const DIRECTORY_PATH = '%s/themes';
|
12 |
-
|
13 |
-
/**
|
14 |
-
* {@inheritdoc}
|
15 |
-
*/
|
16 |
-
public function get_type(): string {
|
17 |
-
return self::DIRECTORY_TYPE;
|
18 |
-
}
|
19 |
-
|
20 |
-
/**
|
21 |
-
* {@inheritdoc}
|
22 |
-
*/
|
23 |
-
public function get_label(): string {
|
24 |
-
return '/' . self::DIRECTORY_TYPE;
|
25 |
-
}
|
26 |
-
|
27 |
-
/**
|
28 |
-
* {@inheritdoc}
|
29 |
-
*/
|
30 |
-
public function get_relative_path(): string {
|
31 |
-
return sprintf( self::DIRECTORY_PATH, basename( WP_CONTENT_DIR ) );
|
32 |
-
}
|
33 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/Conversion/Directory/UploadsDirectory.php
DELETED
@@ -1,40 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WebpConverter\Conversion\Directory;
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Supports data about /uploads directory.
|
7 |
-
*/
|
8 |
-
class UploadsDirectory extends DirectoryAbstract {
|
9 |
-
|
10 |
-
const DIRECTORY_TYPE = 'uploads';
|
11 |
-
const DIRECTORY_PATH = '%s/uploads';
|
12 |
-
|
13 |
-
/**
|
14 |
-
* {@inheritdoc}
|
15 |
-
*/
|
16 |
-
public function get_type(): string {
|
17 |
-
return self::DIRECTORY_TYPE;
|
18 |
-
}
|
19 |
-
|
20 |
-
/**
|
21 |
-
* {@inheritdoc}
|
22 |
-
*/
|
23 |
-
public function is_available(): bool {
|
24 |
-
return true;
|
25 |
-
}
|
26 |
-
|
27 |
-
/**
|
28 |
-
* {@inheritdoc}
|
29 |
-
*/
|
30 |
-
public function get_label(): string {
|
31 |
-
return '/' . self::DIRECTORY_TYPE;
|
32 |
-
}
|
33 |
-
|
34 |
-
/**
|
35 |
-
* {@inheritdoc}
|
36 |
-
*/
|
37 |
-
public function get_relative_path(): string {
|
38 |
-
return sprintf( self::DIRECTORY_PATH, basename( WP_CONTENT_DIR ) );
|
39 |
-
}
|
40 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/Conversion/Endpoint/CronConversionEndpoint.php
CHANGED
@@ -39,6 +39,13 @@ class CronConversionEndpoint extends EndpointAbstract {
|
|
39 |
return 'cron-conversion';
|
40 |
}
|
41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
/**
|
43 |
* {@inheritdoc}
|
44 |
*/
|
39 |
return 'cron-conversion';
|
40 |
}
|
41 |
|
42 |
+
/**
|
43 |
+
* {@inheritdoc}
|
44 |
+
*/
|
45 |
+
public function get_http_methods(): string {
|
46 |
+
return \WP_REST_Server::CREATABLE;
|
47 |
+
}
|
48 |
+
|
49 |
/**
|
50 |
* {@inheritdoc}
|
51 |
*/
|
src/Conversion/Endpoint/EndpointIntegration.php
CHANGED
@@ -42,7 +42,7 @@ class EndpointIntegration implements HookableInterface {
|
|
42 |
self::ROUTE_NAMESPACE,
|
43 |
$this->endpoint_object->get_route_name() . '-(?P<nonce_token>[a-zA-Z0-9.]+)',
|
44 |
[
|
45 |
-
'methods' =>
|
46 |
'permission_callback' => function ( \WP_REST_Request $request ) {
|
47 |
return $this->endpoint_object->is_valid_request( $request );
|
48 |
},
|
42 |
self::ROUTE_NAMESPACE,
|
43 |
$this->endpoint_object->get_route_name() . '-(?P<nonce_token>[a-zA-Z0-9.]+)',
|
44 |
[
|
45 |
+
'methods' => $this->endpoint_object->get_http_methods(),
|
46 |
'permission_callback' => function ( \WP_REST_Request $request ) {
|
47 |
return $this->endpoint_object->is_valid_request( $request );
|
48 |
},
|
src/Conversion/Endpoint/EndpointInterface.php
CHANGED
@@ -14,6 +14,13 @@ interface EndpointInterface {
|
|
14 |
*/
|
15 |
public function get_route_name(): string;
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
/**
|
18 |
* Returns expiration time in seconds of endpoint URL.
|
19 |
*
|
14 |
*/
|
15 |
public function get_route_name(): string;
|
16 |
|
17 |
+
/**
|
18 |
+
* Returns methods separated by space.
|
19 |
+
*
|
20 |
+
* @return string
|
21 |
+
*/
|
22 |
+
public function get_http_methods(): string;
|
23 |
+
|
24 |
/**
|
25 |
* Returns expiration time in seconds of endpoint URL.
|
26 |
*
|
src/Conversion/Endpoint/ImagesCounterEndpoint.php
CHANGED
@@ -38,6 +38,13 @@ class ImagesCounterEndpoint extends EndpointAbstract {
|
|
38 |
return 'images-counter';
|
39 |
}
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
/**
|
42 |
* {@inheritdoc}
|
43 |
*/
|
38 |
return 'images-counter';
|
39 |
}
|
40 |
|
41 |
+
/**
|
42 |
+
* {@inheritdoc}
|
43 |
+
*/
|
44 |
+
public function get_http_methods(): string {
|
45 |
+
return \WP_REST_Server::READABLE;
|
46 |
+
}
|
47 |
+
|
48 |
/**
|
49 |
* {@inheritdoc}
|
50 |
*/
|
src/Conversion/Endpoint/PathsEndpoint.php
CHANGED
@@ -44,6 +44,13 @@ class PathsEndpoint extends EndpointAbstract {
|
|
44 |
return 'paths';
|
45 |
}
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
/**
|
48 |
* {@inheritdoc}
|
49 |
*/
|
@@ -68,6 +75,8 @@ class PathsEndpoint extends EndpointAbstract {
|
|
68 |
*/
|
69 |
public function get_route_response( \WP_REST_Request $request ) {
|
70 |
$this->cron_status_manager->set_conversion_status_locked( true, true );
|
|
|
|
|
71 |
|
72 |
$params = $request->get_params();
|
73 |
$skip_converted = ( $params['regenerate_force'] !== true );
|
44 |
return 'paths';
|
45 |
}
|
46 |
|
47 |
+
/**
|
48 |
+
* {@inheritdoc}
|
49 |
+
*/
|
50 |
+
public function get_http_methods(): string {
|
51 |
+
return \WP_REST_Server::CREATABLE;
|
52 |
+
}
|
53 |
+
|
54 |
/**
|
55 |
* {@inheritdoc}
|
56 |
*/
|
75 |
*/
|
76 |
public function get_route_response( \WP_REST_Request $request ) {
|
77 |
$this->cron_status_manager->set_conversion_status_locked( true, true );
|
78 |
+
$this->cron_status_manager->set_paths_to_conversion( [] );
|
79 |
+
$this->cron_status_manager->set_paths_skipped( [] );
|
80 |
|
81 |
$params = $request->get_params();
|
82 |
$skip_converted = ( $params['regenerate_force'] !== true );
|
src/Conversion/Endpoint/RegenerateEndpoint.php
CHANGED
@@ -33,6 +33,13 @@ class RegenerateEndpoint extends EndpointAbstract {
|
|
33 |
return 'regenerate';
|
34 |
}
|
35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
/**
|
37 |
* {@inheritdoc}
|
38 |
*/
|
33 |
return 'regenerate';
|
34 |
}
|
35 |
|
36 |
+
/**
|
37 |
+
* {@inheritdoc}
|
38 |
+
*/
|
39 |
+
public function get_http_methods(): string {
|
40 |
+
return \WP_REST_Server::CREATABLE;
|
41 |
+
}
|
42 |
+
|
43 |
/**
|
44 |
* {@inheritdoc}
|
45 |
*/
|
src/Conversion/Format/AvifFormat.php
CHANGED
@@ -4,7 +4,6 @@ namespace WebpConverter\Conversion\Format;
|
|
4 |
|
5 |
use WebpConverter\Conversion\Method\RemoteMethod;
|
6 |
use WebpConverter\Repository\TokenRepository;
|
7 |
-
use WebpConverter\WebpConverterConstants;
|
8 |
|
9 |
/**
|
10 |
* Supports AVIF as output format for images.
|
@@ -50,7 +49,7 @@ class AvifFormat extends FormatAbstract {
|
|
50 |
sprintf(
|
51 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
52 |
__( 'available in %1$sthe PRO version%2$s', 'webp-converter-for-media' ),
|
53 |
-
'<a href="
|
54 |
'</a>'
|
55 |
)
|
56 |
);
|
4 |
|
5 |
use WebpConverter\Conversion\Method\RemoteMethod;
|
6 |
use WebpConverter\Repository\TokenRepository;
|
|
|
7 |
|
8 |
/**
|
9 |
* Supports AVIF as output format for images.
|
49 |
sprintf(
|
50 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
51 |
__( 'available in %1$sthe PRO version%2$s', 'webp-converter-for-media' ),
|
52 |
+
'<a href="https://url.mattplugins.com/converter-field-output-format-avif-upgrade" target="_blank">',
|
53 |
'</a>'
|
54 |
)
|
55 |
);
|
src/Conversion/Media/Attachment.php
CHANGED
@@ -58,7 +58,7 @@ class Attachment {
|
|
58 |
private function get_paths_by_attachment( int $post_id, array $settings ): array {
|
59 |
$list = [];
|
60 |
$metadata = wp_get_attachment_metadata( $post_id );
|
61 |
-
if ( ! $metadata
|
62 |
return $list;
|
63 |
}
|
64 |
|
58 |
private function get_paths_by_attachment( int $post_id, array $settings ): array {
|
59 |
$list = [];
|
60 |
$metadata = wp_get_attachment_metadata( $post_id );
|
61 |
+
if ( ! $metadata ) {
|
62 |
return $list;
|
63 |
}
|
64 |
|
src/Conversion/Media/Upload.php
CHANGED
@@ -132,7 +132,7 @@ class Upload implements HookableInterface {
|
|
132 |
return;
|
133 |
}
|
134 |
|
135 |
-
$this->cron_initiator->add_paths_to_conversion( $paths );
|
136 |
$this->cron_initiator->init_async_conversion();
|
137 |
}
|
138 |
}
|
132 |
return;
|
133 |
}
|
134 |
|
135 |
+
$this->cron_initiator->add_paths_to_conversion( $paths, true );
|
136 |
$this->cron_initiator->init_async_conversion();
|
137 |
}
|
138 |
}
|
src/Conversion/Method/RemoteMethod.php
CHANGED
@@ -82,7 +82,7 @@ class RemoteMethod extends MethodAbstract {
|
|
82 |
sprintf(
|
83 |
/* translators: %%1$s: open anchor tag, %2$s: close anchor tag */
|
84 |
__( 'available in %1$sthe PRO version%2$s', 'webp-converter-for-media' ),
|
85 |
-
'<a href="
|
86 |
'</a>'
|
87 |
)
|
88 |
);
|
82 |
sprintf(
|
83 |
/* translators: %%1$s: open anchor tag, %2$s: close anchor tag */
|
84 |
__( 'available in %1$sthe PRO version%2$s', 'webp-converter-for-media' ),
|
85 |
+
'<a href="https://url.mattplugins.com/converter-field-conversion-method-remote-upgrade" target="_blank">',
|
86 |
'</a>'
|
87 |
)
|
88 |
);
|
src/Conversion/PathsFinder.php
CHANGED
@@ -99,19 +99,19 @@ class PathsFinder {
|
|
99 |
* @return int[] Number of images to be converted to given output formats.
|
100 |
*/
|
101 |
public function get_paths_count( array $allowed_output_formats ): array {
|
102 |
-
$
|
103 |
-
$values
|
104 |
foreach ( $allowed_output_formats as $output_format ) {
|
105 |
$values[ $output_format ] = 0;
|
106 |
$values[ 'all_' . $output_format ] = 0;
|
107 |
-
foreach ( $
|
108 |
-
$output_path = $this->output_path->get_path( $
|
109 |
if ( $output_path === null ) {
|
110 |
continue;
|
111 |
}
|
112 |
|
113 |
$values[ 'all_' . $output_format ]++;
|
114 |
-
if ( ! $this->is_converted_file( $output_path ) ) {
|
115 |
$values[ $output_format ]++;
|
116 |
}
|
117 |
}
|
@@ -128,19 +128,20 @@ class PathsFinder {
|
|
128 |
/**
|
129 |
* @param string[] $source_paths Server paths of source images.
|
130 |
* @param string[]|null $allowed_output_formats List of extensions or use selected in plugin settings.
|
|
|
131 |
*
|
132 |
* @return string[] Server paths of source images.
|
133 |
*/
|
134 |
-
public function skip_converted_paths( array $source_paths, array $allowed_output_formats = null ): array {
|
135 |
$allowed_output_formats = $allowed_output_formats
|
136 |
?: $this->plugin_data->get_plugin_settings()[ OutputFormatsOption::OPTION_NAME ];
|
137 |
|
138 |
-
foreach ( $source_paths as $path_index => $
|
139 |
$is_converted = true;
|
140 |
foreach ( $allowed_output_formats as $output_format ) {
|
141 |
-
$output_path = $this->output_path->get_path( $
|
142 |
|
143 |
-
if ( $output_path && ! $this->is_converted_file( $output_path ) ) {
|
144 |
$is_converted = false;
|
145 |
break;
|
146 |
}
|
@@ -181,13 +182,20 @@ class PathsFinder {
|
|
181 |
return $list;
|
182 |
}
|
183 |
|
184 |
-
private function is_converted_file( string $output_path ): bool {
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
|
|
|
|
189 |
}
|
190 |
|
|
|
|
|
|
|
|
|
|
|
191 |
private function get_paths_chunk_size( int $paths_count ): int {
|
192 |
$settings = $this->plugin_data->get_plugin_settings();
|
193 |
if ( $settings[ ConversionMethodOption::OPTION_NAME ] !== RemoteMethod::METHOD_NAME ) {
|
99 |
* @return int[] Number of images to be converted to given output formats.
|
100 |
*/
|
101 |
public function get_paths_count( array $allowed_output_formats ): array {
|
102 |
+
$source_paths = $this->find_source_paths( true );
|
103 |
+
$values = [];
|
104 |
foreach ( $allowed_output_formats as $output_format ) {
|
105 |
$values[ $output_format ] = 0;
|
106 |
$values[ 'all_' . $output_format ] = 0;
|
107 |
+
foreach ( $source_paths as $source_path ) {
|
108 |
+
$output_path = $this->output_path->get_path( $source_path, false, $output_format );
|
109 |
if ( $output_path === null ) {
|
110 |
continue;
|
111 |
}
|
112 |
|
113 |
$values[ 'all_' . $output_format ]++;
|
114 |
+
if ( ! $this->is_converted_file( $source_path, $output_path ) ) {
|
115 |
$values[ $output_format ]++;
|
116 |
}
|
117 |
}
|
128 |
/**
|
129 |
* @param string[] $source_paths Server paths of source images.
|
130 |
* @param string[]|null $allowed_output_formats List of extensions or use selected in plugin settings.
|
131 |
+
* @param bool $force_convert_modified Force re-conversion of images modified after previous conversion.
|
132 |
*
|
133 |
* @return string[] Server paths of source images.
|
134 |
*/
|
135 |
+
public function skip_converted_paths( array $source_paths, array $allowed_output_formats = null, bool $force_convert_modified = false ): array {
|
136 |
$allowed_output_formats = $allowed_output_formats
|
137 |
?: $this->plugin_data->get_plugin_settings()[ OutputFormatsOption::OPTION_NAME ];
|
138 |
|
139 |
+
foreach ( $source_paths as $path_index => $source_path ) {
|
140 |
$is_converted = true;
|
141 |
foreach ( $allowed_output_formats as $output_format ) {
|
142 |
+
$output_path = $this->output_path->get_path( $source_path, false, $output_format );
|
143 |
|
144 |
+
if ( $output_path && ! $this->is_converted_file( $source_path, $output_path, $force_convert_modified ) ) {
|
145 |
$is_converted = false;
|
146 |
break;
|
147 |
}
|
182 |
return $list;
|
183 |
}
|
184 |
|
185 |
+
private function is_converted_file( string $source_path, string $output_path, bool $force_convert_modified = false ): bool {
|
186 |
+
if ( file_exists( $output_path ) ) {
|
187 |
+
return ( $force_convert_modified ) ? ( filemtime( $source_path ) <= filemtime( $output_path ) ) : true;
|
188 |
+
}
|
189 |
+
|
190 |
+
return ( file_exists( $output_path . '.' . SkipLarger::DELETED_FILE_EXTENSION )
|
191 |
+
|| file_exists( $output_path . '.' . SkipCrashed::CRASHED_FILE_EXTENSION ) );
|
192 |
}
|
193 |
|
194 |
+
/**
|
195 |
+
* @param int $paths_count .
|
196 |
+
*
|
197 |
+
* @return int<1, max>
|
198 |
+
*/
|
199 |
private function get_paths_chunk_size( int $paths_count ): int {
|
200 |
$settings = $this->plugin_data->get_plugin_settings();
|
201 |
if ( $settings[ ConversionMethodOption::OPTION_NAME ] !== RemoteMethod::METHOD_NAME ) {
|
src/Error/Notice/LibsNotInstalledNotice.php
CHANGED
@@ -2,8 +2,6 @@
|
|
2 |
|
3 |
namespace WebpConverter\Error\Notice;
|
4 |
|
5 |
-
use WebpConverter\WebpConverterConstants;
|
6 |
-
|
7 |
/**
|
8 |
* {@inheritdoc}
|
9 |
*/
|
@@ -26,7 +24,7 @@ class LibsNotInstalledNotice implements ErrorNotice {
|
|
26 |
sprintf(
|
27 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
28 |
__( 'On your server is not installed GD or Imagick library.', 'webp-converter-for-media' ) . ' ' . __( 'This means that you cannot convert images to WebP format on your server, because it does not meet the plugin requirements described in %1$sthe plugin FAQ%2$s. This issue is not dependent on the plugin.', 'webp-converter-for-media' ),
|
29 |
-
'<a href="https://
|
30 |
'</a>'
|
31 |
),
|
32 |
sprintf(
|
@@ -34,7 +32,7 @@ class LibsNotInstalledNotice implements ErrorNotice {
|
|
34 |
__( '%1$sHowever, we have a solution for you!%2$s You can activate %3$sthe PRO version%4$s of the plugin that allows you to convert images using a remote server. This will allow you to convert images without any problems and speed up your website now.', 'webp-converter-for-media' ),
|
35 |
'<strong>',
|
36 |
'</strong>',
|
37 |
-
'<a href="
|
38 |
'</a>'
|
39 |
),
|
40 |
];
|
2 |
|
3 |
namespace WebpConverter\Error\Notice;
|
4 |
|
|
|
|
|
5 |
/**
|
6 |
* {@inheritdoc}
|
7 |
*/
|
24 |
sprintf(
|
25 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
26 |
__( 'On your server is not installed GD or Imagick library.', 'webp-converter-for-media' ) . ' ' . __( 'This means that you cannot convert images to WebP format on your server, because it does not meet the plugin requirements described in %1$sthe plugin FAQ%2$s. This issue is not dependent on the plugin.', 'webp-converter-for-media' ),
|
27 |
+
'<a href="https://url.mattplugins.com/converter-error-libs-not-installed-faq" target="_blank">',
|
28 |
'</a>'
|
29 |
),
|
30 |
sprintf(
|
32 |
__( '%1$sHowever, we have a solution for you!%2$s You can activate %3$sthe PRO version%4$s of the plugin that allows you to convert images using a remote server. This will allow you to convert images without any problems and speed up your website now.', 'webp-converter-for-media' ),
|
33 |
'<strong>',
|
34 |
'</strong>',
|
35 |
+
'<a href="https://url.mattplugins.com/converter-error-libs-not-installed-upgrade" target="_blank">',
|
36 |
'</a>'
|
37 |
),
|
38 |
];
|
src/Error/Notice/LibsWithoutWebpSupportNotice.php
CHANGED
@@ -2,8 +2,6 @@
|
|
2 |
|
3 |
namespace WebpConverter\Error\Notice;
|
4 |
|
5 |
-
use WebpConverter\WebpConverterConstants;
|
6 |
-
|
7 |
/**
|
8 |
* {@inheritdoc}
|
9 |
*/
|
@@ -26,7 +24,7 @@ class LibsWithoutWebpSupportNotice implements ErrorNotice {
|
|
26 |
sprintf(
|
27 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
28 |
__( 'Required GD or Imagick library is installed on your server, but it does not support the WebP format.', 'webp-converter-for-media' ) . ' ' . __( 'This means that you cannot convert images to WebP format on your server, because it does not meet the plugin requirements described in %1$sthe plugin FAQ%2$s. This issue is not dependent on the plugin.', 'webp-converter-for-media' ),
|
29 |
-
'<a href="https://
|
30 |
'</a>'
|
31 |
),
|
32 |
sprintf(
|
@@ -34,7 +32,7 @@ class LibsWithoutWebpSupportNotice implements ErrorNotice {
|
|
34 |
__( '%1$sHowever, we have a solution for you!%2$s You can activate %3$sthe PRO version%4$s of the plugin that allows you to convert images using a remote server. This will allow you to convert images without any problems and speed up your website now.', 'webp-converter-for-media' ),
|
35 |
'<strong>',
|
36 |
'</strong>',
|
37 |
-
'<a href="
|
38 |
'</a>'
|
39 |
),
|
40 |
];
|
2 |
|
3 |
namespace WebpConverter\Error\Notice;
|
4 |
|
|
|
|
|
5 |
/**
|
6 |
* {@inheritdoc}
|
7 |
*/
|
24 |
sprintf(
|
25 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
26 |
__( 'Required GD or Imagick library is installed on your server, but it does not support the WebP format.', 'webp-converter-for-media' ) . ' ' . __( 'This means that you cannot convert images to WebP format on your server, because it does not meet the plugin requirements described in %1$sthe plugin FAQ%2$s. This issue is not dependent on the plugin.', 'webp-converter-for-media' ),
|
27 |
+
'<a href="https://url.mattplugins.com/converter-error-libs-without-webp-support-faq" target="_blank">',
|
28 |
'</a>'
|
29 |
),
|
30 |
sprintf(
|
32 |
__( '%1$sHowever, we have a solution for you!%2$s You can activate %3$sthe PRO version%4$s of the plugin that allows you to convert images using a remote server. This will allow you to convert images without any problems and speed up your website now.', 'webp-converter-for-media' ),
|
33 |
'<strong>',
|
34 |
'</strong>',
|
35 |
+
'<a href="https://url.mattplugins.com/converter-error-libs-without-webp-support-upgrade" target="_blank">',
|
36 |
'</a>'
|
37 |
),
|
38 |
];
|
src/Error/Notice/PathUploadsUnavailableNotice.php
CHANGED
@@ -26,7 +26,7 @@ class PathUploadsUnavailableNotice implements ErrorNotice {
|
|
26 |
__( 'The path for /uploads files does not exist (function is_dir() returns false). Use filter %1$s to set the correct path. The current using path is: %2$s. Please read %3$sthe plugin FAQ%4$s to learn more.', 'webp-converter-for-media' ),
|
27 |
'<strong>webpc_dir_path</strong>',
|
28 |
'<strong>' . apply_filters( 'webpc_dir_path', '', 'uploads' ) . '</strong>',
|
29 |
-
'<a href="https://
|
30 |
'</a>'
|
31 |
),
|
32 |
];
|
26 |
__( 'The path for /uploads files does not exist (function is_dir() returns false). Use filter %1$s to set the correct path. The current using path is: %2$s. Please read %3$sthe plugin FAQ%4$s to learn more.', 'webp-converter-for-media' ),
|
27 |
'<strong>webpc_dir_path</strong>',
|
28 |
'<strong>' . apply_filters( 'webpc_dir_path', '', 'uploads' ) . '</strong>',
|
29 |
+
'<a href="https://url.mattplugins.com/converter-error-path-uploads-unavailable-faq" target="_blank">',
|
30 |
'</a>'
|
31 |
),
|
32 |
];
|
src/Error/Notice/PathWebpNotWritableNotice.php
CHANGED
@@ -26,7 +26,7 @@ class PathWebpNotWritableNotice implements ErrorNotice {
|
|
26 |
__( 'The path for saving converted WebP files does not exist and cannot be created (function is_writable() returns false). Use filter %1$s to set the correct path. The current using path is: %2$s. Please read %3$sthe plugin FAQ%4$s to learn more.', 'webp-converter-for-media' ),
|
27 |
'<strong>webpc_dir_path</strong>',
|
28 |
'<strong>' . apply_filters( 'webpc_dir_path', '', 'webp' ) . '</strong>',
|
29 |
-
'<a href="https://
|
30 |
'</a>'
|
31 |
),
|
32 |
];
|
26 |
__( 'The path for saving converted WebP files does not exist and cannot be created (function is_writable() returns false). Use filter %1$s to set the correct path. The current using path is: %2$s. Please read %3$sthe plugin FAQ%4$s to learn more.', 'webp-converter-for-media' ),
|
27 |
'<strong>webpc_dir_path</strong>',
|
28 |
'<strong>' . apply_filters( 'webpc_dir_path', '', 'webp' ) . '</strong>',
|
29 |
+
'<a href="https://url.mattplugins.com/converter-error-path-webp-not-writable-faq" target="_blank">',
|
30 |
'</a>'
|
31 |
),
|
32 |
];
|
src/Error/Notice/RewritesNotExecutedNotice.php
CHANGED
@@ -29,7 +29,7 @@ class RewritesNotExecutedNotice implements ErrorNotice {
|
|
29 |
$server_name ?: 'Nginx',
|
30 |
'<br><strong>',
|
31 |
get_home_url(),
|
32 |
-
'<a href="https://
|
33 |
'Configuration for Nginx',
|
34 |
'</strong>'
|
35 |
),
|
29 |
$server_name ?: 'Nginx',
|
30 |
'<br><strong>',
|
31 |
get_home_url(),
|
32 |
+
'<a href="https://url.mattplugins.com/converter-error-rewrites-not-executed-faq" target="_blank">https://wordpress.org/plugins/webp-converter-for-media/faq/</a>',
|
33 |
'Configuration for Nginx',
|
34 |
'</strong>'
|
35 |
),
|
src/Error/Notice/RewritesNotWorkingNotice.php
CHANGED
@@ -24,7 +24,7 @@ class RewritesNotWorkingNotice implements ErrorNotice {
|
|
24 |
sprintf(
|
25 |
/* translators: %1$s: open strong tag, %2$s: close strong tag */
|
26 |
__( 'Redirects on your server are not working. Check the correct configuration for you in %1$sthe plugin FAQ%2$s. If you have checked the configuration, it means that your server does not support redirects from the .htaccess file or your server configuration is not compatible with this plugin.', 'webp-converter-for-media' ),
|
27 |
-
'<a href="https://
|
28 |
'</a>'
|
29 |
),
|
30 |
__( 'In this case, please contact your server administrator.', 'webp-converter-for-media' ),
|
24 |
sprintf(
|
25 |
/* translators: %1$s: open strong tag, %2$s: close strong tag */
|
26 |
__( 'Redirects on your server are not working. Check the correct configuration for you in %1$sthe plugin FAQ%2$s. If you have checked the configuration, it means that your server does not support redirects from the .htaccess file or your server configuration is not compatible with this plugin.', 'webp-converter-for-media' ),
|
27 |
+
'<a href="https://url.mattplugins.com/converter-error-rewrites-not-working-faq" target="_blank">',
|
28 |
'</a>'
|
29 |
),
|
30 |
__( 'In this case, please contact your server administrator.', 'webp-converter-for-media' ),
|
src/Exception/FilesizeOversizeException.php
CHANGED
@@ -14,9 +14,10 @@ class FilesizeOversizeException extends ExceptionAbstract {
|
|
14 |
* {@inheritdoc}
|
15 |
*/
|
16 |
public function get_error_message( array $values ): string {
|
|
|
17 |
return sprintf(
|
18 |
self::ERROR_MESSAGE,
|
19 |
-
round( $
|
20 |
$values[1]
|
21 |
);
|
22 |
}
|
14 |
* {@inheritdoc}
|
15 |
*/
|
16 |
public function get_error_message( array $values ): string {
|
17 |
+
$number = (int) $values[0];
|
18 |
return sprintf(
|
19 |
self::ERROR_MESSAGE,
|
20 |
+
round( $number / 1024 / 1024 ),
|
21 |
$values[1]
|
22 |
);
|
23 |
}
|
src/Plugin/Links.php
CHANGED
@@ -6,7 +6,6 @@ use WebpConverter\HookableInterface;
|
|
6 |
use WebpConverter\PluginInfo;
|
7 |
use WebpConverter\Repository\TokenRepository;
|
8 |
use WebpConverter\Settings\Page\PageIntegration;
|
9 |
-
use WebpConverter\WebpConverterConstants;
|
10 |
|
11 |
/**
|
12 |
* Adds links to plugin in list of plugins in panel.
|
@@ -95,11 +94,10 @@ class Links implements HookableInterface {
|
|
95 |
return $links;
|
96 |
}
|
97 |
|
98 |
-
$
|
99 |
-
$links[] = sprintf(
|
100 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
101 |
esc_html( __( '%1$sUpgrade to PRO%2$s', 'webp-converter-for-media' ) ),
|
102 |
-
'<a href="
|
103 |
'</a>'
|
104 |
);
|
105 |
return $links;
|
6 |
use WebpConverter\PluginInfo;
|
7 |
use WebpConverter\Repository\TokenRepository;
|
8 |
use WebpConverter\Settings\Page\PageIntegration;
|
|
|
9 |
|
10 |
/**
|
11 |
* Adds links to plugin in list of plugins in panel.
|
94 |
return $links;
|
95 |
}
|
96 |
|
97 |
+
$links[] = sprintf(
|
|
|
98 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
99 |
esc_html( __( '%1$sUpgrade to PRO%2$s', 'webp-converter-for-media' ) ),
|
100 |
+
'<a href="https://url.mattplugins.com/converter-plugin-links-upgrade" target="_blank" style="font-weight: bold;">',
|
101 |
'</a>'
|
102 |
);
|
103 |
return $links;
|
src/Service/DeactivationModalGenerator.php
CHANGED
@@ -87,7 +87,7 @@ class DeactivationModalGenerator {
|
|
87 |
return sprintf(
|
88 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
89 |
__( 'Check out %1$sour instructions%2$s and see how to check if the plugin is working properly.', 'webp-converter-for-media' ),
|
90 |
-
'<a href="https://
|
91 |
'</a>'
|
92 |
);
|
93 |
},
|
87 |
return sprintf(
|
88 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
89 |
__( 'Check out %1$sour instructions%2$s and see how to check if the plugin is working properly.', 'webp-converter-for-media' ),
|
90 |
+
'<a href="https://url.mattplugins.com/converter-deactivation-misunderstanding-instruction" target="_blank">',
|
91 |
'</a>'
|
92 |
);
|
93 |
},
|
src/Service/MediaStatusViewer.php
CHANGED
@@ -57,6 +57,14 @@ class MediaStatusViewer implements HookableInterface {
|
|
57 |
* {@inheritdoc}
|
58 |
*/
|
59 |
public function init_hooks() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
$plugin_settings = $this->plugin_data->get_plugin_settings();
|
61 |
if ( ! $plugin_settings[ MediaStatsOption::OPTION_NAME ] ) {
|
62 |
return;
|
@@ -65,6 +73,7 @@ class MediaStatusViewer implements HookableInterface {
|
|
65 |
add_filter( 'manage_media_columns', [ $this, 'add_custom_table_column' ] );
|
66 |
add_action( 'manage_media_custom_column', [ $this, 'print_table_column_value' ], 10, 2 );
|
67 |
add_action( 'attachment_submitbox_misc_actions', [ $this, 'print_attachment_sidebar_value' ], 20 );
|
|
|
68 |
}
|
69 |
|
70 |
/**
|
@@ -113,11 +122,7 @@ class MediaStatusViewer implements HookableInterface {
|
|
113 |
$conversion_status[] = sprintf(
|
114 |
/* translators: %s: plugin name */
|
115 |
'<small>' . __( 'Optimized by: %s', 'webp-converter-for-media' ) . '</small>',
|
116 |
-
sprintf(
|
117 |
-
'<a href="%1$s">%2$s</a>',
|
118 |
-
esc_attr( PageIntegration::get_settings_page_url() ),
|
119 |
-
__( 'Converter for Media', 'webp-converter-for-media' )
|
120 |
-
)
|
121 |
);
|
122 |
|
123 |
?>
|
@@ -127,6 +132,37 @@ class MediaStatusViewer implements HookableInterface {
|
|
127 |
<?php
|
128 |
}
|
129 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
/**
|
131 |
* @param int $post_id .
|
132 |
*
|
@@ -178,22 +214,36 @@ class MediaStatusViewer implements HookableInterface {
|
|
178 |
/* translators: %s: file size */
|
179 |
__( 'Optimized file size: %s', 'webp-converter-for-media' ),
|
180 |
( $size_optimized )
|
181 |
-
?
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
: '<strong>-</strong>'
|
183 |
),
|
184 |
sprintf(
|
185 |
-
/* translators: %s: number of images */
|
186 |
-
__( '
|
|
|
187 |
( count( $webp_source_size ) > 0 )
|
188 |
-
?
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
: '<strong>0</strong>'
|
190 |
),
|
191 |
];
|
192 |
|
193 |
if ( ! $this->token->get_valid_status() ) {
|
194 |
$rows[] = sprintf(
|
195 |
-
/* translators: %s: number of images */
|
196 |
-
__( '
|
|
|
197 |
sprintf(
|
198 |
'<strong>%1$s</strong> <small>(<a href="%2$s">%3$s</a>)</small>',
|
199 |
count( $avif_source_size ),
|
@@ -203,10 +253,17 @@ class MediaStatusViewer implements HookableInterface {
|
|
203 |
);
|
204 |
} else {
|
205 |
$rows[] = sprintf(
|
206 |
-
/* translators: %s: number of images */
|
207 |
-
__( '
|
|
|
208 |
( count( $avif_source_size ) > 0 )
|
209 |
-
?
|
|
|
|
|
|
|
|
|
|
|
|
|
210 |
: '<strong>0</strong>'
|
211 |
);
|
212 |
}
|
57 |
* {@inheritdoc}
|
58 |
*/
|
59 |
public function init_hooks() {
|
60 |
+
add_action( 'init', [ $this, 'init_hooks_after_setup' ] );
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* @return void
|
65 |
+
* @internal
|
66 |
+
*/
|
67 |
+
public function init_hooks_after_setup() {
|
68 |
$plugin_settings = $this->plugin_data->get_plugin_settings();
|
69 |
if ( ! $plugin_settings[ MediaStatsOption::OPTION_NAME ] ) {
|
70 |
return;
|
73 |
add_filter( 'manage_media_columns', [ $this, 'add_custom_table_column' ] );
|
74 |
add_action( 'manage_media_custom_column', [ $this, 'print_table_column_value' ], 10, 2 );
|
75 |
add_action( 'attachment_submitbox_misc_actions', [ $this, 'print_attachment_sidebar_value' ], 20 );
|
76 |
+
add_filter( 'wp_prepare_attachment_for_js', [ $this, 'add_status_for_attachment_data' ], 10, 2 );
|
77 |
}
|
78 |
|
79 |
/**
|
122 |
$conversion_status[] = sprintf(
|
123 |
/* translators: %s: plugin name */
|
124 |
'<small>' . __( 'Optimized by: %s', 'webp-converter-for-media' ) . '</small>',
|
125 |
+
sprintf( '<a href="%1$s">%2$s</a>', esc_attr( PageIntegration::get_settings_page_url() ), 'Converter for Media' )
|
|
|
|
|
|
|
|
|
126 |
);
|
127 |
|
128 |
?>
|
132 |
<?php
|
133 |
}
|
134 |
|
135 |
+
/**
|
136 |
+
* @param mixed[] $response .
|
137 |
+
* @param \WP_Post $attachment .
|
138 |
+
*
|
139 |
+
* @return mixed[]
|
140 |
+
* @internal
|
141 |
+
*/
|
142 |
+
public function add_status_for_attachment_data( array $response, \WP_Post $attachment ): array {
|
143 |
+
$source_post_id = (string) ( $_REQUEST['post_id'] ?? '' ); // phpcs:ignore WordPress.Security
|
144 |
+
if ( $source_post_id !== '0' ) {
|
145 |
+
return $response;
|
146 |
+
}
|
147 |
+
|
148 |
+
$conversion_status = $this->get_conversion_status( $attachment->ID );
|
149 |
+
if ( $conversion_status === null ) {
|
150 |
+
return $response;
|
151 |
+
}
|
152 |
+
|
153 |
+
$conversion_status[] = sprintf(
|
154 |
+
/* translators: %s: plugin name */
|
155 |
+
'<small>' . __( 'Optimized by: %s', 'webp-converter-for-media' ) . '</small>',
|
156 |
+
sprintf( '<a href="%1$s">%2$s</a>', esc_attr( PageIntegration::get_settings_page_url() ), 'Converter for Media' )
|
157 |
+
);
|
158 |
+
|
159 |
+
$response['compat'] = $response['compat'] ?? [];
|
160 |
+
$response['compat']['meta'] = $response['compat']['meta'] ?? '';
|
161 |
+
|
162 |
+
$response['compat']['meta'] .= '<br>' . wp_kses_post( implode( '<br>', $conversion_status ) );
|
163 |
+
return $response;
|
164 |
+
}
|
165 |
+
|
166 |
/**
|
167 |
* @param int $post_id .
|
168 |
*
|
214 |
/* translators: %s: file size */
|
215 |
__( 'Optimized file size: %s', 'webp-converter-for-media' ),
|
216 |
( $size_optimized )
|
217 |
+
?
|
218 |
+
sprintf(
|
219 |
+
'<strong>%1$s <abbr title="%2$s">(%3$s)</abbr></strong>',
|
220 |
+
size_format( $size_optimized ),
|
221 |
+
esc_attr( __( 'File size reduction of the uploaded image compared to the original one.', 'webp-converter-for-media' ) ),
|
222 |
+
$this->get_percent_value( $size_original, $size_optimized )
|
223 |
+
)
|
224 |
: '<strong>-</strong>'
|
225 |
),
|
226 |
sprintf(
|
227 |
+
/* translators: %1$s: output format, %2$s: number of images */
|
228 |
+
__( 'Files converted to %1$s: %2$s', 'webp-converter-for-media' ),
|
229 |
+
'WebP',
|
230 |
( count( $webp_source_size ) > 0 )
|
231 |
+
?
|
232 |
+
sprintf(
|
233 |
+
'<strong>%1$s <abbr title="%2$s">(%3$s)</abbr></strong>',
|
234 |
+
count( $webp_source_size ),
|
235 |
+
esc_attr( __( 'File size reduction of all thumbnails compared to the original ones.', 'webp-converter-for-media' ) ),
|
236 |
+
$this->get_percent_value( $webp_source_size, $webp_output_size )
|
237 |
+
)
|
238 |
: '<strong>0</strong>'
|
239 |
),
|
240 |
];
|
241 |
|
242 |
if ( ! $this->token->get_valid_status() ) {
|
243 |
$rows[] = sprintf(
|
244 |
+
/* translators: %1$s: output format, %2$s: number of images */
|
245 |
+
__( 'Files converted to %1$s: %2$s', 'webp-converter-for-media' ),
|
246 |
+
'AVIF',
|
247 |
sprintf(
|
248 |
'<strong>%1$s</strong> <small>(<a href="%2$s">%3$s</a>)</small>',
|
249 |
count( $avif_source_size ),
|
253 |
);
|
254 |
} else {
|
255 |
$rows[] = sprintf(
|
256 |
+
/* translators: %1$s: output format, %2$s: number of images */
|
257 |
+
__( 'Files converted to %1$s: %2$s', 'webp-converter-for-media' ),
|
258 |
+
'AVIF',
|
259 |
( count( $avif_source_size ) > 0 )
|
260 |
+
?
|
261 |
+
sprintf(
|
262 |
+
'<strong>%1$s <abbr title="%2$s">(%3$s)</abbr></strong>',
|
263 |
+
count( $avif_source_size ),
|
264 |
+
esc_attr( __( 'File size reduction of all thumbnails compared to the original ones.', 'webp-converter-for-media' ) ),
|
265 |
+
$this->get_percent_value( $avif_source_size, $avif_output_size )
|
266 |
+
)
|
267 |
: '<strong>0</strong>'
|
268 |
);
|
269 |
}
|
src/Settings/AdminAssets.php
CHANGED
@@ -38,12 +38,12 @@ class AdminAssets implements HookableInterface {
|
|
38 |
*/
|
39 |
public function load_styles() {
|
40 |
wp_register_style(
|
41 |
-
'
|
42 |
$this->plugin_info->get_plugin_directory_url() . self::CSS_FILE_PATH,
|
43 |
[],
|
44 |
$this->plugin_info->get_plugin_version()
|
45 |
);
|
46 |
-
wp_enqueue_style( '
|
47 |
}
|
48 |
|
49 |
/**
|
@@ -54,12 +54,12 @@ class AdminAssets implements HookableInterface {
|
|
54 |
*/
|
55 |
public function load_scripts() {
|
56 |
wp_register_script(
|
57 |
-
'
|
58 |
$this->plugin_info->get_plugin_directory_url() . self::JS_FILE_PATH,
|
59 |
[],
|
60 |
$this->plugin_info->get_plugin_version(),
|
61 |
true
|
62 |
);
|
63 |
-
wp_enqueue_script( '
|
64 |
}
|
65 |
}
|
38 |
*/
|
39 |
public function load_styles() {
|
40 |
wp_register_style(
|
41 |
+
'converter-for-media',
|
42 |
$this->plugin_info->get_plugin_directory_url() . self::CSS_FILE_PATH,
|
43 |
[],
|
44 |
$this->plugin_info->get_plugin_version()
|
45 |
);
|
46 |
+
wp_enqueue_style( 'converter-for-media' );
|
47 |
}
|
48 |
|
49 |
/**
|
54 |
*/
|
55 |
public function load_scripts() {
|
56 |
wp_register_script(
|
57 |
+
'converter-for-media',
|
58 |
$this->plugin_info->get_plugin_directory_url() . self::JS_FILE_PATH,
|
59 |
[],
|
60 |
$this->plugin_info->get_plugin_version(),
|
61 |
true
|
62 |
);
|
63 |
+
wp_enqueue_script( 'converter-for-media' );
|
64 |
}
|
65 |
}
|
src/Settings/Option/AccessTokenOption.php
CHANGED
@@ -3,7 +3,6 @@
|
|
3 |
namespace WebpConverter\Settings\Option;
|
4 |
|
5 |
use WebpConverter\Repository\TokenRepository;
|
6 |
-
use WebpConverter\WebpConverterConstants;
|
7 |
|
8 |
/**
|
9 |
* {@inheritdoc}
|
@@ -57,7 +56,7 @@ class AccessTokenOption extends OptionAbstract {
|
|
57 |
return sprintf(
|
58 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
59 |
__( 'To manage your subscriptions, please visit %1$sour website%2$s.', 'webp-converter-for-media' ),
|
60 |
-
'<a href="
|
61 |
'</a>'
|
62 |
);
|
63 |
}
|
@@ -65,9 +64,9 @@ class AccessTokenOption extends OptionAbstract {
|
|
65 |
return sprintf(
|
66 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag, %3$s: open anchor tag, %4$s: close anchor tag */
|
67 |
__( 'Provide a valid token to access %1$sthe PRO functionalities%2$s. You can find out more about it %3$shere%4$s.', 'webp-converter-for-media' ),
|
68 |
-
'<a href="
|
69 |
'</a>',
|
70 |
-
'<a href="
|
71 |
'</a>'
|
72 |
);
|
73 |
}
|
3 |
namespace WebpConverter\Settings\Option;
|
4 |
|
5 |
use WebpConverter\Repository\TokenRepository;
|
|
|
6 |
|
7 |
/**
|
8 |
* {@inheritdoc}
|
56 |
return sprintf(
|
57 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
58 |
__( 'To manage your subscriptions, please visit %1$sour website%2$s.', 'webp-converter-for-media' ),
|
59 |
+
'<a href="https://url.mattplugins.com/converter-field-access-token-management" target="_blank">',
|
60 |
'</a>'
|
61 |
);
|
62 |
}
|
64 |
return sprintf(
|
65 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag, %3$s: open anchor tag, %4$s: close anchor tag */
|
66 |
__( 'Provide a valid token to access %1$sthe PRO functionalities%2$s. You can find out more about it %3$shere%4$s.', 'webp-converter-for-media' ),
|
67 |
+
'<a href="https://url.mattplugins.com/converter-field-access-token-pro-features" target="_blank">',
|
68 |
'</a>',
|
69 |
+
'<a href="https://url.mattplugins.com/converter-field-access-token-find-more" target="_blank">',
|
70 |
'</a>'
|
71 |
);
|
72 |
}
|
src/Settings/Option/ConversionMethodOption.php
CHANGED
@@ -4,7 +4,6 @@ namespace WebpConverter\Settings\Option;
|
|
4 |
|
5 |
use WebpConverter\Conversion\Method\MethodFactory;
|
6 |
use WebpConverter\Repository\TokenRepository;
|
7 |
-
use WebpConverter\WebpConverterConstants;
|
8 |
|
9 |
/**
|
10 |
* {@inheritdoc}
|
@@ -70,7 +69,7 @@ class ConversionMethodOption extends OptionAbstract {
|
|
70 |
$notice[] = sprintf(
|
71 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
72 |
__( '%1$sUpgrade to PRO%2$s', 'webp-converter-for-media' ),
|
73 |
-
'<a href="
|
74 |
' <span class="dashicons dashicons-arrow-right-alt"></span></a>'
|
75 |
);
|
76 |
}
|
4 |
|
5 |
use WebpConverter\Conversion\Method\MethodFactory;
|
6 |
use WebpConverter\Repository\TokenRepository;
|
|
|
7 |
|
8 |
/**
|
9 |
* {@inheritdoc}
|
69 |
$notice[] = sprintf(
|
70 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
71 |
__( '%1$sUpgrade to PRO%2$s', 'webp-converter-for-media' ),
|
72 |
+
'<a href="https://url.mattplugins.com/converter-field-conversion-method-info" target="_blank">',
|
73 |
' <span class="dashicons dashicons-arrow-right-alt"></span></a>'
|
74 |
);
|
75 |
}
|
src/Settings/Option/ImageResizeOption.php
CHANGED
@@ -3,7 +3,6 @@
|
|
3 |
namespace WebpConverter\Settings\Option;
|
4 |
|
5 |
use WebpConverter\Repository\TokenRepository;
|
6 |
-
use WebpConverter\WebpConverterConstants;
|
7 |
|
8 |
/**
|
9 |
* {@inheritdoc}
|
@@ -62,7 +61,7 @@ class ImageResizeOption extends OptionAbstract {
|
|
62 |
sprintf(
|
63 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
64 |
__( 'available in %1$sthe PRO version%2$s', 'webp-converter-for-media' ),
|
65 |
-
'<a href="
|
66 |
'</a>'
|
67 |
)
|
68 |
);
|
@@ -88,7 +87,7 @@ class ImageResizeOption extends OptionAbstract {
|
|
88 |
$notice[] = sprintf(
|
89 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
90 |
__( '%1$sUpgrade to PRO%2$s', 'webp-converter-for-media' ),
|
91 |
-
'<a href="
|
92 |
' <span class="dashicons dashicons-arrow-right-alt"></span></a>'
|
93 |
);
|
94 |
}
|
3 |
namespace WebpConverter\Settings\Option;
|
4 |
|
5 |
use WebpConverter\Repository\TokenRepository;
|
|
|
6 |
|
7 |
/**
|
8 |
* {@inheritdoc}
|
61 |
sprintf(
|
62 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
63 |
__( 'available in %1$sthe PRO version%2$s', 'webp-converter-for-media' ),
|
64 |
+
'<a href="https://url.mattplugins.com/converter-field-image-resize-upgrade" target="_blank">',
|
65 |
'</a>'
|
66 |
)
|
67 |
);
|
87 |
$notice[] = sprintf(
|
88 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
89 |
__( '%1$sUpgrade to PRO%2$s', 'webp-converter-for-media' ),
|
90 |
+
'<a href="https://url.mattplugins.com/converter-field-image-resize-info" target="_blank">',
|
91 |
' <span class="dashicons dashicons-arrow-right-alt"></span></a>'
|
92 |
);
|
93 |
}
|
src/Settings/Option/OutputFormatsOption.php
CHANGED
@@ -6,7 +6,6 @@ use WebpConverter\Conversion\Format\AvifFormat;
|
|
6 |
use WebpConverter\Conversion\Format\FormatFactory;
|
7 |
use WebpConverter\Conversion\Format\WebpFormat;
|
8 |
use WebpConverter\Repository\TokenRepository;
|
9 |
-
use WebpConverter\WebpConverterConstants;
|
10 |
|
11 |
/**
|
12 |
* {@inheritdoc}
|
@@ -78,7 +77,7 @@ class OutputFormatsOption extends OptionAbstract {
|
|
78 |
$notice[] = sprintf(
|
79 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
80 |
__( '%1$sUpgrade to PRO%2$s', 'webp-converter-for-media' ),
|
81 |
-
'<a href="
|
82 |
' <span class="dashicons dashicons-arrow-right-alt"></span></a>'
|
83 |
);
|
84 |
}
|
6 |
use WebpConverter\Conversion\Format\FormatFactory;
|
7 |
use WebpConverter\Conversion\Format\WebpFormat;
|
8 |
use WebpConverter\Repository\TokenRepository;
|
|
|
9 |
|
10 |
/**
|
11 |
* {@inheritdoc}
|
77 |
$notice[] = sprintf(
|
78 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
79 |
__( '%1$sUpgrade to PRO%2$s', 'webp-converter-for-media' ),
|
80 |
+
'<a href="https://url.mattplugins.com/converter-field-output-formats-info" target="_blank">',
|
81 |
' <span class="dashicons dashicons-arrow-right-alt"></span></a>'
|
82 |
);
|
83 |
}
|
src/Settings/Page/GeneralSettingsPage.php
CHANGED
@@ -14,7 +14,6 @@ use WebpConverter\Service\NonceManager;
|
|
14 |
use WebpConverter\Settings\Option\OptionAbstract;
|
15 |
use WebpConverter\Settings\PluginOptions;
|
16 |
use WebpConverter\Settings\SettingsSave;
|
17 |
-
use WebpConverter\WebpConverterConstants;
|
18 |
|
19 |
/**
|
20 |
* {@inheritdoc}
|
@@ -105,7 +104,7 @@ class GeneralSettingsPage extends PageAbstract {
|
|
105 |
? sprintf(
|
106 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
107 |
__( 'available in %1$sthe PRO version%2$s', 'webp-converter-for-media' ),
|
108 |
-
'<a href="
|
109 |
'</a>'
|
110 |
)
|
111 |
: null,
|
14 |
use WebpConverter\Settings\Option\OptionAbstract;
|
15 |
use WebpConverter\Settings\PluginOptions;
|
16 |
use WebpConverter\Settings\SettingsSave;
|
|
|
17 |
|
18 |
/**
|
19 |
* {@inheritdoc}
|
104 |
? sprintf(
|
105 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
106 |
__( 'available in %1$sthe PRO version%2$s', 'webp-converter-for-media' ),
|
107 |
+
'<a href="https://url.mattplugins.com/converter-regeneration-widget-avif-upgrade" target="_blank">',
|
108 |
'</a>'
|
109 |
)
|
110 |
: null,
|
src/WebpConverterConstants.php
CHANGED
@@ -7,13 +7,6 @@ namespace WebpConverter;
|
|
7 |
*/
|
8 |
class WebpConverterConstants {
|
9 |
|
10 |
-
/**
|
11 |
-
* URLs.
|
12 |
-
*/
|
13 |
-
const UPGRADE_PRO_PREFIX_URL = 'https://mattplugins.com/products/webp-converter-for-media-pro/?utm_source=webp-converter-for-media&utm_campaign=upgrade-to-pro&utm_medium=%s';
|
14 |
-
const OPTIMIZATION_TEST_PREFIX_URL = 'https://mattplugins.com/image-optimization-test/?utm_source=webp-converter-for-media&utm_campaign=upgrade-to-pro&utm_medium=%s';
|
15 |
-
const SUBSCRIPTION_MANAGEMENT_URL = 'https://panel.mattplugins.com';
|
16 |
-
|
17 |
/**
|
18 |
* API.
|
19 |
*/
|
7 |
*/
|
8 |
class WebpConverterConstants {
|
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
/**
|
11 |
* API.
|
12 |
*/
|
templates/components/notices/thanks.php
CHANGED
@@ -26,7 +26,7 @@
|
|
26 |
?>
|
27 |
</p>
|
28 |
<div class="webpcContent__buttons">
|
29 |
-
<a href="https://
|
30 |
target="_blank"
|
31 |
class="webpcContent__button webpcButton webpcButton--blue webpcButton--bg"
|
32 |
>
|
26 |
?>
|
27 |
</p>
|
28 |
<div class="webpcContent__buttons">
|
29 |
+
<a href="https://url.mattplugins.com/converter-notice-thanks-button-review"
|
30 |
target="_blank"
|
31 |
class="webpcContent__button webpcButton webpcButton--blue webpcButton--bg"
|
32 |
>
|
templates/components/notices/welcome.php
CHANGED
@@ -33,5 +33,6 @@
|
|
33 |
<?php echo esc_html( __( 'Speed up my website', 'webp-converter-for-media' ) ); ?>
|
34 |
</a>
|
35 |
</div>
|
|
|
36 |
</div>
|
37 |
</div>
|
33 |
<?php echo esc_html( __( 'Speed up my website', 'webp-converter-for-media' ) ); ?>
|
34 |
</a>
|
35 |
</div>
|
36 |
+
<img src="https://mattplugins.com/images/matt-plugins-logo.png" alt="">
|
37 |
</div>
|
38 |
</div>
|
templates/components/server/filters.php
CHANGED
@@ -47,6 +47,12 @@ use WebpConverter\Service\PathsGenerator;
|
|
47 |
<?php echo esc_html( apply_filters( 'webpc_dir_path', '', 'webp' ) ); ?>
|
48 |
</td>
|
49 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
<tr>
|
51 |
<td class="e">webpc_htaccess_rewrite_root</td>
|
52 |
<td class="v">
|
47 |
<?php echo esc_html( apply_filters( 'webpc_dir_path', '', 'webp' ) ); ?>
|
48 |
</td>
|
49 |
</tr>
|
50 |
+
<tr>
|
51 |
+
<td class="e">webpc_source_directories</td>
|
52 |
+
<td class="v">
|
53 |
+
<?php echo esc_html( json_encode( apply_filters( 'webpc_source_directories', [] ) ) ?: '-' ); ?>
|
54 |
+
</td>
|
55 |
+
</tr>
|
56 |
<tr>
|
57 |
<td class="e">webpc_htaccess_rewrite_root</td>
|
58 |
<td class="v">
|
templates/components/widgets/about.php
CHANGED
@@ -26,7 +26,7 @@
|
|
26 |
?>
|
27 |
</p>
|
28 |
<p class="center">
|
29 |
-
<a href="https://
|
30 |
target="_blank"
|
31 |
class="webpcButton webpcButton--blue"
|
32 |
>
|
26 |
?>
|
27 |
</p>
|
28 |
<p class="center">
|
29 |
+
<a href="https://url.mattplugins.com/converter-widget-about-button-instruction"
|
30 |
target="_blank"
|
31 |
class="webpcButton webpcButton--blue"
|
32 |
>
|
templates/components/widgets/regenerate.php
CHANGED
@@ -162,7 +162,7 @@
|
|
162 |
sprintf(
|
163 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
164 |
__( 'Do you want to know how a plugin works and how to check if it is working properly? Read %1$sour manual%2$s.', 'webp-converter-for-media' ),
|
165 |
-
'<a href="https://
|
166 |
'</a>'
|
167 |
)
|
168 |
);
|
162 |
sprintf(
|
163 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag */
|
164 |
__( 'Do you want to know how a plugin works and how to check if it is working properly? Read %1$sour manual%2$s.', 'webp-converter-for-media' ),
|
165 |
+
'<a href="https://url.mattplugins.com/converter-regeneration-success-message-instruction" target="_blank">',
|
166 |
'</a>'
|
167 |
)
|
168 |
);
|
templates/components/widgets/server.php
CHANGED
@@ -23,11 +23,11 @@
|
|
23 |
sprintf(
|
24 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag, %3$s: open anchor tag, %4$s: close anchor tag */
|
25 |
__( 'Please %1$scheck our FAQ%2$s before adding a thread with technical problem. If you do not find help there, %3$scheck support forum%4$s for similar problems. If you do not find a solution, please %5$scontact us%6$s.', 'webp-converter-for-media' ),
|
26 |
-
'<a href="https://
|
27 |
'</a>',
|
28 |
-
'<a href="https://
|
29 |
'</a>',
|
30 |
-
'<a href="https://
|
31 |
'</a>'
|
32 |
)
|
33 |
);
|
23 |
sprintf(
|
24 |
/* translators: %1$s: open anchor tag, %2$s: close anchor tag, %3$s: open anchor tag, %4$s: close anchor tag */
|
25 |
__( 'Please %1$scheck our FAQ%2$s before adding a thread with technical problem. If you do not find help there, %3$scheck support forum%4$s for similar problems. If you do not find a solution, please %5$scontact us%6$s.', 'webp-converter-for-media' ),
|
26 |
+
'<a href="https://url.mattplugins.com/converter-tab-server-message-faq" target="_blank">',
|
27 |
'</a>',
|
28 |
+
'<a href="https://url.mattplugins.com/converter-tab-server-message-support" target="_blank">',
|
29 |
'</a>',
|
30 |
+
'<a href="https://url.mattplugins.com/converter-tab-server-message-contact" target="_blank">',
|
31 |
'</a>'
|
32 |
)
|
33 |
);
|
templates/views/settings-debug.php
CHANGED
@@ -50,8 +50,8 @@
|
|
50 |
/* translators: %1$s: br tag, %2$s: icon heart */
|
51 |
__( 'Created with %1$s by %2$s - if you like our plugin, please %3$srate one%4$s%5$s', 'webp-converter-for-media' ),
|
52 |
'<span class="webpcPage__footerIcon webpcPage__footerIcon--heart"></span>',
|
53 |
-
'<a href="https://mattplugins.com
|
54 |
-
'<a href="https://
|
55 |
' <span class="webpcPage__footerIcon webpcPage__footerIcon--stars"></span>',
|
56 |
'</a>'
|
57 |
)
|
50 |
/* translators: %1$s: br tag, %2$s: icon heart */
|
51 |
__( 'Created with %1$s by %2$s - if you like our plugin, please %3$srate one%4$s%5$s', 'webp-converter-for-media' ),
|
52 |
'<span class="webpcPage__footerIcon webpcPage__footerIcon--heart"></span>',
|
53 |
+
'<a href="https://url.mattplugins.com/converter-settings-footer-author-website" target="_blank">matt plugins</a>',
|
54 |
+
'<a href="https://url.mattplugins.com/converter-settings-footer-plugin-review" target="_blank">',
|
55 |
' <span class="webpcPage__footerIcon webpcPage__footerIcon--stars"></span>',
|
56 |
'</a>'
|
57 |
)
|
templates/views/settings.php
CHANGED
@@ -70,8 +70,8 @@
|
|
70 |
/* translators: %1$s: br tag, %2$s: icon heart */
|
71 |
__( 'Created with %1$s by %2$s - if you like our plugin, please %3$srate one%4$s%5$s', 'webp-converter-for-media' ),
|
72 |
'<span class="webpcPage__footerIcon webpcPage__footerIcon--heart"></span>',
|
73 |
-
'<a href="https://mattplugins.com
|
74 |
-
'<a href="https://
|
75 |
' <span class="webpcPage__footerIcon webpcPage__footerIcon--stars"></span>',
|
76 |
'</a>'
|
77 |
)
|
70 |
/* translators: %1$s: br tag, %2$s: icon heart */
|
71 |
__( 'Created with %1$s by %2$s - if you like our plugin, please %3$srate one%4$s%5$s', 'webp-converter-for-media' ),
|
72 |
'<span class="webpcPage__footerIcon webpcPage__footerIcon--heart"></span>',
|
73 |
+
'<a href="https://url.mattplugins.com/converter-settings-footer-author-website" target="_blank">matt plugins</a>',
|
74 |
+
'<a href="https://url.mattplugins.com/converter-settings-footer-plugin-review" target="_blank">',
|
75 |
' <span class="webpcPage__footerIcon webpcPage__footerIcon--stars"></span>',
|
76 |
'</a>'
|
77 |
)
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInitc4d2fe736f48792b51897a53ab3e4b54::getLoader();
|
vendor/composer/autoload_classmap.php
CHANGED
@@ -34,10 +34,7 @@ return array(
|
|
34 |
'WebpConverter\\Conversion\\Directory\\DirectoryFactory' => $baseDir . '/src/Conversion/Directory/DirectoryFactory.php',
|
35 |
'WebpConverter\\Conversion\\Directory\\DirectoryIntegration' => $baseDir . '/src/Conversion/Directory/DirectoryIntegration.php',
|
36 |
'WebpConverter\\Conversion\\Directory\\DirectoryInterface' => $baseDir . '/src/Conversion/Directory/DirectoryInterface.php',
|
37 |
-
'WebpConverter\\Conversion\\Directory\\
|
38 |
-
'WebpConverter\\Conversion\\Directory\\PluginsDirectory' => $baseDir . '/src/Conversion/Directory/PluginsDirectory.php',
|
39 |
-
'WebpConverter\\Conversion\\Directory\\ThemesDirectory' => $baseDir . '/src/Conversion/Directory/ThemesDirectory.php',
|
40 |
-
'WebpConverter\\Conversion\\Directory\\UploadsDirectory' => $baseDir . '/src/Conversion/Directory/UploadsDirectory.php',
|
41 |
'WebpConverter\\Conversion\\Directory\\UploadsWebpcDirectory' => $baseDir . '/src/Conversion/Directory/UploadsWebpcDirectory.php',
|
42 |
'WebpConverter\\Conversion\\Endpoint\\CronConversionEndpoint' => $baseDir . '/src/Conversion/Endpoint/CronConversionEndpoint.php',
|
43 |
'WebpConverter\\Conversion\\Endpoint\\EndpointAbstract' => $baseDir . '/src/Conversion/Endpoint/EndpointAbstract.php',
|
34 |
'WebpConverter\\Conversion\\Directory\\DirectoryFactory' => $baseDir . '/src/Conversion/Directory/DirectoryFactory.php',
|
35 |
'WebpConverter\\Conversion\\Directory\\DirectoryIntegration' => $baseDir . '/src/Conversion/Directory/DirectoryIntegration.php',
|
36 |
'WebpConverter\\Conversion\\Directory\\DirectoryInterface' => $baseDir . '/src/Conversion/Directory/DirectoryInterface.php',
|
37 |
+
'WebpConverter\\Conversion\\Directory\\SourceDirectory' => $baseDir . '/src/Conversion/Directory/SourceDirectory.php',
|
|
|
|
|
|
|
38 |
'WebpConverter\\Conversion\\Directory\\UploadsWebpcDirectory' => $baseDir . '/src/Conversion/Directory/UploadsWebpcDirectory.php',
|
39 |
'WebpConverter\\Conversion\\Endpoint\\CronConversionEndpoint' => $baseDir . '/src/Conversion/Endpoint/CronConversionEndpoint.php',
|
40 |
'WebpConverter\\Conversion\\Endpoint\\EndpointAbstract' => $baseDir . '/src/Conversion/Endpoint/EndpointAbstract.php',
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -22,15 +22,15 @@ class ComposerAutoloaderInit5dda79ecb8a6ed3558675f4c77c86e5a
|
|
22 |
return self::$loader;
|
23 |
}
|
24 |
|
25 |
-
spl_autoload_register(array('
|
26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
|
27 |
-
spl_autoload_unregister(array('
|
28 |
|
29 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
30 |
if ($useStaticLoader) {
|
31 |
require __DIR__ . '/autoload_static.php';
|
32 |
|
33 |
-
call_user_func(\Composer\Autoload\
|
34 |
} else {
|
35 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
36 |
foreach ($map as $namespace => $path) {
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInitc4d2fe736f48792b51897a53ab3e4b54
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
22 |
return self::$loader;
|
23 |
}
|
24 |
|
25 |
+
spl_autoload_register(array('ComposerAutoloaderInitc4d2fe736f48792b51897a53ab3e4b54', 'loadClassLoader'), true, true);
|
26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
|
27 |
+
spl_autoload_unregister(array('ComposerAutoloaderInitc4d2fe736f48792b51897a53ab3e4b54', 'loadClassLoader'));
|
28 |
|
29 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
30 |
if ($useStaticLoader) {
|
31 |
require __DIR__ . '/autoload_static.php';
|
32 |
|
33 |
+
call_user_func(\Composer\Autoload\ComposerStaticInitc4d2fe736f48792b51897a53ab3e4b54::getInitializer($loader));
|
34 |
} else {
|
35 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
36 |
foreach ($map as $namespace => $path) {
|
vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'W' =>
|
@@ -49,10 +49,7 @@ class ComposerStaticInit5dda79ecb8a6ed3558675f4c77c86e5a
|
|
49 |
'WebpConverter\\Conversion\\Directory\\DirectoryFactory' => __DIR__ . '/../..' . '/src/Conversion/Directory/DirectoryFactory.php',
|
50 |
'WebpConverter\\Conversion\\Directory\\DirectoryIntegration' => __DIR__ . '/../..' . '/src/Conversion/Directory/DirectoryIntegration.php',
|
51 |
'WebpConverter\\Conversion\\Directory\\DirectoryInterface' => __DIR__ . '/../..' . '/src/Conversion/Directory/DirectoryInterface.php',
|
52 |
-
'WebpConverter\\Conversion\\Directory\\
|
53 |
-
'WebpConverter\\Conversion\\Directory\\PluginsDirectory' => __DIR__ . '/../..' . '/src/Conversion/Directory/PluginsDirectory.php',
|
54 |
-
'WebpConverter\\Conversion\\Directory\\ThemesDirectory' => __DIR__ . '/../..' . '/src/Conversion/Directory/ThemesDirectory.php',
|
55 |
-
'WebpConverter\\Conversion\\Directory\\UploadsDirectory' => __DIR__ . '/../..' . '/src/Conversion/Directory/UploadsDirectory.php',
|
56 |
'WebpConverter\\Conversion\\Directory\\UploadsWebpcDirectory' => __DIR__ . '/../..' . '/src/Conversion/Directory/UploadsWebpcDirectory.php',
|
57 |
'WebpConverter\\Conversion\\Endpoint\\CronConversionEndpoint' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/CronConversionEndpoint.php',
|
58 |
'WebpConverter\\Conversion\\Endpoint\\EndpointAbstract' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/EndpointAbstract.php',
|
@@ -205,9 +202,9 @@ class ComposerStaticInit5dda79ecb8a6ed3558675f4c77c86e5a
|
|
205 |
public static function getInitializer(ClassLoader $loader)
|
206 |
{
|
207 |
return \Closure::bind(function () use ($loader) {
|
208 |
-
$loader->prefixLengthsPsr4 =
|
209 |
-
$loader->prefixDirsPsr4 =
|
210 |
-
$loader->classMap =
|
211 |
|
212 |
}, null, ClassLoader::class);
|
213 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInitc4d2fe736f48792b51897a53ab3e4b54
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'W' =>
|
49 |
'WebpConverter\\Conversion\\Directory\\DirectoryFactory' => __DIR__ . '/../..' . '/src/Conversion/Directory/DirectoryFactory.php',
|
50 |
'WebpConverter\\Conversion\\Directory\\DirectoryIntegration' => __DIR__ . '/../..' . '/src/Conversion/Directory/DirectoryIntegration.php',
|
51 |
'WebpConverter\\Conversion\\Directory\\DirectoryInterface' => __DIR__ . '/../..' . '/src/Conversion/Directory/DirectoryInterface.php',
|
52 |
+
'WebpConverter\\Conversion\\Directory\\SourceDirectory' => __DIR__ . '/../..' . '/src/Conversion/Directory/SourceDirectory.php',
|
|
|
|
|
|
|
53 |
'WebpConverter\\Conversion\\Directory\\UploadsWebpcDirectory' => __DIR__ . '/../..' . '/src/Conversion/Directory/UploadsWebpcDirectory.php',
|
54 |
'WebpConverter\\Conversion\\Endpoint\\CronConversionEndpoint' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/CronConversionEndpoint.php',
|
55 |
'WebpConverter\\Conversion\\Endpoint\\EndpointAbstract' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/EndpointAbstract.php',
|
202 |
public static function getInitializer(ClassLoader $loader)
|
203 |
{
|
204 |
return \Closure::bind(function () use ($loader) {
|
205 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInitc4d2fe736f48792b51897a53ab3e4b54::$prefixLengthsPsr4;
|
206 |
+
$loader->prefixDirsPsr4 = ComposerStaticInitc4d2fe736f48792b51897a53ab3e4b54::$prefixDirsPsr4;
|
207 |
+
$loader->classMap = ComposerStaticInitc4d2fe736f48792b51897a53ab3e4b54::$classMap;
|
208 |
|
209 |
}, null, ClassLoader::class);
|
210 |
}
|
vendor/composer/installed.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
'type' => 'library',
|
6 |
'install_path' => __DIR__ . '/../../',
|
7 |
'aliases' => array(),
|
8 |
-
'reference' => '
|
9 |
'name' => 'gbiorczyk/webp-converter-for-media',
|
10 |
'dev' => false,
|
11 |
),
|
@@ -16,7 +16,7 @@
|
|
16 |
'type' => 'library',
|
17 |
'install_path' => __DIR__ . '/../../',
|
18 |
'aliases' => array(),
|
19 |
-
'reference' => '
|
20 |
'dev_requirement' => false,
|
21 |
),
|
22 |
'matt-plugins/deactivation-modal' => array(
|
5 |
'type' => 'library',
|
6 |
'install_path' => __DIR__ . '/../../',
|
7 |
'aliases' => array(),
|
8 |
+
'reference' => 'fc6307c9f6ece052e10d901f79cc2718aed76993',
|
9 |
'name' => 'gbiorczyk/webp-converter-for-media',
|
10 |
'dev' => false,
|
11 |
),
|
16 |
'type' => 'library',
|
17 |
'install_path' => __DIR__ . '/../../',
|
18 |
'aliases' => array(),
|
19 |
+
'reference' => 'fc6307c9f6ece052e10d901f79cc2718aed76993',
|
20 |
'dev_requirement' => false,
|
21 |
),
|
22 |
'matt-plugins/deactivation-modal' => array(
|
webp-converter-for-media.php
CHANGED
@@ -3,9 +3,9 @@
|
|
3 |
/**
|
4 |
* Plugin Name: Converter for Media
|
5 |
* Description: Speed up your website by using our WebP & AVIF Converter (formerly WebP Converter for Media). Serve WebP and AVIF images instead of standard formats JPEG, PNG and GIF just now!
|
6 |
-
* Version: 5.
|
7 |
* Author: Mateusz Gbiorczyk - Optimize Images by convert AVIF & WebP
|
8 |
-
* Author URI: https://mattplugins.com/
|
9 |
* Text Domain: webp-converter-for-media
|
10 |
* Network: true
|
11 |
*/
|
@@ -13,5 +13,5 @@
|
|
13 |
require_once __DIR__ . '/vendor/autoload.php';
|
14 |
|
15 |
new WebpConverter\WebpConverter(
|
16 |
-
new WebpConverter\PluginInfo( __FILE__, '5.
|
17 |
);
|
3 |
/**
|
4 |
* Plugin Name: Converter for Media
|
5 |
* Description: Speed up your website by using our WebP & AVIF Converter (formerly WebP Converter for Media). Serve WebP and AVIF images instead of standard formats JPEG, PNG and GIF just now!
|
6 |
+
* Version: 5.2.0
|
7 |
* Author: Mateusz Gbiorczyk - Optimize Images by convert AVIF & WebP
|
8 |
+
* Author URI: https://url.mattplugins.com/converter-plugin-author-link
|
9 |
* Text Domain: webp-converter-for-media
|
10 |
* Network: true
|
11 |
*/
|
13 |
require_once __DIR__ . '/vendor/autoload.php';
|
14 |
|
15 |
new WebpConverter\WebpConverter(
|
16 |
+
new WebpConverter\PluginInfo( __FILE__, '5.2.0' )
|
17 |
);
|