mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +01:00 
			
		
		
		
	
		
			
	
	
		
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | "use strict"; | ||
|  | /*global ajaxify, socket, templates*/ | ||
|  | 
 | ||
|  | (function(ajaxify) { | ||
|  | 	ajaxify.widgets.reposition = function() { | ||
|  | 		$('body [no-widget-class]').each(function() { | ||
|  | 			var $this = $(this); | ||
|  | 			$this.removeClass(); | ||
|  | 			$this.addClass($this.attr('no-widget-class')); | ||
|  | 		}); | ||
|  | 	}; | ||
|  | 
 | ||
|  | 	ajaxify.widgets.render = function(tpl_url, url, callback) { | ||
|  | 		var widgetLocations = [], numLocations; | ||
|  | 
 | ||
|  | 		$('#content [widget-area]').each(function() { | ||
|  | 			widgetLocations.push($(this).attr('widget-area')); | ||
|  | 		}); | ||
|  | 
 | ||
|  | 		numLocations = widgetLocations.length; | ||
|  | 
 | ||
|  | 		if (!numLocations) { | ||
|  | 			ajaxify.widgets.reposition(); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		function renderWidgets(location) { | ||
|  | 			var area = $('#content [widget-area="' + location + '"]'); | ||
|  | 
 | ||
|  | 			socket.emit('widgets.render', {template: tpl_url + '.tpl', url: url, location: location}, function(err, renderedWidgets) { | ||
|  | 				if (area.html()) { | ||
|  | 					area.html(templates.parse(area.html(), {widgets: renderedWidgets})) | ||
|  | 						.removeClass('hidden'); | ||
|  | 
 | ||
|  | 					if (!renderedWidgets.length) { | ||
|  | 						ajaxify.widgets.reposition(); | ||
|  | 					} | ||
|  | 				} | ||
|  | 
 | ||
|  | 				$('#content [widget-area] img:not(.user-img)').addClass('img-responsive'); | ||
|  | 				checkCallback(); | ||
|  | 			}); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		function checkCallback() { | ||
|  | 			numLocations--; | ||
|  | 			if (numLocations < 0 && callback) { | ||
|  | 				callback(); | ||
|  | 			} | ||
|  | 		} | ||
|  | 
 | ||
|  | 		for (var i in widgetLocations) { | ||
|  | 			if (widgetLocations.hasOwnProperty(i)) { | ||
|  | 				renderWidgets(widgetLocations[i]); | ||
|  | 			} | ||
|  | 		} | ||
|  | 
 | ||
|  | 		checkCallback(); | ||
|  | 	}; | ||
|  | }(ajaxify || {})); |