Dotclear

source: admin/js/_media.js @ 2512:446ce952707d

Revision 2512:446ce952707d, 6.0 KB checked in by Dsls, 12 years ago (diff)

Fixed messages when deleting a directory. Closes #1839

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

Sites map