From 0a5a8cd81a5c53966328af3f9c314c994c394590 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 1 Apr 2011 12:45:00 +0200 Subject: [PATCH] [IMP] show and hide search view based on whether the currently displayed view is searchable Note: searchability is *opt-out*, a view is searchable until it unambiguously states 'do not search me' bzr revid: xmo@openerp.com-20110401104500-n7g6so01xb8oow3n --- addons/base/controllers/main.py | 1 + addons/base/static/src/js/form.js | 15 ++++++++++++++- addons/base/static/src/js/search.js | 6 ++++++ addons/base/static/src/js/views.js | 6 ++++++ 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 0258b86e616..73d44041248 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -88,6 +88,7 @@ class Session(openerpweb.Controller): @openerpweb.jsonrequest def login(self, req, db, login, password): req.session.login(db, login, password) + return { "session_id": req.session_id, "uid": req.session._uid, diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 85cbce98bd8..707a5149542 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -2,7 +2,20 @@ openerp.base.form = function (openerp) { openerp.base.views.add('form', 'openerp.base.FormView'); -openerp.base.FormView = openerp.base.Controller.extend({ +openerp.base.FormView = openerp.base.Controller.extend( + /** @lends openerp.base.FormView# */{ + /** + * Indicates that this view is not searchable, and thus that no search + * view should be displayed (if there is one active). + */ + searchable: false, + /** + * @constructs + * @param {openerp.base.Session} session the current openerp session + * @param {String} element_id this view's root element id + * @param {openerp.base.DataSet} dataset the dataset this view will work with + * @param {String} view_id the identifier of the OpenERP view object + */ init: function(session, element_id, dataset, view_id) { this._super(session, element_id); this.dataset = dataset; diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js index 5d6b175ac88..ef00a051626 100644 --- a/addons/base/static/src/js/search.js +++ b/addons/base/static/src/js/search.js @@ -16,6 +16,12 @@ openerp.base.SearchView = openerp.base.Controller.extend({ //this.log('Starting SearchView '+this.model+this.view_id) this.rpc("/base/searchview/load", {"model": this.model, "view_id":this.view_id}, this.on_loaded); }, + show: function () { + this.$element.show(); + }, + hide: function () { + this.$element.hide(); + }, /** * Builds a list of widget rows (each row is an array of widgets) * diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 9b0572b434d..4e26766bafc 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -56,6 +56,12 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ this.views[view_type].controller = controller; } + if (view.controller.searchable === false) { + this.searchview.hide(); + } else { + this.searchview.show(); + } + this.$element .find('.views-switchers button').removeAttr('disabled') .filter('[data-view-type="' + view_type + '"]')