Dotclear

source: admin/js/_media.js @ 3182:adf3c934173f

Revision 3182:adf3c934173f, 6.2 KB checked in by franck <carnet.franck.paul@…>, 9 years ago (diff)

Disable submit button unless at least one item selected whenever is possible, closes #1600

Line 
1(function($) {
2     $.fn.enhancedUploader = function() {
3          return this.each(function() {
4               var me = $(this);
5               var $container = $(me).parent();
6
7               function enableButton(button) {
8                    button.prop('disabled',false).removeClass('disabled');
9               }
10
11               function disableButton(button) {
12                    button.prop('disabled',true).addClass('disabled');
13               }
14
15               function displayMessageInQueue(n) {
16                    var msg = '';
17                    if (n==1) {
18                         msg = dotclear.jsUpload.msg.file_in_queue;
19                    } else if (n>1) {
20                         msg = dotclear.jsUpload.msg.files_in_queue;
21                         msg = msg.replace(/%d/,n);
22                    } else {
23                         msg = dotclear.jsUpload.msg.no_file_in_queue;
24                    }
25                    $('.queue-message',me).html(msg);
26               }
27
28               $('.button.choose_files').click(function(e) {
29                    if ($container.hasClass('enhanced_uploader')) {
30                         // Use the native click() of the file input.
31                         $('#upfile').click();
32                         e.preventDefault();
33                    }
34               });
35
36               $('.button.cancel', '#fileupload .fileupload-buttonbar').click(function(e) {
37                    $('.button.cancel','#fileupload .fileupload-buttonbar').hide();
38                    disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
39                    displayMessageInQueue(0);
40               });
41
42               $(me).on('click','.cancel',function(e) {
43                    if ($('.fileupload-ctrl .files .template-upload', me).length==0) {
44                         $('.button.cancel','#fileupload .fileupload-buttonbar').hide();
45                         disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
46                    }
47                    displayMessageInQueue($('.files .template-upload',me).length);
48               });
49
50               $('.button.clean', me).click(function(e) {
51                    $('.fileupload-ctrl .files .template-download', me).slideUp(500, function() {
52                         $(this).remove();
53                    });
54                    $(this).hide();
55                    e.preventDefault();
56               });
57
58               $(me).fileupload({
59                    url: $(me).attr('action'),
60                    autoUpload: false,
61                    sequentialUploads: true,
62                    uploadTemplateId: null,
63                    downloadTemplateId: null,
64                    uploadTemplate: template_upload,
65                    downloadTemplate: template_download
66               }).bind('fileuploadadd', function(e, data) {
67                    $('.button.cancel','#fileupload .fileupload-buttonbar').show();
68                    enableButton($('.button.start','#fileupload .fileupload-buttonbar'));
69               }).bind('fileuploadadded', function(e, data) {
70                    displayMessageInQueue($('.files .template-upload',me).length);
71               }).bind('fileuploaddone', function(e, data) {
72                    if (data.result.files[0].html !==undefined) {
73                         $('.media-list .files-group').append(data.result.files[0].html);
74                         $('#form-medias .hide').removeClass('hide');
75                    }
76                    $('.button.clean',me).show();
77               }).bind('fileuploadalways', function(e, data) {
78                    displayMessageInQueue($('.files .template-upload',me).length);
79                    if ($('.fileupload-ctrl .files .template-upload',me).length==0) {
80                         $('.button.cancel','#fileupload .fileupload-buttonbar').hide();
81                         disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
82                    }
83               });
84
85               var $msg,label;
86
87               if ($container.hasClass('enhanced_uploader')) {
88                    $msg = dotclear.msg.enhanced_uploader_disable;
89                    label = dotclear.jsUpload.msg.choose_files;
90                    $(me).fileupload({disabled:false});
91                    displayMessageInQueue(0);
92                    disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
93               } else {
94                    $msg = dotclear.msg.enhanced_uploader_activate;
95                    label = dotclear.jsUpload.msg.choose_file;
96               }
97
98               $('<p class="clear"><a class="enhanced-toggle" href="#">' + $msg + '</a></p>').click(function(e) {
99                    if ($container.hasClass('enhanced_uploader')) {
100                         $msg = dotclear.msg.enhanced_uploader_activate;
101                         label = dotclear.jsUpload.msg.choose_file;
102                         $('#upfile').attr('multiple', false);
103                         enableButton($('.button.start','#fileupload .fileupload-buttonbar'));
104
105                         // when a user has clicked enhanced_uploader, and has added files
106                         // We must remove files in table
107                         $('.files .upload-file', me).remove();
108                         $('.button.cancel,.button.clean','#fileupload .fileupload-buttonbar').hide();
109                         $(me).fileupload({disabled:true});
110                         $('.queue-message',me).html('').hide();
111                    } else {
112                         $msg = dotclear.msg.enhanced_uploader_disable;
113                         label = dotclear.jsUpload.msg.choose_files;
114                         $('#upfile').attr('multiple', true);
115                         var startButton = $('.button.start','#fileupload .fileupload-buttonbar');
116                         disableButton(startButton);
117                         startButton.show();
118                         $(me).fileupload({disabled:false});
119                         $('.queue-message',me).show();
120                         displayMessageInQueue(0);
121                    }
122                    $(this).find('a').text($msg);
123                    $('.add-label', me).text(label);
124
125                    $container.toggleClass('enhanced_uploader');
126                    e.preventDefault();
127               }).appendTo(me);
128          });
129     };
130})(jQuery);
131
132
133$(function() {
134     $('#fileupload').enhancedUploader();
135
136     $('.checkboxes-helpers').each(function() {
137          dotclear.checkboxesHelpers(this,undefined,'#form-medias input[type="checkbox"]','#form-medias #delete_medias');
138     });
139     dotclear.condSubmit('#form-medias input[type="checkbox"]','#form-medias #delete_medias');
140
141     $('#form-medias #delete_medias').click(function(e) {
142          var count_checked = $('input[name="medias[]"]:checked', $('#form-medias')).length;
143          if (count_checked == 0) {
144               e.preventDefault();
145               return false;
146          }
147          return window.confirm(dotclear.msg.confirm_delete_medias.replace('%d',count_checked));
148     });
149
150     // attach media
151     $('#form-medias').on('click', '.media-item .attach-media', function(e) {
152          var parts = $(this).prop('href').split('?');
153          var str_params = parts[1].split('&');
154          var postData = {};
155
156          for (var n=0;n<str_params.length;n++) {
157               kv = str_params[n].split('=');
158               postData[kv[0]] = kv[1];
159          }
160          postData.xd_check = dotclear.nonce;
161
162          $.post(parts[0], postData, function(data) {
163               if (data.url !== undefined) {
164                    document.location = data.url;
165               }
166          });
167
168          e.preventDefault();
169     });
170
171     // Replace remove links by a POST on hidden form
172     fileRemoveAct();
173
174     function fileRemoveAct() {
175          $('body').on('click','a.media-remove',function() {
176               var m_name = $(this).parents('.media-item').find('a.media-link').text();
177               var m_text='';
178               if ($(this).parents('div.media-folder').length == 0) {
179                    m_text = dotclear.msg.confirm_delete_media.replace('%s',m_name);
180               } else {
181                    m_text = dotclear.msg.confirm_delete_directory.replace('%s',m_name);
182               }
183               if (window.confirm(m_text)) {
184                    var f = $('#media-remove-hide').get(0);
185                    f.elements['remove'].value = this.href.replace(/^(.*)&remove=(.*?)(&|$)/,'$2');
186                    this.href = '';
187                    f.submit();
188               }
189               return false;
190          });
191     }
192});
Note: See TracBrowser for help on using the repository browser.

Sites map