From a246acc15a9b63793b4b4fa2427f6bd27de341b5 Mon Sep 17 00:00:00 2001 From: Augustin Cisterne-Kaas Date: Wed, 12 Mar 2014 22:22:07 +0800 Subject: [PATCH] [ADD] Web polymorphic widget --- web_polymorphic/__init__.py | 21 ++++++++++ web_polymorphic/__openerp__.py | 43 ++++++++++++++++++++ web_polymorphic/static/src/js/view_form.js | 47 ++++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100755 web_polymorphic/__init__.py create mode 100755 web_polymorphic/__openerp__.py create mode 100755 web_polymorphic/static/src/js/view_form.js diff --git a/web_polymorphic/__init__.py b/web_polymorphic/__init__.py new file mode 100755 index 00000000..50153bfb --- /dev/null +++ b/web_polymorphic/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (c) 2010-2014 Elico Corp. All Rights Reserved. +# Augustin Cisterne-Kaas +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## diff --git a/web_polymorphic/__openerp__.py b/web_polymorphic/__openerp__.py new file mode 100755 index 00000000..9da121e0 --- /dev/null +++ b/web_polymorphic/__openerp__.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (c) 2010-2014 Elico Corp. All Rights Reserved. +# Augustin Cisterne-Kaas +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +{'name': 'Web Polymorphic', + 'version': '0.1', + 'category': 'Web', + 'depends': ['web'], + 'author': 'Elico Corp', + 'license': 'AGPL-3', + 'website': 'https://www.elico-corp.com', + 'description': """ +Add a new widget named "polymorphic" +The polymorphic field allow to dynamically store an id linked to any model in +OpenERP instead of the usual fixed one in the view definition + +E.g: + + + +""", + 'js': [ + 'static/src/js/view_form.js' + ], + 'installable': True, + 'application': False} diff --git a/web_polymorphic/static/src/js/view_form.js b/web_polymorphic/static/src/js/view_form.js new file mode 100755 index 00000000..bb51738d --- /dev/null +++ b/web_polymorphic/static/src/js/view_form.js @@ -0,0 +1,47 @@ +/****************************************************************************** +* +* OpenERP, Open Source Management Solution +* Copyright (c) 2010-2014 Elico Corp. All Rights Reserved. +* Augustin Cisterne-Kaas +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +* +******************************************************************************/ +openerp.web_polymorphic = function (instance) { + instance.web.form.FieldPolymorphic = instance.web.form.FieldMany2One.extend( { + template: "FieldMany2One", + events: { + 'focus input': function(e) { + this.field.relation = this.field_manager.get_field_value(this.polymorphic); + }, + 'click input': function(e) { + this.field.relation = this.field_manager.get_field_value(this.polymorphic); + } + }, + init: function(field_manager, node) { + this._super(field_manager, node); + this.polymorphic = this.node.attrs.polymorphic; + }, + render_editable: function() { + var self = this; + this.$drop_down = this.$el.find(".oe_m2o_drop_down_button"); + this.$drop_down.click(function() { + self.polymorphic = self.node.attrs.polymorphic; + self.field.relation = self.field_manager.get_field_value(self.polymorphic); + }); + this._super(); + } + }); + instance.web.form.widgets.add('polymorphic', 'instance.web.form.FieldPolymorphic') +};