PluginProbe ʕ •ᴥ•ʔ
Folders – Unlimited Folders to Organize Media Library Folder, Pages, Posts, File Manager / 2.4.7
Folders – Unlimited Folders to Organize Media Library Folder, Pages, Posts, File Manager v2.4.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 6 years ago livequery.min.js 6 years ago media.js 6 years ago select2.min.js 6 years ago spectrum.min.js 6 years ago
media.js
249 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 var selectedFolderMediaId = -1;
128 var filesInQueue = 0;
129 var uploadedFileCount = 0;
130 jQuery(document).on("change", ".folder_for_media", function(){
131 if(jQuery(this).val() != "add-folder") {
132 selectedFolderMediaId = jQuery(this).val();
133 } else {
134 selectedFolderMediaId = -1;
135 }
136
137 if(jQuery(".media-toolbar #media-attachment-taxonomy-filter").length) {
138 jQuery("#media-attachment-taxonomy-filter").val(jQuery(this).val());
139 jQuery("#media-attachment-taxonomy-filter").trigger("change");
140 }
141 });
142
143 jQuery(document).on("change", "#media-attachment-taxonomy-filter", function(){
144 jQuery(".folder_for_media").val(jQuery(this).val());
145 selectedFolderMediaId = jQuery(this).val();
146 });
147
148 function resetDDCounter() {
149 var currentDDVal = jQuery("#media-attachment-taxonomy-filter").val();
150 jQuery.ajax({
151 url: folders_media_options.ajax_url,
152 data: "type=attachment&action=wcp_get_default_list&active_id=0",
153 method: 'post',
154 success: function (res) {
155 res = jQuery.parseJSON(res);
156
157 if(jQuery("#media-attachment-taxonomy-filter").length) {
158 folders_media_options.terms = res.taxonomies;
159 var selectedDD = jQuery("#media-attachment-taxonomy-filter");
160 selectedDD.html("<option value='all'>All Folders</option><option value='unassigned'>(Unassigned)</option>");
161 for (i = 0; i < res.taxonomies.length; i++) {
162 selectedDD.append("<option value='" + res.taxonomies[i].term_id + "'>" + res.taxonomies[i].name + " (" + res.taxonomies[i].count + ")</option>");
163 }
164 selectedDD.val(currentDDVal);
165 }
166 }
167 })
168 }
169
170 var wp = window.wp;
171 //Upload on page Media Library (upload.php)
172 if (typeof wp !== 'undefined' && typeof wp.Uploader === 'function') {
173 wp.media.view.Modal.prototype.on('open', function() {
174 setTimeout(function(){
175 if(jQuery("#media-attachment-taxonomy-filter").length) {
176 if(jQuery("#media-attachment-taxonomy-filter").val() == "all") {
177 jQuery("#media-attachment-taxonomy-filter option:gt(1)").remove();
178 _.each(folders_media_options.terms, function(term, index){
179 jQuery("#media-attachment-taxonomy-filter").append("<option value='" + term.term_id + "'>" + term.name + " (" + term.count + ")</option>")
180 });
181 }
182 }
183 },1500);
184 });
185 jQuery.extend(wp.Uploader.prototype, {
186 progress: function () {
187 },
188 init: function () {
189 if (this.uploader) {
190 this.uploader.bind('FileFiltered', function (up, file) {
191 filesInQueue++;
192 jQuery(".folder-meter").css("width", "0%");
193 jQuery(".media-folder-loader").show();
194 jQuery("#total_upload_files").text(filesInQueue);
195 });
196 this.uploader.bind('BeforeUpload', function (uploader, file) {
197 var folder_id = selectedFolderMediaId;
198 var params = uploader.settings.multipart_params;
199 folder_id = parseInt(folder_id);
200 if (folder_id > 0) {
201 params.folder_for_media = folder_id;
202 }
203 if(uploadedFileCount < filesInQueue) {
204 jQuery(".media-folder-loader").show();
205 var progress_width = uploadedFileCount/filesInQueue*100;
206 jQuery(".folder-meter").css("width", progress_width+"%");
207 }
208 uploadedFileCount++;
209 jQuery("#current_upload_files").text(uploadedFileCount);
210
211 });
212 this.uploader.bind('UploadComplete', function (up, files) {
213 selectedFolderMediaId = -1;
214 });
215 this.uploader.bind('UploadComplete', function (up, files) {
216 var wp_media = window.wp;
217
218 jQuery(".folder-meter").css("width", "100%");
219 setTimeout(function(){
220 jQuery(".media-folder-loader").hide();
221 jQuery(".folder-meter").css("width", "0%");
222 filesInQueue = 0;
223 uploadedFileCount = 0;
224 }, 1250);
225
226 resetDDCounter();
227
228 if( wp_media.media.frame.content.get() !== null) {
229 wp_media.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
230 wp_media.media.frame.content.get().options.selection.reset();
231 } else {
232 //wp_media.media.frame.library.props.set ({ignore: (+ new Date())});
233 if(jQuery("#media-attachment-taxonomy-filter").length) {
234 jQuery(".attachment-filters").each(function(){
235 jQuery(this).trigger("change");
236 });
237 }
238 }
239 });
240 }
241 }
242 });
243 }
244
245 jQuery( document ).ajaxComplete(function( event, request, settings ) {
246 if(settings.data != undefined && settings.data.indexOf("action=delete-post")>-1) {
247 resetDDCounter();
248 }
249 });