diff --git a/web_responsive/models/__init__.py b/web_responsive/models/__init__.py index 190e5f76..e674b2be 100644 --- a/web_responsive/models/__init__.py +++ b/web_responsive/models/__init__.py @@ -2,4 +2,3 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import inherited_res_users -from . import ir_http diff --git a/web_responsive/models/ir_http.py b/web_responsive/models/ir_http.py deleted file mode 100644 index f5dad087..00000000 --- a/web_responsive/models/ir_http.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2018 Alexandre Díaz -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from odoo import models -from odoo.http import request - - -class Http(models.AbstractModel): - _inherit = 'ir.http' - - def session_info(self): - res = super(Http, self).session_info() - res.update({ - 'chatter_position': request.env.user.chatter_position or 'normal', - }) - return res diff --git a/web_responsive/static/src/js/web_responsive.js b/web_responsive/static/src/js/web_responsive.js index bbc86175..fc9d7d0d 100644 --- a/web_responsive/static/src/js/web_responsive.js +++ b/web_responsive/static/src/js/web_responsive.js @@ -10,6 +10,10 @@ odoo.define('web_responsive', function(require) { var core = require('web.core'); var config = require('web.config'); var ViewManager = require('web.ViewManager'); + var RelationalFields = require('web.relational_fields'); + var FormRenderer = require('web.FormRenderer'); + + var qweb = core.qweb; Menu.include({ @@ -306,11 +310,53 @@ odoo.define('web_responsive', function(require) { }, }); + // FieldStatus (responsive fold) + RelationalFields.FieldStatus.include({ + _renderQWebValues: function () { + return { + selections: this.status_information, // Needed to preserve order + has_folded: _.filter(this.status_information, {'selected': false}).length > 0, + clickable: !!this.attrs.clickable, + }; + }, + + _render: function () { + // FIXME: Odoo framework creates view values & render qweb in the + // same method. This cause a "double render" process to use + // new custom values. + this._super.apply(this, arguments); + this.$el.html(qweb.render("FieldStatus.content", this._renderQWebValues())); + } + }); + + // Responsive view "action" buttons + FormRenderer.include({ + _renderHeaderButtons: function (node) { + var self = this; + var $buttons = this._super(node); + + var $container = $(qweb.render('web_responsive.MenuStatusbarButtons')); + $container.find('.o_statusbar_buttons_base').append($buttons); + + var $dropdownMenu = $container.find('.dropdown-menu'); + _.each(node.children, function (child) { + if (child.tag === 'button') { + $dropdownMenu.append($('