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