PluginProbe ʕ •ᴥ•ʔ
Folders – Unlimited Folders to Organize Media Library Folder, Pages, Posts, File Manager / 2.7
Folders – Unlimited Folders to Organize Media Library Folder, Pages, Posts, File Manager v2.7
3.1.9 3.1.8 3.1.7 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8 3.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 trunk 1.3.7 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 2.3 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.6.6 2.6.7 2.6.8 2.6.9 2.7 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9 2.9.1 2.9.2
folders / assets / js / media.js
folders / assets / js Last commit date
custom.js 5 years ago folders.js 5 years ago folders.min.js 5 years ago jquery.mcustomscrollbar.min.js 5 years ago jquery.mousewheel.min.js 5 years ago jquery.ui.touch-punch.min.js 5 years ago jstree.js 5 years ago jstree.min.js 5 years ago media.js 5 years ago new-media.js 5 years ago page-post-media.js 5 years ago page-post-media.min.js 5 years ago replace-file-name.js 5 years ago replace-media.js 5 years ago select2.min.js 6 years ago spectrum.min.js 6 years ago
media.js
409 lines
1 (function() {
2 var selectedFolderMediaId = -1;
3 var MediaLibraryOrganizerTaxonomyFilter = wp.media.view.AttachmentFilters.extend({
4 id: 'media-attachment-taxonomy-filter',
5 createFilters: function() {
6 var filters = {};
7 var totalItems = folders_media_options.terms.length;
8 _.each(folders_media_options.terms || {}, function(term, index) {
9 filters[term.term_id] = {
10 text: term.name + ' (' + term.count + ')',
11 props: {
12 'media_folder': term.slug
13 }
14 };
15 });
16 filters.all = {
17 text: 'All Folders',
18 props: {
19 'media_folder': ''
20 },
21 priority: 10
22 };
23 filters.unassigned = {
24 text: '(Unassigned)',
25 props: {
26 'media_folder': "-1"
27 },
28 priority: 10
29 };
30 this.filters = filters;
31 },
32 change: function() {
33 var filters = {};
34 _.each(folders_media_options.terms || {}, function(term, index) {
35 filters[term.term_id] = {
36 text: term.name + ' (' + term.count + ')',
37 props: {
38 'media_folder': term.slug
39 }
40 };
41 });
42 filters.all = {
43 text: 'Select a folder >>',
44 props: {
45 'media_folder': ''
46 },
47 priority: 10
48 };
49 filters.unassigned = {
50 text: '(Unassigned)',
51 props: {
52 'media_folder': "-1"
53 },
54 priority: 10
55 };
56 this.filters = filters;
57 var filter = this.filters[ this.el.value ];
58 if ( filter ) {
59 this.model.set( filter.props );
60 }
61 }
62 });
63
64 var AttachmentsBrowser = wp.media.view.AttachmentsBrowser;
65 wp.media.view.AttachmentsBrowser = wp.media.view.AttachmentsBrowser.extend({
66 createToolbar: function() {
67 AttachmentsBrowser.prototype.createToolbar.call(this);
68 this.toolbar.set('MediaLibraryOrganizerTaxonomyFilter', new MediaLibraryOrganizerTaxonomyFilter({
69 controller: this.controller,
70 model: this.collection.props,
71 priority: -75
72 }).render());
73 }
74 });
75
76 var Query = wp.media.model.Query;
77 _.extend(Query, {
78 get: (function() {
79 var queries = [];
80 return function(props, options) {
81 var args = {},
82 orderby = Query.orderby,
83 defaults = Query.defaultProps,
84 query,
85 cache = false; // Always disable query
86 delete props.query;
87 delete props.cache;
88 _.defaults(props, defaults);
89
90 _.each(['include', 'exclude'], function(prop) {
91 if (props[prop] && !_.isArray(props[prop])) {
92 props[prop] = [props[prop]];
93 }
94 });
95 _.each(props, function(value, prop) {
96 if (_.isNull(value)) {
97 return;
98 }
99 args[Query.propmap[prop] || prop] = value;
100 });
101 _.defaults(args, Query.defaultArgs);
102 args.orderby = orderby.valuemap[props.orderby] || props.orderby;
103 // Disable query caching
104 cache = false;
105 // Search the query cache for a matching query.
106 if (cache) {
107 query = _.find(queries, function(query) {
108 return _.isEqual(query.args, args);
109 });
110 } else {
111 queries = [];
112 }
113 // Otherwise, create a new query and add it to the cache.
114 if (!query) {
115 query = new Query([], _.extend(options || {}, {
116 props: props,
117 args: args
118 }));
119 queries.push(query);
120 }
121 return query;
122 };
123 }())
124 });
125 })(jQuery, _);
126
127 jQuery(document).on("click", ".media-frame-router .media-menu-item", function(){
128 setTimeout(function(){
129 if(lastFolderData.length > 0) {
130 if(jQuery(".folder_for_media option").length != (lastFolderData.length+2)) {
131 var selectedVal = jQuery(".folder_for_media").val();
132 var selectedDD = jQuery(".folder_for_media");
133 selectedDD.html("<option value='-1'>(Unassigned)</option>");
134 for (i = 0; i < lastFolderData.length; i++) {
135 selectedDD.append("<option value='" + lastFolderData[i].term_id + "'>"+lastFolderData[i].name+"</option>");
136 }
137 selectedDD.append("<option value='add-folder'>+ Create a New Folder</option>");
138 if(selectedFolderMediaId != "" && selectedFolderMediaId != null) {
139 selectedDD.val(selectedFolderMediaId);
140 } else {
141 selectedDD.val(selectedVal);
142 }
143 }
144 }
145 }, 100);
146 });
147 var selectedFolderMediaId = -1;
148 var selectedFolderPageID = "all";
149 var filesInQueue = 0;
150 var uploadedFileCount = 0;
151 var lastFolderData = [];
152 jQuery(document).on("change", ".folder_for_media", function(){
153 if(jQuery(this).val() != "add-folder" && jQuery(this).val() != null) {
154 selectedFolderMediaId = jQuery(this).val();
155 } else if(jQuery(this).val() == "add-folder") {
156 selectedFolderMediaId = -1;
157 if(!jQuery("#wcp-content").length) {
158 if(folders_media_options.is_key_active == 0 && folders_media_options.folders >= 10) {
159 if (jQuery("#custom-folder-media-popup-form").length) {
160 jQuery("#custom-folder-media-popup-form").remove();
161 }
162 if (!jQuery("#custom-folder-media-popup-form").length) {
163 jQuery("body").append("<div class='folder-media-popup-form' id='custom-folder-media-popup-form'></div>");
164 jQuery("#custom-folder-media-popup-form").append("<div class='media-popup-form' id='custom-popup-form-content'></div>");
165 jQuery(".media-popup-form").append('<div id="add-update-folder-title" class="add-update-folder-title">You\'ve reached the 10 folder limitation!</div>');
166 jQuery(".media-popup-form").append('<div class="folder-form-message">Unlock unlimited amount of folders by upgrading to one of our pro plans.</div>');
167 jQuery(".media-popup-form").append('<div class="folder-form-buttons"><a href="javascript:;" class="remove-media-form">Cancel</a><a href="'+folders_media_options.activate_url+'" target="_blank" class="form-submit-btn" style="width: 120px">See Pro Plans</button></div>');
168 }
169 } else {
170 if (jQuery("#custom-folder-media-popup-form").length) {
171 jQuery("#custom-folder-media-popup-form").remove();
172 }
173 if (!jQuery("#custom-folder-media-popup-form").length) {
174 jQuery("body").append("<div class='folder-media-popup-form' id='custom-folder-media-popup-form'></div>");
175 jQuery("#custom-folder-media-popup-form").append("<div class='media-popup-form' id='custom-popup-form-content'></div>");
176 jQuery("#custom-popup-form-content").append("<form action='#' id='folder-media-popup-form' method='post'></form>");
177 jQuery("#folder-media-popup-form").append('<div id="add-update-folder-title" class="add-update-folder-title">Add new folder</div>');
178 jQuery("#folder-media-popup-form").append('<div class="folder-form-input"><input id="media-folder-name" autocomplete="off" placeholder="Folder name" class=""></div>');
179 jQuery("#folder-media-popup-form").append('<div class="folder-form-errors" id="media-form-error"><span class="dashicons dashicons-info"></span> Please enter folder name</div>');
180 jQuery("#folder-media-popup-form").append('<div class="folder-form-buttons"><button type="submit" class="form-submit-btn" id="save-media-folder" style="width: 106px">Submit</button><a href="javascript:;" class="remove-media-form">Cancel</a></div>');
181 jQuery("#media-folder-name").focus();
182 }
183 }
184 }
185 }
186
187 if(jQuery(".media-toolbar #media-attachment-taxonomy-filter").length) {
188 jQuery("#media-attachment-taxonomy-filter").val(jQuery(this).val());
189 jQuery("#media-attachment-taxonomy-filter").trigger("change");
190 }
191 });
192
193 jQuery(document).on("change", "#media-attachment-taxonomy-filter", function(){
194 if(jQuery(this).val() != null && jQuery(this).val() != "add-folder") {
195 jQuery(".folder_for_media").val(jQuery(this).val());
196 selectedFolderPageID = jQuery(this).val();
197 selectedFolderMediaId = jQuery(this).val();
198 }
199 });
200
201 function resetDDCounter() {
202 var currentDDVal = jQuery("#media-attachment-taxonomy-filter").val();
203 jQuery.ajax({
204 url: folders_media_options.ajax_url,
205 data: "type=attachment&action=wcp_get_default_list&active_id=0",
206 method: 'post',
207 success: function (res) {
208 res = jQuery.parseJSON(res);
209
210 if(jQuery("#media-attachment-taxonomy-filter").length) {
211 jQuery("#media-attachment-taxonomy-filter").each(function(){
212 folders_media_options.terms = res.taxonomies;
213 var selectedDD = jQuery(this);
214 selectedDD.html("<option value='all'>All Folders</option><option value='unassigned'>(Unassigned)</option>");
215 lastFolderData = res.taxonomies;
216 for (i = 0; i < res.taxonomies.length; i++) {
217 selectedDD.append("<option value='" + res.taxonomies[i].term_id + "'>" + res.taxonomies[i].name + " (" + res.taxonomies[i].count + ")</option>");
218 }
219 selectedDD.val(currentDDVal).trigger("change");
220
221 if(resetMediaID !== false) {
222 selectedDD.val(resetMediaID).trigger("change");
223 }
224 });
225 }
226 resetMediaID = false;
227 }
228 })
229 }
230
231 function resetSelectMediaDropDown() {
232 jQuery.ajax({
233 url: folders_media_options.ajax_url,
234 data: "type=attachment&action=wcp_get_default_list&active_id=0",
235 method: 'post',
236 success: function (res) {
237 res = jQuery.parseJSON(res);
238 if(jQuery(".folder_for_media").length) {
239 if(!jQuery("#wcp-content").length) {
240 var selectedDD = jQuery(".folder_for_media");
241 selectedDD.html("<option value='-1'>(Unassigned)</option>");
242 lastFolderData = res.taxonomies;
243 for (i = 0; i < res.taxonomies.length; i++) {
244 selectedDD.append("<option value='" + res.taxonomies[i].term_id + "'>" + res.taxonomies[i].name + " (" + res.taxonomies[i].count + ")</option>");
245 }
246 selectedDD.append("<option value='add-folder'>+ Create a New Folder</option>");
247 }
248 jQuery("#custom-folder-media-popup-form").remove();
249 }
250 if(!jQuery("#media-attachment-taxonomy-filter").length && resetMediaID != false) {
251 jQuery(".folder_for_media").val(resetMediaID).trigger("change");
252 } else {
253 resetDDCounter();
254 }
255 }
256 });
257 }
258 var wp = window.wp;
259 //Upload on page Media Library (upload.php)
260 if (typeof wp !== 'undefined' && typeof wp.Uploader === 'function') {
261 wp.media.view.Modal.prototype.on('open', function() {
262 setTimeout(function(){
263 if(jQuery("#media-attachment-taxonomy-filter").length) {
264 if(jQuery("#media-attachment-taxonomy-filter").val() == "all") {
265 jQuery("#media-attachment-taxonomy-filter option:gt(1)").remove();
266 _.each(folders_media_options.terms, function(term, index){
267 jQuery("#media-attachment-taxonomy-filter").append("<option value='" + term.term_id + "'>" + term.name + " (" + term.count + ")</option>")
268 });
269 }
270
271 if(!jQuery("#wcp-content").length) {
272 if(jQuery(".editor-post-featured-image").length) {
273 jQuery(".attachment-filters").val(selectedFolderPageID).trigger("change");
274 }
275 }
276 }
277 },100);
278 });
279 jQuery.extend(wp.Uploader.prototype, {
280 progress: function () {
281 },
282 init: function () {
283 if (this.uploader) {
284 this.uploader.bind('FileFiltered', function (up, file) {
285 filesInQueue++;
286 jQuery(".folder-meter").css("width", "0%");
287 jQuery(".media-folder-loader").show();
288 jQuery("#total_upload_files").text(filesInQueue);
289 });
290 this.uploader.bind('BeforeUpload', function (uploader, file) {
291 var folder_id = selectedFolderMediaId;
292 var params = uploader.settings.multipart_params;
293 folder_id = parseInt(folder_id);
294 if (folder_id > 0) {
295 params.folder_for_media = folder_id;
296 }
297 if(uploadedFileCount < filesInQueue) {
298 jQuery(".media-folder-loader").show();
299 var progress_width = uploadedFileCount/filesInQueue*100;
300 jQuery(".folder-meter").css("width", progress_width+"%");
301 }
302 uploadedFileCount++;
303 jQuery("#current_upload_files").text(uploadedFileCount);
304
305 });
306 this.uploader.bind('UploadComplete', function (up, files) {
307 selectedFolderMediaId = -1;
308 });
309 this.uploader.bind('UploadComplete', function (up, files) {
310 var wp_media = window.wp;
311
312 jQuery(".folder-meter").css("width", "100%");
313 setTimeout(function(){
314 jQuery(".media-folder-loader").hide();
315 jQuery(".folder-meter").css("width", "0%");
316 filesInQueue = 0;
317 uploadedFileCount = 0;
318 }, 1250);
319
320 resetDDCounter();
321
322 if(typeof wp_media.media.frame !== "undefined" && wp_media.media.frame.content.get() !== null) {
323 wp_media.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
324 wp_media.media.frame.content.get().options.selection.reset();
325 } else {
326 //wp_media.media.frame.library.props.set ({ignore: (+ new Date())});
327 if(jQuery("#media-attachment-taxonomy-filter").length) {
328 jQuery(".attachment-filters").each(function(){
329 jQuery(this).trigger("change");
330 });
331 }
332 }
333 });
334 }
335 }
336 });
337 }
338
339 jQuery( document ).ajaxComplete(function( event, request, settings ) {
340 if(settings.data != undefined && typeof settings.data == 'string' && settings.data.indexOf("action=delete-post")>-1) {
341 resetDDCounter();
342 }
343 });
344
345 jQuery(document).on("click", "#menu-item-browse", function (e) {
346 setTimeout(function(){
347 if(resetMediaScreen) {
348 resetDDCounter();
349 }
350 }, 100);
351 });
352 var resetMediaScreen = false;
353 var resetMediaID = false;
354 jQuery(document).on("submit", "#folder-media-popup-form", function(){
355 if(jQuery.trim(jQuery("#media-folder-name").val()) == "") {
356 jQuery("#media-form-error").show();
357 jQuery("#media-folder-name").focus();
358 } else {
359 jQuery("button#save-media-folder").html("<span class='spinner-border'></span>");
360 jQuery("button#save-media-folder").attr("disabled", true);
361 var orderNumber = -1;
362 jQuery(".folder_for_media option").each(function(){
363 thisText = jQuery(this).text();
364 if(jQuery.trim(thisText[0]) != "") {
365 orderNumber++;
366 }
367 });
368 jQuery.ajax({
369 url: folders_media_options.ajax_url,
370 data: "action=wcp_add_new_folder&parent_id=0&is_from_media=1&type=attachment&term_id=0&order="+orderNumber+"&name="+jQuery.trim(jQuery("#media-folder-name").val())+"&nonce=" +folders_media_options.nonce,
371 type: 'post',
372 success: function (res) {
373 result = jQuery.parseJSON(res);
374 if (result.status == '1') {
375 resetMediaID = result.id;
376 folders_media_options.is_key_active = result.is_key_active;
377 folders_media_options.folders = result.folders;
378 resetSelectMediaDropDown();
379 resetMediaScreen = true;
380 //resetSelectMediaDropDown();
381 } else {
382 jQuery(".folder-form-errors").html(result.message).show();
383 jQuery("button#save-media-folder").attr("disabled", false);
384 jQuery("button#save-media-folder").html("Submit");
385 }
386 }
387 });
388 }
389 return false;
390 });
391
392 jQuery(document).on("click", ".remove-media-form", function(e){
393 e.stopPropagation();
394 jQuery("#custom-folder-media-popup-form").remove();
395 jQuery(".folder_for_media").val("-1").trigger("change");
396 jQuery("#media-attachment-taxonomy-filter").each(function(){
397 jQuery(this).val("all").trigger("change");
398 });
399 });
400 jQuery(document).on("click", "#custom-folder-media-popup-form", function (e) {
401 jQuery("#custom-folder-media-popup-form").remove();
402 jQuery(".folder_for_media").val("-1").trigger("change");
403 jQuery("#media-attachment-taxonomy-filter").each(function(){
404 jQuery(this).val("all").trigger("change");
405 });
406 });
407 jQuery(document).on("click", ".media-popup-form", function (e) {
408 e.stopPropagation();
409 });