Dotclear

source: admin/js/_media.js @ 1325:fac01f6f20b0

Revision 1325:fac01f6f20b0, 4.6 KB checked in by Nicolas <nikrou77@…>, 12 years ago (diff)

Fix issue 1486 : add number of files that will be uploaded.

Line 
1$(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          disabled: true
60     }).bind('fileuploadadd', function(e, data) {
61          $('.button.cancel','#fileupload .fileupload-buttonbar').show();
62          enableButton($('.button.start','#fileupload .fileupload-buttonbar'));
63     }).bind('fileuploadadded', function(e, data) {
64          displayMessageInQueue($('.files .template-upload','#fileupload').length);
65     }).bind('fileuploaddone', function(e, data) {
66          if (data.result.files[0].html !==undefined) {
67               $('.media-list p.clear').before(data.result.files[0].html);
68          }
69          $('.button.clean','#fileupload').show();
70     }).bind('fileuploadalways', function(e, data) {
71          displayMessageInQueue($('.files .template-upload','#fileupload').length);
72          if ($('.fileupload-ctrl .files .template-upload','#fileupload').length==0) {
73               $('.button.cancel','#fileupload .fileupload-buttonbar').hide();
74               disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
75          }
76     });
77
78     var $container = $('#fileupload').parent().parent();
79     var $msg,label;
80
81     if ($container.hasClass('enhanced_uploader')) {
82          $msg = dotclear.msg.enhanced_uploader_disable;
83          label = dotclear.jsUpload.msg.choose_files;
84          $('#fileupload').fileupload({disabled:false});
85          displayMessageInQueue(0);
86          disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
87     } else {
88          $msg = dotclear.msg.enhanced_uploader_activate;
89          label = dotclear.jsUpload.msg.choose_file;
90     }
91
92     $('<p class="clear"><a class="enhanced-toggle" href="#">' + $msg + '</a></p>').click( function() {
93          if ($container.hasClass('enhanced_uploader')) {
94               $msg = dotclear.msg.enhanced_uploader_activate;
95               label = dotclear.jsUpload.msg.choose_file;
96               $('#upfile').attr('multiple', false);
97
98               // when a user has clicked enhanced_uploader, and has added files
99               // We must remove files in table
100               $('.files .upload-file', '#fileupload').remove();
101               $('.button.cancel,.button.clean','#fileupload .fileupload-buttonbar').hide();
102               $('#fileupload').fileupload({disabled:true});
103               $('.queue-message','#fileupload').html('').hide();
104          } else {
105               $msg = dotclear.msg.enhanced_uploader_disable;
106               label = dotclear.jsUpload.msg.choose_files;
107               $('#upfile').attr('multiple', true);
108               var startButton = $('.button.start','#fileupload .fileupload-buttonbar');
109               disableButton(startButton);
110               startButton.show();
111               $('#fileupload').fileupload({disabled:false});
112               $('.queue-message','#fileupload').show();
113               displayMessageInQueue(0);
114          }
115          $(this).find('a').text($msg);
116          $('.add-label', '#fileupload').text(label);
117
118          $container.toggleClass('enhanced_uploader');
119     }).appendTo($('#fileupload'));
120
121     // Replace remove links by a POST on hidden form
122     fileRemoveAct();
123
124     function fileRemoveAct() {
125          $('a.media-remove').live('click', function() {
126               var m_name = $(this).parents('ul').find('li:first>a').text();
127               if (window.confirm(dotclear.msg.confirm_delete_media.replace('%s',m_name))) {
128                    var f = $('#media-remove-hide').get(0);
129                    f.elements['remove'].value = this.href.replace(/^(.*)&remove=(.*?)(&|$)/,'$2');
130                    this.href = '';
131                    f.submit();
132               }
133               return false;
134          });
135     }
136});
Note: See TracBrowser for help on using the repository browser.

Sites map