From 7ae2588e841a67be01a8ee83b68764db03c5e813 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20St=C3=B6ckel?= Date: Sun, 17 Apr 2011 17:42:04 +0000 Subject: [PATCH] dhtmlxmenu now doesn't autohide after clicking on checkboxes/radiobuttons, click handler can specifiy whether the field should be checked/unchecked --- phpgwapi/js/egw_action/egw_action.js | 4 +-- phpgwapi/js/egw_action/egw_action_popup.js | 2 +- phpgwapi/js/egw_action/egw_menu_dhtmlx.js | 33 +++++++++++++++++++- phpgwapi/js/egw_action/test/test_action.html | 4 ++- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/phpgwapi/js/egw_action/egw_action.js b/phpgwapi/js/egw_action/egw_action.js index c428da5bd5..3a492f5283 100644 --- a/phpgwapi/js/egw_action/egw_action.js +++ b/phpgwapi/js/egw_action/egw_action.js @@ -222,9 +222,7 @@ egwAction.prototype.execute = function(_senders, _target) _target == null; } - this.onExecute.exec(this, _senders, _target); - - return false; + return this.onExecute.exec(this, _senders, _target); } /** diff --git a/phpgwapi/js/egw_action/egw_action_popup.js b/phpgwapi/js/egw_action/egw_action_popup.js index 64243f2386..ee9857d0da 100644 --- a/phpgwapi/js/egw_action/egw_action_popup.js +++ b/phpgwapi/js/egw_action/egw_action_popup.js @@ -324,7 +324,7 @@ function egwPopupActionImplementation() item.set_onClick(function(elem) { // Copy the "checked" state elem.data.checked = elem.checked; - elem.data.execute(_selected, _target); + return elem.data.execute(_selected, _target); }); } else diff --git a/phpgwapi/js/egw_action/egw_menu_dhtmlx.js b/phpgwapi/js/egw_action/egw_menu_dhtmlx.js index 037fb5fc99..4d2343d3d3 100644 --- a/phpgwapi/js/egw_action/egw_menu_dhtmlx.js +++ b/phpgwapi/js/egw_action/egw_menu_dhtmlx.js @@ -23,9 +23,40 @@ function egwMenuImpl(_structure) if (id) { var elem = self.dhtmlxmenu.getUserData(id, 'egw_menu'); + if (elem && elem.onClick) { - elem.onClick(elem); + if (elem.checkbox) + { + self.dhtmlxmenu.setContextMenuHideAllMode(false); + } + + var res = elem.onClick(elem); + + if (elem.checkbox) + { + var checked = null; + if (res == "checkbox:disable") + { + checked = false; + } + if (res == "checkbox:enable") + { + checked = true; + } + + if (checked != null) + { + if (elem.groupIndex != 0) + { + self.dhtmlxmenu.setRadioChecked(id, checked); + } + else + { + self.dhtmlxmenu.setCheckboxState(id, checked); + } + } + } } } }); diff --git a/phpgwapi/js/egw_action/test/test_action.html b/phpgwapi/js/egw_action/test/test_action.html index 42af144724..78fe70d5c6 100644 --- a/phpgwapi/js/egw_action/test/test_action.html +++ b/phpgwapi/js/egw_action/test/test_action.html @@ -349,7 +349,9 @@ "checkbox": true, "checked": false, "caption": "Test2", - "onExecute": alertClicked + "onExecute": function() { + return "checkbox:disable"; + } } ] );