src/pyams_default_theme/resources/js/pyams-default.js
changeset 317 46c78cc30b74
parent 231 d462a5ced83e
child 319 29ffc22ece57
equal deleted inserted replaced
316:c12f6c3ac809 317:46c78cc30b74
     1 (function($, globals) {
     1 (function($, globals) {
     2 
     2 
     3 	"use strict";
     3 	"use strict";
     4 
     4 
     5 	var MyAMS = globals.MyAMS;
     5 	var ams = globals.MyAMS;
     6 	var PyAMS_default = {
     6 	globals.PyAMS_default = {
     7 
     7 
       
     8 		search: {
       
     9 
       
    10 			updateSort: function() {
       
    11 				var form = $('form[id="search-results"]');
       
    12 				if (form.exists()) {
       
    13 					var index = $(this).val();
       
    14 					$('input[name="order_by"]', form).val(index);
       
    15 					form.submit();
       
    16 				}
       
    17 			},
       
    18 
       
    19 			updatePageLength: function() {
       
    20 				var form = $('form[id="search-results"]');
       
    21 				if (form.exists()) {
       
    22 					var length = $(this).val();
       
    23 					$('input[name="start"]', form).val(0);
       
    24 					$('input[name="length"]', form).val(length);
       
    25 					form.submit();
       
    26 				}
       
    27 			},
       
    28 
       
    29 			previousPage: function() {
       
    30 				var form = $('form[id="search-results"]');
       
    31 				if (form.exists()) {
       
    32 					var current = $(this).parents('ol.pagination').data('ams-current-page');
       
    33 					var length = $('input[name="length"]', form).val();
       
    34 					$('input[name="start"]', form).val(length * (current - 2));
       
    35 					form.submit();
       
    36 				}
       
    37 			},
       
    38 
       
    39 			nextPage: function() {
       
    40 				var form = $('form[id="search-results"]');
       
    41 				if (form.exists()) {
       
    42 					var current = $(this).parents('ol.pagination').data('ams-current-page');
       
    43 					var length = $('input[name="length"]', form).val();
       
    44 					$('input[name="start"]', form).val(length * current);
       
    45 					form.submit();
       
    46 				}
       
    47 			},
       
    48 
       
    49 			gotoPage: function() {
       
    50 				var form = $('form[id="search-results"]');
       
    51 				if (form.exists()) {
       
    52 					var target = parseInt($(this).text());
       
    53 					var length = $('input[name="length"]', form).val();
       
    54 					$('input[name="start"]', form).val(length * (target - 1));
       
    55 					form.submit();
       
    56 				}
       
    57 			}
       
    58 		}
     8 	};
    59 	};
     9 	globals.PyAMS_default = PyAMS_default;
       
    10 
    60 
    11 	/**
    61 	/**
    12 	 * Init lightbox plug-in
    62 	 * Init lightbox plug-in
    13 	 */
    63 	 */
    14 	$(document).on('click', '[data-toggle="lightbox"]', function (event) {
    64 	$(document).on('click', '[data-toggle="lightbox"]', function (event) {
    17 			wrapping: false,
    67 			wrapping: false,
    18 			alwaysShowClose: true
    68 			alwaysShowClose: true
    19 		});
    69 		});
    20 	});
    70 	});
    21 
    71 
       
    72 	// Initialize custom click handlers
       
    73 	$(document).on('click', '[data-ams-click-handler]', function(event) {
       
    74 		var source = $(this);
       
    75 		var handlers = source.data('ams-disabled-handlers');
       
    76 		if ((handlers === true) || (handlers === 'click') || (handlers === 'all')) {
       
    77 			return;
       
    78 		}
       
    79 		var data = source.data();
       
    80 		if (data.amsClickHandler) {
       
    81 			if ((data.amsStopPropagation === true) || (data.amsClickStopPropagation === true)) {
       
    82 				event.stopPropagation();
       
    83 			}
       
    84 			if (data.amsClickKeepDefault !== true) {
       
    85 				event.preventDefault();
       
    86 			}
       
    87 			var clickHandlers = data.amsClickHandler.split(/\s+/);
       
    88 			for (var index=0; index < clickHandlers.length; index++) {
       
    89 				var callback = ams.getFunctionByName(clickHandlers[index]);
       
    90 				if (callback !== undefined) {
       
    91 					callback.call(source, event, data.amsClickHandlerOptions);
       
    92 				}
       
    93 			}
       
    94 		}
       
    95 	});
       
    96 
       
    97 	// Initialize custom change handlers
       
    98 	$(document).on('change', '[data-ams-change-handler]', function(event) {
       
    99 		var source = $(this);
       
   100 		// Disable change handlers for readonly inputs
       
   101 		// These change handlers are activated by IE!!!
       
   102 		if (source.prop('readonly')) {
       
   103 			return;
       
   104 		}
       
   105 		var handlers = source.data('ams-disabled-handlers');
       
   106 		if ((handlers === true) || (handlers === 'change') || (handlers === 'all')) {
       
   107 			return;
       
   108 		}
       
   109 		var data = source.data();
       
   110 		if (data.amsChangeHandler) {
       
   111 			if ((data.amsStopPropagation === true) || (data.amsChangeStopPropagation === true)) {
       
   112 				event.stopPropagation();
       
   113 			}
       
   114 			if (data.amsChangeKeepDefault !== true) {
       
   115 				event.preventDefault();
       
   116 			}
       
   117 			var changeHandlers = data.amsChangeHandler.split(/\s+/);
       
   118 			for (var index=0; index < changeHandlers.length; index++) {
       
   119 				var callback = ams.getFunctionByName(changeHandlers[index]);
       
   120 				if (callback !== undefined) {
       
   121 					callback.call(source, event, data.amsChangeHandlerOptions);
       
   122 				}
       
   123 			}
       
   124 		}
       
   125 	});
       
   126 
       
   127 	/**
       
   128 	 * Glossary access
       
   129 	 */
       
   130 	var clickTerm = function() {
       
   131 		var modal = $('.modal >div');
       
   132 		if (modal.exists()) {
       
   133 			ams.dialog.close(modal);
       
   134 		}
       
   135 		ams.dialog.open('/get-glossary-term.html?term=' + $(this).text(), {}, {
       
   136 			shown: function() {
       
   137 				$('.thesaurus-term').off('click').on('click', clickTerm);
       
   138 			}
       
   139 		});
       
   140 	};
       
   141 
       
   142 	ams.require(['error', 'ajax', 'dialog'], function () {
       
   143 		$('.thesaurus-term').off('click').on('click', clickTerm);
       
   144 	});
       
   145 
    22 })(jQuery, this);
   146 })(jQuery, this);