web/wp-content/plugins/slideshow-jquery-image-gallery/js/SlideshowPluginSlideInserter/slide-inserter.js
changeset 194 32102edaa81b
--- /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