| 
									
										
										
										
											2014-03-28 14:18:42 -04:00
										 |  |  | "use strict"; | 
					
						
							| 
									
										
										
										
											2014-07-09 19:23:03 -04:00
										 |  |  | /*global ajaxify, templates*/ | 
					
						
							| 
									
										
										
										
											2014-03-28 14:18:42 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | (function(ajaxify) { | 
					
						
							| 
									
										
										
										
											2014-03-28 15:35:07 -04:00
										 |  |  | 	ajaxify.widgets = {}; | 
					
						
							| 
									
										
										
										
											2014-04-03 17:27:26 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-31 12:54:27 -04:00
										 |  |  | 	ajaxify.widgets.reposition = function(location) { | 
					
						
							| 
									
										
										
										
											2014-03-28 14:18:42 -04:00
										 |  |  | 		$('body [no-widget-class]').each(function() { | 
					
						
							|  |  |  | 			var $this = $(this); | 
					
						
							| 
									
										
										
										
											2014-03-31 12:54:27 -04:00
										 |  |  | 			if ($this.attr('no-widget-target') === location) { | 
					
						
							|  |  |  | 				$this.removeClass(); | 
					
						
							| 
									
										
										
										
											2014-04-03 17:27:26 -04:00
										 |  |  | 				$this.addClass($this.attr('no-widget-class')); | 
					
						
							| 
									
										
										
										
											2014-03-31 12:54:27 -04:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2014-03-28 14:18:42 -04:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-09 19:23:03 -04:00
										 |  |  | 	ajaxify.widgets.render = function(template, url, callback) { | 
					
						
							| 
									
										
										
										
											2014-05-28 16:30:16 -04:00
										 |  |  | 		var widgetLocations = ['sidebar', 'footer', 'header'], numLocations; | 
					
						
							| 
									
										
										
										
											2014-03-28 14:18:42 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		$('#content [widget-area]').each(function() { | 
					
						
							| 
									
										
										
										
											2014-04-09 16:35:51 -04:00
										 |  |  | 			var location = $(this).attr('widget-area'); | 
					
						
							|  |  |  | 			if ($.inArray(location, widgetLocations) === -1) { | 
					
						
							|  |  |  | 				widgetLocations.push(location); | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2014-03-28 14:18:42 -04:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		numLocations = widgetLocations.length; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (!numLocations) { | 
					
						
							|  |  |  | 			ajaxify.widgets.reposition(); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-07-20 14:35:16 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-16 10:12:12 -04:00
										 |  |  | 		function renderWidgets(locations) { | 
					
						
							|  |  |  | 			var areaDatas = []; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-04 18:30:21 -04:00
										 |  |  | 			$.get(RELATIVE_PATH + '/api/widgets/render' + (config['cache-buster'] ? '?v=' + config['cache-buster'] : ''), { | 
					
						
							| 
									
										
										
										
											2014-09-16 10:12:12 -04:00
										 |  |  | 				locations: locations, | 
					
						
							|  |  |  | 				template: template + '.tpl', | 
					
						
							|  |  |  | 				url: url | 
					
						
							|  |  |  | 			}, function(renderedAreas) { | 
					
						
							|  |  |  | 				for (var x=0; x<renderedAreas.length; ++x) { | 
					
						
							|  |  |  | 					var renderedWidgets = renderedAreas[x].widgets, | 
					
						
							|  |  |  | 						location = renderedAreas[x].location, | 
					
						
							|  |  |  | 						html = ''; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					for (var i=0; i<renderedWidgets.length; ++i) { | 
					
						
							|  |  |  | 						html += templates.parse(renderedWidgets[i].html, {}); | 
					
						
							| 
									
										
										
										
											2014-04-01 11:22:03 -04:00
										 |  |  | 					} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-16 10:12:12 -04:00
										 |  |  | 					var area = $('#content [widget-area="' + location + '"]'); | 
					
						
							| 
									
										
										
										
											2014-04-01 11:22:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-16 10:12:12 -04:00
										 |  |  | 					if (!area.length && window.location.pathname.indexOf('/admin') === -1 && renderedWidgets.length) { | 
					
						
							|  |  |  | 						if (location === 'footer' && !$('#content [widget-area="footer"]').length) { | 
					
						
							|  |  |  | 							$('#content').append($('<div class="col-xs-12"><div widget-area="footer"></div></div>')); | 
					
						
							|  |  |  | 						} else if (location === 'sidebar' && !$('#content [widget-area="sidebar"]').length) { | 
					
						
							|  |  |  | 							$('#content > *').wrapAll($('<div class="col-lg-9 col-xs-12"></div>')); | 
					
						
							|  |  |  | 							$('#content').append($('<div class="col-lg-3 col-xs-12"><div widget-area="sidebar"></div></div>')); | 
					
						
							|  |  |  | 						} else if (location === 'header' && !$('#content [widget-area="header"]').length) { | 
					
						
							|  |  |  | 							$('#content').prepend($('<div class="col-xs-12"><div widget-area="header"></div></div>')); | 
					
						
							|  |  |  | 						} | 
					
						
							| 
									
										
										
										
											2014-06-22 17:08:55 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-16 10:12:12 -04:00
										 |  |  | 						area = $('#content [widget-area="' + location + '"]'); | 
					
						
							|  |  |  | 					} | 
					
						
							| 
									
										
										
										
											2014-03-28 16:01:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-16 10:12:12 -04:00
										 |  |  | 					area.html(html); | 
					
						
							| 
									
										
										
										
											2014-03-28 14:18:42 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-16 10:12:12 -04:00
										 |  |  | 					if (!renderedWidgets.length) { | 
					
						
							|  |  |  | 						area.addClass('hidden'); | 
					
						
							|  |  |  | 						ajaxify.widgets.reposition(location); | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					$('#content [widget-area] img:not(.user-img)').addClass('img-responsive');	 | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				 | 
					
						
							| 
									
										
										
										
											2014-05-26 11:37:50 -04:00
										 |  |  | 				$(window).trigger('action:widgets.loaded', {}); | 
					
						
							| 
									
										
										
										
											2014-09-16 10:12:12 -04:00
										 |  |  | 				 | 
					
						
							| 
									
										
										
										
											2014-05-26 12:26:41 -04:00
										 |  |  | 				if (typeof callback === 'function') { | 
					
						
							|  |  |  | 					callback(); | 
					
						
							|  |  |  | 				} | 
					
						
							| 
									
										
										
										
											2014-09-16 10:12:12 -04:00
										 |  |  | 			}); | 
					
						
							| 
									
										
										
										
											2014-03-28 14:18:42 -04:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-16 10:12:12 -04:00
										 |  |  | 		renderWidgets(widgetLocations); | 
					
						
							| 
									
										
										
										
											2014-03-28 14:18:42 -04:00
										 |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2014-04-10 20:31:57 +01:00
										 |  |  | }(ajaxify || {})); |