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 | }); |