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…

RevLine 
[1724]1(function($) {
2     $.fn.enhancedUploader = function() {
3          return this.each(function() {
4               var me = $(this);
[3116]5               var $container = $(me).parent();
[1724]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               }
[2512]14
[1724]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               }
[2512]27
[1852]28               $('.button.choose_files').click(function(e) {
[3116]29                    if ($container.hasClass('enhanced_uploader')) {
30                         // Use the native click() of the file input.
31                         $('#upfile').click();
32                         e.preventDefault();
33                    }
[1724]34               });
[2512]35
[1724]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               });
[2512]41
[1782]42               $(me).on('click','.cancel',function(e) {
[1724]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               });
[2512]49
[1724]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               });
[2512]57
[1724]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) {
[3364]67                    $('.button.cancel').css('display','inline-block');
68                    $('#fileupload .fileupload-buttonbar').show();
[1724]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) {
[1952]74                         $('.media-list .files-group').append(data.result.files[0].html);
[2202]75                         $('#form-medias .hide').removeClass('hide');
[1724]76                    }
[3364]77                    $('.button.clean').css('display','inline-block');
78                    $(me).show();
[1724]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               });
[2512]86
[1724]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
[3445]100               $('<p class="clear"><button type="button" class="enhanced-toggle">' + $msg + '</button></p>').click(function(e) {
[1724]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'));
[2512]106
[1724]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);
[3364]117                         var startButton = $('.button.start');
118                         var buttonBar = $('#fileupload .fileupload-buttonbar');
[1724]119                         disableButton(startButton);
[3364]120                         disableButton(buttonBar);
121                         startButton.css('display','inline-block');
122                         buttonBar.show();
[1724]123                         $(me).fileupload({disabled:false});
124                         $('.queue-message',me).show();
125                         displayMessageInQueue(0);
126                    }
[3434]127                    $(this).find('button').text($msg);
[1724]128                    $('.add-label', me).text(label);
[2512]129
[1724]130                    $container.toggleClass('enhanced_uploader');
[2346]131                    e.preventDefault();
[1724]132               }).appendTo(me);
133          });
134     };
135})(jQuery);
136
137
[0]138$(function() {
[1724]139     $('#fileupload').enhancedUploader();
[1144]140
[2202]141     $('.checkboxes-helpers').each(function() {
[3182]142          dotclear.checkboxesHelpers(this,undefined,'#form-medias input[type="checkbox"]','#form-medias #delete_medias');
[2202]143     });
[3182]144     dotclear.condSubmit('#form-medias input[type="checkbox"]','#form-medias #delete_medias');
[2202]145
[3153]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();
[2202]150               return false;
151          }
152          return window.confirm(dotclear.msg.confirm_delete_medias.replace('%d',count_checked));
153     });
154
[3369]155     // Preview media
156     $('.modal-image').magnificPopup({ type:'image' });
157
[2320]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
[1161]179     // Replace remove links by a POST on hidden form
180     fileRemoveAct();
[1144]181
[1161]182     function fileRemoveAct() {
[1782]183          $('body').on('click','a.media-remove',function() {
[2202]184               var m_name = $(this).parents('.media-item').find('a.media-link').text();
[2512]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)) {
[1161]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     }
[250]200});
Note: See TracBrowser for help on using the repository browser.

Sites map