mirror of
				https://github.com/e107inc/e107.git
				synced 2025-10-29 04:38:07 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			472 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			472 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* global $ */
 | |
| 
 | |
| var e107 = e107 || {'settings': {}, 'behaviors': {}};
 | |
| 
 | |
| (function ($)
 | |
| {
 | |
| 	// In case the page was opened with a hash, prevent jumping to it.
 | |
| 	// http://stackoverflow.com/questions/3659072/how-to-disable-anchor-jump-when-loading-a-page
 | |
| 	if(window.location.hash)
 | |
| 	{
 | |
| 		$('html, body').stop().animate({scrollTop: 0});
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Behavior to initialize Smooth Scrolling on document, if URL has a fragment.
 | |
| 	 * TODO: create theme option on the admin panel to:
 | |
| 	 * - enable/disable smooth scrolling
 | |
| 	 * - change animation duration
 | |
| 	 * - set top-offset if theme has a fixed top navigation bar
 | |
| 	 *
 | |
| 	 * @type {{attach: Function}}
 | |
| 	 */
 | |
| 	e107.behaviors.initializeSmoothScrolling = {
 | |
| 		attach: function (context, settings)
 | |
| 		{
 | |
| 			if(window.location.hash && e107.callbacks.isValidSelector(window.location.hash))
 | |
| 			{
 | |
| 				$(context).find('body').one('initialize-smooth-scrolling').each(function ()
 | |
| 				{
 | |
| 					if($(window.location.hash).length !== 0)
 | |
| 					{
 | |
| 						$('html, body').stop().animate({
 | |
| 							scrollTop: $(window.location.hash).offset().top
 | |
| 						}, 2000);
 | |
| 
 | |
| 						return false;
 | |
| 					}
 | |
| 				});
 | |
| 			}
 | |
| 		}
 | |
| 	};
 | |
| 
 | |
| 	/**
 | |
| 	 * Initializes click event on '.e-modal' elements.
 | |
| 	 *
 | |
| 	 * @type {{attach: e107.behaviors.eModalFront.attach}}
 | |
| 	 */
 | |
| 	e107.behaviors.eModalFront = {
 | |
| 		attach: function (context, settings)
 | |
| 		{
 | |
| 			$(context).find('.e-modal').one('e-modal-front').each(function ()
 | |
| 			{
 | |
| 				var $that = $(this);
 | |
| 
 | |
| 				$that.on('click', function ()
 | |
| 				{
 | |
| 					var $this = $(this);
 | |
| 
 | |
| 					if($this.attr('data-cache') == 'false')
 | |
| 					{
 | |
| 						$('#uiModal').on('shown.bs.modal', function ()
 | |
| 						{
 | |
| 							$(this).removeData('bs.modal');
 | |
| 						});
 | |
| 					}
 | |
| 
 | |
| 					var url = $this.attr('href');
 | |
| 					var caption = $this.attr('data-modal-caption');
 | |
| 					var backdrop = $this.attr('data-modal-backdrop');
 | |
| 					var keyboard = $this.attr('data-modal-keyboard');
 | |
| 					var height = ($(window).height() * 0.7) - 120;
 | |
| 
 | |
| 					var modalOptions = {show: true};
 | |
| 
 | |
| 					if(backdrop !== undefined)
 | |
| 					{
 | |
| 						modalOptions['backdrop'] = backdrop;
 | |
| 					}
 | |
| 
 | |
| 					if(keyboard !== undefined)
 | |
| 					{
 | |
| 						modalOptions['keyboard'] = keyboard;
 | |
| 					}
 | |
| 
 | |
| 					if(caption === undefined)
 | |
| 					{
 | |
| 						caption = '';
 | |
| 					}
 | |
| 
 | |
| 					if($this.attr('data-modal-height') !== undefined)
 | |
| 					{
 | |
| 						height = $(this).attr('data-modal-height');
 | |
| 					}
 | |
| 
 | |
| 					$('#uiModal .modal-body').html('<div><iframe id="e-modal-iframe" width="100%" height="' + height + 'px" frameborder="0" scrolling="auto" style="display:block;" allowtransparency="true" allowfullscreen src="' + url + '"></iframe></div>');
 | |
| 					$('#uiModal .modal-caption').html(caption + ' <i id="e-modal-loading" class="fa fa-spin fa-spinner"></i>');
 | |
| 					$('#uiModal.modal').modal(modalOptions);
 | |
| 
 | |
| 					$("#e-modal-iframe").on("load", function ()
 | |
| 					{
 | |
| 						$('#e-modal-loading').hide();
 | |
| 					});
 | |
| 
 | |
| 					return false;
 | |
| 				});
 | |
| 			});
 | |
| 		}
 | |
| 	};
 | |
| 
 | |
| })(jQuery);
 | |
| 
 | |
| 
 | |
| $(document).ready(function()
 | |
| {
 | |
| 
 | |
| 	 if (typeof tooltip === "function")
 | |
| 	 {
 | |
| 		$(":input").tooltip();
 | |
| 	 }
 | |
| 	/*	
 | |
| 		$(":input,label,.e-tip").each(function() {
 | |
| 			
 | |
| 			var field = $(this).nextAll(".field-help");
 | |
| 		
 | |
| 			if(field.length == 0)
 | |
| 			{
 | |
| 				$(this).tooltip({placement: 'right',fade: true}); // Normal 'title' attribute
 | |
| 				return;	
 | |
| 			}
 | |
| 			
 | |
| 			
 | |
| 			field.hide();		
 | |
| 			$(this).tooltip({
 | |
| 				title: 	function() {
 | |
| 							return field.html(); // field-help when HTML is required. 	 			 	
 | |
| 						},
 | |
| 				fade: true,
 | |
| 				live: true,
 | |
| 				html: true,
 | |
| 				placement: 'right'  
 | |
| 			});
 | |
| 		});
 | |
| 	*/
 | |
| 	//	var color = $(".divider").parents().css("background-color");
 | |
| 		
 | |
| 	
 | |
| 		// $(".e-tip").tipsy({gravity: 'sw',fade: true, live: true});
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     $(document).on("click", ".e-comment-submit", function(){
 | |
| 			
 | |
| 			var url		= $(this).attr("data-target");
 | |
| 			var sort	= $(this).attr("data-sort");
 | |
| 			var pid 	= parseInt($(this).attr("data-pid"));
 | |
| 			var formid 	= (pid != '0') ? "#e-comment-form-reply" : "#e-comment-form";
 | |
| 			var data 	= $('form'+formid).serializeArray() ;
 | |
| 			var total 	= parseInt($("#e-comment-total").text());
 | |
| 			var container =  '#' + $(this).attr("data-container");
 | |
| 			var input 	=  '#' + $(this).attr("data-input");
 | |
| 
 | |
| 			//TODO replace _POST['comment'] with $(input).val() so we can rename 'comment' in the form to something unique. 
 | |
| 
 | |
| 			$.ajax({
 | |
| 			  type: 'POST',
 | |
| 			  url: url + '?ajax_used=1&mode=submit',
 | |
| 			  data: data,
 | |
| 			  success: function(data) {
 | |
| 			  	
 | |
| 			//  	alert(data);
 | |
| 			 // 	console.log(data);
 | |
| 			  	var a = $.parseJSON(data);
 | |
| 
 | |
| 				$(input).val('');
 | |
| 				
 | |
| 				if(pid != 0)
 | |
| 				{
 | |
| 					$('#comment-'+pid).after(a.html).hide().slideDown(800);	
 | |
| 				}
 | |
| 				else if(sort == 'desc')
 | |
| 				{
 | |
| 					$(container).prepend(a.html).hide().slideDown(800);	// FIXME - works in jquery 1.7, not 1.8
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					$(container).append(a.html).hide().slideDown(800); // FIXME - works in jquery 1.7, not 1.8
 | |
| 					alert('Thank you for commenting'); // possibly needed as the submission may go unoticed	by the user
 | |
| 				}  
 | |
| 				
 | |
| 				if(!a.error)
 | |
| 				{
 | |
| 					$("#e-comment-total").text(total + 1);
 | |
| 
 | |
| 					if(pid != '0')
 | |
| 					{
 | |
| 						$(formid).hide();		
 | |
| 					}	
 | |
| 					
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					alert(a.msg);	
 | |
| 				}
 | |
| 			  	return false;	
 | |
| 			  }
 | |
| 			});
 | |
| 			
 | |
| 			return false;
 | |
| 
 | |
| 		});
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     $(document).on("click", ".e-comment-reply", function(){
 | |
| 			
 | |
| 			var url 	= $(this).attr("data-target");
 | |
| 			var table 	= $(this).attr("data-type");
 | |
| 			var sp 		= $(this).attr('id').split("-");
 | |
| 			var id 		= "#comment-" + sp[3];
 | |
| 
 | |
| 			var present = $('#e-comment-form-reply'); 
 | |
| 		//	console.log(present);
 | |
| 			
 | |
| 
 | |
| 
 | |
| 			if($('.e-comment-edit-save').length !== 0 || $('#e-comment-form-reply').length !== 0 ) //prevent creating save button twice.
 | |
| 			{
 | |
| 				return false;
 | |
| 			}
 | |
| 
 | |
| 			$.ajax({
 | |
| 			  type: 'POST',
 | |
| 			  url: url + '?ajax_used=1&mode=reply',
 | |
| 			  data: { itemid: sp[3], table: table },
 | |
| 			  success: function(data) {
 | |
| 
 | |
| 			 // 	alert(url);
 | |
| 			  	var a = $.parseJSON(data);
 | |
| 
 | |
| 				if(!a.error)
 | |
| 				{
 | |
| 					// alert(a.html);
 | |
| 					 $(id).after(a.html).hide().slideDown(800);
 | |
| 				}
 | |
| 
 | |
| 			  }
 | |
| 			});
 | |
| 		
 | |
| 			return false;		
 | |
| 	});
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     $(document).on("click", ".e-comment-edit", function(){
 | |
| 			
 | |
|         var url = $(this).attr("data-target");
 | |
|         var sp = $(this).attr('id').split("-");
 | |
|         var id = "#comment-" + sp[3] + "-edit";
 | |
| 
 | |
|         if($('.e-comment-edit-save').length != 0) //prevent creating save button twice.
 | |
|         {
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         $(id).attr('contentEditable',true);
 | |
|         $(id).after("<div class='e-comment-edit-save'><input data-target='"+url+"' id='e-comment-edit-save-"+sp[3]+"' class='button btn btn-success e-comment-edit-save' type='button' value='Save' /></div>");
 | |
|         $('div.e-comment-edit-save').hide().fadeIn(800);
 | |
|         $(id).addClass("e-comment-edit-active");
 | |
|         $(id).focus();
 | |
|         return false;
 | |
| 	});
 | |
| 
 | |
| 
 | |
|     $(document).on("click", "input.e-comment-edit-save", function(){
 | |
| 			
 | |
| 			var url 	= $(this).attr("data-target");
 | |
| 			var sp 		= $(this).attr('id').split("-");	
 | |
| 			var id 		= "#comment-" + sp[4] + "-edit";
 | |
| 			var comment = $(id).text();
 | |
| 
 | |
| 
 | |
| 			$(id).attr('contentEditable',false);
 | |
| 			
 | |
| 		        $.ajax({
 | |
| 		            url: url + '?ajax_used=1&mode=edit',
 | |
| 		            type: 'POST',
 | |
| 		            data: {
 | |
| 		            	comment: comment,
 | |
| 		            	itemid: sp[4]
 | |
| 		            },
 | |
| 		            success:function (data) {
 | |
| 		            
 | |
| 		            	var a = $.parseJSON(data);
 | |
| 		            
 | |
| 		            	if(!a.error)
 | |
| 		            	{
 | |
| 		            	 	$("div.e-comment-edit-save")
 | |
| 		            	 	.hide()
 | |
| 		                    .addClass("alert alert-success e-comment-edit-success")
 | |
| 		                    .html(a.msg)
 | |
| 		                    .fadeIn('slow')
 | |
| 		                    .delay(1500)
 | |
| 		                    .fadeOut(2000);
 | |
| 		                    
 | |
| 						}
 | |
| 						else
 | |
| 						{
 | |
| 							 $("div.e-comment-edit-save")
 | |
| 		                    .addClass("alert alert-danger e-comment-edit-error")
 | |
| 		                    .html(a.msg)
 | |
| 		                    .fadeIn('slow')
 | |
| 		                    .delay(1500)
 | |
| 		                    .fadeOut('slow');				
 | |
| 						}
 | |
| 		            	$(id).removeClass("e-comment-edit-active");
 | |
| 		            	
 | |
| 		            	setTimeout(function() {
 | |
| 						  $('div.e-comment-edit-save').remove();
 | |
| 						}, 2000);
 | |
| 
 | |
| 		            //	.delay(1000);
 | |
| 		            //	alert(data);
 | |
| 		            	return;
 | |
| 		            }
 | |
| 		        });
 | |
| 		 
 | |
| 			
 | |
| 		});
 | |
| 
 | |
| 
 | |
| 
 | |
|     $(document).on("click", ".e-comment-delete", function(){
 | |
| 			
 | |
| 			var url 	= $(this).attr("data-target");
 | |
| 			var table 	= $(this).attr("data-type");
 | |
| 			var itemid 	= $(this).attr("data-itemid");
 | |
| 			var sp 		= $(this).attr('id').split("-");	
 | |
| 			var id 		= "#comment-" + sp[3];
 | |
| 			var total 	= parseInt($("#e-comment-total").text());
 | |
| 	
 | |
| 			$.ajax({
 | |
| 			  type: 'POST',
 | |
| 			  url: url + '?ajax_used=1&mode=delete',
 | |
| 			  data: { id: sp[3], itemid: itemid, table: table },
 | |
| 			  success: function(data) {
 | |
| 			var a = $.parseJSON(data);
 | |
| 			  
 | |
| 				if(!a.error)
 | |
| 				{
 | |
| 					$(id).hide('slow');
 | |
| 					$("#e-comment-total").text(total - 1);	
 | |
| 				}
 | |
| 
 | |
| 			  }
 | |
| 			});
 | |
| 			
 | |
| 			return false;
 | |
| 
 | |
| 		});
 | |
| 
 | |
|     $(document).on("click", ".e-comment-approve", function() {
 | |
| 			
 | |
| 			var url = $(this).attr("data-target");
 | |
| 			var sp = $(this).attr('id').split("-");	
 | |
| 			var id = "#comment-status-" + sp[3];
 | |
| 	
 | |
| 			$.ajax({
 | |
| 			  type: 'POST',
 | |
| 			  url: url + '?ajax_used=1&mode=approve',
 | |
| 			  data: { itemid: sp[3] },
 | |
| 			  success: function(data) {
 | |
| 	
 | |
| 			  
 | |
| 			var a = $.parseJSON(data);
 | |
| 			
 | |
| 	
 | |
| 				if(!a.error)
 | |
| 				{		
 | |
| 					//TODO modify status of html on page 	
 | |
| 					 $(id).text(a.html)
 | |
| 					 .fadeIn('slow')
 | |
| 					 .addClass('e-comment-edit-success'); //TODO another class?
 | |
| 					 
 | |
| 					 $('#e-comment-approve-'+sp[3]).hide('slow');
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					alert(a.msg);	
 | |
| 				}
 | |
| 			  }
 | |
| 			});
 | |
| 			
 | |
| 			return false;
 | |
| 
 | |
| 		});
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     $(document).on("click", ".e-rate-thumb", function(){
 | |
| 					
 | |
| 			var src 		= $(this).attr("href");	
 | |
| 			var thumb 		= $(this);	
 | |
| 			var tmp 		= src.split('#');
 | |
| 			var	id 			= tmp[1];
 | |
| 			var	src 		= tmp[0];
 | |
| 			
 | |
|  
 | |
| 			$.ajax({
 | |
| 				type: "POST",
 | |
| 				url: src,
 | |
| 				data: { ajax_used: 1, mode: 'thumb' },
 | |
| 				dataType: "html",
 | |
| 				success: function(html) {
 | |
| 					
 | |
| 					if(html === '')
 | |
| 					{
 | |
| 						return false;	
 | |
| 					}
 | |
| 					
 | |
| 					var tmp = html.split('|');
 | |
| 					up= tmp[0];
 | |
| 					down = tmp[1];	
 | |
| 					
 | |
| 				    $('#'+id +'-up').text(up);
 | |
| 				    $('#'+id +'-down').text(down);
 | |
| 				    thumb.attr('title','Thanks for voting');
 | |
| 				    // alert('Thanks for liking');		
 | |
| 				}
 | |
| 			});
 | |
| 			
 | |
| 			return false; 	
 | |
| 		});
 | |
| 
 | |
| 	
 | |
| 	
 | |
| 	
 | |
| 	
 | |
| 		/* Switch to Tab containing invalid form field. */
 | |
| 		$('input[type=submit],button[type=submit]').on('click', function() {
 | |
| 			
 | |
| 			var id = $(this).closest('form').attr('id'), found = false;
 | |
| 				
 | |
| 			$('#'+ id).find(':invalid').each(function (index, node) {
 | |
| 
 | |
| 			var tab = $('#'+node.id).closest('.tab-pane').attr('id');
 | |
| 			// console.log(node.id);
 | |
| 			
 | |
| 			if(tab && (found === false))
 | |
| 			{
 | |
| 				$('a[href="#'+tab+'"]').tab('show');
 | |
| 					found = true;
 | |
| 				}
 | |
| 	
 | |
| 			});
 | |
|             
 | |
|             return true;
 | |
| 		});
 | |
| 
 | |
| });
 |