author | ymh <ymh.work@gmail.com> |
Tue, 15 Dec 2020 13:49:49 +0100 | |
changeset 16 | a86126ab1dd4 |
parent 7 | cf61fcea0001 |
child 18 | be944660c56a |
permissions | -rw-r--r-- |
5 | 1 |
/* global plupload, pluploadL10n, ajaxurl, post_id, wpUploaderInit, deleteUserSetting, setUserSetting, getUserSetting, shortform */ |
0 | 2 |
var topWin = window.dialogArguments || opener || parent || top, uploader, uploader_init; |
3 |
||
16 | 4 |
// Progress and success handlers for media multi uploads. |
5 |
function fileQueued( fileObj ) { |
|
6 |
// Get rid of unused form. |
|
7 |
jQuery( '.media-blank' ).remove(); |
|
0 | 8 |
|
16 | 9 |
var items = jQuery( '#media-items' ).children(), postid = post_id || 0; |
0 | 10 |
|
16 | 11 |
// Collapse a single item. |
0 | 12 |
if ( items.length == 1 ) { |
16 | 13 |
items.removeClass( 'open' ).find( '.slidetoggle' ).slideUp( 200 ); |
0 | 14 |
} |
16 | 15 |
// Create a progress bar containing the filename. |
16 |
jQuery( '<div class="media-item">' ) |
|
0 | 17 |
.attr( 'id', 'media-item-' + fileObj.id ) |
16 | 18 |
.addClass( 'child-of-' + postid ) |
19 |
.append( '<div class="progress"><div class="percent">0%</div><div class="bar"></div></div>', |
|
20 |
jQuery( '<div class="filename original">' ).text( ' ' + fileObj.name ) ) |
|
21 |
.appendTo( jQuery( '#media-items' ) ); |
|
0 | 22 |
|
16 | 23 |
// Disable submit. |
24 |
jQuery( '#insert-gallery' ).prop( 'disabled', true ); |
|
0 | 25 |
} |
26 |
||
27 |
function uploadStart() { |
|
28 |
try { |
|
29 |
if ( typeof topWin.tb_remove != 'undefined' ) |
|
16 | 30 |
topWin.jQuery( '#TB_overlay' ).unbind( 'click', topWin.tb_remove ); |
31 |
} catch( e ){} |
|
0 | 32 |
|
33 |
return true; |
|
34 |
} |
|
35 |
||
16 | 36 |
function uploadProgress( up, file ) { |
37 |
var item = jQuery( '#media-item-' + file.id ); |
|
0 | 38 |
|
16 | 39 |
jQuery( '.bar', item ).width( ( 200 * file.loaded ) / file.size ); |
40 |
jQuery( '.percent', item ).html( file.percent + '%' ); |
|
0 | 41 |
} |
42 |
||
16 | 43 |
// Check to see if a large file failed to upload. |
5 | 44 |
function fileUploading( up, file ) { |
45 |
var hundredmb = 100 * 1024 * 1024, |
|
46 |
max = parseInt( up.settings.max_file_size, 10 ); |
|
0 | 47 |
|
48 |
if ( max > hundredmb && file.size > hundredmb ) { |
|
5 | 49 |
setTimeout( function() { |
16 | 50 |
if ( file.status < 3 && file.loaded === 0 ) { // Not uploading. |
5 | 51 |
wpFileError( file, pluploadL10n.big_upload_failed.replace( '%1$s', '<a class="uploader-html" href="#">' ).replace( '%2$s', '</a>' ) ); |
16 | 52 |
up.stop(); // Stop the whole queue. |
5 | 53 |
up.removeFile( file ); |
16 | 54 |
up.start(); // Restart the queue. |
0 | 55 |
} |
16 | 56 |
}, 10000 ); // Wait for 10 seconds for the file to start uploading. |
0 | 57 |
} |
58 |
} |
|
59 |
||
60 |
function updateMediaForm() { |
|
16 | 61 |
var items = jQuery( '#media-items' ).children(); |
0 | 62 |
|
16 | 63 |
// Just one file, no need for collapsible part. |
0 | 64 |
if ( items.length == 1 ) { |
16 | 65 |
items.addClass( 'open' ).find( '.slidetoggle' ).show(); |
66 |
jQuery( '.insert-gallery' ).hide(); |
|
0 | 67 |
} else if ( items.length > 1 ) { |
16 | 68 |
items.removeClass( 'open' ); |
5 | 69 |
// Only show Gallery/Playlist buttons when there are at least two files. |
16 | 70 |
jQuery( '.insert-gallery' ).show(); |
0 | 71 |
} |
72 |
||
73 |
// Only show Save buttons when there is at least one file. |
|
16 | 74 |
if ( items.not( '.media-blank' ).length > 0 ) |
75 |
jQuery( '.savebutton' ).show(); |
|
0 | 76 |
else |
16 | 77 |
jQuery( '.savebutton' ).hide(); |
0 | 78 |
} |
79 |
||
16 | 80 |
function uploadSuccess( fileObj, serverData ) { |
81 |
var item = jQuery( '#media-item-' + fileObj.id ); |
|
0 | 82 |
|
16 | 83 |
// On success serverData should be numeric, |
84 |
// fix bug in html4 runtime returning the serverData wrapped in a <pre> tag. |
|
85 |
if ( typeof serverData === 'string' ) { |
|
86 |
serverData = serverData.replace( /^<pre>(\d+)<\/pre>$/, '$1' ); |
|
87 |
||
88 |
// If async-upload returned an error message, place it in the media item div and return. |
|
89 |
if ( /media-upload-error|error-div/.test( serverData ) ) { |
|
90 |
item.html( serverData ); |
|
91 |
return; |
|
92 |
} |
|
0 | 93 |
} |
94 |
||
16 | 95 |
item.find( '.percent' ).html( pluploadL10n.crunching ); |
96 |
||
97 |
prepareMediaItem( fileObj, serverData ); |
|
0 | 98 |
updateMediaForm(); |
99 |
||
100 |
// Increment the counter. |
|
16 | 101 |
if ( post_id && item.hasClass( 'child-of-' + post_id ) ) { |
102 |
jQuery( '#attachments-count' ).text( 1 * jQuery( '#attachments-count' ).text() + 1 ); |
|
103 |
} |
|
0 | 104 |
} |
105 |
||
5 | 106 |
function setResize( arg ) { |
0 | 107 |
if ( arg ) { |
5 | 108 |
if ( window.resize_width && window.resize_height ) { |
109 |
uploader.settings.resize = { |
|
110 |
enabled: true, |
|
111 |
width: window.resize_width, |
|
112 |
height: window.resize_height, |
|
113 |
quality: 100 |
|
114 |
}; |
|
115 |
} else { |
|
0 | 116 |
uploader.settings.multipart_params.image_resize = true; |
5 | 117 |
} |
0 | 118 |
} else { |
5 | 119 |
delete( uploader.settings.multipart_params.image_resize ); |
0 | 120 |
} |
121 |
} |
|
122 |
||
16 | 123 |
function prepareMediaItem( fileObj, serverData ) { |
124 |
var f = ( typeof shortform == 'undefined' ) ? 1 : 2, item = jQuery( '#media-item-' + fileObj.id ); |
|
0 | 125 |
if ( f == 2 && shortform > 2 ) |
126 |
f = shortform; |
|
127 |
||
128 |
try { |
|
129 |
if ( typeof topWin.tb_remove != 'undefined' ) |
|
16 | 130 |
topWin.jQuery( '#TB_overlay' ).click( topWin.tb_remove ); |
131 |
} catch( e ){} |
|
0 | 132 |
|
16 | 133 |
if ( isNaN( serverData ) || !serverData ) { |
134 |
// Old style: Append the HTML returned by the server -- thumbnail and form inputs. |
|
135 |
item.append( serverData ); |
|
136 |
prepareMediaItemInit( fileObj ); |
|
137 |
} else { |
|
138 |
// New style: server data is just the attachment ID, fetch the thumbnail and form html from the server. |
|
139 |
item.load( 'async-upload.php', {attachment_id:serverData, fetch:f}, function(){prepareMediaItemInit( fileObj );updateMediaForm();}); |
|
0 | 140 |
} |
141 |
} |
|
142 |
||
16 | 143 |
function prepareMediaItemInit( fileObj ) { |
144 |
var item = jQuery( '#media-item-' + fileObj.id ); |
|
145 |
// Clone the thumbnail as a "pinkynail" -- a tiny image to the left of the filename. |
|
146 |
jQuery( '.thumbnail', item ).clone().attr( 'class', 'pinkynail toggle' ).prependTo( item ); |
|
0 | 147 |
|
16 | 148 |
// Replace the original filename with the new (unique) one assigned during upload. |
149 |
jQuery( '.filename.original', item ).replaceWith( jQuery( '.filename.new', item ) ); |
|
0 | 150 |
|
16 | 151 |
// Bind Ajax to the new Delete button. |
152 |
jQuery( 'a.delete', item ).click( function(){ |
|
153 |
// Tell the server to delete it. TODO: Handle exceptions. |
|
0 | 154 |
jQuery.ajax({ |
155 |
url: ajaxurl, |
|
156 |
type: 'post', |
|
157 |
success: deleteSuccess, |
|
158 |
error: deleteError, |
|
159 |
id: fileObj.id, |
|
160 |
data: { |
|
16 | 161 |
id : this.id.replace(/[^0-9]/g, '' ), |
0 | 162 |
action : 'trash-post', |
16 | 163 |
_ajax_nonce : this.href.replace(/^.*wpnonce=/,'' ) |
0 | 164 |
} |
165 |
}); |
|
166 |
return false; |
|
167 |
}); |
|
168 |
||
16 | 169 |
// Bind Ajax to the new Undo button. |
170 |
jQuery( 'a.undo', item ).click( function(){ |
|
171 |
// Tell the server to untrash it. TODO: Handle exceptions. |
|
0 | 172 |
jQuery.ajax({ |
173 |
url: ajaxurl, |
|
174 |
type: 'post', |
|
175 |
id: fileObj.id, |
|
176 |
data: { |
|
16 | 177 |
id : this.id.replace(/[^0-9]/g,'' ), |
0 | 178 |
action: 'untrash-post', |
16 | 179 |
_ajax_nonce: this.href.replace(/^.*wpnonce=/,'' ) |
0 | 180 |
}, |
5 | 181 |
success: function( ){ |
182 |
var type, |
|
16 | 183 |
item = jQuery( '#media-item-' + fileObj.id ); |
0 | 184 |
|
16 | 185 |
if ( type = jQuery( '#type-of-' + fileObj.id ).val() ) |
186 |
jQuery( '#' + type + '-counter' ).text( jQuery( '#' + type + '-counter' ).text()-0+1 ); |
|
0 | 187 |
|
16 | 188 |
if ( post_id && item.hasClass( 'child-of-'+post_id ) ) |
189 |
jQuery( '#attachments-count' ).text( jQuery( '#attachments-count' ).text()-0+1 ); |
|
0 | 190 |
|
16 | 191 |
jQuery( '.filename .trashnotice', item ).remove(); |
192 |
jQuery( '.filename .title', item ).css( 'font-weight','normal' ); |
|
193 |
jQuery( 'a.undo', item ).addClass( 'hidden' ); |
|
194 |
jQuery( '.menu_order_input', item ).show(); |
|
195 |
item.css( {backgroundColor:'#ceb'} ).animate( {backgroundColor: '#fff'}, { queue: false, duration: 500, complete: function(){ jQuery( this ).css({backgroundColor:''}); } }).removeClass( 'undo' ); |
|
0 | 196 |
} |
197 |
}); |
|
198 |
return false; |
|
199 |
}); |
|
200 |
||
16 | 201 |
// Open this item if it says to start open (e.g. to display an error). |
202 |
jQuery( '#media-item-' + fileObj.id + '.startopen' ).removeClass( 'startopen' ).addClass( 'open' ).find( 'slidetoggle' ).fadeIn(); |
|
0 | 203 |
} |
204 |
||
16 | 205 |
// Generic error message. |
206 |
function wpQueueError( message ) { |
|
207 |
jQuery( '#media-upload-error' ).show().html( '<div class="error"><p>' + message + '</p></div>' ); |
|
0 | 208 |
} |
209 |
||
16 | 210 |
// File-specific error messages. |
211 |
function wpFileError( fileObj, message ) { |
|
212 |
itemAjaxError( fileObj.id, message ); |
|
0 | 213 |
} |
214 |
||
16 | 215 |
function itemAjaxError( id, message ) { |
216 |
var item = jQuery( '#media-item-' + id ), filename = item.find( '.filename' ).text(), last_err = item.data( 'last-err' ); |
|
0 | 217 |
|
16 | 218 |
if ( last_err == id ) // Prevent firing an error for the same file twice. |
0 | 219 |
return; |
220 |
||
16 | 221 |
item.html( '<div class="error-div">' + |
5 | 222 |
'<a class="dismiss" href="#">' + pluploadL10n.dismiss + '</a>' + |
16 | 223 |
'<strong>' + pluploadL10n.error_uploading.replace( '%s', jQuery.trim( filename )) + '</strong> ' + |
5 | 224 |
message + |
16 | 225 |
'</div>' ).data( 'last-err', id ); |
0 | 226 |
} |
227 |
||
16 | 228 |
function deleteSuccess( data ) { |
5 | 229 |
var type, id, item; |
0 | 230 |
if ( data == '-1' ) |
16 | 231 |
return itemAjaxError( this.id, 'You do not have permission. Has your session expired?' ); |
0 | 232 |
|
233 |
if ( data == '0' ) |
|
16 | 234 |
return itemAjaxError( this.id, 'Could not be deleted. Has it been deleted already?' ); |
0 | 235 |
|
5 | 236 |
id = this.id; |
16 | 237 |
item = jQuery( '#media-item-' + id ); |
0 | 238 |
|
239 |
// Decrement the counters. |
|
16 | 240 |
if ( type = jQuery( '#type-of-' + id ).val() ) |
241 |
jQuery( '#' + type + '-counter' ).text( jQuery( '#' + type + '-counter' ).text() - 1 ); |
|
0 | 242 |
|
16 | 243 |
if ( post_id && item.hasClass( 'child-of-'+post_id ) ) |
244 |
jQuery( '#attachments-count' ).text( jQuery( '#attachments-count' ).text() - 1 ); |
|
0 | 245 |
|
16 | 246 |
if ( jQuery( 'form.type-form #media-items' ).children().length == 1 && jQuery( '.hidden', '#media-items' ).length > 0 ) { |
247 |
jQuery( '.toggle' ).toggle(); |
|
248 |
jQuery( '.slidetoggle' ).slideUp( 200 ).siblings().removeClass( 'hidden' ); |
|
0 | 249 |
} |
250 |
||
251 |
// Vanish it. |
|
16 | 252 |
jQuery( '.toggle', item ).toggle(); |
253 |
jQuery( '.slidetoggle', item ).slideUp( 200 ).siblings().removeClass( 'hidden' ); |
|
254 |
item.css( {backgroundColor:'#faa'} ).animate( {backgroundColor:'#f4f4f4'}, {queue:false, duration:500} ).addClass( 'undo' ); |
|
0 | 255 |
|
16 | 256 |
jQuery( '.filename:empty', item ).remove(); |
257 |
jQuery( '.filename .title', item ).css( 'font-weight','bold' ); |
|
258 |
jQuery( '.filename', item ).append( '<span class="trashnotice"> ' + pluploadL10n.deleted + ' </span>' ).siblings( 'a.toggle' ).hide(); |
|
259 |
jQuery( '.filename', item ).append( jQuery( 'a.undo', item ).removeClass( 'hidden' ) ); |
|
260 |
jQuery( '.menu_order_input', item ).hide(); |
|
0 | 261 |
|
262 |
return; |
|
263 |
} |
|
264 |
||
5 | 265 |
function deleteError() { |
0 | 266 |
} |
267 |
||
268 |
function uploadComplete() { |
|
16 | 269 |
jQuery( '#insert-gallery' ).prop( 'disabled', false ); |
0 | 270 |
} |
271 |
||
16 | 272 |
function switchUploader( s ) { |
0 | 273 |
if ( s ) { |
16 | 274 |
deleteUserSetting( 'uploader' ); |
275 |
jQuery( '.media-upload-form' ).removeClass( 'html-uploader' ); |
|
0 | 276 |
|
16 | 277 |
if ( typeof( uploader ) == 'object' ) |
0 | 278 |
uploader.refresh(); |
279 |
} else { |
|
16 | 280 |
setUserSetting( 'uploader', '1' ); // 1 == html uploader. |
281 |
jQuery( '.media-upload-form' ).addClass( 'html-uploader' ); |
|
0 | 282 |
} |
283 |
} |
|
284 |
||
16 | 285 |
function uploadError( fileObj, errorCode, message, up ) { |
0 | 286 |
var hundredmb = 100 * 1024 * 1024, max; |
287 |
||
16 | 288 |
switch ( errorCode ) { |
0 | 289 |
case plupload.FAILED: |
16 | 290 |
wpFileError( fileObj, pluploadL10n.upload_failed ); |
0 | 291 |
break; |
292 |
case plupload.FILE_EXTENSION_ERROR: |
|
16 | 293 |
wpFileExtensionError( up, fileObj, pluploadL10n.invalid_filetype ); |
0 | 294 |
break; |
295 |
case plupload.FILE_SIZE_ERROR: |
|
16 | 296 |
uploadSizeError( up, fileObj ); |
0 | 297 |
break; |
298 |
case plupload.IMAGE_FORMAT_ERROR: |
|
16 | 299 |
wpFileError( fileObj, pluploadL10n.not_an_image ); |
0 | 300 |
break; |
301 |
case plupload.IMAGE_MEMORY_ERROR: |
|
16 | 302 |
wpFileError( fileObj, pluploadL10n.image_memory_exceeded ); |
0 | 303 |
break; |
304 |
case plupload.IMAGE_DIMENSIONS_ERROR: |
|
16 | 305 |
wpFileError( fileObj, pluploadL10n.image_dimensions_exceeded ); |
0 | 306 |
break; |
307 |
case plupload.GENERIC_ERROR: |
|
16 | 308 |
wpQueueError( pluploadL10n.upload_failed ); |
0 | 309 |
break; |
310 |
case plupload.IO_ERROR: |
|
16 | 311 |
max = parseInt( up.settings.filters.max_file_size, 10 ); |
0 | 312 |
|
16 | 313 |
if ( max > hundredmb && fileObj.size > hundredmb ) { |
314 |
wpFileError( fileObj, pluploadL10n.big_upload_failed.replace( '%1$s', '<a class="uploader-html" href="#">' ).replace( '%2$s', '</a>' ) ); |
|
315 |
} else { |
|
316 |
wpQueueError( pluploadL10n.io_error ); |
|
317 |
} |
|
318 |
||
0 | 319 |
break; |
320 |
case plupload.HTTP_ERROR: |
|
16 | 321 |
wpQueueError( pluploadL10n.http_error ); |
0 | 322 |
break; |
323 |
case plupload.INIT_ERROR: |
|
16 | 324 |
jQuery( '.media-upload-form' ).addClass( 'html-uploader' ); |
0 | 325 |
break; |
326 |
case plupload.SECURITY_ERROR: |
|
16 | 327 |
wpQueueError( pluploadL10n.security_error ); |
0 | 328 |
break; |
329 |
/* case plupload.UPLOAD_ERROR.UPLOAD_STOPPED: |
|
330 |
case plupload.UPLOAD_ERROR.FILE_CANCELLED: |
|
16 | 331 |
jQuery( '#media-item-' + fileObj.id ).remove(); |
0 | 332 |
break;*/ |
333 |
default: |
|
16 | 334 |
wpFileError( fileObj, pluploadL10n.default_error ); |
0 | 335 |
} |
336 |
} |
|
337 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
338 |
function uploadSizeError( up, file ) { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
339 |
var message, errorDiv; |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
340 |
|
16 | 341 |
message = pluploadL10n.file_exceeds_size_limit.replace( '%s', file.name ); |
0 | 342 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
343 |
// Construct the error div. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
344 |
errorDiv = jQuery( '<div />' ) |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
345 |
.attr( { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
346 |
'id': 'media-item-' + file.id, |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
347 |
'class': 'media-item error' |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
348 |
} ) |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
349 |
.append( |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
350 |
jQuery( '<p />' ) |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
351 |
.text( message ) |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
352 |
); |
0 | 353 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
354 |
// Append the error. |
16 | 355 |
jQuery( '#media-items' ).append( errorDiv ); |
356 |
up.removeFile( file ); |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
357 |
} |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
358 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
359 |
function wpFileExtensionError( up, file, message ) { |
16 | 360 |
jQuery( '#media-items' ).append( '<div id="media-item-' + file.id + '" class="media-item error"><p>' + message + '</p></div>' ); |
361 |
up.removeFile( file ); |
|
0 | 362 |
} |
363 |
||
16 | 364 |
jQuery( document ).ready( function( $ ) { |
365 |
var tryAgainCount = {}; |
|
366 |
var tryAgain; |
|
0 | 367 |
|
16 | 368 |
$( '.media-upload-form' ).bind( 'click.uploader', function( e ) { |
369 |
var target = $( e.target ), tr, c; |
|
0 | 370 |
|
16 | 371 |
if ( target.is( 'input[type="radio"]' ) ) { // Remember the last used image size and alignment. |
372 |
tr = target.closest( 'tr' ); |
|
0 | 373 |
|
16 | 374 |
if ( tr.hasClass( 'align' ) ) |
375 |
setUserSetting( 'align', target.val() ); |
|
376 |
else if ( tr.hasClass( 'image-size' ) ) |
|
377 |
setUserSetting( 'imgsize', target.val() ); |
|
378 |
||
379 |
} else if ( target.is( 'button.button' ) ) { // Remember the last used image link url. |
|
0 | 380 |
c = e.target.className || ''; |
16 | 381 |
c = c.match( /url([^ '"]+)/ ); |
0 | 382 |
|
383 |
if ( c && c[1] ) { |
|
16 | 384 |
setUserSetting( 'urlbutton', c[1] ); |
385 |
target.siblings( '.urlfield' ).val( target.data( 'link-url' ) ); |
|
0 | 386 |
} |
16 | 387 |
} else if ( target.is( 'a.dismiss' ) ) { |
388 |
target.parents( '.media-item' ).fadeOut( 200, function() { |
|
389 |
$( this ).remove(); |
|
390 |
} ); |
|
391 |
} else if ( target.is( '.upload-flash-bypass a' ) || target.is( 'a.uploader-html' ) ) { // Switch uploader to html4. |
|
392 |
$( '#media-items, p.submit, span.big-file-warning' ).css( 'display', 'none' ); |
|
393 |
switchUploader( 0 ); |
|
0 | 394 |
e.preventDefault(); |
16 | 395 |
} else if ( target.is( '.upload-html-bypass a' ) ) { // Switch uploader to multi-file. |
396 |
$( '#media-items, p.submit, span.big-file-warning' ).css( 'display', '' ); |
|
397 |
switchUploader( 1 ); |
|
0 | 398 |
e.preventDefault(); |
16 | 399 |
} else if ( target.is( 'a.describe-toggle-on' ) ) { // Show. |
400 |
target.parent().addClass( 'open' ); |
|
401 |
target.siblings( '.slidetoggle' ).fadeIn( 250, function() { |
|
402 |
var S = $( window ).scrollTop(), |
|
403 |
H = $( window ).height(), |
|
404 |
top = $( this ).offset().top, |
|
405 |
h = $( this ).height(), |
|
406 |
b, |
|
407 |
B; |
|
0 | 408 |
|
409 |
if ( H && top && h ) { |
|
410 |
b = top + h; |
|
411 |
B = S + H; |
|
412 |
||
413 |
if ( b > B ) { |
|
414 |
if ( b - B < top - S ) |
|
16 | 415 |
window.scrollBy( 0, ( b - B ) + 10 ); |
0 | 416 |
else |
16 | 417 |
window.scrollBy( 0, top - S - 40 ); |
0 | 418 |
} |
419 |
} |
|
16 | 420 |
} ); |
421 |
||
0 | 422 |
e.preventDefault(); |
16 | 423 |
} else if ( target.is( 'a.describe-toggle-off' ) ) { // Hide. |
424 |
target.siblings( '.slidetoggle' ).fadeOut( 250, function() { |
|
425 |
target.parent().removeClass( 'open' ); |
|
426 |
} ); |
|
427 |
||
0 | 428 |
e.preventDefault(); |
429 |
} |
|
430 |
}); |
|
431 |
||
16 | 432 |
// Attempt to create image sub-sizes when an image was uploaded successfully |
433 |
// but the server responded with an HTTP 5xx error. |
|
434 |
tryAgain = function( up, error ) { |
|
435 |
var file = error.file; |
|
436 |
var times; |
|
437 |
var id; |
|
5 | 438 |
|
16 | 439 |
if ( ! error || ! error.responseHeaders ) { |
440 |
wpQueueError( pluploadL10n.http_error_image ); |
|
441 |
return; |
|
442 |
} |
|
5 | 443 |
|
16 | 444 |
id = error.responseHeaders.match( /x-wp-upload-attachment-id:\s*(\d+)/i ); |
445 |
||
446 |
if ( id && id[1] ) { |
|
447 |
id = id[1]; |
|
448 |
} else { |
|
449 |
wpQueueError( pluploadL10n.http_error_image ); |
|
450 |
return; |
|
5 | 451 |
} |
452 |
||
16 | 453 |
times = tryAgainCount[ file.id ]; |
454 |
||
455 |
if ( times && times > 4 ) { |
|
456 |
/* |
|
457 |
* The file may have been uploaded and attachment post created, |
|
458 |
* but post-processing and resizing failed... |
|
459 |
* Do a cleanup then tell the user to scale down the image and upload it again. |
|
460 |
*/ |
|
461 |
$.ajax({ |
|
462 |
type: 'post', |
|
463 |
url: ajaxurl, |
|
464 |
dataType: 'json', |
|
465 |
data: { |
|
466 |
action: 'media-create-image-subsizes', |
|
467 |
_wpnonce: wpUploaderInit.multipart_params._wpnonce, |
|
468 |
attachment_id: id, |
|
469 |
_wp_upload_failed_cleanup: true, |
|
470 |
} |
|
471 |
}); |
|
472 |
||
473 |
if ( error.message && ( error.status < 500 || error.status >= 600 ) ) { |
|
474 |
wpQueueError( error.message ); |
|
475 |
} else { |
|
476 |
wpQueueError( pluploadL10n.http_error_image ); |
|
477 |
} |
|
478 |
||
479 |
return; |
|
480 |
} |
|
481 |
||
482 |
if ( ! times ) { |
|
483 |
tryAgainCount[ file.id ] = 1; |
|
484 |
} else { |
|
485 |
tryAgainCount[ file.id ] = ++times; |
|
486 |
} |
|
0 | 487 |
|
16 | 488 |
// Try to create the missing image sizes. |
489 |
$.ajax({ |
|
490 |
type: 'post', |
|
491 |
url: ajaxurl, |
|
492 |
dataType: 'json', |
|
493 |
data: { |
|
494 |
action: 'media-create-image-subsizes', |
|
495 |
_wpnonce: wpUploaderInit.multipart_params._wpnonce, |
|
496 |
attachment_id: id, |
|
497 |
_legacy_support: 'true', |
|
498 |
} |
|
499 |
}).done( function( response ) { |
|
500 |
var message; |
|
501 |
||
502 |
if ( response.success ) { |
|
503 |
uploadSuccess( file, response.data.id ); |
|
504 |
} else { |
|
505 |
if ( response.data && response.data.message ) { |
|
506 |
message = response.data.message; |
|
507 |
} |
|
508 |
||
509 |
wpQueueError( message || pluploadL10n.http_error_image ); |
|
510 |
} |
|
511 |
}).fail( function( jqXHR ) { |
|
512 |
// If another HTTP 5xx error, try try again... |
|
513 |
if ( jqXHR.status >= 500 && jqXHR.status < 600 ) { |
|
514 |
tryAgain( up, error ); |
|
515 |
return; |
|
516 |
} |
|
517 |
||
518 |
wpQueueError( pluploadL10n.http_error_image ); |
|
519 |
}); |
|
520 |
} |
|
521 |
||
522 |
// Init and set the uploader. |
|
523 |
uploader_init = function() { |
|
524 |
uploader = new plupload.Uploader( wpUploaderInit ); |
|
525 |
||
526 |
$( '#image_resize' ).bind( 'change', function() { |
|
527 |
var arg = $( this ).prop( 'checked' ); |
|
0 | 528 |
|
529 |
setResize( arg ); |
|
530 |
||
531 |
if ( arg ) |
|
16 | 532 |
setUserSetting( 'upload_resize', '1' ); |
0 | 533 |
else |
16 | 534 |
deleteUserSetting( 'upload_resize' ); |
0 | 535 |
}); |
536 |
||
16 | 537 |
uploader.bind( 'Init', function( up ) { |
538 |
var uploaddiv = $( '#plupload-upload-ui' ); |
|
0 | 539 |
|
16 | 540 |
setResize( getUserSetting( 'upload_resize', false ) ); |
0 | 541 |
|
16 | 542 |
if ( up.features.dragdrop && ! $( document.body ).hasClass( 'mobile' ) ) { |
543 |
uploaddiv.addClass( 'drag-drop' ); |
|
544 |
||
545 |
$( '#drag-drop-area' ).on( 'dragover.wp-uploader', function() { // dragenter doesn't fire right :( |
|
546 |
uploaddiv.addClass( 'drag-over' ); |
|
547 |
}).on( 'dragleave.wp-uploader, drop.wp-uploader', function() { |
|
548 |
uploaddiv.removeClass( 'drag-over' ); |
|
0 | 549 |
}); |
550 |
} else { |
|
16 | 551 |
uploaddiv.removeClass( 'drag-drop' ); |
552 |
$( '#drag-drop-area' ).off( '.wp-uploader' ); |
|
0 | 553 |
} |
554 |
||
5 | 555 |
if ( up.runtime === 'html4' ) { |
16 | 556 |
$( '.upload-flash-bypass' ).hide(); |
5 | 557 |
} |
0 | 558 |
}); |
559 |
||
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
560 |
uploader.bind( 'postinit', function( up ) { |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
561 |
up.refresh(); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
562 |
}); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
563 |
|
0 | 564 |
uploader.init(); |
565 |
||
16 | 566 |
uploader.bind( 'FilesAdded', function( up, files ) { |
567 |
$( '#media-upload-error' ).empty(); |
|
0 | 568 |
uploadStart(); |
569 |
||
5 | 570 |
plupload.each( files, function( file ) { |
16 | 571 |
if ( file.type === 'image/heic' && up.settings.heic_upload_error ) { |
572 |
// Show error but do not block uploading. |
|
573 |
wpQueueError( pluploadL10n.unsupported_image ) |
|
574 |
} |
|
575 |
||
5 | 576 |
fileQueued( file ); |
0 | 577 |
}); |
578 |
||
579 |
up.refresh(); |
|
580 |
up.start(); |
|
581 |
}); |
|
582 |
||
16 | 583 |
uploader.bind( 'UploadFile', function( up, file ) { |
584 |
fileUploading( up, file ); |
|
585 |
}); |
|
586 |
||
587 |
uploader.bind( 'UploadProgress', function( up, file ) { |
|
588 |
uploadProgress( up, file ); |
|
0 | 589 |
}); |
590 |
||
16 | 591 |
uploader.bind( 'Error', function( up, error ) { |
592 |
var isImage = error.file && error.file.type && error.file.type.indexOf( 'image/' ) === 0; |
|
593 |
var status = error && error.status; |
|
0 | 594 |
|
16 | 595 |
// If the file is an image and the error is HTTP 5xx try to create sub-sizes again. |
596 |
if ( isImage && status >= 500 && status < 600 ) { |
|
597 |
tryAgain( up, error ); |
|
598 |
return; |
|
599 |
} |
|
600 |
||
601 |
uploadError( error.file, error.code, error.message, up ); |
|
0 | 602 |
up.refresh(); |
603 |
}); |
|
604 |
||
16 | 605 |
uploader.bind( 'FileUploaded', function( up, file, response ) { |
606 |
uploadSuccess( file, response.response ); |
|
0 | 607 |
}); |
608 |
||
16 | 609 |
uploader.bind( 'UploadComplete', function() { |
0 | 610 |
uploadComplete(); |
611 |
}); |
|
5 | 612 |
}; |
613 |
||
16 | 614 |
if ( typeof( wpUploaderInit ) == 'object' ) { |
5 | 615 |
uploader_init(); |
0 | 616 |
} |
617 |
||
618 |
}); |