Current Path : /home/ncdcgo/public_html/wp-content/plugins/soliloquy-lite/assets/js/ |
Current File : /home/ncdcgo/public_html/wp-content/plugins/soliloquy-lite/assets/js/media-insert.js |
/* global soliloquy_metabox_local, wp */ /*jshint unused: true*/ /** * Creates and handles a wp.media instance for soliloquy Galleries, allowing * the user to insert images from the Media Library into their Gallery */ jQuery(document).ready(function ($) { // Add Images $('a.soliloquy-media-library').on('click', function (e) { // Prevent default action e.preventDefault(); // If the wp.media.frames.soliloquy instance already exists, reopen it if (wp.media.frames.soliloquy) { wp.media.frames.soliloquy.open(); return; } else { // Create the wp.media.frames.soliloquy instance (one time) wp.media.frames.soliloquy = new wp.media.view.MediaFrame.Post({ title: wp.media.view.l10n.insertIntoPost, button: { text: wp.media.view.l10n.insertIntoPost, }, multiple: true, // Library WordPress query arguments. library: { // mime type. e.g. 'image', 'image/jpeg' type: 'image', } }); } // Mark existing Gallery images as selected when the modal is opened wp.media.frames.soliloquy.on('open', function () { // Get any previously selected images var selection = wp.media.frames.soliloquy.state().get('selection'); // Get images that already exist in the gallery, and select each one in the modal $('ul#soliloquy-output li').each(function () { var attachment = wp.media.attachment($(this).attr('id')); selection.add(attachment ? [attachment] : []); }); }); //Trigger Event when the frame is ready. wp.media.frames.soliloquy.on('ready', function () { }); // Insert into Gallery Button Clicked wp.media.frames.soliloquy.on('insert', function (selection) { // Get state var state = wp.media.frames.soliloquy.state(), images = []; // Iterate through selected images, building an images array selection.each(function (attachment) { // Get the chosen options for this image (size, alignment, link type, link URL) var display = state.display(attachment).toJSON(), type = attachment.get('type'); // Change the image link parameter based on the "Link To" setting the user chose in the media view switch (display.link) { case 'none': attachment.set('link', ''); break; case 'file': attachment.set('link', attachment.get('url')); break; case 'post': // Already linked to post by default break; case 'custom': attachment.set('link', display.linkUrl); break; } //Only allow images selections to be inserted if (type === 'image') { // Add the image to the images array images.push(attachment.toJSON()); } }, this); // Send the ajax request with our data to be processed. $.post( soliloquy_metabox_local.ajax, { action: 'soliloquy_insert_slides', nonce: soliloquy_metabox_local.insert_nonce, post_id: soliloquy_metabox_local.id, images: JSON.stringify(images), }, function (response) { // Response should be a JSON success with the HTML for the image grid if (response) { // Set the image grid to the HTML we received $('#soliloquy-output').html(response.data); // Repopulate the Soliloquy Slide Collection SoliloquySlidesUpdate(); var list = $('#soliloquy-output li').length; //update the count value $('.soliloquy-count').text(list.toString()); if (list > 0) { $('#soliloquy-empty-slider').fadeOut().addClass('soliloquy-hidden'); $('.soliloquy-slide-header').removeClass('soliloquy-hidden').fadeIn(); $('.soliloquy-bulk-actions').fadeOut(); } } }, 'json' ); }); // Open the media frame wp.media.frames.soliloquy.open(); // Remove the 'Create Gallery' left hand menu item in the modal, as we don't // want users inserting galleries! $('div.media-menu a.media-menu-item:nth-child(2)').addClass('hidden'); $('div.media-menu a.media-menu-item:nth-child(3)').addClass('hidden'); $('div.media-menu a.media-menu-item:nth-child(4)').addClass('hidden'); $('div.media-menu a.media-menu-item:nth-child(6)').addClass('hidden'); return; }); });