From 9db74611ded3dcb64fc57724c032b44d9d170fae Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 31 Oct 2018 16:21:18 +0000 Subject: [PATCH] [IMP] web: action links from bits & pieces Before this, the action manager only supported auto-triggering actions from (model, method) or (action_name). This adds support for providing all the action details via data attributes: * model (defaults to current action's) * resid (defaults to none) * views (defaults to list, form, unless resid is specified then defaults to just form) * domain (defaults to []) * context (defaults to {active_id, active_ids, active_model} from current action if the model has not changed, empty otherwise) The action's name/title is either the link's title (?) or its textual content. --- .../src/js/views/abstract_controller.js | 44 +++++++++++++------ .../tests/views/abstract_controller_tests.js | 21 +++++++-- 2 files changed, 47 insertions(+), 18 deletions(-) diff --git a/addons/web/static/src/js/views/abstract_controller.js b/addons/web/static/src/js/views/abstract_controller.js index 77584a272d6..eb773d91057 100644 --- a/addons/web/static/src/js/views/abstract_controller.js +++ b/addons/web/static/src/js/views/abstract_controller.js @@ -421,38 +421,54 @@ var AbstractController = mvc.Controller.extend(ActionMixin, { * When a user clicks on an link with type="action", we need to actually * do the action. This kind of links is used a lot in no-content helpers. * - * The may have - * - a data-method and data-model attribute, in that case the corresponding - * rpc will be called. If that rpc returns an action it will be executed. - * - a data-reload-on-close attribute, in that case the view will be - * reloaded after the dialog has been closed. + * * if the link has both data-model and data-method attributes, the + * corresponding method is called, chained to any action it would + * return. An optional data-reload-on-close (set to a non-falsy value) + * also causes th underlying view to be reloaded after the dialog is + * closed. + * * if the link has a name attribute, invoke the action with that + * identifier (see :class:`ActionManager.doAction` to not get the + * details) + * * otherwise an *action descriptor* is built from the link's data- + * attributes (model, res-id, views, domain and context) * * @private - * @param {OdooEvent} ev + * @param ev */ - _onActionClicked: function (ev) { + _onActionClicked: function (ev) { // FIXME: maybe this should also work on