PDF rausgenommen
This commit is contained in:
506
msd2/wordpress/wp-includes/js/plupload/handlers.js
Normal file
506
msd2/wordpress/wp-includes/js/plupload/handlers.js
Normal file
@ -0,0 +1,506 @@
|
||||
/* global plupload, pluploadL10n, ajaxurl, post_id, wpUploaderInit, deleteUserSetting, setUserSetting, getUserSetting, shortform */
|
||||
var topWin = window.dialogArguments || opener || parent || top, uploader, uploader_init;
|
||||
|
||||
// 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() {
|
||||
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/Playlist buttons 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 ( window.resize_width && window.resize_height ) {
|
||||
uploader.settings.resize = {
|
||||
enabled: true,
|
||||
width: window.resize_width,
|
||||
height: window.resize_height,
|
||||
quality: 100
|
||||
};
|
||||
} else {
|
||||
uploader.settings.multipart_params.image_resize = true;
|
||||
}
|
||||
} else {
|
||||
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( ){
|
||||
var type,
|
||||
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) {
|
||||
var type, id, item;
|
||||
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?');
|
||||
|
||||
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() {
|
||||
// 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 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:
|
||||
wpFileExtensionError( uploader, 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.filters.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 ) {
|
||||
var message, errorDiv;
|
||||
|
||||
message = pluploadL10n.file_exceeds_size_limit.replace('%s', file.name);
|
||||
|
||||
// Construct the error div.
|
||||
errorDiv = jQuery( '<div />' )
|
||||
.attr( {
|
||||
'id': 'media-item-' + file.id,
|
||||
'class': 'media-item error'
|
||||
} )
|
||||
.append(
|
||||
jQuery( '<p />' )
|
||||
.text( message )
|
||||
);
|
||||
|
||||
// Append the error.
|
||||
jQuery('#media-items').append( errorDiv );
|
||||
up.removeFile(file);
|
||||
}
|
||||
|
||||
function wpFileExtensionError( up, file, message ) {
|
||||
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() {
|
||||
var isIE = navigator.userAgent.indexOf('Trident/') != -1 || navigator.userAgent.indexOf('MSIE ') != -1;
|
||||
|
||||
// Make sure flash sends cookies (seems in IE it does whitout switching to urlstream mode)
|
||||
if ( ! isIE && 'flash' === plupload.predictRuntime( wpUploaderInit ) &&
|
||||
( ! wpUploaderInit.required_features || ! wpUploaderInit.required_features.hasOwnProperty( 'send_binary_string' ) ) ) {
|
||||
|
||||
wpUploaderInit.required_features = wpUploaderInit.required_features || {};
|
||||
wpUploaderInit.required_features.send_binary_string = true;
|
||||
}
|
||||
|
||||
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').on('dragover.wp-uploader', function(){ // dragenter doesn't fire right :(
|
||||
uploaddiv.addClass('drag-over');
|
||||
}).on('dragleave.wp-uploader, drop.wp-uploader', function(){
|
||||
uploaddiv.removeClass('drag-over');
|
||||
});
|
||||
} else {
|
||||
uploaddiv.removeClass('drag-drop');
|
||||
$('#drag-drop-area').off('.wp-uploader');
|
||||
}
|
||||
|
||||
if ( up.runtime === 'html4' ) {
|
||||
$('.upload-flash-bypass').hide();
|
||||
}
|
||||
});
|
||||
|
||||
uploader.bind( 'postinit', function( up ) {
|
||||
up.refresh();
|
||||
});
|
||||
|
||||
uploader.init();
|
||||
|
||||
uploader.bind('FilesAdded', function( up, files ) {
|
||||
$('#media-upload-error').empty();
|
||||
uploadStart();
|
||||
|
||||
plupload.each( files, function( file ) {
|
||||
fileQueued( file );
|
||||
});
|
||||
|
||||
up.refresh();
|
||||
up.start();
|
||||
});
|
||||
|
||||
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() {
|
||||
uploadComplete();
|
||||
});
|
||||
};
|
||||
|
||||
if ( typeof(wpUploaderInit) == 'object' ) {
|
||||
uploader_init();
|
||||
}
|
||||
|
||||
});
|
1
msd2/wordpress/wp-includes/js/plupload/handlers.min.js
vendored
Normal file
1
msd2/wordpress/wp-includes/js/plupload/handlers.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
339
msd2/wordpress/wp-includes/js/plupload/license.txt
Normal file
339
msd2/wordpress/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.
|
9901
msd2/wordpress/wp-includes/js/plupload/moxie.js
Normal file
9901
msd2/wordpress/wp-includes/js/plupload/moxie.js
Normal file
File diff suppressed because it is too large
Load Diff
3
msd2/wordpress/wp-includes/js/plupload/moxie.min.js
vendored
Normal file
3
msd2/wordpress/wp-includes/js/plupload/moxie.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2379
msd2/wordpress/wp-includes/js/plupload/plupload.js
Normal file
2379
msd2/wordpress/wp-includes/js/plupload/plupload.js
Normal file
File diff suppressed because it is too large
Load Diff
1
msd2/wordpress/wp-includes/js/plupload/plupload.min.js
vendored
Normal file
1
msd2/wordpress/wp-includes/js/plupload/plupload.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
432
msd2/wordpress/wp-includes/js/plupload/wp-plupload.js
Normal file
432
msd2/wordpress/wp-includes/js/plupload/wp-plupload.js
Normal file
@ -0,0 +1,432 @@
|
||||
/* global pluploadL10n, plupload, _wpPluploadSettings */
|
||||
|
||||
/**
|
||||
* @namespace wp
|
||||
*/
|
||||
window.wp = window.wp || {};
|
||||
|
||||
( function( exports, $ ) {
|
||||
var Uploader;
|
||||
|
||||
if ( typeof _wpPluploadSettings === 'undefined' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* A WordPress uploader.
|
||||
*
|
||||
* The Plupload library provides cross-browser uploader UI integration.
|
||||
* This object bridges the Plupload API to integrate uploads into the
|
||||
* WordPress back end and the WordPress media experience.
|
||||
*
|
||||
* @class
|
||||
* @memberOf wp
|
||||
* @alias wp.Uploader
|
||||
*
|
||||
* @param {object} options The options passed to the new plupload instance.
|
||||
* @param {object} options.container The id of uploader container.
|
||||
* @param {object} options.browser The id of button to trigger the file select.
|
||||
* @param {object} options.dropzone The id of file drop target.
|
||||
* @param {object} options.plupload An object of parameters to pass to the plupload instance.
|
||||
* @param {object} options.params An object of parameters to pass to $_POST when uploading the file.
|
||||
* Extends this.plupload.multipart_params under the hood.
|
||||
*/
|
||||
Uploader = function( options ) {
|
||||
var self = this,
|
||||
isIE = navigator.userAgent.indexOf('Trident/') != -1 || navigator.userAgent.indexOf('MSIE ') != -1,
|
||||
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;
|
||||
}
|
||||
|
||||
// Arguments to send to pluplad.Uploader().
|
||||
// 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;
|
||||
}
|
||||
|
||||
// Make sure flash sends cookies (seems in IE it does without switching to urlstream mode)
|
||||
if ( ! isIE && 'flash' === plupload.predictRuntime( this.plupload ) &&
|
||||
( ! this.plupload.required_features || ! this.plupload.required_features.hasOwnProperty( 'send_binary_string' ) ) ) {
|
||||
|
||||
this.plupload.required_features = this.plupload.required_features || {};
|
||||
this.plupload.required_features.send_binary_string = true;
|
||||
}
|
||||
|
||||
// Initialize the plupload instance.
|
||||
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;
|
||||
|
||||
/**
|
||||
* Custom error callback.
|
||||
*
|
||||
* Add a new error to the errors collection, so other modules can track
|
||||
* and display errors. @see wp.Uploader.errors.
|
||||
*
|
||||
* @param {string} message
|
||||
* @param {object} data
|
||||
* @param {plupload.File} file File that was uploaded.
|
||||
*/
|
||||
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 );
|
||||
};
|
||||
|
||||
/**
|
||||
* After the Uploader has been initialized, initialize some behaviors for the dropzone.
|
||||
*
|
||||
* @param {plupload.Uploader} uploader Uploader instance.
|
||||
*/
|
||||
this.uploader.bind( 'init', function( uploader ) {
|
||||
var timer, active, dragdrop,
|
||||
dropzone = self.dropzone;
|
||||
|
||||
dragdrop = self.supports.dragdrop = uploader.features.dragdrop && ! Uploader.browser.mobile;
|
||||
|
||||
// Generate drag/drop helper classes.
|
||||
if ( ! dropzone ) {
|
||||
return;
|
||||
}
|
||||
|
||||
dropzone.toggleClass( 'supports-drag-drop', !! dragdrop );
|
||||
|
||||
if ( ! dragdrop ) {
|
||||
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 https://core.trac.wordpress.org/ticket/21705
|
||||
timer = setTimeout( function() {
|
||||
active = false;
|
||||
dropzone.trigger('dropzone:leave').removeClass('drag-over');
|
||||
}, 0 );
|
||||
});
|
||||
|
||||
self.ready = true;
|
||||
$(self).trigger( 'uploader:ready' );
|
||||
});
|
||||
|
||||
this.uploader.bind( 'postinit', function( up ) {
|
||||
up.refresh();
|
||||
self.init();
|
||||
});
|
||||
|
||||
this.uploader.init();
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
* After files were filtered and added to the queue, create a model for each.
|
||||
*
|
||||
* @param {plupload.Uploader} uploader Uploader instance.
|
||||
* @param {Array} files Array of file objects that were added to queue by the user.
|
||||
*/
|
||||
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 );
|
||||
|
||||
// For images set the model's type and subtype attributes.
|
||||
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 a model for the attachment, and add it to the Upload queue collection
|
||||
// so listeners to the upload queue can track and display upload progress.
|
||||
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 );
|
||||
});
|
||||
|
||||
/**
|
||||
* After a file is successfully uploaded, update its model.
|
||||
*
|
||||
* @param {plupload.Uploader} uploader Uploader instance.
|
||||
* @param {plupload.File} file File that was uploaded.
|
||||
* @param {Object} response Object with response properties.
|
||||
* @return {mixed}
|
||||
*/
|
||||
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 );
|
||||
});
|
||||
|
||||
/**
|
||||
* When plupload surfaces an error, send it to the error handler.
|
||||
*
|
||||
* @param {plupload.Uploader} uploader Uploader instance.
|
||||
* @param {Object} error Contains code, message and sometimes file and other details.
|
||||
*/
|
||||
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();
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
// Adds the 'defaults' and 'browser' properties.
|
||||
$.extend( Uploader, _wpPluploadSettings );
|
||||
|
||||
Uploader.uuid = 0;
|
||||
|
||||
// Map Plupload error codes to user friendly error messages.
|
||||
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, /** @lends wp.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 );
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Make a few internal event callbacks available on the wp.Uploader object
|
||||
* to change the Uploader internals if absolutely necessary.
|
||||
*/
|
||||
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();
|
||||
}
|
||||
});
|
||||
|
||||
// Create a collection of attachments in the upload queue,
|
||||
// so that other modules can track and display upload progress.
|
||||
Uploader.queue = new wp.media.model.Attachments( [], { query: false });
|
||||
|
||||
// Create a collection to collect errors incurred while attempting upload.
|
||||
Uploader.errors = new Backbone.Collection();
|
||||
|
||||
exports.Uploader = Uploader;
|
||||
})( wp, jQuery );
|
1
msd2/wordpress/wp-includes/js/plupload/wp-plupload.min.js
vendored
Normal file
1
msd2/wordpress/wp-includes/js/plupload/wp-plupload.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
window.wp=window.wp||{},function(a,b){var c;"undefined"!=typeof _wpPluploadSettings&&(c=function(a){var d,e,f=this,g=navigator.userAgent.indexOf("Trident/")!=-1||navigator.userAgent.indexOf("MSIE ")!=-1,h={container:"container",browser:"browse_button",dropzone:"drop_element"};if(this.supports={upload:c.browser.supported},this.supported=this.supports.upload,this.supported){this.plupload=b.extend(!0,{multipart_params:{}},c.defaults),this.container=document.body,b.extend(!0,this,a);for(d in this)b.isFunction(this[d])&&(this[d]=b.proxy(this[d],this));for(d in h)this[d]&&(this[d]=b(this[d]).first(),this[d].length?(this[d].prop("id")||this[d].prop("id","__wp-uploader-id-"+c.uuid++),this.plupload[h[d]]=this[d].prop("id")):delete this[d]);(this.browser&&this.browser.length||this.dropzone&&this.dropzone.length)&&(g||"flash"!==plupload.predictRuntime(this.plupload)||this.plupload.required_features&&this.plupload.required_features.hasOwnProperty("send_binary_string")||(this.plupload.required_features=this.plupload.required_features||{},this.plupload.required_features.send_binary_string=!0),this.uploader=new plupload.Uploader(this.plupload),delete this.plupload,this.param(this.params||{}),delete this.params,e=function(a,b,d){d.attachment&&d.attachment.destroy(),c.errors.unshift({message:a||pluploadL10n.default_error,data:b,file:d}),f.error(a,b,d)},this.uploader.bind("init",function(a){var d,e,g,h=f.dropzone;if(g=f.supports.dragdrop=a.features.dragdrop&&!c.browser.mobile,h){if(h.toggleClass("supports-drag-drop",!!g),!g)return h.unbind(".wp-uploader");h.bind("dragover.wp-uploader",function(){d&&clearTimeout(d),e||(h.trigger("dropzone:enter").addClass("drag-over"),e=!0)}),h.bind("dragleave.wp-uploader, drop.wp-uploader",function(){d=setTimeout(function(){e=!1,h.trigger("dropzone:leave").removeClass("drag-over")},0)}),f.ready=!0,b(f).trigger("uploader:ready")}}),this.uploader.bind("postinit",function(a){a.refresh(),f.init()}),this.uploader.init(),this.browser?this.browser.on("mouseenter",this.refresh):(this.uploader.disableBrowse(!0),b("#"+this.uploader.id+"_html5_container").hide()),this.uploader.bind("FilesAdded",function(a,b){_.each(b,function(a){var b,d;plupload.FAILED!==a.status&&(b=_.extend({file:a,uploading:!0,date:new Date,filename:a.name,menuOrder:0,uploadedTo:wp.media.model.settings.post.id},_.pick(a,"loaded","size","percent")),d=/(?:jpe?g|png|gif)$/i.exec(a.name),d&&(b.type="image",b.subtype="jpg"===d[0]?"jpeg":d[0]),a.attachment=wp.media.model.Attachment.create(b),c.queue.add(a.attachment),f.added(a.attachment))}),a.refresh(),a.start()}),this.uploader.bind("UploadProgress",function(a,b){b.attachment.set(_.pick(b,"loaded","percent")),f.progress(b.attachment)}),this.uploader.bind("FileUploaded",function(a,b,d){var g;try{d=JSON.parse(d.response)}catch(h){return e(pluploadL10n.default_error,h,b)}return!_.isObject(d)||_.isUndefined(d.success)?e(pluploadL10n.default_error,null,b):d.success?(_.each(["file","loaded","size","percent"],function(a){b.attachment.unset(a)}),b.attachment.set(_.extend(d.data,{uploading:!1})),wp.media.model.Attachment.get(d.data.id,b.attachment),g=c.queue.all(function(a){return!a.get("uploading")}),g&&c.queue.reset(),void f.success(b.attachment)):e(d.data&&d.data.message,d.data,b)}),this.uploader.bind("Error",function(a,b){var d,f=pluploadL10n.default_error;for(d in c.errorMap)if(b.code===plupload[d]){f=c.errorMap[d],_.isFunction(f)&&(f=f(b.file,b));break}e(f,b,b.file),a.refresh()}))}},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(a){return pluploadL10n.file_exceeds_size_limit.replace("%s",a.name)}},b.extend(c.prototype,{param:function(a,c){return 1===arguments.length&&"string"==typeof a?this.uploader.settings.multipart_params[a]:void(arguments.length>1?this.uploader.settings.multipart_params[a]=c:b.extend(this.uploader.settings.multipart_params,a))},init:function(){},error:function(){},success:function(){},added:function(){},progress:function(){},complete:function(){},refresh:function(){var a,c,d,e;if(this.browser){for(a=this.browser[0];a;){if(a===document.body){c=!0;break}a=a.parentNode}c||(e="wp-uploader-browser-"+this.uploader.id,d=b("#"+e),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:!1}),c.errors=new Backbone.Collection,a.Uploader=c)}(wp,jQuery);
|
Reference in New Issue
Block a user