From 0831ddc640aa4cddbdd513903a8e2de93c554df8 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Fri, 10 Jul 2015 15:39:06 +0200 Subject: [PATCH 01/40] support 'open' on many2many_tags [ADD] support 'no_open_edit' on many2one [FIX] typos --- web_m2x_options/README.rst | 10 ++++++++-- web_m2x_options/__openerp__.py | 3 +++ web_m2x_options/static/src/js/form.js | 24 ++++++++++++++++++++++++ web_m2x_options/static/src/xml/base.xml | 13 +++++++++++++ 4 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 web_m2x_options/static/src/xml/base.xml diff --git a/web_m2x_options/README.rst b/web_m2x_options/README.rst index be6e76039157..abdd880345df 100644 --- a/web_m2x_options/README.rst +++ b/web_m2x_options/README.rst @@ -61,7 +61,13 @@ New options A dictionary to link field value with a HTML color. This option has to be used with field_color. +``no_open_edit`` *boolean* (Default: value of ``no_open`` which is ``False`` if not set) + Causes a many2one not to offer to click through in edit mode, but well in read mode + +``open`` *boolean* (Default: ``False``) + + Makes many2many_tags buttons that open the linked resource ir.config_parameter options --------------------------- @@ -110,6 +116,6 @@ Your XML form view definition could contain:: Note ---- -Double check that you have no inherited view that remote ``options`` you set on a field ! -If nothing work, add a debugger in the first ligne of ``get_search_result method`` and enable debug mode in OpenERP. When you write something in a many2one field, javascript debugger should pause. If not verify your installation. +Double check that you have no inherited view that remove ``options`` you set on a field ! +If nothing works, add a debugger in the first line of ``get_search_result method`` and enable debug mode in OpenERP. When you write something in a many2one field, javascript debugger should pause. If not verify your installation. diff --git a/web_m2x_options/__openerp__.py b/web_m2x_options/__openerp__.py index be57d3bdf5bb..169161df3d2b 100644 --- a/web_m2x_options/__openerp__.py +++ b/web_m2x_options/__openerp__.py @@ -7,6 +7,9 @@ 'base', 'web', ], + 'qweb': [ + 'static/src/xml/base.xml', + ], 'data': ['views/view.xml'], "author": "0k.io,Odoo Community Association (OCA)", 'installable': False, diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index bc4d3bebd335..7342794ea2e5 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -336,6 +336,30 @@ openerp.web_m2x_options = function (instance) { return values; }) }, + + render_value: function() + { + var self = this; + return jQuery.when(this._super.apply(this, arguments)) + .then(function() + { + if(self.options.open) + { + self.$el.find('.oe_tag') + .css('cursor', 'pointer') + .click(function(e) + { + var id = parseInt(jQuery(this).attr('data-id')); + self.do_action({ + type: 'ir.actions.act_window', + res_model: self.field.relation, + views: [[false, 'form']], + res_id: id, + }); + }); + } + }); + }, }); }; diff --git a/web_m2x_options/static/src/xml/base.xml b/web_m2x_options/static/src/xml/base.xml new file mode 100644 index 000000000000..9fbf425eaadc --- /dev/null +++ b/web_m2x_options/static/src/xml/base.xml @@ -0,0 +1,13 @@ + + + + + jQuery(this).attr('t-if', '!(widget.options.no_open || widget.options.no_open_edit)'); + + + + + jQuery(this).attr('t-att-data-id', 'el[0]'); + + + From 29861292f392d3ca5aec9dbe35f10c25267fc3cb Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Tue, 15 Sep 2015 15:54:16 +0200 Subject: [PATCH 02/40] adapt README.rst to OCA template --- web_m2x_options/README.rst | 76 +++++++++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 21 deletions(-) diff --git a/web_m2x_options/README.rst b/web_m2x_options/README.rst index abdd880345df..5e0faebae56b 100644 --- a/web_m2x_options/README.rst +++ b/web_m2x_options/README.rst @@ -1,35 +1,35 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + ================================== Add new options for many2one field ================================== - -Description ------------ - This modules modifies "many2one" and "many2manytags" form widgets so as to add some new display control options. -**New: support many2manytags widget !** - -**New: support global option management with ir.config_parameter !** - Options provided includes possibility to remove "Create..." and/or "Create and Edit..." entries from many2one drop down. You can also change default number of proposition appearing in the drop-down. Or prevent the dialog box poping in case of validation error. If not specified, the module will avoid proposing any of the create options -if the current user have no permission rights to create the related object. +if the current has no permission rights to create the related object. +Usage +===== -Requirements ------------- +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/162/8.0 -Was tested on openerp 8.0, trunk, saas-5 branch. New way to import js file. (thanks to tfossoul) +For further information, please visit: +* https://www.odoo.com/forum/help-1 -New options ------------ +in the field's options dict +--------------------------- ``create`` *boolean* (Default: depends if user have create rights) @@ -47,20 +47,20 @@ New options Number of displayed record in drop-down panel -``search_more`` *boolean* +``search_more`` *boolean* Used to force disable/enable search more button. - + ``field_color`` *string* A string to define the field used to define color. This option has to be used with colors. - + ``colors`` *dictionary* A dictionary to link field value with a HTML color. This option has to be used with field_color. - + ``no_open_edit`` *boolean* (Default: value of ``no_open`` which is ``False`` if not set) Causes a many2one not to offer to click through in edit mode, but well in read mode @@ -113,9 +113,43 @@ Your XML form view definition could contain:: ... -Note ----- +Known issues +============ Double check that you have no inherited view that remove ``options`` you set on a field ! -If nothing works, add a debugger in the first line of ``get_search_result method`` and enable debug mode in OpenERP. When you write something in a many2one field, javascript debugger should pause. If not verify your installation. +If nothing works, add a debugger in the first line of ``get_search_result method`` and enable debug mode in Odoo. When you write something in a many2one field, javascript debugger should pause. If not verify your installation. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed feedback +`here `_. + +Credits +======= + +Contributors +------------ + +* David Coninckx +* Emanuel Cino +* Holger Brunn +* Nicolas JEUDY +* Yannick Vaucher + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. +To contribute to this module, please visit http://odoo-community.org. From aeb69aca2fbf4986d13641a25ebb68407aee5e60 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Tue, 15 Sep 2015 16:35:27 +0200 Subject: [PATCH 03/40] @pedrobaeza's proposals to roadmap --- web_m2x_options/README.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/web_m2x_options/README.rst b/web_m2x_options/README.rst index 5e0faebae56b..e4301ffcd80e 100644 --- a/web_m2x_options/README.rst +++ b/web_m2x_options/README.rst @@ -119,6 +119,13 @@ Known issues Double check that you have no inherited view that remove ``options`` you set on a field ! If nothing works, add a debugger in the first line of ``get_search_result method`` and enable debug mode in Odoo. When you write something in a many2one field, javascript debugger should pause. If not verify your installation. +Roadmap +======= + +- Instead of making the tags rectangle clickable, I think it's better to put the text as a clickable link, so we will get a consistent behaviour/aspect with other clickable elements (many2one...). +- In edit mode, it would be great to add an icon like the one on many2one fields to allow to open the many2many in a popup window. +- Include this feature as a configurable option via parameter to have this behaviour by default in all many2many tags. + Bug Tracker =========== From b06a541c4a1814d8a5abd09725f6a703b2e95d46 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Mon, 28 Sep 2015 14:54:21 +0200 Subject: [PATCH 04/40] missing word in readme --- web_m2x_options/README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_m2x_options/README.rst b/web_m2x_options/README.rst index e4301ffcd80e..de0adaac3d33 100644 --- a/web_m2x_options/README.rst +++ b/web_m2x_options/README.rst @@ -15,7 +15,7 @@ proposition appearing in the drop-down. Or prevent the dialog box poping in case of validation error. If not specified, the module will avoid proposing any of the create options -if the current has no permission rights to create the related object. +if the current user has no permission rights to create the related object. Usage ===== From a030ab4982ea5bd9685419dcf25feb92e07bd48c Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Mon, 28 Sep 2015 14:56:02 +0200 Subject: [PATCH 05/40] this week's pylint errors --- web_m2x_options/__init__.py | 1 + web_m2x_options/__openerp__.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/web_m2x_options/__init__.py b/web_m2x_options/__init__.py index e69de29bb2d1..57d631c3f004 100644 --- a/web_m2x_options/__init__.py +++ b/web_m2x_options/__init__.py @@ -0,0 +1 @@ +# coding: utf-8 diff --git a/web_m2x_options/__openerp__.py b/web_m2x_options/__openerp__.py index 169161df3d2b..59284e49bec3 100644 --- a/web_m2x_options/__openerp__.py +++ b/web_m2x_options/__openerp__.py @@ -10,8 +10,8 @@ 'qweb': [ 'static/src/xml/base.xml', ], + 'license': 'AGPL-3', 'data': ['views/view.xml'], "author": "0k.io,Odoo Community Association (OCA)", 'installable': False, - "active": False, } From 7c39fe47b941d0484fff0edcf058c3ffc3ad40ac Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Mon, 16 Nov 2015 13:00:04 +0100 Subject: [PATCH 06/40] web_m2x_options check Many2one and Many2many options --- web_m2x_options/static/src/js/form.js | 119 +++++++++++++++----------- 1 file changed, 69 insertions(+), 50 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 7342794ea2e5..c67a6ad7ca17 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -67,11 +67,11 @@ openerp.web_m2x_options = function (instance) { var self = this; // add options limit used to change number of selections record // returned. - if (_.isUndefined(this.view)) - return this._super.apply(this, arguments); - if (!_.isUndefined(this.view.ir_options['web_m2x_options.limit'])) { - this.limit = parseInt(this.view.ir_options['web_m2x_options.limit']); - } + if (_.isUndefined(this.view)) + return this._super.apply(this, arguments); + if (!_.isUndefined(this.view.ir_options['web_m2x_options.limit'])) { + this.limit = parseInt(this.view.ir_options['web_m2x_options.limit']); + } if (typeof this.options.limit === 'number') { this.limit = this.options.limit; @@ -99,8 +99,7 @@ openerp.web_m2x_options = function (instance) { self.build_context())); var create_rights; - if (typeof this.options.create === "undefined" || - typeof this.options.create_edit === "undefined") { + if (!(self.options && (self.options.no_create || self.options.no_create_edit))) { create_rights = new instance.web.Model(this.field.relation).call( "check_access_rights", ["create", false]); } @@ -119,7 +118,7 @@ openerp.web_m2x_options = function (instance) { id: x[0], }; }); - + // Search result value colors if (self.colors && self.field_color) { @@ -127,7 +126,7 @@ openerp.web_m2x_options = function (instance) { for (var index in values) { value_ids.push(values[index].id); } - + // RPC request to get field_color from Objects Objects.query([self.field_color]) .filter([['id', 'in', value_ids]]) @@ -137,7 +136,7 @@ openerp.web_m2x_options = function (instance) { if (values[index_value].id == objects[index].id) { // Find value in values by comparing ids var value = values[index_value]; - + // Find color with field value as key var color = self.colors[objects[index][self.field_color]] || 'black'; value.label = ''+value.label+''; @@ -171,10 +170,15 @@ openerp.web_m2x_options = function (instance) { var raw_result = _(data.result).map(function (x) { return x[1]; }); + var no_quick_create = ( + self.options && (self.options.no_create || + self.options.no_quick_create) + ) + var m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']) + var m2x_create = self.view.ir_options['web_m2x_options.create'] == "True" - if ((_.isUndefined(self.options.create) && _.isUndefined(self.view.ir_options['web_m2x_options.create']) && can_create) || - (_.isUndefined(self.options.create) && self.view.ir_options['web_m2x_options.create'] == "True") || - self.options.create) { + if (!no_quick_create && ((m2x_create_undef && can_create) || + m2x_create)) { if (search_val.length > 0 && !_.include(raw_result, search_val)) { @@ -192,10 +196,15 @@ openerp.web_m2x_options = function (instance) { } // create... + var no_create_edit = ( + self.options && (self.options.no_create || + self.options.no_create_edit) + ) + var m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']) + var m2x_create_edit = self.view.ir_options['web_m2x_options.create_edit'] == "True" - if ((_.isUndefined(self.options.create_edit) && _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']) && can_create) || - (_.isUndefined(self.options.create) && self.view.ir_options['web_m2x_options.create_edit'] == "True") || - self.options.create_edit) { + if (!no_create_edit && ((m2x_create_edit_undef && can_create) || + m2x_create_edit)) { values.push({ label: _t("Create and Edit..."), @@ -207,7 +216,7 @@ openerp.web_m2x_options = function (instance) { classname: 'oe_m2o_dropdown_option' }); } - + // Check if colors specified to wait for RPC if (!(self.field_color && self.colors)){ def.resolve(values); @@ -226,28 +235,28 @@ openerp.web_m2x_options = function (instance) { new instance.web.form.M2ODialog(this).open(); } }, - - start: function() { - this._super.apply(this, arguments); - return this.get_options(); - }, - - get_options: function() { - var self = this; - if (_.isUndefined(this.view.ir_options_loaded)) { - this.view.ir_options_loaded = $.Deferred(); - this.view.ir_options = {}; - (new instance.web.Model("ir.config_parameter")) - .query(["key", "value"]).filter([['key', 'in', OPTIONS]]) - .all().then(function(records) { - _(records).each(function(record) { - self.view.ir_options[record.key] = record.value; - }); - self.view.ir_options_loaded.resolve(); - }); - } - return this.view.ir_options_loaded; - }, + + start: function() { + this._super.apply(this, arguments); + return this.get_options(); + }, + + get_options: function() { + var self = this; + if (_.isUndefined(this.view.ir_options_loaded)) { + this.view.ir_options_loaded = $.Deferred(); + this.view.ir_options = {}; + (new instance.web.Model("ir.config_parameter")) + .query(["key", "value"]).filter([['key', 'in', OPTIONS]]) + .all().then(function(records) { + _(records).each(function(record) { + self.view.ir_options[record.key] = record.value; + }); + self.view.ir_options_loaded.resolve(); + }); + } + return this.view.ir_options_loaded; + }, /** * Call this method to search using a string. @@ -258,10 +267,10 @@ openerp.web_m2x_options = function (instance) { // add options limit used to change number of selections record // returned. - - if (!_.isUndefined(this.view.ir_options['web_m2x_options.limit'])) { - this.limit = parseInt(this.view.ir_options['web_m2x_options.limit']); - } + + if (!_.isUndefined(this.view.ir_options['web_m2x_options.limit'])) { + this.limit = parseInt(this.view.ir_options['web_m2x_options.limit']); + } if (typeof this.options.limit === 'number') { this.limit = this.options.limit; @@ -300,10 +309,15 @@ openerp.web_m2x_options = function (instance) { }); } // quick create + var no_quick_create = ( + self.options && (self.options.no_create || + self.options.no_quick_create) + ) + var m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']) + var m2x_create = self.view.ir_options['web_m2x_options.create'] == "True" - if ((_.isUndefined(self.options.create) && _.isUndefined(self.view.ir_options['web_m2x_options.create'])) || - (_.isUndefined(self.options.create) && self.view.ir_options['web_m2x_options.create'] == 'True') || - self.options.create) { + if (!no_quick_create && ((m2x_create_undef && can_create) || + m2x_create)) { var raw_result = _(data.result).map(function(x) {return x[1];}); if (search_val.length > 0 && !_.include(raw_result, search_val)) { @@ -319,10 +333,15 @@ openerp.web_m2x_options = function (instance) { } // create... - - if ((_.isUndefined(self.options.create_edit === 'undefined') && _.isUndefined(self.view.ir_options['web_m2x_options.create_edit'])) || - (_.isUndefined(self.options.create) && self.view.ir_options['web_m2x_options.create_edit'] == 'True') || - self.options.create_edit) { + var no_create_edit = ( + self.options && (self.options.no_create || + self.options.no_create_edit) + ) + var m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']) + var m2x_create_edit = self.view.ir_options['web_m2x_options.create_edit'] == "True" + + if (!no_create_edit && ((m2x_create_edit_undef && can_create) || + m2x_create_edit)) { values.push({ label: _t("Create and Edit..."), From 4bd1e8674473b63858703b6cb787cdd472ab1880 Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Mon, 16 Nov 2015 18:22:10 +0100 Subject: [PATCH 07/40] Fix many2many JS error --- web_m2x_options/static/src/js/form.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index c67a6ad7ca17..524197a57392 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -316,8 +316,7 @@ openerp.web_m2x_options = function (instance) { var m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']) var m2x_create = self.view.ir_options['web_m2x_options.create'] == "True" - if (!no_quick_create && ((m2x_create_undef && can_create) || - m2x_create)) { + if (!no_quick_create && (m2x_create_undef || m2x_create)) { var raw_result = _(data.result).map(function(x) {return x[1];}); if (search_val.length > 0 && !_.include(raw_result, search_val)) { @@ -340,8 +339,7 @@ openerp.web_m2x_options = function (instance) { var m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']) var m2x_create_edit = self.view.ir_options['web_m2x_options.create_edit'] == "True" - if (!no_create_edit && ((m2x_create_edit_undef && can_create) || - m2x_create_edit)) { + if (!no_create_edit && (m2x_create_edit_undef || m2x_create_edit)) { values.push({ label: _t("Create and Edit..."), From 08bbc42ed13231417208a49540a1869f9338f26a Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Mon, 23 Nov 2015 23:43:23 -0500 Subject: [PATCH 08/40] OCA Transbot updated translations from Transifex --- web_m2x_options/i18n/en.po | 42 +++++++++++++++++++++++++++++++++++++ web_m2x_options/i18n/es.po | 43 ++++++++++++++++++++++++++++++++++++++ web_m2x_options/i18n/sl.po | 43 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 128 insertions(+) create mode 100644 web_m2x_options/i18n/en.po create mode 100644 web_m2x_options/i18n/es.po create mode 100644 web_m2x_options/i18n/sl.po diff --git a/web_m2x_options/i18n/en.po b/web_m2x_options/i18n/en.po new file mode 100644 index 000000000000..77f35c7631cc --- /dev/null +++ b/web_m2x_options/i18n/en.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: web (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 13:46+0000\n" +"PO-Revision-Date: 2015-11-07 11:20+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: English (http://www.transifex.com/oca/OCA-web-8-0/language/en/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:324 +#, python-format +msgid "Create \"%s\"" +msgstr "Create \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:210 +#: code:addons/web_m2x_options/static/src/js/form.js:345 +#, python-format +msgid "Create and Edit..." +msgstr "Create and Edit..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:156 +#: code:addons/web_m2x_options/static/src/js/form.js:302 +#, python-format +msgid "Search More..." +msgstr "Search More..." diff --git a/web_m2x_options/i18n/es.po b/web_m2x_options/i18n/es.po new file mode 100644 index 000000000000..f368d172de98 --- /dev/null +++ b/web_m2x_options/i18n/es.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# Pedro M. Baeza , 2015 +msgid "" +msgstr "" +"Project-Id-Version: web (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 13:46+0000\n" +"PO-Revision-Date: 2015-11-07 11:28+0000\n" +"Last-Translator: Pedro M. Baeza \n" +"Language-Team: Spanish (http://www.transifex.com/oca/OCA-web-8-0/language/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:324 +#, python-format +msgid "Create \"%s\"" +msgstr "Crear \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:210 +#: code:addons/web_m2x_options/static/src/js/form.js:345 +#, python-format +msgid "Create and Edit..." +msgstr "Crear y editar..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:156 +#: code:addons/web_m2x_options/static/src/js/form.js:302 +#, python-format +msgid "Search More..." +msgstr "Buscar más..." diff --git a/web_m2x_options/i18n/sl.po b/web_m2x_options/i18n/sl.po new file mode 100644 index 000000000000..f5a89dfdedf4 --- /dev/null +++ b/web_m2x_options/i18n/sl.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# Matjaž Mozetič , 2015 +msgid "" +msgstr "" +"Project-Id-Version: web (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 13:46+0000\n" +"PO-Revision-Date: 2015-11-08 05:46+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-web-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:324 +#, python-format +msgid "Create \"%s\"" +msgstr "Ustvari \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:210 +#: code:addons/web_m2x_options/static/src/js/form.js:345 +#, python-format +msgid "Create and Edit..." +msgstr "Ustvari in urejaj..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:156 +#: code:addons/web_m2x_options/static/src/js/form.js:302 +#, python-format +msgid "Search More..." +msgstr "Poišči več..." From 33a3b44bdeec1f086ec39573fe33615e3e7ec374 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 20 Dec 2015 00:44:32 -0500 Subject: [PATCH 09/40] OCA Transbot updated translations from Transifex --- web_m2x_options/i18n/ar.po | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 web_m2x_options/i18n/ar.po diff --git a/web_m2x_options/i18n/ar.po b/web_m2x_options/i18n/ar.po new file mode 100644 index 000000000000..4e2c202a0467 --- /dev/null +++ b/web_m2x_options/i18n/ar.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# SaFi J. , 2015 +msgid "" +msgstr "" +"Project-Id-Version: web (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-12-16 07:41+0000\n" +"PO-Revision-Date: 2015-12-16 17:30+0000\n" +"Last-Translator: SaFi J. \n" +"Language-Team: Arabic (http://www.transifex.com/oca/OCA-web-8-0/language/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:324 +#, python-format +msgid "Create \"%s\"" +msgstr "إنشاء \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:210 +#: code:addons/web_m2x_options/static/src/js/form.js:345 +#, python-format +msgid "Create and Edit..." +msgstr "إنشاء وتحرير ..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:156 +#: code:addons/web_m2x_options/static/src/js/form.js:302 +#, python-format +msgid "Search More..." +msgstr "البحث عن المزيد ..." From d5eef6680d9f0c682be9760eae5f9fb74a98db35 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 10 Jan 2016 02:27:30 -0500 Subject: [PATCH 10/40] OCA Transbot updated translations from Transifex --- web_m2x_options/i18n/tr.po | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 web_m2x_options/i18n/tr.po diff --git a/web_m2x_options/i18n/tr.po b/web_m2x_options/i18n/tr.po new file mode 100644 index 000000000000..2dca769731ba --- /dev/null +++ b/web_m2x_options/i18n/tr.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# Ahmet Altınışık , 2015 +msgid "" +msgstr "" +"Project-Id-Version: web (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-08 21:34+0000\n" +"PO-Revision-Date: 2015-12-30 21:53+0000\n" +"Last-Translator: Ahmet Altınışık \n" +"Language-Team: Turkish (http://www.transifex.com/oca/OCA-web-8-0/language/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:324 +#, python-format +msgid "Create \"%s\"" +msgstr "Oluştur \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:210 +#: code:addons/web_m2x_options/static/src/js/form.js:345 +#, python-format +msgid "Create and Edit..." +msgstr "Oluştur ve düzenle..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:156 +#: code:addons/web_m2x_options/static/src/js/form.js:302 +#, python-format +msgid "Search More..." +msgstr "Daha Fazla..." From e6aad8e27e303e1249807c88b9b172c64af64fe9 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 31 Jan 2016 03:05:56 -0500 Subject: [PATCH 11/40] OCA Transbot updated translations from Transifex --- web_m2x_options/i18n/de.po | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 web_m2x_options/i18n/de.po diff --git a/web_m2x_options/i18n/de.po b/web_m2x_options/i18n/de.po new file mode 100644 index 000000000000..e0c8609a8983 --- /dev/null +++ b/web_m2x_options/i18n/de.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# Rudolf Schnapka , 2016 +msgid "" +msgstr "" +"Project-Id-Version: web (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-10 07:31+0000\n" +"PO-Revision-Date: 2016-01-18 20:15+0000\n" +"Last-Translator: Rudolf Schnapka \n" +"Language-Team: German (http://www.transifex.com/oca/OCA-web-8-0/language/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:324 +#, python-format +msgid "Create \"%s\"" +msgstr "Anlegen \"%s" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:210 +#: code:addons/web_m2x_options/static/src/js/form.js:345 +#, python-format +msgid "Create and Edit..." +msgstr "Anlegen und Bearbeiten" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:156 +#: code:addons/web_m2x_options/static/src/js/form.js:302 +#, python-format +msgid "Search More..." +msgstr "Suche weitere..." From 3be8ab1d5f219dc3f40ab1226d2ada410777d4a5 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 7 Feb 2016 03:20:39 -0500 Subject: [PATCH 12/40] OCA Transbot updated translations from Transifex --- web_m2x_options/i18n/fi.po | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 web_m2x_options/i18n/fi.po diff --git a/web_m2x_options/i18n/fi.po b/web_m2x_options/i18n/fi.po new file mode 100644 index 000000000000..b481c42b195e --- /dev/null +++ b/web_m2x_options/i18n/fi.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# Jarmo Kortetjärvi , 2016 +msgid "" +msgstr "" +"Project-Id-Version: web (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-10 07:31+0000\n" +"PO-Revision-Date: 2016-02-01 09:52+0000\n" +"Last-Translator: Jarmo Kortetjärvi \n" +"Language-Team: Finnish (http://www.transifex.com/oca/OCA-web-8-0/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:324 +#, python-format +msgid "Create \"%s\"" +msgstr "Luo \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:210 +#: code:addons/web_m2x_options/static/src/js/form.js:345 +#, python-format +msgid "Create and Edit..." +msgstr "Luo ja muokkaa..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:156 +#: code:addons/web_m2x_options/static/src/js/form.js:302 +#, python-format +msgid "Search More..." +msgstr "Hae lisää..." From ab6502add321ac35cc40a49794e9a8e5a22145ff Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Wed, 10 Feb 2016 17:05:51 +0100 Subject: [PATCH 13/40] Limit name_search to 160 like Odoo core does --- web_m2x_options/static/src/js/form.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 524197a57392..9fe51d23b056 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -155,9 +155,12 @@ openerp.web_m2x_options = function (instance) { values.push({ label: _t("Search More..."), action: function () { + // limit = 80 for improving performance, similar + // to Odoo implementation here: + // https://github.com/odoo/odoo/commit/8c3cdce539d87775b59b3f2d5ceb433f995821bf dataset.name_search( search_val, self.build_domain(), - 'ilike', false).done(function (data) { + 'ilike', 80).done(function (data) { self._search_create_popup("search", data); }); }, @@ -301,7 +304,10 @@ openerp.web_m2x_options = function (instance) { values.push({ label: _t("Search More..."), action: function() { - dataset.name_search(search_val, self.build_domain(), 'ilike', false).done(function(data) { + // limit = 80 for improving performance, similar + // to Odoo implementation here: + // https://github.com/odoo/odoo/commit/8c3cdce539d87775b59b3f2d5ceb433f995821bf + dataset.name_search(search_val, self.build_domain(), 'ilike', 80).done(function(data) { self._search_create_popup("search", data); }); }, From 9d5e776b2aa7daa26f59435cbc8872191d4d3662 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 28 Feb 2016 05:11:25 -0500 Subject: [PATCH 14/40] OCA Transbot updated translations from Transifex --- web_m2x_options/i18n/ar.po | 12 ++++++------ web_m2x_options/i18n/de.po | 12 ++++++------ web_m2x_options/i18n/en.po | 12 ++++++------ web_m2x_options/i18n/es.po | 12 ++++++------ web_m2x_options/i18n/fi.po | 12 ++++++------ web_m2x_options/i18n/sl.po | 12 ++++++------ web_m2x_options/i18n/tr.po | 13 +++++++------ 7 files changed, 43 insertions(+), 42 deletions(-) diff --git a/web_m2x_options/i18n/ar.po b/web_m2x_options/i18n/ar.po index 4e2c202a0467..1011622c21a8 100644 --- a/web_m2x_options/i18n/ar.po +++ b/web_m2x_options/i18n/ar.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: web (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-16 07:41+0000\n" +"POT-Creation-Date: 2016-02-26 02:05+0000\n" "PO-Revision-Date: 2015-12-16 17:30+0000\n" "Last-Translator: SaFi J. \n" "Language-Team: Arabic (http://www.transifex.com/oca/OCA-web-8-0/language/ar/)\n" @@ -20,16 +20,16 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:188 -#: code:addons/web_m2x_options/static/src/js/form.js:324 +#: code:addons/web_m2x_options/static/src/js/form.js:191 +#: code:addons/web_m2x_options/static/src/js/form.js:330 #, python-format msgid "Create \"%s\"" msgstr "إنشاء \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:210 -#: code:addons/web_m2x_options/static/src/js/form.js:345 +#: code:addons/web_m2x_options/static/src/js/form.js:213 +#: code:addons/web_m2x_options/static/src/js/form.js:351 #, python-format msgid "Create and Edit..." msgstr "إنشاء وتحرير ..." @@ -37,7 +37,7 @@ msgstr "إنشاء وتحرير ..." #. module: web_m2x_options #. openerp-web #: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:302 +#: code:addons/web_m2x_options/static/src/js/form.js:305 #, python-format msgid "Search More..." msgstr "البحث عن المزيد ..." diff --git a/web_m2x_options/i18n/de.po b/web_m2x_options/i18n/de.po index e0c8609a8983..112e2b911061 100644 --- a/web_m2x_options/i18n/de.po +++ b/web_m2x_options/i18n/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: web (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-10 07:31+0000\n" +"POT-Creation-Date: 2016-02-26 02:05+0000\n" "PO-Revision-Date: 2016-01-18 20:15+0000\n" "Last-Translator: Rudolf Schnapka \n" "Language-Team: German (http://www.transifex.com/oca/OCA-web-8-0/language/de/)\n" @@ -20,16 +20,16 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:188 -#: code:addons/web_m2x_options/static/src/js/form.js:324 +#: code:addons/web_m2x_options/static/src/js/form.js:191 +#: code:addons/web_m2x_options/static/src/js/form.js:330 #, python-format msgid "Create \"%s\"" msgstr "Anlegen \"%s" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:210 -#: code:addons/web_m2x_options/static/src/js/form.js:345 +#: code:addons/web_m2x_options/static/src/js/form.js:213 +#: code:addons/web_m2x_options/static/src/js/form.js:351 #, python-format msgid "Create and Edit..." msgstr "Anlegen und Bearbeiten" @@ -37,7 +37,7 @@ msgstr "Anlegen und Bearbeiten" #. module: web_m2x_options #. openerp-web #: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:302 +#: code:addons/web_m2x_options/static/src/js/form.js:305 #, python-format msgid "Search More..." msgstr "Suche weitere..." diff --git a/web_m2x_options/i18n/en.po b/web_m2x_options/i18n/en.po index 77f35c7631cc..de2d12dbde3d 100644 --- a/web_m2x_options/i18n/en.po +++ b/web_m2x_options/i18n/en.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: web (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-11-23 13:46+0000\n" +"POT-Creation-Date: 2016-02-26 02:05+0000\n" "PO-Revision-Date: 2015-11-07 11:20+0000\n" "Last-Translator: OCA Transbot \n" "Language-Team: English (http://www.transifex.com/oca/OCA-web-8-0/language/en/)\n" @@ -19,16 +19,16 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:188 -#: code:addons/web_m2x_options/static/src/js/form.js:324 +#: code:addons/web_m2x_options/static/src/js/form.js:191 +#: code:addons/web_m2x_options/static/src/js/form.js:330 #, python-format msgid "Create \"%s\"" msgstr "Create \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:210 -#: code:addons/web_m2x_options/static/src/js/form.js:345 +#: code:addons/web_m2x_options/static/src/js/form.js:213 +#: code:addons/web_m2x_options/static/src/js/form.js:351 #, python-format msgid "Create and Edit..." msgstr "Create and Edit..." @@ -36,7 +36,7 @@ msgstr "Create and Edit..." #. module: web_m2x_options #. openerp-web #: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:302 +#: code:addons/web_m2x_options/static/src/js/form.js:305 #, python-format msgid "Search More..." msgstr "Search More..." diff --git a/web_m2x_options/i18n/es.po b/web_m2x_options/i18n/es.po index f368d172de98..7a4764bae86a 100644 --- a/web_m2x_options/i18n/es.po +++ b/web_m2x_options/i18n/es.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: web (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-11-23 13:46+0000\n" +"POT-Creation-Date: 2016-02-26 02:05+0000\n" "PO-Revision-Date: 2015-11-07 11:28+0000\n" "Last-Translator: Pedro M. Baeza \n" "Language-Team: Spanish (http://www.transifex.com/oca/OCA-web-8-0/language/es/)\n" @@ -20,16 +20,16 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:188 -#: code:addons/web_m2x_options/static/src/js/form.js:324 +#: code:addons/web_m2x_options/static/src/js/form.js:191 +#: code:addons/web_m2x_options/static/src/js/form.js:330 #, python-format msgid "Create \"%s\"" msgstr "Crear \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:210 -#: code:addons/web_m2x_options/static/src/js/form.js:345 +#: code:addons/web_m2x_options/static/src/js/form.js:213 +#: code:addons/web_m2x_options/static/src/js/form.js:351 #, python-format msgid "Create and Edit..." msgstr "Crear y editar..." @@ -37,7 +37,7 @@ msgstr "Crear y editar..." #. module: web_m2x_options #. openerp-web #: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:302 +#: code:addons/web_m2x_options/static/src/js/form.js:305 #, python-format msgid "Search More..." msgstr "Buscar más..." diff --git a/web_m2x_options/i18n/fi.po b/web_m2x_options/i18n/fi.po index b481c42b195e..9dab4ae40247 100644 --- a/web_m2x_options/i18n/fi.po +++ b/web_m2x_options/i18n/fi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: web (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-10 07:31+0000\n" +"POT-Creation-Date: 2016-02-26 02:05+0000\n" "PO-Revision-Date: 2016-02-01 09:52+0000\n" "Last-Translator: Jarmo Kortetjärvi \n" "Language-Team: Finnish (http://www.transifex.com/oca/OCA-web-8-0/language/fi/)\n" @@ -20,16 +20,16 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:188 -#: code:addons/web_m2x_options/static/src/js/form.js:324 +#: code:addons/web_m2x_options/static/src/js/form.js:191 +#: code:addons/web_m2x_options/static/src/js/form.js:330 #, python-format msgid "Create \"%s\"" msgstr "Luo \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:210 -#: code:addons/web_m2x_options/static/src/js/form.js:345 +#: code:addons/web_m2x_options/static/src/js/form.js:213 +#: code:addons/web_m2x_options/static/src/js/form.js:351 #, python-format msgid "Create and Edit..." msgstr "Luo ja muokkaa..." @@ -37,7 +37,7 @@ msgstr "Luo ja muokkaa..." #. module: web_m2x_options #. openerp-web #: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:302 +#: code:addons/web_m2x_options/static/src/js/form.js:305 #, python-format msgid "Search More..." msgstr "Hae lisää..." diff --git a/web_m2x_options/i18n/sl.po b/web_m2x_options/i18n/sl.po index f5a89dfdedf4..c63f36ed9d72 100644 --- a/web_m2x_options/i18n/sl.po +++ b/web_m2x_options/i18n/sl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: web (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-11-23 13:46+0000\n" +"POT-Creation-Date: 2016-02-26 02:05+0000\n" "PO-Revision-Date: 2015-11-08 05:46+0000\n" "Last-Translator: Matjaž Mozetič \n" "Language-Team: Slovenian (http://www.transifex.com/oca/OCA-web-8-0/language/sl/)\n" @@ -20,16 +20,16 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:188 -#: code:addons/web_m2x_options/static/src/js/form.js:324 +#: code:addons/web_m2x_options/static/src/js/form.js:191 +#: code:addons/web_m2x_options/static/src/js/form.js:330 #, python-format msgid "Create \"%s\"" msgstr "Ustvari \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:210 -#: code:addons/web_m2x_options/static/src/js/form.js:345 +#: code:addons/web_m2x_options/static/src/js/form.js:213 +#: code:addons/web_m2x_options/static/src/js/form.js:351 #, python-format msgid "Create and Edit..." msgstr "Ustvari in urejaj..." @@ -37,7 +37,7 @@ msgstr "Ustvari in urejaj..." #. module: web_m2x_options #. openerp-web #: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:302 +#: code:addons/web_m2x_options/static/src/js/form.js:305 #, python-format msgid "Search More..." msgstr "Poišči več..." diff --git a/web_m2x_options/i18n/tr.po b/web_m2x_options/i18n/tr.po index 2dca769731ba..c9418f2d1c2f 100644 --- a/web_m2x_options/i18n/tr.po +++ b/web_m2x_options/i18n/tr.po @@ -4,11 +4,12 @@ # # Translators: # Ahmet Altınışık , 2015 +# Ahmet Altınışık , 2015 msgid "" msgstr "" "Project-Id-Version: web (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-08 21:34+0000\n" +"POT-Creation-Date: 2016-02-26 02:05+0000\n" "PO-Revision-Date: 2015-12-30 21:53+0000\n" "Last-Translator: Ahmet Altınışık \n" "Language-Team: Turkish (http://www.transifex.com/oca/OCA-web-8-0/language/tr/)\n" @@ -20,16 +21,16 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:188 -#: code:addons/web_m2x_options/static/src/js/form.js:324 +#: code:addons/web_m2x_options/static/src/js/form.js:191 +#: code:addons/web_m2x_options/static/src/js/form.js:330 #, python-format msgid "Create \"%s\"" msgstr "Oluştur \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:210 -#: code:addons/web_m2x_options/static/src/js/form.js:345 +#: code:addons/web_m2x_options/static/src/js/form.js:213 +#: code:addons/web_m2x_options/static/src/js/form.js:351 #, python-format msgid "Create and Edit..." msgstr "Oluştur ve düzenle..." @@ -37,7 +38,7 @@ msgstr "Oluştur ve düzenle..." #. module: web_m2x_options #. openerp-web #: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:302 +#: code:addons/web_m2x_options/static/src/js/form.js:305 #, python-format msgid "Search More..." msgstr "Daha Fazla..." From 47325851431e2c9a40d969f919d60f8d4e882a33 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 13 Mar 2016 09:15:04 -0400 Subject: [PATCH 15/40] OCA Transbot updated translations from Transifex --- web_m2x_options/i18n/pt_BR.po | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 web_m2x_options/i18n/pt_BR.po diff --git a/web_m2x_options/i18n/pt_BR.po b/web_m2x_options/i18n/pt_BR.po new file mode 100644 index 000000000000..8074af4c14d7 --- /dev/null +++ b/web_m2x_options/i18n/pt_BR.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# danimaribeiro , 2016 +msgid "" +msgstr "" +"Project-Id-Version: web (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-03-11 02:17+0000\n" +"PO-Revision-Date: 2016-03-05 16:20+0000\n" +"Last-Translator: danimaribeiro \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-web-8-0/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:191 +#: code:addons/web_m2x_options/static/src/js/form.js:330 +#, python-format +msgid "Create \"%s\"" +msgstr "Criar \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:213 +#: code:addons/web_m2x_options/static/src/js/form.js:351 +#, python-format +msgid "Create and Edit..." +msgstr "Criar e editar.." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:156 +#: code:addons/web_m2x_options/static/src/js/form.js:305 +#, python-format +msgid "Search More..." +msgstr "Buscar mais..." From d89cd06383604ae90f5cc88a713db602f9e015fb Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 20 Mar 2016 09:52:02 -0400 Subject: [PATCH 16/40] OCA Transbot updated translations from Transifex --- web_m2x_options/i18n/it.po | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 web_m2x_options/i18n/it.po diff --git a/web_m2x_options/i18n/it.po b/web_m2x_options/i18n/it.po new file mode 100644 index 000000000000..36a6bf122c3f --- /dev/null +++ b/web_m2x_options/i18n/it.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# Paolo Valier, 2016 +msgid "" +msgstr "" +"Project-Id-Version: web (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-03-17 07:29+0000\n" +"PO-Revision-Date: 2016-03-19 10:13+0000\n" +"Last-Translator: Paolo Valier\n" +"Language-Team: Italian (http://www.transifex.com/oca/OCA-web-8-0/language/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:191 +#: code:addons/web_m2x_options/static/src/js/form.js:330 +#, python-format +msgid "Create \"%s\"" +msgstr "Crea \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:213 +#: code:addons/web_m2x_options/static/src/js/form.js:351 +#, python-format +msgid "Create and Edit..." +msgstr "Crea e Modifica..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:156 +#: code:addons/web_m2x_options/static/src/js/form.js:305 +#, python-format +msgid "Search More..." +msgstr "" From 4fc2c3a1b9920094e343b547997169e10a59e13b Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 1 May 2016 14:37:45 -0400 Subject: [PATCH 17/40] OCA Transbot updated translations from Transifex --- web_m2x_options/i18n/it.po | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/web_m2x_options/i18n/it.po b/web_m2x_options/i18n/it.po index 36a6bf122c3f..ce21776cee13 100644 --- a/web_m2x_options/i18n/it.po +++ b/web_m2x_options/i18n/it.po @@ -3,13 +3,25 @@ # * web_m2x_options # # Translators: +# Ahmet Altınışık , 2015 +# Antonio Trueba, 2016 +# Armando Vulcano Junior , 2015 +# Carles Antoli , 2015 +# Bole , 2015 +# FIRST AUTHOR , 2012,2014 +# Giacomo , 2015 +# Hotellook, 2014 +# Jarmo Kortetjärvi , 2016 # Paolo Valier, 2016 +# Paolo Valier, 2016 +# Rudolf Schnapka , 2016 +# Thomas A. Jaeger, 2015 msgid "" msgstr "" "Project-Id-Version: web (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-03-17 07:29+0000\n" -"PO-Revision-Date: 2016-03-19 10:13+0000\n" +"POT-Creation-Date: 2016-04-28 07:09+0000\n" +"PO-Revision-Date: 2016-04-28 06:46+0000\n" "Last-Translator: Paolo Valier\n" "Language-Team: Italian (http://www.transifex.com/oca/OCA-web-8-0/language/it/)\n" "MIME-Version: 1.0\n" @@ -40,4 +52,4 @@ msgstr "Crea e Modifica..." #: code:addons/web_m2x_options/static/src/js/form.js:305 #, python-format msgid "Search More..." -msgstr "" +msgstr "Cerca altro..." From aa58a0e30040a8116944029b5b70f82e24cb2fb3 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 8 May 2016 15:21:29 -0400 Subject: [PATCH 18/40] OCA Transbot updated translations from Transifex --- web_m2x_options/i18n/fr.po | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 web_m2x_options/i18n/fr.po diff --git a/web_m2x_options/i18n/fr.po b/web_m2x_options/i18n/fr.po new file mode 100644 index 000000000000..448e0f4684ff --- /dev/null +++ b/web_m2x_options/i18n/fr.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# Christophe CHAUVET , 2016 +msgid "" +msgstr "" +"Project-Id-Version: web (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-06 15:50+0000\n" +"PO-Revision-Date: 2016-05-06 08:27+0000\n" +"Last-Translator: Christophe CHAUVET \n" +"Language-Team: French (http://www.transifex.com/oca/OCA-web-8-0/language/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:191 +#: code:addons/web_m2x_options/static/src/js/form.js:330 +#, python-format +msgid "Create \"%s\"" +msgstr "Creer \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:213 +#: code:addons/web_m2x_options/static/src/js/form.js:351 +#, python-format +msgid "Create and Edit..." +msgstr "Créer et modifier..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:156 +#: code:addons/web_m2x_options/static/src/js/form.js:305 +#, python-format +msgid "Search More..." +msgstr "Rechercher plus..." From fa45965cab295489c4bc2787f147a1ef40da22b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul=20=28ACSONE=29?= Date: Sat, 28 May 2016 10:47:28 +0200 Subject: [PATCH 19/40] Normalize version number --- web_m2x_options/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_m2x_options/__openerp__.py b/web_m2x_options/__openerp__.py index 59284e49bec3..65575ccbb81b 100644 --- a/web_m2x_options/__openerp__.py +++ b/web_m2x_options/__openerp__.py @@ -2,7 +2,7 @@ { "name": 'web_m2x_options', - "version": "8.0.0.2", + "version": "8.0.0.2.0", "depends": [ 'base', 'web', From b4b64fdcb281bce8871f30951848579fad7d82a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul=20=28ACSONE=29?= Date: Mon, 15 Aug 2016 22:15:57 +0200 Subject: [PATCH 20/40] remove en.po that was erroneously created by transbot --- web_m2x_options/i18n/en.po | 42 -------------------------------------- 1 file changed, 42 deletions(-) delete mode 100644 web_m2x_options/i18n/en.po diff --git a/web_m2x_options/i18n/en.po b/web_m2x_options/i18n/en.po deleted file mode 100644 index de2d12dbde3d..000000000000 --- a/web_m2x_options/i18n/en.po +++ /dev/null @@ -1,42 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * web_m2x_options -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: web (8.0)\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-26 02:05+0000\n" -"PO-Revision-Date: 2015-11-07 11:20+0000\n" -"Last-Translator: OCA Transbot \n" -"Language-Team: English (http://www.transifex.com/oca/OCA-web-8-0/language/en/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: en\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: web_m2x_options -#. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:191 -#: code:addons/web_m2x_options/static/src/js/form.js:330 -#, python-format -msgid "Create \"%s\"" -msgstr "Create \"%s\"" - -#. module: web_m2x_options -#. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:213 -#: code:addons/web_m2x_options/static/src/js/form.js:351 -#, python-format -msgid "Create and Edit..." -msgstr "Create and Edit..." - -#. module: web_m2x_options -#. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:305 -#, python-format -msgid "Search More..." -msgstr "Search More..." From 7115953c6ad2fc5e75ed1aae63fd75e3ee083ec6 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Sun, 11 Sep 2016 12:10:19 +0100 Subject: [PATCH 21/40] [9.0][MIG] Migration of module web_m2x_options. Adapt JS file to the new JS API and make the module installable [MIG] adapt form.js to the new API. [FIX] Fix bug mentioned in pull #262. [MIG] Make the module installable. --- setup/web_m2x_options/odoo_addons/__init__.py | 1 + .../odoo_addons/web_m2x_options | 1 + setup/web_m2x_options/setup.py | 6 + web_m2x_options/README.rst | 1 + web_m2x_options/static/src/js/form.js | 148 ++++++++++-------- 5 files changed, 88 insertions(+), 69 deletions(-) create mode 100644 setup/web_m2x_options/odoo_addons/__init__.py create mode 120000 setup/web_m2x_options/odoo_addons/web_m2x_options create mode 100644 setup/web_m2x_options/setup.py diff --git a/setup/web_m2x_options/odoo_addons/__init__.py b/setup/web_m2x_options/odoo_addons/__init__.py new file mode 100644 index 000000000000..de40ea7ca058 --- /dev/null +++ b/setup/web_m2x_options/odoo_addons/__init__.py @@ -0,0 +1 @@ +__import__('pkg_resources').declare_namespace(__name__) diff --git a/setup/web_m2x_options/odoo_addons/web_m2x_options b/setup/web_m2x_options/odoo_addons/web_m2x_options new file mode 120000 index 000000000000..80691f0881ee --- /dev/null +++ b/setup/web_m2x_options/odoo_addons/web_m2x_options @@ -0,0 +1 @@ +../../../web_m2x_options \ No newline at end of file diff --git a/setup/web_m2x_options/setup.py b/setup/web_m2x_options/setup.py new file mode 100644 index 000000000000..28c57bb64031 --- /dev/null +++ b/setup/web_m2x_options/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/web_m2x_options/README.rst b/web_m2x_options/README.rst index de0adaac3d33..dff75f05fe73 100644 --- a/web_m2x_options/README.rst +++ b/web_m2x_options/README.rst @@ -145,6 +145,7 @@ Contributors * Holger Brunn * Nicolas JEUDY * Yannick Vaucher +* Zakaria Makrelouf Maintainer ---------- diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 9fe51d23b056..c7a4d660e19f 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -1,12 +1,15 @@ -/*global openerp, _, $ */ - -openerp.web_m2x_options = function (instance) { +/* Copyright 2016 0k.io,ACSONE SA/NV + * * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */ +odoo.define('web_m2x_options.web_m2x_options', function (require) { "use strict"; - var QWeb = instance.web.qweb, - _t = instance.web._t, - _lt = instance.web._lt; + var core = require('web.core'), + data = require('web.data'), + Dialog = require('web.Dialog'), + Model = require('web.Model'), + form_relational = require('web.form_relational'), + _t = core._t; var OPTIONS = ['web_m2x_options.create', 'web_m2x_options.create_edit', @@ -14,7 +17,40 @@ openerp.web_m2x_options = function (instance) { 'web_m2x_options.search_more', 'web_m2x_options.m2o_dialog',]; - instance.web.form.FieldMany2One = instance.web.form.FieldMany2One.extend({ + var M2ODialog = Dialog.extend({ + template: "M2ODialog", + init: function(parent) { + this.name = parent.string; + this._super(parent, { + title: _.str.sprintf(_t("Create a %s"), parent.string), + size: 'medium', + buttons: [ + {text: _t('Create'), classes: 'btn-primary', click: function() { + if (this.$("input").val() !== ''){ + this.getParent()._quick_create(this.$("input").val()); + this.close(); + } else { + e.preventDefault(); + this.$("input").focus(); + } + }}, + + {text: _t('Create and edit'), classes: 'btn-primary', close: true, click: function() { + this.getParent()._search_create_popup("form", undefined, this.getParent()._create_context(this.$("input").val())); + }}, + + {text: _t('Cancel'), close: true} + ] + }); + }, + start: function() { + var text = _.str.sprintf(_t("You are creating a new %s, are you sure it does not exist yet?"), this.name); + this.$("p").text(text); + this.$("input").val(this.getParent().$input.val()); + }, + }); + + form_relational.FieldMany2One.include({ start: function() { this._super.apply(this, arguments); @@ -26,7 +62,7 @@ openerp.web_m2x_options = function (instance) { if (!_.isUndefined(this.view) && _.isUndefined(this.view.ir_options_loaded)) { this.view.ir_options_loaded = $.Deferred(); this.view.ir_options = {}; - (new instance.web.Model("ir.config_parameter")) + (new Model("ir.config_parameter")) .query(["key", "value"]).filter([['key', 'in', OPTIONS]]) .all().then(function(records) { _(records).each(function(record) { @@ -57,12 +93,12 @@ openerp.web_m2x_options = function (instance) { if(this.is_option_set(this.options.m2o_dialog) || _.isUndefined(this.options.m2o_dialog) && this.is_option_set(this.view.ir_options['web_m2x_options.m2o_dialog']) || this.can_create && _.isUndefined(this.options.m2o_dialog) && _.isUndefined(this.view.ir_options['web_m2x_options.m2o_dialog'])) { - new instance.web.form.M2ODialog(this).open(); + new M2ODialog(this).open(); } }, get_search_result: function (search_val) { - var Objects = new instance.web.Model(this.field.relation); + var Objects = new Model(this.field.relation); var def = $.Deferred(); var self = this; // add options limit used to change number of selections record @@ -86,21 +122,21 @@ openerp.web_m2x_options = function (instance) { this.field_color = this.options.field_color this.colors = this.options.colors - var dataset = new instance.web.DataSet(this, this.field.relation, + var dataset = new data.DataSet(this, this.field.relation, self.build_context()); var blacklist = this.get_search_blacklist(); this.last_query = search_val; var search_result = this.orderer.add(dataset.name_search( search_val, - new instance.web.CompoundDomain( + new data.CompoundDomain( self.build_domain(), [["id", "not in", blacklist]]), 'ilike', this.limit + 1, self.build_context())); var create_rights; - if (!(self.options && (self.options.no_create || self.options.no_create_edit))) { - create_rights = new instance.web.Model(this.field.relation).call( + if (!(self.options && (self.options.create || self.options.create_edit))) { + create_rights = new Model(this.field.relation).call( "check_access_rights", ["create", false]); } @@ -126,7 +162,6 @@ openerp.web_m2x_options = function (instance) { for (var index in values) { value_ids.push(values[index].id); } - // RPC request to get field_color from Objects Objects.query([self.field_color]) .filter([['id', 'in', value_ids]]) @@ -136,7 +171,6 @@ openerp.web_m2x_options = function (instance) { if (values[index_value].id == objects[index].id) { // Find value in values by comparing ids var value = values[index_value]; - // Find color with field value as key var color = self.colors[objects[index][self.field_color]] || 'black'; value.label = ''+value.label+''; @@ -173,14 +207,14 @@ openerp.web_m2x_options = function (instance) { var raw_result = _(data.result).map(function (x) { return x[1]; }); - var no_quick_create = ( - self.options && (self.options.no_create || - self.options.no_quick_create) + var quick_create = ( + self.options && (self.options.create || + self.options.quick_create) ) var m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']) - var m2x_create = self.view.ir_options['web_m2x_options.create'] == "True" + var m2x_create = (self.view.ir_options['web_m2x_options.create'] == "True") || m2x_create_undef; - if (!no_quick_create && ((m2x_create_undef && can_create) || + if (quick_create && ((m2x_create_undef && can_create) || m2x_create)) { if (search_val.length > 0 && @@ -199,14 +233,15 @@ openerp.web_m2x_options = function (instance) { } // create... - var no_create_edit = ( - self.options && (self.options.no_create || - self.options.no_create_edit) - ) + var create_edit = ( + self.options && (self.options.create || + self.options.create_edit) + ); + var m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']) - var m2x_create_edit = self.view.ir_options['web_m2x_options.create_edit'] == "True" + var m2x_create_edit = (self.view.ir_options['web_m2x_options.create_edit'] == "True") || m2x_create_undef; - if (!no_create_edit && ((m2x_create_edit_undef && can_create) || + if (create_edit && ((m2x_create_edit_undef && can_create) || m2x_create_edit)) { values.push({ @@ -219,7 +254,6 @@ openerp.web_m2x_options = function (instance) { classname: 'oe_m2o_dropdown_option' }); } - // Check if colors specified to wait for RPC if (!(self.field_color && self.colors)){ def.resolve(values); @@ -230,12 +264,12 @@ openerp.web_m2x_options = function (instance) { } }); - instance.web.form.FieldMany2ManyTags.include({ + form_relational.FieldMany2ManyTags.include({ show_error_displayer: function () { if ((typeof this.options.m2o_dialog === 'undefined' && this.can_create) || this.options.m2o_dialog) { - new instance.web.form.M2ODialog(this).open(); + new M2ODialog(this).open(); } }, @@ -249,7 +283,7 @@ openerp.web_m2x_options = function (instance) { if (_.isUndefined(this.view.ir_options_loaded)) { this.view.ir_options_loaded = $.Deferred(); this.view.ir_options = {}; - (new instance.web.Model("ir.config_parameter")) + (new Model("ir.config_parameter")) .query(["key", "value"]).filter([['key', 'in', OPTIONS]]) .all().then(function(records) { _(records).each(function(record) { @@ -279,12 +313,12 @@ openerp.web_m2x_options = function (instance) { this.limit = this.options.limit; } - var dataset = new instance.web.DataSet(this, this.field.relation, self.build_context()); + var dataset = new data.DataSet(this, this.field.relation, self.build_context()); var blacklist = this.get_search_blacklist(); this.last_query = search_val; return this.orderer.add(dataset.name_search( - search_val, new instance.web.CompoundDomain(self.build_domain(), [["id", "not in", blacklist]]), + search_val, new data.CompoundDomain(self.build_domain(), [["id", "not in", blacklist]]), 'ilike', this.limit + 1, self.build_context())).then(function(data) { self.last_search = data; // possible selections for the m2o @@ -304,6 +338,7 @@ openerp.web_m2x_options = function (instance) { values.push({ label: _t("Search More..."), action: function() { + // limit = 80 for improving performance, similar // to Odoo implementation here: // https://github.com/odoo/odoo/commit/8c3cdce539d87775b59b3f2d5ceb433f995821bf @@ -315,14 +350,14 @@ openerp.web_m2x_options = function (instance) { }); } // quick create - var no_quick_create = ( - self.options && (self.options.no_create || - self.options.no_quick_create) - ) + var quick_create = !( + self.options && (self.options.create || + self.options.quick_create) + ); var m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']) - var m2x_create = self.view.ir_options['web_m2x_options.create'] == "True" + var m2x_create = (self.view.ir_options['web_m2x_options.create'] == "True"); - if (!no_quick_create && (m2x_create_undef || m2x_create)) { + if (quick_create && (m2x_create_undef || m2x_create)) { var raw_result = _(data.result).map(function(x) {return x[1];}); if (search_val.length > 0 && !_.include(raw_result, search_val)) { @@ -338,14 +373,14 @@ openerp.web_m2x_options = function (instance) { } // create... - var no_create_edit = ( - self.options && (self.options.no_create || - self.options.no_create_edit) + var create_edit = ( + self.options && (self.options.create || + self.options.create_edit) ) var m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']) var m2x_create_edit = self.view.ir_options['web_m2x_options.create_edit'] == "True" - if (!no_create_edit && (m2x_create_edit_undef || m2x_create_edit)) { + if (create_edit && (m2x_create_edit_undef || m2x_create_edit)) { values.push({ label: _t("Create and Edit..."), @@ -359,30 +394,5 @@ openerp.web_m2x_options = function (instance) { return values; }) }, - - render_value: function() - { - var self = this; - return jQuery.when(this._super.apply(this, arguments)) - .then(function() - { - if(self.options.open) - { - self.$el.find('.oe_tag') - .css('cursor', 'pointer') - .click(function(e) - { - var id = parseInt(jQuery(this).attr('data-id')); - self.do_action({ - type: 'ir.actions.act_window', - res_model: self.field.relation, - views: [[false, 'form']], - res_id: id, - }); - }); - } - }); - }, }); -}; - +}); From 6f364fd0552bbcb68b9f7dd11ecf56d4dbf90aaa Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Tue, 13 Sep 2016 10:55:21 +0100 Subject: [PATCH 22/40] [9.0][MIG] Migration of module web_m2x_options. Make the module installable and update the module version [MIG] Make the module installable and update the version [FIX] Add the render_value function for the FieldMany2ManyTags and change selector from oe_tag to badge [FIX] change selector in the base.xml from span.oe_tag to span.badge --- web_m2x_options/__openerp__.py | 6 +++--- web_m2x_options/static/src/js/form.js | 22 ++++++++++++++++++++-- web_m2x_options/static/src/xml/base.xml | 2 +- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/web_m2x_options/__openerp__.py b/web_m2x_options/__openerp__.py index 65575ccbb81b..94c1a525bd55 100644 --- a/web_m2x_options/__openerp__.py +++ b/web_m2x_options/__openerp__.py @@ -2,7 +2,7 @@ { "name": 'web_m2x_options', - "version": "8.0.0.2.0", + "version": "9.0.1.0.0", "depends": [ 'base', 'web', @@ -12,6 +12,6 @@ ], 'license': 'AGPL-3', 'data': ['views/view.xml'], - "author": "0k.io,Odoo Community Association (OCA)", - 'installable': False, + "author": "ACSONE SA/NV, 0k.io,Odoo Community Association (OCA)", + 'installable': True, } diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index c7a4d660e19f..3a14d1cd5d6a 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -156,7 +156,6 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { }); // Search result value colors - if (self.colors && self.field_color) { var value_ids = []; for (var index in values) { @@ -183,7 +182,6 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { } // search more... if more results that max - if (values.length > self.limit || self.search_more) { values = values.slice(0, self.limit); values.push({ @@ -394,5 +392,25 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { return values; }) }, + + render_value: function(){ + var self = this; + return jQuery.when(this._super.apply(this, arguments)) + .then(function(){ + if(self.options.open){ + self.$el.find('.badge') + .css('cursor', 'pointer') + .click(function(e){ + var id = parseInt(jQuery(this).attr('data-id')); + self.do_action({ + type: 'ir.actions.act_window', + res_model: self.field.relation, + views: [[false, 'form']], + res_id: id, + }); + }); + } + }); + }, }); }); diff --git a/web_m2x_options/static/src/xml/base.xml b/web_m2x_options/static/src/xml/base.xml index 9fbf425eaadc..8b9421d190ac 100644 --- a/web_m2x_options/static/src/xml/base.xml +++ b/web_m2x_options/static/src/xml/base.xml @@ -6,7 +6,7 @@ - + jQuery(this).attr('t-att-data-id', 'el[0]'); From 8cf6b2ede5a5bfdd073e96daf512f89daa666781 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Wed, 14 Sep 2016 08:49:58 +0100 Subject: [PATCH 23/40] [FIX] Add $ variable and replace jquery staments by $ --- web_m2x_options/static/src/js/form.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 3a14d1cd5d6a..dc613e6a60f8 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -4,6 +4,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { "use strict"; + var $ = require("$"); var core = require('web.core'), data = require('web.data'), Dialog = require('web.Dialog'), @@ -395,13 +396,13 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { render_value: function(){ var self = this; - return jQuery.when(this._super.apply(this, arguments)) + return $.when(this._super.apply(this, arguments)) .then(function(){ if(self.options.open){ self.$el.find('.badge') .css('cursor', 'pointer') .click(function(e){ - var id = parseInt(jQuery(this).attr('data-id')); + var id = parseInt($(e.target).attr('data-id')); self.do_action({ type: 'ir.actions.act_window', res_model: self.field.relation, From cbd8d736083ec20cb0e4d872133f649cdf8b4b18 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Wed, 14 Sep 2016 09:35:21 +0100 Subject: [PATCH 24/40] add is_option_set function to check whether an option is set or not in the many2many tag widget --- web_m2x_options/static/src/js/form.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index dc613e6a60f8..a656b30980a7 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -294,6 +294,20 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { return this.view.ir_options_loaded; }, + is_option_set: function(option) { + if (_.isUndefined(option)) { + return false + } + var is_string = typeof option === 'string' + var is_bool = typeof option === 'boolean' + if (is_string) { + return option === 'true' || option === 'True' + } else if (is_bool) { + return option + } + return false + }, + /** * Call this method to search using a string. */ From 00064500d0ed6cb5b01959394035fc04b6d3a623 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Wed, 14 Sep 2016 10:41:10 +0100 Subject: [PATCH 25/40] [IMP] Make sure to use is_option_set everytime we check if an option is set or not and improve search_more condition statement --- web_m2x_options/static/src/js/form.js | 37 +++++++++++++-------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index a656b30980a7..2a32f5c71586 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -114,11 +114,6 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { this.limit = this.options.limit; } - // add options search_more to force enable or disable search_more button - if (this.is_option_set(this.options.search_more) || _.isUndefined(this.options.search_more) && this.is_option_set(self.view.ir_options['web_m2x_options.search_more'])) { - this.search_more = true - } - // add options field_color and colors to color item(s) depending on field_color value this.field_color = this.options.field_color this.colors = this.options.colors @@ -136,7 +131,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { self.build_context())); var create_rights; - if (!(self.options && (self.options.create || self.options.create_edit))) { + if (!(self.options && (self.is_option_set(self.options.create) || self.is_option_set(self.options.create_edit)))) { create_rights = new Model(this.field.relation).call( "check_access_rights", ["create", false]); } @@ -183,7 +178,11 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { } // search more... if more results that max - if (values.length > self.limit || self.search_more) { + var can_search_more = (self.options && self.is_option_set(self.options.search_more)), + search_more_undef = _.isUndefined(self.options.search_more) && _.isUndefined(self.view.ir_options['web_m2x_options.search_more']), + search_more = self.is_option_set(self.view.ir_options['web_m2x_options.search_more']); + + if (values.length > self.limit && (can_search_more || search_more_undef || search_more)) { values = values.slice(0, self.limit); values.push({ label: _t("Search More..."), @@ -207,11 +206,11 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { return x[1]; }); var quick_create = ( - self.options && (self.options.create || - self.options.quick_create) + self.options && (self.is_option_set(self.options.create) || + self.is_option_set(self.options.quick_create)) ) var m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']) - var m2x_create = (self.view.ir_options['web_m2x_options.create'] == "True") || m2x_create_undef; + var m2x_create = (self.is_option_set(self.view.ir_options['web_m2x_options.create'])) || m2x_create_undef; if (quick_create && ((m2x_create_undef && can_create) || m2x_create)) { @@ -233,12 +232,12 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { // create... var create_edit = ( - self.options && (self.options.create || - self.options.create_edit) + self.options && (self.is_option_set(self.options.create) || + self.is_option_set(self.options.create_edit)) ); var m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']) - var m2x_create_edit = (self.view.ir_options['web_m2x_options.create_edit'] == "True") || m2x_create_undef; + var m2x_create_edit = (self.is_option_set(self.view.ir_options['web_m2x_options.create_edit'])) || m2x_create_undef; if (create_edit && ((m2x_create_edit_undef && can_create) || m2x_create_edit)) { @@ -364,11 +363,11 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { } // quick create var quick_create = !( - self.options && (self.options.create || - self.options.quick_create) + self.options && (self.is_option_set(self.options.create) || + self.is_option_set(self.options.quick_create)) ); var m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']) - var m2x_create = (self.view.ir_options['web_m2x_options.create'] == "True"); + var m2x_create = self.is_option_set(self.view.ir_options['web_m2x_options.create']); if (quick_create && (m2x_create_undef || m2x_create)) { @@ -387,11 +386,11 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { // create... var create_edit = ( - self.options && (self.options.create || - self.options.create_edit) + self.options && (self.is_option_set(self.options.create) || + self.is_option_set(self.options.create_edit)) ) var m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']) - var m2x_create_edit = self.view.ir_options['web_m2x_options.create_edit'] == "True" + var m2x_create_edit = self.is_option_set(self.view.ir_options['web_m2x_options.create_edit']) if (create_edit && (m2x_create_edit_undef || m2x_create_edit)) { From 5d8de134e41b0399bde29852aa2a599cb7c3c032 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Wed, 14 Sep 2016 12:11:07 +0100 Subject: [PATCH 26/40] [FIX] Override the .badge click event to open the clicked ressource instead of the doing it in the render_value --- web_m2x_options/static/src/js/form.js | 47 +++++++++++++++------------ 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 2a32f5c71586..12ee9e11bfb0 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -263,7 +263,14 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { }); form_relational.FieldMany2ManyTags.include({ - + events: { + 'click .o_delete': function(e) { + this.remove_id($(e.target).parent().data('id')); + }, + 'click .badge': 'open_badge', + 'mousedown .o_colorpicker span': 'update_color', + 'focusout .o_colorpicker': 'close_color_picker', + }, show_error_displayer: function () { if ((typeof this.options.m2o_dialog === 'undefined' && this.can_create) || this.options.m2o_dialog) { @@ -407,24 +414,24 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { }) }, - render_value: function(){ - var self = this; - return $.when(this._super.apply(this, arguments)) - .then(function(){ - if(self.options.open){ - self.$el.find('.badge') - .css('cursor', 'pointer') - .click(function(e){ - var id = parseInt($(e.target).attr('data-id')); - self.do_action({ - type: 'ir.actions.act_window', - res_model: self.field.relation, - views: [[false, 'form']], - res_id: id, - }); - }); - } - }); + open_badge: function(ev){ + var self = this; + var open = (self.options && self.is_option_set(self.options.open)); + if(open){ + self.mutex.exec(function(){ + var id = parseInt($(ev.handleObj.selector).attr('data-id')); + self.do_action({ + type: 'ir.actions.act_window', + res_model: self.field.relation, + views: [[false, 'form']], + res_id: id, + target: "new" + }); + }.bind(this)); + }else{ + self.open_color_picker(ev); + } }, - }); + + }); }); From 9079e0d5112362d4997084b7900eb8a0feec6512 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Thu, 15 Sep 2016 10:55:18 +0100 Subject: [PATCH 27/40] [FIX] Fix condition when options tag is defined but create or create_edit options aren't set --- web_m2x_options/static/src/js/form.js | 33 ++++++++++----------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 12ee9e11bfb0..0b58ec9d79c6 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -205,16 +205,12 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { var raw_result = _(data.result).map(function (x) { return x[1]; }); - var quick_create = ( - self.options && (self.is_option_set(self.options.create) || - self.is_option_set(self.options.quick_create)) - ) - var m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']) - var m2x_create = (self.is_option_set(self.view.ir_options['web_m2x_options.create'])) || m2x_create_undef; - - if (quick_create && ((m2x_create_undef && can_create) || - m2x_create)) { - + var quick_create = self.is_option_set(self.options.create) || self.is_option_set(self.options.quick_create), + quick_create_undef = _.isUndefined(self.options.create) && _.isUndefined(self.options.quick_create), + m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']), + m2x_create = self.is_option_set(self.view.ir_options['web_m2x_options.create']); + var show_create = (!self.options && (m2x_create_undef || m2x_create)) || (self.options && (quick_create || (quick_create_undef && (m2x_create_undef || m2x_create)))); + if (show_create){ if (search_val.length > 0 && !_.include(raw_result, search_val)) { @@ -231,17 +227,12 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { } // create... - var create_edit = ( - self.options && (self.is_option_set(self.options.create) || - self.is_option_set(self.options.create_edit)) - ); - - var m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']) - var m2x_create_edit = (self.is_option_set(self.view.ir_options['web_m2x_options.create_edit'])) || m2x_create_undef; - - if (create_edit && ((m2x_create_edit_undef && can_create) || - m2x_create_edit)) { - + var create_edit = self.is_option_set(self.options.create) || self.is_option_set(self.options.create_edit), + create_edit_undef = _.isUndefined(self.options.create) && _.isUndefined(self.options.create_edit), + m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']), + m2x_create_edit = self.is_option_set(self.view.ir_options['web_m2x_options.create_edit']); + var show_create_edit = (!self.options && (m2x_create_edit_undef || m2x_create_edit)) || (self.options && (create_edit || (create_edit_undef && (m2x_create_edit_undef || m2x_create_edit)))); + if (show_create_edit){ values.push({ label: _t("Create and Edit..."), action: function () { From c90b8fe4ddd5319faf23ba654d02917d9491d3c5 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Thu, 15 Sep 2016 10:55:18 +0100 Subject: [PATCH 28/40] [FIX] Fix condition when options tag is defined but create or create_edit options aren't set. --- web_m2x_options/static/src/js/form.js | 28 ++++++++++++--------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 0b58ec9d79c6..fe08983b8987 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -360,14 +360,12 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { }); } // quick create - var quick_create = !( - self.options && (self.is_option_set(self.options.create) || - self.is_option_set(self.options.quick_create)) - ); - var m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']) - var m2x_create = self.is_option_set(self.view.ir_options['web_m2x_options.create']); - - if (quick_create && (m2x_create_undef || m2x_create)) { + var quick_create = self.is_option_set(self.options.create) || self.is_option_set(self.options.quick_create), + quick_create_undef = _.isUndefined(self.options.create) && _.isUndefined(self.options.quick_create), + m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']), + m2x_create = self.is_option_set(self.view.ir_options['web_m2x_options.create']); + var show_create = (!self.options && (m2x_create_undef || m2x_create)) || (self.options && (quick_create || (quick_create_undef && (m2x_create_undef || m2x_create)))); + if (show_create){ var raw_result = _(data.result).map(function(x) {return x[1];}); if (search_val.length > 0 && !_.include(raw_result, search_val)) { @@ -383,14 +381,12 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { } // create... - var create_edit = ( - self.options && (self.is_option_set(self.options.create) || - self.is_option_set(self.options.create_edit)) - ) - var m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']) - var m2x_create_edit = self.is_option_set(self.view.ir_options['web_m2x_options.create_edit']) - - if (create_edit && (m2x_create_edit_undef || m2x_create_edit)) { + var create_edit = self.is_option_set(self.options.create) || self.is_option_set(self.options.create_edit), + create_edit_undef = _.isUndefined(self.options.create) && _.isUndefined(self.options.create_edit), + m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']), + m2x_create_edit = self.is_option_set(self.view.ir_options['web_m2x_options.create_edit']); + var show_create_edit = (!self.options && (m2x_create_edit_undef || m2x_create_edit)) || (self.options && (create_edit || (create_edit_undef && (m2x_create_edit_undef || m2x_create_edit)))); + if (show_create_edit){ values.push({ label: _t("Create and Edit..."), From ec53572b3d49253eccf44d97b9c5afecbb7c2ee0 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Thu, 15 Sep 2016 14:52:31 +0100 Subject: [PATCH 29/40] [FIX] Fix line numbers in the .po files --- web_m2x_options/i18n/ar.po | 12 ++++++------ web_m2x_options/i18n/de.po | 12 ++++++------ web_m2x_options/i18n/es.po | 12 ++++++------ web_m2x_options/i18n/fi.po | 12 ++++++------ web_m2x_options/i18n/fr.po | 12 ++++++------ web_m2x_options/i18n/it.po | 12 ++++++------ web_m2x_options/i18n/pt_BR.po | 12 ++++++------ web_m2x_options/i18n/sl.po | 12 ++++++------ web_m2x_options/i18n/tr.po | 12 ++++++------ 9 files changed, 54 insertions(+), 54 deletions(-) diff --git a/web_m2x_options/i18n/ar.po b/web_m2x_options/i18n/ar.po index 1011622c21a8..124f84ceecdc 100644 --- a/web_m2x_options/i18n/ar.po +++ b/web_m2x_options/i18n/ar.po @@ -20,24 +20,24 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:191 -#: code:addons/web_m2x_options/static/src/js/form.js:330 +#: code:addons/web_m2x_options/static/src/js/form.js:219 +#: code:addons/web_m2x_options/static/src/js/form.js:373 #, python-format msgid "Create \"%s\"" msgstr "إنشاء \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:213 -#: code:addons/web_m2x_options/static/src/js/form.js:351 +#: code:addons/web_m2x_options/static/src/js/form.js:237 +#: code:addons/web_m2x_options/static/src/js/form.js:392 #, python-format msgid "Create and Edit..." msgstr "إنشاء وتحرير ..." #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:305 +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:349 #, python-format msgid "Search More..." msgstr "البحث عن المزيد ..." diff --git a/web_m2x_options/i18n/de.po b/web_m2x_options/i18n/de.po index 112e2b911061..40eb8cacde07 100644 --- a/web_m2x_options/i18n/de.po +++ b/web_m2x_options/i18n/de.po @@ -20,24 +20,24 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:191 -#: code:addons/web_m2x_options/static/src/js/form.js:330 +#: code:addons/web_m2x_options/static/src/js/form.js:219 +#: code:addons/web_m2x_options/static/src/js/form.js:373 #, python-format msgid "Create \"%s\"" msgstr "Anlegen \"%s" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:213 -#: code:addons/web_m2x_options/static/src/js/form.js:351 +#: code:addons/web_m2x_options/static/src/js/form.js:237 +#: code:addons/web_m2x_options/static/src/js/form.js:392 #, python-format msgid "Create and Edit..." msgstr "Anlegen und Bearbeiten" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:305 +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:349 #, python-format msgid "Search More..." msgstr "Suche weitere..." diff --git a/web_m2x_options/i18n/es.po b/web_m2x_options/i18n/es.po index 7a4764bae86a..bd3b1e51bc9d 100644 --- a/web_m2x_options/i18n/es.po +++ b/web_m2x_options/i18n/es.po @@ -20,24 +20,24 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:191 -#: code:addons/web_m2x_options/static/src/js/form.js:330 +#: code:addons/web_m2x_options/static/src/js/form.js:219 +#: code:addons/web_m2x_options/static/src/js/form.js:373 #, python-format msgid "Create \"%s\"" msgstr "Crear \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:213 -#: code:addons/web_m2x_options/static/src/js/form.js:351 +#: code:addons/web_m2x_options/static/src/js/form.js:237 +#: code:addons/web_m2x_options/static/src/js/form.js:392 #, python-format msgid "Create and Edit..." msgstr "Crear y editar..." #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:305 +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:349 #, python-format msgid "Search More..." msgstr "Buscar más..." diff --git a/web_m2x_options/i18n/fi.po b/web_m2x_options/i18n/fi.po index 9dab4ae40247..b374d7eb9458 100644 --- a/web_m2x_options/i18n/fi.po +++ b/web_m2x_options/i18n/fi.po @@ -20,24 +20,24 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:191 -#: code:addons/web_m2x_options/static/src/js/form.js:330 +#: code:addons/web_m2x_options/static/src/js/form.js:219 +#: code:addons/web_m2x_options/static/src/js/form.js:373 #, python-format msgid "Create \"%s\"" msgstr "Luo \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:213 -#: code:addons/web_m2x_options/static/src/js/form.js:351 +#: code:addons/web_m2x_options/static/src/js/form.js:237 +#: code:addons/web_m2x_options/static/src/js/form.js:392 #, python-format msgid "Create and Edit..." msgstr "Luo ja muokkaa..." #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:305 +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:349 #, python-format msgid "Search More..." msgstr "Hae lisää..." diff --git a/web_m2x_options/i18n/fr.po b/web_m2x_options/i18n/fr.po index 448e0f4684ff..3be5ae233eab 100644 --- a/web_m2x_options/i18n/fr.po +++ b/web_m2x_options/i18n/fr.po @@ -20,24 +20,24 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:191 -#: code:addons/web_m2x_options/static/src/js/form.js:330 +#: code:addons/web_m2x_options/static/src/js/form.js:219 +#: code:addons/web_m2x_options/static/src/js/form.js:373 #, python-format msgid "Create \"%s\"" msgstr "Creer \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:213 -#: code:addons/web_m2x_options/static/src/js/form.js:351 +#: code:addons/web_m2x_options/static/src/js/form.js:237 +#: code:addons/web_m2x_options/static/src/js/form.js:392 #, python-format msgid "Create and Edit..." msgstr "Créer et modifier..." #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:305 +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:349 #, python-format msgid "Search More..." msgstr "Rechercher plus..." diff --git a/web_m2x_options/i18n/it.po b/web_m2x_options/i18n/it.po index ce21776cee13..c8db1568fdf7 100644 --- a/web_m2x_options/i18n/it.po +++ b/web_m2x_options/i18n/it.po @@ -32,24 +32,24 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:191 -#: code:addons/web_m2x_options/static/src/js/form.js:330 +#: code:addons/web_m2x_options/static/src/js/form.js:219 +#: code:addons/web_m2x_options/static/src/js/form.js:373 #, python-format msgid "Create \"%s\"" msgstr "Crea \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:213 -#: code:addons/web_m2x_options/static/src/js/form.js:351 +#: code:addons/web_m2x_options/static/src/js/form.js:237 +#: code:addons/web_m2x_options/static/src/js/form.js:392 #, python-format msgid "Create and Edit..." msgstr "Crea e Modifica..." #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:305 +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:349 #, python-format msgid "Search More..." msgstr "Cerca altro..." diff --git a/web_m2x_options/i18n/pt_BR.po b/web_m2x_options/i18n/pt_BR.po index 8074af4c14d7..cf28995e3eed 100644 --- a/web_m2x_options/i18n/pt_BR.po +++ b/web_m2x_options/i18n/pt_BR.po @@ -20,24 +20,24 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:191 -#: code:addons/web_m2x_options/static/src/js/form.js:330 +#: code:addons/web_m2x_options/static/src/js/form.js:219 +#: code:addons/web_m2x_options/static/src/js/form.js:373 #, python-format msgid "Create \"%s\"" msgstr "Criar \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:213 -#: code:addons/web_m2x_options/static/src/js/form.js:351 +#: code:addons/web_m2x_options/static/src/js/form.js:237 +#: code:addons/web_m2x_options/static/src/js/form.js:392 #, python-format msgid "Create and Edit..." msgstr "Criar e editar.." #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:305 +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:349 #, python-format msgid "Search More..." msgstr "Buscar mais..." diff --git a/web_m2x_options/i18n/sl.po b/web_m2x_options/i18n/sl.po index c63f36ed9d72..7192762e128e 100644 --- a/web_m2x_options/i18n/sl.po +++ b/web_m2x_options/i18n/sl.po @@ -20,24 +20,24 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:191 -#: code:addons/web_m2x_options/static/src/js/form.js:330 +#: code:addons/web_m2x_options/static/src/js/form.js:219 +#: code:addons/web_m2x_options/static/src/js/form.js:373 #, python-format msgid "Create \"%s\"" msgstr "Ustvari \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:213 -#: code:addons/web_m2x_options/static/src/js/form.js:351 +#: code:addons/web_m2x_options/static/src/js/form.js:237 +#: code:addons/web_m2x_options/static/src/js/form.js:392 #, python-format msgid "Create and Edit..." msgstr "Ustvari in urejaj..." #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:305 +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:349 #, python-format msgid "Search More..." msgstr "Poišči več..." diff --git a/web_m2x_options/i18n/tr.po b/web_m2x_options/i18n/tr.po index c9418f2d1c2f..2b9f46fdd2ee 100644 --- a/web_m2x_options/i18n/tr.po +++ b/web_m2x_options/i18n/tr.po @@ -21,24 +21,24 @@ msgstr "" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:191 -#: code:addons/web_m2x_options/static/src/js/form.js:330 +#: code:addons/web_m2x_options/static/src/js/form.js:219 +#: code:addons/web_m2x_options/static/src/js/form.js:373 #, python-format msgid "Create \"%s\"" msgstr "Oluştur \"%s\"" #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:213 -#: code:addons/web_m2x_options/static/src/js/form.js:351 +#: code:addons/web_m2x_options/static/src/js/form.js:237 +#: code:addons/web_m2x_options/static/src/js/form.js:392 #, python-format msgid "Create and Edit..." msgstr "Oluştur ve düzenle..." #. module: web_m2x_options #. openerp-web -#: code:addons/web_m2x_options/static/src/js/form.js:156 -#: code:addons/web_m2x_options/static/src/js/form.js:305 +#: code:addons/web_m2x_options/static/src/js/form.js:188 +#: code:addons/web_m2x_options/static/src/js/form.js:349 #, python-format msgid "Search More..." msgstr "Daha Fazla..." From 07589f7a4afba723bb3182604b1fbf1edd571e1a Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Sun, 18 Sep 2016 12:51:35 +0100 Subject: [PATCH 30/40] [FIX] add require('_') --- web_m2x_options/static/src/js/form.js | 1 + 1 file changed, 1 insertion(+) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index fe08983b8987..11f7850e471d 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -10,6 +10,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { Dialog = require('web.Dialog'), Model = require('web.Model'), form_relational = require('web.form_relational'), + _ = require('_'), _t = core._t; var OPTIONS = ['web_m2x_options.create', From 7f9bbea343913feda33e9486fd22017c75dd8577 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Mon, 19 Sep 2016 08:55:24 +0100 Subject: [PATCH 31/40] [IMP] Add classname compatiblity to odoo versions --- web_m2x_options/static/src/js/form.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 11f7850e471d..8e97ad3ecb1d 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -197,7 +197,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { self._search_create_popup("search", data); }); }, - classname: 'oe_m2o_dropdown_option' + classname: 'oe_m2o_dropdown_option o_m2o_dropdown_option' }); } @@ -222,7 +222,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { action: function () { self._quick_create(search_val); }, - classname: 'oe_m2o_dropdown_option' + classname: 'oe_m2o_dropdown_option o_m2o_dropdown_option' }); } } @@ -241,7 +241,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { "form", undefined, self._create_context(search_val)); }, - classname: 'oe_m2o_dropdown_option' + classname: 'oe_m2o_dropdown_option o_m2o_dropdown_option' }); } // Check if colors specified to wait for RPC @@ -357,7 +357,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { self._search_create_popup("search", data); }); }, - classname: 'oe_m2o_dropdown_option' + classname: 'oe_m2o_dropdown_option o_m2o_dropdown_option' }); } // quick create @@ -376,7 +376,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { action: function() { self._quick_create(search_val); }, - classname: 'oe_m2o_dropdown_option' + classname: 'oe_m2o_dropdown_option o_m2o_dropdown_option' }); } } @@ -394,7 +394,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { action: function() { self._search_create_popup("form", undefined, self._create_context(search_val)); }, - classname: 'oe_m2o_dropdown_option' + classname: 'oe_m2o_dropdown_option o_m2o_dropdown_option' }); } From 069a1e72ecc038e8779eb65cde0625b81a044e49 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Wed, 14 Sep 2016 16:25:19 +0100 Subject: [PATCH 32/40] [IMP] Add Most Recently Used Option to M20 Field. display most recently used record to the user when the search_mru is true. [IMP] add compute_mru_key to compute the key of the field in the local storage in the form: dbname/model/view_id | action_id/field_name [IMP] add get_search_mru to search if there is a list of values stored in the local storage using the key generate. [IMP] add update_mru_list to update they list of mru saved in local storage [IMP] Add mru behavior to the get_search_value [IMP] add web_m2x_options.search_mru option to the OPTIONS list --- web_m2x_options/static/src/js/form.js | 106 +++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 2 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 8e97ad3ecb1d..c0803aefd674 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -17,7 +17,8 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { 'web_m2x_options.create_edit', 'web_m2x_options.limit', 'web_m2x_options.search_more', - 'web_m2x_options.m2o_dialog',]; + 'web_m2x_options.m2o_dialog', + 'web_m2x_options.search_mru',]; var M2ODialog = Dialog.extend({ template: "M2ODialog", @@ -99,6 +100,35 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { } }, + compute_mru_key: function(){ + var self = this, + model = self.view.model, + db = self.session.db, + view_id = null; + if (self.view.view_id){ + view_id = "v_" + self.view.view_id + }else{ + if(self.view.options.action != null){ + view_id = "a_" + self.view.options.action.id; + }else{ + view_id = "a_" + self.view.dataset.parent_view.options.action.id + } + } + return db + "/" + model + "/" + view_id + "/" + self.name; + }, + + get_search_mru: function(){ + var mru_option = 'web_m2x_options_mru'; + self = this; + var restore_mru_list = JSON.parse(localStorage.getItem(mru_option)), + key = self.compute_mru_key(); + if (restore_mru_list) { + if (!_.isUndefined(restore_mru_list[key])){ + return ['id', 'in', restore_mru_list[key]]; + } + } + return []; + }, get_search_result: function (search_val) { var Objects = new Model(this.field.relation); var def = $.Deferred(); @@ -121,13 +151,27 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { var dataset = new data.DataSet(this, this.field.relation, self.build_context()); + var domain_list = []; var blacklist = this.get_search_blacklist(); + if(!_(blacklist).isEmpty()){ + domain_list.push(blacklist); + } + var can_search_mru = (self.options && self.is_option_set(self.options.search_mru)), + search_mru_undef = _.isUndefined(self.options.search_mru), + search_mru = self.is_option_set(self.view.ir_options['web_m2x_options.search_mru']); + + var mru_list = self.get_search_mru(); + if(search_val == "" && (can_search_mru || (search_mru_undef && search_mru))){ + if (!_(mru_list).isEmpty()){ + domain_list.push(mru_list); + } + } this.last_query = search_val; var search_result = this.orderer.add(dataset.name_search( search_val, new data.CompoundDomain( - self.build_domain(), [["id", "not in", blacklist]]), + self.build_domain(), domain_list), 'ilike', this.limit + 1, self.build_context())); @@ -177,6 +221,16 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { def.resolve(values); }); } + // add label favorites if favorites option is set and + // search_val is empty + if(search_val == "" && (can_search_mru || (search_mru_undef && search_mru))){ + if (!_(mru_list).isEmpty() && !_(values).isEmpty()){ + values.unshift({ + label: _t("Most Recently Used:"), + classname: 'oe_m2o_dropdown_option', + }); + } + } // search more... if more results that max var can_search_more = (self.options && self.is_option_set(self.options.search_more)), @@ -251,6 +305,54 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { }); return def; + }, + + update_mru_list: function(){ + var self = this, + mru_option = 'web_m2x_options_mru'; + var key = self.compute_mru_key(); + + // check if the localstorage has some items for the current model + if (localStorage.getItem(mru_option)) { + var restore_mru_list = JSON.parse(localStorage.getItem(mru_option)); + if (restore_mru_list[key]) { + var queue = restore_mru_list[key]; + if (queue.indexOf(self.get_value(true)) < 0 && self.get_value(true)){ + if (queue.length < 5) { + queue.push(self.get_value(true)); + }else { + queue.shift(); + queue.push(self.get_value(true)); + } + restore_mru_list[key] = queue; + } + }else{ + if (self.get_value(true)){ + restore_mru_list[key] = [self.get_value(true)]; + } + } + localStorage.setItem(mru_option, JSON.stringify(restore_mru_list)); + }else { + if (self.get_value(true)){ + var values = {} + values[key] = [self.get_value(true)] + localStorage.setItem(mru_option, JSON.stringify(values)); + } + } + }, + + commit_value: function() { + var self = this; + // if the field value has changed and has favorites option + if (self._dirty_flag){ + var can_search_mru = (self.options && self.is_option_set(self.options.search_mru)), + search_mru_undef = _.isUndefined(self.options.search_mru), + search_mru = self.is_option_set(self.view.ir_options['web_m2x_options.search_mru']); + + if(can_search_mru || (search_mru_undef && search_mru)){ + self.update_mru_list(); + } + } } }); From 0ebe462cc916b9c826b34978ef948fe52ac6dee8 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Wed, 14 Sep 2016 17:13:59 +0100 Subject: [PATCH 33/40] [IMP] Update the readme file the new option added --- web_m2x_options/README.rst | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/web_m2x_options/README.rst b/web_m2x_options/README.rst index dff75f05fe73..112614317778 100644 --- a/web_m2x_options/README.rst +++ b/web_m2x_options/README.rst @@ -17,6 +17,12 @@ case of validation error. If not specified, the module will avoid proposing any of the create options if the current user has no permission rights to create the related object. +The options provided includes as well, the possibility to propose the Most +Recently used (MRU) values stored in the localstorage if nothing has been typed +in the field and the uer desplays the drop-down. When the user start typing the +field falls back to the normal behaviour. + + Usage ===== @@ -69,6 +75,10 @@ in the field's options dict Makes many2many_tags buttons that open the linked resource +``search_mru`` *boolean* (Default: ``False``) + + Display the MRU list stored in the localstorage before the user start typing. + ir.config_parameter options --------------------------- @@ -95,6 +105,10 @@ If you disable one option, you can enable it for particular field by setting "cr Whether the field should always show "Search more..." entry or not. +``web_m2x_options.search_mru`` *boolean* (Default: default value is ``False``) + + Display the MRU list stored in the localstorage before the user start typing. + To add these parameters go to Configuration -> Technical -> Parameters -> System Parameters and add new parameters like: - web_m2x_options.create: False @@ -102,7 +116,7 @@ To add these parameters go to Configuration -> Technical -> Parameters -> System - web_m2x_options.m2o_dialog: False - web_m2x_options.limit: 10 - web_m2x_options.search_more: True - +- web_m2x_options.search_mru: False Example ------- @@ -110,13 +124,13 @@ Example Your XML form view definition could contain:: ... - + ... Known issues ============ -Double check that you have no inherited view that remove ``options`` you set on a field ! +Double check that you have no inherited view that remove ``options`` you set on a field ! If nothing works, add a debugger in the first line of ``get_search_result method`` and enable debug mode in Odoo. When you write something in a many2one field, javascript debugger should pause. If not verify your installation. Roadmap From 95f1b18139b6df127e5b85ae95cfa7cd7fa93d26 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Thu, 15 Sep 2016 08:04:44 +0100 Subject: [PATCH 34/40] [REF] Refactore the update_mru_list method to always put the selected item in the top of the list and add some important comments --- web_m2x_options/static/src/js/form.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index c0803aefd674..5747e02bbe36 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -311,28 +311,42 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { var self = this, mru_option = 'web_m2x_options_mru'; var key = self.compute_mru_key(); - // check if the localstorage has some items for the current model if (localStorage.getItem(mru_option)) { var restore_mru_list = JSON.parse(localStorage.getItem(mru_option)); if (restore_mru_list[key]) { var queue = restore_mru_list[key]; + // if the element doesn't exist in the stack if (queue.indexOf(self.get_value(true)) < 0 && self.get_value(true)){ if (queue.length < 5) { - queue.push(self.get_value(true)); + // add the new element at the beginning + queue.unshift(self.get_value(true)); }else { - queue.shift(); - queue.push(self.get_value(true)); + // remove the last element + queue.pop(); + // add the new element at the beginning + queue.unshift(self.get_value(true)); } restore_mru_list[key] = queue; + }else{ + // if the element already exist in the stack + if (queue.indexOf(self.get_value(true)) >= 0 && self.get_value(true)){ + var index = queue.indexOf(self.get_value(true)); + // remove the element from the list + queue.splice(index, 1); + // and put it back at the beginning + queue.unshift(self.get_value(true)); + } } }else{ + // if the element is the first one if (self.get_value(true)){ restore_mru_list[key] = [self.get_value(true)]; } } localStorage.setItem(mru_option, JSON.stringify(restore_mru_list)); }else { + // first time to create an entry in the localstorage if (self.get_value(true)){ var values = {} values[key] = [self.get_value(true)] From 303223666c32f54be6801b55d6c6d2d2ba0637dd Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Tue, 13 Sep 2016 10:09:07 +0200 Subject: [PATCH 35/40] [FIX] Add codeview button to translate HTML fields --- web_translate_dialog/static/src/js/web_translate_dialog.js | 1 + 1 file changed, 1 insertion(+) diff --git a/web_translate_dialog/static/src/js/web_translate_dialog.js b/web_translate_dialog/static/src/js/web_translate_dialog.js index cbce9f5e3a50..046e834fff71 100644 --- a/web_translate_dialog/static/src/js/web_translate_dialog.js +++ b/web_translate_dialog/static/src/js/web_translate_dialog.js @@ -95,6 +95,7 @@ var translateDialog = Dialog.extend({ ['para', ['ul', 'ol', 'paragraph']], ['table', ['table']], ['insert', ['link', 'picture']], + ['misc', ['codeview']], ['history', ['undo', 'redo']] ], 'prettifyHtml': false, From 28fb5b843fe16967334a0b2a5fcdfdf95bb45737 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Sun, 18 Sep 2016 11:52:46 +0100 Subject: [PATCH 36/40] [REF] Refactore compute_mru_key --- web_m2x_options/static/src/js/form.js | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 5747e02bbe36..d0c66ba196ba 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -104,16 +104,8 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { var self = this, model = self.view.model, db = self.session.db, - view_id = null; - if (self.view.view_id){ - view_id = "v_" + self.view.view_id - }else{ - if(self.view.options.action != null){ - view_id = "a_" + self.view.options.action.id; - }else{ - view_id = "a_" + self.view.dataset.parent_view.options.action.id - } - } + view_id = self.view.fields_view.view_id || self.view.dataset.parent_view.fields_view.view_id; + console.log('view id', view_id); return db + "/" + model + "/" + view_id + "/" + self.name; }, From bb37283b24e07b44a3e1610dd2e7a94af70c452a Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Sun, 18 Sep 2016 12:39:03 +0100 Subject: [PATCH 37/40] [FIX] Revert changes on .po files --- web_m2x_options/i18n/tr.po | 19 +++++++++---------- web_m2x_options/static/src/js/form.js | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/web_m2x_options/i18n/tr.po b/web_m2x_options/i18n/tr.po index 2b9f46fdd2ee..cf28995e3eed 100644 --- a/web_m2x_options/i18n/tr.po +++ b/web_m2x_options/i18n/tr.po @@ -3,20 +3,19 @@ # * web_m2x_options # # Translators: -# Ahmet Altınışık , 2015 -# Ahmet Altınışık , 2015 +# danimaribeiro , 2016 msgid "" msgstr "" "Project-Id-Version: web (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-26 02:05+0000\n" -"PO-Revision-Date: 2015-12-30 21:53+0000\n" -"Last-Translator: Ahmet Altınışık \n" -"Language-Team: Turkish (http://www.transifex.com/oca/OCA-web-8-0/language/tr/)\n" +"POT-Creation-Date: 2016-03-11 02:17+0000\n" +"PO-Revision-Date: 2016-03-05 16:20+0000\n" +"Last-Translator: danimaribeiro \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-web-8-0/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: tr\n" +"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: web_m2x_options @@ -25,7 +24,7 @@ msgstr "" #: code:addons/web_m2x_options/static/src/js/form.js:373 #, python-format msgid "Create \"%s\"" -msgstr "Oluştur \"%s\"" +msgstr "Criar \"%s\"" #. module: web_m2x_options #. openerp-web @@ -33,7 +32,7 @@ msgstr "Oluştur \"%s\"" #: code:addons/web_m2x_options/static/src/js/form.js:392 #, python-format msgid "Create and Edit..." -msgstr "Oluştur ve düzenle..." +msgstr "Criar e editar.." #. module: web_m2x_options #. openerp-web @@ -41,4 +40,4 @@ msgstr "Oluştur ve düzenle..." #: code:addons/web_m2x_options/static/src/js/form.js:349 #, python-format msgid "Search More..." -msgstr "Daha Fazla..." +msgstr "Buscar mais..." diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index d0c66ba196ba..4cac342fef2a 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -5,7 +5,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { "use strict"; var $ = require("$"); - var core = require('web.core'), + var core = require('web.core'), data = require('web.data'), Dialog = require('web.Dialog'), Model = require('web.Model'), From 9f41010badd5b35a508519e82492d2ba28e9e805 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Mon, 19 Sep 2016 08:25:23 +0100 Subject: [PATCH 38/40] [FIX] Remove unused session variable and fix bug --- web_m2x_options/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 4cac342fef2a..544da9c2f1ca 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -110,7 +110,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { }, get_search_mru: function(){ - var mru_option = 'web_m2x_options_mru'; + var mru_option = 'web_m2x_options_mru', self = this; var restore_mru_list = JSON.parse(localStorage.getItem(mru_option)), key = self.compute_mru_key(); From c46818b1d45fc174d4dac097d9e362a7934994ca Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Mon, 19 Sep 2016 08:37:06 +0100 Subject: [PATCH 39/40] [FIX] Fix bug in line 148 --- web_m2x_options/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index 544da9c2f1ca..a79f8c351cc5 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -146,7 +146,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { var domain_list = []; var blacklist = this.get_search_blacklist(); if(!_(blacklist).isEmpty()){ - domain_list.push(blacklist); + domain_list.push(['id', 'not in', blacklist]); } var can_search_mru = (self.options && self.is_option_set(self.options.search_mru)), search_mru_undef = _.isUndefined(self.options.search_mru), From d40f3bc2c7e8384eca03fac7123b0004228faab4 Mon Sep 17 00:00:00 2001 From: Zakaria Makrelouf Date: Mon, 19 Sep 2016 09:29:15 +0100 Subject: [PATCH 40/40] [REF] remove debuging statement in line 108 --- web_m2x_options/static/src/js/form.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index a79f8c351cc5..bac34e0b0262 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -105,7 +105,6 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { model = self.view.model, db = self.session.db, view_id = self.view.fields_view.view_id || self.view.dataset.parent_view.fields_view.view_id; - console.log('view id', view_id); return db + "/" + model + "/" + view_id + "/" + self.name; }, @@ -219,7 +218,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { if (!_(mru_list).isEmpty() && !_(values).isEmpty()){ values.unshift({ label: _t("Most Recently Used:"), - classname: 'oe_m2o_dropdown_option', + // classname: 'oe_m2o_dropdown_option', }); } }