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 000000000..16ed8b7f0 --- /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 000000000..28c57bb64 --- /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 new file mode 100644 index 000000000..337baa586 --- /dev/null +++ b/web_m2x_options/README.rst @@ -0,0 +1,198 @@ +=============== +web_m2x_options +=============== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github + :target: https://github.com/OCA/web/tree/14.0/web_m2x_options + :alt: OCA/web +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/web-14-0/web-14-0-web_m2x_options + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/162/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This modules modifies "many2one" and "many2manytags" form widgets so as to add some new display +control options. + +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 has no permission rights to create the related object. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +in the field's options dict +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +``create`` *boolean* (Default: depends if user have create rights) + + Whether to display the "Create..." entry in dropdown panel. + +``create_edit`` *boolean* (Default: depends if user have create rights) + + Whether to display "Create and Edit..." entry in dropdown panel + +``m2o_dialog`` *boolean* (Default: depends if user have create rights) + + Whether to display the many2one dialog in case of validation error. + +``limit`` *int* (Default: openerp default value is ``7``) + + Number of displayed record in drop-down panel + +``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 + +``open`` *boolean* (Default: ``False``) + + Makes many2many_tags buttons that open the linked resource + +``no_color_picker`` *boolean* (Default: ``False``) + + Deactivates the color picker on many2many_tags buttons to do nothing (ignored if open is set) + +ir.config_parameter options +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Now you can disable "Create..." and "Create and Edit..." entry for all widgets in the odoo instance. +If you disable one option, you can enable it for particular field by setting "create: True" option directly on the field definition. + +``web_m2x_options.create`` *boolean* (Default: depends if user have create rights) + + Whether to display the "Create..." entry in dropdown panel for all fields in the odoo instance. + +``web_m2x_options.create_edit`` *boolean* (Default: depends if user have create rights) + + Whether to display "Create and Edit..." entry in dropdown panel for all fields in the odoo instance. + +``web_m2x_options.m2o_dialog`` *boolean* (Default: depends if user have create rights) + + Whether to display the many2one dialog in case of validation error for all fields in the odoo instance. + +``web_m2x_options.limit`` *int* (Default: openerp default value is ``7``) + + Number of displayed record in drop-down panel for all fields in the odoo instance + +``web_m2x_options.search_more`` *boolean* (Default: default value is ``False``) + + Whether the field should always show "Search more..." entry or not. + +To add these parameters go to Configuration -> Technical -> Parameters -> System Parameters and add new parameters like: + +- web_m2x_options.create: False +- web_m2x_options.create_edit: False +- web_m2x_options.m2o_dialog: False +- web_m2x_options.limit: 10 +- web_m2x_options.search_more: True + + +Example +~~~~~~~ + +Your XML form view definition could contain:: + + ... + + ... + +Known issues / Roadmap +====================== + +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 ``_search method`` and enable debug mode in Odoo. When you write something in a many2one field, javascript debugger should pause. If not verify your installation. + +- 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 +=========== + +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 `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ACSONE SA/NV +* 0k.io +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* David Coninckx +* Emanuel Cino +* Holger Brunn +* Nicolas JEUDY +* Yannick Vaucher +* Zakaria Makrelouf +* `Tecnativa `_: + + * Jairo Llopis + * David Vidal + * Ernesto Tejeda +* Bhavesh Odedra +* Dhara Solanki + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +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. + +This module is part of the `OCA/web `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/web_m2x_options/__init__.py b/web_m2x_options/__init__.py new file mode 100644 index 000000000..0ee8b5073 --- /dev/null +++ b/web_m2x_options/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import tests diff --git a/web_m2x_options/__manifest__.py b/web_m2x_options/__manifest__.py new file mode 100644 index 000000000..6863e2e9c --- /dev/null +++ b/web_m2x_options/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2015 0k.io +# Copyright 2016 ACSONE SA/NV +# Copyright 2017 Tecnativa +# Copyright 2020 initOS GmbH. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "web_m2x_options", + "version": "14.0.1.0.0", + "category": "Web", + "author": "initOS GmbH," + "ACSONE SA/NV, " + "0k.io, " + "Tecnativa, " + "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/web", + "license": "AGPL-3", + "depends": ["web"], + "data": ["views/view.xml"], + "qweb": ["static/src/xml/base.xml"], + "installable": True, +} diff --git a/web_m2x_options/i18n/ar.po b/web_m2x_options/i18n/ar.po new file mode 100644 index 000000000..ea3229ca9 --- /dev/null +++ b/web_m2x_options/i18n/ar.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-03 03:50+0000\n" +"PO-Revision-Date: 2018-01-03 03:50+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \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/xml/base.xml:0 +#, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "إلغاء" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create \"%s\"" +msgstr "إنشاء \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create a %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create and Edit..." +msgstr "إنشاء وتحرير ..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create and edit" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "No results to show..." +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "البحث عن المزيد ..." + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "" diff --git a/web_m2x_options/i18n/de.po b/web_m2x_options/i18n/de.po new file mode 100644 index 000000000..71dbd2750 --- /dev/null +++ b/web_m2x_options/i18n/de.po @@ -0,0 +1,112 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# OCA Transbot , 2017 +# Rudolf Schnapka , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-03 03:50+0000\n" +"PO-Revision-Date: 2020-07-22 12:19+0000\n" +"Last-Translator: c2cdidier \n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/xml/base.xml:0 +#, fuzzy, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "!(widget.options.no_open || widget.options.no_open_edit)" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "Abbrechen" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "Anlegen" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create \"%s\"" +msgstr "Anlegen \"%s" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create a %s" +msgstr "Eine %s anlegen" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, 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:0 +#, 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:0 +#, python-format +msgid "No results to show..." +msgstr "Keine Resultate zu zeigen..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "Öffnen: " + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "Schnellsuche: %s" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "Suche weitere..." + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "Systemparameter" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "" +"Sie legen eine neue %s an, sind Sie sicher, dass diese nicht bereits " +"vorhanden ist?" diff --git a/web_m2x_options/i18n/es.po b/web_m2x_options/i18n/es.po new file mode 100644 index 000000000..e521ea709 --- /dev/null +++ b/web_m2x_options/i18n/es.po @@ -0,0 +1,108 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-03 03:50+0000\n" +"PO-Revision-Date: 2018-01-03 03:50+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/xml/base.xml:0 +#, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "Cancelar" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "Crear" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create \"%s\"" +msgstr "Crear \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create a %s" +msgstr "Crear un %s" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, 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:0 +#, 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:0 +#, python-format +msgid "No results to show..." +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "Buscar más..." + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "Está creando un nuevo %s, ¿está seguro de no existe ya?" diff --git a/web_m2x_options/i18n/fi.po b/web_m2x_options/i18n/fi.po new file mode 100644 index 000000000..00da90fa7 --- /dev/null +++ b/web_m2x_options/i18n/fi.po @@ -0,0 +1,108 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-03 03:50+0000\n" +"PO-Revision-Date: 2018-01-03 03:50+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/xml/base.xml:0 +#, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "Peru" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create \"%s\"" +msgstr "Luo \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create a %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, 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:0 +#, python-format +msgid "Create and edit" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "No results to show..." +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "Hae lisää..." + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "" diff --git a/web_m2x_options/i18n/fr.po b/web_m2x_options/i18n/fr.po new file mode 100644 index 000000000..7799d7a3d --- /dev/null +++ b/web_m2x_options/i18n/fr.po @@ -0,0 +1,110 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-03 03:50+0000\n" +"PO-Revision-Date: 2020-07-22 12:19+0000\n" +"Last-Translator: c2cdidier \n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.10\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/xml/base.xml:0 +#, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "Annuler" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "Créer" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create \"%s\"" +msgstr "Creer \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create a %s" +msgstr "Créer un %s" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, 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:0 +#, 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:0 +#, python-format +msgid "No results to show..." +msgstr "Aucun résultat à afficher..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "Ouvrir : " + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "Recherche rapide: %s" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "Rechercher plus..." + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "Paramètres système" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "" +"Vous créez un nouveau %s, est-ce que vous êtes sur qu'il n'existe pas déjà ?" diff --git a/web_m2x_options/i18n/hr.po b/web_m2x_options/i18n/hr.po new file mode 100644 index 000000000..422a6f0b4 --- /dev/null +++ b/web_m2x_options/i18n/hr.po @@ -0,0 +1,110 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# Bole , 2017 +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-03 03:50+0000\n" +"PO-Revision-Date: 2018-01-03 03:50+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/xml/base.xml:0 +#, fuzzy, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "!(opcije isključuju otvaranje ili uređivanje)" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "Otkaži" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "Kreiraj" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create \"%s\"" +msgstr "Kreiraj \" %s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create a %s" +msgstr "Kreiraj %s" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create and Edit..." +msgstr "Kreiraj i uredi..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create and edit" +msgstr "Kreiraj i uredi" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "No results to show..." +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "Traži dalje..." + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "Želite kreirati novi %s, jeste li sigurni da već ne postoji?" diff --git a/web_m2x_options/i18n/it.po b/web_m2x_options/i18n/it.po new file mode 100644 index 000000000..b46d50fd9 --- /dev/null +++ b/web_m2x_options/i18n/it.po @@ -0,0 +1,108 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-03 03:50+0000\n" +"PO-Revision-Date: 2018-01-03 03:50+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/xml/base.xml:0 +#, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "Annulla" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create \"%s\"" +msgstr "Crea \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create a %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, 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:0 +#, python-format +msgid "Create and edit" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "No results to show..." +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "Cerca altro..." + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "" diff --git a/web_m2x_options/i18n/nl_NL.po b/web_m2x_options/i18n/nl_NL.po new file mode 100644 index 000000000..2858f962a --- /dev/null +++ b/web_m2x_options/i18n/nl_NL.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-01 03:35+0000\n" +"PO-Revision-Date: 2017-07-01 03:35+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/xml/base.xml:0 +#, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "Annuleer" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "Aanmaken" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create \"%s\"" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create a %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create and Edit..." +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create and edit" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "No results to show..." +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "" + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "" diff --git a/web_m2x_options/i18n/pt_BR.po b/web_m2x_options/i18n/pt_BR.po new file mode 100644 index 000000000..2d1f35139 --- /dev/null +++ b/web_m2x_options/i18n/pt_BR.po @@ -0,0 +1,112 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# OCA Transbot , 2017 +# Rodrigo de Almeida Sottomaior Macedo , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-03 03:50+0000\n" +"PO-Revision-Date: 2019-08-26 16:01+0000\n" +"Last-Translator: Rodrigo Macedo \n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.8\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/xml/base.xml:0 +#, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "!(widget.options.no_open || widget.nodeOptions.no_open_edit)" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "Cancelar" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "Criar" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create \"%s\"" +msgstr "Criar \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create a %s" +msgstr "Criar um %s" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, 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:0 +#, 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:0 +#, python-format +msgid "No results to show..." +msgstr "sem resultado para mostrar..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "Abrir: " + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "Buscar mais..." + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "Parâmetros do Sistema" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "" +"Você está criando um novo %s, você tem certeza de que ainda não existe?" diff --git a/web_m2x_options/i18n/sl.po b/web_m2x_options/i18n/sl.po new file mode 100644 index 000000000..7f6e68d71 --- /dev/null +++ b/web_m2x_options/i18n/sl.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-03 03:50+0000\n" +"PO-Revision-Date: 2018-01-03 03:50+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \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/xml/base.xml:0 +#, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "Preklic" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create \"%s\"" +msgstr "Ustvari \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create a %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, 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:0 +#, python-format +msgid "Create and edit" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "No results to show..." +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "Poišči več..." + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "" diff --git a/web_m2x_options/i18n/tr.po b/web_m2x_options/i18n/tr.po new file mode 100644 index 000000000..975fcfee4 --- /dev/null +++ b/web_m2x_options/i18n/tr.po @@ -0,0 +1,108 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-03 03:50+0000\n" +"PO-Revision-Date: 2018-01-03 03:50+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/xml/base.xml:0 +#, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "İptal" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, 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:0 +#, python-format +msgid "Create a %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, 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:0 +#, python-format +msgid "Create and edit" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "No results to show..." +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "Daha Fazla..." + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "" diff --git a/web_m2x_options/i18n/web_m2x_options.pot b/web_m2x_options/i18n/web_m2x_options.pot new file mode 100644 index 000000000..4f20224bb --- /dev/null +++ b/web_m2x_options/i18n/web_m2x_options.pot @@ -0,0 +1,103 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/xml/base.xml:0 +#, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create \"%s\"" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create a %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create and Edit..." +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create and edit" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "No results to show..." +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "" + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "" diff --git a/web_m2x_options/i18n/zh_CN.po b/web_m2x_options/i18n/zh_CN.po new file mode 100644 index 000000000..d5363a58b --- /dev/null +++ b/web_m2x_options/i18n/zh_CN.po @@ -0,0 +1,106 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_m2x_options +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-07-08 05:19+0000\n" +"Last-Translator: 黎伟杰 <674416404@qq.com>\n" +"Language-Team: none\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.10\n" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/xml/base.xml:0 +#, python-format +msgid "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" +msgstr "!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Cancel" +msgstr "取消" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create" +msgstr "创建" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create \"%s\"" +msgstr "创建 \"%s\"" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create a %s" +msgstr "创建一个%s" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create and Edit..." +msgstr "创建和编辑..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Create and edit" +msgstr "创建和编辑" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "No results to show..." +msgstr "没有结果显示..." + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Open: " +msgstr "打开: " + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Quick search: %s" +msgstr "快速搜索: %s" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "Search More..." +msgstr "搜索更多..." + +#. module: web_m2x_options +#: model:ir.model,name:web_m2x_options.model_ir_config_parameter +msgid "System Parameter" +msgstr "系统参数" + +#. module: web_m2x_options +#. openerp-web +#: code:addons/web_m2x_options/static/src/js/form.js:0 +#, python-format +msgid "You are creating a new %s, are you sure it does not exist yet?" +msgstr "你正在创建一个新的%s,你确定它还不存在吗?" diff --git a/web_m2x_options/models/__init__.py b/web_m2x_options/models/__init__.py new file mode 100644 index 000000000..bd3aa9f10 --- /dev/null +++ b/web_m2x_options/models/__init__.py @@ -0,0 +1 @@ +from . import ir_config_parameter diff --git a/web_m2x_options/models/ir_config_parameter.py b/web_m2x_options/models/ir_config_parameter.py new file mode 100644 index 000000000..8e7228f08 --- /dev/null +++ b/web_m2x_options/models/ir_config_parameter.py @@ -0,0 +1,16 @@ +from odoo import api, models + + +class IrConfigParameter(models.Model): + _inherit = "ir.config_parameter" + + @api.model + def get_web_m2x_options(self): + opts = [ + "web_m2x_options.create", + "web_m2x_options.create_edit", + "web_m2x_options.limit", + "web_m2x_options.search_more", + "web_m2x_options.m2o_dialog", + ] + return self.sudo().search_read([["key", "in", opts]], ["key", "value"]) diff --git a/web_m2x_options/readme/CONTRIBUTORS.rst b/web_m2x_options/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..9838a8c21 --- /dev/null +++ b/web_m2x_options/readme/CONTRIBUTORS.rst @@ -0,0 +1,13 @@ +* David Coninckx +* Emanuel Cino +* Holger Brunn +* Nicolas JEUDY +* Yannick Vaucher +* Zakaria Makrelouf +* `Tecnativa `_: + + * Jairo Llopis + * David Vidal + * Ernesto Tejeda +* Bhavesh Odedra +* Dhara Solanki (http://www.initos.com) diff --git a/web_m2x_options/readme/DESCRIPTION.rst b/web_m2x_options/readme/DESCRIPTION.rst new file mode 100644 index 000000000..7108400fc --- /dev/null +++ b/web_m2x_options/readme/DESCRIPTION.rst @@ -0,0 +1,10 @@ +This modules modifies "many2one" and "many2manytags" form widgets so as to add some new display +control options. + +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 has no permission rights to create the related object. diff --git a/web_m2x_options/readme/ROADMAP.rst b/web_m2x_options/readme/ROADMAP.rst new file mode 100644 index 000000000..dfb07916c --- /dev/null +++ b/web_m2x_options/readme/ROADMAP.rst @@ -0,0 +1,6 @@ +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 ``_search method`` and enable debug mode in Odoo. When you write something in a many2one field, javascript debugger should pause. If not verify your installation. + +- 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. diff --git a/web_m2x_options/readme/USAGE.rst b/web_m2x_options/readme/USAGE.rst new file mode 100644 index 000000000..1da37a228 --- /dev/null +++ b/web_m2x_options/readme/USAGE.rst @@ -0,0 +1,88 @@ +in the field's options dict +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +``create`` *boolean* (Default: depends if user have create rights) + + Whether to display the "Create..." entry in dropdown panel. + +``create_edit`` *boolean* (Default: depends if user have create rights) + + Whether to display "Create and Edit..." entry in dropdown panel + +``m2o_dialog`` *boolean* (Default: depends if user have create rights) + + Whether to display the many2one dialog in case of validation error. + +``limit`` *int* (Default: openerp default value is ``7``) + + Number of displayed record in drop-down panel + +``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 + +``open`` *boolean* (Default: ``False``) + + Makes many2many_tags buttons that open the linked resource + +``no_color_picker`` *boolean* (Default: ``False``) + + Deactivates the color picker on many2many_tags buttons to do nothing (ignored if open is set) + +ir.config_parameter options +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Now you can disable "Create..." and "Create and Edit..." entry for all widgets in the odoo instance. +If you disable one option, you can enable it for particular field by setting "create: True" option directly on the field definition. + +``web_m2x_options.create`` *boolean* (Default: depends if user have create rights) + + Whether to display the "Create..." entry in dropdown panel for all fields in the odoo instance. + +``web_m2x_options.create_edit`` *boolean* (Default: depends if user have create rights) + + Whether to display "Create and Edit..." entry in dropdown panel for all fields in the odoo instance. + +``web_m2x_options.m2o_dialog`` *boolean* (Default: depends if user have create rights) + + Whether to display the many2one dialog in case of validation error for all fields in the odoo instance. + +``web_m2x_options.limit`` *int* (Default: openerp default value is ``7``) + + Number of displayed record in drop-down panel for all fields in the odoo instance + +``web_m2x_options.search_more`` *boolean* (Default: default value is ``False``) + + Whether the field should always show "Search more..." entry or not. + +To add these parameters go to Configuration -> Technical -> Parameters -> System Parameters and add new parameters like: + +- web_m2x_options.create: False +- web_m2x_options.create_edit: False +- web_m2x_options.m2o_dialog: False +- web_m2x_options.limit: 10 +- web_m2x_options.search_more: True + + +Example +~~~~~~~ + +Your XML form view definition could contain:: + + ... + + ... diff --git a/web_m2x_options/static/description/icon.png b/web_m2x_options/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/web_m2x_options/static/description/icon.png differ diff --git a/web_m2x_options/static/description/index.html b/web_m2x_options/static/description/index.html new file mode 100644 index 000000000..bf406ab18 --- /dev/null +++ b/web_m2x_options/static/description/index.html @@ -0,0 +1,412 @@ + + + + + + +Add new options for many2one field + + + +
+

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.

+
+
+

Requirements

+

Was tested on openerp 8.0, trunk, saas-5 branch. New way to import js file. (thanks to tfossoul)

+
+
+

New options

+

create boolean (Default: depends if user have create rights)

+
+Whether to display the "Create..." entry in dropdown panel.
+

create_edit boolean (Default: depends if user have create rights)

+
+Whether to display "Create and Edit..." entry in dropdown panel
+

m2o_dialog boolean (Default: depends if user have create rights)

+
+Whether to display the many2one dialog in case of validation error.
+

limit int (Default: openerp default value is 7)

+
+Number of displayed record in drop-down panel
+
+
+

ir.config_parameter options

+

Now you can disable "Create..." and "Create and Edit..." entry for all widgets in the odoo instance. +If you disable one option, you can enable it for particular field by setting "create: True" option directly on the field definition.

+

web_m2x_options.create boolean (Default: depends if user have create rights)

+
+Whether to display the "Create..." entry in dropdown panel for all fields in the odoo instance.
+

web_m2x_options.create_edit boolean (Default: depends if user have create rights)

+
+Whether to display "Create and Edit..." entry in dropdown panel for all fields in the odoo instance.
+

web_m2x_options.limit int (Default: openerp default value is 7)

+
+Number of displayed record in drop-down panel for all fields in the odoo instance
+

To add these parameters go to Configuration -> Technical -> Parameters -> System Parameters and add new parameters like:

+
    +
  • web_m2x_options.create: False
  • +
  • web_m2x_options.create_edit: False
  • +
  • web_m2x_options.limit: 10
  • +
+
+
+

Example

+

Your XML form view definition could contain:

+
+...
+<field name="partner_id" options="{'limit': 10, 'create': false, 'create_edit': false}"/>
+...
+
+
+
+

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.

+
+
+ + diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js new file mode 100644 index 000000000..de54a9d83 --- /dev/null +++ b/web_m2x_options/static/src/js/form.js @@ -0,0 +1,476 @@ +/* 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 core = require("web.core"), + data = require("web.data"), + Dialog = require("web.Dialog"), + view_dialogs = require("web.view_dialogs"), + relational_fields = require("web.relational_fields"), + rpc = require("web.rpc"); + + var _t = core._t, + FieldMany2ManyTags = relational_fields.FieldMany2ManyTags, + FieldMany2One = relational_fields.FieldMany2One, + FormFieldMany2ManyTags = relational_fields.FormFieldMany2ManyTags; + + var web_m2x_options = rpc.query({ + model: "ir.config_parameter", + method: "get_web_m2x_options", + }); + + var M2ODialog = Dialog.extend({ + template: "M2ODialog", + init: function (parent, name, value) { + this.name = name; + this.value = value; + this._super(parent, { + title: _.str.sprintf(_t("Create a %s"), this.name), + size: "medium", + buttons: [ + { + text: _t("Create"), + classes: "btn-primary", + click: function () { + if (this.$("input").val()) { + this.trigger_up("quick_create", { + value: this.$("input").val(), + }); + this.close(true); + } else { + this.$("input").focus(); + } + }, + }, + { + text: _t("Create and edit"), + classes: "btn-primary", + close: true, + click: function () { + this.trigger_up("search_create_popup", { + view_type: "form", + value: this.$("input").val(), + }); + }, + }, + { + text: _t("Cancel"), + close: true, + }, + ], + }); + }, + start: function () { + this.$("p").text( + _.str.sprintf( + _t( + "You are creating a new %s, are you sure it does not exist yet?" + ), + this.name + ) + ); + this.$("input").val(this.value); + }, + /** + * @override + * @param {Boolean} isSet + */ + close: function (isSet) { + this.isSet = isSet; + this._super.apply(this, arguments); + }, + /** + * @override + */ + destroy: function () { + if (!this.isSet) { + this.trigger_up("closed_unset"); + } + this._super.apply(this, arguments); + }, + }); + + FieldMany2One.include({ + start: function () { + this._super.apply(this, arguments); + return this.get_options(); + }, + + get_options: function () { + var self = this; + if (_.isUndefined(this.ir_options_loaded)) { + this.ir_options_loaded = $.Deferred(); + this.ir_options = {}; + web_m2x_options.then(function (records) { + _(records).each(function (record) { + self.ir_options[record.key] = record.value; + }); + self.ir_options_loaded.resolve(); + }); + } + return $.when(); + }, + + is_option_set: function (option) { + if (_.isUndefined(option)) return false; + if (typeof option === "string") + return option === "true" || option === "True"; + if (typeof option === "boolean") return option; + return false; + }, + + _onInputFocusout: function () { + var m2o_dialog_opt = + this.is_option_set(this.nodeOptions.m2o_dialog) || + (_.isUndefined(this.nodeOptions.m2o_dialog) && + this.is_option_set( + this.ir_options["web_m2x_options.m2o_dialog"] + )) || + (_.isUndefined(this.nodeOptions.m2o_dialog) && + _.isUndefined(this.ir_options["web_m2x_options.m2o_dialog"])); + if (this.can_create && this.floating && m2o_dialog_opt) { + new M2ODialog(this, this.string, this.$input.val()).open(); + } + }, + + _search: function (search_val) { + var self = this; + if (search_val === undefined) { + return this._super.apply(this, arguments); + } + var def = new Promise((resolve) => { + // Add options limit used to change number of selections record + // returned. + if (!_.isUndefined(self.ir_options["web_m2x_options.limit"])) { + this.limit = parseInt(self.ir_options["web_m2x_options.limit"], 10); + } + + if (typeof self.nodeOptions.limit === "number") { + self.limit = self.nodeOptions.limit; + } + + // Add options field_color and colors to color item(s) depending on field_color value + self.field_color = self.nodeOptions.field_color; + self.colors = self.nodeOptions.colors; + + var context = self.record.getContext(self.recordParams); + var domain = self.record.getDomain(self.recordParams); + + var blacklisted_ids = self._getSearchBlacklist(); + if (blacklisted_ids.length > 0) { + domain.push(["id", "not in", blacklisted_ids]); + } + + self._rpc({ + model: self.field.relation, + method: "name_search", + kwargs: { + name: search_val, + args: domain, + operator: "ilike", + limit: self.limit + 1, + context: context, + }, + }).then((result) => { + // Possible selections for the m2o + var values = _.map(result, (x) => { + x[1] = self._getDisplayName(x[1]); + return { + label: + _.str.escapeHTML(x[1].trim()) || data.noDisplayContent, + value: x[1], + name: x[1], + id: x[0], + }; + }); + + // Search result value colors + if (self.colors && self.field_color) { + var value_ids = []; + for (var val_index in values) { + value_ids.push(values[val_index].id); + } + self._rpc({ + model: self.field.relation, + method: "search_read", + fields: [self.field_color], + domain: [["id", "in", value_ids]], + }).then((objects) => { + for (var index in objects) { + for (var index_value in values) { + 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 + + ""; + break; + } + } + } + resolve(values); + }); + } + + // Search more... if more results that max + var can_search_more = + self.nodeOptions && + self.is_option_set(self.nodeOptions.search_more), + search_more_undef = + _.isUndefined(self.nodeOptions.search_more) && + _.isUndefined( + self.ir_options["web_m2x_options.search_more"] + ), + search_more = self.is_option_set( + self.ir_options["web_m2x_options.search_more"] + ); + + if (values.length > self.limit) { + values = values.slice(0, self.limit); + if (can_search_more || search_more_undef || search_more) { + values.push({ + label: _t("Search More..."), + action: function () { + var prom = []; + if (search_val !== "") { + prom = self._rpc({ + model: self.field.relation, + method: "name_search", + kwargs: { + name: search_val, + args: domain, + operator: "ilike", + limit: self.SEARCH_MORE_LIMIT, + context: context, + }, + }); + } + Promise.resolve(prom).then(function (results) { + var dynamicFilters = []; + if (results) { + var ids = _.map(results, function (x) { + return x[0]; + }); + if (search_val) { + dynamicFilters = [ + { + description: _.str.sprintf( + _t("Quick search: %s"), + search_val + ), + domain: [["id", "in", ids]], + }, + ]; + } else { + dynamicFilters = []; + } + } + self._searchCreatePopup( + "search", + false, + {}, + dynamicFilters + ); + }); + }, + classname: "o_m2o_dropdown_option", + }); + } + } + + var create_enabled = self.can_create && !self.nodeOptions.no_create; + // Quick create + var raw_result = _.map(result, function (x) { + return x[1]; + }); + var quick_create = self.is_option_set(self.nodeOptions.create), + quick_create_undef = _.isUndefined(self.nodeOptions.create), + m2x_create_undef = _.isUndefined( + self.ir_options["web_m2x_options.create"] + ), + m2x_create = self.is_option_set( + self.ir_options["web_m2x_options.create"] + ); + var show_create = + (!self.nodeOptions && (m2x_create_undef || m2x_create)) || + (self.nodeOptions && + (quick_create || + (quick_create_undef && + (m2x_create_undef || m2x_create)))); + if ( + create_enabled && + !self.nodeOptions.no_quick_create && + search_val.length > 0 && + !_.contains(raw_result, search_val) && + show_create + ) { + values.push({ + label: _.str.sprintf( + _t('Create "%s"'), + $("").text(search_val).html() + ), + action: self._quickCreate.bind(self, search_val), + classname: "o_m2o_dropdown_option", + }); + } + // Create and edit ... + + var create_edit = + self.is_option_set(self.nodeOptions.create) || + self.is_option_set(self.nodeOptions.create_edit), + create_edit_undef = + _.isUndefined(self.nodeOptions.create) && + _.isUndefined(self.nodeOptions.create_edit), + m2x_create_edit_undef = _.isUndefined( + self.ir_options["web_m2x_options.create_edit"] + ), + m2x_create_edit = self.is_option_set( + self.ir_options["web_m2x_options.create_edit"] + ); + var show_create_edit = + (!self.nodeOptions && + (m2x_create_edit_undef || m2x_create_edit)) || + (self.nodeOptions && + (create_edit || + (create_edit_undef && + (m2x_create_edit_undef || m2x_create_edit)))); + if ( + create_enabled && + !self.nodeOptions.no_create_edit && + show_create_edit + ) { + var createAndEditAction = function () { + // Clear the value in case the user clicks on discard + self.$("input").val(""); + return self._searchCreatePopup( + "form", + false, + self._createContext(search_val) + ); + }; + values.push({ + label: _t("Create and Edit..."), + action: createAndEditAction, + classname: "o_m2o_dropdown_option", + }); + } else if (values.length === 0) { + values.push({ + label: _t("No results to show..."), + }); + } + // Check if colors specified to wait for RPC + if (!(self.field_color && self.colors)) { + resolve(values); + } + }); + }); + this.orderer.add(def); + return def; + }, + }); + + FieldMany2ManyTags.include({ + events: _.extend({}, FieldMany2ManyTags.prototype.events, { + "click .badge": "_onOpenBadge", + }), + + _onDeleteTag: function (event) { + var result = this._super.apply(this, arguments); + event.stopPropagation(); + return result; + }, + + is_option_set: function (option) { + if (_.isUndefined(option)) return false; + if (typeof option === "string") + return option === "true" || option === "True"; + if (typeof option === "boolean") return option; + return false; + }, + + _onOpenBadge: function (event) { + var self = this; + var open = self.nodeOptions && self.is_option_set(self.nodeOptions.open); + if (open) { + var context = self.record.getContext(self.recordParams); + var id = parseInt($(event.currentTarget).data("id"), 10); + + if (self.mode === "readonly") { + event.preventDefault(); + event.stopPropagation(); + self._rpc({ + model: self.field.relation, + method: "get_formview_action", + args: [[id]], + context: context, + }).then(function (action) { + self.trigger_up("do_action", {action: action}); + }); + } else { + $.when( + self._rpc({ + model: self.field.relation, + method: "get_formview_id", + args: [[id]], + context: context, + }), + self._rpc({ + model: self.field.relation, + method: "check_access_rights", + kwargs: {operation: "write", raise_exception: false}, + }) + ).then(function (view_id, write_access) { + var can_write = + "can_write" in self.attrs + ? JSON.parse(self.attrs.can_write) + : true; + new view_dialogs.FormViewDialog(self, { + res_model: self.field.relation, + res_id: id, + context: context, + title: _t("Open: ") + self.string, + view_id: view_id, + readonly: !can_write || !write_access, + on_saved: function (record, changed) { + if (changed) { + self._setValue(self.value.data, { + forceChange: true, + }); + self.trigger_up("reload", {db_id: self.value.id}); + } + }, + }).open(); + }); + } + } + }, + }); + + FormFieldMany2ManyTags.include({ + events: _.extend({}, FormFieldMany2ManyTags.prototype.events, { + "click .badge": "_onOpenBadge", + }), + + _onOpenBadge: function (event) { + var open = this.is_option_set(this.nodeOptions.open); + var no_color_picker = this.is_option_set(this.nodeOptions.no_color_picker); + this._super.apply(this, arguments); + if (!open && !no_color_picker) { + this._onOpenColorPicker(event); + } else { + event.preventDefault(); + event.stopPropagation(); + } + }, + }); +}); 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 000000000..a4f5ae3c7 --- /dev/null +++ b/web_m2x_options/static/src/xml/base.xml @@ -0,0 +1,12 @@ + + + + + + + !(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit) + + + + diff --git a/web_m2x_options/tests/__init__.py b/web_m2x_options/tests/__init__.py new file mode 100644 index 000000000..b472ff361 --- /dev/null +++ b/web_m2x_options/tests/__init__.py @@ -0,0 +1,2 @@ +# Copyright 2020 initOS GmbH. +from . import test_ir_config_parameter diff --git a/web_m2x_options/tests/test_ir_config_parameter.py b/web_m2x_options/tests/test_ir_config_parameter.py new file mode 100644 index 000000000..1b78bae66 --- /dev/null +++ b/web_m2x_options/tests/test_ir_config_parameter.py @@ -0,0 +1,30 @@ +# Copyright 2020 initOS GmbH. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo.tests import common + + +class TestIrConfigParameter(common.SavepointCase): + @classmethod + def setUpClass(cls): + super(TestIrConfigParameter, cls).setUpClass() + cls.env["ir.config_parameter"].set_param("web_m2x_options.limit", 10) + cls.env["ir.config_parameter"].set_param("web_m2x_options.create_edit", "True") + cls.env["ir.config_parameter"].set_param("web_m2x_options.create", "True") + cls.env["ir.config_parameter"].set_param("web_m2x_options.search_more", "False") + cls.env["ir.config_parameter"].set_param("web_m2x_options.m2o_dialog", "True") + + def test_web_m2x_options_key(self): + web_m2x_options = self.env["ir.config_parameter"].get_web_m2x_options() + options = {opt["key"]: opt["value"] for opt in web_m2x_options} + self.assertIn("web_m2x_options.limit", options) + self.assertNotIn("web_m2x_options.m2o_dialog_test", options) + + def test_web_m2x_options_value(self): + web_m2x_options = self.env["ir.config_parameter"].get_web_m2x_options() + options = {opt["key"]: opt["value"] for opt in web_m2x_options} + self.assertEqual(options["web_m2x_options.limit"], "10") + self.assertTrue(bool(options["web_m2x_options.create_edit"])) + self.assertTrue(bool(options["web_m2x_options.create"])) + self.assertEqual(options["web_m2x_options.search_more"], "False") + self.assertTrue(bool(options["web_m2x_options.m2o_dialog"])) diff --git a/web_m2x_options/views/view.xml b/web_m2x_options/views/view.xml new file mode 100644 index 000000000..d2be9152e --- /dev/null +++ b/web_m2x_options/views/view.xml @@ -0,0 +1,15 @@ + + +