Dotclear

source: admin/js/_media.js @ 3445:26274861f3f6

Revision 3445:26274861f3f6, 6.5 KB checked in by franck <carnet.franck.paul@…>, 9 years ago (diff)

Add button type to non submit button, add meta-helper class to meta editor buttons, cope with helper buttons in confirm-close.js, addresses #2226

The

chainHandler(window,'onload',function() {

confirmClosePage.getCurrentForms();

});

seems to be run before all DOM ready (with all js done), CKEditor or LegacyEditor? add some stuff to current form after that ?!?
a 1 second delay to run again confirmClosePage.getCurrentForms() is not enough…

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').css('display','inline-block');
68                    $('#fileupload .fileupload-buttonbar').show();
69                    enableButton($('.button.start','#fileupload .fileupload-buttonbar'));
70               }).bind('fileuploadadded', function(e, data) {
71                    displayMessageInQueue($('.files .template-upload',me).length);
72               }).bind('fileuploaddone', function(e, data) {
73                    if (data.result.files[0].html !==undefined) {
74                         $('.media-list .files-group').append(data.result.files[0].html);
75                         $('#form-medias .hide').removeClass('hide');
76                    }
77                    $('.button.clean').css('display','inline-block');
78                    $(me).show();
79               }).bind('fileuploadalways', function(e, data) {
80                    displayMessageInQueue($('.files .template-upload',me).length);
81                    if ($('.fileupload-ctrl .files .template-upload',me).length==0) {
82                         $('.button.cancel','#fileupload .fileupload-buttonbar').hide();
83                         disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
84                    }
85               });
86
87               var $msg,label;
88
89               if ($container.hasClass('enhanced_uploader')) {
90                    $msg = dotclear.msg.enhanced_uploader_disable;
91                    label = dotclear.jsUpload.msg.choose_files;
92                    $(me).fileupload({disabled:false});
93                    displayMessageInQueue(0);
94                    disableButton($('.button.start','#fileupload .fileupload-buttonbar'));
95               } else {
96                    $msg = dotclear.msg.enhanced_uploader_activate;
97                    label = dotclear.jsUpload.msg.choose_file;
98               }
99
100               $('<p class="clear"><button type="button" class="enhanced-toggle">' + $msg + '</button></p>').click(function(e) {
101                    if ($container.hasClass('enhanced_uploader')) {
102                         $msg = dotclear.msg.enhanced_uploader_activate;
103                         label = dotclear.jsUpload.msg.choose_file;
104                         $('#upfile').attr('multiple', false);
105                         enableButton($('.button.start','#fileupload .fileupload-buttonbar'));
106
107                         // when a user has clicked enhanced_uploader, and has added files
108                         // We must remove files in table
109                         $('.files .upload-file', me).remove();
110                         $('.button.cancel,.button.clean','#fileupload .fileupload-buttonbar').hide();
111                         $(me).fileupload({disabled:true});
112                         $('.queue-message',me).html('').hide();
113                    } else {
114                         $msg = dotclear.msg.enhanced_uploader_disable;
115                         label = dotclear.jsUpload.msg.choose_files;
116                         $('#upfile').attr('multiple', true);
117                         var startButton = $('.button.start');
118                         var buttonBar = $('#fileupload .fileupload-buttonbar');
119                         disableButton(startButton);
120                         disableButton(buttonBar);
121                         startButton.css('display','inline-block');
122                         buttonBar.show();
123                         $(me).fileupload({disabled:false});
124                         $('.queue-message',me).show();
125                         displayMessageInQueue(0);
126                    }
127                    $(this).find('button').text($msg);
128                    $('.add-label', me).text(label);
129
130                    $container.toggleClass('enhanced_uploader');
131                    e.preventDefault();
132               }).appendTo(me);
133          });
134     };
135})(jQuery);
136
137
138$(function() {
139     $('#fileupload').enhancedUploader();
140
141     $('.checkboxes-helpers').each(function() {
142          dotclear.checkboxesHelpers(this,undefined,'#form-medias input[type="checkbox"]','#form-medias #delete_medias');
143     });
144     dotclear.condSubmit('#form-medias input[type="checkbox"]','#form-medias #delete_medias');
145
146     $('#form-medias #delete_medias').click(function(e) {
147          var count_checked = $('input[name="medias[]"]:checked', $('#form-medias')).length;
148          if (count_checked == 0) {
149               e.preventDefault();
150               return false;
151          }
152          return window.confirm(dotclear.msg.confirm_delete_medias.replace('%d',count_checked));
153     });
154
155     // Preview media
156     $('.modal-image').magnificPopup({ type:'image' });
157
158     // attach media
159     $('#form-medias').on('click', '.media-item .attach-media', function(e) {
160          var parts = $(this).prop('href').split('?');
161          var str_params = parts[1].split('&');
162          var postData = {};
163
164          for (var n=0;n<str_params.length;n++) {
165               kv = str_params[n].split('=');
166               postData[kv[0]] = kv[1];
167          }
168          postData.xd_check = dotclear.nonce;
169
170          $.post(parts[0], postData, function(data) {
171               if (data.url !== undefined) {
172                    document.location = data.url;
173               }
174          });
175
176          e.preventDefault();
177     });
178
179     // Replace remove links by a POST on hidden form
180     fileRemoveAct();
181
182     function fileRemoveAct() {
183          $('body').on('click','a.media-remove',function() {
184               var m_name = $(this).parents('.media-item').find('a.media-link').text();
185               var m_text='';
186               if ($(this).parents('div.media-folder').length == 0) {
187                    m_text = dotclear.msg.confirm_delete_media.replace('%s',m_name);
188               } else {
189                    m_text = dotclear.msg.confirm_delete_directory.replace('%s',m_name);
190               }
191               if (window.confirm(m_text)) {
192                    var f = $('#media-remove-hide').get(0);
193                    f.elements['remove'].value = this.href.replace(/^(.*)&remove=(.*?)(&|$)/,'$2');
194                    this.href = '';
195                    f.submit();
196               }
197               return false;
198          });
199     }
200});
Note: See TracBrowser for help on using the repository browser.

Sites map