Remove SWFUpload,
- Refactor swfupload.js to output a simple upload form, and handlers.js. - Delete the SWFUpload plugins directory and swfupload.swf. - Remove flash cookies "hack" from async-upload.php. See #41752. Built from https://develop.svn.wordpress.org/trunk@41554 git-svn-id: http://core.svn.wordpress.org/trunk@41387 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
639d215300
commit
76296ef657
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Server-side file upload handler from wp-plupload, swfupload or other asynchronous upload methods.
|
* Server-side file upload handler from wp-plupload or other asynchronous upload methods.
|
||||||
*
|
*
|
||||||
* @package WordPress
|
* @package WordPress
|
||||||
* @subpackage Administration
|
* @subpackage Administration
|
||||||
|
@ -14,20 +14,10 @@ if ( ! defined( 'WP_ADMIN' ) ) {
|
||||||
define( 'WP_ADMIN', true );
|
define( 'WP_ADMIN', true );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( defined('ABSPATH') )
|
if ( defined( 'ABSPATH' ) ) {
|
||||||
require_once(ABSPATH . 'wp-load.php');
|
require_once( ABSPATH . 'wp-load.php' );
|
||||||
else
|
} else {
|
||||||
require_once( dirname( dirname( __FILE__ ) ) . '/wp-load.php' );
|
require_once( dirname( dirname( __FILE__ ) ) . '/wp-load.php' );
|
||||||
|
|
||||||
if ( ! ( isset( $_REQUEST['action'] ) && 'upload-attachment' == $_REQUEST['action'] ) ) {
|
|
||||||
// Flash often fails to send cookies with the POST or upload, so we need to pass it in GET or POST instead
|
|
||||||
if ( is_ssl() && empty($_COOKIE[SECURE_AUTH_COOKIE]) && !empty($_REQUEST['auth_cookie']) )
|
|
||||||
$_COOKIE[SECURE_AUTH_COOKIE] = $_REQUEST['auth_cookie'];
|
|
||||||
elseif ( empty($_COOKIE[AUTH_COOKIE]) && !empty($_REQUEST['auth_cookie']) )
|
|
||||||
$_COOKIE[AUTH_COOKIE] = $_REQUEST['auth_cookie'];
|
|
||||||
if ( empty($_COOKIE[LOGGED_IN_COOKIE]) && !empty($_REQUEST['logged_in_cookie']) )
|
|
||||||
$_COOKIE[LOGGED_IN_COOKIE] = $_REQUEST['logged_in_cookie'];
|
|
||||||
unset($current_user);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once( ABSPATH . 'wp-admin/admin.php' );
|
require_once( ABSPATH . 'wp-admin/admin.php' );
|
||||||
|
|
|
@ -716,6 +716,8 @@ $_old_files = array(
|
||||||
// 4.9
|
// 4.9
|
||||||
'wp-includes/js/plupload/plupload.flash.swf',
|
'wp-includes/js/plupload/plupload.flash.swf',
|
||||||
'wp-includes/js/plupload/plupload.silverlight.xap',
|
'wp-includes/js/plupload/plupload.silverlight.xap',
|
||||||
|
'wp-includes/js/swfupload/plugins',
|
||||||
|
'wp-includes/js/swfupload/swfupload.swf',
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,360 +1,38 @@
|
||||||
var topWin = window.dialogArguments || opener || parent || top;
|
var topWin = window.dialogArguments || opener || parent || top;
|
||||||
|
|
||||||
function fileDialogStart() {
|
function fileDialogStart() {}
|
||||||
jQuery("#media-upload-error").empty();
|
function fileQueued() {}
|
||||||
}
|
function uploadStart() {}
|
||||||
|
function uploadProgress() {}
|
||||||
|
function prepareMediaItem() {}
|
||||||
|
function prepareMediaItemInit() {}
|
||||||
|
function itemAjaxError() {}
|
||||||
|
function deleteSuccess() {}
|
||||||
|
function deleteError() {}
|
||||||
|
function updateMediaForm() {}
|
||||||
|
function uploadSuccess() {}
|
||||||
|
function uploadComplete() {}
|
||||||
|
function wpQueueError() {}
|
||||||
|
function wpFileError() {}
|
||||||
|
function fileQueueError() {}
|
||||||
|
function fileDialogComplete() {}
|
||||||
|
function uploadError() {}
|
||||||
|
function cancelUpload() {}
|
||||||
|
|
||||||
// progress and success handlers for media multi uploads
|
function switchUploader() {
|
||||||
function fileQueued(fileObj) {
|
jQuery( '#' + swfu.customSettings.swfupload_element_id ).hide();
|
||||||
// Get rid of unused form
|
jQuery( '#' + swfu.customSettings.degraded_element_id ).show();
|
||||||
jQuery('.media-blank').remove();
|
jQuery( '.upload-html-bypass' ).hide();
|
||||||
// Collapse a single item
|
|
||||||
if ( jQuery('form.type-form #media-items').children().length == 1 && jQuery('.hidden', '#media-items').length > 0 ) {
|
|
||||||
jQuery('.describe-toggle-on').show();
|
|
||||||
jQuery('.describe-toggle-off').hide();
|
|
||||||
jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden');
|
|
||||||
}
|
|
||||||
// Create a progress bar containing the filename
|
|
||||||
jQuery('<div class="media-item">')
|
|
||||||
.attr( 'id', 'media-item-' + fileObj.id )
|
|
||||||
.addClass('child-of-' + post_id)
|
|
||||||
.append('<div class="progress"><div class="bar"></div></div>',
|
|
||||||
jQuery('<div class="filename original"><span class="percent"></span>').text( ' ' + fileObj.name ))
|
|
||||||
.appendTo( jQuery('#media-items' ) );
|
|
||||||
// Display the progress div
|
|
||||||
jQuery('.progress', '#media-item-' + fileObj.id).show();
|
|
||||||
|
|
||||||
// Disable submit and enable cancel
|
|
||||||
jQuery('#insert-gallery').prop('disabled', true);
|
|
||||||
jQuery('#cancel-upload').prop('disabled', false);
|
|
||||||
}
|
|
||||||
|
|
||||||
function uploadStart(fileObj) {
|
|
||||||
try {
|
|
||||||
if ( typeof topWin.tb_remove != 'undefined' )
|
|
||||||
topWin.jQuery('#TB_overlay').unbind('click', topWin.tb_remove);
|
|
||||||
} catch(e){}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function uploadProgress(fileObj, bytesDone, bytesTotal) {
|
|
||||||
// Lengthen the progress bar
|
|
||||||
var w = jQuery('#media-items').width() - 2, item = jQuery('#media-item-' + fileObj.id);
|
|
||||||
jQuery('.bar', item).width( w * bytesDone / bytesTotal );
|
|
||||||
jQuery('.percent', item).html( Math.ceil(bytesDone / bytesTotal * 100) + '%' );
|
|
||||||
|
|
||||||
if ( bytesDone == bytesTotal )
|
|
||||||
jQuery('.bar', item).html('<strong class="crunching">' + swfuploadL10n.crunching + '</strong>');
|
|
||||||
}
|
|
||||||
|
|
||||||
function prepareMediaItem(fileObj, serverData) {
|
|
||||||
var f = ( typeof shortform == 'undefined' ) ? 1 : 2, item = jQuery('#media-item-' + fileObj.id);
|
|
||||||
// Move the progress bar to 100%
|
|
||||||
jQuery('.bar', item).remove();
|
|
||||||
jQuery('.progress', item).hide();
|
|
||||||
|
|
||||||
try {
|
|
||||||
if ( typeof topWin.tb_remove != 'undefined' )
|
|
||||||
topWin.jQuery('#TB_overlay').click(topWin.tb_remove);
|
|
||||||
} catch(e){}
|
|
||||||
|
|
||||||
// Old style: Append the HTML returned by the server -- thumbnail and form inputs
|
|
||||||
if ( isNaN(serverData) || !serverData ) {
|
|
||||||
item.append(serverData);
|
|
||||||
prepareMediaItemInit(fileObj);
|
|
||||||
}
|
|
||||||
// New style: server data is just the attachment ID, fetch the thumbnail and form html from the server
|
|
||||||
else {
|
|
||||||
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) );
|
|
||||||
|
|
||||||
// Also bind toggle to the links
|
|
||||||
jQuery('a.toggle', item).click(function(){
|
|
||||||
jQuery(this).siblings('.slidetoggle').slideToggle(350, function(){
|
|
||||||
var w = jQuery(window).height(), t = jQuery(this).offset().top, h = jQuery(this).height(), b;
|
|
||||||
|
|
||||||
if ( w && t && h ) {
|
|
||||||
b = t + h;
|
|
||||||
|
|
||||||
if ( b > w && (h + 48) < w )
|
|
||||||
window.scrollBy(0, b - w + 13);
|
|
||||||
else if ( b > w )
|
|
||||||
window.scrollTo(0, t - 36);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
jQuery(this).siblings('.toggle').andSelf().toggle();
|
|
||||||
jQuery(this).siblings('a.toggle').focus();
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
// 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 ( 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('a.describe-toggle-on, .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').slideToggle(500).siblings('.toggle').toggle();
|
|
||||||
}
|
|
||||||
|
|
||||||
function itemAjaxError(id, html) {
|
|
||||||
var item = jQuery('#media-item-' + id);
|
|
||||||
var filename = jQuery('.filename', item).text();
|
|
||||||
|
|
||||||
item.html('<div class="error-div">'
|
|
||||||
+ '<a class="dismiss" href="#">' + swfuploadL10n.dismiss + '</a>'
|
|
||||||
+ '<strong>' + swfuploadL10n.error_uploading.replace('%s', filename) + '</strong><br />'
|
|
||||||
+ html
|
|
||||||
+ '</div>');
|
|
||||||
item.find('a.dismiss').click(function(){jQuery(this).parents('.media-item').slideUp(200, function(){jQuery(this).remove();})});
|
|
||||||
}
|
|
||||||
|
|
||||||
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 ( 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"> ' + swfuploadL10n.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 updateMediaForm() {
|
|
||||||
var one = jQuery('form.type-form #media-items').children(), items = jQuery('#media-items').children();
|
|
||||||
|
|
||||||
// Just one file, no need for collapsible part
|
|
||||||
if ( one.length == 1 ) {
|
|
||||||
jQuery('.slidetoggle', one).slideDown(500).siblings().addClass('hidden').filter('.toggle').toggle();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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();
|
|
||||||
|
|
||||||
// Only show Gallery buttons when there are at least two files.
|
|
||||||
if ( items.length > 1 ) {
|
|
||||||
jQuery('.insert-gallery').show();
|
|
||||||
} else {
|
|
||||||
jQuery('.insert-gallery').hide();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function uploadSuccess(fileObj, serverData) {
|
|
||||||
// if async-upload returned an error message, place it in the media item div and return
|
|
||||||
if ( serverData.match('media-upload-error') ) {
|
|
||||||
jQuery('#media-item-' + fileObj.id).html(serverData);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
prepareMediaItem(fileObj, serverData);
|
|
||||||
updateMediaForm();
|
|
||||||
|
|
||||||
// Increment the counter.
|
|
||||||
if ( jQuery('#media-item-' + fileObj.id).hasClass('child-of-' + post_id) )
|
|
||||||
jQuery('#attachments-count').text(1 * jQuery('#attachments-count').text() + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
function uploadComplete(fileObj) {
|
|
||||||
// If no more uploads queued, enable the submit button
|
|
||||||
if ( swfu.getStats().files_queued == 0 ) {
|
|
||||||
jQuery('#cancel-upload').prop('disabled', true);
|
|
||||||
jQuery('#insert-gallery').prop('disabled', false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// wp-specific error handlers
|
|
||||||
|
|
||||||
// generic message
|
|
||||||
function wpQueueError(message) {
|
|
||||||
jQuery('#media-upload-error').show().text(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
// file-specific message
|
|
||||||
function wpFileError(fileObj, message) {
|
|
||||||
var item = jQuery('#media-item-' + fileObj.id);
|
|
||||||
var filename = jQuery('.filename', item).text();
|
|
||||||
|
|
||||||
item.html('<div class="error-div">'
|
|
||||||
+ '<a class="dismiss" href="#">' + swfuploadL10n.dismiss + '</a>'
|
|
||||||
+ '<strong>' + swfuploadL10n.error_uploading.replace('%s', filename) + '</strong><br />'
|
|
||||||
+ message
|
|
||||||
+ '</div>');
|
|
||||||
item.find('a.dismiss').click(function(){jQuery(this).parents('.media-item').slideUp(200, function(){jQuery(this).remove();})});
|
|
||||||
}
|
|
||||||
|
|
||||||
function fileQueueError(fileObj, error_code, message) {
|
|
||||||
// Handle this error separately because we don't want to create a FileProgress element for it.
|
|
||||||
if ( error_code == SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED ) {
|
|
||||||
wpQueueError(swfuploadL10n.queue_limit_exceeded);
|
|
||||||
}
|
|
||||||
else if ( error_code == SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT ) {
|
|
||||||
fileQueued(fileObj);
|
|
||||||
wpFileError(fileObj, swfuploadL10n.file_exceeds_size_limit);
|
|
||||||
}
|
|
||||||
else if ( error_code == SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE ) {
|
|
||||||
fileQueued(fileObj);
|
|
||||||
wpFileError(fileObj, swfuploadL10n.zero_byte_file);
|
|
||||||
}
|
|
||||||
else if ( error_code == SWFUpload.QUEUE_ERROR.INVALID_FILETYPE ) {
|
|
||||||
fileQueued(fileObj);
|
|
||||||
wpFileError(fileObj, swfuploadL10n.invalid_filetype);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
wpQueueError(swfuploadL10n.default_error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function fileDialogComplete(num_files_queued) {
|
|
||||||
try {
|
|
||||||
if (num_files_queued > 0) {
|
|
||||||
this.startUpload();
|
|
||||||
}
|
|
||||||
} catch (ex) {
|
|
||||||
this.debug(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function switchUploader(s) {
|
|
||||||
var f = document.getElementById(swfu.customSettings.swfupload_element_id), h = document.getElementById(swfu.customSettings.degraded_element_id);
|
|
||||||
if ( s ) {
|
|
||||||
f.style.display = 'block';
|
|
||||||
h.style.display = 'none';
|
|
||||||
} else {
|
|
||||||
f.style.display = 'none';
|
|
||||||
h.style.display = 'block';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function swfuploadPreLoad() {
|
function swfuploadPreLoad() {
|
||||||
if ( !uploaderMode ) {
|
switchUploader();
|
||||||
switchUploader(1);
|
|
||||||
} else {
|
|
||||||
switchUploader(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function swfuploadLoadFailed() {
|
function swfuploadLoadFailed() {
|
||||||
switchUploader(0);
|
switchUploader();
|
||||||
jQuery('.upload-html-bypass').hide();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function uploadError(fileObj, errorCode, message) {
|
|
||||||
|
|
||||||
switch (errorCode) {
|
|
||||||
case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
|
|
||||||
wpFileError(fileObj, swfuploadL10n.missing_upload_url);
|
|
||||||
break;
|
|
||||||
case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
|
|
||||||
wpFileError(fileObj, swfuploadL10n.upload_limit_exceeded);
|
|
||||||
break;
|
|
||||||
case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
|
|
||||||
wpQueueError(swfuploadL10n.http_error);
|
|
||||||
break;
|
|
||||||
case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
|
|
||||||
wpQueueError(swfuploadL10n.upload_failed);
|
|
||||||
break;
|
|
||||||
case SWFUpload.UPLOAD_ERROR.IO_ERROR:
|
|
||||||
wpQueueError(swfuploadL10n.io_error);
|
|
||||||
break;
|
|
||||||
case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
|
|
||||||
wpQueueError(swfuploadL10n.security_error);
|
|
||||||
break;
|
|
||||||
case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
|
|
||||||
case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
|
|
||||||
jQuery('#media-item-' + fileObj.id).remove();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
wpFileError(fileObj, swfuploadL10n.default_error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function cancelUpload() {
|
|
||||||
swfu.cancelQueue();
|
|
||||||
}
|
|
||||||
|
|
||||||
// remember the last used image size, alignment and url
|
|
||||||
jQuery(document).ready(function($){
|
jQuery(document).ready(function($){
|
||||||
$( 'input[type="radio"]', '#media-items' ).on( 'click', function(){
|
$( 'input[type="radio"]', '#media-items' ).on( 'click', function(){
|
||||||
var tr = $(this).closest('tr');
|
var tr = $(this).closest('tr');
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,53 +0,0 @@
|
||||||
/*
|
|
||||||
Cookie Plug-in
|
|
||||||
|
|
||||||
This plug in automatically gets all the cookies for this site and adds them to the post_params.
|
|
||||||
Cookies are loaded only on initialization. The refreshCookies function can be called to update the post_params.
|
|
||||||
The cookies will override any other post params with the same name.
|
|
||||||
*/
|
|
||||||
|
|
||||||
var SWFUpload;
|
|
||||||
if (typeof(SWFUpload) === "function") {
|
|
||||||
SWFUpload.prototype.initSettings = function (oldInitSettings) {
|
|
||||||
return function () {
|
|
||||||
if (typeof(oldInitSettings) === "function") {
|
|
||||||
oldInitSettings.call(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.refreshCookies(false); // The false parameter must be sent since SWFUpload has not initialzed at this point
|
|
||||||
};
|
|
||||||
}(SWFUpload.prototype.initSettings);
|
|
||||||
|
|
||||||
// refreshes the post_params and updates SWFUpload. The sendToFlash parameters is optional and defaults to True
|
|
||||||
SWFUpload.prototype.refreshCookies = function (sendToFlash) {
|
|
||||||
if (sendToFlash === undefined) {
|
|
||||||
sendToFlash = true;
|
|
||||||
}
|
|
||||||
sendToFlash = !!sendToFlash;
|
|
||||||
|
|
||||||
// Get the post_params object
|
|
||||||
var postParams = this.settings.post_params;
|
|
||||||
|
|
||||||
// Get the cookies
|
|
||||||
var i, cookieArray = document.cookie.split(';'), caLength = cookieArray.length, c, eqIndex, name, value;
|
|
||||||
for (i = 0; i < caLength; i++) {
|
|
||||||
c = cookieArray[i];
|
|
||||||
|
|
||||||
// Left Trim spaces
|
|
||||||
while (c.charAt(0) === " ") {
|
|
||||||
c = c.substring(1, c.length);
|
|
||||||
}
|
|
||||||
eqIndex = c.indexOf("=");
|
|
||||||
if (eqIndex > 0) {
|
|
||||||
name = c.substring(0, eqIndex);
|
|
||||||
value = c.substring(eqIndex + 1);
|
|
||||||
postParams[name] = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sendToFlash) {
|
|
||||||
this.setPostParams(postParams);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,98 +0,0 @@
|
||||||
/*
|
|
||||||
Queue Plug-in
|
|
||||||
|
|
||||||
Features:
|
|
||||||
*Adds a cancelQueue() method for cancelling the entire queue.
|
|
||||||
*All queued files are uploaded when startUpload() is called.
|
|
||||||
*If false is returned from uploadComplete then the queue upload is stopped.
|
|
||||||
If false is not returned (strict comparison) then the queue upload is continued.
|
|
||||||
*Adds a QueueComplete event that is fired when all the queued files have finished uploading.
|
|
||||||
Set the event handler with the queue_complete_handler setting.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
var SWFUpload;
|
|
||||||
if (typeof(SWFUpload) === "function") {
|
|
||||||
SWFUpload.queue = {};
|
|
||||||
|
|
||||||
SWFUpload.prototype.initSettings = (function (oldInitSettings) {
|
|
||||||
return function () {
|
|
||||||
if (typeof(oldInitSettings) === "function") {
|
|
||||||
oldInitSettings.call(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.queueSettings = {};
|
|
||||||
|
|
||||||
this.queueSettings.queue_cancelled_flag = false;
|
|
||||||
this.queueSettings.queue_upload_count = 0;
|
|
||||||
|
|
||||||
this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
|
|
||||||
this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler;
|
|
||||||
this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler;
|
|
||||||
this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler;
|
|
||||||
|
|
||||||
this.settings.queue_complete_handler = this.settings.queue_complete_handler || null;
|
|
||||||
};
|
|
||||||
})(SWFUpload.prototype.initSettings);
|
|
||||||
|
|
||||||
SWFUpload.prototype.startUpload = function (fileID) {
|
|
||||||
this.queueSettings.queue_cancelled_flag = false;
|
|
||||||
this.callFlash("StartUpload", [fileID]);
|
|
||||||
};
|
|
||||||
|
|
||||||
SWFUpload.prototype.cancelQueue = function () {
|
|
||||||
this.queueSettings.queue_cancelled_flag = true;
|
|
||||||
this.stopUpload();
|
|
||||||
|
|
||||||
var stats = this.getStats();
|
|
||||||
while (stats.files_queued > 0) {
|
|
||||||
this.cancelUpload();
|
|
||||||
stats = this.getStats();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
SWFUpload.queue.uploadStartHandler = function (file) {
|
|
||||||
var returnValue;
|
|
||||||
if (typeof(this.queueSettings.user_upload_start_handler) === "function") {
|
|
||||||
returnValue = this.queueSettings.user_upload_start_handler.call(this, file);
|
|
||||||
}
|
|
||||||
|
|
||||||
// To prevent upload a real "FALSE" value must be returned, otherwise default to a real "TRUE" value.
|
|
||||||
returnValue = (returnValue === false) ? false : true;
|
|
||||||
|
|
||||||
this.queueSettings.queue_cancelled_flag = !returnValue;
|
|
||||||
|
|
||||||
return returnValue;
|
|
||||||
};
|
|
||||||
|
|
||||||
SWFUpload.queue.uploadCompleteHandler = function (file) {
|
|
||||||
var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler;
|
|
||||||
var continueUpload;
|
|
||||||
|
|
||||||
if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
|
|
||||||
this.queueSettings.queue_upload_count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof(user_upload_complete_handler) === "function") {
|
|
||||||
continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true;
|
|
||||||
} else if (file.filestatus === SWFUpload.FILE_STATUS.QUEUED) {
|
|
||||||
// If the file was stopped and re-queued don't restart the upload
|
|
||||||
continueUpload = false;
|
|
||||||
} else {
|
|
||||||
continueUpload = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (continueUpload) {
|
|
||||||
var stats = this.getStats();
|
|
||||||
if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) {
|
|
||||||
this.startUpload();
|
|
||||||
} else if (this.queueSettings.queue_cancelled_flag === false) {
|
|
||||||
this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]);
|
|
||||||
this.queueSettings.queue_upload_count = 0;
|
|
||||||
} else {
|
|
||||||
this.queueSettings.queue_cancelled_flag = false;
|
|
||||||
this.queueSettings.queue_upload_count = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,342 +0,0 @@
|
||||||
/*
|
|
||||||
Speed Plug-in
|
|
||||||
|
|
||||||
Features:
|
|
||||||
*Adds several properties to the 'file' object indicated upload speed, time left, upload time, etc.
|
|
||||||
- currentSpeed -- String indicating the upload speed, bytes per second
|
|
||||||
- averageSpeed -- Overall average upload speed, bytes per second
|
|
||||||
- movingAverageSpeed -- Speed over averaged over the last several measurements, bytes per second
|
|
||||||
- timeRemaining -- Estimated remaining upload time in seconds
|
|
||||||
- timeElapsed -- Number of seconds passed for this upload
|
|
||||||
- percentUploaded -- Percentage of the file uploaded (0 to 100)
|
|
||||||
- sizeUploaded -- Formatted size uploaded so far, bytes
|
|
||||||
|
|
||||||
*Adds setting 'moving_average_history_size' for defining the window size used to calculate the moving average speed.
|
|
||||||
|
|
||||||
*Adds several Formatting functions for formatting that values provided on the file object.
|
|
||||||
- SWFUpload.speed.formatBPS(bps) -- outputs string formatted in the best units (Gbps, Mbps, Kbps, bps)
|
|
||||||
- SWFUpload.speed.formatTime(seconds) -- outputs string formatted in the best units (x Hr y M z S)
|
|
||||||
- SWFUpload.speed.formatSize(bytes) -- outputs string formatted in the best units (w GB x MB y KB z B )
|
|
||||||
- SWFUpload.speed.formatPercent(percent) -- outputs string formatted with a percent sign (x.xx %)
|
|
||||||
- SWFUpload.speed.formatUnits(baseNumber, divisionArray, unitLabelArray, fractionalBoolean)
|
|
||||||
- Formats a number using the division array to determine how to apply the labels in the Label Array
|
|
||||||
- factionalBoolean indicates whether the number should be returned as a single fractional number with a unit (speed)
|
|
||||||
or as several numbers labeled with units (time)
|
|
||||||
*/
|
|
||||||
|
|
||||||
var SWFUpload;
|
|
||||||
if (typeof(SWFUpload) === "function") {
|
|
||||||
SWFUpload.speed = {};
|
|
||||||
|
|
||||||
SWFUpload.prototype.initSettings = (function (oldInitSettings) {
|
|
||||||
return function () {
|
|
||||||
if (typeof(oldInitSettings) === "function") {
|
|
||||||
oldInitSettings.call(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.ensureDefault = function (settingName, defaultValue) {
|
|
||||||
this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
|
|
||||||
};
|
|
||||||
|
|
||||||
// List used to keep the speed stats for the files we are tracking
|
|
||||||
this.fileSpeedStats = {};
|
|
||||||
this.speedSettings = {};
|
|
||||||
|
|
||||||
this.ensureDefault("moving_average_history_size", "10");
|
|
||||||
|
|
||||||
this.speedSettings.user_file_queued_handler = this.settings.file_queued_handler;
|
|
||||||
this.speedSettings.user_file_queue_error_handler = this.settings.file_queue_error_handler;
|
|
||||||
this.speedSettings.user_upload_start_handler = this.settings.upload_start_handler;
|
|
||||||
this.speedSettings.user_upload_error_handler = this.settings.upload_error_handler;
|
|
||||||
this.speedSettings.user_upload_progress_handler = this.settings.upload_progress_handler;
|
|
||||||
this.speedSettings.user_upload_success_handler = this.settings.upload_success_handler;
|
|
||||||
this.speedSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
|
|
||||||
|
|
||||||
this.settings.file_queued_handler = SWFUpload.speed.fileQueuedHandler;
|
|
||||||
this.settings.file_queue_error_handler = SWFUpload.speed.fileQueueErrorHandler;
|
|
||||||
this.settings.upload_start_handler = SWFUpload.speed.uploadStartHandler;
|
|
||||||
this.settings.upload_error_handler = SWFUpload.speed.uploadErrorHandler;
|
|
||||||
this.settings.upload_progress_handler = SWFUpload.speed.uploadProgressHandler;
|
|
||||||
this.settings.upload_success_handler = SWFUpload.speed.uploadSuccessHandler;
|
|
||||||
this.settings.upload_complete_handler = SWFUpload.speed.uploadCompleteHandler;
|
|
||||||
|
|
||||||
delete this.ensureDefault;
|
|
||||||
};
|
|
||||||
})(SWFUpload.prototype.initSettings);
|
|
||||||
|
|
||||||
|
|
||||||
SWFUpload.speed.fileQueuedHandler = function (file) {
|
|
||||||
if (typeof this.speedSettings.user_file_queued_handler === "function") {
|
|
||||||
file = SWFUpload.speed.extendFile(file);
|
|
||||||
|
|
||||||
return this.speedSettings.user_file_queued_handler.call(this, file);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
SWFUpload.speed.fileQueueErrorHandler = function (file, errorCode, message) {
|
|
||||||
if (typeof this.speedSettings.user_file_queue_error_handler === "function") {
|
|
||||||
file = SWFUpload.speed.extendFile(file);
|
|
||||||
|
|
||||||
return this.speedSettings.user_file_queue_error_handler.call(this, file, errorCode, message);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
SWFUpload.speed.uploadStartHandler = function (file) {
|
|
||||||
if (typeof this.speedSettings.user_upload_start_handler === "function") {
|
|
||||||
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
|
|
||||||
return this.speedSettings.user_upload_start_handler.call(this, file);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
SWFUpload.speed.uploadErrorHandler = function (file, errorCode, message) {
|
|
||||||
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
|
|
||||||
SWFUpload.speed.removeTracking(file, this.fileSpeedStats);
|
|
||||||
|
|
||||||
if (typeof this.speedSettings.user_upload_error_handler === "function") {
|
|
||||||
return this.speedSettings.user_upload_error_handler.call(this, file, errorCode, message);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
SWFUpload.speed.uploadProgressHandler = function (file, bytesComplete, bytesTotal) {
|
|
||||||
this.updateTracking(file, bytesComplete);
|
|
||||||
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
|
|
||||||
|
|
||||||
if (typeof this.speedSettings.user_upload_progress_handler === "function") {
|
|
||||||
return this.speedSettings.user_upload_progress_handler.call(this, file, bytesComplete, bytesTotal);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
SWFUpload.speed.uploadSuccessHandler = function (file, serverData) {
|
|
||||||
if (typeof this.speedSettings.user_upload_success_handler === "function") {
|
|
||||||
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
|
|
||||||
return this.speedSettings.user_upload_success_handler.call(this, file, serverData);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
SWFUpload.speed.uploadCompleteHandler = function (file) {
|
|
||||||
file = SWFUpload.speed.extendFile(file, this.fileSpeedStats);
|
|
||||||
SWFUpload.speed.removeTracking(file, this.fileSpeedStats);
|
|
||||||
|
|
||||||
if (typeof this.speedSettings.user_upload_complete_handler === "function") {
|
|
||||||
return this.speedSettings.user_upload_complete_handler.call(this, file);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Private: extends the file object with the speed plugin values
|
|
||||||
SWFUpload.speed.extendFile = function (file, trackingList) {
|
|
||||||
var tracking;
|
|
||||||
|
|
||||||
if (trackingList) {
|
|
||||||
tracking = trackingList[file.id];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tracking) {
|
|
||||||
file.currentSpeed = tracking.currentSpeed;
|
|
||||||
file.averageSpeed = tracking.averageSpeed;
|
|
||||||
file.movingAverageSpeed = tracking.movingAverageSpeed;
|
|
||||||
file.timeRemaining = tracking.timeRemaining;
|
|
||||||
file.timeElapsed = tracking.timeElapsed;
|
|
||||||
file.percentUploaded = tracking.percentUploaded;
|
|
||||||
file.sizeUploaded = tracking.bytesUploaded;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
file.currentSpeed = 0;
|
|
||||||
file.averageSpeed = 0;
|
|
||||||
file.movingAverageSpeed = 0;
|
|
||||||
file.timeRemaining = 0;
|
|
||||||
file.timeElapsed = 0;
|
|
||||||
file.percentUploaded = 0;
|
|
||||||
file.sizeUploaded = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return file;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Private: Updates the speed tracking object, or creates it if necessary
|
|
||||||
SWFUpload.prototype.updateTracking = function (file, bytesUploaded) {
|
|
||||||
var tracking = this.fileSpeedStats[file.id];
|
|
||||||
if (!tracking) {
|
|
||||||
this.fileSpeedStats[file.id] = tracking = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sanity check inputs
|
|
||||||
bytesUploaded = bytesUploaded || tracking.bytesUploaded || 0;
|
|
||||||
if (bytesUploaded < 0) {
|
|
||||||
bytesUploaded = 0;
|
|
||||||
}
|
|
||||||
if (bytesUploaded > file.size) {
|
|
||||||
bytesUploaded = file.size;
|
|
||||||
}
|
|
||||||
|
|
||||||
var tickTime = (new Date()).getTime();
|
|
||||||
if (!tracking.startTime) {
|
|
||||||
tracking.startTime = (new Date()).getTime();
|
|
||||||
tracking.lastTime = tracking.startTime;
|
|
||||||
tracking.currentSpeed = 0;
|
|
||||||
tracking.averageSpeed = 0;
|
|
||||||
tracking.movingAverageSpeed = 0;
|
|
||||||
tracking.movingAverageHistory = [];
|
|
||||||
tracking.timeRemaining = 0;
|
|
||||||
tracking.timeElapsed = 0;
|
|
||||||
tracking.percentUploaded = bytesUploaded / file.size;
|
|
||||||
tracking.bytesUploaded = bytesUploaded;
|
|
||||||
} else if (tracking.startTime > tickTime) {
|
|
||||||
this.debug("When backwards in time");
|
|
||||||
} else {
|
|
||||||
// Get time and deltas
|
|
||||||
var now = (new Date()).getTime();
|
|
||||||
var lastTime = tracking.lastTime;
|
|
||||||
var deltaTime = now - lastTime;
|
|
||||||
var deltaBytes = bytesUploaded - tracking.bytesUploaded;
|
|
||||||
|
|
||||||
if (deltaBytes === 0 || deltaTime === 0) {
|
|
||||||
return tracking;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update tracking object
|
|
||||||
tracking.lastTime = now;
|
|
||||||
tracking.bytesUploaded = bytesUploaded;
|
|
||||||
|
|
||||||
// Calculate speeds
|
|
||||||
tracking.currentSpeed = (deltaBytes * 8 ) / (deltaTime / 1000);
|
|
||||||
tracking.averageSpeed = (tracking.bytesUploaded * 8) / ((now - tracking.startTime) / 1000);
|
|
||||||
|
|
||||||
// Calculate moving average
|
|
||||||
tracking.movingAverageHistory.push(tracking.currentSpeed);
|
|
||||||
if (tracking.movingAverageHistory.length > this.settings.moving_average_history_size) {
|
|
||||||
tracking.movingAverageHistory.shift();
|
|
||||||
}
|
|
||||||
|
|
||||||
tracking.movingAverageSpeed = SWFUpload.speed.calculateMovingAverage(tracking.movingAverageHistory);
|
|
||||||
|
|
||||||
// Update times
|
|
||||||
tracking.timeRemaining = (file.size - tracking.bytesUploaded) * 8 / tracking.movingAverageSpeed;
|
|
||||||
tracking.timeElapsed = (now - tracking.startTime) / 1000;
|
|
||||||
|
|
||||||
// Update percent
|
|
||||||
tracking.percentUploaded = (tracking.bytesUploaded / file.size * 100);
|
|
||||||
}
|
|
||||||
|
|
||||||
return tracking;
|
|
||||||
};
|
|
||||||
SWFUpload.speed.removeTracking = function (file, trackingList) {
|
|
||||||
try {
|
|
||||||
trackingList[file.id] = null;
|
|
||||||
delete trackingList[file.id];
|
|
||||||
} catch (ex) {
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
SWFUpload.speed.formatUnits = function (baseNumber, unitDivisors, unitLabels, singleFractional) {
|
|
||||||
var i, unit, unitDivisor, unitLabel;
|
|
||||||
|
|
||||||
if (baseNumber === 0) {
|
|
||||||
return "0 " + unitLabels[unitLabels.length - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (singleFractional) {
|
|
||||||
unit = baseNumber;
|
|
||||||
unitLabel = unitLabels.length >= unitDivisors.length ? unitLabels[unitDivisors.length - 1] : "";
|
|
||||||
for (i = 0; i < unitDivisors.length; i++) {
|
|
||||||
if (baseNumber >= unitDivisors[i]) {
|
|
||||||
unit = (baseNumber / unitDivisors[i]).toFixed(2);
|
|
||||||
unitLabel = unitLabels.length >= i ? " " + unitLabels[i] : "";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return unit + unitLabel;
|
|
||||||
} else {
|
|
||||||
var formattedStrings = [];
|
|
||||||
var remainder = baseNumber;
|
|
||||||
|
|
||||||
for (i = 0; i < unitDivisors.length; i++) {
|
|
||||||
unitDivisor = unitDivisors[i];
|
|
||||||
unitLabel = unitLabels.length > i ? " " + unitLabels[i] : "";
|
|
||||||
|
|
||||||
unit = remainder / unitDivisor;
|
|
||||||
if (i < unitDivisors.length -1) {
|
|
||||||
unit = Math.floor(unit);
|
|
||||||
} else {
|
|
||||||
unit = unit.toFixed(2);
|
|
||||||
}
|
|
||||||
if (unit > 0) {
|
|
||||||
remainder = remainder % unitDivisor;
|
|
||||||
|
|
||||||
formattedStrings.push(unit + unitLabel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return formattedStrings.join(" ");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
SWFUpload.speed.formatBPS = function (baseNumber) {
|
|
||||||
var bpsUnits = [1073741824, 1048576, 1024, 1], bpsUnitLabels = ["Gbps", "Mbps", "Kbps", "bps"];
|
|
||||||
return SWFUpload.speed.formatUnits(baseNumber, bpsUnits, bpsUnitLabels, true);
|
|
||||||
|
|
||||||
};
|
|
||||||
SWFUpload.speed.formatTime = function (baseNumber) {
|
|
||||||
var timeUnits = [86400, 3600, 60, 1], timeUnitLabels = ["d", "h", "m", "s"];
|
|
||||||
return SWFUpload.speed.formatUnits(baseNumber, timeUnits, timeUnitLabels, false);
|
|
||||||
|
|
||||||
};
|
|
||||||
SWFUpload.speed.formatBytes = function (baseNumber) {
|
|
||||||
var sizeUnits = [1073741824, 1048576, 1024, 1], sizeUnitLabels = ["GB", "MB", "KB", "bytes"];
|
|
||||||
return SWFUpload.speed.formatUnits(baseNumber, sizeUnits, sizeUnitLabels, true);
|
|
||||||
|
|
||||||
};
|
|
||||||
SWFUpload.speed.formatPercent = function (baseNumber) {
|
|
||||||
return baseNumber.toFixed(2) + " %";
|
|
||||||
};
|
|
||||||
|
|
||||||
SWFUpload.speed.calculateMovingAverage = function (history) {
|
|
||||||
var vals = [], size, sum = 0.0, mean = 0.0, varianceTemp = 0.0, variance = 0.0, standardDev = 0.0;
|
|
||||||
var i;
|
|
||||||
var mSum = 0, mCount = 0;
|
|
||||||
|
|
||||||
size = history.length;
|
|
||||||
|
|
||||||
// Check for sufficient data
|
|
||||||
if (size >= 8) {
|
|
||||||
// Clone the array and Calculate sum of the values
|
|
||||||
for (i = 0; i < size; i++) {
|
|
||||||
vals[i] = history[i];
|
|
||||||
sum += vals[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
mean = sum / size;
|
|
||||||
|
|
||||||
// Calculate variance for the set
|
|
||||||
for (i = 0; i < size; i++) {
|
|
||||||
varianceTemp += Math.pow((vals[i] - mean), 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
variance = varianceTemp / size;
|
|
||||||
standardDev = Math.sqrt(variance);
|
|
||||||
|
|
||||||
//Standardize the Data
|
|
||||||
for (i = 0; i < size; i++) {
|
|
||||||
vals[i] = (vals[i] - mean) / standardDev;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calculate the average excluding outliers
|
|
||||||
var deviationRange = 2.0;
|
|
||||||
for (i = 0; i < size; i++) {
|
|
||||||
|
|
||||||
if (vals[i] <= deviationRange && vals[i] >= -deviationRange) {
|
|
||||||
mCount++;
|
|
||||||
mSum += history[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// Calculate the average (not enough data points to remove outliers)
|
|
||||||
mCount = size;
|
|
||||||
for (i = 0; i < size; i++) {
|
|
||||||
mSum += history[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return mSum / mCount;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,105 +0,0 @@
|
||||||
/*
|
|
||||||
SWFUpload.SWFObject Plugin
|
|
||||||
|
|
||||||
Summary:
|
|
||||||
This plugin uses SWFObject to embed SWFUpload dynamically in the page. SWFObject provides accurate Flash Player detection and DOM Ready loading.
|
|
||||||
This plugin replaces the Graceful Degradation plugin.
|
|
||||||
|
|
||||||
Features:
|
|
||||||
* swfupload_load_failed_hander event
|
|
||||||
* swfupload_pre_load_handler event
|
|
||||||
* minimum_flash_version setting (default: "9.0.28")
|
|
||||||
* SWFUpload.onload event for early loading
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
Provide handlers and settings as needed. When using the SWFUpload.SWFObject plugin you should initialize SWFUploading
|
|
||||||
in SWFUpload.onload rather than in window.onload. When initialized this way SWFUpload can load earlier preventing the UI flicker
|
|
||||||
that was seen using the Graceful Degradation plugin.
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
var swfu;
|
|
||||||
SWFUpload.onload = function () {
|
|
||||||
swfu = new SWFUpload({
|
|
||||||
minimum_flash_version: "9.0.28",
|
|
||||||
swfupload_pre_load_handler: swfuploadPreLoad,
|
|
||||||
swfupload_load_failed_handler: swfuploadLoadFailed
|
|
||||||
});
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
You must provide set minimum_flash_version setting to "8" if you are using SWFUpload for Flash Player 8.
|
|
||||||
The swfuploadLoadFailed event is only fired if the minimum version of Flash Player is not met. Other issues such as missing SWF files, browser bugs
|
|
||||||
or corrupt Flash Player installations will not trigger this event.
|
|
||||||
The swfuploadPreLoad event is fired as soon as the minimum version of Flash Player is found. It does not wait for SWFUpload to load and can
|
|
||||||
be used to prepare the SWFUploadUI and hide alternate content.
|
|
||||||
swfobject's onDomReady event is cross-browser safe but will default to the window.onload event when DOMReady is not supported by the browser.
|
|
||||||
Early DOM Loading is supported in major modern browsers but cannot be guaranteed for every browser ever made.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
// SWFObject v2.1 must be loaded
|
|
||||||
|
|
||||||
var SWFUpload;
|
|
||||||
if (typeof(SWFUpload) === "function") {
|
|
||||||
SWFUpload.onload = function () {};
|
|
||||||
|
|
||||||
swfobject.addDomLoadEvent(function () {
|
|
||||||
if (typeof(SWFUpload.onload) === "function") {
|
|
||||||
setTimeout(function(){SWFUpload.onload.call(window);}, 200);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
SWFUpload.prototype.initSettings = (function (oldInitSettings) {
|
|
||||||
return function () {
|
|
||||||
if (typeof(oldInitSettings) === "function") {
|
|
||||||
oldInitSettings.call(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.ensureDefault = function (settingName, defaultValue) {
|
|
||||||
this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
|
|
||||||
};
|
|
||||||
|
|
||||||
this.ensureDefault("minimum_flash_version", "9.0.28");
|
|
||||||
this.ensureDefault("swfupload_pre_load_handler", null);
|
|
||||||
this.ensureDefault("swfupload_load_failed_handler", null);
|
|
||||||
|
|
||||||
delete this.ensureDefault;
|
|
||||||
|
|
||||||
};
|
|
||||||
})(SWFUpload.prototype.initSettings);
|
|
||||||
|
|
||||||
|
|
||||||
SWFUpload.prototype.loadFlash = function (oldLoadFlash) {
|
|
||||||
return function () {
|
|
||||||
var hasFlash = swfobject.hasFlashPlayerVersion(this.settings.minimum_flash_version);
|
|
||||||
|
|
||||||
if (hasFlash) {
|
|
||||||
this.queueEvent("swfupload_pre_load_handler");
|
|
||||||
if (typeof(oldLoadFlash) === "function") {
|
|
||||||
oldLoadFlash.call(this);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.queueEvent("swfupload_load_failed_handler");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
}(SWFUpload.prototype.loadFlash);
|
|
||||||
|
|
||||||
SWFUpload.prototype.displayDebugInfo = function (oldDisplayDebugInfo) {
|
|
||||||
return function () {
|
|
||||||
if (typeof(oldDisplayDebugInfo) === "function") {
|
|
||||||
oldDisplayDebugInfo.call(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.debug(
|
|
||||||
[
|
|
||||||
"SWFUpload.SWFObject Plugin settings:", "\n",
|
|
||||||
"\t", "minimum_flash_version: ", this.settings.minimum_flash_version, "\n",
|
|
||||||
"\t", "swfupload_pre_load_handler assigned: ", (typeof(this.settings.swfupload_pre_load_handler) === "function").toString(), "\n",
|
|
||||||
"\t", "swfupload_load_failed_handler assigned: ", (typeof(this.settings.swfupload_load_failed_handler) === "function").toString(), "\n",
|
|
||||||
].join("")
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}(SWFUpload.prototype.displayDebugInfo);
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -326,10 +326,7 @@ function wp_default_scripts( &$scripts ) {
|
||||||
|
|
||||||
// keep 'swfupload' for back-compat.
|
// keep 'swfupload' for back-compat.
|
||||||
$scripts->add( 'swfupload', '/wp-includes/js/swfupload/swfupload.js', array(), '2201-20110113');
|
$scripts->add( 'swfupload', '/wp-includes/js/swfupload/swfupload.js', array(), '2201-20110113');
|
||||||
$scripts->add( 'swfupload-swfobject', '/wp-includes/js/swfupload/plugins/swfupload.swfobject.js', array('swfupload', 'swfobject'), '2201a');
|
$scripts->add( 'swfupload-all', false, array( 'swfupload' ), '2201' );
|
||||||
$scripts->add( 'swfupload-queue', '/wp-includes/js/swfupload/plugins/swfupload.queue.js', array('swfupload'), '2201');
|
|
||||||
$scripts->add( 'swfupload-speed', '/wp-includes/js/swfupload/plugins/swfupload.speed.js', array('swfupload'), '2201');
|
|
||||||
$scripts->add( 'swfupload-all', false, array('swfupload', 'swfupload-swfobject', 'swfupload-queue'), '2201');
|
|
||||||
$scripts->add( 'swfupload-handlers', "/wp-includes/js/swfupload/handlers$suffix.js", array('swfupload-all', 'jquery'), '2201-20110524');
|
$scripts->add( 'swfupload-handlers', "/wp-includes/js/swfupload/handlers$suffix.js", array('swfupload-all', 'jquery'), '2201-20110524');
|
||||||
did_action( 'init' ) && $scripts->localize( 'swfupload-handlers', 'swfuploadL10n', $uploader_l10n );
|
did_action( 'init' ) && $scripts->localize( 'swfupload-handlers', 'swfuploadL10n', $uploader_l10n );
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '4.9-alpha-41553';
|
$wp_version = '4.9-alpha-41554';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
|
Loading…
Reference in New Issue