Dotclear


Ignore:
Timestamp:
09/04/13 21:55:21 (12 years ago)
Author:
Nicolas <nikrou77@…>
Branch:
default
Message:

[Tests] Add tests for media uploader
Refactoring of _media.js : put all code in a jquery plugin to make
it easy to test and to avoid polluting global namespace.
Use same jquery for tests and for admin

Need to add more tests for media uploader
Fix indentation for all js

File:
1 edited

Legend:

Unmodified
Added
Removed
  • admin/js/_media.js

    r1723 r1724  
     1(function($) { 
     2     $.fn.enhancedUploader = function() { 
     3          return this.each(function() { 
     4               var me = $(this); 
     5 
     6               function enableButton(button) { 
     7                    button.prop('disabled',false).removeClass('disabled'); 
     8               } 
     9 
     10               function disableButton(button) { 
     11                    button.prop('disabled',true).addClass('disabled'); 
     12               } 
     13                
     14               function displayMessageInQueue(n) { 
     15                    var msg = ''; 
     16                    if (n==1) { 
     17                         msg = dotclear.jsUpload.msg.file_in_queue; 
     18                    } else if (n>1) { 
     19                         msg = dotclear.jsUpload.msg.files_in_queue; 
     20                         msg = msg.replace(/%d/,n); 
     21                    } else { 
     22                         msg = dotclear.jsUpload.msg.no_file_in_queue; 
     23                    } 
     24                    $('.queue-message',me).html(msg); 
     25               } 
     26                
     27               $('.button.add').click(function(e) { 
     28                    // Use the native click() of the file input. 
     29                    $('#upfile').click(); 
     30                    e.preventDefault(); 
     31               }); 
     32                
     33               $('.button.cancel', '#fileupload .fileupload-buttonbar').click(function(e) { 
     34                    $('.button.cancel','#fileupload .fileupload-buttonbar').hide(); 
     35                    disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
     36                    displayMessageInQueue(0); 
     37               }); 
     38                
     39               $('.cancel').live('click', function(e) { 
     40                    if ($('.fileupload-ctrl .files .template-upload', me).length==0) { 
     41                         $('.button.cancel','#fileupload .fileupload-buttonbar').hide(); 
     42                         disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
     43                    } 
     44                    displayMessageInQueue($('.files .template-upload',me).length); 
     45               }); 
     46                
     47               $('.button.clean', me).click(function(e) { 
     48                    $('.fileupload-ctrl .files .template-download', me).slideUp(500, function() { 
     49                         $(this).remove(); 
     50                    }); 
     51                    $(this).hide(); 
     52                    e.preventDefault(); 
     53               }); 
     54                
     55               $(me).fileupload({ 
     56                    url: $(me).attr('action'), 
     57                    autoUpload: false, 
     58                    sequentialUploads: true, 
     59                    uploadTemplateId: null, 
     60                    downloadTemplateId: null, 
     61                    uploadTemplate: template_upload, 
     62                    downloadTemplate: template_download 
     63               }).bind('fileuploadadd', function(e, data) { 
     64                    $('.button.cancel','#fileupload .fileupload-buttonbar').show(); 
     65                    enableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
     66               }).bind('fileuploadadded', function(e, data) { 
     67                    displayMessageInQueue($('.files .template-upload',me).length); 
     68               }).bind('fileuploaddone', function(e, data) { 
     69                    if (data.result.files[0].html !==undefined) { 
     70                         $('.media-list p.clear').before(data.result.files[0].html); 
     71                    } 
     72                    $('.button.clean',me).show(); 
     73               }).bind('fileuploadalways', function(e, data) { 
     74                    displayMessageInQueue($('.files .template-upload',me).length); 
     75                    if ($('.fileupload-ctrl .files .template-upload',me).length==0) { 
     76                         $('.button.cancel','#fileupload .fileupload-buttonbar').hide(); 
     77                         disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
     78                    } 
     79               }); 
     80                
     81               var $container = $(me).parent(); 
     82               var $msg,label; 
     83 
     84               if ($container.hasClass('enhanced_uploader')) { 
     85                    $msg = dotclear.msg.enhanced_uploader_disable; 
     86                    label = dotclear.jsUpload.msg.choose_files; 
     87                    $(me).fileupload({disabled:false}); 
     88                    displayMessageInQueue(0); 
     89                    disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
     90               } else { 
     91                    $msg = dotclear.msg.enhanced_uploader_activate; 
     92                    label = dotclear.jsUpload.msg.choose_file; 
     93               } 
     94 
     95               $('<p class="clear"><a class="enhanced-toggle" href="#">' + $msg + '</a></p>').click(function() { 
     96                    if ($container.hasClass('enhanced_uploader')) { 
     97                         $msg = dotclear.msg.enhanced_uploader_activate; 
     98                         label = dotclear.jsUpload.msg.choose_file; 
     99                         $('#upfile').attr('multiple', false); 
     100                         enableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
     101                          
     102                         // when a user has clicked enhanced_uploader, and has added files 
     103                         // We must remove files in table 
     104                         $('.files .upload-file', me).remove(); 
     105                         $('.button.cancel,.button.clean','#fileupload .fileupload-buttonbar').hide(); 
     106                         $(me).fileupload({disabled:true}); 
     107                         $('.queue-message',me).html('').hide(); 
     108                    } else { 
     109                         $msg = dotclear.msg.enhanced_uploader_disable; 
     110                         label = dotclear.jsUpload.msg.choose_files; 
     111                         $('#upfile').attr('multiple', true); 
     112                         var startButton = $('.button.start','#fileupload .fileupload-buttonbar'); 
     113                         disableButton(startButton); 
     114                         startButton.show(); 
     115                         $(me).fileupload({disabled:false}); 
     116                         $('.queue-message',me).show(); 
     117                         displayMessageInQueue(0); 
     118                    } 
     119                    $(this).find('a').text($msg); 
     120                    $('.add-label', me).text(label); 
     121                     
     122                    $container.toggleClass('enhanced_uploader'); 
     123               }).appendTo(me); 
     124          }); 
     125     }; 
     126})(jQuery); 
     127 
     128 
    1129$(function() { 
    2      if ($('#fileupload').length==0) { 
    3           return; 
    4      } 
    5  
    6      function enableButton(button) { 
    7           button.prop('disabled',false).removeClass('disabled'); 
    8      } 
    9  
    10      function disableButton(button) { 
    11           button.prop('disabled',true).addClass('disabled'); 
    12      } 
    13  
    14      function displayMessageInQueue(n) { 
    15           var msg = ''; 
    16           if (n==1) { 
    17                msg = dotclear.jsUpload.msg.file_in_queue; 
    18           } else if (n>1) { 
    19                msg = dotclear.jsUpload.msg.files_in_queue; 
    20                msg = msg.replace(/%d/,n); 
    21           } else { 
    22                msg = dotclear.jsUpload.msg.no_file_in_queue; 
    23           } 
    24           $('.queue-message','#fileupload').html(msg); 
    25      } 
    26  
    27      $('.button.add').click(function(e) { 
    28           // Use the native click() of the file input. 
    29           $('#upfile').click(); 
    30           e.preventDefault(); 
    31      }); 
    32  
    33      $('.button.cancel', '#fileupload .fileupload-buttonbar').click(function(e) { 
    34           $('.button.cancel','#fileupload .fileupload-buttonbar').hide(); 
    35           disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
    36           displayMessageInQueue(0); 
    37      }); 
    38  
    39      $('.cancel').live('click', function(e) { 
    40           if ($('.fileupload-ctrl .files .template-upload', '#fileupload').length==0) { 
    41                $('.button.cancel','#fileupload .fileupload-buttonbar').hide(); 
    42                disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
    43           } 
    44           displayMessageInQueue($('.files .template-upload','#fileupload').length); 
    45      }); 
    46  
    47      $('.button.clean', '#fileupload').click(function(e) { 
    48           $('.fileupload-ctrl .files .template-download', '#fileupload').slideUp(500, function() { 
    49                $(this).remove(); 
    50           }); 
    51           $(this).hide(); 
    52           e.preventDefault(); 
    53      }); 
    54  
    55      $('#fileupload').fileupload({ 
    56           url: $('#fileupload').attr('action'), 
    57           autoUpload: false, 
    58           sequentialUploads: true, 
    59           uploadTemplateId: null, 
    60           downloadTemplateId: null, 
    61           uploadTemplate: template_upload, 
    62           downloadTemplate: template_download 
    63      }).bind('fileuploadadd', function(e, data) { 
    64           $('.button.cancel','#fileupload .fileupload-buttonbar').show(); 
    65           enableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
    66      }).bind('fileuploadadded', function(e, data) { 
    67           displayMessageInQueue($('.files .template-upload','#fileupload').length); 
    68      }).bind('fileuploaddone', function(e, data) { 
    69           if (data.result.files[0].html !==undefined) { 
    70                $('.media-list p.clear').before(data.result.files[0].html); 
    71           } 
    72           $('.button.clean','#fileupload').show(); 
    73      }).bind('fileuploadalways', function(e, data) { 
    74           displayMessageInQueue($('.files .template-upload','#fileupload').length); 
    75           if ($('.fileupload-ctrl .files .template-upload','#fileupload').length==0) { 
    76                $('.button.cancel','#fileupload .fileupload-buttonbar').hide(); 
    77                disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
    78           } 
    79      }); 
    80  
    81      var $container = $('#fileupload').parent(); 
    82      var $msg,label; 
    83  
    84      if ($container.hasClass('enhanced_uploader')) { 
    85           $msg = dotclear.msg.enhanced_uploader_disable; 
    86           label = dotclear.jsUpload.msg.choose_files; 
    87           $('#fileupload').fileupload({disabled:false}); 
    88           displayMessageInQueue(0); 
    89           disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
    90      } else { 
    91           $msg = dotclear.msg.enhanced_uploader_activate; 
    92           label = dotclear.jsUpload.msg.choose_file; 
    93      } 
    94  
    95      $('<p class="clear"><a class="enhanced-toggle" href="#">' + $msg + '</a></p>').click( function() { 
    96           if ($container.hasClass('enhanced_uploader')) { 
    97                $msg = dotclear.msg.enhanced_uploader_activate; 
    98                label = dotclear.jsUpload.msg.choose_file; 
    99                $('#upfile').attr('multiple', false); 
    100                enableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
    101  
    102                // when a user has clicked enhanced_uploader, and has added files 
    103                // We must remove files in table 
    104                $('.files .upload-file', '#fileupload').remove(); 
    105                $('.button.cancel,.button.clean','#fileupload .fileupload-buttonbar').hide(); 
    106                $('#fileupload').fileupload({disabled:true}); 
    107                $('.queue-message','#fileupload').html('').hide(); 
    108           } else { 
    109                $msg = dotclear.msg.enhanced_uploader_disable; 
    110                label = dotclear.jsUpload.msg.choose_files; 
    111                $('#upfile').attr('multiple', true); 
    112                var startButton = $('.button.start','#fileupload .fileupload-buttonbar'); 
    113                disableButton(startButton); 
    114                startButton.show(); 
    115                $('#fileupload').fileupload({disabled:false}); 
    116                $('.queue-message','#fileupload').show(); 
    117                displayMessageInQueue(0); 
    118           } 
    119           $(this).find('a').text($msg); 
    120           $('.add-label', '#fileupload').text(label); 
    121  
    122           $container.toggleClass('enhanced_uploader'); 
    123      }).appendTo($('#fileupload')); 
     130     $('#fileupload').enhancedUploader(); 
    124131 
    125132     // Replace remove links by a POST on hidden form 
Note: See TracChangeset for help on using the changeset viewer.

Sites map