(function(window, $, undefined) { var _parent = window.dialogArguments || opener || parent || top; $.fn.wplupload = function($options) { var $up, $defaults = { runtimes : 'gears,browserplus,html5,flash,silverlight,html4', browse_button_hover: 'hover', browse_button_active: 'active' }; $options = $.extend({}, $defaults, $options); return this.each(function() { var $this = $(this); $up = new plupload.Uploader($options); $up.bind('FilesAdded', function(up, files) { $.each(files, function(i, file) { // Create a progress bar containing the filename $('#progress').css({'visibility':'visible', 'display':'block'}); $('#select-files').hide(); // Hide drag-drop overlay and remove fullscreen extension when upload starts $('#wpallimport-fullscreen-drag-overlay').hide(); $('#wpallimport-drag-drop-area').removeClass('fullscreen-active'); }) }); $up.init(); $up.bind('Error', function(up, err) { // Check if this is an Excel file and we haven't tried alternative processing yet var file = err.file; var isExcelFile = file && file.name && /\.(xls|xlsx)$/i.test(file.name); var hasTriedAlternative = file && (file.wpai_tried_alternative || false); if (isExcelFile && !hasTriedAlternative) { // Mark that we've tried alternative processing for this file file.wpai_tried_alternative = true; // Show retry message $('#progressbar').html('Retrying with alternative Excel processing method...'); $('#progress').show(); // Set flag for alternative Excel processing $up.settings.multipart_params.use_alternative_excel = '1'; // Reset file status and retry setTimeout(function() { file.status = plupload.QUEUED; file.percent = 0; file.loaded = 0; $up.start(); }, 1000); return; // Don't show error yet } //$('#upload_process').html(err.message); //$('.wpallimport-header').next('.clear').after(err.message); $('.error-upload-rejected').show(); // Reset drag-drop state on error $('#wpallimport-fullscreen-drag-overlay').hide(); $('#wpallimport-drag-drop-area').removeClass('fullscreen-active'); if (typeof window.isDragDropUpload !== 'undefined') { window.isDragDropUpload = false; } if (typeof window.dragCounter !== 'undefined') { window.dragCounter = 0; } }); $up.bind('FilesAdded', function(up, files) { // Disable submit and enable cancel $('.error.inline').remove(); $('.first-step-errors').hide(); $('.wpallimport-choose-file').find('.wpallimport-upload-resource-step-two').slideUp(); $('#cancel-upload').removeAttr('disabled'); //$('.auto-generate-template').removeAttr('rel').hide(); $('.wpallimport-upload-type-container[rel=upload_type]').find('.wpallimport-note').hide(); $up.start(); }); $up.bind('UploadFile', function(up, file, r) { }); $up.bind('UploadProgress', function(up, file) { // Lengthen the progress bar $('#progressbar').html('Uploading ' + file.name + ' ' + file.percent + '%'); $('#upload_process').progressbar({value:file.percent}); }); $up.bind('FileUploaded', function(up, file, r) { var fetch = typeof(shortform) == 'undefined' ? 1 : 2; var response = r.response; r = _parseJSON(r.response); if (r.OK === 0) { // Check if this is an Excel file and we haven't tried alternative processing yet var isExcelFile = file.name && /\.(xls|xlsx)$/i.test(file.name); var hasTriedAlternative = file.wpai_tried_alternative || false; if (isExcelFile && !hasTriedAlternative) { // Mark that we've tried alternative processing for this file file.wpai_tried_alternative = true; // Show retry message $('#progressbar').html('Retrying with alternative Excel processing method...'); $('#progress').show(); // Set flag for alternative Excel processing $up.settings.multipart_params.use_alternative_excel = '1'; // Reset file status and retry setTimeout(function() { file.status = plupload.QUEUED; file.percent = 0; file.loaded = 0; $up.start(); }, 1000); return; // Don't show error yet } $('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide(); $('.wpallimport-import-from.selected').click(); $('#wpallimport-url-upload-status').html(''); $('#progress').hide(); $('#progressbar').html(''); $('#select-files').fadeIn(); //$('.wpallimport-header').next('.clear').after('

' + response + '

'); $('.error-upload-rejected').show(); } else { if (r.error !== null){ // Check if this is an Excel file and we haven't tried alternative processing yet var isExcelFile = file.name && /\.(xls|xlsx)$/i.test(file.name); var hasTriedAlternative = file.wpai_tried_alternative || false; if (isExcelFile && !hasTriedAlternative) { // Mark that we've tried alternative processing for this file file.wpai_tried_alternative = true; // Show retry message $('#progressbar').html('Retrying with alternative Excel processing method...'); $('#progress').show(); // Set flag for alternative Excel processing $up.settings.multipart_params.use_alternative_excel = '1'; // Reset file status and retry setTimeout(function() { file.status = plupload.QUEUED; file.percent = 0; file.loaded = 0; $up.start(); }, 1000); return; // Don't show error yet } $('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide(); $('.wpallimport-import-from.selected').click(); $('#wpallimport-url-upload-status').html(''); $('#progress').hide(); $('#progressbar').html(''); $('#select-files').fadeIn(); if (typeof(r.is_valid) != 'undefined') { $('.error-file-validation').find('h4').html(r.error.message); $('.error-file-validation').show(); } else { $('.wpallimport-header').next('.clear').after('

' + r.error.message + '

'); } } else{ // Check if this was a successful retry with alternative Excel processing var isExcelFile = file.name && /\.(xls|xlsx)$/i.test(file.name); var hasTriedAlternative = file.wpai_tried_alternative || false; var usedAlternative = $up.settings.multipart_params.use_alternative_excel === '1'; if (isExcelFile && hasTriedAlternative && usedAlternative) { // Reset the flag for future uploads $up.settings.multipart_params.use_alternative_excel = '0'; // Check the alternative Excel processing checkbox on the page $('#use_alternative_excel_processing').prop('checked', true); } if (r.post_type) { // Find the option with the matching value var $option = $('#custom_type_selector option[value="'+ r.post_type +'"]'); if ($option.length) { $('#custom_type_selector').val(r.post_type).trigger('change'); if (r.taxonomy_type){ var $taxOption = $('#taxonomy_to_import option[value="'+ r.taxonomy_type +'"]'); if ($taxOption.length){ $('#taxonomy_to_import').val(r.taxonomy_type).trigger('change'); } } if (r.gravity_form_title){ var $gfOption = $('#gravity_form_to_import option[value="'+ r.gravity_form_title +'"]'); if ($gfOption.length){ $('#gravity_form_to_import').val(r.gravity_form_title).trigger('change'); } } if (typeof r.url_bundle != "undefined") { $('input[name=url]').val(r.name); $('input[name=template]').val(r.template); $('input[name=bundle_xpath]').val(r.bundle_xpath); $('.auto-generate-template').css({'display':'inline-block'}).attr('rel', 'url_type'); $('.wpallimport-url-type').click(); $('.wpallimport-download-from-url').click(); } else { $('.auto-generate-template').css({'display':'inline-block'}).attr('rel', 'upload_type'); } } else { $('.auto-generate-template').hide(); } } else { $('.auto-generate-template').hide(); } $('#filepath').val(r.name); $('#progressbar').html('Upload Complete - ' + file.name + ' (' + ( (file.size / (1024*1024) >= 1) ? (file.size / (1024*1024)).toFixed(2) + 'mb' : (file.size / (1024)).toFixed(2) + 'kb') + ')'); $('.wpallimport-import-types').find('h2').slideUp(); setTimeout(function() { if (r.post_type && r.notice !== false) { var $note = $('.wpallimport-upload-type-container[rel=upload_type]').find('.wpallimport-note'); $note.find('span').html("
" + r.notice + "
"); $note.show(); $('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide(); $('.wpallimport-choose-file').find('.wpallimport-upload-resource-step-two').slideUp(); $('input[name=filepath]').val(''); } else { $('.wpallimport-choose-file').find('.wpallimport-upload-resource-step-two').slideDown(); $('.wpallimport-choose-file').find('.wpallimport-submit-buttons').show(); } if (r.OK) { } else if (r.error != undefined && '' != r.error.message) { //$('#progressbar').html(r.error.message); $('.error-upload-rejected').show(); } }, 1000); } } }); $up.bind('UploadComplete', function(up) { $('#cancel-upload').attr('disabled', 'disabled'); $('#advanced_upload').show(); // Reset drag-drop state if (typeof window.isDragDropUpload !== 'undefined') { window.isDragDropUpload = false; } }); $('#cancel-upload').on('click', function() { var i, file; $up.stop(); i = $up.files.length; for (i = $up.files.length - 1; i >= 0; i--) { file = $up.files[i]; if ($.inArray(file.status, [plupload.QUEUED, plupload.UPLOADING]) !== -1) { $up.removeFile($up.getFile(file.id)); } } $('#cancel-upload').attr('disabled', 'disabled'); }); }); }; function _parseJSON(r) { var obj; try { var matches = r.match(/{.*}/); obj = $.parseJSON(matches[0]); } catch (e) { obj = { OK : 0 }; } return obj; } }(window, jQuery));