src/pyams_skin/resources/js/myams.js
changeset 31 c08ec7495e11
parent 27 5b990958e2da
child 35 7e635fcf2555
--- a/src/pyams_skin/resources/js/myams.js	Wed Mar 11 12:16:52 2015 +0100
+++ b/src/pyams_skin/resources/js/myams.js	Wed Mar 11 12:17:32 2015 +0100
@@ -7,7 +7,7 @@
  *
  * Custom administration and application skin tools
  * Released under Zope Public License ZPL 1.1
- * ©2015 Thierry Florac <tflorac@ulthar.net>
+ * ©2014-2015 Thierry Florac <tflorac@ulthar.net>
  */
 
 (function($) {
@@ -323,6 +323,7 @@
 	if (window.MyAMS === undefined) {
 		window.MyAMS = {
 			devmode: true,
+			lang: 'en',
 			throttle_delay: 350,
 			menu_speed: 235,
 			navbar_height: 49,
@@ -795,16 +796,28 @@
 			if (result.content) {
 				var content = result.content;
 				var container = $(content.target || target || form || '#content');
-				container.html(content.html);
-				ams.initContent(container);
+				if (content.raw == true) {
+					container.text(content.text);
+				} else {
+					container.html(content.html);
+					ams.initContent(container);
+				}
+				if (!content.keep_hidden)
+					container.removeClass('hidden');
 			}
 			if (result.contents) {
 				var contents = result.contents;
 				for (var index in contents) {
 					content = contents[index];
 					container = $(content.target);
-					container.html(content.html);
-					ams.initContent(container);
+					if (content.raw == true) {
+						container.text(content.text);
+					} else {
+						container.html(content.html);
+						ams.initContent(container);
+					}
+					if (!content.keep_hidden)
+						container.removeClass('hidden');
 				}
 			}
 			if (result.message) {
@@ -2214,27 +2227,94 @@
 			},
 
 			/**
-			 * JQuery-UI date picker
+			 * JQuery date picker
 			 */
 			datepicker: function(element) {
 				var datepickers = $('.datepicker', element);
 				if (datepickers.length > 0) {
-					datepickers.each(function() {
-						var picker = $(this);
-						var data = picker.data();
-						var data_options = {
-							dateFormat: data.amsDatepickerFormat || 'dd/mm/yy',
-							prevText: '<i class="fa fa-chevron-left"></i>',
-							nextText: '<i class="fa fa-chevron-right"></i>',
-							changeMonth: data.amsDatepickerChangeMonth,
-							changeYear: data.amsDatepickerChangeYear,
-							showButtonPanel: !data.amsDatepickerHidePanel
-						};
-						var settings = $.extend({}, data_options, data.amsDatepickerOptions);
-						settings = ams.executeFunctionByName(data.amsDatepickerInitCallback, picker, settings) || settings;
-						var plugin = picker.datepicker(settings);
-						ams.executeFunctionByName(data.amsDatepickerAfterInitCallback, picker, plugin, settings);
-					});
+					ams.ajax.check($.fn.datetimepicker,
+								   ams.baseURL + 'ext/jquery-datetimepicker' + (ams.devmode ? '.js': '.min.js'),
+								   function(first_load) {
+										if (first_load) {
+											ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + (ams.devmode ? '.css' : '.min.css'), 'jquery-datetimepicker');
+										}
+										datepickers.each(function() {
+											var input = $(this);
+											var data = input.data();
+											var data_options = {
+												lang: data.amsDatetimepickerLang || ams.lang,
+												format: data.amsDatetimepickerFormat || 'd/m/y',
+												datepicker: true,
+												dayOfWeekStart: 1,
+												timepicker: false
+											};
+											var settings = $.extend({}, data_options, data.amsDatetimepickerOptions);
+											settings = ams.executeFunctionByName(data.amsDatetimepickerInitCallback, input, settings) || settings;
+											var plugin = input.datetimepicker(settings);
+											ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings);
+										});
+								   });
+				}
+			},
+
+			/**
+			 * JQuery datetime picker
+			 */
+			datetimepicker: function(element) {
+				var datetimepickers = $('.datetimepicker', element);
+				if (datetimepickers.length > 0) {
+					ams.ajax.check($.fn.datetimepicker,
+								   ams.baseURL + 'ext/jquery-datetimepicker' + (ams.devmode ? '.js': '.min.js'),
+								   function(first_load) {
+										if (first_load) {
+											ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + (ams.devmode ? '.css' : '.min.css'), 'jquery-datetimepicker');
+										}
+										datetimepickers.each(function() {
+											var input = $(this);
+											var data = input.data();
+											var data_options = {
+												lang: data.amsDatetimepickerLang || ams.lang,
+												format: data.amsDatetimepickerFormat || 'd/m/y H:i',
+												datepicker: true,
+												dayOfWeekStart: 1,
+												timepicker: true
+											};
+											var settings = $.extend({}, data_options, data.amsDatetimepickerOptions);
+											settings = ams.executeFunctionByName(data.amsDatetimepickerInitCallback, input, settings) || settings;
+											var plugin = input.datetimepicker(settings);
+											ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings);
+										});
+								   });
+				}
+			},
+
+			/**
+			 * JQuery time picker
+			 */
+			timepicker: function(element) {
+				var timepickers = $('.timepicker', element);
+				if (timepickers.length > 0) {
+					ams.ajax.check($.fn.datetimepicker,
+								   ams.baseURL + 'ext/jquery-datetimepicker' + (ams.devmode ? '.js': '.min.js'),
+								   function(first_load) {
+										if (first_load) {
+											ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + (ams.devmode ? '.css' : '.min.css'), 'jquery-datetimepicker');
+										}
+										timepickers.each(function() {
+											var input = $(this);
+											var data = input.data();
+											var data_options = {
+												lang: data.amsDatetimepickerLang || ams.lang,
+												format: data.amsDatetimepickerFormat || 'H:i',
+												datepicker: false,
+												timepicker: true
+											};
+											var settings = $.extend({}, data_options, data.amsDatetimepickerOptions);
+											settings = ams.executeFunctionByName(data.amsDatetimepickerInitCallback, input, settings) || settings;
+											var plugin = input.datetimepicker(settings);
+											ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings);
+										});
+								   });
 				}
 			},
 
@@ -3584,7 +3664,7 @@
 		$(document).off('click.modal')
 				   .on('click', '[data-toggle="modal"]', function(e) {
 			var source = $(this);
-			if (source.data('ams-click-stop-propagation') === true)
+			if (source.data('ams-stop-propagation') === true)
 				e.stopPropagation();
 			e.preventDefault();
 			ams.dialog.open(source);
@@ -3604,7 +3684,7 @@
 			var source = $(this);
 			var data = source.data();
 			if (data.amsClickHandler) {
-				if (data.amsClickStopPropagation === true)
+				if ((data.amsStopPropagation === true) || (data.amsClickStopPropagation === true))
 					e.stopPropagation();
 				if (data.amsClickKeepDefault !== true)
 					e.preventDefault();
@@ -3780,11 +3860,12 @@
 	$(document).ready(function() {
 		$ = jQuery.noConflict();
 		var lang = $('HTML').attr('lang') || $('HTML').attr('xml:lang');
-		if (lang && !lang.startsWith('en'))
-			MyAMS.getScript(MyAMS.baseURL + 'i18n/myams_' + lang.substr(0,2) + '.js', function() {
+		if (lang && !lang.startsWith('en')) {
+			MyAMS.lang = lang;
+			MyAMS.getScript(MyAMS.baseURL + 'i18n/myams_' + lang.substr(0, 2) + '.js', function () {
 				MyAMS.initPage();
 			});
-		else {
+		} else {
 			MyAMS.initPage();
 		}
 	});