79 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			79 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								/*##################################################|*/
							 | 
						||
| 
								 | 
							
								/* #CMS.API# */
							 | 
						||
| 
								 | 
							
								/* global apphooks_configuration */
							 | 
						||
| 
								 | 
							
								(function($) {
							 | 
						||
| 
								 | 
							
								// CMS.$ will be passed for $
							 | 
						||
| 
								 | 
							
								$(document).ready(function () {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var appHooks = $('#application_urls'),
							 | 
						||
| 
								 | 
							
										selected = appHooks.find('option:selected'),
							 | 
						||
| 
								 | 
							
										appNsRow = $('.form-row.application_namespace'),
							 | 
						||
| 
								 | 
							
										appNs = appNsRow.find('#id_application_namespace'),
							 | 
						||
| 
								 | 
							
										appCfgsRow = $('.form-row.application_configs'),
							 | 
						||
| 
								 | 
							
										appCfgs = appCfgsRow.find('#application_configs'),
							 | 
						||
| 
								 | 
							
										appCfgsAdd = appCfgsRow.find('#add_application_configs'),
							 | 
						||
| 
								 | 
							
										original_ns = appNs.val();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// Shows / hides namespace / config selection widgets depending on the user input
							 | 
						||
| 
								 | 
							
									appHooks.setupNamespaces = function() {
							 | 
						||
| 
								 | 
							
										var opt = $(this).find('option:selected');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if($(appCfgs).length > 0 && apphooks_configuration[opt.val()]){
							 | 
						||
| 
								 | 
							
											appCfgs.html('');
							 | 
						||
| 
								 | 
							
											for(var i=0; i < apphooks_configuration[opt.val()].length; i++) {
							 | 
						||
| 
								 | 
							
												selectedCfgs = '';
							 | 
						||
| 
								 | 
							
												if(apphooks_configuration[opt.val()][i][0] == apphooks_configuration_value) {
							 | 
						||
| 
								 | 
							
													selectedCfgs = 'selected="selected"';
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
												appCfgs.append('<option ' + selectedCfgs + ' value="' + apphooks_configuration[opt.val()][i][0] + '">' + apphooks_configuration[opt.val()][i][1] + '</option>')
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											appCfgsAdd.attr('href', apphooks_configuration_url[opt.val()]);
							 | 
						||
| 
								 | 
							
											appCfgsRow.removeClass('hidden');
							 | 
						||
| 
								 | 
							
											appNsRow.addClass('hidden');
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else {
							 | 
						||
| 
								 | 
							
											appCfgsRow.addClass('hidden');
							 | 
						||
| 
								 | 
							
											if(opt.data('namespace')) {
							 | 
						||
| 
								 | 
							
												appNsRow.removeClass('hidden');
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											else {
							 | 
						||
| 
								 | 
							
												appNsRow.addClass('hidden');
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// Hide the namespace widgets if its not required.
							 | 
						||
| 
								 | 
							
									appHooks.setupNamespaces();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// Show it if we change to an app_hook that requires a namespace
							 | 
						||
| 
								 | 
							
									appHooks.on('change', function(){
							 | 
						||
| 
								 | 
							
										var self = $(this),
							 | 
						||
| 
								 | 
							
											opt = self.find('option:selected');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										appHooks.setupNamespaces();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// If we clear the app_hook, clear out the app_namespace too
							 | 
						||
| 
								 | 
							
										if (!self.val()) {
							 | 
						||
| 
								 | 
							
											appNs.val('');
							 | 
						||
| 
								 | 
							
											appNs.removeAttr('value');
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// When selecting back the original apphook we try
							 | 
						||
| 
								 | 
							
										// to restore the original configuration
							 | 
						||
| 
								 | 
							
										if(selected.val() == opt.val()) {
							 | 
						||
| 
								 | 
							
											if(original_ns) {
							 | 
						||
| 
								 | 
							
												appNs.val(original_ns);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										// If new apphook has a namespace, suggest the default
							 | 
						||
| 
								 | 
							
										else if (opt.data('namespace')) {
							 | 
						||
| 
								 | 
							
											appNs.val(opt.data('namespace'));
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										// Cleanup the whole thing
							 | 
						||
| 
								 | 
							
										else {
							 | 
						||
| 
								 | 
							
											appNs.val('');
							 | 
						||
| 
								 | 
							
											appNs.removeAttr('value');
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								})(CMS.$);
							 |