first commit
This commit is contained in:
227
wp-includes/js/plupload/changelog.txt
Normal file
227
wp-includes/js/plupload/changelog.txt
Normal file
@ -0,0 +1,227 @@
|
||||
Version 1.5.5 (2013-01-23)
|
||||
UI Widget: Fix sortable feature, broken in jQuery UI 1.9.
|
||||
Queue: Replace live() with delegate(), as live() was removed from jQuery 1.9.
|
||||
HTML5: window.getComputedStyle in Firefox doesn't support dashed rulenames - use zIndex instead of z-index.
|
||||
HTML5/Flash/Silverlight/Gears: Process JPEGs, if quality parameter is present, whatever the scale factor.
|
||||
Flash: Survive invalid EXIF tag offsets.
|
||||
Flash: Allow only letters, digits and underscore in runtime id to avoid script injection.
|
||||
SilverLight: Prepend ampersand to the query string, for non multipart cases (as in Flash and HTML5).
|
||||
Add mime types for m2v,3gp,3g2 extensions.
|
||||
Version 1.5.4 (2012-04-12)
|
||||
Flash: Disable scripting if swf was loaded from another domain.
|
||||
Version 1.5.3 (2012-04-05)
|
||||
HTML5: Check if xhr object is initialized, before calling abort() on it.
|
||||
HTML4: Postpone form removal until uploaders state changes, to avoid error on resuming stopped uploads.
|
||||
BrowserPlus: Fix mechanical typo, that caused error during mime type check.
|
||||
BrowserPlus: browserPlus.Uploader.Cancel() has two required parameters, dies with the error if not passed.
|
||||
Flash: Improve runtime's behaviour during upload cancellation.
|
||||
Flash: Survive the case when GPSVersionID contains unexpected value.
|
||||
Flash: Fix random freeze in Chrome's bundled Flash Player.
|
||||
Flash: Avoid the silent break when URLStream not yet open, but close is called on it.
|
||||
Flash: Move Destroy handler out of Flash:Init handler, since it might be called not only after Flash:Init but also before it.
|
||||
Flash: Avoid warning during build with mxmlc.
|
||||
Try removeEventListener first in IE and only if it fails - detachEvent.
|
||||
Fix plupload.getPos to return proper value in IE8+.
|
||||
Do not initiate plupload.STARTED state, if file queue is empty.
|
||||
Additional language packs: Estonian, Polish, Korean, French-Canadian, Greek, Persian/Farsi.
|
||||
Version 1.5.2 (2012-01-06)
|
||||
UI Widget: Do not show UI if no runtime can be initialized.
|
||||
UI Widget: Timely update file size and total size if resize in action.
|
||||
UI Widget: Constrain renaming feature to queued files only.
|
||||
UI Widget: Disable Add button properly, if requested, rather then just hide.
|
||||
HTML4/HTML5/BrowserPlus: Avoid adding mime type twice to dialog trigger.
|
||||
HTML5: fix regression, when unresized images were failing on FF3.6.
|
||||
HTML5: Constrain Gecko 2,5,6 workaround to multipart mode only.
|
||||
HTML5/Flash: Take into account weird possibilities of ExifVersion being a string, rather then standard Undefined.
|
||||
Flash: Simplify event dispatching in BitmapDataUnlimited class, in order to avoid freezing on resizing in FP11.
|
||||
Add ability to disable file dialog trigger on request (uploader.disableBrowse(true/false)).
|
||||
Support for immediate abort of upload process, be it chunked upload or regular one.
|
||||
Abort all activity, before destroying uploader.
|
||||
Revive temporary file removal logic in upload.php.
|
||||
Fix potential vulnerability in dump.php and upload.php.
|
||||
Additional MIME types: application/vnd.openxmlformats-officedocument.*, application/x-javascript, application/json, text/css,css, application/vnd.oasis.opendocument.formula-templat.
|
||||
Additional language packs: Hungarian, Croatian, Serbian, Romanian.
|
||||
Version 1.5.1.1 (2011-09-27)
|
||||
HTML5: Fix mechanical typo, that successfully broke drag and drop, wherever could.
|
||||
Version 1.5.1 (2011-09-26)
|
||||
HTML4: Add support for server responses in HTML format.
|
||||
HTML5: Disable multiple file selection in Safari 5.x for Windows (see #363).
|
||||
HTML5: Gecko 2/5/6 should upload chunks as binary strings when in chunking mode and client side resize is requested.
|
||||
Flash: Enforce URLStream mode when custom headers are passed.
|
||||
Flash: Fix embedding problems in IE9 (and all other IEs).
|
||||
Flash/Gears/BrowserPlus/SilverLight: Expose multi_selection feature, to be used in required_features (mainly to overcome Safari for Windows problem).
|
||||
SilverLight: Properly handle custom and null headers.
|
||||
UploadComplete moved to fire after the last StateChanged event.
|
||||
Additional language packs: Finnish.
|
||||
Version 1.5b (2011-09-11)
|
||||
UI Widget: Fix sortable logic.
|
||||
UI Widget: Fix bug, when message was displayed simultaneously across all Plupload UI instances on the page.
|
||||
UI Widget: notify() method is now public - users can throw their own messages into the widget header.
|
||||
HTML4/HTML5: Revise input[type=file] placement logic to support cursor styling on Geko 2+.
|
||||
HTML5: Revise Drag'n'Drop detection logic.
|
||||
HTML5: Make Exif and GPS information available to user, introduce two new events: ExifData and GpsData.
|
||||
HTML5: Add support for File.prototype.slice() method (mozSlice/webkitSlice) in order to be able to upload files in chunks without preloading.
|
||||
HTML5: Remove any JPEG headers before restoring them, 'cause user agent (like Chrome), might be inserting it's own.
|
||||
Flash: Remove a limit on the depth of image header check, since it still fails in some cases and performance gain is negligible.
|
||||
Flash: Fix regression, when runtime hanged when not images where passed in as images.
|
||||
SilverLight: Fix bug, when JSON serializer was failing on null.
|
||||
SilverLight: Remove cast to integer for chunk boundary, which resulted in a wrong size for last chunks on huge files.
|
||||
SilverLight: Increase read buffer, add disposal of ImageStream and FileStream, optimize for performance.
|
||||
Updated build.xml to include language packs in release package under js/ folder.
|
||||
Gears/BrowserPlus: Add support for * file filter.
|
||||
BeforeUpload now can cancel upload if required.
|
||||
Additional MIME types: text/csv, image/photoshop, video/x-ms-wmv, video/avi, video/webm support
|
||||
Additional language packs: Japanese
|
||||
Cleaned examples.
|
||||
Version 1.4.3.2 (2011-04-13)
|
||||
Fixed bug in HTML5 runtime, when was reduced by a factor of 100 after every upload.
|
||||
Version 1.4.3.1 (2011-04-12)
|
||||
Fixed build script, mistakenly populating jquery.plupload.queue directory from jquery.ui.plupload sources.
|
||||
Fixed script urls in all examples, build script now will alter them automatically from dev to release when needed.
|
||||
Fixed isEmptyObj undefined error in HTML4 runtime.
|
||||
Fixed bug in UI Widget preventing UploadComplete from triggering.
|
||||
Version 1.4.3 (2011-04-11)
|
||||
Added Latvian language pack and updated French.
|
||||
Fixed bug in Flash runtime when JPEG header was not investigated deep enough to reach SOFn marker in large images.
|
||||
Fixed bug, when PNGs were cropped to width in Flash runtimes, rather then resized.
|
||||
Fixed Flash to allow multiple uploading of the same file, with different settings.
|
||||
Fixed Flash runtime to clean anonymous listeners properly.
|
||||
Fixed HTML5 runtime to resolve to mimeType in case-insensitive way.
|
||||
Fixed HTML5/Flash/SilverLight/Gears runtimes for inconsistency in naming of chunks feature, comparing to other runtimes.
|
||||
Fixed HTML4/HTML5 runtimes for input[type=file] to outsize contaner effectively enough to fill the whole click area.
|
||||
Fixed all runtimes to preserve position (relative/absolute) rule on containers that already have it.
|
||||
Fixed SilverLight runtime to support large files (over 2GB).
|
||||
Restructured the examples, src and build scripts to make it more clear that jQuery is optional.
|
||||
Added support for *.* filter.
|
||||
Added support for preserving ICC and IPTC headers when resizing JPEGs.
|
||||
Added Image.onerror/onabort handlers to HTML5 in order to gracefully bypass faulty images.
|
||||
Added ability to drop image size (by lowering quality), while preserving original dimension (HTML5/Flash/Gears).
|
||||
Ported EXIF, ICC, IPTC preservation code to Flash runtime.
|
||||
Version 1.4.2 (2011-02-20)
|
||||
Added Brazilian Portuguese, German, Russian and Spanish translations.
|
||||
Added support for file_data_name option to SilverLight runtime.
|
||||
Added support for better quality image resizing to Flash runtime.
|
||||
Added support for properly handling images with dimensions up to 8191x8191 pixels to Flash runtime.
|
||||
Added 'updatelist' event to UI Widget, which will be triggered every time file list will get redrawn.
|
||||
Added support for dynamically changing options to UI Widget.
|
||||
Fixed HTML4 runtime bug, when UploadFile handler was attached twice.
|
||||
Fixed HTML5 to use FileReader.readAsBinaryString() instead of File.getAsBinary() on newer WebKit browsers (like Chrome 9).
|
||||
Fixed Flash runtime from sending duplicate Filename param, when using FileReference.upload().
|
||||
Updated S3 example to illustrate support for a proper progress indication.
|
||||
Version 1.4.1 (2011-02-01)
|
||||
Added an example on how to use Plupload with Amazon S3 written in PHP but can easily be ported to other languages.
|
||||
Fixed bug where hidden input elements wasn't created when the multiple_queues option wasn't used.
|
||||
Fixed bug where FF4 would produce an exception about missing BlobBuilder.
|
||||
Version 1.4.0 (2011-01-26)
|
||||
Added removeEvent and removeAllEvents methods and modified addEvent accordingly, in order to support dynamic unload.
|
||||
Added unbindAll method.
|
||||
Added UploadComplete event, which fires when internal iterator reaches the end of the queue.
|
||||
Added public destroy method to plupload object, new event - Destroy, and corresponding handlers to all runtimes.
|
||||
Added Czech, Italian, French, Dutch translations.
|
||||
Added support for translatable error messages.
|
||||
Added two new options: browse_button_hover and browse_button_active, in order to support browse_button interactivity.
|
||||
Added support for 'multi_selection: false' to Silverlight runtime.
|
||||
Added support for video/mp4, video/x-m4v and audio/mp4 MIME Types.
|
||||
Added artificial sendAsBinary method to XMLHttpRequest.prototype for browsers that have support for BlobBuilder and typed arrays.
|
||||
Added version tracking variable into plupload object and version comment to the header of every file.
|
||||
Fixed measurements of browse_button element in order to size and position input[type=file] element to fit it fully.
|
||||
Fixed Flash runtime behavior for multiple_select=false and other simpleUpload usage cases: basically new FileReference has to be created for every select dialog.
|
||||
Fixed browser sniffer to match only Safari, for fakeSafariDragDrop (seems like Safari on Mac doesn't require it either).
|
||||
Fixed so that ExternalInterface escapes strings properly, before passing them to JS.
|
||||
Fixed eventual reinitialization of flash/silverlight runtimes, especially for cases when object wrapper needed to be programmatically hidden and then shown again.
|
||||
Fixed so that Plupload will now ignore files with duplicate names when adding to the queue, in one set. Mainly introduced to work around Safari on Windows bug (https://bugs.webkit.org/show_bug.cgi?id=37957).
|
||||
Fixed bug, when final UploadProgress was firing after FileUploaded for Flash simpleUpload.
|
||||
Fixed bug where upload would fail if an error was produced inside the FilesAdded event.
|
||||
Fixed bug in Flash runtime when it used a wrong size when resizing, but not chunking.
|
||||
Fixed bug in Silverlight runtime that would keep sending 0 byte packages when a picture was chunked before resized.
|
||||
Disabled blur filter (is going to be replaced with some bilinear resampling in next release).
|
||||
Completely revised UI Widget, to be more jQuery UI oriented. Optionally depends on UI Button, UI Sortable, UI ProgressBar.
|
||||
Version 1.3.0 (2010-11-24)
|
||||
Added new jQuery UI widget that supports jQuery UI themes.
|
||||
Added new multiple_queues option that enables you to upload multiple times in the queue widgets.
|
||||
Added support for crossdomain loading of the XAP and SWF files and crossdomain upload.
|
||||
Added new multiple_queues option that enables you to upload multiple times in the queue widgets.
|
||||
Added support for crossdomain loading of the XAP and SWF files and crossdomain upload.
|
||||
Added preinit/init options to to ease up the binding of custom events to queueWidget and the Uploader class.
|
||||
Added drag/drop support for Safari until they fix the broken drag/drop support on Windows.
|
||||
Added events example file that show how to bind all events and display event specific data.
|
||||
Added support for retaining Exif data on images when they where resized using the HTML5 runtime.
|
||||
Fixed logic issue with the upload.php example file. Chunking wasn't working correctly.
|
||||
Fixed issue with HTML4 not handling the form encoding correctly on older IE versions. Patch contributed by jinxdone.
|
||||
Fixed so the HTML4 runtime only submits the defined multipart_params arguments.
|
||||
Fixes issue where it wasn't possible to dynamically override url or mutlipart_params for the HTML4 runtime.
|
||||
Fixed so all runtimes pass the name, chunk and chunks parameters as multipart parameters instead of querystring parameters.
|
||||
Fixed so files are read using the newer FileReader class if it's available if not it tries the older getAsXXX on Gecko.
|
||||
Fixed bug where IE 9 beta 1 wouldn't render Silverlight properly.
|
||||
Fixed bug where Flash would do extra empty requests if images below a specific size would be uploaded.
|
||||
Fixed bug where Google Gears would resize and re-encode images even if the it wasn't changed in scale.
|
||||
Fixed bug where the HTML5 runtime wouldn't free memory after each request on Gecko.
|
||||
Version 1.2.4 (2010-09-08)
|
||||
Added new BeforeUpload event to make it easier to override settings before a file is uploaded.
|
||||
Added new automatic usage of FileReference in Flash if it's possible. Contributed by Marcel Jackwerth.
|
||||
Added new chunking support for Chrome 5 and Firefox 3.6 using the HTML 5 runtime.
|
||||
Added new multipart upload support for WebKit using the HTML 5 runtime and the FormData object.
|
||||
Added new image scaling method for the Flash runtime contributed by rcoopman.
|
||||
Added new alert error message if the user selected invalid files.
|
||||
Added new automatic unique name generation to the example.php script. Contributed by Brandon Kelly.
|
||||
Changed so the default upload method is multipart and the default chunk size is 0.
|
||||
Fixed progress issue with the HTML5 runtime running on Gecko.
|
||||
Fixed so longer extensions can be used such as .tar.gz.
|
||||
Fixed so the file extension is retained when using the unique_names option.
|
||||
Version 1.2.3 (2010-05-27)
|
||||
Added new drag/drop support for HTML5 running on Chrome beta.
|
||||
Added new multipart state for the features object. It's now possible to detect multipart support.
|
||||
Added new getFeatures function to all runtime. Basic concept by Javier Martinez Fernandez.
|
||||
Fixed bug where runtimes where initialized even if they didn't match the required_features setting.
|
||||
Version 1.2.2.1 (2010-05-04)
|
||||
Added new headers option, enables you to set custom headers for the upload requests.
|
||||
Fixed bug where the file extension checking was case sensitive.
|
||||
Version 1.2.2 (2010-04-26)
|
||||
Added new file_data_name option that enables you to set the multipart file data param. Patch contributed by Alex Ganov.
|
||||
Added new FILE_SIZE_ERROR type that will be triggered if the user selected a file that is to large or zero bytes.
|
||||
Added new FILE_EXTENSION_ERROR type that will be triggered if you add a file with an invalid file extension.
|
||||
Added new required_features setting, enables you to specify a list of required features that the runtime must have.
|
||||
Fixed so the plupload.buildUrl function uses the UTF compatible encodeURIComponent method instead of escape.
|
||||
Fixed so that all file types can be selected if you don't specify a filter setting.
|
||||
Fixed so more valid HTTP status codes are accepted as valid responses.
|
||||
Fixed so all runtimes fills the features object with available features.
|
||||
Fixed some issues with the HTML4 runtime if there wasn't any existing forms on the page.
|
||||
Fixed some conflict issues with HTML4 runtime and forms with the input names of action or target.
|
||||
Fixed bug where some Gecko versions would produce exceptions when checking the HTTP status of a XHR.
|
||||
Version 1.2.1 (2010-03-22)
|
||||
Fixed bug with incorrect aspect ratio in Flash image scaling.
|
||||
Fixed bug where chunked uploads could get scrambled in the Flash runtime. Patch contributed by Grady Werner.
|
||||
Fixed bug where a beta version of Chrome wouldn't handle drag/drop correctly because of missing drag effect.
|
||||
Fixed so the HTML 4 runtime displays N/A for file sizes and the progress is based on uploaded files instead of bytes.
|
||||
Fixed so chunking can be disabled properly in Flash but that will affect the progress bar.
|
||||
Fixed so queue widget displays the drag/drop message if file queue is emptied.
|
||||
Fixed small files are uploaded as one single chunk and not forced into 4 chunks in the Flash runtime.
|
||||
Version 1.2 (2010-03-09)
|
||||
Added new rename file support for jQuery queue widget, click on a file name to rename it if it's enabled.
|
||||
Added official ChunkUploaded event, it similar to FileUploaded but executed for each chunk.
|
||||
Added bytes per second support to total queue progress.
|
||||
Added better error handling to core API using the new Error event.
|
||||
Added better error handling to jQuery queue widget.
|
||||
Fixed so chunking uploads is dispatch from JS not from inside Flash/Silverlight.
|
||||
Version 1.1.1 (2010-02-25)
|
||||
Added new setup setting to queue widget. Makes it easier to bind custom events to uploader instance.
|
||||
Fixed so it's possible to disable chunking compleatly. It's now disabled by default.
|
||||
Fixed bug where multipart mode was enabled all the time in the Flash runtime.
|
||||
Fixed bug where chunked uploading in Silverlight would fail.
|
||||
Fixed bug where the delete button was visible while uploading.
|
||||
Fixed bug where unique_names setting wasn't working when the core API was used.
|
||||
Fixed bug where the queue widget wouldn't display the currently uploaded file if the unique_names was enabled.
|
||||
Version 1.1 (2010-02-24)
|
||||
Added new multipart and multipart_params support.
|
||||
Added new container option, enables you to specify where flash/silverlight objects would be added.
|
||||
Added chunking support to BrowserPlus runtime, contributed by Steve Spencer.
|
||||
Added FileUploaded event that fires when a file is uploaded.
|
||||
Added more easily understandable buttons to queue widget.
|
||||
Added html4 runtime, contributed by Ryan Demmer.
|
||||
Fixed issues with i18n support and added a Swedish and Danish language pack.
|
||||
Fixed bug where the Flash runtime could do empty requests if the image was scaled down.
|
||||
Fixed bug where uploading small images in Silverlight would produce an exception.
|
||||
Fixed so the runtime list can include whitespace or missing runtimes. Patch contributed by <20>yvind Sean Kinsey.
|
||||
Fixed so to large files are ignored and never dispatched to the FilesAdded event.
|
||||
Version 1.0 (2010-02-03)
|
||||
First official release of Plupload.
|
491
wp-includes/js/plupload/handlers.js
Normal file
491
wp-includes/js/plupload/handlers.js
Normal file
@ -0,0 +1,491 @@
|
||||
var topWin = window.dialogArguments || opener || parent || top, uploader, uploader_init;
|
||||
|
||||
function fileDialogStart() {
|
||||
jQuery("#media-upload-error").empty();
|
||||
}
|
||||
|
||||
// progress and success handlers for media multi uploads
|
||||
function fileQueued(fileObj) {
|
||||
// Get rid of unused form
|
||||
jQuery('.media-blank').remove();
|
||||
|
||||
var items = jQuery('#media-items').children(), postid = post_id || 0;
|
||||
|
||||
// Collapse a single item
|
||||
if ( items.length == 1 ) {
|
||||
items.removeClass('open').find('.slidetoggle').slideUp(200);
|
||||
}
|
||||
// Create a progress bar containing the filename
|
||||
jQuery('<div class="media-item">')
|
||||
.attr( 'id', 'media-item-' + fileObj.id )
|
||||
.addClass('child-of-' + postid)
|
||||
.append('<div class="progress"><div class="percent">0%</div><div class="bar"></div></div>',
|
||||
jQuery('<div class="filename original">').text( ' ' + fileObj.name ))
|
||||
.appendTo( jQuery('#media-items' ) );
|
||||
|
||||
// Disable submit
|
||||
jQuery('#insert-gallery').prop('disabled', true);
|
||||
}
|
||||
|
||||
function uploadStart() {
|
||||
try {
|
||||
if ( typeof topWin.tb_remove != 'undefined' )
|
||||
topWin.jQuery('#TB_overlay').unbind('click', topWin.tb_remove);
|
||||
} catch(e){}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function uploadProgress(up, file) {
|
||||
var item = jQuery('#media-item-' + file.id);
|
||||
|
||||
jQuery('.bar', item).width( (200 * file.loaded) / file.size );
|
||||
jQuery('.percent', item).html( file.percent + '%' );
|
||||
}
|
||||
|
||||
// check to see if a large file failed to upload
|
||||
function fileUploading(up, file) {
|
||||
var hundredmb = 100 * 1024 * 1024, max = parseInt(up.settings.max_file_size, 10);
|
||||
|
||||
if ( max > hundredmb && file.size > hundredmb ) {
|
||||
setTimeout(function(){
|
||||
var done;
|
||||
|
||||
if ( file.status < 3 && file.loaded == 0 ) { // not uploading
|
||||
wpFileError(file, pluploadL10n.big_upload_failed.replace('%1$s', '<a class="uploader-html" href="#">').replace('%2$s', '</a>'));
|
||||
up.stop(); // stops the whole queue
|
||||
up.removeFile(file);
|
||||
up.start(); // restart the queue
|
||||
}
|
||||
}, 10000); // wait for 10 sec. for the file to start uploading
|
||||
}
|
||||
}
|
||||
|
||||
function updateMediaForm() {
|
||||
var items = jQuery('#media-items').children();
|
||||
|
||||
// Just one file, no need for collapsible part
|
||||
if ( items.length == 1 ) {
|
||||
items.addClass('open').find('.slidetoggle').show();
|
||||
jQuery('.insert-gallery').hide();
|
||||
} else if ( items.length > 1 ) {
|
||||
items.removeClass('open');
|
||||
// Only show Gallery button when there are at least two files.
|
||||
jQuery('.insert-gallery').show();
|
||||
}
|
||||
|
||||
// Only show Save buttons when there is at least one file.
|
||||
if ( items.not('.media-blank').length > 0 )
|
||||
jQuery('.savebutton').show();
|
||||
else
|
||||
jQuery('.savebutton').hide();
|
||||
}
|
||||
|
||||
function uploadSuccess(fileObj, serverData) {
|
||||
var item = jQuery('#media-item-' + fileObj.id);
|
||||
|
||||
// on success serverData should be numeric, fix bug in html4 runtime returning the serverData wrapped in a <pre> tag
|
||||
serverData = serverData.replace(/^<pre>(\d+)<\/pre>$/, '$1');
|
||||
|
||||
// if async-upload returned an error message, place it in the media item div and return
|
||||
if ( serverData.match(/media-upload-error|error-div/) ) {
|
||||
item.html(serverData);
|
||||
return;
|
||||
} else {
|
||||
jQuery('.percent', item).html( pluploadL10n.crunching );
|
||||
}
|
||||
|
||||
prepareMediaItem(fileObj, serverData);
|
||||
updateMediaForm();
|
||||
|
||||
// Increment the counter.
|
||||
if ( post_id && item.hasClass('child-of-' + post_id) )
|
||||
jQuery('#attachments-count').text(1 * jQuery('#attachments-count').text() + 1);
|
||||
}
|
||||
|
||||
function setResize(arg) {
|
||||
if ( arg ) {
|
||||
if ( uploader.features.jpgresize )
|
||||
uploader.settings['resize'] = { width: resize_width, height: resize_height, quality: 100 };
|
||||
else
|
||||
uploader.settings.multipart_params.image_resize = true;
|
||||
} else {
|
||||
delete(uploader.settings.resize);
|
||||
delete(uploader.settings.multipart_params.image_resize);
|
||||
}
|
||||
}
|
||||
|
||||
function prepareMediaItem(fileObj, serverData) {
|
||||
var f = ( typeof shortform == 'undefined' ) ? 1 : 2, item = jQuery('#media-item-' + fileObj.id);
|
||||
if ( f == 2 && shortform > 2 )
|
||||
f = shortform;
|
||||
|
||||
try {
|
||||
if ( typeof topWin.tb_remove != 'undefined' )
|
||||
topWin.jQuery('#TB_overlay').click(topWin.tb_remove);
|
||||
} catch(e){}
|
||||
|
||||
if ( isNaN(serverData) || !serverData ) { // Old style: Append the HTML returned by the server -- thumbnail and form inputs
|
||||
item.append(serverData);
|
||||
prepareMediaItemInit(fileObj);
|
||||
} else { // New style: server data is just the attachment ID, fetch the thumbnail and form html from the server
|
||||
item.load('async-upload.php', {attachment_id:serverData, fetch:f}, function(){prepareMediaItemInit(fileObj);updateMediaForm()});
|
||||
}
|
||||
}
|
||||
|
||||
function prepareMediaItemInit(fileObj) {
|
||||
var item = jQuery('#media-item-' + fileObj.id);
|
||||
// Clone the thumbnail as a "pinkynail" -- a tiny image to the left of the filename
|
||||
jQuery('.thumbnail', item).clone().attr('class', 'pinkynail toggle').prependTo(item);
|
||||
|
||||
// Replace the original filename with the new (unique) one assigned during upload
|
||||
jQuery('.filename.original', item).replaceWith( jQuery('.filename.new', item) );
|
||||
|
||||
// Bind AJAX to the new Delete button
|
||||
jQuery('a.delete', item).click(function(){
|
||||
// Tell the server to delete it. TODO: handle exceptions
|
||||
jQuery.ajax({
|
||||
url: ajaxurl,
|
||||
type: 'post',
|
||||
success: deleteSuccess,
|
||||
error: deleteError,
|
||||
id: fileObj.id,
|
||||
data: {
|
||||
id : this.id.replace(/[^0-9]/g, ''),
|
||||
action : 'trash-post',
|
||||
_ajax_nonce : this.href.replace(/^.*wpnonce=/,'')
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Bind AJAX to the new Undo button
|
||||
jQuery('a.undo', item).click(function(){
|
||||
// Tell the server to untrash it. TODO: handle exceptions
|
||||
jQuery.ajax({
|
||||
url: ajaxurl,
|
||||
type: 'post',
|
||||
id: fileObj.id,
|
||||
data: {
|
||||
id : this.id.replace(/[^0-9]/g,''),
|
||||
action: 'untrash-post',
|
||||
_ajax_nonce: this.href.replace(/^.*wpnonce=/,'')
|
||||
},
|
||||
success: function(data, textStatus){
|
||||
var item = jQuery('#media-item-' + fileObj.id);
|
||||
|
||||
if ( type = jQuery('#type-of-' + fileObj.id).val() )
|
||||
jQuery('#' + type + '-counter').text(jQuery('#' + type + '-counter').text()-0+1);
|
||||
|
||||
if ( post_id && item.hasClass('child-of-'+post_id) )
|
||||
jQuery('#attachments-count').text(jQuery('#attachments-count').text()-0+1);
|
||||
|
||||
jQuery('.filename .trashnotice', item).remove();
|
||||
jQuery('.filename .title', item).css('font-weight','normal');
|
||||
jQuery('a.undo', item).addClass('hidden');
|
||||
jQuery('.menu_order_input', item).show();
|
||||
item.css( {backgroundColor:'#ceb'} ).animate( {backgroundColor: '#fff'}, { queue: false, duration: 500, complete: function(){ jQuery(this).css({backgroundColor:''}); } }).removeClass('undo');
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// Open this item if it says to start open (e.g. to display an error)
|
||||
jQuery('#media-item-' + fileObj.id + '.startopen').removeClass('startopen').addClass('open').find('slidetoggle').fadeIn();
|
||||
}
|
||||
|
||||
// generic error message
|
||||
function wpQueueError(message) {
|
||||
jQuery('#media-upload-error').show().html( '<div class="error"><p>' + message + '</p></div>' );
|
||||
}
|
||||
|
||||
// file-specific error messages
|
||||
function wpFileError(fileObj, message) {
|
||||
itemAjaxError(fileObj.id, message);
|
||||
}
|
||||
|
||||
function itemAjaxError(id, message) {
|
||||
var item = jQuery('#media-item-' + id), filename = item.find('.filename').text(), last_err = item.data('last-err');
|
||||
|
||||
if ( last_err == id ) // prevent firing an error for the same file twice
|
||||
return;
|
||||
|
||||
item.html('<div class="error-div">'
|
||||
+ '<a class="dismiss" href="#">' + pluploadL10n.dismiss + '</a>'
|
||||
+ '<strong>' + pluploadL10n.error_uploading.replace('%s', jQuery.trim(filename)) + '</strong> '
|
||||
+ message
|
||||
+ '</div>').data('last-err', id);
|
||||
}
|
||||
|
||||
function deleteSuccess(data, textStatus) {
|
||||
if ( data == '-1' )
|
||||
return itemAjaxError(this.id, 'You do not have permission. Has your session expired?');
|
||||
|
||||
if ( data == '0' )
|
||||
return itemAjaxError(this.id, 'Could not be deleted. Has it been deleted already?');
|
||||
|
||||
var id = this.id, item = jQuery('#media-item-' + id);
|
||||
|
||||
// Decrement the counters.
|
||||
if ( type = jQuery('#type-of-' + id).val() )
|
||||
jQuery('#' + type + '-counter').text( jQuery('#' + type + '-counter').text() - 1 );
|
||||
|
||||
if ( post_id && item.hasClass('child-of-'+post_id) )
|
||||
jQuery('#attachments-count').text( jQuery('#attachments-count').text() - 1 );
|
||||
|
||||
if ( jQuery('form.type-form #media-items').children().length == 1 && jQuery('.hidden', '#media-items').length > 0 ) {
|
||||
jQuery('.toggle').toggle();
|
||||
jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden');
|
||||
}
|
||||
|
||||
// Vanish it.
|
||||
jQuery('.toggle', item).toggle();
|
||||
jQuery('.slidetoggle', item).slideUp(200).siblings().removeClass('hidden');
|
||||
item.css( {backgroundColor:'#faa'} ).animate( {backgroundColor:'#f4f4f4'}, {queue:false, duration:500} ).addClass('undo');
|
||||
|
||||
jQuery('.filename:empty', item).remove();
|
||||
jQuery('.filename .title', item).css('font-weight','bold');
|
||||
jQuery('.filename', item).append('<span class="trashnotice"> ' + pluploadL10n.deleted + ' </span>').siblings('a.toggle').hide();
|
||||
jQuery('.filename', item).append( jQuery('a.undo', item).removeClass('hidden') );
|
||||
jQuery('.menu_order_input', item).hide();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
function deleteError(X, textStatus, errorThrown) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
function uploadComplete() {
|
||||
jQuery('#insert-gallery').prop('disabled', false);
|
||||
}
|
||||
|
||||
function switchUploader(s) {
|
||||
if ( s ) {
|
||||
deleteUserSetting('uploader');
|
||||
jQuery('.media-upload-form').removeClass('html-uploader');
|
||||
|
||||
if ( typeof(uploader) == 'object' )
|
||||
uploader.refresh();
|
||||
} else {
|
||||
setUserSetting('uploader', '1'); // 1 == html uploader
|
||||
jQuery('.media-upload-form').addClass('html-uploader');
|
||||
}
|
||||
}
|
||||
|
||||
function dndHelper(s) {
|
||||
var d = document.getElementById('dnd-helper');
|
||||
|
||||
if ( s ) {
|
||||
d.style.display = 'block';
|
||||
} else {
|
||||
d.style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
function uploadError(fileObj, errorCode, message, uploader) {
|
||||
var hundredmb = 100 * 1024 * 1024, max;
|
||||
|
||||
switch (errorCode) {
|
||||
case plupload.FAILED:
|
||||
wpFileError(fileObj, pluploadL10n.upload_failed);
|
||||
break;
|
||||
case plupload.FILE_EXTENSION_ERROR:
|
||||
wpFileError(fileObj, pluploadL10n.invalid_filetype);
|
||||
break;
|
||||
case plupload.FILE_SIZE_ERROR:
|
||||
uploadSizeError(uploader, fileObj);
|
||||
break;
|
||||
case plupload.IMAGE_FORMAT_ERROR:
|
||||
wpFileError(fileObj, pluploadL10n.not_an_image);
|
||||
break;
|
||||
case plupload.IMAGE_MEMORY_ERROR:
|
||||
wpFileError(fileObj, pluploadL10n.image_memory_exceeded);
|
||||
break;
|
||||
case plupload.IMAGE_DIMENSIONS_ERROR:
|
||||
wpFileError(fileObj, pluploadL10n.image_dimensions_exceeded);
|
||||
break;
|
||||
case plupload.GENERIC_ERROR:
|
||||
wpQueueError(pluploadL10n.upload_failed);
|
||||
break;
|
||||
case plupload.IO_ERROR:
|
||||
max = parseInt(uploader.settings.max_file_size, 10);
|
||||
|
||||
if ( max > hundredmb && fileObj.size > hundredmb )
|
||||
wpFileError(fileObj, pluploadL10n.big_upload_failed.replace('%1$s', '<a class="uploader-html" href="#">').replace('%2$s', '</a>'));
|
||||
else
|
||||
wpQueueError(pluploadL10n.io_error);
|
||||
break;
|
||||
case plupload.HTTP_ERROR:
|
||||
wpQueueError(pluploadL10n.http_error);
|
||||
break;
|
||||
case plupload.INIT_ERROR:
|
||||
jQuery('.media-upload-form').addClass('html-uploader');
|
||||
break;
|
||||
case plupload.SECURITY_ERROR:
|
||||
wpQueueError(pluploadL10n.security_error);
|
||||
break;
|
||||
/* case plupload.UPLOAD_ERROR.UPLOAD_STOPPED:
|
||||
case plupload.UPLOAD_ERROR.FILE_CANCELLED:
|
||||
jQuery('#media-item-' + fileObj.id).remove();
|
||||
break;*/
|
||||
default:
|
||||
wpFileError(fileObj, pluploadL10n.default_error);
|
||||
}
|
||||
}
|
||||
|
||||
function uploadSizeError( up, file, over100mb ) {
|
||||
var message;
|
||||
|
||||
if ( over100mb )
|
||||
message = pluploadL10n.big_upload_queued.replace('%s', file.name) + ' ' + pluploadL10n.big_upload_failed.replace('%1$s', '<a class="uploader-html" href="#">').replace('%2$s', '</a>');
|
||||
else
|
||||
message = pluploadL10n.file_exceeds_size_limit.replace('%s', file.name);
|
||||
|
||||
jQuery('#media-items').append('<div id="media-item-' + file.id + '" class="media-item error"><p>' + message + '</p></div>');
|
||||
up.removeFile(file);
|
||||
}
|
||||
|
||||
jQuery(document).ready(function($){
|
||||
$('.media-upload-form').bind('click.uploader', function(e) {
|
||||
var target = $(e.target), tr, c;
|
||||
|
||||
if ( target.is('input[type="radio"]') ) { // remember the last used image size and alignment
|
||||
tr = target.closest('tr');
|
||||
|
||||
if ( tr.hasClass('align') )
|
||||
setUserSetting('align', target.val());
|
||||
else if ( tr.hasClass('image-size') )
|
||||
setUserSetting('imgsize', target.val());
|
||||
|
||||
} else if ( target.is('button.button') ) { // remember the last used image link url
|
||||
c = e.target.className || '';
|
||||
c = c.match(/url([^ '"]+)/);
|
||||
|
||||
if ( c && c[1] ) {
|
||||
setUserSetting('urlbutton', c[1]);
|
||||
target.siblings('.urlfield').val( target.data('link-url') );
|
||||
}
|
||||
} else if ( target.is('a.dismiss') ) {
|
||||
target.parents('.media-item').fadeOut(200, function(){
|
||||
$(this).remove();
|
||||
});
|
||||
} else if ( target.is('.upload-flash-bypass a') || target.is('a.uploader-html') ) { // switch uploader to html4
|
||||
$('#media-items, p.submit, span.big-file-warning').css('display', 'none');
|
||||
switchUploader(0);
|
||||
e.preventDefault();
|
||||
} else if ( target.is('.upload-html-bypass a') ) { // switch uploader to multi-file
|
||||
$('#media-items, p.submit, span.big-file-warning').css('display', '');
|
||||
switchUploader(1);
|
||||
e.preventDefault();
|
||||
} else if ( target.is('a.describe-toggle-on') ) { // Show
|
||||
target.parent().addClass('open');
|
||||
target.siblings('.slidetoggle').fadeIn(250, function(){
|
||||
var S = $(window).scrollTop(), H = $(window).height(), top = $(this).offset().top, h = $(this).height(), b, B;
|
||||
|
||||
if ( H && top && h ) {
|
||||
b = top + h;
|
||||
B = S + H;
|
||||
|
||||
if ( b > B ) {
|
||||
if ( b - B < top - S )
|
||||
window.scrollBy(0, (b - B) + 10);
|
||||
else
|
||||
window.scrollBy(0, top - S - 40);
|
||||
}
|
||||
}
|
||||
});
|
||||
e.preventDefault();
|
||||
} else if ( target.is('a.describe-toggle-off') ) { // Hide
|
||||
target.siblings('.slidetoggle').fadeOut(250, function(){
|
||||
target.parent().removeClass('open');
|
||||
});
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
// init and set the uploader
|
||||
uploader_init = function() {
|
||||
uploader = new plupload.Uploader(wpUploaderInit);
|
||||
|
||||
$('#image_resize').bind('change', function() {
|
||||
var arg = $(this).prop('checked');
|
||||
|
||||
setResize( arg );
|
||||
|
||||
if ( arg )
|
||||
setUserSetting('upload_resize', '1');
|
||||
else
|
||||
deleteUserSetting('upload_resize');
|
||||
});
|
||||
|
||||
uploader.bind('Init', function(up) {
|
||||
var uploaddiv = $('#plupload-upload-ui');
|
||||
|
||||
setResize( getUserSetting('upload_resize', false) );
|
||||
|
||||
if ( up.features.dragdrop && ! $(document.body).hasClass('mobile') ) {
|
||||
uploaddiv.addClass('drag-drop');
|
||||
$('#drag-drop-area').bind('dragover.wp-uploader', function(){ // dragenter doesn't fire right :(
|
||||
uploaddiv.addClass('drag-over');
|
||||
}).bind('dragleave.wp-uploader, drop.wp-uploader', function(){
|
||||
uploaddiv.removeClass('drag-over');
|
||||
});
|
||||
} else {
|
||||
uploaddiv.removeClass('drag-drop');
|
||||
$('#drag-drop-area').unbind('.wp-uploader');
|
||||
}
|
||||
|
||||
if ( up.runtime == 'html4' )
|
||||
$('.upload-flash-bypass').hide();
|
||||
});
|
||||
|
||||
uploader.init();
|
||||
|
||||
uploader.bind('FilesAdded', function(up, files) {
|
||||
var hundredmb = 100 * 1024 * 1024, max = parseInt(up.settings.max_file_size, 10);
|
||||
|
||||
$('#media-upload-error').html('');
|
||||
uploadStart();
|
||||
|
||||
plupload.each(files, function(file){
|
||||
if ( max > hundredmb && file.size > hundredmb && up.runtime != 'html5' )
|
||||
uploadSizeError( up, file, true );
|
||||
else
|
||||
fileQueued(file);
|
||||
});
|
||||
|
||||
up.refresh();
|
||||
up.start();
|
||||
});
|
||||
|
||||
uploader.bind('BeforeUpload', function(up, file) {
|
||||
// something
|
||||
});
|
||||
|
||||
uploader.bind('UploadFile', function(up, file) {
|
||||
fileUploading(up, file);
|
||||
});
|
||||
|
||||
uploader.bind('UploadProgress', function(up, file) {
|
||||
uploadProgress(up, file);
|
||||
});
|
||||
|
||||
uploader.bind('Error', function(up, err) {
|
||||
uploadError(err.file, err.code, err.message, up);
|
||||
up.refresh();
|
||||
});
|
||||
|
||||
uploader.bind('FileUploaded', function(up, file, response) {
|
||||
uploadSuccess(file, response.response);
|
||||
});
|
||||
|
||||
uploader.bind('UploadComplete', function(up, files) {
|
||||
uploadComplete();
|
||||
});
|
||||
}
|
||||
|
||||
if ( typeof(wpUploaderInit) == 'object' )
|
||||
uploader_init();
|
||||
|
||||
});
|
1
wp-includes/js/plupload/handlers.min.js
vendored
Normal file
1
wp-includes/js/plupload/handlers.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
339
wp-includes/js/plupload/license.txt
Normal file
339
wp-includes/js/plupload/license.txt
Normal file
@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
1
wp-includes/js/plupload/plupload.flash.js
Normal file
1
wp-includes/js/plupload/plupload.flash.js
Normal file
File diff suppressed because one or more lines are too long
BIN
wp-includes/js/plupload/plupload.flash.swf
Normal file
BIN
wp-includes/js/plupload/plupload.flash.swf
Normal file
Binary file not shown.
1
wp-includes/js/plupload/plupload.html4.js
Normal file
1
wp-includes/js/plupload/plupload.html4.js
Normal file
@ -0,0 +1 @@
|
||||
(function(d,a,b,c){function e(f){return a.getElementById(f)}b.runtimes.Html4=b.addRuntime("html4",{getFeatures:function(){return{multipart:true,triggerDialog:(b.ua.gecko&&d.FormData||b.ua.webkit)}},init:function(f,g){f.bind("Init",function(p){var j=a.body,n,h="javascript",k,x,q,z=[],r=/MSIE/.test(navigator.userAgent),t=[],m=p.settings.filters,o,l,s,w;no_type_restriction:for(o=0;o<m.length;o++){l=m[o].extensions.split(/,/);for(w=0;w<l.length;w++){if(l[w]==="*"){t=[];break no_type_restriction}s=b.mimeTypes[l[w]];if(s&&b.inArray(s,t)===-1){t.push(s)}}}t=t.join(",");function v(){var B,y,i,A;q=b.guid();z.push(q);B=a.createElement("form");B.setAttribute("id","form_"+q);B.setAttribute("method","post");B.setAttribute("enctype","multipart/form-data");B.setAttribute("encoding","multipart/form-data");B.setAttribute("target",p.id+"_iframe");B.style.position="absolute";y=a.createElement("input");y.setAttribute("id","input_"+q);y.setAttribute("type","file");y.setAttribute("accept",t);y.setAttribute("size",1);A=e(p.settings.browse_button);if(p.features.triggerDialog&&A){b.addEvent(e(p.settings.browse_button),"click",function(C){if(!y.disabled){y.click()}C.preventDefault()},p.id)}b.extend(y.style,{width:"100%",height:"100%",opacity:0,fontSize:"99px",cursor:"pointer"});b.extend(B.style,{overflow:"hidden"});i=p.settings.shim_bgcolor;if(i){B.style.background=i}if(r){b.extend(y.style,{filter:"alpha(opacity=0)"})}b.addEvent(y,"change",function(F){var D=F.target,C,E=[],G;if(D.value){e("form_"+q).style.top=-1048575+"px";C=D.value.replace(/\\/g,"/");C=C.substring(C.length,C.lastIndexOf("/")+1);E.push(new b.File(q,C));if(!p.features.triggerDialog){b.removeAllEvents(B,p.id)}else{b.removeEvent(A,"click",p.id)}b.removeEvent(y,"change",p.id);v();if(E.length){f.trigger("FilesAdded",E)}}},p.id);B.appendChild(y);j.appendChild(B);p.refresh()}function u(){var i=a.createElement("div");i.innerHTML='<iframe id="'+p.id+'_iframe" name="'+p.id+'_iframe" src="'+h+':""" style="display:none"></iframe>';n=i.firstChild;j.appendChild(n);b.addEvent(n,"load",function(C){var D=C.target,B,y;if(!k){return}try{B=D.contentWindow.document||D.contentDocument||d.frames[D.id].document}catch(A){p.trigger("Error",{code:b.SECURITY_ERROR,message:b.translate("Security error."),file:k});return}y=B.body.innerHTML;if(y){k.status=b.DONE;k.loaded=1025;k.percent=100;p.trigger("UploadProgress",k);p.trigger("FileUploaded",k,{response:y})}},p.id)}if(p.settings.container){j=e(p.settings.container);if(b.getStyle(j,"position")==="static"){j.style.position="relative"}}p.bind("UploadFile",function(i,A){var B,y;if(A.status==b.DONE||A.status==b.FAILED||i.state==b.STOPPED){return}B=e("form_"+A.id);y=e("input_"+A.id);y.setAttribute("name",i.settings.file_data_name);B.setAttribute("action",i.settings.url);b.each(b.extend({name:A.target_name||A.name},i.settings.multipart_params),function(E,C){var D=a.createElement("input");b.extend(D,{type:"hidden",name:C,value:E});B.insertBefore(D,B.firstChild)});k=A;e("form_"+q).style.top=-1048575+"px";B.submit()});p.bind("FileUploaded",function(i){i.refresh()});p.bind("StateChanged",function(i){if(i.state==b.STARTED){u()}else{if(i.state==b.STOPPED){d.setTimeout(function(){b.removeEvent(n,"load",i.id);if(n.parentNode){n.parentNode.removeChild(n)}},0)}}b.each(i.files,function(A,y){if(A.status===b.DONE||A.status===b.FAILED){var B=e("form_"+A.id);if(B){B.parentNode.removeChild(B)}}})});p.bind("Refresh",function(y){var F,A,B,C,i,G,H,E,D;F=e(y.settings.browse_button);if(F){i=b.getPos(F,e(y.settings.container));G=b.getSize(F);H=e("form_"+q);E=e("input_"+q);b.extend(H.style,{top:i.y+"px",left:i.x+"px",width:G.w+"px",height:G.h+"px"});if(y.features.triggerDialog){if(b.getStyle(F,"position")==="static"){b.extend(F.style,{position:"relative"})}D=parseInt(F.style.zIndex,10);if(isNaN(D)){D=0}b.extend(F.style,{zIndex:D});b.extend(H.style,{zIndex:D-1})}B=y.settings.browse_button_hover;C=y.settings.browse_button_active;A=y.features.triggerDialog?F:H;if(B){b.addEvent(A,"mouseover",function(){b.addClass(F,B)},y.id);b.addEvent(A,"mouseout",function(){b.removeClass(F,B)},y.id)}if(C){b.addEvent(A,"mousedown",function(){b.addClass(F,C)},y.id);b.addEvent(a.body,"mouseup",function(){b.removeClass(F,C)},y.id)}}});f.bind("FilesRemoved",function(y,B){var A,C;for(A=0;A<B.length;A++){C=e("form_"+B[A].id);if(C){C.parentNode.removeChild(C)}}});f.bind("DisableBrowse",function(i,A){var y=a.getElementById("input_"+q);if(y){y.disabled=A}});f.bind("Destroy",function(i){var y,A,B,C={inputContainer:"form_"+q,inputFile:"input_"+q,browseButton:i.settings.browse_button};for(y in C){A=e(C[y]);if(A){b.removeAllEvents(A,i.id)}}b.removeAllEvents(a.body,i.id);b.each(z,function(E,D){B=e("form_"+E);if(B){j.removeChild(B)}})});v()});g({success:true})}})})(window,document,plupload);
|
1
wp-includes/js/plupload/plupload.html5.js
Normal file
1
wp-includes/js/plupload/plupload.html5.js
Normal file
File diff suppressed because one or more lines are too long
2
wp-includes/js/plupload/plupload.js
Normal file
2
wp-includes/js/plupload/plupload.js
Normal file
File diff suppressed because one or more lines are too long
1
wp-includes/js/plupload/plupload.silverlight.js
Normal file
1
wp-includes/js/plupload/plupload.silverlight.js
Normal file
File diff suppressed because one or more lines are too long
BIN
wp-includes/js/plupload/plupload.silverlight.xap
Normal file
BIN
wp-includes/js/plupload/plupload.silverlight.xap
Normal file
Binary file not shown.
343
wp-includes/js/plupload/wp-plupload.js
Normal file
343
wp-includes/js/plupload/wp-plupload.js
Normal file
@ -0,0 +1,343 @@
|
||||
window.wp = window.wp || {};
|
||||
|
||||
(function( exports, $ ) {
|
||||
var Uploader;
|
||||
|
||||
if ( typeof _wpPluploadSettings === 'undefined' )
|
||||
return;
|
||||
|
||||
/*
|
||||
* An object that helps create a WordPress uploader using plupload.
|
||||
*
|
||||
* @param options - object - The options passed to the new plupload instance.
|
||||
* Accepts the following parameters:
|
||||
* - container - The id of uploader container.
|
||||
* - browser - The id of button to trigger the file select.
|
||||
* - dropzone - The id of file drop target.
|
||||
* - plupload - An object of parameters to pass to the plupload instance.
|
||||
* - params - An object of parameters to pass to $_POST when uploading the file.
|
||||
* Extends this.plupload.multipart_params under the hood.
|
||||
*
|
||||
* @param attributes - object - Attributes and methods for this specific instance.
|
||||
*/
|
||||
Uploader = function( options ) {
|
||||
var self = this,
|
||||
elements = {
|
||||
container: 'container',
|
||||
browser: 'browse_button',
|
||||
dropzone: 'drop_element'
|
||||
},
|
||||
key, error;
|
||||
|
||||
this.supports = {
|
||||
upload: Uploader.browser.supported
|
||||
};
|
||||
|
||||
this.supported = this.supports.upload;
|
||||
|
||||
if ( ! this.supported )
|
||||
return;
|
||||
|
||||
// Use deep extend to ensure that multipart_params and other objects are cloned.
|
||||
this.plupload = $.extend( true, { multipart_params: {} }, Uploader.defaults );
|
||||
this.container = document.body; // Set default container.
|
||||
|
||||
// Extend the instance with options
|
||||
//
|
||||
// Use deep extend to allow options.plupload to override individual
|
||||
// default plupload keys.
|
||||
$.extend( true, this, options );
|
||||
|
||||
// Proxy all methods so this always refers to the current instance.
|
||||
for ( key in this ) {
|
||||
if ( $.isFunction( this[ key ] ) )
|
||||
this[ key ] = $.proxy( this[ key ], this );
|
||||
}
|
||||
|
||||
// Ensure all elements are jQuery elements and have id attributes
|
||||
// Then set the proper plupload arguments to the ids.
|
||||
for ( key in elements ) {
|
||||
if ( ! this[ key ] )
|
||||
continue;
|
||||
|
||||
this[ key ] = $( this[ key ] ).first();
|
||||
|
||||
if ( ! this[ key ].length ) {
|
||||
delete this[ key ];
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( ! this[ key ].prop('id') )
|
||||
this[ key ].prop( 'id', '__wp-uploader-id-' + Uploader.uuid++ );
|
||||
this.plupload[ elements[ key ] ] = this[ key ].prop('id');
|
||||
}
|
||||
|
||||
// If the uploader has neither a browse button nor a dropzone, bail.
|
||||
if ( ! ( this.browser && this.browser.length ) && ! ( this.dropzone && this.dropzone.length ) )
|
||||
return;
|
||||
|
||||
this.uploader = new plupload.Uploader( this.plupload );
|
||||
delete this.plupload;
|
||||
|
||||
// Set default params and remove this.params alias.
|
||||
this.param( this.params || {} );
|
||||
delete this.params;
|
||||
|
||||
error = function( message, data, file ) {
|
||||
if ( file.attachment )
|
||||
file.attachment.destroy();
|
||||
|
||||
Uploader.errors.unshift({
|
||||
message: message || pluploadL10n.default_error,
|
||||
data: data,
|
||||
file: file
|
||||
});
|
||||
|
||||
self.error( message, data, file );
|
||||
};
|
||||
|
||||
this.uploader.init();
|
||||
|
||||
this.supports.dragdrop = this.uploader.features.dragdrop && ! Uploader.browser.mobile;
|
||||
|
||||
// Generate drag/drop helper classes.
|
||||
(function( dropzone, supported ) {
|
||||
var timer, active;
|
||||
|
||||
if ( ! dropzone )
|
||||
return;
|
||||
|
||||
dropzone.toggleClass( 'supports-drag-drop', !! supported );
|
||||
|
||||
if ( ! supported )
|
||||
return dropzone.unbind('.wp-uploader');
|
||||
|
||||
// 'dragenter' doesn't fire correctly,
|
||||
// simulate it with a limited 'dragover'
|
||||
dropzone.bind( 'dragover.wp-uploader', function(){
|
||||
if ( timer )
|
||||
clearTimeout( timer );
|
||||
|
||||
if ( active )
|
||||
return;
|
||||
|
||||
dropzone.trigger('dropzone:enter').addClass('drag-over');
|
||||
active = true;
|
||||
});
|
||||
|
||||
dropzone.bind('dragleave.wp-uploader, drop.wp-uploader', function(){
|
||||
// Using an instant timer prevents the drag-over class from
|
||||
// being quickly removed and re-added when elements inside the
|
||||
// dropzone are repositioned.
|
||||
//
|
||||
// See http://core.trac.wordpress.org/ticket/21705
|
||||
timer = setTimeout( function() {
|
||||
active = false;
|
||||
dropzone.trigger('dropzone:leave').removeClass('drag-over');
|
||||
}, 0 );
|
||||
});
|
||||
}( this.dropzone, this.supports.dragdrop ));
|
||||
|
||||
if ( this.browser ) {
|
||||
this.browser.on( 'mouseenter', this.refresh );
|
||||
} else {
|
||||
this.uploader.disableBrowse( true );
|
||||
// If HTML5 mode, hide the auto-created file container.
|
||||
$('#' + this.uploader.id + '_html5_container').hide();
|
||||
}
|
||||
|
||||
this.uploader.bind( 'FilesAdded', function( up, files ) {
|
||||
_.each( files, function( file ) {
|
||||
var attributes, image;
|
||||
|
||||
// Ignore failed uploads.
|
||||
if ( plupload.FAILED === file.status )
|
||||
return;
|
||||
|
||||
// Generate attributes for a new `Attachment` model.
|
||||
attributes = _.extend({
|
||||
file: file,
|
||||
uploading: true,
|
||||
date: new Date(),
|
||||
filename: file.name,
|
||||
menuOrder: 0,
|
||||
uploadedTo: wp.media.model.settings.post.id
|
||||
}, _.pick( file, 'loaded', 'size', 'percent' ) );
|
||||
|
||||
// Handle early mime type scanning for images.
|
||||
image = /(?:jpe?g|png|gif)$/i.exec( file.name );
|
||||
|
||||
// Did we find an image?
|
||||
if ( image ) {
|
||||
attributes.type = 'image';
|
||||
|
||||
// `jpeg`, `png` and `gif` are valid subtypes.
|
||||
// `jpg` is not, so map it to `jpeg`.
|
||||
attributes.subtype = ( 'jpg' === image[0] ) ? 'jpeg' : image[0];
|
||||
}
|
||||
|
||||
// Create the `Attachment`.
|
||||
file.attachment = wp.media.model.Attachment.create( attributes );
|
||||
|
||||
Uploader.queue.add( file.attachment );
|
||||
|
||||
self.added( file.attachment );
|
||||
});
|
||||
|
||||
up.refresh();
|
||||
up.start();
|
||||
});
|
||||
|
||||
this.uploader.bind( 'UploadProgress', function( up, file ) {
|
||||
file.attachment.set( _.pick( file, 'loaded', 'percent' ) );
|
||||
self.progress( file.attachment );
|
||||
});
|
||||
|
||||
this.uploader.bind( 'FileUploaded', function( up, file, response ) {
|
||||
var complete;
|
||||
|
||||
try {
|
||||
response = JSON.parse( response.response );
|
||||
} catch ( e ) {
|
||||
return error( pluploadL10n.default_error, e, file );
|
||||
}
|
||||
|
||||
if ( ! _.isObject( response ) || _.isUndefined( response.success ) )
|
||||
return error( pluploadL10n.default_error, null, file );
|
||||
else if ( ! response.success )
|
||||
return error( response.data && response.data.message, response.data, file );
|
||||
|
||||
_.each(['file','loaded','size','percent'], function( key ) {
|
||||
file.attachment.unset( key );
|
||||
});
|
||||
|
||||
file.attachment.set( _.extend( response.data, { uploading: false }) );
|
||||
wp.media.model.Attachment.get( response.data.id, file.attachment );
|
||||
|
||||
complete = Uploader.queue.all( function( attachment ) {
|
||||
return ! attachment.get('uploading');
|
||||
});
|
||||
|
||||
if ( complete )
|
||||
Uploader.queue.reset();
|
||||
|
||||
self.success( file.attachment );
|
||||
});
|
||||
|
||||
this.uploader.bind( 'Error', function( up, pluploadError ) {
|
||||
var message = pluploadL10n.default_error,
|
||||
key;
|
||||
|
||||
// Check for plupload errors.
|
||||
for ( key in Uploader.errorMap ) {
|
||||
if ( pluploadError.code === plupload[ key ] ) {
|
||||
message = Uploader.errorMap[ key ];
|
||||
if ( _.isFunction( message ) )
|
||||
message = message( pluploadError.file, pluploadError );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
error( message, pluploadError, pluploadError.file );
|
||||
up.refresh();
|
||||
});
|
||||
|
||||
this.init();
|
||||
};
|
||||
|
||||
// Adds the 'defaults' and 'browser' properties.
|
||||
$.extend( Uploader, _wpPluploadSettings );
|
||||
|
||||
Uploader.uuid = 0;
|
||||
|
||||
Uploader.errorMap = {
|
||||
'FAILED': pluploadL10n.upload_failed,
|
||||
'FILE_EXTENSION_ERROR': pluploadL10n.invalid_filetype,
|
||||
'IMAGE_FORMAT_ERROR': pluploadL10n.not_an_image,
|
||||
'IMAGE_MEMORY_ERROR': pluploadL10n.image_memory_exceeded,
|
||||
'IMAGE_DIMENSIONS_ERROR': pluploadL10n.image_dimensions_exceeded,
|
||||
'GENERIC_ERROR': pluploadL10n.upload_failed,
|
||||
'IO_ERROR': pluploadL10n.io_error,
|
||||
'HTTP_ERROR': pluploadL10n.http_error,
|
||||
'SECURITY_ERROR': pluploadL10n.security_error,
|
||||
|
||||
'FILE_SIZE_ERROR': function( file ) {
|
||||
return pluploadL10n.file_exceeds_size_limit.replace('%s', file.name);
|
||||
}
|
||||
};
|
||||
|
||||
$.extend( Uploader.prototype, {
|
||||
/**
|
||||
* Acts as a shortcut to extending the uploader's multipart_params object.
|
||||
*
|
||||
* param( key )
|
||||
* Returns the value of the key.
|
||||
*
|
||||
* param( key, value )
|
||||
* Sets the value of a key.
|
||||
*
|
||||
* param( map )
|
||||
* Sets values for a map of data.
|
||||
*/
|
||||
param: function( key, value ) {
|
||||
if ( arguments.length === 1 && typeof key === 'string' )
|
||||
return this.uploader.settings.multipart_params[ key ];
|
||||
|
||||
if ( arguments.length > 1 ) {
|
||||
this.uploader.settings.multipart_params[ key ] = value;
|
||||
} else {
|
||||
$.extend( this.uploader.settings.multipart_params, key );
|
||||
}
|
||||
},
|
||||
|
||||
init: function() {},
|
||||
error: function() {},
|
||||
success: function() {},
|
||||
added: function() {},
|
||||
progress: function() {},
|
||||
complete: function() {},
|
||||
refresh: function() {
|
||||
var node, attached, container, id;
|
||||
|
||||
if ( this.browser ) {
|
||||
node = this.browser[0];
|
||||
|
||||
// Check if the browser node is in the DOM.
|
||||
while ( node ) {
|
||||
if ( node === document.body ) {
|
||||
attached = true;
|
||||
break;
|
||||
}
|
||||
node = node.parentNode;
|
||||
}
|
||||
|
||||
// If the browser node is not attached to the DOM, use a
|
||||
// temporary container to house it, as the browser button
|
||||
// shims require the button to exist in the DOM at all times.
|
||||
if ( ! attached ) {
|
||||
id = 'wp-uploader-browser-' + this.uploader.id;
|
||||
|
||||
container = $( '#' + id );
|
||||
if ( ! container.length ) {
|
||||
container = $('<div class="wp-uploader-browser" />').css({
|
||||
position: 'fixed',
|
||||
top: '-1000px',
|
||||
left: '-1000px',
|
||||
height: 0,
|
||||
width: 0
|
||||
}).attr( 'id', 'wp-uploader-browser-' + this.uploader.id ).appendTo('body');
|
||||
}
|
||||
|
||||
container.append( this.browser );
|
||||
}
|
||||
}
|
||||
|
||||
this.uploader.refresh();
|
||||
}
|
||||
});
|
||||
|
||||
Uploader.queue = new wp.media.model.Attachments( [], { query: false });
|
||||
Uploader.errors = new Backbone.Collection();
|
||||
|
||||
exports.Uploader = Uploader;
|
||||
})( wp, jQuery );
|
1
wp-includes/js/plupload/wp-plupload.min.js
vendored
Normal file
1
wp-includes/js/plupload/wp-plupload.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
window.wp=window.wp||{};(function(a,b){var c;if(typeof _wpPluploadSettings==="undefined"){return}c=function(f){var d=this,h={container:"container",browser:"browse_button",dropzone:"drop_element"},g,e;this.supports={upload:c.browser.supported};this.supported=this.supports.upload;if(!this.supported){return}this.plupload=b.extend(true,{multipart_params:{}},c.defaults);this.container=document.body;b.extend(true,this,f);for(g in this){if(b.isFunction(this[g])){this[g]=b.proxy(this[g],this)}}for(g in h){if(!this[g]){continue}this[g]=b(this[g]).first();if(!this[g].length){delete this[g];continue}if(!this[g].prop("id")){this[g].prop("id","__wp-uploader-id-"+c.uuid++)}this.plupload[h[g]]=this[g].prop("id")}if(!(this.browser&&this.browser.length)&&!(this.dropzone&&this.dropzone.length)){return}this.uploader=new plupload.Uploader(this.plupload);delete this.plupload;this.param(this.params||{});delete this.params;e=function(j,k,i){if(i.attachment){i.attachment.destroy()}c.errors.unshift({message:j||pluploadL10n.default_error,data:k,file:i});d.error(j,k,i)};this.uploader.init();this.supports.dragdrop=this.uploader.features.dragdrop&&!c.browser.mobile;(function(j,i){var l,k;if(!j){return}j.toggleClass("supports-drag-drop",!!i);if(!i){return j.unbind(".wp-uploader")}j.bind("dragover.wp-uploader",function(){if(l){clearTimeout(l)}if(k){return}j.trigger("dropzone:enter").addClass("drag-over");k=true});j.bind("dragleave.wp-uploader, drop.wp-uploader",function(){l=setTimeout(function(){k=false;j.trigger("dropzone:leave").removeClass("drag-over")},0)})}(this.dropzone,this.supports.dragdrop));if(this.browser){this.browser.on("mouseenter",this.refresh)}else{this.uploader.disableBrowse(true);b("#"+this.uploader.id+"_html5_container").hide()}this.uploader.bind("FilesAdded",function(i,j){_.each(j,function(l){var k,m;if(plupload.FAILED===l.status){return}k=_.extend({file:l,uploading:true,date:new Date(),filename:l.name,menuOrder:0,uploadedTo:wp.media.model.settings.post.id},_.pick(l,"loaded","size","percent"));m=/(?:jpe?g|png|gif)$/i.exec(l.name);if(m){k.type="image";k.subtype=("jpg"===m[0])?"jpeg":m[0]}l.attachment=wp.media.model.Attachment.create(k);c.queue.add(l.attachment);d.added(l.attachment)});i.refresh();i.start()});this.uploader.bind("UploadProgress",function(i,j){j.attachment.set(_.pick(j,"loaded","percent"));d.progress(j.attachment)});this.uploader.bind("FileUploaded",function(i,l,k){var j;try{k=JSON.parse(k.response)}catch(m){return e(pluploadL10n.default_error,m,l)}if(!_.isObject(k)||_.isUndefined(k.success)){return e(pluploadL10n.default_error,null,l)}else{if(!k.success){return e(k.data&&k.data.message,k.data,l)}}_.each(["file","loaded","size","percent"],function(n){l.attachment.unset(n)});l.attachment.set(_.extend(k.data,{uploading:false}));wp.media.model.Attachment.get(k.data.id,l.attachment);j=c.queue.all(function(n){return !n.get("uploading")});if(j){c.queue.reset()}d.success(l.attachment)});this.uploader.bind("Error",function(i,l){var k=pluploadL10n.default_error,j;for(j in c.errorMap){if(l.code===plupload[j]){k=c.errorMap[j];if(_.isFunction(k)){k=k(l.file,l)}break}}e(k,l,l.file);i.refresh()});this.init()};b.extend(c,_wpPluploadSettings);c.uuid=0;c.errorMap={FAILED:pluploadL10n.upload_failed,FILE_EXTENSION_ERROR:pluploadL10n.invalid_filetype,IMAGE_FORMAT_ERROR:pluploadL10n.not_an_image,IMAGE_MEMORY_ERROR:pluploadL10n.image_memory_exceeded,IMAGE_DIMENSIONS_ERROR:pluploadL10n.image_dimensions_exceeded,GENERIC_ERROR:pluploadL10n.upload_failed,IO_ERROR:pluploadL10n.io_error,HTTP_ERROR:pluploadL10n.http_error,SECURITY_ERROR:pluploadL10n.security_error,FILE_SIZE_ERROR:function(d){return pluploadL10n.file_exceeds_size_limit.replace("%s",d.name)}};b.extend(c.prototype,{param:function(d,e){if(arguments.length===1&&typeof d==="string"){return this.uploader.settings.multipart_params[d]}if(arguments.length>1){this.uploader.settings.multipart_params[d]=e}else{b.extend(this.uploader.settings.multipart_params,d)}},init:function(){},error:function(){},success:function(){},added:function(){},progress:function(){},complete:function(){},refresh:function(){var f,e,d,g;if(this.browser){f=this.browser[0];while(f){if(f===document.body){e=true;break}f=f.parentNode}if(!e){g="wp-uploader-browser-"+this.uploader.id;d=b("#"+g);if(!d.length){d=b('<div class="wp-uploader-browser" />').css({position:"fixed",top:"-1000px",left:"-1000px",height:0,width:0}).attr("id","wp-uploader-browser-"+this.uploader.id).appendTo("body")}d.append(this.browser)}}this.uploader.refresh()}});c.queue=new wp.media.model.Attachments([],{query:false});c.errors=new Backbone.Collection();a.Uploader=c})(wp,jQuery);
|
Reference in New Issue
Block a user