diff -r 2f6f6f7551ca -r 32102edaa81b web/wp-content/plugins/slideshow-jquery-image-gallery/js/SlideshowPluginSlideInserter/slide-inserter.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/wp-content/plugins/slideshow-jquery-image-gallery/js/SlideshowPluginSlideInserter/slide-inserter.js Mon Nov 19 18:26:13 2012 +0100 @@ -0,0 +1,300 @@ +jQuery(document).ready(function(){ + // Index first + slideshowSlideInserterIndexSlidesOrder(); + + // Make list items in the sortables list sortable, exclude elements with cancel option. + jQuery('.sortable-slides-list').sortable({ + revert: true, + stop: function(event, ui){ + slideshowSlideInserterIndexSlidesOrder(); + }, + cancel: 'input, select, p' + }); + + // Make the black background stretch all the way down the document + jQuery('#slideshow-slide-inserter-popup-background').height(jQuery(document).outerHeight(true)); + + // Center the popup in the window + jQuery('#slideshow-slide-inserter-popup').css({ + 'top': parseInt((jQuery(window).height() / 2) - (jQuery('#slideshow-slide-inserter-popup').outerHeight(true) / 2), 10), + 'left': parseInt((jQuery(window).width() / 2) - (jQuery('#slideshow-slide-inserter-popup').outerWidth(true) / 2), 10) + }); + + // Focus on search bar + jQuery('#slideshow-slide-inserter-popup #search').focus(); + + // Preload attachments + slideshowSlideInserterGetSearchResults(); + + /** + * Close popup when clicked on cross + */ + jQuery('#slideshow-slide-inserter-popup #close').click(function(){ + slideshowSlideInserterClosePopup(); + }); + + /** + * Close popup when clicked on background + */ + jQuery('#slideshow-slide-inserter-popup-background').click(function(){ + slideshowSlideInserterClosePopup(); + }); + + /** + * Send ajax request on click of the search button + */ + jQuery('#slideshow-slide-inserter-popup #search-submit').click(function(){ + slideshowSlideInserterGetSearchResults(); + }); + + /** + * Make the 'enter' key do the same as the search button + */ + jQuery('#slideshow-slide-inserter-popup #search').keypress(function(event){ + if(event.which == 13){ + event.preventDefault(); + slideshowSlideInserterGetSearchResults(); + } + }); + + /** + * Open popup by click on button + */ + jQuery('#slideshow-insert-image-slide').click(function(){ + jQuery('#slideshow-slide-inserter-popup, #slideshow-slide-inserter-popup-background').css({ display: 'block' }); + }); + + /** + * Insert text slide into the sortable list when the Insert Text Slide button is clicked + */ + jQuery('#slideshow-insert-text-slide').click(function(){ + slideshowSlideInserterInsertTextSlide(); + }); + + /** + * Insert video slide into the sortable list when the Insert Video Slide button is clicked + */ + jQuery('#slideshow-insert-video-slide').click(function(){ + slideshowSlideInserterInsertVideoSlide(); + }); + + /** + * Ajax deletes a slide from the slides list and from the database + */ + jQuery('.slideshow-delete-slide').click(function(){ + var confirmMessage = 'Are you sure you want to delete this slide?'; + if(typeof SlideInserterTranslations !== undefined) + confirmMessage = SlideInserterTranslations.confirmMessage; + + var deleteSlide = confirm(confirmMessage); + if(!deleteSlide) + return; + + // Get postId from url + var postId = -1; + jQuery.each(location.search.replace('?', '').split('&'), function(key, value){ + var splitValue = value.split('='); + if(splitValue[0] == 'post') + postId = splitValue[1]; + }); + + // Get slideId + var slideId = jQuery(this).find('span').attr('class'); + + + if(postId == -1 || slideId == 'undefined') + return; + + // Remove slide from DOM + jQuery(this).parent().remove(); + + // Remove slide by AJAX. + jQuery.post( + ajaxurl, + { + action: 'slideshow_delete_slide', + postId: postId, + slideId: slideId + } + ); + }); + + /** + * Loop through list items, fill hidden field with loop id + */ + function slideshowSlideInserterIndexSlidesOrder(){ + jQuery.each(jQuery('.sortable-slides-list').find('li'), function(key, value){ + jQuery(value).find('.slide_order').attr('value', key + 1); + }); + } + + /** + * Sends an ajax post request with the search query and print + * retrieved html to the results table. + * + * If offset is set, append data to data that is already there + * + * @param offset (optional, defaults to 0) + */ + function slideshowSlideInserterGetSearchResults(offset){ + if(!offset){ + offset = 0; + jQuery('#slideshow-slide-inserter-popup #results').html(''); + } + + jQuery.post( + ajaxurl, + { + action: 'slideshow_slide_inserter_search_query', + search: jQuery('#slideshow-slide-inserter-popup #search').attr('value'), + offset: offset + }, + function(response){ + // Fill table + jQuery('#slideshow-slide-inserter-popup #results').append(response); + + // Apply insert to slideshow script + jQuery('#slideshow-slide-inserter-popup #results .insert-attachment').click(function(){ + var tr = jQuery(this).closest('tr'); + slideshowSlideInserterInsertImageSlide( + jQuery(this).attr('id'), + jQuery(tr).find('.title').text(), + jQuery(tr).find('.description').text(), + jQuery(tr).find('.image img').attr('src') + ); + }); + + // Load more results on click of the 'Load more results' button + if(jQuery('.load-more-results')){ + jQuery('.load-more-results').click(function(){ + // Get offset + var previousOffset = jQuery(this).attr('class').split(' ')[2]; + + // Load ajax results + slideshowSlideInserterGetSearchResults(previousOffset); + + // Remove button row + jQuery(this).closest('tr').remove(); + }); + } + } + ); + } + + /** + * Inserts image slide into the slides list + * + * @param id + * @param title + * @param description + * @param src + */ + function slideshowSlideInserterInsertImageSlide(id, title, description, src){ + if(slideshowHighestSlideId == 'undefined') + return; + + slideshowHighestSlideId++; + var imageSlide = jQuery('.image-slide-template').find('li').clone(); + + // Fill slide with data + imageSlide.find('.attachment').attr('src', src); + imageSlide.find('.attachment').attr('title', title); + imageSlide.find('.attachment').attr('alt', title); + imageSlide.find('.title').html(title); + imageSlide.find('.description').html(description); + imageSlide.find('.postId').attr('value', id); + + // Set names to be saved to the database + imageSlide.find('.url').attr('name', 'slide_' + slideshowHighestSlideId + '_url'); + imageSlide.find('.type').attr('name', 'slide_' + slideshowHighestSlideId + '_type'); + imageSlide.find('.postId').attr('name', 'slide_' + slideshowHighestSlideId + '_postId'); + imageSlide.find('.slide_order').attr('name', 'slide_' + slideshowHighestSlideId + '_order'); + + // Register delete link (only needs to delete from DOM) + imageSlide.find('.slideshow-delete-new-slide').click(function(){ + var deleteSlide = confirm('Are you sure you want to delete this slide?'); + if(!deleteSlide) + return; + + jQuery(this).closest('li').remove(); + }); + + // Put slide in the sortables list. + jQuery('.sortable-slides-list').prepend(imageSlide); + + // Reindex + slideshowSlideInserterIndexSlidesOrder(); + } + + /** + * Inserts text slide into the slides list + */ + function slideshowSlideInserterInsertTextSlide(){ + if(slideshowHighestSlideId == 'undefined') + return; + + slideshowHighestSlideId++; + var textSlide = jQuery('.text-slide-template').find('li').clone(); + + // Set names to be saved to the database + textSlide.find('.title').attr('name', 'slide_' + slideshowHighestSlideId + '_title'); + textSlide.find('.description').attr('name', 'slide_' + slideshowHighestSlideId + '_description'); + textSlide.find('.color').attr('name', 'slide_' + slideshowHighestSlideId + '_color'); + textSlide.find('.url').attr('name', 'slide_' + slideshowHighestSlideId + '_url'); + textSlide.find('.type').attr('name', 'slide_' + slideshowHighestSlideId + '_type'); + textSlide.find('.slide_order').attr('name', 'slide_' + slideshowHighestSlideId + '_order'); + + // Register delete link (only needs to delete from DOM) + textSlide.find('.slideshow-delete-new-slide').click(function(){ + var deleteSlide = confirm('Are you sure you want to delete this slide?'); + if(!deleteSlide) + return; + + jQuery(this).closest('li').remove(); + }); + + // Put slide in the sortables list. + jQuery('.sortable-slides-list').prepend(textSlide); + + // Reindex slide orders + slideshowSlideInserterIndexSlidesOrder(); + } + + /** + * Inserts video slide into the slides list + */ + function slideshowSlideInserterInsertVideoSlide(){ + if(slideshowHighestSlideId == 'undefined') + return; + + slideshowHighestSlideId++; + var videoSlide = jQuery('.video-slide-template').find('li').clone(); + + // Set names to be saved to the database + videoSlide.find('.videoId').attr('name', 'slide_' + slideshowHighestSlideId + '_videoId'); + videoSlide.find('.type').attr('name', 'slide_' + slideshowHighestSlideId + '_type'); + videoSlide.find('.slide_order').attr('name', 'slide_' + slideshowHighestSlideId + '_order'); + + // Register delete link (only needs to delete from DOM) + videoSlide.find('.slideshow-delete-new-slide').click(function(){ + var deleteSlide = confirm('Are you sure you want to delete this slide?'); + if(!deleteSlide) + return; + + jQuery(this).closest('li').remove(); + }); + + // Put slide in the sortables list. + jQuery('.sortable-slides-list').prepend(videoSlide); + + // Reindex slide orders + slideshowSlideInserterIndexSlidesOrder(); + } + + /** + * Closes popup + */ + function slideshowSlideInserterClosePopup(){ + jQuery('#slideshow-slide-inserter-popup, #slideshow-slide-inserter-popup-background').css({ display: 'none' }); + } +}); \ No newline at end of file