--- a/src/pyams_skin/resources/js/myams.js Tue Apr 14 16:40:13 2015 +0200
+++ b/src/pyams_skin/resources/js/myams.js Wed Apr 15 15:41:45 2015 +0200
@@ -1594,6 +1594,20 @@
MyAMS.dialog = {
/**
+ * List of registered 'hide' callbacks
+ */
+ _hide_callbacks: [],
+
+ /**
+ * Register a callback which should be called when a dialog is closed
+ */
+ registerHideCallback: function(callback) {
+ var callbacks = ams.dialog._hide_callbacks;
+ if (callbacks.indexOf(callback) < 0)
+ callbacks.push(callback);
+ },
+
+ /**
* Modal dialog opener
*/
open: function(source, options) {
@@ -1745,7 +1759,10 @@
*/
hidden: function(e) {
var modal = e.target;
- $('.datepicker, .timepicker, .datetimepicker', modal).datetimepicker('destroy');
+ var callbacks = ams.dialog._hide_callbacks;
+ for (var index in callbacks) {
+ callbacks[index].call(modal);
+ }
}
};
@@ -1836,6 +1853,11 @@
context: result.context
});
}
+ },
+
+ /** Datetimepicker dialog cleaner callback */
+ datetimepickerDialogHiddenCallback: function() {
+ $('.datepicker, .timepicker, .datetimepicker', this).datetimepicker('destroy');
}
};
@@ -2375,6 +2397,7 @@
function(first_load) {
if (first_load) {
ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + (ams.devmode ? '.css' : '.min.css'), 'jquery-datetimepicker');
+ ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback);
}
datepickers.each(function() {
var input = $(this);
@@ -2406,6 +2429,7 @@
function(first_load) {
if (first_load) {
ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + (ams.devmode ? '.css' : '.min.css'), 'jquery-datetimepicker');
+ ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback);
}
datetimepickers.each(function() {
var input = $(this);
@@ -2437,6 +2461,7 @@
function(first_load) {
if (first_load) {
ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + (ams.devmode ? '.css' : '.min.css'), 'jquery-datetimepicker');
+ ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback);
}
timepickers.each(function() {
var input = $(this);