[IMP] client actions doc fixes

bzr revid: xmo@openerp.com-20121204094925-0h0un3eg6znnxy7i
This commit is contained in:
Xavier Morel 2012-12-04 10:49:25 +01:00
parent bf2a3109ee
commit c04b5b7e1f
1 changed files with 12 additions and 11 deletions

View File

@ -32,11 +32,15 @@ information:
The major difference is in the lifecycle of these: The major difference is in the lifecycle of these:
* if the client action maps to a function, the function will simply be * if the client action maps to a function, the function will be called
called when executing the action. The function can have no further when executing the action. The function can have no further
interaction with the Web Client itself, although it can return an interaction with the Web Client itself, although it can return an
action which will be executed after it. action which will be executed after it.
The function takes 2 parameters: the ActionManager calling it and
the descriptor for the current action (the ``ir.actions.client``
dictionary).
* if, on the other hand, the client action maps to a * if, on the other hand, the client action maps to a
:js:class:`~openerp.web.Widget`, that :js:class:`~openerp.web.Widget`, that
:js:class:`~openerp.web.Widget` will be instantiated and added to :js:class:`~openerp.web.Widget` will be instantiated and added to
@ -51,7 +55,7 @@ object::
// Registers the object 'openerp.web_dashboard.Widget' to the client // Registers the object 'openerp.web_dashboard.Widget' to the client
// action tag 'board.home.widgets' // action tag 'board.home.widgets'
instance.web.client_actions.add( instance.web.client_actions.add(
'board.home.widgets', 'openerp.web_dashboard.Widget'); 'board.home.widgets', 'instance.web_dashboard.Widget');
instance.web_dashboard.Widget = instance.web.Widget.extend({ instance.web_dashboard.Widget = instance.web.Widget.extend({
template: 'HomeWidget' template: 'HomeWidget'
}); });
@ -60,15 +64,15 @@ At this point, the generic :js:class:`~openerp.web.Widget` lifecycle
takes over, the template is rendered, inserted in the client DOM, takes over, the template is rendered, inserted in the client DOM,
bound on the object's ``$el`` property and the object is started. bound on the object's ``$el`` property and the object is started.
If the client action takes parameters, these parameters are passed in as a The second parameter to the constructor is the descriptor for the
second positional parameter to the constructor:: action itself, which contains any parameter provided::
init: function (parent, params) { init: function (parent, action) {
// execute the Widget's init // execute the Widget's init
this._super(parent); this._super(parent);
// board.home.widgets only takes a single param, the identifier of the // board.home.widgets only takes a single param, the identifier of the
// res.widget object it should display. Store it for later // res.widget object it should display. Store it for later
this.widget_id = params.widget_id; this.widget_id = action.params.widget_id;
} }
More complex initialization (DOM manipulations, RPC requests, ...) More complex initialization (DOM manipulations, RPC requests, ...)
@ -82,9 +86,6 @@ method.
code it should return a ``$.Deferred`` so callers know when it's code it should return a ``$.Deferred`` so callers know when it's
ready for interaction. ready for interaction.
Although generally speaking client actions are not really
interacted with.
.. code-block:: javascript .. code-block:: javascript
start: function () { start: function () {
@ -93,7 +94,7 @@ method.
// Simply read the res.widget object this action should display // Simply read the res.widget object this action should display
new instance.web.Model('res.widget').call( new instance.web.Model('res.widget').call(
'read', [[this.widget_id], ['title']]) 'read', [[this.widget_id], ['title']])
.then(this.proxy('on_widget_loaded')); .then(this.proxy('on_widget_loaded'));
} }
The client action can then behave exactly as it wishes to within its The client action can then behave exactly as it wishes to within its