--- a/src/pyams_skin/resources/js/myams.js Tue Sep 08 17:19:46 2015 +0200
+++ b/src/pyams_skin/resources/js/myams.js Tue Sep 08 17:21:34 2015 +0200
@@ -1035,7 +1035,6 @@
ams.ajax.check($.jsonRPC,
ams.baseURL + 'ext/jquery-jsonrpc' + ams.devext + '.js',
function() {
- var result;
if (typeof(options) == 'function') {
callback = options;
options = {};
@@ -1676,6 +1675,28 @@
MyAMS.dialog = {
/**
+ * List of registered 'shown' callbacks
+ */
+ _shown_callbacks: [],
+
+ /**
+ * Register a callback which should be called when a dialog is shown
+ */
+ registerShownCallback: function(callback, dialog) {
+ if (dialog) {
+ var callbacks = dialog.data('shown-callbacks');
+ if (callbacks === undefined) {
+ callbacks = [];
+ dialog.data('shown-callbacks', callbacks);
+ }
+ } else {
+ callbacks = ams.dialog._shown_callbacks;
+ }
+ if (callbacks.indexOf(callback) < 0)
+ callbacks.push(callback);
+ },
+
+ /**
* List of registered 'hide' callbacks
*/
_hide_callbacks: [],
@@ -1683,8 +1704,16 @@
/**
* Register a callback which should be called when a dialog is closed
*/
- registerHideCallback: function(callback) {
- var callbacks = ams.dialog._hide_callbacks;
+ registerHideCallback: function(callback, dialog) {
+ if (dialog) {
+ var callbacks = dialog.data('hide-callbacks');
+ if (callbacks === undefined) {
+ callbacks = [];
+ dialog.data('hide-callbacks', callbacks);
+ }
+ } else {
+ callbacks = ams.dialog._hide_callbacks;
+ }
if (callbacks.indexOf(callback) < 0)
callbacks.push(callback);
},
@@ -1821,6 +1850,19 @@
} else {
$('.scrollmarker', viewport).remove();
}
+
+ // Call shown callbacks registered for this dialog
+ var callbacks = $('.modal-dialog', modal).data('shown-callbacks');
+ if (callbacks) {
+ for (var index in callbacks) {
+ callbacks[index].call(modal);
+ }
+ }
+ // Call globally registered shown callbacks
+ callbacks = ams.dialog._shown_callbacks;
+ for (index in callbacks) {
+ callbacks[index].call(modal);
+ }
},
/**
@@ -1843,9 +1885,16 @@
var modal = e.target;
// Call registered cleaning callbacks
ams.skin.cleanContainer(modal);
- // Call registered hide callbacks
- var callbacks = ams.dialog._hide_callbacks;
- for (var index in callbacks) {
+ // Call hide callbacks registered for this dialog
+ var callbacks = $('.modal-dialog', modal).data('hide-callbacks');
+ if (callbacks) {
+ for (var index in callbacks) {
+ callbacks[index].call(modal);
+ }
+ }
+ // Call globally registered hide callbacks
+ callbacks = ams.dialog._hide_callbacks;
+ for (index in callbacks) {
callbacks[index].call(modal);
}
}