WP Offload S3 Lite - Version 1.2.1

Version Description

= 1.1 = This is a major change, which ensures S3 URLs are no longer saved in post content. Instead, local URLs are filtered on page generation and replaced with the S3 version. If you depend on the S3 URLs being stored in post content you will need to make modifications to support this version.

= 0.6 = This version requires PHP 5.3.3+ and the Amazon Web Services plugin

Download this release

Release Info

Developer deliciousbrains
Plugin Icon 128x128 WP Offload S3 Lite
Version 1.2.1
Comparing to
See all releases

Code changes from version 1.2 to 1.2.1

README.md CHANGED
@@ -2,8 +2,8 @@
2
**Contributors:** bradt, deliciousbrains
3
**Tags:** uploads, amazon, s3, amazon s3, mirror, admin, media, cdn, cloudfront
4
**Requires at least:** 4.6
5
- **Tested up to:** 4.8
6
- **Stable tag:** 1.2
7
**License:** GPLv3
8
9
Copies files to Amazon S3 as they are uploaded to the Media Library. Optionally configure Amazon CloudFront for faster delivery.
@@ -69,6 +69,17 @@ This version requires PHP 5.3.3+ and the Amazon Web Services plugin
69
70
## Changelog ##
71
72
### WP Offload S3 Lite 1.2 - 2017-06-19 ###
73
* New: Compatibility with WordPress 4.8
74
* New: Support for WP CLI `wp media regenerate`
2
**Contributors:** bradt, deliciousbrains
3
**Tags:** uploads, amazon, s3, amazon s3, mirror, admin, media, cdn, cloudfront
4
**Requires at least:** 4.6
5
+ **Tested up to:** 4.9
6
+ **Stable tag:** 1.2.1
7
**License:** GPLv3
8
9
Copies files to Amazon S3 as they are uploaded to the Media Library. Optionally configure Amazon CloudFront for faster delivery.
69
70
## Changelog ##
71
72
+ ### WP Offload S3 Lite 1.2.1 - 2017-11-20 ###
73
+ * New: Compatibility with HTML Widget
74
+ * New: Dismissible admin notice that WP Offload S3 Lite will soon require PHP 5.5+
75
+ * Improvement: Compatibility with WordPress 4.9
76
+ * Bug fix: Incorrect region used when changing bucket by defining it in WPOS3_SETTINGS
77
+ * Bug fix: Media library notices render inside the upload tool
78
+ * Bug fix: Save notices disappear on settings page
79
+ * Bug fix: Improper use of jQuery.attr logged to browser console
80
+ * Bug fix: "Content Filtering Upgrade" URL in notice incorrect
81
+ * Bug fix: "More info" links can be broken across two lines
82
+
83
### WP Offload S3 Lite 1.2 - 2017-06-19 ###
84
* New: Compatibility with WordPress 4.8
85
* New: Support for WP CLI `wp media regenerate`
assets/css/notice.css CHANGED
@@ -1 +1 @@
1
- .as3cf-notice p,.aws-compatibility-notice p{max-width:800px}
1
+ .as3cf-notice p,.aws-compatibility-notice p{max-width:800px}.as3cf-license-notice p:not(.as3cf-before):before{display:none}
assets/css/styles.css CHANGED
@@ -1 +1 @@
1
- .aws-main.wrap{position:relative}.aws-main.wrap>h1{float:left}.aws-main.wrap .as3cf-notice,.aws-main.wrap .as3cf-updated,.aws-main.wrap .as3cf-error{-webkit-box-sizing:border-box;box-sizing:border-box}.aws-main.wrap .as3cf-error.fatal{clear:both}.aws-main.wrap h2.nav-tab-wrapper{float:none;margin-bottom:15px;width:650px;margin-top:10px;padding:9px 0 0 5px}.aws-main.wrap h2.nav-tab-wrapper a.nav-tab-active{color:#464646;cursor:default}.aws-main.wrap h2.nav-tab-wrapper a:focus{-webkit-box-shadow:none;box-shadow:none}.aws-main.wrap .more-info{white-space:nowrap}.aws-main.wrap .error pre{background:#eaeaea;background:rgba(0,0,0,0.07);display:block;padding:10px 15px}.aws-main.wrap .error pre code{padding:0;background:none}.aws-main.wrap[data-tab="support"] .as3cf-notice,.aws-main.wrap[data-tab="support"] .error,.aws-main.wrap[data-tab="support"] .updated,.aws-main.wrap[data-tab="support"] .updated.show{display:none}.aws-main.wrap[data-tab="support"] .fatal .error,.aws-main.wrap[data-tab="support"] .as3cf-notice.important,.aws-main.wrap[data-tab="support"] .dbrains-api-down{display:block}.aws-main.wrap .as3cf-notice,.aws-main.wrap .error,.aws-main.wrap .updated{max-width:650px;margin-top:15px;-webkit-box-sizing:border-box;box-sizing:border-box}.aws-main.wrap .as3cf-updated{display:none}.aws-main.wrap .as3cf-updated.as3cf-notice,.aws-main.wrap .as3cf-updated.show{display:block}.as3cf-tab .as3cf-main-settings{display:none}.as3cf-tab .as3cf-bucket-container{display:block}.as3cf-tab.as3cf-has-bucket .as3cf-main-settings{display:block}.as3cf-tab.as3cf-has-bucket .as3cf-bucket-container{display:none}.as3cf-tab{display:none;position:relative;width:650px}.as3cf-tab .as3cf-main-settings p{font-size:13px}.as3cf-tab .as3cf-main-settings p a{color:#444}.as3cf-tab .object-prefix-desc em{white-space:nowrap}.as3cf-tab .as3cf-url-preview-wrap{background:#fff;text-align:center;padding:20px 0 0;max-width:650px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.as3cf-tab .as3cf-url-preview-wrap .as3cf-url-preview{margin-top:10px;padding:0 20px 10px;overflow-x:scroll}.as3cf-tab .as3cf-url-preview-wrap span{color:#aaa;text-transform:uppercase;font-weight:bold}.as3cf-tab .as3cf-radio-group label{display:block;margin-bottom:10px}.as3cf-tab .as3cf-radio-group label.disabled,.as3cf-tab .as3cf-radio-group label.disabled p{color:#bbb;cursor:default}.as3cf-tab .as3cf-radio-group p{padding-left:25px;color:#6b6b6b;margin:0;font-size:12px}.as3cf-tab .as3cf-radio-group p.as3cf-setting{margin-top:5px}.as3cf-tab .as3cf-switch{position:relative;display:inline-block;padding:2px;overflow:hidden;border-radius:2px;-webkit-border-radius:2px;background-color:#d4d3d3;cursor:pointer}.as3cf-tab .as3cf-switch.on{background-color:#ade7b5}.as3cf-tab .as3cf-switch span{visibility:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;float:left;display:inline-block;height:100%;font-size:12px;line-height:20px;border-radius:2px;-webkit-border-radius:2px;font-weight:bold;padding:4px 8px;background:#fff;color:#8d8d8d;z-index:1}.as3cf-tab .as3cf-switch span.on{color:#82d78b}.as3cf-tab .as3cf-switch span.checked{visibility:visible}.as3cf-tab .as3cf-switch.disabled{cursor:default;background:#e6e6e6}.as3cf-tab .as3cf-switch.disabled span{background:#f1f1f1;color:#d6d6d6}.as3cf-tab .as3cf-switch input[type="checkbox"]{position:absolute !important;top:0;left:0;opacity:0;filter:alpha(opacity=0);z-index:-1}.as3cf-tab .as3cf-setting.hide{display:none}.as3cf-tab div.as3cf-setting{margin-top:4px}.as3cf-tab h3{font-weight:normal;text-transform:uppercase;margin:15px 0}.as3cf-tab .form-table{margin:0}.as3cf-tab .form-table tr.as3cf-border-bottom td{border-bottom:1px solid #ddd;padding:20px 0px}.as3cf-tab .form-table tr.as3cf-setting-title td{padding-bottom:0}.as3cf-tab .form-table tr.as3cf-setting-title:first-child td{padding-top:20px}.as3cf-tab .form-table tr td{padding:15px 0}.as3cf-tab .form-table tr td:first-child{vertical-align:top;min-width:120px}.as3cf-tab .form-table tr td .as3cf-notice:last-child{margin-bottom:0}.as3cf-tab .form-table tr td>p:first-child{margin-top:0}.as3cf-tab .form-table tr:first-of-type td{padding-top:5px}.as3cf-tab .form-table tr.as3cf-bucket-setting .as3cf-defined-in-config{float:none}.as3cf-tab .form-table h3{padding:0;margin:0}.as3cf-tab .form-table h4{margin:0}.as3cf-tab .as3cf-active-bucket{font-weight:bold;margin-right:10px}.as3cf-tab .as3cf-view-bucket{color:#444;text-decoration:none;margin-right:10px}.as3cf-tab .as3cf-view-bucket:hover,.as3cf-tab .as3cf-view-bucket:active{color:#00a0d2}.as3cf-tab .as3cf-view-bucket:focus{-webkit-box-shadow:none;box-shadow:none}.as3cf-tab .as3cf-view-bucket .dashicons-external{margin-top:-2px}.as3cf-tab .tooltip{position:relative;z-index:2;cursor:pointer}.as3cf-tab .tooltip:before,.as3cf-tab .tooltip:after{visibility:hidden;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0;pointer-events:none}.as3cf-tab .tooltip:before{position:absolute;bottom:150%;left:50%;margin-bottom:5px;margin-left:-250px;padding:10px;width:500px;border-radius:3px;background-color:#000;background-color:rgba(51,51,51,0.9);color:#fff;content:attr(data-tooltip);text-align:center;font-size:14px;line-height:1.3}.as3cf-tab .tooltip:after{position:absolute;bottom:150%;left:50%;margin-left:-5px;width:0;border-top:5px solid #000;border-top:5px solid rgba(51,51,51,0.9);border-right:5px solid transparent;border-left:5px solid transparent;content:" ";font-size:0;line-height:0}.as3cf-tab .tooltip:hover:before,.as3cf-tab .tooltip:hover:after{visibility:visible;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.as3cf-tab .as3cf-defined-in-config{background:#ccc;color:#fff;padding:2px 5px;margin:0 0 5px 5px;float:right}.as3cf-tab .as3cf-defined-setting{color:#bbb}.as3cf-tab .as3cf-defined-setting label{cursor:default}.as3cf-tab .as3cf-defined-setting p .more-info a{color:#bbb}.as3cf-tab .as3cf-defined-setting .as3cf-radio-group p{color:#bbb}.as3cf-tab .as3cf-defined-setting .as3cf-notice{display:none !important}#tab-media{display:block}#tab-media .as3cf-main-settings{display:none}#tab-media .as3cf-bucket-container{display:block}#tab-media.as3cf-has-bucket .as3cf-main-settings{display:block}#tab-media.as3cf-has-bucket .as3cf-bucket-container{display:none}.as3cf-bucket-container h3{line-height:1.3;text-transform:none}.as3cf-bucket-container a:focus{-webkit-box-shadow:none;box-shadow:none;outline:none}.as3cf-bucket-container input[type=text]{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.as3cf-bucket-container select{-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.as3cf-bucket-container .form-table td{padding:5px 0}.as3cf-bucket-container .form-table td:first-child{width:100px;line-height:30px;vertical-align:top}.as3cf-bucket-container .bucket-actions{margin:15px 0;border-top:1px solid #ccc;padding-top:15px;overflow:hidden}.as3cf-bucket-container .bucket-actions button,.as3cf-bucket-container .bucket-actions .right{float:right;margin-right:0}.as3cf-bucket-container .bucket-actions span{display:inline-block;margin-right:20px;line-height:28px}.as3cf-bucket-container .bucket-actions .bucket-action-cancel{color:#a00;text-decoration:none}.as3cf-bucket-container .bucket-actions .bucket-action-cancel:hover{color:red}.as3cf-bucket-container .as3cf-bucket-list{padding:15px;max-height:200px;overflow-x:hidden;overflow-y:auto;background-color:#fff;font-size:14px}.as3cf-bucket-container .as3cf-bucket-list li:last-of-type{margin-bottom:0}.as3cf-bucket-container .as3cf-bucket-list a{color:#444;text-decoration:none}.as3cf-bucket-container .as3cf-bucket-list a:hover{color:#0074a2}.as3cf-bucket-container .as3cf-bucket-list a.selected{font-weight:bold;color:#0074a2}.as3cf-bucket-container .as3cf-bucket-list a .dashicons{margin-right:5px}.as3cf-bucket-container .as3cf-bucket-select,.as3cf-bucket-container .as3cf-bucket-create{display:none}.as3cf-bucket-container .bucket-actions.select{display:none}.as3cf-tab{display:none}#tab-media{display:block}#tab-support{min-height:900px}#tab-support .as3cf-sidebar{top:11px}#tab-support .support-section{border-bottom:1px solid #ccc;padding-bottom:20px;margin-bottom:20px}#tab-support .debug textarea{width:100%;min-height:200px;font-family:Consolas, Monaco, monospace;margin-bottom:5px}.as3cf-sidebar{position:absolute;top:9px;left:670px;width:292px}.as3cf-sidebar .block{padding:20px;border:1px solid #ccc}.as3cf-sidebar .subscribe{border-top:none}.as3cf-sidebar .subscribe h2{padding:0;margin:0;margin-bottom:0.5em;color:#666;font-size:20px;line-height:1.2em;float:none}.as3cf-sidebar .subscribe h3{font-size:16px;margin:0}.as3cf-sidebar .subscribe p{margin:0}.as3cf-sidebar .subscribe .intro{margin-bottom:1em;line-height:1.4}.as3cf-sidebar .subscribe li{line-height:1.4}.as3cf-sidebar .subscribe .links{margin-bottom:2em}.as3cf-sidebar .subscribe .links a{text-decoration:none}.as3cf-sidebar .subscribe .promise{color:#999;font-size:12px;line-height:1.4em}.as3cf-sidebar .subscribe .field{margin-bottom:0.5em}.as3cf-sidebar .subscribe .field p{margin-bottom:0.3em}.as3cf-sidebar .subscribe .field input[type=text],.as3cf-sidebar .subscribe .field input[type=email]{width:100%}.as3cf-sidebar .subscribe .field.submit-button{margin-bottom:1em}.as3cf-sidebar .credits{border-top:0}.as3cf-sidebar .credits h4{font-size:16px;margin-top:0;margin-bottom:10px}.as3cf-sidebar .credits ul{margin:0}.as3cf-sidebar .credits li{overflow:hidden}.as3cf-sidebar .credits li:last-child{margin-bottom:0}.as3cf-sidebar .credits img{float:left;margin-right:10px}.as3cf-sidebar .credits span{float:left;display:block;line-height:32px}.as3cf-sidebar .credits a{display:block;text-decoration:none;color:#444;font-size:16px;text-align:center}.as3cf-sidebar .credits a:hover{color:#888}@media (min--moz-device-pixel-ratio: 1.3), (-webkit-min-device-pixel-ratio: 1.3), (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx){.as3cf-sidebar .as3cf-banner{background-image:url(../img/snail-banner@2x.jpg);background-size:292px 156px}}@media screen and (max-width: 1052px){.as3cf-sidebar{position:relative;top:auto;right:auto}}.as3cf-banner{margin-top:35px;width:292px;height:156px;display:block;background-image:url(../img/snail-banner.jpg);position:relative}.as3cf-banner h1{font-size:28px;color:#fff;font-weight:200;margin:0;position:absolute;bottom:25px;left:20px;text-decoration:none}.as3cf-upgrade-details{background-color:#73833b;padding:20px;color:#fff;font-size:13px;margin:0;display:block;text-decoration:none}.as3cf-upgrade-details p{margin:0}.as3cf-upgrade-details a{color:#fff;font-weight:bold;text-decoration:none;font-size:16px}.as3cf-upgrade-details a:hover{color:#fff;opacity:0.9}.as3cf-upgrade-details ul{margin-top:0;margin-left:16px;list-style-type:disc}.aws-compatibility-notice.error{clear:both;margin:5px 20px 5px 0}.as3cf-bucket-error span.title{font-weight:bold}.as3cf-invalid-bucket-name,.as3cf-validation-error{display:block;margin-top:2px;font-size:12px;color:#a00}.as3cf-notice-toggle-content{max-height:100px;overflow-y:scroll}.as3cf-notice-toggle-content .as3cf-notice-toggle-list{margin-top:0;margin-left:0;padding-left:40px;color:#dc3232}
1
+ .aws-main.wrap{position:relative}.aws-main.wrap>h1{float:left}.aws-main.wrap .as3cf-notice,.aws-main.wrap .as3cf-updated,.aws-main.wrap .as3cf-error{-webkit-box-sizing:border-box;box-sizing:border-box}.aws-main.wrap .as3cf-error.fatal{clear:both}.aws-main.wrap h2.nav-tab-wrapper{float:none;margin-bottom:15px;width:650px;margin-top:10px;padding:9px 0 0 5px}.aws-main.wrap h2.nav-tab-wrapper a.nav-tab-active{color:#464646;cursor:default}.aws-main.wrap h2.nav-tab-wrapper a:focus{-webkit-box-shadow:none;box-shadow:none}.aws-main.wrap .more-info{white-space:nowrap}.aws-main.wrap .error pre{background:#eaeaea;background:rgba(0,0,0,0.07);display:block;padding:10px 15px}.aws-main.wrap .error pre code{padding:0;background:none}.aws-main.wrap[data-tab="support"] .as3cf-notice,.aws-main.wrap[data-tab="support"] .error,.aws-main.wrap[data-tab="support"] .updated,.aws-main.wrap[data-tab="support"] .updated.show{display:none}.aws-main.wrap[data-tab="support"] .fatal .error,.aws-main.wrap[data-tab="support"] .as3cf-notice.important,.aws-main.wrap[data-tab="support"] .dbrains-api-down{display:block}.aws-main.wrap .as3cf-notice,.aws-main.wrap .error,.aws-main.wrap .updated{max-width:650px;margin-top:15px;-webkit-box-sizing:border-box;box-sizing:border-box}.aws-main.wrap .as3cf-updated{display:none}.aws-main.wrap .as3cf-updated.as3cf-notice,.aws-main.wrap .as3cf-updated.show{display:block}.as3cf-tab .as3cf-main-settings{display:none}.as3cf-tab .as3cf-bucket-container{display:block}.as3cf-tab.as3cf-has-bucket .as3cf-main-settings{display:block}.as3cf-tab.as3cf-has-bucket .as3cf-bucket-container{display:none}.as3cf-tab{display:none;position:relative;width:650px}.as3cf-tab .as3cf-main-settings p{font-size:13px}.as3cf-tab .as3cf-main-settings p a{color:#444}.as3cf-tab .object-prefix-desc em{white-space:nowrap}.as3cf-tab .as3cf-url-preview-wrap{background:#fff;text-align:center;padding:20px 0 0;max-width:650px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.as3cf-tab .as3cf-url-preview-wrap .as3cf-url-preview{margin-top:10px;padding:0 20px 10px;overflow-x:scroll}.as3cf-tab .as3cf-url-preview-wrap span{color:#aaa;text-transform:uppercase;font-weight:bold}.as3cf-tab .as3cf-radio-group label{display:block;margin-bottom:10px}.as3cf-tab .as3cf-radio-group label.disabled,.as3cf-tab .as3cf-radio-group label.disabled p{color:#bbb;cursor:default}.as3cf-tab .as3cf-radio-group p{padding-left:25px;color:#6b6b6b;margin:0;font-size:12px}.as3cf-tab .as3cf-radio-group p.as3cf-setting{margin-top:5px}.as3cf-tab .as3cf-switch{position:relative;display:inline-block;padding:2px;overflow:hidden;border-radius:2px;-webkit-border-radius:2px;background-color:#d4d3d3;cursor:pointer}.as3cf-tab .as3cf-switch.on{background-color:#ade7b5}.as3cf-tab .as3cf-switch span{visibility:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;float:left;display:inline-block;height:100%;font-size:12px;line-height:20px;border-radius:2px;-webkit-border-radius:2px;font-weight:bold;padding:4px 8px;background:#fff;color:#8d8d8d;z-index:1}.as3cf-tab .as3cf-switch span.on{color:#82d78b}.as3cf-tab .as3cf-switch span.checked{visibility:visible}.as3cf-tab .as3cf-switch.disabled{cursor:default;background:#e6e6e6}.as3cf-tab .as3cf-switch.disabled span{background:#f1f1f1;color:#d6d6d6}.as3cf-tab .as3cf-switch input[type="checkbox"]{position:absolute !important;top:0;left:0;opacity:0;filter:alpha(opacity=0);z-index:-1}.as3cf-tab .as3cf-setting.hide{display:none}.as3cf-tab div.as3cf-setting{margin-top:4px}.as3cf-tab h3{font-weight:normal;text-transform:uppercase;margin:15px 0}.as3cf-tab .form-table{margin:0}.as3cf-tab .form-table tr.as3cf-border-bottom td{border-bottom:1px solid #ddd;padding:20px 0px}.as3cf-tab .form-table tr.as3cf-setting-title td{padding-bottom:0}.as3cf-tab .form-table tr.as3cf-setting-title:first-child td{padding-top:20px}.as3cf-tab .form-table tr td{padding:15px 0}.as3cf-tab .form-table tr td:first-child{vertical-align:top;min-width:120px}.as3cf-tab .form-table tr td .as3cf-notice:last-child{margin-bottom:0}.as3cf-tab .form-table tr td>p:first-child{margin-top:0}.as3cf-tab .form-table tr:first-of-type td{padding-top:5px}.as3cf-tab .form-table tr.as3cf-bucket-setting .as3cf-defined-in-config{float:none}.as3cf-tab .form-table h3{padding:0;margin:0}.as3cf-tab .form-table h4{margin:0}.as3cf-tab .as3cf-active-bucket{font-weight:bold;margin-right:10px}.as3cf-tab .as3cf-view-bucket{color:#444;text-decoration:none;margin-right:10px}.as3cf-tab .as3cf-view-bucket:hover,.as3cf-tab .as3cf-view-bucket:active{color:#00a0d2}.as3cf-tab .as3cf-view-bucket:focus{-webkit-box-shadow:none;box-shadow:none}.as3cf-tab .as3cf-view-bucket .dashicons-external{margin-top:-2px}.as3cf-tab .tooltip{position:relative;z-index:2;cursor:pointer}.as3cf-tab .tooltip:before,.as3cf-tab .tooltip:after{visibility:hidden;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0;pointer-events:none}.as3cf-tab .tooltip:before{position:absolute;bottom:150%;left:50%;margin-bottom:5px;margin-left:-250px;padding:10px;width:500px;border-radius:3px;background-color:#000;background-color:rgba(51,51,51,0.9);color:#fff;content:attr(data-tooltip);text-align:center;font-size:14px;line-height:1.3}.as3cf-tab .tooltip:after{position:absolute;bottom:150%;left:50%;margin-left:-5px;width:0;border-top:5px solid #000;border-top:5px solid rgba(51,51,51,0.9);border-right:5px solid transparent;border-left:5px solid transparent;content:" ";font-size:0;line-height:0}.as3cf-tab .tooltip:hover:before,.as3cf-tab .tooltip:hover:after{visibility:visible;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.as3cf-tab .as3cf-defined-in-config{background:#ccc;color:#fff;padding:2px 5px;margin:0 0 5px 5px;float:right}.as3cf-tab .as3cf-defined-setting{color:#bbb}.as3cf-tab .as3cf-defined-setting label{cursor:default}.as3cf-tab .as3cf-defined-setting p .more-info a{color:#bbb}.as3cf-tab .as3cf-defined-setting .as3cf-radio-group p{color:#bbb}.as3cf-tab .as3cf-defined-setting .as3cf-notice{display:none !important}#tab-media{display:block}#tab-media .as3cf-main-settings{display:none}#tab-media .as3cf-bucket-container{display:block}#tab-media.as3cf-has-bucket .as3cf-main-settings{display:block}#tab-media.as3cf-has-bucket .as3cf-bucket-container{display:none}.as3cf-bucket-container h3{line-height:1.3;text-transform:none}.as3cf-bucket-container a:focus{-webkit-box-shadow:none;box-shadow:none;outline:none}.as3cf-bucket-container input[type=text]{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.as3cf-bucket-container select{-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.as3cf-bucket-container .form-table td{padding:5px 0}.as3cf-bucket-container .form-table td:first-child{width:100px;line-height:30px;vertical-align:top}.as3cf-bucket-container .bucket-actions{margin:15px 0;border-top:1px solid #ccc;padding-top:15px;overflow:hidden}.as3cf-bucket-container .bucket-actions button,.as3cf-bucket-container .bucket-actions .right{float:right;margin-right:0}.as3cf-bucket-container .bucket-actions span{display:inline-block;margin-right:20px;line-height:28px}.as3cf-bucket-container .bucket-actions .bucket-action-cancel{color:#a00;text-decoration:none}.as3cf-bucket-container .bucket-actions .bucket-action-cancel:hover{color:red}.as3cf-bucket-container .as3cf-bucket-list{padding:15px;max-height:200px;overflow-x:hidden;overflow-y:auto;background-color:#fff;font-size:14px}.as3cf-bucket-container .as3cf-bucket-list li:last-of-type{margin-bottom:0}.as3cf-bucket-container .as3cf-bucket-list a{color:#444;text-decoration:none}.as3cf-bucket-container .as3cf-bucket-list a:hover{color:#0074a2}.as3cf-bucket-container .as3cf-bucket-list a.selected{font-weight:bold;color:#0074a2}.as3cf-bucket-container .as3cf-bucket-list a .dashicons{margin-right:5px}.as3cf-bucket-container .as3cf-bucket-select,.as3cf-bucket-container .as3cf-bucket-create{display:none}.as3cf-bucket-container .bucket-actions.select{display:none}.as3cf-tab{display:none}#tab-media{display:block}#tab-support{min-height:900px}#tab-support .as3cf-sidebar{top:11px}#tab-support .support-section{border-bottom:1px solid #ccc;padding-bottom:20px;margin-bottom:20px}#tab-support .debug textarea{width:100%;min-height:200px;font-family:Consolas, Monaco, monospace;margin-bottom:5px}.as3cf-sidebar{position:absolute;top:9px;left:670px;width:292px}.as3cf-sidebar .block{padding:20px;border:1px solid #ccc}.as3cf-sidebar .subscribe{border-top:none}.as3cf-sidebar .subscribe h2{padding:0;margin:0;margin-bottom:0.5em;color:#666;font-size:20px;line-height:1.2em;float:none}.as3cf-sidebar .subscribe h3{font-size:16px;margin:0}.as3cf-sidebar .subscribe p{margin:0}.as3cf-sidebar .subscribe .intro{margin-bottom:1em;line-height:1.4}.as3cf-sidebar .subscribe li{line-height:1.4}.as3cf-sidebar .subscribe .links{margin-bottom:2em}.as3cf-sidebar .subscribe .links a{text-decoration:none}.as3cf-sidebar .subscribe .promise{color:#999;font-size:12px;line-height:1.4em}.as3cf-sidebar .subscribe .field{margin-bottom:0.5em}.as3cf-sidebar .subscribe .field p{margin-bottom:0.3em}.as3cf-sidebar .subscribe .field input[type=text],.as3cf-sidebar .subscribe .field input[type=email]{width:100%}.as3cf-sidebar .subscribe .field.submit-button{margin-bottom:1em}.as3cf-sidebar .credits{border-top:0}.as3cf-sidebar .credits h4{font-size:16px;margin-top:0;margin-bottom:10px}.as3cf-sidebar .credits ul{margin:0}.as3cf-sidebar .credits li{overflow:hidden}.as3cf-sidebar .credits li:last-child{margin-bottom:0}.as3cf-sidebar .credits img{float:left;margin-right:10px}.as3cf-sidebar .credits span{float:left;display:block;line-height:32px}.as3cf-sidebar .credits a{display:block;text-decoration:none;color:#444;font-size:16px;text-align:center}.as3cf-sidebar .credits a:hover{color:#888}@media screen and (max-width: 1052px){.as3cf-sidebar{position:relative;top:auto;right:auto}}.as3cf-banner{margin-top:35px;width:292px;height:200px;display:block;background:#f8cfae url(../img/os3-banner.svg) left bottom/220px 220px no-repeat}.as3cf-banner:focus{-webkit-box-shadow:none;box-shadow:none}.wrap .as3cf-upgrade-details{background-color:#4e0d33;padding:10px 20px 20px 20px;color:#eee;font-size:13px;margin:0;display:block;text-decoration:none}.wrap .as3cf-upgrade-details h1{font-size:28px;color:#eee;margin:0 0 15px 0;padding:0;text-decoration:none;font-weight:200;line-height:1}.wrap .as3cf-upgrade-details p{margin:0}.wrap .as3cf-upgrade-details a{color:#eee;font-weight:bold;text-decoration:none;font-size:16px;-webkit-box-shadow:none;box-shadow:none}.wrap .as3cf-upgrade-details a:hover{color:#fff}.wrap .as3cf-upgrade-details ul{margin-top:0;margin-left:16px;list-style-type:disc}.aws-compatibility-notice.error{clear:both;margin:5px 20px 5px 0}.as3cf-bucket-error span.title{font-weight:bold}.as3cf-invalid-bucket-name,.as3cf-validation-error{display:block;margin-top:2px;font-size:12px;color:#a00}.as3cf-notice-toggle-content{max-height:100px;overflow-y:scroll}.as3cf-notice-toggle-content .as3cf-notice-toggle-list{margin-top:0;margin-left:0;padding-left:40px;color:#dc3232}
assets/img/os3-banner.svg ADDED
@@ -0,0 +1 @@
1
+ <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 612 612"><defs><style>.cls-1{fill:#f8cfae;}.cls-2{fill:#ea705e;}.cls-3{fill:#4e0d33;}</style></defs><title>os3-banner</title><g id="Layer.-1"><rect class="cls-1" width="612" height="612"/><path class="cls-2" d="M225.29,365.31a58.21,58.21,0,0,1,7-13.23c.21-.29.39-.6.6-.89a32.4,32.4,0,0,1-3.75-3.93c-4.42-5.48-6.59-11.94-6.18-17.88a17.86,17.86,0,0,1,3.8-10.09l13.7,11,8.07,6.46c.76-.47,1.55-.89,2.34-1.33a54.6,54.6,0,0,1,12.61-5.05c.53-.14,1-.31,1.6-.44a54.72,54.72,0,0,1,14.32-1.35h0A63.68,63.68,0,0,0,164.13,370.5h59.51c.47-1.75,1-3.46,1.64-5.15"/><path class="cls-2" d="M317.33,478.61s-3.45,6.56-21.24,13.19c-2.36.89-4.95,1.77-7.83,2.63l-.83.24c-.68.2-1.32.37-1.94.53l-1.05.28-17,5.64-18.3,6.1-.56.18a16.93,16.93,0,0,1-.85-6.16,20.22,20.22,0,0,1,2-7.78A23.79,23.79,0,0,1,251,491.2c.4-.66.85-1.31,1.33-1.95A28.25,28.25,0,0,1,259,483a31.61,31.61,0,0,1,16.93-5.59,28.24,28.24,0,0,1,8.68,1,23.66,23.66,0,0,1,2.73.92,38.42,38.42,0,0,0,5.54-5.79,32.35,32.35,0,0,0,4.87-8.77,26.47,26.47,0,0,0,.85-2.75l5.7,5,13.1,11.55ZM193.77,494.8a6.65,6.65,0,0,1-.11,1,6.51,6.51,0,0,1-12.86,0,5.57,5.57,0,0,1-.11-1,6.28,6.28,0,0,1,.64-2.76,6.54,6.54,0,0,1,12.44,2.76m-29.28-58.95h-10a6.61,6.61,0,0,1-1.09-.12,6.69,6.69,0,0,1-1.58-.47,6.53,6.53,0,0,1,2.67-12.49h10a6.54,6.54,0,0,1,0,13.08M338.7,488.34h0l-46.42-41.52-3.88-3.46a54.41,54.41,0,0,1-19.09.07A55.77,55.77,0,0,1,249.49,436l-.21-.12H210.05a6.54,6.54,0,0,1,0-13.08h30.79a6.54,6.54,0,0,0,0-13.08H133.11a6.54,6.54,0,0,1,0-13.08h92.61a6.54,6.54,0,0,0,.51-13.07H65.33c.18.7.37,1.39.53,2.1a76,76,0,0,1-.76,37.13H86.75a6.56,6.56,0,0,1,6.54,6.54,6.46,6.46,0,0,1-1.69,4.36,6.62,6.62,0,0,1-4.14,2.11H48.9a6.55,6.55,0,0,0-5.7,3.41,5.87,5.87,0,0,0-.42,1,6.1,6.1,0,0,0-.42,2.11,6.55,6.55,0,0,0,6.54,6.53H200.6a6.54,6.54,0,1,1,0,13.08H44.07a6.54,6.54,0,0,0,0,13.08h76.61a6.57,6.57,0,0,1,6,3.94,6.35,6.35,0,0,1-.56,6.18,6.6,6.6,0,0,1-3.91,2.76,6.3,6.3,0,0,1-1.5.2H86.54a5.58,5.58,0,0,0-.82.11,5.12,5.12,0,0,0-1.22.33,6.33,6.33,0,0,0-1,.52,6.55,6.55,0,0,0-3.1,5.54V495a6.24,6.24,0,0,0,1.27,3.51c.14.18.27.37.42.53a6.46,6.46,0,0,0,4.8,2.13h61.63a6.51,6.51,0,0,1,5.39,2.87,6.45,6.45,0,0,1-.72,8.22v.07l-.08.06a6.48,6.48,0,0,1-4.54,1.86H116a6.54,6.54,0,0,0,0,13.08h6.43c.86,0,1.7.06,2.55.11h1.1c.68.07,1.36.17,2,.28a35.37,35.37,0,0,1,8.36,2.4,34.63,34.63,0,0,1,18.7,19.65,32.79,32.79,0,0,1,1.36,4.46,2.94,2.94,0,0,0,.14.64c.47-.1,1-.17,1.42-.25a34.68,34.68,0,0,1,7.74-.45,69.31,69.31,0,0,1,23.47-13.62c1-.33,2-.63,3-.93l.82-.22c1-.28,2-.54,3-.77A68.54,68.54,0,0,1,245.61,546a69.71,69.71,0,0,1,10.43,7.3A68.89,68.89,0,0,1,267,565c1.44-.07,2.88-.08,4.31-.1,3.72,0,7.41.08,11.07.37,3,.23,6,.54,8.9,1,1.18.18,2.33.44,3.49.65,3,.54,5.95,1.2,8.87,2,1.16.31,2.33.56,3.48.89l.39.12.63.19A74.43,74.43,0,0,1,335,556.61c1-.28,2.05-.57,3.09-.8a74.42,74.42,0,0,1,40.4,2,73,73,0,0,0-51.42-47.07,74.74,74.74,0,0,0,19.29-20.46l-.93-.23-6.75-1.66Z"/><path class="cls-2" d="M356.15,433.66A74.05,74.05,0,0,0,341,402.91c-.58-.73-1.17-1.45-1.79-2.17-.23-.27-.47-.53-.71-.8-.45-.52-.9-1-1.36-1.53-.79-.84-1.61-1.63-2.42-2.42-.36-.34-.7-.71-1.06-1.05a71.65,71.65,0,0,0-21.5-14c-16.27-6.8-34-6.8-48.66.36-.52.25-1,.46-1.56.74a59.79,59.79,0,0,1,19.34-.63c14.53,1.8,29.63,8.51,42.48,20a83.64,83.64,0,0,1,17.44,21.73c6.8,12.23,9.83,25.39,8.84,37.58a49.66,49.66,0,0,1-4,16.21c.22-.19.47-.34.69-.52.49-.38,1-.76,1.49-1.11a28.56,28.56,0,0,1,4.86-2.49c.55-.23,1.08-.49,1.64-.69h0a74.46,74.46,0,0,0,3.13-26.66h0a75.52,75.52,0,0,0-1.72-11.78"/><path class="cls-2" d="M288.05,298a8.26,8.26,0,1,0-9.91-6.21,8.26,8.26,0,0,0,9.91,6.21h0"/><path class="cls-2" d="M149.87,336.92a5.25,5.25,0,1,0-6.29-3.95,5.26,5.26,0,0,0,6.29,3.95"/><path class="cls-3" d="M164.49,422.77h-10a6.53,6.53,0,0,0-2.67,12.49,6.83,6.83,0,0,0,1.58.47,6.61,6.61,0,0,0,1.09.12h10a6.54,6.54,0,0,0,0-13.08"/><path class="cls-3" d="M187.23,488.26a6.54,6.54,0,0,0-5.9,3.77,6.42,6.42,0,0,0-.64,2.76h0a6.64,6.64,0,0,0,.1,1,6.51,6.51,0,0,0,12.17,2,6.47,6.47,0,0,0,.7-2,5.56,5.56,0,0,0,.1-1h0a6.41,6.41,0,0,0-.63-2.76,6.54,6.54,0,0,0-5.9-3.77"/><path class="cls-3" d="M333.5,264.36l17.42,21.39h0L427,379.18h0v.05a31.21,31.21,0,0,1,6.93,6.93A31.9,31.9,0,0,1,416.14,437a31.5,31.5,0,0,1-24.65-4.57h0c-.13,0-25.3,2.71-33.61,13h0a75.52,75.52,0,0,0-1.72-11.78A74,74,0,0,0,341,402.91c-.58-.73-1.17-1.46-1.79-2.17-.23-.27-.47-.53-.71-.8-.45-.52-.9-1-1.36-1.54-.79-.84-1.61-1.62-2.43-2.41-.35-.34-.69-.71-1-1.05a71.84,71.84,0,0,0-21.5-14c-16.27-6.8-34-6.8-48.66.37-.52.25-1,.46-1.57.74a59.79,59.79,0,0,1,19.34-.63c14.54,1.8,29.64,8.52,42.49,20a83.64,83.64,0,0,1,17.44,21.73c6.8,12.23,9.83,25.39,8.84,37.59a49.29,49.29,0,0,1-4,16.2h0c.22-.19.47-.34.69-.52.49-.37,1-.76,1.5-1.1a28.56,28.56,0,0,1,4.85-2.51c.55-.22,1.07-.48,1.64-.68h0a36,36,0,0,1,20.23-.68c16.76,4.13,27.68,18.41,24.4,31.88l-53-13.07-.92-.23-6.75-1.66h0l-46.43-41.52-3.87-3.46a54.47,54.47,0,0,1-19.1.07A55.87,55.87,0,0,1,249.49,436l-.2-.12H210.06a6.54,6.54,0,0,1,0-13.08h30.78a6.54,6.54,0,0,0,0-13.08H133.11a6.54,6.54,0,1,1,0-13.07h92.61a6.54,6.54,0,0,0,0-13.08H65.33c.18.7.38,1.39.54,2.1a76.13,76.13,0,0,1-.77,37.13H86.75a6.52,6.52,0,0,1,.71,13H48.9a6.53,6.53,0,0,0-5.7,3.41,8.06,8.06,0,0,0-.84,3.11,6.55,6.55,0,0,0,6.54,6.53H200.6a6.54,6.54,0,1,1,0,13.08H44.07a6.54,6.54,0,0,0,0,13.08h76.61a6.57,6.57,0,0,1,6,3.94,6.35,6.35,0,0,1-.56,6.18,6.6,6.6,0,0,1-3.91,2.76,6.29,6.29,0,0,1-1.5.19H86.53a5.71,5.71,0,0,0-.83.11,5.09,5.09,0,0,0-1.2.33,6.33,6.33,0,0,0-1,.52,6.55,6.55,0,0,0-3.1,5.54v.36a7.4,7.4,0,0,0,.17,1.24,6.67,6.67,0,0,0,1.11,2.27,5.34,5.34,0,0,0,.41.53,6.46,6.46,0,0,0,4.8,2.13h61.63a6.57,6.57,0,0,1,5.4,2.87,6.47,6.47,0,0,1-.73,8.22v.07a.13.13,0,0,0-.07.06,6.56,6.56,0,0,1-4.55,1.86H116a6.54,6.54,0,0,0,0,13.08h6.43c.86,0,1.7.06,2.54.11h1.11c.68.07,1.36.17,2,.28a34.59,34.59,0,0,1,27.07,22.05,35.19,35.19,0,0,1,1.35,4.46c.06.21.09.43.14.65.47-.11,1-.18,1.43-.26a34.72,34.72,0,0,1,7.75-.45,69.07,69.07,0,0,1,23.46-13.61c1-.34,2-.64,3-.94l.82-.22c1-.28,2-.54,3-.76A68.82,68.82,0,0,1,267,565h0c1.44-.07,2.88-.08,4.31-.1,3.72,0,7.41.08,11.08.37,3,.23,5.95.54,8.89,1,1.18.18,2.33.44,3.49.65q4.49.83,8.87,2c1.16.31,2.34.56,3.48.89l.39.12.63.2A74.33,74.33,0,0,1,335,556.61c1-.28,2.06-.57,3.11-.8a74.38,74.38,0,0,1,40.39,2h0A74.81,74.81,0,0,1,427.77,612H0V326.76a75.56,75.56,0,0,1,14.33,3.05,76.55,76.55,0,0,1,20,9.72,76,76,0,0,1,26.34,30.93h163c.47-1.75,1-3.46,1.65-5.15a57.54,57.54,0,0,1,7-13.22c.21-.3.39-.61.6-.9a31,31,0,0,1-3.75-3.93c-4.42-5.47-6.59-11.94-6.18-17.88a17.76,17.76,0,0,1,3.8-10.08l13.7,11,8.07,6.45c.76-.47,1.55-.89,2.34-1.32a53.48,53.48,0,0,1,12.6-5.05c.54-.15,1.06-.32,1.61-.44a54.31,54.31,0,0,1,14.32-1.36h0a55,55,0,0,1,20,4.59h0c22.06,9.08,47.26,28.2,58.68,52.36h0v.07c.23.52.47,1,.7,1.57,2.43,5.08,10.51,19.81,19.36,11.53h0a32.06,32.06,0,0,1,8.35-15.16c-14.83-5.08-30.27-15.94-42.94-31.5-25.85-31.74-30.38-71-10.13-87.62ZM422.55,402.7a4.67,4.67,0,0,0,8,3.89,4.34,4.34,0,0,0,.56-.72,4.63,4.63,0,0,0-1-6.1,5.85,5.85,0,0,0-.49-.38,4.7,4.7,0,0,0-6.44,1.49,4.48,4.48,0,0,0-.61,1.54.3.3,0,0,1,0,.2c-.05.07,0,.06,0,.08Z"/><path class="cls-2" d="M424.68,407.34a4.72,4.72,0,0,0,5.89-.75,4.34,4.34,0,0,0,.56-.72,4.63,4.63,0,0,0-1-6.1c-.16-.13-.31-.26-.49-.38a4.64,4.64,0,0,0-7.05,3,.3.3,0,0,1,0,.2c-.05.07,0,.06,0,.08a4.69,4.69,0,0,0,2.13,4.64"/><path class="cls-3" d="M304.23,467.06l-5.69-5a27,27,0,0,1-.85,2.75,32.12,32.12,0,0,1-4.88,8.77,38.42,38.42,0,0,1-5.54,5.79,23.66,23.66,0,0,0-2.73-.92,28.24,28.24,0,0,0-8.68-1,31.57,31.57,0,0,0-16.93,5.6,28.44,28.44,0,0,0-6.62,6.24,19.91,19.91,0,0,0-1.34,2,24.35,24.35,0,0,0-1.21,2.25,20.22,20.22,0,0,0-2,7.78,16.93,16.93,0,0,0,.85,6.16l.55-.18,18.31-6.1,17-5.64,1-.28c.62-.15,1.27-.33,1.94-.53l.83-.24c2.88-.86,5.47-1.74,7.83-2.62,17.76-6.64,21.24-13.17,21.25-13.2h0l-13.11-11.55Z"/><path class="cls-2" d="M427,379.18h0L364.2,269.89a31.73,31.73,0,0,0-13.27,15.87h0Z"/><path class="cls-2" d="M66.93,346.46c-1-1.31-2.1-2.57-3.22-3.79a24.46,24.46,0,0,0-7.25-6.75A63.11,63.11,0,0,0,3,323.77c-1,.23-2,.5-3,.78v2.23a75.21,75.21,0,0,1,14.3,3,76.86,76.86,0,0,1,20,9.72,76,76,0,0,1,26.34,30.93h91.58A63.73,63.73,0,0,0,66.93,346.46Z"/></g></svg>
assets/js/media.js CHANGED
@@ -112,7 +112,7 @@ var test = {};
112
event.preventDefault();
113
114
var toggle = $( '#as3cfpro-toggle-acl' );
115
- var currentACL = toggle.attr( 'data-currentACL' );
116
var newACL = as3cfpro_media.settings.private_acl;
117
118
toggle.hide();
@@ -124,7 +124,7 @@ var test = {};
124
125
wp.ajax.send( 'as3cfpro_update_acl', {
126
data: {
127
- _nonce: as3cfpro_media.nonces.update_acl,
128
id: this.model.get( 'id' ),
129
acl: newACL
130
}
@@ -155,7 +155,7 @@ var test = {};
155
156
toggle.text( response.acl_display );
157
toggle.attr( 'title', response.title );
158
- toggle.attr( 'data-currentACL', response.acl );
159
toggle.show();
160
}
161
} );
112
event.preventDefault();
113
114
var toggle = $( '#as3cfpro-toggle-acl' );
115
+ var currentACL = toggle.data( 'currentacl' );
116
var newACL = as3cfpro_media.settings.private_acl;
117
118
toggle.hide();
124
125
wp.ajax.send( 'as3cfpro_update_acl', {
126
data: {
127
+ _ajax_nonce: as3cfpro_media.nonces.singular_update_acl,
128
id: this.model.get( 'id' ),
129
acl: newACL
130
}
155
156
toggle.text( response.acl_display );
157
toggle.attr( 'title', response.title );
158
+ toggle.data( 'currentacl', response.acl );
159
toggle.show();
160
}
161
} );
assets/js/media.min.js CHANGED
@@ -1 +1 @@
1
- var test={};!function(a,b){var c=wp.media,d=c.view.Attachment.Details.TwoColumn;c.view.Attachment.Details.TwoColumn=d.extend({events:function(){return b.extend({},d.prototype.events,{"click .local-warning":"confirmS3Removal","click #as3cfpro-toggle-acl":"toggleACL"})},render:function(){this.fetchS3Details(this.model.get("id"))},fetchS3Details:function(a){wp.ajax.send("as3cf_get_attachment_s3_details",{data:{_nonce:as3cf_media.nonces.get_attachment_s3_details,id:a}}).done(b.bind(this.renderView,this))},renderView:function(a){d.prototype.render.apply(this),this.renderActionLinks(a),this.renderS3Details(a)},renderActionLinks:function(c){var d=c&&c.links||[],e=this.$el.find(".actions"),f=a("<div />",{"class":"s3-actions"}),g=[];b(d).each(function(a){g.push(a)}),f.append(g.join(" | ")),e.append(f)},renderS3Details:function(a){if(a&&a.s3object){var b=this.$el.find(".attachment-info .details"),c=this.generateDetails(a,["bucket","key","region","acl"]);b.append(c)}},generateDetails:function(a,c){var d="",e=b.template('<div class="<%= key %>"><strong><%= label %>:</strong> <%= value %></div>');return b(c).each(function(c){if(a.s3object[c]){var f=a.s3object[c];if("acl"===c&&(f=a.s3object[c].name,a.acl_toggle)){var g=b.template('<a href="#" id="as3cfpro-toggle-acl" title="<%= title %>" data-currentACL="<%= acl %>"><%= value %></a>');f=g({title:a.s3object[c].title,acl:a.s3object[c].acl,value:f})}d+=e({key:c,label:as3cf_media.strings[c],value:f})}}),d},confirmS3Removal:function(a){if(!confirm(as3cfpro_media.strings.local_warning))return a.preventDefault(),a.stopImmediatePropagation(),!1},toggleACL:function(c){c.preventDefault();var d=a("#as3cfpro-toggle-acl"),e=d.attr("data-currentACL"),f=as3cfpro_media.settings.private_acl;d.hide(),d.after('<span id="as3cfpro-updating">'+as3cfpro_media.strings.updating_acl+"</span>"),e===as3cfpro_media.settings.private_acl&&(f=as3cfpro_media.settings.default_acl),wp.ajax.send("as3cfpro_update_acl",{data:{_nonce:as3cfpro_media.nonces.update_acl,id:this.model.get("id"),acl:f}}).done(b.bind(this.updateACL,this)).fail(b.bind(this.renderACLError,this))},renderACLError:function(){a("#as3cfpro-updating").remove(),a("#as3cfpro-toggle-acl").show(),alert(as3cfpro_media.strings.change_acl_error)},updateACL:function(b){if(null==b.acl_display||null==b.title||null==b.acl||null==b.url)return void this.renderACLError();this.model.set("url",b.url),this.render();var c=a("#as3cfpro-toggle-acl");a("#as3cfpro-updating").remove(),c.text(b.acl_display),c.attr("title",b.title),c.attr("data-currentACL",b.acl),c.show()}})}(jQuery,_);
1
+ var test={};!function(a,b){var c=wp.media,d=c.view.Attachment.Details.TwoColumn;c.view.Attachment.Details.TwoColumn=d.extend({events:function(){return b.extend({},d.prototype.events,{"click .local-warning":"confirmS3Removal","click #as3cfpro-toggle-acl":"toggleACL"})},render:function(){this.fetchS3Details(this.model.get("id"))},fetchS3Details:function(a){wp.ajax.send("as3cf_get_attachment_s3_details",{data:{_nonce:as3cf_media.nonces.get_attachment_s3_details,id:a}}).done(b.bind(this.renderView,this))},renderView:function(a){d.prototype.render.apply(this),this.renderActionLinks(a),this.renderS3Details(a)},renderActionLinks:function(c){var d=c&&c.links||[],e=this.$el.find(".actions"),f=a("<div />",{"class":"s3-actions"}),g=[];b(d).each(function(a){g.push(a)}),f.append(g.join(" | ")),e.append(f)},renderS3Details:function(a){if(a&&a.s3object){var b=this.$el.find(".attachment-info .details"),c=this.generateDetails(a,["bucket","key","region","acl"]);b.append(c)}},generateDetails:function(a,c){var d="",e=b.template('<div class="<%= key %>"><strong><%= label %>:</strong> <%= value %></div>');return b(c).each(function(c){if(a.s3object[c]){var f=a.s3object[c];if("acl"===c&&(f=a.s3object[c].name,a.acl_toggle)){var g=b.template('<a href="#" id="as3cfpro-toggle-acl" title="<%= title %>" data-currentACL="<%= acl %>"><%= value %></a>');f=g({title:a.s3object[c].title,acl:a.s3object[c].acl,value:f})}d+=e({key:c,label:as3cf_media.strings[c],value:f})}}),d},confirmS3Removal:function(a){if(!confirm(as3cfpro_media.strings.local_warning))return a.preventDefault(),a.stopImmediatePropagation(),!1},toggleACL:function(c){c.preventDefault();var d=a("#as3cfpro-toggle-acl"),e=d.data("currentacl"),f=as3cfpro_media.settings.private_acl;d.hide(),d.after('<span id="as3cfpro-updating">'+as3cfpro_media.strings.updating_acl+"</span>"),e===as3cfpro_media.settings.private_acl&&(f=as3cfpro_media.settings.default_acl),wp.ajax.send("as3cfpro_update_acl",{data:{_ajax_nonce:as3cfpro_media.nonces.singular_update_acl,id:this.model.get("id"),acl:f}}).done(b.bind(this.updateACL,this)).fail(b.bind(this.renderACLError,this))},renderACLError:function(){a("#as3cfpro-updating").remove(),a("#as3cfpro-toggle-acl").show(),alert(as3cfpro_media.strings.change_acl_error)},updateACL:function(b){if(null==b.acl_display||null==b.title||null==b.acl||null==b.url)return void this.renderACLError();this.model.set("url",b.url),this.render();var c=a("#as3cfpro-toggle-acl");a("#as3cfpro-updating").remove(),c.text(b.acl_display),c.attr("title",b.title),c.data("currentacl",b.acl),c.show()}})}(jQuery,_);
assets/js/script.js CHANGED
@@ -30,7 +30,7 @@
30
31
$switch.toggleClass( 'on' ).find( 'span' ).toggleClass( 'checked' );
32
var switchOn = $switch.find( 'span.on' ).hasClass( 'checked' );
33
- $checkbox.attr( 'checked', switchOn ).trigger( 'change' );
34
}
35
36
/**
@@ -45,10 +45,10 @@
45
46
if ( pattern.test( $input.val() ) ) {
47
$error.show();
48
- $submit.attr( 'disabled', true );
49
} else {
50
$error.hide();
51
- $submit.attr( 'disabled', false );
52
}
53
}
54
@@ -68,9 +68,9 @@
68
$activeTab.show();
69
$( '.nav-tab' ).removeClass( 'nav-tab-active' );
70
$( 'a.nav-tab[data-tab="' + hash + '"]' ).addClass( 'nav-tab-active' );
71
- $( '.aws-main' ).attr( 'data-tab', hash );
72
- if ( $activeTab.attr( 'data-prefix' ) ) {
73
- as3cfModal.prefix = $activeTab.attr( 'data-prefix' );
74
}
75
if ( ! persist_updated_notice ) {
76
$( '.as3cf-updated' ).removeClass( 'show' );
@@ -167,7 +167,7 @@
167
return;
168
}
169
170
- $bucketList.html( '<li class="loading">' + $bucketList.attr( 'data-working' ) + '</li>' );
171
172
var data = {
173
action: as3cfModal.prefix + '-get-buckets',
@@ -264,7 +264,7 @@
264
return;
265
}
266
$( '.as3cf-bucket-error' ).hide();
267
- $manualBucketButton.text( $manualBucketButton.attr( 'data-working' ) );
268
$manualBucketButton.prop( 'disabled', true );
269
270
var data = {
@@ -324,14 +324,14 @@
324
return;
325
}
326
327
- var previousBucket = $( '.as3cf-bucket-list a.selected' ).attr( 'data-bucket' );
328
329
$( '.as3cf-bucket-list a' ).removeClass( 'selected' );
330
$link.addClass( 'selected' );
331
332
$bucketList.addClass( 'saving' );
333
$link.find( '.spinner' ).show().css( 'visibility', 'visible' );
334
- var bucketName = $link.attr( 'data-bucket' );
335
336
var data = {
337
action: as3cfModal.prefix + '-save-bucket',
@@ -379,15 +379,15 @@
379
var $manualBucketForm = $( '.as3cf-bucket-container.' + as3cfModal.prefix + ' .as3cf-manual-save-bucket-form' );
380
381
if ( $createBucketForm.find( '.as3cf-bucket-name' ).val().length < 3 ) {
382
- $createBucketForm.find( 'button[type=submit]' ).attr( 'disabled', true );
383
} else {
384
- $createBucketForm.find( 'button[type=submit]' ).attr( 'disabled', false );
385
}
386
387
if ( $manualBucketForm.find( '.as3cf-bucket-name' ).val().length < 3 ) {
388
- $manualBucketForm.find( 'button[type=submit]' ).attr( 'disabled', true );
389
} else {
390
- $manualBucketForm.find( 'button[type=submit]' ).attr( 'disabled', false );
391
}
392
},
393
@@ -480,7 +480,7 @@
480
var origButtonText = $createBucketButton.text();
481
482
$( '.as3cf-bucket-error' ).hide();
483
- $createBucketButton.text( $createBucketButton.attr( 'data-working' ) );
484
$createBucketButton.prop( 'disabled', true );
485
486
var data = {
@@ -512,9 +512,9 @@
512
513
// Tidy up create bucket form
514
$( '.as3cf-bucket-select-region' ).hide();
515
- $( '.as3cf-bucket-select-region' ).removeAttr( 'selected' );
516
$createBucketInput.val( '' );
517
- $createBucketButton.attr( 'disabled', true );
518
519
// Make sure the bucket list will refresh the next time the modal loads
520
refreshBucketListOnLoad = true;
@@ -662,12 +662,9 @@
662
return;
663
}
664
665
- // Strip the # if still on the end of the URL
666
- if ( 'function' === typeof history.replaceState && '#' === location.href.slice( -1 ) ) {
667
- history.replaceState( {}, '', location.href.slice( 0, -1 ) );
668
- }
669
-
670
as3cf.tabs.toggle( location.hash.replace( '#', '' ), true );
671
}
672
673
$( document ).ready( function() {
@@ -679,7 +676,15 @@
679
/**
680
* Set the hashchange callback to update the rendered active tab.
681
*/
682
- window.onhashchange = renderCurrentTab;
683
684
// Move any compatibility errors below the nav tabs
685
var $navTabs = $( '.wrap.aws-main .nav-tab-wrapper' );
@@ -768,7 +773,7 @@
768
var $submit = $( '#' + $activeTab.attr( 'id' ) + ' form button[type="submit"]' );
769
770
if ( 'cloudfront' !== $input.val() ) {
771
- $submit.attr( 'disabled', false );
772
} else {
773
validateCustomDomain( $input.next( '.as3cf-setting' ).find( 'input[name="cloudfront"]' ) );
774
}
@@ -862,9 +867,9 @@
862
var $createBucketForm = $( '.as3cf-bucket-container.' + as3cfModal.prefix + ' .as3cf-create-bucket-form' );
863
864
if ( as3cf.buckets.isValidName( bucketName ) ) {
865
- $createBucketForm.find( 'button[type=submit]' ).removeAttr( 'disabled' );
866
} else {
867
- $createBucketForm.find( 'button[type=submit]' ).attr( 'disabled', true );
868
}
869
as3cf.buckets.updateNameNotice( bucketName );
870
} );
@@ -874,9 +879,9 @@
874
var $manualBucketForm = $( '.as3cf-bucket-container.' + as3cfModal.prefix + ' .as3cf-manual-save-bucket-form' );
875
876
if ( $manualBucketForm.find( '.as3cf-bucket-name' ).val().length < as3cf.buckets.validLength ) {
877
- $manualBucketForm.find( 'button[type=submit]' ).attr( 'disabled', true );
878
} else {
879
- $manualBucketForm.find( 'button[type=submit]' ).removeAttr( 'disabled' );
880
}
881
} );
882
30
31
$switch.toggleClass( 'on' ).find( 'span' ).toggleClass( 'checked' );
32
var switchOn = $switch.find( 'span.on' ).hasClass( 'checked' );
33
+ $checkbox.prop( 'checked', switchOn ).trigger( 'change' );
34
}
35
36
/**
45
46
if ( pattern.test( $input.val() ) ) {
47
$error.show();
48
+ $submit.prop( 'disabled', true );
49
} else {
50
$error.hide();
51
+ $submit.prop( 'disabled', false );
52
}
53
}
54
68
$activeTab.show();
69
$( '.nav-tab' ).removeClass( 'nav-tab-active' );
70
$( 'a.nav-tab[data-tab="' + hash + '"]' ).addClass( 'nav-tab-active' );
71
+ $( '.aws-main' ).data( 'tab', hash );
72
+ if ( $activeTab.data( 'prefix' ) ) {
73
+ as3cfModal.prefix = $activeTab.data( 'prefix' );
74
}
75
if ( ! persist_updated_notice ) {
76
$( '.as3cf-updated' ).removeClass( 'show' );
167
return;
168
}
169
170
+ $bucketList.html( '<li class="loading">' + $bucketList.data( 'working' ) + '</li>' );
171
172
var data = {
173
action: as3cfModal.prefix + '-get-buckets',
264
return;
265
}
266
$( '.as3cf-bucket-error' ).hide();
267
+ $manualBucketButton.text( $manualBucketButton.data( 'working' ) );
268
$manualBucketButton.prop( 'disabled', true );
269
270
var data = {
324
return;
325
}
326
327
+ var previousBucket = $( '.as3cf-bucket-list a.selected' ).data( 'bucket' );
328
329
$( '.as3cf-bucket-list a' ).removeClass( 'selected' );
330
$link.addClass( 'selected' );
331
332
$bucketList.addClass( 'saving' );
333
$link.find( '.spinner' ).show().css( 'visibility', 'visible' );
334
+ var bucketName = $link.data( 'bucket' );
335
336
var data = {
337
action: as3cfModal.prefix + '-save-bucket',
379
var $manualBucketForm = $( '.as3cf-bucket-container.' + as3cfModal.prefix + ' .as3cf-manual-save-bucket-form' );
380
381
if ( $createBucketForm.find( '.as3cf-bucket-name' ).val().length < 3 ) {
382
+ $createBucketForm.find( 'button[type=submit]' ).prop( 'disabled', true );
383
} else {
384
+ $createBucketForm.find( 'button[type=submit]' ).prop( 'disabled', false );
385
}
386
387
if ( $manualBucketForm.find( '.as3cf-bucket-name' ).val().length < 3 ) {
388
+ $manualBucketForm.find( 'button[type=submit]' ).prop( 'disabled', true );
389
} else {
390
+ $manualBucketForm.find( 'button[type=submit]' ).prop( 'disabled', false );
391
}
392
},
393
480
var origButtonText = $createBucketButton.text();
481
482
$( '.as3cf-bucket-error' ).hide();
483
+ $createBucketButton.text( $createBucketButton.data( 'working' ) );
484
$createBucketButton.prop( 'disabled', true );
485
486
var data = {
512
513
// Tidy up create bucket form
514
$( '.as3cf-bucket-select-region' ).hide();
515
+ $( '.as3cf-bucket-select-region' ).prop( 'selected', false );
516
$createBucketInput.val( '' );
517
+ $createBucketButton.prop( 'disabled', true );
518
519
// Make sure the bucket list will refresh the next time the modal loads
520
refreshBucketListOnLoad = true;
662
return;
663
}
664
665
as3cf.tabs.toggle( location.hash.replace( '#', '' ), true );
666
+
667
+ $( document ).trigger( 'as3cf.tabRendered', [ location.hash.replace( '#', '' ) ] );
668
}
669
670
$( document ).ready( function() {
676
/**
677
* Set the hashchange callback to update the rendered active tab.
678
*/
679
+ window.onhashchange = function( event ) {
680
+
681
+ // Strip the # if still on the end of the URL
682
+ if ( 'function' === typeof history.replaceState && '#' === location.href.slice( -1 ) ) {
683
+ history.replaceState( {}, '', location.href.slice( 0, -1 ) );
684
+ }
685
+
686
+ renderCurrentTab();
687
+ };
688
689
// Move any compatibility errors below the nav tabs
690
var $navTabs = $( '.wrap.aws-main .nav-tab-wrapper' );
773
var $submit = $( '#' + $activeTab.attr( 'id' ) + ' form button[type="submit"]' );
774
775
if ( 'cloudfront' !== $input.val() ) {
776
+ $submit.prop( 'disabled', false );
777
} else {
778
validateCustomDomain( $input.next( '.as3cf-setting' ).find( 'input[name="cloudfront"]' ) );
779
}
867
var $createBucketForm = $( '.as3cf-bucket-container.' + as3cfModal.prefix + ' .as3cf-create-bucket-form' );
868
869
if ( as3cf.buckets.isValidName( bucketName ) ) {
870
+ $createBucketForm.find( 'button[type=submit]' ).prop( 'disabled', false );
871
} else {
872
+ $createBucketForm.find( 'button[type=submit]' ).prop( 'disabled', true );
873
}
874
as3cf.buckets.updateNameNotice( bucketName );
875
} );
879
var $manualBucketForm = $( '.as3cf-bucket-container.' + as3cfModal.prefix + ' .as3cf-manual-save-bucket-form' );
880
881
if ( $manualBucketForm.find( '.as3cf-bucket-name' ).val().length < as3cf.buckets.validLength ) {
882
+ $manualBucketForm.find( 'button[type=submit]' ).prop( 'disabled', true );
883
} else {
884
+ $manualBucketForm.find( 'button[type=submit]' ).prop( 'disabled', false );
885
}
886
} );
887
assets/js/script.min.js CHANGED
@@ -1 +1 @@
1
- !function(a,b){function c(b){return a("#"+b+" .as3cf-main-settings form").find("input:not(.no-compare)").serialize()}function d(a){var b=k.find("#"+a),c=b.find("input[type=checkbox]");b.toggleClass("on").find("span").toggleClass("checked");var d=b.find("span.on").hasClass("checked");c.attr("checked",d).trigger("change")}function e(b){var c=b.next(".as3cf-validation-error"),d=a("#"+k.attr("id")+' form button[type="submit"]'),e=/[^a-zA-Z0-9\.\-]/;e.test(b.val())?(c.show(),d.attr("disabled",!0)):(c.hide(),d.attr("disabled",!1))}function f(){var c=a("#"+b.prefix+"-bucket").val(),d=k.find('input[name="object-prefix"]'),e=d.val();""!==e&&(e="&prefix="+encodeURIComponent(e));var f=as3cf.aws_bucket_link+c+e;a("#"+b.prefix+"-view-bucket").attr("href",f)}function g(){a(".as3cf-url-preview").html("Generating...");var b={_nonce:as3cf.nonces.get_url_preview};a.each(a("#tab-"+as3cf.tabs.defaultTab+" .as3cf-main-settings form").serializeArray(),function(c,d){var e=d.name,f=d.value;e=e.replace("[]",""),b[e]=void 0===b[e]?f:a.isArray(b[e])?b[e].concat(f):[b[e],f]}),b.action="as3cf-get-url-preview",a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:b,error:function(a,b,c){alert(as3cf.strings.get_url_preview_error+c)},success:function(b,c,d){"undefined"!=typeof b.success?a(".as3cf-url-preview").html(b.url):alert(as3cf.strings.get_url_preview_error+b.error)}})}function h(){a("#as3cf-remove-local-file").is(":checked")&&a("#as3cf-serve-from-s3").is(":not(:checked)")?a("#as3cf-lost-files-notice").show():a("#as3cf-lost-files-notice").hide()}function i(){a("#as3cf-remove-local-file").is(":checked")?a("#as3cf-remove-local-notice").show():a("#as3cf-remove-local-notice").hide()}function j(){return"#"+as3cf.tabs.defaultTab===location.hash?void(location.hash=""):("function"==typeof history.replaceState&&"#"===location.href.slice(-1)&&history.replaceState({},"",location.href.slice(0,-1)),void as3cf.tabs.toggle(location.hash.replace("#",""),!0))}var k,l={},m=/[^a-z0-9.-]/,n=!1,o=a(".as3cf-tab");as3cf.tabs={defaultTab:"media",toggle:function(c,d){c=as3cf.tabs.sanitizeHash(c),o.hide(),k=a("#tab-"+c),k.show(),a(".nav-tab").removeClass("nav-tab-active"),a('a.nav-tab[data-tab="'+c+'"]').addClass("nav-tab-active"),a(".aws-main").attr("data-tab",c),k.attr("data-prefix")&&(b.prefix=k.attr("data-prefix")),d||a(".as3cf-updated").removeClass("show"),"support"===c&&as3cf.tabs.getDiagnosticInfo()},getDiagnosticInfo:function(){var b=a(".debug-log-textarea");b.html(as3cf.strings.get_diagnostic_info);var c={action:"as3cf-get-diagnostic-info",_nonce:as3cf.nonces.get_diagnostic_info};a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:c,error:function(a,c,d){b.html(d)},success:function(a,c,d){"undefined"!=typeof a.success?b.html(a.diagnostic_info):(b.html(as3cf.strings.get_diagnostic_info_error),b.append(a.error))}})},sanitizeHash:function(b){var c=a("#tab-"+b);return 0===c.length&&(b=as3cf.tabs.defaultTab),b}},as3cf.buckets={validLength:3,bucketSelectLock:!1,loadList:function(c){"undefined"==typeof c&&(c=!1);var d=a(".as3cf-bucket-container."+b.prefix+" .as3cf-bucket-list"),e=a("#"+b.prefix+"-bucket").val();if(!1===c&&d.find("li").length>1)return a(".as3cf-bucket-list a").removeClass("selected"),a('.as3cf-bucket-list a[data-bucket="'+e+'"]').addClass("selected"),void this.scrollToSelected();d.html('<li class="loading">'+d.attr("data-working")+"</li>");var f={action:b.prefix+"-get-buckets",_nonce:window[b.prefix.replace(/-/g,"_")].nonces.get_buckets},g=this;a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:f,error:function(a,b,c){d.html(""),g.showError(as3cf.strings.get_buckets_error,c,"as3cf-bucket-select")},success:function(b,c,f){d.html(""),"undefined"!=typeof b.success?(a(".as3cf-bucket-error").hide(),a(b.buckets).each(function(a,b){var c=b.Name===e?"selected":"";d.append('<li><a class="'+c+'" href="#" data-bucket="'+b.Name+'"><span class="bucket"><span class="dashicons dashicons-portfolio"></span> '+b.Name+'</span><span class="spinner"></span></span></a></li>')}),g.scrollToSelected()):g.showError(as3cf.strings.get_buckets_error,b.error,"as3cf-bucket-select")}})},scrollToSelected:function(){if(a(".as3cf-bucket-list a.selected").length){var b=a("ul.as3cf-bucket-list li").first().position().top+150;a(".as3cf-bucket-list").animate({scrollTop:a("ul.as3cf-bucket-list li a.selected").position().top-b})}},resetModal:function(){var c=a(".as3cf-bucket-container."+b.prefix);!1===k.hasClass("as3cf-has-bucket")||"manual"===a("#"+b.prefix+"-bucket-select").val()?(c.find(".as3cf-bucket-manual").show().siblings().hide(),c.find(".bucket-actions.manual").show().siblings(".bucket-actions").hide()):(c.find(".as3cf-bucket-select").show().siblings().hide(),c.find(".bucket-actions.select").show().siblings(".bucket-actions").hide(),this.loadList(n),n=!1),c.find(".as3cf-bucket-error").hide();var d=a("#"+b.prefix+"-bucket").val();c.find(".as3cf-bucket-manual .as3cf-bucket-name").val(d),this.bucketSelectLock=!1},saveManual:function(){var c=a(".as3cf-bucket-container."+b.prefix+" .as3cf-manual-save-bucket-form"),d=c.find(".as3cf-bucket-name"),e=c.find("button[type=submit]"),f=d.val(),g=e.first().text();if(f===a("#"+b.prefix+"-active-bucket").text())return a(".as3cf-bucket-error").hide(),k.addClass("as3cf-has-bucket"),void b.close();a(".as3cf-bucket-error").hide(),e.text(e.attr("data-working")),e.prop("disabled",!0);var h={action:b.prefix+"-manual-save-bucket",bucket_name:f,_nonce:window[b.prefix.replace(/-/g,"_")].nonces.manual_bucket},i=this;a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:h,error:function(a,b,c){e.text(g),i.showError(as3cf.strings.save_bucket_error,c,"as3cf-bucket-manual")},success:function(c,d,h){e.text(g),e.prop("disabled",!1),"undefined"!=typeof c.success?(i.set(f,c.region,c.can_write),a("#"+b.prefix+"-bucket-select").val("manual"),a(".as3cf-bucket-list a").removeClass("selected").filter('[data-bucket="'+f+'"]').addClass("selected"),n=!0):i.showError(as3cf.strings.save_bucket_error,c.error,"as3cf-bucket-manual")}})},saveSelected:function(c){var d=a(".as3cf-bucket-list");if(!this.bucketSelectLock){if(this.bucketSelectLock=!0,c.hasClass("selected"))return k.addClass("as3cf-has-bucket"),void b.close();var e=a(".as3cf-bucket-list a.selected").attr("data-bucket");a(".as3cf-bucket-list a").removeClass("selected"),c.addClass("selected"),d.addClass("saving"),c.find(".spinner").show().css("visibility","visible");var f=c.attr("data-bucket"),g={action:b.prefix+"-save-bucket",bucket_name:f,_nonce:window[b.prefix.replace(/-/g,"_")].nonces.save_bucket},h=this;a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:g,error:function(b,c,f){d.removeClass("saving"),h.showError(as3cf.strings.save_bucket_error,f,"as3cf-bucket-select"),a(".as3cf-bucket-list a").removeClass("selected"),a('.as3cf-bucket-list a[data-bucket="'+e+'"]').addClass("selected")},success:function(g,i,j){c.find(".spinner").hide().css("visibility","hidden"),d.removeClass("saving"),"undefined"!=typeof g.success?(h.set(f,g.region,g.can_write),a("#"+b.prefix+"-bucket-select").val("")):(h.showError(as3cf.strings.save_bucket_error,g.error,"as3cf-bucket-select"),a(".as3cf-bucket-list a").removeClass("selected"),a('.as3cf-bucket-list a[data-bucket="'+e+'"]').addClass("selected"))}})}},disabledButtons:function(){if(0!==a(".as3cf-bucket-container."+b.prefix+" .as3cf-create-bucket-form").length){var c=a(".as3cf-bucket-container."+b.prefix+" .as3cf-create-bucket-form"),d=a(".as3cf-bucket-container."+b.prefix+" .as3cf-manual-save-bucket-form");c.find(".as3cf-bucket-name").val().length<3?c.find("button[type=submit]").attr("disabled",!0):c.find("button[type=submit]").attr("disabled",!1),d.find(".as3cf-bucket-name").val().length<3?d.find("button[type=submit]").attr("disabled",!0):d.find("button[type=submit]").attr("disabled",!1)}},showError:function(b,c,d){var e=a(".as3cf-bucket-container").children(":visible"),f=e.find(".as3cf-bucket-error");d="undefined"==typeof d?null:d,d&&!e.hasClass(d)||(f.find("span.title").html(b+" &mdash;"),f.find("span.message").html(c),f.show(),this.bucketSelectLock=!1)},set:function(e,h,i){var j=a(".as3cf-bucket-container."+b.prefix+" .as3cf-manual-save-bucket-form"),m=a("#"+b.prefix+"-active-bucket");if("as3cf"===b.prefix&&0===m.text().trim().length){d("as3cf-copy-to-s3-wrap"),d("as3cf-serve-from-s3-wrap");var n=k.attr("id");l[n]=c(n)}a(".as3cf-error.fatal").hide(),m.text(e),j.find(".as3cf-bucket-name").val(e),a("#"+b.prefix+"-bucket").val(e),a("#"+b.prefix+"-region").val(h),a(".updated").not(".as3cf-notice").show(),k.addClass("as3cf-has-bucket"),k.find(".as3cf-can-write-error").toggle(!i),k.find(".as3cf-bucket-error").hide(),"as3cf"===b.prefix&&g(),f(),b.close(function(){k.trigger("bucket-change",[i]),as3cf.buckets.bucketSelectLock=!1})},create:function(){var c=a(".as3cf-bucket-container."+b.prefix+" .as3cf-create-bucket-form"),d=c.find(".as3cf-bucket-name"),e=c.find(".bucket-create-region"),f=c.find("button[type=submit]"),g=d.val(),h=f.text();a(".as3cf-bucket-error").hide(),f.text(f.attr("data-working")),f.prop("disabled",!0);var i={action:b.prefix+"-create-bucket",bucket_name:g,_nonce:window[b.prefix.replace(/-/g,"_")].nonces.create_bucket};e.val()&&(i.region=e.val());var j=this;a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:i,error:function(a,b,c){f.text(h),j.showError(as3cf.strings.create_bucket_error,c,"as3cf-bucket-create")},success:function(b,c,e){f.text(h),f.prop("disabled",!1),"undefined"!=typeof b.success?(j.set(g,b.region,b.can_write),a(".as3cf-bucket-select-region").hide(),a(".as3cf-bucket-select-region").removeAttr("selected"),d.val(""),f.attr("disabled",!0),n=!0):j.showError(as3cf.strings.create_bucket_error,b.error,"as3cf-bucket-create")}})},isValidName:function(a){return!(a.length<3||a.length>63)&&!0!==m.test(a)},updateNameNotice:function(b){var c=null;!0===m.test(b)?c=as3cf.strings.create_bucket_invalid_chars:b.length<3?c=as3cf.strings.create_bucket_name_short:b.length>63&&(c=as3cf.strings.create_bucket_name_long),c&&b.length>0?a(".as3cf-invalid-bucket-name").html(c):a(".as3cf-invalid-bucket-name").html("")}},a(document).ready(function(){j(),window.onhashchange=j;var m=a(".wrap.aws-main .nav-tab-wrapper");a(".aws-compatibility-notice, div.updated, div.error, div.notice").not(".below-h2, .inline").insertAfter(m),o.length&&o.each(function(a,b){l[b.id]=c(b.id)}),a(window).on("beforeunload.as3cf-settings",function(){if(!a.isEmptyObject(l)){var b=k.attr("id");return c(b)!==l[b]?as3cf.strings.save_alert:void 0}}),a(document).on("submit",".as3cf-main-settings form",function(b){a(window).off("beforeunload.as3cf-settings")}),a(".as3cf-switch").on("click",function(b){a(this).hasClass("disabled")||d(a(this).attr("id"))}),o.on("change",".sub-toggle",function(b){var c=a(this).attr("id");a(".as3cf-setting."+c).toggleClass("hide")}),a(".as3cf-domain").on("change",'input[type="radio"]',function(b){var c=a(this).closest('input:radio[name="domain"]:checked'),d=c.val(),e=a(this).parents(".as3cf-domain").find(".as3cf-setting.cloudfront"),f="cloudfront"===d;e.toggleClass("hide",!f)}),a(".url-preview").on("change","input",function(a){g()}),h(),a("#as3cf-serve-from-s3,#as3cf-remove-local-file").on("change",function(a){h()}),i(),a("#as3cf-remove-local-file").on("change",function(a){i()}),a('.as3cf-setting input[type="text"]').keypress(function(a){if(13===a.which)return a.preventDefault(),!1}),a('input[name="cloudfront"]').on("keyup",function(b){e(a(this))}),a('input[name="domain"]').on("change",function(b){var c=a(this),d=a("#"+k.attr("id")+' form button[type="submit"]');"cloudfront"!==c.val()?d.attr("disabled",!1):e(c.next(".as3cf-setting").find('input[name="cloudfront"]'))}),a('input[name="object-prefix"]').on("change",function(a){f()}),a("#tab-media > .as3cf-bucket-error").detach().insertAfter(".as3cf-bucket-container h3"),a("body").on("click",".bucket-action-manual",function(c){c.preventDefault(),a(".as3cf-bucket-container."+b.prefix+" .as3cf-bucket-manual").show().siblings().hide()}),a("body").on("click",".bucket-action-browse",function(c){c.preventDefault(),a(".as3cf-bucket-container."+b.prefix+" .as3cf-bucket-select").show().siblings().hide(),as3cf.buckets.loadList(n),n=!1}),a("body").on("click",".bucket-action-create",function(c){c.preventDefault(),a(".as3cf-bucket-name").val(""),a(".as3cf-invalid-bucket-name").html(""),a(".as3cf-bucket-container."+b.prefix+" .as3cf-bucket-create").show().siblings().hide()}),a("body").on("click",".bucket-action-cancel",function(a){a.preventDefault(),as3cf.buckets.resetModal()}),a("body").on("click",".bucket-action-save",function(a){a.preventDefault(),as3cf.buckets.saveManual()}),a("body").on("click",'.as3cf-create-bucket-form button[type="submit"]',function(a){a.preventDefault(),as3cf.buckets.create()}),a("body").on("click",".bucket-action-refresh",function(a){a.preventDefault(),as3cf.buckets.loadList(!0)}),a("body").on("click",".as3cf-bucket-list a",function(b){b.preventDefault(),as3cf.buckets.saveSelected(a(this))}),a(".as3cf-bucket-container").on("click","a.js-link",function(b){return b.preventDefault(),window.open(a(this).attr("href")),!1}),a("body").on("as3cf-modal-open",function(c,d){if(".as3cf-bucket-container."+b.prefix===d){as3cf.buckets.resetModal();var e=a(".as3cf-bucket-manual h3").data("modal-title");a(".as3cf-bucket-manual h3").text(e),as3cf.buckets.disabledButtons()}}),as3cf.buckets.disabledButtons(),a("body").on("input keyup",".as3cf-create-bucket-form .as3cf-bucket-name",function(c){var d=a(this).val(),e=a(".as3cf-bucket-container."+b.prefix+" .as3cf-create-bucket-form");as3cf.buckets.isValidName(d)?e.find("button[type=submit]").removeAttr("disabled"):e.find("button[type=submit]").attr("disabled",!0),as3cf.buckets.updateNameNotice(d)}),a("body").on("input keyup",".as3cf-manual-save-bucket-form .as3cf-bucket-name",function(c){var d=a(".as3cf-bucket-container."+b.prefix+" .as3cf-manual-save-bucket-form");d.find(".as3cf-bucket-name").val().length<as3cf.buckets.validLength?d.find("button[type=submit]").attr("disabled",!0):d.find("button[type=submit]").removeAttr("disabled")})})}(jQuery,as3cfModal);
1
+ !function(a,b){function c(b){return a("#"+b+" .as3cf-main-settings form").find("input:not(.no-compare)").serialize()}function d(a){var b=k.find("#"+a),c=b.find("input[type=checkbox]");b.toggleClass("on").find("span").toggleClass("checked");var d=b.find("span.on").hasClass("checked");c.prop("checked",d).trigger("change")}function e(b){var c=b.next(".as3cf-validation-error"),d=a("#"+k.attr("id")+' form button[type="submit"]'),e=/[^a-zA-Z0-9\.\-]/;e.test(b.val())?(c.show(),d.prop("disabled",!0)):(c.hide(),d.prop("disabled",!1))}function f(){var c=a("#"+b.prefix+"-bucket").val(),d=k.find('input[name="object-prefix"]'),e=d.val();""!==e&&(e="&prefix="+encodeURIComponent(e));var f=as3cf.aws_bucket_link+c+e;a("#"+b.prefix+"-view-bucket").attr("href",f)}function g(){a(".as3cf-url-preview").html("Generating...");var b={_nonce:as3cf.nonces.get_url_preview};a.each(a("#tab-"+as3cf.tabs.defaultTab+" .as3cf-main-settings form").serializeArray(),function(c,d){var e=d.name,f=d.value;e=e.replace("[]",""),b[e]=void 0===b[e]?f:a.isArray(b[e])?b[e].concat(f):[b[e],f]}),b.action="as3cf-get-url-preview",a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:b,error:function(a,b,c){alert(as3cf.strings.get_url_preview_error+c)},success:function(b,c,d){"undefined"!=typeof b.success?a(".as3cf-url-preview").html(b.url):alert(as3cf.strings.get_url_preview_error+b.error)}})}function h(){a("#as3cf-remove-local-file").is(":checked")&&a("#as3cf-serve-from-s3").is(":not(:checked)")?a("#as3cf-lost-files-notice").show():a("#as3cf-lost-files-notice").hide()}function i(){a("#as3cf-remove-local-file").is(":checked")?a("#as3cf-remove-local-notice").show():a("#as3cf-remove-local-notice").hide()}function j(){return"#"+as3cf.tabs.defaultTab===location.hash?void(location.hash=""):(as3cf.tabs.toggle(location.hash.replace("#",""),!0),void a(document).trigger("as3cf.tabRendered",[location.hash.replace("#","")]))}var k,l={},m=/[^a-z0-9.-]/,n=!1,o=a(".as3cf-tab");as3cf.tabs={defaultTab:"media",toggle:function(c,d){c=as3cf.tabs.sanitizeHash(c),o.hide(),k=a("#tab-"+c),k.show(),a(".nav-tab").removeClass("nav-tab-active"),a('a.nav-tab[data-tab="'+c+'"]').addClass("nav-tab-active"),a(".aws-main").data("tab",c),k.data("prefix")&&(b.prefix=k.data("prefix")),d||a(".as3cf-updated").removeClass("show"),"support"===c&&as3cf.tabs.getDiagnosticInfo()},getDiagnosticInfo:function(){var b=a(".debug-log-textarea");b.html(as3cf.strings.get_diagnostic_info);var c={action:"as3cf-get-diagnostic-info",_nonce:as3cf.nonces.get_diagnostic_info};a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:c,error:function(a,c,d){b.html(d)},success:function(a,c,d){"undefined"!=typeof a.success?b.html(a.diagnostic_info):(b.html(as3cf.strings.get_diagnostic_info_error),b.append(a.error))}})},sanitizeHash:function(b){var c=a("#tab-"+b);return 0===c.length&&(b=as3cf.tabs.defaultTab),b}},as3cf.buckets={validLength:3,bucketSelectLock:!1,loadList:function(c){"undefined"==typeof c&&(c=!1);var d=a(".as3cf-bucket-container."+b.prefix+" .as3cf-bucket-list"),e=a("#"+b.prefix+"-bucket").val();if(!1===c&&d.find("li").length>1)return a(".as3cf-bucket-list a").removeClass("selected"),a('.as3cf-bucket-list a[data-bucket="'+e+'"]').addClass("selected"),void this.scrollToSelected();d.html('<li class="loading">'+d.data("working")+"</li>");var f={action:b.prefix+"-get-buckets",_nonce:window[b.prefix.replace(/-/g,"_")].nonces.get_buckets},g=this;a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:f,error:function(a,b,c){d.html(""),g.showError(as3cf.strings.get_buckets_error,c,"as3cf-bucket-select")},success:function(b,c,f){d.html(""),"undefined"!=typeof b.success?(a(".as3cf-bucket-error").hide(),a(b.buckets).each(function(a,b){var c=b.Name===e?"selected":"";d.append('<li><a class="'+c+'" href="#" data-bucket="'+b.Name+'"><span class="bucket"><span class="dashicons dashicons-portfolio"></span> '+b.Name+'</span><span class="spinner"></span></span></a></li>')}),g.scrollToSelected()):g.showError(as3cf.strings.get_buckets_error,b.error,"as3cf-bucket-select")}})},scrollToSelected:function(){if(a(".as3cf-bucket-list a.selected").length){var b=a("ul.as3cf-bucket-list li").first().position().top+150;a(".as3cf-bucket-list").animate({scrollTop:a("ul.as3cf-bucket-list li a.selected").position().top-b})}},resetModal:function(){var c=a(".as3cf-bucket-container."+b.prefix);!1===k.hasClass("as3cf-has-bucket")||"manual"===a("#"+b.prefix+"-bucket-select").val()?(c.find(".as3cf-bucket-manual").show().siblings().hide(),c.find(".bucket-actions.manual").show().siblings(".bucket-actions").hide()):(c.find(".as3cf-bucket-select").show().siblings().hide(),c.find(".bucket-actions.select").show().siblings(".bucket-actions").hide(),this.loadList(n),n=!1),c.find(".as3cf-bucket-error").hide();var d=a("#"+b.prefix+"-bucket").val();c.find(".as3cf-bucket-manual .as3cf-bucket-name").val(d),this.bucketSelectLock=!1},saveManual:function(){var c=a(".as3cf-bucket-container."+b.prefix+" .as3cf-manual-save-bucket-form"),d=c.find(".as3cf-bucket-name"),e=c.find("button[type=submit]"),f=d.val(),g=e.first().text();if(f===a("#"+b.prefix+"-active-bucket").text())return a(".as3cf-bucket-error").hide(),k.addClass("as3cf-has-bucket"),void b.close();a(".as3cf-bucket-error").hide(),e.text(e.data("working")),e.prop("disabled",!0);var h={action:b.prefix+"-manual-save-bucket",bucket_name:f,_nonce:window[b.prefix.replace(/-/g,"_")].nonces.manual_bucket},i=this;a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:h,error:function(a,b,c){e.text(g),i.showError(as3cf.strings.save_bucket_error,c,"as3cf-bucket-manual")},success:function(c,d,h){e.text(g),e.prop("disabled",!1),"undefined"!=typeof c.success?(i.set(f,c.region,c.can_write),a("#"+b.prefix+"-bucket-select").val("manual"),a(".as3cf-bucket-list a").removeClass("selected").filter('[data-bucket="'+f+'"]').addClass("selected"),n=!0):i.showError(as3cf.strings.save_bucket_error,c.error,"as3cf-bucket-manual")}})},saveSelected:function(c){var d=a(".as3cf-bucket-list");if(!this.bucketSelectLock){if(this.bucketSelectLock=!0,c.hasClass("selected"))return k.addClass("as3cf-has-bucket"),void b.close();var e=a(".as3cf-bucket-list a.selected").data("bucket");a(".as3cf-bucket-list a").removeClass("selected"),c.addClass("selected"),d.addClass("saving"),c.find(".spinner").show().css("visibility","visible");var f=c.data("bucket"),g={action:b.prefix+"-save-bucket",bucket_name:f,_nonce:window[b.prefix.replace(/-/g,"_")].nonces.save_bucket},h=this;a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:g,error:function(b,c,f){d.removeClass("saving"),h.showError(as3cf.strings.save_bucket_error,f,"as3cf-bucket-select"),a(".as3cf-bucket-list a").removeClass("selected"),a('.as3cf-bucket-list a[data-bucket="'+e+'"]').addClass("selected")},success:function(g,i,j){c.find(".spinner").hide().css("visibility","hidden"),d.removeClass("saving"),"undefined"!=typeof g.success?(h.set(f,g.region,g.can_write),a("#"+b.prefix+"-bucket-select").val("")):(h.showError(as3cf.strings.save_bucket_error,g.error,"as3cf-bucket-select"),a(".as3cf-bucket-list a").removeClass("selected"),a('.as3cf-bucket-list a[data-bucket="'+e+'"]').addClass("selected"))}})}},disabledButtons:function(){if(0!==a(".as3cf-bucket-container."+b.prefix+" .as3cf-create-bucket-form").length){var c=a(".as3cf-bucket-container."+b.prefix+" .as3cf-create-bucket-form"),d=a(".as3cf-bucket-container."+b.prefix+" .as3cf-manual-save-bucket-form");c.find(".as3cf-bucket-name").val().length<3?c.find("button[type=submit]").prop("disabled",!0):c.find("button[type=submit]").prop("disabled",!1),d.find(".as3cf-bucket-name").val().length<3?d.find("button[type=submit]").prop("disabled",!0):d.find("button[type=submit]").prop("disabled",!1)}},showError:function(b,c,d){var e=a(".as3cf-bucket-container").children(":visible"),f=e.find(".as3cf-bucket-error");d="undefined"==typeof d?null:d,d&&!e.hasClass(d)||(f.find("span.title").html(b+" &mdash;"),f.find("span.message").html(c),f.show(),this.bucketSelectLock=!1)},set:function(e,h,i){var j=a(".as3cf-bucket-container."+b.prefix+" .as3cf-manual-save-bucket-form"),m=a("#"+b.prefix+"-active-bucket");if("as3cf"===b.prefix&&0===m.text().trim().length){d("as3cf-copy-to-s3-wrap"),d("as3cf-serve-from-s3-wrap");var n=k.attr("id");l[n]=c(n)}a(".as3cf-error.fatal").hide(),m.text(e),j.find(".as3cf-bucket-name").val(e),a("#"+b.prefix+"-bucket").val(e),a("#"+b.prefix+"-region").val(h),a(".updated").not(".as3cf-notice").show(),k.addClass("as3cf-has-bucket"),k.find(".as3cf-can-write-error").toggle(!i),k.find(".as3cf-bucket-error").hide(),"as3cf"===b.prefix&&g(),f(),b.close(function(){k.trigger("bucket-change",[i]),as3cf.buckets.bucketSelectLock=!1})},create:function(){var c=a(".as3cf-bucket-container."+b.prefix+" .as3cf-create-bucket-form"),d=c.find(".as3cf-bucket-name"),e=c.find(".bucket-create-region"),f=c.find("button[type=submit]"),g=d.val(),h=f.text();a(".as3cf-bucket-error").hide(),f.text(f.data("working")),f.prop("disabled",!0);var i={action:b.prefix+"-create-bucket",bucket_name:g,_nonce:window[b.prefix.replace(/-/g,"_")].nonces.create_bucket};e.val()&&(i.region=e.val());var j=this;a.ajax({url:ajaxurl,type:"POST",dataType:"JSON",data:i,error:function(a,b,c){f.text(h),j.showError(as3cf.strings.create_bucket_error,c,"as3cf-bucket-create")},success:function(b,c,e){f.text(h),f.prop("disabled",!1),"undefined"!=typeof b.success?(j.set(g,b.region,b.can_write),a(".as3cf-bucket-select-region").hide(),a(".as3cf-bucket-select-region").prop("selected",!1),d.val(""),f.prop("disabled",!0),n=!0):j.showError(as3cf.strings.create_bucket_error,b.error,"as3cf-bucket-create")}})},isValidName:function(a){return!(a.length<3||a.length>63)&&!0!==m.test(a)},updateNameNotice:function(b){var c=null;!0===m.test(b)?c=as3cf.strings.create_bucket_invalid_chars:b.length<3?c=as3cf.strings.create_bucket_name_short:b.length>63&&(c=as3cf.strings.create_bucket_name_long),c&&b.length>0?a(".as3cf-invalid-bucket-name").html(c):a(".as3cf-invalid-bucket-name").html("")}},a(document).ready(function(){j(),window.onhashchange=function(a){"function"==typeof history.replaceState&&"#"===location.href.slice(-1)&&history.replaceState({},"",location.href.slice(0,-1)),j()};var m=a(".wrap.aws-main .nav-tab-wrapper");a(".aws-compatibility-notice, div.updated, div.error, div.notice").not(".below-h2, .inline").insertAfter(m),o.length&&o.each(function(a,b){l[b.id]=c(b.id)}),a(window).on("beforeunload.as3cf-settings",function(){if(!a.isEmptyObject(l)){var b=k.attr("id");return c(b)!==l[b]?as3cf.strings.save_alert:void 0}}),a(document).on("submit",".as3cf-main-settings form",function(b){a(window).off("beforeunload.as3cf-settings")}),a(".as3cf-switch").on("click",function(b){a(this).hasClass("disabled")||d(a(this).attr("id"))}),o.on("change",".sub-toggle",function(b){var c=a(this).attr("id");a(".as3cf-setting."+c).toggleClass("hide")}),a(".as3cf-domain").on("change",'input[type="radio"]',function(b){var c=a(this).closest('input:radio[name="domain"]:checked'),d=c.val(),e=a(this).parents(".as3cf-domain").find(".as3cf-setting.cloudfront"),f="cloudfront"===d;e.toggleClass("hide",!f)}),a(".url-preview").on("change","input",function(a){g()}),h(),a("#as3cf-serve-from-s3,#as3cf-remove-local-file").on("change",function(a){h()}),i(),a("#as3cf-remove-local-file").on("change",function(a){i()}),a('.as3cf-setting input[type="text"]').keypress(function(a){if(13===a.which)return a.preventDefault(),!1}),a('input[name="cloudfront"]').on("keyup",function(b){e(a(this))}),a('input[name="domain"]').on("change",function(b){var c=a(this),d=a("#"+k.attr("id")+' form button[type="submit"]');"cloudfront"!==c.val()?d.prop("disabled",!1):e(c.next(".as3cf-setting").find('input[name="cloudfront"]'))}),a('input[name="object-prefix"]').on("change",function(a){f()}),a("#tab-media > .as3cf-bucket-error").detach().insertAfter(".as3cf-bucket-container h3"),a("body").on("click",".bucket-action-manual",function(c){c.preventDefault(),a(".as3cf-bucket-container."+b.prefix+" .as3cf-bucket-manual").show().siblings().hide()}),a("body").on("click",".bucket-action-browse",function(c){c.preventDefault(),a(".as3cf-bucket-container."+b.prefix+" .as3cf-bucket-select").show().siblings().hide(),as3cf.buckets.loadList(n),n=!1}),a("body").on("click",".bucket-action-create",function(c){c.preventDefault(),a(".as3cf-bucket-name").val(""),a(".as3cf-invalid-bucket-name").html(""),a(".as3cf-bucket-container."+b.prefix+" .as3cf-bucket-create").show().siblings().hide()}),a("body").on("click",".bucket-action-cancel",function(a){a.preventDefault(),as3cf.buckets.resetModal()}),a("body").on("click",".bucket-action-save",function(a){a.preventDefault(),as3cf.buckets.saveManual()}),a("body").on("click",'.as3cf-create-bucket-form button[type="submit"]',function(a){a.preventDefault(),as3cf.buckets.create()}),a("body").on("click",".bucket-action-refresh",function(a){a.preventDefault(),as3cf.buckets.loadList(!0)}),a("body").on("click",".as3cf-bucket-list a",function(b){b.preventDefault(),as3cf.buckets.saveSelected(a(this))}),a(".as3cf-bucket-container").on("click","a.js-link",function(b){return b.preventDefault(),window.open(a(this).attr("href")),!1}),a("body").on("as3cf-modal-open",function(c,d){if(".as3cf-bucket-container."+b.prefix===d){as3cf.buckets.resetModal();var e=a(".as3cf-bucket-manual h3").data("modal-title");a(".as3cf-bucket-manual h3").text(e),as3cf.buckets.disabledButtons()}}),as3cf.buckets.disabledButtons(),a("body").on("input keyup",".as3cf-create-bucket-form .as3cf-bucket-name",function(c){var d=a(this).val(),e=a(".as3cf-bucket-container."+b.prefix+" .as3cf-create-bucket-form");as3cf.buckets.isValidName(d)?e.find("button[type=submit]").prop("disabled",!1):e.find("button[type=submit]").prop("disabled",!0),as3cf.buckets.updateNameNotice(d)}),a("body").on("input keyup",".as3cf-manual-save-bucket-form .as3cf-bucket-name",function(c){var d=a(".as3cf-bucket-container."+b.prefix+" .as3cf-manual-save-bucket-form");d.find(".as3cf-bucket-name").val().length<as3cf.buckets.validLength?d.find("button[type=submit]").prop("disabled",!0):d.find("button[type=submit]").prop("disabled",!1)})})}(jQuery,as3cfModal);
assets/sass/notice.scss CHANGED
@@ -7,3 +7,10 @@
7
max-width: 800px;
8
}
9
}
7
max-width: 800px;
8
}
9
}
10
+
11
+ /**
12
+ * Prevent WP from adding the circular arrow icon to all P tags inside the notice html.
13
+ */
14
+ .as3cf-license-notice p:not(.as3cf-before):before {
15
+ display: none;
16
+ }
assets/sass/styles.scss CHANGED
@@ -686,18 +686,6 @@
686
}
687
}
688
689
- @media (min--moz-device-pixel-ratio: 1.3),
690
- (-o-min-device-pixel-ratio: 2.6/2),
691
- (-webkit-min-device-pixel-ratio: 1.3),
692
- (min-device-pixel-ratio: 1.3),
693
- (min-resolution: 1.3dppx) {
694
-
695
- .as3cf-banner {
696
- background-image: url(../img/snail-banner@2x.jpg);
697
- background-size: 292px 156px;
698
- }
699
- }
700
-
701
@media screen and (max-width: 1052px) {
702
position: relative;
703
top: auto;
@@ -711,45 +699,47 @@
711
.as3cf-banner {
712
margin-top: 35px;
713
width: 292px;
714
- height: 156px;
715
display: block;
716
- background-image: url(../img/snail-banner.jpg);
717
- position: relative;
718
719
- h1 {
720
- font-size: 28px;
721
- color: #fff;
722
- font-weight: 200;
723
- margin: 0;
724
- position: absolute;
725
- bottom: 25px;
726
- left: 20px;
727
- text-decoration: none;
728
- }
729
}
730
731
- .as3cf-upgrade-details {
732
- background-color: #73833b;
733
- padding: 20px;
734
- color: #fff;
735
font-size: 13px;
736
margin: 0;
737
display: block;
738
text-decoration: none;
739
740
p {
741
margin: 0;
742
}
743
744
a {
745
- color: #fff;
746
font-weight: bold;
747
text-decoration: none;
748
font-size: 16px;
749
750
&:hover {
751
color: #fff;
752
- opacity: 0.9;
753
}
754
}
755
686
}
687
}
688
689
@media screen and (max-width: 1052px) {
690
position: relative;
691
top: auto;
699
.as3cf-banner {
700
margin-top: 35px;
701
width: 292px;
702
+ height: 200px;
703
display: block;
704
+ background: #f8cfae url(../img/os3-banner.svg) left bottom / 220px 220px no-repeat;
705
+ }
706
707
+ .as3cf-banner:focus {
708
+ box-shadow: none;
709
}
710
711
+ .wrap .as3cf-upgrade-details {
712
+ background-color: #4e0d33;
713
+ padding: 10px 20px 20px 20px;
714
+ color: #eee;
715
font-size: 13px;
716
margin: 0;
717
display: block;
718
text-decoration: none;
719
720
+ h1 {
721
+ font-size: 28px;
722
+ color: #eee;
723
+ margin: 0 0 15px 0;
724
+ padding: 0;
725
+ text-decoration: none;
726
+ font-weight: 200;
727
+ line-height: 1;
728
+ }
729
+
730
p {
731
margin: 0;
732
}
733
734
a {
735
+ color: #eee;
736
font-weight: bold;
737
text-decoration: none;
738
font-size: 16px;
739
+ box-shadow: none;
740
741
&:hover {
742
color: #fff;
743
}
744
}
745
classes/amazon-s3-and-cloudfront.php CHANGED
@@ -1,5 +1,6 @@
1
<?php
2
3
use DeliciousBrains\WP_Offload_S3\Upgrades\Upgrade_Content_Replace_URLs;
4
use DeliciousBrains\WP_Offload_S3\Upgrades\Upgrade_EDD_Replace_URLs;
5
use DeliciousBrains\WP_Offload_S3\Upgrades\Upgrade_File_Sizes;
@@ -167,6 +168,9 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
167
add_filter( 'delete_attachment', array( $this, 'delete_attachment' ), 20 );
168
add_filter( 'update_attached_file', array( $this, 'update_attached_file' ), 100, 2 );
169
170
// Content filtering
171
$this->filter_local = new AS3CF_Local_To_S3( $this );
172
$this->filter_s3 = new AS3CF_S3_To_Local( $this );
@@ -223,9 +227,11 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
223
'disabled_attr' => '',
224
'tr_class' => str_replace( '_', '-', $this->plugin_prefix . '-' . $key . '-container' ),
225
'setting_msg' => '',
226
);
227
228
if ( false !== $is_defined ) {
229
$args['disabled'] = true;
230
$args['disabled_attr'] = 'disabled="disabled"';
231
$args['tr_class'] .= ' as3cf-defined-setting';
@@ -452,12 +458,18 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
452
}
453
454
if ( false !== $value && $bucket !== $value ) {
455
- // Clear region
456
- $this->remove_setting( 'region' );
457
- $this->save_settings();
458
}
459
}
460
461
/**
462
* Filter in defined settings with sensible defaults.
463
*
@@ -890,16 +902,14 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
890
}
891
892
// Allow S3 upload to be hijacked / cancelled for any reason
893
- $pre = apply_filters( 'as3cf_pre_upload_attachment', false, $post_id, $data );
894
- if ( false !== $pre ) {
895
- if ( ! is_null( $return_metadata ) ) {
896
- // If the attachment metadata is supplied, return it
897
- return $data;
898
- }
899
-
900
- $error_msg = is_string( $pre ) ? $pre : __( 'Upload aborted by filter \'as3cf_pre_upload_attachment\'', 'amazon-s3-and-cloudfront' );
901
902
- return $this->return_upload_error( $error_msg );
903
}
904
905
if ( is_null( $file_path ) ) {
@@ -1507,7 +1517,7 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
1507
* @return bool
1508
*/
1509
function is_plugin_setup() {
1510
- if ( is_wp_error( $this->aws->get_client() ) ) {
1511
// AWS not configured
1512
return false;
1513
}
@@ -2467,8 +2477,13 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
2467
$args['signature'] = self::AWS_SIGNATURE;
2468
}
2469
2470
- $client = $this->aws->get_client()->get( 's3', $args );
2471
- $this->set_client( $client );
2472
}
2473
2474
return $this->s3client;
@@ -2477,7 +2492,7 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
2477
/**
2478
* Setter for S3 client
2479
*
2480
- * @param Aws\S3\S3Client $client
2481
*/
2482
public function set_client( $client ) {
2483
$this->s3client = $client;
@@ -2486,11 +2501,22 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
2486
/**
2487
* Get the region of a bucket
2488
*
2489
- * @param string $bucket
2490
*
2491
* @return string|WP_Error
2492
*/
2493
- function get_bucket_region( $bucket ) {
2494
try {
2495
$region = $this->get_s3client()->getBucketLocation( array( 'Bucket' => $bucket ) );
2496
} catch ( Exception $e ) {
@@ -2503,6 +2529,11 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
2503
2504
$region = $this->translate_region( $region['Location'] );
2505
2506
return $region;
2507
}
2508
@@ -2859,15 +2890,14 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
2859
function render_page() {
2860
$this->aws->render_view( 'header', array( 'page_title' => $this->get_plugin_page_title(), 'page' => 'as3cf' ) );
2861
2862
- $aws_client = $this->aws->get_client();
2863
-
2864
- if ( is_wp_error( $aws_client ) ) {
2865
- $this->render_view( 'error-fatal', array( 'message' => $aws_client->get_error_message() ) );
2866
- } else {
2867
$this->render_view( 'settings-tabs' );
2868
do_action( 'as3cf_pre_settings_render' );
2869
$this->render_view( 'settings' );
2870
do_action( 'as3cf_post_settings_render' );
2871
}
2872
2873
$this->aws->render_view( 'footer' );
@@ -3405,10 +3435,6 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
3405
$output .= esc_html( ( defined( 'AS3CF_BUCKET' ) ) ? AS3CF_BUCKET : 'Not defined' );
3406
$output .= "\r\n";
3407
3408
- $output .= 'AS3CF_ASSETS_BUCKET: ';
3409
- $output .= esc_html( ( defined( 'AS3CF_ASSETS_BUCKET' ) ) ? AS3CF_ASSETS_BUCKET : 'Not defined' );
3410
- $output .= "\r\n";
3411
-
3412
$output .= 'AS3CF_REGION: ';
3413
$output .= esc_html( ( defined( 'AS3CF_REGION' ) ) ? AS3CF_REGION : 'Not defined' );
3414
$output .= "\r\n\r\n";
@@ -3936,10 +3962,10 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
3936
}
3937
3938
$url = $this->dbrains_url( $path, $args, $hash );
3939
- $text = __( 'More info', 'amazon-s3-and-cloudfront' );
3940
$link = AS3CF_Utils::dbrains_link( $url, $text );
3941
3942
- return sprintf( '<span class="more-info">%s &raquo;</span>', $link );
3943
}
3944
3945
/**
@@ -4081,6 +4107,17 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
4081
return false;
4082
}
4083
4084
/**
4085
* Render the S3 attachment meta box
4086
*/
@@ -4092,7 +4129,7 @@ class Amazon_S3_And_CloudFront extends AWS_Plugin_Base {
4092
's3object' => $this->get_formatted_s3_info( $post->ID ),
4093
'post' => $post,
4094
'local_file_exists' => file_exists( $file ),
4095
- 'user_can_perform_actions' => $this->verify_media_actions(),
4096
'sendback' => 'post.php?post=' . $post->ID . '&action=edit',
4097
);
4098
1
<?php
2
3
+ use DeliciousBrains\WP_Offload_S3\Null_S3_Client;
4
use DeliciousBrains\WP_Offload_S3\Upgrades\Upgrade_Content_Replace_URLs;
5
use DeliciousBrains\WP_Offload_S3\Upgrades\Upgrade_EDD_Replace_URLs;
6
use DeliciousBrains\WP_Offload_S3\Upgrades\Upgrade_File_Sizes;
168
add_filter( 'delete_attachment', array( $this, 'delete_attachment' ), 20 );
169
add_filter( 'update_attached_file', array( $this, 'update_attached_file' ), 100, 2 );
170
171
+ // Listen for settings changes
172
+ add_action( 'as3cf_constant_' . static::SETTINGS_CONSTANT . '_changed_bucket', array( $this, 'bucket_changed' ) );
173
+
174
// Content filtering
175
$this->filter_local = new AS3CF_Local_To_S3( $this );
176
$this->filter_s3 = new AS3CF_S3_To_Local( $this );
227
'disabled_attr' => '',
228
'tr_class' => str_replace( '_', '-', $this->plugin_prefix . '-' . $key . '-container' ),
229
'setting_msg' => '',
230
+ 'is_defined' => false,
231
);
232
233
if ( false !== $is_defined ) {
234
+ $args['is_defined'] = true;
235
$args['disabled'] = true;
236
$args['disabled_attr'] = 'disabled="disabled"';
237
$args['tr_class'] .= ' as3cf-defined-setting';
458
}
459
460
if ( false !== $value && $bucket !== $value ) {
461
+ $this->bucket_changed();
462
}
463
}
464
465
+ /**
466
+ * Perform necessary actions when the chosen bucket is changed.
467
+ */
468
+ public function bucket_changed() {
469
+ $this->remove_setting( 'region' );
470
+ $this->save_settings();
471
+ }
472
+
473
/**
474
* Filter in defined settings with sensible defaults.
475
*
902
}
903
904
// Allow S3 upload to be hijacked / cancelled for any reason
905
+ try {
906
+ $pre = apply_filters( 'as3cf_pre_upload_attachment', false, $post_id, $data );
907
+ } catch ( \Exception $e ) {
908
+ return $this->return_upload_error( $e->getMessage() );
909
+ }
910
911
+ if ( false !== $pre ) {
912
+ return $data;
913
}
914
915
if ( is_null( $file_path ) ) {
1517
* @return bool
1518
*/
1519
function is_plugin_setup() {
1520
+ if ( $this->aws->needs_access_keys() ) {
1521
// AWS not configured
1522
return false;
1523
}
2477
$args['signature'] = self::AWS_SIGNATURE;
2478
}
2479
2480
+ try {
2481
+ $aws_client = $this->aws->get_client();
2482
+ $this->set_client( $aws_client->get( 's3', $args ) );
2483
+ } catch ( \Exception $e ) {
2484
+ AS3CF_Error::log( $e->getMessage() );
2485
+ $this->set_client( new Null_S3_Client );
2486
+ }
2487
}
2488
2489
return $this->s3client;
2492
/**
2493
* Setter for S3 client
2494
*
2495
+ * @param Aws\S3\S3Client|Null_S3_Client $client
2496
*/
2497
public function set_client( $client ) {
2498
$this->s3client = $client;
2501
/**
2502
* Get the region of a bucket
2503
*
2504
+ * @param string $bucket
2505
+ * @param boolean $use_cache
2506
*
2507
* @return string|WP_Error
2508
*/
2509
+ public function get_bucket_region( $bucket, $use_cache = false ) {
2510
+ $regions = get_site_transient( 'as3cf_regions_cache' );
2511
+
2512
+ if ( ! is_array( $regions ) ) {
2513
+ $regions = array();
2514
+ }
2515
+
2516
+ if ( $use_cache && isset( $regions[ $bucket ] ) ) {
2517
+ return $regions[ $bucket ];
2518
+ }
2519
+
2520
try {
2521
$region = $this->get_s3client()->getBucketLocation( array( 'Bucket' => $bucket ) );
2522
} catch ( Exception $e ) {
2529
2530
$region = $this->translate_region( $region['Location'] );
2531
2532
+ if ( is_string( $region ) ) {
2533
+ $regions[ $bucket ] = $region;
2534
+ set_site_transient( 'as3cf_regions_cache', $regions, 5 * MINUTE_IN_SECONDS );
2535
+ }
2536
+
2537
return $region;
2538
}
2539
2890
function render_page() {
2891
$this->aws->render_view( 'header', array( 'page_title' => $this->get_plugin_page_title(), 'page' => 'as3cf' ) );
2892
2893
+ try {
2894
+ $this->aws->get_client();
2895
$this->render_view( 'settings-tabs' );
2896
do_action( 'as3cf_pre_settings_render' );
2897
$this->render_view( 'settings' );
2898
do_action( 'as3cf_post_settings_render' );
2899
+ } catch ( \Exception $e ) {
2900
+ $this->render_view( 'error-fatal', array( 'message' => $e->getMessage() ) );
2901
}
2902
2903
$this->aws->render_view( 'footer' );
3435
$output .= esc_html( ( defined( 'AS3CF_BUCKET' ) ) ? AS3CF_BUCKET : 'Not defined' );
3436
$output .= "\r\n";
3437
3438
$output .= 'AS3CF_REGION: ';
3439
$output .= esc_html( ( defined( 'AS3CF_REGION' ) ) ? AS3CF_REGION : 'Not defined' );
3440
$output .= "\r\n\r\n";
3962
}
3963
3964
$url = $this->dbrains_url( $path, $args, $hash );
3965
+ $text = __( 'More&nbsp;info', 'amazon-s3-and-cloudfront' );
3966
$link = AS3CF_Utils::dbrains_link( $url, $text );
3967
3968
+ return sprintf( '<span class="more-info">%s&nbsp;&raquo;</span>', $link );
3969
}
3970
3971
/**
4107
return false;
4108
}
4109
4110
+ /**
4111
+ * Get a list of available media actions which can be performed according to plugin and user capability requirements.
4112
+ *
4113
+ * @param string|null $scope
4114
+ *
4115
+ * @return array
4116
+ */
4117
+ public function get_available_media_actions( $scope = '' ) {
4118
+ return array();
4119
+ }
4120
+
4121
/**
4122
* Render the S3 attachment meta box
4123
*/
4129
's3object' => $this->get_formatted_s3_info( $post->ID ),
4130
'post' => $post,
4131
'local_file_exists' => file_exists( $file ),
4132
+ 'available_actions' => $this->get_available_media_actions( 'singular' ),
4133
'sendback' => 'post.php?post=' . $post->ID . '&action=edit',
4134
);
4135
classes/as3cf-filter.php CHANGED
@@ -174,6 +174,10 @@ abstract class AS3CF_Filter {
174
return $this->filter_text_widget( $instance, $update_cache );
175
}
176
177
return $instance;
178
}
179
@@ -226,6 +230,26 @@ abstract class AS3CF_Filter {
226
return $instance;
227
}
228
229
/**
230
* Process content.
231
*
174
return $this->filter_text_widget( $instance, $update_cache );
175
}
176
177
+ if ( $class instanceof WP_Widget_Custom_HTML ) {
178
+ return $this->filter_custom_html_widget( $instance, $update_cache );
179
+ }
180
+
181
return $instance;
182
}
183
230
return $instance;
231
}
232
233
+ /**
234
+ * Filter custom html widget.
235
+ *
236
+ * @param array $instance
237
+ * @param bool $update_cache
238
+ *
239
+ * @return array
240
+ */
241
+ protected function filter_custom_html_widget( $instance, $update_cache ) {
242
+ $cache = $this->get_option_cache();
243
+ $to_cache = array();
244
+ $instance['content'] = $this->process_content( $instance['content'], $cache, $to_cache );
245
+
246
+ if ( $update_cache ) {
247
+ $this->maybe_update_option_cache( $to_cache );
248
+ }
249
+
250
+ return $instance;
251
+ }
252
+
253
/**
254
* Process content.
255
*
classes/as3cf-plugin-compatibility.php CHANGED
@@ -63,6 +63,9 @@ class AS3CF_Plugin_Compatibility {
63
add_filter( 'wp_calculate_image_srcset', array( $this, 'wp_calculate_image_srcset' ), 10, 5 );
64
add_filter( 'wp_calculate_image_srcset_meta', array( $this, 'wp_calculate_image_srcset_meta' ), 10, 4 );
65
66
if ( $this->as3cf->is_plugin_setup() ) {
67
$this->compatibility_init_if_setup();
68
}
@@ -818,4 +821,46 @@ class AS3CF_Plugin_Compatibility {
818
819
return $filename;
820
}
821
}
63
add_filter( 'wp_calculate_image_srcset', array( $this, 'wp_calculate_image_srcset' ), 10, 5 );
64
add_filter( 'wp_calculate_image_srcset_meta', array( $this, 'wp_calculate_image_srcset_meta' ), 10, 4 );
65
66
+ // Maybe warn about PHP version if in admin screens.
67
+ add_action( 'admin_init', array( $this, 'maybe_warn_about_php_version' ) );
68
+
69
if ( $this->as3cf->is_plugin_setup() ) {
70
$this->compatibility_init_if_setup();
71
}
821
822
return $filename;
823
}
824
+
825
+ /**
826
+ * Display an admin message if PHP version is soon to be unsupported by plugin.
827
+ *
828
+ * NOTE: This is not added to AWS SDK compatibility checks as it is remaining compatible with earlier PHP versions.
829
+ * This function should be removed or reworked once PHP 5.5 is required.
830
+ */
831
+ public function maybe_warn_about_php_version() {
832
+ $key_base = 'php-version-55';
833
+
834
+ if ( version_compare( PHP_VERSION, '5.5', '<' ) ) {
835
+ $message = sprintf(
836
+ __( '<strong>Warning:</strong> This site is using PHP %1$s, in a future update WP Offload S3 will require PHP %2$s or later. %3$s', 'amazon-s3-and-cloudfront' ),
837
+ PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION,
838
+ '5.5',
839
+ $this->as3cf->more_info_link( '/wp-offload-s3/doc/php-version-requirements/', 'upgrade-php-version' )
840
+ );
841
+
842
+ // Show notice to user if not already dismissed.
843
+ $args = array(
844
+ 'custom_id' => $key_base . '-site',
845
+ 'type' => 'notice-warning',
846
+ 'flash' => false,
847
+ 'only_show_to_user' => false,
848
+ );
849
+
850
+ if ( ! in_array( $args['custom_id'], $this->as3cf->notices->get_dismissed_notices() ) ) {
851
+ $this->as3cf->notices->add_notice( $message, $args );
852
+ } else {
853
+ // If user has dismissed site-wide notice but we're in settings pages, show notice.
854
+ $args['custom_id'] = $key_base . '-settings';
855
+ $args['dismissible'] = false;
856
+ $args['only_show_in_settings'] = true;
857
+
858
+ $this->as3cf->notices->add_notice( $message, $args );
859
+ }
860
+ } else {
861
+ // If PHP version (now) OK, make sure notices not shown.
862
+ $this->as3cf->notices->remove_notice_by_id( $key_base . '-site' );
863
+ $this->as3cf->notices->remove_notice_by_id( $key_base . '-settings' );
864
+ }
865
+ }
866
}
classes/as3cf-utils.php CHANGED
@@ -168,11 +168,13 @@ if ( ! class_exists( 'AS3CF_Utils' ) ) {
168
/**
169
* Parses a URL into its components. Compatible with PHP < 5.4.7.
170
*
171
- * @param $url string The URL to parse.
172
*
173
- * @return array|false The parsed components or false on error.
174
*/
175
- public static function parse_url( $url ) {
176
$url = trim( $url );
177
$no_scheme = 0 === strpos( $url, '//' );
178
@@ -180,9 +182,13 @@ if ( ! class_exists( 'AS3CF_Utils' ) ) {
180
$url = 'http:' . $url;
181
}
182
183
- $parts = parse_url( $url );
184
185
- if ( $no_scheme ) {
186
unset( $parts['scheme'] );
187
}
188
@@ -197,13 +203,30 @@ if ( ! class_exists( 'AS3CF_Utils' ) ) {
197
* @return bool
198
*/
199
public static function is_url( $string ) {
200
- if ( preg_match( '@^(?:https?:)?\/\/[a-zA-Z0-9\-]{3,}@', $string ) ) {
201
return true;
202
}
203
204
return false;
205
}
206
207
/**
208
* Get file paths for all attachment versions.
209
*
@@ -357,5 +380,57 @@ if ( ! class_exists( 'AS3CF_Utils' ) ) {
357
public static function dbrains_link( $url, $text ) {
358
return sprintf( '<a href="%s">%s</a>', esc_url( $url ), esc_html( $text ) );
359
}
360
}
361
}
168
/**
169
* Parses a URL into its components. Compatible with PHP < 5.4.7.
170
*
171
+ * @param $url string The URL to parse.
172
*
173
+ * @param int $component PHP_URL_ constant for URL component to return.
174
+ *
175
+ * @return mixed An array of the parsed components, mixed for a requested component, or false on error.
176
*/
177
+ public static function parse_url( $url, $component = -1 ) {
178
$url = trim( $url );
179
$no_scheme = 0 === strpos( $url, '//' );
180
182
$url = 'http:' . $url;
183
}
184
185
+ $parts = parse_url( $url, $component );
186
187
+ if ( 0 < $component ) {
188
+ return $parts;
189
+ }
190
+
191
+ if ( $no_scheme && is_array( $parts ) ) {
192
unset( $parts['scheme'] );
193
}
194
203
* @return bool
204
*/
205
public static function is_url( $string ) {
206
+ if ( preg_match( '@^(?:https?:)?//[a-zA-Z0-9\-]+@', $string ) ) {
207
return true;
208
}
209
210
return false;
211
}
212
213
+ /**
214
+ * Is the string a relative URL?
215
+ *
216
+ * @param $string
217
+ *
218
+ * @return bool
219
+ */
220
+ public static function is_relative_url( $string ) {
221
+ if ( empty( $string ) || ! is_string( $string ) ) {
222
+ return false;
223
+ }
224
+
225
+ $url = static::parse_url( $string );
226
+
227
+ return ( empty( $url['scheme'] ) && empty( $url['host'] ) );
228
+ }
229
+
230
/**
231
* Get file paths for all attachment versions.
232
*
380
public static function dbrains_link( $url, $text ) {
381
return sprintf( '<a href="%s">%s</a>', esc_url( $url ), esc_html( $text ) );
382
}
383
+
384
+ /**
385
+ * Check whether two URLs share the same domain.
386
+ *
387
+ * @param string $url_a
388
+ * @param string $url_b
389
+ *
390
+ * @return bool
391
+ */
392
+ public static function url_domains_match( $url_a, $url_b ) {
393
+ if ( ! static::is_url( $url_a ) || ! static::is_url( $url_b ) ) {
394
+ return false;
395
+ }
396
+
397
+ return static::parse_url( $url_a, PHP_URL_HOST ) === static::parse_url( $url_b, PHP_URL_HOST );
398
+ }
399
+
400
+ /**
401
+ * Get the current domain.
402
+ *
403
+ * @return string|false
404
+ */
405
+ public static function current_domain() {
406
+ return parse_url( home_url(), PHP_URL_HOST );
407
+ }
408
+
409
+ /**
410
+ * Get the base domain of the current domain.
411
+ *
412
+ * @return string
413
+ */
414
+ public static function current_base_domain() {
415
+ $domain = static::current_domain();
416
+ $parts = explode( '.', $domain, 2 );
417
+
418
+ if ( isset( $parts[1] ) && in_array( $parts[0], array( 'www' ) ) ) {
419
+ return $parts[1];
420
+ }
421
+
422
+ return $domain;
423
+ }
424
+
425
+ /**
426
+ * A safe wrapper for deactivate_plugins()
427
+ */
428
+ public static function deactivate_plugins() {
429
+ if ( ! function_exists( 'deactivate_plugins' ) ) {
430
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
431
+ }
432
+
433
+ call_user_func_array( 'deactivate_plugins', func_get_args() );
434
+ }
435
}
436
}
classes/null-s3-client.php ADDED
@@ -0,0 +1,34 @@
1
+ <?php
2
+
3
+ namespace DeliciousBrains\WP_Offload_S3;
4
+
5
+ use AS3CF_Error;
6
+
7
+ class Null_S3_Client {
8
+
9
+ /**
10
+ * Log and fail calls to instance methods.
11
+ *
12
+ * @param $name
13
+ * @param $arguments
14
+ *
15
+ * @throws \Exception
16
+ */
17
+ public function __call( $name, $arguments ) {
18
+ AS3CF_Error::log( $arguments, __CLASS__ . "->$name()" );
19
+ throw new \Exception( 'Failed to instantiate the AWS S3 client. Check your error log.' );
20
+ }
21
+
22
+ /**
23
+ * Log and fail calls to static methods.
24
+ *
25
+ * @param $name
26
+ * @param $arguments
27
+ *
28
+ * @throws \Exception
29
+ */
30
+ public static function __callStatic( $name, $arguments ) {
31
+ AS3CF_Error::log( $arguments, __CLASS__ . "::$name()" );
32
+ throw new \Exception( 'Failed to instantiate the AWS S3 client. Check your error log.' );
33
+ }
34
+ }
classes/upgrades/upgrade-filter-post.php CHANGED
@@ -395,7 +395,7 @@ abstract class Upgrade_Filter_Post extends Upgrade {
395
*/
396
protected function get_generic_message() {
397
$link_text = __( 'See our documentation', 'amazon-s3-and-cloudfront' );
398
- $url = $this->as3cf->dbrains_url( '/wp-offload-s3/doc/version-1-2-upgrade', array(
399
'utm_campaign' => 'support+docs',
400
) );
401
$link = AS3CF_Utils::dbrains_link( $url, $link_text );
@@ -453,4 +453,4 @@ abstract class Upgrade_Filter_Post extends Upgrade {
453
454
return $this->get_highest_post_id();
455
}
456
- }
395
*/
396
protected function get_generic_message() {
397
$link_text = __( 'See our documentation', 'amazon-s3-and-cloudfront' );
398
+ $url = $this->as3cf->dbrains_url( '/wp-offload-s3/doc/content-filtering-upgrade', array(
399
'utm_campaign' => 'support+docs',
400
) );
401
$link = AS3CF_Utils::dbrains_link( $url, $link_text );
453
454
return $this->get_highest_post_id();
455
}
456
+ }
classes/wp-aws-compatibility-check.php CHANGED
@@ -304,7 +304,7 @@ if ( ! class_exists( 'WP_AWS_Compatibility_Check' ) ) {
304
/**
305
* Get the compatibility error message
306
*
307
- * @return string|void
308
*/
309
function get_error_msg() {
310
if ( is_null( $this->parent_plugin_slug ) ) {
@@ -521,4 +521,4 @@ if ( ! class_exists( 'WP_AWS_Compatibility_Check' ) ) {
521
return self::$is_installing_or_updating_plugins;
522
}
523
}
524
- }
304
/**
305
* Get the compatibility error message
306
*
307
+ * @return string|bool
308
*/
309
function get_error_msg() {
310
if ( is_null( $this->parent_plugin_slug ) ) {
521
return self::$is_installing_or_updating_plugins;
522
}
523
}
524
+ }
languages/amazon-s3-and-cloudfront-en.pot CHANGED
@@ -8,7 +8,7 @@ msgid ""
8
msgstr ""
9
"Project-Id-Version: amazon-s3-and-cloudfront\n"
10
"Report-Msgid-Bugs-To: nom@deliciousbrains.com\n"
11
- "POT-Creation-Date: 2017-06-19 15:09+0100\n"
12
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,137 +17,133 @@ msgstr ""
17
"Content-Type: text/plain; charset=UTF-8\n"
18
"Content-Transfer-Encoding: 8bit\n"
19
20
- #: classes/amazon-s3-and-cloudfront.php:122
21
msgid "Offload S3 Lite"
22
msgstr ""
23
24
- #: classes/amazon-s3-and-cloudfront.php:123
25
msgid "S3 and CloudFront"
26
msgstr ""
27
28
- #: classes/amazon-s3-and-cloudfront.php:232
29
#: view/bucket-setting.php:18
30
msgid "defined in wp-config.php"
31
msgstr ""
32
33
- #: classes/amazon-s3-and-cloudfront.php:900
34
- msgid "Upload aborted by filter 'as3cf_pre_upload_attachment'"
35
- msgstr ""
36
-
37
- #: classes/amazon-s3-and-cloudfront.php:911
38
- #: classes/amazon-s3-and-cloudfront.php:1071
39
#, php-format
40
msgid "File %s does not exist"
41
msgstr ""
42
43
- #: classes/amazon-s3-and-cloudfront.php:922
44
#, php-format
45
msgid "Mime type %s is not allowed"
46
msgstr ""
47
48
- #: classes/amazon-s3-and-cloudfront.php:1007
49
- #: classes/amazon-s3-and-cloudfront.php:1079
50
#, php-format
51
msgid "Error uploading %s to S3: %s"
52
msgstr ""
53
54
- #: classes/amazon-s3-and-cloudfront.php:2223
55
msgid "Cheatin&#8217; eh?"
56
msgstr ""
57
58
- #: classes/amazon-s3-and-cloudfront.php:2227
59
msgid "You do not have sufficient permissions to access this page."
60
msgstr ""
61
62
- #: classes/amazon-s3-and-cloudfront.php:2233
63
msgid "No bucket name provided."
64
msgstr ""
65
66
- #: classes/amazon-s3-and-cloudfront.php:2497
67
msgid "Error Getting Bucket Region"
68
msgstr ""
69
70
- #: classes/amazon-s3-and-cloudfront.php:2498
71
#, php-format
72
msgid "There was an error attempting to get the region of the bucket %s: %s"
73
msgstr ""
74
75
- #: classes/amazon-s3-and-cloudfront.php:2626
76
msgid ""
77
"This is a test file to check if the user has write permission to S3. Delete "
78
"me if found."
79
msgstr ""
80
81
- #: classes/amazon-s3-and-cloudfront.php:2645
82
#, php-format
83
msgid ""
84
"There was an error attempting to check the permissions of the bucket %s: %s"
85
msgstr ""
86
87
- #: classes/amazon-s3-and-cloudfront.php:2699
88
msgid "Error creating bucket"
89
msgstr ""
90
91
- #: classes/amazon-s3-and-cloudfront.php:2700
92
msgid "Bucket name too short."
93
msgstr ""
94
95
- #: classes/amazon-s3-and-cloudfront.php:2701
96
msgid "Bucket name too long."
97
msgstr ""
98
99
- #: classes/amazon-s3-and-cloudfront.php:2702
100
msgid ""
101
"Invalid character. Bucket names can contain lowercase letters, numbers, "
102
"periods and hyphens."
103
msgstr ""
104
105
- #: classes/amazon-s3-and-cloudfront.php:2703
106
msgid "Error saving bucket"
107
msgstr ""
108
109
- #: classes/amazon-s3-and-cloudfront.php:2704
110
msgid "Error fetching buckets"
111
msgstr ""
112
113
- #: classes/amazon-s3-and-cloudfront.php:2705
114
msgid "Error getting URL preview: "
115
msgstr ""
116
117
- #: classes/amazon-s3-and-cloudfront.php:2706
118
msgid "The changes you made will be lost if you navigate away from this page"
119
msgstr ""
120
121
- #: classes/amazon-s3-and-cloudfront.php:2707
122
msgid "Getting diagnostic info..."
123
msgstr ""
124
125
- #: classes/amazon-s3-and-cloudfront.php:2708
126
msgid "Error getting diagnostic info: "
127
msgstr ""
128
129
- #: classes/amazon-s3-and-cloudfront.php:2776
130
msgid "Cheatin' eh?"
131
msgstr ""
132
133
- #: classes/amazon-s3-and-cloudfront.php:2883
134
msgctxt "Show the media library tab"
135
msgid "Media Library"
136
msgstr ""
137
138
- #: classes/amazon-s3-and-cloudfront.php:2884
139
msgctxt "Show the support tab"
140
msgid "Support"
141
msgstr ""
142
143
- #: classes/amazon-s3-and-cloudfront.php:3101
144
#, php-format
145
msgid ""
146
"<strong>WP Offload S3</strong> &mdash; The file %s has been given %s "
147
"permissions on Amazon S3."
148
msgstr ""
149
150
- #: classes/amazon-s3-and-cloudfront.php:3120
151
msgid ""
152
"<strong>WP Offload S3 Requirement Missing</strong> &mdash; Looks like you "
153
"don't have an image manipulation library installed on this server and "
@@ -155,11 +151,11 @@ msgid ""
155
"Please setup GD or ImageMagick."
156
msgstr ""
157
158
- #: classes/amazon-s3-and-cloudfront.php:3729
159
msgid "Quick Start Guide"
160
msgstr ""
161
162
- #: classes/amazon-s3-and-cloudfront.php:3731
163
#, php-format
164
msgid ""
165
"Looks like we don't have write access to this bucket. It's likely that the "
@@ -168,7 +164,7 @@ msgid ""
168
"correctly."
169
msgstr ""
170
171
- #: classes/amazon-s3-and-cloudfront.php:3733
172
#, php-format
173
msgid ""
174
"Looks like we don't have access to the buckets. It's likely that the user "
@@ -176,39 +172,39 @@ msgid ""
176
"Please see our %s for instructions on setting up permissions correctly."
177
msgstr ""
178
179
- #: classes/amazon-s3-and-cloudfront.php:3883
180
msgid "WP Offload S3 Activation"
181
msgstr ""
182
183
- #: classes/amazon-s3-and-cloudfront.php:3884
184
msgid ""
185
"WP Offload S3 Lite and WP Offload S3 cannot both be active. We've "
186
"automatically deactivated WP Offload S3 Lite."
187
msgstr ""
188
189
- #: classes/amazon-s3-and-cloudfront.php:3886
190
msgid "WP Offload S3 Lite Activation"
191
msgstr ""
192
193
- #: classes/amazon-s3-and-cloudfront.php:3887
194
msgid ""
195
"WP Offload S3 Lite and WP Offload S3 cannot both be active. We've "
196
"automatically deactivated WP Offload S3."
197
msgstr ""
198
199
- #: classes/amazon-s3-and-cloudfront.php:3939
200
- msgid "More info"
201
msgstr ""
202
203
- #: classes/amazon-s3-and-cloudfront.php:4034
204
msgid "this doc"
205
msgstr ""
206
207
- #: classes/amazon-s3-and-cloudfront.php:4036
208
msgid "WP Offload S3 Feature Removed"
209
msgstr ""
210
211
- #: classes/amazon-s3-and-cloudfront.php:4037
212
#, php-format
213
msgid ""
214
"You had the \"Always non-SSL\" option selected in your settings, but we've "
@@ -219,32 +215,32 @@ msgid ""
219
"to the old behavior."
220
msgstr ""
221
222
- #: classes/amazon-s3-and-cloudfront.php:4067
223
- #: classes/amazon-s3-and-cloudfront.php:4165
224
msgid "Amazon S3"
225
msgstr ""
226
227
- #: classes/amazon-s3-and-cloudfront.php:4166
228
msgctxt "Amazon S3 bucket"
229
msgid "Bucket"
230
msgstr ""
231
232
- #: classes/amazon-s3-and-cloudfront.php:4167
233
msgctxt "Path to file on Amazon S3"
234
msgid "Path"
235
msgstr ""
236
237
- #: classes/amazon-s3-and-cloudfront.php:4168
238
msgctxt "Location of Amazon S3 bucket"
239
msgid "Region"
240
msgstr ""
241
242
- #: classes/amazon-s3-and-cloudfront.php:4169
243
msgctxt "Access control list of the file on Amazon S3"
244
msgid "Access"
245
msgstr ""
246
247
- #: classes/amazon-s3-and-cloudfront.php:4170
248
msgid "URL"
249
msgstr ""
250
@@ -256,18 +252,25 @@ msgstr ""
256
msgid "Invalid notice ID."
257
msgstr ""
258
259
- #: classes/as3cf-plugin-compatibility.php:512
260
#, php-format
261
msgid "The local directory %s does not exist and could not be created."
262
msgstr ""
263
264
- #: classes/as3cf-plugin-compatibility.php:513
265
- #: classes/as3cf-plugin-compatibility.php:525
266
#: classes/upgrades/upgrade-meta-wp-error.php:81
267
#, php-format
268
msgid "There was an error attempting to download the file %s from S3: %s"
269
msgstr ""
270
271
#: classes/upgrades/upgrade-content-replace-urls.php:36
272
msgid "and ensuring that only the local URL exists in post content."
273
msgstr ""
@@ -455,11 +458,11 @@ msgstr ""
455
msgid "The %s plugin has been deactivated."
456
msgstr ""
457
458
- #: view/attachment-metabox.php:4
459
msgid "This item has not been copied to S3 yet."
460
msgstr ""
461
462
- #: view/attachment-metabox.php:29
463
msgid "File does not exist on server"
464
msgstr ""
465
@@ -725,15 +728,15 @@ msgid "Manage S3 files in WordPress"
725
msgstr ""
726
727
#: view/sidebar.php:15
728
- msgid "Assets addon - Serve your CSS & JS from S3/CloudFront"
729
msgstr ""
730
731
#: view/sidebar.php:16
732
- msgid "WooCommerce addon"
733
msgstr ""
734
735
#: view/sidebar.php:17
736
- msgid "Easy Digital Downloads addon"
737
msgstr ""
738
739
#: view/sidebar.php:18
8
msgstr ""
9
"Project-Id-Version: amazon-s3-and-cloudfront\n"
10
"Report-Msgid-Bugs-To: nom@deliciousbrains.com\n"
11
+ "POT-Creation-Date: 2018-01-26 12:18+0000\n"
12
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
"Language-Team: LANGUAGE <LL@li.org>\n"
17
"Content-Type: text/plain; charset=UTF-8\n"
18
"Content-Transfer-Encoding: 8bit\n"
19
20
+ #: classes/amazon-s3-and-cloudfront.php:123
21
msgid "Offload S3 Lite"
22
msgstr ""
23
24
+ #: classes/amazon-s3-and-cloudfront.php:124
25
msgid "S3 and CloudFront"
26
msgstr ""
27
28
+ #: classes/amazon-s3-and-cloudfront.php:238
29
#: view/bucket-setting.php:18
30
msgid "defined in wp-config.php"
31
msgstr ""
32
33
+ #: classes/amazon-s3-and-cloudfront.php:921
34
+ #: classes/amazon-s3-and-cloudfront.php:1081
35
#, php-format
36
msgid "File %s does not exist"
37
msgstr ""
38
39
+ #: classes/amazon-s3-and-cloudfront.php:932
40
#, php-format
41
msgid "Mime type %s is not allowed"
42
msgstr ""
43
44
+ #: classes/amazon-s3-and-cloudfront.php:1017
45
+ #: classes/amazon-s3-and-cloudfront.php:1089
46
#, php-format
47
msgid "Error uploading %s to S3: %s"
48
msgstr ""
49
50
+ #: classes/amazon-s3-and-cloudfront.php:2233
51
msgid "Cheatin&#8217; eh?"
52
msgstr ""
53
54
+ #: classes/amazon-s3-and-cloudfront.php:2237
55
msgid "You do not have sufficient permissions to access this page."
56
msgstr ""
57
58
+ #: classes/amazon-s3-and-cloudfront.php:2243
59
msgid "No bucket name provided."
60
msgstr ""
61
62
+ #: classes/amazon-s3-and-cloudfront.php:2523
63
msgid "Error Getting Bucket Region"
64
msgstr ""
65
66
+ #: classes/amazon-s3-and-cloudfront.php:2524
67
#, php-format
68
msgid "There was an error attempting to get the region of the bucket %s: %s"
69
msgstr ""
70
71
+ #: classes/amazon-s3-and-cloudfront.php:2657
72
msgid ""
73
"This is a test file to check if the user has write permission to S3. Delete "
74
"me if found."
75
msgstr ""
76
77
+ #: classes/amazon-s3-and-cloudfront.php:2676
78
#, php-format
79
msgid ""
80
"There was an error attempting to check the permissions of the bucket %s: %s"
81
msgstr ""
82
83
+ #: classes/amazon-s3-and-cloudfront.php:2730
84
msgid "Error creating bucket"
85
msgstr ""
86
87
+ #: classes/amazon-s3-and-cloudfront.php:2731
88
msgid "Bucket name too short."
89
msgstr ""
90
91
+ #: classes/amazon-s3-and-cloudfront.php:2732
92
msgid "Bucket name too long."
93
msgstr ""
94
95
+ #: classes/amazon-s3-and-cloudfront.php:2733
96
msgid ""
97
"Invalid character. Bucket names can contain lowercase letters, numbers, "
98
"periods and hyphens."
99
msgstr ""
100
101
+ #: classes/amazon-s3-and-cloudfront.php:2734
102
msgid "Error saving bucket"
103
msgstr ""
104
105
+ #: classes/amazon-s3-and-cloudfront.php:2735
106
msgid "Error fetching buckets"
107
msgstr ""
108
109
+ #: classes/amazon-s3-and-cloudfront.php:2736
110
msgid "Error getting URL preview: "
111
msgstr ""
112
113
+ #: classes/amazon-s3-and-cloudfront.php:2737
114
msgid "The changes you made will be lost if you navigate away from this page"
115
msgstr ""
116
117
+ #: classes/amazon-s3-and-cloudfront.php:2738
118
msgid "Getting diagnostic info..."
119
msgstr ""
120
121
+ #: classes/amazon-s3-and-cloudfront.php:2739
122
msgid "Error getting diagnostic info: "
123
msgstr ""
124
125
+ #: classes/amazon-s3-and-cloudfront.php:2807
126
msgid "Cheatin' eh?"
127
msgstr ""
128
129
+ #: classes/amazon-s3-and-cloudfront.php:2913
130
msgctxt "Show the media library tab"
131
msgid "Media Library"
132
msgstr ""
133
134
+ #: classes/amazon-s3-and-cloudfront.php:2914
135
msgctxt "Show the support tab"
136
msgid "Support"
137
msgstr ""
138
139
+ #: classes/amazon-s3-and-cloudfront.php:3131
140
#, php-format
141
msgid ""
142
"<strong>WP Offload S3</strong> &mdash; The file %s has been given %s "
143
"permissions on Amazon S3."
144
msgstr ""
145
146
+ #: classes/amazon-s3-and-cloudfront.php:3150
147
msgid ""
148
"<strong>WP Offload S3 Requirement Missing</strong> &mdash; Looks like you "
149
"don't have an image manipulation library installed on this server and "
151
"Please setup GD or ImageMagick."
152
msgstr ""
153
154
+ #: classes/amazon-s3-and-cloudfront.php:3755
155
msgid "Quick Start Guide"
156
msgstr ""
157
158
+ #: classes/amazon-s3-and-cloudfront.php:3757
159
#, php-format
160
msgid ""
161
"Looks like we don't have write access to this bucket. It's likely that the "
164
"correctly."
165
msgstr ""
166
167
+ #: classes/amazon-s3-and-cloudfront.php:3759
168
#, php-format
169
msgid ""
170
"Looks like we don't have access to the buckets. It's likely that the user "
172
"Please see our %s for instructions on setting up permissions correctly."
173
msgstr ""
174
175
+ #: classes/amazon-s3-and-cloudfront.php:3909
176
msgid "WP Offload S3 Activation"
177
msgstr ""
178
179
+ #: classes/amazon-s3-and-cloudfront.php:3910
180
msgid ""
181
"WP Offload S3 Lite and WP Offload S3 cannot both be active. We've "
182
"automatically deactivated WP Offload S3 Lite."
183
msgstr ""
184
185
+ #: classes/amazon-s3-and-cloudfront.php:3912
186
msgid "WP Offload S3 Lite Activation"
187
msgstr ""
188
189
+ #: classes/amazon-s3-and-cloudfront.php:3913
190
msgid ""
191
"WP Offload S3 Lite and WP Offload S3 cannot both be active. We've "
192
"automatically deactivated WP Offload S3."
193
msgstr ""
194
195
+ #: classes/amazon-s3-and-cloudfront.php:3965
196
+ msgid "More&nbsp;info"
197
msgstr ""
198
199
+ #: classes/amazon-s3-and-cloudfront.php:4060
200
msgid "this doc"
201
msgstr ""
202
203
+ #: classes/amazon-s3-and-cloudfront.php:4062
204
msgid "WP Offload S3 Feature Removed"
205
msgstr ""
206
207
+ #: classes/amazon-s3-and-cloudfront.php:4063
208
#, php-format
209
msgid ""
210
"You had the \"Always non-SSL\" option selected in your settings, but we've "
215
"to the old behavior."
216
msgstr ""
217
218
+ #: classes/amazon-s3-and-cloudfront.php:4093
219
+ #: classes/amazon-s3-and-cloudfront.php:4202
220
msgid "Amazon S3"
221
msgstr ""
222
223
+ #: classes/amazon-s3-and-cloudfront.php:4203
224
msgctxt "Amazon S3 bucket"
225
msgid "Bucket"
226
msgstr ""
227
228
+ #: classes/amazon-s3-and-cloudfront.php:4204
229
msgctxt "Path to file on Amazon S3"
230
msgid "Path"
231
msgstr ""
232
233
+ #: classes/amazon-s3-and-cloudfront.php:4205
234
msgctxt "Location of Amazon S3 bucket"
235
msgid "Region"
236
msgstr ""
237
238
+ #: classes/amazon-s3-and-cloudfront.php:4206
239
msgctxt "Access control list of the file on Amazon S3"
240
msgid "Access"
241
msgstr ""
242
243
+ #: classes/amazon-s3-and-cloudfront.php:4207
244
msgid "URL"
245
msgstr ""
246
252
msgid "Invalid notice ID."
253
msgstr ""
254
255
+ #: classes/as3cf-plugin-compatibility.php:515
256
#, php-format
257
msgid "The local directory %s does not exist and could not be created."
258
msgstr ""
259
260
+ #: classes/as3cf-plugin-compatibility.php:516
261
+ #: classes/as3cf-plugin-compatibility.php:528
262
#: classes/upgrades/upgrade-meta-wp-error.php:81
263
#, php-format
264
msgid "There was an error attempting to download the file %s from S3: %s"
265
msgstr ""
266
267
+ #: classes/as3cf-plugin-compatibility.php:836
268
+ #, php-format
269
+ msgid ""
270
+ "<strong>Warning:</strong> This site is using PHP %1$s, in a future update WP "
271
+ "Offload S3 will require PHP %2$s or later. %3$s"
272
+ msgstr ""
273
+
274
#: classes/upgrades/upgrade-content-replace-urls.php:36
275
msgid "and ensuring that only the local URL exists in post content."
276
msgstr ""
458
msgid "The %s plugin has been deactivated."
459
msgstr ""
460
461
+ #: view/attachment-metabox.php:14
462
msgid "This item has not been copied to S3 yet."
463
msgstr ""
464
465
+ #: view/attachment-metabox.php:39
466
msgid "File does not exist on server"
467
msgstr ""
468
728
msgstr ""
729
730
#: view/sidebar.php:15
731
+ msgid "Assets addon - Serve your CSS & JS from CloudFront or another CDN"
732
msgstr ""
733
734
#: view/sidebar.php:16
735
+ msgid "WooCommerce integration"
736
msgstr ""
737
738
#: view/sidebar.php:17
739
+ msgid "Easy Digital Downloads integration"
740
msgstr ""
741
742
#: view/sidebar.php:18
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
Contributors: bradt, deliciousbrains
3
Tags: uploads, amazon, s3, amazon s3, mirror, admin, media, cdn, cloudfront
4
Requires at least: 4.6
5
- Tested up to: 4.8
6
- Stable tag: 1.2
7
License: GPLv3
8
9
Copies files to Amazon S3 as they are uploaded to the Media Library. Optionally configure Amazon CloudFront for faster delivery.
@@ -65,6 +65,17 @@ This version requires PHP 5.3.3+ and the Amazon Web Services plugin
65
66
== Changelog ==
67
68
= WP Offload S3 Lite 1.2 - 2017-06-19 =
69
* New: Compatibility with WordPress 4.8
70
* New: Support for WP CLI `wp media regenerate`
2
Contributors: bradt, deliciousbrains
3
Tags: uploads, amazon, s3, amazon s3, mirror, admin, media, cdn, cloudfront
4
Requires at least: 4.6
5
+ Tested up to: 4.9
6
+ Stable tag: 1.2.1
7
License: GPLv3
8
9
Copies files to Amazon S3 as they are uploaded to the Media Library. Optionally configure Amazon CloudFront for faster delivery.
65
66
== Changelog ==
67
68
+ = WP Offload S3 Lite 1.2.1 - 2017-11-20 =
69
+ * New: Compatibility with HTML Widget
70
+ * New: Dismissible admin notice that WP Offload S3 Lite will soon require PHP 5.5+
71
+ * Improvement: Compatibility with WordPress 4.9
72
+ * Bug fix: Incorrect region used when changing bucket by defining it in WPOS3_SETTINGS
73
+ * Bug fix: Media library notices render inside the upload tool
74
+ * Bug fix: Save notices disappear on settings page
75
+ * Bug fix: Improper use of jQuery.attr logged to browser console
76
+ * Bug fix: "Content Filtering Upgrade" URL in notice incorrect
77
+ * Bug fix: "More info" links can be broken across two lines
78
+
79
= WP Offload S3 Lite 1.2 - 2017-06-19 =
80
* New: Compatibility with WordPress 4.8
81
* New: Support for WP CLI `wp media regenerate`
view/attachment-metabox.php CHANGED
@@ -1,3 +1,13 @@
1
<div class="s3-details">
2
<?php if ( ! $s3object ) : ?>
3
<div class="misc-pub-section">
@@ -24,7 +34,7 @@
24
<?php echo $this->get_acl_value_string( $s3object['acl'] ); ?>
25
</div>
26
</div>
27
- <?php if ( $user_can_perform_actions && ! $local_file_exists ) : ?>
28
<div class="misc-pub-section">
29
<div class="not-copied"><?php _e( 'File does not exist on server', 'amazon-s3-and-cloudfront' ); ?></div>
30
<a id="as3cf-download-action" href="<?php echo $this->get_media_action_url( 'download', $post->ID, $sendback ); ?>">
@@ -35,16 +45,17 @@
35
<?php endif; ?>
36
<div class="clear"></div>
37
</div>
38
- <?php if ( $user_can_perform_actions && ( $s3object || $local_file_exists ) ) : ?>
39
<div class="s3-actions">
40
- <?php if ( $s3object ) : ?>
41
<div class="remove-action">
42
- <a id="as3cf-remove-action" href="<?php echo $this->get_media_action_url( 'remove', $post->ID, $sendback ); ?>" class="<?php echo ( ! $local_file_exists ) ? 'local-warning' : ''; ?>">
43
<?php echo $this->get_media_action_strings( 'remove' ); ?>
44
</a>
45
</div>
46
<?php endif; ?>
47
- <?php if ( $local_file_exists ) : ?>
48
<div class="copy-action">
49
<a id="as3cf-copy-action" href="<?php echo $this->get_media_action_url( 'copy', $post->ID, $sendback ); ?>" class="button button-secondary">
50
<?php echo $this->get_media_action_strings( 'copy' ); ?>
1
+ <?php
2
+ /** @var array|bool $s3object */
3
+ /** @var WP_Post $post */
4
+ /** @var array $available_actions */
5
+ /** @var bool $local_file_exists */
6
+ /** @var string $sendback */
7
+ $is_removable = $s3object && in_array( 'remove', $available_actions );
8
+ $is_copyable = $local_file_exists && in_array( 'copy', $available_actions );
9
+ $is_downloadable = ! $local_file_exists && in_array( 'download', $available_actions );
10
+ ?>
11
<div class="s3-details">
12
<?php if ( ! $s3object ) : ?>
13
<div class="misc-pub-section">
34
<?php echo $this->get_acl_value_string( $s3object['acl'] ); ?>
35
</div>
36
</div>
37
+ <?php if ( $is_downloadable ) : ?>
38
<div class="misc-pub-section">
39
<div class="not-copied"><?php _e( 'File does not exist on server', 'amazon-s3-and-cloudfront' ); ?></div>
40
<a id="as3cf-download-action" href="<?php echo $this->get_media_action_url( 'download', $post->ID, $sendback ); ?>">
45
<?php endif; ?>
46
<div class="clear"></div>
47
</div>
48
+
49
+ <?php if ( $is_removable || $is_copyable ) : ?>
50
<div class="s3-actions">
51
+ <?php if ( $is_removable ) : ?>
52
<div class="remove-action">
53
+ <a id="as3cf-remove-action" href="<?php echo $this->get_media_action_url( 'remove', $post->ID, $sendback ); ?>">
54
<?php echo $this->get_media_action_strings( 'remove' ); ?>
55
</a>
56
</div>
57
<?php endif; ?>
58
+ <?php if ( $is_copyable ) : ?>
59
<div class="copy-action">
60
<a id="as3cf-copy-action" href="<?php echo $this->get_media_action_url( 'copy', $post->ID, $sendback ); ?>" class="button button-secondary">
61
<?php echo $this->get_media_action_strings( 'copy' ); ?>
view/sidebar.php CHANGED
@@ -4,17 +4,17 @@
4
'utm_campaign' => 'WP+Offload+S3',
5
'utm_content' => 'sidebar',
6
) ); ?>">
7
- <h1>Upgrade</h1>
8
</a>
9
10
<div class="as3cf-upgrade-details">
11
12
<ul>
13
<li><?php echo wptexturize( __( 'Upload existing Media Library to S3', 'amazon-s3-and-cloudfront' ) ); // xss ok ?></li>
14
<li><?php echo wptexturize( __( 'Manage S3 files in WordPress', 'amazon-s3-and-cloudfront' ) ); // xss ok ?></li>
15
- <li><?php echo wptexturize( __( 'Assets addon - Serve your CSS & JS from S3/CloudFront', 'amazon-s3-and-cloudfront' ) ); // xss ok ?></li>
16
- <li><?php echo wptexturize( __( 'WooCommerce addon', 'amazon-s3-and-cloudfront' ) ); // xss ok ?></li>
17
- <li><?php echo wptexturize( __( 'Easy Digital Downloads addon', 'amazon-s3-and-cloudfront' ) ); // xss ok ?></li>
18
<li><?php echo wptexturize( __( 'PriorityExpertâ„¢ email support', 'amazon-s3-and-cloudfront' ) ); // xss ok ?></li>
19
</ul>
20
4
'utm_campaign' => 'WP+Offload+S3',
5
'utm_content' => 'sidebar',
6
) ); ?>">
7
</a>
8
9
<div class="as3cf-upgrade-details">
10
+ <h1>Upgrade</h1>
11
12
<ul>
13
<li><?php echo wptexturize( __( 'Upload existing Media Library to S3', 'amazon-s3-and-cloudfront' ) ); // xss ok ?></li>
14
<li><?php echo wptexturize( __( 'Manage S3 files in WordPress', 'amazon-s3-and-cloudfront' ) ); // xss ok ?></li>
15
+ <li><?php echo wptexturize( __( 'Assets addon - Serve your CSS & JS from CloudFront or another CDN', 'amazon-s3-and-cloudfront' ) ); // xss ok ?></li>
16
+ <li><?php echo wptexturize( __( 'WooCommerce integration', 'amazon-s3-and-cloudfront' ) ); // xss ok ?></li>
17
+ <li><?php echo wptexturize( __( 'Easy Digital Downloads integration', 'amazon-s3-and-cloudfront' ) ); // xss ok ?></li>
18
<li><?php echo wptexturize( __( 'PriorityExpertâ„¢ email support', 'amazon-s3-and-cloudfront' ) ); // xss ok ?></li>
19
</ul>
20
wordpress-s3.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: WP Offload S3 Lite
4
Plugin URI: http://wordpress.org/extend/plugins/amazon-s3-and-cloudfront/
5
Description: Automatically copies media uploads to Amazon S3 for storage and delivery. Optionally configure Amazon CloudFront for even faster delivery.
6
Author: Delicious Brains
7
- Version: 1.2
8
Author URI: https://deliciousbrains.com/
9
Network: True
10
Text Domain: amazon-s3-and-cloudfront
@@ -26,9 +26,9 @@ Domain Path: /languages/
26
// Then completely rewritten.
27
*/
28
29
- $GLOBALS['aws_meta']['amazon-s3-and-cloudfront']['version'] = '1.2';
30
31
- $aws_plugin_version_required = '1.0.3';
32
33
require_once dirname( __FILE__ ) . '/classes/wp-aws-compatibility-check.php';
34
require_once dirname( __FILE__ ) . '/classes/as3cf-utils.php';
4
Plugin URI: http://wordpress.org/extend/plugins/amazon-s3-and-cloudfront/
5
Description: Automatically copies media uploads to Amazon S3 for storage and delivery. Optionally configure Amazon CloudFront for even faster delivery.
6
Author: Delicious Brains
7
+ Version: 1.2.1
8
Author URI: https://deliciousbrains.com/
9
Network: True
10
Text Domain: amazon-s3-and-cloudfront
26
// Then completely rewritten.
27
*/
28
29
+ $GLOBALS['aws_meta']['amazon-s3-and-cloudfront']['version'] = '1.2.1';
30
31
+ $aws_plugin_version_required = '1.0.4';
32
33
require_once dirname( __FILE__ ) . '/classes/wp-aws-compatibility-check.php';
34
require_once dirname( __FILE__ ) . '/classes/as3cf-utils.php';