new static files.
Signed-off-by: rscnt <rascnt@gmail.com>
This commit is contained in:
		
					parent
					
						
							
								83e792bcaa
							
						
					
				
			
			
				commit
				
					
						fe4f6c97d5
					
				
			
		
					 778 changed files with 71557 additions and 0 deletions
				
			
		
							
								
								
									
										242
									
								
								static/cms/js/modules/cms.base.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										242
									
								
								static/cms/js/modules/cms.base.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,242 @@ | |||
| /*##################################################|*/ | ||||
| /* #CMS# */ | ||||
| 
 | ||||
| // ensuring django namespace is set correctly
 | ||||
| window.django = window.django || undefined; | ||||
| 
 | ||||
| // ensuring jQuery namespace is set correctly
 | ||||
| window.jQuery = (django && django.jQuery) ? django.jQuery : window.jQuery || undefined; | ||||
| 
 | ||||
| // ensuring Class namespace is set correctly
 | ||||
| window.Class = window.Class || undefined; | ||||
| 
 | ||||
| // ensuring CMS namespace is set correctly
 | ||||
| var CMS = { | ||||
| 	'$': (typeof jQuery === 'function') ? jQuery : undefined, | ||||
| 	'Class': (typeof Class === 'function') ? Class : undefined, | ||||
| 	'API': {} | ||||
| }; | ||||
| 
 | ||||
| /*##################################################|*/ | ||||
| /* #CMS.API# */ | ||||
| (function($) { | ||||
| // CMS.$ will be passed for $
 | ||||
| $(document).ready(function () { | ||||
| 	/*! | ||||
| 	 * CNS.API.Helpers | ||||
| 	 * Multiple helpers used accross all CMS features | ||||
| 	 */ | ||||
| 	CMS.API.Helpers = { | ||||
| 
 | ||||
| 		// redirects to a specific url or reloads browser
 | ||||
| 		reloadBrowser: function (url, timeout, ajax) { | ||||
| 			var that = this; | ||||
| 			// is there a parent window?
 | ||||
| 			var parent = (window.parent) ? window.parent : window; | ||||
| 
 | ||||
| 			// if there is an ajax reload, prioritize
 | ||||
| 			if(ajax) { | ||||
| 				parent.CMS.API.locked = true; | ||||
| 				// check if the url has changed, if true redirect to the new path
 | ||||
| 				// this requires an ajax request
 | ||||
| 				$.ajax({ | ||||
| 					'async': false, | ||||
| 					'type': 'GET', | ||||
| 					'url': parent.CMS.config.request.url, | ||||
| 					'data': { | ||||
| 						'model': parent.CMS.config.request.model, | ||||
| 						'pk': parent.CMS.config.request.pk | ||||
| 					}, | ||||
| 					'success': function (response) { | ||||
| 						parent.CMS.API.locked = false; | ||||
| 
 | ||||
| 						if(response === '' && !url) { | ||||
| 							// cancel if response is empty
 | ||||
| 							return false; | ||||
| 						} else if(parent.location.pathname !== response) { | ||||
| 							// api call to the backend to check if the current path is still the same
 | ||||
| 							that.reloadBrowser(response); | ||||
| 						} else if(url === 'REFRESH_PAGE') { | ||||
| 							// if on_close provides REFRESH_PAGE, only do a reload
 | ||||
| 							that.reloadBrowser(); | ||||
| 						} else if(url) { | ||||
| 							// on_close can also provide a url, reload to the new destination
 | ||||
| 							that.reloadBrowser(url); | ||||
| 						} | ||||
| 					} | ||||
| 				}); | ||||
| 
 | ||||
| 				// cancel further operations
 | ||||
| 				return false; | ||||
| 			} | ||||
| 
 | ||||
| 			// add timeout if provided
 | ||||
| 			parent.setTimeout(function () { | ||||
| 				if (url && url != parent.location.href) { | ||||
| 					// location.reload() takes precedence over this, so we
 | ||||
| 					// don't want to reload the page if we need a redirect
 | ||||
| 					parent.location.href = url; | ||||
| 				} | ||||
| 				else { | ||||
| 					// ensure page is always reloaded #3413
 | ||||
| 					parent.location.reload() | ||||
| 				} | ||||
| 			}, timeout || 0); | ||||
| 		}, | ||||
| 
 | ||||
| 		// disable multiple form submissions
 | ||||
| 		preventSubmit: function () { | ||||
| 			var forms = $('#cms_toolbar').find('form'); | ||||
| 				forms.submit(function () { | ||||
| 					// show loader
 | ||||
| 					CMS.API.Toolbar._loader(true); | ||||
| 					// we cannot use disabled as the name action will be ignored
 | ||||
| 					$('input[type="submit"]').bind('click', function (e) { | ||||
| 						e.preventDefault(); | ||||
| 					}).css('opacity', 0.5); | ||||
| 				}); | ||||
| 		}, | ||||
| 
 | ||||
| 		// fixes csrf behaviour
 | ||||
| 		csrf: function (csrf_token) { | ||||
| 			$.ajaxSetup({ | ||||
| 				beforeSend: function (xhr) { | ||||
| 					// set csrf_token
 | ||||
| 					xhr.setRequestHeader("X-CSRFToken", csrf_token); | ||||
| 				} | ||||
| 			}); | ||||
| 		}, | ||||
| 
 | ||||
| 		// handles the tooltip for the plugins
 | ||||
| 		showTooltip: function (name, id) { | ||||
| 			var tooltip = $('.cms_tooltip'); | ||||
| 
 | ||||
| 			// change css and attributes
 | ||||
| 			tooltip.css('visibility', 'visible') | ||||
| 				.data('plugin_id', id || null) | ||||
| 				.show() | ||||
| 				.find('span').html(name); | ||||
| 
 | ||||
| 			// attaches move event
 | ||||
| 			// this sets the correct position for the edit tooltip
 | ||||
| 			$('body').bind('mousemove.cms', function (e) { | ||||
| 				// so lets figure out where we are
 | ||||
| 				var offset = 20; | ||||
| 				var relX = e.pageX - $(tooltip).offsetParent().offset().left; | ||||
| 				var relY = e.pageY - $(tooltip).offsetParent().offset().top; | ||||
| 				var bound = $(tooltip).offsetParent().width(); | ||||
| 				var pos = relX + tooltip.outerWidth(true) + offset; | ||||
| 
 | ||||
| 				tooltip.css({ | ||||
| 					'left': (pos >= bound) ? relX - tooltip.outerWidth(true) - offset : relX + offset, | ||||
| 					'top': relY - 12 | ||||
| 				}); | ||||
| 			}); | ||||
| 
 | ||||
| 			// attach tooltip event for touch devices
 | ||||
| 			tooltip.bind('touchstart.cms', function () { | ||||
| 				$('.cms_plugin-' + $(this).data('plugin_id')).trigger('dblclick'); | ||||
| 			}); | ||||
| 		}, | ||||
| 
 | ||||
| 		hideTooltip: function () { | ||||
| 			var tooltip = $('.cms_tooltip'); | ||||
| 
 | ||||
| 			// change css
 | ||||
| 			tooltip.css('visibility', 'hidden').hide(); | ||||
| 
 | ||||
| 			// unbind events
 | ||||
| 			$('body').unbind('mousemove.cms'); | ||||
| 			tooltip.unbind('touchstart.cms'); | ||||
| 		}, | ||||
| 
 | ||||
| 		// sends or retrieves a JSON from localStorage or the session if local storage is not available
 | ||||
| 		setSettings: function (settings) { | ||||
| 			var that = this; | ||||
| 			// merge settings
 | ||||
| 			settings = JSON.stringify($.extend({}, CMS.config.settings, settings)); | ||||
| 			// set loader
 | ||||
| 			if(CMS.API.Toolbar) CMS.API.Toolbar._loader(true); | ||||
| 
 | ||||
| 			// use local storage or session
 | ||||
| 			if(window.localStorage) { | ||||
| 				// save within local storage
 | ||||
| 				localStorage.setItem('cms_cookie', settings); | ||||
| 				if(CMS.API.Toolbar) CMS.API.Toolbar._loader(false); | ||||
| 			} else { | ||||
| 				// save within session
 | ||||
| 				CMS.API.locked = true; | ||||
| 
 | ||||
| 				$.ajax({ | ||||
| 					'async': false, | ||||
| 					'type': 'POST', | ||||
| 					'url': CMS.config.urls.settings, | ||||
| 					'data': { | ||||
| 						'csrfmiddlewaretoken': this.config.csrf, | ||||
| 						'settings': settings | ||||
| 					}, | ||||
| 					'success': function (data) { | ||||
| 						CMS.API.locked = false; | ||||
| 						// determine if logged in or not
 | ||||
| 						settings = (data) ? JSON.parse(data) : CMS.config.settings; | ||||
| 						if(CMS.API.Toolbar) CMS.API.Toolbar._loader(false); | ||||
| 					}, | ||||
| 					'error': function (jqXHR) { | ||||
| 						that.showError(jqXHR.response + ' | ' + jqXHR.status + ' ' + jqXHR.statusText); | ||||
| 					} | ||||
| 				}); | ||||
| 			} | ||||
| 
 | ||||
| 			// save settings
 | ||||
| 			CMS.settings = JSON.parse(settings); | ||||
| 
 | ||||
| 			// ensure new settings are returned
 | ||||
| 			return CMS.settings; | ||||
| 		}, | ||||
| 
 | ||||
| 		getSettings: function () { | ||||
| 			var that = this; | ||||
| 			var settings; | ||||
| 			// set loader
 | ||||
| 			if(CMS.API.Toolbar) CMS.API.Toolbar._loader(true); | ||||
| 
 | ||||
| 			// use local storage or session
 | ||||
| 			if(window.localStorage) { | ||||
| 				// get from local storage
 | ||||
| 				settings = JSON.parse(localStorage.getItem('cms_cookie')); | ||||
| 				if(CMS.API.Toolbar) CMS.API.Toolbar._loader(false); | ||||
| 			} else { | ||||
| 				CMS.API.locked = true; | ||||
| 				// get from session
 | ||||
| 				$.ajax({ | ||||
| 					'async': false, | ||||
| 					'type': 'GET', | ||||
| 					'url': CMS.config.urls.settings, | ||||
| 					'success': function (data) { | ||||
| 						CMS.API.locked = false; | ||||
| 						// determine if logged in or not
 | ||||
| 						settings = (data) ? JSON.parse(data) : CMS.config.settings; | ||||
| 						if(CMS.API.Toolbar) CMS.API.Toolbar._loader(false); | ||||
| 					}, | ||||
| 					'error': function (jqXHR) { | ||||
| 						that.showError(jqXHR.response + ' | ' + jqXHR.status + ' ' + jqXHR.statusText); | ||||
| 					} | ||||
| 				}); | ||||
| 			} | ||||
| 
 | ||||
| 			if(settings === null) settings = this.setSettings(CMS.config.settings); | ||||
| 
 | ||||
| 			// save settings
 | ||||
| 			CMS.settings = settings; | ||||
| 
 | ||||
| 			// ensure new settings are returned
 | ||||
| 			return CMS.settings; | ||||
| 		} | ||||
| 
 | ||||
| 	}; | ||||
| 
 | ||||
| 	// autoinits
 | ||||
| 	CMS.API.Helpers.preventSubmit(); | ||||
| 
 | ||||
| }); | ||||
| })(CMS.$); | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue