Dotclear

source: admin/js/_media.js @ 1952:1aa675979ce3

Revision 1952:1aa675979ce3, 4.9 KB checked in by franck <carnet.franck.paul@…>, 12 years ago (diff)

Fix enhanced uploader as pager changes his layout.

Line 
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.choose_files').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               $(me).on('click','.cancel',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 .files-group').append(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
129$(function() {
130     $('#fileupload').enhancedUploader();
131
132     // Replace remove links by a POST on hidden form
133     fileRemoveAct();
134
135     function fileRemoveAct() {
136          $('body').on('click','a.media-remove',function() {
137               var m_name = $(this).parents('ul').find('li:first>a').text();
138               if (window.confirm(dotclear.msg.confirm_delete_media.replace('%s',m_name))) {
139                    var f = $('#media-remove-hide').get(0);
140                    f.elements['remove'].value = this.href.replace(/^(.*)&remove=(.*?)(&|$)/,'$2');
141                    this.href = '';
142                    f.submit();
143               }
144               return false;
145          });
146     }
147});
Note: See TracBrowser for help on using the repository browser.

Sites map