2013-02-19 1 views
1

Я пытаюсь создать плагин галереи для Wordpress, и я использую Plupload для загрузки некоторых изображений.Как я могу отменить загрузку файлов в Plupload?

Прежде чем пользователь сможет загружать изображения для новой галереи, необходимо добавить имя галереи. Поскольку я использую drag and drop, мне нужно прервать загрузку файла, если имя галереи пусто.

Я пробовал различное решение, но я не могу остановить загрузку файла (я думаю).

В нижней части моего сценария SJ я делаю чек на dragover. Где я хочу прервать, отмечен //HERE FILE UPLOAD MUST ABORT.

Но я не уверен, что это подходящее место. Может ли кто-нибудь сказать мне, где я могу прервать загрузку на dragover (и падение)?

// PHP code - I'm adding this data here, because I need some WP data 
function plupload_init() { 

    //$image_size = get_option('sim_gallery_max_width_height'); 

    $plupload_arr = array(
     'runtimes' => 'html5,silverlight,flash,html4,browserplus,gears', 
     'browse_button' => 'plupload-browse-button', // will be adjusted per uploader 
     'container' => 'plupload-upload-ui', // will be adjusted per uploader 
     'drop_element' => 'drag-drop-area', // will be adjusted per uploader 
     'file_data_name' => 'async-upload', // will be adjusted per uploader 
     'multiple_queues' => true, 
     'max_file_size' => wp_max_upload_size() . 'b', 
     'url' => admin_url('admin-ajax.php'), 
     'flash_swf_url' => includes_url('js/plupload/plupload.flash.swf'), 
     'silverlight_xap_url' => includes_url('js/plupload/plupload.silverlight.xap'), 
     'filters' => array(array('title' => __('Image files'), 'extensions' => 'jpg,jpeg,gif,png')), 
     'multipart' => true, 
     'urlstream_upload' => true, 
     'multi_selection' => false, // will be added per uploader 
     // additional post data to send to our ajax hook 
     'multipart_params' => array(
      '_ajax_nonce' => "", // will be added per uploader 
      'action' => 'plupload_action', // the ajax action name 
      'imgid' => 0 // will be added per uploader 
     ) 
    ); 
?> 
    <script type="text/javascript"> 
     var plupload_config_vars = <?php echo json_encode($plupload_arr); ?>; 
    </script> 
<?php 
} 


// JS scrip 
function init_image_upload() { 

    if(jQuery('#image-upload').length == 0) 
     return; 

    var plupload_config = JSON.parse(JSON.stringify(plupload_config_vars)); 
    var uploader = new plupload.Uploader(plupload_config); 

    // Control gallery name 
    control_gallery_name(); 


    uploader.bind('Init', function(up){}); 

    uploader.init(); 

    // a file was added in the queue 
    uploader.bind('FilesAdded', function(up, files){ 
    }); 

    // Change border color on drop zone 
    function drop_area_visual_feedback(up) { 
     var uploaddiv = jQuery('#plupload-upload-ui'); 

     if (up.features.dragdrop) { 
      uploaddiv.addClass('drag-drop'); 

      jQuery('#drag-drop-area').bind('dragover.wp-uploader', function(){ // dragenter doesn't fire right :(
       if(!jQuery('input[name="gallery-name"]').val()) { 
        jQuery('label.missing-name').removeClass('hidden'); 

        //HERE FILE UPLOAD MUST ABORT 

       } else { 
        uploaddiv.addClass('drag-over'); 
       } 

      }).bind('dragleave.wp-uploader, drop.wp-uploader', function(){ 
        uploaddiv.removeClass('drag-over'); 
      }); 
     } else { 
      uploaddiv.removeClass('drag-drop'); 
      jQuery('#drag-drop-area').unbind('.wp-uploader'); 
     } 
    } 
} 

ответ

1

Вы пробовали поместить свой код в обработчик FilesAdded, как это?

// a file was added in the queue 
uploader.bind('FilesAdded', function(up, files){ 
     if(!jQuery('input[name="gallery-name"]').val()) { 
       jQuery('label.missing-name').removeClass('hidden'); 
       up.splice(0); 
     } 
}); 
+0

Спасибо. Это сделало трюк :) – Steven