src/pyams_skin/resources/js/myams-init.js
changeset 536 d1742b03d5a7
parent 490 135a744a7732
--- a/src/pyams_skin/resources/js/myams-init.js	Fri Jul 26 12:42:05 2019 +0200
+++ b/src/pyams_skin/resources/js/myams-init.js	Fri Jul 26 12:42:35 2019 +0200
@@ -356,65 +356,8 @@
 			$(button.get(0).form).data('ams-submit-button', button);
 		});
 
-		// Cancel clicks on readonly checkbox
-		$(document).on('click', 'input[type="checkbox"][readonly]', function() {
-			return false;
-		});
-
-		// Initialize custom click handlers
-		$(document).on('click', '[data-ams-click-handler]', function(event) {
-			var source = $(this);
-			var handlers = source.data('ams-disabled-handlers');
-			if ((handlers === true) || (handlers === 'click') || (handlers === 'all')) {
-				return;
-			}
-			var data = source.data();
-			if (data.amsClickHandler) {
-				if ((data.amsStopPropagation === true) || (data.amsClickStopPropagation === true)) {
-					event.stopPropagation();
-				}
-				if (data.amsClickKeepDefault !== true) {
-					event.preventDefault();
-				}
-				var clickHandlers = data.amsClickHandler.split(/\s+/);
-				for (var index=0; index < clickHandlers.length; index++) {
-					var callback = ams.getFunctionByName(clickHandlers[index]);
-					if (callback !== undefined) {
-						callback.call(source, event, data.amsClickHandlerOptions);
-					}
-				}
-			}
-		});
-
-		// Initialize custom change handlers
-		$(document).on('change', '[data-ams-change-handler]', function(event) {
-			var source = $(this);
-			// Disable change handlers for readonly inputs
-			// These change handlers are activated by IE!!!
-			if (source.prop('readonly')) {
-				return;
-			}
-			var handlers = source.data('ams-disabled-handlers');
-			if ((handlers === true) || (handlers === 'change') || (handlers === 'all')) {
-				return;
-			}
-			var data = source.data();
-			if (data.amsChangeHandler) {
-				if ((data.amsStopPropagation === true) || (data.amsChangeStopPropagation === true)) {
-					event.stopPropagation();
-				}
-				if (data.amsChangeKeepDefault !== true) {
-					event.preventDefault();
-				}
-				var changeHandlers = data.amsChangeHandler.split(/\s+/);
-				for (var index=0; index < changeHandlers.length; index++) {
-					var callback = ams.getFunctionByName(changeHandlers[index]);
-					if (callback !== undefined) {
-						callback.call(source, event, data.amsChangeHandlerOptions);
-					}
-				}
-			}
-		});
+		// Initialize main event handlers
+		ams.initHandlers(document);
 
 		// Submit form when CTRL+Enter key is pressed in textarea
 		$(document).on('keydown', 'textarea', function(e) {
@@ -423,54 +366,6 @@
 			}
 		});
 
-		// Notify reset to update Select2 widgets
-		$(document).on('reset', 'form', function(e) {
-			var form = $(this);
-			setTimeout(function() {
-				$('.alert-danger, SPAN.state-error', form).not('.persistent').remove();
-				$('LABEL.state-error', form).removeClass('state-error');
-				$('INPUT.select2[type="hidden"]', form).each(function() {
-					var input = $(this);
-					var select = input.data('select2');
-					var value = input.data('ams-select2-input-value');
-					if (value) {
-						input.select2('val', value.split(select.opts.separator));
-					}
-				});
-				form.find('.select2').trigger('change');
-				$('[data-ams-reset-callback]', form).each(function() {
-					var element = $(this);
-					var data = element.data();
-					var callback = ams.getFunctionByName(data.amsResetCallback);
-					if (callback !== undefined) {
-						callback.call(form, element, data.amsResetCallbackOptions);
-					}
-				});
-			}, 10);
-			ams.form && ams.form.setFocus(form);
-		});
-
-		// Initialize custom reset handlers
-		$(document).on('reset', '[data-ams-reset-handler]', function(e) {
-			var form = $(this);
-			var data = form.data();
-			if (data.amsResetHandler) {
-				if (data.amsResetKeepDefault !== true) {
-					e.preventDefault();
-				}
-				var callback = ams.getFunctionByName(data.amsResetHandler);
-				if (callback !== undefined) {
-					callback.call(form, data.amsResetHandlerOptions);
-				}
-			}
-		});
-
-		// Initialize custom event on click
-		$(document).on('click', '[data-ams-click-event]', function(e) {
-			var source = $(this);
-			$(e.target).trigger(source.data('ams-click-event'), source.data('ams-click-event-options'));
-		});
-
 		// Handle update on file upload placeholder
 		$(document).on('change', 'input[type="file"]', function(e) {
 			e.preventDefault();