Update SWFUpload to 2.2.0.1, see #9413
git-svn-id: http://svn.automattic.com/wordpress/trunk@11372 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
afcaa4b48d
commit
697923e9f0
|
@ -104,46 +104,6 @@ tr.image-size label {
|
|||
max-height: 40px;
|
||||
}
|
||||
|
||||
.filename.original {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.crunching {
|
||||
display: block;
|
||||
line-height: 32px;
|
||||
text-align: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
button.dismiss {
|
||||
position: absolute;
|
||||
top: 7px;
|
||||
right: 5px;
|
||||
z-index: 4;
|
||||
width: 8em;
|
||||
}
|
||||
|
||||
.file-error {
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.progress {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 623px;
|
||||
height: 36px;
|
||||
}
|
||||
|
||||
.bar {
|
||||
width: 0;
|
||||
height: 100%;
|
||||
border-right-width: 3px;
|
||||
border-right-style: solid;
|
||||
}
|
||||
|
||||
#library-form .progress,
|
||||
#gallery-form .progress,
|
||||
#flash-upload-ui,
|
||||
|
@ -229,7 +189,7 @@ abbr.required {
|
|||
margin: 0 1em 1em 0;
|
||||
}
|
||||
|
||||
#media-upload .media-upload-form p.ml-submit {
|
||||
#media-upload p.ml-submit {
|
||||
padding: 1em 0;
|
||||
}
|
||||
|
||||
|
@ -252,7 +212,6 @@ abbr.required {
|
|||
}
|
||||
|
||||
#media-upload .media-item {
|
||||
position: relative;
|
||||
border-bottom-width: 1px;
|
||||
border-bottom-style: solid;
|
||||
min-height: 36px;
|
||||
|
@ -264,11 +223,9 @@ abbr.required {
|
|||
}
|
||||
|
||||
.filename {
|
||||
float: left;
|
||||
line-height: 36px;
|
||||
margin-left: 10px;
|
||||
padding: 0 10px;
|
||||
overflow: hidden;
|
||||
max-width: 430px;
|
||||
}
|
||||
|
||||
#media-upload .describe {
|
||||
|
@ -355,7 +312,9 @@ abbr.required {
|
|||
}
|
||||
|
||||
.sorthelper {
|
||||
z-index: -1;
|
||||
height: 37px;
|
||||
width: 623px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#gallery-settings th.label {
|
||||
|
|
|
@ -327,6 +327,8 @@ if ( is_string($content_func) )
|
|||
$args = func_get_args();
|
||||
$args = array_slice($args, 1);
|
||||
call_user_func_array($content_func, $args);
|
||||
|
||||
do_action('admin_print_footer_scripts');
|
||||
?>
|
||||
<script type="text/javascript">if(typeof wpOnload=='function')wpOnload();</script>
|
||||
</body>
|
||||
|
@ -1299,12 +1301,14 @@ jQuery(document).ready(function($){
|
|||
<?php if ( $flash ) : ?>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var swfu;
|
||||
SWFUpload.onload = function() {
|
||||
swfu = new SWFUpload({
|
||||
var settings = {
|
||||
button_text: '<span class="button"><?php _e('Select Files'); ?></span>',
|
||||
button_text_style: '.button { text-align: center; font-weight: bold; font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana,sans-serif; }',
|
||||
button_height: "24",
|
||||
button_width: "132",
|
||||
button_text_top_padding: 1,
|
||||
button_image_url: '<?php echo includes_url('images/upload.png'); ?>',
|
||||
button_placeholder_id: "flash-browse-button",
|
||||
upload_url : "<?php echo esc_attr( $flash_action_url ); ?>",
|
||||
|
@ -1336,7 +1340,8 @@ SWFUpload.onload = function() {
|
|||
swfupload_element_id : "flash-upload-ui" // id of the element displayed when swfupload is available
|
||||
},
|
||||
debug: false
|
||||
});
|
||||
};
|
||||
swfu = new SWFUpload(settings);
|
||||
};
|
||||
//]]>
|
||||
</script>
|
||||
|
@ -1344,11 +1349,14 @@ SWFUpload.onload = function() {
|
|||
<div id="flash-upload-ui">
|
||||
<?php do_action('pre-flash-upload-ui'); ?>
|
||||
|
||||
<div><?php _e( 'Choose files to upload' ); ?> <div id="flash-browse-button"></div></div>
|
||||
<div>
|
||||
<?php _e( 'Choose files to upload' ); ?>
|
||||
<div id="flash-browse-button"></div>
|
||||
<span><input id="cancel-upload" disabled="disabled" onclick="cancelUpload()" type="button" value="<?php esc_attr_e('Cancel Upload'); ?>" class="button" /></span>
|
||||
</div>
|
||||
<?php do_action('post-flash-upload-ui'); ?>
|
||||
<p class="howto"><?php _e('After a file has been uploaded, you can add titles and descriptions.'); ?></p>
|
||||
</div>
|
||||
|
||||
<?php endif; // $flash ?>
|
||||
|
||||
<div id="html-upload-ui">
|
||||
|
@ -1394,7 +1402,7 @@ function media_upload_type_form($type = 'file', $errors = null, $id = null) {
|
|||
<?php media_upload_form( $errors ); ?>
|
||||
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
//<![CDATA[
|
||||
jQuery(function($){
|
||||
var preloaded = $(".media-item.preloaded");
|
||||
if ( preloaded.length > 0 ) {
|
||||
|
@ -1402,7 +1410,7 @@ jQuery(function($){
|
|||
}
|
||||
updateMediaForm();
|
||||
});
|
||||
-->
|
||||
//]]>
|
||||
</script>
|
||||
<div id="media-items">
|
||||
<?php
|
||||
|
@ -1417,7 +1425,9 @@ if ( $id ) {
|
|||
}
|
||||
?>
|
||||
</div>
|
||||
<input type="submit" class="button savebutton" name="save" value="<?php esc_attr_e( 'Save all changes' ); ?>" />
|
||||
<p class="savebutton ml-submit">
|
||||
<input type="submit" class="button" name="save" value="<?php esc_attr_e( 'Save all changes' ); ?>" />
|
||||
</p>
|
||||
<?php
|
||||
}
|
||||
|
||||
|
@ -1567,8 +1577,8 @@ jQuery(function($){
|
|||
<div id="sort-buttons" class="hide-if-no-js">
|
||||
<span>
|
||||
<?php _e('All Tabs:'); ?>
|
||||
<a href="#" id="showall" class="toggle"><?php _e('Show'); ?></a>
|
||||
<a href="#" id="hideall" class="toggle" style="display:none;"><?php _e('Hide'); ?></a>
|
||||
<a href="#" id="showall"><?php _e('Show'); ?></a>
|
||||
<a href="#" id="hideall" style="display:none;"><?php _e('Hide'); ?></a>
|
||||
</span>
|
||||
<?php _e('Sort Order:'); ?>
|
||||
<a href="#" id="asc"><?php _e('Ascending'); ?></a> |
|
||||
|
|
|
@ -7,7 +7,7 @@ jQuery(document).ready(function($) {
|
|||
placeholder: 'sorthelper',
|
||||
axis: 'y',
|
||||
distance: 2,
|
||||
forcePlaceholderSize: true,
|
||||
// forcePlaceholderSize: true,
|
||||
stop: function(e, ui) {
|
||||
// When an update has occurred, adjust the order for each item
|
||||
var all = $('#media-items').sortable('toArray'), len = all.length;
|
||||
|
@ -33,16 +33,22 @@ jQuery(document).ready(function($) {
|
|||
if ( this.value == '0' || c ) this.value = '';
|
||||
});
|
||||
}
|
||||
|
||||
toggleAll = function() {
|
||||
$('a.toggle, table.slidetoggle').toggle();
|
||||
}
|
||||
|
||||
$('#asc').click(function(){desc = false; sortIt(); return false;});
|
||||
$('#desc').click(function(){desc = true; sortIt(); return false;});
|
||||
$('#clear').click(function(){clearAll(1); return false;});
|
||||
$('#showall').click(function(){toggleAll();return false;});
|
||||
$('#hideall').click(function(){toggleAll();return false;});
|
||||
$('#showall').click(function(){
|
||||
$('#sort-buttons span a').toggle();
|
||||
$('a.describe-toggle-on').hide();
|
||||
$('a.describe-toggle-off, table.slidetoggle').show();
|
||||
return false;
|
||||
});
|
||||
$('#hideall').click(function(){
|
||||
$('#sort-buttons span a').toggle();
|
||||
$('a.describe-toggle-on').show();
|
||||
$('a.describe-toggle-off, table.slidetoggle').hide();
|
||||
return false;
|
||||
});
|
||||
|
||||
// initialize sortable
|
||||
gallerySortableInit();
|
||||
|
|
|
@ -1 +1 @@
|
|||
jQuery(document).ready(function(c){var b,e,a,d=false;e=function(){b=c("#media-items").sortable({items:".media-item",placeholder:"sorthelper",axis:"y",distance:2,forcePlaceholderSize:true,stop:function(i,h){var g=c("#media-items").sortable("toArray"),f=g.length;c.each(g,function(k,l){var j=d?(f-k):(1+k);c("#"+l+" .menu_order input").val(j)})}})};sortIt=function(){var g=c(".menu_order_input"),f=g.length;g.each(function(j){var h=d?(f-j):(1+j);c(this).val(h)})};clearAll=function(f){f=f||0;c(".menu_order_input").each(function(){if(this.value=="0"||f){this.value=""}})};toggleAll=function(){c("a.toggle, table.slidetoggle").toggle()};c("#asc").click(function(){d=false;sortIt();return false});c("#desc").click(function(){d=true;sortIt();return false});c("#clear").click(function(){clearAll(1);return false});c("#showall").click(function(){toggleAll();return false});c("#hideall").click(function(){toggleAll();return false});e();clearAll();if(c("#media-items>*").length>1){a=wpgallery.getWin();c("#save-all, #gallery-settings").show();if(typeof a.tinyMCE!="undefined"&&a.tinyMCE.activeEditor&&!a.tinyMCE.activeEditor.isHidden()){wpgallery.mcemode=true;wpgallery.init()}else{c("#insert-gallery").show()}}});jQuery(window).unload(function(){tinymce=tinyMCE=wpgallery=null});var tinymce=null,tinyMCE,wpgallery;wpgallery={mcemode:false,editor:{},dom:{},is_update:false,el:{},I:function(a){return document.getElementById(a)},init:function(){var d=this,a,f,c,e,b=d.getWin();if(!d.mcemode){return}a=(""+document.location.search).replace(/^\?/,"").split("&");f={};for(c=0;c<a.length;c++){e=a[c].split("=");f[unescape(e[0])]=unescape(e[1])}if(f.mce_rdomain){document.domain=f.mce_rdomain}tinymce=b.tinymce;tinyMCE=b.tinyMCE;d.editor=tinymce.EditorManager.activeEditor;d.setup()},getWin:function(){return window.dialogArguments||opener||parent||top},restoreSelection:function(){var a=this;if(tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},setup:function(){var f=this,c,d=f.editor,i,e,h,b,j;if(!f.mcemode){return}f.restoreSelection();f.el=d.selection.getNode();if(f.el.nodeName!="IMG"||!d.dom.hasClass(f.el,"wpGallery")){if((i=d.dom.select("img.wpGallery"))&&i[0]){f.el=i[0]}else{if(getUserSetting("galfile")=="1"){f.I("linkto-file").checked="checked"}if(getUserSetting("galdesc")=="1"){f.I("order-desc").checked="checked"}if(getUserSetting("galcols")){f.I("columns").value=getUserSetting("galcols")}if(getUserSetting("galord")){f.I("orderby").value=getUserSetting("galord")}jQuery("#insert-gallery").show();return}}c=d.dom.getAttrib(f.el,"title");c=d.dom.decode(c);if(c){jQuery("#update-gallery").show();f.is_update=true;e=c.match(/columns=['"]([0-9]+)['"]/);h=c.match(/link=['"]([^'"]+)['"]/i);b=c.match(/order=['"]([^'"]+)['"]/i);j=c.match(/orderby=['"]([^'"]+)['"]/i);if(h&&h[1]){f.I("linkto-file").checked="checked"}if(b&&b[1]){f.I("order-desc").checked="checked"}if(e&&e[1]){f.I("columns").value=""+e[1]}if(j&&j[1]){f.I("orderby").value=j[1]}}else{jQuery("#insert-gallery").show()}},update:function(){var b=this,a=b.editor,d="",c;if(!b.mcemode||!b.is_update){c="[gallery"+b.getSettings()+"]";b.getWin().send_to_editor(c);return}if(b.el.nodeName!="IMG"){return}d=a.dom.decode(a.dom.getAttrib(b.el,"title"));d=d.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi,"");d+=b.getSettings();a.dom.setAttrib(b.el,"title",d);b.getWin().tb_remove()},getSettings:function(){var a=this.I,b="";if(a("linkto-file").checked){b+=' link="file"';setUserSetting("galfile","1")}if(a("order-desc").checked){b+=' order="DESC"';setUserSetting("galdesc","1")}if(a("columns").value!=3){b+=' columns="'+a("columns").value+'"';setUserSetting("galcols",a("columns").value)}if(a("orderby").value!="menu_order"){b+=' orderby="'+a("orderby").value+'"';setUserSetting("galord",a("orderby").value)}return b}};
|
||||
jQuery(document).ready(function(c){var b,e,a,d=false;e=function(){b=c("#media-items").sortable({items:".media-item",placeholder:"sorthelper",axis:"y",distance:2,forcePlaceholderSize:true,stop:function(i,h){var g=c("#media-items").sortable("toArray"),f=g.length;c.each(g,function(k,l){var j=d?(f-k):(1+k);c("#"+l+" .menu_order input").val(j)})}})};sortIt=function(){var g=c(".menu_order_input"),f=g.length;g.each(function(j){var h=d?(f-j):(1+j);c(this).val(h)})};clearAll=function(f){f=f||0;c(".menu_order_input").each(function(){if(this.value=="0"||f){this.value=""}})};c("#asc").click(function(){d=false;sortIt();return false});c("#desc").click(function(){d=true;sortIt();return false});c("#clear").click(function(){clearAll(1);return false});c("#showall").click(function(){c("#sort-buttons span a").toggle();c("a.describe-toggle-on").hide();c("a.describe-toggle-off, table.slidetoggle").show();return false});c("#hideall").click(function(){c("#sort-buttons span a").toggle();c("a.describe-toggle-on").show();c("a.describe-toggle-off, table.slidetoggle").hide();return false});e();clearAll();if(c("#media-items>*").length>1){a=wpgallery.getWin();c("#save-all, #gallery-settings").show();if(typeof a.tinyMCE!="undefined"&&a.tinyMCE.activeEditor&&!a.tinyMCE.activeEditor.isHidden()){wpgallery.mcemode=true;wpgallery.init()}else{c("#insert-gallery").show()}}});jQuery(window).unload(function(){tinymce=tinyMCE=wpgallery=null});var tinymce=null,tinyMCE,wpgallery;wpgallery={mcemode:false,editor:{},dom:{},is_update:false,el:{},I:function(a){return document.getElementById(a)},init:function(){var d=this,a,f,c,e,b=d.getWin();if(!d.mcemode){return}a=(""+document.location.search).replace(/^\?/,"").split("&");f={};for(c=0;c<a.length;c++){e=a[c].split("=");f[unescape(e[0])]=unescape(e[1])}if(f.mce_rdomain){document.domain=f.mce_rdomain}tinymce=b.tinymce;tinyMCE=b.tinyMCE;d.editor=tinymce.EditorManager.activeEditor;d.setup()},getWin:function(){return window.dialogArguments||opener||parent||top},restoreSelection:function(){var a=this;if(tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},setup:function(){var f=this,c,d=f.editor,i,e,h,b,j;if(!f.mcemode){return}f.restoreSelection();f.el=d.selection.getNode();if(f.el.nodeName!="IMG"||!d.dom.hasClass(f.el,"wpGallery")){if((i=d.dom.select("img.wpGallery"))&&i[0]){f.el=i[0]}else{if(getUserSetting("galfile")=="1"){f.I("linkto-file").checked="checked"}if(getUserSetting("galdesc")=="1"){f.I("order-desc").checked="checked"}if(getUserSetting("galcols")){f.I("columns").value=getUserSetting("galcols")}if(getUserSetting("galord")){f.I("orderby").value=getUserSetting("galord")}jQuery("#insert-gallery").show();return}}c=d.dom.getAttrib(f.el,"title");c=d.dom.decode(c);if(c){jQuery("#update-gallery").show();f.is_update=true;e=c.match(/columns=['"]([0-9]+)['"]/);h=c.match(/link=['"]([^'"]+)['"]/i);b=c.match(/order=['"]([^'"]+)['"]/i);j=c.match(/orderby=['"]([^'"]+)['"]/i);if(h&&h[1]){f.I("linkto-file").checked="checked"}if(b&&b[1]){f.I("order-desc").checked="checked"}if(e&&e[1]){f.I("columns").value=""+e[1]}if(j&&j[1]){f.I("orderby").value=j[1]}}else{jQuery("#insert-gallery").show()}},update:function(){var b=this,a=b.editor,d="",c;if(!b.mcemode||!b.is_update){c="[gallery"+b.getSettings()+"]";b.getWin().send_to_editor(c);return}if(b.el.nodeName!="IMG"){return}d=a.dom.decode(a.dom.getAttrib(b.el,"title"));d=d.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi,"");d+=b.getSettings();a.dom.setAttrib(b.el,"title",d);b.getWin().tb_remove()},getSettings:function(){var a=this.I,b="";if(a("linkto-file").checked){b+=' link="file"';setUserSetting("galfile","1")}if(a("order-desc").checked){b+=' order="DESC"';setUserSetting("galdesc","1")}if(a("columns").value!=3){b+=' columns="'+a("columns").value+'"';setUserSetting("galcols",a("columns").value)}if(a("orderby").value!="menu_order"){b+=' orderby="'+a("orderby").value+'"';setUserSetting("galord",a("orderby").value)}return b}};
|
|
@ -15,9 +15,7 @@ require_once('admin.php');
|
|||
if (!current_user_can('upload_files'))
|
||||
wp_die(__('You do not have permission to upload files.'));
|
||||
|
||||
wp_enqueue_script('swfupload');
|
||||
wp_enqueue_script('swfupload-swfobject');
|
||||
wp_enqueue_script('swfupload-queue');
|
||||
wp_enqueue_script('swfupload-all');
|
||||
wp_enqueue_script('swfupload-handlers');
|
||||
|
||||
@header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
|
||||
|
|
|
@ -2790,7 +2790,7 @@ table .inline-edit-row fieldset ul.cat-hover {
|
|||
}
|
||||
|
||||
#wpbody-content .filename {
|
||||
margin-left: 10px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
#wpbody-content .media-item .thumbnail {
|
||||
|
@ -2845,10 +2845,7 @@ abbr.required {
|
|||
}
|
||||
|
||||
#wpbody-content #media-items .filename {
|
||||
float: left;
|
||||
line-height: 36px;
|
||||
margin-left: 10px;
|
||||
max-width: 430px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
@ -2860,11 +2857,55 @@ abbr.required {
|
|||
max-height: 40px;
|
||||
}
|
||||
|
||||
.media-item .startopen,
|
||||
.media-item .startopen,
|
||||
.media-item .startclosed {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.media-item .original {
|
||||
position: relative;
|
||||
height: 34px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.media-item .percent {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.crunching {
|
||||
display: block;
|
||||
line-height: 32px;
|
||||
text-align: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
button.dismiss {
|
||||
position: absolute;
|
||||
top: 7px;
|
||||
right: 5px;
|
||||
z-index: 4;
|
||||
width: 8em;
|
||||
}
|
||||
|
||||
.file-error {
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.progress {
|
||||
position: relative;
|
||||
margin-bottom: -36px;
|
||||
height: 36px;
|
||||
}
|
||||
|
||||
.bar {
|
||||
width: 0;
|
||||
height: 100%;
|
||||
border-right-width: 3px;
|
||||
border-right-style: solid;
|
||||
}
|
||||
|
||||
/* find posts */
|
||||
.find-box {
|
||||
width: 500px;
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,3 +1,4 @@
|
|||
|
||||
function fileDialogStart() {
|
||||
jQuery("#media-upload-error").empty();
|
||||
}
|
||||
|
@ -8,23 +9,29 @@ function fileQueued(fileObj) {
|
|||
jQuery('.media-blank').remove();
|
||||
// Collapse a single item
|
||||
if ( jQuery('.type-form #media-items>*').length == 1 && jQuery('#media-items .hidden').length > 0 ) {
|
||||
jQuery('.toggle').toggle();
|
||||
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('#media-items').append('<div id="media-item-' + fileObj.id + '" class="media-item child-of-' + post_id + '"><div class="progress"><div class="bar"></div></div><div class="filename original">' + fileObj.name + '</div></div>');
|
||||
jQuery('#media-items').append('<div id="media-item-' + fileObj.id + '" class="media-item child-of-' + post_id + '"><div class="progress"><div class="bar"></div></div><div class="filename original"><span class="percent"></span> ' + fileObj.name + '</div></div>');
|
||||
// Display the progress div
|
||||
jQuery('#media-item-' + fileObj.id + ' .progress').show();
|
||||
|
||||
// Disable the submit button
|
||||
// Disable submit and enable cancel
|
||||
jQuery('#insert-gallery').attr('disabled', 'disabled');
|
||||
jQuery('#cancel-upload').attr('disabled', '');
|
||||
}
|
||||
|
||||
function uploadStart(fileObj) { return true; }
|
||||
function uploadStart(fileObj) {
|
||||
return true;
|
||||
}
|
||||
|
||||
function uploadProgress(fileObj, bytesDone, bytesTotal) {
|
||||
// Lengthen the progress bar
|
||||
jQuery('#media-item-' + fileObj.id + ' .bar').width(620*bytesDone/bytesTotal);
|
||||
var w = jQuery('#media-items').width() - 2;
|
||||
jQuery('#media-item-' + fileObj.id + ' .bar').width( w * bytesDone / bytesTotal );
|
||||
jQuery('#media-item-' + fileObj.id + ' .percent').html( Math.ceil(bytesDone / bytesTotal * 100) + '%' );
|
||||
|
||||
if ( bytesDone == bytesTotal )
|
||||
jQuery('#media-item-' + fileObj.id + ' .bar').html('<strong class="crunching">' + swfuploadL10n.crunching + '</strong>');
|
||||
|
@ -56,10 +63,18 @@ function prepareMediaItemInit(fileObj) {
|
|||
jQuery('#media-item-' + fileObj.id + ' .filename.original').replaceWith(jQuery('#media-item-' + fileObj.id + ' .filename.new'));
|
||||
|
||||
// Also bind toggle to the links
|
||||
jQuery('#media-item-' + fileObj.id + ' a.toggle').bind('click', function(){jQuery(this).siblings('.slidetoggle').slideToggle(150, function(){var o=jQuery(this).offset();window.scrollTo(0,o.top-36);});jQuery(this).parent().eq(0).children('.toggle').toggle();jQuery(this).siblings('a.toggle').focus();return false;});
|
||||
jQuery('#media-item-' + fileObj.id + ' a.toggle').click(function(){
|
||||
jQuery(this).siblings('.slidetoggle').slideToggle(150, function(){
|
||||
var o = jQuery(this).offset();
|
||||
window.scrollTo(0, o.top-36);
|
||||
});
|
||||
jQuery(this).parent().children('.toggle').toggle();
|
||||
jQuery(this).siblings('a.toggle').focus();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Bind AJAX to the new Delete button
|
||||
jQuery('#media-item-' + fileObj.id + ' a.delete').bind('click',function(){
|
||||
jQuery('#media-item-' + fileObj.id + ' a.delete').click(function(){
|
||||
// Tell the server to delete it. TODO: handle exceptions
|
||||
jQuery.ajax({url:'admin-ajax.php',type:'post',success:deleteSuccess,error:deleteError,id:fileObj.id,data:{
|
||||
id : this.id.replace(/[^0-9]/g,''),
|
||||
|
@ -70,10 +85,7 @@ function prepareMediaItemInit(fileObj) {
|
|||
});
|
||||
|
||||
// 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)
|
||||
.parent().eq(0).children('.toggle').toggle();
|
||||
jQuery('#media-item-' + fileObj.id + '.startopen').removeClass('startopen').slideToggle(500).parent().children('.toggle').toggle();
|
||||
}
|
||||
|
||||
function itemAjaxError(id, html) {
|
||||
|
@ -156,8 +168,10 @@ function uploadSuccess(fileObj, serverData) {
|
|||
|
||||
function uploadComplete(fileObj) {
|
||||
// If no more uploads queued, enable the submit button
|
||||
if ( swfu.getStats().files_queued == 0 )
|
||||
if ( swfu.getStats().files_queued == 0 ) {
|
||||
jQuery('#cancel-upload').attr('disabled', 'disabled');
|
||||
jQuery('#insert-gallery').attr('disabled', '');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -230,34 +244,38 @@ function swfuploadLoadFailed() {
|
|||
jQuery('.upload-html-bypass').hide();
|
||||
}
|
||||
|
||||
function uploadError(fileObj, error_code, message) {
|
||||
// first the file specific error
|
||||
if ( error_code == SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL ) {
|
||||
wpFileError(fileObj, swfuploadL10n.missing_upload_url);
|
||||
}
|
||||
else if ( error_code == SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED ) {
|
||||
wpFileError(fileObj, swfuploadL10n.upload_limit_exceeded);
|
||||
}
|
||||
else {
|
||||
wpFileError(fileObj, swfuploadL10n.default_error);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
// now the general upload status
|
||||
if ( error_code == SWFUpload.UPLOAD_ERROR.HTTP_ERROR ) {
|
||||
wpQueueError(swfuploadL10n.http_error);
|
||||
}
|
||||
else if ( error_code == SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED ) {
|
||||
wpQueueError(swfuploadL10n.upload_failed);
|
||||
}
|
||||
else if ( error_code == SWFUpload.UPLOAD_ERROR.IO_ERROR ) {
|
||||
wpQueueError(swfuploadL10n.io_error);
|
||||
}
|
||||
else if ( error_code == SWFUpload.UPLOAD_ERROR.SECURITY_ERROR ) {
|
||||
wpQueueError(swfuploadL10n.security_error);
|
||||
}
|
||||
else if ( error_code == SWFUpload.UPLOAD_ERROR.FILE_CANCELLED ) {
|
||||
wpQueueError(swfuploadL10n.security_error);
|
||||
}
|
||||
function cancelUpload() {
|
||||
swfu.cancelQueue();
|
||||
}
|
||||
|
||||
// remember the last used image size, alignment and url
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,102 +0,0 @@
|
|||
/*
|
||||
DocumentReady Plug-in
|
||||
|
||||
This plugin loads SWFUpload as soon as the document is ready. You should not load SWFUpload inside window.onload using this plugin.
|
||||
You can also chain other functions by calling SWFUpload.DocumentReady(your function).
|
||||
|
||||
Warning: Embedded Ads or other scripts that overwrite window.onload or use their own document ready functions may interfer with this plugin. You
|
||||
should not set window.onload when using this plugin.
|
||||
|
||||
Usage Example:
|
||||
|
||||
var swfu = new SWFUpload(your settings object);
|
||||
SWFUpload.DocumentReady(function () { alert('Document Ready!'; });
|
||||
|
||||
*/
|
||||
|
||||
var SWFUpload;
|
||||
if (typeof(SWFUpload) === "function") {
|
||||
// Override iniSWFUpload so SWFUpload gets inited when the document is ready rather than immediately
|
||||
SWFUpload.prototype.initSWFUpload = function (old_initSWFUpload) {
|
||||
return function (init_settings) {
|
||||
var self = this;
|
||||
if (typeof(old_initSWFUpload) === "function") {
|
||||
SWFUpload.DocumentReady(function () {
|
||||
old_initSWFUpload.call(self, init_settings);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}(SWFUpload.prototype.initSWFUpload);
|
||||
|
||||
|
||||
// The DocumentReady function adds the passed in function to
|
||||
// the functions that will be executed when the document is ready/loaded
|
||||
SWFUpload.DocumentReady = function (fn) {
|
||||
// Add the function to the chain
|
||||
SWFUpload.DocumentReady.InternalOnloadChain = function (previous_link_fn) {
|
||||
return function () {
|
||||
if (typeof(previous_link_fn) === "function") {
|
||||
previous_link_fn();
|
||||
}
|
||||
fn();
|
||||
};
|
||||
}(SWFUpload.DocumentReady.InternalOnloadChain);
|
||||
};
|
||||
SWFUpload.DocumentReady.InternalOnloadChain = null;
|
||||
SWFUpload.DocumentReady.Onload = function () {
|
||||
// Execute the onload function chain
|
||||
if (typeof(SWFUpload.DocumentReady.InternalOnloadChain) === "function") {
|
||||
SWFUpload.DocumentReady.InternalOnloadChain();
|
||||
}
|
||||
};
|
||||
SWFUpload.DocumentReady.SetupComplete = false;
|
||||
|
||||
|
||||
/* ********************************************
|
||||
This portion of the code gets executed as soon it is loaded.
|
||||
It binds the proper event for executing JavaScript is
|
||||
early as possible. This is a per browser function and so
|
||||
some browser sniffing is used.
|
||||
|
||||
This solution still has the "exposed" issue (See the Global Delegation section at http://peter.michaux.ca/article/553 )
|
||||
|
||||
Base solution from http://dean.edwards.name/weblog/2006/06/again/ and http://dean.edwards.name/weblog/2005/09/busted/
|
||||
******************************************** */
|
||||
if (!SWFUpload.DocumentReady.SetupComplete) {
|
||||
// for Internet Explorer (using conditional comments)
|
||||
/*@cc_on @*/
|
||||
/*@if (@_win32)
|
||||
document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
|
||||
var script = document.getElementById("__ie_onload");
|
||||
script.onreadystatechange = function() {
|
||||
if (this.readyState == "complete") {
|
||||
SWFUpload.DocumentReady.Onload(); // call the onload handler
|
||||
}
|
||||
};
|
||||
SWFUpload.DocumentReady.SetupComplete = true;
|
||||
/*@end @*/
|
||||
}
|
||||
|
||||
if (!SWFUpload.DocumentReady.SetupComplete && /WebKit/i.test(navigator.userAgent)) { // sniff
|
||||
var _timer = setInterval(function() {
|
||||
if (/loaded|complete/.test(document.readyState)) {
|
||||
clearInterval(_timer);
|
||||
SWFUpload.DocumentReady.Onload(); // call the onload handler
|
||||
}
|
||||
}, 10);
|
||||
SWFUpload.DocumentReady.SetupComplete = true;
|
||||
}
|
||||
|
||||
/* for Mozilla */
|
||||
if (!SWFUpload.DocumentReady.SetupComplete && document.addEventListener) {
|
||||
document.addEventListener("DOMContentLoaded", SWFUpload.DocumentReady.Onload, false);
|
||||
SWFUpload.DocumentReady.SetupComplete = true;
|
||||
}
|
||||
|
||||
/* for other browsers */
|
||||
if (!SWFUpload.DocumentReady.SetupComplete) {
|
||||
window.onload = SWFUpload.DocumentReady.Onload;
|
||||
SWFUpload.DocumentReady.SetupComplete = true;
|
||||
}
|
||||
}
|
|
@ -1,64 +0,0 @@
|
|||
/*
|
||||
SWFUpload Graceful Degradation Plug-in
|
||||
|
||||
This plugin allows SWFUpload to display only if it is loaded successfully. Otherwise a default form is left displayed.
|
||||
|
||||
Usage:
|
||||
|
||||
To use this plugin create two HTML containers. Each should have an ID defined. One container should hold the SWFUpload UI. The other should hold the degraded UI.
|
||||
|
||||
The SWFUpload container should have its CSS "display" property set to "none".
|
||||
|
||||
If SWFUpload loads successfully the SWFUpload container will be displayed ("display" set to "block") and the
|
||||
degraded container will be hidden ("display" set to "none").
|
||||
|
||||
Use the settings "swfupload_element_id" and "degraded_element_id" to indicate your container IDs. The default values are "swfupload_container" and "degraded_container".
|
||||
|
||||
*/
|
||||
|
||||
var SWFUpload;
|
||||
if (typeof(SWFUpload) === "function") {
|
||||
SWFUpload.gracefulDegradation = {};
|
||||
SWFUpload.prototype.initSettings = function (old_initSettings) {
|
||||
return function (init_settings) {
|
||||
if (typeof(old_initSettings) === "function") {
|
||||
old_initSettings.call(this, init_settings);
|
||||
}
|
||||
|
||||
this.addSetting("swfupload_element_id", init_settings.swfupload_element_id, "swfupload_container");
|
||||
this.addSetting("degraded_element_id", init_settings.degraded_element_id, "degraded_container");
|
||||
this.addSetting("user_swfUploadLoaded_handler", init_settings.swfupload_loaded_handler, SWFUpload.swfUploadLoaded);
|
||||
|
||||
this.swfUploadLoaded_handler = SWFUpload.gracefulDegradation.swfUploadLoaded;
|
||||
};
|
||||
}(SWFUpload.prototype.initSettings);
|
||||
|
||||
SWFUpload.gracefulDegradation.swfUploadLoaded = function () {
|
||||
var swfupload_container_id, swfupload_container, degraded_container_id, degraded_container, user_swfUploadLoaded_handler;
|
||||
try {
|
||||
if (uploadDegradeOptions.is_lighttpd_before_150) throw "Lighttpd versions earlier than 1.5.0 aren't supported!";
|
||||
swfupload_element_id = this.getSetting("swfupload_element_id");
|
||||
degraded_element_id = this.getSetting("degraded_element_id");
|
||||
|
||||
// Show the UI container
|
||||
swfupload_container = document.getElementById(swfupload_element_id);
|
||||
if (swfupload_container !== null) {
|
||||
swfupload_container.style.display = "block";
|
||||
|
||||
// Now take care of hiding the degraded UI
|
||||
degraded_container = document.getElementById(degraded_element_id);
|
||||
if (degraded_container !== null) {
|
||||
degraded_container.style.display = "none";
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
this.debug(ex);
|
||||
}
|
||||
|
||||
user_swfUploadLoaded_handler = this.getSetting("user_swfUploadLoaded_handler");
|
||||
if (typeof(user_swfUploadLoaded_handler) === "function") {
|
||||
user_swfUploadLoaded_handler.apply(this);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
|
@ -21,23 +21,27 @@ if (typeof(SWFUpload) === "function") {
|
|||
oldInitSettings.call(this);
|
||||
}
|
||||
|
||||
this.customSettings.queue_cancelled_flag = false;
|
||||
this.customSettings.queue_upload_count = 0;
|
||||
this.queueSettings = {};
|
||||
|
||||
this.settings.user_upload_complete_handler = this.settings.upload_complete_handler;
|
||||
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.customSettings.queue_cancelled_flag = false;
|
||||
this.callFlash("StartUpload", false, [fileID]);
|
||||
this.queueSettings.queue_cancelled_flag = false;
|
||||
this.callFlash("StartUpload", [fileID]);
|
||||
};
|
||||
|
||||
SWFUpload.prototype.cancelQueue = function () {
|
||||
this.customSettings.queue_cancelled_flag = true;
|
||||
this.queueSettings.queue_cancelled_flag = true;
|
||||
this.stopUpload();
|
||||
|
||||
var stats = this.getStats();
|
||||
|
@ -47,31 +51,48 @@ if (typeof(SWFUpload) === "function") {
|
|||
}
|
||||
};
|
||||
|
||||
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.settings.user_upload_complete_handler;
|
||||
var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler;
|
||||
var continueUpload;
|
||||
|
||||
if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
|
||||
this.customSettings.queue_upload_count++;
|
||||
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.customSettings.queue_cancelled_flag === false) {
|
||||
if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) {
|
||||
this.startUpload();
|
||||
} else if (this.customSettings.queue_cancelled_flag === false) {
|
||||
this.queueEvent("queue_complete_handler", [this.customSettings.queue_upload_count]);
|
||||
this.customSettings.queue_upload_count = 0;
|
||||
} 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.customSettings.queue_cancelled_flag = false;
|
||||
this.customSettings.queue_upload_count = 0;
|
||||
this.queueSettings.queue_cancelled_flag = false;
|
||||
this.queueSettings.queue_upload_count = 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,342 @@
|
|||
/*
|
||||
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;
|
||||
};
|
||||
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -31,6 +31,7 @@ SWFUpload.prototype.initSWFUpload = function (settings) {
|
|||
this.movieName = "SWFUpload_" + SWFUpload.movieCount++;
|
||||
this.movieElement = null;
|
||||
|
||||
|
||||
// Setup global control tracking
|
||||
SWFUpload.instances[this.movieName] = this;
|
||||
|
||||
|
@ -49,7 +50,7 @@ SWFUpload.prototype.initSWFUpload = function (settings) {
|
|||
/* *************** */
|
||||
SWFUpload.instances = {};
|
||||
SWFUpload.movieCount = 0;
|
||||
SWFUpload.version = "2.2.0 Beta 2";
|
||||
SWFUpload.version = "2.2.0 2009-03-25";
|
||||
SWFUpload.QUEUE_ERROR = {
|
||||
QUEUE_LIMIT_EXCEEDED : -100,
|
||||
FILE_EXCEEDS_SIZE_LIMIT : -110,
|
||||
|
@ -90,6 +91,27 @@ SWFUpload.WINDOW_MODE = {
|
|||
OPAQUE : "opaque"
|
||||
};
|
||||
|
||||
// Private: takes a URL, determines if it is relative and converts to an absolute URL
|
||||
// using the current site. Only processes the URL if it can, otherwise returns the URL untouched
|
||||
SWFUpload.completeURL = function(url) {
|
||||
if (typeof(url) !== "string" || url.match(/^https?:\/\//i) || url.match(/^\//)) {
|
||||
return url;
|
||||
}
|
||||
|
||||
var currentURL = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ":" + window.location.port : "");
|
||||
|
||||
var indexSlash = window.location.pathname.lastIndexOf("/");
|
||||
if (indexSlash <= 0) {
|
||||
path = "/";
|
||||
} else {
|
||||
path = window.location.pathname.substr(0, indexSlash) + "/";
|
||||
}
|
||||
|
||||
return /*currentURL +*/ path + url;
|
||||
|
||||
};
|
||||
|
||||
|
||||
/* ******************** */
|
||||
/* Instance Members */
|
||||
/* ******************** */
|
||||
|
@ -103,11 +125,13 @@ SWFUpload.prototype.initSettings = function () {
|
|||
|
||||
// Upload backend settings
|
||||
this.ensureDefault("upload_url", "");
|
||||
this.ensureDefault("preserve_relative_urls", false);
|
||||
this.ensureDefault("file_post_name", "Filedata");
|
||||
this.ensureDefault("post_params", {});
|
||||
this.ensureDefault("use_query_string", false);
|
||||
this.ensureDefault("requeue_on_error", false);
|
||||
this.ensureDefault("http_success", []);
|
||||
this.ensureDefault("assume_success_timeout", 0);
|
||||
|
||||
// File Settings
|
||||
this.ensureDefault("file_types", "*.*");
|
||||
|
@ -130,7 +154,8 @@ SWFUpload.prototype.initSettings = function () {
|
|||
this.ensureDefault("button_text_left_padding", 0);
|
||||
this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES);
|
||||
this.ensureDefault("button_disabled", false);
|
||||
this.ensureDefault("button_placeholder_id", null);
|
||||
this.ensureDefault("button_placeholder_id", "");
|
||||
this.ensureDefault("button_placeholder", null);
|
||||
this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW);
|
||||
this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW);
|
||||
|
||||
|
@ -160,50 +185,21 @@ SWFUpload.prototype.initSettings = function () {
|
|||
this.customSettings = this.settings.custom_settings;
|
||||
|
||||
// Update the flash url if needed
|
||||
if (this.settings.prevent_swf_caching) {
|
||||
this.settings.flash_url = this.settings.flash_url + "?swfuploadrnd=" + Math.floor(Math.random() * 999999999);
|
||||
if (!!this.settings.prevent_swf_caching) {
|
||||
this.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf("?") < 0 ? "?" : "&") + "preventswfcaching=" + new Date().getTime();
|
||||
}
|
||||
|
||||
if (!this.settings.preserve_relative_urls) {
|
||||
//this.settings.flash_url = SWFUpload.completeURL(this.settings.flash_url); // Don't need to do this one since flash doesn't look at it
|
||||
this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);
|
||||
this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url);
|
||||
}
|
||||
|
||||
delete this.ensureDefault;
|
||||
};
|
||||
|
||||
// Private: loadFlash replaces the button_placeholder element with the flash movie.
|
||||
SWFUpload.prototype.loadFlash = function () {
|
||||
if (this.settings.button_placeholder_id !== "") {
|
||||
this.replaceWithFlash();
|
||||
} else {
|
||||
this.appendFlash();
|
||||
}
|
||||
};
|
||||
|
||||
// Private: appendFlash gets the HTML tag for the Flash
|
||||
// It then appends the flash to the body
|
||||
SWFUpload.prototype.appendFlash = function () {
|
||||
var targetElement, container;
|
||||
|
||||
// Make sure an element with the ID we are going to use doesn't already exist
|
||||
if (document.getElementById(this.movieName) !== null) {
|
||||
throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
|
||||
}
|
||||
|
||||
// Get the body tag where we will be adding the flash movie
|
||||
targetElement = document.getElementsByTagName("body")[0];
|
||||
|
||||
if (targetElement == undefined) {
|
||||
throw "Could not find the 'body' element.";
|
||||
}
|
||||
|
||||
// Append the container and load the flash
|
||||
container = document.createElement("div");
|
||||
container.style.width = "1px";
|
||||
container.style.height = "1px";
|
||||
container.style.overflow = "hidden";
|
||||
|
||||
targetElement.appendChild(container);
|
||||
container.innerHTML = this.getFlashHTML(); // Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
|
||||
};
|
||||
|
||||
// Private: replaceWithFlash replaces the button_placeholder element with the flash movie.
|
||||
SWFUpload.prototype.replaceWithFlash = function () {
|
||||
var targetElement, tempParent;
|
||||
|
||||
// Make sure an element with the ID we are going to use doesn't already exist
|
||||
|
@ -212,10 +208,10 @@ SWFUpload.prototype.replaceWithFlash = function () {
|
|||
}
|
||||
|
||||
// Get the element where we will be placing the flash movie
|
||||
targetElement = document.getElementById(this.settings.button_placeholder_id);
|
||||
targetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder;
|
||||
|
||||
if (targetElement == undefined) {
|
||||
throw "Could not find the placeholder element.";
|
||||
throw "Could not find the placeholder element: " + this.settings.button_placeholder_id;
|
||||
}
|
||||
|
||||
// Append the container and load the flash
|
||||
|
@ -223,13 +219,18 @@ SWFUpload.prototype.replaceWithFlash = function () {
|
|||
tempParent.innerHTML = this.getFlashHTML(); // Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
|
||||
targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement);
|
||||
|
||||
// Fix IE Flash/Form bug
|
||||
if (window[this.movieName] == undefined) {
|
||||
window[this.movieName] = this.getMovieElement();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// Private: getFlashHTML generates the object tag needed to embed the flash in to the document
|
||||
SWFUpload.prototype.getFlashHTML = function () {
|
||||
// Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay
|
||||
return ['<object id="', this.movieName, '" type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">',
|
||||
'<param name="wmode" value="', this.settings.button_window_mode , '" />',
|
||||
'<param name="wmode" value="', this.settings.button_window_mode, '" />',
|
||||
'<param name="movie" value="', this.settings.flash_url, '" />',
|
||||
'<param name="quality" value="high" />',
|
||||
'<param name="menu" value="false" />',
|
||||
|
@ -251,6 +252,7 @@ SWFUpload.prototype.getFlashVars = function () {
|
|||
"&useQueryString=", encodeURIComponent(this.settings.use_query_string),
|
||||
"&requeueOnError=", encodeURIComponent(this.settings.requeue_on_error),
|
||||
"&httpSuccess=", encodeURIComponent(httpSuccessString),
|
||||
"&assumeSuccessTimeout=", encodeURIComponent(this.settings.assume_success_timeout),
|
||||
"&params=", encodeURIComponent(paramString),
|
||||
"&filePostName=", encodeURIComponent(this.settings.file_post_name),
|
||||
"&fileTypes=", encodeURIComponent(this.settings.file_types),
|
||||
|
@ -306,46 +308,54 @@ SWFUpload.prototype.buildParamString = function () {
|
|||
// Public: Used to remove a SWFUpload instance from the page. This method strives to remove
|
||||
// all references to the SWF, and other objects so memory is properly freed.
|
||||
// Returns true if everything was destroyed. Returns a false if a failure occurs leaving SWFUpload in an inconsistant state.
|
||||
// Credits: Major improvements provided by steffen
|
||||
SWFUpload.prototype.destroy = function () {
|
||||
try {
|
||||
// Make sure Flash is done before we try to remove it
|
||||
this.stopUpload();
|
||||
this.cancelUpload(null, false);
|
||||
|
||||
|
||||
// Remove the SWFUpload DOM nodes
|
||||
var movieElement = null;
|
||||
try {
|
||||
movieElement = this.getMovieElement();
|
||||
} catch (ex) {
|
||||
}
|
||||
movieElement = this.getMovieElement();
|
||||
|
||||
if (movieElement != undefined && movieElement.parentNode != undefined && typeof movieElement.parentNode.removeChild === "function") {
|
||||
var container = movieElement.parentNode;
|
||||
if (container != undefined) {
|
||||
container.removeChild(movieElement);
|
||||
if (container.parentNode != undefined && typeof container.parentNode.removeChild === "function") {
|
||||
container.parentNode.removeChild(container);
|
||||
}
|
||||
if (movieElement && typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
|
||||
// Loop through all the movie's properties and remove all function references (DOM/JS IE 6/7 memory leak workaround)
|
||||
for (var i in movieElement) {
|
||||
try {
|
||||
if (typeof(movieElement[i]) === "function") {
|
||||
movieElement[i] = null;
|
||||
}
|
||||
} catch (ex1) {}
|
||||
}
|
||||
|
||||
// Remove the Movie Element from the page
|
||||
try {
|
||||
movieElement.parentNode.removeChild(movieElement);
|
||||
} catch (ex) {}
|
||||
}
|
||||
|
||||
// Destroy references
|
||||
// Remove IE form fix reference
|
||||
window[this.movieName] = null;
|
||||
|
||||
// Destroy other references
|
||||
SWFUpload.instances[this.movieName] = null;
|
||||
delete SWFUpload.instances[this.movieName];
|
||||
|
||||
delete this.movieElement;
|
||||
delete this.settings;
|
||||
delete this.customSettings;
|
||||
delete this.eventQueue;
|
||||
delete this.movieName;
|
||||
this.movieElement = null;
|
||||
this.settings = null;
|
||||
this.customSettings = null;
|
||||
this.eventQueue = null;
|
||||
this.movieName = null;
|
||||
|
||||
delete window[this.movieName];
|
||||
|
||||
return true;
|
||||
} catch (ex1) {
|
||||
} catch (ex2) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Public: displayDebugInfo prints out settings and configuration
|
||||
// information about this SWFUpload instance.
|
||||
// This function (and any references to it) can be deleted when placing
|
||||
|
@ -362,6 +372,7 @@ SWFUpload.prototype.displayDebugInfo = function () {
|
|||
"\t", "use_query_string: ", this.settings.use_query_string.toString(), "\n",
|
||||
"\t", "requeue_on_error: ", this.settings.requeue_on_error.toString(), "\n",
|
||||
"\t", "http_success: ", this.settings.http_success.join(", "), "\n",
|
||||
"\t", "assume_success_timeout: ", this.settings.assume_success_timeout, "\n",
|
||||
"\t", "file_post_name: ", this.settings.file_post_name, "\n",
|
||||
"\t", "post_params: ", this.settings.post_params.toString(), "\n",
|
||||
"\t", "file_types: ", this.settings.file_types, "\n",
|
||||
|
@ -374,6 +385,7 @@ SWFUpload.prototype.displayDebugInfo = function () {
|
|||
"\t", "prevent_swf_caching: ", this.settings.prevent_swf_caching.toString(), "\n",
|
||||
|
||||
"\t", "button_placeholder_id: ", this.settings.button_placeholder_id.toString(), "\n",
|
||||
"\t", "button_placeholder: ", (this.settings.button_placeholder ? "Set" : "Not Set"), "\n",
|
||||
"\t", "button_image_url: ", this.settings.button_image_url.toString(), "\n",
|
||||
"\t", "button_width: ", this.settings.button_width.toString(), "\n",
|
||||
"\t", "button_height: ", this.settings.button_height.toString(), "\n",
|
||||
|
@ -430,33 +442,23 @@ SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
|
|||
argumentArray = argumentArray || [];
|
||||
|
||||
var movieElement = this.getMovieElement();
|
||||
var returnValue;
|
||||
var returnValue, returnString;
|
||||
|
||||
if (typeof movieElement[functionName] === "function") {
|
||||
// We have to go through all this if/else stuff because the Flash functions don't have apply() and only accept the exact number of arguments.
|
||||
if (argumentArray.length === 0) {
|
||||
returnValue = movieElement[functionName]();
|
||||
} else if (argumentArray.length === 1) {
|
||||
returnValue = movieElement[functionName](argumentArray[0]);
|
||||
} else if (argumentArray.length === 2) {
|
||||
returnValue = movieElement[functionName](argumentArray[0], argumentArray[1]);
|
||||
} else if (argumentArray.length === 3) {
|
||||
returnValue = movieElement[functionName](argumentArray[0], argumentArray[1], argumentArray[2]);
|
||||
} else {
|
||||
throw "Too many arguments";
|
||||
}
|
||||
|
||||
// Unescape file post param values
|
||||
if (returnValue != undefined && typeof returnValue.post === "object") {
|
||||
returnValue = this.unescapeFilePostParams(returnValue);
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
} else {
|
||||
throw "Invalid function name: " + functionName;
|
||||
// Flash's method if calling ExternalInterface methods (code adapted from MooTools).
|
||||
try {
|
||||
returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>');
|
||||
returnValue = eval(returnString);
|
||||
} catch (ex) {
|
||||
throw "Call to " + functionName + " failed";
|
||||
}
|
||||
|
||||
// Unescape file post param values
|
||||
if (returnValue != undefined && typeof returnValue.post === "object") {
|
||||
returnValue = this.unescapeFilePostParams(returnValue);
|
||||
}
|
||||
};
|
||||
|
||||
return returnValue;
|
||||
};
|
||||
|
||||
/* *****************************
|
||||
-- Flash control methods --
|
||||
|
@ -464,17 +466,19 @@ SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
|
|||
to operate SWFUpload
|
||||
***************************** */
|
||||
|
||||
// WARNING: this function does not work in Flash Player 10
|
||||
// Public: selectFile causes a File Selection Dialog window to appear. This
|
||||
// dialog only allows 1 file to be selected. WARNING: this function does not work in Flash Player 10
|
||||
// dialog only allows 1 file to be selected.
|
||||
SWFUpload.prototype.selectFile = function () {
|
||||
this.callFlash("SelectFile");
|
||||
};
|
||||
|
||||
// WARNING: this function does not work in Flash Player 10
|
||||
// Public: selectFiles causes a File Selection Dialog window to appear/ This
|
||||
// dialog allows the user to select any number of files
|
||||
// Flash Bug Warning: Flash limits the number of selectable files based on the combined length of the file names.
|
||||
// If the selection name length is too long the dialog will fail in an unpredictable manner. There is no work-around
|
||||
// for this bug. WARNING: this function does not work in Flash Player 10
|
||||
// for this bug.
|
||||
SWFUpload.prototype.selectFiles = function () {
|
||||
this.callFlash("SelectFiles");
|
||||
};
|
||||
|
@ -623,6 +627,11 @@ SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) {
|
|||
this.callFlash("SetHTTPSuccess", [http_status_codes]);
|
||||
};
|
||||
|
||||
// Public: setHTTPSuccess changes the http_success setting
|
||||
SWFUpload.prototype.setAssumeSuccessTimeout = function (timeout_seconds) {
|
||||
this.settings.assume_success_timeout = timeout_seconds;
|
||||
this.callFlash("SetAssumeSuccessTimeout", [timeout_seconds]);
|
||||
};
|
||||
|
||||
// Public: setDebugEnabled changes the debug_enabled setting
|
||||
SWFUpload.prototype.setDebugEnabled = function (debugEnabled) {
|
||||
|
@ -763,21 +772,65 @@ SWFUpload.prototype.unescapeFilePostParams = function (file) {
|
|||
return file;
|
||||
};
|
||||
|
||||
// Private: Called by Flash to see if JS can call in to Flash (test if External Interface is working)
|
||||
SWFUpload.prototype.testExternalInterface = function () {
|
||||
try {
|
||||
return this.callFlash("TestExternalInterface");
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
// Private: This event is called by Flash when it has finished loading. Don't modify this.
|
||||
// Use the swfupload_loaded_handler event setting to execute custom code when SWFUpload has loaded.
|
||||
SWFUpload.prototype.flashReady = function () {
|
||||
// Check that the movie element is loaded correctly with its ExternalInterface methods defined
|
||||
var movieElement = this.getMovieElement();
|
||||
if (typeof movieElement.StartUpload !== "function") {
|
||||
throw "ExternalInterface methods failed to initialize.";
|
||||
|
||||
if (!movieElement) {
|
||||
this.debug("Flash called back ready but the flash movie can't be found.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Fix IE Flash/Form bug
|
||||
if (window[this.movieName] == undefined) {
|
||||
window[this.movieName] = movieElement;
|
||||
}
|
||||
this.cleanUp(movieElement);
|
||||
|
||||
this.queueEvent("swfupload_loaded_handler");
|
||||
};
|
||||
|
||||
// Private: removes Flash added fuctions to the DOM node to prevent memory leaks in IE.
|
||||
// This function is called by Flash each time the ExternalInterface functions are created.
|
||||
SWFUpload.prototype.cleanUp = function (movieElement) {
|
||||
// Pro-actively unhook all the Flash functions
|
||||
try {
|
||||
if (this.movieElement && typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
|
||||
this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");
|
||||
for (var key in movieElement) {
|
||||
try {
|
||||
if (typeof(movieElement[key]) === "function") {
|
||||
movieElement[key] = null;
|
||||
}
|
||||
} catch (ex) {
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (ex1) {
|
||||
|
||||
}
|
||||
|
||||
// Fix Flashes own cleanup code so if the SWFMovie was removed from the page
|
||||
// it doesn't display errors.
|
||||
window["__flash__removeCallback"] = function (instance, name) {
|
||||
try {
|
||||
if (instance) {
|
||||
instance[name] = null;
|
||||
}
|
||||
} catch (flashEx) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
/* This is a chance to do something before the browse window opens */
|
||||
SWFUpload.prototype.fileDialogStart = function () {
|
||||
|
@ -800,8 +853,8 @@ SWFUpload.prototype.fileQueueError = function (file, errorCode, message) {
|
|||
|
||||
/* Called after the file dialog has closed and the selected files have been queued.
|
||||
You could call startUpload here if you want the queued files to begin uploading immediately. */
|
||||
SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued) {
|
||||
this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued]);
|
||||
SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued, numFilesInQueue) {
|
||||
this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued, numFilesInQueue]);
|
||||
};
|
||||
|
||||
SWFUpload.prototype.uploadStart = function (file) {
|
||||
|
@ -841,9 +894,9 @@ SWFUpload.prototype.uploadError = function (file, errorCode, message) {
|
|||
this.queueEvent("upload_error_handler", [file, errorCode, message]);
|
||||
};
|
||||
|
||||
SWFUpload.prototype.uploadSuccess = function (file, serverData) {
|
||||
SWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) {
|
||||
file = this.unescapeFilePostParams(file);
|
||||
this.queueEvent("upload_success_handler", [file, serverData]);
|
||||
this.queueEvent("upload_success_handler", [file, serverData, responseReceived]);
|
||||
};
|
||||
|
||||
SWFUpload.prototype.uploadComplete = function (file) {
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -169,17 +169,21 @@ function wp_default_scripts( &$scripts ) {
|
|||
|
||||
$scripts->add( 'jcrop', "/wp-includes/js/jcrop/jquery.Jcrop$suffix.js", array('jquery'), '0.9.8');
|
||||
|
||||
$scripts->add( 'swfobject', "/wp-includes/js/swfobject.js", false, '2.1');
|
||||
|
||||
$scripts->add( 'swfupload', '/wp-includes/js/swfupload/swfupload.js', false, '2201');
|
||||
$scripts->add( 'swfupload-swfobject', '/wp-includes/js/swfupload/plugins/swfupload.swfobject.js', array('swfupload', 'swfobject'), '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');
|
||||
|
||||
if ( defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ) {
|
||||
$scripts->add( 'swfupload', '/wp-includes/js/swfupload/swfupload.js', false, '2.2.0-20081031');
|
||||
$scripts->add( 'swfupload-swfobject', '/wp-includes/js/swfupload/plugins/swfupload.swfobject.js', array('swfupload'), '2.2.0-20081031');
|
||||
$scripts->add( 'swfupload-queue', '/wp-includes/js/swfupload/plugins/swfupload.queue.js', array('swfupload'), '2.2.0-20081031');
|
||||
// queue all SWFUpload scripts that are used by default
|
||||
$scripts->add( 'swfupload-all', false, array('swfupload', 'swfupload-swfobject', 'swfupload-queue'), '2201');
|
||||
} else {
|
||||
$scripts->add( 'swfupload', '/wp-includes/js/swfupload/swfupload-all.js', false, '2.2.0-20090109');
|
||||
$scripts->add( 'swfupload-swfobject', false, array('swfupload') );
|
||||
$scripts->add( 'swfupload-queue', false, array('swfupload') );
|
||||
$scripts->add( 'swfupload-all', '/wp-includes/js/swfupload/swfupload-all.js', array(), '2201');
|
||||
}
|
||||
|
||||
$scripts->add( 'swfupload-handlers', "/wp-includes/js/swfupload/handlers$suffix.js", array('swfupload'), '2.2.0-20090403');
|
||||
$scripts->add( 'swfupload-handlers', "/wp-includes/js/swfupload/handlers$suffix.js", array('swfupload-all', 'jquery'), '2201-20090515');
|
||||
// these error messages came from the sample swfupload js, they might need changing.
|
||||
$scripts->localize( 'swfupload-handlers', 'swfuploadL10n', array(
|
||||
'queue_limit_exceeded' => __('You have attempted to queue too many files.'),
|
||||
|
@ -201,11 +205,6 @@ function wp_default_scripts( &$scripts ) {
|
|||
'l10n_print_after' => 'try{convertEntities(swfuploadL10n);}catch(e){};'
|
||||
) );
|
||||
|
||||
$scripts->add( 'swfupload-degrade', '/wp-includes/js/swfupload/plugins/swfupload.graceful_degradation.js', array('swfupload'), '2.2.0-20081031');
|
||||
$scripts->localize( 'swfupload-degrade', 'uploadDegradeOptions', array(
|
||||
'is_lighttpd_before_150' => is_lighttpd_before_150(),
|
||||
) );
|
||||
|
||||
$scripts->add( 'comment-reply', "/wp-includes/js/comment-reply$suffix.js", false, '20090102');
|
||||
|
||||
if ( is_admin() ) {
|
||||
|
@ -328,7 +327,7 @@ function wp_default_scripts( &$scripts ) {
|
|||
'l10n_print_after' => 'try{convertEntities(commentL10n);}catch(e){};'
|
||||
) );
|
||||
|
||||
$scripts->add( 'admin-gallery', "/wp-admin/js/gallery$suffix.js", array( 'jquery-ui-sortable' ), '20090325' );
|
||||
$scripts->add( 'admin-gallery', "/wp-admin/js/gallery$suffix.js", array( 'jquery-ui-sortable' ), '20090516' );
|
||||
|
||||
$scripts->add( 'media-upload', "/wp-admin/js/media-upload$suffix.js", array( 'thickbox' ), '20090114' );
|
||||
$scripts->add_data( 'media-upload', 'group', 1 );
|
||||
|
@ -435,7 +434,7 @@ function wp_default_styles( &$styles ) {
|
|||
$styles->add_data( 'colors-classic', 'rtl', true );
|
||||
|
||||
$styles->add( 'global', '/wp-admin/css/global.css', array(), '20090514' );
|
||||
$styles->add( 'media', '/wp-admin/css/media.css', array(), '20090514' );
|
||||
$styles->add( 'media', '/wp-admin/css/media.css', array(), '20090516' );
|
||||
$styles->add( 'widgets', '/wp-admin/css/widgets.css', array(), '20090514' );
|
||||
$styles->add( 'dashboard', '/wp-admin/css/dashboard.css', array(), '20090514' );
|
||||
$styles->add( 'install', '/wp-admin/css/install.css', array(), '20090514' );
|
||||
|
|
Loading…
Reference in New Issue