src/pyams_skin/resources/js/myams.js
changeset 4 d2b6936e607b
parent 0 bb4aabe07487
child 6 9bd456627248
--- a/src/pyams_skin/resources/js/myams.js	Sat Feb 21 13:55:34 2015 +0100
+++ b/src/pyams_skin/resources/js/myams.js	Sat Feb 21 13:59:22 2015 +0100
@@ -2,12 +2,12 @@
  * MyAMS
  * « My Application Management Skin »
  *
- * $Tag$
+ * $Tag: null $
  * A bootstrap based application/administration skin
  *
  * Custom administration and application skin tools
  * Released under Zope Public License ZPL 1.1
- * ©2014 Thierry Florac <tflorac@ulthar.net>
+ * ©2015 Thierry Florac <tflorac@ulthar.net>
  */
 
 (function($) {
@@ -1881,21 +1881,30 @@
 					if (!data.amsChecker) {
 						var checker = $('<label class="checkbox"></label>');
 						var fieldname = data.amsCheckerFieldname || ('checker_'+ams.generateId());
+						var checkbox_id = fieldname.replace(/\./, '_');
 						var prefix = data.amsCheckerHiddenPrefix;
 						var hidden = null;
 						var checkedValue = data.amsCheckerHiddenValueOn || 'true';
 						var uncheckedValue = data.amsCheckerHiddenValueOff || 'false';
+						var marker = data.amsCheckerMarker || false;
 						if (prefix) {
 							hidden = $('<input type="hidden">').attr('name', prefix + fieldname)
 															   .val(data.amsCheckerState == 'on' ? checkedValue : uncheckedValue)
 															   .prependTo(legend);
+						} else if (marker) {
+							$('<input type="hidden">').attr('name', marker)
+													  .attr('value', 1)
+													  .prependTo(legend);
 						}
 						var input = $('<input type="checkbox">').attr('name', fieldname)
-																.attr('id', fieldname.replace(/\./, '_'))
+																.attr('id', checkbox_id)
 																.data('ams-checker-hidden-input', hidden)
 																.data('ams-checker-init', true)
-																.val(true)
+																.val(data.amsCheckerValue || true)
 																.attr('checked', data.amsCheckerState == 'on' ? 'checked' : null);
+						legend.on('click', function() {
+							input.click();
+						});
 						if (data.amsCheckerReadonly) {
 							input.attr('disabled', 'disabled');
 						} else {
@@ -2070,7 +2079,11 @@
 													break;
 											}
 
-											if (data.amsSelect2Query) {
+											if (select.attr('readonly')) {
+												data_options.query = function() {
+													return [];
+												};
+											} else if (data.amsSelect2Query) {
 												// Custom query method
 												data_options.query = ams.getFunctionByName(data.amsSelect2Query);
 												data_options.minimumInputLength = data.amsSelect2MinimumInputLength || 1;
@@ -3418,29 +3431,36 @@
 				if (typeof(href_getter) == 'function') {
 					href = href_getter.call(link);
 				}
-				// Convert %23 chars to #
-				href = href.replace(/\%23/, '#');
-				var target = link.data('ams-target');
-				if (target) {
-					ams.form.confirmChangedForm(target, function() {
-						ams.skin.loadURL(href, target, link.data('ams-link-options'), link.data('ams-link-callback'));
-						e.stopPropagation();
-					});
+				if (typeof(href) == 'function') {
+					// Javascript function call
+					e.stopPropagation();
+					href.call(link);
 				} else {
-					ams.form.confirmChangedForm(function() {
-						if (href.startsWith('#')) {
-							if (href != location.hash) {
-								if (ams.root.hasClass('mobile-view-activated')) {
-									ams.root.removeClass('hidden-menu');
-									window.setTimeout(function () {
+					// Standard AJAX or browser URL call
+					// Convert %23 chars to #
+					href = href.replace(/\%23/, '#');
+					var target = link.data('ams-target');
+					if (target) {
+						ams.form.confirmChangedForm(target, function () {
+							ams.skin.loadURL(href, target, link.data('ams-link-options'), link.data('ams-link-callback'));
+							e.stopPropagation();
+						});
+					} else {
+						ams.form.confirmChangedForm(function () {
+							if (href.startsWith('#')) {
+								if (href != location.hash) {
+									if (ams.root.hasClass('mobile-view-activated')) {
+										ams.root.removeClass('hidden-menu');
+										window.setTimeout(function () {
+											window.location.hash = href;
+										}, 150);
+									} else
 										window.location.hash = href;
-									}, 150);
-								} else
-									window.location.hash = href;
-							}
-						} else
-							window.location = href;
-					});
+								}
+							} else
+								window.location = href;
+						});
+					}
 				}
 			});
 			$(document).on('click', 'a[target="_blank"]', function(e) {
@@ -3623,11 +3643,13 @@
 
 		BTN_OK: "OK",
 		BTN_CANCEL: "Cancel",
+		BTN_OK_CANCEL: "[OK][Cancel]",
 		BTN_YES: "Yes",
 		BTN_NO: "No",
-		BTN_OK_CANCEL: "[OK][Cancel]",
+		BTN_YES_NO: "[Yes][No]",
 
 		FORM_CHANGED_WARNING: "Some changes were not saved. These updates will be lost if you leave this page.",
+		DELETE_WARNING: "This change can't be undone. Are you sure that you want to delete this element?",
 		NO_UPDATE: "No changes were applied.",
 		DATA_UPDATED: "Data successfully updated.",