diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/cloudinary.php b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/cloudinary.php index 7dd2f1d18..75a0bb3a3 100644 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/cloudinary.php +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/cloudinary.php @@ -3,7 +3,7 @@ * Plugin Name: Cloudinary * Plugin URI: https://cloudinary.com/documentation/wordpress_integration * Description: With the Cloudinary plugin, you can upload and manage your media assets in the cloud, then deliver them to your users through a fast content delivery network, improving your website’s loading speed and overall user experience. Apply multiple transformations and take advantage of a full digital asset management solution without leaving WordPress. - * Version: 2.1.4 + * Version: 2.1.9 * Author: Cloudinary Ltd., XWP * Author URI: https://cloudinary.com/ * License: GPLv2+ diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/cloudinary.css b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/cloudinary.css index 52fc32452..5c14e6684 100644 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/cloudinary.css +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/cloudinary.css @@ -1 +1 @@ -@font-face{font-family:cloudinary;src:url(../css/fonts/cloudinary.eot);src:url(../css/fonts/cloudinary.eot#iefix) format("embedded-opentype"),url(../css/fonts/cloudinary.ttf) format("truetype"),url(../css/fonts/cloudinary.woff) format("woff"),url(../css/cloudinary.svg#cloudinary) format("svg");font-weight:400;font-style:normal}.dashicons-cloudinary{speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dashicons-cloudinary:before{font-family:cloudinary!important;content:"\e900"}.dashicons-cloudinary.success{color:#558b2f}.dashicons-cloudinary.error{color:#dd2c00}.dashicons-cloudinary.error:before{content:"\e901"}.dashicons-cloudinary.warning{color:#fd9d2c}.dashicons-cloudinary.warning:before{content:"\e902"}.dashicons-cloudinary.info{color:#0071ba}.dashicons-cloudinary.downloading:before{content:"\e903"}.dashicons-cloudinary.syncing:before{content:"\e904"}.column-cld_status{width:5.5em}.column-cld_status .dashicons-cloudinary{display:inline-block}.column-cld_status .dashicons-cloudinary:before{font-size:1.8rem}.form-field .error-notice,.form-table .error-notice{display:none;color:#dd2c00}.form-field input.cld-field:invalid,.form-table input.cld-field:invalid{border-color:#dd2c00}.form-field input.cld-field:invalid+.error-notice,.form-table input.cld-field:invalid+.error-notice{display:inline-block}.cloudinary-welcome{background-image:url(../css/logo.svg);background-repeat:no-repeat;background-size:153px;background-position:top 12px right 20px}.cloudinary-stats{display:inline-block;margin-left:25px}.cloudinary-stat{cursor:help}.cloudinary-percent{font-size:.8em;vertical-align:top;color:#0071ba}.settings-image{max-width:100%;padding-top:5px}.settings-tabs>li{display:inline-block}.settings-tabs>li a{padding:.6em}.settings-tabs>li a.active{background-color:#fff}.settings-tab-section{padding:20px 0 0;max-width:1030px;position:relative}.settings-tab-section.cloudinary-welcome .settings-tab-section-fields-dashboard{display:flex;align-items:flex-start;align-content:flex-start;margin-top:40px}.settings-tab-section.cloudinary-welcome .settings-tab-section-fields-dashboard-description{width:55%;margin:0 auto 0 0}.settings-tab-section.cloudinary-welcome .settings-tab-section-fields-dashboard-content{width:35%;margin:0 auto}.settings-tab-section.cloudinary-welcome .settings-tab-section-fields-dashboard-content .dashicons{color:#9ea3a8}.settings-tab-section.cloudinary-welcome .settings-tab-section-card{margin-top:0}.settings-tab-section-fields .field-heading th{display:block;width:auto;color:#23282d;font-size:1.1em;margin:1em 0}.settings-tab-section-fields .field-heading td{display:none;visibility:hidden}.settings-tab-section-fields .regular-textarea{width:100%;height:60px}.settings-tab-section-fields .dashicons{text-decoration:none;vertical-align:middle}.settings-tab-section-fields a .dashicons{color:#5f5f5f}.settings-tab-section-fields-dashboard-error{font-size:1.2em;color:#5f5f5f}.settings-tab-section-fields-dashboard-error .dashicons{color:#ac0000}.settings-tab-section-fields-dashboard-error .button{font-size:1.1em;height:40px;line-height:40px;padding-right:40px;padding-left:40px}.settings-tab-section-fields-dashboard-success{font-size:1.2em;color:#23282d}.settings-tab-section-fields-dashboard-success.expanded{padding-top:40px}.settings-tab-section-fields-dashboard-success .dashicons{color:#4fb651}.settings-tab-section-fields-dashboard-success .button{font-size:1.1em;height:40px;line-height:40px;padding-right:40px;padding-left:40px}.settings-tab-section-fields-dashboard-success .description{color:#5f5f5f;font-weight:400;margin-top:12px}.settings-tab-section-card{box-sizing:border-box;border:1px solid #e5e5e5;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.07);padding:20px 23px;margin-top:12px}.settings-tab-section-card .dashicons{font-size:1.4em}.settings-tab-section-card h2{font-size:1.8em;font-weight:400;margin-top:0}.settings-tab-section-card.pull-right{width:450px;padding:12px;float:right;position:relative;z-index:10}.settings-tab-section-card.pull-right img.settings-image{box-shadow:0 2px 4px 0 rgba(0,0,0,.5);border:1px solid #979797;margin-top:12px}.settings-tab-section-card.pull-right h3,.settings-tab-section-card.pull-right h4{margin-top:0}.settings-tab-section .field-row-cloudinary_url,.settings-tab-section .field-row-signup{display:block}.settings-tab-section .field-row-cloudinary_url td,.settings-tab-section .field-row-cloudinary_url th,.settings-tab-section .field-row-signup td,.settings-tab-section .field-row-signup th{display:block;width:auto;padding:10px 0 0}.settings-tab-section .field-row-cloudinary_url td .sign-up,.settings-tab-section .field-row-cloudinary_url th .sign-up,.settings-tab-section .field-row-signup td .sign-up,.settings-tab-section .field-row-signup th .sign-up{vertical-align:baseline}.settings-tab-section.connect .form-table{display:inline-block;width:auto;max-width:580px}.settings-valid{color:#558b2f;font-size:30px}.settings-valid-field{border-color:#558b2f!important}.settings-invalid-field{border-color:#dd2c00!important}.settings-warning{display:inline-block;padding:5px 7px;background-color:#e9faff;border:1px solid #ccd0d4;border-left:4px solid #00a0d2;box-shadow:0 1px 1px rgba(0,0,0,.04)}.sync .spinner{display:inline-block;visibility:visible;float:none;margin:0 5px 0 0}.sync-media,.sync-media-progress{display:none}.sync-media-progress-outer{height:20px;margin:20px 0 10px;width:500px;background-color:#e5e5e5;position:relative}.sync-media-progress-outer .progress-bar{width:0;height:20px;background-color:#558b2f;transition:width .25s}.sync-media-progress-notice{color:#dd2c00}.sync-media-resource{width:100px;display:inline-block}.sync-media-error{color:#dd2c00}.sync-count{font-weight:700}.sync-details{margin-top:10px}.sync .button.start-sync,.sync .button.stop-sync{display:none;padding:0 16px}.sync .button.start-sync .dashicons,.sync .button.stop-sync .dashicons{line-height:2.2em}.sync .progress-text{padding:12px 4px 12px 12px;display:inline-block;font-weight:700}.sync .completed{max-width:300px;display:none}.sync-status-disabled{color:#dd2c00}.sync-status-enabled{color:#558b2f}.sync-status-button.button{vertical-align:baseline}.cloudinary-widget{height:100%}.cloudinary-widget-wrapper{height:100%;overflow:hidden;background-image:url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ic3Bpbm5lciIgdmlld0JveD0iLTQgLTQgMTUxIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48c3R5bGU+QGtleWZyYW1lcyBjb2xvcnN7MCUsdG97c3Ryb2tlOiMwMDc4ZmZ9NTAle3N0cm9rZTojMGUyZjVhfX1Aa2V5ZnJhbWVzIGRhc2h7MCUsdG97c3Ryb2tlLWRhc2hvZmZzZXQ6NTYwfTUwJXtzdHJva2UtZGFzaG9mZnNldDowfX1ALXdlYmtpdC1rZXlmcmFtZXMgY29sb3JzezAlLHRve3N0cm9rZTojMDA3OGZmfTUwJXtzdHJva2U6IzBlMmY1YX19QC13ZWJraXQta2V5ZnJhbWVzIGRhc2h7MCUsdG97c3Ryb2tlLWRhc2hvZmZzZXQ6NTYwfTUwJXtzdHJva2UtZGFzaG9mZnNldDowfX08L3N0eWxlPjxwYXRoIGQ9Ik0xMjEuNjYzIDkwLjYzOGMtMS43OTYgMC05OS4zMy0uNDk4LTEwMS40NzQtMS40NzhDOC42ODUgODMuODc3IDEuMjUgNzIuMTk2IDEuMjUgNTkuMzk2YzAtMTYuNjU2IDEyLjc5Ny0zMC42MSAyOS4wNTItMzIuMzIzIDcuNDktMTUuNzA2IDIzLjE4Ni0yNS43MDcgNDAuNzE0LTI1LjcwNyAyMC45OCAwIDM5LjIxNSAxNC43NTIgNDMuOTQ1IDM0LjkwNyAxNS4wOS4yNDUgMjcuMjkgMTIuNjMgMjcuMjkgMjcuODIyIDAgMTEuOTY4LTcuNzM4IDIyLjU1LTE5LjI1NiAyNi4zMyIgc3Ryb2tlLXdpZHRoPSI5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3R5bGU9InRyYW5zZm9ybS1vcmlnaW46Y2VudGVyOy13ZWJraXQtYW5pbWF0aW9uOmRhc2ggMnMgZWFzZS1pbi1vdXQgaW5maW5pdGUsY29sb3JzIDhzIGVhc2UtaW4tb3V0IGluZmluaXRlO2FuaW1hdGlvbjpkYXNoIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlLGNvbG9ycyA4cyBlYXNlLWluLW91dCBpbmZpbml0ZSIgc3Ryb2tlLWRhc2hhcnJheT0iMjgwIi8+PC9zdmc+");background-repeat:no-repeat;background-position:50%;background-size:150px}.attachment-actions .button.edit-attachment,.attachment-info .edit-attachment{display:none}.global-transformations-preview{position:relative;max-width:600px}.global-transformations-spinner{display:none}.global-transformations-button.button-primary{display:none;position:absolute;z-index:100}.global-transformations-url{margin-bottom:5px;margin-top:5px}.global-transformations-url-transformation{max-width:100px;overflow:hidden;text-overflow:ellipsis;color:#51a3ff}.global-transformations-url-file{color:#f2d864}.global-transformations-url-link{display:block;padding:16px;background-color:#262c35;text-decoration:none;color:#fff;border-radius:6px;overflow:hidden;text-overflow:ellipsis}.global-transformations-url-link:hover{color:#888;text-decoration:underline}.cld-tax-order-list-item{border:1px solid #efefef;padding:4px;margin:0 0 -1px;background-color:#fff}.cld-tax-order-list-item.no-items{color:#888;text-align:center;display:none}.cld-tax-order-list-item.no-items:last-child{display:block}.cld-tax-order-list-item.ui-sortable-helper{box-shadow:0 2px 5px rgba(0,0,0,.2)}.cld-tax-order-list-item-placeholder{background-color:#efefef;height:45px;margin:0}.cld-tax-order-list-item-handle{cursor:grab;margin-right:4px;color:#999}.cld-tax-order-list-type{width:45%;display:inline-block;margin-right:8px}.cld-tax-order-list-type input{margin-right:4px!important}.cloudinary-media-library{position:relative;margin-left:-20px}@media screen and (max-width:782px){.cloudinary-media-library{margin-left:-10px}} \ No newline at end of file +@font-face{font-family:cloudinary;src:url(../css/fonts/cloudinary.7b8dc57b5dd3c69880043780bb9bb133.eot);src:url(../css/fonts/cloudinary.7b8dc57b5dd3c69880043780bb9bb133.eot#iefix) format("embedded-opentype"),url(../css/fonts/cloudinary.0bf34bba6c50ef8a00885c94fc39bb81.ttf) format("truetype"),url(../css/fonts/cloudinary.130b5d626b226659422cfb0e20ce30c1.woff) format("woff"),url(../css/cloudinary.svg#cloudinary) format("svg");font-weight:400;font-style:normal}.dashicons-cloudinary{speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dashicons-cloudinary:before{font-family:cloudinary!important;content:"\e900"}.dashicons-cloudinary.success{color:#558b2f}.dashicons-cloudinary.error{color:#dd2c00}.dashicons-cloudinary.error:before{content:"\e901"}.dashicons-cloudinary.warning{color:#fd9d2c}.dashicons-cloudinary.warning:before{content:"\e902"}.dashicons-cloudinary.info{color:#0071ba}.dashicons-cloudinary.downloading:before{content:"\e903"}.dashicons-cloudinary.syncing:before{content:"\e904"}.column-cld_status{width:5.5em}.column-cld_status .dashicons-cloudinary{display:inline-block}.column-cld_status .dashicons-cloudinary:before{font-size:1.8rem}.form-field .error-notice,.form-table .error-notice{display:none;color:#dd2c00}.form-field input.cld-field:invalid,.form-table input.cld-field:invalid{border-color:#dd2c00}.form-field input.cld-field:invalid+.error-notice,.form-table input.cld-field:invalid+.error-notice{display:inline-block}.cloudinary-welcome{background-image:url(../css/logo.svg);background-repeat:no-repeat;background-size:153px;background-position:top 12px right 20px}.cloudinary-stats{display:inline-block;margin-left:25px}.cloudinary-stat{cursor:help}.cloudinary-percent{font-size:.8em;vertical-align:top;color:#0071ba}.settings-image{max-width:100%;padding-top:5px}.settings-tabs>li{display:inline-block}.settings-tabs>li a{padding:.6em}.settings-tabs>li a.active{background-color:#fff}.settings-tab-section{padding:20px 0 0;max-width:1030px;position:relative}.settings-tab-section.cloudinary-welcome .settings-tab-section-fields-dashboard{display:flex;align-items:flex-start;align-content:flex-start;margin-top:40px}.settings-tab-section.cloudinary-welcome .settings-tab-section-fields-dashboard-description{width:55%;margin:0 auto 0 0}.settings-tab-section.cloudinary-welcome .settings-tab-section-fields-dashboard-content{width:35%;margin:0 auto}.settings-tab-section.cloudinary-welcome .settings-tab-section-fields-dashboard-content .dashicons{color:#9ea3a8}.settings-tab-section.cloudinary-welcome .settings-tab-section-card{margin-top:0}.settings-tab-section-fields .field-heading th{display:block;width:auto;color:#23282d;font-size:1.1em;margin:1em 0}.settings-tab-section-fields .field-heading td{display:none;visibility:hidden}.settings-tab-section-fields .regular-textarea{width:100%;height:60px}.settings-tab-section-fields .dashicons{text-decoration:none;vertical-align:middle}.settings-tab-section-fields a .dashicons{color:#5f5f5f}.settings-tab-section-fields-dashboard-error{font-size:1.2em;color:#5f5f5f}.settings-tab-section-fields-dashboard-error .dashicons{color:#ac0000}.settings-tab-section-fields-dashboard-error .button{font-size:1.1em;height:40px;line-height:40px;padding-right:40px;padding-left:40px}.settings-tab-section-fields-dashboard-success{font-size:1.2em;color:#23282d}.settings-tab-section-fields-dashboard-success.expanded{padding-top:40px}.settings-tab-section-fields-dashboard-success .dashicons{color:#4fb651}.settings-tab-section-fields-dashboard-success .button{font-size:1.1em;height:40px;line-height:40px;padding-right:40px;padding-left:40px}.settings-tab-section-fields-dashboard-success .description{color:#5f5f5f;font-weight:400;margin-top:12px}.settings-tab-section-card{box-sizing:border-box;border:1px solid #e5e5e5;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.07);padding:20px 23px;margin-top:12px}.settings-tab-section-card .dashicons{font-size:1.4em}.settings-tab-section-card h2{font-size:1.8em;font-weight:400;margin-top:0}.settings-tab-section-card.pull-right{width:450px;padding:12px;float:right;position:relative;z-index:10}.settings-tab-section-card.pull-right img.settings-image{box-shadow:0 2px 4px 0 rgba(0,0,0,.5);border:1px solid #979797;margin-top:12px}.settings-tab-section-card.pull-right h3,.settings-tab-section-card.pull-right h4{margin-top:0}.settings-tab-section .field-row-cloudinary_url,.settings-tab-section .field-row-signup{display:block}.settings-tab-section .field-row-cloudinary_url td,.settings-tab-section .field-row-cloudinary_url th,.settings-tab-section .field-row-signup td,.settings-tab-section .field-row-signup th{display:block;width:auto;padding:10px 0 0}.settings-tab-section .field-row-cloudinary_url td .sign-up,.settings-tab-section .field-row-cloudinary_url th .sign-up,.settings-tab-section .field-row-signup td .sign-up,.settings-tab-section .field-row-signup th .sign-up{vertical-align:baseline}.settings-tab-section.connect .form-table{display:inline-block;width:auto;max-width:580px}.settings-valid{color:#558b2f;font-size:30px}.settings-valid-field{border-color:#558b2f!important}.settings-invalid-field{border-color:#dd2c00!important}.settings-warning{display:inline-block;padding:5px 7px;background-color:#e9faff;border:1px solid #ccd0d4;border-left:4px solid #00a0d2;box-shadow:0 1px 1px rgba(0,0,0,.04)}.sync .spinner{display:inline-block;visibility:visible;float:none;margin:0 5px 0 0}.sync-media,.sync-media-progress{display:none}.sync-media-progress-outer{height:20px;margin:20px 0 10px;width:500px;background-color:#e5e5e5;position:relative}.sync-media-progress-outer .progress-bar{width:0;height:20px;background-color:#558b2f;transition:width .25s}.sync-media-progress-notice{color:#dd2c00}.sync-media-resource{width:100px;display:inline-block}.sync-media-error{color:#dd2c00}.sync-count{font-weight:700}.sync-details{margin-top:10px}.sync .button.start-sync,.sync .button.stop-sync{display:none;padding:0 16px}.sync .button.start-sync .dashicons,.sync .button.stop-sync .dashicons{line-height:2.2em}.sync .progress-text{padding:12px 4px 12px 12px;display:inline-block;font-weight:700}.sync .completed{max-width:300px;display:none}.sync-status-disabled{color:#dd2c00}.sync-status-enabled{color:#558b2f}.sync-status-button.button{vertical-align:baseline}.cloudinary-widget{height:100%}.cloudinary-widget-wrapper{height:100%;overflow:hidden;background-image:url("data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ic3Bpbm5lciIgdmlld0JveD0iLTQgLTQgMTUxIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48c3R5bGU+QGtleWZyYW1lcyBjb2xvcnN7MCUsdG97c3Ryb2tlOiMwMDc4ZmZ9NTAle3N0cm9rZTojMGUyZjVhfX1Aa2V5ZnJhbWVzIGRhc2h7MCUsdG97c3Ryb2tlLWRhc2hvZmZzZXQ6NTYwfTUwJXtzdHJva2UtZGFzaG9mZnNldDowfX1ALXdlYmtpdC1rZXlmcmFtZXMgY29sb3JzezAlLHRve3N0cm9rZTojMDA3OGZmfTUwJXtzdHJva2U6IzBlMmY1YX19QC13ZWJraXQta2V5ZnJhbWVzIGRhc2h7MCUsdG97c3Ryb2tlLWRhc2hvZmZzZXQ6NTYwfTUwJXtzdHJva2UtZGFzaG9mZnNldDowfX08L3N0eWxlPjxwYXRoIGQ9Ik0xMjEuNjYzIDkwLjYzOGMtMS43OTYgMC05OS4zMy0uNDk4LTEwMS40NzQtMS40NzhDOC42ODUgODMuODc3IDEuMjUgNzIuMTk2IDEuMjUgNTkuMzk2YzAtMTYuNjU2IDEyLjc5Ny0zMC42MSAyOS4wNTItMzIuMzIzIDcuNDktMTUuNzA2IDIzLjE4Ni0yNS43MDcgNDAuNzE0LTI1LjcwNyAyMC45OCAwIDM5LjIxNSAxNC43NTIgNDMuOTQ1IDM0LjkwNyAxNS4wOS4yNDUgMjcuMjkgMTIuNjMgMjcuMjkgMjcuODIyIDAgMTEuOTY4LTcuNzM4IDIyLjU1LTE5LjI1NiAyNi4zMyIgc3Ryb2tlLXdpZHRoPSI5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3R5bGU9InRyYW5zZm9ybS1vcmlnaW46Y2VudGVyOy13ZWJraXQtYW5pbWF0aW9uOmRhc2ggMnMgZWFzZS1pbi1vdXQgaW5maW5pdGUsY29sb3JzIDhzIGVhc2UtaW4tb3V0IGluZmluaXRlO2FuaW1hdGlvbjpkYXNoIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlLGNvbG9ycyA4cyBlYXNlLWluLW91dCBpbmZpbml0ZSIgc3Ryb2tlLWRhc2hhcnJheT0iMjgwIi8+PC9zdmc+");background-repeat:no-repeat;background-position:50%;background-size:150px}.attachment-actions .button.edit-attachment,.attachment-info .edit-attachment{display:none}.global-transformations-preview{position:relative;max-width:600px}.global-transformations-spinner{display:none}.global-transformations-button.button-primary{display:none;position:absolute;z-index:100}.global-transformations-url{margin-bottom:5px;margin-top:5px}.global-transformations-url-transformation{max-width:100px;overflow:hidden;text-overflow:ellipsis;color:#51a3ff}.global-transformations-url-file{color:#f2d864}.global-transformations-url-link{display:block;padding:16px;background-color:#262c35;text-decoration:none;color:#fff;border-radius:6px;overflow:hidden;text-overflow:ellipsis}.global-transformations-url-link:hover{color:#888;text-decoration:underline}.cld-tax-order-list-item{border:1px solid #efefef;padding:4px;margin:0 0 -1px;background-color:#fff}.cld-tax-order-list-item.no-items{color:#888;text-align:center;display:none}.cld-tax-order-list-item.no-items:last-child{display:block}.cld-tax-order-list-item.ui-sortable-helper{box-shadow:0 2px 5px rgba(0,0,0,.2)}.cld-tax-order-list-item-placeholder{background-color:#efefef;height:45px;margin:0}.cld-tax-order-list-item-handle{cursor:grab;margin-right:4px;color:#999}.cld-tax-order-list-type{width:45%;display:inline-block;margin-right:8px}.cld-tax-order-list-type input{margin-right:4px!important}.cloudinary-media-library{position:relative;margin-left:-20px}@media screen and (max-width:782px){.cloudinary-media-library{margin-left:-10px}} \ No newline at end of file diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.ttf b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.0bf34bba6c50ef8a00885c94fc39bb81.ttf similarity index 96% rename from cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.ttf rename to cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.0bf34bba6c50ef8a00885c94fc39bb81.ttf index 44c8eb0aa..166b4542d 100644 Binary files a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.ttf and b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.0bf34bba6c50ef8a00885c94fc39bb81.ttf differ diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.woff b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.130b5d626b226659422cfb0e20ce30c1.woff similarity index 97% rename from cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.woff rename to cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.130b5d626b226659422cfb0e20ce30c1.woff index b99bd5cf6..2e398fcd5 100644 Binary files a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.woff and b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.130b5d626b226659422cfb0e20ce30c1.woff differ diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.eot b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.7b8dc57b5dd3c69880043780bb9bb133.eot similarity index 95% rename from cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.eot rename to cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.7b8dc57b5dd3c69880043780bb9bb133.eot index 912895d47..b5d83bc15 100644 Binary files a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.eot and b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/fonts/cloudinary.7b8dc57b5dd3c69880043780bb9bb133.eot differ diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/components/_brand.scss b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/components/_brand.scss index f210c857e..caecd2e68 100755 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/components/_brand.scss +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/components/_brand.scss @@ -1,10 +1,10 @@ @font-face { font-family : 'cloudinary'; - src : url('fonts/cloudinary.eot?xr4567gh'); - src : url('fonts/cloudinary.eot?xr4567gh#iefix') format('embedded-opentype'), - url('fonts/cloudinary.ttf?xr4567gh') format('truetype'), - url('fonts/cloudinary.woff?xr4567gh') format('woff'), - url('fonts/cloudinary.svg?xr4567gh#cloudinary') format('svg'); + src : url('fonts/cloudinary.eot'); + src : url('fonts/cloudinary.eot?x#iefix') format('embedded-opentype'), + url('fonts/cloudinary.ttf') format('truetype'), + url('fonts/cloudinary.woff') format('woff'), + url('fonts/cloudinary.svg?x#cloudinary') format('svg'); font-weight : normal; font-style : normal; } diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.eot b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.eot old mode 100755 new mode 100644 index 8a843affc..b5d83bc15 Binary files a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.eot and b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.eot differ diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.svg b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.svg old mode 100755 new mode 100644 index 0b2a81765..fdb8419c8 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.svg +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.svg @@ -10,4 +10,6 @@ + + \ No newline at end of file diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.ttf b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.ttf old mode 100755 new mode 100644 index 71b6556b5..166b4542d Binary files a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.ttf and b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.ttf differ diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.woff b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.woff old mode 100755 new mode 100644 index 1fd991274..2e398fcd5 Binary files a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.woff and b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/css/src/fonts/cloudinary.woff differ diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-settings-page.php b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-settings-page.php index 46d32d451..6a1c6200d 100644 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-settings-page.php +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-settings-page.php @@ -913,4 +913,19 @@ public function set_active_page( $page_slug ) { $this->active_page = $page_slug; } } + + /** + * Checks if auto sync feature is enabled. + * + * @return bool + */ + public function is_auto_sync_enabled() { + $settings = $this->get_config(); + + if ( ! empty( $settings['sync_media']['auto_sync'] ) && 'on' === $settings['sync_media']['auto_sync'] ) { + return true; + } + + return false; + } } diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-sync.php b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-sync.php index a33f2208f..7845b1904 100644 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-sync.php +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-sync.php @@ -109,7 +109,7 @@ public function is_synced( $post_id ) { return true; } - if ( apply_filters( 'cloudinary_flag_sync', '__return_false' ) && ! get_post_meta( $post_id, Sync::META_KEYS['downloading'], true ) ) { + if ( $this->plugin->components['settings']->is_auto_sync_enabled() && apply_filters( 'cloudinary_flag_sync', '__return_false' ) && ! get_post_meta( $post_id, Sync::META_KEYS['downloading'], true ) ) { update_post_meta( $post_id, Sync::META_KEYS['syncing'], true ); } diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/media/class-filter.php b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/media/class-filter.php index 553b4117a..4bfab0b95 100644 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/media/class-filter.php +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/media/class-filter.php @@ -524,7 +524,7 @@ public function pre_filter_rest_content( $response, $post, $request ) { $context = $request->get_param( 'context' ); if ( 'edit' === $context ) { $data = $response->get_data(); - $content = wp_unslash( $data['content']['raw'] ); + $content = $data['content']['raw']; $data['content']['raw'] = $this->filter_out_local( $content ); $response->set_data( $data ); diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/media/class-upgrade.php b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/media/class-upgrade.php index 0733bf599..29430a9c4 100644 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/media/class-upgrade.php +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/media/class-upgrade.php @@ -34,6 +34,20 @@ class Upgrade { */ private $sync; + /** + * The cron frequency to ensure that the queue is progressing. + * + * @var int + */ + protected $cron_frequency; + + /** + * The cron offset since the last update. + * + * @var int + */ + protected $cron_start_offset; + /** * Filter constructor. * @@ -42,6 +56,10 @@ class Upgrade { public function __construct( \Cloudinary\Media $media ) { $this->media = $media; $this->sync = $media->plugin->components['sync']; + + $this->cron_frequency = apply_filters( 'cloudinary_cron_frequency', 600 ); + $this->cron_start_offset = apply_filters( 'cloudinary_cron_start_offset', 60 ); + $this->setup_hooks(); } @@ -167,6 +185,10 @@ function ( $val ) use ( $media ) { update_post_meta( $attachment_id, Sync::META_KEYS['downloading'], true ); delete_post_meta( $attachment_id, Sync::META_KEYS['syncing'] ); + if ( ! wp_next_scheduled( 'cloudinary_resume_upgrade' ) ) { + wp_schedule_single_event( time() + $this->cron_frequency, 'cloudinary_resume_upgrade' ); + } + if ( ! defined( 'DOING_BULK_SYNC' ) ) { $this->sync->managers['upload']->add_to_sync( $attachment_id ); // Auto sync if upgrading outside of bulk sync. } @@ -174,6 +196,33 @@ function ( $val ) use ( $media ) { return $public_id; } + /** + * Maybe resume the upgrading assets. + * This is a fallback mechanism to resume the upgrade when it stops unexpectedly. + * + * @return void + */ + public function maybe_resume_upgrade() { + global $wpdb; + + $assets = $wpdb->get_col( // phpcs:ignore WordPress.DB.DirectDatabaseQuery + $wpdb->prepare( + "SELECT post_id + FROM $wpdb->postmeta + WHERE meta_key = %s", + Sync::META_KEYS['downloading'] + ) + ); + + if ( ! empty( $assets ) ) { + wp_schedule_single_event( time() + $this->cron_frequency, 'cloudinary_resume_upgrade' ); + + foreach ( $assets as $asset ) { + $this->sync->managers['upload']->add_to_sync( $asset ); + } + } + } + /** * Setup hooks for the filters. */ @@ -193,5 +242,7 @@ public function setup_hooks() { } } ); } + + add_action( 'cloudinary_resume_upgrade', array( $this, 'maybe_resume_upgrade' ) ); } } diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/media/class-video.php b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/media/class-video.php index 8be5b68a5..b27a5b167 100644 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/media/class-video.php +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/media/class-video.php @@ -52,14 +52,14 @@ class Video { * * @var string */ - const PLAYER_VER = '1.3.3'; + const PLAYER_VER = '1.4.0'; /** * Cloudinary Core Version. * * @var string */ - const CORE_VER = '2.6.2'; + const CORE_VER = '2.6.3'; /** * Meta key to store usable video transformations for an attachment. @@ -220,6 +220,7 @@ public function filter_video_shortcode( $html, $attr ) { if ( isset( $attr['autoplay'] ) ) { $args['autoplay'] = 'true' === $attr['autoplay']; + $args['muted'] = 'true' === $attr['autoplay']; } if ( isset( $attr['loop'] ) ) { $args['loop'] = 'true' === $attr['loop']; @@ -285,6 +286,7 @@ public function filter_video_tags( $content ) { // Enable Autoplay for this video. if ( false !== strpos( $tag, 'autoplay' ) ) { $args['autoplayMode'] = $this->config['video_autoplay_mode']; // if on, use defined mode. + $args['muted'] = 'always' === $this->config['video_autoplay_mode']; } // Enable Loop. if ( false !== strpos( $tag, 'loop' ) ) { @@ -348,7 +350,6 @@ public function print_video_scripts() { $default = array( 'publicId' => $cloudinary_id, 'sourceTypes' => array( $video['format'] ), // @todo Make this based on eager items as mentioned above. - 'controls' => 'on' === $this->config['video_controls'] ? true : false, 'autoplay' => 'off' !== $this->config['video_autoplay_mode'] ? true : false, 'loop' => 'on' === $this->config['video_loop'] ? true : false, ); @@ -363,9 +364,9 @@ public function print_video_scripts() { if ( empty( $config['size'] ) && ! empty( $config['transformation'] ) && ! $this->media->get_crop_from_transformation( $config['transformation'] ) ) { $config['fluid'] = true; } - + + $config['controls'] = 'on' === $this->config['video_controls'] ? true : false; $cld_videos[ $instance ] = $config; - } if ( empty( $cld_videos ) ) { diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-push-sync.php b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-push-sync.php index 09ef6f25d..cd48f0c6e 100644 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-push-sync.php +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-push-sync.php @@ -368,6 +368,7 @@ public function prepare_upload( $post, $down_sync = false ) { if ( true === $down_sync ) { $download = $this->plugin->components['sync']->managers['download']->down_sync( $post->ID ); if ( is_wp_error( $download ) ) { + delete_post_meta( $post->ID, Sync::META_KEYS['downloading'] ); update_post_meta( $post->ID, Sync::META_KEYS['sync_error'], $download->get_error_message() ); return new \WP_Error( 'attachment_download_error', $download->get_error_message() ); @@ -619,6 +620,7 @@ public function push_attachments( $attachments ) { $error = $result->get_error_message(); $stats['fail'][] = $error; $media->update_post_meta( $attachment->ID, Sync::META_KEYS['sync_error'], $error ); + delete_post_meta( $attachment->ID, Sync::META_KEYS['syncing'] ); continue; } diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-upload-queue.php b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-upload-queue.php index 781cf782a..930cbf1a6 100644 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-upload-queue.php +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-upload-queue.php @@ -140,6 +140,7 @@ public function mark( $id, $type = 'done' ) { $queue[ $type ][] = '
' . basename( $file ) . ': ' . $state->get_error_message() . '
'; // Add a flag that this file had an error as to not try process it again. update_post_meta( $id, Sync::META_KEYS['sync_error'], $state->get_error_message() ); + delete_post_meta( $id, Sync::META_KEYS['syncing'], $state->get_error_message() ); } } else { if ( ! in_array( $id, $queue[ $type ], true ) ) { diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-upload-sync.php b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-upload-sync.php index b7a6022d7..0e7c2f7ed 100644 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-upload-sync.php +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-upload-sync.php @@ -167,7 +167,7 @@ public function handle_bulk_actions( $location, $action, $post_ids ) { * @return bool */ public function auto_sync_enabled( $enabled, $post_id ) { - if ( isset( $this->plugin->config['settings']['sync_media']['auto_sync'] ) && 'on' === $this->plugin->config['settings']['sync_media']['auto_sync'] ) { + if ( $this->plugin->components['settings']->is_auto_sync_enabled() ) { $enabled = true; } diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/ui-definitions/tabs/settings-global-video-transformations.php b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/ui-definitions/tabs/settings-global-video-transformations.php index edbf2da54..f9386a812 100644 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/ui-definitions/tabs/settings-global-video-transformations.php +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/ui-definitions/tabs/settings-global-video-transformations.php @@ -48,18 +48,24 @@ ), ), 'video_autoplay_mode' => array( - 'label' => null, - 'prefix' => __( 'Autoplay:', 'cloudinary' ), - 'type' => 'select', - 'default' => 'never', - 'choices' => array( + 'label' => null, + 'prefix' => __( 'Autoplay:', 'cloudinary' ), + 'type' => 'select', + 'default' => 'never', + 'choices' => array( 'off' => __( 'Off', 'cloudinary' ), 'always' => __( 'Always', 'cloudinary' ), 'on-scroll' => __( 'On-Scroll (Autoplay when in view)', 'cloudinary' ), ), - 'condition' => array( + 'condition' => array( 'video_player' => 'cld', ), + 'description' => sprintf( + // translators: Placeholders are tags. + __( 'Please note that when choosing "always", the video will autoplay without sound (muted). This is a built-in browser feature and applies to all major browsers.%1$sRead more about muted autoplay%2$s', 'cloudinary' ), + '
', + '' + ), ), 'video_loop' => array( diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/ui-definitions/tabs/sync-media-content.php b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/ui-definitions/tabs/sync-media-content.php index 5aad4e476..a37756fc0 100644 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/ui-definitions/tabs/sync-media-content.php +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/ui-definitions/tabs/sync-media-content.php @@ -5,10 +5,7 @@ * @package Cloudinary */ -$autosync = false; -if ( isset( $this->plugin->config['settings']['sync_media']['auto_sync'] ) && 'on' === $this->plugin->config['settings']['sync_media']['auto_sync'] ) { - $autosync = true; -} +$autosync = $this->plugin->components['settings']->is_auto_sync_enabled(); ?> plugin->config['connect'] ) ) : ?>
diff --git a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/webpack.config.js b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/webpack.config.js index 2e0f62269..41c0024c8 100755 --- a/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/webpack.config.js +++ b/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/webpack.config.js @@ -64,7 +64,7 @@ const cldCore = { { loader: 'file-loader', options: { - name: '[name].[ext]', + name: '[name].[contenthash].[ext]', outputPath: '../css/fonts/' } }